summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitattributes8
-rw-r--r--_test/tests/inc/cache_use.test.php7
-rw-r--r--_test/tests/inc/cli_options.test.php56
-rw-r--r--_test/tests/lib/exe/css_css_compress.test.php15
-rwxr-xr-xbin/dwpage.php597
-rwxr-xr-xbin/gittool.php216
-rwxr-xr-xbin/indexer.php175
-rwxr-xr-xbin/render.php94
-rwxr-xr-xbin/striplangs.php214
-rwxr-xr-xbin/wantedpages.php223
-rw-r--r--doku.php2
-rw-r--r--feed.php8
-rw-r--r--inc/HTTPClient.php11
-rw-r--r--inc/TarLib.class.php2
-rw-r--r--inc/cache.php1
-rw-r--r--inc/changelog.php49
-rw-r--r--inc/cli.php647
-rw-r--r--inc/cliopts.php1
-rw-r--r--inc/common.php170
-rw-r--r--inc/form.php10
-rw-r--r--inc/html.php4
-rw-r--r--inc/infoutils.php36
-rw-r--r--inc/lang/af/lang.php8
-rw-r--r--inc/lang/ar/lang.php40
-rw-r--r--inc/lang/az/lang.php34
-rw-r--r--inc/lang/bg/lang.php40
-rw-r--r--inc/lang/bn/lang.php10
-rw-r--r--inc/lang/ca-valencia/lang.php36
-rw-r--r--inc/lang/ca/lang.php36
-rw-r--r--inc/lang/cs/lang.php42
-rw-r--r--inc/lang/da/lang.php40
-rw-r--r--inc/lang/de-informal/lang.php40
-rw-r--r--inc/lang/de/lang.php40
-rw-r--r--inc/lang/el/lang.php40
-rw-r--r--inc/lang/en/lang.php41
-rw-r--r--inc/lang/eo/lang.php40
-rw-r--r--inc/lang/es/edit.txt2
-rw-r--r--inc/lang/es/lang.php53
-rw-r--r--inc/lang/es/uploadmail.txt3
-rw-r--r--inc/lang/et/lang.php42
-rw-r--r--inc/lang/eu/lang.php36
-rw-r--r--inc/lang/fa/lang.php38
-rw-r--r--inc/lang/fi/lang.php40
-rw-r--r--inc/lang/fo/lang.php36
-rw-r--r--inc/lang/fr/lang.php62
-rw-r--r--inc/lang/fr/subscr_form.txt4
-rw-r--r--inc/lang/gl/lang.php40
-rw-r--r--inc/lang/he/lang.php40
-rw-r--r--inc/lang/hi/lang.php26
-rw-r--r--inc/lang/hr/lang.php36
-rw-r--r--inc/lang/hu/lang.php46
-rw-r--r--inc/lang/ia/lang.php36
-rw-r--r--inc/lang/id-ni/lang.php4
-rw-r--r--inc/lang/id/lang.php40
-rw-r--r--inc/lang/is/lang.php36
-rw-r--r--inc/lang/it/lang.php52
-rw-r--r--inc/lang/ja/lang.php50
-rw-r--r--inc/lang/ka/lang.php219
-rw-r--r--inc/lang/kk/lang.php14
-rw-r--r--inc/lang/km/lang.php36
-rw-r--r--inc/lang/ko/lang.php41
-rw-r--r--inc/lang/ku/lang.php26
-rw-r--r--inc/lang/la/lang.php24
-rw-r--r--inc/lang/lb/lang.php36
-rw-r--r--inc/lang/lt/lang.php36
-rw-r--r--inc/lang/lv/lang.php66
-rw-r--r--inc/lang/mg/lang.php10
-rw-r--r--inc/lang/mk/lang.php36
-rw-r--r--inc/lang/mr/lang.php36
-rw-r--r--inc/lang/ms/lang.php8
-rw-r--r--inc/lang/ne/lang.php34
-rw-r--r--inc/lang/nl/lang.php47
-rw-r--r--inc/lang/no/lang.php40
-rw-r--r--inc/lang/pl/lang.php48
-rw-r--r--inc/lang/pt-br/lang.php49
-rw-r--r--inc/lang/pt/lang.php63
-rw-r--r--inc/lang/ro/lang.php40
-rw-r--r--inc/lang/ru/lang.php40
-rw-r--r--inc/lang/sk/lang.php36
-rw-r--r--inc/lang/sl/lang.php40
-rw-r--r--inc/lang/sq/lang.php36
-rw-r--r--inc/lang/sr/lang.php36
-rw-r--r--inc/lang/sv/lang.php47
-rw-r--r--inc/lang/th/lang.php36
-rw-r--r--inc/lang/tr/lang.php64
-rw-r--r--inc/lang/tr/subscr_form.txt3
-rw-r--r--inc/lang/uk/lang.php36
-rw-r--r--inc/lang/vi/lang.php40
-rw-r--r--inc/lang/zh-tw/lang.php40
-rw-r--r--inc/lang/zh/lang.php42
-rw-r--r--inc/load.php4
-rw-r--r--inc/media.php8
-rw-r--r--inc/pageutils.php73
-rw-r--r--inc/parser/code.php12
-rw-r--r--inc/parser/metadata.php575
-rw-r--r--inc/parser/parser.php5
-rw-r--r--inc/parser/renderer.php765
-rw-r--r--inc/parser/xhtml.php1040
-rw-r--r--inc/plugin.php1
-rw-r--r--inc/subscription.php9
-rw-r--r--inc/template.php24
-rw-r--r--install.php16
-rw-r--r--lib/exe/ajax.php2
-rw-r--r--lib/exe/css.php31
-rw-r--r--lib/plugins/acl/admin.php4
-rw-r--r--lib/plugins/acl/lang/ar/lang.php4
-rw-r--r--lib/plugins/acl/lang/bg/lang.php4
-rw-r--r--lib/plugins/acl/lang/ca-valencia/lang.php4
-rw-r--r--lib/plugins/acl/lang/ca/lang.php4
-rw-r--r--lib/plugins/acl/lang/cs/lang.php4
-rw-r--r--lib/plugins/acl/lang/da/lang.php4
-rw-r--r--lib/plugins/acl/lang/de-informal/lang.php4
-rw-r--r--lib/plugins/acl/lang/de/lang.php4
-rw-r--r--lib/plugins/acl/lang/el/lang.php4
-rw-r--r--lib/plugins/acl/lang/en/lang.php4
-rw-r--r--lib/plugins/acl/lang/eo/lang.php4
-rw-r--r--lib/plugins/acl/lang/es/lang.php4
-rw-r--r--lib/plugins/acl/lang/et/lang.php4
-rw-r--r--lib/plugins/acl/lang/eu/lang.php4
-rw-r--r--lib/plugins/acl/lang/fa/lang.php4
-rw-r--r--lib/plugins/acl/lang/fi/lang.php4
-rw-r--r--lib/plugins/acl/lang/fr/lang.php4
-rw-r--r--lib/plugins/acl/lang/gl/lang.php4
-rw-r--r--lib/plugins/acl/lang/he/lang.php4
-rw-r--r--lib/plugins/acl/lang/hr/lang.php4
-rw-r--r--lib/plugins/acl/lang/ia/lang.php4
-rw-r--r--lib/plugins/acl/lang/id/lang.php4
-rw-r--r--lib/plugins/acl/lang/is/lang.php4
-rw-r--r--lib/plugins/acl/lang/it/lang.php4
-rw-r--r--lib/plugins/acl/lang/ja/lang.php4
-rw-r--r--lib/plugins/acl/lang/kk/lang.php4
-rw-r--r--lib/plugins/acl/lang/ko/lang.php4
-rw-r--r--lib/plugins/acl/lang/la/lang.php4
-rw-r--r--lib/plugins/acl/lang/lt/lang.php4
-rw-r--r--lib/plugins/acl/lang/lv/lang.php8
-rw-r--r--lib/plugins/acl/lang/mk/lang.php4
-rw-r--r--lib/plugins/acl/lang/mr/lang.php4
-rw-r--r--lib/plugins/acl/lang/ne/lang.php4
-rw-r--r--lib/plugins/acl/lang/nl/lang.php4
-rw-r--r--lib/plugins/acl/lang/no/lang.php4
-rw-r--r--lib/plugins/acl/lang/pl/lang.php4
-rw-r--r--lib/plugins/acl/lang/pt-br/lang.php4
-rw-r--r--lib/plugins/acl/lang/pt/lang.php4
-rw-r--r--lib/plugins/acl/lang/ro/lang.php4
-rw-r--r--lib/plugins/acl/lang/ru/lang.php4
-rw-r--r--lib/plugins/acl/lang/sk/lang.php4
-rw-r--r--lib/plugins/acl/lang/sl/lang.php4
-rw-r--r--lib/plugins/acl/lang/sq/lang.php4
-rw-r--r--lib/plugins/acl/lang/sr/lang.php4
-rw-r--r--lib/plugins/acl/lang/sv/lang.php4
-rw-r--r--lib/plugins/acl/lang/th/lang.php4
-rw-r--r--lib/plugins/acl/lang/tr/lang.php4
-rw-r--r--lib/plugins/acl/lang/uk/lang.php4
-rw-r--r--lib/plugins/acl/lang/vi/lang.php4
-rw-r--r--lib/plugins/acl/lang/zh-tw/lang.php4
-rw-r--r--lib/plugins/acl/lang/zh/lang.php4
-rw-r--r--lib/plugins/authad/lang/hu/lang.php8
-rw-r--r--lib/plugins/authad/lang/ja/lang.php8
-rw-r--r--lib/plugins/authad/lang/ja/settings.php2
-rw-r--r--lib/plugins/authad/lang/lv/lang.php8
-rw-r--r--lib/plugins/authad/lang/lv/settings.php11
-rw-r--r--lib/plugins/authad/lang/pl/settings.php1
-rw-r--r--lib/plugins/authad/lang/pt/lang.php8
-rw-r--r--lib/plugins/authad/lang/pt/settings.php5
-rw-r--r--lib/plugins/authad/lang/zh/lang.php8
-rw-r--r--lib/plugins/authldap/auth.php60
-rw-r--r--lib/plugins/authldap/lang/it/settings.php6
-rw-r--r--lib/plugins/authldap/lang/ja/settings.php7
-rw-r--r--lib/plugins/authldap/lang/lv/settings.php9
-rw-r--r--lib/plugins/authldap/lang/tr/settings.php8
-rw-r--r--lib/plugins/authmysql/lang/es/settings.php4
-rw-r--r--lib/plugins/authmysql/lang/it/settings.php29
-rw-r--r--lib/plugins/authmysql/lang/lv/settings.php10
-rw-r--r--lib/plugins/authmysql/lang/pl/settings.php2
-rw-r--r--lib/plugins/authmysql/lang/tr/settings.php41
-rw-r--r--lib/plugins/authpgsql/lang/es/settings.php17
-rw-r--r--lib/plugins/authpgsql/lang/it/settings.php11
-rw-r--r--lib/plugins/authpgsql/lang/lv/settings.php9
-rw-r--r--lib/plugins/authpgsql/lang/pl/settings.php9
-rw-r--r--lib/plugins/authpgsql/lang/tr/settings.php13
-rw-r--r--lib/plugins/extension/helper/extension.php48
-rw-r--r--lib/plugins/extension/images/disabled.pngbin1486 -> 1396 bytes
-rw-r--r--lib/plugins/extension/images/enabled.pngbin1231 -> 1398 bytes
-rw-r--r--lib/plugins/extension/images/license.txt4
-rw-r--r--lib/plugins/extension/lang/de/lang.php2
-rw-r--r--lib/plugins/extension/lang/en/lang.php4
-rw-r--r--lib/plugins/extension/lang/es/intro_install.txt1
-rw-r--r--lib/plugins/extension/lang/es/intro_templates.txt1
-rw-r--r--lib/plugins/extension/lang/es/lang.php32
-rw-r--r--lib/plugins/extension/lang/fr/intro_install.txt2
-rw-r--r--lib/plugins/extension/lang/fr/intro_templates.txt2
-rw-r--r--lib/plugins/extension/lang/fr/lang.php11
-rw-r--r--lib/plugins/extension/lang/hu/intro_install.txt1
-rw-r--r--lib/plugins/extension/lang/hu/intro_plugins.txt1
-rw-r--r--lib/plugins/extension/lang/hu/intro_search.txt1
-rw-r--r--lib/plugins/extension/lang/hu/intro_templates.txt1
-rw-r--r--lib/plugins/extension/lang/hu/lang.php88
-rw-r--r--lib/plugins/extension/lang/it/lang.php41
-rw-r--r--lib/plugins/extension/lang/ja/intro_install.txt2
-rw-r--r--lib/plugins/extension/lang/ja/intro_plugins.txt2
-rw-r--r--lib/plugins/extension/lang/ja/intro_templates.txt2
-rw-r--r--lib/plugins/extension/lang/ja/lang.php43
-rw-r--r--lib/plugins/extension/lang/ko/lang.php1
-rw-r--r--lib/plugins/extension/lang/lv/intro_templates.txt1
-rw-r--r--lib/plugins/extension/lang/lv/lang.php8
-rw-r--r--lib/plugins/extension/lang/nl/intro_plugins.txt2
-rw-r--r--lib/plugins/extension/lang/nl/intro_search.txt2
-rw-r--r--lib/plugins/extension/lang/nl/intro_templates.txt2
-rw-r--r--lib/plugins/extension/lang/nl/lang.php31
-rw-r--r--lib/plugins/extension/lang/pl/lang.php39
-rw-r--r--lib/plugins/extension/lang/tr/lang.php60
-rw-r--r--lib/plugins/extension/lang/zh/lang.php19
-rw-r--r--lib/plugins/popularity/lang/lv/lang.php5
-rw-r--r--lib/plugins/revert/lang/cs/lang.php1
-rw-r--r--lib/plugins/revert/lang/lv/lang.php5
-rw-r--r--lib/plugins/revert/lang/nl/intro.txt2
-rw-r--r--lib/plugins/revert/lang/nl/lang.php3
-rw-r--r--lib/plugins/revert/lang/sv/lang.php1
-rw-r--r--lib/plugins/syntax.php11
-rw-r--r--lib/plugins/usermanager/lang/es/lang.php12
-rw-r--r--lib/plugins/usermanager/lang/hu/import.txt2
-rw-r--r--lib/plugins/usermanager/lang/it/lang.php8
-rw-r--r--lib/plugins/usermanager/lang/lv/import.txt9
-rw-r--r--lib/plugins/usermanager/lang/lv/lang.php5
-rw-r--r--lib/plugins/usermanager/lang/nl/intro.txt2
-rw-r--r--lib/plugins/usermanager/lang/nl/lang.php3
-rw-r--r--lib/scripts/fileuploader.js4
-rw-r--r--lib/tpl/index.php2
228 files changed, 5886 insertions, 2874 deletions
diff --git a/.gitattributes b/.gitattributes
index 0fefdf647..1012087d4 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -4,3 +4,11 @@
*.gif binary
*.ico binary
*.xcf binary
+
+.gitattributes export-ignore
+.gitignore export-ignore
+.editorconfig export-ignore
+.travis.yml export-ignore
+_test export-ignore
+_cs export-ignore
+lib/plugins/testing export-ignore
diff --git a/_test/tests/inc/cache_use.test.php b/_test/tests/inc/cache_use.test.php
index c54a472a3..02fe329de 100644
--- a/_test/tests/inc/cache_use.test.php
+++ b/_test/tests/inc/cache_use.test.php
@@ -18,11 +18,14 @@ class cache_use_test extends DokuWikiTest {
$conf['cachetime'] = 0; // ensure the value is not -1, which disables caching
saveWikiText($ID, 'Content', 'Created');
- // set the modification time a second in the past in order to ensure that the cache is newer than the page
- touch($file, time()-1);
$this->cache = new cache_renderer($ID, $file, 'xhtml');
$this->cache->storeCache('Test');
+
+ // set the modification times explicitly (overcome Issue #694)
+ $time = time();
+ touch($file, $time-1);
+ touch($this->cache->cache, $time);
}
function test_use() {
diff --git a/_test/tests/inc/cli_options.test.php b/_test/tests/inc/cli_options.test.php
new file mode 100644
index 000000000..ab03ee29b
--- /dev/null
+++ b/_test/tests/inc/cli_options.test.php
@@ -0,0 +1,56 @@
+<?php
+
+class cli_options extends DokuWikiTest {
+
+ function test_simpleshort() {
+ $options = new DokuCLI_Options();
+ $options->registerOption('exclude', 'exclude files', 'x', 'file');
+
+ $options->args = array('-x', 'foo', 'bang');
+ $options->parseOptions();
+
+ $this->assertEquals('foo', $options->getOpt('exclude'));
+ $this->assertEquals(array('bang'), $options->args);
+ $this->assertFalse($options->getOpt('nothing'));
+ }
+
+ function test_simplelong1() {
+ $options = new DokuCLI_Options();
+ $options->registerOption('exclude', 'exclude files', 'x', 'file');
+
+ $options->args = array('--exclude', 'foo', 'bang');
+ $options->parseOptions();
+
+ $this->assertEquals('foo', $options->getOpt('exclude'));
+ $this->assertEquals(array('bang'), $options->args);
+ $this->assertFalse($options->getOpt('nothing'));
+ }
+
+ function test_simplelong2() {
+ $options = new DokuCLI_Options();
+ $options->registerOption('exclude', 'exclude files', 'x', 'file');
+
+ $options->args = array('--exclude=foo', 'bang');
+ $options->parseOptions();
+
+ $this->assertEquals('foo', $options->getOpt('exclude'));
+ $this->assertEquals(array('bang'), $options->args);
+ $this->assertFalse($options->getOpt('nothing'));
+ }
+
+ function test_complex() {
+ $options = new DokuCLI_Options();
+
+ $options->registerOption('plugins', 'run on plugins only', 'p');
+ $options->registerCommand('status', 'display status info');
+ $options->registerOption('long', 'display long lines', 'l', false, 'status');
+
+ $options->args = array('-p', 'status', '--long', 'foo');
+ $options->parseOptions();
+
+ $this->assertEquals('status', $options->getCmd());
+ $this->assertTrue($options->getOpt('plugins'));
+ $this->assertTrue($options->getOpt('long'));
+ $this->assertEquals(array('foo'), $options->args);
+ }
+} \ No newline at end of file
diff --git a/_test/tests/lib/exe/css_css_compress.test.php b/_test/tests/lib/exe/css_css_compress.test.php
index f0eb17968..807317ca6 100644
--- a/_test/tests/lib/exe/css_css_compress.test.php
+++ b/_test/tests/lib/exe/css_css_compress.test.php
@@ -53,6 +53,21 @@ class css_css_compress_test extends DokuWikiTest {
$this->assertEquals('#foo{background-image:url(http://foo.bar/baz.jpg);}', css_compress($text));
}
+ function test_slcom6(){
+ $text = '#foo {
+ background-image: url(//foo.bar/baz.jpg); // background-image: url(http://foo.bar/baz.jpg); this is all commented
+ }';
+ $this->assertEquals('#foo{background-image:url(//foo.bar/baz.jpg);}', css_compress($text));
+ }
+
+ function test_slcom7(){
+ $text = '#foo a[href ^="https://"], #foo a[href ^=\'https://\'] {
+ background-image: url(//foo.bar/baz.jpg); // background-image: url(http://foo.bar/baz.jpg); this is \'all\' "commented"
+ }';
+ $this->assertEquals('#foo a[href ^="https://"],#foo a[href ^=\'https://\']{background-image:url(//foo.bar/baz.jpg);}', css_compress($text));
+ }
+
+
function test_hack(){
$text = '/* Mac IE will not see this and continue with inline-block */
/* \\*/
diff --git a/bin/dwpage.php b/bin/dwpage.php
index 96f6d3ef9..a777fd3e1 100755
--- a/bin/dwpage.php
+++ b/bin/dwpage.php
@@ -1,378 +1,317 @@
#!/usr/bin/php
<?php
-#------------------------------------------------------------------------------
-if ('cli' != php_sapi_name()) die();
-
-ini_set('memory_limit','128M');
-if(!defined('DOKU_INC')) define('DOKU_INC',realpath(dirname(__FILE__).'/../').'/');
-require_once DOKU_INC.'inc/init.php';
-require_once DOKU_INC.'inc/common.php';
-require_once DOKU_INC.'inc/cliopts.php';
-
-#------------------------------------------------------------------------------
-function usage($action) {
- switch ( $action ) {
- case 'checkout':
- print "Usage: dwpage.php [opts] checkout <wiki:page> [working_file]
-
- Checks out a file from the repository, using the wiki id and obtaining
- a lock for the page.
- If a working_file is specified, this is where the page is copied to.
- Otherwise defaults to the same as the wiki page in the current
- working directory.
-
- EXAMPLE
- $ ./dwpage.php checkout wiki:syntax ./new_syntax.txt
-
- OPTIONS
- -h, --help=<action>: get help
- -f: force obtaining a lock for the page (generally bad idea)
-";
- break;
- case 'commit':
- print "Usage: dwpage.php [opts] -m \"Msg\" commit <working_file> <wiki:page>
-
- Checks in the working_file into the repository using the specified
- wiki id, archiving the previous version.
-
- EXAMPLE
- $ ./dwpage.php -m \"Some message\" commit ./new_syntax.txt wiki:syntax
-
- OPTIONS
- -h, --help=<action>: get help
- -f: force obtaining a lock for the page (generally bad idea)
- -t, trivial: minor change
- -m (required): Summary message describing the change
-";
- break;
- case 'lock':
- print "Usage: dwpage.php [opts] lock <wiki:page>
-
- Obtains or updates a lock for a wiki page
-
- EXAMPLE
- $ ./dwpage.php lock wiki:syntax
-
- OPTIONS
- -h, --help=<action>: get help
- -f: force obtaining a lock for the page (generally bad idea)
-";
- break;
- case 'unlock':
- print "Usage: dwpage.php [opts] unlock <wiki:page>
-
- Removes a lock for a wiki page.
-
- EXAMPLE
- $ ./dwpage.php unlock wiki:syntax
-
- OPTIONS
- -h, --help=<action>: get help
- -f: force obtaining a lock for the page (generally bad idea)
-";
- break;
- default:
- print "Usage: dwpage.php [opts] <action>
-
- Utility to help command line Dokuwiki page editing, allow
- pages to be checked out for editing then committed after changes
-
- Normal operation would be;
-
-
-
- ACTIONS
- checkout: see $ dwpage.php --help=checkout
- commit: see $ dwpage.php --help=commit
- lock: see $ dwpage.php --help=lock
-
- OPTIONS
- -h, --help=<action>: get help
- e.g. $ ./dwpage.php -hcommit
- e.g. $ ./dwpage.php --help=commit
-";
- break;
+if(!defined('DOKU_INC')) define('DOKU_INC', realpath(dirname(__FILE__).'/../').'/');
+define('NOSESSION', 1);
+require_once(DOKU_INC.'inc/init.php');
+
+/**
+ * Checkout and commit pages from the command line while maintaining the history
+ */
+class PageCLI extends DokuCLI {
+
+ protected $force = false;
+ protected $username = '';
+
+ /**
+ * Register options and arguments on the given $options object
+ *
+ * @param DokuCLI_Options $options
+ * @return void
+ */
+ protected function setup(DokuCLI_Options $options) {
+ /* global */
+ $options->registerOption(
+ 'force',
+ 'force obtaining a lock for the page (generally bad idea)',
+ 'f'
+ );
+ $options->registerOption(
+ 'user',
+ 'work as this user. defaults to current CLI user',
+ 'u'
+ );
+ $options->setHelp(
+ 'Utility to help command line Dokuwiki page editing, allow '.
+ 'pages to be checked out for editing then committed after changes'
+ );
+
+ /* checkout command */
+ $options->registerCommand(
+ 'checkout',
+ 'Checks out a file from the repository, using the wiki id and obtaining '.
+ 'a lock for the page. '."\n".
+ 'If a working_file is specified, this is where the page is copied to. '.
+ 'Otherwise defaults to the same as the wiki page in the current '.
+ 'working directory.'
+ );
+ $options->registerArgument(
+ 'wikipage',
+ 'The wiki page to checkout',
+ true,
+ 'checkout'
+ );
+ $options->registerArgument(
+ 'workingfile',
+ 'How to name the local checkout',
+ false,
+ 'checkout'
+ );
+
+ /* commit command */
+ $options->registerCommand(
+ 'commit',
+ 'Checks in the working_file into the repository using the specified '.
+ 'wiki id, archiving the previous version.'
+ );
+ $options->registerArgument(
+ 'workingfile',
+ 'The local file to commit',
+ true,
+ 'commit'
+ );
+ $options->registerArgument(
+ 'wikipage',
+ 'The wiki page to create or update',
+ true,
+ 'commit'
+ );
+ $options->registerOption(
+ 'message',
+ 'Summary describing the change (required)',
+ 'm',
+ 'summary',
+ 'commit'
+ );
+ $options->registerOption(
+ 'trivial',
+ 'minor change',
+ 't',
+ false,
+ 'commit'
+ );
+
+ /* lock command */
+ $options->registerCommand(
+ 'lock',
+ 'Obtains or updates a lock for a wiki page'
+ );
+ $options->registerArgument(
+ 'wikipage',
+ 'The wiki page to lock',
+ true,
+ 'lock'
+ );
+
+ /* unlock command */
+ $options->registerCommand(
+ 'unlock',
+ 'Removes a lock for a wiki page.'
+ );
+ $options->registerArgument(
+ 'wikipage',
+ 'The wiki page to unlock',
+ true,
+ 'unlock'
+ );
}
-}
-
-#------------------------------------------------------------------------------
-function getUser() {
- $user = getenv('USER');
- if (empty ($user)) {
- $user = getenv('USERNAME');
- } else {
- return $user;
- }
- if (empty ($user)) {
- $user = 'admin';
- }
- return $user;
-}
-
-#------------------------------------------------------------------------------
-function getSuppliedArgument($OPTS, $short, $long) {
- $arg = $OPTS->get($short);
- if ( is_null($arg) ) {
- $arg = $OPTS->get($long);
- }
- return $arg;
-}
-
-#------------------------------------------------------------------------------
-function obtainLock($WIKI_ID) {
-
- global $USERNAME;
-
- if ( !file_exists(wikiFN($WIKI_ID)) ) {
- fwrite( STDERR, "$WIKI_ID does not yet exist\n");
- }
-
- $_SERVER['REMOTE_USER'] = $USERNAME;
- if ( checklock($WIKI_ID) ) {
- fwrite( STDERR, "Page $WIKI_ID is already locked by another user\n");
- exit(1);
- }
-
- lock($WIKI_ID);
-
- $_SERVER['REMOTE_USER'] = '_'.$USERNAME.'_';
-
- if ( checklock($WIKI_ID) != $USERNAME ) {
-
- fwrite( STDERR, "Unable to obtain lock for $WIKI_ID\n" );
- exit(1);
-
- }
-}
-
-#------------------------------------------------------------------------------
-function clearLock($WIKI_ID) {
-
- global $USERNAME ;
- if ( !file_exists(wikiFN($WIKI_ID)) ) {
- fwrite( STDERR, "$WIKI_ID does not yet exist\n");
- }
-
- $_SERVER['REMOTE_USER'] = $USERNAME;
- if ( checklock($WIKI_ID) ) {
- fwrite( STDERR, "Page $WIKI_ID is locked by another user\n");
- exit(1);
- }
-
- unlock($WIKI_ID);
-
- if ( file_exists(wikiLockFN($WIKI_ID)) ) {
- fwrite( STDERR, "Unable to clear lock for $WIKI_ID\n" );
- exit(1);
- }
-
-}
-
-#------------------------------------------------------------------------------
-function deleteLock($WIKI_ID) {
-
- $wikiLockFN = wikiLockFN($WIKI_ID);
-
- if ( file_exists($wikiLockFN) ) {
- if ( !unlink($wikiLockFN) ) {
- fwrite( STDERR, "Unable to delete $wikiLockFN\n" );
- exit(1);
+ /**
+ * Your main program
+ *
+ * Arguments and options have been parsed when this is run
+ *
+ * @param DokuCLI_Options $options
+ * @return void
+ */
+ protected function main(DokuCLI_Options $options) {
+ $this->force = $options->getOpt('force', false);
+ $this->username = $options->getOpt('user', $this->getUser());
+
+ $command = $options->getCmd();
+ switch($command) {
+ case 'checkout':
+ $wiki_id = array_shift($options->args);
+ $localfile = array_shift($options->args);
+ $this->commandCheckout($wiki_id, $localfile);
+ break;
+ case 'commit':
+ $localfile = array_shift($options->args);
+ $wiki_id = array_shift($options->args);
+ $this->commandCommit(
+ $localfile,
+ $wiki_id,
+ $options->getOpt('message', ''),
+ $options->getOpt('trivial', false)
+ );
+ break;
+ case 'lock':
+ $wiki_id = array_shift($options->args);
+ $this->obtainLock($wiki_id);
+ $this->success("$wiki_id locked");
+ break;
+ case 'unlock':
+ $wiki_id = array_shift($options->args);
+ $this->clearLock($wiki_id);
+ $this->success("$wiki_id unlocked");
+ break;
+ default:
+ echo $options->help();
}
}
-}
-
-#------------------------------------------------------------------------------
-$USERNAME = getUser();
-$CWD = getcwd();
-$SYSTEM_ID = '127.0.0.1';
-
-#------------------------------------------------------------------------------
-$OPTS = Doku_Cli_Opts::getOptions(
- __FILE__,
- 'h::fm:u:s:t',
- array(
- 'help==',
- 'user=',
- 'system=',
- 'trivial',
- )
-);
-
-if ( $OPTS->isError() ) {
- print $OPTS->getMessage()."\n";
- exit(1);
-}
-
-if ( $OPTS->has('h') or $OPTS->has('help') or !$OPTS->hasArgs() ) {
- usage(getSuppliedArgument($OPTS,'h','help'));
- exit(0);
-}
-
-if ( $OPTS->has('u') or $OPTS->has('user') ) {
- $USERNAME = getSuppliedArgument($OPTS,'u','user');
-}
-
-if ( $OPTS->has('s') or $OPTS->has('system') ) {
- $SYSTEM_ID = getSuppliedArgument($OPTS,'s','system');
-}
+ /**
+ * Check out a file
+ *
+ * @param string $wiki_id
+ * @param string $localfile
+ */
+ protected function commandCheckout($wiki_id, $localfile) {
+ global $conf;
-#------------------------------------------------------------------------------
-switch ( $OPTS->arg(0) ) {
+ $wiki_id = cleanID($wiki_id);
+ $wiki_fn = wikiFN($wiki_id);
- #----------------------------------------------------------------------
- case 'checkout':
-
- $WIKI_ID = $OPTS->arg(1);
-
- if ( !$WIKI_ID ) {
- fwrite( STDERR, "Wiki page ID required\n");
- exit(1);
+ if(!file_exists($wiki_fn)) {
+ $this->fatal("$wiki_id does not yet exist");
}
- $WIKI_FN = wikiFN($WIKI_ID);
-
- if ( !file_exists($WIKI_FN) ) {
- fwrite( STDERR, "$WIKI_ID does not yet exist\n");
- exit(1);
+ if(empty($localfile)) {
+ $localfile = getcwd().'/'.utf8_basename($wiki_fn);
}
- $TARGET_FN = $OPTS->arg(2);
-
- if ( empty($TARGET_FN) ) {
- $TARGET_FN = getcwd().'/'.utf8_basename($WIKI_FN);
+ if(!file_exists(dirname($localfile))) {
+ $this->fatal("Directory ".dirname($localfile)." does not exist");
}
- if ( !file_exists(dirname($TARGET_FN)) ) {
- fwrite( STDERR, "Directory ".dirname($TARGET_FN)." does not exist\n");
- exit(1);
+ if(stristr(realpath(dirname($localfile)), realpath($conf['datadir'])) !== false) {
+ $this->fatal("Attempt to check out file into data directory - not allowed");
}
- if ( stristr( realpath(dirname($TARGET_FN)), realpath($conf['datadir']) ) !== false ) {
- fwrite( STDERR, "Attempt to check out file into data directory - not allowed\n");
- exit(1);
- }
+ $this->obtainLock($wiki_id);
- if ( $OPTS->has('f') ) {
- deleteLock($WIKI_ID);
+ if(!copy($wiki_fn, $localfile)) {
+ $this->clearLock($wiki_id);
+ $this->fatal("Unable to copy $wiki_fn to $localfile");
}
- obtainLock($WIKI_ID);
+ $this->success("$wiki_id > $localfile");
+ }
- # Need to lock the file first?
- if ( !copy($WIKI_FN, $TARGET_FN) ) {
- fwrite( STDERR, "Unable to copy $WIKI_FN to $TARGET_FN\n");
- clearLock($WIKI_ID);
- exit(1);
+ /**
+ * Save a file as a new page revision
+ *
+ * @param string $localfile
+ * @param string $wiki_id
+ * @param string $message
+ * @param bool $minor
+ */
+ protected function commandCommit($localfile, $wiki_id, $message, $minor) {
+ $wiki_id = cleanID($wiki_id);
+ $message = trim($message);
+
+ if(!file_exists($localfile)) {
+ $this->fatal("$localfile does not exist");
}
- print "$WIKI_ID > $TARGET_FN\n";
- exit(0);
+ if(!is_readable($localfile)) {
+ $this->fatal("Cannot read from $localfile");
+ }
- break;
+ if(!$message) {
+ $this->fatal("Summary message required");
+ }
- #----------------------------------------------------------------------
- case 'commit':
+ $this->obtainLock($wiki_id);
- $TARGET_FN = $OPTS->arg(1);
+ saveWikiText($wiki_id, file_get_contents($localfile), $message, $minor);
- if ( !$TARGET_FN ) {
- fwrite( STDERR, "Target filename required\n");
- exit(1);
- }
+ $this->clearLock($wiki_id);
- if ( !file_exists($TARGET_FN) ) {
- fwrite( STDERR, "$TARGET_FN does not exist\n");
- exit(1);
- }
+ $this->success("$localfile > $wiki_id");
+ }
- if ( !is_readable($TARGET_FN) ) {
- fwrite( STDERR, "Cannot read from $TARGET_FN\n");
+ /**
+ * Lock the given page or exit
+ *
+ * @param string $wiki_id
+ */
+ protected function obtainLock($wiki_id) {
+ if($this->force) $this->deleteLock($wiki_id);
+
+ $_SERVER['REMOTE_USER'] = $this->username;
+ if(checklock($wiki_id)) {
+ $this->error("Page $wiki_id is already locked by another user");
exit(1);
}
- $WIKI_ID = $OPTS->arg(2);
+ lock($wiki_id);
- if ( !$WIKI_ID ) {
- fwrite( STDERR, "Wiki page ID required\n");
+ $_SERVER['REMOTE_USER'] = '_'.$this->username.'_';
+ if(checklock($wiki_id) != $this->username) {
+ $this->error("Unable to obtain lock for $wiki_id ");
+ var_dump(checklock($wiki_id));
exit(1);
}
+ }
- if ( !$OPTS->has('m') ) {
- fwrite( STDERR, "Summary message required\n");
+ /**
+ * Clear the lock on the given page
+ *
+ * @param string $wiki_id
+ */
+ protected function clearLock($wiki_id) {
+ if($this->force) $this->deleteLock($wiki_id);
+
+ $_SERVER['REMOTE_USER'] = $this->username;
+ if(checklock($wiki_id)) {
+ $this->error("Page $wiki_id is locked by another user");
exit(1);
}
- if ( $OPTS->has('f') ) {
- deleteLock($WIKI_ID);
- }
+ unlock($wiki_id);
- $_SERVER['REMOTE_USER'] = $USERNAME;
- if ( checklock($WIKI_ID) ) {
- fwrite( STDERR, "$WIKI_ID is locked by another user\n");
+ if(file_exists(wikiLockFN($wiki_id))) {
+ $this->error("Unable to clear lock for $wiki_id");
exit(1);
}
+ }
- obtainLock($WIKI_ID);
-
- saveWikiText($WIKI_ID, file_get_contents($TARGET_FN), $OPTS->get('m'), $OPTS->has('t'));
-
- clearLock($WIKI_ID);
-
- exit(0);
-
- break;
-
- #----------------------------------------------------------------------
- case 'lock':
-
- $WIKI_ID = $OPTS->arg(1);
-
- if ( !$WIKI_ID ) {
- fwrite( STDERR, "Wiki page ID required\n");
- exit(1);
- }
-
- if ( $OPTS->has('f') ) {
- deleteLock($WIKI_ID);
- }
-
- obtainLock($WIKI_ID);
-
- print "Locked : $WIKI_ID\n";
- exit(0);
-
- break;
-
- #----------------------------------------------------------------------
- case 'unlock':
-
- $WIKI_ID = $OPTS->arg(1);
-
- if ( !$WIKI_ID ) {
- fwrite( STDERR, "Wiki page ID required\n");
- exit(1);
+ /**
+ * Forcefully remove a lock on the page given
+ *
+ * @param string $wiki_id
+ */
+ protected function deleteLock($wiki_id) {
+ $wikiLockFN = wikiLockFN($wiki_id);
+
+ if(file_exists($wikiLockFN)) {
+ if(!unlink($wikiLockFN)) {
+ $this->error("Unable to delete $wikiLockFN");
+ exit(1);
+ }
}
+ }
- if ( $OPTS->has('f') ) {
- deleteLock($WIKI_ID);
+ /**
+ * Get the current user's username from the environment
+ *
+ * @return string
+ */
+ protected function getUser() {
+ $user = getenv('USER');
+ if(empty ($user)) {
+ $user = getenv('USERNAME');
} else {
- clearLock($WIKI_ID);
+ return $user;
}
-
- print "Unlocked : $WIKI_ID\n";
- exit(0);
-
- break;
-
- #----------------------------------------------------------------------
- default:
-
- fwrite( STDERR, "Invalid action ".$OPTS->arg(0)."\n" );
- exit(1);
-
- break;
-
+ if(empty ($user)) {
+ $user = 'admin';
+ }
+ return $user;
+ }
}
+
+// Main
+$cli = new PageCLI();
+$cli->run(); \ No newline at end of file
diff --git a/bin/gittool.php b/bin/gittool.php
index f9f68ac94..6944dde57 100755
--- a/bin/gittool.php
+++ b/bin/gittool.php
@@ -1,78 +1,101 @@
#!/usr/bin/php
<?php
-
-if('cli' != php_sapi_name()) die();
-ini_set('memory_limit', '128M');
if(!defined('DOKU_INC')) define('DOKU_INC', realpath(dirname(__FILE__).'/../').'/');
define('NOSESSION', 1);
require_once(DOKU_INC.'inc/init.php');
-$GitToolCLI = new GitToolCLI();
-
-array_shift($argv);
-$command = array_shift($argv);
-
-switch($command) {
- case '':
- case 'help':
- $GitToolCLI->cmd_help();
- break;
- case 'clone':
- $GitToolCLI->cmd_clone($argv);
- break;
- case 'install':
- $GitToolCLI->cmd_install($argv);
- break;
- case 'repo':
- case 'repos':
- $GitToolCLI->cmd_repos();
- break;
- default:
- $GitToolCLI->cmd_git($command, $argv);
-}
-
/**
* Easily manage DokuWiki git repositories
*
* @author Andreas Gohr <andi@splitbrain.org>
*/
-class GitToolCLI {
- private $color = true;
-
- public function cmd_help() {
- echo <<<EOF
-Usage: gittool.php <command> [parameters]
-
-Manage git repositories for DokuWiki and its plugins and templates.
+class GitToolCLI extends DokuCLI {
-EXAMPLE
-
-$> ./bin/gittool.php clone gallery template:ach
-$> ./bin/gittool.php repos
-$> ./bin/gittool.php origin -v
-
-COMMANDS
+ /**
+ * Register options and arguments on the given $options object
+ *
+ * @param DokuCLI_Options $options
+ * @return void
+ */
+ protected function setup(DokuCLI_Options $options) {
+ $options->setHelp(
+ "Manage git repositories for DokuWiki and its plugins and templates.\n\n".
+ "$> ./bin/gittool.php clone gallery template:ach\n".
+ "$> ./bin/gittool.php repos\n".
+ "$> ./bin/gittool.php origin -v"
+ );
-help
- This help screen
+ $options->registerArgument(
+ 'command',
+ 'Command to execute. See below',
+ true
+ );
-clone <extensions>
- Tries to install a known plugin or template (prefix with template:) via
- git. Uses the DokuWiki.org plugin repository to find the proper git
- repository. Multiple extensions can be given as parameters
+ $options->registerCommand(
+ 'clone',
+ 'Tries to install a known plugin or template (prefix with template:) via git. Uses the DokuWiki.org '.
+ 'plugin repository to find the proper git repository. Multiple extensions can be given as parameters'
+ );
+ $options->registerArgument(
+ 'extension',
+ 'name of the extension to install, prefix with \'template:\' for templates',
+ true,
+ 'clone'
+ );
-install <extensions>
- The same as clone, but when no git source repository can be found, the
- extension is installed via download
+ $options->registerCommand(
+ 'install',
+ 'The same as clone, but when no git source repository can be found, the extension is installed via '.
+ 'download'
+ );
+ $options->registerArgument(
+ 'extension',
+ 'name of the extension to install, prefix with \'template:\' for templates',
+ true,
+ 'install'
+ );
-repos
- Lists all git repositories found in this DokuWiki installation
+ $options->registerCommand(
+ 'repos',
+ 'Lists all git repositories found in this DokuWiki installation'
+ );
-<any>
- Any unknown commands are assumed to be arguments to git and will be
- executed in all repositories found within this DokuWiki installation
+ $options->registerCommand(
+ '*',
+ 'Any unknown commands are assumed to be arguments to git and will be executed in all repositories '.
+ 'found within this DokuWiki installation'
+ );
+ }
-EOF;
+ /**
+ * Your main program
+ *
+ * Arguments and options have been parsed when this is run
+ *
+ * @param DokuCLI_Options $options
+ * @return void
+ */
+ protected function main(DokuCLI_Options $options) {
+ $command = $options->getCmd();
+ if(!$command) $command = array_shift($options->args);
+
+ switch($command) {
+ case '':
+ echo $options->help();
+ break;
+ case 'clone':
+ $this->cmd_clone($options->args);
+ break;
+ case 'install':
+ $this->cmd_install($options->args);
+ break;
+ case 'repo':
+ case 'repos':
+ $this->cmd_repos();
+ break;
+ default:
+ $this->cmd_git($command, $options->args);
+ }
}
/**
@@ -88,7 +111,7 @@ EOF;
$repo = $this->getSourceRepo($ext);
if(!$repo) {
- $this->msg_error("could not find a repository for $ext");
+ $this->error("could not find a repository for $ext");
$errors[] = $ext;
} else {
if($this->cloneExtension($ext, $repo)) {
@@ -100,8 +123,8 @@ EOF;
}
echo "\n";
- if($succeeded) $this->msg_success('successfully cloned the following extensions: '.join(', ', $succeeded));
- if($errors) $this->msg_error('failed to clone the following extensions: '.join(', ', $errors));
+ if($succeeded) $this->success('successfully cloned the following extensions: '.join(', ', $succeeded));
+ if($errors) $this->error('failed to clone the following extensions: '.join(', ', $errors));
}
/**
@@ -117,7 +140,7 @@ EOF;
$repo = $this->getSourceRepo($ext);
if(!$repo) {
- $this->msg_info("could not find a repository for $ext");
+ $this->info("could not find a repository for $ext");
if($this->downloadExtension($ext)) {
$succeeded[] = $ext;
} else {
@@ -133,8 +156,8 @@ EOF;
}
echo "\n";
- if($succeeded) $this->msg_success('successfully installed the following extensions: '.join(', ', $succeeded));
- if($errors) $this->msg_error('failed to install the following extensions: '.join(', ', $errors));
+ if($succeeded) $this->success('successfully installed the following extensions: '.join(', ', $succeeded));
+ if($errors) $this->error('failed to install the following extensions: '.join(', ', $errors));
}
/**
@@ -152,19 +175,19 @@ EOF;
foreach($repos as $repo) {
if(!@chdir($repo)) {
- $this->msg_error("Could not change into $repo");
+ $this->error("Could not change into $repo");
continue;
}
echo "\n";
- $this->msg_info("executing $shell in $repo");
+ $this->info("executing $shell in $repo");
$ret = 0;
system($shell, $ret);
if($ret == 0) {
- $this->msg_success("git succeeded in $repo");
+ $this->success("git succeeded in $repo");
} else {
- $this->msg_error("git failed in $repo");
+ $this->error("git failed in $repo");
}
}
}
@@ -193,23 +216,23 @@ EOF;
$url = $plugin->getDownloadURL();
if(!$url) {
- $this->msg_error("no download URL for $ext");
+ $this->error("no download URL for $ext");
return false;
}
$ok = false;
try {
- $this->msg_info("installing $ext via download from $url");
+ $this->info("installing $ext via download from $url");
$ok = $plugin->installFromURL($url);
} catch(Exception $e) {
- $this->msg_error($e->getMessage());
+ $this->error($e->getMessage());
}
if($ok) {
- $this->msg_success("installed $ext via download");
+ $this->success("installed $ext via download");
return true;
} else {
- $this->msg_success("failed to install $ext via download");
+ $this->success("failed to install $ext via download");
return false;
}
}
@@ -228,14 +251,14 @@ EOF;
$target = DOKU_PLUGIN.$ext;
}
- $this->msg_info("cloning $ext from $repo to $target");
+ $this->info("cloning $ext from $repo to $target");
$ret = 0;
system("git clone $repo $target", $ret);
if($ret === 0) {
- $this->msg_success("cloning of $ext succeeded");
+ $this->success("cloning of $ext succeeded");
return true;
} else {
- $this->msg_error("cloning of $ext failed");
+ $this->error("cloning of $ext failed");
return false;
}
}
@@ -248,7 +271,7 @@ EOF;
* @return array
*/
private function findRepos() {
- $this->msg_info('Looking for .git directories');
+ $this->info('Looking for .git directories');
$data = array_merge(
glob(DOKU_INC.'.git', GLOB_ONLYDIR),
glob(DOKU_PLUGIN.'*/.git', GLOB_ONLYDIR),
@@ -256,9 +279,9 @@ EOF;
);
if(!$data) {
- $this->msg_error('Found no .git directories');
+ $this->error('Found no .git directories');
} else {
- $this->msg_success('Found '.count($data).' .git directories');
+ $this->success('Found '.count($data).' .git directories');
}
$data = array_map('fullpath', array_map('dirname', $data));
return $data;
@@ -304,37 +327,8 @@ EOF;
return false;
}
+}
- /**
- * Print an error message
- *
- * @param $string
- */
- private function msg_error($string) {
- if($this->color) echo "\033[31m"; // red
- echo "E: $string\n";
- if($this->color) echo "\033[37m"; // reset
- }
-
- /**
- * Print a success message
- *
- * @param $string
- */
- private function msg_success($string) {
- if($this->color) echo "\033[32m"; // green
- echo "S: $string\n";
- if($this->color) echo "\033[37m"; // reset
- }
-
- /**
- * Print an info message
- *
- * @param $string
- */
- private function msg_info($string) {
- if($this->color) echo "\033[36m"; // cyan
- echo "I: $string\n";
- if($this->color) echo "\033[37m"; // reset
- }
-} \ No newline at end of file
+// Main
+$cli = new GitToolCLI();
+$cli->run(); \ No newline at end of file
diff --git a/bin/indexer.php b/bin/indexer.php
index 6f6b5d9fa..13895c36a 100755
--- a/bin/indexer.php
+++ b/bin/indexer.php
@@ -1,98 +1,103 @@
#!/usr/bin/php
<?php
-if ('cli' != php_sapi_name()) die();
-
-ini_set('memory_limit','128M');
-if(!defined('DOKU_INC')) define('DOKU_INC',realpath(dirname(__FILE__).'/../').'/');
+if(!defined('DOKU_INC')) define('DOKU_INC', realpath(dirname(__FILE__).'/../').'/');
+define('NOSESSION', 1);
require_once(DOKU_INC.'inc/init.php');
-require_once(DOKU_INC.'inc/cliopts.php');
-session_write_close();
-// handle options
-$short_opts = 'hcuq';
-$long_opts = array('help', 'clear', 'update', 'quiet');
-$OPTS = Doku_Cli_Opts::getOptions(__FILE__,$short_opts,$long_opts);
-if ( $OPTS->isError() ) {
- fwrite( STDERR, $OPTS->getMessage() . "\n");
- _usage();
- exit(1);
-}
-$CLEAR = false;
-$QUIET = false;
-$INDEXER = null;
-foreach ($OPTS->options as $key => $val) {
- switch ($key) {
- case 'h':
- case 'help':
- _usage();
- exit;
- case 'c':
- case 'clear':
- $CLEAR = true;
- break;
- case 'q':
- case 'quiet':
- $QUIET = true;
- break;
+/**
+ * Update the Search Index from command line
+ */
+class IndexerCLI extends DokuCLI {
+
+ private $quiet = false;
+ private $clear = false;
+
+ /**
+ * Register options and arguments on the given $options object
+ *
+ * @param DokuCLI_Options $options
+ * @return void
+ */
+ protected function setup(DokuCLI_Options $options) {
+ $options->setHelp(
+ 'Updates the searchindex by indexing all new or changed pages. When the -c option is '.
+ 'given the index is cleared first.'
+ );
+
+ $options->registerOption(
+ 'clear',
+ 'clear the index before updating',
+ 'c'
+ );
+ $options->registerOption(
+ 'quiet',
+ 'don\'t produce any output',
+ 'q'
+ );
}
-}
-
-#------------------------------------------------------------------------------
-# Action
-
-if($CLEAR) _clearindex();
-_update();
-
-
-
-#------------------------------------------------------------------------------
-
-function _usage() {
- print "Usage: indexer.php <options>
-
- Updates the searchindex by indexing all new or changed pages
- when the -c option is given the index is cleared first.
- OPTIONS
- -h, --help show this help and exit
- -c, --clear clear the index before updating
- -q, --quiet don't produce any output
-";
-}
-
-function _update(){
- global $conf;
- $data = array();
- _quietecho("Searching pages... ");
- search($data,$conf['datadir'],'search_allpages',array('skipacl' => true));
- _quietecho(count($data)." pages found.\n");
-
- foreach($data as $val){
- _index($val['id']);
+ /**
+ * Your main program
+ *
+ * Arguments and options have been parsed when this is run
+ *
+ * @param DokuCLI_Options $options
+ * @return void
+ */
+ protected function main(DokuCLI_Options $options) {
+ $this->clear = $options->getOpt('clear');
+ $this->quiet = $options->getOpt('quiet');
+
+ if($this->clear) $this->clearindex();
+
+ $this->update();
}
-}
-function _index($id){
- global $CLEAR;
- global $QUIET;
+ /**
+ * Update the index
+ */
+ function update() {
+ global $conf;
+ $data = array();
+ $this->quietecho("Searching pages... ");
+ search($data, $conf['datadir'], 'search_allpages', array('skipacl' => true));
+ $this->quietecho(count($data)." pages found.\n");
+
+ foreach($data as $val) {
+ $this->index($val['id']);
+ }
+ }
- _quietecho("$id... ");
- idx_addPage($id, !$QUIET, $CLEAR);
- _quietecho("done.\n");
-}
+ /**
+ * Index the given page
+ *
+ * @param string $id
+ */
+ function index($id) {
+ $this->quietecho("$id... ");
+ idx_addPage($id, !$this->quiet, $this->clear);
+ $this->quietecho("done.\n");
+ }
-/**
- * Clear all index files
- */
-function _clearindex(){
- _quietecho("Clearing index... ");
- idx_get_indexer()->clear();
- _quietecho("done.\n");
-}
+ /**
+ * Clear all index files
+ */
+ function clearindex() {
+ $this->quietecho("Clearing index... ");
+ idx_get_indexer()->clear();
+ $this->quietecho("done.\n");
+ }
-function _quietecho($msg) {
- global $QUIET;
- if(!$QUIET) echo $msg;
+ /**
+ * Print message if not supressed
+ *
+ * @param string $msg
+ */
+ function quietecho($msg) {
+ if(!$this->quiet) echo $msg;
+ }
}
-//Setup VIM: ex: et ts=2 :
+// Main
+$cli = new IndexerCLI();
+$cli->run(); \ No newline at end of file
diff --git a/bin/render.php b/bin/render.php
index d30ef2958..672993223 100755
--- a/bin/render.php
+++ b/bin/render.php
@@ -1,5 +1,10 @@
#!/usr/bin/php
<?php
+if(!defined('DOKU_INC')) define('DOKU_INC', realpath(dirname(__FILE__).'/../').'/');
+define('NOSESSION', 1);
+require_once(DOKU_INC.'inc/init.php');
+
+
/**
* A simple commandline tool to render some DokuWiki syntax with a given
* renderer.
@@ -9,59 +14,48 @@
* DokuWiki markup
*
* @license GPL2
- * @author Andreas Gohr <andi@splitbrain.org>
+ * @author Andreas Gohr <andi@splitbrain.org>
*/
-if ('cli' != php_sapi_name()) die();
+class RenderCLI extends DokuCLI {
-ini_set('memory_limit','128M');
-if(!defined('DOKU_INC')) define('DOKU_INC',realpath(dirname(__FILE__).'/../').'/');
-define('NOSESSION',1);
-require_once(DOKU_INC.'inc/init.php');
-require_once(DOKU_INC.'inc/common.php');
-require_once(DOKU_INC.'inc/parserutils.php');
-require_once(DOKU_INC.'inc/cliopts.php');
-
-// handle options
-$short_opts = 'hr:';
-$long_opts = array('help','renderer:');
-$OPTS = Doku_Cli_Opts::getOptions(__FILE__,$short_opts,$long_opts);
-if ( $OPTS->isError() ) {
- fwrite( STDERR, $OPTS->getMessage() . "\n");
- _usage();
- exit(1);
-}
-$RENDERER = 'xhtml';
-foreach ($OPTS->options as $key => $val) {
- switch ($key) {
- case 'h':
- case 'help':
- _usage();
- exit;
- case 'r':
- case 'renderer':
- $RENDERER = $val;
+ /**
+ * Register options and arguments on the given $options object
+ *
+ * @param DokuCLI_Options $options
+ * @return void
+ */
+ protected function setup(DokuCLI_Options $options) {
+ $options->setHelp(
+ 'A simple commandline tool to render some DokuWiki syntax with a given renderer.'.
+ "\n\n".
+ 'This may not work for plugins that expect a certain environment to be '.
+ 'set up before rendering, but should work for most or even all standard '.
+ 'DokuWiki markup'
+ );
+ $options->registerOption('renderer', 'The renderer mode to use. Defaults to xhtml', 'r', 'mode');
}
-}
+ /**
+ * Your main program
+ *
+ * Arguments and options have been parsed when this is run
+ *
+ * @param DokuCLI_Options $options
+ * @throws DokuCLI_Exception
+ * @return void
+ */
+ protected function main(DokuCLI_Options $options) {
+ $renderer = $options->getOpt('renderer', 'xhtml');
-// do the action
-$source = stream_get_contents(STDIN);
-$info = array();
-$result = p_render($RENDERER,p_get_instructions($source),$info);
-if(is_null($result)) die("No such renderer $RENDERER\n");
-echo $result;
-
-/**
- * Print usage info
- */
-function _usage(){
- print "Usage: render.php <options>
-
- Reads DokuWiki syntax from STDIN and renders it with the given renderer
- to STDOUT
-
- OPTIONS
- -h, --help show this help and exit
- -r, --renderer <renderer> the render mode (default: xhtml)
-";
+ // do the action
+ $source = stream_get_contents(STDIN);
+ $info = array();
+ $result = p_render($renderer, p_get_instructions($source), $info);
+ if(is_null($result)) throw new DokuCLI_Exception("No such renderer $renderer");
+ echo $result;
+ }
}
+
+// Main
+$cli = new RenderCLI();
+$cli->run(); \ No newline at end of file
diff --git a/bin/striplangs.php b/bin/striplangs.php
index 2bfddcea4..6335bc84c 100755
--- a/bin/striplangs.php
+++ b/bin/striplangs.php
@@ -1,148 +1,110 @@
#!/usr/bin/php
<?php
-/**
- * Strip unwanted languages from the DokuWiki install
- *
- * @author Martin 'E.T.' Misuth <et.github@ethome.sk>
- */
-if ('cli' != php_sapi_name()) die();
-
-#------------------------------------------------------------------------------
-if(!defined('DOKU_INC')) define('DOKU_INC',realpath(dirname(__FILE__).'/../').'/');
-require_once DOKU_INC.'inc/cliopts.php';
-
-#------------------------------------------------------------------------------
-function usage($show_examples = false) {
- print "Usage: striplangs.php [-h [-x]] [-e] [-k lang1[,lang2]..[,langN]]
-
- Removes all languages from the installation, besides the ones
- after the -k option. English language is never removed!
+if(!defined('DOKU_INC')) define('DOKU_INC', realpath(dirname(__FILE__).'/../').'/');
+define('NOSESSION', 1);
+require_once(DOKU_INC.'inc/init.php');
- OPTIONS
- -h, --help get this help
- -x, --examples get also usage examples
- -k, --keep comma separated list of languages, -e is always implied
- -e, --english keeps english, dummy to use without -k\n";
- if ( $show_examples ) {
- print "\n
- EXAMPLES
- Strips all languages, but keeps 'en' and 'de':
- striplangs -k de
- Strips all but 'en','ca-valencia','cs','de','is','sk':
- striplangs --keep ca-valencia,cs,de,is,sk
-
- Strips all but 'en':
- striplangs -e
-
- No option specified, prints usage and throws error:
- striplangs\n";
- }
-}
-
-function getSuppliedArgument($OPTS, $short, $long) {
- $arg = $OPTS->get($short);
- if ( is_null($arg) ) {
- $arg = $OPTS->get($long);
+/**
+ * Remove unwanted languages from a DokuWiki install
+ */
+class StripLangsCLI extends DokuCLI {
+
+ /**
+ * Register options and arguments on the given $options object
+ *
+ * @param DokuCLI_Options $options
+ * @return void
+ */
+ protected function setup(DokuCLI_Options $options) {
+
+ $options->setHelp(
+ 'Remove all languages from the installation, besides the ones specified. English language '.
+ 'is never removed!'
+ );
+
+ $options->registerOption(
+ 'keep',
+ 'Comma separated list of languages to keep in addition to English.',
+ 'k'
+ );
+ $options->registerOption(
+ 'english-only',
+ 'Remove all languages except English',
+ 'e'
+ );
}
- return $arg;
-}
-function processPlugins($path, $keep_langs) {
- if (is_dir($path)) {
- $entries = scandir($path);
-
- foreach ($entries as $entry) {
- if ($entry != "." && $entry != "..") {
- if ( is_dir($path.'/'.$entry) ) {
+ /**
+ * Your main program
+ *
+ * Arguments and options have been parsed when this is run
+ *
+ * @param DokuCLI_Options $options
+ * @return void
+ */
+ protected function main(DokuCLI_Options $options) {
+ if($options->getOpt('keep')) {
+ $keep = explode(',', $options->getOpt('keep'));
+ if(!in_array('en', $keep)) $keep[] = 'en';
+ } elseif($options->getOpt('english-only')) {
+ $keep = array('en');
+ } else {
+ echo $options->help();
+ exit(0);
+ }
- $plugin_langs = $path.'/'.$entry.'/lang';
+ // Kill all language directories in /inc/lang and /lib/plugins besides those in $langs array
+ $this->stripDirLangs(realpath(dirname(__FILE__).'/../inc/lang'), $keep);
+ $this->processExtensions(realpath(dirname(__FILE__).'/../lib/plugins'), $keep);
+ $this->processExtensions(realpath(dirname(__FILE__).'/../lib/tpl'), $keep);
+ }
- if ( is_dir( $plugin_langs ) ) {
- stripDirLangs($plugin_langs, $keep_langs);
+ /**
+ * Strip languages from extensions
+ *
+ * @param string $path path to plugin or template dir
+ * @param array $keep_langs languages to keep
+ */
+ protected function processExtensions($path, $keep_langs) {
+ if(is_dir($path)) {
+ $entries = scandir($path);
+
+ foreach($entries as $entry) {
+ if($entry != "." && $entry != "..") {
+ if(is_dir($path.'/'.$entry)) {
+
+ $plugin_langs = $path.'/'.$entry.'/lang';
+
+ if(is_dir($plugin_langs)) {
+ $this->stripDirLangs($plugin_langs, $keep_langs);
+ }
}
}
}
}
}
-}
-function stripDirLangs($path, $keep_langs) {
- $dir = dir($path);
+ /**
+ * Strip languages from path
+ *
+ * @param string $path path to lang dir
+ * @param array $keep_langs languages to keep
+ */
+ protected function stripDirLangs($path, $keep_langs) {
+ $dir = dir($path);
- while(($cur_dir = $dir->read()) !== false) {
- if( $cur_dir != '.' and $cur_dir != '..' and is_dir($path.'/'.$cur_dir)) {
+ while(($cur_dir = $dir->read()) !== false) {
+ if($cur_dir != '.' and $cur_dir != '..' and is_dir($path.'/'.$cur_dir)) {
- if ( !in_array($cur_dir, $keep_langs, true ) ) {
- killDir($path.'/'.$cur_dir);
- }
- }
- }
- $dir->close();
-}
-
-function killDir($dir) {
- if (is_dir($dir)) {
- $entries = scandir($dir);
-
- foreach ($entries as $entry) {
- if ($entry != "." && $entry != "..") {
- if ( is_dir($dir.'/'.$entry) ) {
- killDir($dir.'/'.$entry);
- } else {
- unlink($dir.'/'.$entry);
+ if(!in_array($cur_dir, $keep_langs, true)) {
+ io_rmdir($path.'/'.$cur_dir, true);
}
}
}
- reset($entries);
- rmdir($dir);
- }
-}
-#------------------------------------------------------------------------------
-
-// handle options
-$short_opts = 'hxk:e';
-$long_opts = array('help', 'examples', 'keep=','english');
-
-$OPTS = Doku_Cli_Opts::getOptions(__FILE__, $short_opts, $long_opts);
-
-if ( $OPTS->isError() ) {
- fwrite( STDERR, $OPTS->getMessage() . "\n");
- exit(1);
-}
-
-// handle '--examples' option
-$show_examples = ( $OPTS->has('x') or $OPTS->has('examples') ) ? true : false;
-
-// handle '--help' option
-if ( $OPTS->has('h') or $OPTS->has('help') ) {
- usage($show_examples);
- exit(0);
-}
-
-// handle both '--keep' and '--english' options
-if ( $OPTS->has('k') or $OPTS->has('keep') ) {
- $preserved_langs = getSuppliedArgument($OPTS,'k','keep');
- $langs = explode(',', $preserved_langs);
-
- // ! always enforce 'en' lang when using '--keep' (DW relies on it)
- if ( !isset($langs['en']) ) {
- $langs[]='en';
+ $dir->close();
}
-} elseif ( $OPTS->has('e') or $OPTS->has('english') ) {
- // '--english' was specified strip everything besides 'en'
- $langs = array ('en');
-} else {
- // no option was specified, print usage but don't do anything as
- // this run might not be intented
- usage();
- print "\n
- ERROR
- No option specified, use either -h -x to get more info,
- or -e to strip every language besides english.\n";
- exit(1);
}
-// Kill all language directories in /inc/lang and /lib/plugins besides those in $langs array
-stripDirLangs(realpath(dirname(__FILE__).'/../inc/lang'), $langs);
-processPlugins(realpath(dirname(__FILE__).'/../lib/plugins'), $langs);
+$cli = new StripLangsCLI();
+$cli->run(); \ No newline at end of file
diff --git a/bin/wantedpages.php b/bin/wantedpages.php
index afcb6b271..8fc4ba74f 100755
--- a/bin/wantedpages.php
+++ b/bin/wantedpages.php
@@ -1,134 +1,133 @@
#!/usr/bin/php
<?php
-if ('cli' != php_sapi_name()) die();
-
-#------------------------------------------------------------------------------
-ini_set('memory_limit','128M');
-if(!defined('DOKU_INC')) define('DOKU_INC',realpath(dirname(__FILE__).'/../').'/');
-require_once DOKU_INC.'inc/init.php';
-require_once DOKU_INC.'inc/common.php';
-require_once DOKU_INC.'inc/search.php';
-require_once DOKU_INC.'inc/cliopts.php';
+if(!defined('DOKU_INC')) define('DOKU_INC', realpath(dirname(__FILE__).'/../').'/');
+define('NOSESSION', 1);
+require_once(DOKU_INC.'inc/init.php');
+
+/**
+ * Find wanted pages
+ */
+class WantedPagesCLI extends DokuCLI {
+
+ const DIR_CONTINUE = 1;
+ const DIR_NS = 2;
+ const DIR_PAGE = 3;
+
+ /**
+ * Register options and arguments on the given $options object
+ *
+ * @param DokuCLI_Options $options
+ * @return void
+ */
+ protected function setup(DokuCLI_Options $options) {
+ $options->setHelp(
+ 'Outputs a list of wanted pages (pages which have internal links but do not yet exist).'
+ );
+ $options->registerArgument(
+ 'namespace',
+ 'The namespace to lookup. Defaults to root namespace',
+ false
+ );
+ }
-#------------------------------------------------------------------------------
-function usage() {
- print "Usage: wantedpages.php [wiki:namespace]
+ /**
+ * Your main program
+ *
+ * Arguments and options have been parsed when this is run
+ *
+ * @param DokuCLI_Options $options
+ * @return void
+ */
+ protected function main(DokuCLI_Options $options) {
+
+ if($options->args) {
+ $startdir = dirname(wikiFN($options->args[0].':xxx'));
+ } else {
+ $startdir = dirname(wikiFN('xxx'));
+ }
- Outputs a list of wanted pages (pages which have
- internal links but do not yet exist).
+ $this->info("searching $startdir");
- If the optional [wiki:namespace] is not provided,
- defaults to the root wiki namespace
+ $wanted_pages = array();
- OPTIONS
- -h, --help get help
-";
-}
-
-#------------------------------------------------------------------------------
-define ('DW_DIR_CONTINUE',1);
-define ('DW_DIR_NS',2);
-define ('DW_DIR_PAGE',3);
+ foreach($this->get_pages($startdir) as $page) {
+ $wanted_pages = array_merge($wanted_pages, $this->internal_links($page));
+ }
+ $wanted_pages = array_unique($wanted_pages);
+ sort($wanted_pages);
-#------------------------------------------------------------------------------
-function dw_dir_filter($entry, $basepath) {
- if ($entry == '.' || $entry == '..' ) {
- return DW_DIR_CONTINUE;
- }
- if ( is_dir($basepath . '/' . $entry) ) {
- if ( strpos($entry, '_') === 0 ) {
- return DW_DIR_CONTINUE;
+ foreach($wanted_pages as $page) {
+ print $page."\n";
}
- return DW_DIR_NS;
- }
- if ( preg_match('/\.txt$/',$entry) ) {
- return DW_DIR_PAGE;
}
- return DW_DIR_CONTINUE;
-}
-#------------------------------------------------------------------------------
-function dw_get_pages($dir) {
- static $trunclen = null;
- if ( !$trunclen ) {
- global $conf;
- $trunclen = strlen($conf['datadir'].':');
+ protected function dir_filter($entry, $basepath) {
+ if($entry == '.' || $entry == '..') {
+ return WantedPagesCLI::DIR_CONTINUE;
+ }
+ if(is_dir($basepath.'/'.$entry)) {
+ if(strpos($entry, '_') === 0) {
+ return WantedPagesCLI::DIR_CONTINUE;
+ }
+ return WantedPagesCLI::DIR_NS;
+ }
+ if(preg_match('/\.txt$/', $entry)) {
+ return WantedPagesCLI::DIR_PAGE;
+ }
+ return WantedPagesCLI::DIR_CONTINUE;
}
- if ( !is_dir($dir) ) {
- fwrite( STDERR, "Unable to read directory $dir\n");
- exit(1);
- }
+ protected function get_pages($dir) {
+ static $trunclen = null;
+ if(!$trunclen) {
+ global $conf;
+ $trunclen = strlen($conf['datadir'].':');
+ }
- $pages = array();
- $dh = opendir($dir);
- while ( false !== ( $entry = readdir($dh) ) ) {
- $status = dw_dir_filter($entry, $dir);
- if ( $status == DW_DIR_CONTINUE ) {
- continue;
- } else if ( $status == DW_DIR_NS ) {
- $pages = array_merge($pages, dw_get_pages($dir . '/' . $entry));
- } else {
- $page = array(
- 'id' => pathID(substr($dir.'/'.$entry,$trunclen)),
- 'file'=> $dir.'/'.$entry,
+ if(!is_dir($dir)) {
+ throw new DokuCLI_Exception("Unable to read directory $dir");
+ }
+
+ $pages = array();
+ $dh = opendir($dir);
+ while(false !== ($entry = readdir($dh))) {
+ $status = $this->dir_filter($entry, $dir);
+ if($status == WantedPagesCLI::DIR_CONTINUE) {
+ continue;
+ } else if($status == WantedPagesCLI::DIR_NS) {
+ $pages = array_merge($pages, $this->get_pages($dir.'/'.$entry));
+ } else {
+ $page = array(
+ 'id' => pathID(substr($dir.'/'.$entry, $trunclen)),
+ 'file' => $dir.'/'.$entry,
);
- $pages[] = $page;
+ $pages[] = $page;
+ }
}
+ closedir($dh);
+ return $pages;
}
- closedir($dh);
- return $pages;
-}
-#------------------------------------------------------------------------------
-function dw_internal_links($page) {
- global $conf;
- $instructions = p_get_instructions(file_get_contents($page['file']));
- $links = array();
- $cns = getNS($page['id']);
- $exists = false;
- foreach($instructions as $ins){
- if($ins[0] == 'internallink' || ($conf['camelcase'] && $ins[0] == 'camelcaselink') ){
- $mid = $ins[1][0];
- resolve_pageid($cns,$mid,$exists);
- if ( !$exists ) {
- list($mid) = explode('#',$mid); //record pages without hashs
- $links[] = $mid;
+ function internal_links($page) {
+ global $conf;
+ $instructions = p_get_instructions(file_get_contents($page['file']));
+ $links = array();
+ $cns = getNS($page['id']);
+ $exists = false;
+ foreach($instructions as $ins) {
+ if($ins[0] == 'internallink' || ($conf['camelcase'] && $ins[0] == 'camelcaselink')) {
+ $mid = $ins[1][0];
+ resolve_pageid($cns, $mid, $exists);
+ if(!$exists) {
+ list($mid) = explode('#', $mid); //record pages without hashs
+ $links[] = $mid;
+ }
}
}
+ return $links;
}
- return $links;
}
-#------------------------------------------------------------------------------
-$OPTS = Doku_Cli_Opts::getOptions(__FILE__,'h',array('help'));
-
-if ( $OPTS->isError() ) {
- fwrite( STDERR, $OPTS->getMessage() . "\n");
- exit(1);
-}
-
-if ( $OPTS->has('h') or $OPTS->has('help') ) {
- usage();
- exit(0);
-}
-
-$START_DIR = $conf['datadir'];
-
-if ( $OPTS->numArgs() == 1 ) {
- $START_DIR .= '/' . $OPTS->arg(0);
-}
-
-#------------------------------------------------------------------------------
-$WANTED_PAGES = array();
-
-foreach ( dw_get_pages($START_DIR) as $WIKI_PAGE ) {
- $WANTED_PAGES = array_merge($WANTED_PAGES,dw_internal_links($WIKI_PAGE));
-}
-$WANTED_PAGES = array_unique($WANTED_PAGES);
-sort($WANTED_PAGES);
-
-foreach ( $WANTED_PAGES as $WANTED_PAGE ) {
- print $WANTED_PAGE."\n";
-}
-exit(0);
+// Main
+$cli = new WantedPagesCLI();
+$cli->run(); \ No newline at end of file
diff --git a/doku.php b/doku.php
index afaf79c2f..da3643544 100644
--- a/doku.php
+++ b/doku.php
@@ -9,7 +9,7 @@
*/
// update message version
-$updateVersion = 44;
+$updateVersion = 45;
// xdebug_start_profiling();
diff --git a/feed.php b/feed.php
index 40f9af659..a63e22164 100644
--- a/feed.php
+++ b/feed.php
@@ -127,6 +127,8 @@ function rss_parseOptions() {
'items' => array('int', 'num', $conf['recent']),
// Boolean, only used in rc mode
'show_minor' => array('bool', 'minor', false),
+ // String, only used in list mode
+ 'sort' => array('str', 'sort', 'natural'),
// String, only used in search mode
'search_query' => array('str', 'q', null),
// One of: pages, media, both
@@ -138,6 +140,7 @@ function rss_parseOptions() {
$opt['items'] = max(0, (int) $opt['items']);
$opt['show_minor'] = (bool) $opt['show_minor'];
+ $opt['sort'] = valid_input_set('sort', array('default' => 'natural', 'date'), $opt);
$opt['guardmail'] = ($conf['mailguard'] != '' && $conf['mailguard'] != 'none');
@@ -405,6 +408,7 @@ function rss_buildItems(&$rss, &$data, $opt) {
if($userInfo) {
switch($conf['showuseras']) {
case 'username':
+ case 'username_link':
$item->author = $userInfo['name'];
break;
default:
@@ -479,7 +483,7 @@ function rssListNamespace($opt) {
global $conf;
$ns = ':'.cleanID($opt['namespace']);
- $ns = str_replace(':', '/', $ns);
+ $ns = utf8_encodeFN(str_replace(':', '/', $ns));
$data = array();
$search_opts = array(
@@ -487,7 +491,7 @@ function rssListNamespace($opt) {
'pagesonly' => true,
'listfiles' => true
);
- search($data, $conf['datadir'], 'search_universal', $search_opts, $ns);
+ search($data, $conf['datadir'], 'search_universal', $search_opts, $ns, $lvl = 1, $opt['sort']);
return $data;
}
diff --git a/inc/HTTPClient.php b/inc/HTTPClient.php
index f8b836753..4352bcb97 100644
--- a/inc/HTTPClient.php
+++ b/inc/HTTPClient.php
@@ -61,6 +61,9 @@ class DokuHTTPClient extends HTTPClient {
}
+/**
+ * Class HTTPClientException
+ */
class HTTPClientException extends Exception { }
/**
@@ -249,7 +252,6 @@ class HTTPClient {
if (empty($port)) $port = 8080;
}else{
$request_url = $path;
- $server = $server;
if (!isset($port)) $port = ($uri['scheme'] == 'https') ? 443 : 80;
}
@@ -280,7 +282,6 @@ class HTTPClient {
}
}
$headers['Content-Length'] = strlen($data);
- $rmethod = 'POST';
}elseif($method == 'GET'){
$data = ''; //no data allowed on GET requests
}
@@ -343,7 +344,7 @@ class HTTPClient {
try {
//set non-blocking
- stream_set_blocking($socket, false);
+ stream_set_blocking($socket, 0);
// build request
$request = "$method $request_url HTTP/".$this->http.HTTP_NL;
@@ -458,7 +459,7 @@ class HTTPClient {
if ($chunk_size > 0) {
$r_body .= $this->_readData($socket, $chunk_size, 'chunk');
- $byte = $this->_readData($socket, 2, 'chunk'); // read trailing \r\n
+ $this->_readData($socket, 2, 'chunk'); // read trailing \r\n
}
} while ($chunk_size && !$abort);
}elseif(isset($this->resp_headers['content-length']) && !isset($this->resp_headers['transfer-encoding'])){
@@ -480,7 +481,6 @@ class HTTPClient {
$r_body = $this->_readData($socket, $this->max_bodysize, 'response (content-length limited)', true);
}else{
// read entire socket
- $r_size = 0;
while (!feof($socket)) {
$r_body .= $this->_readData($socket, 4096, 'response (unlimited)', true);
}
@@ -509,7 +509,6 @@ class HTTPClient {
if (!$this->keep_alive ||
(isset($this->resp_headers['connection']) && $this->resp_headers['connection'] == 'Close')) {
// close socket
- $status = socket_get_status($socket);
fclose($socket);
unset(self::$connections[$connectionId]);
}
diff --git a/inc/TarLib.class.php b/inc/TarLib.class.php
index ae08039ec..dd319a79a 100644
--- a/inc/TarLib.class.php
+++ b/inc/TarLib.class.php
@@ -26,6 +26,8 @@ class TarLib {
public $_result = true;
function __construct($file, $comptype = TarLib::COMPRESS_AUTO, $complevel = 9) {
+ dbg_deprecated('class Tar');
+
if(!$file) $this->error('__construct', '$file');
$this->file = $file;
diff --git a/inc/cache.php b/inc/cache.php
index 7a66049f4..6817e771b 100644
--- a/inc/cache.php
+++ b/inc/cache.php
@@ -178,6 +178,7 @@ class cache_parser extends cache {
public $file = ''; // source file for cache
public $mode = ''; // input mode (represents the processing the input file will undergo)
+ public $page = '';
var $_event = 'PARSER_CACHE_USE';
diff --git a/inc/changelog.php b/inc/changelog.php
index de06c9683..8c14f21b0 100644
--- a/inc/changelog.php
+++ b/inc/changelog.php
@@ -18,6 +18,9 @@ define('DOKU_CHANGE_TYPE_REVERT', 'R');
* parses a changelog line into it's components
*
* @author Ben Coburn <btcoburn@silicodon.net>
+ *
+ * @param string $line changelog line
+ * @return array|bool parsed line or false
*/
function parseChangelogLine($line) {
$tmp = explode("\t", $line);
@@ -43,7 +46,7 @@ function parseChangelogLine($line) {
* @param String $summary Summary of the change
* @param mixed $extra In case of a revert the revision (timestmp) of the reverted page
* @param array $flags Additional flags in a key value array.
- * Availible flags:
+ * Available flags:
* - ExternalEdit - mark as an external edit.
*
* @author Andreas Gohr <andi@splitbrain.org>
@@ -116,6 +119,15 @@ function addLogEntry($date, $id, $type=DOKU_CHANGE_TYPE_EDIT, $summary='', $extr
* @author Andreas Gohr <andi@splitbrain.org>
* @author Esther Brunner <wikidesign@gmail.com>
* @author Ben Coburn <btcoburn@silicodon.net>
+ *
+ * @param int $date Timestamp of the change
+ * @param String $id Name of the affected page
+ * @param String $type Type of the change see DOKU_CHANGE_TYPE_*
+ * @param String $summary Summary of the change
+ * @param mixed $extra In case of a revert the revision (timestmp) of the reverted page
+ * @param array $flags Additional flags in a key value array.
+ * Available flags:
+ * - (none, so far)
*/
function addMediaLogEntry($date, $id, $type=DOKU_CHANGE_TYPE_EDIT, $summary='', $extra='', $flags=null){
global $conf;
@@ -294,6 +306,12 @@ function getRecentsSince($from,$to=null,$ns='',$flags=0){
* @see getRecents()
* @author Andreas Gohr <andi@splitbrain.org>
* @author Ben Coburn <btcoburn@silicodon.net>
+ *
+ * @param string $line changelog line
+ * @param string $ns restrict to given namespace
+ * @param int $flags flags to control which changes are included
+ * @param array $seen listing of seen pages
+ * @return array|bool false or array with info about a change
*/
function _handleRecent($line,$ns,$flags,&$seen){
if(empty($line)) return false; //skip empty lines
@@ -778,9 +796,9 @@ abstract class ChangeLog {
* Read chunk and return array with lines of given chunck.
* Has no check if $head and $tail are really at a new line
*
- * @param $fp resource filepointer
- * @param $head int start point chunck
- * @param $tail int end point chunck
+ * @param resource $fp resource filepointer
+ * @param int $head start point chunck
+ * @param int $tail end point chunck
* @return array lines read from chunck
*/
protected function readChunk($fp, $head, $tail) {
@@ -804,8 +822,8 @@ abstract class ChangeLog {
/**
* Set pointer to first new line after $finger and return its position
*
- * @param resource $fp filepointer
- * @param $finger int a pointer
+ * @param resource $fp filepointer
+ * @param int $finger a pointer
* @return int pointer
*/
protected function getNewlinepointer($fp, $finger) {
@@ -886,7 +904,7 @@ abstract class ChangeLog {
*/
protected function retrieveRevisionsAround($rev, $max) {
//get lines from changelog
- list($fp, $lines, $starthead, $starttail, $eof) = $this->readloglines($rev);
+ list($fp, $lines, $starthead, $starttail, /* $eof */) = $this->readloglines($rev);
if(empty($lines)) return false;
//parse chunk containing $rev, and read forward more chunks until $max/2 is reached
@@ -1004,12 +1022,13 @@ class MediaChangelog extends ChangeLog {
* changelog files, only the chunk containing the
* requested changelog line is read.
*
- * @deprecated 20-11-2013
+ * @deprecated 2013-11-20
*
* @author Ben Coburn <btcoburn@silicodon.net>
* @author Kate Arzamastseva <pshns@ukr.net>
*/
function getRevisionInfo($id, $rev, $chunk_size = 8192, $media = false) {
+ dbg_deprecated('class PageChangeLog or class MediaChangelog');
if($media) {
$changelog = new MediaChangeLog($id, $chunk_size);
} else {
@@ -1024,10 +1043,6 @@ function getRevisionInfo($id, $rev, $chunk_size = 8192, $media = false) {
* only that a line with the date exists in the changelog.
* By default the current revision is skipped.
*
- * id: the page of interest
- * first: skip the first n changelog lines
- * num: number of revisions to return
- *
* The current revision is automatically skipped when the page exists.
* See $INFO['meta']['last_change'] for the current revision.
*
@@ -1036,12 +1051,20 @@ function getRevisionInfo($id, $rev, $chunk_size = 8192, $media = false) {
* backwards in chunks until the requested number of changelog
* lines are recieved.
*
- * @deprecated 20-11-2013
+ * @deprecated 2013-11-20
*
* @author Ben Coburn <btcoburn@silicodon.net>
* @author Kate Arzamastseva <pshns@ukr.net>
+ *
+ * @param string $id the page of interest
+ * @param int $first skip the first n changelog lines
+ * @param int $num number of revisions to return
+ * @param int $chunk_size
+ * @param bool $media
+ * @return array
*/
function getRevisions($id, $first, $num, $chunk_size = 8192, $media = false) {
+ dbg_deprecated('class PageChangeLog or class MediaChangelog');
if($media) {
$changelog = new MediaChangeLog($id, $chunk_size);
} else {
diff --git a/inc/cli.php b/inc/cli.php
new file mode 100644
index 000000000..25bfddf7d
--- /dev/null
+++ b/inc/cli.php
@@ -0,0 +1,647 @@
+<?php
+
+/**
+ * Class DokuCLI
+ *
+ * All DokuWiki commandline scripts should inherit from this class and implement the abstract methods.
+ *
+ * @author Andreas Gohr <andi@splitbrain.org>
+ */
+abstract class DokuCLI {
+ /** @var string the executed script itself */
+ protected $bin;
+ /** @var DokuCLI_Options the option parser */
+ protected $options;
+ /** @var DokuCLI_Colors */
+ public $colors;
+
+ /**
+ * constructor
+ *
+ * Initialize the arguments, set up helper classes and set up the CLI environment
+ */
+ public function __construct() {
+ set_exception_handler(array($this, 'fatal'));
+
+ $this->options = new DokuCLI_Options();
+ $this->colors = new DokuCLI_Colors();
+ }
+
+ /**
+ * Register options and arguments on the given $options object
+ *
+ * @param DokuCLI_Options $options
+ * @return void
+ */
+ abstract protected function setup(DokuCLI_Options $options);
+
+ /**
+ * Your main program
+ *
+ * Arguments and options have been parsed when this is run
+ *
+ * @param DokuCLI_Options $options
+ * @return void
+ */
+ abstract protected function main(DokuCLI_Options $options);
+
+ /**
+ * Execute the CLI program
+ *
+ * Executes the setup() routine, adds default options, initiate the options parsing and argument checking
+ * and finally executes main()
+ */
+ public function run() {
+ if('cli' != php_sapi_name()) throw new DokuCLI_Exception('This has to be run from the command line');
+
+ // setup
+ $this->setup($this->options);
+ $this->options->registerOption(
+ 'no-colors',
+ 'Do not use any colors in output. Useful when piping output to other tools or files.'
+ );
+ $this->options->registerOption(
+ 'help',
+ 'Display this help screen and exit immeadiately.',
+ 'h'
+ );
+
+ // parse
+ $this->options->parseOptions();
+
+ // handle defaults
+ if($this->options->getOpt('no-colors')) {
+ $this->colors->disable();
+ }
+ if($this->options->getOpt('help')) {
+ echo $this->options->help();
+ exit(0);
+ }
+
+ // check arguments
+ $this->options->checkArguments();
+
+ // execute
+ $this->main($this->options);
+
+ exit(0);
+ }
+
+ /**
+ * Exits the program on a fatal error
+ *
+ * @param Exception|string $error either an exception or an error message
+ */
+ public function fatal($error) {
+ $code = 0;
+ if(is_object($error) && is_a($error, 'Exception')) {
+ /** @var Exception $error */
+ $code = $error->getCode();
+ $error = $error->getMessage();
+ }
+ if(!$code) $code = DokuCLI_Exception::E_ANY;
+
+ $this->error($error);
+ exit($code);
+ }
+
+ /**
+ * Print an error message
+ *
+ * @param $string
+ */
+ public function error($string) {
+ $this->colors->ptln("E: $string", 'red', STDERR);
+ }
+
+ /**
+ * Print a success message
+ *
+ * @param $string
+ */
+ public function success($string) {
+ $this->colors->ptln("S: $string", 'green', STDERR);
+ }
+
+ /**
+ * Print an info message
+ *
+ * @param $string
+ */
+ public function info($string) {
+ $this->colors->ptln("I: $string", 'cyan', STDERR);
+ }
+
+}
+
+/**
+ * Class DokuCLI_Colors
+ *
+ * Handles color output on (Linux) terminals
+ *
+ * @author Andreas Gohr <andi@splitbrain.org>
+ */
+class DokuCLI_Colors {
+ /** @var array known color names */
+ protected $colors = array(
+ 'reset' => "\33[0m",
+ 'black' => "\33[0;30m",
+ 'darkgray' => "\33[1;30m",
+ 'blue' => "\33[0;34m",
+ 'lightblue' => "\33[1;34m",
+ 'green' => "\33[0;32m",
+ 'lightgreen' => "\33[1;32m",
+ 'cyan' => "\33[0;36m",
+ 'lightcyan' => "\33[1;36m",
+ 'red' => "\33[0;31m",
+ 'lightred' => "\33[1;31m",
+ 'purple' => "\33[0;35m",
+ 'lightpurple' => "\33[1;35m",
+ 'brown' => "\33[0;33m",
+ 'yellow' => "\33[1;33m",
+ 'lightgray' => "\33[0;37m",
+ 'white' => "\33[1;37m",
+ );
+
+ /** @var bool should colors be used? */
+ protected $enabled = true;
+
+ /**
+ * Constructor
+ *
+ * Tries to disable colors for non-terminals
+ */
+ public function __construct() {
+ if(function_exists('posix_isatty') && !posix_isatty(STDOUT)) {
+ $this->enabled = false;
+ return;
+ }
+ if(!getenv('TERM')) {
+ $this->enabled = false;
+ return;
+ }
+ }
+
+ /**
+ * enable color output
+ */
+ public function enable() {
+ $this->enabled = true;
+ }
+
+ /**
+ * disable color output
+ */
+ public function disable() {
+ $this->enabled = false;
+ }
+
+ /**
+ * Convenience function to print a line in a given color
+ *
+ * @param $line
+ * @param $color
+ * @param resource $channel
+ */
+ public function ptln($line, $color, $channel = STDOUT) {
+ $this->set($color);
+ fwrite($channel, rtrim($line)."\n");
+ $this->reset();
+ }
+
+ /**
+ * Set the given color for consecutive output
+ *
+ * @param string $color one of the supported color names
+ * @throws DokuCLI_Exception
+ */
+ public function set($color) {
+ if(!$this->enabled) return;
+ if(!isset($this->colors[$color])) throw new DokuCLI_Exception("No such color $color");
+ echo $this->colors[$color];
+ }
+
+ /**
+ * reset the terminal color
+ */
+ public function reset() {
+ $this->set('reset');
+ }
+}
+
+/**
+ * Class DokuCLI_Options
+ *
+ * Parses command line options passed to the CLI script. Allows CLI scripts to easily register all accepted options and
+ * commands and even generates a help text from this setup.
+ *
+ * @author Andreas Gohr <andi@splitbrain.org>
+ */
+class DokuCLI_Options {
+ /** @var array keeps the list of options to parse */
+ protected $setup;
+
+ /** @var array store parsed options */
+ protected $options = array();
+
+ /** @var string current parsed command if any */
+ protected $command = '';
+
+ /** @var array passed non-option arguments */
+ public $args = array();
+
+ /** @var string the executed script */
+ protected $bin;
+
+ /**
+ * Constructor
+ */
+ public function __construct() {
+ $this->setup = array(
+ '' => array(
+ 'opts' => array(),
+ 'args' => array(),
+ 'help' => ''
+ )
+ ); // default command
+
+ $this->args = $this->readPHPArgv();
+ $this->bin = basename(array_shift($this->args));
+
+ $this->options = array();
+ }
+
+ /**
+ * Sets the help text for the tool itself
+ *
+ * @param string $help
+ */
+ public function setHelp($help) {
+ $this->setup['']['help'] = $help;
+ }
+
+ /**
+ * Register the names of arguments for help generation and number checking
+ *
+ * This has to be called in the order arguments are expected
+ *
+ * @param string $arg argument name (just for help)
+ * @param string $help help text
+ * @param bool $required is this a required argument
+ * @param string $command if theses apply to a sub command only
+ * @throws DokuCLI_Exception
+ */
+ public function registerArgument($arg, $help, $required = true, $command = '') {
+ if(!isset($this->setup[$command])) throw new DokuCLI_Exception("Command $command not registered");
+
+ $this->setup[$command]['args'][] = array(
+ 'name' => $arg,
+ 'help' => $help,
+ 'required' => $required
+ );
+ }
+
+ /**
+ * This registers a sub command
+ *
+ * Sub commands have their own options and use their own function (not main()).
+ *
+ * @param string $command
+ * @param string $help
+ * @throws DokuCLI_Exception
+ */
+ public function registerCommand($command, $help) {
+ if(isset($this->setup[$command])) throw new DokuCLI_Exception("Command $command already registered");
+
+ $this->setup[$command] = array(
+ 'opts' => array(),
+ 'args' => array(),
+ 'help' => $help
+ );
+
+ }
+
+ /**
+ * Register an option for option parsing and help generation
+ *
+ * @param string $long multi character option (specified with --)
+ * @param string $help help text for this option
+ * @param string|null $short one character option (specified with -)
+ * @param bool|string $needsarg does this option require an argument? give it a name here
+ * @param string $command what command does this option apply to
+ * @throws DokuCLI_Exception
+ */
+ public function registerOption($long, $help, $short = null, $needsarg = false, $command = '') {
+ if(!isset($this->setup[$command])) throw new DokuCLI_Exception("Command $command not registered");
+
+ $this->setup[$command]['opts'][$long] = array(
+ 'needsarg' => $needsarg,
+ 'help' => $help,
+ 'short' => $short
+ );
+
+ if($short) {
+ if(strlen($short) > 1) throw new DokuCLI_Exception("Short options should be exactly one ASCII character");
+
+ $this->setup[$command]['short'][$short] = $long;
+ }
+ }
+
+ /**
+ * Checks the actual number of arguments against the required number
+ *
+ * Throws an exception if arguments are missing. Called from parseOptions()
+ *
+ * @throws DokuCLI_Exception
+ */
+ public function checkArguments() {
+ $argc = count($this->args);
+
+ $req = 0;
+ foreach($this->setup[$this->command]['args'] as $arg) {
+ if(!$arg['required']) break; // last required arguments seen
+ $req++;
+ }
+
+ if($req > $argc) throw new DokuCLI_Exception("Not enough arguments", DokuCLI_Exception::E_OPT_ARG_REQUIRED);
+ }
+
+ /**
+ * Parses the given arguments for known options and command
+ *
+ * The given $args array should NOT contain the executed file as first item anymore! The $args
+ * array is stripped from any options and possible command. All found otions can be accessed via the
+ * getOpt() function
+ *
+ * Note that command options will overwrite any global options with the same name
+ *
+ * @throws DokuCLI_Exception
+ */
+ public function parseOptions() {
+ $non_opts = array();
+
+ $argc = count($this->args);
+ for($i = 0; $i < $argc; $i++) {
+ $arg = $this->args[$i];
+
+ // The special element '--' means explicit end of options. Treat the rest of the arguments as non-options
+ // and end the loop.
+ if($arg == '--') {
+ $non_opts = array_merge($non_opts, array_slice($this->args, $i + 1));
+ break;
+ }
+
+ // '-' is stdin - a normal argument
+ if($arg == '-') {
+ $non_opts = array_merge($non_opts, array_slice($this->args, $i));
+ break;
+ }
+
+ // first non-option
+ if($arg{0} != '-') {
+ $non_opts = array_merge($non_opts, array_slice($this->args, $i));
+ break;
+ }
+
+ // long option
+ if(strlen($arg) > 1 && $arg{1} == '-') {
+ list($opt, $val) = explode('=', substr($arg, 2), 2);
+
+ if(!isset($this->setup[$this->command]['opts'][$opt])) {
+ throw new DokuCLI_Exception("No such option $arg", DokuCLI_Exception::E_UNKNOWN_OPT);
+ }
+
+ // argument required?
+ if($this->setup[$this->command]['opts'][$opt]['needsarg']) {
+ if(is_null($val) && $i + 1 < $argc && !preg_match('/^--?[\w]/', $this->args[$i + 1])) {
+ $val = $this->args[++$i];
+ }
+ if(is_null($val)) {
+ throw new DokuCLI_Exception("Option $arg requires an argument", DokuCLI_Exception::E_OPT_ARG_REQUIRED);
+ }
+ $this->options[$opt] = $val;
+ } else {
+ $this->options[$opt] = true;
+ }
+
+ continue;
+ }
+
+ // short option
+ $opt = substr($arg, 1);
+ if(!isset($this->setup[$this->command]['short'][$opt])) {
+ throw new DokuCLI_Exception("No such option $arg", DokuCLI_Exception::E_UNKNOWN_OPT);
+ } else {
+ $opt = $this->setup[$this->command]['short'][$opt]; // store it under long name
+ }
+
+ // argument required?
+ if($this->setup[$this->command]['opts'][$opt]['needsarg']) {
+ $val = null;
+ if($i + 1 < $argc && !preg_match('/^--?[\w]/', $this->args[$i + 1])) {
+ $val = $this->args[++$i];
+ }
+ if(is_null($val)) {
+ throw new DokuCLI_Exception("Option $arg requires an argument", DokuCLI_Exception::E_OPT_ARG_REQUIRED);
+ }
+ $this->options[$opt] = $val;
+ } else {
+ $this->options[$opt] = true;
+ }
+ }
+
+ // parsing is now done, update args array
+ $this->args = $non_opts;
+
+ // if not done yet, check if first argument is a command and reexecute argument parsing if it is
+ if(!$this->command && $this->args && isset($this->setup[$this->args[0]])) {
+ // it is a command!
+ $this->command = array_shift($this->args);
+ $this->parseOptions(); // second pass
+ }
+ }
+
+ /**
+ * Get the value of the given option
+ *
+ * Please note that all options are accessed by their long option names regardless of how they were
+ * specified on commandline.
+ *
+ * Can only be used after parseOptions() has been run
+ *
+ * @param string $option
+ * @param mixed $default what to return if the option was not set
+ * @return mixed
+ */
+ public function getOpt($option, $default = false) {
+ if(isset($this->options[$option])) return $this->options[$option];
+ return $default;
+ }
+
+ /**
+ * Return the found command if any
+ *
+ * @return string
+ */
+ public function getCmd() {
+ return $this->command;
+ }
+
+ /**
+ * Builds a help screen from the available options. You may want to call it from -h or on error
+ *
+ * @return string
+ */
+ public function help() {
+ $text = '';
+
+ $hascommands = (count($this->setup) > 1);
+ foreach($this->setup as $command => $config) {
+ $hasopts = (bool) $this->setup[$command]['opts'];
+ $hasargs = (bool) $this->setup[$command]['args'];
+
+ if(!$command) {
+ $text .= 'USAGE: '.$this->bin;
+ } else {
+ $text .= "\n$command";
+ }
+
+ if($hasopts) $text .= ' <OPTIONS>';
+
+ foreach($this->setup[$command]['args'] as $arg) {
+ if($arg['required']) {
+ $text .= ' <'.$arg['name'].'>';
+ } else {
+ $text .= ' [<'.$arg['name'].'>]';
+ }
+ }
+ $text .= "\n";
+
+ if($this->setup[$command]['help']) {
+ $text .= "\n";
+ $text .= $this->tableFormat(
+ array(2, 72),
+ array('', $this->setup[$command]['help']."\n")
+ );
+ }
+
+ if($hasopts) {
+ $text .= "\n OPTIONS\n\n";
+ foreach($this->setup[$command]['opts'] as $long => $opt) {
+
+ $name = '';
+ if($opt['short']) {
+ $name .= '-'.$opt['short'];
+ if($opt['needsarg']) $name .= ' <'.$opt['needsarg'].'>';
+ $name .= ', ';
+ }
+ $name .= "--$long";
+ if($opt['needsarg']) $name .= ' <'.$opt['needsarg'].'>';
+
+ $text .= $this->tableFormat(
+ array(2, 20, 52),
+ array('', $name, $opt['help'])
+ );
+ $text .= "\n";
+ }
+ }
+
+ if($hasargs) {
+ $text .= "\n";
+ foreach($this->setup[$command]['args'] as $arg) {
+ $name = '<'.$arg['name'].'>';
+
+ $text .= $this->tableFormat(
+ array(2, 20, 52),
+ array('', $name, $arg['help'])
+ );
+ }
+ }
+
+ if($command == '' && $hascommands) {
+ $text .= "\nThis tool accepts a command as first parameter as outlined below:\n";
+ }
+ }
+
+ return $text;
+ }
+
+ /**
+ * Safely read the $argv PHP array across different PHP configurations.
+ * Will take care on register_globals and register_argc_argv ini directives
+ *
+ * @throws DokuCLI_Exception
+ * @return array the $argv PHP array or PEAR error if not registered
+ */
+ private function readPHPArgv() {
+ global $argv;
+ if(!is_array($argv)) {
+ if(!@is_array($_SERVER['argv'])) {
+ if(!@is_array($GLOBALS['HTTP_SERVER_VARS']['argv'])) {
+ throw new DokuCLI_Exception(
+ "Could not read cmd args (register_argc_argv=Off?)",
+ DOKU_CLI_OPTS_ARG_READ
+ );
+ }
+ return $GLOBALS['HTTP_SERVER_VARS']['argv'];
+ }
+ return $_SERVER['argv'];
+ }
+ return $argv;
+ }
+
+ /**
+ * Displays text in multiple word wrapped columns
+ *
+ * @param array $widths list of column widths (in characters)
+ * @param array $texts list of texts for each column
+ * @return string
+ */
+ private function tableFormat($widths, $texts) {
+ $wrapped = array();
+ $maxlen = 0;
+
+ foreach($widths as $col => $width) {
+ $wrapped[$col] = explode("\n", wordwrap($texts[$col], $width - 1, "\n", true)); // -1 char border
+ $len = count($wrapped[$col]);
+ if($len > $maxlen) $maxlen = $len;
+
+ }
+
+ $out = '';
+ for($i = 0; $i < $maxlen; $i++) {
+ foreach($widths as $col => $width) {
+ if(isset($wrapped[$col][$i])) {
+ $val = $wrapped[$col][$i];
+ } else {
+ $val = '';
+ }
+ $out .= sprintf('%-'.$width.'s', $val);
+ }
+ $out .= "\n";
+ }
+ return $out;
+ }
+}
+
+/**
+ * Class DokuCLI_Exception
+ *
+ * The code is used as exit code for the CLI tool. This should probably be extended. Many cases just fall back to the
+ * E_ANY code.
+ *
+ * @author Andreas Gohr <andi@splitbrain.org>
+ */
+class DokuCLI_Exception extends Exception {
+ const E_ANY = -1; // no error code specified
+ const E_UNKNOWN_OPT = 1; //Unrecognized option
+ const E_OPT_ARG_REQUIRED = 2; //Option requires argument
+ const E_OPT_ARG_DENIED = 3; //Option not allowed argument
+ const E_OPT_ABIGUOUS = 4; //Option abiguous
+ const E_ARG_READ = 5; //Could not read argv
+
+ public function __construct($message = "", $code = 0, Exception $previous = null) {
+ if(!$code) $code = DokuCLI_Exception::E_ANY;
+ parent::__construct($message, $code, $previous);
+ }
+}
diff --git a/inc/cliopts.php b/inc/cliopts.php
index 3eac72e5b..c75a5a93b 100644
--- a/inc/cliopts.php
+++ b/inc/cliopts.php
@@ -68,6 +68,7 @@ define('DOKU_CLI_OPTS_ARG_READ',5);//Could not read argv
*
* @author Andrei Zmievski <andrei@php.net>
*
+ * @deprecated 2014-05-16
*/
class Doku_Cli_Opts {
diff --git a/inc/common.php b/inc/common.php
index 110b91417..0fe33c5b1 100644
--- a/inc/common.php
+++ b/inc/common.php
@@ -22,6 +22,9 @@ define('RECENTS_MEDIA_PAGES_MIXED', 32);
*
* @author Andreas Gohr <andi@splitbrain.org>
* @see htmlspecialchars()
+ *
+ * @param string $string the string being converted
+ * @return string converted string
*/
function hsc($string) {
return htmlspecialchars($string, ENT_QUOTES, 'UTF-8');
@@ -33,6 +36,9 @@ function hsc($string) {
* You can give an indention as optional parameter
*
* @author Andreas Gohr <andi@splitbrain.org>
+ *
+ * @param string $string line of text
+ * @param int $indent number of spaces indention
*/
function ptln($string, $indent = 0) {
echo str_repeat(' ', $indent)."$string\n";
@@ -42,6 +48,9 @@ function ptln($string, $indent = 0) {
* strips control characters (<32) from the given string
*
* @author Andreas Gohr <andi@splitbrain.org>
+ *
+ * @param $string string being stripped
+ * @return string
*/
function stripctl($string) {
return preg_replace('/[\x00-\x1F]+/s', '', $string);
@@ -63,6 +72,9 @@ function getSecurityToken() {
/**
* Check the secret CSRF token
+ *
+ * @param null|string $token security token or null to read it from request variable
+ * @return bool success if the token matched
*/
function checkSecurityToken($token = null) {
/** @var Input $INPUT */
@@ -81,6 +93,9 @@ function checkSecurityToken($token = null) {
* Print a hidden form field with a secret CSRF token
*
* @author Andreas Gohr <andi@splitbrain.org>
+ *
+ * @param bool $print if true print the field, otherwise html of the field is returned
+ * @return void|string html of hidden form field
*/
function formSecurityToken($print = true) {
$ret = '<div class="no"><input type="hidden" name="sectok" value="'.getSecurityToken().'" /></div>'."\n";
@@ -93,6 +108,11 @@ function formSecurityToken($print = true) {
*
* @author Andreas Gohr <andi@splitbrain.org>
* @author Chris Smith <chris@jalakai.co.uk>
+ *
+ * @param string $id pageid
+ * @param bool $htmlClient add info about whether is mobile browser
+ * @return array with info for a request of $id
+ *
*/
function basicinfo($id, $htmlClient=true){
global $USERINFO;
@@ -139,6 +159,8 @@ function basicinfo($id, $htmlClient=true){
* array.
*
* @author Andreas Gohr <andi@splitbrain.org>
+ *
+ * @return array with info about current document
*/
function pageinfo() {
global $ID;
@@ -246,6 +268,8 @@ function pageinfo() {
/**
* Return information about the current media item as an associative array.
+ *
+ * @return array with info about current media item
*/
function mediainfo(){
global $NS;
@@ -261,6 +285,10 @@ function mediainfo(){
* Build an string of URL parameters
*
* @author Andreas Gohr
+ *
+ * @param array $params array with key-value pairs
+ * @param string $sep series of pairs are separated by this character
+ * @return string query string
*/
function buildURLparams($params, $sep = '&amp;') {
$url = '';
@@ -281,6 +309,10 @@ function buildURLparams($params, $sep = '&amp;') {
* Skips keys starting with '_', values get HTML encoded
*
* @author Andreas Gohr
+ *
+ * @param array $params array with (attribute name-attribute value) pairs
+ * @param bool $skipempty skip empty string values?
+ * @return string
*/
function buildAttributes($params, $skipempty = false) {
$url = '';
@@ -302,6 +334,8 @@ function buildAttributes($params, $skipempty = false) {
* This builds the breadcrumb trail and returns it as array
*
* @author Andreas Gohr <andi@splitbrain.org>
+ *
+ * @return array(pageid=>name, ... )
*/
function breadcrumbs() {
// we prepare the breadcrumbs early for quick session closing
@@ -361,6 +395,10 @@ function breadcrumbs() {
* Urlencoding is ommitted when the second parameter is false
*
* @author Andreas Gohr <andi@splitbrain.org>
+ *
+ * @param string $id pageid being filtered
+ * @param bool $ue apply urlencoding?
+ * @return string
*/
function idfilter($id, $ue = true) {
global $conf;
@@ -386,10 +424,15 @@ function idfilter($id, $ue = true) {
/**
* This builds a link to a wikipage
*
- * It handles URL rewriting and adds additional parameter if
- * given in $more
+ * It handles URL rewriting and adds additional parameters
*
* @author Andreas Gohr <andi@splitbrain.org>
+ *
+ * @param string $id page id, defaults to start page
+ * @param string|array $urlParameters URL parameters, associative array recommended
+ * @param bool $absolute request an absolute URL instead of relative
+ * @param string $separator parameter separator
+ * @return string
*/
function wl($id = '', $urlParameters = '', $absolute = false, $separator = '&amp;') {
global $conf;
@@ -431,13 +474,19 @@ function wl($id = '', $urlParameters = '', $absolute = false, $separator = '&amp
* Handles URL rewriting if enabled. Follows the style of wl().
*
* @author Ben Coburn <btcoburn@silicodon.net>
+ * @param string $id page id, defaults to start page
+ * @param string $format the export renderer to use
+ * @param string|array $urlParameters URL parameters, associative array recommended
+ * @param bool $abs request an absolute URL instead of relative
+ * @param string $sep parameter separator
+ * @return string
*/
-function exportlink($id = '', $format = 'raw', $more = '', $abs = false, $sep = '&amp;') {
+function exportlink($id = '', $format = 'raw', $urlParameters = '', $abs = false, $sep = '&amp;') {
global $conf;
- if(is_array($more)) {
- $more = buildURLparams($more, $sep);
+ if(is_array($urlParameters)) {
+ $urlParameters = buildURLparams($urlParameters, $sep);
} else {
- $more = str_replace(',', $sep, $more);
+ $urlParameters = str_replace(',', $sep, $urlParameters);
}
$format = rawurlencode($format);
@@ -450,13 +499,13 @@ function exportlink($id = '', $format = 'raw', $more = '', $abs = false, $sep =
if($conf['userewrite'] == 2) {
$xlink .= DOKU_SCRIPT.'/'.$id.'?do=export_'.$format;
- if($more) $xlink .= $sep.$more;
+ if($urlParameters) $xlink .= $sep.$urlParameters;
} elseif($conf['userewrite'] == 1) {
$xlink .= '_export/'.$format.'/'.$id;
- if($more) $xlink .= '?'.$more;
+ if($urlParameters) $xlink .= '?'.$urlParameters;
} else {
$xlink .= DOKU_SCRIPT.'?do=export_'.$format.$sep.'id='.$id;
- if($more) $xlink .= $sep.$more;
+ if($urlParameters) $xlink .= $sep.$urlParameters;
}
return $xlink;
@@ -563,6 +612,8 @@ function ml($id = '', $more = '', $direct = true, $sep = '&amp;', $abs = false)
* Consider using wl() instead, unless you absoutely need the doku.php endpoint
*
* @author Andreas Gohr <andi@splitbrain.org>
+ *
+ * @return string
*/
function script() {
return DOKU_BASE.DOKU_SCRIPT;
@@ -589,6 +640,7 @@ function script() {
*
* @author Andreas Gohr <andi@splitbrain.org>
* @author Michael Klier <chi@chimeric.de>
+ *
* @param string $text - optional text to check, if not given the globals are used
* @return bool - true if a spam word was found
*/
@@ -657,6 +709,7 @@ function checkwordblock($text = '') {
* headers
*
* @author Andreas Gohr <andi@splitbrain.org>
+ *
* @param boolean $single If set only a single IP is returned
* @return string
*/
@@ -728,6 +781,8 @@ function clientIP($single = false) {
* Adapted from the example code at url below
*
* @link http://www.brainhandles.com/2007/10/15/detecting-mobile-browsers/#code
+ *
+ * @return bool if true, client is mobile browser; otherwise false
*/
function clientismobile() {
/* @var Input $INPUT */
@@ -752,6 +807,7 @@ function clientismobile() {
* If $conf['dnslookups'] is disabled it simply returns the input string
*
* @author Glen Harris <astfgl@iamnota.org>
+ *
* @param string $ips comma separated list of IP addresses
* @return string a comma separated list of hostnames
*/
@@ -778,6 +834,9 @@ function gethostsbyaddrs($ips) {
* removes stale lockfiles
*
* @author Andreas Gohr <andi@splitbrain.org>
+ *
+ * @param string $id page id
+ * @return bool page is locked?
*/
function checklock($id) {
global $conf;
@@ -797,7 +856,7 @@ function checklock($id) {
//my own lock
@list($ip, $session) = explode("\n", io_readFile($lock));
- if($ip == $INPUT->server->str('REMOTE_USER') || $ip == clientIP() || $session == session_id()) {
+ if($ip == $INPUT->server->str('REMOTE_USER') || $ip == clientIP() || (session_id() && $session == session_id())) {
return false;
}
@@ -808,6 +867,8 @@ function checklock($id) {
* Lock a page for editing
*
* @author Andreas Gohr <andi@splitbrain.org>
+ *
+ * @param string $id page id to lock
*/
function lock($id) {
global $conf;
@@ -830,6 +891,7 @@ function lock($id) {
* Unlock a page if it was locked by the user
*
* @author Andreas Gohr <andi@splitbrain.org>
+ *
* @param string $id page id to unlock
* @return bool true if a lock was removed
*/
@@ -855,6 +917,9 @@ function unlock($id) {
*
* @see formText() for 2crlf conversion
* @author Andreas Gohr <andi@splitbrain.org>
+ *
+ * @param string $text
+ * @return string
*/
function cleanText($text) {
$text = preg_replace("/(\015\012)|(\015)/", "\012", $text);
@@ -874,6 +939,9 @@ function cleanText($text) {
*
* @see cleanText() for 2unix conversion
* @author Andreas Gohr <andi@splitbrain.org>
+ *
+ * @param string $text
+ * @return string
*/
function formText($text) {
$text = str_replace("\012", "\015\012", $text);
@@ -884,6 +952,10 @@ function formText($text) {
* Returns the specified local text in raw format
*
* @author Andreas Gohr <andi@splitbrain.org>
+ *
+ * @param string $id page id
+ * @param string $ext extension of file being read, default 'txt'
+ * @return string
*/
function rawLocale($id, $ext = 'txt') {
return io_readFile(localeFN($id, $ext));
@@ -893,6 +965,10 @@ function rawLocale($id, $ext = 'txt') {
* Returns the raw WikiText
*
* @author Andreas Gohr <andi@splitbrain.org>
+ *
+ * @param string $id page id
+ * @param string $rev timestamp when a revision of wikitext is desired
+ * @return string
*/
function rawWiki($id, $rev = '') {
return io_readWikiPage(wikiFN($id, $rev), $id, $rev);
@@ -903,6 +979,9 @@ function rawWiki($id, $rev = '') {
*
* @triggers COMMON_PAGETPL_LOAD
* @author Andreas Gohr <andi@splitbrain.org>
+ *
+ * @param string $id the id of the page to be created
+ * @return string parsed pagetemplate content
*/
function pageTemplate($id) {
global $conf;
@@ -954,6 +1033,9 @@ function pageTemplate($id) {
* This works on data from COMMON_PAGETPL_LOAD
*
* @author Andreas Gohr <andi@splitbrain.org>
+ *
+ * @param array $data array with event data
+ * @return string
*/
function parsePageTemplate(&$data) {
/**
@@ -1021,6 +1103,11 @@ function parsePageTemplate(&$data) {
* The returned order is prefix, section and suffix.
*
* @author Andreas Gohr <andi@splitbrain.org>
+ *
+ * @param string $range in form "from-to"
+ * @param string $id page id
+ * @param string $rev optional, the revision timestamp
+ * @return array with three slices
*/
function rawWikiSlices($range, $id, $rev = '') {
$text = io_readWikiPage(wikiFN($id, $rev), $id, $rev);
@@ -1045,6 +1132,12 @@ function rawWikiSlices($range, $id, $rev = '') {
* lines between sections if needed (used on saving).
*
* @author Andreas Gohr <andi@splitbrain.org>
+ *
+ * @param string $pre prefix
+ * @param string $text text in the middle
+ * @param string $suf suffix
+ * @param bool $pretty add additional empty lines between sections
+ * @return string
*/
function con($pre, $text, $suf, $pretty = false) {
if($pretty) {
@@ -1069,6 +1162,11 @@ function con($pre, $text, $suf, $pretty = false) {
*
* @author Andreas Gohr <andi@splitbrain.org>
* @author Ben Coburn <btcoburn@silicodon.net>
+ *
+ * @param string $id page id
+ * @param string $text wikitext being saved
+ * @param string $summary summary of text update
+ * @param bool $minor mark this saved version as minor update
*/
function saveWikiText($id, $text, $summary, $minor = false) {
/* Note to developers:
@@ -1173,6 +1271,9 @@ function saveWikiText($id, $text, $summary, $minor = false) {
* revision date
*
* @author Andreas Gohr <andi@splitbrain.org>
+ *
+ * @param string $id page id
+ * @return int|string revision timestamp
*/
function saveOldRevision($id) {
$oldf = wikiFN($id);
@@ -1192,8 +1293,8 @@ function saveOldRevision($id) {
* @param string $summary What changed
* @param boolean $minor Is this a minor edit?
* @param array $replace Additional string substitutions, @KEY@ to be replaced by value
- *
* @return bool
+ *
* @author Andreas Gohr <andi@splitbrain.org>
*/
function notify($id, $who, $rev = '', $summary = '', $minor = false, $replace = array()) {
@@ -1209,7 +1310,7 @@ function notify($id, $who, $rev = '', $summary = '', $minor = false, $replace =
} elseif($who == 'subscribers') {
if(!actionOK('subscribe')) return false; //subscribers enabled?
if($conf['useacl'] && $INPUT->server->str('REMOTE_USER') && $minor) return false; //skip minors
- $data = array('id' => $id, 'addresslist' => '', 'self' => false);
+ $data = array('id' => $id, 'addresslist' => '', 'self' => false, 'replacements' => $replace);
trigger_event(
'COMMON_NOTIFY_ADDRESSLIST', $data,
array(new Subscription(), 'notifyaddresses')
@@ -1231,6 +1332,8 @@ function notify($id, $who, $rev = '', $summary = '', $minor = false, $replace =
*
* @author Andreas Gohr <andi@splitbrain.org>
* @author Todd Augsburger <todd@rollerorgans.com>
+ *
+ * @return array|string
*/
function getGoogleQuery() {
/* @var Input $INPUT */
@@ -1272,6 +1375,7 @@ function getGoogleQuery() {
* @param int $size A file size
* @param int $dec A number of decimal places
* @return string human readable size
+ *
* @author Martin Benjamin <b.martin@cybernet.ch>
* @author Aidan Lister <aidan@php.net>
* @version 1.0.0
@@ -1293,6 +1397,9 @@ function filesize_h($size, $dec = 1) {
* Return the given timestamp as human readable, fuzzy age
*
* @author Andreas Gohr <gohr@cosmocode.de>
+ *
+ * @param int $dt timestamp
+ * @return string
*/
function datetime_h($dt) {
global $lang;
@@ -1327,6 +1434,10 @@ function datetime_h($dt) {
*
* @see datetime_h
* @author Andreas Gohr <gohr@cosmocode.de>
+ *
+ * @param int|null $dt timestamp when given, null will take current timestamp
+ * @param string $format empty default to $conf['dformat'], or provide format as recognized by strftime()
+ * @return string
*/
function dformat($dt = null, $format = '') {
global $conf;
@@ -1344,6 +1455,7 @@ function dformat($dt = null, $format = '') {
*
* @author <ungu at terong dot com>
* @link http://www.php.net/manual/en/function.date.php#54072
+ *
* @param int $int_date: current date in UNIX timestamp
* @return string
*/
@@ -1360,6 +1472,9 @@ function date_iso8601($int_date) {
*
* @author Harry Fuecks <hfuecks@gmail.com>
* @author Christopher Smith <chris@jalakai.co.uk>
+ *
+ * @param string $email email address
+ * @return string
*/
function obfuscate($email) {
global $conf;
@@ -1387,6 +1502,10 @@ function obfuscate($email) {
* Removes quoting backslashes
*
* @author Andreas Gohr <andi@splitbrain.org>
+ *
+ * @param string $string
+ * @param string $char backslashed character
+ * @return string
*/
function unslash($string, $char = "'") {
return str_replace('\\'.$char, $char, $string);
@@ -1397,6 +1516,9 @@ function unslash($string, $char = "'") {
*
* @author <gilthans dot NO dot SPAM at gmail dot com>
* @link http://de3.php.net/manual/en/ini.core.php#79564
+ *
+ * @param string $v shorthands
+ * @return int|string
*/
function php_to_byte($v) {
$l = substr($v, -1);
@@ -1414,6 +1536,7 @@ function php_to_byte($v) {
/** @noinspection PhpMissingBreakStatementInspection */
case 'M':
$ret *= 1024;
+ /** @noinspection PhpMissingBreakStatementInspection */
case 'K':
$ret *= 1024;
break;
@@ -1426,6 +1549,9 @@ function php_to_byte($v) {
/**
* Wrapper around preg_quote adding the default delimiter
+ *
+ * @param string $string
+ * @return string
*/
function preg_quote_cb($string) {
return preg_quote($string, '/');
@@ -1459,7 +1585,7 @@ function shorten($keep, $short, $max, $min = 9, $char = '…') {
* Return the users realname or e-mail address for use
* in page footer and recent changes pages
*
- * @param string|bool $username or false when currently logged-in user should be used
+ * @param string|null $username or null when currently logged-in user should be used
* @param bool $textonly true returns only plain text, true allows returning html
* @return string html or plain text(not escaped) of formatted user name
*
@@ -1472,7 +1598,7 @@ function editorinfo($username, $textonly = false) {
/**
* Returns users realname w/o link
*
- * @param string|bool $username or false when currently logged-in user should be used
+ * @param string|null $username or null when currently logged-in user should be used
* @param bool $textonly true returns only plain text, true allows returning html
* @return string html or plain text(not escaped) of formatted user name
*
@@ -1595,6 +1721,7 @@ function userlink($username = null, $textonly = false) {
* When no image exists, returns an empty string
*
* @author Andreas Gohr <andi@splitbrain.org>
+ *
* @param string $type - type of image 'badge' or 'button'
* @return string
*/
@@ -1603,7 +1730,6 @@ function license_img($type) {
global $conf;
if(!$conf['license']) return '';
if(!is_array($license[$conf['license']])) return '';
- $lic = $license[$conf['license']];
$try = array();
$try[] = 'lib/images/license/'.$type.'/'.$conf['license'].'.png';
$try[] = 'lib/images/license/'.$type.'/'.$conf['license'].'.gif';
@@ -1625,9 +1751,8 @@ function license_img($type) {
* @author Filip Oscadal <webmaster@illusionsoftworks.cz>
* @author Andreas Gohr <andi@splitbrain.org>
*
- * @param int $mem Size of memory you want to allocate in bytes
- * @param int $bytes
- * @internal param int $used already allocated memory (see above)
+ * @param int $mem Size of memory you want to allocate in bytes
+ * @param int $bytes already allocated memory (see above)
* @return bool
*/
function is_mem_available($mem, $bytes = 1048576) {
@@ -1658,6 +1783,8 @@ function is_mem_available($mem, $bytes = 1048576) {
*
* @link http://support.microsoft.com/kb/q176113/
* @author Andreas Gohr <andi@splitbrain.org>
+ *
+ * @param string $url url being directed to
*/
function send_redirect($url) {
/* @var Input $INPUT */
@@ -1729,6 +1856,10 @@ function valid_input_set($param, $valid_values, $array, $exc = '') {
/**
* Read a preference from the DokuWiki cookie
* (remembering both keys & values are urlencoded)
+ *
+ * @param string $pref preference key
+ * @param mixed $default value returned when preference not found
+ * @return string preference value
*/
function get_doku_pref($pref, $default) {
$enc_pref = urlencode($pref);
@@ -1747,6 +1878,9 @@ function get_doku_pref($pref, $default) {
/**
* Add a preference to the DokuWiki cookie
* (remembering $_COOKIE['DOKU_PREFS'] is urlencoded)
+ *
+ * @param string $pref preference key
+ * @param string $val preference value
*/
function set_doku_pref($pref, $val) {
global $conf;
diff --git a/inc/form.php b/inc/form.php
index 9cd0491e0..fadc71d3e 100644
--- a/inc/form.php
+++ b/inc/form.php
@@ -131,7 +131,7 @@ class Doku_Form {
* The element can be either a pseudo-tag or string.
* If string, it is printed without escaping special chars. *
*
- * @param string $elem Pseudo-tag or string to add to the form.
+ * @param string|array $elem Pseudo-tag or string to add to the form.
* @author Tom N Harris <tnharris@whoopdedo.org>
*/
function addElement($elem) {
@@ -143,8 +143,8 @@ class Doku_Form {
*
* Inserts a content element at a position.
*
- * @param string $pos 0-based index where the element will be inserted.
- * @param string $elem Pseudo-tag or string to add to the form.
+ * @param string $pos 0-based index where the element will be inserted.
+ * @param string|array $elem Pseudo-tag or string to add to the form.
* @author Tom N Harris <tnharris@whoopdedo.org>
*/
function insertElement($pos, $elem) {
@@ -156,8 +156,8 @@ class Doku_Form {
*
* Replace with NULL to remove an element.
*
- * @param int $pos 0-based index the element will be placed at.
- * @param string $elem Pseudo-tag or string to add to the form.
+ * @param int $pos 0-based index the element will be placed at.
+ * @param string|array $elem Pseudo-tag or string to add to the form.
* @author Tom N Harris <tnharris@whoopdedo.org>
*/
function replaceElement($pos, $elem) {
diff --git a/inc/html.php b/inc/html.php
index be7afae0c..1db181c49 100644
--- a/inc/html.php
+++ b/inc/html.php
@@ -411,8 +411,8 @@ function html_locked(){
print p_locale_xhtml('locked');
print '<ul>';
- print '<li><div class="li"><strong>'.$lang['lockedby'].':</strong> '.editorinfo($INFO['locked']).'</div></li>';
- print '<li><div class="li"><strong>'.$lang['lockexpire'].':</strong> '.$expire.' ('.$min.' min)</div></li>';
+ print '<li><div class="li"><strong>'.$lang['lockedby'].'</strong> '.editorinfo($INFO['locked']).'</div></li>';
+ print '<li><div class="li"><strong>'.$lang['lockexpire'].'</strong> '.$expire.' ('.$min.' min)</div></li>';
print '</ul>';
}
diff --git a/inc/infoutils.php b/inc/infoutils.php
index 0992040d9..db856141f 100644
--- a/inc/infoutils.php
+++ b/inc/infoutils.php
@@ -280,6 +280,15 @@ define('MSG_USERS_ONLY', 1);
define('MSG_MANAGERS_ONLY',2);
define('MSG_ADMINS_ONLY',4);
+/**
+ * Display a message to the user
+ *
+ * @param string $message
+ * @param int $lvl -1 = error, 0 = info, 1 = success, 2 = notify
+ * @param string $line line number
+ * @param string $file file number
+ * @param int $allow who's allowed to see the message, see MSG_* constants
+ */
function msg($message,$lvl=0,$line='',$file='',$allow=MSG_PUBLIC){
global $MSG, $MSG_shown;
$errors[-1] = 'error';
@@ -309,6 +318,7 @@ function msg($message,$lvl=0,$line='',$file='',$allow=MSG_PUBLIC){
* lvl => int, level of the message (see msg() function)
* allow => int, flag used to determine who is allowed to see the message
* see MSG_* constants
+ * @return bool
*/
function info_msg_allowed($msg){
global $INFO, $auth;
@@ -384,6 +394,32 @@ function dbglog($msg,$header=''){
}
/**
+ * Log accesses to deprecated fucntions to the debug log
+ *
+ * @param string $alternative The function or method that should be used instead
+ */
+function dbg_deprecated($alternative = '') {
+ global $conf;
+ if(!$conf['allowdebug']) return;
+
+ $backtrace = debug_backtrace();
+ array_shift($backtrace);
+ $self = array_shift($backtrace);
+ $call = array_shift($backtrace);
+
+ $called = trim($self['class'].'::'.$self['function'].'()', ':');
+ $caller = trim($call['class'].'::'.$call['function'].'()', ':');
+
+ $msg = $called.' is deprecated. It was called from ';
+ $msg .= $caller.' in '.$call['file'].':'.$call['line'];
+ if($alternative) {
+ $msg .= ' '.$alternative.' should be used instead!';
+ }
+
+ dbglog($msg);
+}
+
+/**
* Print a reversed, prettyprinted backtrace
*
* @author Gary Owen <gary_owen@bigfoot.com>
diff --git a/inc/lang/af/lang.php b/inc/lang/af/lang.php
index 008110450..70672fbdd 100644
--- a/inc/lang/af/lang.php
+++ b/inc/lang/af/lang.php
@@ -25,7 +25,7 @@ $lang['btn_back'] = 'Terug';
$lang['btn_backlink'] = 'Wat skakel hierheen';
$lang['btn_subscribe'] = 'Hou bladsy dop';
$lang['btn_register'] = 'Skep gerus \'n rekening';
-$lang['loggedinas'] = 'Ingeteken as';
+$lang['loggedinas'] = 'Ingeteken as:';
$lang['user'] = 'Gebruikernaam';
$lang['pass'] = 'Wagwoord';
$lang['newpass'] = 'Nuive wagwoord';
@@ -52,7 +52,7 @@ $lang['mediaroot'] = 'root';
$lang['toc'] = 'Inhoud';
$lang['current'] = 'huidige';
$lang['line'] = 'Streak';
-$lang['youarehere'] = 'Jy is hier';
+$lang['youarehere'] = 'Jy is hier:';
$lang['by'] = 'by';
$lang['restored'] = 'Het terug gegaan na vroeëre weergawe (%s)';
$lang['summary'] = 'Voorskou';
@@ -64,7 +64,7 @@ $lang['qb_hr'] = 'Horisontale streep';
$lang['qb_sig'] = 'Handtekening met datum';
$lang['admin_register'] = 'Skep gerus \'n rekening';
$lang['btn_img_backto'] = 'Terug na %s';
-$lang['img_date'] = 'Datem';
-$lang['img_camera'] = 'Camera';
+$lang['img_date'] = 'Datem:';
+$lang['img_camera'] = 'Camera:';
$lang['i_wikiname'] = 'Wiki Naam';
$lang['i_funcna'] = 'PHP funksie <code>%s</code> is nie beskibaar nie. Miskien is dit af gehaal.';
diff --git a/inc/lang/ar/lang.php b/inc/lang/ar/lang.php
index b0a2edc88..a63e1ed44 100644
--- a/inc/lang/ar/lang.php
+++ b/inc/lang/ar/lang.php
@@ -53,7 +53,7 @@ $lang['btn_register'] = 'سجّل';
$lang['btn_apply'] = 'طبق';
$lang['btn_media'] = 'مدير الوسائط';
$lang['btn_deleteuser'] = 'احذف حسابي الخاص';
-$lang['loggedinas'] = 'داخل باسم';
+$lang['loggedinas'] = 'داخل باسم:';
$lang['user'] = 'اسم المستخدم';
$lang['pass'] = 'كلمة السر';
$lang['newpass'] = 'كلمة سر جديدة';
@@ -98,12 +98,12 @@ $lang['license'] = 'مالم يشر لخلاف ذلك، فإن ا
$lang['licenseok'] = 'لاحظ: بتحرير هذه الصفحة أنت توافق على ترخيص محتواها تحت الرخصة التالية:';
$lang['searchmedia'] = 'ابحث في أسماء الملفات:';
$lang['searchmedia_in'] = 'ابحث في %s';
-$lang['txt_upload'] = 'اختر ملفاً للرفع';
-$lang['txt_filename'] = 'رفع كـ (اختياري)';
+$lang['txt_upload'] = 'اختر ملفاً للرفع:';
+$lang['txt_filename'] = 'رفع كـ (اختياري):';
$lang['txt_overwrt'] = 'اكتب على ملف موجود';
$lang['maxuploadsize'] = 'الحجم الاقصى %s للملف';
-$lang['lockedby'] = 'مقفلة حاليا لـ';
-$lang['lockexpire'] = 'ينتهي القفل في';
+$lang['lockedby'] = 'مقفلة حاليا لـ:';
+$lang['lockexpire'] = 'ينتهي القفل في:';
$lang['js']['willexpire'] = 'سينتهي قفل تحرير هذه الصفحه خلال دقيقة.\nلتجنب التعارض استخدم زر المعاينة لتصفير مؤقت القفل.';
$lang['js']['notsavedyet'] = 'التعديلات غير المحفوظة ستفقد.';
$lang['js']['searchmedia'] = 'ابحث عن ملفات';
@@ -184,9 +184,9 @@ $lang['diff_type'] = 'أظهر الفروق:';
$lang['diff_inline'] = 'ضمنا';
$lang['diff_side'] = 'جنبا إلى جنب';
$lang['line'] = 'سطر';
-$lang['breadcrumb'] = 'أثر';
-$lang['youarehere'] = 'أنت هنا';
-$lang['lastmod'] = 'آخر تعديل';
+$lang['breadcrumb'] = 'أثر:';
+$lang['youarehere'] = 'أنت هنا:';
+$lang['lastmod'] = 'آخر تعديل:';
$lang['by'] = 'بواسطة';
$lang['deleted'] = 'حذفت';
$lang['created'] = 'اُنشئت';
@@ -240,18 +240,18 @@ $lang['metaedit'] = 'تحرير البيانات الشمولية '
$lang['metasaveerr'] = 'فشلت كتابة البيانات الشمولية';
$lang['metasaveok'] = 'حُفظت البيانات الشمولية';
$lang['btn_img_backto'] = 'عودة إلى %s';
-$lang['img_title'] = 'العنوان';
-$lang['img_caption'] = 'وصف';
-$lang['img_date'] = 'التاريخ';
-$lang['img_fname'] = 'اسم الملف';
-$lang['img_fsize'] = 'الحجم';
-$lang['img_artist'] = 'المصور';
-$lang['img_copyr'] = 'حقوق النسخ';
-$lang['img_format'] = 'الهيئة';
-$lang['img_camera'] = 'الكمرا';
-$lang['img_keywords'] = 'كلمات مفتاحية';
-$lang['img_width'] = 'العرض';
-$lang['img_height'] = 'الإرتفاع';
+$lang['img_title'] = 'العنوان:';
+$lang['img_caption'] = 'وصف:';
+$lang['img_date'] = 'التاريخ:';
+$lang['img_fname'] = 'اسم الملف:';
+$lang['img_fsize'] = 'الحجم:';
+$lang['img_artist'] = 'المصور:';
+$lang['img_copyr'] = 'حقوق النسخ:';
+$lang['img_format'] = 'الهيئة:';
+$lang['img_camera'] = 'الكمرا:';
+$lang['img_keywords'] = 'كلمات مفتاحية:';
+$lang['img_width'] = 'العرض:';
+$lang['img_height'] = 'الإرتفاع:';
$lang['btn_mediaManager'] = 'اعرض في مدير الوسائط';
$lang['subscr_subscribe_success'] = 'اضيف %s لقائمة اشتراك %s';
$lang['subscr_subscribe_error'] = 'خطأ في إضافة %s لقائمة اشتراك %s';
diff --git a/inc/lang/az/lang.php b/inc/lang/az/lang.php
index 8d51d2372..5edcfbe58 100644
--- a/inc/lang/az/lang.php
+++ b/inc/lang/az/lang.php
@@ -44,7 +44,7 @@ $lang['btn_recover'] = 'Qaralamanı qaytar';
$lang['btn_draftdel'] = 'Qaralamanı sil';
$lang['btn_revert'] = 'Qaytar';
$lang['btn_register'] = 'Qeydiyyatdan keç';
-$lang['loggedinas'] = 'İstifadəcinin adı';
+$lang['loggedinas'] = 'İstifadəcinin adı:';
$lang['user'] = 'istifadəci adı';
$lang['pass'] = 'Şifrə';
$lang['newpass'] = 'Yeni şifrə';
@@ -82,10 +82,10 @@ $lang['license'] = 'Fərqli şey göstərilmiş hallardan başqa,
$lang['licenseok'] = 'Qeyd: bu səhifəni düzəliş edərək, Siz elədiyiniz düzəlişi aşağıda göstərilmiş lisenziyanın şərtlərinə uyğun istifadəsinə razılıq verirsiniz:';
$lang['searchmedia'] = 'Faylın adına görə axtarış:';
$lang['searchmedia_in'] = '%s-ın içində axtarış';
-$lang['txt_upload'] = 'Serverə yükləmək üçün fayl seçin';
-$lang['txt_filename'] = 'Faylın wiki-də olan adını daxil edin (mütləq deyil)';
+$lang['txt_upload'] = 'Serverə yükləmək üçün fayl seçin:';
+$lang['txt_filename'] = 'Faylın wiki-də olan adını daxil edin (mütləq deyil):';
$lang['txt_overwrt'] = 'Mövcud olan faylın üstündən yaz';
-$lang['lockedby'] = 'В данный момент заблокирован Bu an blokdadır';
+$lang['lockedby'] = 'В данный момент заблокирован Bu an blokdadır:';
$lang['lockexpire'] = 'Blok bitir:';
$lang['js']['willexpire'] = 'Sizin bu səhifədə dəyişik etmək üçün blokunuz bir dəqiqə ərzində bitəcək.\nMünaqişələrdən yayınmaq və blokun taymerini sıfırlamaq üçün, baxış düyməsini sıxın.';
$lang['rssfailed'] = 'Aşağıda göstərilmiş xəbər lentini əldə edən zaman xəta baş verdi: ';
@@ -128,9 +128,9 @@ $lang['yours'] = 'Sizin versiyanız';
$lang['diff'] = 'hazırki versiyadan fərqləri göstər';
$lang['diff2'] = 'Versiyaların arasındaki fərqləri göstər ';
$lang['line'] = 'Sətr';
-$lang['breadcrumb'] = 'Siz ziyarət etdiniz';
-$lang['youarehere'] = 'Siz burdasınız';
-$lang['lastmod'] = 'Son dəyişiklər';
+$lang['breadcrumb'] = 'Siz ziyarət etdiniz:';
+$lang['youarehere'] = 'Siz burdasınız:';
+$lang['lastmod'] = 'Son dəyişiklər:';
$lang['by'] = ' Kimdən';
$lang['deleted'] = 'silinib';
$lang['created'] = 'yaranıb';
@@ -173,16 +173,16 @@ $lang['metaedit'] = 'Meta-məlumatlarda düzəliş et';
$lang['metasaveerr'] = 'Meta-məlumatları yazan zamanı xəta';
$lang['metasaveok'] = 'Meta-məlumatlar yadda saxlandı';
$lang['btn_img_backto'] = 'Qayıd %s';
-$lang['img_title'] = 'Başlıq';
-$lang['img_caption'] = 'İmza';
-$lang['img_date'] = 'Tarix';
-$lang['img_fname'] = 'Faylın adı';
-$lang['img_fsize'] = 'Boy';
-$lang['img_artist'] = 'Şkilin müəllifi';
-$lang['img_copyr'] = 'Müəllif hüquqları';
-$lang['img_format'] = 'Format';
-$lang['img_camera'] = 'Model';
-$lang['img_keywords'] = 'Açar sözlər';
+$lang['img_title'] = 'Başlıq:';
+$lang['img_caption'] = 'İmza:';
+$lang['img_date'] = 'Tarix:';
+$lang['img_fname'] = 'Faylın adı:';
+$lang['img_fsize'] = 'Boy:';
+$lang['img_artist'] = 'Şkilin müəllifi:';
+$lang['img_copyr'] = 'Müəllif hüquqları:';
+$lang['img_format'] = 'Format:';
+$lang['img_camera'] = 'Model:';
+$lang['img_keywords'] = 'Açar sözlər:';
$lang['authtempfail'] = 'İstifadəçilərin autentifikasiyası müvəqqəti dayandırılıb. Əgər bu problem uzun müddət davam edir sə, administrator ilə əlaqə saxlayın.';
$lang['i_chooselang'] = 'Dili seçin/Language';
$lang['i_installer'] = 'DokuWiki quraşdırılır';
diff --git a/inc/lang/bg/lang.php b/inc/lang/bg/lang.php
index 77117154f..bfa8b2ad7 100644
--- a/inc/lang/bg/lang.php
+++ b/inc/lang/bg/lang.php
@@ -51,7 +51,7 @@ $lang['btn_register'] = 'Регистриране';
$lang['btn_apply'] = 'Прилагане';
$lang['btn_media'] = 'Диспечер на файлове';
$lang['btn_deleteuser'] = 'Изтриване на профила';
-$lang['loggedinas'] = 'Вписани сте като';
+$lang['loggedinas'] = 'Вписани сте като:';
$lang['user'] = 'Потребител';
$lang['pass'] = 'Парола';
$lang['newpass'] = 'Нова парола';
@@ -96,12 +96,12 @@ $lang['license'] = 'Ако не е посочено друго, с
$lang['licenseok'] = 'Бележка: Редактирайки страницата, Вие се съгласявате да лицензирате промените (които сте направили) под следния лиценз:';
$lang['searchmedia'] = 'Търсене на файл: ';
$lang['searchmedia_in'] = 'Търсене в %s';
-$lang['txt_upload'] = 'Изберете файл за качване';
-$lang['txt_filename'] = 'Качи като (незадължително)';
+$lang['txt_upload'] = 'Изберете файл за качване:';
+$lang['txt_filename'] = 'Качи като (незадължително):';
$lang['txt_overwrt'] = 'Презапиши съществуващите файлове';
$lang['maxuploadsize'] = 'Макс. размер за отделните файлове е %s.';
-$lang['lockedby'] = 'В момента е заключена от';
-$lang['lockexpire'] = 'Ще бъде отключена на';
+$lang['lockedby'] = 'В момента е заключена от:';
+$lang['lockexpire'] = 'Ще бъде отключена на:';
$lang['js']['willexpire'] = 'Страницата ще бъде отключена за редактиране след минута.\nЗа предотвратяване на конфликти, ползвайте бутона "Преглед", за рестартиране на брояча за заключване.';
$lang['js']['notsavedyet'] = 'Незаписаните промени ще бъдат загубени. Желаете ли да продължите?';
$lang['js']['searchmedia'] = 'Търсене на файлове';
@@ -181,9 +181,9 @@ $lang['diff_type'] = 'Преглед на разликите:';
$lang['diff_inline'] = 'Вграден';
$lang['diff_side'] = 'Един до друг';
$lang['line'] = 'Ред';
-$lang['breadcrumb'] = 'Следа';
-$lang['youarehere'] = 'Намирате се в';
-$lang['lastmod'] = 'Последна промяна';
+$lang['breadcrumb'] = 'Следа:';
+$lang['youarehere'] = 'Намирате се в:';
+$lang['lastmod'] = 'Последна промяна:';
$lang['by'] = 'от';
$lang['deleted'] = 'изтрита';
$lang['created'] = 'създадена';
@@ -237,18 +237,18 @@ $lang['metaedit'] = 'Редактиране на метаданни
$lang['metasaveerr'] = 'Записването на метаданните се провали';
$lang['metasaveok'] = 'Метаданните са запазени успешно';
$lang['btn_img_backto'] = 'Назад към %s';
-$lang['img_title'] = 'Заглавие';
-$lang['img_caption'] = 'Надпис';
-$lang['img_date'] = 'Дата';
-$lang['img_fname'] = 'Име на файла';
-$lang['img_fsize'] = 'Размер';
-$lang['img_artist'] = 'Фотограф';
-$lang['img_copyr'] = 'Авторско право';
-$lang['img_format'] = 'Формат';
-$lang['img_camera'] = 'Фотоапарат';
-$lang['img_keywords'] = 'Ключови думи';
-$lang['img_width'] = 'Ширина';
-$lang['img_height'] = 'Височина';
+$lang['img_title'] = 'Заглавие:';
+$lang['img_caption'] = 'Надпис:';
+$lang['img_date'] = 'Дата:';
+$lang['img_fname'] = 'Име на файла:';
+$lang['img_fsize'] = 'Размер:';
+$lang['img_artist'] = 'Фотограф:';
+$lang['img_copyr'] = 'Авторско право:';
+$lang['img_format'] = 'Формат:';
+$lang['img_camera'] = 'Фотоапарат:';
+$lang['img_keywords'] = 'Ключови думи:';
+$lang['img_width'] = 'Ширина:';
+$lang['img_height'] = 'Височина:';
$lang['btn_mediaManager'] = 'Преглед в диспечера на файлове';
$lang['subscr_subscribe_success'] = '%s е добавен към списъка с абониралите се за %s';
$lang['subscr_subscribe_error'] = 'Грешка при добавянето на %s към списъка с абониралите се за %s';
diff --git a/inc/lang/bn/lang.php b/inc/lang/bn/lang.php
index 230f3ef80..2791bd50d 100644
--- a/inc/lang/bn/lang.php
+++ b/inc/lang/bn/lang.php
@@ -50,7 +50,7 @@ $lang['btn_register'] = 'খাতা';
$lang['btn_apply'] = 'প্রয়োগ করা';
$lang['btn_media'] = 'মিডিয়া ম্যানেজার';
$lang['btn_deleteuser'] = 'আমার অ্যাকাউন্ট অপসারণ করুন';
-$lang['loggedinas'] = 'লগ ইন';
+$lang['loggedinas'] = 'লগ ইন:';
$lang['user'] = 'ইউজারনেম';
$lang['pass'] = 'পাসওয়ার্ড';
$lang['newpass'] = 'নতুন পাসওয়ার্ড';
@@ -96,12 +96,12 @@ $lang['license'] = 'অন্যথায় নোট যেখ
$lang['licenseok'] = 'দ্রষ্টব্য: আপনি নিম্নলিখিত লাইসেন্সের অধীনে আপনার বিষয়বস্তু লাইসেন্স সম্মত হন এই পৃষ্ঠার সম্পাদনার দ্বারা:';
$lang['searchmedia'] = 'অনুসন্ধান ফাইলের নাম:';
$lang['searchmedia_in'] = 'অনুসন্ধান %s -এ';
-$lang['txt_upload'] = 'আপলোড করার জন্য নির্বাচন করুন ফাইল';
-$lang['txt_filename'] = 'হিসাবে আপলোড করুন (ঐচ্ছিক)';
+$lang['txt_upload'] = 'আপলোড করার জন্য নির্বাচন করুন ফাইল:';
+$lang['txt_filename'] = 'হিসাবে আপলোড করুন (ঐচ্ছিক):';
$lang['txt_overwrt'] = 'বিদ্যমান ফাইল মুছে যাবে';
$lang['maxuploadsize'] = 'সর্বোচ্চ আপলোড করুন. %s-ফাইলের প্রতি.';
-$lang['lockedby'] = 'বর্তমানে দ্বারা লক';
-$lang['lockexpire'] = 'তালা এ মেয়াদ শেষ';
+$lang['lockedby'] = 'বর্তমানে দ্বারা লক:';
+$lang['lockexpire'] = 'তালা এ মেয়াদ শেষ:';
$lang['js']['willexpire'] = 'এই পৃষ্ঠার সম্পাদনার জন্য আপনার লক এক মিনিটের মধ্যে মেয়াদ শেষ সম্পর্কে. \ দ্বন্দ্ব লক টাইমার রিসেট প্রিভিউ বাটন ব্যবহার এড়াতে.';
$lang['js']['notsavedyet'] = 'অসংরক্ষিত পরিবর্তন হারিয়ে যাবে.';
$lang['js']['searchmedia'] = 'ফাইলের জন্য অনুসন্ধান';
diff --git a/inc/lang/ca-valencia/lang.php b/inc/lang/ca-valencia/lang.php
index 6e6f2a662..98607d322 100644
--- a/inc/lang/ca-valencia/lang.php
+++ b/inc/lang/ca-valencia/lang.php
@@ -45,7 +45,7 @@ $lang['btn_recover'] = 'Recuperar borrador';
$lang['btn_draftdel'] = 'Borrar borrador';
$lang['btn_revert'] = 'Recuperar';
$lang['btn_register'] = 'Registrar-se';
-$lang['loggedinas'] = 'Sessió de';
+$lang['loggedinas'] = 'Sessió de:';
$lang['user'] = 'Nom d\'usuari';
$lang['pass'] = 'Contrasenya';
$lang['newpass'] = 'Contrasenya nova';
@@ -83,11 +83,11 @@ $lang['license'] = 'Excepte quan s\'indique una atra cosa, el cont
$lang['licenseok'] = 'Nota: a l\'editar esta pàgina accepta llicenciar el seu contingut baix la següent llicència:';
$lang['searchmedia'] = 'Buscar nom d\'archiu:';
$lang['searchmedia_in'] = 'Buscar en %s';
-$lang['txt_upload'] = 'Seleccione l\'archiu que vol pujar';
-$lang['txt_filename'] = 'Enviar com (opcional)';
+$lang['txt_upload'] = 'Seleccione l\'archiu que vol pujar:';
+$lang['txt_filename'] = 'Enviar com (opcional):';
$lang['txt_overwrt'] = 'Sobreescriure archius existents';
-$lang['lockedby'] = 'Actualment bloquejat per';
-$lang['lockexpire'] = 'El bloqueig venç a les';
+$lang['lockedby'] = 'Actualment bloquejat per:';
+$lang['lockexpire'] = 'El bloqueig venç a les:';
$lang['js']['willexpire'] = 'El seu bloqueig per a editar esta pàgina vencerà en un minut.\nPer a evitar conflictes utilise el botó de vista prèvia i reiniciarà el contador.';
$lang['js']['notsavedyet'] = 'Els canvis no guardats es perdran.\n¿Segur que vol continuar?';
$lang['rssfailed'] = 'Ha ocorregut un erro al solicitar este canal: ';
@@ -130,9 +130,9 @@ $lang['yours'] = 'La seua versió';
$lang['diff'] = 'Mostrar diferències en la versió actual';
$lang['diff2'] = 'Mostrar diferències entre versions';
$lang['line'] = 'Llínea';
-$lang['breadcrumb'] = 'Traça';
-$lang['youarehere'] = 'Vosté està ací';
-$lang['lastmod'] = 'Última modificació el';
+$lang['breadcrumb'] = 'Traça:';
+$lang['youarehere'] = 'Vosté està ací:';
+$lang['lastmod'] = 'Última modificació el:';
$lang['by'] = 'per';
$lang['deleted'] = 'borrat';
$lang['created'] = 'creat';
@@ -175,16 +175,16 @@ $lang['metaedit'] = 'Editar meta-senyes';
$lang['metasaveerr'] = 'Erro escrivint meta-senyes';
$lang['metasaveok'] = 'Meta-senyes guardades';
$lang['btn_img_backto'] = 'Tornar a %s';
-$lang['img_title'] = 'Títul';
-$lang['img_caption'] = 'Subtítul';
-$lang['img_date'] = 'Data';
-$lang['img_fname'] = 'Nom de l\'archiu';
-$lang['img_fsize'] = 'Tamany';
-$lang['img_artist'] = 'Fotógraf';
-$lang['img_copyr'] = 'Copyright';
-$lang['img_format'] = 'Format';
-$lang['img_camera'] = 'Càmara';
-$lang['img_keywords'] = 'Paraules clau';
+$lang['img_title'] = 'Títul:';
+$lang['img_caption'] = 'Subtítul:';
+$lang['img_date'] = 'Data:';
+$lang['img_fname'] = 'Nom de l\'archiu:';
+$lang['img_fsize'] = 'Tamany:';
+$lang['img_artist'] = 'Fotógraf:';
+$lang['img_copyr'] = 'Copyright:';
+$lang['img_format'] = 'Format:';
+$lang['img_camera'] = 'Càmara:';
+$lang['img_keywords'] = 'Paraules clau:';
$lang['authtempfail'] = 'L\'autenticació d\'usuaris està desactivada temporalment. Si la situació persistix, per favor, informe a l\'administrador del Wiki.';
$lang['i_chooselang'] = 'Trie l\'idioma';
$lang['i_installer'] = 'Instalador de DokuWiki';
diff --git a/inc/lang/ca/lang.php b/inc/lang/ca/lang.php
index 1d297a1b1..00d28083c 100644
--- a/inc/lang/ca/lang.php
+++ b/inc/lang/ca/lang.php
@@ -48,7 +48,7 @@ $lang['btn_draftdel'] = 'Suprimeix esborrany';
$lang['btn_revert'] = 'Restaura';
$lang['btn_register'] = 'Registra\'m';
$lang['btn_apply'] = 'Aplica';
-$lang['loggedinas'] = 'Heu entrat com';
+$lang['loggedinas'] = 'Heu entrat com:';
$lang['user'] = 'Nom d\'usuari';
$lang['pass'] = 'Contrasenya';
$lang['newpass'] = 'Nova contrasenya';
@@ -87,8 +87,8 @@ $lang['license'] = 'Excepte on es digui una altra cosa, el conting
$lang['licenseok'] = 'Nota. En editar aquesta pàgina esteu acceptant que el vostre contingut estigui subjecte a la llicència següent:';
$lang['searchmedia'] = 'Cerca pel nom de fitxer';
$lang['searchmedia_in'] = 'Cerca en: %s';
-$lang['txt_upload'] = 'Trieu el fitxer que voleu penjar';
-$lang['txt_filename'] = 'Introduïu el nom wiki (opcional)';
+$lang['txt_upload'] = 'Trieu el fitxer que voleu penjar:';
+$lang['txt_filename'] = 'Introduïu el nom wiki (opcional):';
$lang['txt_overwrt'] = 'Sobreescriu el fitxer actual';
$lang['maxuploadsize'] = 'Puja com a màxim %s per arxiu.';
$lang['lockedby'] = 'Actualment blocat per:';
@@ -174,9 +174,9 @@ $lang['diff_type'] = 'Veieu les diferències:';
$lang['diff_inline'] = 'En línia';
$lang['diff_side'] = 'Un al costat de l\'altre';
$lang['line'] = 'Línia';
-$lang['breadcrumb'] = 'Camí';
-$lang['youarehere'] = 'Sou aquí';
-$lang['lastmod'] = 'Darrera modificació';
+$lang['breadcrumb'] = 'Camí:';
+$lang['youarehere'] = 'Sou aquí:';
+$lang['lastmod'] = 'Darrera modificació:';
$lang['by'] = 'per';
$lang['deleted'] = 'suprimit';
$lang['created'] = 'creat';
@@ -229,18 +229,18 @@ $lang['metaedit'] = 'Edita metadades';
$lang['metasaveerr'] = 'No s\'han pogut escriure les metadades';
$lang['metasaveok'] = 'S\'han desat les metadades';
$lang['btn_img_backto'] = 'Torna a %s';
-$lang['img_title'] = 'Títol';
-$lang['img_caption'] = 'Peu d\'imatge';
-$lang['img_date'] = 'Data';
-$lang['img_fname'] = 'Nom de fitxer';
-$lang['img_fsize'] = 'Mida';
-$lang['img_artist'] = 'Fotògraf';
-$lang['img_copyr'] = 'Copyright';
-$lang['img_format'] = 'Format';
-$lang['img_camera'] = 'Càmera';
-$lang['img_keywords'] = 'Paraules clau';
-$lang['img_width'] = 'Ample';
-$lang['img_height'] = 'Alçada';
+$lang['img_title'] = 'Títol:';
+$lang['img_caption'] = 'Peu d\'imatge:';
+$lang['img_date'] = 'Data:';
+$lang['img_fname'] = 'Nom de fitxer:';
+$lang['img_fsize'] = 'Mida:';
+$lang['img_artist'] = 'Fotògraf:';
+$lang['img_copyr'] = 'Copyright:';
+$lang['img_format'] = 'Format:';
+$lang['img_camera'] = 'Càmera:';
+$lang['img_keywords'] = 'Paraules clau:';
+$lang['img_width'] = 'Ample:';
+$lang['img_height'] = 'Alçada:';
$lang['subscr_subscribe_success'] = 'S\'ha afegit %s a la llista de subscripcions per %s';
$lang['subscr_subscribe_error'] = 'Hi ha hagut un error a l\'afegir %s a la llista per %s';
$lang['subscr_subscribe_noaddress'] = 'No hi ha cap adreça associada pel vostre nom d\'usuari, no podeu ser afegit a la llista de subscripcions';
diff --git a/inc/lang/cs/lang.php b/inc/lang/cs/lang.php
index a491c1533..fa0a65044 100644
--- a/inc/lang/cs/lang.php
+++ b/inc/lang/cs/lang.php
@@ -15,8 +15,8 @@
* @author Jakub A. Těšínský (j@kub.cz)
* @author mkucera66@seznam.cz
* @author Zbyněk Křivka <krivka@fit.vutbr.cz>
- * @author Gerrit Uitslag <klapinklapin@gmail.com>
* @author Petr Klíma <qaxi@seznam.cz>
+ * @author Radovan Buroň <radovan@buron.cz>
*/
$lang['encoding'] = 'utf-8';
$lang['direction'] = 'ltr';
@@ -61,7 +61,9 @@ $lang['btn_register'] = 'Registrovat';
$lang['btn_apply'] = 'Použít';
$lang['btn_media'] = 'Správa médií';
$lang['btn_deleteuser'] = 'Odstranit můj účet';
-$lang['loggedinas'] = 'Přihlášen(a) jako';
+$lang['btn_img_backto'] = 'Zpět na %s';
+$lang['btn_mediaManager'] = 'Zobrazit ve správě médií';
+$lang['loggedinas'] = 'Přihlášen(a) jako:';
$lang['user'] = 'Uživatelské jméno';
$lang['pass'] = 'Heslo';
$lang['newpass'] = 'Nové heslo';
@@ -106,8 +108,8 @@ $lang['license'] = 'Kromě míst, kde je explicitně uvedeno jinak
$lang['licenseok'] = 'Poznámka: Tím, že editujete tuto stránku, souhlasíte, aby váš obsah byl licencován pod následující licencí:';
$lang['searchmedia'] = 'Hledat jméno souboru:';
$lang['searchmedia_in'] = 'Hledat v %s';
-$lang['txt_upload'] = 'Vyberte soubor jako přílohu';
-$lang['txt_filename'] = 'Wiki jméno (volitelné)';
+$lang['txt_upload'] = 'Vyberte soubor jako přílohu:';
+$lang['txt_filename'] = 'Wiki jméno (volitelné):';
$lang['txt_overwrt'] = 'Přepsat existující soubor';
$lang['maxuploadsize'] = 'Max. velikost souboru %s';
$lang['lockedby'] = 'Právě zamknuto:';
@@ -193,9 +195,9 @@ $lang['diff_type'] = 'Zobrazit rozdíly:';
$lang['diff_inline'] = 'Vložené';
$lang['diff_side'] = 'Přidané';
$lang['line'] = 'Řádek';
-$lang['breadcrumb'] = 'Historie';
-$lang['youarehere'] = 'Umístění';
-$lang['lastmod'] = 'Poslední úprava';
+$lang['breadcrumb'] = 'Historie:';
+$lang['youarehere'] = 'Umístění:';
+$lang['lastmod'] = 'Poslední úprava:';
$lang['by'] = 'autor:';
$lang['deleted'] = 'odstraněno';
$lang['created'] = 'vytvořeno';
@@ -248,20 +250,18 @@ $lang['admin_register'] = 'Přidat nového uživatele';
$lang['metaedit'] = 'Upravit Metadata';
$lang['metasaveerr'] = 'Chyba při zápisu metadat';
$lang['metasaveok'] = 'Metadata uložena';
-$lang['btn_img_backto'] = 'Zpět na %s';
-$lang['img_title'] = 'Titulek';
-$lang['img_caption'] = 'Popis';
-$lang['img_date'] = 'Datum';
-$lang['img_fname'] = 'Jméno souboru';
-$lang['img_fsize'] = 'Velikost';
-$lang['img_artist'] = 'Autor fotografie';
-$lang['img_copyr'] = 'Copyright';
-$lang['img_format'] = 'Formát';
-$lang['img_camera'] = 'Typ fotoaparátu';
-$lang['img_keywords'] = 'Klíčová slova';
-$lang['img_width'] = 'Šířka';
-$lang['img_height'] = 'Výška';
-$lang['btn_mediaManager'] = 'Zobrazit ve správě médií';
+$lang['img_title'] = 'Titulek:';
+$lang['img_caption'] = 'Popis:';
+$lang['img_date'] = 'Datum:';
+$lang['img_fname'] = 'Jméno souboru:';
+$lang['img_fsize'] = 'Velikost:';
+$lang['img_artist'] = 'Autor fotografie:';
+$lang['img_copyr'] = 'Copyright:';
+$lang['img_format'] = 'Formát:';
+$lang['img_camera'] = 'Typ fotoaparátu:';
+$lang['img_keywords'] = 'Klíčová slova:';
+$lang['img_width'] = 'Šířka:';
+$lang['img_height'] = 'Výška:';
$lang['subscr_subscribe_success'] = '%s byl přihlášen do seznamu odběratelů %s';
$lang['subscr_subscribe_error'] = 'Došlo k chybě při přihlašování %s do seznamu odběratelů %s';
$lang['subscr_subscribe_noaddress'] = 'K Vašemu loginu neexistuje žádná adresa, nemohl jste být přihlášen do seznamu odběratelů.';
diff --git a/inc/lang/da/lang.php b/inc/lang/da/lang.php
index bdf882ba7..3f06bf758 100644
--- a/inc/lang/da/lang.php
+++ b/inc/lang/da/lang.php
@@ -61,7 +61,7 @@ $lang['btn_register'] = 'Registrér';
$lang['btn_apply'] = 'Anvend';
$lang['btn_media'] = 'Media Manager';
$lang['btn_deleteuser'] = 'Fjern Min Konto';
-$lang['loggedinas'] = 'Logget ind som';
+$lang['loggedinas'] = 'Logget ind som:';
$lang['user'] = 'Brugernavn';
$lang['pass'] = 'Adgangskode';
$lang['newpass'] = 'Ny adgangskode';
@@ -105,12 +105,12 @@ $lang['license'] = 'Med mindre andet angivet, vil indhold på denn
$lang['licenseok'] = 'Note: ved at ændre denne side, acceptere du at dit indhold bliver frigivet under følgende licens:';
$lang['searchmedia'] = 'Søg filnavn';
$lang['searchmedia_in'] = 'Søg i %s';
-$lang['txt_upload'] = 'Vælg den fil der skal overføres';
-$lang['txt_filename'] = 'Indtast wikinavn (valgfrit)';
+$lang['txt_upload'] = 'Vælg den fil der skal overføres:';
+$lang['txt_filename'] = 'Indtast wikinavn (valgfrit):';
$lang['txt_overwrt'] = 'Overskriv eksisterende fil';
$lang['maxuploadsize'] = 'Upload max. %s pr. fil.';
-$lang['lockedby'] = 'Midlertidig låst af';
-$lang['lockexpire'] = 'Lås udløber kl.';
+$lang['lockedby'] = 'Midlertidig låst af:';
+$lang['lockexpire'] = 'Lås udløber kl:.';
$lang['js']['willexpire'] = 'Din lås på dette dokument udløber om et minut.\nTryk på Forhåndsvisning-knappen for at undgå konflikter.';
$lang['js']['notsavedyet'] = 'Ugemte ændringer vil blive mistet
Fortsæt alligevel?';
@@ -191,9 +191,9 @@ $lang['diff_type'] = 'Vis forskelle:';
$lang['diff_inline'] = 'Indeni';
$lang['diff_side'] = 'Side ved Side';
$lang['line'] = 'Linje';
-$lang['breadcrumb'] = 'Sti';
-$lang['youarehere'] = 'Du er her';
-$lang['lastmod'] = 'Sidst ændret';
+$lang['breadcrumb'] = 'Sti:';
+$lang['youarehere'] = 'Du er her:';
+$lang['lastmod'] = 'Sidst ændret:';
$lang['by'] = 'af';
$lang['deleted'] = 'slettet';
$lang['created'] = 'oprettet';
@@ -247,18 +247,18 @@ $lang['metaedit'] = 'Rediger metadata';
$lang['metasaveerr'] = 'Skrivning af metadata fejlede';
$lang['metasaveok'] = 'Metadata gemt';
$lang['btn_img_backto'] = 'Tilbage til %s';
-$lang['img_title'] = 'Titel';
-$lang['img_caption'] = 'Billedtekst';
-$lang['img_date'] = 'Dato';
-$lang['img_fname'] = 'Filnavn';
-$lang['img_fsize'] = 'Størrelse';
-$lang['img_artist'] = 'Fotograf';
-$lang['img_copyr'] = 'Ophavsret';
-$lang['img_format'] = 'Format';
-$lang['img_camera'] = 'Kamera';
-$lang['img_keywords'] = 'Emneord';
-$lang['img_width'] = 'Bredde';
-$lang['img_height'] = 'Højde';
+$lang['img_title'] = 'Titel:';
+$lang['img_caption'] = 'Billedtekst:';
+$lang['img_date'] = 'Dato:';
+$lang['img_fname'] = 'Filnavn:';
+$lang['img_fsize'] = 'Størrelse:';
+$lang['img_artist'] = 'Fotograf:';
+$lang['img_copyr'] = 'Ophavsret:';
+$lang['img_format'] = 'Format:';
+$lang['img_camera'] = 'Kamera:';
+$lang['img_keywords'] = 'Emneord:';
+$lang['img_width'] = 'Bredde:';
+$lang['img_height'] = 'Højde:';
$lang['btn_mediaManager'] = 'Vis i Media Manager';
$lang['subscr_subscribe_success'] = 'Tilføjede %s til abonnement listen for %s';
$lang['subscr_subscribe_error'] = 'Fejl ved tilføjelse af %s til abonnement listen for %s';
diff --git a/inc/lang/de-informal/lang.php b/inc/lang/de-informal/lang.php
index 2e2e04149..c81109580 100644
--- a/inc/lang/de-informal/lang.php
+++ b/inc/lang/de-informal/lang.php
@@ -66,7 +66,7 @@ $lang['btn_register'] = 'Registrieren';
$lang['btn_apply'] = 'Übernehmen';
$lang['btn_media'] = 'Medien-Manager';
$lang['btn_deleteuser'] = 'Benutzerprofil löschen';
-$lang['loggedinas'] = 'Angemeldet als';
+$lang['loggedinas'] = 'Angemeldet als:';
$lang['user'] = 'Benutzername';
$lang['pass'] = 'Passwort';
$lang['newpass'] = 'Neues Passwort';
@@ -111,12 +111,12 @@ $lang['license'] = 'Falls nicht anders bezeichnet, ist der Inhalt
$lang['licenseok'] = 'Hinweis: Durch das Bearbeiten dieser Seite gibst du dein Einverständnis, dass dein Inhalt unter der folgenden Lizenz veröffentlicht wird:';
$lang['searchmedia'] = 'Suche nach Datei:';
$lang['searchmedia_in'] = 'Suche in %s';
-$lang['txt_upload'] = 'Datei zum Hochladen auswählen';
-$lang['txt_filename'] = 'Hochladen als (optional)';
+$lang['txt_upload'] = 'Datei zum Hochladen auswählen:';
+$lang['txt_filename'] = 'Hochladen als (optional):';
$lang['txt_overwrt'] = 'Bestehende Datei überschreiben';
$lang['maxuploadsize'] = 'Max. %s pro Datei-Upload.';
-$lang['lockedby'] = 'Momentan gesperrt von';
-$lang['lockexpire'] = 'Sperre läuft ab am';
+$lang['lockedby'] = 'Momentan gesperrt von:';
+$lang['lockexpire'] = 'Sperre läuft ab am:';
$lang['js']['willexpire'] = 'Die Sperre zur Bearbeitung dieser Seite läuft in einer Minute ab.\nUm Bearbeitungskonflikte zu vermeiden, solltest du sie durch einen Klick auf den Vorschau-Knopf verlängern.';
$lang['js']['notsavedyet'] = 'Nicht gespeicherte Änderungen gehen verloren!';
$lang['js']['searchmedia'] = 'Suche nach Dateien';
@@ -196,9 +196,9 @@ $lang['diff_type'] = 'Unterschiede anzeigen:';
$lang['diff_inline'] = 'Inline';
$lang['diff_side'] = 'Side by Side';
$lang['line'] = 'Zeile';
-$lang['breadcrumb'] = 'Zuletzt angesehen';
-$lang['youarehere'] = 'Du befindest dich hier';
-$lang['lastmod'] = 'Zuletzt geändert';
+$lang['breadcrumb'] = 'Zuletzt angesehen:';
+$lang['youarehere'] = 'Du befindest dich hier:';
+$lang['lastmod'] = 'Zuletzt geändert:';
$lang['by'] = 'von';
$lang['deleted'] = 'gelöscht';
$lang['created'] = 'angelegt';
@@ -252,18 +252,18 @@ $lang['metaedit'] = 'Metadaten bearbeiten';
$lang['metasaveerr'] = 'Die Metadaten konnten nicht gesichert werden';
$lang['metasaveok'] = 'Metadaten gesichert';
$lang['btn_img_backto'] = 'Zurück zu %s';
-$lang['img_title'] = 'Titel';
-$lang['img_caption'] = 'Bildunterschrift';
-$lang['img_date'] = 'Datum';
-$lang['img_fname'] = 'Dateiname';
-$lang['img_fsize'] = 'Größe';
-$lang['img_artist'] = 'Fotograf';
-$lang['img_copyr'] = 'Copyright';
-$lang['img_format'] = 'Format';
-$lang['img_camera'] = 'Kamera';
-$lang['img_keywords'] = 'Schlagwörter';
-$lang['img_width'] = 'Breite';
-$lang['img_height'] = 'Höhe';
+$lang['img_title'] = 'Titel:';
+$lang['img_caption'] = 'Bildunterschrift:';
+$lang['img_date'] = 'Datum:';
+$lang['img_fname'] = 'Dateiname:';
+$lang['img_fsize'] = 'Größe:';
+$lang['img_artist'] = 'Fotograf:';
+$lang['img_copyr'] = 'Copyright:';
+$lang['img_format'] = 'Format:';
+$lang['img_camera'] = 'Kamera:';
+$lang['img_keywords'] = 'Schlagwörter:';
+$lang['img_width'] = 'Breite:';
+$lang['img_height'] = 'Höhe:';
$lang['btn_mediaManager'] = 'Im Medien-Manager anzeigen';
$lang['subscr_subscribe_success'] = 'Die Seite %s wurde zur Abonnementliste von %s hinzugefügt';
$lang['subscr_subscribe_error'] = 'Fehler beim Hinzufügen von %s zur Abonnementliste von %s';
diff --git a/inc/lang/de/lang.php b/inc/lang/de/lang.php
index 762a55e53..12b7db396 100644
--- a/inc/lang/de/lang.php
+++ b/inc/lang/de/lang.php
@@ -72,7 +72,7 @@ $lang['btn_media'] = 'Medien-Manager';
$lang['btn_deleteuser'] = 'Benutzerprofil löschen';
$lang['btn_img_backto'] = 'Zurück zu %s';
$lang['btn_mediaManager'] = 'Im Medien-Manager anzeigen';
-$lang['loggedinas'] = 'Angemeldet als';
+$lang['loggedinas'] = 'Angemeldet als:';
$lang['user'] = 'Benutzername';
$lang['pass'] = 'Passwort';
$lang['newpass'] = 'Neues Passwort';
@@ -117,12 +117,12 @@ $lang['license'] = 'Falls nicht anders bezeichnet, ist der Inhalt
$lang['licenseok'] = 'Hinweis: Durch das Bearbeiten dieser Seite geben Sie Ihr Einverständnis, dass Ihr Inhalt unter der folgenden Lizenz veröffentlicht wird:';
$lang['searchmedia'] = 'Suche Dateinamen:';
$lang['searchmedia_in'] = 'Suche in %s';
-$lang['txt_upload'] = 'Datei zum Hochladen auswählen';
-$lang['txt_filename'] = 'Hochladen als (optional)';
+$lang['txt_upload'] = 'Datei zum Hochladen auswählen:';
+$lang['txt_filename'] = 'Hochladen als (optional):';
$lang['txt_overwrt'] = 'Bestehende Datei überschreiben';
$lang['maxuploadsize'] = 'Max. %s pro Datei-Upload.';
-$lang['lockedby'] = 'Momentan gesperrt von';
-$lang['lockexpire'] = 'Sperre läuft ab am';
+$lang['lockedby'] = 'Momentan gesperrt von:';
+$lang['lockexpire'] = 'Sperre läuft ab am:';
$lang['js']['willexpire'] = 'Die Sperre zur Bearbeitung dieser Seite läuft in einer Minute ab.\nUm Bearbeitungskonflikte zu vermeiden, sollten Sie sie durch einen Klick auf den Vorschau-Knopf verlängern.';
$lang['js']['notsavedyet'] = 'Nicht gespeicherte Änderungen gehen verloren!';
$lang['js']['searchmedia'] = 'Suche Dateien';
@@ -205,9 +205,9 @@ $lang['diffprevrev'] = 'Vorhergehende Überarbeitung';
$lang['diffnextrev'] = 'Nächste Überarbeitung';
$lang['difflastrev'] = 'Letzte Überarbeitung';
$lang['line'] = 'Zeile';
-$lang['breadcrumb'] = 'Zuletzt angesehen';
-$lang['youarehere'] = 'Sie befinden sich hier';
-$lang['lastmod'] = 'Zuletzt geändert';
+$lang['breadcrumb'] = 'Zuletzt angesehen:';
+$lang['youarehere'] = 'Sie befinden sich hier:';
+$lang['lastmod'] = 'Zuletzt geändert:';
$lang['by'] = 'von';
$lang['deleted'] = 'gelöscht';
$lang['created'] = 'angelegt';
@@ -260,18 +260,18 @@ $lang['admin_register'] = 'Neuen Benutzer anmelden';
$lang['metaedit'] = 'Metadaten bearbeiten';
$lang['metasaveerr'] = 'Die Metadaten konnten nicht gesichert werden';
$lang['metasaveok'] = 'Metadaten gesichert';
-$lang['img_title'] = 'Titel';
-$lang['img_caption'] = 'Bildunterschrift';
-$lang['img_date'] = 'Datum';
-$lang['img_fname'] = 'Dateiname';
-$lang['img_fsize'] = 'Größe';
-$lang['img_artist'] = 'FotografIn';
-$lang['img_copyr'] = 'Copyright';
-$lang['img_format'] = 'Format';
-$lang['img_camera'] = 'Kamera';
-$lang['img_keywords'] = 'Schlagwörter';
-$lang['img_width'] = 'Breite';
-$lang['img_height'] = 'Höhe';
+$lang['img_title'] = 'Titel:';
+$lang['img_caption'] = 'Bildunterschrift:';
+$lang['img_date'] = 'Datum:';
+$lang['img_fname'] = 'Dateiname:';
+$lang['img_fsize'] = 'Größe:';
+$lang['img_artist'] = 'FotografIn:';
+$lang['img_copyr'] = 'Copyright:';
+$lang['img_format'] = 'Format:';
+$lang['img_camera'] = 'Kamera:';
+$lang['img_keywords'] = 'Schlagwörter:';
+$lang['img_width'] = 'Breite:';
+$lang['img_height'] = 'Höhe:';
$lang['subscr_subscribe_success'] = '%s hat nun Änderungen der Seite %s abonniert';
$lang['subscr_subscribe_error'] = '%s kann die Änderungen der Seite %s nicht abonnieren';
$lang['subscr_subscribe_noaddress'] = 'Weil Ihre E-Mail-Adresse fehlt, können Sie das Thema nicht abonnieren';
diff --git a/inc/lang/el/lang.php b/inc/lang/el/lang.php
index d97721cdb..e5371c9f3 100644
--- a/inc/lang/el/lang.php
+++ b/inc/lang/el/lang.php
@@ -56,7 +56,7 @@ $lang['btn_register'] = 'Εγγραφή';
$lang['btn_apply'] = 'Εφαρμογή';
$lang['btn_media'] = 'Διαχειριστής πολυμέσων';
$lang['btn_deleteuser'] = 'Αφαίρεσε τον λογαριασμό μου';
-$lang['loggedinas'] = 'Συνδεδεμένος ως';
+$lang['loggedinas'] = 'Συνδεδεμένος ως:';
$lang['user'] = 'Όνομα χρήστη';
$lang['pass'] = 'Κωδικός';
$lang['newpass'] = 'Νέος κωδικός';
@@ -100,12 +100,12 @@ $lang['license'] = 'Εκτός εάν αναφέρεται δια
$lang['licenseok'] = 'Σημείωση: Τροποποιώντας αυτή την σελίδα αποδέχεστε την διάθεση του υλικού σας σύμφωνα με την ακόλουθη άδεια:';
$lang['searchmedia'] = 'Αναζήτηση αρχείου:';
$lang['searchmedia_in'] = 'Αναζήτηση σε %s';
-$lang['txt_upload'] = 'Επιλέξτε αρχείο για φόρτωση';
-$lang['txt_filename'] = 'Επιλέξτε νέο όνομα αρχείου (προαιρετικό)';
+$lang['txt_upload'] = 'Επιλέξτε αρχείο για φόρτωση:';
+$lang['txt_filename'] = 'Επιλέξτε νέο όνομα αρχείου (προαιρετικό):';
$lang['txt_overwrt'] = 'Αντικατάσταση υπάρχοντος αρχείου';
$lang['maxuploadsize'] = 'Μέγιστο μέγεθος αρχείου: %s.';
-$lang['lockedby'] = 'Προσωρινά κλειδωμένο από';
-$lang['lockexpire'] = 'Το κλείδωμα λήγει στις';
+$lang['lockedby'] = 'Προσωρινά κλειδωμένο από:';
+$lang['lockexpire'] = 'Το κλείδωμα λήγει στις:';
$lang['js']['willexpire'] = 'Το κλείδωμά σας για την επεξεργασία αυτής της σελίδας θα λήξει σε ένα λεπτό.\n Για να το ανανεώσετε χρησιμοποιήστε την Προεπισκόπηση.';
$lang['js']['notsavedyet'] = 'Οι μη αποθηκευμένες αλλαγές θα χαθούν.
Θέλετε να συνεχίσετε;';
@@ -186,9 +186,9 @@ $lang['diff_type'] = 'Προβολή διαφορών:';
$lang['diff_inline'] = 'Σε σειρά';
$lang['diff_side'] = 'Δίπλα-δίπλα';
$lang['line'] = 'Γραμμή';
-$lang['breadcrumb'] = 'Ιστορικό';
-$lang['youarehere'] = 'Είστε εδώ';
-$lang['lastmod'] = 'Τελευταία τροποποίηση';
+$lang['breadcrumb'] = 'Ιστορικό:';
+$lang['youarehere'] = 'Είστε εδώ:';
+$lang['lastmod'] = 'Τελευταία τροποποίηση:';
$lang['by'] = 'από';
$lang['deleted'] = 'διαγράφηκε';
$lang['created'] = 'δημιουργήθηκε';
@@ -242,18 +242,18 @@ $lang['metaedit'] = 'Τροποποίηση metadata';
$lang['metasaveerr'] = 'Η αποθήκευση των metadata απέτυχε';
$lang['metasaveok'] = 'Επιτυχής αποθήκευση metadata';
$lang['btn_img_backto'] = 'Επιστροφή σε %s';
-$lang['img_title'] = 'Τίτλος';
-$lang['img_caption'] = 'Λεζάντα';
-$lang['img_date'] = 'Ημερομηνία';
-$lang['img_fname'] = 'Όνομα αρχείου';
-$lang['img_fsize'] = 'Μέγεθος';
-$lang['img_artist'] = 'Καλλιτέχνης';
-$lang['img_copyr'] = 'Copyright';
-$lang['img_format'] = 'Format';
-$lang['img_camera'] = 'Camera';
-$lang['img_keywords'] = 'Λέξεις-κλειδιά';
-$lang['img_width'] = 'Πλάτος';
-$lang['img_height'] = 'Ύψος';
+$lang['img_title'] = 'Τίτλος:';
+$lang['img_caption'] = 'Λεζάντα:';
+$lang['img_date'] = 'Ημερομηνία:';
+$lang['img_fname'] = 'Όνομα αρχείου:';
+$lang['img_fsize'] = 'Μέγεθος:';
+$lang['img_artist'] = 'Καλλιτέχνης:';
+$lang['img_copyr'] = 'Copyright:';
+$lang['img_format'] = 'Format:';
+$lang['img_camera'] = 'Camera:';
+$lang['img_keywords'] = 'Λέξεις-κλειδιά:';
+$lang['img_width'] = 'Πλάτος:';
+$lang['img_height'] = 'Ύψος:';
$lang['btn_mediaManager'] = 'Εμφάνιση στον διαχειριστή πολυμέσων';
$lang['subscr_subscribe_success'] = 'Ο/η %s προστέθηκε στην λίστα ειδοποιήσεων για το %s';
$lang['subscr_subscribe_error'] = 'Σφάλμα κατά την προσθήκη του/της %s στην λίστα ειδοποιήσεων για το %s';
diff --git a/inc/lang/en/lang.php b/inc/lang/en/lang.php
index 592289185..9c1e5dacd 100644
--- a/inc/lang/en/lang.php
+++ b/inc/lang/en/lang.php
@@ -55,7 +55,7 @@ $lang['btn_deleteuser'] = 'Remove My Account';
$lang['btn_img_backto'] = 'Back to %s';
$lang['btn_mediaManager'] = 'View in media manager';
-$lang['loggedinas'] = 'Logged in as';
+$lang['loggedinas'] = 'Logged in as:';
$lang['user'] = 'Username';
$lang['pass'] = 'Password';
$lang['newpass'] = 'New password';
@@ -105,12 +105,12 @@ $lang['licenseok'] = 'Note: By editing this page you agree to licens
$lang['searchmedia'] = 'Search file name:';
$lang['searchmedia_in'] = 'Search in %s';
-$lang['txt_upload'] = 'Select file to upload';
-$lang['txt_filename'] = 'Upload as (optional)';
+$lang['txt_upload'] = 'Select file to upload:';
+$lang['txt_filename'] = 'Upload as (optional):';
$lang['txt_overwrt'] = 'Overwrite existing file';
$lang['maxuploadsize'] = 'Upload max. %s per file.';
-$lang['lockedby'] = 'Currently locked by';
-$lang['lockexpire'] = 'Lock expires at';
+$lang['lockedby'] = 'Currently locked by:';
+$lang['lockexpire'] = 'Lock expires at:';
$lang['js']['willexpire'] = 'Your lock for editing this page is about to expire in a minute.\nTo avoid conflicts use the preview button to reset the locktimer.';
$lang['js']['notsavedyet'] = 'Unsaved changes will be lost.';
@@ -199,9 +199,9 @@ $lang['difflastrev'] = 'Last revision';
$lang['diffbothprevrev'] = 'Both sides previous revision';
$lang['diffbothnextrev'] = 'Both sides next revision';
$lang['line'] = 'Line';
-$lang['breadcrumb'] = 'Trace';
-$lang['youarehere'] = 'You are here';
-$lang['lastmod'] = 'Last modified';
+$lang['breadcrumb'] = 'Trace:';
+$lang['youarehere'] = 'You are here:';
+$lang['lastmod'] = 'Last modified:';
$lang['by'] = 'by';
$lang['deleted'] = 'removed';
$lang['created'] = 'created';
@@ -260,18 +260,18 @@ $lang['admin_register'] = 'Add new user';
$lang['metaedit'] = 'Edit Metadata';
$lang['metasaveerr'] = 'Writing metadata failed';
$lang['metasaveok'] = 'Metadata saved';
-$lang['img_title'] = 'Title';
-$lang['img_caption'] = 'Caption';
-$lang['img_date'] = 'Date';
-$lang['img_fname'] = 'Filename';
-$lang['img_fsize'] = 'Size';
-$lang['img_artist'] = 'Photographer';
-$lang['img_copyr'] = 'Copyright';
-$lang['img_format'] = 'Format';
-$lang['img_camera'] = 'Camera';
-$lang['img_keywords'] = 'Keywords';
-$lang['img_width'] = 'Width';
-$lang['img_height'] = 'Height';
+$lang['img_title'] = 'Title:';
+$lang['img_caption'] = 'Caption:';
+$lang['img_date'] = 'Date:';
+$lang['img_fname'] = 'Filename:';
+$lang['img_fsize'] = 'Size:';
+$lang['img_artist'] = 'Photographer:';
+$lang['img_copyr'] = 'Copyright:';
+$lang['img_format'] = 'Format:';
+$lang['img_camera'] = 'Camera:';
+$lang['img_keywords'] = 'Keywords:';
+$lang['img_width'] = 'Width:';
+$lang['img_height'] = 'Height:';
$lang['subscr_subscribe_success'] = 'Added %s to subscription list for %s';
$lang['subscr_subscribe_error'] = 'Error adding %s to subscription list for %s';
@@ -307,6 +307,7 @@ $lang['i_modified'] = 'For security reasons this script will only wor
<a href="http://dokuwiki.org/install">Dokuwiki installation instructions</a>';
$lang['i_funcna'] = 'PHP function <code>%s</code> is not available. Maybe your hosting provider disabled it for some reason?';
$lang['i_phpver'] = 'Your PHP version <code>%s</code> is lower than the needed <code>%s</code>. You need to upgrade your PHP install.';
+$lang['i_mbfuncoverload'] = 'mbstring.func_overload must be disabled in php.ini to run DokuWiki.';
$lang['i_permfail'] = '<code>%s</code> is not writable by DokuWiki. You need to fix the permission settings of this directory!';
$lang['i_confexists'] = '<code>%s</code> already exists';
$lang['i_writeerr'] = 'Unable to create <code>%s</code>. You will need to check directory/file permissions and create the file manually.';
diff --git a/inc/lang/eo/lang.php b/inc/lang/eo/lang.php
index 4a4a52cac..f81de7fa1 100644
--- a/inc/lang/eo/lang.php
+++ b/inc/lang/eo/lang.php
@@ -56,7 +56,7 @@ $lang['btn_media'] = 'Medio-administrilo';
$lang['btn_deleteuser'] = 'Forigi mian konton';
$lang['btn_img_backto'] = 'Iri reen al %s';
$lang['btn_mediaManager'] = 'Rigardi en aŭdvidaĵ-administrilo';
-$lang['loggedinas'] = 'Ensalutinta kiel';
+$lang['loggedinas'] = 'Ensalutinta kiel:';
$lang['user'] = 'Uzant-nomo';
$lang['pass'] = 'Pasvorto';
$lang['newpass'] = 'Nova pasvorto';
@@ -101,12 +101,12 @@ $lang['license'] = 'Krom kie rekte indikite, enhavo de tiu ĉi vik
$lang['licenseok'] = 'Rimarku: redaktante tiun ĉi paĝon vi konsentas publikigi vian enhavon laŭ la jena permesilo:';
$lang['searchmedia'] = 'Serĉi dosiernomon:';
$lang['searchmedia_in'] = 'Serĉi en %s';
-$lang['txt_upload'] = 'Elektu dosieron por alŝuti';
-$lang['txt_filename'] = 'Alŝuti kiel (laŭvole)';
+$lang['txt_upload'] = 'Elektu dosieron por alŝuti:';
+$lang['txt_filename'] = 'Alŝuti kiel (laŭvole):';
$lang['txt_overwrt'] = 'Anstataŭigi ekzistantan dosieron';
$lang['maxuploadsize'] = 'Alŝuto maks. %s po dosiero.';
-$lang['lockedby'] = 'Nune ŝlosita de';
-$lang['lockexpire'] = 'Ŝlosado ĉesos je';
+$lang['lockedby'] = 'Nune ŝlosita de:';
+$lang['lockexpire'] = 'Ŝlosado ĉesos je:';
$lang['js']['willexpire'] = 'Vi povos redakti ĉi tiun paĝon post unu minuto.\nSe vi volas nuligi tempokontrolon de la ŝlosado, premu la butonon "Antaŭrigardi".';
$lang['js']['notsavedyet'] = 'Ne konservitaj modifoj perdiĝos.
Ĉu vi certe volas daŭrigi la procezon?';
@@ -192,9 +192,9 @@ $lang['difflastrev'] = 'Lasta revizio';
$lang['diffbothprevrev'] = 'Sur ambaŭ flankoj antaŭa revizio';
$lang['diffbothnextrev'] = 'Sur ambaŭ flankoj sekva revizio';
$lang['line'] = 'Linio';
-$lang['breadcrumb'] = 'Paŝoj';
-$lang['youarehere'] = 'Vi estas ĉi tie';
-$lang['lastmod'] = 'Lastaj ŝanĝoj';
+$lang['breadcrumb'] = 'Paŝoj:';
+$lang['youarehere'] = 'Vi estas ĉi tie:';
+$lang['lastmod'] = 'Lastaj ŝanĝoj:';
$lang['by'] = 'de';
$lang['deleted'] = 'forigita';
$lang['created'] = 'kreita';
@@ -247,18 +247,18 @@ $lang['admin_register'] = 'Aldoni novan uzanton';
$lang['metaedit'] = 'Redakti metadatumaron';
$lang['metasaveerr'] = 'La konservo de metadatumaro malsukcesis';
$lang['metasaveok'] = 'La metadatumaro konserviĝis';
-$lang['img_title'] = 'Titolo';
-$lang['img_caption'] = 'Priskribo';
-$lang['img_date'] = 'Dato';
-$lang['img_fname'] = 'Dosiernomo';
-$lang['img_fsize'] = 'Grandeco';
-$lang['img_artist'] = 'Fotisto';
-$lang['img_copyr'] = 'Kopirajtoj';
-$lang['img_format'] = 'Formato';
-$lang['img_camera'] = 'Kamerao';
-$lang['img_keywords'] = 'Ŝlosilvortoj';
-$lang['img_width'] = 'Larĝeco';
-$lang['img_height'] = 'Alteco';
+$lang['img_title'] = 'Titolo:';
+$lang['img_caption'] = 'Priskribo:';
+$lang['img_date'] = 'Dato:';
+$lang['img_fname'] = 'Dosiernomo:';
+$lang['img_fsize'] = 'Grandeco:';
+$lang['img_artist'] = 'Fotisto:';
+$lang['img_copyr'] = 'Kopirajtoj:';
+$lang['img_format'] = 'Formato:';
+$lang['img_camera'] = 'Kamerao:';
+$lang['img_keywords'] = 'Ŝlosilvortoj:';
+$lang['img_width'] = 'Larĝeco:';
+$lang['img_height'] = 'Alteco:';
$lang['subscr_subscribe_success'] = 'Aldonis %s al la abonlisto por %s';
$lang['subscr_subscribe_error'] = 'Eraro dum aldono de %s al la abonlisto por %s';
$lang['subscr_subscribe_noaddress'] = 'Ne estas adreso ligita al via ensaluto, ne eblas aldoni vin al la abonlisto';
diff --git a/inc/lang/es/edit.txt b/inc/lang/es/edit.txt
index 55c3c1dc5..4ed253bb3 100644
--- a/inc/lang/es/edit.txt
+++ b/inc/lang/es/edit.txt
@@ -1,2 +1,2 @@
-Edita la página y pulsa ''Guardar''. Mira [[wiki:syntax]] para sintaxis Wiki. Por favor edita la página solo si puedes **mejorarla**. Si quieres testear algunas cosas aprende a dar tus primeros pasos en el [[playground:playground]].
+Edita la página y pulsa ''Guardar''. Vaya a [[wiki:syntax]] para ver la sintaxis del Wiki. Por favor edite la página solo si puedes **mejorarla**. Si quieres probar algo relacionado a la sintaxis, aprende a dar tus primeros pasos en el [[playground:playground]].
diff --git a/inc/lang/es/lang.php b/inc/lang/es/lang.php
index 9525a4c08..03cbd51d2 100644
--- a/inc/lang/es/lang.php
+++ b/inc/lang/es/lang.php
@@ -34,6 +34,8 @@
* @author Juan De La Cruz <juann.dlc@gmail.com>
* @author Fernando <fdiezala@gmail.com>
* @author Eloy <ej.perezgomez@gmail.com>
+ * @author Antonio Castilla <antoniocastilla@trazoide.com>
+ * @author Jonathan Hernández <me@jhalicea.com>
*/
$lang['encoding'] = 'utf-8';
$lang['direction'] = 'ltr';
@@ -43,13 +45,13 @@ $lang['singlequoteopening'] = '‘';
$lang['singlequoteclosing'] = '’';
$lang['apostrophe'] = '’';
$lang['btn_edit'] = 'Editar esta página';
-$lang['btn_source'] = 'Ver fuente';
+$lang['btn_source'] = 'Ver la fuente de esta página';
$lang['btn_show'] = 'Ver página';
$lang['btn_create'] = 'Crear esta página';
$lang['btn_search'] = 'Buscar';
$lang['btn_save'] = 'Guardar';
$lang['btn_preview'] = 'Previsualización';
-$lang['btn_top'] = 'Ir hasta arriba';
+$lang['btn_top'] = 'Volver arriba';
$lang['btn_newer'] = '<< más reciente';
$lang['btn_older'] = 'menos reciente >>';
$lang['btn_revs'] = 'Revisiones antiguas';
@@ -76,11 +78,11 @@ $lang['btn_draftdel'] = 'Eliminar borrador';
$lang['btn_revert'] = 'Restaurar';
$lang['btn_register'] = 'Registrarse';
$lang['btn_apply'] = 'Aplicar';
-$lang['btn_media'] = 'Gestor de ficheros';
+$lang['btn_media'] = 'Administrador de Ficheros';
$lang['btn_deleteuser'] = 'Elimina Mi Cuenta';
$lang['btn_img_backto'] = 'Volver a %s';
-$lang['btn_mediaManager'] = 'Ver en el Administrador de medios';
-$lang['loggedinas'] = 'Conectado como ';
+$lang['btn_mediaManager'] = 'Ver en el administrador de ficheros';
+$lang['loggedinas'] = 'Conectado como:';
$lang['user'] = 'Usuario';
$lang['pass'] = 'Contraseña';
$lang['newpass'] = 'Nueva contraseña';
@@ -121,16 +123,16 @@ $lang['resendpwdnouser'] = 'Lo siento, no se encuentra este usuario en nue
$lang['resendpwdbadauth'] = 'Lo siento, este código de autenticación no es válido. Asegúrate de haber usado el enlace de confirmación entero.';
$lang['resendpwdconfirm'] = 'Un enlace para confirmación ha sido enviado por correo electrónico.';
$lang['resendpwdsuccess'] = 'Tu nueva contraseña ha sido enviada por correo electrónico.';
-$lang['license'] = 'Excepto donde se indique lo contrario, el contenido de esta wiki se autoriza bajo la siguiente licencia:';
+$lang['license'] = 'Excepto donde se indique lo contrario, el contenido de este wiki esta bajo la siguiente licencia:';
$lang['licenseok'] = 'Nota: Al editar esta página, estás de acuerdo en autorizar su contenido bajo la siguiente licencia:';
$lang['searchmedia'] = 'Buscar archivo:';
$lang['searchmedia_in'] = 'Buscar en %s';
-$lang['txt_upload'] = 'Selecciona el archivo a subir';
-$lang['txt_filename'] = 'Subir como (opcional)';
+$lang['txt_upload'] = 'Selecciona el archivo a subir:';
+$lang['txt_filename'] = 'Subir como (opcional):';
$lang['txt_overwrt'] = 'Sobreescribir archivo existente';
$lang['maxuploadsize'] = 'Peso máximo de %s por archivo';
-$lang['lockedby'] = 'Actualmente bloqueado por';
-$lang['lockexpire'] = 'El bloqueo expira en';
+$lang['lockedby'] = 'Actualmente bloqueado por:';
+$lang['lockexpire'] = 'El bloqueo expira en:';
$lang['js']['willexpire'] = 'El bloqueo para la edición de esta página expira en un minuto.\nPAra prevenir conflictos uso el botón Previsualizar para restaurar el contador de bloqueo.';
$lang['js']['notsavedyet'] = 'Los cambios que no se han guardado se perderán.
¿Realmente quieres continuar?';
@@ -217,9 +219,9 @@ $lang['difflastrev'] = 'Última revisión';
$lang['diffbothprevrev'] = 'Ambos lados, revisión anterior';
$lang['diffbothnextrev'] = 'Ambos lados, revisión siguiente';
$lang['line'] = 'Línea';
-$lang['breadcrumb'] = 'Traza';
-$lang['youarehere'] = 'Estás aquí';
-$lang['lastmod'] = 'Última modificación';
+$lang['breadcrumb'] = 'Traza:';
+$lang['youarehere'] = 'Estás aquí:';
+$lang['lastmod'] = 'Última modificación:';
$lang['by'] = 'por';
$lang['deleted'] = 'borrado';
$lang['created'] = 'creado';
@@ -272,18 +274,18 @@ $lang['admin_register'] = 'Añadir nuevo usuario';
$lang['metaedit'] = 'Editar metadatos';
$lang['metasaveerr'] = 'La escritura de los metadatos ha fallado';
$lang['metasaveok'] = 'Los metadatos han sido guardados';
-$lang['img_title'] = 'Título';
-$lang['img_caption'] = 'Epígrafe';
-$lang['img_date'] = 'Fecha';
-$lang['img_fname'] = 'Nombre de fichero';
-$lang['img_fsize'] = 'Tamaño';
-$lang['img_artist'] = 'Fotógrafo';
-$lang['img_copyr'] = 'Copyright';
-$lang['img_format'] = 'Formato';
-$lang['img_camera'] = 'Cámara';
-$lang['img_keywords'] = 'Palabras claves';
-$lang['img_width'] = 'Ancho';
-$lang['img_height'] = 'Alto';
+$lang['img_title'] = 'Título:';
+$lang['img_caption'] = 'Información: ';
+$lang['img_date'] = 'Fecha:';
+$lang['img_fname'] = 'Nombre del archivo:';
+$lang['img_fsize'] = 'Tamaño:';
+$lang['img_artist'] = 'Fotógrafo:';
+$lang['img_copyr'] = 'Copyright:';
+$lang['img_format'] = 'Formato:';
+$lang['img_camera'] = 'Cámara:';
+$lang['img_keywords'] = 'Palabras claves:';
+$lang['img_width'] = 'Ancho:';
+$lang['img_height'] = 'Alto:';
$lang['subscr_subscribe_success'] = 'Se agregó %s a las listas de suscripción para %s';
$lang['subscr_subscribe_error'] = 'Error al agregar %s a las listas de suscripción para %s';
$lang['subscr_subscribe_noaddress'] = 'No hay dirección asociada con tu registro, no se puede agregarte a la lista de suscripción';
@@ -311,6 +313,7 @@ $lang['i_problems'] = 'El instalador encontró algunos problemas, se
$lang['i_modified'] = 'Por razones de seguridad este script sólo funcionará con una instalación nueva y no modificada de Dokuwiki. Usted debe extraer nuevamente los ficheros del paquete bajado, o bien consultar las <a href="http://dokuwiki.org/install">instrucciones de instalación de Dokuwiki</a> completas.';
$lang['i_funcna'] = 'La función de PHP <code>%s</code> no está disponible. ¿Tal vez su proveedor de hosting la ha deshabilitado por alguna razón?';
$lang['i_phpver'] = 'Su versión de PHP <code>%s</code> es menor que la necesaria <code>%s</code>. Es necesario que actualice su instalación de PHP.';
+$lang['i_mbfuncoverload'] = 'mbstring.func_overload se debe deshabilitar en php.ini para que funcione DokuWiki.';
$lang['i_permfail'] = 'DokuWili no puede escribir <code>%s</code>. ¡Es necesario establecer correctamente los permisos de este directorio!';
$lang['i_confexists'] = '<code>%s</code> ya existe';
$lang['i_writeerr'] = 'Imposible crear <code>%s</code>. Se necesita que usted controle los permisos del fichero/directorio y que cree el fichero manualmente.';
diff --git a/inc/lang/es/uploadmail.txt b/inc/lang/es/uploadmail.txt
index 9d2f980d3..cf70d00d4 100644
--- a/inc/lang/es/uploadmail.txt
+++ b/inc/lang/es/uploadmail.txt
@@ -1,6 +1,7 @@
-Se ha subido un fichero a tu DokuWuki. Estos son los detalles:
+Se ha subido un fichero a tu DokuWiki. Estos son los detalles:
Archivo : @MEDIA@
+Ultima revisión: @OLD@
Fecha : @DATE@
Navegador : @BROWSER@
Dirección IP : @IPADDRESS@
diff --git a/inc/lang/et/lang.php b/inc/lang/et/lang.php
index 49fc33e17..9ae06d7d2 100644
--- a/inc/lang/et/lang.php
+++ b/inc/lang/et/lang.php
@@ -54,7 +54,7 @@ $lang['btn_register'] = 'Registreeri uus kasutaja';
$lang['btn_apply'] = 'Kinnita';
$lang['btn_media'] = 'Meedia haldur';
$lang['btn_deleteuser'] = 'Eemalda minu konto';
-$lang['loggedinas'] = 'Logis sisse kui';
+$lang['loggedinas'] = 'Logis sisse kui:';
$lang['user'] = 'Kasutaja';
$lang['pass'] = 'Parool';
$lang['newpass'] = 'Uus parool';
@@ -101,12 +101,12 @@ $lang['license'] = 'Kus pole öeldud teisiti, kehtib selle wiki si
$lang['licenseok'] = 'Teadmiseks: Toimetades seda lehte, nõustud avaldama oma sisu järgmise lepingu alusel:';
$lang['searchmedia'] = 'Otsi failinime:';
$lang['searchmedia_in'] = 'Otsi %s';
-$lang['txt_upload'] = 'Vali fail, mida üles laadida';
-$lang['txt_filename'] = 'Siseta oma Wikinimi (soovituslik)';
+$lang['txt_upload'] = 'Vali fail, mida üles laadida:';
+$lang['txt_filename'] = 'Siseta oma Wikinimi (soovituslik):';
$lang['txt_overwrt'] = 'Kirjutan olemasoleva faili üle';
$lang['maxuploadsize'] = 'Üleslaadimiseks lubatu enim %s faili kohta.';
-$lang['lockedby'] = 'Praegu on selle lukustanud';
-$lang['lockexpire'] = 'Lukustus aegub';
+$lang['lockedby'] = 'Praegu on selle lukustanud:';
+$lang['lockexpire'] = 'Lukustus aegub:';
$lang['js']['willexpire'] = 'Teie lukustus selle lehe toimetamisele aegub umbes minuti pärast.\nIgasugu probleemide vältimiseks kasuta eelvaate nuppu, et lukustusarvesti taas tööle panna.';
$lang['js']['notsavedyet'] = 'Sul on seal salvestamata muudatusi, mis kohe kõige kaduva teed lähevad.
Kas Sa ikka tahad edasi liikuda?';
@@ -188,9 +188,9 @@ $lang['diff_type'] = 'Vaata erinevusi:';
$lang['diff_inline'] = 'Jooksvalt';
$lang['diff_side'] = 'Kõrvuti';
$lang['line'] = 'Rida';
-$lang['breadcrumb'] = 'Käidud rada';
-$lang['youarehere'] = 'Sa oled siin';
-$lang['lastmod'] = 'Viimati muutnud';
+$lang['breadcrumb'] = 'Käidud rada:';
+$lang['youarehere'] = 'Sa oled siin:';
+$lang['lastmod'] = 'Viimati muutnud:';
$lang['by'] = 'persoon';
$lang['deleted'] = 'eemaldatud';
$lang['created'] = 'tekitatud';
@@ -243,19 +243,19 @@ $lang['metaedit'] = 'Muuda lisainfot';
$lang['metasaveerr'] = 'Lisainfo salvestamine läks untsu.';
$lang['metasaveok'] = 'Lisainfo salvestatud';
$lang['btn_img_backto'] = 'Tagasi %s';
-$lang['img_title'] = 'Tiitel';
-$lang['img_caption'] = 'Kirjeldus';
-$lang['img_date'] = 'Kuupäev';
-$lang['img_fname'] = 'Faili nimi';
-$lang['img_fsize'] = 'Suurus';
-$lang['img_artist'] = 'Autor';
-$lang['img_copyr'] = 'Autoriõigused';
-$lang['img_format'] = 'Formaat';
-$lang['img_camera'] = 'Kaamera';
-$lang['img_keywords'] = 'Võtmesõnad';
-$lang['img_width'] = 'Laius';
-$lang['img_height'] = 'Kõrgus';
-$lang['img_manager'] = 'Näita meediahalduris';
+$lang['img_title'] = 'Tiitel:';
+$lang['img_caption'] = 'Kirjeldus:';
+$lang['img_date'] = 'Kuupäev:';
+$lang['img_fname'] = 'Faili nimi:';
+$lang['img_fsize'] = 'Suurus:';
+$lang['img_artist'] = 'Autor:';
+$lang['img_copyr'] = 'Autoriõigused:';
+$lang['img_format'] = 'Formaat:';
+$lang['img_camera'] = 'Kaamera:';
+$lang['img_keywords'] = 'Võtmesõnad:';
+$lang['img_width'] = 'Laius:';
+$lang['img_height'] = 'Kõrgus:';
+$lang['btn_mediaManager'] = 'Näita meediahalduris';
$lang['subscr_subscribe_success'] = '%s lisati %s tellijaks';
$lang['subscr_subscribe_error'] = 'Viga %s lisamisel %s tellijaks';
$lang['subscr_subscribe_noaddress'] = 'Sinu kasutajaga pole seotud ühtegi aadressi, seega ei saa sind tellijaks lisada';
diff --git a/inc/lang/eu/lang.php b/inc/lang/eu/lang.php
index 9a38099b3..0c996feaf 100644
--- a/inc/lang/eu/lang.php
+++ b/inc/lang/eu/lang.php
@@ -49,7 +49,7 @@ $lang['btn_revert'] = 'Berrezarri';
$lang['btn_register'] = 'Erregistratu';
$lang['btn_apply'] = 'Baieztatu';
$lang['btn_media'] = 'Media Kudeatzailea';
-$lang['loggedinas'] = 'Erabiltzailea';
+$lang['loggedinas'] = 'Erabiltzailea:';
$lang['user'] = 'Erabiltzailea';
$lang['pass'] = 'Pasahitza';
$lang['newpass'] = 'Pasahitz berria';
@@ -88,8 +88,8 @@ $lang['license'] = 'Besterik esan ezean, wiki hontako edukia ondor
$lang['licenseok'] = 'Oharra: Orri hau editatzean, zure edukia ondorengo lizentziapean argitaratzea onartzen duzu: ';
$lang['searchmedia'] = 'Bilatu fitxategi izena:';
$lang['searchmedia_in'] = 'Bilatu %s-n';
-$lang['txt_upload'] = 'Ireki nahi den fitxategia aukeratu';
-$lang['txt_filename'] = 'Idatzi wikiname-a (aukerazkoa)';
+$lang['txt_upload'] = 'Ireki nahi den fitxategia aukeratu:';
+$lang['txt_filename'] = 'Idatzi wikiname-a (aukerazkoa):';
$lang['txt_overwrt'] = 'Oraingo fitxategiaren gainean idatzi';
$lang['lockedby'] = 'Momentu honetan blokeatzen:';
$lang['lockexpire'] = 'Blokeaketa iraungitzen da:';
@@ -172,9 +172,9 @@ $lang['diff_type'] = 'Ikusi diferentziak:';
$lang['diff_inline'] = 'Lerro tartean';
$lang['diff_side'] = 'Ondoz ondo';
$lang['line'] = 'Marra';
-$lang['breadcrumb'] = 'Traza';
-$lang['youarehere'] = 'Hemen zaude';
-$lang['lastmod'] = 'Azken aldaketa';
+$lang['breadcrumb'] = 'Traza:';
+$lang['youarehere'] = 'Hemen zaude:';
+$lang['lastmod'] = 'Azken aldaketa:';
$lang['by'] = 'egilea:';
$lang['deleted'] = 'ezabatua';
$lang['created'] = 'sortua';
@@ -228,18 +228,18 @@ $lang['metaedit'] = 'Metadatua Aldatu';
$lang['metasaveerr'] = 'Metadatuaren idazketak huts egin du';
$lang['metasaveok'] = 'Metadatua gordea';
$lang['btn_img_backto'] = 'Atzera hona %s';
-$lang['img_title'] = 'Izenburua';
-$lang['img_caption'] = 'Epigrafea';
-$lang['img_date'] = 'Data';
-$lang['img_fname'] = 'Fitxategi izena';
-$lang['img_fsize'] = 'Tamaina';
-$lang['img_artist'] = 'Artista';
-$lang['img_copyr'] = 'Copyright';
-$lang['img_format'] = 'Formatua';
-$lang['img_camera'] = 'Kamera';
-$lang['img_keywords'] = 'Hitz-gakoak';
-$lang['img_width'] = 'Zabalera';
-$lang['img_height'] = 'Altuera';
+$lang['img_title'] = 'Izenburua:';
+$lang['img_caption'] = 'Epigrafea:';
+$lang['img_date'] = 'Data:';
+$lang['img_fname'] = 'Fitxategi izena:';
+$lang['img_fsize'] = 'Tamaina:';
+$lang['img_artist'] = 'Artista:';
+$lang['img_copyr'] = 'Copyright:';
+$lang['img_format'] = 'Formatua:';
+$lang['img_camera'] = 'Kamera:';
+$lang['img_keywords'] = 'Hitz-gakoak:';
+$lang['img_width'] = 'Zabalera:';
+$lang['img_height'] = 'Altuera:';
$lang['btn_mediaManager'] = 'Media kudeatzailean ikusi';
$lang['subscr_subscribe_success'] = '%s gehitua %s-ren harpidetza zerrendara';
$lang['subscr_subscribe_error'] = 'Errorea %s gehitzen %s-ren harpidetza zerrendara';
diff --git a/inc/lang/fa/lang.php b/inc/lang/fa/lang.php
index 1e819419f..d3016c0bd 100644
--- a/inc/lang/fa/lang.php
+++ b/inc/lang/fa/lang.php
@@ -98,12 +98,12 @@ $lang['license'] = 'به جز مواردی که ذکر می‌شو
$lang['licenseok'] = 'توجه: با ویرایش این صفحه، شما مجوز زیر را تایید می‌کنید:';
$lang['searchmedia'] = 'نام فایل برای جستجو:';
$lang['searchmedia_in'] = 'جستجو در %s';
-$lang['txt_upload'] = 'فایل را برای ارسال انتخاب کنید';
-$lang['txt_filename'] = 'ارسال به صورت (اختیاری)';
+$lang['txt_upload'] = 'فایل را برای ارسال انتخاب کنید:';
+$lang['txt_filename'] = 'ارسال به صورت (اختیاری):';
$lang['txt_overwrt'] = 'بر روی فایل موجود بنویس';
$lang['maxuploadsize'] = 'حداکثر %s برای هر فایل مجاز است.';
-$lang['lockedby'] = 'در حال حاضر قفل شده است';
-$lang['lockexpire'] = 'قفل منقضی شده است';
+$lang['lockedby'] = 'در حال حاضر قفل شده است:';
+$lang['lockexpire'] = 'قفل منقضی شده است:';
$lang['js']['willexpire'] = 'حالت قفل شما مدتی است منقضی شده است \n برای جلوگیری از تداخل دکمه‌ی پیش‌نمایش را برای صفر شدن ساعت قفل بزنید.';
$lang['js']['notsavedyet'] = 'تغییرات ذخیره شده از بین خواهد رفت.
می‌خواهید ادامه دهید؟';
@@ -185,9 +185,9 @@ $lang['diff_type'] = 'مشاهده تغییرات:';
$lang['diff_inline'] = 'خطی';
$lang['diff_side'] = 'کلی';
$lang['line'] = 'خط';
-$lang['breadcrumb'] = 'ردپا';
-$lang['youarehere'] = 'محل شما';
-$lang['lastmod'] = 'آخرین ویرایش';
+$lang['breadcrumb'] = 'ردپا:';
+$lang['youarehere'] = 'محل شما:';
+$lang['lastmod'] = 'آخرین ویرایش:';
$lang['by'] = 'توسط';
$lang['deleted'] = 'حذف شد';
$lang['created'] = 'ایجاد شد';
@@ -241,18 +241,18 @@ $lang['metaedit'] = 'ویرایش داده‌های متا';
$lang['metasaveerr'] = 'نوشتن داده‌نما با مشکل مواجه شد';
$lang['metasaveok'] = 'داده‌نما ذخیره شد';
$lang['btn_img_backto'] = 'بازگشت به %s';
-$lang['img_title'] = 'عنوان تصویر';
-$lang['img_caption'] = 'عنوان';
-$lang['img_date'] = 'تاریخ';
-$lang['img_fname'] = 'نام فایل';
-$lang['img_fsize'] = 'اندازه';
-$lang['img_artist'] = 'عکاس/هنرمند';
-$lang['img_copyr'] = 'دارنده‌ی حق تکثیر';
-$lang['img_format'] = 'فرمت';
-$lang['img_camera'] = 'دوربین';
-$lang['img_keywords'] = 'واژه‌های کلیدی';
-$lang['img_width'] = 'عرض';
-$lang['img_height'] = 'ارتفاع';
+$lang['img_title'] = 'عنوان تصویر:';
+$lang['img_caption'] = 'عنوان:';
+$lang['img_date'] = 'تاریخ:';
+$lang['img_fname'] = 'نام فایل:';
+$lang['img_fsize'] = 'اندازه:';
+$lang['img_artist'] = 'عکاس/هنرمند:';
+$lang['img_copyr'] = 'دارنده‌ی حق تکثیر:';
+$lang['img_format'] = 'فرمت:';
+$lang['img_camera'] = 'دوربین:';
+$lang['img_keywords'] = 'واژه‌های کلیدی:';
+$lang['img_width'] = 'عرض:';
+$lang['img_height'] = 'ارتفاع:';
$lang['btn_mediaManager'] = 'دیدن در مدیریت محتوای چند رسانه ای';
$lang['subscr_subscribe_success'] = '%s به لیست آبونه %s افزوده شد';
$lang['subscr_subscribe_error'] = 'اشکال در افزودن %s به لیست آبونه %s';
diff --git a/inc/lang/fi/lang.php b/inc/lang/fi/lang.php
index 9b877013e..0f82c3b7a 100644
--- a/inc/lang/fi/lang.php
+++ b/inc/lang/fi/lang.php
@@ -53,7 +53,7 @@ $lang['btn_register'] = 'Rekisteröidy';
$lang['btn_apply'] = 'Toteuta';
$lang['btn_media'] = 'Media manager';
$lang['btn_deleteuser'] = 'Poista tilini';
-$lang['loggedinas'] = 'Kirjautunut nimellä';
+$lang['loggedinas'] = 'Kirjautunut nimellä:';
$lang['user'] = 'Käyttäjänimi';
$lang['pass'] = 'Salasana';
$lang['newpass'] = 'Uusi salasana';
@@ -98,12 +98,12 @@ $lang['license'] = 'Jollei muuta ole mainittu, niin sisältö täs
$lang['licenseok'] = 'Huom: Muokkaamalla tätä sivua suostut lisensoimaan sisällön seuraavan lisenssin mukaisesti:';
$lang['searchmedia'] = 'Etsi tiedostoa nimeltä:';
$lang['searchmedia_in'] = 'Etsi kohteesta %s';
-$lang['txt_upload'] = 'Valitse tiedosto lähetettäväksi';
-$lang['txt_filename'] = 'Lähetä nimellä (valinnainen)';
+$lang['txt_upload'] = 'Valitse tiedosto lähetettäväksi:';
+$lang['txt_filename'] = 'Lähetä nimellä (valinnainen):';
$lang['txt_overwrt'] = 'Ylikirjoita olemassa oleva';
$lang['maxuploadsize'] = 'Palvelimelle siirto max. %s / tiedosto.';
-$lang['lockedby'] = 'Tällä hetkellä tiedoston on lukinnut';
-$lang['lockexpire'] = 'Lukitus päättyy';
+$lang['lockedby'] = 'Tällä hetkellä tiedoston on lukinnut:';
+$lang['lockexpire'] = 'Lukitus päättyy:';
$lang['js']['willexpire'] = 'Lukituksesi tämän sivun muokkaukseen päättyy minuutin kuluttua.\nRistiriitojen välttämiseksi paina esikatselu-nappia nollataksesi lukitusajan.';
$lang['js']['notsavedyet'] = 'Dokumentissa on tallentamattomia muutoksia, jotka häviävät.
Haluatko varmasti jatkaa?';
@@ -185,9 +185,9 @@ $lang['diff_type'] = 'Näytä eroavaisuudet:';
$lang['diff_inline'] = 'Sisäkkäin';
$lang['diff_side'] = 'Vierekkäin';
$lang['line'] = 'Rivi';
-$lang['breadcrumb'] = 'Jäljet';
-$lang['youarehere'] = 'Olet täällä';
-$lang['lastmod'] = 'Viimeksi muutettu';
+$lang['breadcrumb'] = 'Jäljet:';
+$lang['youarehere'] = 'Olet täällä:';
+$lang['lastmod'] = 'Viimeksi muutettu:';
$lang['by'] = '/';
$lang['deleted'] = 'poistettu';
$lang['created'] = 'luotu';
@@ -241,18 +241,18 @@ $lang['metaedit'] = 'Muokkaa metadataa';
$lang['metasaveerr'] = 'Metadatan kirjoittaminen epäonnistui';
$lang['metasaveok'] = 'Metadata tallennettu';
$lang['btn_img_backto'] = 'Takaisin %s';
-$lang['img_title'] = 'Otsikko';
-$lang['img_caption'] = 'Kuvateksti';
-$lang['img_date'] = 'Päivämäärä';
-$lang['img_fname'] = 'Tiedoston nimi';
-$lang['img_fsize'] = 'Koko';
-$lang['img_artist'] = 'Kuvaaja';
-$lang['img_copyr'] = 'Tekijänoikeus';
-$lang['img_format'] = 'Formaatti';
-$lang['img_camera'] = 'Kamera';
-$lang['img_keywords'] = 'Avainsanat';
-$lang['img_width'] = 'Leveys';
-$lang['img_height'] = 'Korkeus';
+$lang['img_title'] = 'Otsikko:';
+$lang['img_caption'] = 'Kuvateksti:';
+$lang['img_date'] = 'Päivämäärä:';
+$lang['img_fname'] = 'Tiedoston nimi:';
+$lang['img_fsize'] = 'Koko:';
+$lang['img_artist'] = 'Kuvaaja:';
+$lang['img_copyr'] = 'Tekijänoikeus:';
+$lang['img_format'] = 'Formaatti:';
+$lang['img_camera'] = 'Kamera:';
+$lang['img_keywords'] = 'Avainsanat:';
+$lang['img_width'] = 'Leveys:';
+$lang['img_height'] = 'Korkeus:';
$lang['btn_mediaManager'] = 'Näytä mediamanagerissa';
$lang['subscr_subscribe_success'] = '%s lisätty %s tilauslistalle';
$lang['subscr_subscribe_error'] = 'Virhe lisättäessä %s tilauslistalle %s';
diff --git a/inc/lang/fo/lang.php b/inc/lang/fo/lang.php
index 2613186eb..b326d27ac 100644
--- a/inc/lang/fo/lang.php
+++ b/inc/lang/fo/lang.php
@@ -45,7 +45,7 @@ $lang['btn_recover'] = 'Endurbygg kladdu';
$lang['btn_draftdel'] = 'Sletta';
$lang['btn_revert'] = 'Endurbygg';
$lang['btn_register'] = 'Melda til';
-$lang['loggedinas'] = 'Ritavur inn sum';
+$lang['loggedinas'] = 'Ritavur inn sum:';
$lang['user'] = 'Brúkaranavn';
$lang['pass'] = 'Loyniorð';
$lang['newpass'] = 'Nýtt loyniorð';
@@ -83,11 +83,11 @@ $lang['license'] = 'Um ikki annað er tilskilað, so er tilfar á
$lang['licenseok'] = 'Legg til merkis: Við at dagføra hesa síðu samtykkir tú at loyva margfalding av tilfarinum undir fylgjandi treytum:';
$lang['searchmedia'] = 'Leita eftir fíl navn:';
$lang['searchmedia_in'] = 'Leita í %s';
-$lang['txt_upload'] = 'Vel tí fílu sum skal leggjast upp';
-$lang['txt_filename'] = 'Sláa inn wikinavn (valfrítt)';
+$lang['txt_upload'] = 'Vel tí fílu sum skal leggjast upp:';
+$lang['txt_filename'] = 'Sláa inn wikinavn (valfrítt):';
$lang['txt_overwrt'] = 'Yvurskriva verandi fílu';
-$lang['lockedby'] = 'Fyribils læst av';
-$lang['lockexpire'] = 'Lásið ferð úr gildi kl.';
+$lang['lockedby'] = 'Fyribils læst av:';
+$lang['lockexpire'] = 'Lásið ferð úr gildi kl.:';
$lang['js']['willexpire'] = 'Títt lás á hetta skjalið ferð úr gildi um ein minnutt.\nTrýst á Forskoðan-knappin fyri at sleppa undan trupulleikum.';
$lang['js']['notsavedyet'] = 'Tað eru gjørdar broytingar í skjalinum, um tú haldur fram vilja broytingar fara fyri skeytið.
Ynskir tú at halda fram?';
@@ -124,9 +124,9 @@ $lang['current'] = 'núverandi';
$lang['yours'] = 'Tín útgáva';
$lang['diff'] = 'vís broytingar í mun til núverandi útgávu';
$lang['line'] = 'Linja';
-$lang['breadcrumb'] = 'Leið';
-$lang['youarehere'] = 'Tú ert her';
-$lang['lastmod'] = 'Seinast broytt';
+$lang['breadcrumb'] = 'Leið:';
+$lang['youarehere'] = 'Tú ert her:';
+$lang['lastmod'] = 'Seinast broytt:';
$lang['by'] = 'av';
$lang['deleted'] = 'strika';
$lang['created'] = 'stovna';
@@ -158,14 +158,14 @@ $lang['metaedit'] = 'Rætta metadáta';
$lang['metasaveerr'] = 'Brek við skriving av metadáta';
$lang['metasaveok'] = 'Metadáta goymt';
$lang['btn_img_backto'] = 'Aftur til %s';
-$lang['img_title'] = 'Heitið';
-$lang['img_caption'] = 'Myndatekstur';
-$lang['img_date'] = 'Dato';
-$lang['img_fname'] = 'Fílunavn';
-$lang['img_fsize'] = 'Stødd';
-$lang['img_artist'] = 'Myndafólk';
-$lang['img_copyr'] = 'Upphavsrættur';
-$lang['img_format'] = 'Snið';
-$lang['img_camera'] = 'Fototól';
-$lang['img_keywords'] = 'Evnisorð';
+$lang['img_title'] = 'Heitið:';
+$lang['img_caption'] = 'Myndatekstur:';
+$lang['img_date'] = 'Dato:';
+$lang['img_fname'] = 'Fílunavn:';
+$lang['img_fsize'] = 'Stødd:';
+$lang['img_artist'] = 'Myndafólk:';
+$lang['img_copyr'] = 'Upphavsrættur:';
+$lang['img_format'] = 'Snið:';
+$lang['img_camera'] = 'Fototól:';
+$lang['img_keywords'] = 'Evnisorð:';
$lang['authtempfail'] = 'Validering av brúkara virkar fyribils ikki. Um hetta er varandi, fá so samband við umboðsstjóran á hesi wiki.';
diff --git a/inc/lang/fr/lang.php b/inc/lang/fr/lang.php
index 1f11608e6..c5edd4cf7 100644
--- a/inc/lang/fr/lang.php
+++ b/inc/lang/fr/lang.php
@@ -32,6 +32,9 @@
* @author Wild <wild.dagger@free.fr>
* @author ggallon <gwenael.gallon@mac.com>
* @author David VANTYGHEM <david.vantyghem@free.fr>
+ * @author Caillot <remicaillot5@gmail.com>
+ * @author Schplurtz le Déboulonné <schplurtz@laposte.net>
+ * @author YoBoY <yoboy@ubuntu-fr.org>
*/
$lang['encoding'] = 'utf-8';
$lang['direction'] = 'ltr';
@@ -52,7 +55,7 @@ $lang['btn_newer'] = '<< Plus récent';
$lang['btn_older'] = 'Moins récent >>';
$lang['btn_revs'] = 'Anciennes révisions';
$lang['btn_recent'] = 'Derniers changements';
-$lang['btn_upload'] = 'Envoyer';
+$lang['btn_upload'] = 'Téléverser';
$lang['btn_cancel'] = 'Annuler';
$lang['btn_index'] = 'Plan du site';
$lang['btn_secedit'] = 'Modifier';
@@ -62,9 +65,9 @@ $lang['btn_admin'] = 'Administrer';
$lang['btn_update'] = 'Mettre à jour';
$lang['btn_delete'] = 'Effacer';
$lang['btn_back'] = 'Retour';
-$lang['btn_backlink'] = 'Liens vers cette page';
+$lang['btn_backlink'] = 'Liens de retour';
$lang['btn_backtomedia'] = 'Retour à la sélection du fichier média';
-$lang['btn_subscribe'] = 'S\'abonner à cette page';
+$lang['btn_subscribe'] = 'Gérer souscriptions';
$lang['btn_profile'] = 'Mettre à jour le profil';
$lang['btn_reset'] = 'Réinitialiser';
$lang['btn_resendpwd'] = 'Définir un nouveau mot de passe';
@@ -76,9 +79,9 @@ $lang['btn_register'] = 'Créer un compte';
$lang['btn_apply'] = 'Appliquer';
$lang['btn_media'] = 'Gestionnaire de médias';
$lang['btn_deleteuser'] = 'Supprimer mon compte';
-$lang['btn_img_backto'] = 'Retour à %s';
+$lang['btn_img_backto'] = 'Retour vers %s';
$lang['btn_mediaManager'] = 'Voir dans le gestionnaire de médias';
-$lang['loggedinas'] = 'Connecté en tant que ';
+$lang['loggedinas'] = 'Connecté en tant que :';
$lang['user'] = 'Utilisateur';
$lang['pass'] = 'Mot de passe';
$lang['newpass'] = 'Nouveau mot de passe';
@@ -88,20 +91,20 @@ $lang['remember'] = 'Mémoriser';
$lang['fullname'] = 'Nom';
$lang['email'] = 'Adresse de courriel';
$lang['profile'] = 'Profil utilisateur';
-$lang['badlogin'] = 'L\'utilisateur ou le mot de passe est incorrect.';
+$lang['badlogin'] = 'Le nom d\'utilisateur ou le mot de passe est incorrect.';
$lang['badpassconfirm'] = 'Désolé, le mot de passe est erroné';
$lang['minoredit'] = 'Modification mineure';
-$lang['draftdate'] = 'Brouillon enregistré de manière automatique le';
+$lang['draftdate'] = 'Brouillon enregistré automatiquement le';
$lang['nosecedit'] = 'La page a changé entre temps, les informations de la section sont obsolètes ; la page complète a été chargée à la place.';
$lang['regmissing'] = 'Désolé, vous devez remplir tous les champs.';
-$lang['reguexists'] = 'Désolé, ce nom d\'utilisateur est déjà utilisé.';
+$lang['reguexists'] = 'Désolé, ce nom d\'utilisateur est déjà pris.';
$lang['regsuccess'] = 'L\'utilisateur a été créé. Le mot de passe a été expédié par courriel.';
$lang['regsuccess2'] = 'L\'utilisateur a été créé.';
$lang['regmailfail'] = 'On dirait qu\'il y a eu une erreur lors de l\'envoi du mot de passe de messagerie. Veuillez contacter l\'administrateur !';
$lang['regbadmail'] = 'L\'adresse de courriel semble incorrecte. Si vous pensez que c\'est une erreur, contactez l\'administrateur.';
$lang['regbadpass'] = 'Les deux mots de passe fournis sont différents, veuillez recommencez.';
$lang['regpwmail'] = 'Votre mot de passe DokuWiki';
-$lang['reghere'] = 'Vous n\'avez pas encore de compte ? Enregistrez-vous ici ';
+$lang['reghere'] = 'Vous n\'avez pas encore de compte ? Inscrivez-vous';
$lang['profna'] = 'Ce wiki ne permet pas de modifier les profils';
$lang['profnochange'] = 'Pas de modification, rien à faire.';
$lang['profnoempty'] = 'Un nom ou une adresse de courriel vide n\'est pas permis.';
@@ -123,12 +126,12 @@ $lang['license'] = 'Sauf mention contraire, le contenu de ce wiki
$lang['licenseok'] = 'Note : En modifiant cette page, vous acceptez que le contenu soit placé sous les termes de la licence suivante :';
$lang['searchmedia'] = 'Chercher le nom de fichier :';
$lang['searchmedia_in'] = 'Chercher dans %s';
-$lang['txt_upload'] = 'Sélectionnez un fichier à envoyer ';
-$lang['txt_filename'] = 'Envoyer en tant que (optionnel) ';
+$lang['txt_upload'] = 'Sélectionnez un fichier à envoyer:';
+$lang['txt_filename'] = 'Envoyer en tant que (optionnel):';
$lang['txt_overwrt'] = 'Écraser le fichier cible (s\'il existe)';
$lang['maxuploadsize'] = 'Taille d\'envoi maximale : %s par fichier';
-$lang['lockedby'] = 'Actuellement bloqué par';
-$lang['lockexpire'] = 'Le blocage expire à';
+$lang['lockedby'] = 'Actuellement bloqué par:';
+$lang['lockexpire'] = 'Le blocage expire à:';
$lang['js']['willexpire'] = 'Votre blocage pour la modification de cette page expire dans une minute.\nPour éviter les conflits, utilisez le bouton « Aperçu » pour réinitialiser le minuteur.';
$lang['js']['notsavedyet'] = 'Les modifications non enregistrées seront perdues. Voulez-vous vraiment continuer ?';
$lang['js']['searchmedia'] = 'Chercher des fichiers';
@@ -210,10 +213,12 @@ $lang['diff_side'] = 'Côte à côte';
$lang['diffprevrev'] = 'Révision précédente';
$lang['diffnextrev'] = 'Prochaine révision';
$lang['difflastrev'] = 'Dernière révision';
+$lang['diffbothprevrev'] = 'Les deux révisions précédentes';
+$lang['diffbothnextrev'] = 'Les deux révisions suivantes';
$lang['line'] = 'Ligne';
-$lang['breadcrumb'] = 'Piste';
-$lang['youarehere'] = 'Vous êtes ici';
-$lang['lastmod'] = 'Dernière modification';
+$lang['breadcrumb'] = 'Piste:';
+$lang['youarehere'] = 'Vous êtes ici:';
+$lang['lastmod'] = 'Dernière modification:';
$lang['by'] = 'par';
$lang['deleted'] = 'supprimée';
$lang['created'] = 'créée';
@@ -266,18 +271,18 @@ $lang['admin_register'] = 'Ajouter un nouvel utilisateur';
$lang['metaedit'] = 'Modifier les métadonnées';
$lang['metasaveerr'] = 'Erreur lors de l\'enregistrement des métadonnées';
$lang['metasaveok'] = 'Métadonnées enregistrées';
-$lang['img_title'] = 'Titre';
-$lang['img_caption'] = 'Légende';
-$lang['img_date'] = 'Date';
-$lang['img_fname'] = 'Nom de fichier';
-$lang['img_fsize'] = 'Taille';
-$lang['img_artist'] = 'Photographe';
-$lang['img_copyr'] = 'Copyright';
-$lang['img_format'] = 'Format';
-$lang['img_camera'] = 'Appareil photo';
-$lang['img_keywords'] = 'Mots-clés';
-$lang['img_width'] = 'Largeur';
-$lang['img_height'] = 'Hauteur';
+$lang['img_title'] = 'Titre:';
+$lang['img_caption'] = 'Légende:';
+$lang['img_date'] = 'Date:';
+$lang['img_fname'] = 'Nom de fichier:';
+$lang['img_fsize'] = 'Taille:';
+$lang['img_artist'] = 'Photographe:';
+$lang['img_copyr'] = 'Copyright:';
+$lang['img_format'] = 'Format:';
+$lang['img_camera'] = 'Appareil photo:';
+$lang['img_keywords'] = 'Mots-clés:';
+$lang['img_width'] = 'Largeur:';
+$lang['img_height'] = 'Hauteur:';
$lang['subscr_subscribe_success'] = '%s a été ajouté à la liste de souscription de %s';
$lang['subscr_subscribe_error'] = 'Erreur à l\'ajout de %s à la liste de souscription de %s';
$lang['subscr_subscribe_noaddress'] = 'Il n\'y a pas d\'adresse associée à votre identifiant, vous ne pouvez pas être ajouté à la liste de souscription';
@@ -305,6 +310,7 @@ $lang['i_problems'] = 'L\'installateur a détecté les problèmes ind
$lang['i_modified'] = 'Pour des raisons de sécurité, ce script ne fonctionne qu\'avec une installation neuve et non modifiée de DokuWiki. Vous devriez ré-extraire les fichiers depuis le paquet téléchargé ou consulter les <a href="http://dokuwiki.org/install">instructions d\'installation de DokuWiki</a>';
$lang['i_funcna'] = 'La fonction PHP <code>%s</code> n\'est pas disponible. Peut-être que votre hébergeur web l\'a désactivée ?';
$lang['i_phpver'] = 'Votre version de PHP (%s) est antérieure à la version requise (%s). Vous devez mettre à jour votre installation de PHP.';
+$lang['i_mbfuncoverload'] = 'Il faut désactiver mbstring.func_overload dans php.ini pour DokuWiki';
$lang['i_permfail'] = '<code>%s</code> n\'est pas accessible en écriture pour DokuWiki. Vous devez corriger les autorisations de ce répertoire !';
$lang['i_confexists'] = '<code>%s</code> existe déjà';
$lang['i_writeerr'] = 'Impossible de créer <code>%s</code>. Vous devez vérifier les autorisations des répertoires/fichiers et créer le fichier manuellement.';
diff --git a/inc/lang/fr/subscr_form.txt b/inc/lang/fr/subscr_form.txt
index 94e70afbd..d68c05e6a 100644
--- a/inc/lang/fr/subscr_form.txt
+++ b/inc/lang/fr/subscr_form.txt
@@ -1,3 +1,3 @@
-====== Gestion de l'abonnement ======
+====== Gestion des souscriptions ======
-Cette page vous permet de gérer vos abonnements à la page et à la catégorie courantes. \ No newline at end of file
+Cette page vous permet de gérer vos souscriptions pour suivre les modifications sur la page et sur la catégorie courante. \ No newline at end of file
diff --git a/inc/lang/gl/lang.php b/inc/lang/gl/lang.php
index 0c81f1fb2..aed225359 100644
--- a/inc/lang/gl/lang.php
+++ b/inc/lang/gl/lang.php
@@ -49,7 +49,7 @@ $lang['btn_revert'] = 'Restaurar';
$lang['btn_register'] = 'Rexístrate';
$lang['btn_apply'] = 'Aplicar';
$lang['btn_media'] = 'Xestor de Arquivos-Media';
-$lang['loggedinas'] = 'Iniciaches sesión como';
+$lang['loggedinas'] = 'Iniciaches sesión como:';
$lang['user'] = 'Nome de Usuario';
$lang['pass'] = 'Contrasinal';
$lang['newpass'] = 'Novo Contrasinal';
@@ -88,12 +88,12 @@ $lang['license'] = 'O contido deste wiki, agás onde se indique o
$lang['licenseok'] = 'Nota: Ao editares esta páxina estás a aceptar o licenciamento do contido baixo da seguinte licenza:';
$lang['searchmedia'] = 'Procurar nome de arquivo:';
$lang['searchmedia_in'] = 'Procurar en %s';
-$lang['txt_upload'] = 'Escolle o arquivo para subir';
-$lang['txt_filename'] = 'Subir como (opcional)';
+$lang['txt_upload'] = 'Escolle o arquivo para subir:';
+$lang['txt_filename'] = 'Subir como (opcional):';
$lang['txt_overwrt'] = 'Sobrescribir arquivo existente';
$lang['maxuploadsize'] = 'Subida máxima %s por arquivo.';
-$lang['lockedby'] = 'Bloqueado actualmente por';
-$lang['lockexpire'] = 'O bloqueo remata o';
+$lang['lockedby'] = 'Bloqueado actualmente por:';
+$lang['lockexpire'] = 'O bloqueo remata o:';
$lang['js']['willexpire'] = 'O teu bloqueo para editares esta páxina vai caducar nun minuto.\nPara de evitar conflitos, emprega o botón de previsualización para reiniciares o contador do tempo de bloqueo.';
$lang['js']['notsavedyet'] = 'Perderanse os trocos non gardados.
Está certo de quereres continuar?';
@@ -175,9 +175,9 @@ $lang['diff_type'] = 'Ver diferenzas:';
$lang['diff_inline'] = 'Por liña';
$lang['diff_side'] = 'Cara a Cara';
$lang['line'] = 'Liña';
-$lang['breadcrumb'] = 'Trazado';
-$lang['youarehere'] = 'Estás aquí';
-$lang['lastmod'] = 'Última modificación';
+$lang['breadcrumb'] = 'Trazado:';
+$lang['youarehere'] = 'Estás aquí:';
+$lang['lastmod'] = 'Última modificación:';
$lang['by'] = 'por';
$lang['deleted'] = 'eliminado';
$lang['created'] = 'creado';
@@ -231,18 +231,18 @@ $lang['metaedit'] = 'Editar Metadatos';
$lang['metasaveerr'] = 'Non se puideron escribir os metadatos';
$lang['metasaveok'] = 'Metadatos gardados';
$lang['btn_img_backto'] = 'Volver a %s';
-$lang['img_title'] = 'Título';
-$lang['img_caption'] = 'Lenda';
-$lang['img_date'] = 'Data';
-$lang['img_fname'] = 'Nome de arquivo';
-$lang['img_fsize'] = 'Tamaño';
-$lang['img_artist'] = 'Fotógrafo';
-$lang['img_copyr'] = 'Copyright';
-$lang['img_format'] = 'Formato';
-$lang['img_camera'] = 'Cámara';
-$lang['img_keywords'] = 'Verbas chave';
-$lang['img_width'] = 'Ancho';
-$lang['img_height'] = 'Alto';
+$lang['img_title'] = 'Título:';
+$lang['img_caption'] = 'Lenda:';
+$lang['img_date'] = 'Data:';
+$lang['img_fname'] = 'Nome de arquivo:';
+$lang['img_fsize'] = 'Tamaño:';
+$lang['img_artist'] = 'Fotógrafo:';
+$lang['img_copyr'] = 'Copyright:';
+$lang['img_format'] = 'Formato:';
+$lang['img_camera'] = 'Cámara:';
+$lang['img_keywords'] = 'Verbas chave:';
+$lang['img_width'] = 'Ancho:';
+$lang['img_height'] = 'Alto:';
$lang['btn_mediaManager'] = 'Ver no xestor de arquivos-media';
$lang['subscr_subscribe_success'] = 'Engadido %s á lista de subscrición para %s';
$lang['subscr_subscribe_error'] = 'Erro ao tentar engadir %s á lista de subscrición para %s';
diff --git a/inc/lang/he/lang.php b/inc/lang/he/lang.php
index c9a01a193..101102b48 100644
--- a/inc/lang/he/lang.php
+++ b/inc/lang/he/lang.php
@@ -57,7 +57,7 @@ $lang['btn_register'] = 'הרשמה';
$lang['btn_apply'] = 'ליישם';
$lang['btn_media'] = 'מנהל המדיה';
$lang['btn_deleteuser'] = 'להסיר את החשבון שלי';
-$lang['loggedinas'] = 'נכנסת בשם';
+$lang['loggedinas'] = 'נכנסת בשם:';
$lang['user'] = 'שם משתמש';
$lang['pass'] = 'ססמה';
$lang['newpass'] = 'ססמה חדשה';
@@ -102,12 +102,12 @@ $lang['license'] = 'למעט מקרים בהם צוין אחרת,
$lang['licenseok'] = 'נא לשים לב: עריכת דף זה מהווה הסכמה מצדך להצגת התוכן שהוספת בהתאם הרישיון הבא:';
$lang['searchmedia'] = 'חיפוש שם קובץ:';
$lang['searchmedia_in'] = 'חיפוש תחת %s';
-$lang['txt_upload'] = 'בחירת קובץ להעלות';
-$lang['txt_filename'] = 'העלאה בשם (נתון לבחירה)';
+$lang['txt_upload'] = 'בחירת קובץ להעלות:';
+$lang['txt_filename'] = 'העלאה בשם (נתון לבחירה):';
$lang['txt_overwrt'] = 'שכתוב על קובץ קיים';
$lang['maxuploadsize'] = 'העלה מקסימום. s% לכל קובץ.';
-$lang['lockedby'] = 'נעול על ידי';
-$lang['lockexpire'] = 'הנעילה פגה';
+$lang['lockedby'] = 'נעול על ידי:';
+$lang['lockexpire'] = 'הנעילה פגה:';
$lang['js']['willexpire'] = 'הנעילה תחלוף עוד זמן קצר. \nלמניעת התנגשויות יש להשתמש בכפתור הרענון מטה כדי לאפס את מד משך הנעילה.';
$lang['js']['notsavedyet'] = 'שינויים שלא נשמרו ילכו לאיבוד.';
$lang['js']['searchmedia'] = 'חיפוש אחר קבצים';
@@ -188,9 +188,9 @@ $lang['diff_type'] = 'הצגת הבדלים:';
$lang['diff_inline'] = 'באותה השורה';
$lang['diff_side'] = 'זה לצד זה';
$lang['line'] = 'שורה';
-$lang['breadcrumb'] = 'ביקורים אחרונים';
-$lang['youarehere'] = 'זהו מיקומך';
-$lang['lastmod'] = 'מועד השינוי האחרון';
+$lang['breadcrumb'] = 'ביקורים אחרונים:';
+$lang['youarehere'] = 'זהו מיקומך:';
+$lang['lastmod'] = 'מועד השינוי האחרון:';
$lang['by'] = 'על ידי';
$lang['deleted'] = 'נמחק';
$lang['created'] = 'נוצר';
@@ -244,18 +244,18 @@ $lang['metaedit'] = 'עריכת נתוני העל';
$lang['metasaveerr'] = 'אירע כשל בשמירת נתוני העל';
$lang['metasaveok'] = 'נתוני העל נשמרו';
$lang['btn_img_backto'] = 'חזרה אל %s';
-$lang['img_title'] = 'שם';
-$lang['img_caption'] = 'כותרת';
-$lang['img_date'] = 'תאריך';
-$lang['img_fname'] = 'שם הקובץ';
-$lang['img_fsize'] = 'גודל';
-$lang['img_artist'] = 'צלם';
-$lang['img_copyr'] = 'זכויות יוצרים';
-$lang['img_format'] = 'מבנה';
-$lang['img_camera'] = 'מצלמה';
-$lang['img_keywords'] = 'מילות מפתח';
-$lang['img_width'] = 'רוחב';
-$lang['img_height'] = 'גובה';
+$lang['img_title'] = 'שם:';
+$lang['img_caption'] = 'כותרת:';
+$lang['img_date'] = 'תאריך:';
+$lang['img_fname'] = 'שם הקובץ:';
+$lang['img_fsize'] = 'גודל:';
+$lang['img_artist'] = 'צלם:';
+$lang['img_copyr'] = 'זכויות יוצרים:';
+$lang['img_format'] = 'מבנה:';
+$lang['img_camera'] = 'מצלמה:';
+$lang['img_keywords'] = 'מילות מפתח:';
+$lang['img_width'] = 'רוחב:';
+$lang['img_height'] = 'גובה:';
$lang['btn_mediaManager'] = 'צפה במנהל מדיה';
$lang['subscr_subscribe_success'] = '%s נוסף לרשימת המינויים לדף %s';
$lang['subscr_subscribe_error'] = 'אירעה שגיאה בהוספת %s לרשימת המינויים לדף %s';
diff --git a/inc/lang/hi/lang.php b/inc/lang/hi/lang.php
index 95c443ae9..71795191c 100644
--- a/inc/lang/hi/lang.php
+++ b/inc/lang/hi/lang.php
@@ -63,11 +63,11 @@ $lang['profna'] = 'यह विकी प्रोफ़ाइ
$lang['profnochange'] = 'कोई परिवर्तन नहीं, कुछ नहीं करना |';
$lang['resendpwdmissing'] = 'छमा करें, आपको सारे रिक्त स्थान भरने पड़ेंगे |';
$lang['resendpwdsuccess'] = 'आपका नवगुप्तशब्द ईमेल द्वारा सम्प्रेषित कर दिया गया है |';
-$lang['txt_upload'] = 'अपलोड करने के लिए फ़ाइल चुनें';
-$lang['txt_filename'] = 'के रूप में अपलोड करें (वैकल्पिक)';
+$lang['txt_upload'] = 'अपलोड करने के लिए फ़ाइल चुनें:';
+$lang['txt_filename'] = 'के रूप में अपलोड करें (वैकल्पिक):';
$lang['txt_overwrt'] = 'अधिलेखित उपस्थित फ़ाइल';
-$lang['lockedby'] = 'इस समय तक बंद';
-$lang['lockexpire'] = 'बंद समाप्त होगा';
+$lang['lockedby'] = 'इस समय तक बंद:';
+$lang['lockexpire'] = 'बंद समाप्त होगा:';
$lang['js']['hidedetails'] = 'विवरण छिपाएँ';
$lang['nothingfound'] = 'कुच्छ नहीं मिला |';
$lang['uploadexist'] = 'फ़ाइल पहले से उपस्थित है. कुछ भी नहीं किया |';
@@ -81,8 +81,8 @@ $lang['yours'] = 'आपका संस्करणः';
$lang['diff'] = 'वर्तमान संशोधन में मतभेद दिखाइये |';
$lang['diff2'] = 'चयनित संशोधन के बीच में मतभेद दिखाइये |';
$lang['line'] = 'रेखा';
-$lang['youarehere'] = 'आप यहाँ हैं |';
-$lang['lastmod'] = 'अंतिम बार संशोधित';
+$lang['youarehere'] = 'आप यहाँ हैं |:';
+$lang['lastmod'] = 'अंतिम बार संशोधित:';
$lang['by'] = 'के द्वारा';
$lang['deleted'] = 'हटाया';
$lang['created'] = 'निर्मित';
@@ -104,13 +104,13 @@ $lang['qb_hr'] = 'खड़ी रेखा';
$lang['qb_sig'] = 'हस्ताक्षर डालें';
$lang['admin_register'] = 'नया उपयोगकर्ता जोड़ें';
$lang['btn_img_backto'] = 'वापस जाना %s';
-$lang['img_title'] = 'शीर्षक';
-$lang['img_caption'] = 'सहशीर्षक';
-$lang['img_date'] = 'तिथि';
-$lang['img_fsize'] = 'आकार';
-$lang['img_artist'] = 'फोटोग्राफर';
-$lang['img_format'] = 'प्रारूप';
-$lang['img_camera'] = 'कैमरा';
+$lang['img_title'] = 'शीर्षक:';
+$lang['img_caption'] = 'सहशीर्षक:';
+$lang['img_date'] = 'तिथि:';
+$lang['img_fsize'] = 'आकार:';
+$lang['img_artist'] = 'फोटोग्राफर:';
+$lang['img_format'] = 'प्रारूप:';
+$lang['img_camera'] = 'कैमरा:';
$lang['i_chooselang'] = 'अपनी भाषा चुनें';
$lang['i_installer'] = 'डोकुविकी इंस्टॉलर';
$lang['i_wikiname'] = 'विकी का नाम';
diff --git a/inc/lang/hr/lang.php b/inc/lang/hr/lang.php
index 544541ab2..cf2232077 100644
--- a/inc/lang/hr/lang.php
+++ b/inc/lang/hr/lang.php
@@ -47,7 +47,7 @@ $lang['btn_recover'] = 'Vrati prijašnji nacrt dokumenta';
$lang['btn_draftdel'] = 'Obriši nacrt dokumenta';
$lang['btn_revert'] = 'Vrati';
$lang['btn_register'] = 'Registracija';
-$lang['loggedinas'] = 'Prijavljen kao';
+$lang['loggedinas'] = 'Prijavljen kao:';
$lang['user'] = 'Korisničko ime';
$lang['pass'] = 'Lozinka';
$lang['newpass'] = 'Nova lozinka';
@@ -85,11 +85,11 @@ $lang['license'] = 'Osim na mjestima gdje je naznačeno drugačije
$lang['licenseok'] = 'Pažnja: promjenom ovog dokumenta pristajete licencirati sadržaj sljedećom licencom: ';
$lang['searchmedia'] = 'Traži naziv datoteke:';
$lang['searchmedia_in'] = 'Traži u %s';
-$lang['txt_upload'] = 'Odaberite datoteku za postavljanje';
-$lang['txt_filename'] = 'Postaviti kao (nije obavezno)';
+$lang['txt_upload'] = 'Odaberite datoteku za postavljanje:';
+$lang['txt_filename'] = 'Postaviti kao (nije obavezno):';
$lang['txt_overwrt'] = 'Prepiši postojeću datoteku';
-$lang['lockedby'] = 'Zaključao';
-$lang['lockexpire'] = 'Zaključano do';
+$lang['lockedby'] = 'Zaključao:';
+$lang['lockexpire'] = 'Zaključano do:';
$lang['js']['willexpire'] = 'Dokument kojeg mijenjate će biti zaključan još 1 minutu.\n Ukoliko želite i dalje raditi izmjene na dokumentu - kliknite na "Pregled".';
$lang['js']['notsavedyet'] = 'Vaše izmjene će se izgubiti.
Želite li nastaviti?';
@@ -159,9 +159,9 @@ $lang['diff_type'] = 'Razlike u prikazu:';
$lang['diff_inline'] = 'U istoj razini';
$lang['diff_side'] = 'Usporedo';
$lang['line'] = 'Redak';
-$lang['breadcrumb'] = 'Putanja';
-$lang['youarehere'] = 'Vi ste ovdje';
-$lang['lastmod'] = 'Zadnja izmjena';
+$lang['breadcrumb'] = 'Putanja:';
+$lang['youarehere'] = 'Vi ste ovdje:';
+$lang['lastmod'] = 'Zadnja izmjena:';
$lang['by'] = 'od';
$lang['deleted'] = 'obrisano';
$lang['created'] = 'stvoreno';
@@ -205,16 +205,16 @@ $lang['metaedit'] = 'Uredi metapodatake';
$lang['metasaveerr'] = 'Neuspješno zapisivanje metapodataka';
$lang['metasaveok'] = 'Spremljeni metapdaci';
$lang['btn_img_backto'] = 'Povratak na %s';
-$lang['img_title'] = 'Naziv';
-$lang['img_caption'] = 'Naslov';
-$lang['img_date'] = 'Datum';
-$lang['img_fname'] = 'Ime datoteke';
-$lang['img_fsize'] = 'Veličina';
-$lang['img_artist'] = 'Fotograf';
-$lang['img_copyr'] = 'Autorsko pravo';
-$lang['img_format'] = 'Format';
-$lang['img_camera'] = 'Kamera';
-$lang['img_keywords'] = 'Ključne riječi';
+$lang['img_title'] = 'Naziv:';
+$lang['img_caption'] = 'Naslov:';
+$lang['img_date'] = 'Datum:';
+$lang['img_fname'] = 'Ime datoteke:';
+$lang['img_fsize'] = 'Veličina:';
+$lang['img_artist'] = 'Fotograf:';
+$lang['img_copyr'] = 'Autorsko pravo:';
+$lang['img_format'] = 'Format:';
+$lang['img_camera'] = 'Kamera:';
+$lang['img_keywords'] = 'Ključne riječi:';
$lang['subscr_subscribe_success'] = 'Dodan %s u listu pretplatnika za %s';
$lang['subscr_subscribe_error'] = 'Greška kod dodavanja %s u listu pretplatnika za %s';
$lang['subscr_subscribe_noaddress'] = 'Ne postoji adresa povezana sa vašim podacima za prijavu, stoga ne možete biti dodani u listu pretplatnika';
diff --git a/inc/lang/hu/lang.php b/inc/lang/hu/lang.php
index ad70438d9..eb4b4601a 100644
--- a/inc/lang/hu/lang.php
+++ b/inc/lang/hu/lang.php
@@ -13,6 +13,7 @@
* @author Marton Sebok <sebokmarton@gmail.com>
* @author Serenity87HUN <anikototh87@gmail.com>
* @author Marina Vladi <deldadam@gmail.com>
+ * @author Mátyás Jani <jzombi@gmail.com>
*/
$lang['encoding'] = 'utf-8';
$lang['direction'] = 'ltr';
@@ -57,7 +58,9 @@ $lang['btn_register'] = 'Regisztráció';
$lang['btn_apply'] = 'Alkalmaz';
$lang['btn_media'] = 'Médiakezelő';
$lang['btn_deleteuser'] = 'Felhasználói fiókom eltávolítása';
-$lang['loggedinas'] = 'Belépett felhasználó: ';
+$lang['btn_img_backto'] = 'Vissza %s';
+$lang['btn_mediaManager'] = 'Megtekintés a médiakezelőben';
+$lang['loggedinas'] = 'Belépett felhasználó';
$lang['user'] = 'Azonosító';
$lang['pass'] = 'Jelszó';
$lang['newpass'] = 'Új jelszó';
@@ -102,8 +105,8 @@ $lang['license'] = 'Hacsak máshol nincs egyéb rendelkezés, ezen
$lang['licenseok'] = 'Megjegyzés: az oldal szerkesztésével elfogadja, hogy a tartalom a következő licenc alatt lesz elérhető:';
$lang['searchmedia'] = 'Keresett fájl neve:';
$lang['searchmedia_in'] = 'Keresés a következőben: %s';
-$lang['txt_upload'] = 'Válaszd ki a feltöltendő fájlt';
-$lang['txt_filename'] = 'Feltöltési név (elhagyható)';
+$lang['txt_upload'] = 'Válaszd ki a feltöltendő fájlt:';
+$lang['txt_filename'] = 'Feltöltési név (elhagyható):';
$lang['txt_overwrt'] = 'Létező fájl felülírása';
$lang['maxuploadsize'] = 'Maximum %s méretű fájlokat tölthetsz fel.';
$lang['lockedby'] = 'Jelenleg zárolta:';
@@ -187,10 +190,15 @@ $lang['difflink'] = 'Összehasonlító nézet linkje';
$lang['diff_type'] = 'Összehasonlítás módja:';
$lang['diff_inline'] = 'Sorok között';
$lang['diff_side'] = 'Egymás mellett';
+$lang['diffprevrev'] = 'Előző változat';
+$lang['diffnextrev'] = 'Következő változat';
+$lang['difflastrev'] = 'Utolsó változat';
+$lang['diffbothprevrev'] = 'Előző változat mindkét oldalon';
+$lang['diffbothnextrev'] = 'Következő változat mindkét oldalon';
$lang['line'] = 'Sor';
-$lang['breadcrumb'] = 'Nyomvonal';
-$lang['youarehere'] = 'Itt vagy';
-$lang['lastmod'] = 'Utolsó módosítás';
+$lang['breadcrumb'] = 'Nyomvonal:';
+$lang['youarehere'] = 'Itt vagy:';
+$lang['lastmod'] = 'Utolsó módosítás:';
$lang['by'] = 'szerkesztette:';
$lang['deleted'] = 'eltávolítva';
$lang['created'] = 'létrehozva';
@@ -243,20 +251,18 @@ $lang['admin_register'] = 'Új felhasználó';
$lang['metaedit'] = 'Metaadatok szerkesztése';
$lang['metasaveerr'] = 'A metaadatok írása nem sikerült';
$lang['metasaveok'] = 'Metaadatok elmentve';
-$lang['btn_img_backto'] = 'Vissza %s';
-$lang['img_title'] = 'Cím';
-$lang['img_caption'] = 'Képaláírás';
-$lang['img_date'] = 'Dátum';
-$lang['img_fname'] = 'Fájlnév';
-$lang['img_fsize'] = 'Méret';
-$lang['img_artist'] = 'Készítette';
-$lang['img_copyr'] = 'Szerzői jogok';
-$lang['img_format'] = 'Formátum';
-$lang['img_camera'] = 'Fényképezőgép típusa';
-$lang['img_keywords'] = 'Kulcsszavak';
-$lang['img_width'] = 'Szélesség';
-$lang['img_height'] = 'Magasság';
-$lang['btn_mediaManager'] = 'Megtekintés a médiakezelőben';
+$lang['img_title'] = 'Cím:';
+$lang['img_caption'] = 'Képaláírás:';
+$lang['img_date'] = 'Dátum:';
+$lang['img_fname'] = 'Fájlnév:';
+$lang['img_fsize'] = 'Méret:';
+$lang['img_artist'] = 'Készítette:';
+$lang['img_copyr'] = 'Szerzői jogok:';
+$lang['img_format'] = 'Formátum:';
+$lang['img_camera'] = 'Fényképezőgép típusa:';
+$lang['img_keywords'] = 'Kulcsszavak:';
+$lang['img_width'] = 'Szélesség:';
+$lang['img_height'] = 'Magasság:';
$lang['subscr_subscribe_success'] = '%s hozzáadva az értesítési listához: %s';
$lang['subscr_subscribe_error'] = 'Hiba történt %s hozzáadásakor az értesítési listához: %s';
$lang['subscr_subscribe_noaddress'] = 'Nincs e-mail cím megadva az adataidnál, így a rendszer nem tudott hozzáadni az értesítési listához';
diff --git a/inc/lang/ia/lang.php b/inc/lang/ia/lang.php
index 1cc9bd8b5..cabbbab93 100644
--- a/inc/lang/ia/lang.php
+++ b/inc/lang/ia/lang.php
@@ -50,7 +50,7 @@ $lang['btn_recover'] = 'Recuperar version provisori';
$lang['btn_draftdel'] = 'Deler version provisori';
$lang['btn_revert'] = 'Restaurar';
$lang['btn_register'] = 'Crear conto';
-$lang['loggedinas'] = 'Session aperite como';
+$lang['loggedinas'] = 'Session aperite como:';
$lang['user'] = 'Nomine de usator';
$lang['pass'] = 'Contrasigno';
$lang['newpass'] = 'Nove contrasigno';
@@ -88,11 +88,11 @@ $lang['license'] = 'Excepte ubi indicate alteremente, le contento
$lang['licenseok'] = 'Nota ben! Per modificar iste pagina tu accepta que tu contento essera publicate sub le conditiones del licentia sequente:';
$lang['searchmedia'] = 'Cercar file con nomine:';
$lang['searchmedia_in'] = 'Cercar in %s';
-$lang['txt_upload'] = 'Selige le file a incargar';
-$lang['txt_filename'] = 'Incargar como (optional)';
+$lang['txt_upload'] = 'Selige le file a incargar:';
+$lang['txt_filename'] = 'Incargar como (optional):';
$lang['txt_overwrt'] = 'Reimplaciar le file existente';
-$lang['lockedby'] = 'Actualmente serrate per';
-$lang['lockexpire'] = 'Serratura expira le';
+$lang['lockedby'] = 'Actualmente serrate per:';
+$lang['lockexpire'] = 'Serratura expira le:';
$lang['js']['willexpire'] = 'Tu serratura super le modification de iste pagina expirara post un minuta.\nPro evitar conflictos, usa le button Previsualisar pro reinitialisar le timer del serratura.';
$lang['js']['notsavedyet'] = 'Le modificationes non salveguardate essera perdite.\nRealmente continuar?';
$lang['rssfailed'] = 'Un error occurreva durante le obtention de iste syndication:';
@@ -157,9 +157,9 @@ $lang['yours'] = 'Tu version';
$lang['diff'] = 'Monstrar differentias con versiones actual';
$lang['diff2'] = 'Monstrar differentias inter le versiones seligite';
$lang['line'] = 'Linea';
-$lang['breadcrumb'] = 'Tracia';
-$lang['youarehere'] = 'Tu es hic';
-$lang['lastmod'] = 'Ultime modification';
+$lang['breadcrumb'] = 'Tracia:';
+$lang['youarehere'] = 'Tu es hic:';
+$lang['lastmod'] = 'Ultime modification:';
$lang['by'] = 'per';
$lang['deleted'] = 'removite';
$lang['created'] = 'create';
@@ -203,16 +203,16 @@ $lang['metaedit'] = 'Modificar metadatos';
$lang['metasaveerr'] = 'Scriptura de metadatos fallite';
$lang['metasaveok'] = 'Metadatos salveguardate';
$lang['btn_img_backto'] = 'Retornar a %s';
-$lang['img_title'] = 'Titulo';
-$lang['img_caption'] = 'Legenda';
-$lang['img_date'] = 'Data';
-$lang['img_fname'] = 'Nomine de file';
-$lang['img_fsize'] = 'Dimension';
-$lang['img_artist'] = 'Photographo';
-$lang['img_copyr'] = 'Copyright';
-$lang['img_format'] = 'Formato';
-$lang['img_camera'] = 'Camera';
-$lang['img_keywords'] = 'Parolas-clave';
+$lang['img_title'] = 'Titulo:';
+$lang['img_caption'] = 'Legenda:';
+$lang['img_date'] = 'Data:';
+$lang['img_fname'] = 'Nomine de file:';
+$lang['img_fsize'] = 'Dimension:';
+$lang['img_artist'] = 'Photographo:';
+$lang['img_copyr'] = 'Copyright:';
+$lang['img_format'] = 'Formato:';
+$lang['img_camera'] = 'Camera:';
+$lang['img_keywords'] = 'Parolas-clave:';
$lang['subscr_subscribe_success'] = '%s addite al lista de subscription de %s';
$lang['subscr_subscribe_error'] = 'Error durante le addition de %s al lista de subscription de %s';
$lang['subscr_subscribe_noaddress'] = 'Il non ha un adresse associate con tu conto. Tu non pote esser addite al lista de subscription.';
diff --git a/inc/lang/id-ni/lang.php b/inc/lang/id-ni/lang.php
index 7a1179326..1ff714f3e 100644
--- a/inc/lang/id-ni/lang.php
+++ b/inc/lang/id-ni/lang.php
@@ -41,7 +41,7 @@ $lang['btn_reset'] = 'Fawu\'a';
$lang['btn_draft'] = 'Fawu\'a wanura';
$lang['btn_draftdel'] = 'Heta zura';
$lang['btn_register'] = 'Fasura\'ö';
-$lang['loggedinas'] = 'Möi bakha zotöi';
+$lang['loggedinas'] = 'Möi bakha zotöi:';
$lang['user'] = 'Töi';
$lang['pass'] = 'Kode';
$lang['newpass'] = 'Kode sibohou';
@@ -72,6 +72,6 @@ $lang['resendpwdmissing'] = 'Bologö dödöu, si lö tola lö\'ö öfo\'ös
$lang['resendpwdnouser'] = 'Bologö dödöu, lö masöndra zangoguna da\'a ba database.';
$lang['resendpwdconfirm'] = 'No tefaohe\'ö link famaduhu\'ö ba imele.';
$lang['resendpwdsuccess'] = 'No tefa\'ohe\'ö kode sibohou ba imele.';
-$lang['txt_upload'] = 'Fili file ni fa\'ohe\'ö';
+$lang['txt_upload'] = 'Fili file ni fa\'ohe\'ö:';
$lang['js']['notsavedyet'] = 'Famawu\'a si lö mu\'irö\'ö taya. \nSinduhu ötohugö?';
$lang['mediaselect'] = 'Media file';
diff --git a/inc/lang/id/lang.php b/inc/lang/id/lang.php
index 481ff2fbd..ff77cf24d 100644
--- a/inc/lang/id/lang.php
+++ b/inc/lang/id/lang.php
@@ -55,7 +55,7 @@ $lang['btn_media'] = 'Pengelola Media';
$lang['btn_deleteuser'] = 'Hapus Akun Saya';
$lang['btn_img_backto'] = 'Kembali ke %s';
$lang['btn_mediaManager'] = 'Tampilkan di pengelola media';
-$lang['loggedinas'] = 'Login sebagai ';
+$lang['loggedinas'] = 'Login sebagai :';
$lang['user'] = 'Username';
$lang['pass'] = 'Password';
$lang['newpass'] = 'Password baru';
@@ -100,12 +100,12 @@ $lang['license'] = 'Kecuali jika dinyatakan lain, konten pada wiki
$lang['licenseok'] = 'Catatan: Dengan menyunting halaman ini, Anda setuju untuk melisensikan konten Anda dibawah lisensi berikut:';
$lang['searchmedia'] = 'Cari nama file:';
$lang['searchmedia_in'] = 'Cari di %s';
-$lang['txt_upload'] = 'File yang akan diupload';
-$lang['txt_filename'] = 'Masukkan nama wiki (opsional)';
+$lang['txt_upload'] = 'File yang akan diupload:';
+$lang['txt_filename'] = 'Masukkan nama wiki (opsional):';
$lang['txt_overwrt'] = 'File yang telah ada akan ditindih';
$lang['maxuploadsize'] = 'Unggah maks. %s per berkas';
-$lang['lockedby'] = 'Sedang dikunci oleh';
-$lang['lockexpire'] = 'Penguncian artikel sampai dengan';
+$lang['lockedby'] = 'Sedang dikunci oleh:';
+$lang['lockexpire'] = 'Penguncian artikel sampai dengan:';
$lang['js']['willexpire'] = 'Halaman yang sedang Anda kunci akan berakhir dalam waktu kurang lebih satu menit.\nUntuk menghindari konflik, gunakan tombol Preview untuk me-reset timer pengunci.';
$lang['js']['notsavedyet'] = 'Perubahan yang belum disimpan akan hilang.\nYakin akan dilanjutkan?';
$lang['js']['searchmedia'] = 'Cari file';
@@ -188,9 +188,9 @@ $lang['diffprevrev'] = 'Revisi sebelumnya';
$lang['diffnextrev'] = 'Revisi selanjutnya';
$lang['difflastrev'] = 'Revisi terakhir';
$lang['line'] = 'Baris';
-$lang['breadcrumb'] = 'Jejak';
-$lang['youarehere'] = 'Anda disini';
-$lang['lastmod'] = 'Terakhir diubah';
+$lang['breadcrumb'] = 'Jejak:';
+$lang['youarehere'] = 'Anda disini:';
+$lang['lastmod'] = 'Terakhir diubah:';
$lang['by'] = 'oleh';
$lang['deleted'] = 'terhapus';
$lang['created'] = 'dibuat';
@@ -242,18 +242,18 @@ $lang['admin_register'] = 'Tambah user baru';
$lang['metaedit'] = 'Edit Metadata';
$lang['metasaveerr'] = 'Gagal menulis metadata';
$lang['metasaveok'] = 'Metadata tersimpan';
-$lang['img_title'] = 'Judul';
-$lang['img_caption'] = 'Label';
-$lang['img_date'] = 'Tanggal';
-$lang['img_fname'] = 'Nama file';
-$lang['img_fsize'] = 'Ukuran';
-$lang['img_artist'] = 'Tukang foto';
-$lang['img_copyr'] = 'Hakcipta';
-$lang['img_format'] = 'Format';
-$lang['img_camera'] = 'Kamera';
-$lang['img_keywords'] = 'Katakunci';
-$lang['img_width'] = 'Lebar';
-$lang['img_height'] = 'Tinggi';
+$lang['img_title'] = 'Judul:';
+$lang['img_caption'] = 'Label:';
+$lang['img_date'] = 'Tanggal:';
+$lang['img_fname'] = 'Nama file:';
+$lang['img_fsize'] = 'Ukuran:';
+$lang['img_artist'] = 'Tukang foto:';
+$lang['img_copyr'] = 'Hakcipta:';
+$lang['img_format'] = 'Format:';
+$lang['img_camera'] = 'Kamera:';
+$lang['img_keywords'] = 'Katakunci:';
+$lang['img_width'] = 'Lebar:';
+$lang['img_height'] = 'Tinggi:';
$lang['subscr_subscribe_success'] = 'Menambah %s ke senarai langganan untuk %s';
$lang['subscr_subscribe_error'] = 'Kesalahan menambahkan %s ke senarai langganan untuk %s';
$lang['subscr_subscribe_noaddress'] = 'Tidak ada alamat yang terkait dengan login Anda, Anda tidak dapat ditambahkan ke senarai langganan';
diff --git a/inc/lang/is/lang.php b/inc/lang/is/lang.php
index 219431a42..de1a01ed5 100644
--- a/inc/lang/is/lang.php
+++ b/inc/lang/is/lang.php
@@ -51,7 +51,7 @@ $lang['btn_recover'] = 'Endurheimta uppkast';
$lang['btn_draftdel'] = 'Eyða uppkasti';
$lang['btn_revert'] = 'Endurheimta';
$lang['btn_register'] = 'Skráning';
-$lang['loggedinas'] = 'Innskráning sem';
+$lang['loggedinas'] = 'Innskráning sem:';
$lang['user'] = 'Notendanafn';
$lang['pass'] = 'Aðgangsorð';
$lang['newpass'] = 'Nýtt aðgangsorð';
@@ -89,11 +89,11 @@ $lang['license'] = 'Nema annað sé tekið fram, efni á þessari
$lang['licenseok'] = 'Athugið: Með því að breyta þessari síðu samþykkir þú að leyfisveitandi efni undir eftirfarandi leyfi:';
$lang['searchmedia'] = 'Leit skrárheiti:';
$lang['searchmedia_in'] = 'Leit í %s';
-$lang['txt_upload'] = 'Veldu skrá til innhleðslu';
-$lang['txt_filename'] = 'Innhlaða sem (valfrjálst)';
+$lang['txt_upload'] = 'Veldu skrá til innhleðslu:';
+$lang['txt_filename'] = 'Innhlaða sem (valfrjálst):';
$lang['txt_overwrt'] = 'Skrifa yfir skrá sem þegar er til';
-$lang['lockedby'] = 'Læstur af';
-$lang['lockexpire'] = 'Læsing rennur út eftir';
+$lang['lockedby'] = 'Læstur af:';
+$lang['lockexpire'] = 'Læsing rennur út eftir:';
$lang['nothingfound'] = 'Ekkert fannst';
$lang['mediaselect'] = 'Miðlaskrá';
$lang['fileupload'] = 'Hlaða inn miðlaskrá';
@@ -127,9 +127,9 @@ $lang['yours'] = 'Þín útgáfa';
$lang['diff'] = 'Sýna ágreiningur til núverandi endurskoðun';
$lang['diff2'] = 'Sýna ágreiningur meðal valið endurskoðun';
$lang['line'] = 'Lína';
-$lang['breadcrumb'] = 'Snefill';
-$lang['youarehere'] = 'Þú ert hér';
-$lang['lastmod'] = 'Síðast breytt';
+$lang['breadcrumb'] = 'Snefill:';
+$lang['youarehere'] = 'Þú ert hér:';
+$lang['lastmod'] = 'Síðast breytt:';
$lang['by'] = 'af';
$lang['deleted'] = 'eytt';
$lang['created'] = 'myndað';
@@ -171,14 +171,14 @@ $lang['metaedit'] = 'Breyta lýsigögnum';
$lang['metasaveerr'] = 'Vistun lýsigagna mistókst';
$lang['metasaveok'] = 'Lýsigögn vistuð';
$lang['btn_img_backto'] = 'Aftur til %s';
-$lang['img_title'] = 'Heiti';
-$lang['img_caption'] = 'Skýringartexti';
-$lang['img_date'] = 'Dagsetning';
-$lang['img_fname'] = 'Skrárheiti';
-$lang['img_fsize'] = 'Stærð';
-$lang['img_artist'] = 'Myndsmiður';
-$lang['img_copyr'] = 'Útgáfuréttur';
-$lang['img_format'] = 'Forsnið';
-$lang['img_camera'] = 'Myndavél';
-$lang['img_keywords'] = 'Lykilorðir';
+$lang['img_title'] = 'Heiti:';
+$lang['img_caption'] = 'Skýringartexti:';
+$lang['img_date'] = 'Dagsetning:';
+$lang['img_fname'] = 'Skrárheiti:';
+$lang['img_fsize'] = 'Stærð:';
+$lang['img_artist'] = 'Myndsmiður:';
+$lang['img_copyr'] = 'Útgáfuréttur:';
+$lang['img_format'] = 'Forsnið:';
+$lang['img_camera'] = 'Myndavél:';
+$lang['img_keywords'] = 'Lykilorðir:';
$lang['i_retry'] = 'Reyna aftur';
diff --git a/inc/lang/it/lang.php b/inc/lang/it/lang.php
index eefcec9db..a3017a92e 100644
--- a/inc/lang/it/lang.php
+++ b/inc/lang/it/lang.php
@@ -17,6 +17,8 @@
* @author snarchio@gmail.com
* @author Edmondo Di Tucci <snarchio@gmail.com>
* @author Claudio Lanconelli <lancos@libero.it>
+ * @author Mirko <malisan.mirko@gmail.com>
+ * @author Francesco <francesco.cavalli@hotmail.com>
*/
$lang['encoding'] = 'utf-8';
$lang['direction'] = 'ltr';
@@ -61,7 +63,9 @@ $lang['btn_register'] = 'Registrazione';
$lang['btn_apply'] = 'Applica';
$lang['btn_media'] = 'Gestore Media';
$lang['btn_deleteuser'] = 'Rimuovi il mio account';
-$lang['loggedinas'] = 'Collegato come';
+$lang['btn_img_backto'] = 'Torna a %s';
+$lang['btn_mediaManager'] = 'Guarda nel gestore media';
+$lang['loggedinas'] = 'Collegato come:';
$lang['user'] = 'Nome utente';
$lang['pass'] = 'Password';
$lang['newpass'] = 'Nuova password';
@@ -106,12 +110,12 @@ $lang['license'] = 'Ad eccezione da dove è diversamente indicato,
$lang['licenseok'] = 'Nota: modificando questa pagina accetti di rilasciare il contenuto sotto la seguente licenza:';
$lang['searchmedia'] = 'Cerca file di nome:';
$lang['searchmedia_in'] = 'Cerca in %s';
-$lang['txt_upload'] = 'Seleziona un file da caricare';
-$lang['txt_filename'] = 'Carica come (opzionale)';
+$lang['txt_upload'] = 'Seleziona un file da caricare:';
+$lang['txt_filename'] = 'Carica come (opzionale):';
$lang['txt_overwrt'] = 'Sovrascrivi file esistente';
$lang['maxuploadsize'] = 'Upload max. %s per ogni file.';
-$lang['lockedby'] = 'Attualmente bloccato da';
-$lang['lockexpire'] = 'Il blocco scade alle';
+$lang['lockedby'] = 'Attualmente bloccato da:';
+$lang['lockexpire'] = 'Il blocco scade alle:';
$lang['js']['willexpire'] = 'Il tuo blocco su questa pagina scadrà tra circa un minuto.\nPer evitare incongruenze usa il pulsante di anteprima per prolungare il periodo di blocco.';
$lang['js']['notsavedyet'] = 'Le modifiche non salvate andranno perse.';
$lang['js']['searchmedia'] = 'Cerca file';
@@ -146,6 +150,7 @@ $lang['js']['del_confirm'] = 'Eliminare veramente questa voce?';
$lang['js']['restore_confirm'] = 'Vuoi davvero ripristinare questa versione?';
$lang['js']['media_diff'] = 'Guarda le differenze:';
$lang['js']['media_diff_both'] = 'Fianco a Fianco';
+$lang['js']['media_diff_portions'] = 'rubare';
$lang['js']['media_select'] = 'Seleziona files..';
$lang['js']['media_upload_btn'] = 'Upload';
$lang['js']['media_done_btn'] = 'Fatto';
@@ -189,10 +194,13 @@ $lang['difflink'] = 'Link a questa pagina di confronto';
$lang['diff_type'] = 'Guarda le differenze:';
$lang['diff_inline'] = 'In linea';
$lang['diff_side'] = 'Fianco a Fianco';
+$lang['diffprevrev'] = 'Revisione precedente';
+$lang['diffnextrev'] = 'Prossima revisione';
+$lang['difflastrev'] = 'Ultima revisione';
$lang['line'] = 'Linea';
-$lang['breadcrumb'] = 'Traccia';
-$lang['youarehere'] = 'Ti trovi qui';
-$lang['lastmod'] = 'Ultima modifica';
+$lang['breadcrumb'] = 'Traccia:';
+$lang['youarehere'] = 'Ti trovi qui:';
+$lang['lastmod'] = 'Ultima modifica:';
$lang['by'] = 'da';
$lang['deleted'] = 'eliminata';
$lang['created'] = 'creata';
@@ -245,20 +253,18 @@ $lang['admin_register'] = 'Aggiungi un nuovo utente';
$lang['metaedit'] = 'Modifica metadati';
$lang['metasaveerr'] = 'Scrittura metadati fallita';
$lang['metasaveok'] = 'Metadati salvati';
-$lang['btn_img_backto'] = 'Torna a %s';
-$lang['img_title'] = 'Titolo';
-$lang['img_caption'] = 'Descrizione';
-$lang['img_date'] = 'Data';
-$lang['img_fname'] = 'Nome File';
-$lang['img_fsize'] = 'Dimensione';
-$lang['img_artist'] = 'Autore';
-$lang['img_copyr'] = 'Copyright';
-$lang['img_format'] = 'Formato';
-$lang['img_camera'] = 'Camera';
-$lang['img_keywords'] = 'Parole chiave';
-$lang['img_width'] = 'Larghezza';
-$lang['img_height'] = 'Altezza';
-$lang['btn_mediaManager'] = 'Guarda nel gestore media';
+$lang['img_title'] = 'Titolo:';
+$lang['img_caption'] = 'Descrizione:';
+$lang['img_date'] = 'Data:';
+$lang['img_fname'] = 'Nome File:';
+$lang['img_fsize'] = 'Dimensione:';
+$lang['img_artist'] = 'Autore:';
+$lang['img_copyr'] = 'Copyright:';
+$lang['img_format'] = 'Formato:';
+$lang['img_camera'] = 'Camera:';
+$lang['img_keywords'] = 'Parole chiave:';
+$lang['img_width'] = 'Larghezza:';
+$lang['img_height'] = 'Altezza:';
$lang['subscr_subscribe_success'] = 'Aggiunto %s alla lista di sottoscrizioni %s';
$lang['subscr_subscribe_error'] = 'Impossibile aggiungere %s alla lista di sottoscrizioni %s';
$lang['subscr_subscribe_noaddress'] = 'Non esiste alcun indirizzo associato al tuo account, non puoi essere aggiunto alla lista di sottoscrizioni';
@@ -337,4 +343,6 @@ $lang['media_perm_read'] = 'Spiacente, non hai abbastanza privilegi per le
$lang['media_perm_upload'] = 'Spiacente, non hai abbastanza privilegi per caricare files.';
$lang['media_update'] = 'Carica nuova versione';
$lang['media_restore'] = 'Ripristina questa versione';
+$lang['currentns'] = 'Namespace corrente';
$lang['searchresult'] = 'Risultati della ricerca';
+$lang['plainhtml'] = 'HTML';
diff --git a/inc/lang/ja/lang.php b/inc/lang/ja/lang.php
index 782689fa3..e3eb4c7c7 100644
--- a/inc/lang/ja/lang.php
+++ b/inc/lang/ja/lang.php
@@ -11,6 +11,7 @@
* @author Satoshi Sahara <sahara.satoshi@gmail.com>
* @author Hideaki SAWADA <chuno@live.jp>
* @author Hideaki SAWADA <sawadakun@live.jp>
+ * @author PzF_X <jp_minecraft@yahoo.co.jp>
*/
$lang['encoding'] = 'utf-8';
$lang['direction'] = 'ltr';
@@ -55,7 +56,9 @@ $lang['btn_register'] = 'ユーザー登録';
$lang['btn_apply'] = '適用';
$lang['btn_media'] = 'メディアマネージャー';
$lang['btn_deleteuser'] = '自分のアカウントの抹消';
-$lang['loggedinas'] = 'ようこそ';
+$lang['btn_img_backto'] = '戻る %s';
+$lang['btn_mediaManager'] = 'メディアマネージャーで閲覧';
+$lang['loggedinas'] = 'ようこそ:';
$lang['user'] = 'ユーザー名';
$lang['pass'] = 'パスワード';
$lang['newpass'] = '新しいパスワード';
@@ -100,12 +103,12 @@ $lang['license'] = '特に明示されていない限り、本Wiki
$lang['licenseok'] = '注意: 本ページを編集することは、あなたの編集した内容が次のライセンスに従うことに同意したものとみなします:';
$lang['searchmedia'] = '検索ファイル名:';
$lang['searchmedia_in'] = '%s 内を検索';
-$lang['txt_upload'] = 'アップロードするファイルを選んでください。';
-$lang['txt_filename'] = '名前を変更してアップロード(オプション)';
+$lang['txt_upload'] = 'アップロードするファイルを選んでください。:';
+$lang['txt_filename'] = '名前を変更してアップロード(オプション):';
$lang['txt_overwrt'] = '既存のファイルを上書き';
$lang['maxuploadsize'] = 'アップロード上限サイズ %s /ファイル';
-$lang['lockedby'] = 'この文書は次のユーザーによってロックされています';
-$lang['lockexpire'] = 'ロック期限:';
+$lang['lockedby'] = 'この文書は次のユーザーによってロックされています:';
+$lang['lockexpire'] = 'ロック期限::';
$lang['js']['willexpire'] = '編集中の文書はロック期限を過ぎようとしています。このままロックする場合は、一度文書の確認を行って期限をリセットしてください。';
$lang['js']['notsavedyet'] = '変更は保存されません。このまま処理を続けてよろしいですか?';
$lang['js']['searchmedia'] = 'ファイル検索';
@@ -184,10 +187,15 @@ $lang['difflink'] = 'この比較画面にリンクする';
$lang['diff_type'] = '差分の表示方法:';
$lang['diff_inline'] = 'インライン';
$lang['diff_side'] = '横に並べる';
+$lang['diffprevrev'] = '前のリビジョン';
+$lang['diffnextrev'] = '次のリビジョン';
+$lang['difflastrev'] = '最新リビジョン';
+$lang['diffbothprevrev'] = '両方とも前のリビジョン';
+$lang['diffbothnextrev'] = '両方とも次のリビジョン';
$lang['line'] = 'ライン';
-$lang['breadcrumb'] = 'トレース';
-$lang['youarehere'] = '現在位置';
-$lang['lastmod'] = '最終更新';
+$lang['breadcrumb'] = 'トレース:';
+$lang['youarehere'] = '現在位置:';
+$lang['lastmod'] = '最終更新:';
$lang['by'] = 'by';
$lang['deleted'] = '削除';
$lang['created'] = '作成';
@@ -240,20 +248,18 @@ $lang['admin_register'] = '新規ユーザー作成';
$lang['metaedit'] = 'メタデータ編集';
$lang['metasaveerr'] = 'メタデータの書き込みに失敗しました';
$lang['metasaveok'] = 'メタデータは保存されました';
-$lang['btn_img_backto'] = '戻る %s';
-$lang['img_title'] = 'タイトル';
-$lang['img_caption'] = '見出し';
-$lang['img_date'] = '日付';
-$lang['img_fname'] = 'ファイル名';
-$lang['img_fsize'] = 'サイズ';
-$lang['img_artist'] = '作成者';
-$lang['img_copyr'] = '著作権';
-$lang['img_format'] = 'フォーマット';
-$lang['img_camera'] = '使用カメラ';
-$lang['img_keywords'] = 'キーワード';
-$lang['img_width'] = '幅';
-$lang['img_height'] = '高さ';
-$lang['btn_mediaManager'] = 'メディアマネージャーで閲覧';
+$lang['img_title'] = 'タイトル:';
+$lang['img_caption'] = '見出し:';
+$lang['img_date'] = '日付:';
+$lang['img_fname'] = 'ファイル名:';
+$lang['img_fsize'] = 'サイズ:';
+$lang['img_artist'] = '作成者:';
+$lang['img_copyr'] = '著作権:';
+$lang['img_format'] = 'フォーマット:';
+$lang['img_camera'] = '使用カメラ:';
+$lang['img_keywords'] = 'キーワード:';
+$lang['img_width'] = '幅:';
+$lang['img_height'] = '高さ:';
$lang['subscr_subscribe_success'] = '%sが%sの購読リストに登録されました。';
$lang['subscr_subscribe_error'] = '%sを%sの購読リストへの追加に失敗しました。';
$lang['subscr_subscribe_noaddress'] = 'あなたのログインに対応するアドレスがないため、購読リストへ追加することができません。';
diff --git a/inc/lang/ka/lang.php b/inc/lang/ka/lang.php
index bdf0f1997..28ca11e45 100644
--- a/inc/lang/ka/lang.php
+++ b/inc/lang/ka/lang.php
@@ -50,7 +50,7 @@ $lang['btn_media'] = 'მედია ფაილების მ
$lang['btn_deleteuser'] = 'ჩემი ექაუნთის წაშლა';
$lang['btn_img_backto'] = 'უკან %';
$lang['btn_mediaManager'] = 'მედია ფაილების მმართველში გახსნა';
-$lang['loggedinas'] = 'შესული ხართ როგორც';
+$lang['loggedinas'] = 'შესული ხართ როგორც:';
$lang['user'] = 'ლოგინი';
$lang['pass'] = 'პაროლი';
$lang['newpass'] = 'ახალი პაროლი';
@@ -95,12 +95,12 @@ $lang['license'] = 'ვიკი ლიცენზირებუ
$lang['licenseok'] = 'ამ გვერდის რედაქტირებით თვენ ეთანხმებით ლიცენზიას:';
$lang['searchmedia'] = 'საძებო სახელი:';
$lang['searchmedia_in'] = 'ძებნა %-ში';
-$lang['txt_upload'] = 'აირჩიეთ ასატვირთი ფაილი';
-$lang['txt_filename'] = 'ატვირთვა როგორც (არჩევითი)';
+$lang['txt_upload'] = 'აირჩიეთ ასატვირთი ფაილი:';
+$lang['txt_filename'] = 'ატვირთვა როგორც (არჩევითი):';
$lang['txt_overwrt'] = 'გადაწერა ზემოდან';
$lang['maxuploadsize'] = 'მაქსიმალური ზომა %';
-$lang['lockedby'] = 'დაბლოკილია';
-$lang['lockexpire'] = 'განიბლოკება';
+$lang['lockedby'] = 'დაბლოკილია:';
+$lang['lockexpire'] = 'განიბლოკება:';
$lang['js']['willexpire'] = 'გვერდი განიბლოკება 1 წუთში';
$lang['js']['notsavedyet'] = 'შეუნახავი მონაცემები წაიშლება';
$lang['js']['searchmedia'] = 'ძებნა';
@@ -115,3 +115,212 @@ $lang['js']['mediaclose'] = 'დახურვა';
$lang['js']['mediainsert'] = 'ჩასმა';
$lang['js']['mediadisplayimg'] = 'სურათის ნახვა';
$lang['js']['mediadisplaylnk'] = 'მაჩვენე მხოლოდ ბმული';
+$lang['js']['mediasmall'] = 'მცირე ვერსია';
+$lang['js']['mediamedium'] = 'საშუალო ვერსია';
+$lang['js']['medialarge'] = 'ვრცელი ვერსია';
+$lang['js']['mediaoriginal'] = 'ორიგინალი ვერსია';
+$lang['js']['medialnk'] = 'დაწვრილებით';
+$lang['js']['mediadirect'] = 'ორიგინალი';
+$lang['js']['medianolnk'] = 'ბმული არ არის';
+$lang['js']['medianolink'] = 'არ დალინკოთ სურათი';
+$lang['js']['medialeft'] = 'მარცხვნივ განათავსეთ სურათი';
+$lang['js']['mediaright'] = 'მარჯვნივ განათავსეთ სურათი';
+$lang['js']['mediacenter'] = 'შუაში განათავსეთ სურათი';
+$lang['js']['medianoalign'] = 'Use no align.';
+$lang['js']['nosmblinks'] = 'ეს ფუქნცია მუშაობს მხოლოდ Internet Explorer-ზე';
+$lang['js']['linkwiz'] = 'ბმული';
+$lang['js']['linkto'] = 'ბმული';
+$lang['js']['del_confirm'] = 'დარწმუნებული ხართ რომ წაშლა გინდათ?';
+$lang['js']['restore_confirm'] = 'დარწმუნებული ხართ რომ აღდგენა გინდათ?';
+$lang['js']['media_diff'] = 'განსხვავებების ჩვენება';
+$lang['js']['media_diff_both'] = 'გვერდიგვერდ';
+$lang['js']['media_diff_opacity'] = 'Shine-through';
+$lang['js']['media_diff_portions'] = 'Swipe
+';
+$lang['js']['media_select'] = 'არჩეული ფაილები';
+$lang['js']['media_upload_btn'] = 'ატვირთვა';
+$lang['js']['media_done_btn'] = 'მზადაა';
+$lang['js']['media_drop'] = 'ჩაყარეთ ასატვირთი ფაილები';
+$lang['js']['media_cancel'] = 'წაშლა';
+$lang['js']['media_overwrt'] = 'გადაწერა ზემოდან';
+$lang['rssfailed'] = 'დაფიქსირდა შეცდომა:';
+$lang['nothingfound'] = 'ნაპოვნი არ არის';
+$lang['mediaselect'] = 'მედია ფაილები';
+$lang['fileupload'] = 'მედია ფაილების ატვირთვა';
+$lang['uploadsucc'] = 'ატვირთვა დასრულებულია';
+$lang['uploadfail'] = 'შეფერხება ატვირთვისას';
+$lang['uploadwrong'] = 'ატვირთვა შეუძლებელია';
+$lang['uploadexist'] = 'ფაილი უკვე არსებობს';
+$lang['uploadbadcontent'] = 'ატვირთული ფაილები არ ემთხვევა ';
+$lang['uploadspam'] = 'ატვირთვა დაბლოკილია სპამბლოკერის მიერ';
+$lang['uploadxss'] = 'ატვირთვა დაბლოკილია';
+$lang['uploadsize'] = 'ასატვირთი ფაილი ზედმეტად დიდია';
+$lang['deletesucc'] = '% ფაილები წაიშალა';
+$lang['deletefail'] = '% ვერ მოიძებნა';
+$lang['mediainuse'] = 'ფაილის % ვერ წაიშალა, რადგან გამოყენებაშია';
+$lang['namespaces'] = 'Namespaces';
+$lang['mediafiles'] = 'არსებული ფაილები';
+$lang['accessdenied'] = 'თქვენ არ შეგიძლიათ გვერდის ნახვა';
+$lang['mediausage'] = 'Use the following syntax to reference this file:';
+$lang['mediaview'] = 'ორიგინალი ფაილის ჩვენება';
+$lang['mediaroot'] = 'root';
+$lang['mediaupload'] = 'Upload a file to the current namespace here. To create subnamespaces, prepend them to your filename separated by colons after you selected the files. Files can also be selected by drag and drop.';
+$lang['mediaextchange'] = 'Filextension changed from .%s to .%s!';
+$lang['reference'] = 'References for';
+$lang['ref_inuse'] = 'ფაილი წაშლა შეუძლებელია, გამოიყენება აქ:';
+$lang['ref_hidden'] = 'ზოგიერთი ბლოკის წაკითხვის უფლება არ გაქვთ';
+$lang['hits'] = 'Hits';
+$lang['quickhits'] = 'მსგავსი სახელები';
+$lang['toc'] = 'Table of Contents';
+$lang['current'] = 'ახლანდელი';
+$lang['yours'] = 'თვენი ვერსია';
+$lang['diff'] = 'ვერსიების განსხვავება';
+$lang['diff2'] = 'განსხვავებები';
+$lang['difflink'] = 'Link to this comparison view';
+$lang['diff_type'] = 'განსხვავებების ჩვენება';
+$lang['diff_inline'] = 'Inline';
+$lang['diff_side'] = 'გვერდიგვერდ';
+$lang['diffprevrev'] = 'წინა ვერსია';
+$lang['diffnextrev'] = 'შემდეგი ვერსია';
+$lang['difflastrev'] = 'ბოლო ვერსია';
+$lang['diffbothprevrev'] = 'Both sides previous revision';
+$lang['diffbothnextrev'] = 'Both sides next revision';
+$lang['line'] = 'ზოლი';
+$lang['breadcrumb'] = 'Trace:';
+$lang['youarehere'] = 'თვენ ხართ აქ:';
+$lang['lastmod'] = 'ბოლოს მოდიფიცირებული:';
+$lang['deleted'] = 'წაშლილია';
+$lang['created'] = 'შექმნილია';
+$lang['restored'] = 'ძველი ვერსია აღდგენილია %';
+$lang['external_edit'] = 'რედაქტირება';
+$lang['summary'] = 'Edit summary';
+$lang['noflash'] = '<a href="http://www.adobe.com/products/flashplayer/">საჭიროა Adobe Flash Plugin</a>';
+$lang['download'] = 'Snippet-ის გადმოწერა';
+$lang['tools'] = 'ინსტრუმენტები';
+$lang['user_tools'] = 'მომხმარებლის ინსტრუმენტები';
+$lang['site_tools'] = 'საიტის ინსტრუმენტები';
+$lang['page_tools'] = 'გვერდის ინსტრუმენტები';
+$lang['skip_to_content'] = 'მასალა';
+$lang['sidebar'] = 'გვერდითი პანელი';
+$lang['mail_newpage'] = 'გვერდი დამატებულია:';
+$lang['mail_changed'] = 'გვერდი შეცვლილია:';
+$lang['mail_subscribe_list'] = 'გვერდში შეცვლილია namespace-ები:';
+$lang['mail_new_user'] = 'ახალი მომხმარებელი';
+$lang['mail_upload'] = 'ფაილი ატვირთულია';
+$lang['changes_type'] = 'ცვლილებები';
+$lang['pages_changes'] = 'გვერდები';
+$lang['media_changes'] = 'მედია ფაილები';
+$lang['both_changes'] = 'გვერდები და მედია ფაილები';
+$lang['qb_bold'] = 'Bold Text';
+$lang['qb_italic'] = 'Italic Text';
+$lang['qb_underl'] = 'Underlined Text';
+$lang['qb_code'] = 'Monospaced Text';
+$lang['qb_strike'] = 'Strike-through Text';
+$lang['qb_h1'] = 'Level 1 სათაური';
+$lang['qb_h2'] = 'Level 2 სათაური';
+$lang['qb_h3'] = 'Level 3 სათაური';
+$lang['qb_h4'] = 'Level 4 სათაური';
+$lang['qb_h5'] = 'Level 5 სათაური';
+$lang['qb_h'] = 'სათაური';
+$lang['qb_hs'] = 'სათაურის არჩევა';
+$lang['qb_hplus'] = 'Higher სათაური';
+$lang['qb_hminus'] = 'Lower სათაური';
+$lang['qb_hequal'] = 'Same Level სათაური';
+$lang['qb_link'] = 'Internal Link';
+$lang['qb_extlink'] = 'External Link';
+$lang['qb_hr'] = 'Horizontal Rule';
+$lang['qb_ol'] = 'შეკვეთილი ბოლო მასალა';
+$lang['qb_ul'] = 'Unordered List Item';
+$lang['qb_media'] = 'ნახატების და სხვა ფაიელბის დამატება';
+$lang['qb_sig'] = 'ხელმოწერა';
+$lang['qb_smileys'] = 'სმაილები';
+$lang['qb_chars'] = 'Special Chars';
+$lang['upperns'] = 'jump to parent namespace';
+$lang['admin_register'] = 'ახალი მომხმარებლის დამატება';
+$lang['metaedit'] = 'Edit Metadata';
+$lang['metasaveerr'] = 'Writing metadata failed';
+$lang['metasaveok'] = 'Metadata saved';
+$lang['img_title'] = 'სათაური:';
+$lang['img_caption'] = 'Caption:';
+$lang['img_date'] = 'თარიღი:';
+$lang['img_fname'] = 'ფაილის სახელი:';
+$lang['img_fsize'] = 'ზომა:';
+$lang['img_artist'] = 'ფოტოგრაფი:';
+$lang['img_copyr'] = 'Copyright:';
+$lang['img_format'] = 'ფორმატი:';
+$lang['img_camera'] = 'კამერა:';
+$lang['img_keywords'] = 'Keywords:';
+$lang['img_width'] = 'სიგანე:';
+$lang['img_height'] = 'სიმაღლე:';
+$lang['subscr_subscribe_success'] = 'Added %s to subscription list for %s';
+$lang['subscr_subscribe_error'] = 'Error adding %s to subscription list for %s';
+$lang['subscr_subscribe_noaddress'] = 'There is no address associated with your login, you cannot be added to the subscription list';
+$lang['subscr_unsubscribe_success'] = 'Removed %s from subscription list for %s';
+$lang['subscr_unsubscribe_error'] = 'Error removing %s from subscription list for %s';
+$lang['subscr_already_subscribed'] = '%s is already subscribed to %s';
+$lang['subscr_not_subscribed'] = '%s is not subscribed to %s';
+$lang['subscr_m_not_subscribed'] = 'You are currently not subscribed to the current page or namespace.';
+$lang['subscr_m_new_header'] = 'Add subscription';
+$lang['subscr_m_current_header'] = 'Current subscriptions';
+$lang['subscr_m_unsubscribe'] = 'Unsubscribe';
+$lang['subscr_m_subscribe'] = 'Subscribe';
+$lang['subscr_m_receive'] = 'მიღება';
+$lang['subscr_style_every'] = 'ფოსტა ყოველ ცვლილებაზე';
+$lang['subscr_style_digest'] = 'ფოსტა ყოველი გვერდის შეცვლაზე ';
+$lang['subscr_style_list'] = 'ფოსტა ყოველი გვერდის შეცვლაზე ';
+$lang['authtempfail'] = 'User authentication is temporarily unavailable. If this situation persists, please inform your Wiki Admin.';
+$lang['authpwdexpire'] = 'თქვენს პაროლს ვადა გაუვა %d დღეში, მალე შეცვლა მოგიწევთ.';
+$lang['i_chooselang'] = 'ენსი არჩევა';
+$lang['i_installer'] = 'DokuWiki დამყენებელი';
+$lang['i_wikiname'] = 'Wiki სახელი';
+$lang['i_enableacl'] = 'Enable ACL (recommended)';
+$lang['i_superuser'] = 'ადმინი';
+$lang['i_problems'] = 'შეასწორეთ შეცდომები';
+$lang['i_modified'] = 'For security reasons this script will only work with a new and unmodified Dokuwiki installation. You should either re-extract the files from the downloaded package or consult the complete <a href="http://dokuwiki.org/install">Dokuwiki installation instructions</a>';
+$lang['i_funcna'] = 'PHP function <code>%s</code> is not available. Maybe your hosting provider disabled it for some reason?';
+$lang['i_phpver'] = 'Your PHP version <code>%s</code> is lower than the needed <code>%s</code>. You need to upgrade your PHP install.';
+$lang['i_permfail'] = '<code>%s</code> is not writable by DokuWiki. You need to fix the permission settings of this directory!';
+$lang['i_confexists'] = '<code>%s</code> already exists';
+$lang['i_writeerr'] = 'Unable to create <code>%s</code>. You will need to check directory/file permissions and create the file manually.';
+$lang['i_badhash'] = 'unrecognised or modified dokuwiki.php (hash=<code>%s</code>)';
+$lang['i_badval'] = '<code>%s</code> - illegal or empty value';
+$lang['i_failure'] = 'Some errors occurred while writing the configuration files. You may need to fix them manually before you can use <a href="doku.php?id=wiki:welcome">your new DokuWiki</a>.';
+$lang['i_policy'] = 'Initial ACL policy';
+$lang['i_pol0'] = 'ღია ვიკი (წაკითხვა, დაწერა და ატვირთვა შეუძლია ნებისმიერს)';
+$lang['i_pol1'] = 'თავისუფალი ვიკი (წაკითხვა შეუძლია ყველას, დაწერა და ატვირთვა - რეგისტრირებულს)';
+$lang['i_pol2'] = 'დახურული ვიკი (წაკითხვა, დაწერა და ატვირთვა შეუძლიათ მხოლოდ რეგისტრირებულებს)';
+$lang['i_allowreg'] = 'რეგისტრაციის გახსნა';
+$lang['i_retry'] = 'თავიდან ცდა';
+$lang['i_license'] = 'აირჩიეთ ლიცენზია';
+$lang['i_license_none'] = 'არ აჩვენოთ ლიცენზიის ინფორმაცია';
+$lang['i_pop_field'] = 'დაგვეხმარეთ DokuWiki-ს აგუმჯობესებაში';
+$lang['i_pop_label'] = 'თვეში ერთელ ინფორმაციის DokuWiki-ის ადმინისტრაციისთვის გაგზავნა';
+$lang['recent_global'] = 'You\'re currently watching the changes inside the <b>%s</b> namespace. You can also <a href="%s">view the recent changes of the whole wiki</a>.';
+$lang['years'] = '%d წლის უკან';
+$lang['months'] = '%d თვის უკან';
+$lang['weeks'] = '%d კვირის უკან';
+$lang['days'] = '%d დღის წინ';
+$lang['hours'] = '%d საათის წინ';
+$lang['minutes'] = '%d წუთის წინ';
+$lang['seconds'] = '%d წამის წინ';
+$lang['wordblock'] = 'თქვენი ცვლილებები არ შეინახა, რადგან შეიცავს სპამს';
+$lang['media_uploadtab'] = 'ატვირთვა';
+$lang['media_searchtab'] = 'ძებნა';
+$lang['media_file'] = 'ფაილი';
+$lang['media_viewtab'] = 'ჩვენება';
+$lang['media_edittab'] = 'რედაქტირება';
+$lang['media_historytab'] = 'ისტორია';
+$lang['media_list_thumbs'] = 'Thumbnails';
+$lang['media_list_rows'] = 'Rows';
+$lang['media_sort_name'] = 'სახელი';
+$lang['media_sort_date'] = 'თარიღი';
+$lang['media_namespaces'] = 'Choose namespace';
+$lang['media_files'] = 'ფაილები %s';
+$lang['media_upload'] = 'ატვირთვა %s';
+$lang['media_search'] = 'ძებნა %s';
+$lang['media_view'] = '%s';
+$lang['media_viewold'] = '%s at %s';
+$lang['media_edit'] = 'რედაქტირება %s';
+$lang['media_history'] = 'ისტორია %s';
+$lang['media_meta_edited'] = 'metadata edited';
+$lang['media_perm_read'] = 'თვენ არ გაქვთ უფლება წაიკითხოთ ეს მასალა';
diff --git a/inc/lang/kk/lang.php b/inc/lang/kk/lang.php
index 4b111b118..74afa24e5 100644
--- a/inc/lang/kk/lang.php
+++ b/inc/lang/kk/lang.php
@@ -45,7 +45,7 @@ $lang['btn_draftdel'] = 'Шимайды өшіру';
$lang['btn_revert'] = 'Қалпына келтіру';
$lang['btn_register'] = 'Тіркеу';
$lang['btn_apply'] = 'Қолдану/Енгізу';
-$lang['loggedinas'] = 'түпнұсқамен кірген';
+$lang['loggedinas'] = 'түпнұсқамен кірген:';
$lang['user'] = 'Түпнұсқа';
$lang['pass'] = 'Құпиясөз';
$lang['newpass'] = 'Жаңа құпиясөз';
@@ -83,11 +83,11 @@ $lang['license'] = 'Басқаша көрсетілген болм
$lang['licenseok'] = 'Ескерту: бұл бетті өңдеуіңізбен мазмұныңыз келесі лицензия бойынша беруге келесесіз:';
$lang['searchmedia'] = 'Іздеу файлдың атауы:';
$lang['searchmedia_in'] = '%s-мен іздеу:';
-$lang['txt_upload'] = 'Еңгізетін файлды таңдау';
-$lang['txt_filename'] = 'Келесідей еңгізу (қалауынша)';
+$lang['txt_upload'] = 'Еңгізетін файлды таңдау:';
+$lang['txt_filename'] = 'Келесідей еңгізу (қалауынша):';
$lang['txt_overwrt'] = 'Бар файлды қайта жазу';
-$lang['lockedby'] = 'Осы уақытта тойтарылған';
-$lang['lockexpire'] = 'Тойтару келесі уақытта бітеді';
+$lang['lockedby'] = 'Осы уақытта тойтарылған:';
+$lang['lockexpire'] = 'Тойтару келесі уақытта бітеді:';
$lang['js']['willexpire'] = 'Бұл бетті түзеу тойтаруыңыз бір минутта бітеді. Қақтығыс болмау және тойтару таймерді түсіру үшін қарап шығу пернені басыңыз.';
$lang['js']['notsavedyet'] = 'Сақталмаған өзгерістер жоғалатын болады.';
$lang['js']['searchmedia'] = 'Файлдарды іздеу';
@@ -124,7 +124,7 @@ $lang['created'] = 'ЖасалFан';
$lang['mail_new_user'] = 'Жаңа пайдаланушы';
$lang['qb_chars'] = 'Арнайы белгiлер';
$lang['btn_img_backto'] = 'Қайта оралу %s';
-$lang['img_format'] = 'Формат';
-$lang['img_camera'] = 'Камера';
+$lang['img_format'] = 'Формат:';
+$lang['img_camera'] = 'Камера:';
$lang['i_chooselang'] = 'Тіл таңдау';
$lang['i_retry'] = 'Қайталау';
diff --git a/inc/lang/km/lang.php b/inc/lang/km/lang.php
index 9f65ccd16..749fa419c 100644
--- a/inc/lang/km/lang.php
+++ b/inc/lang/km/lang.php
@@ -43,7 +43,7 @@ $lang['btn_recover'] = 'ស្រោះគំរោងឡើង';
$lang['btn_draftdel'] = 'លុបគំរោង';
$lang['btn_register'] = 'ចុះឈ្មោះ';//'Register';
-$lang['loggedinas'] = 'អ្នកប្រើ';
+$lang['loggedinas'] = 'អ្នកប្រើ:';
$lang['user'] = 'នាមបម្រើ';
$lang['pass'] = 'ពាក្សសម្ងត់';
$lang['newpass'] = 'ពាក្សសម្ងាត់ថ្មី';
@@ -80,11 +80,11 @@ $lang['resendpwdbadauth'] = 'សុំអាទោស​ រហស្សលេ
$lang['resendpwdconfirm'] ='ខ្សែបន្ត';
$lang['resendpwdsuccess'] = 'ពាក្សសម្ងាតអ្នកបានផ្ញើហើយ។';
-$lang['txt_upload'] = 'ជ្រើសឯកសារដែលរុញ​ឡើង';
-$lang['txt_filename'] = 'រុញឡើងជា (ស្រេច​ចិត្ត)';
+$lang['txt_upload'] = 'ជ្រើសឯកសារដែលរុញ​ឡើង:';
+$lang['txt_filename'] = 'រុញឡើងជា (ស្រេច​ចិត្ត):';
$lang['txt_overwrt'] = 'កត់ពីលើ';//'Overwrite existing file';
-$lang['lockedby'] = 'ឥឡូវនេះចកជាប់​';
-$lang['lockexpire'] = 'សោជាប់ផុត​កំណត់ម៉ោង';
+$lang['lockedby'] = 'ឥឡូវនេះចកជាប់​:';
+$lang['lockexpire'] = 'សោជាប់ផុត​កំណត់ម៉ោង:';
$lang['js']['willexpire'] = 'សោអ្នកចំពោះកែតម្រូវទំព័រនេះ ហួសពែលក្នុងមួយនាទី។\nកុំឲ្យមានជម្លោះ ប្រើ «បង្ហាញ»​ ទៅកំណត់​ឡើង​វិញ។';
$lang['js']['notsavedyet'] = 'កម្រែមិនទានរុក្សាទកត្រូវបោះបង់។\nបន្តទៅទាឬទេ?';
@@ -125,9 +125,9 @@ $lang['current'] = 'ឥឡៅវ';
$lang['yours'] = 'តំណែអ្នាក';
$lang['diff'] = 'បង្ហាងអសទិសភាពជាមួយតំណែឥឡូវ ';
$lang['line'] = 'ខ្សែ';
-$lang['breadcrumb'] = 'ដាន';
-$lang['youarehere'] = 'ដាន';
-$lang['lastmod'] = 'ពេលកែចុងក្រោយ';
+$lang['breadcrumb'] = 'ដាន:';
+$lang['youarehere'] = 'ដាន:';
+$lang['lastmod'] = 'ពេលកែចុងក្រោយ:';
$lang['by'] = 'និពន្ឋដោយ';
$lang['deleted'] = 'យកចេញ';
$lang['created'] = 'បង្កើត';
@@ -166,16 +166,16 @@ $lang['metaedit'] = 'កែទិន្នន័យអរូប';//'Edit Meta
$lang['metasaveerr'] = 'ពំអាចកត់រទិន្នន័យអរូប';//'Writing metadata failed';
$lang['metasaveok'] = 'ទិន្នន័យអរូប';
$lang['btn_img_backto'] = 'ថយក្រោយ%s';
-$lang['img_title'] = 'អភិធេយ្យ';
-$lang['img_caption'] = 'ចំណងជើង';
-$lang['img_date'] = 'ថ្ងៃខែ';//'Date';
-$lang['img_fname'] = 'ឈ្មោះឯកសារ';
-$lang['img_fsize'] = 'ទំហំ';//'Size';
-$lang['img_artist'] = 'អ្នកថតរូប';
-$lang['img_copyr'] = 'រក្សា​សិទ្ធិ';
-$lang['img_format'] = 'ធុនប្រភេទ';
-$lang['img_camera'] = 'គ្រឿងថត';
-$lang['img_keywords']= 'មេពាក្ស';//'Keywords';
+$lang['img_title'] = 'អភិធេយ្យ:';
+$lang['img_caption'] = 'ចំណងជើង:';
+$lang['img_date'] = 'ថ្ងៃខែ:';//'Date';
+$lang['img_fname'] = 'ឈ្មោះឯកសារ:';
+$lang['img_fsize'] = 'ទំហំ:';//'Size';
+$lang['img_artist'] = 'អ្នកថតរូប:';
+$lang['img_copyr'] = 'រក្សា​សិទ្ធិ:';
+$lang['img_format'] = 'ធុនប្រភេទ:';
+$lang['img_camera'] = 'គ្រឿងថត:';
+$lang['img_keywords']= 'មេពាក្ស:';//'Keywords';
/* auth.class language support */
$lang['authtempfail'] = 'ការផ្ទៀងផ្ទាត់​ភាព​​ត្រឹមត្រូវឥតដំនេ។ ប្រើ ....';
diff --git a/inc/lang/ko/lang.php b/inc/lang/ko/lang.php
index 592b953b9..ff5e66d9b 100644
--- a/inc/lang/ko/lang.php
+++ b/inc/lang/ko/lang.php
@@ -59,7 +59,7 @@ $lang['btn_media'] = '미디어 관리자';
$lang['btn_deleteuser'] = '내 계정 제거';
$lang['btn_img_backto'] = '%s(으)로 돌아가기';
$lang['btn_mediaManager'] = '미디어 관리자에서 보기';
-$lang['loggedinas'] = '로그인한 사용자';
+$lang['loggedinas'] = '로그인한 사용자:';
$lang['user'] = '사용자 이름';
$lang['pass'] = '비밀번호';
$lang['newpass'] = '새 비밀번호';
@@ -104,12 +104,12 @@ $lang['license'] = '별도로 명시하지 않을 경우, 이 위
$lang['licenseok'] = '참고: 이 문서를 편집하면 내용은 다음 라이선스에 따라 배포하는 데 동의합니다:';
$lang['searchmedia'] = '파일 이름 검색:';
$lang['searchmedia_in'] = '%s에서 검색';
-$lang['txt_upload'] = '올릴 파일 선택';
-$lang['txt_filename'] = '올릴 파일 이름 (선택 사항)';
+$lang['txt_upload'] = '올릴 파일 선택:';
+$lang['txt_filename'] = '올릴 파일 이름 (선택 사항):';
$lang['txt_overwrt'] = '기존 파일에 덮어쓰기';
$lang['maxuploadsize'] = '최대 올리기 용량. 파일당 %s입니다.';
-$lang['lockedby'] = '현재 잠겨진 사용자';
-$lang['lockexpire'] = '잠금 해제 시간';
+$lang['lockedby'] = '현재 잠겨진 사용자:';
+$lang['lockexpire'] = '잠금 해제 시간:';
$lang['js']['willexpire'] = '잠시 후 편집 잠금이 해제됩니다.\n편집 충돌을 피하려면 미리 보기를 눌러 잠금 시간을 다시 설정하세요.';
$lang['js']['notsavedyet'] = '저장하지 않은 바뀜이 사라집니다.';
$lang['js']['searchmedia'] = '파일 검색';
@@ -194,9 +194,9 @@ $lang['difflastrev'] = '마지막 판';
$lang['diffbothprevrev'] = '양쪽 이전 판';
$lang['diffbothnextrev'] = '양쪽 다음 판';
$lang['line'] = '줄';
-$lang['breadcrumb'] = '추적';
-$lang['youarehere'] = '현재 위치';
-$lang['lastmod'] = '마지막으로 수정됨';
+$lang['breadcrumb'] = '추적:';
+$lang['youarehere'] = '현재 위치:';
+$lang['lastmod'] = '마지막으로 수정됨:';
$lang['by'] = '저자';
$lang['deleted'] = '제거됨';
$lang['created'] = '만듦';
@@ -249,18 +249,18 @@ $lang['admin_register'] = '새 사용자 추가';
$lang['metaedit'] = '메타데이터 편집';
$lang['metasaveerr'] = '메타데이터 쓰기 실패';
$lang['metasaveok'] = '메타데이터 저장됨';
-$lang['img_title'] = '제목';
-$lang['img_caption'] = '설명';
-$lang['img_date'] = '날짜';
-$lang['img_fname'] = '파일 이름';
-$lang['img_fsize'] = '크기';
-$lang['img_artist'] = '촬영자';
-$lang['img_copyr'] = '저작권';
-$lang['img_format'] = '포맷';
-$lang['img_camera'] = '카메라';
-$lang['img_keywords'] = '키워드';
-$lang['img_width'] = '너비';
-$lang['img_height'] = '높이';
+$lang['img_title'] = '제목:';
+$lang['img_caption'] = '설명:';
+$lang['img_date'] = '날짜:';
+$lang['img_fname'] = '파일 이름:';
+$lang['img_fsize'] = '크기:';
+$lang['img_artist'] = '촬영자:';
+$lang['img_copyr'] = '저작권:';
+$lang['img_format'] = '포맷:';
+$lang['img_camera'] = '카메라:';
+$lang['img_keywords'] = '키워드:';
+$lang['img_width'] = '너비:';
+$lang['img_height'] = '높이:';
$lang['subscr_subscribe_success'] = '%s 사용자가 %s 구독 목록에 추가했습니다';
$lang['subscr_subscribe_error'] = '%s 사용자가 %s 구독 목록에 추가하는데 실패했습니다';
$lang['subscr_subscribe_noaddress'] = '로그인으로 연결된 주소가 없기 때문에 구독 목록에 추가할 수 없습니다';
@@ -289,6 +289,7 @@ $lang['i_modified'] = '보안 상의 이유로 이 스크립트는
다운로드한 압축 패키지를 다시 설치하거나 <a href="http://dokuwiki.org/ko:install">도쿠위키 설치 과정</a>을 참고해서 설치하세요.';
$lang['i_funcna'] = '<code>%s</code> PHP 함수를 사용할 수 없습니다. 호스트 제공자가 어떤 이유에서인지 막아 놓았을지 모릅니다.';
$lang['i_phpver'] = 'PHP <code>%s</code> 버전은 필요한 <code>%s</code> 버전보다 오래되었습니다. PHP를 업그레이드할 필요가 있습니다.';
+$lang['i_mbfuncoverload'] = '도쿠위키를 실행하려면 mbstring.func_overload를 php.ini에서 비활성화해야 합니다.';
$lang['i_permfail'] = '<code>%s</code>는 도쿠위키가 쓰기 가능 권한이 없습니다. 먼저 이 디렉터리에 쓰기 권한이 설정되어야 합니다!';
$lang['i_confexists'] = '<code>%s</code>(은)는 이미 존재합니다';
$lang['i_writeerr'] = '<code>%s</code>(을)를 만들 수 없습니다. 먼저 디렉터리/파일 권한을 확인하고 파일을 수동으로 만드세요.';
diff --git a/inc/lang/ku/lang.php b/inc/lang/ku/lang.php
index 14f568b8e..b1b733ec9 100644
--- a/inc/lang/ku/lang.php
+++ b/inc/lang/ku/lang.php
@@ -35,7 +35,7 @@ $lang['btn_backtomedia'] = 'Back to Mediafile Selection';
$lang['btn_subscribe'] = 'Subscribe Changes';
$lang['btn_register'] = 'Register';
-$lang['loggedinas'] = 'Logged in as';
+$lang['loggedinas'] = 'Logged in as:';
$lang['user'] = 'Username';
$lang['pass'] = 'Password';
$lang['passchk'] = 'once again';
@@ -89,8 +89,8 @@ $lang['current'] = 'current';
$lang['yours'] = 'Your Version';
$lang['diff'] = 'show differences to current version';
$lang['line'] = 'Rêz';
-$lang['breadcrumb'] = 'Şop';
-$lang['lastmod'] = 'Guherandina dawî';
+$lang['breadcrumb'] = 'Şop:';
+$lang['lastmod'] = 'Guherandina dawî:';
$lang['by'] = 'by';
$lang['deleted'] = 'hat jê birin';
$lang['created'] = 'hat afirandin';
@@ -128,15 +128,15 @@ $lang['metaedit'] = 'Edit Metadata';
$lang['metasaveerr'] = 'Writing metadata failed';
$lang['metasaveok'] = 'Metadata saved';
$lang['btn_img_backto'] = 'Back to %s';
-$lang['img_title'] = 'Title';
-$lang['img_caption'] = 'Caption';
-$lang['img_date'] = 'Date';
-$lang['img_fname'] = 'Filename';
-$lang['img_fsize'] = 'Size';
-$lang['img_artist'] = 'Photographer';
-$lang['img_copyr'] = 'Copyright';
-$lang['img_format'] = 'Format';
-$lang['img_camera'] = 'Camera';
-$lang['img_keywords']= 'Keywords';
+$lang['img_title'] = 'Title:';
+$lang['img_caption'] = 'Caption:';
+$lang['img_date'] = 'Date:';
+$lang['img_fname'] = 'Filename:';
+$lang['img_fsize'] = 'Size:';
+$lang['img_artist'] = 'Photographer:';
+$lang['img_copyr'] = 'Copyright:';
+$lang['img_format'] = 'Format:';
+$lang['img_camera'] = 'Camera:';
+$lang['img_keywords']= 'Keywords:';
//Setup VIM: ex: et ts=2 :
diff --git a/inc/lang/la/lang.php b/inc/lang/la/lang.php
index 691b303ed..66cd13967 100644
--- a/inc/lang/la/lang.php
+++ b/inc/lang/la/lang.php
@@ -90,8 +90,8 @@ $lang['searchmedia_in'] = 'Quaere "%s":';
$lang['txt_upload'] = 'Eligere documenta oneranda:';
$lang['txt_filename'] = 'Onerare (optio):';
$lang['txt_overwrt'] = 'Documento ueteri imponere:';
-$lang['lockedby'] = 'Nunc hoc intercludit';
-$lang['lockexpire'] = 'Hoc apertum';
+$lang['lockedby'] = 'Nunc hoc intercludit:';
+$lang['lockexpire'] = 'Hoc apertum:';
$lang['js']['willexpire'] = 'Interclusio paginae recensendae uno minuto finita est.\nUt errores uites, \'praeuisio\' preme ut interclusionem ripristines.';
$lang['js']['notsavedyet'] = 'Res non seruatae amissurae sunt.';
$lang['js']['searchmedia'] = 'Quaere inter documenta';
@@ -203,16 +203,16 @@ $lang['metaedit'] = 'Res codicis mutare';
$lang['metasaveerr'] = 'Res codicis non scribitur.';
$lang['metasaveok'] = 'Res codicis seruatae.';
$lang['btn_img_backto'] = 'Redere ad %s';
-$lang['img_title'] = 'Titulus';
-$lang['img_caption'] = 'Descriptio';
-$lang['img_date'] = 'Dies';
-$lang['img_fname'] = 'Titulus documenti';
-$lang['img_fsize'] = 'Pondus';
-$lang['img_artist'] = 'Imaginum exprimitor\trix';
-$lang['img_copyr'] = 'Iura exemplarium';
-$lang['img_format'] = 'Forma';
-$lang['img_camera'] = 'Cella';
-$lang['img_keywords'] = 'Verba claues';
+$lang['img_title'] = 'Titulus:';
+$lang['img_caption'] = 'Descriptio:';
+$lang['img_date'] = 'Dies:';
+$lang['img_fname'] = 'Titulus documenti:';
+$lang['img_fsize'] = 'Pondus:';
+$lang['img_artist'] = 'Imaginum exprimitor\trix:';
+$lang['img_copyr'] = 'Iura exemplarium:';
+$lang['img_format'] = 'Forma:';
+$lang['img_camera'] = 'Cella:';
+$lang['img_keywords'] = 'Verba claues:';
$lang['subscr_subscribe_success'] = '%s additur indici subscriptionis quod %s';
$lang['subscr_subscribe_error'] = '%s non additur indici subscriptionis quod %s';
$lang['subscr_subscribe_noaddress'] = 'Cursus interretialis tuus deest, sic in indice subscriptionis non scribi potes';
diff --git a/inc/lang/lb/lang.php b/inc/lang/lb/lang.php
index efb98f679..a1b6ccf84 100644
--- a/inc/lang/lb/lang.php
+++ b/inc/lang/lb/lang.php
@@ -41,7 +41,7 @@ $lang['btn_draft'] = 'Entworf änneren';
$lang['btn_recover'] = 'Entworf zeréckhuelen';
$lang['btn_draftdel'] = 'Entworf läschen';
$lang['btn_register'] = 'Registréieren';
-$lang['loggedinas'] = 'Ageloggt als';
+$lang['loggedinas'] = 'Ageloggt als:';
$lang['user'] = 'Benotzernumm';
$lang['pass'] = 'Passwuert';
$lang['newpass'] = 'Nei Passwuert';
@@ -77,11 +77,11 @@ $lang['resendpwdconfirm'] = 'De Konfirmatiounslink gouf iwwer Email gesché
$lang['resendpwdsuccess'] = 'Däi nei Passwuert gouf iwwer Email geschéckt.';
$lang['license'] = 'Wann näischt anescht do steet, ass den Inhalt vun dësem Wiki ënner folgender Lizenz:';
$lang['licenseok'] = 'Pass op: Wanns de dës Säit änners, bass de dermat averstan dass den Inhalt ënner folgender Lizenz lizenzéiert gëtt:';
-$lang['txt_upload'] = 'Wiel eng Datei fir eropzelueden';
-$lang['txt_filename'] = 'Eroplueden als (optional)';
+$lang['txt_upload'] = 'Wiel eng Datei fir eropzelueden:';
+$lang['txt_filename'] = 'Eroplueden als (optional):';
$lang['txt_overwrt'] = 'Bestehend Datei iwwerschreiwen';
-$lang['lockedby'] = 'Am Moment gespaart vun';
-$lang['lockexpire'] = 'D\'Spär leeft of ëm';
+$lang['lockedby'] = 'Am Moment gespaart vun:';
+$lang['lockexpire'] = 'D\'Spär leeft of ëm:';
$lang['js']['willexpire'] = 'Deng Spär fir d\'Säit ze änneren leeft an enger Minutt of.\nFir Konflikter ze verhënneren, dréck op Kucken ouni ofzespäicheren.';
$lang['js']['notsavedyet'] = 'Net gespäicher Ännerunge gi verluer.\nWierklech weiderfueren?';
$lang['rssfailed'] = 'Et ass e Feeler virkomm beim erofluede vun dësem Feed: ';
@@ -118,9 +118,9 @@ $lang['yours'] = 'Deng Versioun';
$lang['diff'] = 'Weis d\'Ënnerscheeder zuer aktueller Versioun';
$lang['diff2'] = 'Weis d\'Ënnerscheeder zwescht den ausgewielte Versiounen';
$lang['line'] = 'Linn';
-$lang['breadcrumb'] = 'Spuer';
-$lang['youarehere'] = 'Du bass hei';
-$lang['lastmod'] = 'Fir d\'lescht g\'ännert';
+$lang['breadcrumb'] = 'Spuer:';
+$lang['youarehere'] = 'Du bass hei:';
+$lang['lastmod'] = 'Fir d\'lescht g\'ännert:';
$lang['by'] = 'vun';
$lang['deleted'] = 'geläscht';
$lang['created'] = 'erstallt';
@@ -163,16 +163,16 @@ $lang['metaedit'] = 'Metadaten änneren';
$lang['metasaveerr'] = 'Feeler beim Schreiwe vun de Metadaten';
$lang['metasaveok'] = 'Metadate gespäichert';
$lang['btn_img_backto'] = 'Zeréck op %s';
-$lang['img_title'] = 'Titel';
-$lang['img_caption'] = 'Beschreiwung';
-$lang['img_date'] = 'Datum';
-$lang['img_fname'] = 'Dateinumm';
-$lang['img_fsize'] = 'Gréisst';
-$lang['img_artist'] = 'Fotograf';
-$lang['img_copyr'] = 'Copyright';
-$lang['img_format'] = 'Format';
-$lang['img_camera'] = 'Kamera';
-$lang['img_keywords'] = 'Schlësselwieder';
+$lang['img_title'] = 'Titel:';
+$lang['img_caption'] = 'Beschreiwung:';
+$lang['img_date'] = 'Datum:';
+$lang['img_fname'] = 'Dateinumm:';
+$lang['img_fsize'] = 'Gréisst:';
+$lang['img_artist'] = 'Fotograf:';
+$lang['img_copyr'] = 'Copyright:';
+$lang['img_format'] = 'Format:';
+$lang['img_camera'] = 'Kamera:';
+$lang['img_keywords'] = 'Schlësselwieder:';
$lang['authtempfail'] = 'D\'Benotzerautentifikatioun ass de Moment net verfügbar. Wann dës Situatioun unhält, dann informéier w.e.g. de Wiki Admin.';
$lang['i_chooselang'] = 'Wiel deng Sprooch';
$lang['i_installer'] = 'DokuWiki Installer';
diff --git a/inc/lang/lt/lang.php b/inc/lang/lt/lang.php
index 74c8c88e9..d6552d68c 100644
--- a/inc/lang/lt/lang.php
+++ b/inc/lang/lt/lang.php
@@ -46,7 +46,7 @@ $lang['btn_draft'] = 'Redaguoti juodraštį';
$lang['btn_recover'] = 'Atkurti juodraštį';
$lang['btn_draftdel'] = 'Šalinti juodraštį';
$lang['btn_register'] = 'Registruotis';
-$lang['loggedinas'] = 'Prisijungęs kaip';
+$lang['loggedinas'] = 'Prisijungęs kaip:';
$lang['user'] = 'Vartotojo vardas';
$lang['pass'] = 'Slaptažodis';
$lang['newpass'] = 'Naujas slaptažodis';
@@ -82,11 +82,11 @@ $lang['resendpwdconfirm'] = 'Patvirtinimo nuoroda išsiųsta el. paštu.';
$lang['resendpwdsuccess'] = 'Jūsų naujas slaptažodis buvo išsiųstas el. paštu.';
$lang['license'] = 'Jei nenurodyta kitaip, šio wiki turinys ginamas tokia licencija:';
$lang['licenseok'] = 'Pastaba: Redaguodami šį puslapį jūs sutinkate jog jūsų turinys atitinka licencijavima pagal šią licenciją';
-$lang['txt_upload'] = 'Išsirinkite atsiunčiamą bylą';
-$lang['txt_filename'] = 'Įveskite wikivardą (nebūtina)';
+$lang['txt_upload'] = 'Išsirinkite atsiunčiamą bylą:';
+$lang['txt_filename'] = 'Įveskite wikivardą (nebūtina):';
$lang['txt_overwrt'] = 'Perrašyti egzistuojančią bylą';
-$lang['lockedby'] = 'Užrakintas vartotojo';
-$lang['lockexpire'] = 'Užraktas bus nuimtas';
+$lang['lockedby'] = 'Užrakintas vartotojo:';
+$lang['lockexpire'] = 'Užraktas bus nuimtas:';
$lang['js']['willexpire'] = 'Šio puslapio redagavimo užrakto galiojimo laikas baigsis po minutės.\nNorėdami išvengti nesklandumų naudokite peržiūros mygtuką ir užraktas atsinaujins.';
$lang['js']['notsavedyet'] = 'Pakeitimai nebus išsaugoti.\nTikrai tęsti?';
$lang['rssfailed'] = 'Siunčiant šį feed\'ą įvyko klaida: ';
@@ -125,9 +125,9 @@ $lang['yours'] = 'Jūsų versija';
$lang['diff'] = 'rodyti skirtumus tarp šios ir esamos versijos';
$lang['diff2'] = 'Parodyti skirtumus tarp pasirinktų versijų';
$lang['line'] = 'Linija';
-$lang['breadcrumb'] = 'Kelias';
-$lang['youarehere'] = 'Jūs esate čia';
-$lang['lastmod'] = 'Keista';
+$lang['breadcrumb'] = 'Kelias:';
+$lang['youarehere'] = 'Jūs esate čia:';
+$lang['lastmod'] = 'Keista:';
$lang['by'] = 'vartotojo';
$lang['deleted'] = 'ištrintas';
$lang['created'] = 'sukurtas';
@@ -164,16 +164,16 @@ $lang['metaedit'] = 'Redaguoti metaduomenis';
$lang['metasaveerr'] = 'Nepavyko išsaugoti metaduomenų';
$lang['metasaveok'] = 'Metaduomenys išsaugoti';
$lang['btn_img_backto'] = 'Atgal į %s';
-$lang['img_title'] = 'Pavadinimas';
-$lang['img_caption'] = 'Antraštė';
-$lang['img_date'] = 'Data';
-$lang['img_fname'] = 'Bylos pavadinimas';
-$lang['img_fsize'] = 'Dydis';
-$lang['img_artist'] = 'Fotografas';
-$lang['img_copyr'] = 'Autorinės teisės';
-$lang['img_format'] = 'Formatas';
-$lang['img_camera'] = 'Kamera';
-$lang['img_keywords'] = 'Raktiniai žodžiai';
+$lang['img_title'] = 'Pavadinimas:';
+$lang['img_caption'] = 'Antraštė:';
+$lang['img_date'] = 'Data:';
+$lang['img_fname'] = 'Bylos pavadinimas:';
+$lang['img_fsize'] = 'Dydis:';
+$lang['img_artist'] = 'Fotografas:';
+$lang['img_copyr'] = 'Autorinės teisės:';
+$lang['img_format'] = 'Formatas:';
+$lang['img_camera'] = 'Kamera:';
+$lang['img_keywords'] = 'Raktiniai žodžiai:';
$lang['authtempfail'] = 'Vartotojo tapatumo nustatymas laikinai nepasiekiamas. Jei ši situacija kartojasi, tai praneškite savo administratoriui.';
$lang['i_chooselang'] = 'Pasirinkite kalbą';
$lang['i_installer'] = 'DokuWiki Instaliatorius';
diff --git a/inc/lang/lv/lang.php b/inc/lang/lv/lang.php
index 91fed262e..15994afe6 100644
--- a/inc/lang/lv/lang.php
+++ b/inc/lang/lv/lang.php
@@ -1,8 +1,8 @@
<?php
+
/**
- * latvian language file
- *
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
* @author Aivars Miška <allefm@gmail.com>
*/
$lang['encoding'] = 'utf-8';
@@ -47,7 +47,10 @@ $lang['btn_revert'] = 'Atjaunot';
$lang['btn_register'] = 'Reģistrēties';
$lang['btn_apply'] = 'Labi';
$lang['btn_media'] = 'Mēdiju pārvaldnieks';
-$lang['loggedinas'] = 'Pieteicies kā';
+$lang['btn_deleteuser'] = 'Dzēst manu kontu';
+$lang['btn_img_backto'] = 'Atpakaļ uz %s';
+$lang['btn_mediaManager'] = 'Skatīt mēdiju pārvaldniekā';
+$lang['loggedinas'] = 'Pieteicies kā:';
$lang['user'] = 'Lietotājvārds';
$lang['pass'] = 'Parole';
$lang['newpass'] = 'Jaunā parole';
@@ -58,6 +61,7 @@ $lang['fullname'] = 'Pilns vārds';
$lang['email'] = 'E-pasts';
$lang['profile'] = 'Lietotāja vārds';
$lang['badlogin'] = 'Atvaino, lietotājvārds vai parole aplama.';
+$lang['badpassconfirm'] = 'Atvaino, aplama parole';
$lang['minoredit'] = 'Sīki labojumi';
$lang['draftdate'] = 'Melnraksts automātiski saglabāts';
$lang['nosecedit'] = 'Lapa pa šo laiku ir mainījusies, sekcijas informācija novecojusi. Ielādēta lapas pilnās versija.';
@@ -74,6 +78,11 @@ $lang['profna'] = 'Labot profilu nav iespējams';
$lang['profnochange'] = 'Izmaiņu nav. Nav, ko darīt.';
$lang['profnoempty'] = 'Bez vārda vai e-pasta adreses nevar.';
$lang['profchanged'] = 'Profils veiksmīgi izlabots.';
+$lang['profnodelete'] = 'Šajā viki lietotājus izdzēst nevar';
+$lang['profdeleteuser'] = 'Dzēst kontu';
+$lang['profdeleted'] = 'Jūsu lietotāja konts ir izdzēsts';
+$lang['profconfdelete'] = 'Es vēlos dzēst savu kontu no viki. <br/> Šo darbību vairs nevarēs atsaukt.';
+$lang['profconfdeletemissing'] = 'Nav atzīmēta apstiprinājuma rūtiņa.';
$lang['pwdforget'] = 'Aizmirsi paroli? Saņem jaunu';
$lang['resendna'] = 'Paroļu izsūtīšanu nepiedāvāju.';
$lang['resendpwd'] = 'Uzstādīt jaunu paroli lietotājam';
@@ -86,12 +95,12 @@ $lang['license'] = 'Ja nav norādīts citādi, viki saturs pieejam
$lang['licenseok'] = 'Ievēro: Labojot lapu, tu piekrīti šādiem licenzes noteikumiem.';
$lang['searchmedia'] = 'Meklētais faila vārds: ';
$lang['searchmedia_in'] = 'Meklēt iekš %s';
-$lang['txt_upload'] = 'Norādi augšupielādējamo failu';
-$lang['txt_filename'] = 'Ievadi vikivārdu (nav obligāts)';
+$lang['txt_upload'] = 'Norādi augšupielādējamo failu:';
+$lang['txt_filename'] = 'Ievadi vikivārdu (nav obligāts):';
$lang['txt_overwrt'] = 'Aizstāt esošo failu';
$lang['maxuploadsize'] = 'Augšuplādējamā faila ierobežojums: %s.';
-$lang['lockedby'] = 'Patlaban bloķējis ';
-$lang['lockexpire'] = 'Bloķējums beigsies ';
+$lang['lockedby'] = 'Patlaban bloķējis :';
+$lang['lockexpire'] = 'Bloķējums beigsies :';
$lang['js']['willexpire'] = 'Tavs bloķējums uz šo lapu pēc minūtes beigsies.\nLai izvairītos no konflikta, nospied Iepriekšapskata pogu\n un bloķējuma laiku sāks skaitīt no jauna.';
$lang['js']['notsavedyet'] = 'Veiktas bet nav saglabātas izmaiņas.
Vai tiešām tās nevajag?';
@@ -172,10 +181,15 @@ $lang['difflink'] = 'Saite uz salīdzināšanas skatu.';
$lang['diff_type'] = 'Skatīt atšķirības:';
$lang['diff_inline'] = 'Iekļauti';
$lang['diff_side'] = 'Blakus';
+$lang['diffprevrev'] = 'Iepriekšējā versija';
+$lang['diffnextrev'] = 'Nākamā versija';
+$lang['difflastrev'] = 'Jaunākā versija';
+$lang['diffbothprevrev'] = 'Abās pusēs iepriekšējo versiju';
+$lang['diffbothnextrev'] = 'Abās pusēs nākamo versiju';
$lang['line'] = 'Rinda';
-$lang['breadcrumb'] = 'Apmeklēts';
-$lang['youarehere'] = 'Tu atrodies šeit';
-$lang['lastmod'] = 'Labota';
+$lang['breadcrumb'] = 'Apmeklēts:';
+$lang['youarehere'] = 'Tu atrodies šeit:';
+$lang['lastmod'] = 'Labota:';
$lang['by'] = ', labojis';
$lang['deleted'] = 'dzēsts';
$lang['created'] = 'izveidots';
@@ -228,20 +242,18 @@ $lang['admin_register'] = 'Pievienot jaunu lietotāju';
$lang['metaedit'] = 'Labot metadatus';
$lang['metasaveerr'] = 'Metadati nav saglabāti';
$lang['metasaveok'] = 'Metadati saglabāti';
-$lang['btn_img_backto'] = 'Atpakaļ uz %s';
-$lang['img_title'] = 'Virsraksts';
-$lang['img_caption'] = 'Apraksts';
-$lang['img_date'] = 'Datums';
-$lang['img_fname'] = 'Faila vārds';
-$lang['img_fsize'] = 'Izmērs';
-$lang['img_artist'] = 'Fotogrāfs';
-$lang['img_copyr'] = 'Autortiesības';
-$lang['img_format'] = 'Formāts';
-$lang['img_camera'] = 'Fotoaparāts';
-$lang['img_keywords'] = 'Atslēgvārdi';
-$lang['img_width'] = 'Platums';
-$lang['img_height'] = 'Augstums';
-$lang['btn_mediaManager'] = 'Skatīt mēdiju pārvaldniekā';
+$lang['img_title'] = 'Virsraksts:';
+$lang['img_caption'] = 'Apraksts:';
+$lang['img_date'] = 'Datums:';
+$lang['img_fname'] = 'Faila vārds:';
+$lang['img_fsize'] = 'Izmērs:';
+$lang['img_artist'] = 'Fotogrāfs:';
+$lang['img_copyr'] = 'Autortiesības:';
+$lang['img_format'] = 'Formāts:';
+$lang['img_camera'] = 'Fotoaparāts:';
+$lang['img_keywords'] = 'Atslēgvārdi:';
+$lang['img_width'] = 'Platums:';
+$lang['img_height'] = 'Augstums:';
$lang['subscr_subscribe_success'] = '%s pievienots %s abonēšanas sarakstam';
$lang['subscr_subscribe_error'] = 'Kļūme pievienojot %s %s abonēšanas sarakstam.';
$lang['subscr_subscribe_noaddress'] = 'Nav zināma jūsu e-pasta adrese, tāpēc nevarat abonēt.';
@@ -270,6 +282,7 @@ $lang['i_modified'] = 'Drošības nolūkos šis skripts darbosies tik
Vai nu no jauna jāatarhivē faili no lejupielādētās pakas vai jāraugās pēc padoma pilnā Dokuwiki instalācijas instrukcijā <a href="http://dokuwiki.org/install"></a>';
$lang['i_funcna'] = 'PHP funkcija <code>%s</code> nav pieejama. Varbūt jūsu servera īpašnieks to kāda iemesla dēļ atslēdzis?';
$lang['i_phpver'] = 'Jūsu PHP versija <code>%s</code> ir par vecu. Vajag versiju <code>%s</code>. Atjaunojiet savu PHP instalāciju.';
+$lang['i_mbfuncoverload'] = 'Lai darbinātu DokuWiki, php.ini failā ir jāatspējo mbstring.func_overload.';
$lang['i_permfail'] = 'Dokuwiki nevar ierakstīt <code>%s</code>. Jālabo direktorijas tiesības!';
$lang['i_confexists'] = '<code>%s</code> jau ir';
$lang['i_writeerr'] = 'Nevar izveidot <code>%s</code>. Jāpārbauda direktorijas/faila tiesības un fails jāizveido pašam.';
@@ -281,6 +294,7 @@ $lang['i_policy'] = 'Sākotnējā ACL politika';
$lang['i_pol0'] = 'Atvērts Wiki (raksta, lasa un augšupielādē ikviens)';
$lang['i_pol1'] = 'Publisks Wiki (lasa ikviens, raksta un augšupielādē reģistrēti lietotāji)';
$lang['i_pol2'] = 'Slēgts Wiki (raksta, lasa un augšupielādē tikai reģistrēti lietotāji)';
+$lang['i_allowreg'] = 'Atļaut lietotājiem reģistrēties.';
$lang['i_retry'] = 'Atkārtot';
$lang['i_license'] = 'Ar kādu licenci saturs tiks publicēts:';
$lang['i_license_none'] = 'Nerādīt nekādu licences informāciju';
@@ -318,3 +332,7 @@ $lang['media_perm_read'] = 'Atvainojiet, jums nav tiesību skatīt failus.
$lang['media_perm_upload'] = 'Atvainojiet, jums nav tiesību augšupielādēt. ';
$lang['media_update'] = 'Augšupielādēt jaunu versiju';
$lang['media_restore'] = 'Atjaunot šo versiju';
+$lang['currentns'] = 'Pašreizējā sadaļa';
+$lang['searchresult'] = 'Meklēšanas rezultāti';
+$lang['plainhtml'] = 'Tīrs HTML';
+$lang['wikimarkup'] = 'Viki iezīmēšana valoda';
diff --git a/inc/lang/mg/lang.php b/inc/lang/mg/lang.php
index c5ed669a9..6239c01fe 100644
--- a/inc/lang/mg/lang.php
+++ b/inc/lang/mg/lang.php
@@ -49,11 +49,11 @@ $lang['regbadpass'] = 'Tsy mitovy ny alahidy roa nomenao, avereno indray.';
$lang['regpwmail'] = 'Ny alahidy Wiki-nao';
$lang['reghere'] = 'Mbola tsy manana kaonty ianao? Manaova vaovao';
-$lang['txt_upload'] = 'Misafidiana rakitra halefa';
-$lang['txt_filename'] = 'Ampidiro ny anaran\'ny wiki (tsy voatery)';
+$lang['txt_upload'] = 'Misafidiana rakitra halefa:';
+$lang['txt_filename'] = 'Ampidiro ny anaran\'ny wiki (tsy voatery):';
$lang['txt_overwrt'] = 'Fafana izay rakitra efa misy?';
-$lang['lockedby'] = 'Mbola voahidin\'i';
-$lang['lockexpire'] = 'Afaka ny hidy amin\'ny';
+$lang['lockedby'] = 'Mbola voahidin\'i:';
+$lang['lockexpire'] = 'Afaka ny hidy amin\'ny:';
$lang['js']['willexpire'] = 'Efa ho lany fotoana afaka iray minitra ny hidy ahafahanao manova ny pejy.\nMba hialana amin\'ny conflit dia ampiasao ny bokotra topi-maso hamerenana ny timer-n\'ny hidy.';
$lang['js']['notsavedyet'] = 'Misy fiovana tsy voarakitra, ho very izany ireo.\nAzo antoka fa hotohizana?';
@@ -83,7 +83,7 @@ $lang['current'] = 'current';
$lang['yours'] = 'Kinova-nao';
$lang['diff'] = 'Asehoy ny tsy fitoviana amin\'ny kinova amin\'izao';
$lang['line'] = 'Andalana';
-$lang['breadcrumb'] = 'Taiza ianao';
+$lang['breadcrumb'] = 'Taiza ianao:';
$lang['lastmod'] = 'Novaina farany:';
$lang['by'] = '/';
$lang['deleted'] = 'voafafa';
diff --git a/inc/lang/mk/lang.php b/inc/lang/mk/lang.php
index 6bf5fafc9..ddfae15c4 100644
--- a/inc/lang/mk/lang.php
+++ b/inc/lang/mk/lang.php
@@ -47,7 +47,7 @@ $lang['btn_recover'] = 'Поврати скица';
$lang['btn_draftdel'] = 'Избриши скица';
$lang['btn_revert'] = 'Обнови';
$lang['btn_register'] = 'Регистрирај се';
-$lang['loggedinas'] = 'Најавен/а како';
+$lang['loggedinas'] = 'Најавен/а како:';
$lang['user'] = 'Корисничко име';
$lang['pass'] = 'Лозинка';
$lang['newpass'] = 'Нова лозинка';
@@ -85,11 +85,11 @@ $lang['license'] = 'Освен каде што е наведено
$lang['licenseok'] = 'Забелешка: со уредување на оваа страница се согласувате да ја лиценцирате вашата содржина под следнава лиценца:';
$lang['searchmedia'] = 'Барај име на датотека:';
$lang['searchmedia_in'] = 'Барај во %s';
-$lang['txt_upload'] = 'Избери датотека за качување';
-$lang['txt_filename'] = 'Качи како (неморално)';
+$lang['txt_upload'] = 'Избери датотека за качување:';
+$lang['txt_filename'] = 'Качи како (неморално):';
$lang['txt_overwrt'] = 'Пребриши ја веќе постоечката датотека';
-$lang['lockedby'] = 'Моментално заклучена од';
-$lang['lockexpire'] = 'Клучот истекува на';
+$lang['lockedby'] = 'Моментално заклучена од:';
+$lang['lockexpire'] = 'Клучот истекува на:';
$lang['js']['willexpire'] = 'Вашиот клуч за уредување на оваа страница ќе истече за една минута.\nЗа да избегнете конфликти и да го ресетирате бројачот за време, искористете го копчето за преглед.';
$lang['js']['notsavedyet'] = 'Незачуваните промени ќе бидат изгубени.\nСакате да продолжите?';
$lang['rssfailed'] = 'Се појави грешка при повлекувањето на овој канал:';
@@ -130,9 +130,9 @@ $lang['yours'] = 'Вашата верзија';
$lang['diff'] = 'Прикажи разлики со сегашната верзија';
$lang['diff2'] = 'Прикажи разлики помеѓу избраните ревизии';
$lang['line'] = 'Линија';
-$lang['breadcrumb'] = 'Следи';
-$lang['youarehere'] = 'Вие сте тука';
-$lang['lastmod'] = 'Последно изменета';
+$lang['breadcrumb'] = 'Следи:';
+$lang['youarehere'] = 'Вие сте тука:';
+$lang['lastmod'] = 'Последно изменета:';
$lang['by'] = 'од';
$lang['deleted'] = 'отстранета';
$lang['created'] = 'креирана';
@@ -172,16 +172,16 @@ $lang['metaedit'] = 'Уреди мета-податоци';
$lang['metasaveerr'] = 'Запишување на мета-податоците не успеа';
$lang['metasaveok'] = 'Мета-податоците се зачувани';
$lang['btn_img_backto'] = 'Назад до %s';
-$lang['img_title'] = 'Насловна линија';
-$lang['img_caption'] = 'Наслов';
-$lang['img_date'] = 'Датум';
-$lang['img_fname'] = 'Име на датотека';
-$lang['img_fsize'] = 'Големина';
-$lang['img_artist'] = 'Фотограф';
-$lang['img_copyr'] = 'Авторско право';
-$lang['img_format'] = 'Формат';
-$lang['img_camera'] = 'Камера';
-$lang['img_keywords'] = 'Клучни зборови';
+$lang['img_title'] = 'Насловна линија:';
+$lang['img_caption'] = 'Наслов:';
+$lang['img_date'] = 'Датум:';
+$lang['img_fname'] = 'Име на датотека:';
+$lang['img_fsize'] = 'Големина:';
+$lang['img_artist'] = 'Фотограф:';
+$lang['img_copyr'] = 'Авторско право:';
+$lang['img_format'] = 'Формат:';
+$lang['img_camera'] = 'Камера:';
+$lang['img_keywords'] = 'Клучни зборови:';
$lang['subscr_subscribe_success'] = 'Додаден/а е %s во претплатничката листа за %s';
$lang['subscr_subscribe_error'] = 'Грешка при додавањето на %s во претплатничката листа за %s';
$lang['subscr_subscribe_noaddress'] = 'Нема адреса за е-пошта поврзана со Вашата најава, не може да бидете додадени на претплатничката листа';
diff --git a/inc/lang/mr/lang.php b/inc/lang/mr/lang.php
index ab84e7353..72779dd10 100644
--- a/inc/lang/mr/lang.php
+++ b/inc/lang/mr/lang.php
@@ -54,7 +54,7 @@ $lang['btn_revert'] = 'पुनर्स्थापन';
$lang['btn_register'] = 'नोंदणी';
$lang['btn_apply'] = 'लागू';
$lang['btn_media'] = 'मिडिया व्यवस्थापक';
-$lang['loggedinas'] = 'लॉगिन नाव';
+$lang['loggedinas'] = 'लॉगिन नाव:';
$lang['user'] = 'वापरकर्ता';
$lang['pass'] = 'परवलीचा शब्द';
$lang['newpass'] = 'नवीन परवलीचा शब्द';
@@ -93,8 +93,8 @@ $lang['license'] = 'विशिष्ठ नोंद केल
$lang['licenseok'] = 'नोंद : हे पृष्ठ संपादित केल्यास तुम्ही तुमचे योगदान खालील लायसन्स अंतर्गत येइल : ';
$lang['searchmedia'] = 'फाईल शोधा:';
$lang['searchmedia_in'] = '%s मधे शोधा';
-$lang['txt_upload'] = 'अपलोड करण्याची फाइल निवडा';
-$lang['txt_filename'] = 'अपलोड उर्फ़ ( वैकल्पिक )';
+$lang['txt_upload'] = 'अपलोड करण्याची फाइल निवडा:';
+$lang['txt_filename'] = 'अपलोड उर्फ़ ( वैकल्पिक ):';
$lang['txt_overwrt'] = 'अस्तित्वात असलेल्या फाइलवरच सुरक्षित करा.';
$lang['lockedby'] = 'सध्या लॉक करणारा :';
$lang['lockexpire'] = 'सध्या लॉक करणारा :';
@@ -174,9 +174,9 @@ $lang['diff_type'] = 'फरक बघू:';
$lang['diff_inline'] = 'एका ओळीत';
$lang['diff_side'] = 'बाजूबाजूला';
$lang['line'] = 'ओळ';
-$lang['breadcrumb'] = 'मागमूस';
-$lang['youarehere'] = 'तुम्ही इथे आहात';
-$lang['lastmod'] = 'सर्वात शेवटचा बदल';
+$lang['breadcrumb'] = 'मागमूस:';
+$lang['youarehere'] = 'तुम्ही इथे आहात:';
+$lang['lastmod'] = 'सर्वात शेवटचा बदल:';
$lang['by'] = 'द्वारा';
$lang['deleted'] = 'काढून टाकले';
$lang['created'] = 'निर्माण केले';
@@ -228,18 +228,18 @@ $lang['metaedit'] = 'मेटाडेटा बदला';
$lang['metasaveerr'] = 'मेटाडेटा सुरक्षित झाला नाही';
$lang['metasaveok'] = 'मेटाडेटा सुरक्षित झाला';
$lang['btn_img_backto'] = 'परत जा %s';
-$lang['img_title'] = 'नाव';
-$lang['img_caption'] = 'टीप';
-$lang['img_date'] = 'तारीख';
-$lang['img_fname'] = 'फाइल नाव';
-$lang['img_fsize'] = 'साइझ';
-$lang['img_artist'] = 'फोटोग्राफर';
-$lang['img_copyr'] = 'कॉपीराइट';
-$lang['img_format'] = 'प्रकार';
-$lang['img_camera'] = 'कॅमेरा';
-$lang['img_keywords'] = 'मुख्य शब्द';
-$lang['img_width'] = 'रुंदी';
-$lang['img_height'] = 'उंची';
+$lang['img_title'] = 'नाव:';
+$lang['img_caption'] = 'टीप:';
+$lang['img_date'] = 'तारीख:';
+$lang['img_fname'] = 'फाइल नाव:';
+$lang['img_fsize'] = 'साइझ:';
+$lang['img_artist'] = 'फोटोग्राफर:';
+$lang['img_copyr'] = 'कॉपीराइट:';
+$lang['img_format'] = 'प्रकार:';
+$lang['img_camera'] = 'कॅमेरा:';
+$lang['img_keywords'] = 'मुख्य शब्द:';
+$lang['img_width'] = 'रुंदी:';
+$lang['img_height'] = 'उंची:';
$lang['btn_mediaManager'] = 'मिडिया व्यवस्थापकात बघू';
$lang['authtempfail'] = 'सदस्य अधिकृत करण्याची सुविधा सध्या चालू नाही. सतत हा मजकूर दिसल्यास कृपया तुमच्या विकीच्या व्यवस्थापकाशी सम्पर्क साधा.';
$lang['i_chooselang'] = 'तुमची भाषा निवडा';
diff --git a/inc/lang/ms/lang.php b/inc/lang/ms/lang.php
index 02c0e2c91..303116429 100644
--- a/inc/lang/ms/lang.php
+++ b/inc/lang/ms/lang.php
@@ -47,7 +47,7 @@ $lang['btn_revert'] = 'Pulihkan';
$lang['btn_register'] = 'Daftaran';
$lang['btn_apply'] = 'Simpan';
$lang['btn_media'] = 'Manager media';
-$lang['loggedinas'] = 'Log masuk sebagai';
+$lang['loggedinas'] = 'Log masuk sebagai:';
$lang['user'] = 'Nama pengguna';
$lang['pass'] = 'Kata laluan';
$lang['newpass'] = 'Kata laluan baru';
@@ -83,10 +83,10 @@ $lang['license'] = 'Selain daripada yang dinyata, isi wiki ini dis
$lang['licenseok'] = 'Perhatian: Dengan menyunting halaman ini, anda setuju untuk isi-isi anda dilesen menggunakan lesen berikut:';
$lang['searchmedia'] = 'Cari nama fail:';
$lang['searchmedia_in'] = 'Cari di %s';
-$lang['txt_upload'] = 'Pilih fail untuk diunggah';
-$lang['txt_filename'] = 'Unggah fail dengan nama (tidak wajib)';
+$lang['txt_upload'] = 'Pilih fail untuk diunggah:';
+$lang['txt_filename'] = 'Unggah fail dengan nama (tidak wajib):';
$lang['txt_overwrt'] = 'Timpa fail sekarang';
-$lang['lockedby'] = 'Halaman ini telah di';
+$lang['lockedby'] = 'Halaman ini telah di:';
$lang['fileupload'] = 'Muat naik fail';
$lang['uploadsucc'] = 'Pemuatan naik berjaya';
$lang['uploadfail'] = 'Ralat muat naik';
diff --git a/inc/lang/ne/lang.php b/inc/lang/ne/lang.php
index a7d694d5b..ddf031242 100644
--- a/inc/lang/ne/lang.php
+++ b/inc/lang/ne/lang.php
@@ -44,7 +44,7 @@ $lang['btn_draft'] = ' ड्राफ्ट सम्पादन
$lang['btn_recover'] = 'पहिलेको ड्राफ्ट हासिल गर्नुहोस ';
$lang['btn_draftdel'] = ' ड्राफ्ट मेटाउनुहोस् ';
$lang['btn_register'] = 'दर्ता गर्नुहोस्';
-$lang['loggedinas'] = 'प्रवेश गर्नुहोस् ';
+$lang['loggedinas'] = 'प्रवेश गर्नुहोस् :';
$lang['user'] = 'प्रयोगकर्ता ';
$lang['pass'] = 'प्रवेशशव्द';
$lang['newpass'] = 'नयाँ प्रवेशशव्द';
@@ -80,10 +80,10 @@ $lang['resendpwdconfirm'] = 'तपाईको इमेलमा कन
$lang['resendpwdsuccess'] = 'तपाईको प्रवेशशव्द इमेलबाट पठाइएको छ। ';
$lang['license'] = 'खुलाइएको बाहेक, यस विकिका विषयवस्तुहरु निम्त प्रमाण द्वारा प्रमाणिक गरिएको छ।';
$lang['licenseok'] = 'नोट: यस पृष्ठ सम्पादन गरी तपाईले आफ्नो विषयवस्तु तलको प्रमाण पत्र अन्तर्गत प्रमाणिक गर्न राजी हुनु हुनेछ ।';
-$lang['txt_upload'] = 'अपलोड गर्नलाई फाइल छा्न्नुहो्स्';
-$lang['txt_filename'] = 'अर्को रुपमा अपलोड गर्नुहोस् (ऐच्छिक)';
+$lang['txt_upload'] = 'अपलोड गर्नलाई फाइल छा्न्नुहो्स्:';
+$lang['txt_filename'] = 'अर्को रुपमा अपलोड गर्नुहोस् (ऐच्छिक):';
$lang['txt_overwrt'] = 'रहेको उहि नामको फाइललाई मेटाउने';
-$lang['lockedby'] = 'अहिले ताल्चा लगाइएको';
+$lang['lockedby'] = 'अहिले ताल्चा लगाइएको:';
$lang['lockexpire'] = 'ताल्चा अवधि सकिने :';
$lang['js']['willexpire'] = 'तपाईलले यो पृष्ठ सम्पादन गर्न लगाउनु भएको ताल्चाको अवधि एक मिनेट भित्र सकिदै छ। \n द्वन्द हुन नदिन पूर्वरुप वा ताल्चा समय परिवर्तन गर्नुहोस् ।';
$lang['js']['notsavedyet'] = 'तपाईले वचन गर्नु नभएको परिवर्रन हराउने छ। \n साच्चै जारी गर्नुहुन्छ ।';
@@ -123,9 +123,9 @@ $lang['yours'] = 'तपाईको संस्करण';
$lang['diff'] = 'हालको संस्करण सँगको भिन्नता';
$lang['diff2'] = 'रोजिएका संस्करण वीचका भिन्नताहरु ';
$lang['line'] = 'हरफ';
-$lang['breadcrumb'] = 'छुट्ट्याउनुहोस् ';
-$lang['youarehere'] = 'तपाई यहा हुनुहुन्छ';
-$lang['lastmod'] = 'अन्तिम पटक सच्याइएको';
+$lang['breadcrumb'] = 'छुट्ट्याउनुहोस् :';
+$lang['youarehere'] = 'तपाई यहा हुनुहुन्छ:';
+$lang['lastmod'] = 'अन्तिम पटक सच्याइएको:';
$lang['by'] = 'द्वारा ';
$lang['deleted'] = 'हटाइएको';
$lang['created'] = 'निर्माण गरिएको';
@@ -159,16 +159,16 @@ $lang['metaedit'] = 'मेटाडेटा सम्पादन
$lang['metasaveerr'] = 'मेटाडाटा लेखन असफल';
$lang['metasaveok'] = 'मेटाडाटा वचत भयो ';
$lang['btn_img_backto'] = 'फिर्ता%s';
-$lang['img_title'] = 'शिर्षक';
-$lang['img_caption'] = 'निम्न लेख';
-$lang['img_date'] = 'मिति';
-$lang['img_fname'] = 'फाइलनाम';
-$lang['img_fsize'] = 'आकार';
-$lang['img_artist'] = 'चित्रकार';
-$lang['img_copyr'] = 'सर्वाधिकार';
-$lang['img_format'] = 'ढाचा';
-$lang['img_camera'] = 'क्यामेरा';
-$lang['img_keywords'] = 'खोज शब्द';
+$lang['img_title'] = 'शिर्षक:';
+$lang['img_caption'] = 'निम्न लेख:';
+$lang['img_date'] = 'मिति:';
+$lang['img_fname'] = 'फाइलनाम:';
+$lang['img_fsize'] = 'आकार:';
+$lang['img_artist'] = 'चित्रकार:';
+$lang['img_copyr'] = 'सर्वाधिकार:';
+$lang['img_format'] = 'ढाचा:';
+$lang['img_camera'] = 'क्यामेरा:';
+$lang['img_keywords'] = 'खोज शब्द:';
$lang['authtempfail'] = 'प्रयोगकर्ता प्रामाणिकरण अस्थाइरुपमा अनुपलब्ध छ। यदि यो समस्या रहि रहेमा तपाईको विकि एड्मिनलाई खवर गर्नुहोला ।';
$lang['i_chooselang'] = 'भाषा छान्नुहोस् ';
$lang['i_installer'] = 'DokuWiki स्थापक';
diff --git a/inc/lang/nl/lang.php b/inc/lang/nl/lang.php
index b6cf11968..a9058720c 100644
--- a/inc/lang/nl/lang.php
+++ b/inc/lang/nl/lang.php
@@ -23,14 +23,15 @@
* @author Remon <no@email.local>
* @author gicalle <gicalle@hotmail.com>
* @author Rene <wllywlnt@yahoo.com>
+ * @author Johan Vervloet <johan.vervloet@gmail.com>
*/
$lang['encoding'] = 'utf-8';
$lang['direction'] = 'ltr';
-$lang['doublequoteopening'] = '„';
+$lang['doublequoteopening'] = '“';
$lang['doublequoteclosing'] = '”';
-$lang['singlequoteopening'] = '‚';
+$lang['singlequoteopening'] = '‘';
$lang['singlequoteclosing'] = '’';
-$lang['apostrophe'] = '\'';
+$lang['apostrophe'] = '’';
$lang['btn_edit'] = 'Pagina aanpassen';
$lang['btn_source'] = 'Toon broncode';
$lang['btn_show'] = 'Toon pagina';
@@ -69,7 +70,7 @@ $lang['btn_media'] = 'Mediabeheerder';
$lang['btn_deleteuser'] = 'Verwijder mijn account';
$lang['btn_img_backto'] = 'Terug naar %s';
$lang['btn_mediaManager'] = 'In mediabeheerder bekijken';
-$lang['loggedinas'] = 'Ingelogd als';
+$lang['loggedinas'] = 'Ingelogd als:';
$lang['user'] = 'Gebruikersnaam';
$lang['pass'] = 'Wachtwoord';
$lang['newpass'] = 'Nieuw wachtwoord';
@@ -114,12 +115,12 @@ $lang['license'] = 'Tenzij anders vermeld valt de inhoud van deze
$lang['licenseok'] = 'Let op: Door deze pagina aan te passen geef je de inhoud vrij onder de volgende licentie:';
$lang['searchmedia'] = 'Bestandsnaam zoeken:';
$lang['searchmedia_in'] = 'Zoek in %s';
-$lang['txt_upload'] = 'Selecteer een bestand om te uploaden';
-$lang['txt_filename'] = 'Vul nieuwe naam in (optioneel)';
+$lang['txt_upload'] = 'Selecteer een bestand om te uploaden:';
+$lang['txt_filename'] = 'Vul nieuwe naam in (optioneel):';
$lang['txt_overwrt'] = 'Overschrijf bestaand bestand';
$lang['maxuploadsize'] = 'Max %s per bestand';
-$lang['lockedby'] = 'Momenteel in gebruik door';
-$lang['lockexpire'] = 'Exclusief gebruiksrecht vervalt op';
+$lang['lockedby'] = 'Momenteel in gebruik door:';
+$lang['lockexpire'] = 'Exclusief gebruiksrecht vervalt op:';
$lang['js']['willexpire'] = 'Je exclusieve gebruiksrecht voor het aanpassen van deze pagina verloopt over een minuut.\nKlik op de Voorbeeld-knop om het exclusieve gebruiksrecht te verlengen.';
$lang['js']['notsavedyet'] = 'Nog niet bewaarde wijzigingen zullen verloren gaan.
Weet je zeker dat je wilt doorgaan?';
@@ -206,9 +207,9 @@ $lang['difflastrev'] = 'Laatste revisie';
$lang['diffbothprevrev'] = 'Beide kanten vorige revisie';
$lang['diffbothnextrev'] = 'Beide kanten volgende revisie';
$lang['line'] = 'Regel';
-$lang['breadcrumb'] = 'Spoor';
-$lang['youarehere'] = 'Je bent hier';
-$lang['lastmod'] = 'Laatst gewijzigd';
+$lang['breadcrumb'] = 'Spoor:';
+$lang['youarehere'] = 'Je bent hier:';
+$lang['lastmod'] = 'Laatst gewijzigd:';
$lang['by'] = 'door';
$lang['deleted'] = 'verwijderd';
$lang['created'] = 'aangemaakt';
@@ -261,18 +262,18 @@ $lang['admin_register'] = 'Nieuwe gebruiker toevoegen';
$lang['metaedit'] = 'Metadata wijzigen';
$lang['metasaveerr'] = 'Schrijven van metadata mislukt';
$lang['metasaveok'] = 'Metadata bewaard';
-$lang['img_title'] = 'Titel';
-$lang['img_caption'] = 'Bijschrift';
-$lang['img_date'] = 'Datum';
-$lang['img_fname'] = 'Bestandsnaam';
-$lang['img_fsize'] = 'Grootte';
-$lang['img_artist'] = 'Fotograaf';
-$lang['img_copyr'] = 'Copyright';
-$lang['img_format'] = 'Formaat';
-$lang['img_camera'] = 'Camera';
-$lang['img_keywords'] = 'Trefwoorden';
-$lang['img_width'] = 'Breedte';
-$lang['img_height'] = 'Hoogte';
+$lang['img_title'] = 'Titel:';
+$lang['img_caption'] = 'Bijschrift:';
+$lang['img_date'] = 'Datum:';
+$lang['img_fname'] = 'Bestandsnaam:';
+$lang['img_fsize'] = 'Grootte:';
+$lang['img_artist'] = 'Fotograaf:';
+$lang['img_copyr'] = 'Copyright:';
+$lang['img_format'] = 'Formaat:';
+$lang['img_camera'] = 'Camera:';
+$lang['img_keywords'] = 'Trefwoorden:';
+$lang['img_width'] = 'Breedte:';
+$lang['img_height'] = 'Hoogte:';
$lang['subscr_subscribe_success'] = '%s is ingeschreven voor %s';
$lang['subscr_subscribe_error'] = 'Fout bij inschrijven van %s voor %s';
$lang['subscr_subscribe_noaddress'] = 'Er is geen e-mailadres gekoppeld aan uw account, u kunt daardoor niet worden ingeschreven.';
diff --git a/inc/lang/no/lang.php b/inc/lang/no/lang.php
index 8b3c4937f..6156fa34c 100644
--- a/inc/lang/no/lang.php
+++ b/inc/lang/no/lang.php
@@ -67,7 +67,7 @@ $lang['btn_media'] = 'Mediefiler';
$lang['btn_deleteuser'] = 'Fjern min konto';
$lang['btn_img_backto'] = 'Tilbake til %s';
$lang['btn_mediaManager'] = 'Vis i mediefilbehandler';
-$lang['loggedinas'] = 'Innlogget som';
+$lang['loggedinas'] = 'Innlogget som:';
$lang['user'] = 'Brukernavn';
$lang['pass'] = 'Passord';
$lang['newpass'] = 'Nytt passord';
@@ -112,12 +112,12 @@ $lang['license'] = 'Der annet ikke er angitt, er innholdet på den
$lang['licenseok'] = 'Merk: Ved å endre på denne siden godtar du at ditt innhold utgis under følgende lisens:';
$lang['searchmedia'] = 'Søk filnavn';
$lang['searchmedia_in'] = 'Søk i %s';
-$lang['txt_upload'] = 'Velg fil som skal lastes opp';
-$lang['txt_filename'] = 'Skriv inn wikinavn (alternativt)';
+$lang['txt_upload'] = 'Velg fil som skal lastes opp:';
+$lang['txt_filename'] = 'Skriv inn wikinavn (alternativt):';
$lang['txt_overwrt'] = 'Overskriv eksisterende fil';
$lang['maxuploadsize'] = 'Opplast maks % per fil.';
-$lang['lockedby'] = 'Låst av';
-$lang['lockexpire'] = 'Låsingen utløper';
+$lang['lockedby'] = 'Låst av:';
+$lang['lockexpire'] = 'Låsingen utløper:';
$lang['js']['willexpire'] = 'Din redigeringslås for dette dokumentet kommer snart til å utløpe.\nFor å unngå versjonskonflikter bør du forhåndsvise dokumentet ditt for å forlenge redigeringslåsen.';
$lang['js']['notsavedyet'] = 'Ulagrede endringer vil gå tapt!
Vil du fortsette?';
@@ -204,9 +204,9 @@ $lang['difflastrev'] = 'Siste revisjon';
$lang['diffbothprevrev'] = 'Begge sider forrige revisjon';
$lang['diffbothnextrev'] = 'Begge sider neste revisjon';
$lang['line'] = 'Linje';
-$lang['breadcrumb'] = 'Spor';
-$lang['youarehere'] = 'Du er her';
-$lang['lastmod'] = 'Sist endret';
+$lang['breadcrumb'] = 'Spor:';
+$lang['youarehere'] = 'Du er her:';
+$lang['lastmod'] = 'Sist endret:';
$lang['by'] = 'av';
$lang['deleted'] = 'fjernet';
$lang['created'] = 'opprettet';
@@ -259,18 +259,18 @@ $lang['admin_register'] = 'Legg til ny bruker';
$lang['metaedit'] = 'Rediger metadata';
$lang['metasaveerr'] = 'Skriving av metadata feilet';
$lang['metasaveok'] = 'Metadata lagret';
-$lang['img_title'] = 'Tittel';
-$lang['img_caption'] = 'Bildetekst';
-$lang['img_date'] = 'Dato';
-$lang['img_fname'] = 'Filnavn';
-$lang['img_fsize'] = 'Størrelse';
-$lang['img_artist'] = 'Fotograf';
-$lang['img_copyr'] = 'Opphavsrett';
-$lang['img_format'] = 'Format';
-$lang['img_camera'] = 'Kamera';
-$lang['img_keywords'] = 'Nøkkelord';
-$lang['img_width'] = 'Bredde';
-$lang['img_height'] = 'Høyde';
+$lang['img_title'] = 'Tittel:';
+$lang['img_caption'] = 'Bildetekst:';
+$lang['img_date'] = 'Dato:';
+$lang['img_fname'] = 'Filnavn:';
+$lang['img_fsize'] = 'Størrelse:';
+$lang['img_artist'] = 'Fotograf:';
+$lang['img_copyr'] = 'Opphavsrett:';
+$lang['img_format'] = 'Format:';
+$lang['img_camera'] = 'Kamera:';
+$lang['img_keywords'] = 'Nøkkelord:';
+$lang['img_width'] = 'Bredde:';
+$lang['img_height'] = 'Høyde:';
$lang['subscr_subscribe_success'] = 'La til %s som abonnent på %s';
$lang['subscr_subscribe_error'] = 'Klarte ikke å legge til %s som abonnent på %s';
$lang['subscr_subscribe_noaddress'] = 'Brukeren din er ikke registrert med noen adresse. Du kan derfor ikke legges til som abonnent.';
diff --git a/inc/lang/pl/lang.php b/inc/lang/pl/lang.php
index e65866761..c6ff4983e 100644
--- a/inc/lang/pl/lang.php
+++ b/inc/lang/pl/lang.php
@@ -16,6 +16,7 @@
* @author Aoi Karasu <aoikarasu@gmail.com>
* @author Tomasz Bosak <bosak.tomasz@gmail.com>
* @author Paweł Jan Czochański <czochanski@gmail.com>
+ * @author Mati <mackosa@wp.pl>
*/
$lang['encoding'] = 'utf-8';
$lang['direction'] = 'ltr';
@@ -60,7 +61,9 @@ $lang['btn_register'] = 'Zarejestruj się!';
$lang['btn_apply'] = 'Zastosuj';
$lang['btn_media'] = 'Menadżer multimediów';
$lang['btn_deleteuser'] = 'Usuń moje konto';
-$lang['loggedinas'] = 'Zalogowany jako';
+$lang['btn_img_backto'] = 'Wróć do %s';
+$lang['btn_mediaManager'] = 'Zobacz w menadżerze multimediów';
+$lang['loggedinas'] = 'Zalogowany jako:';
$lang['user'] = 'Użytkownik';
$lang['pass'] = 'Hasło';
$lang['newpass'] = 'Nowe hasło';
@@ -105,12 +108,12 @@ $lang['license'] = 'Wszystkie treści w tym wiki, którym nie przy
$lang['licenseok'] = 'Uwaga: edytując tę stronę zgadzasz się na publikowanie jej treści pod licencją:';
$lang['searchmedia'] = 'Szukaj pliku o nazwie:';
$lang['searchmedia_in'] = 'Szukaj w %s';
-$lang['txt_upload'] = 'Wybierz plik do wysłania';
-$lang['txt_filename'] = 'Nazwa pliku (opcjonalnie)';
+$lang['txt_upload'] = 'Wybierz plik do wysłania:';
+$lang['txt_filename'] = 'Nazwa pliku (opcjonalnie):';
$lang['txt_overwrt'] = 'Nadpisać istniejący plik?';
$lang['maxuploadsize'] = 'Maksymalny rozmiar wysyłanych danych wynosi %s dla jednego pliku.';
-$lang['lockedby'] = 'Aktualnie zablokowane przez';
-$lang['lockexpire'] = 'Blokada wygasa';
+$lang['lockedby'] = 'Aktualnie zablokowane przez:';
+$lang['lockexpire'] = 'Blokada wygasa:';
$lang['js']['willexpire'] = 'Twoja blokada edycji tej strony wygaśnie w ciągu minuty. \nW celu uniknięcia konfliktów użyj przycisku podglądu aby odnowić blokadę.';
$lang['js']['notsavedyet'] = 'Nie zapisane zmiany zostaną utracone.
Czy na pewno kontynuować?';
@@ -191,10 +194,13 @@ $lang['difflink'] = 'Odnośnik do tego porównania';
$lang['diff_type'] = 'Zobacz różnice:';
$lang['diff_inline'] = 'W linii';
$lang['diff_side'] = 'Jeden obok drugiego';
+$lang['diffprevrev'] = 'Poprzednia wersja';
+$lang['diffnextrev'] = 'Nowa wersja';
+$lang['difflastrev'] = 'Ostatnia wersja';
$lang['line'] = 'Linia';
-$lang['breadcrumb'] = 'Ślad';
-$lang['youarehere'] = 'Jesteś tutaj';
-$lang['lastmod'] = 'ostatnio zmienione';
+$lang['breadcrumb'] = 'Ślad:';
+$lang['youarehere'] = 'Jesteś tutaj:';
+$lang['lastmod'] = 'ostatnio zmienione:';
$lang['by'] = 'przez';
$lang['deleted'] = 'usunięto';
$lang['created'] = 'utworzono';
@@ -247,20 +253,18 @@ $lang['admin_register'] = 'Dodawanie użytkownika';
$lang['metaedit'] = 'Edytuj metadane';
$lang['metasaveerr'] = 'Zapis metadanych nie powiódł się';
$lang['metasaveok'] = 'Metadane zapisano';
-$lang['btn_img_backto'] = 'Wróć do %s';
-$lang['img_title'] = 'Tytuł';
-$lang['img_caption'] = 'Nagłówek';
-$lang['img_date'] = 'Data';
-$lang['img_fname'] = 'Nazwa pliku';
-$lang['img_fsize'] = 'Rozmiar';
-$lang['img_artist'] = 'Fotograf';
-$lang['img_copyr'] = 'Prawa autorskie';
-$lang['img_format'] = 'Format';
-$lang['img_camera'] = 'Aparat';
-$lang['img_keywords'] = 'Słowa kluczowe';
-$lang['img_width'] = 'Szerokość';
-$lang['img_height'] = 'Wysokość';
-$lang['btn_mediaManager'] = 'Zobacz w menadżerze multimediów';
+$lang['img_title'] = 'Tytuł:';
+$lang['img_caption'] = 'Nagłówek:';
+$lang['img_date'] = 'Data:';
+$lang['img_fname'] = 'Nazwa pliku:';
+$lang['img_fsize'] = 'Rozmiar:';
+$lang['img_artist'] = 'Fotograf:';
+$lang['img_copyr'] = 'Prawa autorskie:';
+$lang['img_format'] = 'Format:';
+$lang['img_camera'] = 'Aparat:';
+$lang['img_keywords'] = 'Słowa kluczowe:';
+$lang['img_width'] = 'Szerokość:';
+$lang['img_height'] = 'Wysokość:';
$lang['subscr_subscribe_success'] = 'Dodano %s do listy subskrypcji %s';
$lang['subscr_subscribe_error'] = 'Błąd podczas dodawania %s do listy subskrypcji %s';
$lang['subscr_subscribe_noaddress'] = 'Brak adresu skojarzonego z twoim loginem, nie możesz zostać dodany(a) do listy subskrypcji';
diff --git a/inc/lang/pt-br/lang.php b/inc/lang/pt-br/lang.php
index d5539f921..4f1baf22c 100644
--- a/inc/lang/pt-br/lang.php
+++ b/inc/lang/pt-br/lang.php
@@ -23,6 +23,7 @@
* @author Leone Lisboa Magevski <leone1983@gmail.com>
* @author Dário Estevão <darioems@gmail.com>
* @author Juliano Marconi Lanigra <juliano.marconi@gmail.com>
+ * @author Ednei <leuloch@gmail.com>
*/
$lang['encoding'] = 'utf-8';
$lang['direction'] = 'ltr';
@@ -67,7 +68,9 @@ $lang['btn_register'] = 'Cadastre-se';
$lang['btn_apply'] = 'Aplicar';
$lang['btn_media'] = 'Gerenciador de mídias';
$lang['btn_deleteuser'] = 'Remover minha conta';
-$lang['loggedinas'] = 'Identificado(a) como';
+$lang['btn_img_backto'] = 'Voltar para %s';
+$lang['btn_mediaManager'] = 'Ver no gerenciador de mídias';
+$lang['loggedinas'] = 'Identificado(a) como:';
$lang['user'] = 'Nome de usuário';
$lang['pass'] = 'Senha';
$lang['newpass'] = 'Nova senha';
@@ -112,12 +115,12 @@ $lang['license'] = 'Exceto onde for informado ao contrário, o con
$lang['licenseok'] = 'Observe: editando esta página você aceita disponibilizar o seu conteúdo sob a seguinte licença:';
$lang['searchmedia'] = 'Buscar arquivo:';
$lang['searchmedia_in'] = 'Buscar em %s';
-$lang['txt_upload'] = 'Selecione o arquivo a ser enviado';
-$lang['txt_filename'] = 'Enviar como (opcional)';
+$lang['txt_upload'] = 'Selecione o arquivo a ser enviado:';
+$lang['txt_filename'] = 'Enviar como (opcional):';
$lang['txt_overwrt'] = 'Substituir o arquivo existente';
$lang['maxuploadsize'] = 'Tamanho máximo de %s por arquivo.';
-$lang['lockedby'] = 'Atualmente bloqueada por';
-$lang['lockexpire'] = 'O bloqueio expira em';
+$lang['lockedby'] = 'Atualmente bloqueada por:';
+$lang['lockexpire'] = 'O bloqueio expira em:';
$lang['js']['willexpire'] = 'O seu bloqueio de edição deste página irá expirar em um minuto.\nPara evitar conflitos de edição, clique no botão de visualização para reiniciar o temporizador de bloqueio.';
$lang['js']['notsavedyet'] = 'As alterações não salvas serão perdidas.
Deseja realmente continuar?';
@@ -198,10 +201,13 @@ $lang['difflink'] = 'Link para esta página de comparações';
$lang['diff_type'] = 'Ver as diferenças:';
$lang['diff_inline'] = 'Mescladas';
$lang['diff_side'] = 'Lado a lado';
+$lang['diffprevrev'] = 'Revisão anterior';
+$lang['diffnextrev'] = 'Próxima revisão';
+$lang['difflastrev'] = 'Última revisão';
$lang['line'] = 'Linha';
-$lang['breadcrumb'] = 'Visitou';
-$lang['youarehere'] = 'Você está aqui';
-$lang['lastmod'] = 'Última modificação';
+$lang['breadcrumb'] = 'Visitou:';
+$lang['youarehere'] = 'Você está aqui:';
+$lang['lastmod'] = 'Última modificação:';
$lang['by'] = 'por';
$lang['deleted'] = 'removida';
$lang['created'] = 'criada';
@@ -254,20 +260,18 @@ $lang['admin_register'] = 'Adicionar novo usuário';
$lang['metaedit'] = 'Editar metadados';
$lang['metasaveerr'] = 'Não foi possível escrever os metadados';
$lang['metasaveok'] = 'Os metadados foram salvos';
-$lang['btn_img_backto'] = 'Voltar para %s';
-$lang['img_title'] = 'Título';
-$lang['img_caption'] = 'Descrição';
-$lang['img_date'] = 'Data';
-$lang['img_fname'] = 'Nome do arquivo';
-$lang['img_fsize'] = 'Tamanho';
-$lang['img_artist'] = 'Fotógrafo';
-$lang['img_copyr'] = 'Direitos autorais';
-$lang['img_format'] = 'Formato';
-$lang['img_camera'] = 'Câmera';
-$lang['img_keywords'] = 'Palavras-chave';
-$lang['img_width'] = 'Largura';
-$lang['img_height'] = 'Altura';
-$lang['btn_mediaManager'] = 'Ver no gerenciador de mídias';
+$lang['img_title'] = 'Título:';
+$lang['img_caption'] = 'Descrição:';
+$lang['img_date'] = 'Data:';
+$lang['img_fname'] = 'Nome do arquivo:';
+$lang['img_fsize'] = 'Tamanho:';
+$lang['img_artist'] = 'Fotógrafo:';
+$lang['img_copyr'] = 'Direitos autorais:';
+$lang['img_format'] = 'Formato:';
+$lang['img_camera'] = 'Câmera:';
+$lang['img_keywords'] = 'Palavras-chave:';
+$lang['img_width'] = 'Largura:';
+$lang['img_height'] = 'Altura:';
$lang['subscr_subscribe_success'] = 'Adicionado %s à lista de monitoramentos de %s';
$lang['subscr_subscribe_error'] = 'Ocorreu um erro na adição de %s à lista de monitoramentos de %s';
$lang['subscr_subscribe_noaddress'] = 'Como não há nenhum endereço associado ao seu usuário, você não pode ser adicionado à lista de monitoramento';
@@ -296,6 +300,7 @@ $lang['i_modified'] = 'Por questões de segurança, esse script funci
Você pode extrair novamente os arquivos do pacote original ou consultar as <a href="http://dokuwiki.org/install">instruções de instalação do DokuWiki</a>.';
$lang['i_funcna'] = 'A função PHP <code>%s</code> não está disponível. O seu host a mantém desabilitada por algum motivo?';
$lang['i_phpver'] = 'A sua versão do PHP (<code>%s</code>) é inferior à necessária (<code>%s</code>). Você precisa atualizar a sua instalação do PHP.';
+$lang['i_mbfuncoverload'] = 'mbstring.func_overload precisa ser desabilitado no php.ini para executar o DokuWiki';
$lang['i_permfail'] = 'O DokuWiki não tem permissão de escrita em <code>%s</code>. Você precisa corrigir as configurações de permissão nesse diretório!';
$lang['i_confexists'] = '<code>%s</code> já existe';
$lang['i_writeerr'] = 'Não foi possível criar <code>%s</code>. É necessário checar as permissões de arquivos/diretórios e criar o arquivo manualmente.';
diff --git a/inc/lang/pt/lang.php b/inc/lang/pt/lang.php
index b2bb2dc34..ddc9b33ab 100644
--- a/inc/lang/pt/lang.php
+++ b/inc/lang/pt/lang.php
@@ -2,13 +2,15 @@
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- *
+ *
* @author José Carlos Monteiro <jose.c.monteiro@netcabo.pt>
* @author José Monteiro <Jose.Monteiro@DoWeDo-IT.com>
* @author Enrico Nicoletto <liverig@gmail.com>
* @author Fil <fil@meteopt.com>
* @author André Neves <drakferion@gmail.com>
* @author José Campos zecarlosdecampos@gmail.com
+ * @author Murilo <muriloricci@hotmail.com>
+ * @author Paulo Silva <paulotsilva@yahoo.com>
*/
$lang['encoding'] = 'utf-8';
$lang['direction'] = 'ltr';
@@ -44,6 +46,7 @@ $lang['btn_backtomedia'] = 'Voltar à Selecção de Media';
$lang['btn_subscribe'] = 'Subscrever Alterações';
$lang['btn_profile'] = 'Actualizar Perfil';
$lang['btn_reset'] = 'Limpar';
+$lang['btn_resendpwd'] = 'Definir nova senha';
$lang['btn_draft'] = 'Editar rascunho';
$lang['btn_recover'] = 'Recuperar rascunho';
$lang['btn_draftdel'] = 'Apagar rascunho';
@@ -52,7 +55,9 @@ $lang['btn_register'] = 'Registar';
$lang['btn_apply'] = 'Aplicar';
$lang['btn_media'] = 'Gestor de Media';
$lang['btn_deleteuser'] = 'Remover a Minha Conta';
-$lang['loggedinas'] = 'Está em sessão como';
+$lang['btn_img_backto'] = 'De volta a %s';
+$lang['btn_mediaManager'] = 'Ver em gestor de media';
+$lang['loggedinas'] = 'Está em sessão como:';
$lang['user'] = 'Utilizador';
$lang['pass'] = 'Senha';
$lang['newpass'] = 'Nova senha';
@@ -63,6 +68,7 @@ $lang['fullname'] = 'Nome completo';
$lang['email'] = 'Email';
$lang['profile'] = 'Perfil do Utilizador';
$lang['badlogin'] = 'O utilizador inválido ou senha inválida.';
+$lang['badpassconfirm'] = 'Infelizmente a palavra-passe não é a correcta';
$lang['minoredit'] = 'Alterações Menores';
$lang['draftdate'] = 'Rascunho automaticamente gravado em';
$lang['nosecedit'] = 'A página foi modificada entretanto. Como a informação da secção estava desactualizada, foi carregada a página inteira.';
@@ -82,8 +88,11 @@ $lang['profchanged'] = 'Perfil do utilizador actualizado com sucesso.'
$lang['profnodelete'] = 'Esta wiki não suporta remoção de utilizadores';
$lang['profdeleteuser'] = 'Apagar Conta';
$lang['profdeleted'] = 'A sua conta de utilizador foi removida desta wiki';
+$lang['profconfdelete'] = 'Quero remover a minha conta desta wiki. <br/> Esta acção não pode ser anulada.';
+$lang['profconfdeletemissing'] = 'A caixa de confirmação não foi marcada';
$lang['pwdforget'] = 'Esqueceu a sua senha? Pedir nova senha';
$lang['resendna'] = 'Este wiki não suporta reenvio de senhas.';
+$lang['resendpwd'] = 'Definir nova senha para';
$lang['resendpwdmissing'] = 'É preciso preencher todos os campos.';
$lang['resendpwdnouser'] = 'Não foi possível encontrar este utilizador.';
$lang['resendpwdbadauth'] = 'O código de autenticação não é válido. Por favor, assegure-se de que o link de confirmação está completo.';
@@ -93,11 +102,11 @@ $lang['license'] = 'Excepto menção em contrário, o conteúdo ne
$lang['licenseok'] = 'Nota: Ao editar esta página você aceita disponibilizar o seu conteúdo sob a seguinte licença:';
$lang['searchmedia'] = 'Procurar nome de ficheiro:';
$lang['searchmedia_in'] = 'Procurar em %s';
-$lang['txt_upload'] = 'Escolha ficheiro para carregar';
-$lang['txt_filename'] = 'Carregar como (opcional)';
+$lang['txt_upload'] = 'Escolha ficheiro para carregar:';
+$lang['txt_filename'] = 'Carregar como (opcional):';
$lang['txt_overwrt'] = 'Escrever por cima do ficheiro já existente';
-$lang['lockedby'] = 'Bloqueado por';
-$lang['lockexpire'] = 'Expira em';
+$lang['lockedby'] = 'Bloqueado por:';
+$lang['lockexpire'] = 'Expira em:';
$lang['js']['willexpire'] = 'O bloqueio de edição para este documento irá expirar num minuto.\nPara evitar conflitos use o botão Prever para re-iniciar o temporizador de bloqueio.';
$lang['js']['notsavedyet'] = 'Alterações não gravadas serão perdidas.';
$lang['js']['searchmedia'] = 'Procurar por ficheiros';
@@ -177,10 +186,13 @@ $lang['difflink'] = 'Ligação para esta vista de comparação';
$lang['diff_type'] = 'Ver diferenças';
$lang['diff_inline'] = 'Embutido';
$lang['diff_side'] = 'Lado a lado';
+$lang['diffprevrev'] = 'Revisão anterior';
+$lang['diffnextrev'] = 'Próxima revisão';
+$lang['difflastrev'] = 'Última revisão';
$lang['line'] = 'Linha';
-$lang['breadcrumb'] = 'Está em';
-$lang['youarehere'] = 'Está aqui';
-$lang['lastmod'] = 'Esta página foi modificada pela última vez em';
+$lang['breadcrumb'] = 'Está em:';
+$lang['youarehere'] = 'Está aqui:';
+$lang['lastmod'] = 'Esta página foi modificada pela última vez em:';
$lang['by'] = 'por';
$lang['deleted'] = 'Documento automaticamente removido.';
$lang['created'] = 'Criação deste novo documento.';
@@ -233,20 +245,18 @@ $lang['admin_register'] = 'Registar Novo Utilizador';
$lang['metaedit'] = 'Editar Metadata';
$lang['metasaveerr'] = 'Falhou a escrita de Metadata';
$lang['metasaveok'] = 'Metadata gravada';
-$lang['btn_img_backto'] = 'De volta a %s';
-$lang['img_title'] = 'Título';
-$lang['img_caption'] = 'Legenda';
-$lang['img_date'] = 'Data';
-$lang['img_fname'] = 'Ficheiro';
-$lang['img_fsize'] = 'Tamanho';
-$lang['img_artist'] = 'Fotógrafo';
-$lang['img_copyr'] = 'Copyright';
-$lang['img_format'] = 'Formato';
-$lang['img_camera'] = 'Câmara';
-$lang['img_keywords'] = 'Palavras-Chave';
-$lang['img_width'] = 'Largura';
-$lang['img_height'] = 'Altura';
-$lang['btn_mediaManager'] = 'Ver em gestor de media';
+$lang['img_title'] = 'Título:';
+$lang['img_caption'] = 'Legenda:';
+$lang['img_date'] = 'Data:';
+$lang['img_fname'] = 'Ficheiro:';
+$lang['img_fsize'] = 'Tamanho:';
+$lang['img_artist'] = 'Fotógrafo:';
+$lang['img_copyr'] = 'Copyright:';
+$lang['img_format'] = 'Formato:';
+$lang['img_camera'] = 'Câmara:';
+$lang['img_keywords'] = 'Palavras-Chave:';
+$lang['img_width'] = 'Largura:';
+$lang['img_height'] = 'Altura:';
$lang['subscr_subscribe_success'] = 'Adicionado %s à lista de subscrição para %s';
$lang['subscr_subscribe_error'] = 'Erro ao adicionar %s à lista de subscrição para %s';
$lang['subscr_subscribe_noaddress'] = 'Não existe endereço algum associado com o seu nome de utilizador, não pode ser adicionado à lista de subscrição';
@@ -285,6 +295,7 @@ $lang['i_policy'] = 'Politica ACL inicial';
$lang['i_pol0'] = 'Wiki Aberto (ler, escrever e carregar para todos)';
$lang['i_pol1'] = 'Wiki Público (ler para todos, escrever e carregar para utilizadores inscritos)';
$lang['i_pol2'] = 'Wiki Fechado (ler, escrever e carregar somente para utilizadores inscritos)';
+$lang['i_allowreg'] = 'Permitir aos utilizadores registarem-se por si próprios';
$lang['i_retry'] = 'Repetir';
$lang['i_license'] = 'Por favor escolha a licença sob a qual quer colocar o seu conteúdo:';
$lang['i_license_none'] = 'Não mostrar nenhuma informação de licença';
@@ -305,9 +316,11 @@ $lang['media_file'] = 'Ficheiro';
$lang['media_viewtab'] = 'Ver';
$lang['media_edittab'] = 'Editar';
$lang['media_historytab'] = 'Histórico';
+$lang['media_list_thumbs'] = 'Miniaturas';
$lang['media_list_rows'] = 'Linhas';
$lang['media_sort_name'] = 'Ordenar por nome';
$lang['media_sort_date'] = 'Ordenar por data';
+$lang['media_namespaces'] = 'Escolha o namespace';
$lang['media_files'] = 'Ficheiros em %s';
$lang['media_upload'] = 'Enviar para o grupo <strong>%s</strong>.';
$lang['media_search'] = 'Procurar no grupo <strong>%s</strong>.';
@@ -319,3 +332,7 @@ $lang['media_perm_read'] = 'Perdão, não tem permissão para ler ficheiro
$lang['media_perm_upload'] = 'Perdão, não tem permissão para enviar ficheiros.';
$lang['media_update'] = 'enviar nova versão';
$lang['media_restore'] = 'Restaurar esta versão';
+$lang['currentns'] = 'Namespace actual';
+$lang['searchresult'] = 'Resultado da pesquisa';
+$lang['plainhtml'] = 'HTML simples';
+$lang['wikimarkup'] = 'Markup de Wiki';
diff --git a/inc/lang/ro/lang.php b/inc/lang/ro/lang.php
index 31b2d7eba..cd7d4fcc3 100644
--- a/inc/lang/ro/lang.php
+++ b/inc/lang/ro/lang.php
@@ -53,7 +53,7 @@ $lang['btn_revert'] = 'Revenire';
$lang['btn_register'] = 'Înregistrează';
$lang['btn_apply'] = 'Aplică';
$lang['btn_media'] = 'Administrare media';
-$lang['loggedinas'] = 'Autentificat ca';
+$lang['loggedinas'] = 'Autentificat ca:';
$lang['user'] = 'Utilizator';
$lang['pass'] = 'Parola';
$lang['newpass'] = 'Parola nouă';
@@ -92,11 +92,11 @@ $lang['license'] = 'Exceptând locurile unde este altfel specifica
$lang['licenseok'] = 'Notă: Prin editarea acestei pagini ești de acord să publici conțintul sub următoarea licență:';
$lang['searchmedia'] = 'Caută numele fișierului:';
$lang['searchmedia_in'] = 'Caută în %s';
-$lang['txt_upload'] = 'Selectează fișierul de încărcat';
-$lang['txt_filename'] = 'Încarcă fișierul ca (opțional)';
+$lang['txt_upload'] = 'Selectează fișierul de încărcat:';
+$lang['txt_filename'] = 'Încarcă fișierul ca (opțional):';
$lang['txt_overwrt'] = 'Suprascrie fișierul existent';
-$lang['lockedby'] = 'Momentan blocat de';
-$lang['lockexpire'] = 'Blocarea expiră la';
+$lang['lockedby'] = 'Momentan blocat de:';
+$lang['lockexpire'] = 'Blocarea expiră la:';
$lang['js']['willexpire'] = 'Blocarea pentru editarea paginii expiră intr-un minut.\nPentru a preveni conflictele folosește butonul de previzualizare pentru resetarea blocării.';
$lang['js']['notsavedyet'] = 'Există modificări nesalvate care se vor pierde.
Dorești să continui?';
@@ -178,9 +178,9 @@ $lang['diff_type'] = 'Vezi diferențe:';
$lang['diff_inline'] = 'Succesiv';
$lang['diff_side'] = 'Alăturate';
$lang['line'] = 'Linia';
-$lang['breadcrumb'] = 'Traseu';
-$lang['youarehere'] = 'Ești aici';
-$lang['lastmod'] = 'Ultima modificare';
+$lang['breadcrumb'] = 'Traseu:';
+$lang['youarehere'] = 'Ești aici:';
+$lang['lastmod'] = 'Ultima modificare:';
$lang['by'] = 'de către';
$lang['deleted'] = 'șters';
$lang['created'] = 'creat';
@@ -233,18 +233,18 @@ $lang['metaedit'] = 'Editează metadata';
$lang['metasaveerr'] = 'Scrierea metadatelor a eșuat';
$lang['metasaveok'] = 'Metadatele au fost salvate';
$lang['btn_img_backto'] = 'Înapoi la %s';
-$lang['img_title'] = 'Titlu';
-$lang['img_caption'] = 'Legendă';
-$lang['img_date'] = 'Dată';
-$lang['img_fname'] = 'Nume fișier';
-$lang['img_fsize'] = 'Dimensiune';
-$lang['img_artist'] = 'Fotograf';
-$lang['img_copyr'] = 'Drept de autor';
-$lang['img_format'] = 'Format';
-$lang['img_camera'] = 'Camera';
-$lang['img_keywords'] = 'Cuvinte cheie';
-$lang['img_width'] = 'Lățime';
-$lang['img_height'] = 'Înălțime';
+$lang['img_title'] = 'Titlu:';
+$lang['img_caption'] = 'Legendă:';
+$lang['img_date'] = 'Dată:';
+$lang['img_fname'] = 'Nume fișier:';
+$lang['img_fsize'] = 'Dimensiune:';
+$lang['img_artist'] = 'Fotograf:';
+$lang['img_copyr'] = 'Drept de autor:';
+$lang['img_format'] = 'Format:';
+$lang['img_camera'] = 'Camera:';
+$lang['img_keywords'] = 'Cuvinte cheie:';
+$lang['img_width'] = 'Lățime:';
+$lang['img_height'] = 'Înălțime:';
$lang['btn_mediaManager'] = 'Vizualizează în administratorul media';
$lang['subscr_subscribe_success'] = 'Adăugat %s la lista de abonare pentru %s';
$lang['subscr_subscribe_error'] = 'Eroare la adăugarea %s la lista de abonare pentru %s';
diff --git a/inc/lang/ru/lang.php b/inc/lang/ru/lang.php
index 4cd3e5f0b..c36c611c0 100644
--- a/inc/lang/ru/lang.php
+++ b/inc/lang/ru/lang.php
@@ -72,7 +72,7 @@ $lang['btn_media'] = 'Управление медиафайлами'
$lang['btn_deleteuser'] = 'Удалить мой аккаунт';
$lang['btn_img_backto'] = 'Вернуться к %s';
$lang['btn_mediaManager'] = 'Просмотр в «управлении медиафайлами»';
-$lang['loggedinas'] = 'Зашли как';
+$lang['loggedinas'] = 'Зашли как:';
$lang['user'] = 'Логин';
$lang['pass'] = 'Пароль';
$lang['newpass'] = 'Новый пароль';
@@ -117,12 +117,12 @@ $lang['license'] = 'За исключением случаев, к
$lang['licenseok'] = 'Примечание: редактируя эту страницу, вы соглашаетесь на использование своего вклада на условиях следующей лицензии:';
$lang['searchmedia'] = 'Поиск по имени файла:';
$lang['searchmedia_in'] = 'Поиск в %s';
-$lang['txt_upload'] = 'Выберите файл для загрузки';
-$lang['txt_filename'] = 'Введите имя файла в вики (необязательно)';
+$lang['txt_upload'] = 'Выберите файл для загрузки:';
+$lang['txt_filename'] = 'Введите имя файла в вики (необязательно):';
$lang['txt_overwrt'] = 'Перезаписать существующий файл';
$lang['maxuploadsize'] = 'Максимальный размер загружаемого файла %s';
-$lang['lockedby'] = 'В данный момент заблокирован';
-$lang['lockexpire'] = 'Блокировка истекает в';
+$lang['lockedby'] = 'В данный момент заблокирован:';
+$lang['lockexpire'] = 'Блокировка истекает в:';
$lang['js']['willexpire'] = 'Ваша блокировка этой страницы на редактирование истекает в течение минуты.\nЧтобы предотвратить конфликты используйте кнопку «Просмотр» для сброса таймера блокировки.';
$lang['js']['notsavedyet'] = 'Несохранённые изменения будут потеряны. Вы действительно хотите продолжить?';
$lang['js']['searchmedia'] = 'Поиск файлов';
@@ -205,9 +205,9 @@ $lang['diffprevrev'] = 'Предыдущая версия';
$lang['diffnextrev'] = 'Следущая версия';
$lang['difflastrev'] = 'Последняя версия';
$lang['line'] = 'Строка';
-$lang['breadcrumb'] = 'Вы посетили';
-$lang['youarehere'] = 'Вы находитесь здесь';
-$lang['lastmod'] = 'Последние изменения';
+$lang['breadcrumb'] = 'Вы посетили:';
+$lang['youarehere'] = 'Вы находитесь здесь:';
+$lang['lastmod'] = 'Последние изменения:';
$lang['by'] = ' —';
$lang['deleted'] = 'удалено';
$lang['created'] = 'создано';
@@ -260,18 +260,18 @@ $lang['admin_register'] = 'Добавить пользователя';
$lang['metaedit'] = 'Править метаданные';
$lang['metasaveerr'] = 'Ошибка записи метаданных';
$lang['metasaveok'] = 'Метаданные сохранены';
-$lang['img_title'] = 'Название';
-$lang['img_caption'] = 'Подпись';
-$lang['img_date'] = 'Дата';
-$lang['img_fname'] = 'Имя файла';
-$lang['img_fsize'] = 'Размер';
-$lang['img_artist'] = 'Фотограф';
-$lang['img_copyr'] = 'Авторские права';
-$lang['img_format'] = 'Формат';
-$lang['img_camera'] = 'Модель';
-$lang['img_keywords'] = 'Ключевые слова';
-$lang['img_width'] = 'Ширина';
-$lang['img_height'] = 'Высота';
+$lang['img_title'] = 'Название:';
+$lang['img_caption'] = 'Подпись:';
+$lang['img_date'] = 'Дата:';
+$lang['img_fname'] = 'Имя файла:';
+$lang['img_fsize'] = 'Размер:';
+$lang['img_artist'] = 'Фотограф:';
+$lang['img_copyr'] = 'Авторские права:';
+$lang['img_format'] = 'Формат:';
+$lang['img_camera'] = 'Модель:';
+$lang['img_keywords'] = 'Ключевые слова:';
+$lang['img_width'] = 'Ширина:';
+$lang['img_height'] = 'Высота:';
$lang['subscr_subscribe_success'] = 'Добавлен %s в подписку на %s';
$lang['subscr_subscribe_error'] = 'Невозможно добавить %s в подписку на %s';
$lang['subscr_subscribe_noaddress'] = 'Нет адреса электронной почты, сопоставленного с вашей учётной записью. Вы не можете подписаться на рассылку';
diff --git a/inc/lang/sk/lang.php b/inc/lang/sk/lang.php
index 3ba220a2d..e501cb7fc 100644
--- a/inc/lang/sk/lang.php
+++ b/inc/lang/sk/lang.php
@@ -51,7 +51,7 @@ $lang['btn_register'] = 'Registrovať';
$lang['btn_apply'] = 'Použiť';
$lang['btn_media'] = 'Správa médií';
$lang['btn_deleteuser'] = 'Zrušiť môj účet';
-$lang['loggedinas'] = 'Prihlásený(á) ako';
+$lang['loggedinas'] = 'Prihlásený(á) ako:';
$lang['user'] = 'Užívateľské meno';
$lang['pass'] = 'Heslo';
$lang['newpass'] = 'Nové heslo';
@@ -96,8 +96,8 @@ $lang['license'] = 'Ak nie je uvedené inak, obsah tejto wiki je u
$lang['licenseok'] = 'Poznámka: Zmenou tejto stránky súhlasíte s uverejnením obsahu pod nasledujúcou licenciou:';
$lang['searchmedia'] = 'Hľadať meno súboru:';
$lang['searchmedia_in'] = 'Hľadať v %s';
-$lang['txt_upload'] = 'Vyberte súbor ako prílohu';
-$lang['txt_filename'] = 'Uložiť ako (voliteľné)';
+$lang['txt_upload'] = 'Vyberte súbor ako prílohu:';
+$lang['txt_filename'] = 'Uložiť ako (voliteľné):';
$lang['txt_overwrt'] = 'Prepísať existujúci súbor';
$lang['maxuploadsize'] = 'Obmedzenie max. %s na súbor.';
$lang['lockedby'] = 'Práve zamknuté:';
@@ -183,9 +183,9 @@ $lang['diff_type'] = 'Prehľad zmien:';
$lang['diff_inline'] = 'Vnorený';
$lang['diff_side'] = 'Vedľa seba';
$lang['line'] = 'Riadok';
-$lang['breadcrumb'] = 'História';
-$lang['youarehere'] = 'Nachádzate sa';
-$lang['lastmod'] = 'Posledná úprava';
+$lang['breadcrumb'] = 'História:';
+$lang['youarehere'] = 'Nachádzate sa:';
+$lang['lastmod'] = 'Posledná úprava:';
$lang['by'] = 'od';
$lang['deleted'] = 'odstránené';
$lang['created'] = 'vytvorené';
@@ -239,18 +239,18 @@ $lang['metaedit'] = 'Upraviť metainformácie';
$lang['metasaveerr'] = 'Zápis metainformácií zlyhal';
$lang['metasaveok'] = 'Metainformácie uložené';
$lang['btn_img_backto'] = 'Späť na %s';
-$lang['img_title'] = 'Titul';
-$lang['img_caption'] = 'Popis';
-$lang['img_date'] = 'Dátum';
-$lang['img_fname'] = 'Názov súboru';
-$lang['img_fsize'] = 'Veľkosť';
-$lang['img_artist'] = 'Fotograf';
-$lang['img_copyr'] = 'Kopírovacie práva';
-$lang['img_format'] = 'Formát';
-$lang['img_camera'] = 'Fotoaparát';
-$lang['img_keywords'] = 'Kľúčové slová';
-$lang['img_width'] = 'Šírka';
-$lang['img_height'] = 'Výška';
+$lang['img_title'] = 'Titul:';
+$lang['img_caption'] = 'Popis:';
+$lang['img_date'] = 'Dátum:';
+$lang['img_fname'] = 'Názov súboru:';
+$lang['img_fsize'] = 'Veľkosť:';
+$lang['img_artist'] = 'Fotograf:';
+$lang['img_copyr'] = 'Kopírovacie práva:';
+$lang['img_format'] = 'Formát:';
+$lang['img_camera'] = 'Fotoaparát:';
+$lang['img_keywords'] = 'Kľúčové slová:';
+$lang['img_width'] = 'Šírka:';
+$lang['img_height'] = 'Výška:';
$lang['btn_mediaManager'] = 'Prezrieť v správcovi médií';
$lang['subscr_subscribe_success'] = 'Používateľ %s bol pridaný do zoznamu hlásení o zmenách %s';
$lang['subscr_subscribe_error'] = 'Chyba pri pridaní používateľa %s do zoznamu hlásení o zmenách %s';
diff --git a/inc/lang/sl/lang.php b/inc/lang/sl/lang.php
index c834611dc..f76dbb7d1 100644
--- a/inc/lang/sl/lang.php
+++ b/inc/lang/sl/lang.php
@@ -57,7 +57,7 @@ $lang['btn_media'] = 'Urejevalnik predstavnih vsebin';
$lang['btn_deleteuser'] = 'Odstrani račun';
$lang['btn_img_backto'] = 'Nazaj na %s';
$lang['btn_mediaManager'] = 'Poglej v urejevalniku predstavnih vsebin';
-$lang['loggedinas'] = 'Prijava kot';
+$lang['loggedinas'] = 'Prijava kot:';
$lang['user'] = 'Uporabniško ime';
$lang['pass'] = 'Geslo';
$lang['newpass'] = 'Novo geslo';
@@ -101,11 +101,11 @@ $lang['license'] = 'V kolikor ni posebej določeno, je vsebina Wik
$lang['licenseok'] = 'Opomba: z urejanjem vsebine strani, se strinjate z objavo pod pogoji dovoljenja:';
$lang['searchmedia'] = 'Poišči ime datoteke:';
$lang['searchmedia_in'] = 'Poišči v %s';
-$lang['txt_upload'] = 'Izberite datoteko za pošiljanje';
-$lang['txt_filename'] = 'Pošlji z imenom (izborno)';
+$lang['txt_upload'] = 'Izberite datoteko za pošiljanje:';
+$lang['txt_filename'] = 'Pošlji z imenom (izborno):';
$lang['txt_overwrt'] = 'Prepiši obstoječo datoteko';
-$lang['lockedby'] = 'Trenutno je zaklenjeno s strani';
-$lang['lockexpire'] = 'Zaklep preteče ob';
+$lang['lockedby'] = 'Trenutno je zaklenjeno s strani:';
+$lang['lockexpire'] = 'Zaklep preteče ob:';
$lang['js']['willexpire'] = 'Zaklep za urejevanje bo pretekel čez eno minuto.\nV izogib sporom, uporabite predogled, da se merilnik časa za zaklep ponastavi.';
$lang['js']['notsavedyet'] = 'Neshranjene spremembe bodo izgubljene.';
$lang['js']['searchmedia'] = 'Poišči datoteke';
@@ -187,9 +187,9 @@ $lang['diffprevrev'] = 'Prejšnja revizija';
$lang['diffnextrev'] = 'Naslednja revizija';
$lang['difflastrev'] = 'Zadnja revizija';
$lang['line'] = 'Vrstica';
-$lang['breadcrumb'] = 'Sled';
-$lang['youarehere'] = 'Trenutno dejavna stran';
-$lang['lastmod'] = 'Zadnja sprememba';
+$lang['breadcrumb'] = 'Sled:';
+$lang['youarehere'] = 'Trenutno dejavna stran:';
+$lang['lastmod'] = 'Zadnja sprememba:';
$lang['by'] = 'uporabnika';
$lang['deleted'] = 'odstranjena';
$lang['created'] = 'ustvarjena';
@@ -242,18 +242,18 @@ $lang['admin_register'] = 'Dodaj novega uporabnika';
$lang['metaedit'] = 'Uredi metapodatke';
$lang['metasaveerr'] = 'Zapisovanje metapodatkov je spodletelo';
$lang['metasaveok'] = 'Metapodatki so shranjeni';
-$lang['img_title'] = 'Naslov';
-$lang['img_caption'] = 'Opis';
-$lang['img_date'] = 'Datum';
-$lang['img_fname'] = 'Ime datoteke';
-$lang['img_fsize'] = 'Velikost';
-$lang['img_artist'] = 'Fotograf';
-$lang['img_copyr'] = 'Avtorska pravica';
-$lang['img_format'] = 'Zapis';
-$lang['img_camera'] = 'Fotoaparat';
-$lang['img_keywords'] = 'Ključne besede';
-$lang['img_width'] = 'Širina';
-$lang['img_height'] = 'Višina';
+$lang['img_title'] = 'Naslov:';
+$lang['img_caption'] = 'Opis:';
+$lang['img_date'] = 'Datum:';
+$lang['img_fname'] = 'Ime datoteke:';
+$lang['img_fsize'] = 'Velikost:';
+$lang['img_artist'] = 'Fotograf:';
+$lang['img_copyr'] = 'Avtorska pravica:';
+$lang['img_format'] = 'Zapis:';
+$lang['img_camera'] = 'Fotoaparat:';
+$lang['img_keywords'] = 'Ključne besede:';
+$lang['img_width'] = 'Širina:';
+$lang['img_height'] = 'Višina:';
$lang['subscr_subscribe_success'] = 'Uporabniški račun %s je dodan na seznam naročnin na %s';
$lang['subscr_subscribe_error'] = 'Napaka med dodajanjem %s na seznam naročnin na %s';
$lang['subscr_subscribe_noaddress'] = 'S trenutnimi prijavnimi podatki ni povezanega elektronskega naslova, zato uporabniškega računa ni mogoče dodati na seznam naročnikov.';
diff --git a/inc/lang/sq/lang.php b/inc/lang/sq/lang.php
index c31cdd360..49984097c 100644
--- a/inc/lang/sq/lang.php
+++ b/inc/lang/sq/lang.php
@@ -49,7 +49,7 @@ $lang['btn_recover'] = 'Rekupero skicën';
$lang['btn_draftdel'] = 'Fshi skicën';
$lang['btn_revert'] = 'Kthe si më parë';
$lang['btn_register'] = 'Regjsitrohuni';
-$lang['loggedinas'] = 'Regjistruar si ';
+$lang['loggedinas'] = 'Regjistruar si :';
$lang['user'] = 'Nofka e përdoruesit:';
$lang['pass'] = 'Fjalëkalimi';
$lang['newpass'] = 'Fjalëkalim i ri';
@@ -87,11 +87,11 @@ $lang['license'] = 'Përveç rasteve të përcaktuara, përmbajtja
$lang['licenseok'] = 'Shënim: Duke redaktuar këtë faqe ju bini dakort të liçensoni përmbajtjen tuaj nën liçensën e mëposhtme:';
$lang['searchmedia'] = 'Kërko emrin e skedarit:';
$lang['searchmedia_in'] = 'Kërko në %s';
-$lang['txt_upload'] = 'Zgjidh skedarin për ngarkim';
-$lang['txt_filename'] = 'Ngarko si (alternative)';
+$lang['txt_upload'] = 'Zgjidh skedarin për ngarkim:';
+$lang['txt_filename'] = 'Ngarko si (alternative):';
$lang['txt_overwrt'] = 'Zëvendëso skedarin ekzistues';
-$lang['lockedby'] = 'Kyçur momentalisht nga';
-$lang['lockexpire'] = 'Kyçi skadon në';
+$lang['lockedby'] = 'Kyçur momentalisht nga:';
+$lang['lockexpire'] = 'Kyçi skadon në:';
$lang['js']['willexpire'] = 'Kyçi juaj për redaktimin e kësaj faqeje është duke skaduar.\nPër të shmangur konflikte përdorni butonin Shiko Paraprakisht për të rivendosur kohën e kyçjes.';
$lang['js']['notsavedyet'] = 'Ndryshimet e paruajtura do të humbasin.\nVazhdo me të vërtetë?';
$lang['rssfailed'] = 'Ndoshi një gabim gjatë kapjes së këtij lajmi:';
@@ -134,9 +134,9 @@ $lang['yours'] = 'Versioni Juaj';
$lang['diff'] = 'Trego ndryshimet nga rishikimet aktuale';
$lang['diff2'] = 'Trego ndryshimet mes rishikimeve të përzgjedhura';
$lang['line'] = 'Vijë';
-$lang['breadcrumb'] = 'Gjurmë';
-$lang['youarehere'] = 'Ju jeni këtu';
-$lang['lastmod'] = 'Redaktuar për herë të fundit';
+$lang['breadcrumb'] = 'Gjurmë:';
+$lang['youarehere'] = 'Ju jeni këtu:';
+$lang['lastmod'] = 'Redaktuar për herë të fundit:';
$lang['by'] = 'nga';
$lang['deleted'] = 'u fshi';
$lang['created'] = 'u krijua';
@@ -180,16 +180,16 @@ $lang['metaedit'] = 'Redakto Metadata';
$lang['metasaveerr'] = 'Shkrimi i metadata-ve dështoi';
$lang['metasaveok'] = 'Metadata u ruajt';
$lang['btn_img_backto'] = 'Mbrapa te %s';
-$lang['img_title'] = 'Titulli ';
-$lang['img_caption'] = 'Titra';
-$lang['img_date'] = 'Data';
-$lang['img_fname'] = 'Emri Skedarit';
-$lang['img_fsize'] = 'Madhësia';
-$lang['img_artist'] = 'Autor';
-$lang['img_copyr'] = 'Mbajtësi i të drejtave të autorit';
-$lang['img_format'] = 'Formati';
-$lang['img_camera'] = 'Kamera';
-$lang['img_keywords'] = 'Fjalë Kyçe';
+$lang['img_title'] = 'Titulli :';
+$lang['img_caption'] = 'Titra:';
+$lang['img_date'] = 'Data:';
+$lang['img_fname'] = 'Emri Skedarit:';
+$lang['img_fsize'] = 'Madhësia:';
+$lang['img_artist'] = 'Autor:';
+$lang['img_copyr'] = 'Mbajtësi i të drejtave të autorit:';
+$lang['img_format'] = 'Formati:';
+$lang['img_camera'] = 'Kamera:';
+$lang['img_keywords'] = 'Fjalë Kyçe:';
$lang['subscr_subscribe_success'] = 'Iu shtua %s listës së abonimeve për %s';
$lang['subscr_subscribe_error'] = 'Gabim gjatë shtimit të %s listës së abonimeve për %s';
$lang['subscr_subscribe_noaddress'] = 'Nuk ekziston asnjë adresë e lidhur me regjistrimin tuaj, ju nuk mund t\'i shtoheni listës së abonimeve.';
diff --git a/inc/lang/sr/lang.php b/inc/lang/sr/lang.php
index 4b44704ad..22a500e76 100644
--- a/inc/lang/sr/lang.php
+++ b/inc/lang/sr/lang.php
@@ -46,7 +46,7 @@ $lang['btn_recover'] = 'Опорави нацрт';
$lang['btn_draftdel'] = 'Обриши нацрт';
$lang['btn_revert'] = 'Врати на пређашњу верзију';
$lang['btn_register'] = 'Региструј се';
-$lang['loggedinas'] = 'Пријављен као';
+$lang['loggedinas'] = 'Пријављен као:';
$lang['user'] = 'Корисничко име';
$lang['pass'] = 'Лозинка';
$lang['newpass'] = 'Нова лозинка';
@@ -84,11 +84,11 @@ $lang['license'] = 'Осим где је другачије наз
$lang['licenseok'] = 'Напомена: Изменом ове стране слажете се да ће ваше измене бити под следећом лиценцом:';
$lang['searchmedia'] = 'Претражи по имену фајла';
$lang['searchmedia_in'] = 'Претражи у %s';
-$lang['txt_upload'] = 'Изаберите датотеку за слање';
-$lang['txt_filename'] = 'Унесите вики-име (опционо)';
+$lang['txt_upload'] = 'Изаберите датотеку за слање:';
+$lang['txt_filename'] = 'Унесите вики-име (опционо):';
$lang['txt_overwrt'] = 'Препишите тренутни фајл';
-$lang['lockedby'] = 'Тренутно закључано од стране';
-$lang['lockexpire'] = 'Закључавање истиче';
+$lang['lockedby'] = 'Тренутно закључано од стране:';
+$lang['lockexpire'] = 'Закључавање истиче:';
$lang['js']['willexpire'] = 'Ваше закључавање за измену ове странице ће да истекне за један минут.\nДа би сте избегли конфликте, искористите дугме за преглед како би сте ресетовали тајмер закључавања.';
$lang['js']['notsavedyet'] = 'Несачуване измене ће бити изгубљене.
Да ли стварно желите да наставите?';
@@ -156,9 +156,9 @@ $lang['diff'] = 'прикажи разлике до трену
$lang['diff2'] = 'Прикажи разлике између одабраних ревизија';
$lang['difflink'] = 'Постави везу ка овом компаративном приказу';
$lang['line'] = 'Линија';
-$lang['breadcrumb'] = 'Траг';
-$lang['youarehere'] = 'Сада сте овде';
-$lang['lastmod'] = 'Последњи пут мењано';
+$lang['breadcrumb'] = 'Траг:';
+$lang['youarehere'] = 'Сада сте овде:';
+$lang['lastmod'] = 'Последњи пут мењано:';
$lang['by'] = 'од';
$lang['deleted'] = 'избрисано';
$lang['created'] = 'направљено';
@@ -202,16 +202,16 @@ $lang['metaedit'] = 'Измени мета-податке';
$lang['metasaveerr'] = 'Записивање мета-података није било успешно';
$lang['metasaveok'] = 'Мета-подаци су сачувани';
$lang['btn_img_backto'] = 'Натраг на %s';
-$lang['img_title'] = 'Наслов';
-$lang['img_caption'] = 'Назив';
-$lang['img_date'] = 'Датум';
-$lang['img_fname'] = 'Име фајла';
-$lang['img_fsize'] = 'Величина';
-$lang['img_artist'] = 'Фотограф';
-$lang['img_copyr'] = 'Права копирања';
-$lang['img_format'] = 'Формат';
-$lang['img_camera'] = 'Камера';
-$lang['img_keywords'] = 'Кључне речи';
+$lang['img_title'] = 'Наслов:';
+$lang['img_caption'] = 'Назив:';
+$lang['img_date'] = 'Датум:';
+$lang['img_fname'] = 'Име фајла:';
+$lang['img_fsize'] = 'Величина:';
+$lang['img_artist'] = 'Фотограф:';
+$lang['img_copyr'] = 'Права копирања:';
+$lang['img_format'] = 'Формат:';
+$lang['img_camera'] = 'Камера:';
+$lang['img_keywords'] = 'Кључне речи:';
$lang['subscr_subscribe_success'] = '%s је додат на списак претплатника %s';
$lang['subscr_subscribe_error'] = 'Грешка приликом додавања %s на списак претплатника %s';
$lang['subscr_subscribe_noaddress'] = 'Не постоји адреса повезана са вашим подацима, стога вас не можемо додати на списак претплатника.';
diff --git a/inc/lang/sv/lang.php b/inc/lang/sv/lang.php
index c057d8705..1f129c621 100644
--- a/inc/lang/sv/lang.php
+++ b/inc/lang/sv/lang.php
@@ -20,6 +20,7 @@
* @author Henrik <henrik@idealis.se>
* @author Tor Härnqvist <tor.harnqvist@gmail.com>
* @author Hans Iwan Bratt <hibratt@gmail.com>
+ * @author Mikael Bergström <krank23@gmail.com>
*/
$lang['encoding'] = 'utf-8';
$lang['direction'] = 'ltr';
@@ -62,9 +63,11 @@ $lang['btn_draftdel'] = 'Radera utkast';
$lang['btn_revert'] = 'Återställ';
$lang['btn_register'] = 'Registrera';
$lang['btn_apply'] = 'Verkställ';
-$lang['btn_media'] = 'Media Hanteraren';
+$lang['btn_media'] = 'Mediahanteraren';
$lang['btn_deleteuser'] = 'Ta bort Mitt Konto';
-$lang['loggedinas'] = 'Inloggad som';
+$lang['btn_img_backto'] = 'Tillbaka till %s';
+$lang['btn_mediaManager'] = 'Se mediahanteraren';
+$lang['loggedinas'] = 'Inloggad som:';
$lang['user'] = 'Användarnamn';
$lang['pass'] = 'Lösenord';
$lang['newpass'] = 'Nytt lösenord';
@@ -109,12 +112,12 @@ $lang['license'] = 'Om inte annat angivet, innehållet i denna wik
$lang['licenseok'] = 'Notera: Genom att ändra i denna sidan så accepterar du att licensiera ditt bidrag under följande licenser:';
$lang['searchmedia'] = 'Sök efter filnamn:';
$lang['searchmedia_in'] = 'Sök i %s';
-$lang['txt_upload'] = 'Välj fil att ladda upp';
-$lang['txt_filename'] = 'Ladda upp som (ej obligatoriskt)';
+$lang['txt_upload'] = 'Välj fil att ladda upp:';
+$lang['txt_filename'] = 'Ladda upp som (ej obligatoriskt):';
$lang['txt_overwrt'] = 'Skriv över befintlig fil';
$lang['maxuploadsize'] = 'Max %s per uppladdad fil.';
-$lang['lockedby'] = 'Låst av';
-$lang['lockexpire'] = 'Lås upphör att gälla';
+$lang['lockedby'] = 'Låst av:';
+$lang['lockexpire'] = 'Lås upphör att gälla:';
$lang['js']['willexpire'] = 'Ditt redigeringslås för detta dokument kommer snart att upphöra.\nFör att undvika versionskonflikter bör du förhandsgranska ditt dokument för att förlänga redigeringslåset.';
$lang['js']['notsavedyet'] = 'Det finns ändringar som inte är sparade.
Är du säker på att du vill fortsätta?';
@@ -194,9 +197,9 @@ $lang['difflink'] = 'Länk till den här jämförelsesidan';
$lang['diff_type'] = 'Visa skillnader:';
$lang['diff_side'] = 'Sida vid sida';
$lang['line'] = 'Rad';
-$lang['breadcrumb'] = 'Spår';
-$lang['youarehere'] = 'Här är du';
-$lang['lastmod'] = 'Senast uppdaterad';
+$lang['breadcrumb'] = 'Spår:';
+$lang['youarehere'] = 'Här är du:';
+$lang['lastmod'] = 'Senast uppdaterad:';
$lang['by'] = 'av';
$lang['deleted'] = 'raderad';
$lang['created'] = 'skapad';
@@ -249,20 +252,18 @@ $lang['admin_register'] = 'Lägg till ny användare';
$lang['metaedit'] = 'Redigera metadata';
$lang['metasaveerr'] = 'Skrivning av metadata misslyckades';
$lang['metasaveok'] = 'Metadata sparad';
-$lang['btn_img_backto'] = 'Tillbaka till %s';
-$lang['img_title'] = 'Rubrik';
-$lang['img_caption'] = 'Bildtext';
-$lang['img_date'] = 'Datum';
-$lang['img_fname'] = 'Filnamn';
-$lang['img_fsize'] = 'Storlek';
-$lang['img_artist'] = 'Fotograf';
-$lang['img_copyr'] = 'Copyright';
-$lang['img_format'] = 'Format';
-$lang['img_camera'] = 'Kamera';
-$lang['img_keywords'] = 'Nyckelord';
-$lang['img_width'] = 'Bredd';
-$lang['img_height'] = 'Höjd';
-$lang['btn_mediaManager'] = 'Se mediahanteraren';
+$lang['img_title'] = 'Rubrik:';
+$lang['img_caption'] = 'Bildtext:';
+$lang['img_date'] = 'Datum:';
+$lang['img_fname'] = 'Filnamn:';
+$lang['img_fsize'] = 'Storlek:';
+$lang['img_artist'] = 'Fotograf:';
+$lang['img_copyr'] = 'Copyright:';
+$lang['img_format'] = 'Format:';
+$lang['img_camera'] = 'Kamera:';
+$lang['img_keywords'] = 'Nyckelord:';
+$lang['img_width'] = 'Bredd:';
+$lang['img_height'] = 'Höjd:';
$lang['subscr_subscribe_success'] = 'La till %s till prenumerationslista %s';
$lang['subscr_subscribe_noaddress'] = 'Det finns ingen adress associerad med din inloggning, du kan inte bli tillagd i prenumerationslistan';
$lang['subscr_unsubscribe_success'] = '%s borttagen från prenumerationslistan för %s';
diff --git a/inc/lang/th/lang.php b/inc/lang/th/lang.php
index 8aebfe1a5..ff871cdf6 100644
--- a/inc/lang/th/lang.php
+++ b/inc/lang/th/lang.php
@@ -52,7 +52,7 @@ $lang['btn_recover'] = 'กู้คืนเอกสารฉบั
$lang['btn_draftdel'] = 'ลบเอกสารฉบับร่าง';
$lang['btn_revert'] = 'กู้คืน';
$lang['btn_register'] = 'สร้างบัญชีผู้ใช้';
-$lang['loggedinas'] = 'ลงชื่อเข้าใช้เป็น';
+$lang['loggedinas'] = 'ลงชื่อเข้าใช้เป็น:';
$lang['user'] = 'ชื่อผู้ใช้:';
$lang['pass'] = 'รหัสผ่าน';
$lang['newpass'] = 'รหัสผ่านใหม่';
@@ -90,11 +90,11 @@ $lang['license'] = 'เว้นแต่จะได้แจ้
$lang['licenseok'] = 'โปรดทราบ: เมื่อเริ่มแก้ไขหน้านี้ ถือว่าคุณตกลงให้สิทธิ์กับเนื้อหาของคุณอยู่ภายใต้สัญญาอนุญาตินี้';
$lang['searchmedia'] = 'สืบค้นไฟล์ชื่อ:';
$lang['searchmedia_in'] = 'สืบค้นใน %s';
-$lang['txt_upload'] = 'เลือกไฟล์ที่จะอัพโหลด';
-$lang['txt_filename'] = 'อัพโหลดเป็น(ตัวเลือก)';
+$lang['txt_upload'] = 'เลือกไฟล์ที่จะอัพโหลด:';
+$lang['txt_filename'] = 'อัพโหลดเป็น(ตัวเลือก):';
$lang['txt_overwrt'] = 'เขียนทับไฟล์ที่มีอยู่แล้ว';
-$lang['lockedby'] = 'ตอนนี้ถูกล๊อคโดย';
-$lang['lockexpire'] = 'การล๊อคจะหมดอายุเมื่อ';
+$lang['lockedby'] = 'ตอนนี้ถูกล๊อคโดย:';
+$lang['lockexpire'] = 'การล๊อคจะหมดอายุเมื่อ:';
$lang['js']['willexpire'] = 'การล๊อคเพื่อแก้ไขหน้านี้กำลังจะหมดเวลาในอีก \n นาที เพื่อที่จะหลีกเลี่ยงข้อขัดแย้งให้ใช้ปุ่ม "Preview" เพื่อรีเซ็ทเวลาใหม่';
$lang['js']['notsavedyet'] = 'การแก้ไขที่ไม่ได้บันทึกจะสูญหาย \n ต้องการทำต่อจริงๆหรือ?';
$lang['rssfailed'] = 'มีข้อผิดพลาดขณะดูดฟีดนี้';
@@ -137,9 +137,9 @@ $lang['yours'] = 'ฉบับของคุณ';
$lang['diff'] = 'แสดงจุดแตกต่างกับฉบับปัจจุบัน';
$lang['diff2'] = 'แสดงจุดแตกต่างระหว่างฉบับที่เลือกไว้';
$lang['line'] = 'บรรทัด';
-$lang['breadcrumb'] = 'ตามรอย';
-$lang['youarehere'] = 'คุณอยู่ที่นี่';
-$lang['lastmod'] = 'แก้ไขครั้งล่าสุด';
+$lang['breadcrumb'] = 'ตามรอย:';
+$lang['youarehere'] = 'คุณอยู่ที่นี่:';
+$lang['lastmod'] = 'แก้ไขครั้งล่าสุด:';
$lang['by'] = 'โดย';
$lang['deleted'] = 'ถูกถอดออก';
$lang['created'] = 'ถูกสร้าง';
@@ -182,16 +182,16 @@ $lang['metaedit'] = 'แก้ไขข้อมูลเมต้
$lang['metasaveerr'] = 'มีข้อผิดพลาดในการเขียนข้อมูลเมต้า';
$lang['metasaveok'] = 'บันทึกเมต้าดาต้าแล้ว';
$lang['btn_img_backto'] = 'กลับไปยัง %s';
-$lang['img_title'] = 'ชื่อภาพ';
-$lang['img_caption'] = 'คำบรรยายภาพ';
-$lang['img_date'] = 'วันที่';
-$lang['img_fname'] = 'ชื่อไฟล์';
-$lang['img_fsize'] = 'ขนาดภาพ';
-$lang['img_artist'] = 'ผู้สร้างสรรค์';
-$lang['img_copyr'] = 'ผู้ถือลิขสิทธิ์';
-$lang['img_format'] = 'รูปแบบ';
-$lang['img_camera'] = 'กล้อง';
-$lang['img_keywords'] = 'คำหลัก';
+$lang['img_title'] = 'ชื่อภาพ:';
+$lang['img_caption'] = 'คำบรรยายภาพ:';
+$lang['img_date'] = 'วันที่:';
+$lang['img_fname'] = 'ชื่อไฟล์:';
+$lang['img_fsize'] = 'ขนาดภาพ:';
+$lang['img_artist'] = 'ผู้สร้างสรรค์:';
+$lang['img_copyr'] = 'ผู้ถือลิขสิทธิ์:';
+$lang['img_format'] = 'รูปแบบ:';
+$lang['img_camera'] = 'กล้อง:';
+$lang['img_keywords'] = 'คำหลัก:';
$lang['authtempfail'] = 'ระบบตรวจสอบสิทธิ์ผู้ใช้ไม่พร้อมใช้งานชั่วคราว หากสถานการณ์ยังไม่เปลี่ยนแปลง กรุณาแจ้งผู้ดูแลระบวิกิของคุณ';
$lang['i_chooselang'] = 'เลือกภาษาของคุณ';
$lang['i_installer'] = 'ตัวติดตั้งโดกุวิกิ';
diff --git a/inc/lang/tr/lang.php b/inc/lang/tr/lang.php
index 2af17fe27..90a7ea7ba 100644
--- a/inc/lang/tr/lang.php
+++ b/inc/lang/tr/lang.php
@@ -11,6 +11,8 @@
* @author farukerdemoncel@gmail.com
* @author Mustafa Aslan <maslan@hotmail.com>
* @author huseyin can <huseyincan73@gmail.com>
+ * @author ilker rifat kapaç <irifat@gmail.com>
+ * @author İlker R. Kapaç <irifat@gmail.com>
*/
$lang['encoding'] = 'utf-8';
$lang['direction'] = 'ltr';
@@ -55,7 +57,9 @@ $lang['btn_register'] = 'Kayıt ol';
$lang['btn_apply'] = 'Uygula';
$lang['btn_media'] = 'Çokluortam Yöneticisi';
$lang['btn_deleteuser'] = 'Hesabımı Sil';
-$lang['loggedinas'] = 'Giriş ismi';
+$lang['btn_img_backto'] = 'Şuna dön: %s';
+$lang['btn_mediaManager'] = 'Ortam oynatıcısında göster';
+$lang['loggedinas'] = 'Giriş ismi:';
$lang['user'] = 'Kullanıcı ismi';
$lang['pass'] = 'Parola';
$lang['newpass'] = 'Yeni Parola';
@@ -100,8 +104,8 @@ $lang['license'] = 'Aksi belirtilmediği halde, bu wikinin içeri
$lang['licenseok'] = 'Not: Bu sayfayı değiştirerek yazınızın şu lisans ile yayınlanmasını kabul etmiş olacaksınız:';
$lang['searchmedia'] = 'Dosya Adı Ara:';
$lang['searchmedia_in'] = '%s içinde ara';
-$lang['txt_upload'] = 'Yüklenecek dosyayı seç';
-$lang['txt_filename'] = 'Dosya adı (zorunlu değil)';
+$lang['txt_upload'] = 'Yüklenecek dosyayı seç:';
+$lang['txt_filename'] = 'Dosya adı (zorunlu değil):';
$lang['txt_overwrt'] = 'Mevcut dosyanın üstüne yaz';
$lang['maxuploadsize'] = 'Yükleme dosya başına en fazla %s';
$lang['lockedby'] = 'Şu an şunun tarafından kilitli:';
@@ -181,10 +185,16 @@ $lang['diff'] = 'Kullanılan sürüm ile farkları göster';
$lang['diff2'] = 'Seçili sürümler arasındaki farkı göster';
$lang['difflink'] = 'Karşılaştırma görünümüne bağlantı';
$lang['diff_type'] = 'farklı görünüş';
+$lang['diff_side'] = 'Yan yana';
+$lang['diffprevrev'] = 'Önceki sürüm';
+$lang['diffnextrev'] = 'Sonraki sürüm';
+$lang['difflastrev'] = 'Son sürüm';
+$lang['diffbothprevrev'] = 'İki taraf da önceki sürüm';
+$lang['diffbothnextrev'] = 'İki taraf da sonraki sürüm';
$lang['line'] = 'Satır';
-$lang['breadcrumb'] = 'İz';
-$lang['youarehere'] = 'Buradasınız';
-$lang['lastmod'] = 'Son değiştirilme';
+$lang['breadcrumb'] = 'İz:';
+$lang['youarehere'] = 'Buradasınız:';
+$lang['lastmod'] = 'Son değiştirilme:';
$lang['by'] = 'Değiştiren:';
$lang['deleted'] = 'silindi';
$lang['created'] = 'oluşturuldu';
@@ -201,6 +211,7 @@ $lang['skip_to_content'] = 'Bağlanmak için kaydır';
$lang['sidebar'] = 'kaydırma çubuğu';
$lang['mail_newpage'] = 'sayfa eklenme:';
$lang['mail_changed'] = 'sayfa değiştirilme:';
+$lang['mail_subscribe_list'] = 'isimalanındaki değişmiş sayfalar: ';
$lang['mail_new_user'] = 'yeni kullanıcı';
$lang['mail_upload'] = 'dosya yüklendi:';
$lang['changes_type'] = 'görünüşü değiştir';
@@ -220,6 +231,8 @@ $lang['qb_h5'] = '5. Seviye Başlık';
$lang['qb_h'] = 'Başlık';
$lang['qb_hs'] = 'Başlığı seç';
$lang['qb_hplus'] = 'Daha yüksek başlık';
+$lang['qb_hminus'] = 'Daha Düşük Başlık';
+$lang['qb_hequal'] = 'Aynı Seviye Başlık';
$lang['qb_link'] = 'İç Bağlantı';
$lang['qb_extlink'] = 'Dış Bağlantı';
$lang['qb_hr'] = 'Yatay Çizgi';
@@ -229,29 +242,29 @@ $lang['qb_media'] = 'Resim ve başka dosyalar ekle';
$lang['qb_sig'] = 'İmza Ekle';
$lang['qb_smileys'] = 'Gülen Yüzler';
$lang['qb_chars'] = 'Özel Karakterler';
+$lang['upperns'] = 'ebeveyn isimalanına atla';
$lang['admin_register'] = 'Yeni kullanıcı ekle...';
$lang['metaedit'] = 'Metaverileri Değiştir';
$lang['metasaveerr'] = 'Metaveri yazma başarısız ';
$lang['metasaveok'] = 'Metaveri kaydedildi';
-$lang['btn_img_backto'] = 'Şuna dön: %s';
-$lang['img_title'] = 'Başlık';
-$lang['img_caption'] = 'Serlevha';
-$lang['img_date'] = 'Tarih';
-$lang['img_fname'] = 'Dosya Adı';
-$lang['img_fsize'] = 'Boyut';
-$lang['img_artist'] = 'Fotoğrafçı';
-$lang['img_copyr'] = 'Telif Hakkı';
-$lang['img_format'] = 'Biçim';
-$lang['img_camera'] = 'Fotoğraf Makinası';
-$lang['img_keywords'] = 'Anahtar Sözcükler';
-$lang['img_width'] = 'Genişlik';
-$lang['img_height'] = 'Yükseklik';
-$lang['btn_mediaManager'] = 'Ortam oynatıcısında göster';
+$lang['img_title'] = 'Başlık:';
+$lang['img_caption'] = 'Serlevha:';
+$lang['img_date'] = 'Tarih:';
+$lang['img_fname'] = 'Dosya Adı:';
+$lang['img_fsize'] = 'Boyut:';
+$lang['img_artist'] = 'Fotoğrafçı:';
+$lang['img_copyr'] = 'Telif Hakkı:';
+$lang['img_format'] = 'Biçim:';
+$lang['img_camera'] = 'Fotoğraf Makinası:';
+$lang['img_keywords'] = 'Anahtar Sözcükler:';
+$lang['img_width'] = 'Genişlik:';
+$lang['img_height'] = 'Yükseklik:';
$lang['subscr_m_new_header'] = 'Üyelik ekle';
$lang['subscr_m_current_header'] = 'Üyeliğini onayla';
$lang['subscr_m_unsubscribe'] = 'Üyelik iptali';
$lang['subscr_m_subscribe'] = 'Kayıt ol';
$lang['subscr_m_receive'] = 'Al';
+$lang['subscr_style_every'] = 'her değişiklikte e-posta gönder';
$lang['authtempfail'] = 'Kullanıcı doğrulama geçici olarak yapılamıyor. Eğer bu durum devam ederse lütfen Wiki yöneticine haber veriniz.';
$lang['authpwdexpire'] = 'Şifreniz %d gün sonra geçersiz hale gelecek, yakın bir zamanda değiştirmelisiniz.';
$lang['i_chooselang'] = 'Dili seçiniz';
@@ -274,8 +287,12 @@ $lang['i_policy'] = 'İlk ACL ayarı';
$lang['i_pol0'] = 'Tamamen Açık Wiki (herkes okuyabilir, yazabilir ve dosya yükleyebilir)';
$lang['i_pol1'] = 'Açık Wiki (herkes okuyabilir, ancak sadece üye olanlar yazabilir ve dosya yükleyebilir)';
$lang['i_pol2'] = 'Kapalı Wiki (sadece üye olanlar okuyabilir, yazabilir ve dosya yükleyebilir)';
+$lang['i_allowreg'] = 'Kullanıcıların kendi kendilerine üye olmalarına için ver';
$lang['i_retry'] = 'Tekrar Dene';
$lang['i_license'] = 'Lütfen içeriği hangi lisans altında yayınlamak istediğniizi belirtin:';
+$lang['i_license_none'] = 'Hiç bir lisans bilgisi gösterme';
+$lang['i_pop_field'] = 'Lütfen DokuWiki deneyimini geliştirmemizde, bize yardım edin:';
+$lang['i_pop_label'] = 'DokuWiki geliştiricilerine ayda bir, anonim kullanım bilgisini gönder';
$lang['recent_global'] = '<b>%s</b> namespace\'i içerisinde yapılan değişiklikleri görüntülemektesiniz. Wiki\'deki tüm değişiklikleri de <a href="%s">bu adresten</a> görebilirsiniz. ';
$lang['years'] = '%d yıl önce';
$lang['months'] = '%d ay önce';
@@ -295,12 +312,19 @@ $lang['media_list_thumbs'] = 'Küçük resimler';
$lang['media_list_rows'] = 'Satırlar';
$lang['media_sort_name'] = 'İsim';
$lang['media_sort_date'] = 'Tarih';
+$lang['media_namespaces'] = 'İsimalanı seçin';
$lang['media_files'] = '%s deki dosyalar';
$lang['media_upload'] = '%s dizinine yükle';
$lang['media_search'] = '%s dizininde ara';
$lang['media_view'] = '%s';
$lang['media_edit'] = 'Düzenle %s';
$lang['media_history'] = 'Geçmiş %s';
+$lang['media_meta_edited'] = 'üstveri düzenlendi';
+$lang['media_perm_read'] = 'Özür dileriz, dosyaları okumak için yeterli haklara sahip değilsiniz.';
$lang['media_perm_upload'] = 'Üzgünüm, karşıya dosya yükleme yetkiniz yok.';
$lang['media_update'] = 'Yeni versiyonu yükleyin';
$lang['media_restore'] = 'Bu sürümü eski haline getir';
+$lang['currentns'] = 'Geçerli isimalanı';
+$lang['searchresult'] = 'Arama Sonucu';
+$lang['plainhtml'] = 'Yalın HTML';
+$lang['wikimarkup'] = 'Wiki Biçimlendirmesi';
diff --git a/inc/lang/tr/subscr_form.txt b/inc/lang/tr/subscr_form.txt
new file mode 100644
index 000000000..21a8fbaeb
--- /dev/null
+++ b/inc/lang/tr/subscr_form.txt
@@ -0,0 +1,3 @@
+====== Abonelik Yönetimi ======
+
+Bu sayfa, geçerli isimalanı ve sayfa için aboneliklerinizi düzenlemenize olanak sağlar. \ No newline at end of file
diff --git a/inc/lang/uk/lang.php b/inc/lang/uk/lang.php
index 09b2b6d1d..56f064c9f 100644
--- a/inc/lang/uk/lang.php
+++ b/inc/lang/uk/lang.php
@@ -53,7 +53,7 @@ $lang['btn_revert'] = 'Відновити';
$lang['btn_register'] = 'Реєстрація';
$lang['btn_apply'] = 'Застосувати';
$lang['btn_deleteuser'] = 'Видалити мій аккаунт';
-$lang['loggedinas'] = 'Ви';
+$lang['loggedinas'] = 'Ви:';
$lang['user'] = 'Користувач';
$lang['pass'] = 'Пароль';
$lang['newpass'] = 'Новий пароль';
@@ -94,11 +94,11 @@ $lang['license'] = 'Якщо не вказано інше, вмі
$lang['licenseok'] = 'Примітка. Редагуючи ці сторінку, ви погоджуєтесь на розповсюдження інформації за такою ліцензією:';
$lang['searchmedia'] = 'Пошук файлу:';
$lang['searchmedia_in'] = 'Шукати у %s';
-$lang['txt_upload'] = 'Виберіть файл для завантаження';
-$lang['txt_filename'] = 'Завантажити як (не обов\'язкове)';
+$lang['txt_upload'] = 'Виберіть файл для завантаження:';
+$lang['txt_filename'] = 'Завантажити як (не обов\'язкове):';
$lang['txt_overwrt'] = 'Перезаписати існуючий файл';
-$lang['lockedby'] = 'Заблоковано';
-$lang['lockexpire'] = 'Блокування завершується в';
+$lang['lockedby'] = 'Заблоковано:';
+$lang['lockexpire'] = 'Блокування завершується в:';
$lang['js']['willexpire'] = 'Блокування редагування цієї сторінки закінчується через хвилину.\n Щоб уникнути конфліктів використовуйте кнопку перегляду для продовження блокування.';
$lang['js']['notsavedyet'] = 'Незбережені зміни будуть втрачені.
Дійсно продовжити?';
@@ -172,9 +172,9 @@ $lang['diff_type'] = 'Переглянути відмінності:
$lang['diff_inline'] = 'Вбудувати';
$lang['diff_side'] = 'Поряд';
$lang['line'] = 'Рядок';
-$lang['breadcrumb'] = 'Відвідано';
-$lang['youarehere'] = 'Ви тут';
-$lang['lastmod'] = 'В останнє змінено';
+$lang['breadcrumb'] = 'Відвідано:';
+$lang['youarehere'] = 'Ви тут:';
+$lang['lastmod'] = 'В останнє змінено:';
$lang['by'] = ' ';
$lang['deleted'] = 'знищено';
$lang['created'] = 'створено';
@@ -224,16 +224,16 @@ $lang['metaedit'] = 'Редагувати метадані';
$lang['metasaveerr'] = 'Помилка запису метаданих';
$lang['metasaveok'] = 'Метадані збережено';
$lang['btn_img_backto'] = 'Повернутися до %s';
-$lang['img_title'] = 'Назва';
-$lang['img_caption'] = 'Підпис';
-$lang['img_date'] = 'Дата';
-$lang['img_fname'] = 'Ім’я файлу';
-$lang['img_fsize'] = 'Розмір';
-$lang['img_artist'] = 'Фотограф';
-$lang['img_copyr'] = 'Авторські права';
-$lang['img_format'] = 'Формат';
-$lang['img_camera'] = 'Камера';
-$lang['img_keywords'] = 'Ключові слова';
+$lang['img_title'] = 'Назва:';
+$lang['img_caption'] = 'Підпис:';
+$lang['img_date'] = 'Дата:';
+$lang['img_fname'] = 'Ім’я файлу:';
+$lang['img_fsize'] = 'Розмір:';
+$lang['img_artist'] = 'Фотограф:';
+$lang['img_copyr'] = 'Авторські права:';
+$lang['img_format'] = 'Формат:';
+$lang['img_camera'] = 'Камера:';
+$lang['img_keywords'] = 'Ключові слова:';
$lang['subscr_subscribe_success'] = 'Додано %s до списку підписки для %s';
$lang['subscr_subscribe_error'] = 'Помилка при додавані %s до списку підписки для %s';
$lang['subscr_subscribe_noaddress'] = 'Немає адреси, асоційованої з Вашим логіном, тому Ви не можете бути додані до списку підписки.';
diff --git a/inc/lang/vi/lang.php b/inc/lang/vi/lang.php
index ccc179eec..b2349d0b0 100644
--- a/inc/lang/vi/lang.php
+++ b/inc/lang/vi/lang.php
@@ -45,7 +45,7 @@ $lang['btn_revert'] = 'Phục hồi';
$lang['btn_register'] = 'Đăng ký';
$lang['btn_apply'] = 'Chấp nhận';
$lang['btn_media'] = 'Quản lý tệp tin';
-$lang['loggedinas'] = 'Username đang dùng';
+$lang['loggedinas'] = 'Username đang dùng:';
$lang['user'] = 'Username';
$lang['pass'] = 'Mật khẩu';
$lang['newpass'] = 'Mật khẩu mới';
@@ -84,11 +84,11 @@ $lang['license'] = 'Trừ khi có ghi chú khác, nội dung trên
$lang['licenseok'] = 'Lưu ý: Bằng cách chỉnh sửa trang này, bạn đồng ý cấp giấy phép nội dung của bạn theo giấy phép sau:';
$lang['searchmedia'] = 'Tìm tên file:';
$lang['searchmedia_in'] = 'Tìm ở %s';
-$lang['txt_upload'] = 'Chọn tệp để tải lên';
-$lang['txt_filename'] = 'Điền wikiname (tuỳ ý)';
+$lang['txt_upload'] = 'Chọn tệp để tải lên:';
+$lang['txt_filename'] = 'Điền wikiname (tuỳ ý):';
$lang['txt_overwrt'] = 'Ghi đè file trùng';
-$lang['lockedby'] = 'Đang khoá bởi';
-$lang['lockexpire'] = 'Sẽ được mở khóa vào lúc';
+$lang['lockedby'] = 'Đang khoá bởi:';
+$lang['lockexpire'] = 'Sẽ được mở khóa vào lúc:';
$lang['js']['willexpire'] = 'Trong một phút nữa bài viết sẽ được mở khóa để cho phép người khác chỉnh sửa.\nĐể tránh xung đột, bạn nên bấm nút Duyệt trước để lập lại thời gian khoá bài';
$lang['js']['notsavedyet'] = 'Hiện có những thay đổi chưa được bảo lưu, và sẽ mất.\nBạn thật sự muốn tiếp tục?';
$lang['js']['searchmedia'] = 'Tìm kiếm tập tin';
@@ -156,9 +156,9 @@ $lang['diff_type'] = 'Xem sự khác biệt:';
$lang['diff_inline'] = 'Nội tuyến';
$lang['diff_side'] = 'Xếp cạnh nhau';
$lang['line'] = 'Dòng';
-$lang['breadcrumb'] = 'Trang đã xem';
-$lang['youarehere'] = 'Bạn đang ở đây';
-$lang['lastmod'] = 'Thời điểm thay đổi';
+$lang['breadcrumb'] = 'Trang đã xem:';
+$lang['youarehere'] = 'Bạn đang ở đây:';
+$lang['lastmod'] = 'Thời điểm thay đổi:';
$lang['by'] = 'do';
$lang['deleted'] = 'bị xoá';
$lang['created'] = 'được tạo ra';
@@ -193,18 +193,18 @@ $lang['metaedit'] = 'Sửa Metadata';
$lang['metasaveerr'] = 'Thất bại khi viết metadata';
$lang['metasaveok'] = 'Metadata đã được lưu';
$lang['btn_img_backto'] = 'Quay lại %s';
-$lang['img_title'] = 'Tiêu đề';
-$lang['img_caption'] = 'Ghi chú';
-$lang['img_date'] = 'Ngày';
-$lang['img_fname'] = 'Tên file';
-$lang['img_fsize'] = 'Kích cỡ';
-$lang['img_artist'] = 'Người chụp';
-$lang['img_copyr'] = 'Bản quyền';
-$lang['img_format'] = 'Định dạng';
-$lang['img_camera'] = 'Camera';
-$lang['img_keywords'] = 'Từ khóa';
-$lang['img_width'] = 'Rộng';
-$lang['img_height'] = 'Cao';
+$lang['img_title'] = 'Tiêu đề:';
+$lang['img_caption'] = 'Ghi chú:';
+$lang['img_date'] = 'Ngày:';
+$lang['img_fname'] = 'Tên file:';
+$lang['img_fsize'] = 'Kích cỡ:';
+$lang['img_artist'] = 'Người chụp:';
+$lang['img_copyr'] = 'Bản quyền:';
+$lang['img_format'] = 'Định dạng:';
+$lang['img_camera'] = 'Camera:';
+$lang['img_keywords'] = 'Từ khóa:';
+$lang['img_width'] = 'Rộng:';
+$lang['img_height'] = 'Cao:';
$lang['btn_mediaManager'] = 'Xem trong trình quản lý tệp media';
$lang['i_chooselang'] = 'Chọn ngôn ngữ';
$lang['i_retry'] = 'Thử lại';
diff --git a/inc/lang/zh-tw/lang.php b/inc/lang/zh-tw/lang.php
index 84afec97a..03d5d54a1 100644
--- a/inc/lang/zh-tw/lang.php
+++ b/inc/lang/zh-tw/lang.php
@@ -57,7 +57,7 @@ $lang['btn_register'] = '註冊';
$lang['btn_apply'] = '套用';
$lang['btn_media'] = '多媒體管理器';
$lang['btn_deleteuser'] = '移除我的帳號';
-$lang['loggedinas'] = '登入成';
+$lang['loggedinas'] = '登入成:';
$lang['user'] = '帳號';
$lang['pass'] = '密碼';
$lang['newpass'] = '新密碼';
@@ -102,12 +102,12 @@ $lang['license'] = '若無特別註明,本 wiki 上的內容都
$lang['licenseok'] = '注意:編輯此頁面表示您同意用以下授權方式發布您撰寫的內容:';
$lang['searchmedia'] = '搜尋檔名:';
$lang['searchmedia_in'] = '在 %s 裏搜尋';
-$lang['txt_upload'] = '請選擇要上傳的檔案';
-$lang['txt_filename'] = '請輸入要上傳至本 wiki 的檔案名稱 (非必要)';
+$lang['txt_upload'] = '請選擇要上傳的檔案:';
+$lang['txt_filename'] = '請輸入要上傳至本 wiki 的檔案名稱 (非必要):';
$lang['txt_overwrt'] = '是否要覆蓋原有檔案';
$lang['maxuploadsize'] = '每個上傳檔案不可大於 %s 。';
-$lang['lockedby'] = '目前已被下列人員鎖定';
-$lang['lockexpire'] = '預計解除鎖定於';
+$lang['lockedby'] = '目前已被下列人員鎖定:';
+$lang['lockexpire'] = '預計解除鎖定於:';
$lang['js']['willexpire'] = '本頁的編輯鎖定將在一分鐘內到期。要避免發生衝突,請按「預覽」鍵重設鎖定計時。';
$lang['js']['notsavedyet'] = '未儲存的變更將會遺失,繼續嗎?';
$lang['js']['searchmedia'] = '搜尋檔案';
@@ -188,9 +188,9 @@ $lang['diff_type'] = '檢視差異:';
$lang['diff_inline'] = '行內';
$lang['diff_side'] = '並排';
$lang['line'] = '行';
-$lang['breadcrumb'] = '足跡';
-$lang['youarehere'] = '您在這裏';
-$lang['lastmod'] = '上一次變更';
+$lang['breadcrumb'] = '足跡:';
+$lang['youarehere'] = '您在這裏:';
+$lang['lastmod'] = '上一次變更:';
$lang['by'] = '由';
$lang['deleted'] = '移除';
$lang['created'] = '建立';
@@ -244,18 +244,18 @@ $lang['metaedit'] = '編輯後設資料';
$lang['metasaveerr'] = '後設資料無法寫入';
$lang['metasaveok'] = '後設資料已儲存';
$lang['btn_img_backto'] = '回上一頁 %s';
-$lang['img_title'] = '標題';
-$lang['img_caption'] = '照片說明';
-$lang['img_date'] = '日期';
-$lang['img_fname'] = '檔名';
-$lang['img_fsize'] = '大小';
-$lang['img_artist'] = '攝影者';
-$lang['img_copyr'] = '版權';
-$lang['img_format'] = '格式';
-$lang['img_camera'] = '相機';
-$lang['img_keywords'] = '關鍵字';
-$lang['img_width'] = '寬度';
-$lang['img_height'] = '高度';
+$lang['img_title'] = '標題:';
+$lang['img_caption'] = '照片說明:';
+$lang['img_date'] = '日期:';
+$lang['img_fname'] = '檔名:';
+$lang['img_fsize'] = '大小:';
+$lang['img_artist'] = '攝影者:';
+$lang['img_copyr'] = '版權:';
+$lang['img_format'] = '格式:';
+$lang['img_camera'] = '相機:';
+$lang['img_keywords'] = '關鍵字:';
+$lang['img_width'] = '寬度:';
+$lang['img_height'] = '高度:';
$lang['btn_mediaManager'] = '在多媒體管理器中檢視';
$lang['subscr_subscribe_success'] = '已將 %s 加入至 %s 的訂閱列表';
$lang['subscr_subscribe_error'] = '將 %s 加入至 %s 的訂閱列表時發生錯誤';
diff --git a/inc/lang/zh/lang.php b/inc/lang/zh/lang.php
index e9e737251..c8a76b66b 100644
--- a/inc/lang/zh/lang.php
+++ b/inc/lang/zh/lang.php
@@ -69,7 +69,7 @@ $lang['btn_media'] = '媒体管理器';
$lang['btn_deleteuser'] = '移除我的账户';
$lang['btn_img_backto'] = '返回到 %s';
$lang['btn_mediaManager'] = '在媒体管理器中查看';
-$lang['loggedinas'] = '登录为';
+$lang['loggedinas'] = '登录为:';
$lang['user'] = '用户名';
$lang['pass'] = '密码';
$lang['newpass'] = '请输入新密码';
@@ -114,12 +114,12 @@ $lang['license'] = '除额外注明的地方外,本维基上的
$lang['licenseok'] = '当您选择开始编辑本页,即寓示你同意将你贡献的内容按下列许可协议发布:';
$lang['searchmedia'] = '查找文件名:';
$lang['searchmedia_in'] = '在%s中查找';
-$lang['txt_upload'] = '选择要上传的文件';
-$lang['txt_filename'] = '上传并重命名为(可选)';
+$lang['txt_upload'] = '选择要上传的文件:';
+$lang['txt_filename'] = '上传并重命名为(可选):';
$lang['txt_overwrt'] = '覆盖已存在的同名文件';
$lang['maxuploadsize'] = '上传限制。每个文件 %s';
-$lang['lockedby'] = '目前已被下列人员锁定';
-$lang['lockexpire'] = '预计锁定解除于';
+$lang['lockedby'] = '目前已被下列人员锁定:';
+$lang['lockexpire'] = '预计锁定解除于:';
$lang['js']['willexpire'] = '您对本页的独有编辑权将于一分钟之后解除。\n为了防止与其他人的编辑冲突,请使用预览按钮重设计时器。';
$lang['js']['notsavedyet'] = '未保存的更改将丢失。
真的要继续?';
@@ -203,10 +203,12 @@ $lang['diff_side'] = '并排显示';
$lang['diffprevrev'] = '前一修订版';
$lang['diffnextrev'] = '后一修订版';
$lang['difflastrev'] = '上一修订版';
+$lang['diffbothprevrev'] = '两侧同时换到之前的修订记录';
+$lang['diffbothnextrev'] = '两侧同时换到之后的修订记录';
$lang['line'] = '行';
-$lang['breadcrumb'] = '您的足迹';
-$lang['youarehere'] = '您在这里';
-$lang['lastmod'] = '最后更改';
+$lang['breadcrumb'] = '您的足迹:';
+$lang['youarehere'] = '您在这里:';
+$lang['lastmod'] = '最后更改:';
$lang['by'] = '由';
$lang['deleted'] = '移除';
$lang['created'] = '创建';
@@ -259,18 +261,18 @@ $lang['admin_register'] = '添加新用户';
$lang['metaedit'] = '编辑元数据';
$lang['metasaveerr'] = '写入元数据失败';
$lang['metasaveok'] = '元数据已保存';
-$lang['img_title'] = '标题';
-$lang['img_caption'] = '说明';
-$lang['img_date'] = '日期';
-$lang['img_fname'] = '名称';
-$lang['img_fsize'] = '大小';
-$lang['img_artist'] = '摄影师';
-$lang['img_copyr'] = '版权';
-$lang['img_format'] = '格式';
-$lang['img_camera'] = '相机';
-$lang['img_keywords'] = '关键字';
-$lang['img_width'] = '宽度';
-$lang['img_height'] = '高度';
+$lang['img_title'] = '标题:';
+$lang['img_caption'] = '说明:';
+$lang['img_date'] = '日期:';
+$lang['img_fname'] = '名称:';
+$lang['img_fsize'] = '大小:';
+$lang['img_artist'] = '摄影师:';
+$lang['img_copyr'] = '版权:';
+$lang['img_format'] = '格式:';
+$lang['img_camera'] = '相机:';
+$lang['img_keywords'] = '关键字:';
+$lang['img_width'] = '宽度:';
+$lang['img_height'] = '高度:';
$lang['subscr_subscribe_success'] = '添加 %s 到 %s 的订阅列表';
$lang['subscr_subscribe_error'] = '添加 %s 到 %s 的订阅列表中出现错误';
$lang['subscr_subscribe_noaddress'] = '没有与您登录信息相关联的地址,您无法被添加到订阅列表';
diff --git a/inc/load.php b/inc/load.php
index f1deffe19..ac2812a0b 100644
--- a/inc/load.php
+++ b/inc/load.php
@@ -102,6 +102,10 @@ function load_autoload($name){
'Doku_Renderer_xhtmlsummary' => DOKU_INC.'inc/parser/xhtmlsummary.php',
'Doku_Renderer_metadata' => DOKU_INC.'inc/parser/metadata.php',
+ 'DokuCLI' => DOKU_INC.'inc/cli.php',
+ 'DokuCLI_Options' => DOKU_INC.'inc/cli.php',
+ 'DokuCLI_Colors' => DOKU_INC.'inc/cli.php',
+
);
if(isset($classes[$name])){
diff --git a/inc/media.php b/inc/media.php
index b5347d145..185d0a5ba 100644
--- a/inc/media.php
+++ b/inc/media.php
@@ -1042,7 +1042,7 @@ function media_details($image, $auth, $rev=false, $meta=false) {
foreach($tags as $tag){
if ($tag['value']) {
$value = cleanText($tag['value']);
- echo '<dt>'.$lang[$tag['tag'][1]].':</dt><dd>';
+ echo '<dt>'.$lang[$tag['tag'][1]].'</dt><dd>';
if ($tag['tag'][2] == 'date') echo dformat($value);
else echo hsc($value);
echo '</dd>'.NL;
@@ -1225,7 +1225,7 @@ function media_file_diff($image, $l_rev, $r_rev, $ns, $auth, $fromajax){
foreach($tags as $tag){
$value = cleanText($tag['value']);
if (!$value) $value = '-';
- echo '<dt>'.$lang[$tag['tag'][1]].':</dt>';
+ echo '<dt>'.$lang[$tag['tag'][1]].'</dt>';
echo '<dd>';
if ($tag['highlighted']) {
echo '<strong>';
@@ -1654,10 +1654,10 @@ function media_uploadform($ns, $auth, $fullscreen = false){
$form->addElement(formSecurityToken());
$form->addHidden('ns', hsc($ns));
$form->addElement(form_makeOpenTag('p'));
- $form->addElement(form_makeFileField('upload', $lang['txt_upload'].':', 'upload__file'));
+ $form->addElement(form_makeFileField('upload', $lang['txt_upload'], 'upload__file'));
$form->addElement(form_makeCloseTag('p'));
$form->addElement(form_makeOpenTag('p'));
- $form->addElement(form_makeTextField('mediaid', noNS($id), $lang['txt_filename'].':', 'upload__name'));
+ $form->addElement(form_makeTextField('mediaid', noNS($id), $lang['txt_filename'], 'upload__name'));
$form->addElement(form_makeButton('submit', '', $lang['btn_upload']));
$form->addElement(form_makeCloseTag('p'));
diff --git a/inc/pageutils.php b/inc/pageutils.php
index 8474c5697..5f62926e4 100644
--- a/inc/pageutils.php
+++ b/inc/pageutils.php
@@ -17,6 +17,10 @@
* If the second parameter is true (default) the ID is cleaned.
*
* @author Andreas Gohr <andi@splitbrain.org>
+ *
+ * @param string $param the $_REQUEST variable name, default 'id'
+ * @param bool $clean if true, ID is cleaned
+ * @return mixed|string
*/
function getID($param='id',$clean=true){
/** @var Input $INPUT */
@@ -146,6 +150,9 @@ function cleanID($raw_id,$ascii=false){
* Return namespacepart of a wiki ID
*
* @author Andreas Gohr <andi@splitbrain.org>
+ *
+ * @param string $id
+ * @return string|bool the namespace part or false if the given ID has no namespace (root)
*/
function getNS($id){
$pos = strrpos((string)$id,':');
@@ -159,6 +166,9 @@ function getNS($id){
* Returns the ID without the namespace
*
* @author Andreas Gohr <andi@splitbrain.org>
+ *
+ * @param string $id
+ * @return string
*/
function noNS($id) {
$pos = strrpos($id, ':');
@@ -173,6 +183,9 @@ function noNS($id) {
* Returns the current namespace
*
* @author Nathan Fritz <fritzn@crown.edu>
+ *
+ * @param string $id
+ * @return string
*/
function curNS($id) {
return noNS(getNS($id));
@@ -182,6 +195,9 @@ function curNS($id) {
* Returns the ID without the namespace or current namespace for 'start' pages
*
* @author Nathan Fritz <fritzn@crown.edu>
+ *
+ * @param string $id
+ * @return string
*/
function noNSorNS($id) {
global $conf;
@@ -202,6 +218,7 @@ function noNSorNS($id) {
* @param string $title The headline title
* @param array|bool $check Existing IDs (title => number)
* @return string the title
+ *
* @author Andreas Gohr <andi@splitbrain.org>
*/
function sectionID($title,&$check) {
@@ -232,6 +249,11 @@ function sectionID($title,&$check) {
* parameters as for wikiFN
*
* @author Chris Smith <chris@jalakai.co.uk>
+ *
+ * @param string $id page id
+ * @param string|int $rev empty or revision timestamp
+ * @param bool $clean flag indicating that $id should be cleaned (see wikiFN as well)
+ * @return bool exists?
*/
function page_exists($id,$rev='',$clean=true) {
return @file_exists(wikiFN($id,$rev,$clean));
@@ -290,6 +312,9 @@ function wikiFN($raw_id,$rev='',$clean=true){
* Returns the full path to the file for locking the page while editing.
*
* @author Ben Coburn <btcoburn@silicodon.net>
+ *
+ * @param string $id page id
+ * @return string full path
*/
function wikiLockFN($id) {
global $conf;
@@ -301,6 +326,10 @@ function wikiLockFN($id) {
* returns the full path to the meta file specified by ID and extension
*
* @author Steven Danz <steven-danz@kc.rr.com>
+ *
+ * @param string $id page id
+ * @param string $ext file extension
+ * @return string full path
*/
function metaFN($id,$ext){
global $conf;
@@ -314,6 +343,10 @@ function metaFN($id,$ext){
* returns the full path to the media's meta file specified by ID and extension
*
* @author Kate Arzamastseva <pshns@ukr.net>
+ *
+ * @param string $id media id
+ * @param string $ext extension of media
+ * @return string
*/
function mediaMetaFN($id,$ext){
global $conf;
@@ -328,6 +361,9 @@ function mediaMetaFN($id,$ext){
*
* @author Esther Brunner <esther@kaffeehaus.ch>
* @author Michael Hamann <michael@content-space.de>
+ *
+ * @param string $id page id
+ * @return array
*/
function metaFiles($id){
$basename = metaFN($id, '');
@@ -343,6 +379,10 @@ function metaFiles($id){
*
* @author Andreas Gohr <andi@splitbrain.org>
* @author Kate Arzamastseva <pshns@ukr.net>
+ *
+ * @param string $id media id
+ * @param string|int $rev empty string or revision timestamp
+ * @return string full path
*/
function mediaFN($id, $rev=''){
global $conf;
@@ -365,6 +405,7 @@ function mediaFN($id, $rev=''){
* @param string $id The id of the local file
* @param string $ext The file extension (usually txt)
* @return string full filepath to localized file
+ *
* @author Andreas Gohr <andi@splitbrain.org>
*/
function localeFN($id,$ext='txt'){
@@ -390,6 +431,11 @@ function localeFN($id,$ext='txt'){
* http://www.php.net/manual/en/function.realpath.php#57016
*
* @author <bart at mediawave dot nl>
+ *
+ * @param string $ns namespace which is context of id
+ * @param string $id relative id
+ * @param bool $clean flag indicating that id should be cleaned
+ * @return mixed|string
*/
function resolve_id($ns,$id,$clean=true){
global $conf;
@@ -435,6 +481,10 @@ function resolve_id($ns,$id,$clean=true){
* Returns a full media id
*
* @author Andreas Gohr <andi@splitbrain.org>
+ *
+ * @param string $ns namespace which is context of id
+ * @param string &$page (reference) relative media id, updated to resolved id
+ * @param bool &$exists (reference) updated with existance of media
*/
function resolve_mediaid($ns,&$page,&$exists){
$page = resolve_id($ns,$page);
@@ -446,6 +496,10 @@ function resolve_mediaid($ns,&$page,&$exists){
* Returns a full page id
*
* @author Andreas Gohr <andi@splitbrain.org>
+ *
+ * @param string $ns namespace which is context of id
+ * @param string &$page (reference) relative page id, updated to resolved id
+ * @param bool &$exists (reference) updated with existance of media
*/
function resolve_pageid($ns,&$page,&$exists){
global $conf;
@@ -537,6 +591,9 @@ function getCacheName($data,$ext=''){
* Checks a pageid against $conf['hidepages']
*
* @author Andreas Gohr <gohr@cosmocode.de>
+ *
+ * @param string $id page id
+ * @return bool
*/
function isHiddenPage($id){
$data = array(
@@ -550,7 +607,7 @@ function isHiddenPage($id){
/**
* callback checks if page is hidden
*
- * @param array $data event data see isHiddenPage()
+ * @param array $data event data - see isHiddenPage()
*/
function _isHiddenPage(&$data) {
global $conf;
@@ -569,6 +626,9 @@ function _isHiddenPage(&$data) {
* Reverse of isHiddenPage
*
* @author Andreas Gohr <gohr@cosmocode.de>
+ *
+ * @param string $id page id
+ * @return bool
*/
function isVisiblePage($id){
return !isHiddenPage($id);
@@ -581,8 +641,10 @@ function isVisiblePage($id){
* “*”. Output is escaped.
*
* @author Adrian Lang <lang@cosmocode.de>
+ *
+ * @param string $id page id
+ * @return string
*/
-
function prettyprint_id($id) {
if (!$id || $id === ':') {
return '*';
@@ -605,6 +667,10 @@ function prettyprint_id($id) {
*
* @author Andreas Gohr <andi@splitbrain.org>
* @see urlencode
+ *
+ * @param string $file file name
+ * @param bool $safe if true, only encoded when non ASCII characters detected
+ * @return string
*/
function utf8_encodeFN($file,$safe=true){
global $conf;
@@ -630,6 +696,9 @@ function utf8_encodeFN($file,$safe=true){
*
* @author Andreas Gohr <andi@splitbrain.org>
* @see urldecode
+ *
+ * @param string $file file name
+ * @return string
*/
function utf8_decodeFN($file){
global $conf;
diff --git a/inc/parser/code.php b/inc/parser/code.php
index d77ffd1aa..00b956c27 100644
--- a/inc/parser/code.php
+++ b/inc/parser/code.php
@@ -7,25 +7,25 @@
if(!defined('DOKU_INC')) die('meh.');
class Doku_Renderer_code extends Doku_Renderer {
- var $_codeblock=0;
+ var $_codeblock = 0;
/**
* Send the wanted code block to the browser
*
* When the correct block was found it exits the script.
*/
- function code($text, $language = null, $filename='' ) {
+ function code($text, $language = null, $filename = '') {
global $INPUT;
if(!$language) $language = 'txt';
if(!$filename) $filename = 'snippet.'.$language;
$filename = utf8_basename($filename);
$filename = utf8_stripspecials($filename, '_');
- if($this->_codeblock == $INPUT->str('codeblock')){
+ if($this->_codeblock == $INPUT->str('codeblock')) {
header("Content-Type: text/plain; charset=utf-8");
header("Content-Disposition: attachment; filename=$filename");
header("X-Robots-Tag: noindex");
- echo trim($text,"\r\n");
+ echo trim($text, "\r\n");
exit;
}
@@ -35,7 +35,7 @@ class Doku_Renderer_code extends Doku_Renderer {
/**
* Wraps around code()
*/
- function file($text, $language = null, $filename='') {
+ function file($text, $language = null, $filename = '') {
$this->code($text, $language, $filename);
}
@@ -53,7 +53,7 @@ class Doku_Renderer_code extends Doku_Renderer {
*
* @returns string 'code'
*/
- function getFormat(){
+ function getFormat() {
return 'code';
}
}
diff --git a/inc/parser/metadata.php b/inc/parser/metadata.php
index 82a268fd6..25bf3fe3d 100644
--- a/inc/parser/metadata.php
+++ b/inc/parser/metadata.php
@@ -6,129 +6,198 @@
*/
if(!defined('DOKU_INC')) die('meh.');
-if ( !defined('DOKU_LF') ) {
+if(!defined('DOKU_LF')) {
// Some whitespace to help View > Source
- define ('DOKU_LF',"\n");
+ define ('DOKU_LF', "\n");
}
-if ( !defined('DOKU_TAB') ) {
+if(!defined('DOKU_TAB')) {
// Some whitespace to help View > Source
- define ('DOKU_TAB',"\t");
+ define ('DOKU_TAB', "\t");
}
/**
- * The Renderer
+ * The MetaData Renderer
+ *
+ * Metadata is additional information about a DokuWiki page that gets extracted mainly from the page's content
+ * but also it's own filesystem data (like the creation time). All metadata is stored in the fields $meta and
+ * $persistent.
+ *
+ * Some simplified rendering to $doc is done to gather the page's (text-only) abstract.
*/
class Doku_Renderer_metadata extends Doku_Renderer {
+ /** the approximate byte lenght to capture for the abstract */
+ const ABSTRACT_LEN = 250;
+
+ /** the maximum UTF8 character length for the abstract */
+ const ABSTRACT_MAX = 500;
+
+ /** @var array transient meta data, will be reset on each rendering */
+ public $meta = array();
+
+ /** @var array persistent meta data, will be kept until explicitly deleted */
+ public $persistent = array();
- var $doc = '';
- var $meta = array();
- var $persistent = array();
+ /** @var array the list of headers used to create unique link ids */
+ protected $headers = array();
- var $headers = array();
- var $capture = true;
- var $store = '';
- var $firstimage = '';
+ /** @var string temporary $doc store */
+ protected $store = '';
- function getFormat(){
+ /** @var string keeps the first image reference */
+ protected $firstimage = '';
+
+ /** @var bool determines if enough data for the abstract was collected, yet */
+ public $capture = true;
+
+ /** @var int number of bytes captured for abstract */
+ protected $captured = 0;
+
+ /**
+ * Returns the format produced by this renderer.
+ *
+ * @return string always 'metadata'
+ */
+ function getFormat() {
return 'metadata';
}
- function document_start(){
+ /**
+ * Initialize the document
+ *
+ * Sets up some of the persistent info about the page if it doesn't exist, yet.
+ */
+ function document_start() {
global $ID;
$this->headers = array();
// external pages are missing create date
- if(!$this->persistent['date']['created']){
+ if(!$this->persistent['date']['created']) {
$this->persistent['date']['created'] = filectime(wikiFN($ID));
}
- if(!isset($this->persistent['user'])){
+ if(!isset($this->persistent['user'])) {
$this->persistent['user'] = '';
}
- if(!isset($this->persistent['creator'])){
+ if(!isset($this->persistent['creator'])) {
$this->persistent['creator'] = '';
}
// reset metadata to persistent values
$this->meta = $this->persistent;
}
- function document_end(){
+ /**
+ * Finalize the document
+ *
+ * Stores collected data in the metadata
+ */
+ function document_end() {
global $ID;
// store internal info in metadata (notoc,nocache)
$this->meta['internal'] = $this->info;
- if (!isset($this->meta['description']['abstract'])){
+ if(!isset($this->meta['description']['abstract'])) {
// cut off too long abstracts
$this->doc = trim($this->doc);
- if (strlen($this->doc) > 500)
- $this->doc = utf8_substr($this->doc, 0, 500).'…';
+ if(strlen($this->doc) > self::ABSTRACT_MAX) {
+ $this->doc = utf8_substr($this->doc, 0, self::ABSTRACT_MAX).'…';
+ }
$this->meta['description']['abstract'] = $this->doc;
}
$this->meta['relation']['firstimage'] = $this->firstimage;
- if(!isset($this->meta['date']['modified'])){
+ if(!isset($this->meta['date']['modified'])) {
$this->meta['date']['modified'] = filemtime(wikiFN($ID));
}
}
+ /**
+ * Render plain text data
+ *
+ * This function takes care of the amount captured data and will stop capturing when
+ * enough abstract data is available
+ *
+ * @param $text
+ */
+ function cdata($text) {
+ if(!$this->capture) return;
+
+ $this->doc .= $text;
+
+ $this->captured += strlen($text);
+ if($this->captured > self::ABSTRACT_LEN) $this->capture = false;
+ }
+
+ /**
+ * Add an item to the TOC
+ *
+ * @param string $id the hash link
+ * @param string $text the text to display
+ * @param int $level the nesting level
+ */
function toc_additem($id, $text, $level) {
global $conf;
//only add items within configured levels
- if($level >= $conf['toptoclevel'] && $level <= $conf['maxtoclevel']){
+ if($level >= $conf['toptoclevel'] && $level <= $conf['maxtoclevel']) {
// the TOC is one of our standard ul list arrays ;-)
$this->meta['description']['tableofcontents'][] = array(
- 'hid' => $id,
- 'title' => $text,
- 'type' => 'ul',
- 'level' => $level-$conf['toptoclevel']+1
+ 'hid' => $id,
+ 'title' => $text,
+ 'type' => 'ul',
+ 'level' => $level - $conf['toptoclevel'] + 1
);
}
}
+ /**
+ * Render a heading
+ *
+ * @param string $text the text to display
+ * @param int $level header level
+ * @param int $pos byte position in the original source
+ */
function header($text, $level, $pos) {
- if (!isset($this->meta['title'])) $this->meta['title'] = $text;
+ if(!isset($this->meta['title'])) $this->meta['title'] = $text;
// add the header to the TOC
- $hid = $this->_headerToLink($text,'true');
+ $hid = $this->_headerToLink($text, 'true');
$this->toc_additem($hid, $text, $level);
// add to summary
- if ($this->capture && ($level > 1)) $this->doc .= DOKU_LF.$text.DOKU_LF;
+ $this->cdata(DOKU_LF.$text.DOKU_LF);
}
- function section_open($level){}
- function section_close(){}
-
- function cdata($text){
- if ($this->capture) $this->doc .= $text;
- }
-
- function p_open(){
- if ($this->capture) $this->doc .= DOKU_LF;
+ /**
+ * Open a paragraph
+ */
+ function p_open() {
+ $this->cdata(DOKU_LF);
}
- function p_close(){
- if ($this->capture){
- if (strlen($this->doc) > 250) $this->capture = false;
- else $this->doc .= DOKU_LF;
- }
+ /**
+ * Close a paragraph
+ */
+ function p_close() {
+ $this->cdata(DOKU_LF);
}
- function linebreak(){
- if ($this->capture) $this->doc .= DOKU_LF;
+ /**
+ * Create a line break
+ */
+ function linebreak() {
+ $this->cdata(DOKU_LF);
}
- function hr(){
- if ($this->capture){
- if (strlen($this->doc) > 250) $this->capture = false;
- else $this->doc .= DOKU_LF.'----------'.DOKU_LF;
- }
+ /**
+ * Create a horizontal line
+ */
+ function hr() {
+ $this->cdata(DOKU_LF.'----------'.DOKU_LF);
}
/**
@@ -141,7 +210,7 @@ class Doku_Renderer_metadata extends Doku_Renderer {
* @author Andreas Gohr <andi@splitbrain.org>
*/
function footnote_open() {
- if ($this->capture){
+ if($this->capture) {
// move current content to store and record footnote
$this->store = $this->doc;
$this->doc = '';
@@ -157,141 +226,214 @@ class Doku_Renderer_metadata extends Doku_Renderer {
* @author Andreas Gohr
*/
function footnote_close() {
- if ($this->capture){
+ if($this->capture) {
// restore old content
- $this->doc = $this->store;
+ $this->doc = $this->store;
$this->store = '';
}
}
- function listu_open(){
- if ($this->capture) $this->doc .= DOKU_LF;
- }
-
- function listu_close(){
- if ($this->capture && (strlen($this->doc) > 250)) $this->capture = false;
- }
-
- function listo_open(){
- if ($this->capture) $this->doc .= DOKU_LF;
- }
-
- function listo_close(){
- if ($this->capture && (strlen($this->doc) > 250)) $this->capture = false;
+ /**
+ * Open an unordered list
+ */
+ function listu_open() {
+ $this->cdata(DOKU_LF);
}
- function listitem_open($level){
- if ($this->capture) $this->doc .= str_repeat(DOKU_TAB, $level).'* ';
+ /**
+ * Open an ordered list
+ */
+ function listo_open() {
+ $this->cdata(DOKU_LF);
}
- function listitem_close(){
- if ($this->capture) $this->doc .= DOKU_LF;
+ /**
+ * Open a list item
+ *
+ * @param int $level the nesting level
+ */
+ function listitem_open($level) {
+ $this->cdata(str_repeat(DOKU_TAB, $level).'* ');
}
- function listcontent_open(){}
- function listcontent_close(){}
-
- function unformatted($text){
- if ($this->capture) $this->doc .= $text;
+ /**
+ * Close a list item
+ */
+ function listitem_close() {
+ $this->cdata(DOKU_LF);
}
- function preformatted($text){
- if ($this->capture) $this->doc .= $text;
+ /**
+ * Output preformatted text
+ *
+ * @param string $text
+ */
+ function preformatted($text) {
+ $this->cdata($text);
}
- function file($text, $lang = null, $file = null){
- if ($this->capture){
- $this->doc .= DOKU_LF.$text;
- if (strlen($this->doc) > 250) $this->capture = false;
- else $this->doc .= DOKU_LF;
- }
+ /**
+ * Start a block quote
+ */
+ function quote_open() {
+ $this->cdata(DOKU_LF.DOKU_TAB.'"');
}
- function quote_open(){
- if ($this->capture) $this->doc .= DOKU_LF.DOKU_TAB.'"';
+ /**
+ * Stop a block quote
+ */
+ function quote_close() {
+ $this->cdata('"'.DOKU_LF);
}
- function quote_close(){
- if ($this->capture){
- $this->doc .= '"';
- if (strlen($this->doc) > 250) $this->capture = false;
- else $this->doc .= DOKU_LF;
- }
+ /**
+ * Display text as file content, optionally syntax highlighted
+ *
+ * @param string $text text to show
+ * @param string $lang programming language to use for syntax highlighting
+ * @param string $file file path label
+ */
+ function file($text, $lang = null, $file = null) {
+ $this->cdata(DOKU_LF.$text.DOKU_LF);
}
- function code($text, $language = null, $file = null){
- if ($this->capture){
- $this->doc .= DOKU_LF.$text;
- if (strlen($this->doc) > 250) $this->capture = false;
- else $this->doc .= DOKU_LF;
- }
+ /**
+ * Display text as code content, optionally syntax highlighted
+ *
+ * @param string $text text to show
+ * @param string $language programming language to use for syntax highlighting
+ * @param string $file file path label
+ */
+ function code($text, $language = null, $file = null) {
+ $this->cdata(DOKU_LF.$text.DOKU_LF);
}
- function acronym($acronym){
- if ($this->capture) $this->doc .= $acronym;
+ /**
+ * Format an acronym
+ *
+ * Uses $this->acronyms
+ *
+ * @param string $acronym
+ */
+ function acronym($acronym) {
+ $this->cdata($acronym);
}
- function smiley($smiley){
- if ($this->capture) $this->doc .= $smiley;
+ /**
+ * Format a smiley
+ *
+ * Uses $this->smiley
+ *
+ * @param string $smiley
+ */
+ function smiley($smiley) {
+ $this->cdata($smiley);
}
- function entity($entity){
- if ($this->capture) $this->doc .= $entity;
+ /**
+ * Format an entity
+ *
+ * Entities are basically small text replacements
+ *
+ * Uses $this->entities
+ *
+ * @param string $entity
+ */
+ function entity($entity) {
+ $this->cdata($entity);
}
- function multiplyentity($x, $y){
- if ($this->capture) $this->doc .= $x.'×'.$y;
+ /**
+ * Typographically format a multiply sign
+ *
+ * Example: ($x=640, $y=480) should result in "640×480"
+ *
+ * @param string|int $x first value
+ * @param string|int $y second value
+ */
+ function multiplyentity($x, $y) {
+ $this->cdata($x.'×'.$y);
}
- function singlequoteopening(){
+ /**
+ * Render an opening single quote char (language specific)
+ */
+ function singlequoteopening() {
global $lang;
- if ($this->capture) $this->doc .= $lang['singlequoteopening'];
+ $this->cdata($lang['singlequoteopening']);
}
- function singlequoteclosing(){
+ /**
+ * Render a closing single quote char (language specific)
+ */
+ function singlequoteclosing() {
global $lang;
- if ($this->capture) $this->doc .= $lang['singlequoteclosing'];
+ $this->cdata($lang['singlequoteclosing']);
}
+ /**
+ * Render an apostrophe char (language specific)
+ */
function apostrophe() {
global $lang;
- if ($this->capture) $this->doc .= $lang['apostrophe'];
+ $this->cdata($lang['apostrophe']);
}
- function doublequoteopening(){
+ /**
+ * Render an opening double quote char (language specific)
+ */
+ function doublequoteopening() {
global $lang;
- if ($this->capture) $this->doc .= $lang['doublequoteopening'];
+ $this->cdata($lang['doublequoteopening']);
}
- function doublequoteclosing(){
+ /**
+ * Render an closinging double quote char (language specific)
+ */
+ function doublequoteclosing() {
global $lang;
- if ($this->capture) $this->doc .= $lang['doublequoteclosing'];
+ $this->cdata($lang['doublequoteclosing']);
}
+ /**
+ * Render a CamelCase link
+ *
+ * @param string $link The link name
+ * @see http://en.wikipedia.org/wiki/CamelCase
+ */
function camelcaselink($link) {
$this->internallink($link, $link);
}
- function locallink($hash, $name = null){
+ /**
+ * Render a page local link
+ *
+ * @param string $hash hash link identifier
+ * @param string $name name for the link
+ */
+ function locallink($hash, $name = null) {
if(is_array($name)) {
$this->_firstimage($name['src']);
- if ($name['type'] == 'internalmedia') $this->_recordMediaUsage($name['src']);
+ if($name['type'] == 'internalmedia') $this->_recordMediaUsage($name['src']);
}
}
/**
* keep track of internal links in $this->meta['relation']['references']
+ *
+ * @param string $id page ID to link to. eg. 'wiki:syntax'
+ * @param string|array $name name for the link, array for media file
*/
- function internallink($id, $name = null){
+ function internallink($id, $name = null) {
global $ID;
if(is_array($name)) {
$this->_firstimage($name['src']);
- if ($name['type'] == 'internalmedia') $this->_recordMediaUsage($name['src']);
+ if($name['type'] == 'internalmedia') $this->_recordMediaUsage($name['src']);
}
$parts = explode('?', $id, 2);
- if (count($parts) === 2) {
+ if(count($parts) === 2) {
$id = $parts[0];
}
@@ -299,7 +441,7 @@ class Doku_Renderer_metadata extends Doku_Renderer {
// first resolve and clean up the $id
resolve_pageid(getNS($ID), $id, $exists);
- @list($page, $hash) = explode('#', $id, 2);
+ @list($page) = explode('#', $id, 2);
// set metadata
$this->meta['relation']['references'][$page] = $exists;
@@ -307,84 +449,141 @@ class Doku_Renderer_metadata extends Doku_Renderer {
// p_set_metadata($id, $data);
// add link title to summary
- if ($this->capture){
+ if($this->capture) {
$name = $this->_getLinkTitle($name, $default, $id);
$this->doc .= $name;
}
}
- function externallink($url, $name = null){
+ /**
+ * Render an external link
+ *
+ * @param string $url full URL with scheme
+ * @param string|array $name name for the link, array for media file
+ */
+ function externallink($url, $name = null) {
if(is_array($name)) {
$this->_firstimage($name['src']);
- if ($name['type'] == 'internalmedia') $this->_recordMediaUsage($name['src']);
+ if($name['type'] == 'internalmedia') $this->_recordMediaUsage($name['src']);
}
- if ($this->capture){
- $this->doc .= $this->_getLinkTitle($name, '<' . $url . '>');
+ if($this->capture) {
+ $this->doc .= $this->_getLinkTitle($name, '<'.$url.'>');
}
}
- function interwikilink($match, $name = null, $wikiName, $wikiUri){
+ /**
+ * Render an interwiki link
+ *
+ * You may want to use $this->_resolveInterWiki() here
+ *
+ * @param string $match original link - probably not much use
+ * @param string|array $name name for the link, array for media file
+ * @param string $wikiName indentifier (shortcut) for the remote wiki
+ * @param string $wikiUri the fragment parsed from the original link
+ */
+ function interwikilink($match, $name = null, $wikiName, $wikiUri) {
if(is_array($name)) {
$this->_firstimage($name['src']);
- if ($name['type'] == 'internalmedia') $this->_recordMediaUsage($name['src']);
+ if($name['type'] == 'internalmedia') $this->_recordMediaUsage($name['src']);
}
- if ($this->capture){
- list($wikiUri, $hash) = explode('#', $wikiUri, 2);
+ if($this->capture) {
+ list($wikiUri) = explode('#', $wikiUri, 2);
$name = $this->_getLinkTitle($name, $wikiUri);
$this->doc .= $name;
}
}
- function windowssharelink($url, $name = null){
+ /**
+ * Link to windows share
+ *
+ * @param string $url the link
+ * @param string|array $name name for the link, array for media file
+ */
+ function windowssharelink($url, $name = null) {
if(is_array($name)) {
$this->_firstimage($name['src']);
- if ($name['type'] == 'internalmedia') $this->_recordMediaUsage($name['src']);
+ if($name['type'] == 'internalmedia') $this->_recordMediaUsage($name['src']);
}
- if ($this->capture){
- if ($name) $this->doc .= $name;
+ if($this->capture) {
+ if($name) $this->doc .= $name;
else $this->doc .= '<'.$url.'>';
}
}
- function emaillink($address, $name = null){
+ /**
+ * Render a linked E-Mail Address
+ *
+ * Should honor $conf['mailguard'] setting
+ *
+ * @param string $address Email-Address
+ * @param string|array $name name for the link, array for media file
+ */
+ function emaillink($address, $name = null) {
if(is_array($name)) {
$this->_firstimage($name['src']);
- if ($name['type'] == 'internalmedia') $this->_recordMediaUsage($name['src']);
+ if($name['type'] == 'internalmedia') $this->_recordMediaUsage($name['src']);
}
- if ($this->capture){
- if ($name) $this->doc .= $name;
+ if($this->capture) {
+ if($name) $this->doc .= $name;
else $this->doc .= '<'.$address.'>';
}
}
- function internalmedia($src, $title=null, $align=null, $width=null,
- $height=null, $cache=null, $linking=null){
- if ($this->capture && $title) $this->doc .= '['.$title.']';
+ /**
+ * Render an internal media file
+ *
+ * @param string $src media ID
+ * @param string $title descriptive text
+ * @param string $align left|center|right
+ * @param int $width width of media in pixel
+ * @param int $height height of media in pixel
+ * @param string $cache cache|recache|nocache
+ * @param string $linking linkonly|detail|nolink
+ */
+ function internalmedia($src, $title = null, $align = null, $width = null,
+ $height = null, $cache = null, $linking = null) {
+ if($this->capture && $title) $this->doc .= '['.$title.']';
$this->_firstimage($src);
$this->_recordMediaUsage($src);
}
- function externalmedia($src, $title=null, $align=null, $width=null,
- $height=null, $cache=null, $linking=null){
- if ($this->capture && $title) $this->doc .= '['.$title.']';
+ /**
+ * Render an external media file
+ *
+ * @param string $src full media URL
+ * @param string $title descriptive text
+ * @param string $align left|center|right
+ * @param int $width width of media in pixel
+ * @param int $height height of media in pixel
+ * @param string $cache cache|recache|nocache
+ * @param string $linking linkonly|detail|nolink
+ */
+ function externalmedia($src, $title = null, $align = null, $width = null,
+ $height = null, $cache = null, $linking = null) {
+ if($this->capture && $title) $this->doc .= '['.$title.']';
$this->_firstimage($src);
}
- function rss($url,$params) {
+ /**
+ * Render the output of an RSS feed
+ *
+ * @param string $url URL of the feed
+ * @param array $params Finetuning of the output
+ */
+ function rss($url, $params) {
$this->meta['relation']['haspart'][$url] = true;
$this->meta['date']['valid']['age'] =
- isset($this->meta['date']['valid']['age']) ?
- min($this->meta['date']['valid']['age'],$params['refresh']) :
- $params['refresh'];
+ isset($this->meta['date']['valid']['age']) ?
+ min($this->meta['date']['valid']['age'], $params['refresh']) :
+ $params['refresh'];
}
- //----------------------------------------------------------
- // Utils
+ #region Utils
/**
* Removes any Namespace from the given name but keeps
@@ -392,35 +591,36 @@ class Doku_Renderer_metadata extends Doku_Renderer {
*
* @author Andreas Gohr <andi@splitbrain.org>
*/
- function _simpleTitle($name){
+ function _simpleTitle($name) {
global $conf;
if(is_array($name)) return '';
- if($conf['useslash']){
+ if($conf['useslash']) {
$nssep = '[:;/]';
- }else{
+ } else {
$nssep = '[:;]';
}
- $name = preg_replace('!.*'.$nssep.'!','',$name);
+ $name = preg_replace('!.*'.$nssep.'!', '', $name);
//if there is a hash we use the anchor name only
- $name = preg_replace('!.*#!','',$name);
+ $name = preg_replace('!.*#!', '', $name);
return $name;
}
/**
* Creates a linkid from a headline
*
+ * @author Andreas Gohr <andi@splitbrain.org>
* @param string $title The headline title
* @param boolean $create Create a new unique ID?
- * @author Andreas Gohr <andi@splitbrain.org>
+ * @return string
*/
- function _headerToLink($title, $create=false) {
- if($create){
- return sectionID($title,$this->headers);
- }else{
+ function _headerToLink($title, $create = false) {
+ if($create) {
+ return sectionID($title, $this->headers);
+ } else {
$check = false;
- return sectionID($title,$check);
+ return sectionID($title, $check);
}
}
@@ -428,17 +628,22 @@ class Doku_Renderer_metadata extends Doku_Renderer {
* Construct a title and handle images in titles
*
* @author Harry Fuecks <hfuecks@gmail.com>
+ * @param string|array $title either string title or media array
+ * @param string $default default title if nothing else is found
+ * @param null|string $id linked page id (used to extract title from first heading)
+ * @return string title text
*/
- function _getLinkTitle($title, $default, $id=null) {
- global $conf;
-
- $isImage = false;
- if (is_array($title)){
- if($title['title']) return '['.$title['title'].']';
- } else if (is_null($title) || trim($title)==''){
- if (useHeading('content') && $id){
- $heading = p_get_first_heading($id,METADATA_DONT_RENDER);
- if ($heading) return $heading;
+ function _getLinkTitle($title, $default, $id = null) {
+ if(is_array($title)) {
+ if($title['title']) {
+ return '['.$title['title'].']';
+ } else {
+ return $default;
+ }
+ } else if(is_null($title) || trim($title) == '') {
+ if(useHeading('content') && $id) {
+ $heading = p_get_first_heading($id, METADATA_DONT_RENDER);
+ if($heading) return $heading;
}
return $default;
} else {
@@ -446,27 +651,39 @@ class Doku_Renderer_metadata extends Doku_Renderer {
}
}
- function _firstimage($src){
+ /**
+ * Remember first image
+ *
+ * @param string $src image URL or ID
+ */
+ function _firstimage($src) {
if($this->firstimage) return;
global $ID;
- list($src,$hash) = explode('#',$src,2);
- if(!media_isexternal($src)){
- resolve_mediaid(getNS($ID),$src, $exists);
+ list($src) = explode('#', $src, 2);
+ if(!media_isexternal($src)) {
+ resolve_mediaid(getNS($ID), $src, $exists);
}
- if(preg_match('/.(jpe?g|gif|png)$/i',$src)){
+ if(preg_match('/.(jpe?g|gif|png)$/i', $src)) {
$this->firstimage = $src;
}
}
+ /**
+ * Store list of used media files in metadata
+ *
+ * @param string $src media ID
+ */
function _recordMediaUsage($src) {
global $ID;
- list ($src, $hash) = explode('#', $src, 2);
- if (media_isexternal($src)) return;
+ list ($src) = explode('#', $src, 2);
+ if(media_isexternal($src)) return;
resolve_mediaid(getNS($ID), $src, $exists);
$this->meta['relation']['media'][$src] = $exists;
}
+
+ #endregion
}
//Setup VIM: ex: et ts=4 :
diff --git a/inc/parser/parser.php b/inc/parser/parser.php
index 252bd9170..df01f3302 100644
--- a/inc/parser/parser.php
+++ b/inc/parser/parser.php
@@ -200,6 +200,11 @@ class Doku_Parser_Mode_Plugin extends DokuWiki_Plugin implements Doku_Parser_Mod
var $Lexer;
var $allowedModes = array();
+ /**
+ * Sort for applying this mode
+ *
+ * @return int
+ */
function getSort() {
trigger_error('getSort() not implemented in '.get_class($this), E_USER_WARNING);
}
diff --git a/inc/parser/renderer.php b/inc/parser/renderer.php
index e92b81bd7..09294539e 100644
--- a/inc/parser/renderer.php
+++ b/inc/parser/renderer.php
@@ -11,263 +11,748 @@ if(!defined('DOKU_INC')) die('meh.');
* An empty renderer, produces no output
*
* Inherits from DokuWiki_Plugin for giving additional functions to render plugins
+ *
+ * The renderer transforms the syntax instructions created by the parser and handler into the
+ * desired output format. For each instruction a corresponding method defined in this class will
+ * be called. That method needs to produce the desired output for the instruction and add it to the
+ * $doc field. When all instructions are processed, the $doc field contents will be cached by
+ * DokuWiki and sent to the user.
*/
class Doku_Renderer extends DokuWiki_Plugin {
- var $info = array(
+ /** @var array Settings, control the behavior of the renderer */
+ public $info = array(
'cache' => true, // may the rendered result cached?
'toc' => true, // render the TOC?
);
- var $doc = '';
+ /** @var array contains the smiley configuration, set in p_render() */
+ public $smileys = array();
+ /** @var array contains the entity configuration, set in p_render() */
+ public $entities = array();
+ /** @var array contains the acronym configuration, set in p_render() */
+ public $acronyms = array();
+ /** @var array contains the interwiki configuration, set in p_render() */
+ public $interwiki = array();
- // keep some config options
- var $acronyms = array();
- var $smileys = array();
- var $badwords = array();
- var $entities = array();
- var $interwiki = array();
+ /**
+ * @var string the rendered document, this will be cached after the renderer ran through
+ */
+ public $doc = '';
- // allows renderer to be used again, clean out any per-use values
+ /**
+ * clean out any per-use values
+ *
+ * This is called before each use of the renderer object and should be used to
+ * completely reset the state of the renderer to be reused for a new document
+ */
function reset() {
}
- function nocache() {
- $this->info['cache'] = false;
- }
-
- function notoc() {
- $this->info['toc'] = false;
+ /**
+ * Allow the plugin to prevent DokuWiki from reusing an instance
+ *
+ * Since most renderer plugins fail to implement Doku_Renderer::reset() we default
+ * to reinstantiating the renderer here
+ *
+ * @return bool false if the plugin has to be instantiated
+ */
+ function isSingleton() {
+ return false;
}
/**
* Returns the format produced by this renderer.
*
- * Has to be overidden by decendend classes
+ * Has to be overidden by sub classes
+ *
+ * @return string
*/
- function getFormat(){
+ function getFormat() {
trigger_error('getFormat() not implemented in '.get_class($this), E_USER_WARNING);
+ return '';
}
/**
- * Allow the plugin to prevent DokuWiki from reusing an instance
+ * Disable caching of this renderer's output
+ */
+ function nocache() {
+ $this->info['cache'] = false;
+ }
+
+ /**
+ * Disable TOC generation for this renderer's output
*
- * @return bool false if the plugin has to be instantiated
+ * This might not be used for certain sub renderer
*/
- function isSingleton() {
- return false;
+ function notoc() {
+ $this->info['toc'] = false;
}
/**
- * handle plugin rendering
+ * Handle plugin rendering
+ *
+ * Most likely this needs NOT to be overwritten by sub classes
*
- * @param string $name Plugin name
- * @param mixed $data custom data set by handler
+ * @param string $name Plugin name
+ * @param mixed $data custom data set by handler
* @param string $state matched state if any
* @param string $match raw matched syntax
*/
- function plugin($name,$data,$state='',$match=''){
- $plugin = plugin_load('syntax',$name);
- if($plugin != null){
- $plugin->render($this->getFormat(),$this,$data);
+ function plugin($name, $data, $state = '', $match = '') {
+ /** @var DokuWiki_Syntax_Plugin $plugin */
+ $plugin = plugin_load('syntax', $name);
+ if($plugin != null) {
+ $plugin->render($this->getFormat(), $this, $data);
}
}
/**
* handle nested render instructions
* this method (and nest_close method) should not be overloaded in actual renderer output classes
+ *
+ * @param array $instructions
*/
function nest($instructions) {
-
- foreach ( $instructions as $instruction ) {
+ foreach($instructions as $instruction) {
// execute the callback against ourself
- if (method_exists($this,$instruction[0])) {
+ if(method_exists($this, $instruction[0])) {
call_user_func_array(array($this, $instruction[0]), $instruction[1] ? $instruction[1] : array());
}
}
}
- // dummy closing instruction issued by Doku_Handler_Nest, normally the syntax mode should
- // override this instruction when instantiating Doku_Handler_Nest - however plugins will not
- // be able to - as their instructions require data.
- function nest_close() {}
-
- function document_start() {}
+ /**
+ * dummy closing instruction issued by Doku_Handler_Nest
+ *
+ * normally the syntax mode should override this instruction when instantiating Doku_Handler_Nest -
+ * however plugins will not be able to - as their instructions require data.
+ */
+ function nest_close() {
+ }
- function document_end() {}
+ #region Syntax modes - sub classes will need to implement them to fill $doc
- function render_TOC() { return ''; }
+ /**
+ * Initialize the document
+ */
+ function document_start() {
+ }
- function toc_additem($id, $text, $level) {}
+ /**
+ * Finalize the document
+ */
+ function document_end() {
+ }
- function header($text, $level, $pos) {}
+ /**
+ * Render the Table of Contents
+ *
+ * @return string
+ */
+ function render_TOC() {
+ return '';
+ }
- function section_open($level) {}
+ /**
+ * Add an item to the TOC
+ *
+ * @param string $id the hash link
+ * @param string $text the text to display
+ * @param int $level the nesting level
+ */
+ function toc_additem($id, $text, $level) {
+ }
- function section_close() {}
+ /**
+ * Render a heading
+ *
+ * @param string $text the text to display
+ * @param int $level header level
+ * @param int $pos byte position in the original source
+ */
+ function header($text, $level, $pos) {
+ }
- function cdata($text) {}
+ /**
+ * Open a new section
+ *
+ * @param int $level section level (as determined by the previous header)
+ */
+ function section_open($level) {
+ }
- function p_open() {}
+ /**
+ * Close the current section
+ */
+ function section_close() {
+ }
- function p_close() {}
+ /**
+ * Render plain text data
+ *
+ * @param $text
+ */
+ function cdata($text) {
+ }
- function linebreak() {}
+ /**
+ * Open a paragraph
+ */
+ function p_open() {
+ }
- function hr() {}
+ /**
+ * Close a paragraph
+ */
+ function p_close() {
+ }
- function strong_open() {}
+ /**
+ * Create a line break
+ */
+ function linebreak() {
+ }
- function strong_close() {}
+ /**
+ * Create a horizontal line
+ */
+ function hr() {
+ }
- function emphasis_open() {}
+ /**
+ * Start strong (bold) formatting
+ */
+ function strong_open() {
+ }
- function emphasis_close() {}
+ /**
+ * Stop strong (bold) formatting
+ */
+ function strong_close() {
+ }
- function underline_open() {}
+ /**
+ * Start emphasis (italics) formatting
+ */
+ function emphasis_open() {
+ }
- function underline_close() {}
+ /**
+ * Stop emphasis (italics) formatting
+ */
+ function emphasis_close() {
+ }
- function monospace_open() {}
+ /**
+ * Start underline formatting
+ */
+ function underline_open() {
+ }
- function monospace_close() {}
+ /**
+ * Stop underline formatting
+ */
+ function underline_close() {
+ }
- function subscript_open() {}
+ /**
+ * Start monospace formatting
+ */
+ function monospace_open() {
+ }
- function subscript_close() {}
+ /**
+ * Stop monospace formatting
+ */
+ function monospace_close() {
+ }
- function superscript_open() {}
+ /**
+ * Start a subscript
+ */
+ function subscript_open() {
+ }
- function superscript_close() {}
+ /**
+ * Stop a subscript
+ */
+ function subscript_close() {
+ }
- function deleted_open() {}
+ /**
+ * Start a superscript
+ */
+ function superscript_open() {
+ }
- function deleted_close() {}
+ /**
+ * Stop a superscript
+ */
+ function superscript_close() {
+ }
- function footnote_open() {}
+ /**
+ * Start deleted (strike-through) formatting
+ */
+ function deleted_open() {
+ }
- function footnote_close() {}
+ /**
+ * Stop deleted (strike-through) formatting
+ */
+ function deleted_close() {
+ }
- function listu_open() {}
+ /**
+ * Start a footnote
+ */
+ function footnote_open() {
+ }
- function listu_close() {}
+ /**
+ * Stop a footnote
+ */
+ function footnote_close() {
+ }
- function listo_open() {}
+ /**
+ * Open an unordered list
+ */
+ function listu_open() {
+ }
- function listo_close() {}
+ /**
+ * Close an unordered list
+ */
+ function listu_close() {
+ }
- function listitem_open($level) {}
+ /**
+ * Open an ordered list
+ */
+ function listo_open() {
+ }
- function listitem_close() {}
+ /**
+ * Close an ordered list
+ */
+ function listo_close() {
+ }
- function listcontent_open() {}
+ /**
+ * Open a list item
+ *
+ * @param int $level the nesting level
+ */
+ function listitem_open($level) {
+ }
- function listcontent_close() {}
+ /**
+ * Close a list item
+ */
+ function listitem_close() {
+ }
- function unformatted($text) {}
+ /**
+ * Start the content of a list item
+ */
+ function listcontent_open() {
+ }
- function php($text) {}
+ /**
+ * Stop the content of a list item
+ */
+ function listcontent_close() {
+ }
- function phpblock($text) {}
+ /**
+ * Output unformatted $text
+ *
+ * Defaults to $this->cdata()
+ *
+ * @param string $text
+ */
+ function unformatted($text) {
+ $this->cdata($text);
+ }
- function html($text) {}
+ /**
+ * Output inline PHP code
+ *
+ * If $conf['phpok'] is true this should evaluate the given code and append the result
+ * to $doc
+ *
+ * @param string $text The PHP code
+ */
+ function php($text) {
+ }
- function htmlblock($text) {}
+ /**
+ * Output block level PHP code
+ *
+ * If $conf['phpok'] is true this should evaluate the given code and append the result
+ * to $doc
+ *
+ * @param string $text The PHP code
+ */
+ function phpblock($text) {
+ }
- function preformatted($text) {}
+ /**
+ * Output raw inline HTML
+ *
+ * If $conf['htmlok'] is true this should add the code as is to $doc
+ *
+ * @param string $text The HTML
+ */
+ function html($text) {
+ }
- function quote_open() {}
+ /**
+ * Output raw block-level HTML
+ *
+ * If $conf['htmlok'] is true this should add the code as is to $doc
+ *
+ * @param string $text The HTML
+ */
+ function htmlblock($text) {
+ }
- function quote_close() {}
+ /**
+ * Output preformatted text
+ *
+ * @param string $text
+ */
+ function preformatted($text) {
+ }
- function file($text, $lang = null, $file = null ) {}
+ /**
+ * Start a block quote
+ */
+ function quote_open() {
+ }
- function code($text, $lang = null, $file = null ) {}
+ /**
+ * Stop a block quote
+ */
+ function quote_close() {
+ }
- function acronym($acronym) {}
+ /**
+ * Display text as file content, optionally syntax highlighted
+ *
+ * @param string $text text to show
+ * @param string $lang programming language to use for syntax highlighting
+ * @param string $file file path label
+ */
+ function file($text, $lang = null, $file = null) {
+ }
- function smiley($smiley) {}
+ /**
+ * Display text as code content, optionally syntax highlighted
+ *
+ * @param string $text text to show
+ * @param string $lang programming language to use for syntax highlighting
+ * @param string $file file path label
+ */
+ function code($text, $lang = null, $file = null) {
+ }
- function wordblock($word) {}
+ /**
+ * Format an acronym
+ *
+ * Uses $this->acronyms
+ *
+ * @param string $acronym
+ */
+ function acronym($acronym) {
+ }
- function entity($entity) {}
+ /**
+ * Format a smiley
+ *
+ * Uses $this->smiley
+ *
+ * @param string $smiley
+ */
+ function smiley($smiley) {
+ }
- // 640x480 ($x=640, $y=480)
- function multiplyentity($x, $y) {}
+ /**
+ * Format an entity
+ *
+ * Entities are basically small text replacements
+ *
+ * Uses $this->entities
+ *
+ * @param string $entity
+ */
+ function entity($entity) {
+ }
- function singlequoteopening() {}
+ /**
+ * Typographically format a multiply sign
+ *
+ * Example: ($x=640, $y=480) should result in "640×480"
+ *
+ * @param string|int $x first value
+ * @param string|int $y second value
+ */
+ function multiplyentity($x, $y) {
+ }
- function singlequoteclosing() {}
+ /**
+ * Render an opening single quote char (language specific)
+ */
+ function singlequoteopening() {
+ }
- function apostrophe() {}
+ /**
+ * Render a closing single quote char (language specific)
+ */
+ function singlequoteclosing() {
+ }
- function doublequoteopening() {}
+ /**
+ * Render an apostrophe char (language specific)
+ */
+ function apostrophe() {
+ }
- function doublequoteclosing() {}
+ /**
+ * Render an opening double quote char (language specific)
+ */
+ function doublequoteopening() {
+ }
- // $link like 'SomePage'
- function camelcaselink($link) {}
+ /**
+ * Render an closinging double quote char (language specific)
+ */
+ function doublequoteclosing() {
+ }
- function locallink($hash, $name = null) {}
+ /**
+ * Render a CamelCase link
+ *
+ * @param string $link The link name
+ * @see http://en.wikipedia.org/wiki/CamelCase
+ */
+ function camelcaselink($link) {
+ }
- // $link like 'wiki:syntax', $title could be an array (media)
- function internallink($link, $title = null) {}
+ /**
+ * Render a page local link
+ *
+ * @param string $hash hash link identifier
+ * @param string $name name for the link
+ */
+ function locallink($hash, $name = null) {
+ }
- // $link is full URL with scheme, $title could be an array (media)
- function externallink($link, $title = null) {}
+ /**
+ * Render a wiki internal link
+ *
+ * @param string $link page ID to link to. eg. 'wiki:syntax'
+ * @param string|array $title name for the link, array for media file
+ */
+ function internallink($link, $title = null) {
+ }
- function rss ($url,$params) {}
+ /**
+ * Render an external link
+ *
+ * @param string $link full URL with scheme
+ * @param string|array $title name for the link, array for media file
+ */
+ function externallink($link, $title = null) {
+ }
- // $link is the original link - probably not much use
- // $wikiName is an indentifier for the wiki
- // $wikiUri is the URL fragment to append to some known URL
- function interwikilink($link, $title = null, $wikiName, $wikiUri) {}
+ /**
+ * Render the output of an RSS feed
+ *
+ * @param string $url URL of the feed
+ * @param array $params Finetuning of the output
+ */
+ function rss($url, $params) {
+ }
- // Link to file on users OS, $title could be an array (media)
- function filelink($link, $title = null) {}
+ /**
+ * Render an interwiki link
+ *
+ * You may want to use $this->_resolveInterWiki() here
+ *
+ * @param string $link original link - probably not much use
+ * @param string|array $title name for the link, array for media file
+ * @param string $wikiName indentifier (shortcut) for the remote wiki
+ * @param string $wikiUri the fragment parsed from the original link
+ */
+ function interwikilink($link, $title = null, $wikiName, $wikiUri) {
+ }
- // Link to a Windows share, , $title could be an array (media)
- function windowssharelink($link, $title = null) {}
+ /**
+ * Link to file on users OS
+ *
+ * @param string $link the link
+ * @param string|array $title name for the link, array for media file
+ */
+ function filelink($link, $title = null) {
+ }
-// function email($address, $title = null) {}
- function emaillink($address, $name = null) {}
+ /**
+ * Link to windows share
+ *
+ * @param string $link the link
+ * @param string|array $title name for the link, array for media file
+ */
+ function windowssharelink($link, $title = null) {
+ }
- function internalmedia ($src, $title=null, $align=null, $width=null,
- $height=null, $cache=null, $linking=null) {}
+ /**
+ * Render a linked E-Mail Address
+ *
+ * Should honor $conf['mailguard'] setting
+ *
+ * @param string $address Email-Address
+ * @param string|array $name name for the link, array for media file
+ */
+ function emaillink($address, $name = null) {
+ }
- function externalmedia ($src, $title=null, $align=null, $width=null,
- $height=null, $cache=null, $linking=null) {}
+ /**
+ * Render an internal media file
+ *
+ * @param string $src media ID
+ * @param string $title descriptive text
+ * @param string $align left|center|right
+ * @param int $width width of media in pixel
+ * @param int $height height of media in pixel
+ * @param string $cache cache|recache|nocache
+ * @param string $linking linkonly|detail|nolink
+ */
+ function internalmedia($src, $title = null, $align = null, $width = null,
+ $height = null, $cache = null, $linking = null) {
+ }
- function internalmedialink (
- $src,$title=null,$align=null,$width=null,$height=null,$cache=null
- ) {}
+ /**
+ * Render an external media file
+ *
+ * @param string $src full media URL
+ * @param string $title descriptive text
+ * @param string $align left|center|right
+ * @param int $width width of media in pixel
+ * @param int $height height of media in pixel
+ * @param string $cache cache|recache|nocache
+ * @param string $linking linkonly|detail|nolink
+ */
+ function externalmedia($src, $title = null, $align = null, $width = null,
+ $height = null, $cache = null, $linking = null) {
+ }
- function externalmedialink(
- $src,$title=null,$align=null,$width=null,$height=null,$cache=null
- ) {}
+ /**
+ * Render a link to an internal media file
+ *
+ * @param string $src media ID
+ * @param string $title descriptive text
+ * @param string $align left|center|right
+ * @param int $width width of media in pixel
+ * @param int $height height of media in pixel
+ * @param string $cache cache|recache|nocache
+ */
+ function internalmedialink($src, $title = null, $align = null,
+ $width = null, $height = null, $cache = null) {
+ }
- function table_open($maxcols = null, $numrows = null, $pos = null){}
+ /**
+ * Render a link to an external media file
+ *
+ * @param string $src media ID
+ * @param string $title descriptive text
+ * @param string $align left|center|right
+ * @param int $width width of media in pixel
+ * @param int $height height of media in pixel
+ * @param string $cache cache|recache|nocache
+ */
+ function externalmedialink($src, $title = null, $align = null,
+ $width = null, $height = null, $cache = null) {
+ }
- function table_close($pos = null){}
+ /**
+ * Start a table
+ *
+ * @param int $maxcols maximum number of columns
+ * @param int $numrows NOT IMPLEMENTED
+ * @param int $pos byte position in the original source
+ */
+ function table_open($maxcols = null, $numrows = null, $pos = null) {
+ }
- function tablethead_open(){}
+ /**
+ * Close a table
+ *
+ * @param int $pos byte position in the original source
+ */
+ function table_close($pos = null) {
+ }
- function tablethead_close(){}
+ /**
+ * Open a table header
+ */
+ function tablethead_open() {
+ }
- function tablerow_open(){}
+ /**
+ * Close a table header
+ */
+ function tablethead_close() {
+ }
- function tablerow_close(){}
+ /**
+ * Open a table row
+ */
+ function tablerow_open() {
+ }
- function tableheader_open($colspan = 1, $align = null, $rowspan = 1){}
+ /**
+ * Close a table row
+ */
+ function tablerow_close() {
+ }
- function tableheader_close(){}
+ /**
+ * Open a table header cell
+ *
+ * @param int $colspan
+ * @param string $align left|center|right
+ * @param int $rowspan
+ */
+ function tableheader_open($colspan = 1, $align = null, $rowspan = 1) {
+ }
- function tablecell_open($colspan = 1, $align = null, $rowspan = 1){}
+ /**
+ * Close a table header cell
+ */
+ function tableheader_close() {
+ }
- function tablecell_close(){}
+ /**
+ * Open a table cell
+ *
+ * @param int $colspan
+ * @param string $align left|center|right
+ * @param int $rowspan
+ */
+ function tablecell_open($colspan = 1, $align = null, $rowspan = 1) {
+ }
+ /**
+ * Close a table cell
+ */
+ function tablecell_close() {
+ }
- // util functions follow, you probably won't need to reimplement them
+ #endregion
+ #region util functions, you probably won't need to reimplement them
/**
* Removes any Namespace from the given name but keeps
@@ -294,13 +779,13 @@ class Doku_Renderer extends DokuWiki_Plugin {
/**
* Resolve an interwikilink
*/
- function _resolveInterWiki(&$shortcut, $reference, &$exists=null) {
+ function _resolveInterWiki(&$shortcut, $reference, &$exists = null) {
//get interwiki URL
if(isset($this->interwiki[$shortcut])) {
$url = $this->interwiki[$shortcut];
} else {
// Default to Google I'm feeling lucky
- $url = 'http://www.google.com/search?q={URL}&amp;btnI=lucky';
+ $url = 'http://www.google.com/search?q={URL}&amp;btnI=lucky';
$shortcut = 'go';
}
@@ -310,8 +795,8 @@ class Doku_Renderer extends DokuWiki_Plugin {
//replace placeholder
if(preg_match('#\{(URL|NAME|SCHEME|HOST|PORT|PATH|QUERY)\}#', $url)) {
//use placeholders
- $url = str_replace('{URL}', rawurlencode($reference), $url);
- $url = str_replace('{NAME}', $reference, $url);
+ $url = str_replace('{URL}', rawurlencode($reference), $url);
+ $url = str_replace('{NAME}', $reference, $url);
$parsed = parse_url($reference);
if(!$parsed['port']) $parsed['port'] = 80;
$url = str_replace('{SCHEME}', $parsed['scheme'], $url);
@@ -321,18 +806,20 @@ class Doku_Renderer extends DokuWiki_Plugin {
$url = str_replace('{QUERY}', $parsed['query'], $url);
} else {
//default
- $url = $url . rawurlencode($reference);
+ $url = $url.rawurlencode($reference);
}
//handle as wiki links
if($url{0} === ':') {
list($id, $urlparam) = explode('?', $url, 2);
- $url = wl(cleanID($id), $urlparam);
+ $url = wl(cleanID($id), $urlparam);
$exists = page_exists($id);
}
- if($hash) $url .= '#' . rawurlencode($hash);
+ if($hash) $url .= '#'.rawurlencode($hash);
return $url;
}
+
+ #endregion
}
diff --git a/inc/parser/xhtml.php b/inc/parser/xhtml.php
index cf36a8175..5c0353688 100644
--- a/inc/parser/xhtml.php
+++ b/inc/parser/xhtml.php
@@ -7,37 +7,53 @@
*/
if(!defined('DOKU_INC')) die('meh.');
-if ( !defined('DOKU_LF') ) {
+if(!defined('DOKU_LF')) {
// Some whitespace to help View > Source
- define ('DOKU_LF',"\n");
+ define ('DOKU_LF', "\n");
}
-if ( !defined('DOKU_TAB') ) {
+if(!defined('DOKU_TAB')) {
// Some whitespace to help View > Source
- define ('DOKU_TAB',"\t");
+ define ('DOKU_TAB', "\t");
}
/**
- * The Renderer
+ * The XHTML Renderer
+ *
+ * This is DokuWiki's main renderer used to display page content in the wiki
*/
class Doku_Renderer_xhtml extends Doku_Renderer {
+ /** @var array store the table of contents */
+ public $toc = array();
+
+ /** @var array A stack of section edit data */
+ protected $sectionedits = array();
- // @access public
- var $doc = ''; // will contain the whole document
- var $toc = array(); // will contain the Table of Contents
+ /** @var int last section edit id, used by startSectionEdit */
+ protected $lastsecid = 0;
- var $sectionedits = array(); // A stack of section edit data
- private $lastsecid = 0; // last section edit id, used by startSectionEdit
+ /** @var array the list of headers used to create unique link ids */
+ protected $headers = array();
- var $headers = array();
/** @var array a list of footnotes, list starts at 1! */
- var $footnotes = array();
- var $lastlevel = 0;
- var $node = array(0,0,0,0,0);
- var $store = '';
+ protected $footnotes = array();
+
+ /** @var int current section level */
+ protected $lastlevel = 0;
+ /** @var array section node tracker */
+ protected $node = array(0, 0, 0, 0, 0);
+
+ /** @var string temporary $doc store */
+ protected $store = '';
- var $_counter = array(); // used as global counter, introduced for table classes
- var $_codeblock = 0; // counts the code and file blocks, used to provide download links
+ /** @var array global counter, for table classes etc. */
+ protected $_counter = array(); //
+
+ /** @var int counts the code and file blocks, used to provide download links */
+ protected $_codeblock = 0;
+
+ /** @var array list of allowed URL schemes */
+ protected $schemes = null;
/**
* Register a new edit section range
@@ -50,43 +66,53 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
*/
public function startSectionEdit($start, $type, $title = null) {
$this->sectionedits[] = array(++$this->lastsecid, $start, $type, $title);
- return 'sectionedit' . $this->lastsecid;
+ return 'sectionedit'.$this->lastsecid;
}
/**
* Finish an edit section range
*
- * @param $end int The byte position for the edit end; null for the rest of
+ * @param $end int The byte position for the edit end; null for the rest of
* the page
* @author Adrian Lang <lang@cosmocode.de>
*/
public function finishSectionEdit($end = null) {
list($id, $start, $type, $title) = array_pop($this->sectionedits);
- if (!is_null($end) && $end <= $start) {
+ if(!is_null($end) && $end <= $start) {
return;
}
- $this->doc .= "<!-- EDIT$id " . strtoupper($type) . ' ';
- if (!is_null($title)) {
- $this->doc .= '"' . str_replace('"', '', $title) . '" ';
+ $this->doc .= "<!-- EDIT$id ".strtoupper($type).' ';
+ if(!is_null($title)) {
+ $this->doc .= '"'.str_replace('"', '', $title).'" ';
}
- $this->doc .= "[$start-" . (is_null($end) ? '' : $end) . '] -->';
+ $this->doc .= "[$start-".(is_null($end) ? '' : $end).'] -->';
}
- function getFormat(){
+ /**
+ * Returns the format produced by this renderer.
+ *
+ * @return string always 'xhtml'
+ */
+ function getFormat() {
return 'xhtml';
}
-
+ /**
+ * Initialize the document
+ */
function document_start() {
//reset some internals
$this->toc = array();
$this->headers = array();
}
+ /**
+ * Finalize the document
+ */
function document_end() {
// Finish open section edits.
- while (count($this->sectionedits) > 0) {
- if ($this->sectionedits[count($this->sectionedits) - 1][1] <= 1) {
+ while(count($this->sectionedits) > 0) {
+ if($this->sectionedits[count($this->sectionedits) - 1][1] <= 1) {
// If there is only one section, do not write a section edit
// marker.
array_pop($this->sectionedits);
@@ -95,12 +121,12 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
}
}
- if ( count ($this->footnotes) > 0 ) {
+ if(count($this->footnotes) > 0) {
$this->doc .= '<div class="footnotes">'.DOKU_LF;
- foreach ( $this->footnotes as $id => $footnote ) {
+ foreach($this->footnotes as $id => $footnote) {
// check its not a placeholder that indicates actual footnote text is elsewhere
- if (substr($footnote, 0, 5) != "@@FNT") {
+ if(substr($footnote, 0, 5) != "@@FNT") {
// open the footnote and set the anchor and backlink
$this->doc .= '<div class="fn">';
@@ -110,8 +136,8 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
// get any other footnotes that use the same markup
$alt = array_keys($this->footnotes, "@@FNT$id");
- if (count($alt)) {
- foreach ($alt as $ref) {
+ if(count($alt)) {
+ foreach($alt as $ref) {
// set anchor and backlink for the other footnotes
$this->doc .= ', <sup><a href="#fnt__'.($ref).'" id="fn__'.($ref).'" class="fn_bot">';
$this->doc .= ($ref).')</a></sup> '.DOKU_LF;
@@ -120,7 +146,7 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
// add footnote markup and close this footnote
$this->doc .= $footnote;
- $this->doc .= '</div>' . DOKU_LF;
+ $this->doc .= '</div>'.DOKU_LF;
}
}
$this->doc .= '</div>'.DOKU_LF;
@@ -128,139 +154,221 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
// Prepare the TOC
global $conf;
- if($this->info['toc'] && is_array($this->toc) && $conf['tocminheads'] && count($this->toc) >= $conf['tocminheads']){
+ if($this->info['toc'] && is_array($this->toc) && $conf['tocminheads'] && count($this->toc) >= $conf['tocminheads']) {
global $TOC;
$TOC = $this->toc;
}
// make sure there are no empty paragraphs
- $this->doc = preg_replace('#<p>\s*</p>#','',$this->doc);
+ $this->doc = preg_replace('#<p>\s*</p>#', '', $this->doc);
}
+ /**
+ * Add an item to the TOC
+ *
+ * @param string $id the hash link
+ * @param string $text the text to display
+ * @param int $level the nesting level
+ */
function toc_additem($id, $text, $level) {
global $conf;
//handle TOC
- if($level >= $conf['toptoclevel'] && $level <= $conf['maxtoclevel']){
- $this->toc[] = html_mktocitem($id, $text, $level-$conf['toptoclevel']+1);
+ if($level >= $conf['toptoclevel'] && $level <= $conf['maxtoclevel']) {
+ $this->toc[] = html_mktocitem($id, $text, $level - $conf['toptoclevel'] + 1);
}
}
+ /**
+ * Render a heading
+ *
+ * @param string $text the text to display
+ * @param int $level header level
+ * @param int $pos byte position in the original source
+ */
function header($text, $level, $pos) {
global $conf;
if(!$text) return; //skip empty headlines
- $hid = $this->_headerToLink($text,true);
+ $hid = $this->_headerToLink($text, true);
//only add items within configured levels
$this->toc_additem($hid, $text, $level);
// adjust $node to reflect hierarchy of levels
- $this->node[$level-1]++;
- if ($level < $this->lastlevel) {
- for ($i = 0; $i < $this->lastlevel-$level; $i++) {
- $this->node[$this->lastlevel-$i-1] = 0;
+ $this->node[$level - 1]++;
+ if($level < $this->lastlevel) {
+ for($i = 0; $i < $this->lastlevel - $level; $i++) {
+ $this->node[$this->lastlevel - $i - 1] = 0;
}
}
$this->lastlevel = $level;
- if ($level <= $conf['maxseclevel'] &&
+ if($level <= $conf['maxseclevel'] &&
count($this->sectionedits) > 0 &&
- $this->sectionedits[count($this->sectionedits) - 1][2] === 'section') {
+ $this->sectionedits[count($this->sectionedits) - 1][2] === 'section'
+ ) {
$this->finishSectionEdit($pos - 1);
}
// write the header
$this->doc .= DOKU_LF.'<h'.$level;
- if ($level <= $conf['maxseclevel']) {
- $this->doc .= ' class="' . $this->startSectionEdit($pos, 'section', $text) . '"';
+ if($level <= $conf['maxseclevel']) {
+ $this->doc .= ' class="'.$this->startSectionEdit($pos, 'section', $text).'"';
}
$this->doc .= ' id="'.$hid.'">';
$this->doc .= $this->_xmlEntities($text);
$this->doc .= "</h$level>".DOKU_LF;
}
+ /**
+ * Open a new section
+ *
+ * @param int $level section level (as determined by the previous header)
+ */
function section_open($level) {
- $this->doc .= '<div class="level' . $level . '">' . DOKU_LF;
+ $this->doc .= '<div class="level'.$level.'">'.DOKU_LF;
}
+ /**
+ * Close the current section
+ */
function section_close() {
$this->doc .= DOKU_LF.'</div>'.DOKU_LF;
}
+ /**
+ * Render plain text data
+ *
+ * @param $text
+ */
function cdata($text) {
$this->doc .= $this->_xmlEntities($text);
}
+ /**
+ * Open a paragraph
+ */
function p_open() {
$this->doc .= DOKU_LF.'<p>'.DOKU_LF;
}
+ /**
+ * Close a paragraph
+ */
function p_close() {
$this->doc .= DOKU_LF.'</p>'.DOKU_LF;
}
+ /**
+ * Create a line break
+ */
function linebreak() {
$this->doc .= '<br/>'.DOKU_LF;
}
+ /**
+ * Create a horizontal line
+ */
function hr() {
$this->doc .= '<hr />'.DOKU_LF;
}
+ /**
+ * Start strong (bold) formatting
+ */
function strong_open() {
$this->doc .= '<strong>';
}
+ /**
+ * Stop strong (bold) formatting
+ */
function strong_close() {
$this->doc .= '</strong>';
}
+ /**
+ * Start emphasis (italics) formatting
+ */
function emphasis_open() {
$this->doc .= '<em>';
}
+ /**
+ * Stop emphasis (italics) formatting
+ */
function emphasis_close() {
$this->doc .= '</em>';
}
+ /**
+ * Start underline formatting
+ */
function underline_open() {
$this->doc .= '<em class="u">';
}
+ /**
+ * Stop underline formatting
+ */
function underline_close() {
$this->doc .= '</em>';
}
+ /**
+ * Start monospace formatting
+ */
function monospace_open() {
$this->doc .= '<code>';
}
+ /**
+ * Stop monospace formatting
+ */
function monospace_close() {
$this->doc .= '</code>';
}
+ /**
+ * Start a subscript
+ */
function subscript_open() {
$this->doc .= '<sub>';
}
+ /**
+ * Stop a subscript
+ */
function subscript_close() {
$this->doc .= '</sub>';
}
+ /**
+ * Start a superscript
+ */
function superscript_open() {
$this->doc .= '<sup>';
}
+ /**
+ * Stop a superscript
+ */
function superscript_close() {
$this->doc .= '</sup>';
}
+ /**
+ * Start deleted (strike-through) formatting
+ */
function deleted_open() {
$this->doc .= '<del>';
}
+ /**
+ * Stop deleted (strike-through) formatting
+ */
function deleted_close() {
$this->doc .= '</del>';
}
@@ -296,14 +404,14 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
$fnid++;
// recover footnote into the stack and restore old content
- $footnote = $this->doc;
- $this->doc = $this->store;
+ $footnote = $this->doc;
+ $this->doc = $this->store;
$this->store = '';
// check to see if this footnote has been seen before
$i = array_search($footnote, $this->footnotes);
- if ($i === false) {
+ if($i === false) {
// its a new footnote, add it to the $footnotes array
$this->footnotes[$fnid] = $footnote;
} else {
@@ -315,38 +423,71 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
$this->doc .= '<sup><a href="#fn__'.$fnid.'" id="fnt__'.$fnid.'" class="fn_top">'.$fnid.')</a></sup>';
}
+ /**
+ * Open an unordered list
+ */
function listu_open() {
$this->doc .= '<ul>'.DOKU_LF;
}
+ /**
+ * Close an unordered list
+ */
function listu_close() {
$this->doc .= '</ul>'.DOKU_LF;
}
+ /**
+ * Open an ordered list
+ */
function listo_open() {
$this->doc .= '<ol>'.DOKU_LF;
}
+ /**
+ * Close an ordered list
+ */
function listo_close() {
$this->doc .= '</ol>'.DOKU_LF;
}
+ /**
+ * Open a list item
+ *
+ * @param int $level the nesting level
+ */
function listitem_open($level) {
$this->doc .= '<li class="level'.$level.'">';
}
+ /**
+ * Close a list item
+ */
function listitem_close() {
$this->doc .= '</li>'.DOKU_LF;
}
+ /**
+ * Start the content of a list item
+ */
function listcontent_open() {
$this->doc .= '<div class="li">';
}
+ /**
+ * Stop the content of a list item
+ */
function listcontent_close() {
$this->doc .= '</div>'.DOKU_LF;
}
+ /**
+ * Output unformatted $text
+ *
+ * Defaults to $this->cdata()
+ *
+ * @param string $text
+ */
function unformatted($text) {
$this->doc .= $this->_xmlEntities($text);
}
@@ -354,15 +495,15 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
/**
* Execute PHP code if allowed
*
- * @param string $text PHP code that is either executed or printed
- * @param string $wrapper html element to wrap result if $conf['phpok'] is okff
+ * @param string $text PHP code that is either executed or printed
+ * @param string $wrapper html element to wrap result if $conf['phpok'] is okff
*
* @author Andreas Gohr <andi@splitbrain.org>
*/
- function php($text, $wrapper='code') {
+ function php($text, $wrapper = 'code') {
global $conf;
- if($conf['phpok']){
+ if($conf['phpok']) {
ob_start();
eval($text);
$this->doc .= ob_get_contents();
@@ -372,6 +513,14 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
}
}
+ /**
+ * Output block level PHP code
+ *
+ * If $conf['phpok'] is true this should evaluate the given code and append the result
+ * to $doc
+ *
+ * @param string $text The PHP code
+ */
function phpblock($text) {
$this->php($text, 'pre');
}
@@ -379,75 +528,110 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
/**
* Insert HTML if allowed
*
- * @param string $text html text
- * @param string $wrapper html element to wrap result if $conf['htmlok'] is okff
+ * @param string $text html text
+ * @param string $wrapper html element to wrap result if $conf['htmlok'] is okff
*
* @author Andreas Gohr <andi@splitbrain.org>
*/
- function html($text, $wrapper='code') {
+ function html($text, $wrapper = 'code') {
global $conf;
- if($conf['htmlok']){
+ if($conf['htmlok']) {
$this->doc .= $text;
} else {
$this->doc .= p_xhtml_cached_geshi($text, 'html4strict', $wrapper);
}
}
+ /**
+ * Output raw block-level HTML
+ *
+ * If $conf['htmlok'] is true this should add the code as is to $doc
+ *
+ * @param string $text The HTML
+ */
function htmlblock($text) {
$this->html($text, 'pre');
}
+ /**
+ * Start a block quote
+ */
function quote_open() {
$this->doc .= '<blockquote><div class="no">'.DOKU_LF;
}
+ /**
+ * Stop a block quote
+ */
function quote_close() {
$this->doc .= '</div></blockquote>'.DOKU_LF;
}
+ /**
+ * Output preformatted text
+ *
+ * @param string $text
+ */
function preformatted($text) {
- $this->doc .= '<pre class="code">' . trim($this->_xmlEntities($text),"\n\r") . '</pre>'. DOKU_LF;
+ $this->doc .= '<pre class="code">'.trim($this->_xmlEntities($text), "\n\r").'</pre>'.DOKU_LF;
}
- function file($text, $language=null, $filename=null) {
- $this->_highlight('file',$text,$language,$filename);
+ /**
+ * Display text as file content, optionally syntax highlighted
+ *
+ * @param string $text text to show
+ * @param string $language programming language to use for syntax highlighting
+ * @param string $filename file path label
+ */
+ function file($text, $language = null, $filename = null) {
+ $this->_highlight('file', $text, $language, $filename);
}
- function code($text, $language=null, $filename=null) {
- $this->_highlight('code',$text,$language,$filename);
+ /**
+ * Display text as code content, optionally syntax highlighted
+ *
+ * @param string $text text to show
+ * @param string $language programming language to use for syntax highlighting
+ * @param string $filename file path label
+ */
+ function code($text, $language = null, $filename = null) {
+ $this->_highlight('code', $text, $language, $filename);
}
/**
* Use GeSHi to highlight language syntax in code and file blocks
*
* @author Andreas Gohr <andi@splitbrain.org>
+ * @param string $type code|file
+ * @param string $text text to show
+ * @param string $language programming language to use for syntax highlighting
+ * @param string $filename file path label
*/
- function _highlight($type, $text, $language=null, $filename=null) {
- global $conf;
+ function _highlight($type, $text, $language = null, $filename = null) {
global $ID;
global $lang;
- if($filename){
+ if($filename) {
// add icon
- list($ext) = mimetype($filename,false);
- $class = preg_replace('/[^_\-a-z0-9]+/i','_',$ext);
+ list($ext) = mimetype($filename, false);
+ $class = preg_replace('/[^_\-a-z0-9]+/i', '_', $ext);
$class = 'mediafile mf_'.$class;
$this->doc .= '<dl class="'.$type.'">'.DOKU_LF;
- $this->doc .= '<dt><a href="'.exportlink($ID,'code',array('codeblock'=>$this->_codeblock)).'" title="'.$lang['download'].'" class="'.$class.'">';
+ $this->doc .= '<dt><a href="'.exportlink($ID, 'code', array('codeblock' => $this->_codeblock)).'" title="'.$lang['download'].'" class="'.$class.'">';
$this->doc .= hsc($filename);
$this->doc .= '</a></dt>'.DOKU_LF.'<dd>';
}
- if ($text{0} == "\n") {
+ if($text{0} == "\n") {
$text = substr($text, 1);
}
- if (substr($text, -1) == "\n") {
+ if(substr($text, -1) == "\n") {
$text = substr($text, 0, -1);
}
- if ( is_null($language) ) {
+ if(is_null($language)) {
$this->doc .= '<pre class="'.$type.'">'.$this->_xmlEntities($text).'</pre>'.DOKU_LF;
} else {
$class = 'code'; //we always need the code class to make the syntax highlighting apply
@@ -456,16 +640,23 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
$this->doc .= "<pre class=\"$class $language\">".p_xhtml_cached_geshi($text, $language, '').'</pre>'.DOKU_LF;
}
- if($filename){
+ if($filename) {
$this->doc .= '</dd></dl>'.DOKU_LF;
}
$this->_codeblock++;
}
+ /**
+ * Format an acronym
+ *
+ * Uses $this->acronyms
+ *
+ * @param string $acronym
+ */
function acronym($acronym) {
- if ( array_key_exists($acronym, $this->acronyms) ) {
+ if(array_key_exists($acronym, $this->acronyms)) {
$title = $this->_xmlEntities($this->acronyms[$acronym]);
@@ -477,73 +668,109 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
}
}
+ /**
+ * Format a smiley
+ *
+ * Uses $this->smiley
+ *
+ * @param string $smiley
+ */
function smiley($smiley) {
- if ( array_key_exists($smiley, $this->smileys) ) {
- $title = $this->_xmlEntities($this->smileys[$smiley]);
+ if(array_key_exists($smiley, $this->smileys)) {
$this->doc .= '<img src="'.DOKU_BASE.'lib/images/smileys/'.$this->smileys[$smiley].
'" class="icon" alt="'.
- $this->_xmlEntities($smiley).'" />';
+ $this->_xmlEntities($smiley).'" />';
} else {
$this->doc .= $this->_xmlEntities($smiley);
}
}
- /*
- * not used
- function wordblock($word) {
- if ( array_key_exists($word, $this->badwords) ) {
- $this->doc .= '** BLEEP **';
- } else {
- $this->doc .= $this->_xmlEntities($word);
- }
- }
- */
-
+ /**
+ * Format an entity
+ *
+ * Entities are basically small text replacements
+ *
+ * Uses $this->entities
+ *
+ * @param string $entity
+ */
function entity($entity) {
- if ( array_key_exists($entity, $this->entities) ) {
+ if(array_key_exists($entity, $this->entities)) {
$this->doc .= $this->entities[$entity];
} else {
$this->doc .= $this->_xmlEntities($entity);
}
}
+ /**
+ * Typographically format a multiply sign
+ *
+ * Example: ($x=640, $y=480) should result in "640×480"
+ *
+ * @param string|int $x first value
+ * @param string|int $y second value
+ */
function multiplyentity($x, $y) {
$this->doc .= "$x&times;$y";
}
+ /**
+ * Render an opening single quote char (language specific)
+ */
function singlequoteopening() {
global $lang;
$this->doc .= $lang['singlequoteopening'];
}
+ /**
+ * Render a closing single quote char (language specific)
+ */
function singlequoteclosing() {
global $lang;
$this->doc .= $lang['singlequoteclosing'];
}
+ /**
+ * Render an apostrophe char (language specific)
+ */
function apostrophe() {
global $lang;
$this->doc .= $lang['apostrophe'];
}
+ /**
+ * Render an opening double quote char (language specific)
+ */
function doublequoteopening() {
global $lang;
$this->doc .= $lang['doublequoteopening'];
}
+ /**
+ * Render an closinging double quote char (language specific)
+ */
function doublequoteclosing() {
global $lang;
$this->doc .= $lang['doublequoteclosing'];
}
/**
+ * Render a CamelCase link
+ *
+ * @param string $link The link name
+ * @see http://en.wikipedia.org/wiki/CamelCase
*/
function camelcaselink($link) {
- $this->internallink($link,$link);
+ $this->internallink($link, $link);
}
-
- function locallink($hash, $name = null){
+ /**
+ * Render a page local link
+ *
+ * @param string $hash hash link identifier
+ * @param string $name name for the link
+ */
+ function locallink($hash, $name = null) {
global $ID;
$name = $this->_getLinkTitle($name, $hash, $isImage);
$hash = $this->_headerToLink($hash);
@@ -559,23 +786,23 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
* $search,$returnonly & $linktype are not for the renderer but are used
* elsewhere - no need to implement them in other renderers
*
- * @param string $id pageid
- * @param string|null $name link name
- * @param string|null $search adds search url param
- * @param bool $returnonly whether to return html or write to doc attribute
- * @param string $linktype type to set use of headings
- * @return void|string writes to doc attribute or returns html depends on $returnonly
* @author Andreas Gohr <andi@splitbrain.org>
+ * @param string $id pageid
+ * @param string|null $name link name
+ * @param string|null $search adds search url param
+ * @param bool $returnonly whether to return html or write to doc attribute
+ * @param string $linktype type to set use of headings
+ * @return void|string writes to doc attribute or returns html depends on $returnonly
*/
- function internallink($id, $name = null, $search=null,$returnonly=false,$linktype='content') {
+ function internallink($id, $name = null, $search = null, $returnonly = false, $linktype = 'content') {
global $conf;
global $ID;
global $INFO;
$params = '';
- $parts = explode('?', $id, 2);
- if (count($parts) === 2) {
- $id = $parts[0];
+ $parts = explode('?', $id, 2);
+ if(count($parts) === 2) {
+ $id = $parts[0];
$params = $parts[1];
}
@@ -583,7 +810,7 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
// We need this check because _simpleTitle needs
// correct $id and resolve_pageid() use cleanID($id)
// (some things could be lost)
- if ($id === '') {
+ if($id === '') {
$id = $ID;
}
@@ -591,22 +818,22 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
$default = $this->_simpleTitle($id);
// now first resolve and clean up the $id
- resolve_pageid(getNS($ID),$id,$exists);
+ resolve_pageid(getNS($ID), $id, $exists);
$name = $this->_getLinkTitle($name, $default, $isImage, $id, $linktype);
- if ( !$isImage ) {
- if ( $exists ) {
- $class='wikilink1';
+ if(!$isImage) {
+ if($exists) {
+ $class = 'wikilink1';
} else {
- $class='wikilink2';
- $link['rel']='nofollow';
+ $class = 'wikilink2';
+ $link['rel'] = 'nofollow';
}
} else {
- $class='media';
+ $class = 'media';
}
//keep hash anchor
- @list($id,$hash) = explode('#',$id,2);
+ @list($id, $hash) = explode('#', $id, 2);
if(!empty($hash)) $hash = $this->_headerToLink($hash);
//prepare for formating
@@ -615,37 +842,43 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
$link['pre'] = '';
$link['suf'] = '';
// highlight link to current page
- if ($id == $INFO['id']) {
- $link['pre'] = '<span class="curid">';
- $link['suf'] = '</span>';
+ if($id == $INFO['id']) {
+ $link['pre'] = '<span class="curid">';
+ $link['suf'] = '</span>';
}
- $link['more'] = '';
- $link['class'] = $class;
- $link['url'] = wl($id, $params);
- $link['name'] = $name;
- $link['title'] = $id;
+ $link['more'] = '';
+ $link['class'] = $class;
+ $link['url'] = wl($id, $params);
+ $link['name'] = $name;
+ $link['title'] = $id;
//add search string
- if($search){
- ($conf['userewrite']) ? $link['url'].='?' : $link['url'].='&amp;';
- if(is_array($search)){
- $search = array_map('rawurlencode',$search);
- $link['url'] .= 's[]='.join('&amp;s[]=',$search);
- }else{
+ if($search) {
+ ($conf['userewrite']) ? $link['url'] .= '?' : $link['url'] .= '&amp;';
+ if(is_array($search)) {
+ $search = array_map('rawurlencode', $search);
+ $link['url'] .= 's[]='.join('&amp;s[]=', $search);
+ } else {
$link['url'] .= 's='.rawurlencode($search);
}
}
//keep hash
- if($hash) $link['url'].='#'.$hash;
+ if($hash) $link['url'] .= '#'.$hash;
//output formatted
- if($returnonly){
+ if($returnonly) {
return $this->_formatLink($link);
- }else{
+ } else {
$this->doc .= $this->_formatLink($link);
}
}
+ /**
+ * Render an external link
+ *
+ * @param string $url full URL with scheme
+ * @param string|array $name name for the link, array for media file
+ */
function externallink($url, $name = null) {
global $conf;
@@ -653,21 +886,21 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
// url might be an attack vector, only allow registered protocols
if(is_null($this->schemes)) $this->schemes = getSchemes();
- list($scheme) = explode('://',$url);
+ list($scheme) = explode('://', $url);
$scheme = strtolower($scheme);
- if(!in_array($scheme,$this->schemes)) $url = '';
+ if(!in_array($scheme, $this->schemes)) $url = '';
// is there still an URL?
- if(!$url){
+ if(!$url) {
$this->doc .= $name;
return;
}
// set class
- if ( !$isImage ) {
- $class='urlextern';
+ if(!$isImage) {
+ $class = 'urlextern';
} else {
- $class='media';
+ $class = 'media';
}
//prepare for formating
@@ -679,8 +912,8 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
$link['class'] = $class;
$link['url'] = $url;
- $link['name'] = $name;
- $link['title'] = $this->_xmlEntities($url);
+ $link['name'] = $name;
+ $link['title'] = $this->_xmlEntities($url);
if($conf['relnofollow']) $link['more'] .= ' rel="nofollow"';
//output formatted
@@ -688,11 +921,19 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
}
/**
+ * Render an interwiki link
+ *
+ * You may want to use $this->_resolveInterWiki() here
+ *
+ * @param string $match original link - probably not much use
+ * @param string|array $name name for the link, array for media file
+ * @param string $wikiName indentifier (shortcut) for the remote wiki
+ * @param string $wikiUri the fragment parsed from the original link
*/
function interwikilink($match, $name = null, $wikiName, $wikiUri) {
global $conf;
- $link = array();
+ $link = array();
$link['target'] = $conf['target']['interwiki'];
$link['pre'] = '';
$link['suf'] = '';
@@ -701,10 +942,10 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
//get interwiki URL
$exists = null;
- $url = $this->_resolveInterWiki($wikiName, $wikiUri, $exists);
+ $url = $this->_resolveInterWiki($wikiName, $wikiUri, $exists);
if(!$isImage) {
- $class = preg_replace('/[^_\-a-z0-9]+/i', '_', $wikiName);
+ $class = preg_replace('/[^_\-a-z0-9]+/i', '_', $wikiName);
$link['class'] = "interwiki iw_$class";
} else {
$link['class'] = 'media';
@@ -723,7 +964,7 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
}
}
- $link['url'] = $url;
+ $link['url'] = $url;
$link['title'] = htmlspecialchars($link['url']);
//output formatted
@@ -731,54 +972,66 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
}
/**
+ * Link to windows share
+ *
+ * @param string $url the link
+ * @param string|array $name name for the link, array for media file
*/
function windowssharelink($url, $name = null) {
global $conf;
- global $lang;
+
//simple setup
$link['target'] = $conf['target']['windows'];
$link['pre'] = '';
- $link['suf'] = '';
+ $link['suf'] = '';
$link['style'] = '';
$link['name'] = $this->_getLinkTitle($name, $url, $isImage);
- if ( !$isImage ) {
+ if(!$isImage) {
$link['class'] = 'windows';
} else {
$link['class'] = 'media';
}
$link['title'] = $this->_xmlEntities($url);
- $url = str_replace('\\','/',$url);
- $url = 'file:///'.$url;
- $link['url'] = $url;
+ $url = str_replace('\\', '/', $url);
+ $url = 'file:///'.$url;
+ $link['url'] = $url;
//output formatted
$this->doc .= $this->_formatLink($link);
}
+ /**
+ * Render a linked E-Mail Address
+ *
+ * Honors $conf['mailguard'] setting
+ *
+ * @param string $address Email-Address
+ * @param string|array $name name for the link, array for media file
+ */
function emaillink($address, $name = null) {
global $conf;
//simple setup
- $link = array();
+ $link = array();
$link['target'] = '';
$link['pre'] = '';
- $link['suf'] = '';
+ $link['suf'] = '';
$link['style'] = '';
$link['more'] = '';
$name = $this->_getLinkTitle($name, '', $isImage);
- if ( !$isImage ) {
- $link['class']='mail';
+ if(!$isImage) {
+ $link['class'] = 'mail';
} else {
- $link['class']='media';
+ $link['class'] = 'media';
}
$address = $this->_xmlEntities($address);
$address = obfuscate($address);
$title = $address;
- if(empty($name)){
+ if(empty($name)) {
$name = $address;
}
@@ -792,73 +1045,97 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
$this->doc .= $this->_formatLink($link);
}
- function internalmedia ($src, $title=null, $align=null, $width=null,
- $height=null, $cache=null, $linking=null, $return=NULL) {
+ /**
+ * Render an internal media file
+ *
+ * @param string $src media ID
+ * @param string $title descriptive text
+ * @param string $align left|center|right
+ * @param int $width width of media in pixel
+ * @param int $height height of media in pixel
+ * @param string $cache cache|recache|nocache
+ * @param string $linking linkonly|detail|nolink
+ * @param bool $return return HTML instead of adding to $doc
+ * @return void|string
+ */
+ function internalmedia($src, $title = null, $align = null, $width = null,
+ $height = null, $cache = null, $linking = null, $return = false) {
global $ID;
- list($src,$hash) = explode('#',$src,2);
- resolve_mediaid(getNS($ID),$src, $exists);
+ list($src, $hash) = explode('#', $src, 2);
+ resolve_mediaid(getNS($ID), $src, $exists);
$noLink = false;
$render = ($linking == 'linkonly') ? false : true;
- $link = $this->_getMediaLinkConf($src, $title, $align, $width, $height, $cache, $render);
+ $link = $this->_getMediaLinkConf($src, $title, $align, $width, $height, $cache, $render);
- list($ext,$mime,$dl) = mimetype($src,false);
- if(substr($mime,0,5) == 'image' && $render){
- $link['url'] = ml($src,array('id'=>$ID,'cache'=>$cache),($linking=='direct'));
- }elseif(($mime == 'application/x-shockwave-flash' || media_supportedav($mime)) && $render){
+ list($ext, $mime) = mimetype($src, false);
+ if(substr($mime, 0, 5) == 'image' && $render) {
+ $link['url'] = ml($src, array('id' => $ID, 'cache' => $cache), ($linking == 'direct'));
+ } elseif(($mime == 'application/x-shockwave-flash' || media_supportedav($mime)) && $render) {
// don't link movies
$noLink = true;
- }else{
+ } else {
// add file icons
- $class = preg_replace('/[^_\-a-z0-9]+/i','_',$ext);
+ $class = preg_replace('/[^_\-a-z0-9]+/i', '_', $ext);
$link['class'] .= ' mediafile mf_'.$class;
- $link['url'] = ml($src,array('id'=>$ID,'cache'=>$cache),true);
- if ($exists) $link['title'] .= ' (' . filesize_h(filesize(mediaFN($src))).')';
+ $link['url'] = ml($src, array('id' => $ID, 'cache' => $cache), true);
+ if($exists) $link['title'] .= ' ('.filesize_h(filesize(mediaFN($src))).')';
}
if($hash) $link['url'] .= '#'.$hash;
//markup non existing files
- if (!$exists) {
+ if(!$exists) {
$link['class'] .= ' wikilink2';
}
//output formatted
- if ($return) {
- if ($linking == 'nolink' || $noLink) return $link['name'];
+ if($return) {
+ if($linking == 'nolink' || $noLink) return $link['name'];
else return $this->_formatLink($link);
} else {
- if ($linking == 'nolink' || $noLink) $this->doc .= $link['name'];
+ if($linking == 'nolink' || $noLink) $this->doc .= $link['name'];
else $this->doc .= $this->_formatLink($link);
}
}
- function externalmedia ($src, $title=null, $align=null, $width=null,
- $height=null, $cache=null, $linking=null) {
- list($src,$hash) = explode('#',$src,2);
+ /**
+ * Render an external media file
+ *
+ * @param string $src full media URL
+ * @param string $title descriptive text
+ * @param string $align left|center|right
+ * @param int $width width of media in pixel
+ * @param int $height height of media in pixel
+ * @param string $cache cache|recache|nocache
+ * @param string $linking linkonly|detail|nolink
+ */
+ function externalmedia($src, $title = null, $align = null, $width = null,
+ $height = null, $cache = null, $linking = null) {
+ list($src, $hash) = explode('#', $src, 2);
$noLink = false;
$render = ($linking == 'linkonly') ? false : true;
- $link = $this->_getMediaLinkConf($src, $title, $align, $width, $height, $cache, $render);
+ $link = $this->_getMediaLinkConf($src, $title, $align, $width, $height, $cache, $render);
- $link['url'] = ml($src,array('cache'=>$cache));
+ $link['url'] = ml($src, array('cache' => $cache));
- list($ext,$mime,$dl) = mimetype($src,false);
- if(substr($mime,0,5) == 'image' && $render){
+ list($ext, $mime) = mimetype($src, false);
+ if(substr($mime, 0, 5) == 'image' && $render) {
// link only jpeg images
// if ($ext != 'jpg' && $ext != 'jpeg') $noLink = true;
- }elseif(($mime == 'application/x-shockwave-flash' || media_supportedav($mime)) && $render){
+ } elseif(($mime == 'application/x-shockwave-flash' || media_supportedav($mime)) && $render) {
// don't link movies
$noLink = true;
- }else{
+ } else {
// add file icons
- $class = preg_replace('/[^_\-a-z0-9]+/i','_',$ext);
+ $class = preg_replace('/[^_\-a-z0-9]+/i', '_', $ext);
$link['class'] .= ' mediafile mf_'.$class;
}
if($hash) $link['url'] .= '#'.$hash;
//output formatted
- if ($linking == 'nolink' || $noLink) $this->doc .= $link['name'];
+ if($linking == 'nolink' || $noLink) $this->doc .= $link['name'];
else $this->doc .= $this->_formatLink($link);
}
@@ -867,7 +1144,7 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
*
* @author Andreas Gohr <andi@splitbrain.org>
*/
- function rss ($url,$params){
+ function rss($url, $params) {
global $lang;
global $conf;
@@ -876,17 +1153,21 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
$feed->set_feed_url($url);
//disable warning while fetching
- if (!defined('DOKU_E_LEVEL')) { $elvl = error_reporting(E_ERROR); }
+ if(!defined('DOKU_E_LEVEL')) {
+ $elvl = error_reporting(E_ERROR);
+ }
$rc = $feed->init();
- if (!defined('DOKU_E_LEVEL')) { error_reporting($elvl); }
+ if(isset($elvl)) {
+ error_reporting($elvl);
+ }
//decide on start and end
- if($params['reverse']){
- $mod = -1;
- $start = $feed->get_item_quantity()-1;
+ if($params['reverse']) {
+ $mod = -1;
+ $start = $feed->get_item_quantity() - 1;
$end = $start - ($params['max']);
$end = ($end < -1) ? -1 : $end;
- }else{
+ } else {
$mod = 1;
$start = 0;
$end = $feed->get_item_quantity();
@@ -894,36 +1175,38 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
}
$this->doc .= '<ul class="rss">';
- if($rc){
- for ($x = $start; $x != $end; $x += $mod) {
+ if($rc) {
+ for($x = $start; $x != $end; $x += $mod) {
$item = $feed->get_item($x);
$this->doc .= '<li><div class="li">';
// support feeds without links
$lnkurl = $item->get_permalink();
- if($lnkurl){
+ if($lnkurl) {
// title is escaped by SimplePie, we unescape here because it
// is escaped again in externallink() FS#1705
- $this->externallink($item->get_permalink(),
- html_entity_decode($item->get_title(), ENT_QUOTES, 'UTF-8'));
- }else{
+ $this->externallink(
+ $item->get_permalink(),
+ html_entity_decode($item->get_title(), ENT_QUOTES, 'UTF-8')
+ );
+ } else {
$this->doc .= ' '.$item->get_title();
}
- if($params['author']){
+ if($params['author']) {
$author = $item->get_author(0);
- if($author){
+ if($author) {
$name = $author->get_name();
if(!$name) $name = $author->get_email();
if($name) $this->doc .= ' '.$lang['by'].' '.$name;
}
}
- if($params['date']){
+ if($params['date']) {
$this->doc .= ' ('.$item->get_local_date($conf['dformat']).')';
}
- if($params['details']){
+ if($params['details']) {
$this->doc .= '<div class="detail">';
- if($conf['htmlok']){
+ if($conf['htmlok']) {
$this->doc .= $item->get_description();
- }else{
+ } else {
$this->doc .= strip_tags($item->get_description());
}
$this->doc .= '</div>';
@@ -931,11 +1214,11 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
$this->doc .= '</div></li>';
}
- }else{
+ } else {
$this->doc .= '<li><div class="li">';
$this->doc .= '<em>'.$lang['rssfailed'].'</em>';
$this->externallink($url);
- if($conf['allowdebug']){
+ if($conf['allowdebug']) {
$this->doc .= '<!--'.hsc($feed->error).'-->';
}
$this->doc .= '</div></li>';
@@ -943,89 +1226,130 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
$this->doc .= '</ul>';
}
- // $numrows not yet implemented
- function table_open($maxcols = null, $numrows = null, $pos = null){
- global $lang;
+ /**
+ * Start a table
+ *
+ * @param int $maxcols maximum number of columns
+ * @param int $numrows NOT IMPLEMENTED
+ * @param int $pos byte position in the original source
+ */
+ function table_open($maxcols = null, $numrows = null, $pos = null) {
// initialize the row counter used for classes
$this->_counter['row_counter'] = 0;
- $class = 'table';
- if ($pos !== null) {
- $class .= ' ' . $this->startSectionEdit($pos, 'table');
+ $class = 'table';
+ if($pos !== null) {
+ $class .= ' '.$this->startSectionEdit($pos, 'table');
}
- $this->doc .= '<div class="' . $class . '"><table class="inline">' .
- DOKU_LF;
+ $this->doc .= '<div class="'.$class.'"><table class="inline">'.
+ DOKU_LF;
}
- function table_close($pos = null){
+ /**
+ * Close a table
+ *
+ * @param int $pos byte position in the original source
+ */
+ function table_close($pos = null) {
$this->doc .= '</table></div>'.DOKU_LF;
- if ($pos !== null) {
+ if($pos !== null) {
$this->finishSectionEdit($pos);
}
}
- function tablethead_open(){
- $this->doc .= DOKU_TAB . '<thead>' . DOKU_LF;
+ /**
+ * Open a table header
+ */
+ function tablethead_open() {
+ $this->doc .= DOKU_TAB.'<thead>'.DOKU_LF;
}
- function tablethead_close(){
- $this->doc .= DOKU_TAB . '</thead>' . DOKU_LF;
+ /**
+ * Close a table header
+ */
+ function tablethead_close() {
+ $this->doc .= DOKU_TAB.'</thead>'.DOKU_LF;
}
- function tablerow_open(){
+ /**
+ * Open a table row
+ */
+ function tablerow_open() {
// initialize the cell counter used for classes
$this->_counter['cell_counter'] = 0;
- $class = 'row' . $this->_counter['row_counter']++;
- $this->doc .= DOKU_TAB . '<tr class="'.$class.'">' . DOKU_LF . DOKU_TAB . DOKU_TAB;
+ $class = 'row'.$this->_counter['row_counter']++;
+ $this->doc .= DOKU_TAB.'<tr class="'.$class.'">'.DOKU_LF.DOKU_TAB.DOKU_TAB;
}
- function tablerow_close(){
- $this->doc .= DOKU_LF . DOKU_TAB . '</tr>' . DOKU_LF;
+ /**
+ * Close a table row
+ */
+ function tablerow_close() {
+ $this->doc .= DOKU_LF.DOKU_TAB.'</tr>'.DOKU_LF;
}
- function tableheader_open($colspan = 1, $align = null, $rowspan = 1){
- $class = 'class="col' . $this->_counter['cell_counter']++;
- if ( !is_null($align) ) {
+ /**
+ * Open a table header cell
+ *
+ * @param int $colspan
+ * @param string $align left|center|right
+ * @param int $rowspan
+ */
+ function tableheader_open($colspan = 1, $align = null, $rowspan = 1) {
+ $class = 'class="col'.$this->_counter['cell_counter']++;
+ if(!is_null($align)) {
$class .= ' '.$align.'align';
}
$class .= '"';
- $this->doc .= '<th ' . $class;
- if ( $colspan > 1 ) {
- $this->_counter['cell_counter'] += $colspan-1;
+ $this->doc .= '<th '.$class;
+ if($colspan > 1) {
+ $this->_counter['cell_counter'] += $colspan - 1;
$this->doc .= ' colspan="'.$colspan.'"';
}
- if ( $rowspan > 1 ) {
+ if($rowspan > 1) {
$this->doc .= ' rowspan="'.$rowspan.'"';
}
$this->doc .= '>';
}
- function tableheader_close(){
+ /**
+ * Close a table header cell
+ */
+ function tableheader_close() {
$this->doc .= '</th>';
}
- function tablecell_open($colspan = 1, $align = null, $rowspan = 1){
- $class = 'class="col' . $this->_counter['cell_counter']++;
- if ( !is_null($align) ) {
+ /**
+ * Open a table cell
+ *
+ * @param int $colspan
+ * @param string $align left|center|right
+ * @param int $rowspan
+ */
+ function tablecell_open($colspan = 1, $align = null, $rowspan = 1) {
+ $class = 'class="col'.$this->_counter['cell_counter']++;
+ if(!is_null($align)) {
$class .= ' '.$align.'align';
}
$class .= '"';
$this->doc .= '<td '.$class;
- if ( $colspan > 1 ) {
- $this->_counter['cell_counter'] += $colspan-1;
+ if($colspan > 1) {
+ $this->_counter['cell_counter'] += $colspan - 1;
$this->doc .= ' colspan="'.$colspan.'"';
}
- if ( $rowspan > 1 ) {
+ if($rowspan > 1) {
$this->doc .= ' rowspan="'.$rowspan.'"';
}
$this->doc .= '>';
}
- function tablecell_close(){
+ /**
+ * Close a table cell
+ */
+ function tablecell_close() {
$this->doc .= '</td>';
}
- //----------------------------------------------------------
- // Utils
+ #region Utility functions
/**
* Build a link
@@ -1034,29 +1358,29 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
*
* @author Andreas Gohr <andi@splitbrain.org>
*/
- function _formatLink($link){
+ function _formatLink($link) {
//make sure the url is XHTML compliant (skip mailto)
- if(substr($link['url'],0,7) != 'mailto:'){
- $link['url'] = str_replace('&','&amp;',$link['url']);
- $link['url'] = str_replace('&amp;amp;','&amp;',$link['url']);
+ if(substr($link['url'], 0, 7) != 'mailto:') {
+ $link['url'] = str_replace('&', '&amp;', $link['url']);
+ $link['url'] = str_replace('&amp;amp;', '&amp;', $link['url']);
}
//remove double encodings in titles
- $link['title'] = str_replace('&amp;amp;','&amp;',$link['title']);
+ $link['title'] = str_replace('&amp;amp;', '&amp;', $link['title']);
// be sure there are no bad chars in url or title
// (we can't do this for name because it can contain an img tag)
- $link['url'] = strtr($link['url'],array('>'=>'%3E','<'=>'%3C','"'=>'%22'));
- $link['title'] = strtr($link['title'],array('>'=>'&gt;','<'=>'&lt;','"'=>'&quot;'));
+ $link['url'] = strtr($link['url'], array('>' => '%3E', '<' => '%3C', '"' => '%22'));
+ $link['title'] = strtr($link['title'], array('>' => '&gt;', '<' => '&lt;', '"' => '&quot;'));
- $ret = '';
+ $ret = '';
$ret .= $link['pre'];
$ret .= '<a href="'.$link['url'].'"';
- if(!empty($link['class'])) $ret .= ' class="'.$link['class'].'"';
+ if(!empty($link['class'])) $ret .= ' class="'.$link['class'].'"';
if(!empty($link['target'])) $ret .= ' target="'.$link['target'].'"';
- if(!empty($link['title'])) $ret .= ' title="'.$link['title'].'"';
- if(!empty($link['style'])) $ret .= ' style="'.$link['style'].'"';
- if(!empty($link['rel'])) $ret .= ' rel="'.$link['rel'].'"';
- if(!empty($link['more'])) $ret .= ' '.$link['more'];
+ if(!empty($link['title'])) $ret .= ' title="'.$link['title'].'"';
+ if(!empty($link['style'])) $ret .= ' style="'.$link['style'].'"';
+ if(!empty($link['rel'])) $ret .= ' rel="'.$link['rel'].'"';
+ if(!empty($link['more'])) $ret .= ' '.$link['more'];
$ret .= '>';
$ret .= $link['name'];
$ret .= '</a>';
@@ -1068,102 +1392,112 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
* Renders internal and external media
*
* @author Andreas Gohr <andi@splitbrain.org>
+ * @param string $src media ID
+ * @param string $title descriptive text
+ * @param string $align left|center|right
+ * @param int $width width of media in pixel
+ * @param int $height height of media in pixel
+ * @param string $cache cache|recache|nocache
+ * @param bool $render should the media be embedded inline or just linked
+ * @return string
*/
- function _media ($src, $title=null, $align=null, $width=null,
- $height=null, $cache=null, $render = true) {
+ function _media($src, $title = null, $align = null, $width = null,
+ $height = null, $cache = null, $render = true) {
$ret = '';
- list($ext,$mime,$dl) = mimetype($src);
- if(substr($mime,0,5) == 'image'){
+ list($ext, $mime) = mimetype($src);
+ if(substr($mime, 0, 5) == 'image') {
// first get the $title
- if (!is_null($title)) {
- $title = $this->_xmlEntities($title);
- }elseif($ext == 'jpg' || $ext == 'jpeg'){
+ if(!is_null($title)) {
+ $title = $this->_xmlEntities($title);
+ } elseif($ext == 'jpg' || $ext == 'jpeg') {
//try to use the caption from IPTC/EXIF
require_once(DOKU_INC.'inc/JpegMeta.php');
- $jpeg =new JpegMeta(mediaFN($src));
+ $jpeg = new JpegMeta(mediaFN($src));
if($jpeg !== false) $cap = $jpeg->getTitle();
- if($cap){
+ if(!empty($cap)) {
$title = $this->_xmlEntities($cap);
}
}
- if (!$render) {
+ if(!$render) {
// if the picture is not supposed to be rendered
// return the title of the picture
- if (!$title) {
+ if(!$title) {
// just show the sourcename
$title = $this->_xmlEntities(utf8_basename(noNS($src)));
}
return $title;
}
//add image tag
- $ret .= '<img src="'.ml($src,array('w'=>$width,'h'=>$height,'cache'=>$cache)).'"';
+ $ret .= '<img src="'.ml($src, array('w' => $width, 'h' => $height, 'cache' => $cache)).'"';
$ret .= ' class="media'.$align.'"';
- if ($title) {
- $ret .= ' title="' . $title . '"';
- $ret .= ' alt="' . $title .'"';
- }else{
+ if($title) {
+ $ret .= ' title="'.$title.'"';
+ $ret .= ' alt="'.$title.'"';
+ } else {
$ret .= ' alt=""';
}
- if ( !is_null($width) )
+ if(!is_null($width))
$ret .= ' width="'.$this->_xmlEntities($width).'"';
- if ( !is_null($height) )
+ if(!is_null($height))
$ret .= ' height="'.$this->_xmlEntities($height).'"';
$ret .= ' />';
- }elseif(media_supportedav($mime, 'video') || media_supportedav($mime, 'audio')){
+ } elseif(media_supportedav($mime, 'video') || media_supportedav($mime, 'audio')) {
// first get the $title
$title = !is_null($title) ? $this->_xmlEntities($title) : false;
- if (!$render) {
+ if(!$render) {
// if the file is not supposed to be rendered
// return the title of the file (just the sourcename if there is no title)
return $title ? $title : $this->_xmlEntities(utf8_basename(noNS($src)));
}
- $att = array();
+ $att = array();
$att['class'] = "media$align";
- if ($title) {
+ if($title) {
$att['title'] = $title;
}
- if (media_supportedav($mime, 'video')) {
+ if(media_supportedav($mime, 'video')) {
//add video
$ret .= $this->_video($src, $width, $height, $att);
}
- if (media_supportedav($mime, 'audio')) {
+ if(media_supportedav($mime, 'audio')) {
//add audio
$ret .= $this->_audio($src, $att);
}
- }elseif($mime == 'application/x-shockwave-flash'){
- if (!$render) {
+ } elseif($mime == 'application/x-shockwave-flash') {
+ if(!$render) {
// if the flash is not supposed to be rendered
// return the title of the flash
- if (!$title) {
+ if(!$title) {
// just show the sourcename
$title = utf8_basename(noNS($src));
}
return $this->_xmlEntities($title);
}
- $att = array();
+ $att = array();
$att['class'] = "media$align";
if($align == 'right') $att['align'] = 'right';
- if($align == 'left') $att['align'] = 'left';
- $ret .= html_flashobject(ml($src,array('cache'=>$cache),true,'&'),$width,$height,
- array('quality' => 'high'),
- null,
- $att,
- $this->_xmlEntities($title));
- }elseif($title){
+ if($align == 'left') $att['align'] = 'left';
+ $ret .= html_flashobject(
+ ml($src, array('cache' => $cache), true, '&'), $width, $height,
+ array('quality' => 'high'),
+ null,
+ $att,
+ $this->_xmlEntities($title)
+ );
+ } elseif($title) {
// well at least we have a title to display
$ret .= $this->_xmlEntities($title);
- }else{
+ } else {
// just show the sourcename
$ret .= $this->_xmlEntities(utf8_basename(noNS($src)));
}
@@ -1171,23 +1505,30 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
return $ret;
}
+ /**
+ * Escape string for output
+ *
+ * @param $string
+ * @return string
+ */
function _xmlEntities($string) {
- return htmlspecialchars($string,ENT_QUOTES,'UTF-8');
+ return htmlspecialchars($string, ENT_QUOTES, 'UTF-8');
}
/**
* Creates a linkid from a headline
*
+ * @author Andreas Gohr <andi@splitbrain.org>
* @param string $title The headline title
* @param boolean $create Create a new unique ID?
- * @author Andreas Gohr <andi@splitbrain.org>
+ * @return string
*/
- function _headerToLink($title,$create=false) {
- if($create){
- return sectionID($title,$this->headers);
- }else{
+ function _headerToLink($title, $create = false) {
+ if($create) {
+ return sectionID($title, $this->headers);
+ } else {
$check = false;
- return sectionID($title,$check);
+ return sectionID($title, $check);
}
}
@@ -1195,18 +1536,22 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
* Construct a title and handle images in titles
*
* @author Harry Fuecks <hfuecks@gmail.com>
+ * @param string|array $title either string title or media array
+ * @param string $default default title if nothing else is found
+ * @param bool $isImage will be set to true if it's a media file
+ * @param null|string $id linked page id (used to extract title from first heading)
+ * @param string $linktype content|navigation
+ * @return string HTML of the title, might be full image tag or just escaped text
*/
- function _getLinkTitle($title, $default, & $isImage, $id=null, $linktype='content') {
- global $conf;
-
+ function _getLinkTitle($title, $default, &$isImage, $id = null, $linktype = 'content') {
$isImage = false;
- if ( is_array($title) ) {
+ if(is_array($title)) {
$isImage = true;
return $this->_imageTitle($title);
- } elseif ( is_null($title) || trim($title)=='') {
- if (useHeading($linktype) && $id) {
+ } elseif(is_null($title) || trim($title) == '') {
+ if(useHeading($linktype) && $id) {
$heading = p_get_first_heading($id);
- if ($heading) {
+ if($heading) {
return $this->_xmlEntities($heading);
}
}
@@ -1217,48 +1562,51 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
}
/**
- * Returns an HTML code for images used in link titles
+ * Returns HTML code for images used in link titles
*
- * @todo Resolve namespace on internal images
* @author Andreas Gohr <andi@splitbrain.org>
+ * @param string $img
+ * @return string HTML img tag or similar
*/
function _imageTitle($img) {
global $ID;
// some fixes on $img['src']
// see internalmedia() and externalmedia()
- list($img['src'],$hash) = explode('#',$img['src'],2);
- if ($img['type'] == 'internalmedia') {
- resolve_mediaid(getNS($ID),$img['src'],$exists);
+ list($img['src']) = explode('#', $img['src'], 2);
+ if($img['type'] == 'internalmedia') {
+ resolve_mediaid(getNS($ID), $img['src'], $exists);
}
- return $this->_media($img['src'],
- $img['title'],
- $img['align'],
- $img['width'],
- $img['height'],
- $img['cache']);
+ return $this->_media(
+ $img['src'],
+ $img['title'],
+ $img['align'],
+ $img['width'],
+ $img['height'],
+ $img['cache']
+ );
}
/**
- * _getMediaLinkConf is a helperfunction to internalmedia() and externalmedia()
- * which returns a basic link to a media.
+ * helperfunction to return a basic link to a media
+ *
+ * used in internalmedia() and externalmedia()
*
- * @author Pierre Spring <pierre.spring@liip.ch>
- * @param string $src
- * @param string $title
- * @param string $align
- * @param string $width
- * @param string $height
- * @param string $cache
- * @param string $render
- * @access protected
- * @return array
+ * @author Pierre Spring <pierre.spring@liip.ch>
+ * @param string $src media ID
+ * @param string $title descriptive text
+ * @param string $align left|center|right
+ * @param int $width width of media in pixel
+ * @param int $height height of media in pixel
+ * @param string $cache cache|recache|nocache
+ * @param bool $render should the media be embedded inline or just linked
+ * @return array associative array with link config
*/
function _getMediaLinkConf($src, $title, $align, $width, $height, $cache, $render) {
global $conf;
- $link = array();
+ $link = array();
$link['class'] = 'media';
$link['style'] = '';
$link['pre'] = '';
@@ -1271,50 +1619,49 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
return $link;
}
-
/**
* Embed video(s) in HTML
*
* @author Anika Henke <anika@selfthinker.org>
*
- * @param string $src - ID of video to embed
- * @param int $width - width of the video in pixels
- * @param int $height - height of the video in pixels
- * @param array $atts - additional attributes for the <video> tag
+ * @param string $src - ID of video to embed
+ * @param int $width - width of the video in pixels
+ * @param int $height - height of the video in pixels
+ * @param array $atts - additional attributes for the <video> tag
* @return string
*/
- function _video($src,$width,$height,$atts=null){
+ function _video($src, $width, $height, $atts = null) {
// prepare width and height
if(is_null($atts)) $atts = array();
$atts['width'] = (int) $width;
$atts['height'] = (int) $height;
- if(!$atts['width']) $atts['width'] = 320;
+ if(!$atts['width']) $atts['width'] = 320;
if(!$atts['height']) $atts['height'] = 240;
// prepare alternative formats
- $extensions = array('webm', 'ogv', 'mp4');
+ $extensions = array('webm', 'ogv', 'mp4');
$alternatives = media_alternativefiles($src, $extensions);
- $poster = media_alternativefiles($src, array('jpg', 'png'), true);
- $posterUrl = '';
- if (!empty($poster)) {
- $posterUrl = ml(reset($poster),array('cache'=>$cache),true,'&');
+ $poster = media_alternativefiles($src, array('jpg', 'png'), true);
+ $posterUrl = '';
+ if(!empty($poster)) {
+ $posterUrl = ml(reset($poster), '', true, '&');
}
$out = '';
// open video tag
$out .= '<video '.buildAttributes($atts).' controls="controls"';
- if ($posterUrl) $out .= ' poster="'.hsc($posterUrl).'"';
+ if($posterUrl) $out .= ' poster="'.hsc($posterUrl).'"';
$out .= '>'.NL;
$fallback = '';
// output source for each alternative video format
foreach($alternatives as $mime => $file) {
- $url = ml($file,array('cache'=>$cache),true,'&');
+ $url = ml($file, '', true, '&');
$title = $atts['title'] ? $atts['title'] : $this->_xmlEntities(utf8_basename(noNS($file)));
$out .= '<source src="'.hsc($url).'" type="'.$mime.'" />'.NL;
// alternative content (just a link to the file)
- $fallback .= $this->internalmedia($file, $title, NULL, NULL, NULL, $cache=NULL, $linking='linkonly', $return=true);
+ $fallback .= $this->internalmedia($file, $title, null, null, null, $cache = null, $linking = 'linkonly', $return = true);
}
// finish
@@ -1328,14 +1675,14 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
*
* @author Anika Henke <anika@selfthinker.org>
*
- * @param string $src - ID of audio to embed
- * @param array $atts - additional attributes for the <audio> tag
+ * @param string $src - ID of audio to embed
+ * @param array $atts - additional attributes for the <audio> tag
* @return string
*/
- function _audio($src,$atts=null){
+ function _audio($src, $atts = null) {
// prepare alternative formats
- $extensions = array('ogg', 'mp3', 'wav');
+ $extensions = array('ogg', 'mp3', 'wav');
$alternatives = media_alternativefiles($src, $extensions);
$out = '';
@@ -1345,12 +1692,12 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
// output source for each alternative audio format
foreach($alternatives as $mime => $file) {
- $url = ml($file,array('cache'=>$cache),true,'&');
+ $url = ml($file, '', true, '&');
$title = $atts['title'] ? $atts['title'] : $this->_xmlEntities(utf8_basename(noNS($file)));
$out .= '<source src="'.hsc($url).'" type="'.$mime.'" />'.NL;
// alternative content (just a link to the file)
- $fallback .= $this->internalmedia($file, $title, NULL, NULL, NULL, $cache=NULL, $linking='linkonly', $return=true);
+ $fallback .= $this->internalmedia($file, $title, null, null, null, $cache = null, $linking = 'linkonly', $return = true);
}
// finish
@@ -1359,6 +1706,7 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
return $out;
}
+ #endregion
}
//Setup VIM: ex: et ts=4 :
diff --git a/inc/plugin.php b/inc/plugin.php
index b97d8f0c2..fd19ba668 100644
--- a/inc/plugin.php
+++ b/inc/plugin.php
@@ -252,6 +252,7 @@ class DokuWiki_Plugin {
*/
function __call($name, $arguments) {
if($name == 'render'){
+ dbg_deprecated('render_text()');
if(!isset($arguments[1])) $arguments[1] = 'xhtml';
return $this->render_text($arguments[0], $arguments[1]);
}
diff --git a/inc/subscription.php b/inc/subscription.php
index 298e7c12b..aab6de926 100644
--- a/inc/subscription.php
+++ b/inc/subscription.php
@@ -650,9 +650,11 @@ class Subscription {
* @todo move the whole functionality into this class, trigger SUBSCRIPTION_NOTIFY_ADDRESSLIST instead,
* use an array for the addresses within it
*
- * @param array &$data Containing $id (the page id), $self (whether the author
- * should be notified, $addresslist (current email address
- * list)
+ * @param array &$data Containing the entries:
+ * - $id (the page id),
+ * - $self (whether the author should be notified,
+ * - $addresslist (current email address list)
+ * - $replacements (array of additional string substitutions, @KEY@ to be replaced by value)
*/
public function notifyaddresses(&$data) {
if(!$this->isenabled()) return;
@@ -700,6 +702,7 @@ class Subscription {
* @deprecated 2012-12-07
*/
function subscription_addresslist(&$data) {
+ dbg_deprecated('class Subscription');
$sub = new Subscription();
$sub->notifyaddresses($data);
}
diff --git a/inc/template.php b/inc/template.php
index 35b54b4c3..c02c9f1ae 100644
--- a/inc/template.php
+++ b/inc/template.php
@@ -836,7 +836,7 @@ function tpl_breadcrumbs($sep = '•') {
$crumbs_sep = ' <span class="bcsep">'.$sep.'</span> ';
//render crumbs, highlight the last one
- print '<span class="bchead">'.$lang['breadcrumb'].':</span>';
+ print '<span class="bchead">'.$lang['breadcrumb'].'</span>';
$last = count($crumbs);
$i = 0;
foreach($crumbs as $id => $name) {
@@ -876,7 +876,7 @@ function tpl_youarehere($sep = ' » ') {
$parts = explode(':', $ID);
$count = count($parts);
- echo '<span class="bchead">'.$lang['youarehere'].': </span>';
+ echo '<span class="bchead">'.$lang['youarehere'].' </span>';
// always print the startpage
echo '<span class="home">';
@@ -920,7 +920,7 @@ function tpl_userinfo() {
global $INPUT;
if($INPUT->server->str('REMOTE_USER')) {
- print $lang['loggedinas'].': '.userlink();
+ print $lang['loggedinas'].' '.userlink();
return true;
}
return false;
@@ -962,7 +962,7 @@ function tpl_pageinfo($ret = false) {
$out .= '<bdi>'.$fn.'</bdi>';
$out .= ' · ';
$out .= $lang['lastmod'];
- $out .= ': ';
+ $out .= ' ';
$out .= $date;
if($INFO['editor']) {
$out .= ' '.$lang['by'].' ';
@@ -973,7 +973,7 @@ function tpl_pageinfo($ret = false) {
if($INFO['locked']) {
$out .= ' · ';
$out .= $lang['lockedby'];
- $out .= ': ';
+ $out .= ' ';
$out .= '<bdi>'.editorinfo($INFO['locked']).'</bdi>';
}
if($ret) {
@@ -1062,9 +1062,9 @@ function tpl_img_meta() {
echo '<dl>';
foreach($tags as $tag) {
$label = $lang[$tag['langkey']];
- if(!$label) $label = $tag['langkey'];
+ if(!$label) $label = $tag['langkey'] . ':';
- echo '<dt>'.$label.':</dt><dd>';
+ echo '<dt>'.$label.'</dt><dd>';
if ($tag['type'] == 'date') {
echo dformat($tag['value']);
} else {
@@ -1428,14 +1428,14 @@ function tpl_mediaFileList() {
* @author Kate Arzamastseva <pshns@ukr.net>
*/
function tpl_mediaFileDetails($image, $rev) {
- global $AUTH, $NS, $conf, $DEL, $lang;
+ global $conf, $DEL, $lang;
/** @var Input $INPUT */
global $INPUT;
$removed = (!file_exists(mediaFN($image)) && file_exists(mediaMetaFN($image, '.changes')) && $conf['mediarevisions']);
if(!$image || (!file_exists(mediaFN($image)) && !$removed) || $DEL) return;
if($rev && !file_exists(mediaFN($image, $rev))) $rev = false;
- if(isset($NS) && getNS($image) != $NS) return;
+ $ns = getNS($image);
$do = $INPUT->str('mediado');
$opened_tab = $INPUT->str('tab_details');
@@ -1471,13 +1471,13 @@ function tpl_mediaFileDetails($image, $rev) {
echo '<div class="panelContent">'.NL;
if($opened_tab == 'view') {
- media_tab_view($image, $NS, $AUTH, $rev);
+ media_tab_view($image, $ns, null, $rev);
} elseif($opened_tab == 'edit' && !$removed) {
- media_tab_edit($image, $NS, $AUTH);
+ media_tab_edit($image, $ns);
} elseif($opened_tab == 'history' && $conf['mediarevisions']) {
- media_tab_history($image, $NS, $AUTH);
+ media_tab_history($image, $ns);
}
echo '</div>'.NL;
diff --git a/install.php b/install.php
index acc96d3e6..767dd332f 100644
--- a/install.php
+++ b/install.php
@@ -58,6 +58,7 @@ $dokuwiki_hash = array(
'2013-05-10' => '7b62b75245f57f122d3e0f8ed7989623',
'2013-12-08' => '263c76af309fbf083867c18a34ff5214',
'2014-05-05' => '263c76af309fbf083867c18a34ff5214',
+ 'devel' => 'b3ddc3f793eac8c135176e535054c00a',
);
@@ -350,6 +351,16 @@ function store_data($d){
*/
EOT;
+ // add any config options set by a previous installer
+ $preset = __DIR__.'/install.conf';
+ if(file_exists($preset)){
+ $output .= "# preset config options\n";
+ $output .= file_get_contents($preset);
+ $output .= "\n\n";
+ $output .= "# options selected in installer\n";
+ @unlink($preset);
+ }
+
$output .= '$conf[\'title\'] = \''.addslashes($d['title'])."';\n";
$output .= '$conf[\'lang\'] = \''.addslashes($LC)."';\n";
$output .= '$conf[\'license\'] = \''.addslashes($d['license'])."';\n";
@@ -533,6 +544,11 @@ function check_functions(){
$ok = false;
}
+ if(ini_get('mbstring.func_overload') != 0){
+ $error[] = $lang['i_mbfuncoverload'];
+ $ok = false;
+ }
+
$funcs = explode(' ','addslashes call_user_func chmod copy fgets '.
'file file_exists fseek flush filesize ftell fopen '.
'glob header ignore_user_abort ini_get mail mkdir '.
diff --git a/lib/exe/ajax.php b/lib/exe/ajax.php
index 1000094bc..a200a3ded 100644
--- a/lib/exe/ajax.php
+++ b/lib/exe/ajax.php
@@ -254,7 +254,7 @@ function ajax_mediadiff(){
$image = '';
if ($INPUT->has('image')) $image = cleanID($INPUT->str('image'));
- $NS = $INPUT->post->str('ns');
+ $NS = getNS($image);
$auth = auth_quickaclcheck("$NS:*");
media_diff($image, $NS, $auth, true);
}
diff --git a/lib/exe/css.php b/lib/exe/css.php
index 30d0d18c5..6c1d60751 100644
--- a/lib/exe/css.php
+++ b/lib/exe/css.php
@@ -602,30 +602,47 @@ function css_comment_cb($matches){
function css_onelinecomment_cb($matches) {
$line = $matches[0];
- $out = '';
$i = 0;
$len = strlen($line);
+
while ($i< $len){
$nextcom = strpos($line, '//', $i);
$nexturl = stripos($line, 'url(', $i);
if($nextcom === false) {
// no more comments, we're done
- $out .= substr($line, $i, $len-$i);
+ $i = $len;
break;
}
+
+ // keep any quoted string that starts before a comment
+ $nextsqt = strpos($line, "'", $i);
+ $nextdqt = strpos($line, '"', $i);
+ if(min($nextsqt, $nextdqt) < $nextcom) {
+ $skipto = false;
+ if($nextsqt !== false && ($nextdqt === false || $nextsqt < $nextdqt)) {
+ $skipto = strpos($line, "'", $nextsqt+1) +1;
+ } else if ($nextdqt !== false) {
+ $skipto = strpos($line, '"', $nextdqt+1) +1;
+ }
+
+ if($skipto !== false) {
+ $i = $skipto;
+ continue;
+ }
+ }
+
if($nexturl === false || $nextcom < $nexturl) {
// no url anymore, strip comment and be done
- $out .= substr($line, $i, $nextcom-$i);
+ $i = $nextcom;
break;
}
+
// we have an upcoming url
- $urlclose = strpos($line, ')', $nexturl);
- $out .= substr($line, $i, $urlclose-$i);
- $i = $urlclose;
+ $i = strpos($line, ')', $nexturl);
}
- return $out;
+ return substr($line, 0, $i);
}
//Setup VIM: ex: et ts=4 :
diff --git a/lib/plugins/acl/admin.php b/lib/plugins/acl/admin.php
index de38aedd5..ebb097a04 100644
--- a/lib/plugins/acl/admin.php
+++ b/lib/plugins/acl/admin.php
@@ -779,8 +779,8 @@ class admin_plugin_acl extends DokuWiki_Admin_Plugin {
}
echo '<select name="acl_t" class="edit">'.NL;
- echo ' <option value="__g__" class="aclgroup"'.$gsel.'>'.$this->getLang('acl_group').':</option>'.NL;
- echo ' <option value="__u__" class="acluser"'.$usel.'>'.$this->getLang('acl_user').':</option>'.NL;
+ echo ' <option value="__g__" class="aclgroup"'.$gsel.'>'.$this->getLang('acl_group').'</option>'.NL;
+ echo ' <option value="__u__" class="acluser"'.$usel.'>'.$this->getLang('acl_user').'</option>'.NL;
if (!empty($this->specials)) {
echo ' <optgroup label="&#160;">'.NL;
foreach($this->specials as $ug){
diff --git a/lib/plugins/acl/lang/ar/lang.php b/lib/plugins/acl/lang/ar/lang.php
index 4e44dab5f..89fe27a76 100644
--- a/lib/plugins/acl/lang/ar/lang.php
+++ b/lib/plugins/acl/lang/ar/lang.php
@@ -9,8 +9,8 @@
* @author uahello@gmail.com
*/
$lang['admin_acl'] = 'إدارة قوائم التحكم بالدخول';
-$lang['acl_group'] = 'مجموعة';
-$lang['acl_user'] = 'مستخدم';
+$lang['acl_group'] = 'مجموعة:';
+$lang['acl_user'] = 'مستخدم:';
$lang['acl_perms'] = 'ترخيص لـ';
$lang['page'] = 'صفحة';
$lang['namespace'] = 'فضاء التسمية';
diff --git a/lib/plugins/acl/lang/bg/lang.php b/lib/plugins/acl/lang/bg/lang.php
index 14e7d311c..648b91ef4 100644
--- a/lib/plugins/acl/lang/bg/lang.php
+++ b/lib/plugins/acl/lang/bg/lang.php
@@ -8,8 +8,8 @@
* @author Kiril <neohidra@gmail.com>
*/
$lang['admin_acl'] = 'Управление на списъците за достъп';
-$lang['acl_group'] = 'Група';
-$lang['acl_user'] = 'Потребител';
+$lang['acl_group'] = 'Група:';
+$lang['acl_user'] = 'Потребител:';
$lang['acl_perms'] = 'Права за';
$lang['page'] = 'Страница';
$lang['namespace'] = 'Именно пространство';
diff --git a/lib/plugins/acl/lang/ca-valencia/lang.php b/lib/plugins/acl/lang/ca-valencia/lang.php
index ef0ae92eb..bdfa7da22 100644
--- a/lib/plugins/acl/lang/ca-valencia/lang.php
+++ b/lib/plugins/acl/lang/ca-valencia/lang.php
@@ -8,8 +8,8 @@
* @author Bernat Arlandis <berarma@llenguaitecnologia.com>
*/
$lang['admin_acl'] = 'Gestor de les llistes de control d\'accés';
-$lang['acl_group'] = 'Grup';
-$lang['acl_user'] = 'Usuari';
+$lang['acl_group'] = 'Grup:';
+$lang['acl_user'] = 'Usuari:';
$lang['acl_perms'] = 'Permissos per a';
$lang['page'] = 'Pàgina';
$lang['namespace'] = 'Espai de noms';
diff --git a/lib/plugins/acl/lang/ca/lang.php b/lib/plugins/acl/lang/ca/lang.php
index 183db711b..bead981f0 100644
--- a/lib/plugins/acl/lang/ca/lang.php
+++ b/lib/plugins/acl/lang/ca/lang.php
@@ -10,8 +10,8 @@
* @author daniel@6temes.cat
*/
$lang['admin_acl'] = 'Gestió de la Llista de Control d\'Accés';
-$lang['acl_group'] = 'Grup';
-$lang['acl_user'] = 'Usuari';
+$lang['acl_group'] = 'Grup:';
+$lang['acl_user'] = 'Usuari:';
$lang['acl_perms'] = 'Permisos per a';
$lang['page'] = 'Pàgina';
$lang['namespace'] = 'Espai';
diff --git a/lib/plugins/acl/lang/cs/lang.php b/lib/plugins/acl/lang/cs/lang.php
index 8031612f7..497d53a4a 100644
--- a/lib/plugins/acl/lang/cs/lang.php
+++ b/lib/plugins/acl/lang/cs/lang.php
@@ -15,8 +15,8 @@
* @author mkucera66@seznam.cz
*/
$lang['admin_acl'] = 'Správa přístupových práv';
-$lang['acl_group'] = 'Skupina';
-$lang['acl_user'] = 'Uživatel';
+$lang['acl_group'] = 'Skupina:';
+$lang['acl_user'] = 'Uživatel:';
$lang['acl_perms'] = 'Práva pro';
$lang['page'] = 'Stránka';
$lang['namespace'] = 'Jmenný prostor';
diff --git a/lib/plugins/acl/lang/da/lang.php b/lib/plugins/acl/lang/da/lang.php
index 2558795fd..2f8086ac1 100644
--- a/lib/plugins/acl/lang/da/lang.php
+++ b/lib/plugins/acl/lang/da/lang.php
@@ -16,8 +16,8 @@
* @author Mikael Lyngvig <mikael@lyngvig.org>
*/
$lang['admin_acl'] = 'Rettighedsadministration';
-$lang['acl_group'] = 'Gruppe';
-$lang['acl_user'] = 'Bruger';
+$lang['acl_group'] = 'Gruppe:';
+$lang['acl_user'] = 'Bruger:';
$lang['acl_perms'] = 'Rettigheder for';
$lang['page'] = 'Dokument';
$lang['namespace'] = 'Navnerum';
diff --git a/lib/plugins/acl/lang/de-informal/lang.php b/lib/plugins/acl/lang/de-informal/lang.php
index 35df13dc0..6a04cc520 100644
--- a/lib/plugins/acl/lang/de-informal/lang.php
+++ b/lib/plugins/acl/lang/de-informal/lang.php
@@ -13,8 +13,8 @@
* @author Volker Bödker <volker@boedker.de>
*/
$lang['admin_acl'] = 'Zugangsverwaltung';
-$lang['acl_group'] = 'Gruppe';
-$lang['acl_user'] = 'Benutzer';
+$lang['acl_group'] = 'Gruppe:';
+$lang['acl_user'] = 'Benutzer:';
$lang['acl_perms'] = 'Rechte für';
$lang['page'] = 'Seite';
$lang['namespace'] = 'Namensraum';
diff --git a/lib/plugins/acl/lang/de/lang.php b/lib/plugins/acl/lang/de/lang.php
index 77de4b097..f25a2ea71 100644
--- a/lib/plugins/acl/lang/de/lang.php
+++ b/lib/plugins/acl/lang/de/lang.php
@@ -23,8 +23,8 @@
* @author Pierre Corell <info@joomla-praxis.de>
*/
$lang['admin_acl'] = 'Zugangsverwaltung';
-$lang['acl_group'] = 'Gruppe';
-$lang['acl_user'] = 'Benutzer';
+$lang['acl_group'] = 'Gruppe:';
+$lang['acl_user'] = 'Benutzer:';
$lang['acl_perms'] = 'Berechtigungen für';
$lang['page'] = 'Seite';
$lang['namespace'] = 'Namensraum';
diff --git a/lib/plugins/acl/lang/el/lang.php b/lib/plugins/acl/lang/el/lang.php
index dc4a9f034..09c8691e7 100644
--- a/lib/plugins/acl/lang/el/lang.php
+++ b/lib/plugins/acl/lang/el/lang.php
@@ -14,8 +14,8 @@
* @author Vasileios Karavasilis vasileioskaravasilis@gmail.com
*/
$lang['admin_acl'] = 'Διαχείριση Δικαιωμάτων Πρόσβασης';
-$lang['acl_group'] = 'Ομάδα';
-$lang['acl_user'] = 'Χρήστης';
+$lang['acl_group'] = 'Ομάδα:';
+$lang['acl_user'] = 'Χρήστης:';
$lang['acl_perms'] = 'Δικαιώματα για';
$lang['page'] = 'Σελίδα';
$lang['namespace'] = 'Φάκελος';
diff --git a/lib/plugins/acl/lang/en/lang.php b/lib/plugins/acl/lang/en/lang.php
index 779614d32..0c8648974 100644
--- a/lib/plugins/acl/lang/en/lang.php
+++ b/lib/plugins/acl/lang/en/lang.php
@@ -9,8 +9,8 @@
*/
$lang['admin_acl'] = 'Access Control List Management';
-$lang['acl_group'] = 'Group';
-$lang['acl_user'] = 'User';
+$lang['acl_group'] = 'Group:';
+$lang['acl_user'] = 'User:';
$lang['acl_perms'] = 'Permissions for';
$lang['page'] = 'Page';
$lang['namespace'] = 'Namespace';
diff --git a/lib/plugins/acl/lang/eo/lang.php b/lib/plugins/acl/lang/eo/lang.php
index a5f607341..f65995408 100644
--- a/lib/plugins/acl/lang/eo/lang.php
+++ b/lib/plugins/acl/lang/eo/lang.php
@@ -12,8 +12,8 @@
* @author Robert Bogenschneider <bogi@uea.org>
*/
$lang['admin_acl'] = 'Administrado de Alirkontrola Listo (ACL)';
-$lang['acl_group'] = 'Grupo';
-$lang['acl_user'] = 'Uzanto';
+$lang['acl_group'] = 'Grupo:';
+$lang['acl_user'] = 'Uzanto:';
$lang['acl_perms'] = 'Rajtoj por';
$lang['page'] = 'Paĝo';
$lang['namespace'] = 'Nomspaco';
diff --git a/lib/plugins/acl/lang/es/lang.php b/lib/plugins/acl/lang/es/lang.php
index cf503d4d1..da0dc8e38 100644
--- a/lib/plugins/acl/lang/es/lang.php
+++ b/lib/plugins/acl/lang/es/lang.php
@@ -26,8 +26,8 @@
* @author Mercè López mercelz@gmail.com
*/
$lang['admin_acl'] = 'Administración de lista de control de acceso';
-$lang['acl_group'] = 'Grupo';
-$lang['acl_user'] = 'Usuario';
+$lang['acl_group'] = 'Grupo:';
+$lang['acl_user'] = 'Usuario:';
$lang['acl_perms'] = 'Permiso para';
$lang['page'] = 'Página';
$lang['namespace'] = 'Espacio de nombres';
diff --git a/lib/plugins/acl/lang/et/lang.php b/lib/plugins/acl/lang/et/lang.php
index b591456e8..d1a047aff 100644
--- a/lib/plugins/acl/lang/et/lang.php
+++ b/lib/plugins/acl/lang/et/lang.php
@@ -11,8 +11,8 @@
* @author Janar Leas <janar.leas@eesti.ee>
*/
$lang['admin_acl'] = 'Ligipääsukontrolli nimekirja haldamine';
-$lang['acl_group'] = 'Rühm';
-$lang['acl_user'] = 'Kasutaja';
+$lang['acl_group'] = 'Rühm:';
+$lang['acl_user'] = 'Kasutaja:';
$lang['acl_perms'] = 'Lubatud';
$lang['page'] = 'leht';
$lang['namespace'] = 'Nimeruum';
diff --git a/lib/plugins/acl/lang/eu/lang.php b/lib/plugins/acl/lang/eu/lang.php
index b9285ff36..f051523d9 100644
--- a/lib/plugins/acl/lang/eu/lang.php
+++ b/lib/plugins/acl/lang/eu/lang.php
@@ -6,8 +6,8 @@
* @author Zigor Astarbe <astarbe@gmail.com>
*/
$lang['admin_acl'] = 'Atzipen Kontrol Listaren Kudeaketa';
-$lang['acl_group'] = 'Taldea';
-$lang['acl_user'] = 'Erabiltzailea';
+$lang['acl_group'] = 'Taldea:';
+$lang['acl_user'] = 'Erabiltzailea:';
$lang['acl_perms'] = 'Baimenak honetarako:';
$lang['page'] = 'Orria';
$lang['namespace'] = 'Izen-espazioa';
diff --git a/lib/plugins/acl/lang/fa/lang.php b/lib/plugins/acl/lang/fa/lang.php
index 24bebaeaf..3564f6a39 100644
--- a/lib/plugins/acl/lang/fa/lang.php
+++ b/lib/plugins/acl/lang/fa/lang.php
@@ -12,8 +12,8 @@
* @author AmirH Hassaneini <mytechmix@gmail.com>
*/
$lang['admin_acl'] = 'مدیریت کنترل دسترسی‌ها';
-$lang['acl_group'] = 'گروه';
-$lang['acl_user'] = 'کاربر';
+$lang['acl_group'] = 'گروه:';
+$lang['acl_user'] = 'کاربر:';
$lang['acl_perms'] = 'مجوز برای';
$lang['page'] = 'صفحه';
$lang['namespace'] = 'فضای‌نام';
diff --git a/lib/plugins/acl/lang/fi/lang.php b/lib/plugins/acl/lang/fi/lang.php
index 50224dfb4..2dfc35801 100644
--- a/lib/plugins/acl/lang/fi/lang.php
+++ b/lib/plugins/acl/lang/fi/lang.php
@@ -9,8 +9,8 @@
* @author Sami Olmari <sami@olmari.fi>
*/
$lang['admin_acl'] = 'Käyttöoikeudet (ACL)';
-$lang['acl_group'] = 'Ryhmä';
-$lang['acl_user'] = 'Käyttäjä';
+$lang['acl_group'] = 'Ryhmä:';
+$lang['acl_user'] = 'Käyttäjä:';
$lang['acl_perms'] = 'Oikeudet';
$lang['page'] = 'Sivu';
$lang['namespace'] = 'Nimiavaruus';
diff --git a/lib/plugins/acl/lang/fr/lang.php b/lib/plugins/acl/lang/fr/lang.php
index dc17cf79e..9539c5be5 100644
--- a/lib/plugins/acl/lang/fr/lang.php
+++ b/lib/plugins/acl/lang/fr/lang.php
@@ -28,8 +28,8 @@
* @author Bruno Veilleux <bruno.vey@gmail.com>
*/
$lang['admin_acl'] = 'Gestion de la liste des contrôles d\'accès (ACL)';
-$lang['acl_group'] = 'Groupe';
-$lang['acl_user'] = 'Utilisateur';
+$lang['acl_group'] = 'Groupe:';
+$lang['acl_user'] = 'Utilisateur:';
$lang['acl_perms'] = 'Autorisations pour';
$lang['page'] = 'Page';
$lang['namespace'] = 'Catégorie';
diff --git a/lib/plugins/acl/lang/gl/lang.php b/lib/plugins/acl/lang/gl/lang.php
index 3325bfd07..74d2a7943 100644
--- a/lib/plugins/acl/lang/gl/lang.php
+++ b/lib/plugins/acl/lang/gl/lang.php
@@ -7,8 +7,8 @@
* @author Rodrigo Rega <rodrigorega@gmail.com>
*/
$lang['admin_acl'] = 'Xestión da Lista de Control de Acceso (ACL)';
-$lang['acl_group'] = 'Grupo';
-$lang['acl_user'] = 'Usuario';
+$lang['acl_group'] = 'Grupo:';
+$lang['acl_user'] = 'Usuario:';
$lang['acl_perms'] = 'Permisos para';
$lang['page'] = 'Páxina';
$lang['namespace'] = 'Nome de espazo';
diff --git a/lib/plugins/acl/lang/he/lang.php b/lib/plugins/acl/lang/he/lang.php
index 6716081eb..2369b8010 100644
--- a/lib/plugins/acl/lang/he/lang.php
+++ b/lib/plugins/acl/lang/he/lang.php
@@ -10,8 +10,8 @@
* @author Yaron Shahrabani <sh.yaron@gmail.com>
*/
$lang['admin_acl'] = 'ניהול רשימת בקרת גישות';
-$lang['acl_group'] = 'קבוצה';
-$lang['acl_user'] = 'משתמש';
+$lang['acl_group'] = 'קבוצה:';
+$lang['acl_user'] = 'משתמש:';
$lang['acl_perms'] = 'הרשאות עבור';
$lang['page'] = 'דף';
$lang['namespace'] = 'מרחב שמות';
diff --git a/lib/plugins/acl/lang/hr/lang.php b/lib/plugins/acl/lang/hr/lang.php
index 8c21f1b0b..7c2716978 100644
--- a/lib/plugins/acl/lang/hr/lang.php
+++ b/lib/plugins/acl/lang/hr/lang.php
@@ -7,8 +7,8 @@
* @author Dejan Igrec dejan.igrec@gmail.com
*/
$lang['admin_acl'] = 'Upravljanje listom kontrole pristupa';
-$lang['acl_group'] = 'Grupa';
-$lang['acl_user'] = 'Korisnik';
+$lang['acl_group'] = 'Grupa:';
+$lang['acl_user'] = 'Korisnik:';
$lang['acl_perms'] = 'Dozvole za';
$lang['page'] = 'Stranica';
$lang['namespace'] = 'Imenski prostor';
diff --git a/lib/plugins/acl/lang/ia/lang.php b/lib/plugins/acl/lang/ia/lang.php
index f7d076539..121424c47 100644
--- a/lib/plugins/acl/lang/ia/lang.php
+++ b/lib/plugins/acl/lang/ia/lang.php
@@ -6,8 +6,8 @@
* @author Martijn Dekker <martijn@inlv.org>
*/
$lang['admin_acl'] = 'Gestion de listas de controlo de accesso';
-$lang['acl_group'] = 'Gruppo';
-$lang['acl_user'] = 'Usator';
+$lang['acl_group'] = 'Gruppo:';
+$lang['acl_user'] = 'Usator:';
$lang['acl_perms'] = 'Permissiones pro';
$lang['page'] = 'Pagina';
$lang['namespace'] = 'Spatio de nomines';
diff --git a/lib/plugins/acl/lang/id/lang.php b/lib/plugins/acl/lang/id/lang.php
index 6f619c5ec..3b0ecf446 100644
--- a/lib/plugins/acl/lang/id/lang.php
+++ b/lib/plugins/acl/lang/id/lang.php
@@ -7,8 +7,8 @@
* @author Yustinus Waruwu <juswaruwu@gmail.com>
*/
$lang['admin_acl'] = 'Manajemen Daftar Pengendali Akses';
-$lang['acl_group'] = 'Grup';
-$lang['acl_user'] = 'User';
+$lang['acl_group'] = 'Grup:';
+$lang['acl_user'] = 'User:';
$lang['acl_perms'] = 'Ijin untuk';
$lang['page'] = 'Halaman';
$lang['namespace'] = 'Namespace';
diff --git a/lib/plugins/acl/lang/is/lang.php b/lib/plugins/acl/lang/is/lang.php
index b45faa80a..13ed7bfd7 100644
--- a/lib/plugins/acl/lang/is/lang.php
+++ b/lib/plugins/acl/lang/is/lang.php
@@ -6,8 +6,8 @@
* @author Ólafur Gunnlaugsson <oli@audiotools.com>
* @author Erik Bjørn Pedersen <erik.pedersen@shaw.ca>
*/
-$lang['acl_group'] = 'Hópur';
-$lang['acl_user'] = 'Notandi';
+$lang['acl_group'] = 'Hópur:';
+$lang['acl_user'] = 'Notandi:';
$lang['page'] = 'Síða';
$lang['namespace'] = 'Nafnrými';
$lang['btn_select'] = 'Veldu';
diff --git a/lib/plugins/acl/lang/it/lang.php b/lib/plugins/acl/lang/it/lang.php
index ba2d0fd32..82827510f 100644
--- a/lib/plugins/acl/lang/it/lang.php
+++ b/lib/plugins/acl/lang/it/lang.php
@@ -17,8 +17,8 @@
* @author snarchio@gmail.com
*/
$lang['admin_acl'] = 'Gestione Lista Controllo Accessi (ACL)';
-$lang['acl_group'] = 'Gruppo';
-$lang['acl_user'] = 'Utente';
+$lang['acl_group'] = 'Gruppo:';
+$lang['acl_user'] = 'Utente:';
$lang['acl_perms'] = 'Permessi per';
$lang['page'] = 'Pagina';
$lang['namespace'] = 'Categoria';
diff --git a/lib/plugins/acl/lang/ja/lang.php b/lib/plugins/acl/lang/ja/lang.php
index 61fc1ea86..203ab96d2 100644
--- a/lib/plugins/acl/lang/ja/lang.php
+++ b/lib/plugins/acl/lang/ja/lang.php
@@ -12,8 +12,8 @@
* @author Satoshi Sahara <sahara.satoshi@gmail.com>
*/
$lang['admin_acl'] = 'アクセスコントロール管理';
-$lang['acl_group'] = 'グループ';
-$lang['acl_user'] = 'ユーザー';
+$lang['acl_group'] = 'グループ:';
+$lang['acl_user'] = 'ユーザー:';
$lang['acl_perms'] = '権限を追加';
$lang['page'] = '文書';
$lang['namespace'] = '名前空間';
diff --git a/lib/plugins/acl/lang/kk/lang.php b/lib/plugins/acl/lang/kk/lang.php
index f21b93132..28984fd6d 100644
--- a/lib/plugins/acl/lang/kk/lang.php
+++ b/lib/plugins/acl/lang/kk/lang.php
@@ -4,7 +4,7 @@
*
* @author Nurgozha Kaliaskarov astana08@gmail.com
*/
-$lang['acl_group'] = 'Группа';
-$lang['acl_user'] = 'Пайдаланушы';
+$lang['acl_group'] = 'Группа:';
+$lang['acl_user'] = 'Пайдаланушы:';
$lang['page'] = 'Бет';
$lang['acl_perm1'] = 'Оқу';
diff --git a/lib/plugins/acl/lang/ko/lang.php b/lib/plugins/acl/lang/ko/lang.php
index e06eb662c..35563ff6c 100644
--- a/lib/plugins/acl/lang/ko/lang.php
+++ b/lib/plugins/acl/lang/ko/lang.php
@@ -15,8 +15,8 @@
* @author Garam <rowain8@gmail.com>
*/
$lang['admin_acl'] = '접근 제어 목록 관리';
-$lang['acl_group'] = '그룹';
-$lang['acl_user'] = '사용자';
+$lang['acl_group'] = '그룹:';
+$lang['acl_user'] = '사용자:';
$lang['acl_perms'] = '권한';
$lang['page'] = '문서';
$lang['namespace'] = '이름공간';
diff --git a/lib/plugins/acl/lang/la/lang.php b/lib/plugins/acl/lang/la/lang.php
index 941de1f79..3779ba745 100644
--- a/lib/plugins/acl/lang/la/lang.php
+++ b/lib/plugins/acl/lang/la/lang.php
@@ -5,8 +5,8 @@
* @author Massimiliano Vassalli <vassalli.max@gmail.com>
*/
$lang['admin_acl'] = 'Administratio Indicis Custodiae Aditus';
-$lang['acl_group'] = 'Grex';
-$lang['acl_user'] = 'Sodalis';
+$lang['acl_group'] = 'Grex:';
+$lang['acl_user'] = 'Sodalis:';
$lang['acl_perms'] = 'Facultas:';
$lang['page'] = 'Pagina';
$lang['namespace'] = 'Genus';
diff --git a/lib/plugins/acl/lang/lt/lang.php b/lib/plugins/acl/lang/lt/lang.php
index f11944746..ef339177b 100644
--- a/lib/plugins/acl/lang/lt/lang.php
+++ b/lib/plugins/acl/lang/lt/lang.php
@@ -8,8 +8,8 @@
* @author Arunas Vaitekunas <aras@fan.lt>
*/
$lang['admin_acl'] = 'Priėjimo Kontrolės Sąrašų valdymas';
-$lang['acl_group'] = 'Grupė';
-$lang['acl_user'] = 'Vartotojas';
+$lang['acl_group'] = 'Grupė:';
+$lang['acl_user'] = 'Vartotojas:';
$lang['acl_perms'] = 'Leidimai';
$lang['page'] = 'Puslapis';
$lang['namespace'] = 'Pavadinimas';
diff --git a/lib/plugins/acl/lang/lv/lang.php b/lib/plugins/acl/lang/lv/lang.php
index f478b32c6..c0acdd733 100644
--- a/lib/plugins/acl/lang/lv/lang.php
+++ b/lib/plugins/acl/lang/lv/lang.php
@@ -1,13 +1,13 @@
<?php
+
/**
- * latvian language file
- *
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
* @author Aivars Miška <allefm@gmail.com>
*/
$lang['admin_acl'] = 'Piekļuves tiesību vadība';
-$lang['acl_group'] = 'Grupa';
-$lang['acl_user'] = 'Lietotājs';
+$lang['acl_group'] = 'Grupa:';
+$lang['acl_user'] = 'Lietotājs:';
$lang['acl_perms'] = 'Tiesības';
$lang['page'] = 'Lapa';
$lang['namespace'] = 'Nodaļa';
diff --git a/lib/plugins/acl/lang/mk/lang.php b/lib/plugins/acl/lang/mk/lang.php
index d576c3d1d..27f41e776 100644
--- a/lib/plugins/acl/lang/mk/lang.php
+++ b/lib/plugins/acl/lang/mk/lang.php
@@ -4,8 +4,8 @@
*
* @author Dimitar Talevski <dimi3.14@gmail.com>
*/
-$lang['acl_group'] = 'Група';
-$lang['acl_user'] = 'Корисник';
+$lang['acl_group'] = 'Група:';
+$lang['acl_user'] = 'Корисник:';
$lang['acl_perms'] = 'Пермисии за';
$lang['page'] = 'Страница';
$lang['btn_select'] = 'Избери';
diff --git a/lib/plugins/acl/lang/mr/lang.php b/lib/plugins/acl/lang/mr/lang.php
index 978df758a..1094ed768 100644
--- a/lib/plugins/acl/lang/mr/lang.php
+++ b/lib/plugins/acl/lang/mr/lang.php
@@ -8,8 +8,8 @@
* @author shantanoo@gmail.com
*/
$lang['admin_acl'] = 'Access Control List व्यवस्थापन';
-$lang['acl_group'] = 'गट';
-$lang['acl_user'] = 'सदस्य';
+$lang['acl_group'] = 'गट:';
+$lang['acl_user'] = 'सदस्य:';
$lang['acl_perms'] = 'परवानगी \'च्या साठी';
$lang['page'] = 'पान';
$lang['namespace'] = 'नेमस्पेस';
diff --git a/lib/plugins/acl/lang/ne/lang.php b/lib/plugins/acl/lang/ne/lang.php
index 5e6196a30..481b39ad2 100644
--- a/lib/plugins/acl/lang/ne/lang.php
+++ b/lib/plugins/acl/lang/ne/lang.php
@@ -8,8 +8,8 @@
* @author Saroj Dhakal<lotusnagarkot@yahoo.com>
*/
$lang['admin_acl'] = 'एक्सेस कन्ट्रोल लिस्ट व्यवस्थापन';
-$lang['acl_group'] = 'समूह';
-$lang['acl_user'] = 'प्रोगकर्ता';
+$lang['acl_group'] = 'समूह:';
+$lang['acl_user'] = 'प्रोगकर्ता:';
$lang['acl_perms'] = 'को लागि अनुमति';
$lang['page'] = 'पृष्ठ';
$lang['namespace'] = 'नेमस्पेस';
diff --git a/lib/plugins/acl/lang/nl/lang.php b/lib/plugins/acl/lang/nl/lang.php
index abb81ae06..a73d13344 100644
--- a/lib/plugins/acl/lang/nl/lang.php
+++ b/lib/plugins/acl/lang/nl/lang.php
@@ -23,8 +23,8 @@
* @author Remon <no@email.local>
*/
$lang['admin_acl'] = 'Toegangsrechten';
-$lang['acl_group'] = 'Groep';
-$lang['acl_user'] = 'Gebruiker';
+$lang['acl_group'] = 'Groep:';
+$lang['acl_user'] = 'Gebruiker:';
$lang['acl_perms'] = 'Permissies voor';
$lang['page'] = 'Pagina';
$lang['namespace'] = 'Namespace';
diff --git a/lib/plugins/acl/lang/no/lang.php b/lib/plugins/acl/lang/no/lang.php
index 82cdd5eef..b9664794d 100644
--- a/lib/plugins/acl/lang/no/lang.php
+++ b/lib/plugins/acl/lang/no/lang.php
@@ -20,8 +20,8 @@
* @author Egil Hansen <egil@rosetta.no>
*/
$lang['admin_acl'] = 'Administrasjon av lister for adgangskontroll (ACL)';
-$lang['acl_group'] = 'Gruppe';
-$lang['acl_user'] = 'Bruker';
+$lang['acl_group'] = 'Gruppe:';
+$lang['acl_user'] = 'Bruker:';
$lang['acl_perms'] = 'Rettigheter for';
$lang['page'] = 'Side';
$lang['namespace'] = 'Navnerom';
diff --git a/lib/plugins/acl/lang/pl/lang.php b/lib/plugins/acl/lang/pl/lang.php
index 42ce7fdaf..4fa4e8b9d 100644
--- a/lib/plugins/acl/lang/pl/lang.php
+++ b/lib/plugins/acl/lang/pl/lang.php
@@ -16,8 +16,8 @@
* @author Aoi Karasu <aoikarasu@gmail.com>
*/
$lang['admin_acl'] = 'Zarządzanie uprawnieniami';
-$lang['acl_group'] = 'Grupa';
-$lang['acl_user'] = 'Użytkownik';
+$lang['acl_group'] = 'Grupa:';
+$lang['acl_user'] = 'Użytkownik:';
$lang['acl_perms'] = 'Uprawnienia użytkownika';
$lang['page'] = 'Strona';
$lang['namespace'] = 'Katalog';
diff --git a/lib/plugins/acl/lang/pt-br/lang.php b/lib/plugins/acl/lang/pt-br/lang.php
index ef0ae6c8b..227927524 100644
--- a/lib/plugins/acl/lang/pt-br/lang.php
+++ b/lib/plugins/acl/lang/pt-br/lang.php
@@ -22,8 +22,8 @@
* @author Victor Westmann <victor.westmann@gmail.com>
*/
$lang['admin_acl'] = 'Administração da Lista de Controles de Acesso';
-$lang['acl_group'] = 'Grupo';
-$lang['acl_user'] = 'Usuário';
+$lang['acl_group'] = 'Grupo:';
+$lang['acl_user'] = 'Usuário:';
$lang['acl_perms'] = 'Permissões para';
$lang['page'] = 'Página';
$lang['namespace'] = 'Espaço de nomes';
diff --git a/lib/plugins/acl/lang/pt/lang.php b/lib/plugins/acl/lang/pt/lang.php
index 4c2114d67..aef174612 100644
--- a/lib/plugins/acl/lang/pt/lang.php
+++ b/lib/plugins/acl/lang/pt/lang.php
@@ -11,8 +11,8 @@
* @author José Campos zecarlosdecampos@gmail.com
*/
$lang['admin_acl'] = 'Gestão de ACLs';
-$lang['acl_group'] = 'Grupo';
-$lang['acl_user'] = 'Utilizador';
+$lang['acl_group'] = 'Grupo:';
+$lang['acl_user'] = 'Utilizador:';
$lang['acl_perms'] = 'Permissão para';
$lang['page'] = 'Documento';
$lang['namespace'] = 'Namespace';
diff --git a/lib/plugins/acl/lang/ro/lang.php b/lib/plugins/acl/lang/ro/lang.php
index 4d093216b..0d281f049 100644
--- a/lib/plugins/acl/lang/ro/lang.php
+++ b/lib/plugins/acl/lang/ro/lang.php
@@ -13,8 +13,8 @@
* @author Emanuel-Emeric Andrași <em.andrasi@mandrivausers.ro>
*/
$lang['admin_acl'] = 'Managementul Listei de Control a Accesului';
-$lang['acl_group'] = 'Grup';
-$lang['acl_user'] = 'Utilizator';
+$lang['acl_group'] = 'Grup:';
+$lang['acl_user'] = 'Utilizator:';
$lang['acl_perms'] = 'Autorizare pentru';
$lang['page'] = 'Pagina';
$lang['namespace'] = 'Spaţiu de nume';
diff --git a/lib/plugins/acl/lang/ru/lang.php b/lib/plugins/acl/lang/ru/lang.php
index ff4740676..b49d216f9 100644
--- a/lib/plugins/acl/lang/ru/lang.php
+++ b/lib/plugins/acl/lang/ru/lang.php
@@ -19,8 +19,8 @@
* @author Ivan I. Udovichenko (sendtome@mymailbox.pp.ua)
*/
$lang['admin_acl'] = 'Управление списками контроля доступа';
-$lang['acl_group'] = 'Группа';
-$lang['acl_user'] = 'Пользователь';
+$lang['acl_group'] = 'Группа:';
+$lang['acl_user'] = 'Пользователь:';
$lang['acl_perms'] = 'Права доступа для';
$lang['page'] = 'Страница';
$lang['namespace'] = 'Пространство имён';
diff --git a/lib/plugins/acl/lang/sk/lang.php b/lib/plugins/acl/lang/sk/lang.php
index 51837d4b4..001218304 100644
--- a/lib/plugins/acl/lang/sk/lang.php
+++ b/lib/plugins/acl/lang/sk/lang.php
@@ -9,8 +9,8 @@
* @author Martin Michalek <michalek.dev@gmail.com>
*/
$lang['admin_acl'] = 'Správa zoznamu prístupových práv';
-$lang['acl_group'] = 'Skupina';
-$lang['acl_user'] = 'Užívateľ';
+$lang['acl_group'] = 'Skupina:';
+$lang['acl_user'] = 'Užívateľ:';
$lang['acl_perms'] = 'Práva pre';
$lang['page'] = 'Stránka';
$lang['namespace'] = 'Menný priestor';
diff --git a/lib/plugins/acl/lang/sl/lang.php b/lib/plugins/acl/lang/sl/lang.php
index 303b18cff..84c2088e8 100644
--- a/lib/plugins/acl/lang/sl/lang.php
+++ b/lib/plugins/acl/lang/sl/lang.php
@@ -9,8 +9,8 @@
* @author Matej Urbančič (mateju@svn.gnome.org)
*/
$lang['admin_acl'] = 'Upravljanje dostopa';
-$lang['acl_group'] = 'Skupina';
-$lang['acl_user'] = 'Uporabnik';
+$lang['acl_group'] = 'Skupina:';
+$lang['acl_user'] = 'Uporabnik:';
$lang['acl_perms'] = 'Dovoljenja za';
$lang['page'] = 'Stran';
$lang['namespace'] = 'Imenski prostor';
diff --git a/lib/plugins/acl/lang/sq/lang.php b/lib/plugins/acl/lang/sq/lang.php
index 30fc99bb0..3edd70947 100644
--- a/lib/plugins/acl/lang/sq/lang.php
+++ b/lib/plugins/acl/lang/sq/lang.php
@@ -5,8 +5,8 @@
* @author Leonard Elezi leonard.elezi@depinfo.info
*/
$lang['admin_acl'] = 'Menaxhimi i Listës së Kontrollit të Aksesit';
-$lang['acl_group'] = 'Grup';
-$lang['acl_user'] = 'Përdorues';
+$lang['acl_group'] = 'Grup:';
+$lang['acl_user'] = 'Përdorues:';
$lang['acl_perms'] = 'Të drejta për';
$lang['page'] = 'Faqe';
$lang['namespace'] = 'Hapësira e Emrit';
diff --git a/lib/plugins/acl/lang/sr/lang.php b/lib/plugins/acl/lang/sr/lang.php
index 20fbb0382..0a94418c7 100644
--- a/lib/plugins/acl/lang/sr/lang.php
+++ b/lib/plugins/acl/lang/sr/lang.php
@@ -9,8 +9,8 @@
* @author Miroslav Šolti <solti.miroslav@gmail.com>
*/
$lang['admin_acl'] = 'Управљање листом контроле приступа';
-$lang['acl_group'] = 'Група';
-$lang['acl_user'] = 'Корисник';
+$lang['acl_group'] = 'Група:';
+$lang['acl_user'] = 'Корисник:';
$lang['acl_perms'] = 'Дозволе за';
$lang['page'] = 'Страница';
$lang['namespace'] = 'Именски простор';
diff --git a/lib/plugins/acl/lang/sv/lang.php b/lib/plugins/acl/lang/sv/lang.php
index f226542e6..34c1c6624 100644
--- a/lib/plugins/acl/lang/sv/lang.php
+++ b/lib/plugins/acl/lang/sv/lang.php
@@ -18,8 +18,8 @@
* @author Smorkster Andersson smorkster@gmail.com
*/
$lang['admin_acl'] = 'Hantera behörighetslistan (ACL)';
-$lang['acl_group'] = 'Grupp';
-$lang['acl_user'] = 'Användare';
+$lang['acl_group'] = 'Grupp:';
+$lang['acl_user'] = 'Användare:';
$lang['acl_perms'] = 'Behörighet för';
$lang['page'] = 'Sida';
$lang['namespace'] = 'Namnrymd';
diff --git a/lib/plugins/acl/lang/th/lang.php b/lib/plugins/acl/lang/th/lang.php
index 472c33cdc..46bd4535c 100644
--- a/lib/plugins/acl/lang/th/lang.php
+++ b/lib/plugins/acl/lang/th/lang.php
@@ -8,8 +8,8 @@
* @author Thanasak Sompaisansin <jombthep@gmail.com>
*/
$lang['admin_acl'] = 'จัดการรายชื่อเพื่อควบคุมการเข้าถึง (Access Control List:ACL)';
-$lang['acl_group'] = 'กลุ่ม';
-$lang['acl_user'] = 'ผู้ใช้';
+$lang['acl_group'] = 'กลุ่ม:';
+$lang['acl_user'] = 'ผู้ใช้:';
$lang['acl_perms'] = 'สิทธิสำหรับ';
$lang['page'] = 'เพจ';
$lang['namespace'] = 'เนมสเปซ';
diff --git a/lib/plugins/acl/lang/tr/lang.php b/lib/plugins/acl/lang/tr/lang.php
index a9699a5f9..3c3e3dbc1 100644
--- a/lib/plugins/acl/lang/tr/lang.php
+++ b/lib/plugins/acl/lang/tr/lang.php
@@ -11,8 +11,8 @@
* @author farukerdemoncel@gmail.com
*/
$lang['admin_acl'] = 'Erişim Kontrol Listesi (ACL) Yönetimi';
-$lang['acl_group'] = 'Grup';
-$lang['acl_user'] = 'Kullanıcı';
+$lang['acl_group'] = 'Grup:';
+$lang['acl_user'] = 'Kullanıcı:';
$lang['acl_perms'] = 'Şunun için yetkiler:';
$lang['page'] = 'Sayfa';
$lang['namespace'] = 'Namespace';
diff --git a/lib/plugins/acl/lang/uk/lang.php b/lib/plugins/acl/lang/uk/lang.php
index 97c66d8a2..4d8b52e1b 100644
--- a/lib/plugins/acl/lang/uk/lang.php
+++ b/lib/plugins/acl/lang/uk/lang.php
@@ -11,8 +11,8 @@
* @author Ulrikhe Lukoie <lukoie@gmail>.com
*/
$lang['admin_acl'] = 'Керування списками контролю доступу';
-$lang['acl_group'] = 'Група';
-$lang['acl_user'] = 'Користувач';
+$lang['acl_group'] = 'Група:';
+$lang['acl_user'] = 'Користувач:';
$lang['acl_perms'] = 'Права доступу для';
$lang['page'] = 'Сторінка';
$lang['namespace'] = 'Простір імен';
diff --git a/lib/plugins/acl/lang/vi/lang.php b/lib/plugins/acl/lang/vi/lang.php
index 4fc3388ff..8ca888cae 100644
--- a/lib/plugins/acl/lang/vi/lang.php
+++ b/lib/plugins/acl/lang/vi/lang.php
@@ -6,8 +6,8 @@
* @author NukeViet <admin@nukeviet.vn>
*/
$lang['admin_acl'] = 'Quản lý danh sách quyền truy cập';
-$lang['acl_group'] = 'Nhóm';
-$lang['acl_user'] = 'Thành viên';
+$lang['acl_group'] = 'Nhóm:';
+$lang['acl_user'] = 'Thành viên:';
$lang['acl_perms'] = 'Cấp phép cho';
$lang['page'] = 'Trang';
$lang['namespace'] = 'Thư mục';
diff --git a/lib/plugins/acl/lang/zh-tw/lang.php b/lib/plugins/acl/lang/zh-tw/lang.php
index a56435318..c37727212 100644
--- a/lib/plugins/acl/lang/zh-tw/lang.php
+++ b/lib/plugins/acl/lang/zh-tw/lang.php
@@ -15,8 +15,8 @@
* @author Ichirou Uchiki <syaoranhinata@gmail.com>
*/
$lang['admin_acl'] = '管理存取控制表 (ACL)';
-$lang['acl_group'] = '群組';
-$lang['acl_user'] = '使用者';
+$lang['acl_group'] = '群組:';
+$lang['acl_user'] = '使用者:';
$lang['acl_perms'] = '設定權限於';
$lang['page'] = '頁面';
$lang['namespace'] = '分類名稱';
diff --git a/lib/plugins/acl/lang/zh/lang.php b/lib/plugins/acl/lang/zh/lang.php
index 029446cca..4294e6034 100644
--- a/lib/plugins/acl/lang/zh/lang.php
+++ b/lib/plugins/acl/lang/zh/lang.php
@@ -17,8 +17,8 @@
* @author Shuo-Ting Jian <shoting@gmail.com>
*/
$lang['admin_acl'] = '访问控制列表(ACL)管理器';
-$lang['acl_group'] = '组';
-$lang['acl_user'] = '用户';
+$lang['acl_group'] = '组:';
+$lang['acl_user'] = '用户:';
$lang['acl_perms'] = '许可给';
$lang['page'] = '页面';
$lang['namespace'] = '命名空间';
diff --git a/lib/plugins/authad/lang/hu/lang.php b/lib/plugins/authad/lang/hu/lang.php
new file mode 100644
index 000000000..7bb6084b0
--- /dev/null
+++ b/lib/plugins/authad/lang/hu/lang.php
@@ -0,0 +1,8 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Marton Sebok <sebokmarton@gmail.com>
+ */
+$lang['domain'] = 'Bejelentkezési tartomány';
diff --git a/lib/plugins/authad/lang/ja/lang.php b/lib/plugins/authad/lang/ja/lang.php
new file mode 100644
index 000000000..b40aa5da3
--- /dev/null
+++ b/lib/plugins/authad/lang/ja/lang.php
@@ -0,0 +1,8 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author PzF_X <jp_minecraft@yahoo.co.jp>
+ */
+$lang['domain'] = 'ログオン時のドメイン';
diff --git a/lib/plugins/authad/lang/ja/settings.php b/lib/plugins/authad/lang/ja/settings.php
index f308249ef..118e8348c 100644
--- a/lib/plugins/authad/lang/ja/settings.php
+++ b/lib/plugins/authad/lang/ja/settings.php
@@ -5,6 +5,7 @@
*
* @author Satoshi Sahara <sahara.satoshi@gmail.com>
* @author Hideaki SAWADA <chuno@live.jp>
+ * @author PzF_X <jp_minecraft@yahoo.co.jp>
*/
$lang['account_suffix'] = 'アカウントの接尾語。例:<code>@my.domain.org</code>';
$lang['base_dn'] = 'ベースDN。例:<code>DC=my,DC=domain,DC=org</code>';
@@ -12,6 +13,7 @@ $lang['domain_controllers'] = 'ドメインコントローラのカンマ区
$lang['admin_username'] = '全ユーザーデータへのアクセス権のある特権Active Directoryユーザー。任意ですが、メール通知の登録等の特定の動作に必要。';
$lang['admin_password'] = '上記ユーザーのパスワード';
$lang['sso'] = 'Kerberos か NTLM を使ったシングルサインオン(SSO)をしますか?';
+$lang['sso_charset'] = 'サーバーは空のUTF-8かLatin-1でKerberosかNTLMユーザネームを送信します。iconv拡張モジュールが必要です。';
$lang['real_primarygroup'] = '"Domain Users" を仮定する代わりに本当のプライマリグループを解決する(低速)';
$lang['use_ssl'] = 'SSL接続を使用しますか?使用した場合、下のSSLを有効にしないでください。';
$lang['use_tls'] = 'TLS接続を使用しますか?使用した場合、上のSSLを有効にしないでください。';
diff --git a/lib/plugins/authad/lang/lv/lang.php b/lib/plugins/authad/lang/lv/lang.php
new file mode 100644
index 000000000..74becf756
--- /dev/null
+++ b/lib/plugins/authad/lang/lv/lang.php
@@ -0,0 +1,8 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Aivars Miška <allefm@gmail.com>
+ */
+$lang['domain'] = 'Iežurnālēšanās domēns';
diff --git a/lib/plugins/authad/lang/lv/settings.php b/lib/plugins/authad/lang/lv/settings.php
new file mode 100644
index 000000000..5272d27d0
--- /dev/null
+++ b/lib/plugins/authad/lang/lv/settings.php
@@ -0,0 +1,11 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Aivars Miška <allefm@gmail.com>
+ */
+$lang['account_suffix'] = 'Jūsu konta sufikss. Piemēram, <code>@my.domain.org</code>';
+$lang['domain_controllers'] = 'Ar komatiem atdalīts domēna kontroleru saraksts. Piemēram, <code>srv1.domain.org,srv2.domain.org</code>';
+$lang['admin_password'] = 'Minētā lietotāja parole.';
+$lang['expirywarn'] = 'Cik dienas iepriekš brīdināt lietotāju par paroles termiņa beigām. Ierakstīt 0, lai atspējotu.';
diff --git a/lib/plugins/authad/lang/pl/settings.php b/lib/plugins/authad/lang/pl/settings.php
index 4e397fc98..91cadca6f 100644
--- a/lib/plugins/authad/lang/pl/settings.php
+++ b/lib/plugins/authad/lang/pl/settings.php
@@ -5,6 +5,7 @@
*
* @author Tomasz Bosak <bosak.tomasz@gmail.com>
* @author Paweł Jan Czochański <czochanski@gmail.com>
+ * @author Mati <mackosa@wp.pl>
*/
$lang['account_suffix'] = 'Przyrostek twojej nazwy konta np. <code>@my.domain.org</code>';
$lang['base_dn'] = 'Twoje bazowe DN. Na przykład: <code>DC=my,DC=domain,DC=org</code>';
diff --git a/lib/plugins/authad/lang/pt/lang.php b/lib/plugins/authad/lang/pt/lang.php
new file mode 100644
index 000000000..f307bc901
--- /dev/null
+++ b/lib/plugins/authad/lang/pt/lang.php
@@ -0,0 +1,8 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Paulo Silva <paulotsilva@yahoo.com>
+ */
+$lang['domain'] = 'Domínio de Início de Sessão';
diff --git a/lib/plugins/authad/lang/pt/settings.php b/lib/plugins/authad/lang/pt/settings.php
index 45eff5e96..dc60d7259 100644
--- a/lib/plugins/authad/lang/pt/settings.php
+++ b/lib/plugins/authad/lang/pt/settings.php
@@ -4,7 +4,12 @@
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author André Neves <drakferion@gmail.com>
+ * @author Murilo <muriloricci@hotmail.com>
+ * @author Paulo Silva <paulotsilva@yahoo.com>
*/
+$lang['account_suffix'] = 'O sufixo da sua conta. Por exemplo, <code>@my.domain.org</code>';
+$lang['domain_controllers'] = 'Uma lista separada por vírgulas de Controladores de Domínio (AD DC). Ex.: <code>srv1.domain.org,srv2.domain.org</code>';
+$lang['admin_username'] = 'Um utilizador com privilégios na Active Directory que tenha acesso aos dados de todos os outros utilizadores. Opcional, mas necessário para certas ações como enviar emails de subscrição.';
$lang['admin_password'] = 'A senha para o utilizador acima.';
$lang['sso'] = 'Deve ser usado o Single-Sign-On via Kerberos ou NTLM?';
$lang['use_ssl'] = 'Usar ligação SSL? Se usada, não ative TLS abaixo.';
diff --git a/lib/plugins/authad/lang/zh/lang.php b/lib/plugins/authad/lang/zh/lang.php
new file mode 100644
index 000000000..2a05aa168
--- /dev/null
+++ b/lib/plugins/authad/lang/zh/lang.php
@@ -0,0 +1,8 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author lainme <lainme993@gmail.com>
+ */
+$lang['domain'] = '登录域';
diff --git a/lib/plugins/authldap/auth.php b/lib/plugins/authldap/auth.php
index 6c3637e15..0d5e130ea 100644
--- a/lib/plugins/authldap/auth.php
+++ b/lib/plugins/authldap/auth.php
@@ -36,8 +36,8 @@ class auth_plugin_authldap extends DokuWiki_Auth_Plugin {
return;
}
- // auth_ldap currently just handles authentication, so no
- // capabilities are set
+ // Add the capabilities to change the password
+ $this->cando['modPass'] = true;
}
/**
@@ -264,6 +264,62 @@ class auth_plugin_authldap extends DokuWiki_Auth_Plugin {
}
/**
+ * Definition of the function modifyUser in order to modify the password
+ */
+
+ function modifyUser($user,$changes){
+
+ // open the connection to the ldap
+ if(!$this->_openLDAP()){
+ msg('LDAP cannot connect: '. htmlspecialchars(ldap_error($this->con)));
+ return false;
+ }
+
+ // find the information about the user, in particular the "dn"
+ $info = $this->getUserData($user,true);
+ if(empty($info['dn'])) {
+ msg('LDAP cannot find your user dn');
+ return false;
+ }
+ $dn = $info['dn'];
+
+ // find the old password of the user
+ list($loginuser,$loginsticky,$loginpass) = auth_getCookie();
+ if ($loginuser !== null) { // the user is currently logged in
+ $secret = auth_cookiesalt(!$loginsticky, true);
+ $pass = auth_decrypt($loginpass, $secret);
+
+ // bind with the ldap
+ if(!@ldap_bind($this->con, $dn, $pass)){
+ msg('LDAP user bind failed: '. htmlspecialchars($dn) .': '.htmlspecialchars(ldap_error($this->con)), 0, __LINE__, __FILE__);
+ return false;
+ }
+ } elseif ($this->getConf('binddn') && $this->getConf('bindpw')) {
+ // we are changing the password on behalf of the user (eg: forgotten password)
+ // bind with the superuser ldap
+ if (!@ldap_bind($this->con, $this->getConf('binddn'), $this->getConf('bindpw'))){
+ $this->_debug('LDAP bind as superuser: '.htmlspecialchars(ldap_error($this->con)), 0, __LINE__, __FILE__);
+ return false;
+ }
+ }
+ else {
+ return false; // no otherway
+ }
+
+ // Generate the salted hashed password for LDAP
+ $phash = new PassHash();
+ $hash = $phash->hash_ssha($changes['pass']);
+
+ // change the password
+ if(!@ldap_mod_replace($this->con, $dn,array('userpassword' => $hash))){
+ msg('LDAP mod replace failed: '. htmlspecialchars($dn) .': '.htmlspecialchars(ldap_error($this->con)));
+ return false;
+ }
+
+ return true;
+ }
+
+ /**
* Most values in LDAP are case-insensitive
*
* @return bool
diff --git a/lib/plugins/authldap/lang/it/settings.php b/lib/plugins/authldap/lang/it/settings.php
index eba7cde6e..858c694b8 100644
--- a/lib/plugins/authldap/lang/it/settings.php
+++ b/lib/plugins/authldap/lang/it/settings.php
@@ -5,6 +5,7 @@
*
* @author Edmondo Di Tucci <snarchio@gmail.com>
* @author Claudio Lanconelli <lancos@libero.it>
+ * @author Francesco <francesco.cavalli@hotmail.com>
*/
$lang['server'] = 'Il tuo server LDAP. Inserire o l\'hostname (<code>localhost</code>) oppure un URL completo (<code>ldap://server.tld:389</code>)';
$lang['port'] = 'Porta del server LDAP se non è stato fornito un URL completo più sopra.';
@@ -14,6 +15,11 @@ $lang['userfilter'] = 'Filtro per cercare l\'account utente LDAP. Eg.
$lang['groupfilter'] = 'Filtro per cercare i gruppi LDAP. Eg. <code>(&amp;(objectClass=posixGroup)(|(gidNumber=%{gid})(memberUID=%{user})))</code>';
$lang['version'] = 'Versione protocollo da usare. Pu<code>3</code>';
$lang['starttls'] = 'Usare la connessione TSL?';
+$lang['deref'] = 'Come differenziare un alias?';
$lang['userscope'] = 'Limita il contesto di ricerca per la ricerca degli utenti';
$lang['groupscope'] = 'Limita il contesto di ricerca per la ricerca dei gruppi';
$lang['debug'] = 'In caso di errori mostra ulteriori informazioni di debug';
+$lang['deref_o_0'] = 'LDAP_DEREF_NEVER';
+$lang['deref_o_1'] = 'LDAP_DEREF_SEARCHING';
+$lang['deref_o_2'] = 'LDAP_DEREF_FINDING';
+$lang['deref_o_3'] = 'LDAP_DEREF_ALWAYS';
diff --git a/lib/plugins/authldap/lang/ja/settings.php b/lib/plugins/authldap/lang/ja/settings.php
index 3c0e08f6a..6cff0ea67 100644
--- a/lib/plugins/authldap/lang/ja/settings.php
+++ b/lib/plugins/authldap/lang/ja/settings.php
@@ -6,6 +6,7 @@
* @author Satoshi Sahara <sahara.satoshi@gmail.com>
* @author Hideaki SAWADA <sawadakun@live.jp>
* @author Hideaki SAWADA <chuno@live.jp>
+ * @author PzF_X <jp_minecraft@yahoo.co.jp>
*/
$lang['server'] = 'LDAPサーバー。ホスト名(<code>localhost</code>)又は完全修飾URL(<code>ldap://server.tld:389</code>)';
$lang['port'] = '上記が完全修飾URLでない場合、LDAPサーバーポート';
@@ -15,8 +16,14 @@ $lang['userfilter'] = 'ユーザーアカウントを探すためのL
$lang['groupfilter'] = 'グループを探すLDAP抽出条件。例:<code>(&amp;(objectClass=posixGroup)(|(gidNumber=%{gid})(memberUID=%{user})))</code>';
$lang['version'] = '使用するプロトコルのバージョン。<code>3</code>を設定する必要がある場合があります。';
$lang['starttls'] = 'TLS接続を使用しますか?';
+$lang['referrals'] = '紹介に従いますか?';
+$lang['deref'] = 'どのように間接参照のエイリアスにしますか?';
$lang['binddn'] = '匿名バインドでは不十分な場合、オプションバインドユーザーのDN。例:<code>cn=admin, dc=my, dc=home</code>';
$lang['bindpw'] = '上記ユーザーのパスワード';
+$lang['userscope'] = 'ユーザー検索の範囲を限定させる';
+$lang['groupscope'] = 'グループ検索の範囲を限定させる';
+$lang['groupkey'] = 'ユーザー属性をグループのメンバーシップから設定します(代わりに標準のADグループ)。
+例えば、部署や電話番号などです。';
$lang['debug'] = 'エラーに関して追加のデバッグ情報を表示する。';
$lang['deref_o_0'] = 'LDAP_DEREF_NEVER';
$lang['deref_o_1'] = 'LDAP_DEREF_SEARCHING';
diff --git a/lib/plugins/authldap/lang/lv/settings.php b/lib/plugins/authldap/lang/lv/settings.php
new file mode 100644
index 000000000..90986e4f1
--- /dev/null
+++ b/lib/plugins/authldap/lang/lv/settings.php
@@ -0,0 +1,9 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Aivars Miška <allefm@gmail.com>
+ */
+$lang['starttls'] = 'Lietot TLS savienojumus?';
+$lang['bindpw'] = 'Lietotāja parole';
diff --git a/lib/plugins/authldap/lang/tr/settings.php b/lib/plugins/authldap/lang/tr/settings.php
new file mode 100644
index 000000000..843b7ef9c
--- /dev/null
+++ b/lib/plugins/authldap/lang/tr/settings.php
@@ -0,0 +1,8 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author ilker rifat kapaç <irifat@gmail.com>
+ */
+$lang['bindpw'] = 'Üstteki kullanıcının şifresi';
diff --git a/lib/plugins/authmysql/lang/es/settings.php b/lib/plugins/authmysql/lang/es/settings.php
index a247a44d7..b82620fc6 100644
--- a/lib/plugins/authmysql/lang/es/settings.php
+++ b/lib/plugins/authmysql/lang/es/settings.php
@@ -5,6 +5,7 @@
*
* @author Antonio Bueno <atnbueno@gmail.com>
* @author Eloy <ej.perezgomez@gmail.com>
+ * @author Antonio Castilla <antoniocastilla@trazoide.com>
*/
$lang['server'] = 'Tu servidor MySQL';
$lang['user'] = 'Nombre de usuario MySQL';
@@ -31,5 +32,8 @@ $lang['getUserID'] = 'Sentencia SQL para obtener la clave primaria d
$lang['delUser'] = 'Sentencia SQL para eliminar un usuario';
$lang['delUserRefs'] = 'Sentencia SQL para eliminar un usuario de todos los grupos';
$lang['updateUser'] = 'Sentencia SQL para actualizar un perfil de usuario';
+$lang['delUserGroup'] = 'Sentencia SQL para eliminar un usuario de un grupo dado';
+$lang['getGroupID'] = 'Sentencia SQL para obtener la clave principal de un grupo dado';
$lang['debug_o_0'] = 'ninguno';
$lang['debug_o_1'] = 'sólo errores';
+$lang['debug_o_2'] = 'todas las consultas SQL';
diff --git a/lib/plugins/authmysql/lang/it/settings.php b/lib/plugins/authmysql/lang/it/settings.php
index e493ec7e9..10c0de96f 100644
--- a/lib/plugins/authmysql/lang/it/settings.php
+++ b/lib/plugins/authmysql/lang/it/settings.php
@@ -4,5 +4,34 @@
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author Claudio Lanconelli <lancos@libero.it>
+ * @author Mirko <malisan.mirko@gmail.com>
+ * @author Francesco <francesco.cavalli@hotmail.com>
*/
+$lang['server'] = 'Il tuo server MySQL';
+$lang['user'] = 'User name di MySQL';
+$lang['database'] = 'Database da usare';
+$lang['charset'] = 'Set di caratteri usato nel database';
$lang['debug'] = 'Mostra ulteriori informazioni di debug';
+$lang['TablesToLock'] = 'Lista, separata da virgola, delle tabelle che devono essere bloccate in scrittura';
+$lang['checkPass'] = 'Istruzione SQL per il controllo password';
+$lang['getUserInfo'] = 'Istruzione SQL per recuperare le informazioni utente';
+$lang['getUsers'] = 'Istruzione SQL per listare tutti gli utenti';
+$lang['FilterLogin'] = 'Istruzione SQL per per filtrare gli utenti in funzione del "login name"';
+$lang['SortOrder'] = 'Istruzione SQL per ordinare gli utenti';
+$lang['addUser'] = 'Istruzione SQL per aggiungere un nuovo utente';
+$lang['addGroup'] = 'Istruzione SQL per aggiungere un nuovo gruppo';
+$lang['addUserGroup'] = 'Istruzione SQL per aggiungere un utente ad un gruppo esistente';
+$lang['delGroup'] = 'Istruzione SQL per imuovere un gruppo';
+$lang['getUserID'] = 'Istruzione SQL per recuperare la primary key di un utente';
+$lang['delUser'] = 'Istruzione SQL per cancellare un utente';
+$lang['delUserRefs'] = 'Istruzione SQL per rimuovere un utente da tutti i gruppi';
+$lang['updateUser'] = 'Istruzione SQL per aggiornare il profilo utente';
+$lang['UpdateLogin'] = 'Clausola per aggiornare il "login name" dell\'utente';
+$lang['UpdatePass'] = 'Clausola per aggiornare la password utente';
+$lang['UpdateEmail'] = 'Clausola per aggiornare l\'email utente';
+$lang['UpdateName'] = 'Clausola per aggiornare il nome completo';
+$lang['delUserGroup'] = 'Istruzione SQL per rimuovere un utente da un dato gruppo';
+$lang['getGroupID'] = 'Istruzione SQL per avere la primary key di un dato gruppo';
+$lang['debug_o_0'] = 'Nulla';
+$lang['debug_o_1'] = 'Solo in errore';
+$lang['debug_o_2'] = 'Tutte le query SQL';
diff --git a/lib/plugins/authmysql/lang/lv/settings.php b/lib/plugins/authmysql/lang/lv/settings.php
new file mode 100644
index 000000000..8550363c9
--- /dev/null
+++ b/lib/plugins/authmysql/lang/lv/settings.php
@@ -0,0 +1,10 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Aivars Miška <allefm@gmail.com>
+ */
+$lang['user'] = 'MySQL lietotāja vārds';
+$lang['password'] = 'Lietotāja parole';
+$lang['delUser'] = 'SQL pieprasījums lietotāja dzēšanai';
diff --git a/lib/plugins/authmysql/lang/pl/settings.php b/lib/plugins/authmysql/lang/pl/settings.php
index 88cbd5d6f..9dc798ee0 100644
--- a/lib/plugins/authmysql/lang/pl/settings.php
+++ b/lib/plugins/authmysql/lang/pl/settings.php
@@ -4,6 +4,7 @@
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author Paweł Jan Czochański <czochanski@gmail.com>
+ * @author Mati <mackosa@wp.pl>
*/
$lang['server'] = 'Twój server MySQL';
$lang['user'] = 'Nazwa użytkownika MySQL';
@@ -12,3 +13,4 @@ $lang['database'] = 'Używana baza danych';
$lang['charset'] = 'Zestaw znaków uzyty w bazie danych';
$lang['debug'] = 'Wyświetlaj dodatkowe informacje do debugowania.';
$lang['checkPass'] = 'Zapytanie SQL wykorzystywane do sprawdzania haseł.';
+$lang['debug_o_2'] = 'wszystkie zapytania SQL';
diff --git a/lib/plugins/authmysql/lang/tr/settings.php b/lib/plugins/authmysql/lang/tr/settings.php
new file mode 100644
index 000000000..ca6a7c6ad
--- /dev/null
+++ b/lib/plugins/authmysql/lang/tr/settings.php
@@ -0,0 +1,41 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author ilker rifat kapaç <irifat@gmail.com>
+ * @author İlker R. Kapaç <irifat@gmail.com>
+ */
+$lang['server'] = 'Sizin MySQL sunucunuz';
+$lang['user'] = 'MySQL kullanıcısının adı';
+$lang['password'] = 'Üstteki kullanıcı için şifre';
+$lang['database'] = 'Kullanılacak veritabanı';
+$lang['charset'] = 'Veritabanında kullanılacak karakter seti';
+$lang['debug'] = 'İlave hata ayıklama bilgisini görüntüle';
+$lang['checkPass'] = 'Şifreleri kontrol eden SQL ifadesi';
+$lang['getUserInfo'] = 'Kullanıcı bilgilerini getiren SQL ifadesi';
+$lang['getGroups'] = 'Kullanıcının grup üyeliklerini getiren SQL ifadesi';
+$lang['getUsers'] = 'Tüm kullanıcıları listeleyen SQL ifadesi';
+$lang['FilterLogin'] = 'Kullanıcıları giriş yaptıkları isimlere göre süzmek için SQL şartı';
+$lang['FilterName'] = 'Kullanıcıları tam isimlerine göre süzmek için SQL şartı';
+$lang['FilterEmail'] = 'Kullanıcıları e-posta adreslerine göre süzmek için SQL şartı';
+$lang['FilterGroup'] = 'Kullanıcıları üye oldukları grup isimlerine göre süzmek için SQL şartı';
+$lang['SortOrder'] = 'Kullanıcıları sıralamak için SQL şartı';
+$lang['addUser'] = 'Yeni bir kullanıcı ekleyen SQL ifadesi';
+$lang['addGroup'] = 'Yeni bir grup ekleyen SQL ifadesi';
+$lang['addUserGroup'] = 'Varolan gruba yeni bir kullanıcı ekleyen SQL ifadesi';
+$lang['delGroup'] = 'Grup silen SQL ifadesi';
+$lang['getUserID'] = 'Kullanıcının birincil anahtarını getiren SQL ifadesi';
+$lang['delUser'] = 'Kullanıcı silen SQL ifadesi';
+$lang['delUserRefs'] = 'Kullanıcıyı tüm gruplardan çıkartan SQL ifadesi';
+$lang['updateUser'] = 'Kullanıcı profilini güncelleyen SQL ifadesi';
+$lang['UpdateLogin'] = 'Kullanıcının giriş yaptığı ismi güncelleyen, güncelleme şartı';
+$lang['UpdatePass'] = 'Kullanıcının şifresini güncelleyen, güncelleme şartı';
+$lang['UpdateEmail'] = 'Kullanıcının e-posta adresini güncelleyen, güncelleme şartı';
+$lang['UpdateName'] = 'Kullanıcının tam adını güncelleyen, güncelleme şartı';
+$lang['UpdateTarget'] = 'Güncelleme esnasında kullanıcıyı belirleyen, sınır şartı';
+$lang['delUserGroup'] = 'Kullanıcıyı verilen gruptan silen SQL ifadesi';
+$lang['getGroupID'] = 'Verilen grubun birincil anahtarını getiren SQL ifadesi';
+$lang['debug_o_0'] = 'hiçbiri';
+$lang['debug_o_1'] = 'sadece hata olduğunda';
+$lang['debug_o_2'] = 'tüm SQL sorguları';
diff --git a/lib/plugins/authpgsql/lang/es/settings.php b/lib/plugins/authpgsql/lang/es/settings.php
index bee2211f3..2e02fc0ec 100644
--- a/lib/plugins/authpgsql/lang/es/settings.php
+++ b/lib/plugins/authpgsql/lang/es/settings.php
@@ -4,6 +4,23 @@
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author Antonio Bueno <atnbueno@gmail.com>
+ * @author Antonio Castilla <antoniocastilla@trazoide.com>
*/
+$lang['server'] = 'Su servidor PostgreSQL';
+$lang['port'] = 'Puerto de su servidor PostgreSQL';
+$lang['user'] = 'Nombre de usuario PostgreSQL';
$lang['password'] = 'Contraseña del usuario indicado';
$lang['database'] = 'Base de datos a usar';
+$lang['debug'] = 'Muestra la información de depuración adicional';
+$lang['forwardClearPass'] = 'Pasar las contraseñas de usuario en texto plano a las siguientes sentencias de SQL, en lugar de utilizar la opción passcrypt';
+$lang['checkPass'] = 'Sentencia SQL para el control de las contraseñas';
+$lang['getUserInfo'] = 'Sentencia SQL para recuperar información del usuario';
+$lang['getGroups'] = 'Sentencia SQL para recuperar la pertenencia a grupos de un usuario';
+$lang['getUsers'] = 'Sentencia SQL para enumerar todos los usuarios';
+$lang['addUser'] = 'Sentencia de SQL para agregar un nuevo usuario';
+$lang['addGroup'] = 'Sentencia de SQL para agregar un nuevo grupo';
+$lang['addUserGroup'] = 'Sentencia SQL para agregar un usuario a un grupo existente';
+$lang['delGroup'] = 'Instrucción SQL para eliminar un grupo';
+$lang['getUserID'] = 'Sentencia SQL para obtener la clave principal de un usuario';
+$lang['delUser'] = 'Sentencia SQL para eliminar un usuario';
+$lang['getGroupID'] = 'Sentencia SQL para obtener la clave principal de un grupo dado';
diff --git a/lib/plugins/authpgsql/lang/it/settings.php b/lib/plugins/authpgsql/lang/it/settings.php
new file mode 100644
index 000000000..baf40a468
--- /dev/null
+++ b/lib/plugins/authpgsql/lang/it/settings.php
@@ -0,0 +1,11 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Francesco <francesco.cavalli@hotmail.com>
+ */
+$lang['server'] = 'Il tuo server PostgreSQL ';
+$lang['port'] = 'La porta del tuo server PostgreSQL ';
+$lang['user'] = 'Lo username PostgreSQL';
+$lang['database'] = 'Database da usare';
diff --git a/lib/plugins/authpgsql/lang/lv/settings.php b/lib/plugins/authpgsql/lang/lv/settings.php
new file mode 100644
index 000000000..889b9566c
--- /dev/null
+++ b/lib/plugins/authpgsql/lang/lv/settings.php
@@ -0,0 +1,9 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Aivars Miška <allefm@gmail.com>
+ */
+$lang['password'] = 'Lietotāja parole';
+$lang['delUser'] = 'SQL pieprasījums lietotāja dzēšanai';
diff --git a/lib/plugins/authpgsql/lang/pl/settings.php b/lib/plugins/authpgsql/lang/pl/settings.php
new file mode 100644
index 000000000..25a2afd4f
--- /dev/null
+++ b/lib/plugins/authpgsql/lang/pl/settings.php
@@ -0,0 +1,9 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Mati <mackosa@wp.pl>
+ */
+$lang['server'] = 'Twój serwer PostgreSQL';
+$lang['database'] = 'Baza danych do użycia';
diff --git a/lib/plugins/authpgsql/lang/tr/settings.php b/lib/plugins/authpgsql/lang/tr/settings.php
new file mode 100644
index 000000000..f6fef9cde
--- /dev/null
+++ b/lib/plugins/authpgsql/lang/tr/settings.php
@@ -0,0 +1,13 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author İlker R. Kapaç <irifat@gmail.com>
+ */
+$lang['server'] = 'PostgreSQL sunucunuz';
+$lang['port'] = 'PostgreSQL sunucunuzun kapısı (port)';
+$lang['user'] = 'PostgreSQL kullanıcısının adı';
+$lang['password'] = 'Yukarıdaki kullanıcı için şifre';
+$lang['database'] = 'Kullanılacak veritabanı';
+$lang['debug'] = 'İlave hata ayıklama bilgisini görüntüle';
diff --git a/lib/plugins/extension/helper/extension.php b/lib/plugins/extension/helper/extension.php
index 7958cd2da..2aca0e218 100644
--- a/lib/plugins/extension/helper/extension.php
+++ b/lib/plugins/extension/helper/extension.php
@@ -57,6 +57,8 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin {
if(substr($id, 0 , 9) == 'template:'){
$this->base = substr($id, 9);
$this->is_template = true;
+ } else {
+ $this->is_template = false;
}
$this->localInfo = array();
@@ -290,7 +292,7 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin {
*/
public function getUpdateDate() {
if (!empty($this->managerData['updated'])) return $this->managerData['updated'];
- return false;
+ return $this->getInstallDate();
}
/**
@@ -575,6 +577,7 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin {
try {
$installed = $this->installArchive("$tmp/upload.archive", true, $basename);
+ $this->updateManagerData('', $installed);
// purge cache
$this->purgeCache();
}catch (Exception $e){
@@ -594,12 +597,10 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin {
try {
$path = $this->download($url);
$installed = $this->installArchive($path, true);
+ $this->updateManagerData($url, $installed);
- // purge caches
- foreach($installed as $ext => $info){
- $this->setExtension($ext);
- $this->purgeCache();
- }
+ // purge cache
+ $this->purgeCache();
}catch (Exception $e){
throw $e;
}
@@ -613,8 +614,10 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin {
* @return array The list of installed extensions
*/
public function installOrUpdate() {
- $path = $this->download($this->getDownloadURL());
+ $url = $this->getDownloadURL();
+ $path = $this->download($url);
$installed = $this->installArchive($path, $this->isInstalled(), $this->getBase());
+ $this->updateManagerData($url, $installed);
// refresh extension information
if (!isset($installed[$this->getID()])) {
@@ -729,6 +732,37 @@ class helper_plugin_extension_extension extends DokuWiki_Plugin {
}
/**
+ * Save the given URL and current datetime in the manager.dat file of all installed extensions
+ *
+ * @param string $url Where the extension was downloaded from. (empty for manual installs via upload)
+ * @param array $installed Optional list of installed plugins
+ */
+ protected function updateManagerData($url = '', $installed = null) {
+ $origID = $this->getID();
+
+ if(is_null($installed)) {
+ $installed = array($origID);
+ }
+
+ foreach($installed as $ext => $info) {
+ if($this->getID() != $ext) $this->setExtension($ext);
+ if($url) {
+ $this->managerData['downloadurl'] = $url;
+ } elseif(isset($this->managerData['downloadurl'])) {
+ unset($this->managerData['downloadurl']);
+ }
+ if(isset($this->managerData['installed'])) {
+ $this->managerData['updated'] = date('r');
+ } else {
+ $this->managerData['installed'] = date('r');
+ }
+ $this->writeManagerData();
+ }
+
+ if($this->getID() != $origID) $this->setExtension($origID);
+ }
+
+ /**
* Read the manager.dat file
*/
protected function readManagerData() {
diff --git a/lib/plugins/extension/images/disabled.png b/lib/plugins/extension/images/disabled.png
index 7a0dbb3b5..93a813642 100644
--- a/lib/plugins/extension/images/disabled.png
+++ b/lib/plugins/extension/images/disabled.png
Binary files differ
diff --git a/lib/plugins/extension/images/enabled.png b/lib/plugins/extension/images/enabled.png
index 7c051cda1..92d958802 100644
--- a/lib/plugins/extension/images/enabled.png
+++ b/lib/plugins/extension/images/enabled.png
Binary files differ
diff --git a/lib/plugins/extension/images/license.txt b/lib/plugins/extension/images/license.txt
index 254b9cdf6..44e176ac9 100644
--- a/lib/plugins/extension/images/license.txt
+++ b/lib/plugins/extension/images/license.txt
@@ -1,4 +1,4 @@
-enabled.png - CC-BY-ND, (c) Emey87 http://www.iconfinder.com/icondetails/65590/48/lightbulb_icon
-disabled.png - CC-BY-ND, (c) Emey87 http://www.iconfinder.com/icondetails/65589/48/idea_lightbulb_off_icon
+enabled.png - CC0, (c) Tanguy Ortolo
+disabled.png - public domain, (c) Tango Desktop Project http://commons.wikimedia.org/wiki/File:Dialog-information.svg
plugin.png - public domain, (c) nicubunu, http://openclipart.org/detail/15093/blue-jigsaw-piece-07-by-nicubunu
template.png - public domain, (c) mathec, http://openclipart.org/detail/166596/palette-by-mathec
diff --git a/lib/plugins/extension/lang/de/lang.php b/lib/plugins/extension/lang/de/lang.php
index 89c6b55b7..b0e3b4ff7 100644
--- a/lib/plugins/extension/lang/de/lang.php
+++ b/lib/plugins/extension/lang/de/lang.php
@@ -85,6 +85,6 @@ $lang['error_copy'] = 'Beim Versuch Dateien in den Ordner <em>%s</em>
$lang['noperms'] = 'Das Erweiterungs-Verzeichnis ist schreibgeschützt';
$lang['notplperms'] = 'Das Template-Verzeichnis ist schreibgeschützt';
$lang['nopluginperms'] = 'Das Plugin-Verzeichnis ist schreibgeschützt';
-$lang['git'] = 'Diese Erweiterung wurde über git installiert, daher kann diese nicht hier aktualisiert werden.';
+$lang['git'] = 'Diese Erweiterung wurde über git installiert und sollte daher nicht hier aktualisiert werden.';
$lang['install_url'] = 'Von Webadresse (URL) installieren';
$lang['install_upload'] = 'Erweiterung hochladen:';
diff --git a/lib/plugins/extension/lang/en/lang.php b/lib/plugins/extension/lang/en/lang.php
index 5224f694a..72c9b9e2d 100644
--- a/lib/plugins/extension/lang/en/lang.php
+++ b/lib/plugins/extension/lang/en/lang.php
@@ -96,4 +96,6 @@ $lang['nopluginperms'] = 'Plugin directory is not writable';
$lang['git'] = 'This extension was installed via git, you may not want to update it here.';
$lang['install_url'] = 'Install from URL:';
-$lang['install_upload'] = 'Upload Extension:'; \ No newline at end of file
+$lang['install_upload'] = 'Upload Extension:';
+
+$lang['repo_error'] = 'The plugin repository could not be contacted. Make sure your server is allowed to contact www.dokuwiki.org and check your proxy settings.'; \ No newline at end of file
diff --git a/lib/plugins/extension/lang/es/intro_install.txt b/lib/plugins/extension/lang/es/intro_install.txt
new file mode 100644
index 000000000..533396b27
--- /dev/null
+++ b/lib/plugins/extension/lang/es/intro_install.txt
@@ -0,0 +1 @@
+Aquí se puede instalar manualmente los plugins y las plantillas, ya sea cargándolos o dando una URL de descarga directa. \ No newline at end of file
diff --git a/lib/plugins/extension/lang/es/intro_templates.txt b/lib/plugins/extension/lang/es/intro_templates.txt
new file mode 100644
index 000000000..4ede9a1a9
--- /dev/null
+++ b/lib/plugins/extension/lang/es/intro_templates.txt
@@ -0,0 +1 @@
+Estas son las plantillas actualmente instalados en su DokuWiki. Puede seleccionar la plantilla que se utilizará en [[?do=admin&page=config|Configuration Manager]] \ No newline at end of file
diff --git a/lib/plugins/extension/lang/es/lang.php b/lib/plugins/extension/lang/es/lang.php
index 7de2f5265..63742c3b3 100644
--- a/lib/plugins/extension/lang/es/lang.php
+++ b/lib/plugins/extension/lang/es/lang.php
@@ -4,14 +4,19 @@
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author Antonio Bueno <atnbueno@gmail.com>
+ * @author Antonio Castilla <antoniocastilla@trazoide.com>
+ * @author Jonathan Hernández <me@jhalicea.com>
*/
+$lang['menu'] = 'Administrador de Extensiones ';
$lang['tab_plugins'] = 'Plugins instalados';
$lang['tab_templates'] = 'Plantillas instaladas';
$lang['tab_search'] = 'Buscar e instalar';
$lang['tab_install'] = 'Instalación manual';
+$lang['notimplemented'] = 'Esta característica no se ha implementado aún';
$lang['notinstalled'] = 'Esta expensión no está instalada';
$lang['alreadyenabled'] = 'Esta extensión ya había sido activada';
$lang['alreadydisabled'] = 'Esta extensión ya había sido desactivada';
+$lang['pluginlistsaveerror'] = 'Se ha producido un error al guardar la lista de plugins';
$lang['unknownauthor'] = 'autor desconocido';
$lang['unknownversion'] = 'versión desconocida';
$lang['btn_info'] = 'Mostrar más información';
@@ -21,18 +26,31 @@ $lang['btn_enable'] = 'Activar';
$lang['btn_disable'] = 'Desactivar';
$lang['btn_install'] = 'Instalar';
$lang['btn_reinstall'] = 'Reinstalar';
+$lang['js']['reallydel'] = '¿Realmente quiere desinstalar esta extensión?';
+$lang['search_for'] = 'Extensión de búsqueda :';
$lang['search'] = 'Buscar';
+$lang['extensionby'] = '<strong>%s</strong> por %s';
+$lang['screenshot'] = 'Captura de %s';
+$lang['popularity'] = 'Popularidad:%s%%';
$lang['homepage_link'] = 'Documentos';
$lang['bugs_features'] = 'Bugs';
$lang['tags'] = 'Etiquetas:';
+$lang['author_hint'] = 'Buscar extensiones de este autor';
$lang['installed'] = 'Instalado:';
$lang['downloadurl'] = 'URL de descarga:';
$lang['repository'] = 'Repositorio:';
+$lang['unknown'] = '<em>desconocido</em>';
$lang['installed_version'] = 'Versión instalada:';
+$lang['install_date'] = 'Tú última actualización:';
$lang['available_version'] = 'Versión disponible:';
$lang['compatible'] = 'Compatible con:';
$lang['depends'] = 'Dependencias:';
+$lang['similar'] = 'Similar a:';
+$lang['conflicts'] = 'Conflictos con:';
+$lang['donate'] = '¿Cómo está?';
$lang['donate_action'] = '¡Págale un café al autor!';
+$lang['repo_retry'] = 'Trate otra vez';
+$lang['provides'] = 'Provee: ';
$lang['status'] = 'Estado:';
$lang['status_installed'] = 'instalado';
$lang['status_not_installed'] = 'no instalado';
@@ -42,6 +60,7 @@ $lang['status_disabled'] = 'desactivado';
$lang['status_unmodifiable'] = 'no modificable';
$lang['status_plugin'] = 'plugin';
$lang['status_template'] = 'plantilla';
+$lang['status_bundled'] = 'agrupado';
$lang['msg_enabled'] = 'Plugin %s activado';
$lang['msg_disabled'] = 'Plugin %s desactivado';
$lang['msg_delete_success'] = 'Extensión desinstalada';
@@ -50,3 +69,16 @@ $lang['msg_template_update_success'] = 'Plantilla %s actualizada con éxito';
$lang['msg_plugin_install_success'] = 'Plugin %s instalado con éxito';
$lang['msg_plugin_update_success'] = 'Plugin %s actualizado con éxito';
$lang['msg_upload_failed'] = 'Falló la carga del archivo';
+$lang['missing_dependency'] = '<strong>Dependencia deshabilitada o perdida:</strong> %s';
+$lang['security_issue'] = '<strong>Problema de seguridad:</strong> %s';
+$lang['security_warning'] = '<strong>Aviso de seguridad:</strong> %s';
+$lang['update_available'] = '<strong>Actualizar:</strong> Nueva versión %s disponible.';
+$lang['wrong_folder'] = '<strong>"Plugin" instalado incorrectamente:</strong> Cambie el nombre del directorio del plugin "%s" a "%s".';
+$lang['url_change'] = '<strong>URL actualizada:</strong> El Download URL ha cambiado desde el último download. Verifica si el nuevo URL es valido antes de actualizar la extensión .<br />Nuevo: %s<br />Viejo: %s';
+$lang['error_badurl'] = 'URLs deberían empezar con http o https';
+$lang['error_dircreate'] = 'No es posible de crear un directorio temporero para poder recibir el download';
+$lang['error_download'] = 'No es posible descargar el documento: %s';
+$lang['git'] = 'Esta extensión fue instalada a través de git, quizás usted no quiera actualizarla aquí mismo.';
+$lang['install_url'] = 'Instalar desde URL:';
+$lang['install_upload'] = 'Subir Extensión:';
+$lang['repo_error'] = 'El repositorio de plugins no puede ser contactado. Asegúrese que su servidor pueda contactar www.dokuwiki.org y verificar la configuración de su proxy.';
diff --git a/lib/plugins/extension/lang/fr/intro_install.txt b/lib/plugins/extension/lang/fr/intro_install.txt
index 6f68a2606..5d287b818 100644
--- a/lib/plugins/extension/lang/fr/intro_install.txt
+++ b/lib/plugins/extension/lang/fr/intro_install.txt
@@ -1 +1 @@
-Ici, vous pouvez installer des extensions, greffons et modèles. Soit en les téléversant, soit en indiquant un URL de téléchargement. \ No newline at end of file
+Ici, vous pouvez installer des extensions, greffons et thèmes. Soit en les téléversant, soit en indiquant un URL de téléchargement. \ No newline at end of file
diff --git a/lib/plugins/extension/lang/fr/intro_templates.txt b/lib/plugins/extension/lang/fr/intro_templates.txt
index fefdb5538..a0a1336ea 100644
--- a/lib/plugins/extension/lang/fr/intro_templates.txt
+++ b/lib/plugins/extension/lang/fr/intro_templates.txt
@@ -1 +1 @@
-Voici la liste des modèles actuellement installés. Le [[?do=admin&page=config|gestionnaire de configuration]] vous permet de choisir le modèle à utiliser. \ No newline at end of file
+Voici la liste des thèmes actuellement installés. Le [[?do=admin&page=config|gestionnaire de configuration]] vous permet de choisir le thème à utiliser. \ No newline at end of file
diff --git a/lib/plugins/extension/lang/fr/lang.php b/lib/plugins/extension/lang/fr/lang.php
index c2dae0fc9..88234efd0 100644
--- a/lib/plugins/extension/lang/fr/lang.php
+++ b/lib/plugins/extension/lang/fr/lang.php
@@ -7,7 +7,7 @@
*/
$lang['menu'] = 'Gestionnaire d\'extension';
$lang['tab_plugins'] = 'Greffons installés';
-$lang['tab_templates'] = 'Modèles installés';
+$lang['tab_templates'] = 'Thèmes installés';
$lang['tab_search'] = 'Rechercher et installer';
$lang['tab_install'] = 'Installation manuelle';
$lang['notimplemented'] = 'Cette fonctionnalité n\'est pas encore installée';
@@ -57,13 +57,13 @@ $lang['status_enabled'] = 'activé';
$lang['status_disabled'] = 'désactivé';
$lang['status_unmodifiable'] = 'non modifiable';
$lang['status_plugin'] = 'greffon';
-$lang['status_template'] = 'modèle';
+$lang['status_template'] = 'thème';
$lang['status_bundled'] = 'fourni';
$lang['msg_enabled'] = 'Greffon %s activé';
$lang['msg_disabled'] = 'Greffon %s désactivé';
$lang['msg_delete_success'] = 'Extension désinstallée';
-$lang['msg_template_install_success'] = 'Modèle %s installée avec succès';
-$lang['msg_template_update_success'] = 'Modèle %s mis à jour avec succès';
+$lang['msg_template_install_success'] = 'Thème %s installée avec succès';
+$lang['msg_template_update_success'] = 'Thème %s mis à jour avec succès';
$lang['msg_plugin_install_success'] = 'Greffon %s installé avec succès';
$lang['msg_plugin_update_success'] = 'Greffon %s mis à jour avec succès';
$lang['msg_upload_failed'] = 'Téléversement échoué';
@@ -80,8 +80,9 @@ $lang['error_decompress'] = 'Impossible de décompresser le fichier téléc
$lang['error_findfolder'] = 'Impossible d\'idnetifier le dossier de l\'extension. vous devez procéder à une installation manuelle.';
$lang['error_copy'] = 'Une erreur de copie de fichier s\'est produite lors de l\'installation des fichiers dans le dossier <em>%s</em>. Il se peut que le disque soit plein, ou que les permissions d\'accès aux fichiers soient incorrectes. Il est possible que le greffon soit partiellement installé et que cela laisse votre installation de DoluWiki instable.';
$lang['noperms'] = 'Impossible d\'écrire dans le dossier des extensions.';
-$lang['notplperms'] = 'Impossible d\'écrire dans le dossier des modèles.';
+$lang['notplperms'] = 'Impossible d\'écrire dans le dossier des thèmes.';
$lang['nopluginperms'] = 'Impossible d\'écrire dans le dossier des greffons.';
$lang['git'] = 'Cette extension a été installé via git, vous voudrez peut-être ne pas la mettre à jour ici.';
$lang['install_url'] = 'Installez depuis l\'URL :';
$lang['install_upload'] = 'Téléversez l\'extension :';
+$lang['repo_error'] = 'L\'entrepôt d\'extensions est injoignable. Veuillez vous assurer que le server web est autorisé à contacter www.dokuwiki.org et vérifier les réglages de proxy.';
diff --git a/lib/plugins/extension/lang/hu/intro_install.txt b/lib/plugins/extension/lang/hu/intro_install.txt
new file mode 100644
index 000000000..8427e7dc6
--- /dev/null
+++ b/lib/plugins/extension/lang/hu/intro_install.txt
@@ -0,0 +1 @@
+Itt új modulokat és sablonokat telepíthetsz feltöltéssel vagy a csomagra hivatkozó URL megadásával. \ No newline at end of file
diff --git a/lib/plugins/extension/lang/hu/intro_plugins.txt b/lib/plugins/extension/lang/hu/intro_plugins.txt
new file mode 100644
index 000000000..8a3e92ddb
--- /dev/null
+++ b/lib/plugins/extension/lang/hu/intro_plugins.txt
@@ -0,0 +1 @@
+A DokuWiki rendszerben telepített modulok az alábbiak. Engedélyezheted, letilthatod vagy teljesen le is törölheted ezeket. A modulokhoz tartozó frissítések is itt láthatók, viszont frissítés előtt mindenképp olvasd el az utasításokat a modul dokumentációjában is! \ No newline at end of file
diff --git a/lib/plugins/extension/lang/hu/intro_search.txt b/lib/plugins/extension/lang/hu/intro_search.txt
new file mode 100644
index 000000000..87a2a5d64
--- /dev/null
+++ b/lib/plugins/extension/lang/hu/intro_search.txt
@@ -0,0 +1 @@
+Ezen a fülön harmadik fél által készített modulokat és sablonokat találsz a DokuWiki-hez. Ne feledd, hogy a harmadik féltől származó kódok **biztonsági kockázatot** jelenthetnek, ennek a [[doku>security#plugin_security|modulok biztonsága]] oldalon olvashatsz utána a telepítés előtt. \ No newline at end of file
diff --git a/lib/plugins/extension/lang/hu/intro_templates.txt b/lib/plugins/extension/lang/hu/intro_templates.txt
new file mode 100644
index 000000000..c0ad92b35
--- /dev/null
+++ b/lib/plugins/extension/lang/hu/intro_templates.txt
@@ -0,0 +1 @@
+A DokuWiki rendszerben telepített sablonok az alábbiak. A használt sablont a [[?do=admin&page=config|Beállítóközpontban]] választhatod ki. \ No newline at end of file
diff --git a/lib/plugins/extension/lang/hu/lang.php b/lib/plugins/extension/lang/hu/lang.php
new file mode 100644
index 000000000..a27b5a307
--- /dev/null
+++ b/lib/plugins/extension/lang/hu/lang.php
@@ -0,0 +1,88 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Marton Sebok <sebokmarton@gmail.com>
+ */
+$lang['menu'] = 'Bővítménykezelő';
+$lang['tab_plugins'] = 'Telepített modulok';
+$lang['tab_templates'] = 'Telepített sablonok';
+$lang['tab_search'] = 'Keresés és telepítés';
+$lang['tab_install'] = 'Kézi telepítés';
+$lang['notimplemented'] = 'Ez a funkció még nincs implementálva';
+$lang['notinstalled'] = 'Ez a bővítmény nincs telepítve';
+$lang['alreadyenabled'] = 'Ez a bővítmény már engedélyezve van';
+$lang['alreadydisabled'] = 'Ez a bővítmény már le van tiltva';
+$lang['pluginlistsaveerror'] = 'Hiba történt a modulok listájának mentésekor';
+$lang['unknownauthor'] = 'Ismeretlen szerző';
+$lang['unknownversion'] = 'Ismeretlen verzió';
+$lang['btn_info'] = 'További információk megjelenítése';
+$lang['btn_update'] = 'Frissítés';
+$lang['btn_uninstall'] = 'Törlés';
+$lang['btn_enable'] = 'Engedélyezés';
+$lang['btn_disable'] = 'Letiltás';
+$lang['btn_install'] = 'Telepítés';
+$lang['btn_reinstall'] = 'Újratelepítés';
+$lang['js']['reallydel'] = 'Biztosan törlöd ezt a bővítményt?';
+$lang['search_for'] = 'Bővítmények keresése:';
+$lang['search'] = 'Keresés';
+$lang['extensionby'] = '<strong>%s</strong>, %s szerzőtől';
+$lang['screenshot'] = '%s képernyőképe';
+$lang['popularity'] = 'Népszerűség: %s%%';
+$lang['homepage_link'] = 'Dokumentáció';
+$lang['bugs_features'] = 'Hibák';
+$lang['tags'] = 'Címkék:';
+$lang['author_hint'] = 'Bővítmények keresése ettől a szerzőtől';
+$lang['installed'] = 'Telepítve:';
+$lang['downloadurl'] = 'Csomag URL:';
+$lang['repository'] = 'Repository:';
+$lang['unknown'] = '<em>ismeretlen</em>';
+$lang['installed_version'] = 'Telepített verzió:';
+$lang['install_date'] = 'Utoljára frissítve:';
+$lang['available_version'] = 'Elérhető verzió:';
+$lang['compatible'] = 'Kompatibilis rendszerek:';
+$lang['depends'] = 'Függőségek:';
+$lang['similar'] = 'Hasonló bővítmények:';
+$lang['conflicts'] = 'Ütközést okozó bővítmények:';
+$lang['donate'] = 'Tetszik?';
+$lang['donate_action'] = 'Hívd meg a szerzőjét egy kávéra!';
+$lang['repo_retry'] = 'Újra';
+$lang['provides'] = 'Szolgáltatások:';
+$lang['status'] = 'Állapot:';
+$lang['status_installed'] = 'telepítve';
+$lang['status_not_installed'] = 'nincs telepítve';
+$lang['status_protected'] = 'védett';
+$lang['status_enabled'] = 'engedélyezve';
+$lang['status_disabled'] = 'letiltva';
+$lang['status_unmodifiable'] = 'nem lehet módosítani';
+$lang['status_plugin'] = 'modul';
+$lang['status_template'] = 'sablon';
+$lang['status_bundled'] = 'beépített';
+$lang['msg_enabled'] = 'A(z) %s modul engedélyezve';
+$lang['msg_disabled'] = 'A(z) %s modul letiltva';
+$lang['msg_delete_success'] = 'A bővítmény törölve';
+$lang['msg_template_install_success'] = 'A(z) %s sablon sikeresen telepítve';
+$lang['msg_template_update_success'] = 'A(z) %s sablon sikeresen frissítve';
+$lang['msg_plugin_install_success'] = 'A(z) %s modul sikeresen telepítve';
+$lang['msg_plugin_update_success'] = 'A(z) %s modul sikeresen frissítve';
+$lang['msg_upload_failed'] = 'A fájl feltöltése sikertelen';
+$lang['missing_dependency'] = '<strong>Hiányzó vagy letiltott függőség:</strong> %s';
+$lang['security_issue'] = '<strong>Biztonsági probléma:</strong> %s';
+$lang['security_warning'] = '<strong>Biztonsági figyelmeztetés:</strong> %s';
+$lang['update_available'] = '<strong>Frissítés:</strong> Elérhető %s új verziója.';
+$lang['wrong_folder'] = '<strong>A modul telepítése sikertelen:</strong> Nevezd át a modul könyvtárát "%s" névről "%s" névre!';
+$lang['url_change'] = '<strong>Az URL megváltozott:</strong> A csomag URL-je megváltozott az utolsó letöltés óta. A bővítmény frissítése előtt ellenőrizd az új URL helyességét!<br />Új: %s<br />Régi: %s';
+$lang['error_badurl'] = 'Az URL-nek "http"-vel vagy "https"-sel kell kezdődnie';
+$lang['error_dircreate'] = 'A letöltéshez az ideiglenes könyvtár létrehozása sikertelen';
+$lang['error_download'] = 'A(z) %s fájl letöltése sikertelen';
+$lang['error_decompress'] = 'A letöltött fájlt nem lehet kicsomagolni. Ezt okozhatja a fájl sérülése (ebben az esetben próbáld újra letölteni) vagy egy ismeretlen tömörítési formátum használata (ilyenkor kézzel kell telepítened).';
+$lang['error_findfolder'] = 'A bővítményhez tartozó könyvtárat nem sikerült megállapítani, kézzel kell letöltened és telepítened';
+$lang['error_copy'] = 'Egy fájl másolása közben hiba történt a <em>%s</em> könyvtárban: lehet, hogy a lemez megtelt vagy nincsenek megfelelő írási jogaid. A telepítés megszakadása a modul hibás működését eredményezheti és instabil állapotba hozhatja a wikit';
+$lang['noperms'] = 'A bővítmény könyvtára nem írható';
+$lang['notplperms'] = 'A sablon könyvtára nem írható';
+$lang['nopluginperms'] = 'A modul könyvtára nem írható';
+$lang['git'] = 'Ezt a bővítményt git-tel telepítették, lehet, hogy nem itt célszerű frissíteni';
+$lang['install_url'] = 'Telepítés erről az URL-ről:';
+$lang['install_upload'] = 'Bővítmény feltöltése:';
+$lang['repo_error'] = 'A modul repository-ja nem érhető el. Bizonyosodj meg róla, hogy a szervereden engedélyezett a www.dokuwiki.org cím elérése és ellenőrizd a proxy beállításaidat!';
diff --git a/lib/plugins/extension/lang/it/lang.php b/lib/plugins/extension/lang/it/lang.php
new file mode 100644
index 000000000..fbf163d57
--- /dev/null
+++ b/lib/plugins/extension/lang/it/lang.php
@@ -0,0 +1,41 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Francesco <francesco.cavalli@hotmail.com>
+ */
+$lang['btn_enable'] = 'Abilita';
+$lang['btn_disable'] = 'Disabilita';
+$lang['btn_install'] = 'Installa';
+$lang['btn_reinstall'] = 'Reinstalla';
+$lang['search'] = 'Cerca';
+$lang['homepage_link'] = 'Documenti';
+$lang['bugs_features'] = 'Bug';
+$lang['tags'] = 'Tag:';
+$lang['author_hint'] = 'Cerca estensioni per questo autore';
+$lang['installed'] = 'Installato:';
+$lang['downloadurl'] = 'URL download:';
+$lang['repository'] = 'Repository';
+$lang['installed_version'] = 'Versione installata';
+$lang['install_date'] = 'Il tuo ultimo aggiornamento:';
+$lang['available_version'] = 'Versione disponibile:';
+$lang['compatible'] = 'Compatibile con:';
+$lang['similar'] = 'Simile a:';
+$lang['donate'] = 'Simile a questo?';
+$lang['repo_retry'] = 'Riprova';
+$lang['status'] = 'Status:';
+$lang['status_installed'] = 'installato';
+$lang['status_not_installed'] = 'non installato';
+$lang['status_protected'] = 'protetto';
+$lang['status_enabled'] = 'abilitato';
+$lang['status_disabled'] = 'disabilitato';
+$lang['status_unmodifiable'] = 'inmodificabile';
+$lang['status_plugin'] = 'plugin';
+$lang['status_template'] = 'modello';
+$lang['error_badurl'] = 'URLs deve iniziare con http o https';
+$lang['error_dircreate'] = 'Impossibile creare una cartella temporanea per ricevere il download';
+$lang['error_download'] = 'Impossibile scaricare il file: %s';
+$lang['notplperms'] = 'Il modello di cartella non è scrivibile';
+$lang['nopluginperms'] = 'La cartella plugin non è scrivibile';
+$lang['install_url'] = 'Installa da URL:';
diff --git a/lib/plugins/extension/lang/ja/intro_install.txt b/lib/plugins/extension/lang/ja/intro_install.txt
index 889ed6879..9f99b8202 100644
--- a/lib/plugins/extension/lang/ja/intro_install.txt
+++ b/lib/plugins/extension/lang/ja/intro_install.txt
@@ -1 +1 @@
-ここでは、アップロードするかダウンロードURLを指定して、手動でプラグインやテンプレートをインストールできます。
+アップロードするかダウンロードURLを指定して、手動でプラグインやテンプレートをインストールできます。
diff --git a/lib/plugins/extension/lang/ja/intro_plugins.txt b/lib/plugins/extension/lang/ja/intro_plugins.txt
index 9bfc68431..b8251c7e8 100644
--- a/lib/plugins/extension/lang/ja/intro_plugins.txt
+++ b/lib/plugins/extension/lang/ja/intro_plugins.txt
@@ -1 +1 @@
-このDokuWikiに現在インストールされているプラグインです。ここでは、これらプラグインを有効化、無効化、アンインストールすることができます。同様にプラグインのアップデートも表示されます。アップデート前に、プラグインのマニュアルをお読みください。 \ No newline at end of file
+このDokuWikiに現在インストールされているプラグインです。これらプラグインを有効化、無効化、アンインストールできます。更新はできる場合のみ表示されます。更新前に、プラグインの解説をお読みください。 \ No newline at end of file
diff --git a/lib/plugins/extension/lang/ja/intro_templates.txt b/lib/plugins/extension/lang/ja/intro_templates.txt
index f97694aaa..5de6d2f0d 100644
--- a/lib/plugins/extension/lang/ja/intro_templates.txt
+++ b/lib/plugins/extension/lang/ja/intro_templates.txt
@@ -1 +1 @@
-このDokuWikiに現在インストールされているテンプレートです。[[?do=admin&page=config|設定管理]]で使用するテンプレートを選択できます。 \ No newline at end of file
+このDokuWikiに現在インストールされているテンプレートです。使用するテンプレートは[[?do=admin&page=config|設定管理]]で選択できます。 \ No newline at end of file
diff --git a/lib/plugins/extension/lang/ja/lang.php b/lib/plugins/extension/lang/ja/lang.php
index 0401d7630..dec46d629 100644
--- a/lib/plugins/extension/lang/ja/lang.php
+++ b/lib/plugins/extension/lang/ja/lang.php
@@ -4,10 +4,12 @@
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author Hideaki SAWADA <chuno@live.jp>
+ * @author PzF_X <jp_minecraft@yahoo.co.jp>
*/
$lang['menu'] = '拡張機能管理';
$lang['tab_plugins'] = 'インストール済プラグイン';
$lang['tab_templates'] = 'インストール済テンプレート';
+$lang['tab_search'] = '検索とインストール';
$lang['tab_install'] = '手動インストール';
$lang['notimplemented'] = 'この機能は未実装です。';
$lang['notinstalled'] = 'この拡張機能はインストールされていません。';
@@ -17,21 +19,44 @@ $lang['pluginlistsaveerror'] = 'プラグイン一覧の保存中にエラー
$lang['unknownauthor'] = '作者不明';
$lang['unknownversion'] = 'バージョン不明';
$lang['btn_info'] = '詳細情報を表示する。';
-$lang['btn_update'] = 'アップデート';
+$lang['btn_update'] = '更新';
$lang['btn_uninstall'] = 'アンインストール';
$lang['btn_enable'] = '有効化';
$lang['btn_disable'] = '無効化';
$lang['btn_install'] = 'インストール';
$lang['btn_reinstall'] = '再インストール';
$lang['js']['reallydel'] = 'この拡張機能を本当にアンインストールしますか?';
+$lang['search_for'] = '拡張機能の検索:';
+$lang['search'] = '検索';
+$lang['extensionby'] = '<strong>%s</strong> 作者: %s';
+$lang['screenshot'] = '%s のスクリーンショット';
+$lang['popularity'] = '利用状況:%s%%';
+$lang['homepage_link'] = '解説';
+$lang['bugs_features'] = 'バグ';
+$lang['tags'] = 'タグ:';
+$lang['author_hint'] = 'この作者で拡張機能を検索';
+$lang['installed'] = 'インストール済:';
$lang['downloadurl'] = 'ダウンロード URL:';
$lang['repository'] = 'リポジトリ:';
+$lang['unknown'] = '<em>不明</em>';
+$lang['installed_version'] = 'インストール済バージョン:';
+$lang['install_date'] = '最終更新日:';
+$lang['available_version'] = '利用可能バージョン:';
+$lang['compatible'] = '互換:';
$lang['depends'] = '依存:';
$lang['similar'] = '類似:';
+$lang['conflicts'] = '競合:';
+$lang['donate'] = 'お気に入り?';
+$lang['donate_action'] = '寄付先';
+$lang['repo_retry'] = '再実行';
+$lang['provides'] = '提供:';
+$lang['status'] = '状態:';
$lang['status_installed'] = 'インストール済';
$lang['status_not_installed'] = '未インストール';
+$lang['status_protected'] = '保護されています';
$lang['status_enabled'] = '有効';
$lang['status_disabled'] = '無効';
+$lang['status_unmodifiable'] = '編集不可';
$lang['status_plugin'] = 'プラグイン';
$lang['status_template'] = 'テンプレート';
$lang['status_bundled'] = '同梱';
@@ -39,16 +64,26 @@ $lang['msg_enabled'] = '%s プラグインを有効化しました。'
$lang['msg_disabled'] = '%s プラグインを無効化しました。';
$lang['msg_delete_success'] = '拡張機能をアンインストールしました。';
$lang['msg_template_install_success'] = '%s テンプレートをインストールできました。';
-$lang['msg_template_update_success'] = '%s テンプレートをアップデートできました。';
+$lang['msg_template_update_success'] = '%s テンプレートを更新できました。';
$lang['msg_plugin_install_success'] = '%s プラグインをインストールできました。';
-$lang['msg_plugin_update_success'] = '%s プラグインをアップデートできました。';
+$lang['msg_plugin_update_success'] = '%s プラグインを更新できました。';
$lang['msg_upload_failed'] = 'ファイルのアップロードに失敗しました。';
+$lang['missing_dependency'] = '<strong>依存関係が欠落または無効:</strong> %s';
$lang['security_issue'] = '<strong>セキュリティ問題:</strong> %s';
$lang['security_warning'] = '<strong>セキュリティ警告:</strong> %s';
-$lang['update_available'] = '<strong>アップデート:</strong>%sの新バージョンが利用可能です。 ';
+$lang['update_available'] = '<strong>更新:</strong> %sの新バージョンが利用可能です。';
+$lang['wrong_folder'] = '<strong>プラグインは正しくインストールされませんでした:</strong> プラグインのディレクトリを "%s" から "%s" へ変更して下さい。';
+$lang['url_change'] = '<strong>URL が変更されました:</strong> 最後にダウンロードした後、ダウンロード URL が変更されました。拡張機能のアップデート前に新 URL が正しいかを確認して下さい。<br />新:%s<br />旧:%s';
$lang['error_badurl'] = 'URLはhttpかhttpsで始まる必要があります。';
$lang['error_dircreate'] = 'ダウンロード用の一時フォルダが作成できません。';
$lang['error_download'] = 'ファイルをダウンロードできません:%s';
+$lang['error_decompress'] = 'ダウンロードしたファイルを解凍できません。ダウンロードの失敗の結果であれば、再度試して下さい。圧縮形式が不明の場合は、手動でダウンロード・インストールしてください。';
+$lang['error_findfolder'] = '拡張機能ディレクトリを認識できません。手動でダウンロード・インストールしてください。';
+$lang['error_copy'] = '<em>%s</em> ディレクトリのファイルをインストールしようとした時、ファイルコピーエラーが発生しました:ディスクがいっぱいかもしれませんし、ファイルのアクセス権が正しくないかもしれません。プラグインが一部分インストールされ、wiki が不安定になるかもしれません。';
$lang['noperms'] = '拡張機能ディレクトリが書き込み不可です。';
$lang['notplperms'] = 'テンプレートディレクトリが書き込み不可です。';
$lang['nopluginperms'] = 'プラグインディレクトリが書き込み不可です。';
+$lang['git'] = 'この拡張機能は Git 経由でインストールされており、ここで更新すべきでないかもしれません。';
+$lang['install_url'] = 'URL からインストール:';
+$lang['install_upload'] = '拡張機能をアップロード:';
+$lang['repo_error'] = 'プラグインのリポジトリに接続できません。サーバーが www.dokuwiki.org に接続できることやプロキシの設定を確認して下さい。';
diff --git a/lib/plugins/extension/lang/ko/lang.php b/lib/plugins/extension/lang/ko/lang.php
index db0a49aef..53c9b4481 100644
--- a/lib/plugins/extension/lang/ko/lang.php
+++ b/lib/plugins/extension/lang/ko/lang.php
@@ -86,3 +86,4 @@ $lang['nopluginperms'] = '플러그인 디렉터리에 쓸 수 없습니
$lang['git'] = '이 확장 기능은 git을 통해 설치되었으며, 여기에서 업데이트할 수 없을 수 있습니다.';
$lang['install_url'] = 'URL에서 설치:';
$lang['install_upload'] = '확장 기능 올리기:';
+$lang['repo_error'] = '플러그인 저장소에 연결할 수 없습니다. 서버가 www.dokuwiki.org에 연결할 수 있는지 확인하고 프록시 설정을 확인하세요.';
diff --git a/lib/plugins/extension/lang/lv/intro_templates.txt b/lib/plugins/extension/lang/lv/intro_templates.txt
new file mode 100644
index 000000000..1014c7c1e
--- /dev/null
+++ b/lib/plugins/extension/lang/lv/intro_templates.txt
@@ -0,0 +1 @@
+DokuWiki ir instalēti šādi šabloni. Lietojamo šablonu var norādīt [[?do=admin&page=config|Konfigurācijas lapā]]. \ No newline at end of file
diff --git a/lib/plugins/extension/lang/lv/lang.php b/lib/plugins/extension/lang/lv/lang.php
new file mode 100644
index 000000000..e7e9bdfd9
--- /dev/null
+++ b/lib/plugins/extension/lang/lv/lang.php
@@ -0,0 +1,8 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Aivars Miška <allefm@gmail.com>
+ */
+$lang['msg_delete_success'] = 'Papildinājums atinstalēts';
diff --git a/lib/plugins/extension/lang/nl/intro_plugins.txt b/lib/plugins/extension/lang/nl/intro_plugins.txt
index 0077aca30..e12bdf0f8 100644
--- a/lib/plugins/extension/lang/nl/intro_plugins.txt
+++ b/lib/plugins/extension/lang/nl/intro_plugins.txt
@@ -1 +1 @@
-Dit zijn de momenteel in uw Dokuwiki geïnstalleerde plugins. U kunt deze hier aan of uitschakelen danwel geheel deïnstalleren. Plugin updates zijn hier ook opgenomen, lees de pluin documentatie voordat u update. \ No newline at end of file
+Dit zijn de momenteel in uw Dokuwiki geïnstalleerde plugins. U kunt deze hier aan of uitschakelen danwel geheel deïnstalleren. Plugin updates zijn hier ook opgenomen, lees de plugin documentatie voordat u update. \ No newline at end of file
diff --git a/lib/plugins/extension/lang/nl/intro_search.txt b/lib/plugins/extension/lang/nl/intro_search.txt
index 8fc3900ad..f0c8d7435 100644
--- a/lib/plugins/extension/lang/nl/intro_search.txt
+++ b/lib/plugins/extension/lang/nl/intro_search.txt
@@ -1 +1 @@
-Deze tab verschaft u toegang tot alle plugins en templates vervaardigd door derden en bestemd voor Dokuwiki. Houdt er rekening meel dat indien u Plugins van derden installeerd deze een **veiligheids risico ** kunnen bevatten, geadviseerd wordt om eerst te lezen [[doku>security#plugin_security|plugin security]]. \ No newline at end of file
+Deze tab verschaft u toegang tot alle plugins en templates vervaardigd door derden en bestemd voor Dokuwiki. Houdt er rekening mee dat indien u Plugins van derden installeert deze een **veiligheids risico ** kunnen bevatten, geadviseerd wordt om eerst te lezen [[doku>security#plugin_security|plugin security]]. \ No newline at end of file
diff --git a/lib/plugins/extension/lang/nl/intro_templates.txt b/lib/plugins/extension/lang/nl/intro_templates.txt
index 5ef23dadf..52c96cef7 100644
--- a/lib/plugins/extension/lang/nl/intro_templates.txt
+++ b/lib/plugins/extension/lang/nl/intro_templates.txt
@@ -1 +1 @@
-Deze templates zijn thans in DokuWiki geïnstalleerd. U kent een template selecteren middels [[?do=admin&page=config|Configuration Manager]] . \ No newline at end of file
+Deze templates zijn thans in DokuWiki geïnstalleerd. U kunt een template selecteren middels [[?do=admin&page=config|Configuration Manager]] . \ No newline at end of file
diff --git a/lib/plugins/extension/lang/nl/lang.php b/lib/plugins/extension/lang/nl/lang.php
index 2983f9fee..a54924e93 100644
--- a/lib/plugins/extension/lang/nl/lang.php
+++ b/lib/plugins/extension/lang/nl/lang.php
@@ -4,8 +4,10 @@
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author Rene <wllywlnt@yahoo.com>
+ * @author Gerrit Uitslag <klapinklapin@gmail.com>
+ * @author Johan Vervloet <johan.vervloet@gmail.com>
*/
-$lang['menu'] = 'Extension Manager (Uitbreidings Beheerder)';
+$lang['menu'] = 'Uitbreidingen';
$lang['tab_plugins'] = 'Geïnstalleerde Plugins';
$lang['tab_templates'] = 'Geïnstalleerde Templates';
$lang['tab_search'] = 'Zoek en installeer';
@@ -24,28 +26,28 @@ $lang['btn_enable'] = 'Schakel aan';
$lang['btn_disable'] = 'Schakel uit';
$lang['btn_install'] = 'Installeer';
$lang['btn_reinstall'] = 'Her-installeer';
-$lang['js']['reallydel'] = 'Wilt u deze uitbreiding deinstalleren ?';
+$lang['js']['reallydel'] = 'Wilt u deze uitbreiding deinstalleren?';
$lang['search_for'] = 'Zoek Uitbreiding:';
$lang['search'] = 'Zoek';
$lang['extensionby'] = '<strong>%s</strong> by %s';
$lang['screenshot'] = 'Schermafdruk bij %s';
$lang['popularity'] = 'Populariteit:%s%%';
-$lang['homepage_link'] = 'Dokumenten';
+$lang['homepage_link'] = 'Documentatie';
$lang['bugs_features'] = 'Bugs';
$lang['tags'] = 'Tags:';
$lang['author_hint'] = 'Zoek uitbreidingen van deze auteur:';
$lang['installed'] = 'Geinstalleerd:';
$lang['downloadurl'] = 'Download URL:';
-$lang['repository'] = 'Repository ( centrale opslag)';
+$lang['repository'] = 'Centrale opslag:';
$lang['unknown'] = '<em>onbekend</em>';
-$lang['installed_version'] = 'Geïnstalleerde versie';
-$lang['install_date'] = 'Uw laatste update :';
+$lang['installed_version'] = 'Geïnstalleerde versie:';
+$lang['install_date'] = 'Uw laatste update:';
$lang['available_version'] = 'Beschikbare versie:';
-$lang['compatible'] = 'Compatible met :';
-$lang['depends'] = 'Afhankelijk van :';
-$lang['similar'] = 'Soortgelijk :';
-$lang['conflicts'] = 'Conflicteerd met :';
-$lang['donate'] = 'Vindt u dit leuk ?';
+$lang['compatible'] = 'Compatible met:';
+$lang['depends'] = 'Afhankelijk van:';
+$lang['similar'] = 'Soortgelijk:';
+$lang['conflicts'] = 'Conflicteerd met:';
+$lang['donate'] = 'Vindt u dit leuk?';
$lang['donate_action'] = 'Koop een kop koffie voor de auteur!';
$lang['repo_retry'] = 'Herhaal';
$lang['provides'] = 'Zorgt voor:';
@@ -63,16 +65,16 @@ $lang['msg_enabled'] = 'Plugin %s ingeschakeld';
$lang['msg_disabled'] = 'Plugin %s uitgeschakeld';
$lang['msg_delete_success'] = 'Uitbreiding gedeinstalleerd';
$lang['msg_template_install_success'] = 'Template %s werd succesvol geïnstalleerd';
-$lang['msg_template_update_success'] = 'Template %s werd succesvol ge-update';
+$lang['msg_template_update_success'] = 'Template %s werd succesvol geüpdatet';
$lang['msg_plugin_install_success'] = 'Plugin %s werd succesvol geïnstalleerd';
-$lang['msg_plugin_update_success'] = 'Plugin %s werd succesvol ge-update';
+$lang['msg_plugin_update_success'] = 'Plugin %s werd succesvol geüpdatet';
$lang['msg_upload_failed'] = 'Uploaden van het bestand is mislukt';
$lang['missing_dependency'] = '<strong>niet aanwezige of uitgeschakelde afhankelijkheid</strong> %s';
$lang['security_issue'] = '<strong>Veiligheids kwestie:</strong> %s';
$lang['security_warning'] = '<strong>Veiligheids Waarschuwing</strong> %s';
$lang['update_available'] = '<strong>Update:</strong> Nieuwe versie %s is beschikbaar.';
$lang['wrong_folder'] = '<strong>Plugin onjuist geïnstalleerd:</strong> Hernoem de plugin directory van "%s" naar"%s"';
-$lang['url_change'] = '<strong>URL gewijzigd:</strong> Download URL is gewijzigd sinds de laatste download. Controleer of de nieuwe URL juist is voordat u de uitbreiding update. <br />Nieuw:%s<Br /> Vorig: %s';
+$lang['url_change'] = '<strong>URL gewijzigd:</strong> Download URL is gewijzigd sinds de laatste download. Controleer of de nieuwe URL juist is voordat u de uitbreiding updatet. <br />Nieuw:%s<Br /> Vorig: %s';
$lang['error_badurl'] = 'URLs moeten beginnen met http of https';
$lang['error_dircreate'] = 'De tijdelijke map kon niet worden gemaakt om de download te ontvangen';
$lang['error_download'] = 'Het is niet mogelijk het bestand te downloaden: %s';
@@ -85,3 +87,4 @@ $lang['nopluginperms'] = 'Plugin directory is niet schrijfbaar';
$lang['git'] = 'De uitbreiding werd geïnstalleerd via git, u wilt deze hier wellicht niet aanpassen.';
$lang['install_url'] = 'Installeer vanaf URL:';
$lang['install_upload'] = 'Upload Uitbreiding:';
+$lang['repo_error'] = 'Er kon geen verbinding worden gemaakt met de centrale plugin opslag. Controleer of de server verbinding mag maken met www.dokuwiki.org en controleer de proxy instellingen.';
diff --git a/lib/plugins/extension/lang/pl/lang.php b/lib/plugins/extension/lang/pl/lang.php
new file mode 100644
index 000000000..4fdca79c9
--- /dev/null
+++ b/lib/plugins/extension/lang/pl/lang.php
@@ -0,0 +1,39 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Mati <mackosa@wp.pl>
+ */
+$lang['menu'] = 'Menedżer rozszerzeń';
+$lang['tab_plugins'] = 'Zainstalowane dodatki';
+$lang['tab_search'] = 'Znajdź i zainstaluj';
+$lang['notinstalled'] = 'Te rozszerzenie nie zostało zainstalowane';
+$lang['alreadyenabled'] = 'Te rozszerzenie jest już uruchomione';
+$lang['unknownauthor'] = 'Nieznany autor';
+$lang['unknownversion'] = 'Nieznana wersja';
+$lang['btn_info'] = 'Pokaż więcej informacji';
+$lang['btn_enable'] = 'Uruchom';
+$lang['btn_disable'] = 'Wyłącz';
+$lang['btn_reinstall'] = 'Ponowna instalacja';
+$lang['js']['reallydel'] = 'Naprawdę odinstalować te rozszerzenie?';
+$lang['search'] = 'Szukaj';
+$lang['bugs_features'] = 'Błędy';
+$lang['tags'] = 'Tagi:';
+$lang['installed'] = 'Zainstalowano:';
+$lang['repository'] = 'Repozytorium';
+$lang['installed_version'] = 'Zainstalowana wersja:';
+$lang['install_date'] = 'Twoja ostatnia aktualizacja:';
+$lang['available_version'] = 'Dostępna wersja:';
+$lang['depends'] = 'Zależy od:';
+$lang['conflicts'] = 'Konflikt z:';
+$lang['donate'] = 'Lubisz to?';
+$lang['donate_action'] = 'Kup autorowi kawę!';
+$lang['repo_retry'] = 'Ponów';
+$lang['status'] = 'Status:';
+$lang['status_installed'] = 'zainstalowano';
+$lang['status_not_installed'] = 'nie zainstalowano';
+$lang['status_enabled'] = 'uruchomione';
+$lang['status_disabled'] = 'wyłączone';
+$lang['status_plugin'] = 'dodatek';
+$lang['msg_delete_success'] = 'Rozszerzenie odinstalowane';
diff --git a/lib/plugins/extension/lang/tr/lang.php b/lib/plugins/extension/lang/tr/lang.php
new file mode 100644
index 000000000..dfabfa715
--- /dev/null
+++ b/lib/plugins/extension/lang/tr/lang.php
@@ -0,0 +1,60 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author İlker R. Kapaç <irifat@gmail.com>
+ */
+$lang['menu'] = 'Genişletme Yöneticisi';
+$lang['tab_plugins'] = 'Kurulmuş Eklentiler';
+$lang['tab_templates'] = 'Kurulmuş Şablonlar';
+$lang['tab_search'] = 'Ara ve Kur';
+$lang['tab_install'] = 'Elle Kurulum';
+$lang['notimplemented'] = 'Bu özellik henüz uygulamaya geçmemiştir';
+$lang['notinstalled'] = 'Bu genişletme yüklü değildir';
+$lang['alreadyenabled'] = 'Bu genişletme zaten etkinleştirilmiştir.';
+$lang['alreadydisabled'] = 'Bu genişletme zaten pasifleştirilmiştir';
+$lang['pluginlistsaveerror'] = 'Eklenti listesini kaydederken bir hata oluştu.';
+$lang['unknownauthor'] = 'Bilinmeyen yazar';
+$lang['unknownversion'] = 'Bilinmeyen sürüm';
+$lang['btn_info'] = 'Daha fazla bilgi göster';
+$lang['btn_update'] = 'Güncelle';
+$lang['btn_uninstall'] = 'Kaldır';
+$lang['btn_enable'] = 'Etkinleştir';
+$lang['btn_disable'] = 'Pasifleştir';
+$lang['btn_install'] = 'Kur';
+$lang['btn_reinstall'] = 'Yeniden kur';
+$lang['js']['reallydel'] = 'Genişletme gerçekten kaldırılsın mı?';
+$lang['search_for'] = 'Genişletme Ara:';
+$lang['search'] = 'Ara';
+$lang['extensionby'] = '<strong>%s</strong> tarafından %s';
+$lang['screenshot'] = '%s ekran görüntüsü';
+$lang['popularity'] = 'Rağbet: %s%%';
+$lang['homepage_link'] = 'Belgeler';
+$lang['bugs_features'] = 'Hatalar';
+$lang['tags'] = 'Etiketler:';
+$lang['author_hint'] = 'Bu yazarın genişletmelerini ara.';
+$lang['installed'] = 'Kurulu:';
+$lang['downloadurl'] = 'İndirme bağlantısı:';
+$lang['repository'] = 'Veri havuzu:';
+$lang['unknown'] = '<em>bilinmeyen</em>';
+$lang['installed_version'] = 'Kurulu sürüm:';
+$lang['install_date'] = 'Son güncellemeniz:';
+$lang['available_version'] = 'Müsait sürüm:';
+$lang['compatible'] = 'Şununla uyumlu:';
+$lang['depends'] = 'Şuna bağımlı';
+$lang['similar'] = 'Şununla benzer';
+$lang['conflicts'] = 'Şununla çelişir';
+$lang['donate'] = 'Beğendiniz mi?';
+$lang['donate_action'] = 'Yazara bir kahve ısmarlayın!';
+$lang['repo_retry'] = 'Yeniden dene';
+$lang['provides'] = 'Sağlar:';
+$lang['status'] = 'Durum:';
+$lang['status_installed'] = 'kurulu';
+$lang['status_not_installed'] = 'kurulu değil';
+$lang['status_protected'] = 'korunmuş';
+$lang['status_enabled'] = 'etkin';
+$lang['status_disabled'] = 'hizmet dışı';
+$lang['status_unmodifiable'] = 'değiştirilemez';
+$lang['status_plugin'] = 'eklenti';
+$lang['status_template'] = 'şablon';
diff --git a/lib/plugins/extension/lang/zh/lang.php b/lib/plugins/extension/lang/zh/lang.php
index 4d40acc1d..0264f3e9c 100644
--- a/lib/plugins/extension/lang/zh/lang.php
+++ b/lib/plugins/extension/lang/zh/lang.php
@@ -6,6 +6,7 @@
* @author Cupen <Cupenoruler@foxmail.com>
* @author xiqingongzi <Xiqingongzi@Gmail.com>
* @author qinghao <qingxianhao@gmail.com>
+ * @author lainme <lainme993@gmail.com>
*/
$lang['menu'] = '扩展管理器';
$lang['tab_plugins'] = '安装插件';
@@ -42,6 +43,7 @@ $lang['repository'] = '版本库:';
$lang['unknown'] = '<em>未知的</em>';
$lang['installed_version'] = '已安装版本:';
$lang['install_date'] = '您的最后一次升级:';
+$lang['available_version'] = '可用版本:';
$lang['compatible'] = '兼容于:';
$lang['depends'] = '依赖于:';
$lang['similar'] = '相似于:';
@@ -59,6 +61,7 @@ $lang['status_disabled'] = '禁用';
$lang['status_unmodifiable'] = '不可修改';
$lang['status_plugin'] = '插件';
$lang['status_template'] = '模板';
+$lang['status_bundled'] = '内建';
$lang['msg_enabled'] = '插件 %s 已启用';
$lang['msg_disabled'] = '插件 %s 已禁用';
$lang['msg_delete_success'] = '插件已经卸载';
@@ -70,3 +73,19 @@ $lang['msg_upload_failed'] = '上传文件失败';
$lang['missing_dependency'] = '<strong>缺少或者被禁用依赖:</strong> %s';
$lang['security_issue'] = '<strong>安全问题:</strong> %s';
$lang['security_warning'] = '<strong>安全警告:</strong> %s';
+$lang['update_available'] = '<strong>更新:</strong>新版本 %s 已经可用。';
+$lang['wrong_folder'] = '<strong>插件安装不正确:</strong>重命名插件目录 "%s" 为 "%s"。';
+$lang['url_change'] = '<strong>URL已改变:</strong>自上次下载以来的下载 URL 已经改变。请在更新扩展前检查新 URL 是否有效。<br />新的:%s<br />旧的:%s';
+$lang['error_badurl'] = 'URL 应当以 http 或者 https 作为开头';
+$lang['error_dircreate'] = '无法创建用于保存下载的临时文件夹';
+$lang['error_download'] = '无法下载文件:%s';
+$lang['error_decompress'] = '无法解压下载的文件。这可能是由于文件损坏,在这种情况下您可以重试。这也可能是由于压缩格式是未知的,在这种情况下您需要手动下载并且安装。';
+$lang['error_findfolder'] = '无法识别扩展目录,您需要手动下载和安装';
+$lang['error_copy'] = '在尝试安装文件到目录 <em>%s</em> 时出现文件复制错误:磁盘可能已满或者文件访问权限不正确。这可能导致插件被部分安装并使您的维基处在不稳定状态';
+$lang['noperms'] = '扩展目录不可写';
+$lang['notplperms'] = '模板目录不可写';
+$lang['nopluginperms'] = '插件目录不可写';
+$lang['git'] = '这个扩展是通过 git 安装的,您可能不想在这里升级它';
+$lang['install_url'] = '从 URL 安装:';
+$lang['install_upload'] = '上传扩展:';
+$lang['repo_error'] = '无法连接到插件仓库。请确定您的服务器可以连接 www.dokuwiki.org 并检查您的代理设置。';
diff --git a/lib/plugins/popularity/lang/lv/lang.php b/lib/plugins/popularity/lang/lv/lang.php
index f0c940b6f..a8ef37f7a 100644
--- a/lib/plugins/popularity/lang/lv/lang.php
+++ b/lib/plugins/popularity/lang/lv/lang.php
@@ -1,7 +1,8 @@
<?php
+
/**
- * Latvian, Lettish language file
- *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
* @author Aivars Miška <allefm@gmail.com>
*/
$lang['name'] = 'Popularitātes atsauksmes (ielāde var aizņemt kādu laiku)';
diff --git a/lib/plugins/revert/lang/cs/lang.php b/lib/plugins/revert/lang/cs/lang.php
index 69abaaade..e1b47bb8d 100644
--- a/lib/plugins/revert/lang/cs/lang.php
+++ b/lib/plugins/revert/lang/cs/lang.php
@@ -16,6 +16,7 @@
* @author Zbyněk Křivka <krivka@fit.vutbr.cz>
* @author Gerrit Uitslag <klapinklapin@gmail.com>
* @author Petr Klíma <qaxi@seznam.cz>
+ * @author Radovan Buroň <radovan@buron.cz>
*/
$lang['menu'] = 'Obnova zaspamovaných stránek';
$lang['filter'] = 'Hledat zaspamované stránky';
diff --git a/lib/plugins/revert/lang/lv/lang.php b/lib/plugins/revert/lang/lv/lang.php
index 012d6cc4c..b87369233 100644
--- a/lib/plugins/revert/lang/lv/lang.php
+++ b/lib/plugins/revert/lang/lv/lang.php
@@ -1,7 +1,8 @@
<?php
+
/**
- * Latvian, Lettish language file
- *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
* @author Aivars Miška <allefm@gmail.com>
*/
$lang['menu'] = 'Piemēsloto lapu atjaunotājs';
diff --git a/lib/plugins/revert/lang/nl/intro.txt b/lib/plugins/revert/lang/nl/intro.txt
index db8f5a06c..efa325839 100644
--- a/lib/plugins/revert/lang/nl/intro.txt
+++ b/lib/plugins/revert/lang/nl/intro.txt
@@ -1,3 +1,3 @@
-===== Herstelmanager =====
+===== Herstel =====
Deze pagina helpt u bij het herstellen van pagina's na een spam-aanval. Vul een zoekterm in (bijvoorbeeld een spam url) om een lijst te krijgen van bekladde pagina's, bevestig dat de pagina's inderdaad spam bevatten en herstel de wijzigingen.
diff --git a/lib/plugins/revert/lang/nl/lang.php b/lib/plugins/revert/lang/nl/lang.php
index ee8678e63..d04b96869 100644
--- a/lib/plugins/revert/lang/nl/lang.php
+++ b/lib/plugins/revert/lang/nl/lang.php
@@ -16,8 +16,9 @@
* @author Ricardo Guijt <ricardoguijt@gmail.com>
* @author Gerrit <klapinklapin@gmail.com>
* @author Remon <no@email.local>
+ * @author Rene <wllywlnt@yahoo.com>
*/
-$lang['menu'] = 'Herstelmanager';
+$lang['menu'] = 'Herstel';
$lang['filter'] = 'Zoek naar bekladde pagina\'s';
$lang['revert'] = 'Herstel geselecteerde pagina\'s';
$lang['reverted'] = '%s hersteld naar revisie %s';
diff --git a/lib/plugins/revert/lang/sv/lang.php b/lib/plugins/revert/lang/sv/lang.php
index e605a17d4..504332bae 100644
--- a/lib/plugins/revert/lang/sv/lang.php
+++ b/lib/plugins/revert/lang/sv/lang.php
@@ -19,6 +19,7 @@
* @author Henrik <henrik@idealis.se>
* @author Tor Härnqvist <tor.harnqvist@gmail.com>
* @author Hans Iwan Bratt <hibratt@gmail.com>
+ * @author Mikael Bergström <krank23@gmail.com>
*/
$lang['menu'] = 'Hantera återställningar';
$lang['filter'] = 'Sök efter spamsidor';
diff --git a/lib/plugins/syntax.php b/lib/plugins/syntax.php
index 42a4903ec..4a301f927 100644
--- a/lib/plugins/syntax.php
+++ b/lib/plugins/syntax.php
@@ -20,9 +20,12 @@ class DokuWiki_Syntax_Plugin extends Doku_Parser_Mode_Plugin {
* Syntax Type
*
* Needs to return one of the mode types defined in $PARSER_MODES in parser.php
+ *
+ * @return string
*/
function getType(){
trigger_error('getType() not implemented in '.get_class($this), E_USER_WARNING);
+ return '';
}
/**
@@ -31,6 +34,8 @@ class DokuWiki_Syntax_Plugin extends Doku_Parser_Mode_Plugin {
* Defines the mode types for other dokuwiki markup that maybe nested within the
* plugin's own markup. Needs to return an array of one or more of the mode types
* defined in $PARSER_MODES in parser.php
+ *
+ * @return array
*/
function getAllowedTypes() {
return array();
@@ -47,6 +52,7 @@ class DokuWiki_Syntax_Plugin extends Doku_Parser_Mode_Plugin {
* 'stack' - Special case. Plugin wraps other paragraphs.
*
* @see Doku_Handler_Block
+ * @return string
*/
function getPType(){
return 'normal';
@@ -99,7 +105,10 @@ class DokuWiki_Syntax_Plugin extends Doku_Parser_Mode_Plugin {
}
/**
- * There should be no need to override these functions
+ * There should be no need to override this function
+ *
+ * @param string $mode
+ * @return bool
*/
function accepts($mode) {
diff --git a/lib/plugins/usermanager/lang/es/lang.php b/lib/plugins/usermanager/lang/es/lang.php
index 317fac2aa..a557eacdd 100644
--- a/lib/plugins/usermanager/lang/es/lang.php
+++ b/lib/plugins/usermanager/lang/es/lang.php
@@ -25,6 +25,8 @@
* @author Gerardo Zamudio <gerardo@gerardozamudio.net>
* @author Mercè López mercelz@gmail.com
* @author Antonio Bueno <atnbueno@gmail.com>
+ * @author Antonio Castilla <antoniocastilla@trazoide.com>
+ * @author Jonathan Hernández <me@jhalicea.com>
*/
$lang['menu'] = 'Administración de usuarios';
$lang['noauth'] = '(la autenticación de usuarios no está disponible)';
@@ -47,6 +49,9 @@ $lang['search'] = 'Buscar';
$lang['search_prompt'] = 'Realizar la búsqueda';
$lang['clear'] = 'Limpiar los filtros de la búsqueda';
$lang['filter'] = 'Filtrar';
+$lang['export_all'] = 'Exportar Todos los Usuarios (CSV)';
+$lang['export_filtered'] = 'Exportar Lista de Usuarios Filtrada (CSV)';
+$lang['import'] = 'Importar Nuevos Usuarios';
$lang['line'] = 'Línea nº';
$lang['error'] = 'Mensaje de error';
$lang['summary'] = 'Mostrando los usuarios %1$d-%2$d de %3$d encontrados. Cantidad total de usuarios %4$d.';
@@ -69,3 +74,10 @@ $lang['add_ok'] = 'El usuario fue creado exitosamente';
$lang['add_fail'] = 'Falló la creación del usuario';
$lang['notify_ok'] = 'Se envió la notificación por correo electrónico';
$lang['notify_fail'] = 'No se pudo enviar la notificación por correo electrónico';
+$lang['import_userlistcsv'] = 'Lista de usuarios (CSV): ';
+$lang['import_error_badmail'] = 'Dirección de correo electrónico incorrecta';
+$lang['import_error_upload'] = 'Error al importar. El archivo csv no se pudo cargar o está vacío.';
+$lang['import_error_readfail'] = 'Error al importar. No se puede leer el archivo subido.';
+$lang['import_error_create'] = 'No se puede crear el usuario';
+$lang['import_notify_fail'] = 'Mensaje de notificación no se ha podido enviar por el usuario importado,%s con el email %s.';
+$lang['import_downloadfailures'] = 'Descarga errores en archivo CSV para la corrección';
diff --git a/lib/plugins/usermanager/lang/hu/import.txt b/lib/plugins/usermanager/lang/hu/import.txt
index 0210112e8..a2db03300 100644
--- a/lib/plugins/usermanager/lang/hu/import.txt
+++ b/lib/plugins/usermanager/lang/hu/import.txt
@@ -3,7 +3,7 @@
Szükséges egy legalább 4 oszlopot tartalmazó, felhasználókat tartalmazó fájl.
Az oszlopok kötelező tartalma, sorrendben: felhasználói azonosító, teljes név, e-mailcím és csoport.
A CSV-mezőket vesszővel (,) kell elválasztani, a szövegeket idézőjelek (%%""%%) közé kell tenni. A fordított törtvonal (\) használható feloldójelnek.
-Megfelelő mintafájl megtekintéséhez próbáld ki a "Felhasználók exportálása" funkciót fentebb.
+Megfelelő mintafájl megtekintéséhez próbáld ki a "Felhasználók exportálása" funkciót fentebb.
A duplán szereplő felhasználói azonosítók kihagyásra kerülnek.
Minden sikeresen importált felhasználó számára jelszó készül, amelyet e-mailben kézhez kap. \ No newline at end of file
diff --git a/lib/plugins/usermanager/lang/it/lang.php b/lib/plugins/usermanager/lang/it/lang.php
index 6c6789442..af19e293e 100644
--- a/lib/plugins/usermanager/lang/it/lang.php
+++ b/lib/plugins/usermanager/lang/it/lang.php
@@ -16,6 +16,7 @@
* @author Matteo Pasotti <matteo@xquiet.eu>
* @author snarchio@gmail.com
* @author Claudio Lanconelli <lancos@libero.it>
+ * @author Francesco <francesco.cavalli@hotmail.com>
*/
$lang['menu'] = 'Gestione Utenti';
$lang['noauth'] = '(autenticazione non disponibile)';
@@ -40,6 +41,9 @@ $lang['clear'] = 'Azzera filtro di ricerca';
$lang['filter'] = 'Filtro';
$lang['export_all'] = 'Esporta tutti gli utenti (CSV)';
$lang['export_filtered'] = 'Esporta elenco utenti filtrati (CSV)';
+$lang['import'] = 'Importa nuovi utenti';
+$lang['line'] = 'Linea numero';
+$lang['error'] = 'Messaggio di errore';
$lang['summary'] = 'Visualizzazione utenti %1$d-%2$d di %3$d trovati. %4$d utenti totali.';
$lang['nonefound'] = 'Nessun utente trovato. %d utenti totali.';
$lang['delete_ok'] = '%d utenti eliminati';
@@ -60,3 +64,7 @@ $lang['add_ok'] = 'Utente aggiunto correttamente';
$lang['add_fail'] = 'Aggiunta utente fallita';
$lang['notify_ok'] = 'Email di notifica inviata';
$lang['notify_fail'] = 'L\'email di notifica non può essere inviata';
+$lang['import_error_badname'] = 'Nome errato';
+$lang['import_error_badmail'] = 'Indirizzo email errato';
+$lang['import_error_readfail'] = 'Importazione in errore. Impossibile leggere i file caricati.';
+$lang['import_error_create'] = 'Impossibile creare l\'utente';
diff --git a/lib/plugins/usermanager/lang/lv/import.txt b/lib/plugins/usermanager/lang/lv/import.txt
new file mode 100644
index 000000000..0006ae850
--- /dev/null
+++ b/lib/plugins/usermanager/lang/lv/import.txt
@@ -0,0 +1,9 @@
+===== Masveida lietotāju imports =====
+
+Vajag CSV failu ar vismaz četrām lietotāju datu kolonām šādā secībā: identifikators, pilns vārds, e-pasta adrese un grupas.
+
+CSV lauki jāatdala ar komatiem (,) un virknes — ar pēdiņām (%%""%%). Backslash (\) can be used for escaping.
+Derīga faila paraugam izmantojiem augtāk redzamo "Lietotāju eksportu".
+Dublētus identifikatorus ignorēs.
+
+Paroli katram veiksmīgi importētajam lietotājam izveidos un nosūtīs pa e-pastu. \ No newline at end of file
diff --git a/lib/plugins/usermanager/lang/lv/lang.php b/lib/plugins/usermanager/lang/lv/lang.php
index 620678ff5..4944da31e 100644
--- a/lib/plugins/usermanager/lang/lv/lang.php
+++ b/lib/plugins/usermanager/lang/lv/lang.php
@@ -1,7 +1,8 @@
<?php
+
/**
- * Latvian language file
- *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
* @author Aivars Miška <allefm@gmail.lv>
* @author Aivars Miška <allefm@gmail.com>
*/
diff --git a/lib/plugins/usermanager/lang/nl/intro.txt b/lib/plugins/usermanager/lang/nl/intro.txt
index 7df09dbab..819e64d7d 100644
--- a/lib/plugins/usermanager/lang/nl/intro.txt
+++ b/lib/plugins/usermanager/lang/nl/intro.txt
@@ -1 +1 @@
-==== Gebruikersmanager ===== \ No newline at end of file
+====== Gebruikersbeheer ======
diff --git a/lib/plugins/usermanager/lang/nl/lang.php b/lib/plugins/usermanager/lang/nl/lang.php
index 5cebede89..3f9902e14 100644
--- a/lib/plugins/usermanager/lang/nl/lang.php
+++ b/lib/plugins/usermanager/lang/nl/lang.php
@@ -15,8 +15,9 @@
* @author Jeroen
* @author Ricardo Guijt <ricardoguijt@gmail.com>
* @author Gerrit Uitslag <klapinklapin@gmail.com>
+ * @author Rene <wllywlnt@yahoo.com>
*/
-$lang['menu'] = 'Gebruikersmanager';
+$lang['menu'] = 'Gebruikersbeheer';
$lang['noauth'] = '(gebruikersauthenticatie niet beschikbaar)';
$lang['nosupport'] = '(gebruikersbeheer niet ondersteund)';
$lang['badauth'] = 'ongeldige authenticatiemethode';
diff --git a/lib/scripts/fileuploader.js b/lib/scripts/fileuploader.js
index e75b8d3a5..d6278950b 100644
--- a/lib/scripts/fileuploader.js
+++ b/lib/scripts/fileuploader.js
@@ -226,7 +226,9 @@ qq.obj2url = function(obj, temp, prefixDone){
} else if ((typeof obj != 'undefined') && (obj !== null) && (typeof obj === "object")){
// for anything else but a scalar, we will use for-in-loop
for (var i in obj){
- add(obj[i], i);
+ if(obj.hasOwnProperty(i) && typeof obj[i] != 'function') {
+ add(obj[i], i);
+ }
}
} else {
uristrings.push(encodeURIComponent(temp) + '=' + encodeURIComponent(obj));
diff --git a/lib/tpl/index.php b/lib/tpl/index.php
index 3c00ab8e8..558f262a7 100644
--- a/lib/tpl/index.php
+++ b/lib/tpl/index.php
@@ -46,7 +46,7 @@ require_once(DOKU_INC.'inc/init.php');
// get merged style.ini
define('SIMPLE_TEST', true); // hack to prevent css output and headers
require_once(DOKU_INC.'lib/exe/css.php');
-$ini = css_styleini(tpl_incdir());
+$ini = css_styleini($conf['template']);
if ($ini) {
echo '<table>';