diff options
82 files changed, 1052 insertions, 204 deletions
diff --git a/_test/tests/inc/init_checkssl.test.php b/_test/tests/inc/init_checkssl.test.php new file mode 100644 index 000000000..c57d3c37e --- /dev/null +++ b/_test/tests/inc/init_checkssl.test.php @@ -0,0 +1,81 @@ +<?php + +class init_checkssl_test extends DokuWikiTest { + + /** + * Running behind an SSL proxy, HTTP between server and proxy + * HTTPS not set + * HTTP_X_FORWARDED_PROTO + * set to https + */ + function test1() { + $_SERVER['HTTP_X_FORWARDED_PROTO'] = 'https'; + + $this->assertEquals(is_ssl(), true); + } + + /** + * Running behind a plain HTTP proxy, HTTP between server and proxy + * HTTPS not set + * HTTP_X_FORWARDED_PROTO set to http + */ + function test2() { + $_SERVER['HTTP_X_FORWARDED_PROTO'] = 'http'; + + $this->assertEquals(is_ssl(), false); + } + + /** + * Running behind an SSL proxy, HTTP between server and proxy + * HTTPS set to off, + * HTTP_X_FORWARDED_PROTO set to https + */ + function test3() { + $_SERVER['HTTP_X_FORWARDED_PROTO'] = 'https'; + $_SERVER['HTTPS'] = 'off'; + + $this->assertEquals(is_ssl(), true); + } + + /** + * Not running behind a proxy, HTTPS server + * HTTPS set to on, + * HTTP_X_FORWARDED_PROTO not set + */ + function test4() { + $_SERVER['HTTPS'] = 'on'; + + $this->assertEquals(is_ssl(), true); + } + + /** + * Not running behind a proxy, plain HTTP server + * HTTPS not set + * HTTP_X_FORWARDED_PROTO not set + */ + function test5() { + $this->assertEquals(is_ssl(), false); + } + + /** + * Not running behind a proxy, plain HTTP server + * HTTPS set to off + * HTTP_X_FORWARDED_PROTO not set + */ + function test6() { + $_SERVER['HTTPS'] = 'off'; + $this->assertEquals(is_ssl(), false); + } + + /** + * Running behind an SSL proxy, SSL between proxy and HTTP server + * HTTPS set to on, + * HTTP_X_FORWARDED_PROTO set to https + */ + function test7() { + $_SERVER['HTTP_X_FORWARDED_PROTO'] = 'https'; + $_SERVER['HTTPS'] = 'on'; + + $this->assertEquals(is_ssl(), true); + } +} diff --git a/_test/tests/inc/input.test.php b/_test/tests/inc/input.test.php index cec0b80f6..4a8fb8d71 100644 --- a/_test/tests/inc/input.test.php +++ b/_test/tests/inc/input.test.php @@ -14,8 +14,58 @@ class input_test extends DokuWikiTest { 'empty' => '', 'emptya' => array(), 'do' => array('save' => 'Speichern'), + ); + /** + * custom filter function + * + * @param $string + * @return mixed + */ + public function myfilter($string) { + $string = str_replace('foo', 'bar', $string); + $string = str_replace('baz', '', $string); + return $string; + } + + public function test_filter() { + $_GET = array( + 'foo' => 'foo', + 'zstring'=> "foo\0bar", + 'znull' => "\0", + 'zint' => '42'."\0".'42', + 'zintbaz'=> "baz42", + ); + $_POST = $_GET; + $_REQUEST = $_GET; + $INPUT = new Input(); + + $filter = array($this,'myfilter'); + + $this->assertNotSame('foobar', $INPUT->str('zstring')); + $this->assertSame('foobar', $INPUT->filter()->str('zstring')); + $this->assertSame('bar', $INPUT->filter($filter)->str('foo')); + $this->assertSame('bar', $INPUT->filter()->str('znull', 'bar', true)); + $this->assertNotSame('foobar', $INPUT->str('zstring')); // make sure original input is unmodified + + $this->assertNotSame('foobar', $INPUT->get->str('zstring')); + $this->assertSame('foobar', $INPUT->get->filter()->str('zstring')); + $this->assertSame('bar', $INPUT->get->filter($filter)->str('foo')); + $this->assertSame('bar', $INPUT->get->filter()->str('znull', 'bar', true)); + $this->assertNotSame('foobar', $INPUT->get->str('zstring')); // make sure original input is unmodified + + $this->assertNotSame(4242, $INPUT->int('zint')); + $this->assertSame(4242, $INPUT->filter()->int('zint')); + $this->assertSame(42, $INPUT->filter($filter)->int('zintbaz')); + $this->assertSame(42, $INPUT->filter()->str('znull', 42, true)); + + $this->assertSame(true, $INPUT->bool('znull')); + $this->assertSame(false, $INPUT->filter()->bool('znull')); + + $this->assertSame('foobar', $INPUT->filter()->valid('zstring', array('foobar', 'bang'))); + } + public function test_str() { $_REQUEST = $this->data; $_POST = $this->data; diff --git a/inc/Input.class.php b/inc/Input.class.php index e7eef1c29..94da2a10e 100644 --- a/inc/Input.class.php +++ b/inc/Input.class.php @@ -21,6 +21,11 @@ class Input { protected $access; /** + * @var Callable + */ + protected $filter; + + /** * Intilizes the Input class and it subcomponents */ function __construct() { @@ -31,6 +36,32 @@ class Input { } /** + * Apply the set filter to the given value + * + * @param string $data + * @return string + */ + protected function applyfilter($data){ + if(!$this->filter) return $data; + return call_user_func($this->filter, $data); + } + + /** + * Return a filtered copy of the input object + * + * Expects a callable that accepts one string parameter and returns a filtered string + * + * @param Callable|string $filter + * @return Input + */ + public function filter($filter='stripctl'){ + $this->filter = $filter; + $clone = clone $this; + $this->filter = ''; + return $clone; + } + + /** * Check if a parameter was set * * Basically a wrapper around isset. When called on the $post and $get subclasses, @@ -77,8 +108,9 @@ class Input { */ public function param($name, $default = null, $nonempty = false) { if(!isset($this->access[$name])) return $default; - if($nonempty && empty($this->access[$name])) return $default; - return $this->access[$name]; + $value = $this->applyfilter($this->access[$name]); + if($nonempty && empty($value)) return $default; + return $value; } /** @@ -121,10 +153,11 @@ class Input { public function int($name, $default = 0, $nonempty = false) { if(!isset($this->access[$name])) return $default; if(is_array($this->access[$name])) return $default; - if($this->access[$name] === '') return $default; - if($nonempty && empty($this->access[$name])) return $default; + $value = $this->applyfilter($this->access[$name]); + if($value === '') return $default; + if($nonempty && empty($value)) return $default; - return (int) $this->access[$name]; + return (int) $value; } /** @@ -138,9 +171,10 @@ class Input { public function str($name, $default = '', $nonempty = false) { if(!isset($this->access[$name])) return $default; if(is_array($this->access[$name])) return $default; - if($nonempty && empty($this->access[$name])) return $default; + $value = $this->applyfilter($this->access[$name]); + if($nonempty && empty($value)) return $default; - return (string) $this->access[$name]; + return (string) $value; } /** @@ -158,7 +192,8 @@ class Input { public function valid($name, $valids, $default = null) { if(!isset($this->access[$name])) return $default; if(is_array($this->access[$name])) return $default; // we don't allow arrays - $found = array_search($this->access[$name], $valids); + $value = $this->applyfilter($this->access[$name]); + $found = array_search($value, $valids); if($found !== false) return $valids[$found]; // return the valid value for type safety return $default; } @@ -176,10 +211,11 @@ class Input { public function bool($name, $default = false, $nonempty = false) { if(!isset($this->access[$name])) return $default; if(is_array($this->access[$name])) return $default; - if($this->access[$name] === '') return $default; - if($nonempty && empty($this->access[$name])) return $default; + $value = $this->applyfilter($this->access[$name]); + if($value === '') return $default; + if($nonempty && empty($value)) return $default; - return (bool) $this->access[$name]; + return (bool) $value; } /** diff --git a/inc/auth.php b/inc/auth.php index e224b2fb5..e938830ef 100644 --- a/inc/auth.php +++ b/inc/auth.php @@ -95,9 +95,10 @@ function auth_setup() { $INPUT->set('http_credentials', true); } - // apply cleaning + // apply cleaning (auth specific user names, remove control chars) if (true === $auth->success) { - $INPUT->set('u', $auth->cleanUser($INPUT->str('u'))); + $INPUT->set('u', $auth->cleanUser(stripctl($INPUT->str('u')))); + $INPUT->set('p', stripctl($INPUT->str('p'))); } if($INPUT->str('authtok')) { @@ -228,7 +229,7 @@ function auth_login($user, $pass, $sticky = false, $silent = false) { if(!empty($user)) { //usual login - if($auth->checkPass($user, $pass)) { + if(!empty($pass) && $auth->checkPass($user, $pass)) { // make logininfo globally available $INPUT->server->set('REMOTE_USER', $user); $secret = auth_cookiesalt(!$sticky, true); //bind non-sticky to session @@ -638,6 +639,7 @@ function auth_isMember($memberlist, $user, array $groups) { // compare cleaned values foreach($members as $member) { + if($member == '@ALL' ) return true; if(!$auth->isCaseSensitive()) $member = utf8_strtolower($member); if($member[0] == '@') { $member = $auth->cleanGroup(substr($member, 1)); @@ -922,7 +924,7 @@ function auth_sendPassword($user, $password) { if(!$auth) return false; $user = $auth->cleanUser($user); - $userinfo = $auth->getUserData($user); + $userinfo = $auth->getUserData($user, $requireGroups = false); if(!$userinfo['mail']) return false; @@ -1184,7 +1186,7 @@ function act_resendpwd() { } $user = io_readfile($tfile); - $userinfo = $auth->getUserData($user); + $userinfo = $auth->getUserData($user, $requireGroups = false); if(!$userinfo['mail']) { msg($lang['resendpwdnouser'], -1); return false; @@ -1236,7 +1238,7 @@ function act_resendpwd() { $user = trim($auth->cleanUser($INPUT->post->str('login'))); } - $userinfo = $auth->getUserData($user); + $userinfo = $auth->getUserData($user, $requireGroups = false); if(!$userinfo['mail']) { msg($lang['resendpwdnouser'], -1); return false; diff --git a/inc/common.php b/inc/common.php index 8c9956018..e56285f62 100644 --- a/inc/common.php +++ b/inc/common.php @@ -1583,7 +1583,7 @@ function shorten($keep, $short, $max, $min = 9, $char = '…') { } /** - * Return the users realname or e-mail address for use + * Return the users real name or e-mail address for use * in page footer and recent changes pages * * @param string|null $username or null when currently logged-in user should be used @@ -1641,22 +1641,20 @@ function userlink($username = null, $textonly = false) { $evt = new Doku_Event('COMMON_USER_LINK', $data); if($evt->advise_before(true)) { if(empty($data['name'])) { - if($conf['showuseras'] == 'loginname') { - $data['name'] = $textonly ? $data['username'] : hsc($data['username']); - } else { - if($auth) $info = $auth->getUserData($username); - if(isset($info) && $info) { - switch($conf['showuseras']) { - case 'username': - case 'username_link': - $data['name'] = $textonly ? $info['name'] : hsc($info['name']); - break; - case 'email': - case 'email_link': - $data['name'] = obfuscate($info['mail']); - break; - } + if($auth) $info = $auth->getUserData($username); + if($conf['showuseras'] != 'loginname' && isset($info) && $info) { + switch($conf['showuseras']) { + case 'username': + case 'username_link': + $data['name'] = $textonly ? $info['name'] : hsc($info['name']); + break; + case 'email': + case 'email_link': + $data['name'] = obfuscate($info['mail']); + break; } + } else { + $data['name'] = $textonly ? $data['username'] : hsc($data['username']); } } diff --git a/inc/fulltext.php b/inc/fulltext.php index dd918f214..aaef090e1 100644 --- a/inc/fulltext.php +++ b/inc/fulltext.php @@ -215,7 +215,7 @@ function ft_pageLookup($id, $in_ns=false, $in_title=false){ function _ft_pageLookup(&$data){ // split out original parameters $id = $data['id']; - if (preg_match('/(?:^| )@(\w+)/', $id, $matches)) { + if (preg_match('/(?:^| )(?:@|ns:)([\w:]+)/', $id, $matches)) { $ns = cleanID($matches[1]) . ':'; $id = str_replace($matches[0], '', $id); } diff --git a/inc/infoutils.php b/inc/infoutils.php index db856141f..f9ba11560 100644 --- a/inc/infoutils.php +++ b/inc/infoutils.php @@ -30,7 +30,12 @@ function checkUpdateMessages(){ $http = new DokuHTTPClient(); $http->timeout = 12; $data = $http->get(DOKU_MESSAGEURL.$updateVersion); - io_saveFile($cf,$data); + if(substr(trim($data), -1) != '%') { + // this doesn't look like one of our messages, maybe some WiFi login interferred + $data = ''; + }else { + io_saveFile($cf,$data); + } }else{ dbglog("checkUpdateMessages(): messages.txt up to date"); $data = io_readFile($cf); diff --git a/inc/init.php b/inc/init.php index 4ff239787..d825b5250 100644 --- a/inc/init.php +++ b/inc/init.php @@ -456,10 +456,6 @@ function getBaseURL($abs=null){ $port = ''; } - if(!$port && isset($_SERVER['SERVER_PORT'])) { - $port = $_SERVER['SERVER_PORT']; - } - if(is_null($port)){ $port = ''; } @@ -490,6 +486,14 @@ function getBaseURL($abs=null){ * @returns bool true when SSL is active */ function is_ssl(){ + // check if we are behind a reverse proxy + if (isset($_SERVER['HTTP_X_FORWARDED_PROTO'])) { + if ($_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') { + return true; + } else { + return false; + } + } if (!isset($_SERVER['HTTPS']) || preg_match('/^(|off|false|disabled)$/i',$_SERVER['HTTPS'])){ return false; diff --git a/inc/lang/ar/lang.php b/inc/lang/ar/lang.php index a63e1ed44..9d192639b 100644 --- a/inc/lang/ar/lang.php +++ b/inc/lang/ar/lang.php @@ -9,6 +9,7 @@ * @author uahello@gmail.com * @author Ahmad Abd-Elghany <tolpa1@gmail.com> * @author alhajr <alhajr300@gmail.com> + * @author Mohamed Belhsine <b.mohamed897@gmail.com> */ $lang['encoding'] = 'utf-8'; $lang['direction'] = 'rtl'; @@ -53,6 +54,8 @@ $lang['btn_register'] = 'سجّل'; $lang['btn_apply'] = 'طبق'; $lang['btn_media'] = 'مدير الوسائط'; $lang['btn_deleteuser'] = 'احذف حسابي الخاص'; +$lang['btn_img_backto'] = 'عودة إلى %s'; +$lang['btn_mediaManager'] = 'اعرض في مدير الوسائط'; $lang['loggedinas'] = 'داخل باسم:'; $lang['user'] = 'اسم المستخدم'; $lang['pass'] = 'كلمة السر'; @@ -86,6 +89,7 @@ $lang['profdeleteuser'] = 'احذف حساب'; $lang['profdeleted'] = 'حسابك الخاص تم حذفه من هذه الموسوعة'; $lang['profconfdelete'] = 'أنا أرغب في حذف حسابي من هذه الموسوعة.<br/> هذا الحدث غير ممكن.'; +$lang['profconfdeletemissing'] = 'لم تقم بوضع علامة في مربع التأكيد'; $lang['pwdforget'] = 'أنسيت كلمة السر؟ احصل على واحدة جديدة'; $lang['resendna'] = 'هذه الويكي لا تدعم إعادة إرسال كلمة المرور.'; $lang['resendpwd'] = 'اضبط كلمة سر جديدة لـ'; @@ -183,6 +187,11 @@ $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'] = 'أنت هنا:'; @@ -239,7 +248,6 @@ $lang['admin_register'] = 'أضف مستخدما جديدا'; $lang['metaedit'] = 'تحرير البيانات الشمولية '; $lang['metasaveerr'] = 'فشلت كتابة البيانات الشمولية'; $lang['metasaveok'] = 'حُفظت البيانات الشمولية'; -$lang['btn_img_backto'] = 'عودة إلى %s'; $lang['img_title'] = 'العنوان:'; $lang['img_caption'] = 'وصف:'; $lang['img_date'] = 'التاريخ:'; @@ -252,7 +260,6 @@ $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'; $lang['subscr_subscribe_noaddress'] = 'ليس هناك عنوان مرتبط بولوجك، لا يمكن اضافتك لقائمة الاشتراك'; @@ -287,6 +294,7 @@ $lang['i_phpver'] = 'نسخة PHP التي لديك هي وهي أقل من النسخة المطلوبة <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>، عليك التأكد من صلاحيات الملف أو المجلد وإنشاء الملف يدوياً.'; @@ -340,4 +348,5 @@ $lang['media_update'] = 'ارفع إصدارا أحدث'; $lang['media_restore'] = 'استرجع هذه النسخة'; $lang['currentns'] = 'مساحة الاسم الحالية'; $lang['searchresult'] = 'نتيجة البحث'; +$lang['plainhtml'] = 'نص HTML غير منسق'; $lang['wikimarkup'] = 'علامات الوكي'; diff --git a/inc/lang/cs/lang.php b/inc/lang/cs/lang.php index fa0a65044..4d084d479 100644 --- a/inc/lang/cs/lang.php +++ b/inc/lang/cs/lang.php @@ -17,6 +17,8 @@ * @author Zbyněk Křivka <krivka@fit.vutbr.cz> * @author Petr Klíma <qaxi@seznam.cz> * @author Radovan Buroň <radovan@buron.cz> + * @author Viktor Zavadil <vzavadil@newps.cz> + * @author Jaroslav Lichtblau <jlichtblau@seznam.cz> */ $lang['encoding'] = 'utf-8'; $lang['direction'] = 'ltr'; @@ -194,6 +196,9 @@ $lang['difflink'] = 'Odkaz na výstup diff'; $lang['diff_type'] = 'Zobrazit rozdíly:'; $lang['diff_inline'] = 'Vložené'; $lang['diff_side'] = 'Přidané'; +$lang['diffprevrev'] = 'Předchozí verze'; +$lang['diffnextrev'] = 'Následující verze'; +$lang['difflastrev'] = 'Poslední revize'; $lang['line'] = 'Řádek'; $lang['breadcrumb'] = 'Historie:'; $lang['youarehere'] = 'Umístění:'; diff --git a/inc/lang/de/backlinks.txt b/inc/lang/de/backlinks.txt index 1ffa815c2..25e0ed5f9 100644 --- a/inc/lang/de/backlinks.txt +++ b/inc/lang/de/backlinks.txt @@ -1,5 +1,5 @@ ====== Links hierher ====== -Dies ist eine Liste der Seiten, welche zurück zur momentanen Seite verlinken. +Dies ist eine Liste der Seiten, welche zurück zur momentanen Seite führen. diff --git a/inc/lang/de/lang.php b/inc/lang/de/lang.php index 12b7db396..183571681 100644 --- a/inc/lang/de/lang.php +++ b/inc/lang/de/lang.php @@ -26,6 +26,7 @@ * @author Joerg <scooter22@gmx.de> * @author Simon <st103267@stud.uni-stuttgart.de> * @author Hoisl <hoisl@gmx.at> + * @author Marcel Eickhoff <eickhoff.marcel@gmail.com> */ $lang['encoding'] = 'utf-8'; $lang['direction'] = 'ltr'; @@ -299,6 +300,7 @@ $lang['i_problems'] = 'Das Installationsprogramm hat unten aufgeführ $lang['i_modified'] = 'Aus Sicherheitsgründen arbeitet dieses Skript nur mit einer neuen bzw. nicht modifizierten DokuWiki Installation. Sie sollten entweder alle Dateien noch einmal frisch installieren oder die <a href="http://dokuwiki.org/install">Dokuwiki-Installationsanleitung</a> konsultieren.'; $lang['i_funcna'] = 'Die PHP-Funktion <code>%s</code> ist nicht verfügbar. Unter Umständen wurde sie von Ihrem Hoster deaktiviert?'; $lang['i_phpver'] = 'Ihre PHP-Version <code>%s</code> ist niedriger als die benötigte Version <code>%s</code>. Bitte aktualisieren Sie Ihre PHP-Installation.'; +$lang['i_mbfuncoverload'] = 'Um DokuWiki zu starten muss mbstring.func_overload in php.ini ausgeschaltet sein.'; $lang['i_permfail'] = '<code>%s</code> ist nicht durch DokuWiki beschreibbar. Sie müssen die Berechtigungen dieses Ordners ändern!'; $lang['i_confexists'] = '<code>%s</code> existiert bereits'; $lang['i_writeerr'] = '<code>%s</code> konnte nicht erzeugt werden. Sie sollten die Verzeichnis-/Datei-Rechte überprüfen und die Datei manuell anlegen.'; diff --git a/inc/lang/es/lang.php b/inc/lang/es/lang.php index 03cbd51d2..47bee3b6f 100644 --- a/inc/lang/es/lang.php +++ b/inc/lang/es/lang.php @@ -36,6 +36,7 @@ * @author Eloy <ej.perezgomez@gmail.com> * @author Antonio Castilla <antoniocastilla@trazoide.com> * @author Jonathan Hernández <me@jhalicea.com> + * @author pokesakura <pokesakura@gmail.com> */ $lang['encoding'] = 'utf-8'; $lang['direction'] = 'ltr'; diff --git a/inc/lang/fa/index.txt b/inc/lang/fa/index.txt index 89ed74b7d..993c8d164 100644 --- a/inc/lang/fa/index.txt +++ b/inc/lang/fa/index.txt @@ -1,3 +1,3 @@ -====== فهرست ====== +====== نقشهی سایت ====== -این صفحه فهرست تمامی صفحات بر اساس [[doku>namespaces|فضاینامها]] است.
\ No newline at end of file +این صفحه حاوی فهرست تمامی صفحات موجود به ترتیب [[doku>namespaces|فضاینامها]] است.
\ No newline at end of file diff --git a/inc/lang/fa/lang.php b/inc/lang/fa/lang.php index d3016c0bd..96ffcaf90 100644 --- a/inc/lang/fa/lang.php +++ b/inc/lang/fa/lang.php @@ -11,6 +11,8 @@ * @author AmirH Hassaneini <mytechmix@gmail.com> * @author mehrdad <mehrdad.jafari.bojd@gmail.com> * @author reza_khn <reza_khn@yahoo.com> + * @author Hamid <zarrabi@sharif.edu> + * @author Mohamad Mehdi Habibi <habibi.esf@gmail.com> */ $lang['encoding'] = 'utf-8'; $lang['direction'] = 'rtl'; @@ -38,30 +40,32 @@ $lang['btn_secedit'] = 'ویرایش'; $lang['btn_login'] = 'ورود به سیستم'; $lang['btn_logout'] = 'خروج از سیستم'; $lang['btn_admin'] = 'مدیر'; -$lang['btn_update'] = 'به روز رسانی'; +$lang['btn_update'] = 'بهروزرسانی'; $lang['btn_delete'] = 'حذف'; $lang['btn_back'] = 'عقب'; $lang['btn_backlink'] = 'پیوندهای به این صفحه'; $lang['btn_backtomedia'] = 'بازگشت به انتخاب فایل'; $lang['btn_subscribe'] = 'عضویت در تغییرات صفحه'; -$lang['btn_profile'] = 'به روز رسانی پروفایل'; +$lang['btn_profile'] = 'بهروزرسانی پروفایل'; $lang['btn_reset'] = 'بازنشاندن'; -$lang['btn_resendpwd'] = 'تعیین کلمه عبور جدید'; +$lang['btn_resendpwd'] = 'تعیین گذرواژهی جدید'; $lang['btn_draft'] = 'ویرایش پیشنویس'; $lang['btn_recover'] = 'بازیابی پیشنویس'; $lang['btn_draftdel'] = 'حذف پیشنویس'; $lang['btn_revert'] = 'بازیابی'; -$lang['btn_register'] = 'یک حساب جدید بسازید'; -$lang['btn_apply'] = 'اعمال کن'; -$lang['btn_media'] = 'مدیریت محتوای چند رسانه ای'; -$lang['btn_deleteuser'] = 'حذف حساب کاربری خود'; -$lang['loggedinas'] = 'به عنوان کاربر روبرو وارد شدهاید:'; -$lang['user'] = 'نام کاربری:'; -$lang['pass'] = 'گذرواژهی شما'; +$lang['btn_register'] = 'ثبت نام'; +$lang['btn_apply'] = 'اعمال'; +$lang['btn_media'] = 'مدیریت رسانهها'; +$lang['btn_deleteuser'] = 'حساب کاربری مرا حذف کن'; +$lang['btn_img_backto'] = 'بازگشت به %s'; +$lang['btn_mediaManager'] = 'مشاهده در مدیریت رسانهها'; +$lang['loggedinas'] = 'به این عنوان وارد شدهاید:'; +$lang['user'] = 'نام کاربری'; +$lang['pass'] = 'گذرواژه'; $lang['newpass'] = 'گذروازهی جدید'; -$lang['oldpass'] = 'گذرواژهی پیشین'; -$lang['passchk'] = 'گذرواژه را دوباره وارد کنید'; -$lang['remember'] = 'گذرواژه را به یاد بسپار.'; +$lang['oldpass'] = 'گذرواژهی فعلی را تایید کنید'; +$lang['passchk'] = 'یک بار دیگر'; +$lang['remember'] = 'مرا به خاطر بسپار.'; $lang['fullname'] = '*نام واقعی شما'; $lang['email'] = 'ایمیل شما*'; $lang['profile'] = 'پروفایل کاربر'; @@ -86,6 +90,8 @@ $lang['profchanged'] = 'پروفایل کاربر با موفقیت ب $lang['profnodelete'] = 'ویکی توانایی پشتیبانی از حذف کاربران را ندارد'; $lang['profdeleteuser'] = 'حذف حساب کاربری'; $lang['profdeleted'] = 'حساب کاربری شما حذف گردیده است.'; +$lang['profconfdelete'] = 'میخواهم حساب کاربری من از این ویکی حذف شود. <br/> این عمل قابل برگشت نیست.'; +$lang['profconfdeletemissing'] = 'جعبهی تأیید تیک نخورده است'; $lang['pwdforget'] = 'گذرواژهی خود را فراموش کردهاید؟ جدید دریافت کنید'; $lang['resendna'] = 'این ویکی ارسال مجدد گذرواژه را پشتیبانی نمیکند'; $lang['resendpwd'] = 'تعیین کلمه عبور جدید برای '; @@ -135,9 +141,9 @@ $lang['js']['nosmblinks'] = 'پیوند به Windows share فقط در ای شما میتوانید پیوندها رو کپی کنید.'; $lang['js']['linkwiz'] = 'ویزارد پیوند'; $lang['js']['linkto'] = 'پیوند به:'; -$lang['js']['del_confirm'] = 'واقعن تصمیم به حذف این موارد دارید؟'; -$lang['js']['restore_confirm'] = 'آیا مطمئن هستید که می خواهید این نسخه را بازیابی کنید؟'; -$lang['js']['media_diff'] = 'تفاوت ها را ببینید : '; +$lang['js']['del_confirm'] = 'واقعا تصمیم به حذف این موارد دارید؟'; +$lang['js']['restore_confirm'] = 'آیا مطمئن هستید که می خواهید این نگارش را بازیابی کنید؟'; +$lang['js']['media_diff'] = 'تفاوت ها را ببینید: '; $lang['js']['media_diff_both'] = 'پهلو به پهلو'; $lang['js']['media_diff_opacity'] = 'درخشش از'; $lang['js']['media_diff_portions'] = 'کش رفتن'; @@ -184,6 +190,11 @@ $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'] = 'محل شما:'; @@ -240,7 +251,6 @@ $lang['admin_register'] = 'یک حساب جدید بسازید'; $lang['metaedit'] = 'ویرایش دادههای متا'; $lang['metasaveerr'] = 'نوشتن دادهنما با مشکل مواجه شد'; $lang['metasaveok'] = 'دادهنما ذخیره شد'; -$lang['btn_img_backto'] = 'بازگشت به %s'; $lang['img_title'] = 'عنوان تصویر:'; $lang['img_caption'] = 'عنوان:'; $lang['img_date'] = 'تاریخ:'; @@ -253,7 +263,6 @@ $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'; $lang['subscr_subscribe_noaddress'] = 'هیچ آدرسی برای این عضویت اضافه نشده است، شما نمیتوانید به لیست آبونه اضافه شوید'; @@ -268,6 +277,8 @@ $lang['subscr_m_unsubscribe'] = 'لغو آبونه'; $lang['subscr_m_subscribe'] = 'آبونه شدن'; $lang['subscr_m_receive'] = 'دریافت کردن'; $lang['subscr_style_every'] = 'ارسال راینامه در تمامی تغییرات'; +$lang['subscr_style_digest'] = 'ایمیل خلاصهی تغییرات هر روز (هر %.2f روز)'; +$lang['subscr_style_list'] = 'فهرست صفحات تغییریافته از آخرین ایمیل (هر %.2f روز)'; $lang['authtempfail'] = 'معتبرسازی کابران موقتن مسدود میباشد. اگر این حالت پایدار بود، مدیر ویکی را باخبر سازید.'; $lang['authpwdexpire'] = 'کلمه عبور شما در %d روز منقضی خواهد شد ، شما باید آن را زود تغییر دهید'; $lang['i_chooselang'] = 'انتخاب زبان'; @@ -279,6 +290,7 @@ $lang['i_problems'] = 'نصب کننده با مشکلات زیر م $lang['i_modified'] = 'به دلایل امنیتی، این اسکریپت فقط با نصب تازه و بدون تغییر DokuWiki کار خواهد کرد.شما باید دوباره فایل فشرده را باز کنید <a href="http://dokuwiki.org/install">راهنمای نصب DokuWiki</a> را بررسی کنید.'; $lang['i_funcna'] = 'تابع <code>%s</code> در PHP موجود نیست. ممکن است شرکت خدمات وب شما آن را مسدود کرده باشد.'; $lang['i_phpver'] = 'نگارش پیاچپی <code>%s</code> پایینتر از نگارش مورد نیاز، یعنی <code>%s</code> میباشد. خواهشمندیم به روز رسانی کنید.'; +$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> نیست. شما باید دسترسیهای شاخه یا فایل را بررسی کنید و فایل را به طور دستی ایجاد کنید.'; @@ -290,8 +302,12 @@ $lang['i_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'] = 'لطفا کمک کنید تا تجربهی دوکوویکی را بهبود دهیم.'; +$lang['i_pop_label'] = 'ماهی یک بار، اطلاعات بدوننامی از نحوهی استفاده به توسعهدهندگان دوکوویکی ارسال کن'; $lang['recent_global'] = 'شما هماکنون تغییرات فضاینام <b>%s</b> را مشاهده میکنید. شما همچنین میتوانید <a href="%s">تغییرات اخیر در کل ویکی را مشاهده نمایید</a>.'; $lang['years'] = '%d سال پیش'; $lang['months'] = '%d ماه پیش'; @@ -319,8 +335,12 @@ $lang['media_view'] = '%s'; $lang['media_viewold'] = '%s در %s'; $lang['media_edit'] = '%s ویرایش'; $lang['media_history'] = 'تاریخچه %s'; -$lang['media_meta_edited'] = 'فرا داده ها ویرایش شدند.'; -$lang['media_perm_read'] = 'متاسفانه ، شما حق خواندن این فایل ها را ندارید.'; -$lang['media_perm_upload'] = 'متاسفانه ، شما حق آپلود این فایل ها را ندارید.'; -$lang['media_update'] = 'آپلود نسخه جدید'; +$lang['media_meta_edited'] = 'فرادادهها ویرایش شدند.'; +$lang['media_perm_read'] = 'متاسفانه شما حق خواندن این فایلها را ندارید.'; +$lang['media_perm_upload'] = 'متاسفانه شما حق آپلود این فایلها را ندارید.'; +$lang['media_update'] = 'آپلود نسخهی جدید'; $lang['media_restore'] = 'بازیابی این نسخه'; +$lang['currentns'] = 'فضای نام جاری'; +$lang['searchresult'] = 'نتیجهی جستجو'; +$lang['plainhtml'] = 'HTML ساده'; +$lang['wikimarkup'] = 'نشانهگذاری ویکی'; diff --git a/inc/lang/fr/denied.txt b/inc/lang/fr/denied.txt index da01a4086..6de193004 100644 --- a/inc/lang/fr/denied.txt +++ b/inc/lang/fr/denied.txt @@ -1,4 +1,4 @@ ====== Autorisation refusée ====== -Désolé, vous n'avez pas suffisement d'autorisations pour poursuivre votre demande. +Désolé, vous n'avez pas suffisamment d'autorisations pour poursuivre votre demande. diff --git a/inc/lang/fr/lang.php b/inc/lang/fr/lang.php index c5edd4cf7..a7651e730 100644 --- a/inc/lang/fr/lang.php +++ b/inc/lang/fr/lang.php @@ -360,7 +360,7 @@ $lang['media_perm_read'] = 'Désolé, vous n\'avez pas l\'autorisation de $lang['media_perm_upload'] = 'Désolé, vous n\'avez pas l\'autorisation d\'envoyer des fichiers.'; $lang['media_update'] = 'Envoyer une nouvelle version'; $lang['media_restore'] = 'Restaurer cette version'; -$lang['currentns'] = 'Namespace actuel'; +$lang['currentns'] = 'Catégorie courante'; $lang['searchresult'] = 'Résultat de la recherche'; $lang['plainhtml'] = 'HTML brut'; $lang['wikimarkup'] = 'Wiki balise'; diff --git a/inc/lang/fr/newpage.txt b/inc/lang/fr/newpage.txt index b23bf4fe4..c649489fa 100644 --- a/inc/lang/fr/newpage.txt +++ b/inc/lang/fr/newpage.txt @@ -1,4 +1,4 @@ ====== Cette page n'existe pas encore ====== -Vous avez suivi un lien vers une page qui n'existe pas encore. Si vos autorisations sont suffisants, vous pouvez la créer en cliquant sur « Créer cette page ». +Vous avez suivi un lien vers une page qui n'existe pas encore. Si vos permissions sont suffisantes, vous pouvez la créer en cliquant sur « Créer cette page ». diff --git a/inc/lang/hr/adminplugins.txt b/inc/lang/hr/adminplugins.txt index 556ffda0b..5a7656d27 100644 --- a/inc/lang/hr/adminplugins.txt +++ b/inc/lang/hr/adminplugins.txt @@ -1 +1 @@ -===== Dodatni Pluginovi =====
\ No newline at end of file +===== Dodatni dodatci =====
\ No newline at end of file diff --git a/inc/lang/hr/backlinks.txt b/inc/lang/hr/backlinks.txt index e7115a6b6..a78b9213e 100644 --- a/inc/lang/hr/backlinks.txt +++ b/inc/lang/hr/backlinks.txt @@ -1,3 +1,3 @@ -====== Linkovi na stranicu ====== +====== Veze na stranicu ====== -Slijedi spisak svih dokumenata koji imaju link na trenutni. +Slijedi spisak svih stanica koje imaju vezu na trenutnu stranicu. diff --git a/inc/lang/hr/edit.txt b/inc/lang/hr/edit.txt index 8cd57d524..bce1abeea 100644 --- a/inc/lang/hr/edit.txt +++ b/inc/lang/hr/edit.txt @@ -1 +1 @@ -Nakon što ste napravili sve potrebne promjene - odaberite ''Snimi'' za snimanje dokumenta. +Uredite stranicu i pritisnite "Snimi". Pogledajte [[wiki:syntax]] za Wiki sintaksu. Molimo izmijenite samo ako možete unaprijediti sadržaj. Ako trebate testirati ili naučiti kako se nešto radi, molimo koristite za to namijenjene stranice kao što je [[playground:playground|igraonica]]. diff --git a/inc/lang/hr/index.txt b/inc/lang/hr/index.txt index 9c30a805c..4395994c4 100644 --- a/inc/lang/hr/index.txt +++ b/inc/lang/hr/index.txt @@ -1 +1,3 @@ -====== Indeks ====== +====== Mapa stranica ====== + +Ovo je mapa svih dostupnih stranica poredanih po [[doku>namespaces|imenskom prostoru]]. diff --git a/inc/lang/hr/lang.php b/inc/lang/hr/lang.php index 6a3fa20e2..69157015b 100644 --- a/inc/lang/hr/lang.php +++ b/inc/lang/hr/lang.php @@ -16,42 +16,42 @@ $lang['doublequoteclosing'] = '”'; $lang['singlequoteopening'] = '‘'; $lang['singlequoteclosing'] = '’'; $lang['apostrophe'] = '\''; -$lang['btn_edit'] = 'Izmijeni dokument'; -$lang['btn_source'] = 'Prikaži kod dokumenta'; +$lang['btn_edit'] = 'Izmijeni stranicu'; +$lang['btn_source'] = 'Prikaži kod stranice'; $lang['btn_show'] = 'Prikaži dokument'; -$lang['btn_create'] = 'Novi dokument'; +$lang['btn_create'] = 'Stvori ovu stranicu'; $lang['btn_search'] = 'Pretraži'; $lang['btn_save'] = 'Spremi'; $lang['btn_preview'] = 'Prikaži'; $lang['btn_top'] = 'Na vrh'; $lang['btn_newer'] = '<< noviji'; $lang['btn_older'] = 'stariji >>'; -$lang['btn_revs'] = 'Stare inačice'; +$lang['btn_revs'] = 'Stare promjene'; $lang['btn_recent'] = 'Nedavne izmjene'; -$lang['btn_upload'] = 'Postavi'; +$lang['btn_upload'] = 'Učitaj'; $lang['btn_cancel'] = 'Odustani'; -$lang['btn_index'] = 'Indeks'; -$lang['btn_secedit'] = 'Izmjeni'; +$lang['btn_index'] = 'Mapa lokacije'; +$lang['btn_secedit'] = 'Uredi'; $lang['btn_login'] = 'Prijavi se'; $lang['btn_logout'] = 'Odjavi se'; $lang['btn_admin'] = 'Administriranje'; -$lang['btn_update'] = 'Ažuriraj'; +$lang['btn_update'] = 'Dopuni'; $lang['btn_delete'] = 'Obriši'; -$lang['btn_back'] = 'Povratak'; +$lang['btn_back'] = 'Nazad'; $lang['btn_backlink'] = 'Povratni linkovi'; -$lang['btn_backtomedia'] = 'Povratak na Mediafile izbornik'; -$lang['btn_subscribe'] = 'Pretplati se na promjene dokumenta'; -$lang['btn_profile'] = 'Ažuriraj profil'; -$lang['btn_reset'] = 'Poništi promjene'; +$lang['btn_backtomedia'] = 'Natrag na odabir datoteka'; +$lang['btn_subscribe'] = 'Uređivanje pretplata'; +$lang['btn_profile'] = 'Dopuni profil'; +$lang['btn_reset'] = 'Poništi'; $lang['btn_resendpwd'] = 'Postavi novu lozinku'; $lang['btn_draft'] = 'Uredi nacrt dokumenta'; -$lang['btn_recover'] = 'Vrati prijašnji nacrt dokumenta'; -$lang['btn_draftdel'] = 'Obriši nacrt dokumenta'; +$lang['btn_recover'] = 'Vrati nacrt stranice'; +$lang['btn_draftdel'] = 'Obriši nacrt stranice'; $lang['btn_revert'] = 'Vrati'; $lang['btn_register'] = 'Registracija'; $lang['btn_apply'] = 'Primjeni'; $lang['btn_media'] = 'Upravitelj datoteka'; -$lang['btn_deleteuser'] = 'Ukloni mojeg korisnika'; +$lang['btn_deleteuser'] = 'Ukloni mog korisnika'; $lang['btn_img_backto'] = 'Povratak na %s'; $lang['btn_mediaManager'] = 'Pogledaj u upravitelju datoteka'; $lang['loggedinas'] = 'Prijavljen kao:'; @@ -59,7 +59,7 @@ $lang['user'] = 'Korisničko ime'; $lang['pass'] = 'Lozinka'; $lang['newpass'] = 'Nova lozinka'; $lang['oldpass'] = 'Potvrdi trenutnu lozinku'; -$lang['passchk'] = 'Ponoviti'; +$lang['passchk'] = 'još jednom'; $lang['remember'] = 'Zapamti me'; $lang['fullname'] = 'Ime i prezime'; $lang['email'] = 'Email'; @@ -67,7 +67,7 @@ $lang['profile'] = 'Korisnički profil'; $lang['badlogin'] = 'Ne ispravno korisničko ime ili lozinka.'; $lang['badpassconfirm'] = 'Nažalost, lozinka nije ispravna'; $lang['minoredit'] = 'Manje izmjene'; -$lang['draftdate'] = 'Nacrt dokumenta je automatski spremljen u '; +$lang['draftdate'] = 'Nacrt promjena automatski spremljen u'; $lang['nosecedit'] = 'Stranica se u međuvremenu promijenila. Informacija o odjeljku je ostarila pa je učitana kompletna stranica.'; $lang['regmissing'] = 'Morate popuniti sva polja.'; $lang['reguexists'] = 'Korisnik s tim korisničkim imenom već postoji.'; @@ -80,7 +80,7 @@ $lang['regpwmail'] = 'Vaša DokuWiki lozinka'; $lang['reghere'] = 'Još uvijek nemate korisnički račun? Registrirajte se.'; $lang['profna'] = 'Ovaj wiki ne dopušta izmjene korisničkog profila.'; $lang['profnochange'] = 'Nema izmjena.'; -$lang['profnoempty'] = 'Prazno korisničko ime ili email nisu dopušteni.'; +$lang['profnoempty'] = 'Prazno korisničko ime ili e-pošta nisu dopušteni.'; $lang['profchanged'] = 'Korisnički profil je uspješno izmijenjen.'; $lang['profnodelete'] = 'Ovaj wiki ne podržava brisanje korisnika'; $lang['profdeleteuser'] = 'Obriši korisnika'; @@ -88,13 +88,13 @@ $lang['profdeleted'] = 'Vaš korisnik je obrisan s ovog wiki-a'; $lang['profconfdelete'] = 'Želim ukloniti mojeg korisnika s ovog wiki-a. <br/> Ova akcija se ne može poništiti.'; $lang['profconfdeletemissing'] = 'Kvačica za potvrdu nije označena'; $lang['pwdforget'] = 'Izgubili ste lozinku? Zatražite novu'; -$lang['resendna'] = 'Ovaj wiki ne podržava ponovno slanje lozinke emailom.'; +$lang['resendna'] = 'Ovaj wiki ne podržava ponovno slanje lozinke e-poštom.'; $lang['resendpwd'] = 'Postavi novu lozinku za'; $lang['resendpwdmissing'] = 'Ispunite sva polja.'; $lang['resendpwdnouser'] = 'Nije moguće pronaći korisnika.'; $lang['resendpwdbadauth'] = 'Neispravan autorizacijski kod. Provjerite da li ste koristili potpun potvrdni link.'; -$lang['resendpwdconfirm'] = 'Potvrdni link je poslan emailom.'; -$lang['resendpwdsuccess'] = 'Nova lozinka je poslana emailom.'; +$lang['resendpwdconfirm'] = 'Potvrdni link je poslan e-poštom.'; +$lang['resendpwdsuccess'] = 'Nova lozinka je poslana e-poštom.'; $lang['license'] = 'Osim na mjestima gdje je naznačeno drugačije, sadržaj ovog wikija je licenciran sljedećom licencom:'; $lang['licenseok'] = 'Pažnja: promjenom ovog dokumenta pristajete licencirati sadržaj sljedećom licencom: '; $lang['searchmedia'] = 'Traži naziv datoteke:'; @@ -103,7 +103,7 @@ $lang['txt_upload'] = 'Odaberite datoteku za postavljanje:'; $lang['txt_filename'] = 'Postaviti kao (nije obavezno):'; $lang['txt_overwrt'] = 'Prepiši postojeću datoteku'; $lang['maxuploadsize'] = 'Moguće je učitati maks. %s po datoteci.'; -$lang['lockedby'] = 'Zaključao:'; +$lang['lockedby'] = 'Trenutno 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. @@ -149,16 +149,16 @@ $lang['js']['media_cancel'] = 'ukloni'; $lang['js']['media_overwrt'] = 'Prepiši preko postojeće datoteke'; $lang['rssfailed'] = 'Došlo je do greške prilikom preuzimanja feed-a: '; $lang['nothingfound'] = 'Traženi dokumetni nisu pronađeni.'; -$lang['mediaselect'] = 'Mediafile datoteke'; -$lang['fileupload'] = 'Mediafile postavljanje'; -$lang['uploadsucc'] = 'Postavljanje uspješno'; -$lang['uploadfail'] = 'Neuspješno postavljanje. Možda dozvole na poslužitelju nisu ispravne?'; -$lang['uploadwrong'] = 'Postavljanje nije dopušteno. Nastavak datoteke je zabranjen!'; +$lang['mediaselect'] = 'Datoteke'; +$lang['fileupload'] = 'Učitavanje datoteka'; +$lang['uploadsucc'] = 'Učitavanje uspješno'; +$lang['uploadfail'] = 'Neuspješno učitavanje. Možda dozvole na poslužitelju nisu ispravne?'; +$lang['uploadwrong'] = 'Učitavanje nije dopušteno. Nastavak datoteke je zabranjen!'; $lang['uploadexist'] = 'Datoteka već postoji.'; $lang['uploadbadcontent'] = 'Postavljeni sadržaj ne odgovara ekstenziji %s datoteke.'; -$lang['uploadspam'] = 'Postavljanje je blokirano spam crnom listom.'; -$lang['uploadxss'] = 'Postavljanje je blokirano zbog mogućeg zlonamjernog sadržaja.'; -$lang['uploadsize'] = 'Postavljena datoteka je prevelika (max. %s)'; +$lang['uploadspam'] = 'Učitavanje je spriječeno od spam crne liste.'; +$lang['uploadxss'] = 'Učitavanje je spriječeno zbog mogućeg zlonamjernog sadržaja.'; +$lang['uploadsize'] = 'Učitana datoteka je prevelika (max. %s)'; $lang['deletesucc'] = 'Datoteka "%s" je obrisana.'; $lang['deletefail'] = '"%s" se ne može obrisati - provjerite dozvole na poslužitelju.'; $lang['mediainuse'] = 'Datoteka "%s" nije obrisana - još uvijek se koristi.'; @@ -166,10 +166,10 @@ $lang['namespaces'] = 'Imenski prostori'; $lang['mediafiles'] = 'Datoteke u'; $lang['accessdenied'] = 'Nemate potrebne dozvole za pregled ove stranice.'; $lang['mediausage'] = 'Koristi sljedeću sintaksu za referenciranje ove datoteke:'; -$lang['mediaview'] = 'Pregledaj originalnu datoteku'; +$lang['mediaview'] = 'Vidi izvornu datoteku'; $lang['mediaroot'] = 'root'; $lang['mediaupload'] = 'Postavi datoteku u odabrani imenski prostor. Podimenski prostori se stvaraju dodavanjem istih kao prefiks naziva datoteke u "Postavi kao" polju, tako da se odvoje dvotočkama.'; -$lang['mediaextchange'] = 'Ekstenzija datoteke promijenjena iz .%s u .%s!'; +$lang['mediaextchange'] = 'Nastavak datoteke promijenjen iz .%s u .%s!'; $lang['reference'] = 'Reference za'; $lang['ref_inuse'] = 'Datoteka se ne može obrisati jer se još uvijek koristi u sljedećim dokumentima:'; $lang['ref_hidden'] = 'Neke reference se nalaze na dokumentima koje nemate dozvolu čitati'; @@ -178,17 +178,17 @@ $lang['quickhits'] = 'Pronađeno po nazivima dokumenata'; $lang['toc'] = 'Sadržaj'; $lang['current'] = 'trenutno'; $lang['yours'] = 'Vaša inačica'; -$lang['diff'] = 'Prikaži razlike u odnosu na trenutnu inačicu'; -$lang['diff2'] = 'Pokaži razlike između odabranih inačica'; -$lang['difflink'] = 'Poveznica na ovaj prikaz usporedbe'; -$lang['diff_type'] = 'Razlike u prikazu:'; +$lang['diff'] = 'Prikaži razlike u odnosu na zadnje stanje'; +$lang['diff2'] = 'Pokaži razlike između odabranih izmjena'; +$lang['difflink'] = 'Poveznica na ovu usporedbu'; +$lang['diff_type'] = 'Vidi razlike:'; $lang['diff_inline'] = 'U istoj razini'; $lang['diff_side'] = 'Usporedo'; -$lang['diffprevrev'] = 'Prošla verzija'; -$lang['diffnextrev'] = 'Novija verzija'; -$lang['difflastrev'] = 'Zadnja verzija'; -$lang['diffbothprevrev'] = 'Prošle verzije na obje strane'; -$lang['diffbothnextrev'] = 'Novije verzije na obje strane'; +$lang['diffprevrev'] = 'Starija izmjena'; +$lang['diffnextrev'] = 'Novija izmjena'; +$lang['difflastrev'] = 'Zadnja izmjena'; +$lang['diffbothprevrev'] = 'Starije izmjene na obje strane'; +$lang['diffbothnextrev'] = 'Novije izmjene na obje strane'; $lang['line'] = 'Redak'; $lang['breadcrumb'] = 'Putanja:'; $lang['youarehere'] = 'Vi ste ovdje:'; @@ -196,7 +196,7 @@ $lang['lastmod'] = 'Zadnja izmjena:'; $lang['by'] = 'od'; $lang['deleted'] = 'obrisano'; $lang['created'] = 'stvoreno'; -$lang['restored'] = 'vraćena prijašnja inačica (%s)'; +$lang['restored'] = 'vraćeno na prijašnju izmjenu (%s)'; $lang['external_edit'] = 'vanjsko uređivanje'; $lang['summary'] = 'Sažetak izmjena'; $lang['noflash'] = 'Za prikazivanje ovog sadržaja potreban je <a href="http://www.adobe.com/products/flashplayer/">Adobe Flash Plugin</a>'; @@ -214,30 +214,30 @@ $lang['mail_new_user'] = 'novi korisnik:'; $lang['mail_upload'] = 'datoteka postavljena:'; $lang['changes_type'] = 'Vidi promjene od'; $lang['pages_changes'] = 'Stranice'; -$lang['media_changes'] = 'Medijske datoteke'; +$lang['media_changes'] = 'Datoteke'; $lang['both_changes'] = 'Zajedno stranice i datoteke'; $lang['qb_bold'] = 'Podebljani tekst'; $lang['qb_italic'] = 'Ukošeni tekst'; $lang['qb_underl'] = 'Podcrtani tekst'; $lang['qb_code'] = 'Kod'; $lang['qb_strike'] = 'Precrtani tekst'; -$lang['qb_h1'] = 'Naslov - razina 1'; -$lang['qb_h2'] = 'Naslov - razina 2'; -$lang['qb_h3'] = 'Naslov - razina 3'; -$lang['qb_h4'] = 'Naslov - razina 4'; -$lang['qb_h5'] = 'Naslov - razina 5'; +$lang['qb_h1'] = 'Naslov 1. razine'; +$lang['qb_h2'] = 'Naslov 2. razine'; +$lang['qb_h3'] = 'Naslov 3. razine'; +$lang['qb_h4'] = 'Naslov 4. razine'; +$lang['qb_h5'] = 'Naslov 5. razine'; $lang['qb_h'] = 'Naslov'; $lang['qb_hs'] = 'Odaberite naslov'; $lang['qb_hplus'] = 'Naslov više razine'; $lang['qb_hminus'] = 'Naslov niže razine'; $lang['qb_hequal'] = 'Naslov iste razine'; -$lang['qb_link'] = 'Interni link'; -$lang['qb_extlink'] = 'Vanjski link'; +$lang['qb_link'] = 'Interna poveznica'; +$lang['qb_extlink'] = 'Vanjska poveznica'; $lang['qb_hr'] = 'Vodoravna crta'; -$lang['qb_ol'] = 'Pobrojana lista'; -$lang['qb_ul'] = 'Lista'; -$lang['qb_media'] = 'Dodaj slike i ostale datoteke'; -$lang['qb_sig'] = 'Potpis'; +$lang['qb_ol'] = 'Element brojane liste'; +$lang['qb_ul'] = 'Element obične liste'; +$lang['qb_media'] = 'Dodaj slike i ostale datoteke (prikaz u novom prozoru)'; +$lang['qb_sig'] = 'Ubaci potpis'; $lang['qb_smileys'] = 'Smiješkići'; $lang['qb_chars'] = 'Posebni znakovi'; $lang['upperns'] = 'Skoči u nadređeni imenski prostor'; @@ -269,10 +269,10 @@ $lang['subscr_m_new_header'] = 'Dodaj pretplatu'; $lang['subscr_m_current_header'] = 'Trenutne pretplate'; $lang['subscr_m_unsubscribe'] = 'Odjavi pretplatu'; $lang['subscr_m_subscribe'] = 'Pretplati se'; -$lang['subscr_m_receive'] = 'Primaj'; -$lang['subscr_style_every'] = 'email za svaku promjenu'; -$lang['subscr_style_digest'] = 'email s kratakim prikazom promjena za svaku stranicu (svaka %.2f dana)'; -$lang['subscr_style_list'] = 'listu promijenjenih stranica od zadnjeg primljenog email-a (svaka %.2f dana)'; +$lang['subscr_m_receive'] = 'Primi'; +$lang['subscr_style_every'] = 'e-pošta za svaku promjenu'; +$lang['subscr_style_digest'] = 'e-pošta s kratakim prikazom promjena za svaku stranicu (svaka %.2f dana)'; +$lang['subscr_style_list'] = 'listu promijenjenih stranica od zadnje primljene e-pošte (svaka %.2f dana)'; $lang['authtempfail'] = 'Autentifikacija korisnika je privremeno nedostupna. Molimo Vas da kontaktirate administratora.'; $lang['authpwdexpire'] = 'Vaša lozinka će isteći za %d dana, trebate ju promijeniti.'; $lang['i_chooselang'] = 'Izaberite vaš jezik'; @@ -281,7 +281,8 @@ $lang['i_wikiname'] = 'Naziv Wikija'; $lang['i_enableacl'] = 'Omogući ACL (preporučeno)'; $lang['i_superuser'] = 'Superkorisnik'; $lang['i_problems'] = 'Instalacija je pronašla probleme koji su naznačeni ispod. Nije moguće nastaviti dok se ti problemi ne riješe.'; -$lang['i_modified'] = 'Zbog sigurnosnih razlog, ova skripta ce raditi samo sa novim i nepromijenjenim instalacijama dokuWikija. Preporucujemo da ili re-ekstraktirate fajlove iz downloadovanog paketa ili konsultujete pune a href="http://dokuwiki.org/install">Instrukcije za instalaciju Dokuwikija</a>'; +$lang['i_modified'] = 'Zbog sigurnosnih razlog, ova skripta raditi će samo sa novim i neizmijenjenim DokuWiki instalacijama. + Molimo ponovno prekopirajte datoteke iz preuzetoga paketa ili pogledajte detaljno <a href="http://dokuwiki.org/install">Uputstvo za postavljanje DokuWiki-a</a>'; $lang['i_funcna'] = 'PHP funkcija <code>%s</code> nije dostupna. Možda ju je vaš pružatelj hostinga onemogućio iz nekog razloga?'; $lang['i_phpver'] = 'Vaša PHP verzija <code>%s</code> je niža od potrebne <code>%s</code>. Trebate nadograditi vašu PHP instalaciju.'; $lang['i_mbfuncoverload'] = 'mbstring.func_overload mora biti onemogućena u php.ini da bi ste pokrenuli DokuWiki.'; @@ -321,15 +322,15 @@ $lang['media_list_thumbs'] = 'Ikone'; $lang['media_list_rows'] = 'Redovi'; $lang['media_sort_name'] = 'Naziv'; $lang['media_sort_date'] = 'Datum'; -$lang['media_namespaces'] = 'Odaberi namespace'; -$lang['media_files'] = 'Datoteka u %s'; +$lang['media_namespaces'] = 'Odaberi imenski prostor'; +$lang['media_files'] = 'Datoteke u %s'; $lang['media_upload'] = 'Učitaj u %s'; $lang['media_search'] = 'Potraži u %s'; $lang['media_view'] = '%s'; $lang['media_viewold'] = '%s na %s'; $lang['media_edit'] = 'Uredi %s'; $lang['media_history'] = 'Povijest %s'; -$lang['media_meta_edited'] = 'meta podatci uređeni'; +$lang['media_meta_edited'] = 'meta podaci uređeni'; $lang['media_perm_read'] = 'Nažalost, nemate prava za čitanje datoteka.'; $lang['media_perm_upload'] = 'Nažalost, nemate prava za učitavanje datoteka.'; $lang['media_update'] = 'Učitaj novu verziju'; diff --git a/inc/lang/hr/revisions.txt b/inc/lang/hr/revisions.txt index d224a56f3..67d4cb89f 100644 --- a/inc/lang/hr/revisions.txt +++ b/inc/lang/hr/revisions.txt @@ -1,3 +1,3 @@ ====== Stare verzije ====== -Slijedi spisak starih verzija za traženi dokument. +Slijedi spisak starih verzija za traženi dokument. Da bi ste se vratili na neku od njih, odaberite ju, pritisnite Uređivanje i snimite ju. diff --git a/inc/lang/hr/searchpage.txt b/inc/lang/hr/searchpage.txt index 91d9f9c0a..7a94f32d2 100644 --- a/inc/lang/hr/searchpage.txt +++ b/inc/lang/hr/searchpage.txt @@ -1 +1,5 @@ -====== Rezultati pretraživanja ====== +====== Pretraživanja ====== + +Možete naći rezultat vaše pretrage u nastavku. Ako ne možete naći što tražite, možete urediti ili stvoriti novu stranicu s odgovarajućim alatom. + +====== Rezultati ====== diff --git a/inc/lang/hr/showrev.txt b/inc/lang/hr/showrev.txt index aba2c0db0..86c1a0295 100644 --- a/inc/lang/hr/showrev.txt +++ b/inc/lang/hr/showrev.txt @@ -1,2 +1,2 @@ -**Ovo je stara verzija dokumenta!** +**Ovo je stara izmjena dokumenta!** ---- diff --git a/inc/lang/it/lang.php b/inc/lang/it/lang.php index a3017a92e..f59a7b948 100644 --- a/inc/lang/it/lang.php +++ b/inc/lang/it/lang.php @@ -19,6 +19,7 @@ * @author Claudio Lanconelli <lancos@libero.it> * @author Mirko <malisan.mirko@gmail.com> * @author Francesco <francesco.cavalli@hotmail.com> + * @author Fabio <fabioslurp@yahoo.it> */ $lang['encoding'] = 'utf-8'; $lang['direction'] = 'ltr'; diff --git a/inc/lang/pt-br/lang.php b/inc/lang/pt-br/lang.php index 4f1baf22c..31940f5be 100644 --- a/inc/lang/pt-br/lang.php +++ b/inc/lang/pt-br/lang.php @@ -204,6 +204,8 @@ $lang['diff_side'] = 'Lado a lado'; $lang['diffprevrev'] = 'Revisão anterior'; $lang['diffnextrev'] = 'Próxima revisão'; $lang['difflastrev'] = 'Última revisão'; +$lang['diffbothprevrev'] = 'Ambos lados da revisão anterior'; +$lang['diffbothnextrev'] = 'Ambos lados da revisão seguinte'; $lang['line'] = 'Linha'; $lang['breadcrumb'] = 'Visitou:'; $lang['youarehere'] = 'Você está aqui:'; diff --git a/inc/lang/ru/lang.php b/inc/lang/ru/lang.php index c36c611c0..e2f9b3d57 100644 --- a/inc/lang/ru/lang.php +++ b/inc/lang/ru/lang.php @@ -26,6 +26,7 @@ * @author Erli Moen <evseev.jr@gmail.com> * @author Aleksandr Selivanov <alexgearbox@yandex.ru> * @author Владимир <id37736@yandex.ru> + * @author Igor Degraf <igordegraf@gmail.com> */ $lang['encoding'] = ' utf-8'; $lang['direction'] = 'ltr'; diff --git a/inc/lang/ta/lang.php b/inc/lang/ta/lang.php index 4a1da3531..a5b89527a 100644 --- a/inc/lang/ta/lang.php +++ b/inc/lang/ta/lang.php @@ -10,7 +10,7 @@ $lang['btn_show'] = 'பக்கத்தை காண்பி '; $lang['btn_create'] = 'இந்த பக்கத்தை உருவாக்கு '; $lang['btn_search'] = 'தேடு'; $lang['btn_save'] = 'சேமி '; -$lang['btn_revs'] = 'old திருத்தங்கள்'; +$lang['btn_revs'] = 'பழைய திருத்தங்கள்'; $lang['btn_recent'] = 'சமீபத்திய மாற்றங்கள்'; $lang['btn_upload'] = 'பதிவேற்று'; $lang['btn_cancel'] = 'ரத்து'; @@ -30,3 +30,8 @@ $lang['fullname'] = 'உண்மையான பெயர்'; $lang['email'] = 'மின்னஞ்சல்'; $lang['profile'] = 'பயன்படுத்துபவர் விவரம்'; $lang['minoredit'] = 'சிறிய மாற்றங்கள்'; +$lang['media_historytab'] = 'வரலாறு'; +$lang['media_list_rows'] = 'வரிசைகள் '; +$lang['media_sort_name'] = 'பெயர் '; +$lang['media_sort_date'] = 'தேதி '; +$lang['media_namespaces'] = 'பெயர்வெளியை தேர்வுசெய் '; diff --git a/inc/lang/zh-tw/lang.php b/inc/lang/zh-tw/lang.php index 953d866f8..bf7f89130 100644 --- a/inc/lang/zh-tw/lang.php +++ b/inc/lang/zh-tw/lang.php @@ -14,6 +14,7 @@ * @author tsangho <ou4222@gmail.com> * @author Danny Lin <danny0838@gmail.com> * @author Stan <talktostan@gmail.com> + * @author June-Hao Hou <junehao@gmail.com> */ $lang['encoding'] = 'utf-8'; $lang['direction'] = 'ltr'; @@ -303,6 +304,7 @@ $lang['i_policy'] = '初步的 ACL 政策'; $lang['i_pol0'] = '開放的 wiki (任何人可讀取、寫入、上傳)'; $lang['i_pol1'] = '公開的 wiki (任何人可讀取,註冊使用者可寫入與上傳)'; $lang['i_pol2'] = '封閉的 wiki (只有註冊使用者可讀取、寫入、上傳)'; +$lang['i_allowreg'] = '允許使用者自行註冊'; $lang['i_retry'] = '重試'; $lang['i_license'] = '請選擇您想要的內容發佈授權方式:'; $lang['i_license_none'] = '不要顯示任何關於授權方式的訊息'; diff --git a/inc/lang/zh/lang.php b/inc/lang/zh/lang.php index c8a76b66b..797a9b7a1 100644 --- a/inc/lang/zh/lang.php +++ b/inc/lang/zh/lang.php @@ -23,6 +23,7 @@ * @author Cupen <Cupenoruler@foxmail.com> * @author xiqingongzi <Xiqingongzi@Gmail.com> * @author qinghao <qingxianhao@gmail.com> + * @author Yuwei Sun <yuwei@hrz.tu-chemnitz.de> */ $lang['encoding'] = 'utf-8'; $lang['direction'] = 'ltr'; @@ -302,6 +303,7 @@ $lang['i_modified'] = '由于安全上的考虑,该脚本只能用 <a href="http://dokuwiki.org/install">Dokuwiki 安装指南</a>'; $lang['i_funcna'] = 'PHP 功能 <code>%s</code> 无法使用。也许您的服务器提供商因为某些原因禁用了它。'; $lang['i_phpver'] = '您的 PHP 版本 <code>%s</code> 低于最低要求的 <code>%s</code>。您需要升级您的 PHP 版本。'; +$lang['i_mbfuncoverload'] = '为了运行DocuWiki,您必须在php.ini中禁用mbstring.func_overload。'; $lang['i_permfail'] = 'DokuWiki 无法写入 <code>%s</code>。您需要修改该路径的权限设定!'; $lang['i_confexists'] = '<code>%s</code> 已经存在'; $lang['i_writeerr'] = '无法创建 <code>%s</code>。您需要检查该路径/文件的权限设定并手动创建该文件。'; diff --git a/inc/template.php b/inc/template.php index 8b39529c5..7f3c68534 100644 --- a/inc/template.php +++ b/inc/template.php @@ -369,7 +369,11 @@ function tpl_metaheaders($alt = true) { } else { $head['meta'][] = array('name'=> 'robots', 'content'=> 'noindex,nofollow'); } - $head['link'][] = array('rel'=> 'canonical', 'href'=> wl($ID, '', true, '&')); + $canonicalUrl = wl($ID, '', true, '&'); + if ($ID == $conf['start']) { + $canonicalUrl = DOKU_URL; + } + $head['link'][] = array('rel'=> 'canonical', 'href'=> $canonicalUrl); } else { $head['meta'][] = array('name'=> 'robots', 'content'=> 'noindex,follow'); } diff --git a/lib/plugins/acl/lang/fr/help.txt b/lib/plugins/acl/lang/fr/help.txt index 081978488..9fc2af665 100644 --- a/lib/plugins/acl/lang/fr/help.txt +++ b/lib/plugins/acl/lang/fr/help.txt @@ -6,6 +6,6 @@ Le panneau de gauche liste toutes les catégories et les pages disponibles. Le formulaire ci-dessus permet d'afficher et de modifier les autorisations d'un utilisateur ou d'un groupe sélectionné. -Dans le tableau ci-dessous, toutes les listes de contrôle d'accès (ACL) actuelles sont affichées. Vous pouvez l'utiliser pour supprimer ou modifier rapidement plusieurs contrôles d'accès. +Le tableau ci-dessous présente toutes les listes de contrôle d'accès (ACL) actuelles. Vous pouvez l'utiliser pour supprimer ou modifier rapidement plusieurs contrôles d'accès. La lecture de [[doku>fr:acl|la documentation officielle des contrôles d'accès]] pourra vous permettre de mieux comprendre le fonctionnement du contrôle d'accès dans DokuWiki. diff --git a/lib/plugins/auth.php b/lib/plugins/auth.php index b04735639..b38b591a3 100644 --- a/lib/plugins/auth.php +++ b/lib/plugins/auth.php @@ -229,14 +229,15 @@ class DokuWiki_Auth_Plugin extends DokuWiki_Plugin { * at least these fields: * * name string full name of the user - * mail string email addres of the user + * mail string email address of the user * grps array list of groups the user is in * * @author Andreas Gohr <andi@splitbrain.org> * @param string $user the user name + * @param bool $requireGroups whether or not the returned data must include groups * @return array containing user data or false */ - public function getUserData($user) { + public function getUserData($user, $requireGroups=true) { if(!$this->cando['external']) msg("no valid authorisation system in use", -1); return false; } diff --git a/lib/plugins/authad/auth.php b/lib/plugins/authad/auth.php index 0860e5756..a3119dda6 100644 --- a/lib/plugins/authad/auth.php +++ b/lib/plugins/authad/auth.php @@ -177,9 +177,10 @@ class auth_plugin_authad extends DokuWiki_Auth_Plugin { * * @author James Van Lommel <james@nosq.com> * @param string $user + * @param bool $requireGroups (optional) - ignored, groups are always supplied by this plugin * @return array */ - public function getUserData($user) { + public function getUserData($user, $requireGroups=true) { global $conf; global $lang; global $ID; diff --git a/lib/plugins/authad/lang/ar/lang.php b/lib/plugins/authad/lang/ar/lang.php new file mode 100644 index 000000000..e0ba7681a --- /dev/null +++ b/lib/plugins/authad/lang/ar/lang.php @@ -0,0 +1,8 @@ +<?php + +/** + * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) + * + * @author Mohamed Belhsine <b.mohamed897@gmail.com> + */ +$lang['domain'] = 'مجال تسجيل الدخول'; diff --git a/lib/plugins/authad/lang/cs/lang.php b/lib/plugins/authad/lang/cs/lang.php new file mode 100644 index 000000000..8119d208a --- /dev/null +++ b/lib/plugins/authad/lang/cs/lang.php @@ -0,0 +1,8 @@ +<?php + +/** + * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) + * + * @author Jaroslav Lichtblau <jlichtblau@seznam.cz> + */ +$lang['domain'] = 'Přihlašovací doména'; diff --git a/lib/plugins/authad/lang/fa/lang.php b/lib/plugins/authad/lang/fa/lang.php new file mode 100644 index 000000000..1ea73cfdb --- /dev/null +++ b/lib/plugins/authad/lang/fa/lang.php @@ -0,0 +1,8 @@ +<?php + +/** + * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) + * + * @author Hamid <zarrabi@sharif.edu> + */ +$lang['domain'] = 'دامنهی ورود'; diff --git a/lib/plugins/authad/lang/pt-br/lang.php b/lib/plugins/authad/lang/pt-br/lang.php new file mode 100644 index 000000000..5fa963d4e --- /dev/null +++ b/lib/plugins/authad/lang/pt-br/lang.php @@ -0,0 +1,8 @@ +<?php + +/** + * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) + * + * @author Felipe Castro <fefcas@gmail.com> + */ +$lang['domain'] = 'Domínio de "Logon"'; diff --git a/lib/plugins/authad/lang/zh-tw/lang.php b/lib/plugins/authad/lang/zh-tw/lang.php new file mode 100644 index 000000000..6ad0947a2 --- /dev/null +++ b/lib/plugins/authad/lang/zh-tw/lang.php @@ -0,0 +1,8 @@ +<?php + +/** + * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) + * + * @author June-Hao Hou <junehao@gmail.com> + */ +$lang['domain'] = '登入網域'; diff --git a/lib/plugins/authad/lang/zh-tw/settings.php b/lib/plugins/authad/lang/zh-tw/settings.php index bd5d9413a..42cd8c96b 100644 --- a/lib/plugins/authad/lang/zh-tw/settings.php +++ b/lib/plugins/authad/lang/zh-tw/settings.php @@ -4,6 +4,7 @@ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) * * @author syaoranhinata@gmail.com + * @author June-Hao Hou <junehao@gmail.com> */ $lang['account_suffix'] = '您的帳號後綴。如: <code>@my.domain.org</code>'; $lang['base_dn'] = '您的基本識別名。如: <code>DC=my,DC=domain,DC=org</code>'; @@ -11,6 +12,7 @@ $lang['domain_controllers'] = '以逗號分隔的域名控制器列表。如 $lang['admin_username'] = 'Active Directory 的特權使用者,可以查看所有使用者的數據。(非必要,但對發送訂閱郵件等活動來說,這是必須的。)'; $lang['admin_password'] = '上述使用者的密碼。'; $lang['sso'] = '是否使用 Kerberos 或 NTLM 的單一登入系統 (Single-Sign-On)?'; +$lang['sso_charset'] = '你的網站伺服器傳遞 Kerberos 或 NTML 帳號名稱所用的語系編碼。空白表示 UTF-8 或 latin-1。此設定需要用到 iconv 套件。'; $lang['real_primarygroup'] = '是否視作真正的主要群組,而不是假設為網域使用者 (比較慢)'; $lang['use_ssl'] = '使用 SSL 連接嗎?如果要使用,請不要啟用下方的 TLS。'; $lang['use_tls'] = '使用 TLS 連接嗎?如果要使用,請不要啟用上方的 SSL。'; diff --git a/lib/plugins/authldap/auth.php b/lib/plugins/authldap/auth.php index 0d5e130ea..b22b82ecc 100644 --- a/lib/plugins/authldap/auth.php +++ b/lib/plugins/authldap/auth.php @@ -103,7 +103,7 @@ class auth_plugin_authldap extends DokuWiki_Auth_Plugin { return true; } else { // See if we can find the user - $info = $this->getUserData($user, true); + $info = $this->_getUserData($user, true); if(empty($info['dn'])) { return false; } else { @@ -146,10 +146,19 @@ class auth_plugin_authldap extends DokuWiki_Auth_Plugin { * @author Steffen Schoch <schoch@dsb.net> * * @param string $user + * @param bool $requireGroups (optional) - ignored, groups are always supplied by this plugin + * @return array containing user data or false + */ + public function getUserData($user, $requireGroups=true) { + return $this->_getUserData($user); + } + + /** + * @param string $user * @param bool $inbind authldap specific, true if in bind phase * @return array containing user data or false */ - public function getUserData($user, $inbind = false) { + protected function _getUserData($user, $inbind = false) { global $conf; if(!$this->_openLDAP()) return false; diff --git a/lib/plugins/authldap/lang/hr/settings.php b/lib/plugins/authldap/lang/hr/settings.php index 44caeacc8..cb8df7218 100644 --- a/lib/plugins/authldap/lang/hr/settings.php +++ b/lib/plugins/authldap/lang/hr/settings.php @@ -21,3 +21,7 @@ $lang['userscope'] = 'Ograniči područje za pretragu korisnika'; $lang['groupscope'] = 'Ograniči područje za pretragu grupa'; $lang['groupkey'] = 'Članstvo grupa iz svih atributa korisnika (umjesto standardnih AD grupa) npr. grupa iz odjela ili telefonskog broja'; $lang['debug'] = 'Prikaži dodatne informacije u slučaju greške'; +$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/authmysql/auth.php b/lib/plugins/authmysql/auth.php index 1e6e6a4a9..95c62f636 100644 --- a/lib/plugins/authmysql/auth.php +++ b/lib/plugins/authmysql/auth.php @@ -21,6 +21,9 @@ class auth_plugin_authmysql extends DokuWiki_Auth_Plugin { /** @var int database subrevision */ protected $dbsub = 0; + /** @var array cache to avoid re-reading user info data */ + protected $cacheUserInfo = array(); + /** * Constructor * @@ -157,10 +160,11 @@ class auth_plugin_authmysql extends DokuWiki_Auth_Plugin { $result = $this->_queryDB($sql); if($result !== false && count($result) == 1) { - if($this->getConf('forwardClearPass') == 1) + if($this->getConf('forwardClearPass') == 1) { $rc = true; - else + } else { $rc = auth_verifyPassword($pass, $result[0]['pass']); + } } $this->_closeDB(); } @@ -174,16 +178,23 @@ class auth_plugin_authmysql extends DokuWiki_Auth_Plugin { * @author Matthias Grimm <matthiasgrimm@users.sourceforge.net> * * @param string $user user login to get data for + * @param bool $requireGroups when true, group membership information should be included in the returned array; + * when false, it maybe included, but is not required by the caller * @return array|bool */ - public function getUserData($user) { + public function getUserData($user, $requireGroups=true) { + if($this->_cacheExists($user, $requireGroups)) { + return $this->cacheUserInfo[$user]; + } + if($this->_openDB()) { $this->_lockTables("READ"); - $info = $this->_getUserInfo($user); + $info = $this->_getUserInfo($user, $requireGroups); $this->_unlockTables(); $this->_closeDB(); - } else + } else { $info = false; + } return $info; } @@ -209,12 +220,14 @@ class auth_plugin_authmysql extends DokuWiki_Auth_Plugin { global $conf; if($this->_openDB()) { - if(($info = $this->_getUserInfo($user)) !== false) + if(($info = $this->_getUserInfo($user)) !== false) { return false; // user already exists + } // set defaultgroup if no groups were given - if($grps == null) + if($grps == null) { $grps = array($conf['defaultgroup']); + } $this->_lockTables("WRITE"); $pwd = $this->getConf('forwardClearPass') ? $pwd : auth_cryptPassword($pwd); @@ -234,17 +247,17 @@ class auth_plugin_authmysql extends DokuWiki_Auth_Plugin { * The dataset update will be rejected if the user name should be changed * to an already existing one. * - * The password must be provides unencrypted. Pasword cryption is done + * The password must be provided unencrypted. Pasword encryption is done * automatically if configured. * - * If one or more groups could't be updated, an error would be set. In + * If one or more groups can't be updated, an error will be set. In * this case the dataset might already be changed and we can't rollback - * the changes. Transactions would be really usefull here. + * the changes. Transactions would be really useful here. * * modifyUser() may be called without SQL statements defined that are * needed to change group membership (for example if only the user profile - * should be modified). In this case we asure that we don't touch groups - * even $changes['grps'] is set by mistake. + * should be modified). In this case we assure that we don't touch groups + * even when $changes['grps'] is set by mistake. * * @author Chris Smith <chris@jalakai.co.uk> * @author Matthias Grimm <matthiasgrimm@users.sourceforge.net> @@ -256,27 +269,30 @@ class auth_plugin_authmysql extends DokuWiki_Auth_Plugin { public function modifyUser($user, $changes) { $rc = false; - if(!is_array($changes) || !count($changes)) + if(!is_array($changes) || !count($changes)) { return true; // nothing to change + } if($this->_openDB()) { $this->_lockTables("WRITE"); - if(($uid = $this->_getUserID($user))) { - $rc = $this->_updateUserInfo($changes, $uid); + $rc = $this->_updateUserInfo($user, $changes); - if($rc && isset($changes['grps']) && $this->cando['modGroups']) { - $groups = $this->_getGroups($user); - $grpadd = array_diff($changes['grps'], $groups); - $grpdel = array_diff($groups, $changes['grps']); + if($rc && isset($changes['grps']) && $this->cando['modGroups']) { + $groups = $this->_getGroups($user); + $grpadd = array_diff($changes['grps'], $groups); + $grpdel = array_diff($groups, $changes['grps']); - foreach($grpadd as $group) - if(($this->_addUserToGroup($user, $group, 1)) == false) - $rc = false; + foreach($grpadd as $group) { + if(($this->_addUserToGroup($user, $group, 1)) == false) { + $rc = false; + } + } - foreach($grpdel as $group) - if(($this->_delUserFromGroup($user, $group)) == false) - $rc = false; + foreach($grpdel as $group) { + if(($this->_delUserFromGroup($user, $group)) == false) { + $rc = false; + } } } @@ -304,8 +320,9 @@ class auth_plugin_authmysql extends DokuWiki_Auth_Plugin { if(is_array($users) && count($users)) { $this->_lockTables("WRITE"); foreach($users as $user) { - if($this->_delUser($user)) + if($this->_delUser($user)) { $count++; + } } $this->_unlockTables(); } @@ -367,9 +384,11 @@ class auth_plugin_authmysql extends DokuWiki_Auth_Plugin { $result = $this->_queryDB($sql); if(!empty($result)) { - foreach($result as $user) - if(($info = $this->_getUserInfo($user['user']))) + foreach($result as $user) { + if(($info = $this->_getUserInfo($user['user']))) { $out[$user['user']] = $info; + } + } } $this->_unlockTables(); @@ -466,7 +485,10 @@ class auth_plugin_authmysql extends DokuWiki_Auth_Plugin { $sql = str_replace('%{user}', $this->_escape($user), $sql); $sql = str_replace('%{gid}', $this->_escape($gid), $sql); $sql = str_replace('%{group}', $this->_escape($group), $sql); - if($this->_modifyDB($sql) !== false) return true; + if($this->_modifyDB($sql) !== false) { + $this->_flushUserInfoCache($user); + return true; + } if($newgroup) { // remove previously created group on error $sql = str_replace('%{gid}', $this->_escape($gid), $this->getConf('delGroup')); @@ -501,6 +523,10 @@ class auth_plugin_authmysql extends DokuWiki_Auth_Plugin { $sql = str_replace('%{gid}', $this->_escape($gid), $sql); $sql = str_replace('%{group}', $this->_escape($group), $sql); $rc = $this->_modifyDB($sql) == 0 ? true : false; + + if ($rc) { + $this->_flushUserInfoCache($user); + } } } return $rc; @@ -526,8 +552,9 @@ class auth_plugin_authmysql extends DokuWiki_Auth_Plugin { $result = $this->_queryDB($sql); if($result !== false && count($result)) { - foreach($result as $row) + foreach($result as $row) { $groups[] = $row['group']; + } } return $groups; } @@ -590,6 +617,7 @@ class auth_plugin_authmysql extends DokuWiki_Auth_Plugin { } if($gid !== false){ + $this->_flushUserInfoCache($user); return true; } else { /* remove the new user and all group relations if a group can't @@ -614,7 +642,7 @@ class auth_plugin_authmysql extends DokuWiki_Auth_Plugin { * * @author Matthias Grimm <matthiasgrimm@users.sourceforge.net> * - * @param string $user user whose id is desired + * @param string $user username of the user to be deleted * @return bool */ protected function _delUser($user) { @@ -626,16 +654,96 @@ class auth_plugin_authmysql extends DokuWiki_Auth_Plugin { $sql = str_replace('%{uid}', $this->_escape($uid), $this->getConf('delUser')); $sql = str_replace('%{user}', $this->_escape($user), $sql); $this->_modifyDB($sql); + $this->_flushUserInfoCache($user); + return true; + } + } + return false; + } + + /** + * Flush cached user information + * + * @author Christopher Smith <chris@jalakai.co.uk> + * + * @param string $user username of the user whose data is to be removed from the cache + * if null, empty the whole cache + * @return none + */ + protected function _flushUserInfoCache($user=null) { + if (is_null($user)) { + $this->cacheUserInfo = array(); + } else { + unset($this->cacheUserInfo[$user]); + } + } + + /** + * Quick lookup to see if a user's information has been cached + * + * This test does not need a database connection or read lock + * + * @author Christopher Smith <chris@jalakai.co.uk> + * + * @param string $user username to be looked up in the cache + * @param bool $requireGroups true, if cached info should include group memberships + * + * @return bool existence of required user information in the cache + */ + protected function _cacheExists($user, $requireGroups=true) { + if (isset($this->cacheUserInfo[$user])) { + if (!is_array($this->cacheUserInfo[$user])) { + return true; // user doesn't exist + } + + if (!$requireGroups || isset($this->cacheUserInfo[$user]['grps'])) { return true; } } + return false; } /** - * getUserInfo + * Get a user's information + * + * The database connection must already be established for this function to work. + * + * @author Christopher Smith <chris@jalakai.co.uk> + * + * @param string $user username of the user whose information is being reterieved + * @param bool $requireGroups true if group memberships should be included + * @param bool $useCache true if ok to return cached data & to cache returned data + * + * @return mixed false|array false if the user doesn't exist + * array containing user information if user does exist + */ + protected function _getUserInfo($user, $requireGroups=true, $useCache=true) { + $info = null; + + if ($useCache && isset($this->cacheUserInfo[$user])) { + $info = $this->cacheUserInfo[$user]; + } + + if (is_null($info)) { + $info = $this->_retrieveUserInfo($user); + } + + if (($requireGroups == true) && $info && !isset($info['grps'])) { + $info['grps'] = $this->_getGroups($user); + } + + if ($useCache) { + $this->cacheUserInfo[$user] = $info; + } + + return $info; + } + + /** + * retrieveUserInfo * - * Gets the data for a specific user The database connection + * Gets the data for a specific user. The database connection * must already be established for this function to work. * Otherwise it will return 'false'. * @@ -644,12 +752,11 @@ class auth_plugin_authmysql extends DokuWiki_Auth_Plugin { * @param string $user user's nick to get data for * @return bool|array false on error, user info on success */ - protected function _getUserInfo($user) { + protected function _retrieveUserInfo($user) { $sql = str_replace('%{user}', $this->_escape($user), $this->getConf('getUserInfo')); $result = $this->_queryDB($sql); if($result !== false && count($result)) { $info = $result[0]; - $info['grps'] = $this->_getGroups($user); return $info; } return false; @@ -666,20 +773,26 @@ class auth_plugin_authmysql extends DokuWiki_Auth_Plugin { * The database connection has already to be established for this * function to work. Otherwise it will return 'false'. * - * The password will be crypted if necessary. + * The password will be encrypted if necessary. * + * @param string $user user's nick being updated * @param array $changes array of items to change as pairs of item and value * @param mixed $uid user id of dataset to change, must be unique in DB * @return bool true on success or false on error * * @author Matthias Grimm <matthiasgrimm@users.sourceforge.net> */ - protected function _updateUserInfo($changes, $uid) { + protected function _updateUserInfo($user, $changes) { $sql = $this->getConf('updateUser')." "; $cnt = 0; $err = 0; if($this->dbcon) { + $uid = $this->_getUserID($user); + if ($uid === false) { + return false; + } + foreach($changes as $item => $value) { if($item == 'user') { if(($this->_getUserID($changes['user']))) { @@ -707,6 +820,7 @@ class auth_plugin_authmysql extends DokuWiki_Auth_Plugin { $sql .= " ".str_replace('%{uid}', $uid, $this->getConf('UpdateTarget')); if(get_class($this) == 'auth_mysql') $sql .= " LIMIT 1"; //some PgSQL inheritance comp. $this->_modifyDB($sql); + $this->_flushUserInfoCache($user); } return true; } diff --git a/lib/plugins/authmysql/lang/fa/settings.php b/lib/plugins/authmysql/lang/fa/settings.php new file mode 100644 index 000000000..68ad5ce83 --- /dev/null +++ b/lib/plugins/authmysql/lang/fa/settings.php @@ -0,0 +1,10 @@ +<?php + +/** + * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) + * + * @author Mohamad Mehdi Habibi <habibi.esf@gmail.com> + */ +$lang['server'] = 'سرور MySQL'; +$lang['user'] = 'نام کاربری MySQL'; +$lang['database'] = 'پایگاه داده مورد استفاده'; diff --git a/lib/plugins/authmysql/lang/hr/settings.php b/lib/plugins/authmysql/lang/hr/settings.php index 0ef389f46..af9966999 100644 --- a/lib/plugins/authmysql/lang/hr/settings.php +++ b/lib/plugins/authmysql/lang/hr/settings.php @@ -19,7 +19,7 @@ $lang['getGroups'] = 'SQL izraz za dohvaćanje članstva u grupama'; $lang['getUsers'] = 'SQL izraz za ispis svih korisnika'; $lang['FilterLogin'] = 'SQL izraz za izdvajanje korisnika po korisničkom imenu'; $lang['FilterName'] = 'SQL izraz za izdvajanje korisnika po punom imenu'; -$lang['FilterEmail'] = 'SQL izraz za izdvajanje korisnika po email adresi'; +$lang['FilterEmail'] = 'SQL izraz za izdvajanje korisnika po adresi e-pošte'; $lang['FilterGroup'] = 'SQL izraz za izdvajanje korisnika po članstvu u grupama'; $lang['SortOrder'] = 'SQL izraz za sortiranje korisnika'; $lang['addUser'] = 'SQL izraz za dodavanje novih korisnika'; diff --git a/lib/plugins/authpgsql/auth.php b/lib/plugins/authpgsql/auth.php index e51b39858..99f3ed443 100644 --- a/lib/plugins/authpgsql/auth.php +++ b/lib/plugins/authpgsql/auth.php @@ -160,7 +160,7 @@ class auth_plugin_authpgsql extends auth_plugin_authmysql { $result = $this->_queryDB($sql); foreach($result as $user) - if(($info = $this->_getUserInfo($user['user']))) + if(($info = $this->_getCachedUserInfo($user['user']))) $out[$user['user']] = $info; $this->_unlockTables(); @@ -212,7 +212,10 @@ class auth_plugin_authpgsql extends auth_plugin_authmysql { $sql = str_replace('%{user}', addslashes($user), $sql); $sql = str_replace('%{gid}', addslashes($gid), $sql); $sql = str_replace('%{group}', addslashes($group), $sql); - if($this->_modifyDB($sql) !== false) return true; + if($this->_modifyDB($sql) !== false) { + $this->_flushUserInfoCache($user); + return true; + } if($newgroup) { // remove previously created group on error $sql = str_replace('%{gid}', addslashes($gid), $this->conf['delGroup']); @@ -267,6 +270,7 @@ class auth_plugin_authpgsql extends auth_plugin_authmysql { } if($gid !== false){ + $this->_flushUserInfoCache($user); return true; } else { /* remove the new user and all group relations if a group can't diff --git a/lib/plugins/authpgsql/lang/es/settings.php b/lib/plugins/authpgsql/lang/es/settings.php index 2e02fc0ec..abfb00d38 100644 --- a/lib/plugins/authpgsql/lang/es/settings.php +++ b/lib/plugins/authpgsql/lang/es/settings.php @@ -5,6 +5,7 @@ * * @author Antonio Bueno <atnbueno@gmail.com> * @author Antonio Castilla <antoniocastilla@trazoide.com> + * @author pokesakura <pokesakura@gmail.com> */ $lang['server'] = 'Su servidor PostgreSQL'; $lang['port'] = 'Puerto de su servidor PostgreSQL'; @@ -17,10 +18,21 @@ $lang['checkPass'] = 'Sentencia SQL para el control de las contrase $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['FilterLogin'] = 'Sentencia SQL para filtrar a los usuarios por su login'; +$lang['FilterName'] = 'Sentencia SQL para filtrar a los usuarios por su nombre completo'; +$lang['FilterEmail'] = 'Sentencia SQL para filtrar a los usuarios por su correo electrónico'; +$lang['FilterGroup'] = 'Sentencia SQL para filtrar a los usuarios por su membresía en un grupo'; +$lang['SortOrder'] = 'Sentencia SQL para ordenar a 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['delUserRefs'] = 'Sentencia SQL para remover a un usuario de su memebresia en todos los grupos'; +$lang['updateUser'] = 'Sentencia SQL para actualizar los datos del usuario'; +$lang['UpdateLogin'] = 'Sentencia de actualizacion para el login del usuario'; +$lang['UpdatePass'] = 'Sentencia de actualizacion para el password del usuario'; +$lang['UpdateEmail'] = 'Sentencia de actualizacion del correo electrónico del usuario'; +$lang['UpdateName'] = 'Sentencia de actualizacion del nombre completo del usuario'; $lang['getGroupID'] = 'Sentencia SQL para obtener la clave principal de un grupo dado'; diff --git a/lib/plugins/authpgsql/lang/fa/settings.php b/lib/plugins/authpgsql/lang/fa/settings.php new file mode 100644 index 000000000..813493967 --- /dev/null +++ b/lib/plugins/authpgsql/lang/fa/settings.php @@ -0,0 +1,8 @@ +<?php + +/** + * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) + * + * @author Mohamad Mehdi Habibi <habibi.esf@gmail.com> + */ +$lang['database'] = 'پایگاه داده مورد استفاده'; diff --git a/lib/plugins/authplain/auth.php b/lib/plugins/authplain/auth.php index e53f56667..b3ca988b9 100644 --- a/lib/plugins/authplain/auth.php +++ b/lib/plugins/authplain/auth.php @@ -76,9 +76,10 @@ class auth_plugin_authplain extends DokuWiki_Auth_Plugin { * * @author Andreas Gohr <andi@splitbrain.org> * @param string $user + * @param bool $requireGroups (optional) ignored by this plugin, grps info always supplied * @return array|bool */ - public function getUserData($user) { + public function getUserData($user, $requireGroups=true) { if($this->users === null) $this->_loadUserData(); return isset($this->users[$user]) ? $this->users[$user] : false; } diff --git a/lib/plugins/extension/helper/list.php b/lib/plugins/extension/helper/list.php index 47edca8c1..9b1988d84 100644 --- a/lib/plugins/extension/helper/list.php +++ b/lib/plugins/extension/helper/list.php @@ -387,7 +387,8 @@ class helper_plugin_extension_list extends DokuWiki_Plugin { $return .= '<dd>'; $return .= hsc($extension->getInstalledVersion()); $return .= '</dd>'; - } else { + } + if (!$extension->isBundled()) { $return .= '<dt>'.$this->getLang('install_date').'</dt>'; $return .= '<dd>'; $return .= ($extension->getUpdateDate() ? hsc($extension->getUpdateDate()) : $this->getLang('unknown')); @@ -401,13 +402,6 @@ class helper_plugin_extension_list extends DokuWiki_Plugin { $return .= '</dd>'; } - if($extension->getInstallDate()) { - $return .= '<dt>'.$this->getLang('installed').'</dt>'; - $return .= '<dd>'; - $return .= hsc($extension->getInstallDate()); - $return .= '</dd>'; - } - $return .= '<dt>'.$this->getLang('provides').'</dt>'; $return .= '<dd><bdi>'; $return .= ($extension->getTypes() ? hsc(implode(', ', $extension->getTypes())) : $default); diff --git a/lib/plugins/extension/lang/cs/intro_install.txt b/lib/plugins/extension/lang/cs/intro_install.txt new file mode 100644 index 000000000..b274959b9 --- /dev/null +++ b/lib/plugins/extension/lang/cs/intro_install.txt @@ -0,0 +1 @@ +Zde můžete ručně instalovat zásuvné moduly a šablony vzhledu, buď nahráním, nebo zadáním přímé URL pro stažení.
\ No newline at end of file diff --git a/lib/plugins/extension/lang/cs/lang.php b/lib/plugins/extension/lang/cs/lang.php new file mode 100644 index 000000000..27b3a94a3 --- /dev/null +++ b/lib/plugins/extension/lang/cs/lang.php @@ -0,0 +1,57 @@ +<?php + +/** + * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) + * + * @author Viktor Zavadil <vzavadil@newps.cz> + * @author Jaroslav Lichtblau <jlichtblau@seznam.cz> + */ +$lang['menu'] = 'Manager rozšíření'; +$lang['tab_plugins'] = 'Instalované moduly'; +$lang['tab_templates'] = 'Instalované šablony'; +$lang['tab_search'] = 'Vyhledej a instaluj'; +$lang['tab_install'] = 'Ruční instalování'; +$lang['notimplemented'] = 'Tato vychytávka není dosud implementována'; +$lang['notinstalled'] = 'Toto rozšíření není instalováno'; +$lang['alreadyenabled'] = 'Toto rozšíření je již povoleno'; +$lang['alreadydisabled'] = 'Toto rozšíření je již vypnuto'; +$lang['unknownauthor'] = 'Neznámý autor'; +$lang['unknownversion'] = 'Neznámá verze'; +$lang['btn_info'] = 'Zobrazit více informací'; +$lang['btn_update'] = 'Aktualizovat'; +$lang['btn_uninstall'] = 'Odinstalovat'; +$lang['btn_enable'] = 'Povolit'; +$lang['btn_disable'] = 'Zakázat'; +$lang['btn_install'] = 'Instalovat'; +$lang['btn_reinstall'] = 'Přeinstalovat'; +$lang['js']['reallydel'] = 'Opravdu odinstalovat toto rozšíření?'; +$lang['search_for'] = 'Hledat rozšíření:'; +$lang['search'] = 'Hledat'; +$lang['popularity'] = 'Popularita: %s%%'; +$lang['homepage_link'] = 'Dokumenty'; +$lang['bugs_features'] = 'Chyby'; +$lang['tags'] = 'Štítky:'; +$lang['author_hint'] = 'Vyhledat rozšíření podle tohoto autora'; +$lang['installed'] = 'Nainstalováno:'; +$lang['repository'] = 'Repozitář:'; +$lang['unknown'] = '<em>neznámý</em>'; +$lang['installed_version'] = 'Nainstalovaná verze:'; +$lang['install_date'] = 'Poslední aktualizace'; +$lang['available_version'] = 'Dostupná verze:'; +$lang['compatible'] = 'Kompatibilní s:'; +$lang['depends'] = 'Závisí na:'; +$lang['similar'] = 'Podobný jako:'; +$lang['donate'] = 'Líbí se ti to?'; +$lang['donate_action'] = 'Kup autorovi kávu!'; +$lang['repo_retry'] = 'Opakovat'; +$lang['provides'] = 'Poskytuje:'; +$lang['status'] = 'Stav:'; +$lang['status_installed'] = 'instalovaný'; +$lang['status_not_installed'] = 'nenainstalovaný'; +$lang['status_protected'] = 'chráněný'; +$lang['status_enabled'] = 'povolený'; +$lang['status_disabled'] = 'zakázaný'; +$lang['status_unmodifiable'] = 'neměnný'; +$lang['status_plugin'] = 'zásuvný modul'; +$lang['status_template'] = 'šablona'; +$lang['msg_delete_success'] = 'Rozšíření odinstalováno'; diff --git a/lib/plugins/extension/lang/fa/lang.php b/lib/plugins/extension/lang/fa/lang.php new file mode 100644 index 000000000..95c3e9652 --- /dev/null +++ b/lib/plugins/extension/lang/fa/lang.php @@ -0,0 +1,40 @@ +<?php + +/** + * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) + * + * @author Mohamad Mehdi Habibi <habibi.esf@gmail.com> + */ +$lang['menu'] = 'مدیریت افزونه ها'; +$lang['tab_plugins'] = 'پلاگین های نصب شده'; +$lang['tab_templates'] = 'قالب های نصب شده'; +$lang['tab_search'] = 'جستجو و نصب'; +$lang['tab_install'] = 'نصب دستی'; +$lang['notinstalled'] = 'این افزونه نصب نشده است'; +$lang['alreadyenabled'] = 'این افزونه فعال شده است'; +$lang['alreadydisabled'] = 'این افزونه غیرفعال شده است'; +$lang['unknownversion'] = 'نسخه ناشناخته'; +$lang['btn_info'] = 'نمایش اطلاعات بیشتر'; +$lang['btn_update'] = 'به روز رسانی'; +$lang['btn_enable'] = 'فعال'; +$lang['btn_disable'] = 'غیرفعال'; +$lang['btn_install'] = 'نصب'; +$lang['btn_reinstall'] = 'نصب مجدد'; +$lang['search_for'] = 'جستجوی افزونه:'; +$lang['search'] = 'جستجو'; +$lang['tags'] = 'برچسب ها:'; +$lang['installed_version'] = 'نسخه نصب شده:'; +$lang['available_version'] = 'نسخه در دسترس:'; +$lang['repo_retry'] = 'دوباره'; +$lang['status'] = 'وضعیت'; +$lang['status_installed'] = 'نصب شده'; +$lang['status_not_installed'] = 'نصب نشده'; +$lang['status_enabled'] = 'فعال'; +$lang['status_disabled'] = 'غیرفعال'; +$lang['status_plugin'] = 'پلاگین'; +$lang['status_template'] = 'قالب'; +$lang['noperms'] = 'پوشه افزونه ها قابل نوشتن نیست'; +$lang['notplperms'] = 'پوشه قالب ها قابل نوشتن نیست'; +$lang['nopluginperms'] = 'پوشه پلاگین ها قابل نوشتن نیست'; +$lang['install_url'] = 'نصب از آدرس:'; +$lang['install_upload'] = 'بارگذاری افزونه:'; diff --git a/lib/plugins/extension/lang/hr/lang.php b/lib/plugins/extension/lang/hr/lang.php index 890681301..4905fe864 100644 --- a/lib/plugins/extension/lang/hr/lang.php +++ b/lib/plugins/extension/lang/hr/lang.php @@ -18,7 +18,7 @@ $lang['pluginlistsaveerror'] = 'Dogodila se greška pri snimanju liste dodatak $lang['unknownauthor'] = 'Nepoznat autor'; $lang['unknownversion'] = 'Nepoznata inačica'; $lang['btn_info'] = 'Prikaži više informacija'; -$lang['btn_update'] = 'Ažuriraj'; +$lang['btn_update'] = 'Dopuni'; $lang['btn_uninstall'] = 'Ukloni'; $lang['btn_enable'] = 'Omogući'; $lang['btn_disable'] = 'Onemogući'; @@ -40,3 +40,49 @@ $lang['repository'] = 'Repozitorij:'; $lang['unknown'] = '<em>nepoznat</em>'; $lang['installed_version'] = 'Postavljena inačica:'; $lang['install_date'] = 'Vaše zadnje osvježavanje:'; +$lang['available_version'] = 'Dostupna inačica'; +$lang['compatible'] = 'Kompatibilan s:'; +$lang['depends'] = 'Zavisi o:'; +$lang['similar'] = 'Sličan s:'; +$lang['conflicts'] = 'U sukobu s:'; +$lang['donate'] = 'Poput ovog?'; +$lang['donate_action'] = 'Kupite autoru kavu!'; +$lang['repo_retry'] = 'Ponovi'; +$lang['provides'] = 'Osigurava:'; +$lang['status'] = 'Status:'; +$lang['status_installed'] = 'ugrađen'; +$lang['status_not_installed'] = 'nije ugrađen'; +$lang['status_protected'] = 'zaštićen'; +$lang['status_enabled'] = 'omogućen'; +$lang['status_disabled'] = 'onemogućen'; +$lang['status_unmodifiable'] = 'neizmjenjiv'; +$lang['status_plugin'] = 'dodatak'; +$lang['status_template'] = 'predložak'; +$lang['status_bundled'] = 'ugrađen'; +$lang['msg_enabled'] = 'Dodatak %s omogućen'; +$lang['msg_disabled'] = 'Dodatak %s onemogućen'; +$lang['msg_delete_success'] = 'Proširenje uklonjeno'; +$lang['msg_template_install_success'] = 'Predložak %s uspješno ugrađen'; +$lang['msg_template_update_success'] = 'Predložak %s uspješno nadograđen'; +$lang['msg_plugin_install_success'] = 'Dodatak %s uspješno ugrađen'; +$lang['msg_plugin_update_success'] = 'Dodatak %s uspješno nadograđen'; +$lang['msg_upload_failed'] = 'Učitavanje datoteke nije uspjelo'; +$lang['missing_dependency'] = '<strong>Nedostaje ili onemogućena zavisnost:</strong> %s'; +$lang['security_issue'] = '<strong>Sigurnosno pitanje:</strong> %s'; +$lang['security_warning'] = '<strong>Sigurnosno upozorenje:</strong> %s'; +$lang['update_available'] = '<strong>Nadogranja:</strong> Nova inačica %s je dostupna.'; +$lang['wrong_folder'] = '<strong>Dodatak neispravno ugrađen:</strong> Preimenujte mapu dodatka iz "%s" u "%s".'; +$lang['url_change'] = '<strong>URL izmijenjen:</strong> Adresa za preuzimanje je promijenjena od zadnjeg preuzimanja. Provjerite da li je novu URL valjan prije nadogradnje proširenja.<br />Novi: %s<br />Stari: %s'; +$lang['error_badurl'] = 'URL adrese trebaju započinjati sa http ili https'; +$lang['error_dircreate'] = 'Ne mogu napraviti privremenu mapu za prihvat preuzimanja'; +$lang['error_download'] = 'Ne mogu preuzeti datoteku: %s'; +$lang['error_decompress'] = 'Ne mogu raspakirati preuzetu datoteku. To može biti rezultati lošeg preuzimanja i tada treba pokušati ponovo; ili format sažimanja je nepoznat i u tom slučaju treba datoteku ručno preuzeti i ugraditi.'; +$lang['error_findfolder'] = 'Ne mogu odrediti mapu proširenja, trebate ga ručno preuzeti i ugraditi'; +$lang['error_copy'] = 'Dogodila se greška pri kopiranju dok je pokušavanja ugradnja datoteka u mapu <em>%s</em>: disk može biti pun ili dozvole pristupa nisu dobre. Ovo može rezultirati djelomično ugrađenim dodatkom i može učiniti Vaš wiki nestabilnim'; +$lang['noperms'] = 'Nije moguće pisati u mapu proširanja'; +$lang['notplperms'] = 'Nije moguće pisati u mapu predloška'; +$lang['nopluginperms'] = 'Nije moguće pisati u mapu dodatka'; +$lang['git'] = 'Proširenje je ugrađeno preko Git-a, možda ga ne želite nadograđivati ovdje.'; +$lang['install_url'] = 'Ugradi s URL-a:'; +$lang['install_upload'] = 'Učitaj proširenje:'; +$lang['repo_error'] = 'Repozitorij dodataka nije dostupan. Budite sigurni da server može pristupiti www.dokuwiki.org i provjerite proxy postavke.'; diff --git a/lib/plugins/extension/lang/it/lang.php b/lib/plugins/extension/lang/it/lang.php index fbf163d57..7dff6c5b2 100644 --- a/lib/plugins/extension/lang/it/lang.php +++ b/lib/plugins/extension/lang/it/lang.php @@ -4,6 +4,7 @@ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) * * @author Francesco <francesco.cavalli@hotmail.com> + * @author Fabio <fabioslurp@yahoo.it> */ $lang['btn_enable'] = 'Abilita'; $lang['btn_disable'] = 'Disabilita'; @@ -36,6 +37,7 @@ $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['noperms'] = 'La directory Extension non è scrivibile'; $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/pt-br/intro_install.txt b/lib/plugins/extension/lang/pt-br/intro_install.txt new file mode 100644 index 000000000..08527b0f6 --- /dev/null +++ b/lib/plugins/extension/lang/pt-br/intro_install.txt @@ -0,0 +1 @@ +Aqui você pode instalar extensões e modelos manualmente, ou subindo eles ou submetendo uma URL de baixar diretamente.
\ No newline at end of file diff --git a/lib/plugins/extension/lang/pt-br/intro_plugins.txt b/lib/plugins/extension/lang/pt-br/intro_plugins.txt new file mode 100644 index 000000000..e0a8c7f3f --- /dev/null +++ b/lib/plugins/extension/lang/pt-br/intro_plugins.txt @@ -0,0 +1 @@ +Estas são as extensões instaladas atualmente no seu DokuWiki. Você pode habilitar ou desabilitar ou desinstalar completamente elas aqui. Atualizações das extensões também são mostradas, certifique-se de ler a documentação da extensão antes de atualizá-la.
\ No newline at end of file diff --git a/lib/plugins/extension/lang/pt-br/intro_search.txt b/lib/plugins/extension/lang/pt-br/intro_search.txt new file mode 100644 index 000000000..f2101d73b --- /dev/null +++ b/lib/plugins/extension/lang/pt-br/intro_search.txt @@ -0,0 +1 @@ +Esta aba lhe dá acesso a extensões e modelos disponibilizados por terceiros para o DokuWiki. Favor ter cuidado pois instalar código de terceiros pode acarretar um **risco de segurança**, você poderia ler sobre [[doku>security#plugin_security|segurança de extensões]] primeiramente.
\ No newline at end of file diff --git a/lib/plugins/extension/lang/pt-br/intro_templates.txt b/lib/plugins/extension/lang/pt-br/intro_templates.txt new file mode 100644 index 000000000..aa3e07f0c --- /dev/null +++ b/lib/plugins/extension/lang/pt-br/intro_templates.txt @@ -0,0 +1 @@ +Estes são os modelos instalados atualmente no seu DokuWiki. Você pode selecionar o modelo a ser usado no [[?do=admin&page=config|Configuration Manager]].
\ No newline at end of file diff --git a/lib/plugins/extension/lang/pt-br/lang.php b/lib/plugins/extension/lang/pt-br/lang.php new file mode 100644 index 000000000..0d897616a --- /dev/null +++ b/lib/plugins/extension/lang/pt-br/lang.php @@ -0,0 +1,75 @@ +<?php + +/** + * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) + * + * @author Felipe Castro <fefcas@gmail.com> + */ +$lang['menu'] = 'Gerenciador de extensões'; +$lang['tab_plugins'] = 'Extensões instaladas'; +$lang['tab_templates'] = 'Modelos instalados'; +$lang['tab_search'] = 'Procurar e instalar'; +$lang['tab_install'] = 'Instalar manualmente'; +$lang['notimplemented'] = 'Esta função ainda não foi implementada'; +$lang['notinstalled'] = 'Esta extensão não está instalada'; +$lang['alreadyenabled'] = 'Esta extensão já foi habilitada'; +$lang['alreadydisabled'] = 'Esta extensão já foi desabilitada'; +$lang['pluginlistsaveerror'] = 'Houve um erro ao salvar a lista de extensões'; +$lang['unknownauthor'] = 'Autor desconhecido'; +$lang['unknownversion'] = 'Versão desconhecida'; +$lang['btn_info'] = 'Mostrar mais informações'; +$lang['btn_update'] = 'Atualizar'; +$lang['btn_uninstall'] = 'Desinstalar'; +$lang['btn_enable'] = 'Habilitar'; +$lang['btn_disable'] = 'Desabilitar'; +$lang['btn_install'] = 'Instalar'; +$lang['btn_reinstall'] = 'Re-instalar'; +$lang['js']['reallydel'] = 'Quer mesmo desinstalar esta extensão?'; +$lang['search_for'] = 'Procurar extensão:'; +$lang['search'] = 'Procurar'; +$lang['extensionby'] = '<strong>%s</strong> de %s'; +$lang['screenshot'] = 'Tela congelada de %s'; +$lang['popularity'] = 'Popularidade: %s%%'; +$lang['homepage_link'] = 'Docs'; +$lang['bugs_features'] = 'Erros'; +$lang['tags'] = 'Etiquetas:'; +$lang['author_hint'] = 'Procurar extensões deste autor'; +$lang['installed'] = 'Instalado:'; +$lang['downloadurl'] = 'URL para baixar:'; +$lang['repository'] = 'Repositório:'; +$lang['unknown'] = '<em>desconhecido</em>'; +$lang['installed_version'] = 'Versão instalada:'; +$lang['install_date'] = 'Sua última atualização:'; +$lang['available_version'] = 'Versão disponível:'; +$lang['compatible'] = 'Compatível com:'; +$lang['depends'] = 'Depende de:'; +$lang['similar'] = 'Similar a:'; +$lang['conflicts'] = 'Colide com:'; +$lang['donate'] = 'Gostou deste?'; +$lang['donate_action'] = 'Pague um café ao autor!'; +$lang['repo_retry'] = 'Tentar de novo'; +$lang['provides'] = 'Disponibiliza:'; +$lang['status'] = 'Estado:'; +$lang['status_installed'] = 'instalado'; +$lang['status_not_installed'] = 'não instalado'; +$lang['status_protected'] = 'protegido'; +$lang['status_enabled'] = 'habilitado'; +$lang['status_disabled'] = 'desabilitado'; +$lang['status_unmodifiable'] = 'não modificável'; +$lang['status_plugin'] = 'extensão'; +$lang['status_template'] = 'modelo'; +$lang['status_bundled'] = 'agrupado'; +$lang['msg_enabled'] = 'Extensão %s habilitada'; +$lang['msg_disabled'] = 'Extensão %s desabilitada'; +$lang['msg_delete_success'] = 'Extensão desinstalada'; +$lang['msg_template_install_success'] = 'Modelo %s instalado com sucesso'; +$lang['msg_template_update_success'] = 'Modelo %s atualizado com sucesso'; +$lang['msg_plugin_install_success'] = 'Extensão %s instalada com sucesso'; +$lang['msg_plugin_update_success'] = 'Extensão %s atualizada com sucesso'; +$lang['msg_upload_failed'] = 'Subida do arquivo falhou'; +$lang['missing_dependency'] = '<strong>Dependência faltante ou desabilitada:</strong> %s'; +$lang['security_issue'] = '<strong>Problema com segurança:</strong> %s'; +$lang['security_warning'] = '<strong>Aviso sobre segurança:</strong> %s'; +$lang['update_available'] = '<strong>Atualização:</strong> Nova versão %s está disponível.'; +$lang['wrong_folder'] = '<strong>Extensão instalada incorretamente:</strong> Renomeie o diretório de extensões "%s" para "%s".'; +$lang['url_change'] = '<strong>URL mudou:</strong> A URL para baixar mudou desde a última baixada. Verifique se a nova URL é válida antes de atualizar a extensão.<br />Novo: %s<br />Velho: %s'; diff --git a/lib/plugins/extension/lang/ru/lang.php b/lib/plugins/extension/lang/ru/lang.php index d524f072b..fa1625f28 100644 --- a/lib/plugins/extension/lang/ru/lang.php +++ b/lib/plugins/extension/lang/ru/lang.php @@ -4,6 +4,7 @@ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) * * @author Aleksandr Selivanov <alexgearbox@yandex.ru> + * @author Igor Degraf <igordegraf@gmail.com> */ $lang['menu'] = 'Управление дополнениями'; $lang['tab_plugins'] = 'Установленные плагины'; @@ -58,3 +59,10 @@ $lang['msg_template_install_success'] = 'Шаблон %s успешно уста $lang['msg_template_update_success'] = 'Шаблон %s успешно обновлён'; $lang['msg_plugin_install_success'] = 'Плагин %s успешно установлен'; $lang['msg_plugin_update_success'] = 'Плагин %s успешно обновлён'; +$lang['noperms'] = 'Папка для расширений не доступна на запись'; +$lang['notplperms'] = 'Папка для шаблонов не доступна на запись'; +$lang['nopluginperms'] = 'Папка плагинов не доступна на запись'; +$lang['git'] = 'Это расширение было установлено через git, Вы не можете обновить его тут.'; +$lang['install_url'] = 'Установить с адреса URL:'; +$lang['install_upload'] = 'Скачать расширение:'; +$lang['repo_error'] = 'Сайт с плагинами недоступен. Убедитесь, что у сайта есть доступ на www.dokuwiki.org и также проверьте настройки соединения прокси.'; diff --git a/lib/plugins/extension/lang/zh-tw/intro_install.txt b/lib/plugins/extension/lang/zh-tw/intro_install.txt new file mode 100644 index 000000000..3ba93f5f8 --- /dev/null +++ b/lib/plugins/extension/lang/zh-tw/intro_install.txt @@ -0,0 +1 @@ +在此你可以透過檔案上傳或提供下載網址的方式,進行手動安裝外掛與版型風格。
\ No newline at end of file diff --git a/lib/plugins/extension/lang/zh-tw/lang.php b/lib/plugins/extension/lang/zh-tw/lang.php index 304aed5ee..a86364d7a 100644 --- a/lib/plugins/extension/lang/zh-tw/lang.php +++ b/lib/plugins/extension/lang/zh-tw/lang.php @@ -4,8 +4,47 @@ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) * * @author Stan <talktostan@gmail.com> + * @author June-Hao Hou <junehao@gmail.com> */ +$lang['menu'] = '延伸功能管理'; +$lang['tab_plugins'] = '已安裝外掛'; $lang['tab_templates'] = '已安裝裝模版 '; $lang['tab_search'] = '搜尋與安裝'; +$lang['tab_install'] = '手動安裝'; +$lang['notimplemented'] = '此功能尚未完成'; +$lang['notinstalled'] = '此延伸功能尚未安裝'; +$lang['alreadyenabled'] = '此延伸功能已經安裝'; +$lang['alreadydisabled'] = '此延伸功能停用'; +$lang['unknownauthor'] = '作者未知'; +$lang['unknownversion'] = '版本未知'; +$lang['btn_info'] = '顯示更多訊息'; $lang['btn_update'] = '更新'; +$lang['btn_uninstall'] = '移除安裝'; +$lang['btn_enable'] = '啟用'; +$lang['btn_disable'] = '停用'; +$lang['btn_install'] = '安裝'; +$lang['btn_reinstall'] = '重新安裝'; +$lang['js']['reallydel'] = '確定要移除此延伸功能?'; +$lang['search_for'] = '搜尋延伸功能:'; +$lang['search'] = '搜尋'; +$lang['tags'] = '標籤:'; +$lang['author_hint'] = '搜尋相同作者的延伸功能'; +$lang['installed'] = '已安裝:'; +$lang['downloadurl'] = '下載網址:'; +$lang['installed_version'] = '已安裝版本:'; +$lang['available_version'] = '可用版本:'; +$lang['compatible'] = '相容於:'; +$lang['repo_retry'] = '再試一次'; +$lang['status'] = '狀態:'; +$lang['status_installed'] = '已安裝'; +$lang['status_not_installed'] = '未安裝'; +$lang['status_enabled'] = '作用中'; +$lang['status_disabled'] = '停用中'; +$lang['status_plugin'] = '外掛'; +$lang['noperms'] = '延伸功能資料夾無法寫入'; +$lang['notplperms'] = '版型資料夾無法寫入'; +$lang['nopluginperms'] = '外掛資料夾無法寫入'; +$lang['git'] = '此延伸功能是透過git安裝的,最好不要用上傳方式。'; +$lang['install_url'] = '透過網址安裝:'; +$lang['install_upload'] = '上傳延伸功能:'; diff --git a/lib/plugins/popularity/lang/hr/intro.txt b/lib/plugins/popularity/lang/hr/intro.txt new file mode 100644 index 000000000..c7c3eba61 --- /dev/null +++ b/lib/plugins/popularity/lang/hr/intro.txt @@ -0,0 +1,7 @@ +====== Povratna informacija o popularnosti ====== + +Ovaj [[doku>popularity|alat]] prikupla anonimne podatke o Vašem wiki i omogućava Vam da ih pošaljete DokuWiki razvojnom timu. To im pomaže da bolje razumiju kako korisnici koriste DokuWiki i osigurava kvalitetnije odluke o budućem razvoju u skladu s stvarnim korištenjem. + +Pozivamo Vas da ponavljate ovaj korak s vremena na vrijeme kako bi razvojni tim bio obaviješten o razvoju Vašeg wiki-a. Vaši novi podaci biti će identificirani putem anonimne oznake. + +Prikupljeni podatci sadrže informacije kako što je DokuWiki inačica, broj i veličina vaših stranica i datoteka, ugrađeni dodatci i PHP-u koji se koristi. Sirovi podatci koji će biti poslani su prikazani niže. Molim koristite gumb "Pošalji podatke" da bi ste poslali ove informacije. diff --git a/lib/plugins/popularity/lang/hr/lang.php b/lib/plugins/popularity/lang/hr/lang.php new file mode 100644 index 000000000..a8ea70728 --- /dev/null +++ b/lib/plugins/popularity/lang/hr/lang.php @@ -0,0 +1,14 @@ +<?php + +/** + * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) + * + * @author Davor Turkalj <turki.bsc@gmail.com> + */ +$lang['name'] = 'Povratna informacija o popularnosti (može proteći neko vrijeme dok se učita)'; +$lang['submit'] = 'Pošalji podatke'; +$lang['autosubmit'] = 'Šalji podatke automatski jednom mjesečno'; +$lang['submissionFailed'] = 'Podatci ne mogu biti poslani zbog slijedeće greške:'; +$lang['submitDirectly'] = 'Podatke možete poslati ručno potvrđivanjem forme u nastavku.'; +$lang['autosubmitError'] = 'Zadnje automatsko slanje nije uspješno zbog slijedeće greške:'; +$lang['lastSent'] = 'Podatci su poslani'; diff --git a/lib/plugins/popularity/lang/hr/submitted.txt b/lib/plugins/popularity/lang/hr/submitted.txt new file mode 100644 index 000000000..8c841b3df --- /dev/null +++ b/lib/plugins/popularity/lang/hr/submitted.txt @@ -0,0 +1,3 @@ +====== Povratna informacija o popularnosti ====== + +Podatci su uspješno poslani.
\ No newline at end of file diff --git a/lib/plugins/revert/lang/ar/lang.php b/lib/plugins/revert/lang/ar/lang.php index 71f411c52..6262cc674 100644 --- a/lib/plugins/revert/lang/ar/lang.php +++ b/lib/plugins/revert/lang/ar/lang.php @@ -8,6 +8,7 @@ * @author uahello@gmail.com * @author Ahmad Abd-Elghany <tolpa1@gmail.com> * @author alhajr <alhajr300@gmail.com> + * @author Mohamed Belhsine <b.mohamed897@gmail.com> */ $lang['menu'] = 'مدير الاسترجاع'; $lang['filter'] = 'ابحث في الصفحات المتأذاة'; diff --git a/lib/plugins/revert/lang/cs/lang.php b/lib/plugins/revert/lang/cs/lang.php index e1b47bb8d..619a9d929 100644 --- a/lib/plugins/revert/lang/cs/lang.php +++ b/lib/plugins/revert/lang/cs/lang.php @@ -17,6 +17,8 @@ * @author Gerrit Uitslag <klapinklapin@gmail.com> * @author Petr Klíma <qaxi@seznam.cz> * @author Radovan Buroň <radovan@buron.cz> + * @author Viktor Zavadil <vzavadil@newps.cz> + * @author Jaroslav Lichtblau <jlichtblau@seznam.cz> */ $lang['menu'] = 'Obnova zaspamovaných stránek'; $lang['filter'] = 'Hledat zaspamované stránky'; diff --git a/lib/plugins/revert/lang/hr/intro.txt b/lib/plugins/revert/lang/hr/intro.txt new file mode 100644 index 000000000..5d7a52dfb --- /dev/null +++ b/lib/plugins/revert/lang/hr/intro.txt @@ -0,0 +1,3 @@ +====== Pomoćnik za povrat ====== + +Pomaže vam pri povratku u slučaju spam napada. Da bi ste našli listu stranica koje su onečišćene spam-om unesite tekst za potragu (npr. spam URL), te potvrdite da su nađene stranice zaista spam i vratite na prethodno stanje.
\ No newline at end of file diff --git a/lib/plugins/revert/lang/hr/lang.php b/lib/plugins/revert/lang/hr/lang.php new file mode 100644 index 000000000..594136902 --- /dev/null +++ b/lib/plugins/revert/lang/hr/lang.php @@ -0,0 +1,16 @@ +<?php + +/** + * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) + * + * @author Davor Turkalj <turki.bsc@gmail.com> + */ +$lang['menu'] = 'Pomoćnik za povrat stanja'; +$lang['filter'] = 'Potraži spam stranice'; +$lang['revert'] = 'Povrati odabrane stranice'; +$lang['reverted'] = '%s vraćena na izdanje %s'; +$lang['removed'] = '%s uklonjen'; +$lang['revstart'] = 'Proces povratka započeo. To može potrajati. Ako se dogodi istek vremena prije završetka, trebate povrat stranica vršiti u manjim grupama.'; +$lang['revstop'] = 'Proces povratka uspješno završio.'; +$lang['note1'] = 'Obavijest: ova pretraga razlikuje velika/mala slova'; +$lang['note2'] = 'Obavijest: stranica će biti vraćena na zadnje stanje koje ne sadrži traženi spam termin <i>%s</i>.'; diff --git a/lib/plugins/usermanager/lang/fa/lang.php b/lib/plugins/usermanager/lang/fa/lang.php index a6a484411..bb2505a27 100644 --- a/lib/plugins/usermanager/lang/fa/lang.php +++ b/lib/plugins/usermanager/lang/fa/lang.php @@ -10,6 +10,8 @@ * @author Mohammad Reza Shoaei <shoaei@gmail.com> * @author Milad DZand <M.DastanZand@gmail.com> * @author AmirH Hassaneini <mytechmix@gmail.com> + * @author Hamid <zarrabi@sharif.edu> + * @author Mohamad Mehdi Habibi <habibi.esf@gmail.com> */ $lang['menu'] = 'مدیریت کاربر'; $lang['noauth'] = '(معتبرسازی کاربر ممکن نیست)'; @@ -32,23 +34,25 @@ $lang['search'] = 'جستجو'; $lang['search_prompt'] = 'انجام جستجو'; $lang['clear'] = 'بازنویسی فیلترهای جستجو'; $lang['filter'] = 'فیلتر'; +$lang['import'] = 'ورود کاربران جدید'; +$lang['error'] = 'متن خطا'; $lang['summary'] = 'نمایش کاربر %1$d-%2$d از %3$d. در کل %4$d کاربر.'; $lang['nonefound'] = 'هیچ کاربری یافت نشد. در کل %d کاربر.'; $lang['delete_ok'] = '%d کاربر حذف شد'; $lang['delete_fail'] = 'حذف %d کاربر با مشکل مواجه شد.'; -$lang['update_ok'] = 'کاربر با موفقیت به روز رسانی شد.'; -$lang['update_fail'] = 'به روز رسانی کاربر با مشکل مواجه شد'; -$lang['update_exists'] = 'تغییر نام کاربری ممکن نیست، نام کاربری مورد نظر (%s) قبلن وجود داشته (مابقی تغییرات اعمال شده است)'; +$lang['update_ok'] = 'کاربر با موفقیت بهروز شد.'; +$lang['update_fail'] = 'بهروزرسانی کاربر با مشکل مواجه شد'; +$lang['update_exists'] = 'تغییر نام کاربری ممکن نیست، نام کاربری مورد نظر (%s) از قبل وجود داشته است (مابقی تغییرات اعمال خواهد شد).'; $lang['start'] = 'شروع'; $lang['prev'] = 'قبلی'; $lang['next'] = 'بعدی'; $lang['last'] = 'آخرین'; -$lang['edit_usermissing'] = 'کاربر انتخاب شده یافت نشد، نام کاربری مورد نظر در جایی دیگر حذف شده یا تغییر کرده.'; +$lang['edit_usermissing'] = 'کاربر انتخاب شده یافت نشد، نام کاربری موردنظر در جایی دیگر حذف شده یا تغییر کرده است.'; $lang['user_notify'] = 'آگاه کردن کاربر'; $lang['note_notify'] = 'ایمیلی برای آگاهی، فقط در زمان تغییر گذرواژه ارسال میشود.'; $lang['note_group'] = 'اگر گروهی انتخاب نشود، کاربران جدید به گروه پیشفرض (%s) افزوده خواهند شد.'; $lang['note_pass'] = 'اگر فیلد گذرواژه خالی گذاشته شود، گذرواژه به طور خودکار تولید و ایمیلی برای کاربر ارسال خواهد شد.'; $lang['add_ok'] = 'کاربر با موفقیت افزوده شد'; $lang['add_fail'] = 'افزودن کاربر با مشکل مواجه شد'; -$lang['notify_ok'] = 'ایمیل آگاهی دهنده ارسال شد'; -$lang['notify_fail'] = 'ارسال ایمیل آگاهی دهنده با مشکل مواجه شد'; +$lang['notify_ok'] = 'ایمیل آگاهیدهنده ارسال شد'; +$lang['notify_fail'] = 'ارسال ایمیل آگاهیدهنده با مشکل مواجه شد'; diff --git a/lib/plugins/usermanager/lang/hr/add.txt b/lib/plugins/usermanager/lang/hr/add.txt new file mode 100644 index 000000000..f7c866495 --- /dev/null +++ b/lib/plugins/usermanager/lang/hr/add.txt @@ -0,0 +1 @@ +===== Dodaj korisnika ===== diff --git a/lib/plugins/usermanager/lang/hr/delete.txt b/lib/plugins/usermanager/lang/hr/delete.txt new file mode 100644 index 000000000..072185fc1 --- /dev/null +++ b/lib/plugins/usermanager/lang/hr/delete.txt @@ -0,0 +1 @@ +===== Ukloni korisnika ===== diff --git a/lib/plugins/usermanager/lang/hr/edit.txt b/lib/plugins/usermanager/lang/hr/edit.txt new file mode 100644 index 000000000..752fd81f3 --- /dev/null +++ b/lib/plugins/usermanager/lang/hr/edit.txt @@ -0,0 +1 @@ +===== Uredi korisnika ===== diff --git a/lib/plugins/usermanager/lang/hr/import.txt b/lib/plugins/usermanager/lang/hr/import.txt new file mode 100644 index 000000000..85ea92723 --- /dev/null +++ b/lib/plugins/usermanager/lang/hr/import.txt @@ -0,0 +1,9 @@ +===== Masovni unos korisnika ===== + +Zahtjeva CSV datoteku popisa korisnika s minimalno četiri kolone. +Kolone moraju sadržavati redom: korisničko ime, puno ime, adresu e-pošte i grupe. +Polja trebaju biti odvojena zarezom (,) a znakovni nizovi s dvostrukim navodnicima (%%""%%). Obrnuta kosa crta (\) koristi se za specijalne kodove (escaping). +Koristite "Izvoz korisnika" funkciju da bi ste dobili primjer odgovarajuće datoteke. +Duplikati korisničkih imena biti će ignorirani. + +Uspješno kreiranim korisnicima lozinka će biti generirana i poslana e-poštom.
\ No newline at end of file diff --git a/lib/plugins/usermanager/lang/hr/intro.txt b/lib/plugins/usermanager/lang/hr/intro.txt new file mode 100644 index 000000000..0f156579b --- /dev/null +++ b/lib/plugins/usermanager/lang/hr/intro.txt @@ -0,0 +1 @@ +====== Upravitelj korisnicima ======
\ No newline at end of file diff --git a/lib/plugins/usermanager/lang/hr/lang.php b/lib/plugins/usermanager/lang/hr/lang.php new file mode 100644 index 000000000..80613ed6f --- /dev/null +++ b/lib/plugins/usermanager/lang/hr/lang.php @@ -0,0 +1,66 @@ +<?php + +/** + * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) + * + * @author Davor Turkalj <turki.bsc@gmail.com> + */ +$lang['menu'] = 'Upravitelj korisnicima'; +$lang['noauth'] = '(korisnička prijava nije dostupna)'; +$lang['nosupport'] = '(upravljanje korisnikom nije podržano)'; +$lang['badauth'] = 'pogrešan mehanizam prijave'; +$lang['user_id'] = 'Korisnik'; +$lang['user_pass'] = 'Lozinka'; +$lang['user_name'] = 'Stvarno ime'; +$lang['user_mail'] = 'E-pošta'; +$lang['user_groups'] = 'Grupe'; +$lang['field'] = 'Polje'; +$lang['value'] = 'Vrijednost'; +$lang['add'] = 'Dodaj'; +$lang['delete'] = 'Obriši'; +$lang['delete_selected'] = 'Obriši odabrano'; +$lang['edit'] = 'Uredi'; +$lang['edit_prompt'] = 'Uredi ovog korisnika'; +$lang['modify'] = 'Snimi promjene'; +$lang['search'] = 'Potraži'; +$lang['search_prompt'] = 'Izvedi potragu'; +$lang['clear'] = 'Obriši filtar potrage'; +$lang['filter'] = 'Filtar'; +$lang['export_all'] = 'Izvezi sve korisnike (CSV)'; +$lang['export_filtered'] = 'Izvezi filtriranu listu korisnika (CSV)'; +$lang['import'] = 'Unos novih korisnika'; +$lang['line'] = 'Linija br.'; +$lang['error'] = 'Poruka o grešci'; +$lang['summary'] = 'Prikaz korisnika %1$d-%2$d od %3$d nađenih. Ukupno %4$d korisnika.'; +$lang['nonefound'] = 'Nema korisnika koji odgovaraju filtru.Ukupno %d korisnika.'; +$lang['delete_ok'] = '%d korisnik obrisano'; +$lang['delete_fail'] = '%d neuspjelih brisanja.'; +$lang['update_ok'] = 'Korisnik uspješno izmijenjen'; +$lang['update_fail'] = 'Neuspjela izmjena korisnika'; +$lang['update_exists'] = 'Promjena korisničkog imena neuspješna, traženo ime (%s) već postoji (ostale izmjene biti će primijenjene).'; +$lang['start'] = 'početni'; +$lang['prev'] = 'prethodni'; +$lang['next'] = 'slijedeći'; +$lang['last'] = 'zadnji'; +$lang['edit_usermissing'] = 'Odabrani korisnik nije nađen, traženo korisničko ime vjerojatno je obrisano i promijenjeno negdje drugdje.'; +$lang['user_notify'] = 'Obavijesti korisnika'; +$lang['note_notify'] = 'Obavijest korisniku biti će poslana samo ako je upisana nova lozinka.'; +$lang['note_group'] = 'Novi korisnik biti će dodijeljen u podrazumijevanu grupu (%s) ako grupa nije specificirana.'; +$lang['note_pass'] = 'Lozinka će biti generirana ako se polje ostavi prazno i obavješćivanje korisnika je omogućeno.'; +$lang['add_ok'] = 'Korisnik uspješno dodan'; +$lang['add_fail'] = 'Neuspješno dodavanje korisnika'; +$lang['notify_ok'] = 'Obavijest korisniku poslana'; +$lang['notify_fail'] = 'Obavijest korisniku ne može biti poslana'; +$lang['import_userlistcsv'] = 'Datoteka s popisom korisnika (CSV):'; +$lang['import_header'] = 'Zadnje greške pri uvozu'; +$lang['import_success_count'] = 'Uvoz korisnika: %d korisnika nađeno, %d uspješno uvezeno'; +$lang['import_failure_count'] = 'Uvoz korisnika: %d neuspješno. Greške su navedene niže.'; +$lang['import_error_fields'] = 'Nedovoljan broj polja, nađeno %d, potrebno 4.'; +$lang['import_error_baduserid'] = 'Nedostaje korisničko ime'; +$lang['import_error_badname'] = 'Krivo ime'; +$lang['import_error_badmail'] = 'Kriva adresa e-pošte'; +$lang['import_error_upload'] = 'Uvoz neuspješan. CSV datoteka ne može biti učitana ili je prazna.'; +$lang['import_error_readfail'] = 'Uvoz neuspješan. Ne mogu pročitati učitanu datoteku.'; +$lang['import_error_create'] = 'Ne mogu kreirati korisnika'; +$lang['import_notify_fail'] = 'Obavijest uvezenom korisniku %s nije moguće poslati na adresu e-pošte %s.'; +$lang['import_downloadfailures'] = 'Preuzmi greške kao CSV za ispravak'; diff --git a/lib/plugins/usermanager/lang/hr/list.txt b/lib/plugins/usermanager/lang/hr/list.txt new file mode 100644 index 000000000..50b1d2513 --- /dev/null +++ b/lib/plugins/usermanager/lang/hr/list.txt @@ -0,0 +1 @@ +===== Lista korisnika =====
\ 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 af19e293e..ffded3481 100644 --- a/lib/plugins/usermanager/lang/it/lang.php +++ b/lib/plugins/usermanager/lang/it/lang.php @@ -17,6 +17,7 @@ * @author snarchio@gmail.com * @author Claudio Lanconelli <lancos@libero.it> * @author Francesco <francesco.cavalli@hotmail.com> + * @author Fabio <fabioslurp@yahoo.it> */ $lang['menu'] = 'Gestione Utenti'; $lang['noauth'] = '(autenticazione non disponibile)'; @@ -64,7 +65,12 @@ $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_success_count'] = 'Importazione utenti: %d utenti trovati, %d utenti importati con successo.'; +$lang['import_failure_count'] = 'Importazione utenti: %d falliti. Errori riportati qui sotto.'; +$lang['import_error_fields'] = 'Campi insufficienti, trovati %d, richiesti 4.'; +$lang['import_error_baduserid'] = 'User-id non trovato'; $lang['import_error_badname'] = 'Nome errato'; $lang['import_error_badmail'] = 'Indirizzo email errato'; +$lang['import_error_upload'] = 'Importazione fallita. Il file CSV non può essere caricato, o è vuoto.'; $lang['import_error_readfail'] = 'Importazione in errore. Impossibile leggere i file caricati.'; $lang['import_error_create'] = 'Impossibile creare l\'utente'; diff --git a/lib/plugins/usermanager/lang/ru/lang.php b/lib/plugins/usermanager/lang/ru/lang.php index 83158df31..8bbfa639c 100644 --- a/lib/plugins/usermanager/lang/ru/lang.php +++ b/lib/plugins/usermanager/lang/ru/lang.php @@ -20,6 +20,7 @@ * @author Ivan I. Udovichenko (sendtome@mymailbox.pp.ua) * @author Pavel <ivanovtsk@mail.ru> * @author Aleksandr Selivanov <alexgearbox@yandex.ru> + * @author Igor Degraf <igordegraf@gmail.com> */ $lang['menu'] = 'Управление пользователями'; $lang['noauth'] = '(авторизация пользователей недоступна)'; @@ -77,3 +78,4 @@ $lang['import_error_upload'] = 'Импорт не удался. CSV-файл $lang['import_error_readfail'] = 'Импорт не удался. Невозможно прочесть загруженный файл.'; $lang['import_error_create'] = 'Невозможно создать пользователя'; $lang['import_notify_fail'] = 'Оповещение не может быть отправлено импортированному пользователю %s по электронной почте %s.'; +$lang['import_downloadfailures'] = 'Скачать Ошибки в формате CSV для исправления'; |