From: jenkins-bot Date: Tue, 10 Sep 2019 16:14:45 +0000 (+0000) Subject: Merge "resourceloader: Remove comment about XmlJsCode wrapper" X-Git-Tag: 1.34.0-rc.0~281 X-Git-Url: https://git.heureux-cyclage.org/?p=lhc%2Fweb%2Fwiklou.git;a=commitdiff_plain;h=bfff8c74ffe8e559299dfc1428ea12fcc69eb904;hp=a253c6d56cfa524f52379b8bf79bd4cd40143285 Merge "resourceloader: Remove comment about XmlJsCode wrapper" --- diff --git a/includes/DefaultSettings.php b/includes/DefaultSettings.php index f6ac3422de..c9bed29398 100644 --- a/includes/DefaultSettings.php +++ b/includes/DefaultSettings.php @@ -4888,6 +4888,7 @@ $wgDefaultUserOptions = [ 'wllimit' => 250, 'useeditwarning' => 1, 'prefershttps' => 1, + 'requireemail' => 0, ]; /** @@ -4957,6 +4958,15 @@ $wgSessionProviders = [ ], ]; +/** + * Temporary feature flag that controls whether users will see a checkbox allowing them to + * require providing email during password resets. + * + * @deprecated This feature is under development, don't assume this flag's existence or function + * outside of MediaWiki. + */ +$wgAllowRequiringEmailForResets = false; + /** @} */ # end user accounts } /************************************************************************//** diff --git a/includes/Setup.php b/includes/Setup.php index 39f0c8116f..518531aacf 100644 --- a/includes/Setup.php +++ b/includes/Setup.php @@ -808,22 +808,17 @@ if ( !defined( 'MW_NO_SESSION' ) && !$wgCommandLineMode ) { // Initialize the session try { $session = MediaWiki\Session\SessionManager::getGlobalSession(); - } catch ( OverflowException $ex ) { - if ( isset( $ex->sessionInfos ) && count( $ex->sessionInfos ) >= 2 ) { - // The exception is because the request had multiple possible - // sessions tied for top priority. Report this to the user. - $list = []; - foreach ( $ex->sessionInfos as $info ) { - $list[] = $info->getProvider()->describe( $wgContLang ); - } - $list = $wgContLang->listToText( $list ); - throw new HttpError( 400, - Message::newFromKey( 'sessionmanager-tie', $list )->inLanguage( $wgContLang )->plain() - ); + } catch ( MediaWiki\Session\SessionOverflowException $ex ) { + // The exception is because the request had multiple possible + // sessions tied for top priority. Report this to the user. + $list = []; + foreach ( $ex->getSessionInfos() as $info ) { + $list[] = $info->getProvider()->describe( $wgContLang ); } - - // Not the one we want, rethrow - throw $ex; + $list = $wgContLang->listToText( $list ); + throw new HttpError( 400, + Message::newFromKey( 'sessionmanager-tie', $list )->inLanguage( $wgContLang )->plain() + ); } if ( $session->isPersistent() ) { diff --git a/includes/api/i18n/ar.json b/includes/api/i18n/ar.json index dc9c516d76..09d9c468a5 100644 --- a/includes/api/i18n/ar.json +++ b/includes/api/i18n/ar.json @@ -1607,6 +1607,8 @@ "apierror-cantoverwrite-sharedfile": "الملف الهدف موجود في مستودع مشترك وليست لديك صلاحية لتجاوزه.", "apierror-cantsend": "لم تقم بتسجيل الدخول أو ليس لديك عنوان بريد إلكتروني مؤكد أو غير مسموح لك بإرسال بريد إلكتروني إلى مستخدمين آخرين; لذلك لا يمكنك إرسال بريد إلكتروني.", "apierror-cantundelete": "تعذر الاسترجاع: قد لا تكون المراجعات المطلوبة موجودة، أو ربما تم الاسترجاع بالفعل.", + "apierror-cantview-deleted-description": "ليست لديك صلايبة لعرض أوصاف الملفات المحذوفة.", + "apierror-cantview-deleted-metadata": "ليست لديك صلايبة لعرض البيانات الوصفية للملفات المحذوفة.", "apierror-changeauth-norequest": "فشل في إنشاء طلب التغيير.", "apierror-chunk-too-small": "الحد الأدنى لحجم القطعة هو $1 {{PLURAL:$1|بايت}} للقطع غير النهائية.", "apierror-cidrtoobroad": "لا يُقبَل مدى $1 CIDR أكبر من /$2.", diff --git a/includes/api/i18n/fr.json b/includes/api/i18n/fr.json index 628edfafaa..7c5d2b5676 100644 --- a/includes/api/i18n/fr.json +++ b/includes/api/i18n/fr.json @@ -1630,6 +1630,8 @@ "apierror-cantoverwrite-sharedfile": "Le fichier cible existe dans un dépôt partagé et vous n’avez pas le droit de l’écraser.", "apierror-cantsend": "Vous n’êtes pas connecté, vous n’avez pas d’adresse de courriel confirmée, ou vous n’êtes pas autorisé à envoyer des courriels aux autres utilisateurs, donc vous ne pouvez envoyer de courriel.", "apierror-cantundelete": "Impossible d’annuler : les révisions demandées peuvent ne plus exister, ou avoir déjà été annulées.", + "apierror-cantview-deleted-description": "Vous n’avez pas le droit d’afficher les descriptions des fichiers supprimés.", + "apierror-cantview-deleted-metadata": "Vous n’avez pas le droit d’afficher les métadonnées des fichiers supprimés.", "apierror-changeauth-norequest": "Échec à la création de la requête de modification.", "apierror-chunk-too-small": "La taille minimale d’un segment est de $1 {{PLURAL:$1|octet|octets}} pour les segments hors le dernier.", "apierror-cidrtoobroad": "Les plages CIDR $1 plus large que /$2 ne sont pas acceptées.", diff --git a/includes/api/i18n/pl.json b/includes/api/i18n/pl.json index e71a9dc78e..d8ff5398c1 100644 --- a/includes/api/i18n/pl.json +++ b/includes/api/i18n/pl.json @@ -17,7 +17,8 @@ "InternerowyGołąb", "CiaPan", "Vlad5250", - "Railfail536" + "Railfail536", + "Rail" ] }, "apihelp-main-extended-description": "
\n* [[mw:Special:MyLanguage/API:Main_page|Dokumentacja]]\n* [[mw:Special:MyLanguage/API:FAQ|FAQ]]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api Lista dyskusyjna]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce Ogłoszenia dotyczące API]\n* [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R Błędy i propozycje]\n
\nStan: Wszystkie funkcje opisane na tej stronie powinny działać, ale API nadal jest aktywnie rozwijane i mogą się zmienić w dowolnym czasie. Subskrybuj [https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ listę dyskusyjną mediawiki-api-announce], aby móc na bieżąco dowiadywać się o aktualizacjach.\n\nBłędne żądania: Gdy zostanie wysłane błędne żądanie do API, zostanie wysłany w odpowiedzi nagłówek HTTP z kluczem \"MediaWiki-API-Error\" i zarówno jego wartość jak i wartość kodu błędu wysłanego w odpowiedzi będą miały taką samą wartość. Aby uzyskać więcej informacji, zobacz [[mw:Special:MyLanguage/API:Errors_and_warnings|API: Błędy i ostrzeżenia]].\n\nTestowanie: Aby łatwo testować żądania API, zobacz [[Special:ApiSandbox]].", @@ -658,6 +659,8 @@ "apierror-cantimport": "Nie masz uprawnień do importowania stron.", "apierror-cantsend": "Nie jesteś zalogowany, nie masz potwierdzonego adresu e-mail, albo nie masz prawa wysyłać e-maili do innych użytkowników, więc nie możesz wysłać wiadomości e-mail.", "apierror-cantundelete": "Nie można przywrócić: dana wersja nie istnieje albo została już przywrócona.", + "apierror-cantview-deleted-description": "Nie masz uprawnień do podglądu opisów usuniętych plików.", + "apierror-cantview-deleted-metadata": "Nie masz uprawnień do podglądu metadanych usuniętych plików.", "apierror-exceptioncaught": "[$1] Stwierdzono wyjątek: $2", "apierror-filedoesnotexist": "Plik nie istnieje.", "apierror-import-unknownerror": "Nieznany błąd podczas importowania: $1.", diff --git a/includes/api/i18n/zh-hant.json b/includes/api/i18n/zh-hant.json index 14a7717171..7ee3751ae0 100644 --- a/includes/api/i18n/zh-hant.json +++ b/includes/api/i18n/zh-hant.json @@ -1613,6 +1613,8 @@ "apierror-cantoverwrite-sharedfile": "目標檔案存在於分享儲存庫上,因此您沒有權限來覆蓋掉。", "apierror-cantsend": "您尚未登入,您沒有已確認的電子郵件地址,或是您未被允許發送電子郵件給其他人,因此您不能發送電子郵件。", "apierror-cantundelete": "無法取消刪除:請求的修訂可能不存在,或是可能已被取消刪除。", + "apierror-cantview-deleted-description": "您沒有權限來檢視被刪除檔案的描述內容。", + "apierror-cantview-deleted-metadata": "您沒有權限來檢視被刪除檔案的詮釋資料。", "apierror-changeauth-norequest": "建立更改請求失敗。", "apierror-chunk-too-small": "對於非最終塊,最小塊的大小為 $1 {{PLURAL:$1|位元組|位元組}}。", "apierror-cidrtoobroad": "不能接受超出 /$2 的 $1 CIDR 範圍。", diff --git a/includes/externalstore/ExternalStoreDB.php b/includes/externalstore/ExternalStoreDB.php index 4db351b25b..264eabcd44 100644 --- a/includes/externalstore/ExternalStoreDB.php +++ b/includes/externalstore/ExternalStoreDB.php @@ -26,6 +26,7 @@ use Wikimedia\Rdbms\IDatabase; use Wikimedia\Rdbms\DBConnRef; use Wikimedia\Rdbms\MaintainableDBConnRef; use Wikimedia\Rdbms\DatabaseDomain; +use Wikimedia\Rdbms\DBUnexpectedError; /** * DB accessible external objects. @@ -113,7 +114,11 @@ class ExternalStoreDB extends ExternalStoreMedium { */ public function store( $location, $data ) { $dbw = $this->getMaster( $location ); - $dbw->insert( $this->getTable( $dbw ), [ 'blob_text' => $data ], __METHOD__ ); + $dbw->insert( + $this->getTable( $dbw, $location ), + [ 'blob_text' => $data ], + __METHOD__ + ); $id = $dbw->insertId(); if ( !$id ) { throw new MWException( __METHOD__ . ': no insert ID' ); @@ -149,10 +154,11 @@ class ExternalStoreDB extends ExternalStoreMedium { /** * Get a replica DB connection for the specified cluster * + * @since 1.34 * @param string $cluster Cluster name * @return DBConnRef */ - public function getSlave( $cluster ) { + public function getReplica( $cluster ) { $lb = $this->getLoadBalancer( $cluster ); return $lb->getConnectionRef( @@ -163,6 +169,17 @@ class ExternalStoreDB extends ExternalStoreMedium { ); } + /** + * Get a replica DB connection for the specified cluster + * + * @param string $cluster Cluster name + * @return DBConnRef + * @deprecated since 1.34 + */ + public function getSlave( $cluster ) { + return $this->getReplica( $cluster ); + } + /** * Get a master database connection for the specified cluster * @@ -211,15 +228,55 @@ class ExternalStoreDB extends ExternalStoreMedium { * Get the 'blobs' table name for this database * * @param IDatabase $db + * @param string|null $cluster Cluster name * @return string Table name ('blobs' by default) */ - public function getTable( $db ) { - $table = $db->getLBInfo( 'blobs table' ); - if ( is_null( $table ) ) { - $table = 'blobs'; + public function getTable( $db, $cluster = null ) { + if ( $cluster !== null ) { + $lb = $this->getLoadBalancer( $cluster ); + $info = $lb->getServerInfo( $lb->getWriterIndex() ); + if ( isset( $info['blobs table'] ) ) { + return $info['blobs table']; + } } - return $table; + return $db->getLBInfo( 'blobs table' ) ?? 'blobs'; // b/c + } + + /** + * Create the appropriate blobs table on this cluster + * + * @see getTable() + * @since 1.34 + * @param string $cluster + */ + public function initializeTable( $cluster ) { + global $IP; + + static $supportedTypes = [ 'mysql', 'sqlite' ]; + + $dbw = $this->getMaster( $cluster ); + if ( !in_array( $dbw->getType(), $supportedTypes, true ) ) { + throw new DBUnexpectedError( $dbw, "RDBMS type '{$dbw->getType()}' not supported." ); + } + + $sqlFilePath = "$IP/maintenance/storage/blobs.sql"; + $sql = file_get_contents( $sqlFilePath ); + if ( $sql === false ) { + throw new RuntimeException( "Failed to read '$sqlFilePath'." ); + } + + $rawTable = $this->getTable( $dbw, $cluster ); // e.g. "blobs_cluster23" + $encTable = $dbw->tableName( $rawTable ); + $dbw->query( + str_replace( + [ '/*$wgDBprefix*/blobs', '/*_*/blobs' ], + [ $encTable, $encTable ], + $sql + ), + __METHOD__, + $dbw::QUERY_IGNORE_DBO_TRX + ); } /** @@ -251,15 +308,23 @@ class ExternalStoreDB extends ExternalStoreMedium { $this->logger->debug( "ExternalStoreDB::fetchBlob cache miss on $cacheID" ); - $dbr = $this->getSlave( $cluster ); - $ret = $dbr->selectField( $this->getTable( $dbr ), - 'blob_text', [ 'blob_id' => $id ], __METHOD__ ); + $dbr = $this->getReplica( $cluster ); + $ret = $dbr->selectField( + $this->getTable( $dbr, $cluster ), + 'blob_text', + [ 'blob_id' => $id ], + __METHOD__ + ); if ( $ret === false ) { $this->logger->info( "ExternalStoreDB::fetchBlob master fallback on $cacheID" ); // Try the master $dbw = $this->getMaster( $cluster ); - $ret = $dbw->selectField( $this->getTable( $dbw ), - 'blob_text', [ 'blob_id' => $id ], __METHOD__ ); + $ret = $dbw->selectField( + $this->getTable( $dbw, $cluster ), + 'blob_text', + [ 'blob_id' => $id ], + __METHOD__ + ); if ( $ret === false ) { $this->logger->error( "ExternalStoreDB::fetchBlob master failed to find $cacheID" ); } @@ -283,9 +348,9 @@ class ExternalStoreDB extends ExternalStoreMedium { * Unlocated ids are not represented */ private function batchFetchBlobs( $cluster, array $ids ) { - $dbr = $this->getSlave( $cluster ); + $dbr = $this->getReplica( $cluster ); $res = $dbr->select( - $this->getTable( $dbr ), + $this->getTable( $dbr, $cluster ), [ 'blob_id', 'blob_text' ], [ 'blob_id' => array_keys( $ids ) ], __METHOD__ @@ -302,7 +367,8 @@ class ExternalStoreDB extends ExternalStoreMedium { ); // Try the master $dbw = $this->getMaster( $cluster ); - $res = $dbw->select( $this->getTable( $dbr ), + $res = $dbw->select( + $this->getTable( $dbr, $cluster ), [ 'blob_id', 'blob_text' ], [ 'blob_id' => array_keys( $ids ) ], __METHOD__ ); diff --git a/includes/installer/i18n/ia.json b/includes/installer/i18n/ia.json index eae79b0402..e5ebb42408 100644 --- a/includes/installer/i18n/ia.json +++ b/includes/installer/i18n/ia.json @@ -46,7 +46,11 @@ "config-restart": "Si, reinitia lo", "config-welcome": "=== Verificationes del ambiente ===\nVerificationes de base essera ora exequite pro determinar si iste ambiente es apte pro le installation de MediaWiki.\nNon oblida de includer iste information si tu cerca adjuta pro completar le installation.", "config-welcome-section-copyright": "=== Copyright and Terms ===\n\n$1\n\nIste programma es software libere; vos pote redistribuer lo e/o modificar lo sub le conditiones del Licentia Public General de GNU publicate per le Free Software Foundation; version 2 del Licentia, o (a vostre option) qualcunque version posterior.\n\nIste programma es distribuite in le sperantia que illo sia utile, ma '''sin garantia''', sin mesmo le implicite garantia de '''commercialisation''' o '''aptitude pro un proposito particular'''.\nVide le Licentia Public General de GNU pro plus detalios.\n\nVos deberea haber recipite [$2 un exemplar del Licentia Public General de GNU] con iste programma; si non, scribe al Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA, o [https://www.gnu.org/copyleft/gpl.html lege lo in linea].", - "config-sidebar": "* [https://www.mediawiki.org Pagina principal de MediaWiki]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents Guida pro usatores]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Contents Guida pro administratores]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ FAQ]\n----\n* Lege me\n* Notas de iste version\n* Conditiones de copia\n* Actualisation", + "config-sidebar": "* [https://www.mediawiki.org Pagina principal de MediaWiki]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents Guida pro usatores]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Contents Guida pro administratores]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ FAQ]", + "config-sidebar-readme": "Lege me", + "config-sidebar-relnotes": "Notas de iste version", + "config-sidebar-license": "Conditiones de copia", + "config-sidebar-upgrade": "Actualisation", "config-env-good": "Le ambiente ha essite verificate.\nTu pote installar MediaWiki.", "config-env-bad": "Le ambiente ha essite verificate.\nTu non pote installar MediaWiki.", "config-env-php": "PHP $1 es installate.", @@ -79,7 +83,7 @@ "config-uploads-not-safe": "'''Aviso:''' Le directorio predefinite pro files incargate $1 es vulnerabile al execution arbitrari de scripts.\nBen que MediaWiki verifica tote le files incargate contra le menacias de securitate, il es altemente recommendate [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Security#Upload_security remediar iste vulnerabilitate de securitate] ante de activar le incargamento de files.", "config-no-cli-uploads-check": "'''Attention:''' Le directorio predefinite pro files incargate ($1) non es verificate contra le vulnerabilitate\nal execution arbitrari de scripts durante le installation de CLI.", "config-brokenlibxml": "Vostre systema ha un combination de versiones de PHP e libxml2 que es defectuose e pote causar corruption celate de datos in MediaWiki e altere applicationes web.\nActualisa a libxml2 2.7.3 o plus recente ([https://bugs.php.net/bug.php?id=45996 problema reportate presso PHP]).\nInstallation abortate.", - "config-suhosin-max-value-length": "Suhosin es installate e limita parametro length de GET a $1 bytes.\nLe componente ResourceLoader de MediaWiki va contornar iste limite, ma isto prejudicara le rendimento.\nSi possibile, tu deberea mitter suhosin.get.max_value_length a 1024 o superior in php.ini, e mitter $wgResourceLoaderMaxQueryLength al mesme valor in LocalSettings.php.", + "config-suhosin-max-value-length": "Suhosin es installate e limita parametro length de GET a $1 bytes.\nMediaWiki require que suhosin.get.max_value_length sia al minus $2. Disactiva iste parametro, o augmenta iste valor a $3 in php.ini.", "config-using-32bit": "Attention: tu systema pare operar con integres de 32 bits. Isto [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:32-bit non es recommendate].", "config-db-type": "Typo de base de datos:", "config-db-host": "Servitor de base de datos:", diff --git a/includes/installer/i18n/ja.json b/includes/installer/i18n/ja.json index 5da1914672..511b0dafa7 100644 --- a/includes/installer/i18n/ja.json +++ b/includes/installer/i18n/ja.json @@ -104,7 +104,7 @@ "config-uploads-not-safe": "警告: アップロードの既定ディレクトリ $1 に、任意のスクリプト実行に関する脆弱性があります。\nMediaWiki はアップロードされたファイルのセキュリティ上の脅威を確認しますが、アップロードを有効化する前に、[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Security#Upload_security このセキュリティ上の脆弱性を解決する]ことを強く推奨します。", "config-no-cli-uploads-check": "警告: アップロード用のデフォルトディレクトリ ($1) が、CLIでのインストール中に任意のスクリプト実行の脆弱性チェックを受けていません。", "config-brokenlibxml": "このシステムで使われているPHPとlibxml2のバージョンのこの組み合わせにはバグがあります。具体的には、MediaWikiやその他のウェブアプリケーションでhiddenデータが破損する可能性があります。\nlibxml2を2.7.3以降のバージョンにアップグレードしてください([https://bugs.php.net/bug.php?id=45996 PHPでのバグ情報])。\nインストールを終了します。", - "config-suhosin-max-value-length": "Suhosin がインストールされており、GET パラメーターの length を $1 バイトに制限しています。\nMediaWiki の ResourceLoader コンポーネントはこの制限を回避しますが、パフォーマンスは低下します。\n可能な限り、php.ini で suhosin.get.max_value_length を 1024 以上に設定し、同じ値を LocalSettings.php 内で $wgResourceLoaderMaxQueryLength に設定してください。", + "config-suhosin-max-value-length": "Suhosin がインストールされており、GET パラメーターの length を $1 バイトに制限しています。(訳注:\nMediaWiki の ResourceLoader コンポーネントはこの制限を回避しますが、パフォーマンスは低下します。)\n可能な限り、 suhosin.get.max_value_length を $2 以上に設定します。これを無効に変更するか、php.ini で $3 に増加してください。", "config-using-32bit": "警告:システムが32ビットで動作しているようです。 これは[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:32-bit 非推奨]です。", "config-db-type": "データベースの種類:", "config-db-host": "データベースのホスト:", diff --git a/includes/installer/i18n/pl.json b/includes/installer/i18n/pl.json index fc66bdbe32..f3f211eb1d 100644 --- a/includes/installer/i18n/pl.json +++ b/includes/installer/i18n/pl.json @@ -24,7 +24,8 @@ "Sethakill", "Peter Bowman", "Ankam", - "Railfail536" + "Railfail536", + "Rail" ] }, "config-desc": "Instalator MediaWiki", diff --git a/includes/libs/filebackend/fileophandle/FileBackendStoreOpHandle.php b/includes/libs/filebackend/fileophandle/FileBackendStoreOpHandle.php index 649225d839..8697f9f0b6 100644 --- a/includes/libs/filebackend/fileophandle/FileBackendStoreOpHandle.php +++ b/includes/libs/filebackend/fileophandle/FileBackendStoreOpHandle.php @@ -34,6 +34,8 @@ abstract class FileBackendStoreOpHandle { public $backend; /** @var array */ public $resourcesToClose = []; + /** @var callable name that identifies the function called */ + public $call; /** * Close all open file handles diff --git a/includes/preferences/DefaultPreferencesFactory.php b/includes/preferences/DefaultPreferencesFactory.php index 8a82add61f..66c2bc33e5 100644 --- a/includes/preferences/DefaultPreferencesFactory.php +++ b/includes/preferences/DefaultPreferencesFactory.php @@ -84,6 +84,7 @@ class DefaultPreferencesFactory implements PreferencesFactory { * @since 1.34 */ public static $constructorOptions = [ + 'AllowRequiringEmailForResets', 'AllowUserCss', 'AllowUserCssPrefs', 'AllowUserJs', @@ -620,6 +621,16 @@ class DefaultPreferencesFactory implements PreferencesFactory { } } + if ( $this->options->get( 'AllowRequiringEmailForResets' ) ) { + $defaultPreferences['requireemail'] = [ + 'type' => 'toggle', + 'label-message' => 'tog-requireemail', + 'help-message' => 'prefs-help-requireemail', + 'section' => 'personal/email', + 'disabled' => $disableEmailPrefs, + ]; + } + if ( $this->options->get( 'EnableUserEmail' ) && $user->isAllowed( 'sendemail' ) ) { $defaultPreferences['disablemail'] = [ 'id' => 'wpAllowEmail', diff --git a/includes/session/SessionManager.php b/includes/session/SessionManager.php index 09cdf72f46..a3380ff82f 100644 --- a/includes/session/SessionManager.php +++ b/includes/session/SessionManager.php @@ -505,11 +505,10 @@ final class SessionManager implements SessionManagerInterface { } if ( count( $retInfos ) > 1 ) { - $ex = new \OverflowException( + throw new SessionOverflowException( + $retInfos, 'Multiple sessions for this request tied for top priority: ' . implode( ', ', $retInfos ) ); - $ex->sessionInfos = $retInfos; - throw $ex; } return $retInfos ? $retInfos[0] : null; diff --git a/includes/session/SessionOverflowException.php b/includes/session/SessionOverflowException.php new file mode 100644 index 0000000000..2a5ed2b80a --- /dev/null +++ b/includes/session/SessionOverflowException.php @@ -0,0 +1,34 @@ +sessionInfos = $sessionInfos; + } + + /** + * @return SessionInfo[] + */ + public function getSessionInfos() : array { + return $this->sessionInfos; + } +} diff --git a/includes/specialpage/LoginSignupSpecialPage.php b/includes/specialpage/LoginSignupSpecialPage.php index ce80c1a311..e5a28d9307 100644 --- a/includes/specialpage/LoginSignupSpecialPage.php +++ b/includes/specialpage/LoginSignupSpecialPage.php @@ -95,9 +95,8 @@ abstract class LoginSignupSpecialPage extends AuthManagerSpecialPage { /** * Load basic request parameters for this Special page. - * @param string $subPage */ - private function loadRequestParameters( $subPage ) { + private function loadRequestParameters() { if ( $this->mLoadedRequest ) { return; } @@ -105,7 +104,6 @@ abstract class LoginSignupSpecialPage extends AuthManagerSpecialPage { $request = $this->getRequest(); $this->mPosted = $request->wasPosted(); - $this->mIsReturn = $subPage === 'return'; $this->mAction = $request->getVal( 'action' ); $this->mFromHTTP = $request->getBool( 'fromhttp', false ) || $request->getBool( 'wpFromhttp', false ); @@ -124,7 +122,7 @@ abstract class LoginSignupSpecialPage extends AuthManagerSpecialPage { protected function load( $subPage ) { global $wgSecureLogin; - $this->loadRequestParameters( $subPage ); + $this->loadRequestParameters(); if ( $this->mLoaded ) { return; } @@ -203,7 +201,7 @@ abstract class LoginSignupSpecialPage extends AuthManagerSpecialPage { protected function beforeExecute( $subPage ) { // finish initializing the class before processing the request - T135924 - $this->loadRequestParameters( $subPage ); + $this->loadRequestParameters(); return parent::beforeExecute( $subPage ); } diff --git a/includes/specials/SpecialLinkSearch.php b/includes/specials/SpecialLinkSearch.php index f2a3f80df1..60aeddaf84 100644 --- a/includes/specials/SpecialLinkSearch.php +++ b/includes/specials/SpecialLinkSearch.php @@ -32,6 +32,12 @@ use Wikimedia\Rdbms\IDatabase; class SpecialLinkSearch extends QueryPage { /** @var array|bool */ private $mungedQuery = false; + /** @var string|null */ + private $mQuery; + /** @var int|null */ + private $mNs; + /** @var string|null */ + private $mProt; function setParams( $params ) { $this->mQuery = $params['query']; diff --git a/includes/specials/SpecialUndelete.php b/includes/specials/SpecialUndelete.php index 075b5df0c2..fe629dba8b 100644 --- a/includes/specials/SpecialUndelete.php +++ b/includes/specials/SpecialUndelete.php @@ -33,18 +33,28 @@ use Wikimedia\Rdbms\IResultWrapper; * @ingroup SpecialPage */ class SpecialUndelete extends SpecialPage { - private $mAction; - private $mTarget; - private $mTimestamp; - private $mRestore; - private $mRevdel; - private $mInvert; - private $mFilename; - private $mTargetTimestamp; - private $mAllowed; - private $mCanView; - private $mComment; - private $mToken; + private $mAction; + private $mTarget; + private $mTimestamp; + private $mRestore; + private $mRevdel; + private $mInvert; + private $mFilename; + private $mTargetTimestamp; + private $mAllowed; + private $mCanView; + private $mComment; + private $mToken; + /** @var bool|null */ + private $mPreview; + /** @var bool|null */ + private $mDiff; + /** @var bool|null */ + private $mDiffOnly; + /** @var bool|null */ + private $mUnsuppress; + /** @var int[]|null */ + private $mFileVersions; /** @var Title */ private $mTargetObj; diff --git a/includes/specials/pagers/ActiveUsersPager.php b/includes/specials/pagers/ActiveUsersPager.php index 0f5355d383..0abe842e79 100644 --- a/includes/specials/pagers/ActiveUsersPager.php +++ b/includes/specials/pagers/ActiveUsersPager.php @@ -43,6 +43,12 @@ class ActiveUsersPager extends UsersPager { */ private $blockStatusByUid; + /** @var int */ + private $RCMaxAge; + + /** @var string[] */ + private $excludegroups; + /** * @param IContextSource|null $context * @param FormOptions $opts diff --git a/includes/specials/pagers/AllMessagesTablePager.php b/includes/specials/pagers/AllMessagesTablePager.php index c804b091a3..6b8b93b90a 100644 --- a/includes/specials/pagers/AllMessagesTablePager.php +++ b/includes/specials/pagers/AllMessagesTablePager.php @@ -46,6 +46,11 @@ class AllMessagesTablePager extends TablePager { */ protected $prefix; + /** + * @var string + */ + protected $suffix; + /** * @var Language */ diff --git a/includes/specials/pagers/MergeHistoryPager.php b/includes/specials/pagers/MergeHistoryPager.php index 9415cea12b..81c3ffb74c 100644 --- a/includes/specials/pagers/MergeHistoryPager.php +++ b/includes/specials/pagers/MergeHistoryPager.php @@ -30,10 +30,15 @@ class MergeHistoryPager extends ReverseChronologicalPager { /** @var array */ public $mConds; + /** @var int */ + private $articleID; + + /** @var int */ + private $maxTimestamp; + public function __construct( SpecialMergeHistory $form, $conds, Title $source, Title $dest ) { $this->mForm = $form; $this->mConds = $conds; - $this->title = $source; $this->articleID = $source->getArticleID(); $dbr = wfGetDB( DB_REPLICA ); diff --git a/includes/specials/pagers/ProtectedTitlesPager.php b/includes/specials/pagers/ProtectedTitlesPager.php index 296fe1112d..a00b37125c 100644 --- a/includes/specials/pagers/ProtectedTitlesPager.php +++ b/includes/specials/pagers/ProtectedTitlesPager.php @@ -34,6 +34,12 @@ class ProtectedTitlesPager extends AlphabeticPager { */ public $mConds; + /** @var string|null */ + private $level; + + /** @var int|null */ + private $namespace; + /** * @param SpecialProtectedtitles $form * @param array $conds @@ -50,7 +56,6 @@ class ProtectedTitlesPager extends AlphabeticPager { $this->mConds = $conds; $this->level = $level; $this->namespace = $namespace; - $this->size = intval( $size ); parent::__construct( $form->getContext() ); } @@ -90,7 +95,7 @@ class ProtectedTitlesPager extends AlphabeticPager { $conds['pt_create_perm'] = $this->level; } - if ( !is_null( $this->namespace ) ) { + if ( $this->namespace !== null ) { $conds[] = 'pt_namespace=' . $this->mDb->addQuotes( $this->namespace ); } diff --git a/includes/specials/pagers/UsersPager.php b/includes/specials/pagers/UsersPager.php index 57b575b8ec..ba078e9f3c 100644 --- a/includes/specials/pagers/UsersPager.php +++ b/includes/specials/pagers/UsersPager.php @@ -37,6 +37,24 @@ class UsersPager extends AlphabeticPager { */ protected $userGroupCache; + /** @var string */ + protected $requestedGroup; + + /** @var bool */ + protected $editsOnly; + + /** @var bool */ + protected $temporaryGroupsOnly; + + /** @var bool */ + protected $creationSort; + + /** @var bool|null */ + protected $including; + + /** @var string */ + protected $requestedUser; + /** * @param IContextSource|null $context * @param array|null $par (Default null) diff --git a/includes/widget/CheckMatrixWidget.php b/includes/widget/CheckMatrixWidget.php index 06d8095ed4..3ae00ea6a9 100644 --- a/includes/widget/CheckMatrixWidget.php +++ b/includes/widget/CheckMatrixWidget.php @@ -9,14 +9,22 @@ namespace MediaWiki\Widget; * @license MIT */ class CheckMatrixWidget extends \OOUI\Widget { - - protected $name = ''; - protected $columns = []; - protected $rows = []; - protected $tooltips = []; - protected $values = []; - protected $forcedOn = []; - protected $forcedOff = []; + /** @var string|null */ + protected $name; + /** @var string|null */ + protected $id; + /** @var array */ + protected $columns; + /** @var array */ + protected $rows; + /** @var array */ + protected $tooltips; + /** @var array */ + protected $values; + /** @var array */ + protected $forcedOn; + /** @var array */ + protected $forcedOff; /** * Operates similarly to MultiSelectWidget, but instead of using an array of diff --git a/includes/widget/ComplexTitleInputWidget.php b/includes/widget/ComplexTitleInputWidget.php index 77370674f5..913816cc52 100644 --- a/includes/widget/ComplexTitleInputWidget.php +++ b/includes/widget/ComplexTitleInputWidget.php @@ -9,7 +9,8 @@ namespace MediaWiki\Widget; * @license MIT */ class ComplexTitleInputWidget extends \OOUI\Widget { - + /** @var array */ + protected $config; protected $namespace = null; protected $title = null; diff --git a/includes/widget/NamespaceInputWidget.php b/includes/widget/NamespaceInputWidget.php index 7802a2a017..a360fb8e91 100644 --- a/includes/widget/NamespaceInputWidget.php +++ b/includes/widget/NamespaceInputWidget.php @@ -9,8 +9,10 @@ namespace MediaWiki\Widget; * @license MIT */ class NamespaceInputWidget extends \OOUI\DropdownInputWidget { - - protected $includeAllValue = null; + /** @var string */ + protected $includeAllValue; + /** @var int[] */ + protected $exclude; /** * @param array $config Configuration options diff --git a/includes/widget/SelectWithInputWidget.php b/includes/widget/SelectWithInputWidget.php index a946653e6e..a792172b23 100644 --- a/includes/widget/SelectWithInputWidget.php +++ b/includes/widget/SelectWithInputWidget.php @@ -12,9 +12,12 @@ use OOUI\TextInputWidget; * @license MIT */ class SelectWithInputWidget extends \OOUI\Widget { - - protected $textinput = null; - protected $dropdowninput = null; + /** @var array */ + protected $config; + /** @var TextInputWidget */ + protected $textinput; + /** @var DropdownInputWidget */ + protected $dropdowninput; /** * A version of the SelectWithInputWidget, with `or` set to true. diff --git a/includes/widget/SizeFilterWidget.php b/includes/widget/SizeFilterWidget.php index 18c05bf6bc..26935b1214 100644 --- a/includes/widget/SizeFilterWidget.php +++ b/includes/widget/SizeFilterWidget.php @@ -13,9 +13,14 @@ use \OOUI\LabelWidget; * @license MIT */ class SizeFilterWidget extends \OOUI\Widget { - - protected $radioselectinput = null; - protected $textinput = null; + /** @var array */ + protected $config; + /** @var LabelWidget */ + protected $label; + /** @var RadioSelectInputWidget */ + protected $radioselectinput; + /** @var TextInputWidget */ + protected $textinput; /** * RadioSelectInputWidget and a TextInputWidget to set minimum or maximum byte size diff --git a/includes/widget/TagMultiselectWidget.php b/includes/widget/TagMultiselectWidget.php index 43e184cab2..e96160c715 100644 --- a/includes/widget/TagMultiselectWidget.php +++ b/includes/widget/TagMultiselectWidget.php @@ -12,41 +12,34 @@ use OOUI\MultilineTextInputWidget; * @license MIT */ abstract class TagMultiselectWidget extends \OOUI\Widget { - - protected $selectedArray = []; - protected $inputName = null; - protected $inputPlaceholder = null; - protected $tagLimit = null; + /** @var array */ + protected $selectedArray; + /** @var string|null */ + protected $inputName; + /** @var string|null */ + protected $inputPlaceholder; + /** @var array */ + protected $input; + /** @var int|null */ + protected $tagLimit; /** * @param array $config Configuration options * - array $config['default'] Array of items to use as preset data - * - array $config['name'] Name attribute (used in forms) - * - array $config['placeholder'] Placeholder message for input + * - string $config['name'] Name attribute (used in forms) + * - string $config['placeholder'] Placeholder message for input * - array $config['input'] Config options for the input widget - * - number $config['tagLimit'] Maximum number of selected items + * - int $config['tagLimit'] Maximum number of selected items */ public function __construct( array $config = [] ) { parent::__construct( $config ); // Properties - if ( isset( $config['default'] ) ) { - $this->selectedArray = $config['default']; - } - if ( isset( $config['name'] ) ) { - $this->inputName = $config['name']; - } - if ( isset( $config['placeholder'] ) ) { - $this->inputPlaceholder = $config['placeholder']; - } - if ( isset( $config['input'] ) ) { - $this->input = $config['input']; - } else { - $this->input = []; - } - if ( isset( $config['tagLimit'] ) ) { - $this->tagLimit = $config['tagLimit']; - } + $this->selectedArray = $config['default'] ?? []; + $this->inputName = $config['name'] ?? null; + $this->inputPlaceholder = $config['placeholder'] ?? null; + $this->input = $config['input'] ?? []; + $this->tagLimit = $config['tagLimit'] ?? null; $textarea = new MultilineTextInputWidget( array_merge( [ 'name' => $this->inputName, diff --git a/languages/i18n/cs.json b/languages/i18n/cs.json index 15f5ee1ab0..e8c22b492d 100644 --- a/languages/i18n/cs.json +++ b/languages/i18n/cs.json @@ -790,6 +790,9 @@ "content-model-css": "CSS", "content-json-empty-object": "Prázdný objekt", "content-json-empty-array": "Prázdné pole", + "unsupported-content-model": "Varování: Model obsahu $1 není na této wiki podporován.", + "unsupported-content-diff": "Rozdíly obsahů s modelem $1 nejsou podporovány.", + "unsupported-content-diff2": "Rozdíly mezi obsahy s modely $1 a $2 nejsou na této wiki podporovány.", "deprecated-self-close-category": "Stránky s neplatnými sebeuzavírajícími HTML značkami", "deprecated-self-close-category-desc": "Stránka obsahuje neplatné sebeuzavírající HTML značky, například <b/> nebo <span/>. Jejich chování se v zájmu konzistence se specifikací HTML5 brzy změní, proto je jejich použití ve wikitextu zastaralé.", "duplicate-args-warning": "Upozornění: Stránka [[:$1]] volá [[:$2]] s více než jednou hodnotou parametru „$3“. Použije se jen poslední uvedená hodnota.", @@ -825,6 +828,7 @@ "undo-norev": "Tuto editaci není možné vrátit, protože neexistuje nebo byla smazána.", "undo-nochange": "Zdá se, že editace již byla zrušena.", "undo-summary": "Zrušena verze $1 od uživatele [[Special:Contributions/$2|$2]] ([[User talk:$2|diskuse]])", + "undo-summary-anon": "Zrušena verze $1 od uživatele [[Special:Contributions/$2|$2]]", "undo-summary-username-hidden": "Zrušena verze $1 od skrytého uživatele", "cantcreateaccount-text": "Zakládání nových účtů z této IP adresy ($1) bylo zablokováno {{GENDER:$3|uživatelem|uživatelkou}} [[User:$3|$3]].\n\n$3 uvádí toto zdůvodnění: $2", "cantcreateaccount-range-text": "Zakládání nových účtů z IP adres v rozsahu $1, který obsahuje i vaši IP adresu ($4), bylo zablokováno {{GENDER:$3|uživatelem|uživatelkou}} [[User:$3|$3]].\n\n$3 uvádí toto zdůvodnění: $2", @@ -2333,6 +2337,7 @@ "alreadyrolled": "Nelze vrátit zpět poslední editaci [[:$1]] od uživatele [[User:$2|$2]] ([[User talk:$2|diskuse]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]), protože někdo jiný již stránku editoval nebo vrátil tuto změnu zpět.\n\nPoslední editaci této stránky {{GENDER:$3|provedl|provedla|provedl uživatel}} [[User:$3|$3]] ([[User talk:$3|diskuse]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).", "editcomment": "Shrnutí editace bylo: $1.", "revertpage": "Editace uživatele „[[Special:Contributions/$2|$2]]“ ([[User talk:$2|diskuse]]) vráceny do předchozího stavu, jehož autorem je „[[User:$1|$1]]“", + "revertpage-anon": "Editace uživatele „[[Special:Contributions/$2|$2]]“ vráceny do předchozího stavu, jehož autorem je „[[User:$1|$1]]“", "revertpage-nouser": "Editace skrytého uživatele vráceny do předchozího stavu, jehož {{GENDER:$1|autorem|autorkou}} je „[[User:$1|$1]]“", "rollback-success": "Editace {{GENDER:$3|uživatele|uživatelky}} $1 byly vráceny na poslední verzi od {{GENDER:$4|uživatele|uživatelky}} $2.", "sessionfailure-title": "Chyba relace", diff --git a/languages/i18n/diq.json b/languages/i18n/diq.json index 6ba40ff197..b64046bcf5 100644 --- a/languages/i18n/diq.json +++ b/languages/i18n/diq.json @@ -1923,7 +1923,7 @@ "checkbox-all": "Pêro", "checkbox-none": "Çıniyo", "checkbox-invert": "Dimlaşt ke", - "allpages": "Pêro peli", + "allpages": "Perri pêro", "nextpage": "Pela bahdoyêne ($1)", "prevpage": "Pela veri ($1)", "allpagesfrom": "Herfa kı pa liste bo:", diff --git a/languages/i18n/en.json b/languages/i18n/en.json index f6ea46c4a2..9c4f508893 100644 --- a/languages/i18n/en.json +++ b/languages/i18n/en.json @@ -47,6 +47,7 @@ "tog-useeditwarning": "Warn me when I leave an edit page with unsaved changes", "tog-prefershttps": "Always use a secure connection while logged in", "tog-showrollbackconfirmation": "Show a confirmation prompt when clicking on a rollback link", + "tog-requireemail": "Require email for password resets", "underline-always": "Always", "underline-never": "Never", "underline-default": "Skin or browser default", @@ -1152,6 +1153,7 @@ "prefs-help-email": "Email address is optional, but is needed for password resets, should you forget your password.", "prefs-help-email-others": "You can also choose to let others contact you by email through a link on your user or talk page.\nYour email address is not revealed when other users contact you.", "prefs-help-email-required": "Email address is required.", + "prefs-help-requireemail": "If checked, will only send password reset emails if the resetting person has provided both username and email for this account.", "prefs-info": "Basic information", "prefs-i18n": "Internationalisation", "prefs-signature": "Signature", diff --git a/languages/i18n/exif/pl.json b/languages/i18n/exif/pl.json index f8709f329d..64725b43c0 100644 --- a/languages/i18n/exif/pl.json +++ b/languages/i18n/exif/pl.json @@ -6,7 +6,8 @@ "Matma Rex", "Sp5uhe", "Stlmch", - "Railfail536" + "Railfail536", + "Rail" ] }, "exif-imagewidth": "Szerokość", diff --git a/languages/i18n/fr.json b/languages/i18n/fr.json index 51327182de..41b229309a 100644 --- a/languages/i18n/fr.json +++ b/languages/i18n/fr.json @@ -812,8 +812,8 @@ "blockedtitle": "L’utilisateur est bloqué.", "blocked-email-user": "Votre nom d’utilisateur a été bloqué pour l’envoi de courriels. Vous pouvez toujours modifier d’autres pages sur ce wiki. Vous pouvez voir tous les détails du blocage sur [[Special:MyContributions|contributions du compte]].\n\nCe blocage a été fait par $1.\n\nLe motif fourni est $2.\n\n* Début du blocage : $8\n* Expiration du blocage : $6\n* Cible souhaitée du blocage : $7\n* ID du blocage nº $5", "blockedtext-partial": "Votre nom d’utilisateur ou votre adresse IP a été bloqué pour effectuer des modifications sur cette page. Vous pouvez toujours modifier d’autres pages sur ce wiki. Vous pouvez voir tous les détails sur ce blocage sur [[Special:MyContributions|contributions du compte]].\n\nLe blocage a été effectué par $1.\n\nLe motif fourni est $2.\n\n* Début du blocage : $8\n* Expiration du blocage : $6\n* Cible souhaitée du blocage : $7\n* ID du blocage nº $5", - "blockedtext": "Votre compte utilisateur ou votre adresse IP a été bloqué.\n\nLe blocage a été effectué par $1.\nLa raison invoquée est la suivante : $2.\n\n* Début du blocage : $8\n* Expiration du blocage : $6\n* Compte bloqué : $7.\n\nVous pouvez contacter $1 ou un autre [[{{MediaWiki:Grouppage-sysop}}|administrateur]] pour en discuter.\nVous ne pouvez utiliser la fonction « {{int:emailuser}} » que si une adresse de courriel valide est spécifiée dans vos [[Special:Preferences|préférences]] et que si cette fonctionnalité ne vous a pas été bloquée.\nVotre adresse IP actuelle est $3 et votre identifiant de blocage est $5.\nVeuillez inclure tous les détails ci-dessus dans chacune des requêtes que vous ferez.", - "autoblockedtext": "Votre adresse IP a été bloquée automatiquement car elle a été utilisée par un autre utilisateur, lui-même bloqué par $1.\nLa raison invoquée est :\n\n: $2.\n\n* Début du blocage : $8\n* Expiration du blocage : $6\n* Compte bloqué : $7\n\nVous pouvez contacter $1 ou l’un des autres [[{{MediaWiki:Grouppage-sysop}}|administrateurs]] pour discuter de ce blocage.\n\nNotez que vous ne pourrez utiliser la fonctionnalité « {{int:emailuser}} » que si vous avez une adresse de courriel validée dans vos [[Special:Preferences|préférences]] et que cette fonctionnalité ne vous a pas été désactivée.\n\nVotre adresse IP actuelle est $3, et le numéro de blocage est $5.\nVeuillez inclure tous les détails ci-dessus dans chacune des requêtes que vous ferez.", + "blockedtext": "Votre compte utilisateur ou votre adresse IP a été bloqué.\n\nLe blocage a été effectué par $1.\nLa raison invoquée est la suivante : $2.\n\n* Début du blocage : $8\n* Expiration du blocage : $6\n* Compte bloqué : $7.\n\nVous pouvez contacter $1 ou un autre [[{{MediaWiki:Grouppage-sysop}}|administrateur]] pour en discuter.\nVous ne pouvez utiliser la fonction « {{int:emailuser}} » que si une adresse de courriel valide est spécifiée dans vos [[Special:Preferences|préférences]] et que si cette fonctionnalité ne vous a pas été bloquée.\nVotre adresse IP actuelle est $3 et votre identifiant de blocage est $5.\nVeuillez inclure tous les détails ci-dessus dans chacune des requêtes que vous ferez.", + "autoblockedtext": "Votre adresse IP a été bloquée automatiquement car elle a été utilisée par un autre utilisateur, lui-même bloqué par $1.\nLa raison invoquée est :\n\n: $2.\n\n* Début du blocage : $8\n* Expiration du blocage : $6\n* Compte bloqué : $7\n\nVous pouvez contacter $1 ou l’un des autres [[{{MediaWiki:Grouppage-sysop}}|administrateurs]] pour discuter de ce blocage.\n\nNotez que vous ne pourrez utiliser la fonctionnalité « {{int:emailuser}} » que si vous avez une adresse de courriel validée dans vos [[Special:Preferences|préférences]] et que cette fonctionnalité ne vous a pas été désactivée.\n\nVotre adresse IP actuelle est $3, et le numéro de blocage est $5.\nVeuillez inclure tous les détails ci-dessus dans chacune des requêtes que vous ferez.", "systemblockedtext": "Votre nom d'utilisateur ou votre adresse IP ont été bloqués automatiquement par MediaWiki.\nLa raison donnée est la suivante:\n\n: $2.\n\n* Le début du blocage: $8\n* Expiration du délai de blocage: $6\n* Elément concerné: $7\n\nVotre adresse IP actuelle est $3.\nVeuillez inclure tous les détails ci-dessus dans chacune des requêtes que vous ferez.", "blockednoreason": "aucune raison donnée", "blockedtext-composite": "Votre nom d'utilisateur ou votre adresse IP ont été bloqués.\n\nLa raison invoquée est :\n\n: $2.\n\n* Début du blocage : $8\n* Expiration du blocage le plus long : $6\n* $5\n\nVotre adresse IP actuelle est $3.\nVeuillez inclure tous les détails ci-dessus dans chaque demande que vous ferez.", @@ -840,7 +840,7 @@ "blocked-notice-logextract": "Cet utilisateur est actuellement bloqué.\nLa dernière entrée du journal des blocages est affichée ci-dessous pour référence :", "clearyourcache": "Note : après avoir enregistré vos modifications, il se peut que vous deviez forcer le rechargement complet du cache de votre navigateur pour voir les changements.\n* Firefox / Safari : maintenez la touche Maj (Shift) en cliquant sur le bouton Actualiser ou pressez Ctrl-F5 ou Ctrl-R (⌘-R sur un Mac) \n* Google Chrome : appuyez sur Ctrl-Maj-R (⌘-Shift-R sur un Mac) \n* Internet Explorer : maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl-F5 \n* Opera : allez dans Menu → Settings (Opera → Préférences sur un Mac) et ensuite à Confidentialité & sécurité → Effacer les données d’exploration → Images et fichiers en cache.", "usercssyoucanpreview": "Astuce : utilisez le bouton « {{int:showpreview}} » pour tester votre nouvelle feuille CSS avant de l’enregistrer.", - "userjsonyoucanpreview": "Conseil : Utiliser le bouton « {{int:showpreview}} » pour tester votre nouveau JSON avant enregistrement.", + "userjsonyoucanpreview": "Conseil : utilisez le bouton « {{int:showpreview}} » pour tester votre nouveau JSON avant enregistrement.", "userjsyoucanpreview": "Astuce : utilisez le bouton « {{int:showpreview}} » pour tester votre nouvelle feuille JavaScript avant de l’enregistrer.", "usercsspreview": "Rappelez-vous que vous ne faites que prévisualiser votre propre feuille CSS. \nElle n’a pas encore été enregistrée !", "userjsonpreview": "Rappelez-vous que vous êtes seulement en train de tester/voir un aperçu de votre configuration utilisateur JSON.\nElle n’a pas encore été enregistrée !", @@ -848,7 +848,7 @@ "sitecsspreview": "Rappelez-vous que vous ne faites que prévisualiser cette feuille de style. \nElle n’a pas encore été enregistrée !", "sitejsonpreview": "Souvenez-vous que vous ne faites que regarder un aperçu de cette configuration JSON.\nElle n’a pas encore été enregistrée !", "sitejspreview": "Rappelez-vous que vous ne faites que prévisualiser ce code JavaScript. \nIl n’a pas encore été enregistré !", - "userinvalidconfigtitle": "Attention : il n’existe pas d’habillage « $1 ». \nLes pages personnelles avec extensions .css, .json et .js utilisent des titres en minuscules, par exemple {{ns:user}}:Foo/vector.css et non {{ns:user}}:Foo/Vector.css.", + "userinvalidconfigtitle": "Attention : il n’existe pas d’habillage « $1 ».\nLes pages personnelles avec extensions .css, .json et .js utilisent des titres en minuscules, par exemple {{ns:user}}:Foo/vector.css et non {{ns:user}}:Foo/Vector.css.", "updated": "(Mis à jour)", "note": "Note :", "previewnote": "Rappelez-vous que ce n’est qu’une prévisualisation.\nVos modifications n’ont pas encore été enregistrées !", @@ -1828,10 +1828,10 @@ "uploaded-event-handler-on-svg": "Fixer des attributs de gestionnaire d’événement $1=\"$2\" n’est pas autorisé dans les fichiers SVG.", "uploaded-href-attribute-svg": " les éléments ne peuvent être liés (href) qu’aux cibles de données : (fichier inclus), http:// ou https://, ou un fragment (#, même document). Pour les autres éléments, comme , seuls data: et fragment sont autorisés. Essayez les images incluses lors de l’export de votre SVG. <$1 $2=\"$3\"> obtenu.", "uploaded-href-unsafe-target-svg": "Un href vers des données non sûres a été trouvé dans le fichier SVG téléversé : URI cible <$1 $2=\"$3\">.", - "uploaded-animate-svg": "Balise « animate » trouvée, qui pourrait modifier le href en utilisant l’attribut « from » <$1 $2=\"$3\"> dans le fichier SVG téléversé.", + "uploaded-animate-svg": "Balise « animate » trouvée qui pourrait modifier le href en utilisant l’attribut « from » <$1 $2=\"$3\"> dans le fichier SVG téléversé.", "uploaded-setting-event-handler-svg": "Positionner les attributs du gestionnaire d’événements n'est pas possible, <$1 $2=\"$3\"> trouvé dans le fichier SVG téléversé.", "uploaded-setting-href-svg": "L’utilisation de la balise « set » pour ajouter un attribut « href » à l’élément parent est interdite.", - "uploaded-wrong-setting-svg": "L’utilisation de la balise « set » pour ajouter une cible distante, de données ou de type script, à un attribut quelconque, est interdite. <set to=\"$1\"> a été trouvé dans le fichier SVG téléversé.", + "uploaded-wrong-setting-svg": "L’utilisation de la balise « set » pour ajouter à un attribut quelconque une cible distante, de données ou de script est interdite. <set to=\"$1\"> a été trouvé dans le fichier SVG téléversé.", "uploaded-setting-handler-svg": "Les SVG qui positionnent l’attribut « handler » avec distant/données/script sont bloqués. $1=\"$2\" a été trouvé dans le fichier SVG téléversé.", "uploaded-remote-url-svg": "Les SVG qui positionnent un attribut de style avec une URL distante sont bloqués. $1=\"$2\" trouvé dans le fichier SVG téléversé.", "uploaded-image-filter-svg": "Filtre d’image avec URL trouvé : <$1 $2=\"$3\"> dans le fichier SVG téléversé.", @@ -1936,7 +1936,7 @@ "uploadstash-errclear": "La suppression des fichiers a échoué.", "uploadstash-refresh": "Actualiser la liste des fichiers", "uploadstash-thumbnail": "afficher la vignette", - "uploadstash-exception": "Impossible de stocker le téléversement dans la réserve ($1) : « $2 ».", + "uploadstash-exception": "Impossible de stocker le téléversement dans la réserve ($1) : « $2 ».", "uploadstash-bad-path": "Le chemin n’existe pas.", "uploadstash-bad-path-invalid": "Le chemin n’est pas valide.", "uploadstash-bad-path-unknown-type": "Type « $1 » inconnu.", diff --git a/languages/i18n/gom-deva.json b/languages/i18n/gom-deva.json index 9faad524e6..2a427a291b 100644 --- a/languages/i18n/gom-deva.json +++ b/languages/i18n/gom-deva.json @@ -106,6 +106,7 @@ "category-file-count": "{{PLURAL:$2|ह्या वर्गांत फकत सकयली फायल आसपावता.|ह्या वर्गांत सकयल दिल्लीं {{PLURAL:$1|फायल|$1 फायलीं}} आसता, वट्ट फायलीं $2}}", "listingcontinuesabbrev": "चालू.", "noindex-category": "बिननिर्देशांकी पानां", + "broken-file-category": "तुटलेल्या फायलींचो दुवे आसलेलीं पानां", "about": "विशीं", "article": "मजकूराचीं पानां", "newwindow": "(नव्या ज़ोणेलांत उकतें जाता)", @@ -226,6 +227,7 @@ "mainpage-nstab": "मुखेल पान", "nosuchaction": "असले तरेचे कार्य ना", "nosuchspecialpage": "असले कांयच विशेश पान ना", + "nospecialpagetext": "तुवें एक अवैद खेरीत पान मागलां.\n\nएक खेरीत पानाची वळेरी तुका हांगासर मेळूं येता [[Special:SpecialPages|{{int:specialpages}}]].", "error": "चूक", "databaseerror": "डॅटाबॅज त्रुटी", "databaseerror-textcl": "डॅटाबेज विरोध त्रुटी आयिल्ली आसा", @@ -236,6 +238,8 @@ "badtitle": "चुकीचो माथाळो", "badtitletext": "विनवणी केल्लें पानाचो माथाळो अवैध, रितो वा अयोग्य तरेन आंतरभाशी वा आंतर विकी माथाळ्या कडे जोडिल्लो आशिल्लो. तातूंत माथाळ्यांत वापरुं नजो अशी एक वा चड अक्षरां आसूं येतात.", "viewsource": "उगम पळेयात", + "viewsource-title": "$1‎ खातीर मूळ पळय", + "viewsourcetext": "तुज्यान ह्या पानाचें मूळ पळोवंक आनी नकल करुंक जाता.", "yourname": "वापरप्याचे नांव", "userlogin-yourname": "वापरप्याचे नांव", "userlogin-yourname-ph": "वापरप्याचे नांव घालात", @@ -369,7 +373,7 @@ "accmailtitle": "गुपीत उतर धाडलां", "newarticle": "(नवें)", "newarticletext": "जें पान अजून अस्तित्वांत ना अशा पानाचे दुवे फाटल्यान तुमी आसात. पान रचपाक सकयले चौकटींत टायप करपाक सुरु करात (चड म्हायती खातीर [$1 आदाराचें पान] पळेयात) जर ह्या पानार तुमी चुकून पावल्यात तर ब्रावजराचो बॅक (फटीं) हो बटन दामात", - "noarticletext": "सद्या ह्या पानाचेर कसलीच मजकूर ना. \nतुमी हेर पानांचेर [[Special:Search/{{PAGENAME}}|हो माथाळो]] सोदूं शकतात,\n[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} संबंदीत लॉग सोदूं शकतात],\nवा ह्या पानाक [{{fullurl:{{FULLPAGENAME}}|action=edit}} संपादीत] करूं शकतात।", + "noarticletext": "सध्याक हें पान रिंते आसा.\nतुज्यान दूसऱ्या पानानी [[Special:Search/{{PAGENAME}}| ह्या पानाचे नांव सोदूंक जाता]], [{{fullurl:{{#Special:Log}}|page={{FULLPAGENAME}}}} संबंधी सत्रानी सोदूंक जाता], वा [{{fullurl:{{FULLPAGENAME}}|action=edit}} हें पान रचूंक जाता].", "noarticletext-nopermission": "तुर्ताक ह्या पानाचेर कसलोच मजकूर ना. तुमी हेर पानांचेर [[Special:Search/{{PAGENAME}}|ह्या माथाळ्याचो सोद]] घेवं शकतात,\nवा [{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} संबंदीत लॉग सोदूं शकतात], पूण तुमकां हें पानाची रचणूक करपाची परवानगी ना।", "userpage-userdoesnotexist-view": "\"$1\" ह्या वापरप्याच्या खात्याची नोंदणी करूंक ना.", "previewnote": "'''ही फकत एक दाखवण हें मतींत दवरात.'''\nतुमचें बदल आडून राखून दवरूंक ना!", @@ -383,7 +387,7 @@ "hiddencategories": "हें पान {{PLURAL:$1|लिपिल्ले वर्गाचें}} आसा", "permissionserrorstext-withaction": "ह्या {{PLURAL:$1|कारण|कारणां}}: खातीर तुका $2 मान्यताय ना.", "recreate-moveddeleted-warn": "शिटकावणीः तुमी आदीं काडून उडयिल्लें पान परतून तयार करतात ह्या पानाचे फासून उडोवपी आनी दुसरे कडे व्हरपी लाग फकत सोपेपणा खातीर दिल्यात", - "moveddeleted-notice": "हें पान काडून उडयला.\nह्या पानाचो काडून उडोवपी आनी हालोवपी लॉग संदर्भा खातीर सकयल दिला.", + "moveddeleted-notice": "हें पान काडून उडयला.\nह्या पानाचें काडून उडोवपाचें, राखपाचें, आनी हालोवपाचें सत्र संदर्भा खातीर सकयल दिला.", "content-model-wikitext": "विकीमजकूर", "content-model-text": "सादोमजकूर", "post-expand-template-inclusion-warning": "शिटकावणीः सांचो धरून आकार अगडबंब जाता, कांय सांच्याचो आसपाव जावचो ना.", @@ -403,7 +407,7 @@ "page_first": "पयलें", "page_last": "निमणें", "histlegend": "फरकाची निवडणी : पुनर्नियाळांची तुळा करपा खातीर रेडियो चौकटीं चेर कुरु करात आनी ''एंटर'' ना तर तळाकडे आशिल्लो बुतांव दामात।
\nविवरण : ({{int:cur}}) = हालींची पुनर्नियाळा बरोबर फरक, ({{int:last}}) = आदली पुनर्नियाळा बरोबर फरक, {{int:minoreditletter}} = दाक्टें बदल।", - "history-fieldset-title": "चाळपाचो इतिहास", + "history-fieldset-title": "उजळण्यो चाळ", "history-show-deleted": "फकत काडून उडयिल्लें", "histfirst": "पोरणो", "histlast": "नवो ताल्ल", @@ -445,7 +449,7 @@ "searchprofile-advanced-tooltip": "खाशेल्या नांवथोळाणी सोदात", "search-result-size": "$1 ({{PLURAL:$2|1 उतर|$2 उतरां}})", "search-result-category-size": "{PLURAL:$1|1 सदस्य|$1 सदस्य}} ({{PLURAL:$2|1 उपगट|$2 उपगट}}, {{PLURAL:$3|1 फायल|$3 फायलीं}})", - "search-redirect": "(पुनर्निर्देशन $1)", + "search-redirect": "($1 सावन पुनर्निर्देशीत)", "search-section": "(विभाग $1)", "search-suggest": "तुमकां $1 अशें म्हणपाचें आसलें?", "search-rewritten": "$1 हाचो निकाल दाखयता.नाजाल्यार $2 हें सोदात.", @@ -472,6 +476,7 @@ "recentchanges": "हालींचे बदल", "recentchanges-legend": "हालींच जाल्ल्या बदलाचो विकल्प", "recentchanges-summary": "ह्या विकीचेर हालींच जाल्ल्या बदलांचो माग ह्या भरणांतल्यान दवरात", + "recentchanges-noresult": "दिलेल्या काळाचे बदल ह्या निकशाक जुळनांत.‎", "recentchanges-feed-description": "ह्या विकीचेर हालींच जाल्ल्या बदलांचो माग ह्या भरणांतल्यान दवरात.", "recentchanges-label-newpage": "ह्या संपादनांन नवें पान निर्माण केला.", "recentchanges-label-minor": "हें दाक्टे संपादन", @@ -480,7 +485,7 @@ "recentchanges-label-plusminus": "ह्या पानाचो आकार इतल्या बाइट्सन बदललो", "recentchanges-legend-heading": "कुंजी:", "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} ([[Special:NewPages| नव्या पानांची सुची]] पळयात)", - "rcnotefrom": "$2 पासून केल्ले बदल सकयल दिल्यात ($1 मेरेन दाखयल्यात)", + "rcnotefrom": "सकयल $3, $4 सावन {{PLURAL:$5 जालेले बदल दिल्यात}} ($1 मेरेन {{PLURAL:$5|दाखयलां|दाखयल्यांत}}).", "rclistfrom": "$3 $2 साकून नवें बदल दाखयात", "rcshowhideminor": "$1 दाकट्यो बदल", "rcshowhideminor-show": "दाखयात", @@ -489,6 +494,7 @@ "rcshowhidebots-show": "दाखयात", "rcshowhidebots-hide": "लिपयात", "rcshowhideliu": "$1 अधिकृत नोंदीचे वापरपी", + "rcshowhideliu-show": "दाखयात", "rcshowhideliu-hide": "लिपयात", "rcshowhideanons": "$1 निनांवी वापरपी", "rcshowhideanons-show": "दाखयात", @@ -498,7 +504,7 @@ "rcshowhidemine": "$1 म्हजें संपादन आंकडे", "rcshowhidemine-show": "दाखयात", "rcshowhidemine-hide": "लिपयात", - "rclinks": "फाटल्या $2 दिसांनी जाल्लो $1 बदल दाखयात", + "rclinks": "शेवटचे $2 दिसानीं जाल्ले $1 बदल दाखयात", "diff": "फरक", "hist": "इति", "hide": "लिपयात", @@ -541,8 +547,8 @@ "filehist-dimensions": "परिमाण", "filehist-comment": "शेरो", "imagelinks": "फायलिचो वापर", - "linkstoimage": "हे फायलीक सकयल दिल्ल्यो पानाच्यो जोडण्यो {{PLURAL:$1|आसात}}.", - "nolinkstoimage": "हे फायलीक दुवो आशिल्लीं आनीक पानां नात.", + "linkstoimage": "{{PLURAL:$1|हें पान|$1 हीं पानां}} ही फायल {{PLURAL:$1|वापरता|वापरतात}}:", + "nolinkstoimage": "ह्या फायलीक वापरतात तसलीं पानां नांत.", "sharedupload-desc-here": "ही फयल $1 हांगाची आनी ती हे प्रकल्पां खातीर वापरल्यार चलता. (तिच्या $2 ह्या फयलींतलें वर्णनाचे पान) तातूंतलें वर्णन सकयल दिलां.", "upload-disallowed-here": "तूं ह्या फायलीचेर अधिलेखीत करूंक शकना", "randompage": "खंयचेंय पान", @@ -609,6 +615,7 @@ "contributions-title": "$1 खातीर वापरप्याचीं योगदानां", "mycontris": "योगदान", "anoncontribs": "योगदान", + "contribsub2": "{{GENDER:$3|$1}} हाच्यो ($2)", "uctop": "हालीचें", "month": "ह्या म्हयन्या सावन (आनी आदलें):", "year": "ह्या वर्सा सावन (आनी आदलें):", @@ -619,6 +626,7 @@ "sp-contributions-search": "योगदानां सोदात", "sp-contributions-username": "आयपी नामो वा वापरप्याचें नांव", "sp-contributions-toponly": "फकत सगळ्यांत हालींचे पुनर्नियाळ आशिल्लीं संपादन दाखयात", + "sp-contributions-newonly": "फकत तसलेचच बदल दाखय, जांचे वर्वीं पान रचलां", "sp-contributions-submit": "सोद", "whatlinkshere": "हाका कितें जडता", "whatlinkshere-title": " \"$1\" हाका दुवे आशिल्लीं पानां", @@ -626,17 +634,17 @@ "linkshere": "मुखावेली पानां $2: हाका जडतात", "nolinkshere": "$2 हाका खंयच्याच पानाचो दुवो ना", "isredirect": "पुनर्निर्देशन पान", - "istemplate": "$1 दूसरात-समावेस", + "istemplate": "दुरास्थ-समावेस", "isimage": "फायलीचो दुवो", "whatlinkshere-prev": "{{PLURAL:$1|आदलें|आदलीं $1}}", "whatlinkshere-next": "{{PLURAL:$1|फुडलें|फुडलें $1}}", "whatlinkshere-links": "← दुवे", "whatlinkshere-hideredirs": "$1 पुनर्निर्देशन", - "whatlinkshere-hidetrans": "$1 दूस्रात-समावेश", + "whatlinkshere-hidetrans": "$1 दुरास्थ-समावेस", "whatlinkshere-hidelinks": "$1 दुवे", "whatlinkshere-hideimages": "$1 फायल दुवे", "whatlinkshere-filters": "गाळणे", - "ipboptions": "2 वरां: 2hours ,1 दीस:1 day,3 दीस:3 days,1 सुमान:1 week,2 सुमनां:2 weeks,1 म्हयनो:1 month,3 म्हयने:3 months,6 म्हयने:6 months,1 वर्स:1 year,अनिश्चीत:infinte", + "ipboptions": "2 वरां:2 hours,1 दीस:1 day,3 दीस:3 days,1 सुमान:1 week,2 सुमनां:2 weeks,1 म्हयनो:1 month,3 म्हयने:3 months,6 म्हयने:6 months,1 वर्स:1 year,शेवट ना:infinite", "ipblocklist": "आडायल्लें वापरपी", "blocklink": "आडावणी", "change-blocklink": "विभाग सुदारप", @@ -652,11 +660,11 @@ "allmessagesdefault": "पूर्वनिर्धारित संदेशाचो मजकूर", "thumbnail-more": "व्हड करात", "thumbnail_error": "$1ः लघुप्रतिमा करतांनाची चूक", - "tooltip-pt-userpage": "तुमचें वापरपाचें पान", - "tooltip-pt-mytalk": "तुमचें चर्चेचें पान", + "tooltip-pt-userpage": "{{GENDER:|तुमचें वापरप्याचें}} पान", + "tooltip-pt-mytalk": "{{GENDER:|तुमचें}} भासाभासाचें पान", "tooltip-pt-preferences": "{{GENDER:|तुमची}} पसंती", "tooltip-pt-watchlist": "तुमी बदल करपा खातीर देखरेख करतात त्या पानांची वळेरी", - "tooltip-pt-mycontris": "तुमच्या योगदानांची वळेरी", + "tooltip-pt-mycontris": "{{GENDER:|तुमच्या}} योगदानांची वळेरी", "tooltip-pt-login": "सत्रारंभ करप बरें, पूण तशी सक्ती ना.", "tooltip-pt-logout": "सत्र शेवट", "tooltip-pt-createaccount": "तुमी खातें उगडून सत्रारंभ करचें अशें सुचयतात, पूण तें सक्तीचें ना.", @@ -684,7 +692,7 @@ "tooltip-t-whatlinkshere": "हांगा दुवे आशिल्ल्या सगळ्या विकी पानांची वळेरी", "tooltip-t-recentchangeslinked": "ह्या पानावेल्यान दुवे दिल्ल्या पानांतले हालींचे बदल", "tooltip-feed-atom": "ह्या पाना खातीर ऍटम पूर्वण", - "tooltip-t-contributions": "ह्या वापरप्याची योगदानाची वळेरी", + "tooltip-t-contributions": "{{GENDER:$1|ह्या वापरप्याची}} योगदानाची वळेरी", "tooltip-t-emailuser": "{{GENDER:$1|ह्या उपेगकर्त्याक}} इ-मेल धाडात", "tooltip-t-upload": "फायली अपलोड करात", "tooltip-t-specialpages": "सगळ्या विशेश पानांची वळेरी", @@ -706,7 +714,7 @@ "tooltip-rollback": "निमाण्या योगदान करप्यान ह्या पानाचेर केल्लें संपादन रोलबॅक (फाटीं घेयात) एकाच क्लीकान मूळ पदार हाडटा", "tooltip-undo": "\"आदलें स्थितीर हाडचें\" ह्या बदलाक परत व्हरुन संपादन स्थितीन झलक रितीन दाखयतात.\nहाचेवरवीं सारांशान आदल्या स्थितीर हाडपाचें कारण बरोवं शकता.", "tooltip-summary": "आपरोसाची नोंदणी करात", - "simpleantispam-label": "एन्टी-स्पैम तपासप.\nहे भरीनकाय!", + "simpleantispam-label": "स्पमविरूध तपासणी.\nहें भर नाका!", "pageinfo-toolboxlink": "पानाची म्हायती", "pageinfo-contentpage-yes": "हय", "previousdiff": "← आदलें संपादन", diff --git a/languages/i18n/gom-latn.json b/languages/i18n/gom-latn.json index 1fe99ac4f9..9f1f7067f4 100644 --- a/languages/i18n/gom-latn.json +++ b/languages/i18n/gom-latn.json @@ -17,7 +17,7 @@ "tog-enotifwatchlistpages": "Mhojea sadurvollerintlem pan vo fayl bodol'li zalear mhaka email dhadd", "tog-shownumberswatching": "Nodor dovorpi vaporpeanche sonkhya dakhoi", "tog-oldsig": "Tujea sod'dheachi soy:", - "tog-uselivepreview": "Pan porot ugdinastana zolok dahkoi", + "tog-uselivepreview": "Pan porot ughoddnastana zholok dakhoi", "tog-watchlisthideown": "Sadurvollerint mhoje bodol lipoi", "tog-watchlisthidebots": "Sadurvollerint robotani kel'le bodol lipoi", "tog-watchlisthideminor": "Sadurvollerint dhaktem bodol lipoi", @@ -100,7 +100,7 @@ "listingcontinuesabbrev": "chalu", "index-category": "Suchi-potran zodlelim panam", "noindex-category": "Suchi-potran zoddunk-naslelim panam", - "broken-file-category": "Tuttlolea faylinchea duve aslelim panam‎", + "broken-file-category": "Tuttlolea faylinche duve aslelim panam‎", "about": "Hea vixoiavoir", "article": "Vixoi sombondhi pan", "newwindow": "(novea zonelant uktem zata)", @@ -191,7 +191,7 @@ "youhavenewmessages": "Tumkam $1 ($2) asat.", "youhavenewmessagesfromusers": "Tuka {{PLURAL:$3|ek vaporpi|$3 vaporpi}} koddlean $1 {{PLURAL:$4|asa|asat}} ($2).‎", "newmessageslinkplural": "{{PLURAL:$1|novo sondex|999=nove sondex}}‎", - "newmessagesdifflinkplural": "{{PLURAL:$1|nimanno bodol|999=nimanneo bodol}}", + "newmessagesdifflinkplural": "{{PLURAL:$1|nimanno bodol|999=nimanne bodol}}", "youhavenewmessagesmulti": "$1 cher tuka noveo sondex asat", "editsection": "bodol", "editold": "bodol", @@ -236,7 +236,7 @@ "databaseerror-textcl": "Totv-kox (database) sodtana chuk ghodli", "databaseerror-query": "Anurodh: $1", "databaseerror-error": "Chuk: $1", - "missing-article": "Totv-kox (Database) hantun mellunk zai aslem tem mozkur \"$1\" $2 mellunk-nam.\n\nHorxim, oxem ek pornem frk vo eka panachea itihasacho duvo kadun udoila, tedna zata.\n\nOxem nhoi zalear, tuka softwer-an chuk sampodlam zait.\nUpkar korun eka [[Special:ListUsers/sysop|karbhari]]chea nodrek hadd, Internet Zago Sodpi (URL) hachi nond gheun.", + "missing-article": "Totv-kox (Database) hantun mellunk zai aslem tem mozkur \"$1\" $2 mellunk-nam.\n\nHorxim, oxem ek pornem frk vo eka panachea itihasacho duvo kaddun uddoila, ten’na zata.\n\nOxem nhoi zalear, tuka software-ant chuk sampoddlea zait.\nUpkar korun eka [[Special:ListUsers/sysop|karbhari]]chea nodrek hadd, Ontorzalleant Zago Sodpi (URL) hachi nond ghevn.", "missingarticle-rev": "(uzollnni#: $1)", "missingarticle-diff": "(Frk: $1, $2)", "badtitle": "Chukichem nanv", @@ -289,7 +289,7 @@ "loginerror": "Sotrorombhachi truti", "createacct-error": "Khatem rochtanam truti", "createaccounterror": "Khatem rochunk zaunk na: $1", - "loginsuccesstitle": "Sotrorombh zalem", + "loginsuccesstitle": "Sotrarombh zalem", "nosuchusershort": "\"$1\" hea nanvan konn vapurpi na.\nNanv boroitana chuk zali gai?", "nouserspecified": "Vapurpeachem nanv diunk-uch zai.", "login-userblocked": "Hea vapurpeak addaila. Sotrorombh korunk zaina.", @@ -307,7 +307,7 @@ "emaildisabled": "Hi site mail dhadpak xokona.", "accountcreated": "Khatem rochlem.", "createaccount-title": "{{SITENAME}} -ak khatem rochlem", - "login-abort-generic": "Tujem sotrorombh opexi tharlam - Nixfolit", + "login-abort-generic": "Tujem sotrorombh opexi tharlam - Nixfollit", "login-migrated-generic": "Tujem khatem stholontrit zalam ani vapurpeachem nanv hea wikicher anink ostitvant na.", "loginlanguagelabel": "Bhas: $1", "pt-login": "Sotrorombh", @@ -332,8 +332,8 @@ "passwordreset-domain": "Domain:", "passwordreset-email": "Email potto:", "passwordreset-emailelement": "Vapurpeachem nanv: \n$1\n\nTatpurtem gupitutor: \n$2", - "passwordreset-emailsentemail": "Ho email pot'to tujea kontak zodlelem asa zalear, gupitutor portun tharaipacho email dhadlelem zatelem.", - "changeemail": "Email potto bodol vo kad", + "passwordreset-emailsentemail": "Ho email pot'to tujea hixobant zoddlolo asa zalear, gupitutor portun tharavpacho email dhaddlelem zatelem.", + "changeemail": "Email po’tto bodol vo kadd", "changeemail-oldemail": "Sodhyacho email potto:", "changeemail-newemail": "Novo email potto:", "changeemail-none": "(kai na)", @@ -375,7 +375,7 @@ "anoneditwarning": "Chotrai: Tuven sotrorombh korunk nai. Tu bodol korit zalear tuzo IP pot'to soglleank polleunk zatelem. Tu [$1 sotrorombh korit] vo [$2 kont rochit] zalear, tuje bodol tuzo vaporpeachem nanvak zoddteleo ani anik-ui faide asat.", "missingcommenttext": "Upkar korun tuzo xero boroi.", "blockedtitle": "Vapurpeak addaila", - "blockedtext": "Tujem vaporpeachem nanv vo IP pot'to addavpant aila.\n\nAddavop $1 hannem kelam.\nKaronn dilam tem $2.\n\n* Addavpachi survat: $8\n* Addavpachea somp’pacho vell: $6\n* Addavpak ievjila: $7\n\nTujean $1-ak vo dusrea [[{{MediaWiki:Grouppage-sysop}}|karbhariak]] addavnne bodol bhasabhas korunk sompork korunk zata. Tujean \"{{int:emailuser}}\" sobhavgunn vaprunk zaina kheriz ek void email pot'to tujea [[Special:Preferences|khatem posontint]] nischit kelea xivai ani tuka tem vaporpak addavnk na zalear. Tuzo chalont IP pot'to asa $3, ani addavnnecheo ank #$5 asa. Soglleo voileo bariksanno tum kortai tea vicharant somavex kor.", + "blockedtext": "Tujem vaporpeachem nanv vo IP pot'to addavpant aila.\n\nAddavop $1 hannem kelam.\nKaronn dilam tem $2.\n\n* Addavpachi survat: $8\n* Addavop sompovpacho vell: $6\n* Addavpak ievjila: $7\n\nTujean $1-ak vo dusrea [[{{MediaWiki:Grouppage-sysop}}|karbhariak]] addavnne bodol bhasabhas korunk sompork korunk zata. Tujean \"{{int:emailuser}}\" sobhavgunn vaprunk zaina kheriz ek void email pot'to tujea [[Special:Preferences|khatem posontint]] nischit kelea xivai ani tuka tem vaporpak addavnk na zalear. Tuzo chalont IP pot'to asa $3, ani addavnnecheo ank #$5 asa. Soglleo voileo bariksanno tum kortai tea vicharant somavex kor.", "blockednoreason": "Kainch karonn diunk na", "loginreqtitle": "Sotrorombh gorjechem", "loginreqlink": "sotrorombh kor", @@ -401,7 +401,7 @@ "permissionserrors": "Porvangechi chuk", "permissionserrorstext-withaction": "$2, hem korpak tuka porvangi na, {{PLURAL:$1|hea karnnak lagon|hea karnnank lagun}}:", "recreate-moveddeleted-warn": "Xittkavnni: Tum ek pan porot rochtai jem fattim kadun udoilelem.\n\nPanacho sompadon korop sarkem zalear dhean di.\nPan kadoupachem ani halovpachem sotr, sovloti khatir hangasor dilelem asa:", - "moveddeleted-notice": "Hem pan kadun udoilelem asa.\nPanachea kadun udounechi, rakhpachi, ani hallovnechi sotr sondorba khatir sokoil dilea.", + "moveddeleted-notice": "Hem pan kaddun udoilelem asa.\nPanachem kaddun uddovpachem, rakhpachem, ani halovpachem sotr sondhorba khatir sokoil dila.", "content-model-wikitext": "wikimozkur", "content-model-text": "Sado mozkur", "post-expand-template-inclusion-warning": "Chotrai: Sancho zoddpacho akar chod vhodlem asa.\nThodde sache zoddchenant.", @@ -423,7 +423,7 @@ "page_last": "akhirchem", "histlegend": "Frk nivoddni: Jeo uzollneo tuka comparar korunk zai, tenche fudle ''radio'' butao petoi ani ''Enter'' nazalear khalcho butao dab.
\nVivron: ({{int:cur}}) = halinchi uzollnie borobor forok, ({{int:last}}) = adli uzollnie borobor forok, {{int:minoreditletter}} = dhaktem bodol.", "history-fieldset-title": "Uzollnneo chall", - "history-show-deleted": "Fokot uzollnni kadun udoilelem", + "history-show-deleted": "Fokot uzollnni kadun uddoilolem", "histfirst": "sogleavon adhlem", "histlast": "sogleavon novem", "history-feed-title": "Uzollnniancho itihas", @@ -438,7 +438,7 @@ "revdel-restore": "Disnnem bodol", "pagehist": "Panacho itihas", "mergehistory-reason": "Karonn:", - "mergelog": "Vilin korpacho sotr", + "mergelog": "Vilin korpachem sotr", "revertmerge": "Doxim kor", "history-title": "\"$1\" hachea uzollnnecho itihas", "difference-title": "\"$1\"-chea avrutint ontor", @@ -493,7 +493,7 @@ "prefs-help-email": "Email potto sokticho na, pun tum gupitutor visroxi zalear gupitutor punorsthapon korunk email pottechi goroz podta.", "prefs-help-email-others": "Tujean dusreank tujea vapurpeacho panar vo bhasabhasache panar aslele eke email duve vorvim tuje xim sompork korunk diunk zata.\nDusre tuje xim sompork kortat tednam tuzo email potto tankam kollchenam.", "userrights-user-editname": "Ek vapurpeachem nanv ghal:", - "group-bot": "Robotam", + "group-bot": "Robottam", "group-sysop": "Karbhari", "group-all": "(soglle)", "grouppage-bot": "{{ns:project}}:Robotam", @@ -501,7 +501,7 @@ "right-move": "Panam haloi", "right-writeapi": "Borovpeache API-cho upeog", "newuserlogpage": "Vapurpi rochnnechem sotr", - "rightslog": "Vaporpeachea hokancho sotr", + "rightslog": "Vaporpeachea hokanchem sotr", "action-edit": "hem pan sudar", "action-createaccount": "hem vaporpeachem khatem roch", "nchanges": "$1 {{PLURAL:$1|bodol}}", @@ -639,7 +639,7 @@ "rc-change-size-new": "$1 {{PLURAL:$1|byte|byti}} bodol kel'lea uprant", "rc-enhanced-expand": "Bariksann dakhoi", "rc-enhanced-hide": "Bariksann lipoi", - "rc-old-title": "orombhant rochloli \"$1\" hea nanvan‎.", + "rc-old-title": "arombhant rochloli \"$1\" hea nanvan‎", "recentchangeslinked": "Sombondit bodol", "recentchangeslinked-feed": "Sombondit bodol", "recentchangeslinked-toolbox": "Sombondit bodol", @@ -699,7 +699,7 @@ "longpages": "Lamb panam", "protectedpages-filters": "Challnneo:", "listusers": "Vaporpeanchi volleri", - "usercreated": "$3 hannem $1 disa $2 vaztam rochlelem", + "usercreated": "$3 hannem $1 disa $2 vorancher rochlolem", "newpages": "Novim panam", "move": "Zago bodol", "pager-newer-n": "{{PLURAL:$1|novem 1|novim $1}}", @@ -710,8 +710,8 @@ "specialloguserlabel": "Korpi:", "speciallogtitlelabel": "Mokh (mathallo vo {{ns:user}}:vapurpeachem nanv):", "log": "Sotram", - "all-logs-page": "Soglle bhousache sotram", - "alllogstext": "{{SITENAME}} hacheo sogllea uplobdh sotranchi ektthaim dakhovnni.\nTujean tuzo dekhavo ornum ieta ek sotracho prokar vinchun, vaporpeachem nanv (vhodle and dhakte okxora modem forok podta), vo porinnam zalolem pan (hanga-ui vhodle and dhakte okxora modem forok podta).‎", + "all-logs-page": "Sogllim bhousachim sotram", + "alllogstext": "{{SITENAME}} hacheo sogllea uplobdh sotranchi ektthaim dakhovnni.\nTujean tuzo dekhavo ornum ieta ek sotracho prokar vinchun, vaporpeachem nanv (vhoddlea ani dhakttea okxora modem forok poddtta), vo porinnam zalolem pan (hangai vhoddle and dhaktte okxora modem forok poddtta).", "logempty": "Sotran zullpi nog nant.‎", "allpages": "Sogllim panam", "nextpage": "Fuddlem pan ($1)", @@ -719,7 +719,7 @@ "allpagesfrom": "Hanga thavn suru zatelea panank dakhoi:", "allarticles": "Sogllim panam", "allpagessubmit": "Voch", - "allpages-hide-redirects": "Punornirdexonam lipoi", + "allpages-hide-redirects": "Punornirdexona lipoi", "categories": "Vorg", "sp-deletedcontributions-contribs": "iogdan", "linksearch-ns": "Nanv-tholl:", @@ -737,9 +737,9 @@ "watch": "Nodor dovor", "watchthispage": "Hea panar dixtt dovor", "unwatch": "Nodor kadd", - "watchlist-details": "Tujea Sadurvollerint {{PLURAL:$1|$1 pan asa|$1 panam asat}} (te-bhair ulovpachim panam asat).", + "watchlist-details": "Tujea Sadurvollerint {{PLURAL:$1|$1 pan asa|$1 panam asat}} (tea-bhair ulovpachim panam asat).", "wlheader-showupdated": "Tujea fatle bhette san bodol'lean tim panam '''datt''' dakhoileant.", - "wlnote": "Sokoil {{PLURAL:$1|ho nimanno bodol|hem nimanneo $1 bodol}} nimannea {{PLURAL:$2|horan|$2 horanim}}, $3, $4 porian.‎", + "wlnote": "Sokoil {{PLURAL:$1|ho nimanno bodol|hem nimanneo $1 bodol}} nimannea {{PLURAL:$2|voran|$2 voramni}}, $3, $4 porian.‎", "watchlist-options": "Sadurvollericheo poryay", "watching": "Disht dovortanv...", "unwatching": "Disht kaddthanv...", @@ -794,13 +794,13 @@ "linkshere": "Sokoilim panam $2 ak zoddtat:", "nolinkshere": "Khoincheim pan $2 ak zoddna.", "isredirect": "punornirdexon pan", - "istemplate": "Durasth-somaves", + "istemplate": "durasth-somaves", "isimage": "faylicho duvo", "whatlinkshere-prev": "{{PLURAL:$1|adlem|adlem $1}}", "whatlinkshere-next": "{{PLURAL:$1|fuddlem|fuddlim $1}}", "whatlinkshere-links": "← duve", - "whatlinkshere-hideredirs": "$1 punornirdexonam", - "whatlinkshere-hidetrans": "$1 durasth-somaveso", + "whatlinkshere-hideredirs": "$1 punornirdexona", + "whatlinkshere-hidetrans": "$1 durasth-somavex", "whatlinkshere-hidelinks": "$1 duve", "whatlinkshere-hideimages": "$1 faylinche duve", "whatlinkshere-filters": "Challnio", @@ -813,7 +813,7 @@ "contribslink": "yogdan", "blocklogpage": "addavnnechem sotr", "blocklogentry": "[[$1]] addailelem $2 asun vellacho ont: $3", - "reblock-logentry": "addavpachem bosovp bodol’lam [[$1]] hache khatir sompacho vell dilam $2 $3‎", + "reblock-logentry": "addavpachem bosovp bodol’lam [[$1]] hache khatir sompovpacho vell dila $2 $3‎", "block-log-flags-nocreate": "Khatem rochop opatr kelam", "proxyblocker": "Protinidhi-sirvidor addavpi‎", "move-page": "$1 haloi", @@ -833,7 +833,7 @@ "allmessagesdefault": "Default sondex mozkur", "thumbnail-more": "Vhodlem kor", "thumbnail_error": "Lhan-imaz toiar kortana chuk zali. Karonn: $1", - "importlogpage": "Aiatacho sotr", + "importlogpage": "Aiatachem sotr", "tooltip-pt-userpage": "{{GENDER:|Tujem vaporpeachem}} pan", "tooltip-pt-mytalk": "{{GENDER:|Tumchem}} bhasabhasachem pan", "tooltip-pt-preferences": "{{GENDER:|Tumcheo}} avddi", @@ -877,7 +877,7 @@ "tooltip-ca-nstab-special": "Hem ek kherit pan, ani hem bodlunk zaina", "tooltip-ca-nstab-project": "Prokolpachem pan polloi", "tooltip-ca-nstab-image": "Faylichem pan polloi", - "tooltip-ca-nstab-mediawiki": "Iontronacho sondex polloi", + "tooltip-ca-nstab-mediawiki": "Iontronnacho sondex polloi", "tooltip-ca-nstab-template": "Sancho polloi", "tooltip-ca-nstab-category": "Vorgachem pan polloi", "tooltip-minoredit": "Haka ek kirkoll sudharop mhunn khunnay", @@ -890,7 +890,7 @@ "tooltip-rollback": "\"Kovllop\" hea panak nimannea yogdan korpean kello (kelle) bodol eka kollant portota.", "tooltip-undo": "\"Rodd' kor\" sudharop portita ani sudharopak Zholok ritin ukodta. Tem saran karon zoddunk dita.", "tooltip-summary": "Mottvo sar ghal", - "simpleantispam-label": "Spam-virudh topasni.\nHem bhori nakai!", + "simpleantispam-label": "Spam-virudh topasnni.\nHem bhor nakai!", "pageinfo-title": "\"$1\" ‎khatir mhaiti", "pageinfo-header-basic": "Mull mhaiti‎", "pageinfo-header-edits": "Bodolacho itihas", @@ -898,11 +898,11 @@ "pageinfo-header-properties": "Panache gunndhorm", "pageinfo-display-title": "Manddlolem mathallem", "pageinfo-default-sort": "Default arin manddunk chavi", - "pageinfo-length": "Panachi lambai (bayt-ant)‎", + "pageinfo-length": "Panachi lambai (baytt-ant)‎", "pageinfo-article-id": "Panacho ank", "pageinfo-language": "Panachea mozkurachi bhas", "pageinfo-content-model": "Panachea mozkuracho nomuno", - "pageinfo-robot-policy": "Robotam koddlean suchien ghalop", + "pageinfo-robot-policy": "Robotam koddlean suchent ghalop", "pageinfo-robot-index": "Porvangi asa", "pageinfo-robot-noindex": "Porvangi nam", "pageinfo-watchers": "Panacher dixtt dovortoleancho ankddo", @@ -924,7 +924,7 @@ "pageinfo-toolboxlink": "Panachi mahiti", "pageinfo-contentpage": "Ek mozkurachem pan koxem dhorpant ailam‎", "pageinfo-contentpage-yes": "Hoi", - "patrol-log-page": "Paro korpeacho sotr", + "patrol-log-page": "Paro korpachem sotr", "previousdiff": "← Adlo bodol", "nextdiff": "Fuddlem bodol →", "widthheightpage": "$1 × $2, $3 {{PLURAL:$3|pan|panam}}", @@ -956,9 +956,9 @@ "redirect": "Fayl, vaporpi, pan, uzollnni vo sotr ank‎ vorvim punornirdexon kor", "redirect-summary": "Hem vixex pan punornirdexit korta eka faylik (faylichem nanv dilear), eke panak (uziollnecho ank vo panacho ank dilear), ek vaporpeachem panak (eke vaporpeache ank dilear), vo ek sotr nond (sotrachem ank dilear). Vapor: [[{{#Special:Redirect}}/file/Dekhik.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], [[{{#Special:Redirect}}/user/101]], vo [[{{#Special:Redirect}}/logid/186]].", "redirect-submit": "Voch‎", - "redirect-lookup": "Suchien polloi:", + "redirect-lookup": "Suchint polloi:", "redirect-value": "Mol:", - "redirect-user": "Vaporpeacho ank", + "redirect-user": "Vaporpeancho ank", "redirect-page": "Panacho ank", "redirect-revision": "Panachi uzollnni", "redirect-file": "Faylichem nanv", @@ -974,12 +974,12 @@ "htmlform-title-not-exists": "$1 ostitvant na.", "logentry-delete-delete": "$1, hannem {{GENDER:$2|kadun udoile}} pan $3", "logentry-delete-restore": "$1 hannem {{GENDER:$2|porot haddlam}} pan $3 ($4)‎", - "logentry-delete-revision": "$1 hannem {{PLURAL:$5|uzolliechem}} disnem $3, hea panar {{GENDER:$2|bodol’la}}: $4‎", + "logentry-delete-revision": "$1 hannem {{PLURAL:$5|uzollnnechem}} disnnem $3, hea panar {{GENDER:$2|bodol’la}}: $4‎", "revdelete-content-hid": "mozkur lipoila", "logentry-move-move": "$1, hannem $3 panak $4 {{GENDER:$2|haloilea}}", "logentry-move-move-noredirect": "$1, hannem pan $3 savn $4 {{GENDER:$2|haloilam}} punornirdexon dorinastanam‎", "logentry-move-move_redir": "$1 hannem pan $3 savn $4 {{GENDER:$2|haloilolo}} punornirdexonavoir", - "logentry-patrol-patrol-auto": "$1-an $3, hea panachem $4, hea uzollniecho paro kelam mhonn apoap {{GENDER:$2|khunnailam}}.", + "logentry-patrol-patrol-auto": "$1-an $3, hea panachem $4, hea uzollnnecho paro kelam mhonn apoap {{GENDER:$2|khunnailam}}.", "logentry-newusers-create": "Vapurpeacho kont $1 {{GENDER:$2|rochlam}}", "logentry-newusers-autocreate": "Vaporpeachem khatem $1 apoap {{GENDER:$2|rochun}} ailem", "logentry-upload-upload": "$1-an $3 {{GENDER:$2|upload kela}}", diff --git a/languages/i18n/hr.json b/languages/i18n/hr.json index 94945ffbe9..d04622afcc 100644 --- a/languages/i18n/hr.json +++ b/languages/i18n/hr.json @@ -931,6 +931,7 @@ "diff-multi-manyusers": "({{PLURAL:$1|Nije prikazana jedna međuinačica|Nisu prikazane $1 međuinačice|Nije prikazano $1 međuinačica}} više od {{PLURAL:$2|jednog|$2|$2}} suradnika)", "difference-missing-revision": "{{PLURAL:$2|Uređivanje|$2 uređivanja}} sljedeće šifre ($1) ne {{PLURAL:$2|postoji|postoje}}.\n\nOvo je obično uzrokovano kada kliknete na zastarjelu poveznicu na stranice koja je obrisana.\nViše informacija možete pronaći u [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} evidenciji brisanja].", "searchresults": "Rezultati pretrage", + "search-filter-title-prefix": "Pretraži samo stranice koje počinju prefiksom »$1«", "searchresults-title": "Rezultati pretrage za \"$1\"", "titlematches": "Pronađene stranice prema naslovu", "textmatches": "Pronađene stranice prema tekstu članka", diff --git a/languages/i18n/ja.json b/languages/i18n/ja.json index 8d7fdc17b6..8bd7bc052e 100644 --- a/languages/i18n/ja.json +++ b/languages/i18n/ja.json @@ -2419,9 +2419,9 @@ "sessionfailure": "ログインのセッションに問題が発生しました。\nセッション乗っ取りを防ぐため、操作を取り消しました。\nフォームを再送信してください。", "changecontentmodel": "ページのコンテンツ・モデルの変更", "changecontentmodel-legend": "コンテンツモデルを変更", - "changecontentmodel-title-label": "ページ名", + "changecontentmodel-title-label": "ページ名:", "changecontentmodel-current-label": "現在のコンテンツモデル", - "changecontentmodel-model-label": "新しい コンテンツ モデル", + "changecontentmodel-model-label": "新しい コンテンツ モデル:", "changecontentmodel-reason-label": "理由:", "changecontentmodel-submit": "変更", "changecontentmodel-success-title": "コンテンツ・モデルは変更されました", diff --git a/languages/i18n/mk.json b/languages/i18n/mk.json index e63cd39aee..410e3abded 100644 --- a/languages/i18n/mk.json +++ b/languages/i18n/mk.json @@ -816,6 +816,7 @@ "undo-norev": "Измената не можеше да биде вратена бидејќи не постои или била избришана.", "undo-nochange": "Се чини дека измената (уредувањето) е веќе вратена.", "undo-summary": "Откажано уредувањето $1 на уредникот [[Special:Contribs/$2|$2]] ([[User talk:$2|разговор]])", + "undo-summary-anon": "Отповикај ја преработката $1 на [[Special:Contributions/$2|$2]]", "undo-summary-username-hidden": "Поништи ја преработката $1 на скриен корисник", "cantcreateaccount-text": "Создавањето на корисничка сметка од оваа IP-адреса ($1) е блокирано од страна на [[User:$3|$3]].\n\nОбразложението дадено од страна на $3 е $2", "cantcreateaccount-range-text": "Создавањето на сметки од IP-адреси во опсегот $1 каде спаѓа вашата IP-адреса ($4) е блокирано од корисникот [[User:$3|$3]].\n\n$3 ја наведе следнава причина: $2", @@ -2332,7 +2333,8 @@ "cantrollback": "Уредувањето не може да се отповика.\nПоследниот уредник е воедно и единствениот автор на страницата.", "alreadyrolled": "Не може да се отповика последното уредување на страницата „[[:$1]]“ извршено од [[User:$2|$2]] ([[User talk:$2|разговор]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]);\nнекој друг веќе ја изменил или отповикал страницата.\n\nПоследното уредување го изврши [[User:$3|$3]] ([[User talk:$3|разговор]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).", "editcomment": "Коментарот на уредувањето беше: $1.", - "revertpage": "Отстрането уредувањето на [[Special:Contributions/$2|$2]] ([[User talk:$2|разговор]]), вратено на последната верзија на [[User:$1|$1]]", + "revertpage": "Отповикани уредувањата на [[Special:Contributions/$2|$2]] ([[User talk:$2|разговор]]), враќајќи на последната преработка на [[User:$1|$1]]", + "revertpage-anon": "Отповикани уредувања на [[Special:Contributions/$2|$2]], враќајќи на последната преработка на [[User:$1|$1]]", "revertpage-nouser": "Вратени уредувања од скриен корисник на последната преработка на {{GENDER:$1|[[User:$1|$1]]}}", "rollback-success": "Откажани уредувањата на {{GENDER:$3|$1}};\nвратено на последната верзија на {{GENDER:$4|$2}}.", "sessionfailure-title": "Седницата не успеа", diff --git a/languages/i18n/pl.json b/languages/i18n/pl.json index 25d7bf1063..04fec53574 100644 --- a/languages/i18n/pl.json +++ b/languages/i18n/pl.json @@ -101,7 +101,8 @@ "Railfail536", "Vlad5250", "CiaPan", - "BadDog" + "BadDog", + "Rail" ] }, "tog-underline": "Podkreślenie linków:", diff --git a/languages/i18n/qqq.json b/languages/i18n/qqq.json index 478a52eb77..4061556438 100644 --- a/languages/i18n/qqq.json +++ b/languages/i18n/qqq.json @@ -257,6 +257,7 @@ "tog-useeditwarning": "Used as label for the checkbox in [[Special:Preferences#mw-prefsection-editing|Special:Preferences]].", "tog-prefershttps": "Toggle option used in [[Special:Preferences]] that indicates if the user wants to use a secure connection when logged in", "tog-showrollbackconfirmation": "Toggle option used in [[Special:Preferences]] to enable/disable rollback confirmation prompt. Should be visible only to users with rollback rights.", + "tog-requireemail": "Toggle option used in [[Special:Preferences]]. Should be only visible to users who have confirmed their email address.\n\nSee also: {{msg-mw|prefs-help-requireemail}}", "underline-always": "Used in [[Special:Preferences#mw-prefsection-rendering|Preferences]].\n\nThis option means \"always underline links\", there are also options {{msg-mw|Underline-never}} and {{msg-mw|Underline-default}}.\n\n{{Gender}}\n{{Identical|Always}}", "underline-never": "Used in [[Special:Preferences#mw-prefsection-rendering|Preferences]].\n\nThis option means \"never underline links\", there are also options {{msg-mw|Underline-always}} and {{msg-mw|Underline-default}}.\n\n{{Gender}}\n{{Identical|Never}}", "underline-default": "Used in [[Special:Preferences#mw-prefsection-rendering|Preferences]].\n\nThis option means \"underline links as in your user skin or your browser\", there are also options {{msg-mw|Underline-never}} and {{msg-mw|Underline-always}}.\n\n{{Gender}}\n{{Identical|Browser default}}", @@ -1362,6 +1363,7 @@ "prefs-help-email": "Shown as explanation text on [[Special:Preferences]] > {{int:prefs-personal}} > {{int:email}}.\n\nSee also:\n* {{msg-mw|prefs-help-email-required|help}}\n* {{msg-mw|prefs-help-email-others|help}}\n* {{msg-mw|prefs-changeemail|link title}}\n* {{msg-mw|prefs-setemail|link title}}", "prefs-help-email-others": "This text is shown on account creation, below the description of the e-mail address field (which is optional).\n\nSee also:\n* {{msg-mw|prefs-help-email-required|help}}\n* {{msg-mw|prefs-help-email|help}}\n* {{msg-mw|prefs-changeemail|link title}}\n* {{msg-mw|prefs-setemail|link title}}", "prefs-help-email-required": "Shown as explanation text on [[Special:Preferences]] > {{int:prefs-personal}} > {{int:email}}.\n\nSee also:\n* {{msg-mw|prefs-help-email|help}}\n* {{msg-mw|prefs-help-email-others|help}}\n* {{msg-mw|prefs-changeemail|link title}}\n* {{msg-mw|prefs-setemail|link title}}", + "prefs-help-requireemail": "Shown as explanation text on [[Special:Preferences]] > {{int:prefs-personal}} > {{int:email}}.\n\nSee also: {{msg-mw|tog-requireemail}}", "prefs-info": "Header for the box giving basic information on the user account, displayed on the 'user profile' tab of the [[Special:Preferences|user preferences]] special page.\n{{Identical|Basic information}}", "prefs-i18n": "Field set legend for user preferences regarding the interface language", "prefs-signature": "{{Identical|Signature}}", diff --git a/languages/i18n/sv.json b/languages/i18n/sv.json index 5fe33ce23d..dcc686b910 100644 --- a/languages/i18n/sv.json +++ b/languages/i18n/sv.json @@ -869,6 +869,7 @@ "undo-norev": "Redigeringen kan inte göras ogjord eftersom den inte finns eller har raderats.", "undo-nochange": "Det verkar som att redigeringen redan har blivit ogjord.", "undo-summary": "Gör version $1 av [[Special:Contributions/$2|$2]] ([[User talk:$2|diskussion]]) ogjord", + "undo-summary-anon": "Ångra sidversionen $1 av [[Special:Contributions/$2|$2]]", "undo-summary-username-hidden": "Gör version $1 av en dold användare ogjord", "cantcreateaccount-text": "[[User:$3|$3]] har blockerat den här IP-adressen ('''$1''') från att registrera konton.\n\nAnledningen till blockeringen var \"$2\".", "cantcreateaccount-range-text": "IP-adresserna i intervallet $1, som inkluderar din IP-adress ($4), har blockerats från att skapa konton av [[User:$3|$3]].\n\nAnledningen enligt $3 var $2", @@ -2383,6 +2384,7 @@ "alreadyrolled": "Det gick inte att rulla tillbaka den senaste redigeringen av [[User:$2|$2]] ([[User talk:$2|diskussion]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) på sidan [[:$1|$1]]. Någon annan har redan rullat tillbaka eller redigerat sidan.\n\nSidan ändrades senast av [[User:$3|$3]] ([[User talk:$3|diskussion]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]).", "editcomment": "Redigeringskommentaren var: $1.", "revertpage": "Återställde redigeringar av [[Special:Contributions/$2|$2]] ([[User talk:$2|användardiskussion]]) till senaste versionen av [[User:$1|$1]]", + "revertpage-anon": "Ångrade redigeringar av [[Special:Contributions/$2|$2]] till senaste sidversionen av [[User:$1|$1]]", "revertpage-nouser": "Återställde redigeringar av en dold användare till den senaste versionen av {{GENDER:$1|[[User:$1|$1]]}}", "rollback-success": "Återställde ändringar av {{GENDER:$3|$1}};\nändrade tillbaka till senaste versionen av {{GENDER:$4|$2}}.", "sessionfailure-title": "Sessionsfel", diff --git a/languages/i18n/szl.json b/languages/i18n/szl.json index cd35ab2e2e..8446ebd584 100644 --- a/languages/i18n/szl.json +++ b/languages/i18n/szl.json @@ -154,7 +154,7 @@ "morenotlisted": "Ńy je to kůmplytno lista", "mypage": "Zajta", "mytalk": "Dyskusyjŏ", - "anontalk": "Godka tygo IP", + "anontalk": "Dyskusyjŏ", "navigation": "Nawigacyjŏ", "and": " i", "faq": "FAQ", @@ -342,7 +342,7 @@ "filereadonlyerror": "Ńy idźe pomjyńać plika \"$1\" abo repozytorjum \"$2\" terozki je zawarte.\n\nAdministrator kery zawarł wćepał kůmyntorz: \"$3\".", "invalidtitle-knownnamespace": "Felerne mjano \"$3\" w przestrzeńy \"$2\".", "invalidtitle-unknownnamespace": "Felerne mjano ze ńyznomům nůmerům raumu mjan $1: \"$2\"", - "exception-nologin": "Ńy jest żeś zalogůwany", + "exception-nologin": "Niy je żeś wlogowany(ŏ)", "exception-nologin-text": "Prosza [[Special:Userlogin|zaloguj śe]] coby mjeć mogebność przejśćo do tyj zajty abo akcyji.", "virus-badscanner": "Felerno konfiguracyjo – ńyznany skaner antywirusowy ''$1''", "virus-scanfailed": "skanowańy ńyudone (feler $1)", @@ -456,7 +456,7 @@ "changepassword-success": "Twoje hasło zostoło půmyślńy půmjyńone!", "botpasswords": "Hasła bota", "resetpass_forbidden": "Ńy idźe sam půmjyńyć hasłůw.", - "resetpass-no-info": "Muśisz być zalogowany, coby uzyskoć bezpostrzedńi dostymp do tyj zajty.", + "resetpass-no-info": "Żeby mieć bezpostrzedni dostymp do tyj strōny, trzeba sie zalogować.", "resetpass-submit-loggedin": "Zmjyń hasło", "resetpass-submit-cancel": "Uodćepej", "resetpass-wrong-oldpass": "Felerne tymczasowe abo aktualne hasło.\nMożliwe co właśńy zmjyńiłżeś swoje hasło abo poprosiłżeś uo nowe tymczasowe hasło.", @@ -506,7 +506,7 @@ "showpreview": "Pokŏż podglōnd", "showdiff": "Pokŏż zmiany", "anoneditwarning": "Pozōr: Niy je żeś wlogowany(ŏ). Jak zrobisz jakeś zmiany, to Twoja adresa IP bydzie publicznie widać. Jeźli [$1 sie wlogujesz] abo [$2 stworzisz kōnto], to Twoje zmiany bydōm przipisane do kōnta społym ze inkszymi profitami.", - "anonpreviewwarning": "Ńy jeżeś zalogowany. Twój IP ausdruk uostańy spamjyntany, eli ty bydźesz sprowjać zajte.", + "anonpreviewwarning": "Niy je żeś wlogowany(ŏ). Spamiyntanie zmian zapisze twoja adresa IP we historyji edycyji tyj strōny.", "missingsummary": "'''Pozůr:''' Ńy wprowadźůł żeś uopisu pomjyńań. Kej go ńy chcesz wprowadzać, naćiś knefel Spamjyntej jeszcze roz.", "missingcommenttext": "Wkludź kōmyntŏrz niżyj.", "missingcommentheader": "'''Dej pozůr:''' Treść nagłůwka je blank - uzupełńij go! Jeli tego ńy zrobisz, Twůj kůmyntorz bydźe naszkryflony bez nagłůwka.", @@ -1014,7 +1014,7 @@ "upload": "Zaladuj zbiōr", "uploadbtn": "Prziślij zbiōr", "reuploaddesc": "Nazod do formulařa uod wćepywańo.", - "uploadnologin": "Ńy jest žeś zalogůwany", + "uploadnologin": "Niy je żeś wlogowany(ŏ)", "uploadnologintext": "Muśyš śe [[Special:UserLogin|zalůgować]] ńim wćepńeš pliki.", "upload_directory_missing": "Katalog lo wćepywanych plikůw ($1) ńy istńeje a serwer WWW ńy poradźi go utwořić.", "upload_directory_read_only": "Serwer ńy može škryflać do katalůgu ($1) kery je přeznačůny na wćepywane pliki.", @@ -1273,7 +1273,7 @@ "linksearch-text": "Idźe użyć symbola wjeloznacznygo „*”. Lů bajszpila „*.wikipedia.org” spowoduje sznupańy za wszyjstkimi linkůma kere prowadzům ku důmyńy „wikipedia.org” a jeij poddůmyn.
\nUobsůgiwane protokoły: $1", "linksearch-line": "$1 link na zajće $2", "linksearch-error": "Symbola wjeloznacznygo idźe użyć yno na anfangu mjana hosta.", - "listusersfrom": "Pokaž užytkowńikůw začynojůnc uod:", + "listusersfrom": "Pokŏż używŏczōw ôd:", "listusers-submit": "Uobejrzij", "listusers-noresult": "Ńy znejdźůno žodnygo užytkowńika.", "activeusers": "Lista aktywnych używŏczōw", @@ -1322,7 +1322,7 @@ "watchlistfor2": "{{GENDER:$1|Używŏcza|Używŏczki}} $1 $2", "nowatchlist": "Ńy ma žodnych pozycyji na liśće zajtůw, na kere dowoš pozůr.", "watchlistanontext": "$1 coby uobejřeć abo sprowjać elymynty listy zajtůw, na kere dowoš pozůr", - "watchnologin": "Ńy jest žeś zalůgowany", + "watchnologin": "Niy je żeś wlogowany(ŏ)", "addedwatchtext": "Zajta \"[[:$1]]\" zostoua dodano do Twojij [[Special:Watchlist|listy artiklůw, na kere dowoš pozůr]].\nNa tyi liśće bydźeš mjou rejer přišuych sprowjyń tyi zajty i jeji zajty godki, a mjano zajty bydźeš mjou škryflane '''tustym''' na [[Special:RecentChanges|liśće půmjyńanych na ůostatku]], cobyś mjou wygoda w jei pomjyńańa filować.", "removedwatchtext": "Artikel \"[[:$1]]\" zostou wyćepńjynty s [[Special:Watchlist|Twojij pozorlisty]].", "watch": "Ôbserwuj", @@ -1603,7 +1603,7 @@ "movepage-moved": "'''\"$1\" przećiśńjynto ku \"$2\"'''", "articleexists": "Artikel ze takym mjanym już je, abo mjano je złe.\nWybjer inksze mjano.", "cantmove-titleprotected": "Ńy możesz przećepnůńć zajty, beztuż co jeij nowe mjano je ńydozwolůne skuli zabezpjeczyńo przed utworzyńym", - "movetalk": "Przećiś godke, jak możno.", + "movetalk": "Przeniyś zwiōnzanõ ze strōnōm dyskusyjõ", "move-subpages": "Přećepńij podzajty", "move-talk-subpages": "Jeli je to możliwe przekludź wszyjstke zajty godki podzajtůw", "movepage-page-exists": "Zajta $1 już istńeje a ńy idźe jeij autůmatyczńy nadszkryflać.", diff --git a/languages/i18n/tt-cyrl.json b/languages/i18n/tt-cyrl.json index 16310ebd58..bda0a4f001 100644 --- a/languages/i18n/tt-cyrl.json +++ b/languages/i18n/tt-cyrl.json @@ -1008,9 +1008,9 @@ "grouppage-suppress": "{{ns:project}}:Назирләр", "right-read": "Битләрне карау", "right-edit": "Битләрне үзгәртү", - "right-createpage": "битләр ясау (бәхәс булмаганнарын)", - "right-createtalk": "бәхәс битен ясау", - "right-createaccount": "яңа кулланучы хисап язмасын ясау", + "right-createpage": "Битләрне төзү (бәхәс битләре булмаган)", + "right-createtalk": "Бәхәс битләрен төзү", + "right-createaccount": "Яңа кулланучы хисап язмасын төзү", "right-minoredit": "\"кече төзәтмә\" тамгасын кую", "right-move": "Битләрне күчерү", "right-move-subpages": "Битләрне асбитләр белән бергә күчерү", diff --git a/languages/i18n/zh-hant.json b/languages/i18n/zh-hant.json index 208449b812..c2cd05bedd 100644 --- a/languages/i18n/zh-hant.json +++ b/languages/i18n/zh-hant.json @@ -2405,7 +2405,7 @@ "editcomment": "編輯摘要為:$1。", "revertpage": "已還原[[Special:Contributions/$2|$2]]([[User talk:$2|討論]])的編輯至最後由[[User:$1|$1]]所修訂的版本", "revertpage-nouser": "已還原隱藏使用者的編輯為最後 {{GENDER:$1|[[User:$1|$1]]}} 修訂的版本", - "rollback-success": "已還原 {{GENDER:$3|$1}} 所做的編輯;\n變更回由 {{GENDER:$4|$2}} 修訂的最後一個版本。", + "rollback-success": "已還原{{GENDER:$3|$1}}所做的編輯;變更回由{{GENDER:$4|$2}}修訂的最後一個版本。", "sessionfailure-title": "連線階段失敗", "sessionfailure": "您的登入連線階段似乎有問題,為了預防連線階段受到劫持攻擊,此動作已經被取消。請重新提交表單。", "changecontentmodel": "變更頁面的內容模型", diff --git a/maintenance/storage/blobs.sql b/maintenance/storage/blobs.sql index 979e68a94e..e3c6c02bc3 100644 --- a/maintenance/storage/blobs.sql +++ b/maintenance/storage/blobs.sql @@ -1,6 +1,6 @@ -- Blobs table for external storage -CREATE TABLE /*$wgDBprefix*/blobs ( +CREATE TABLE IF NOT EXISTS /*$wgDBprefix*/blobs ( blob_id integer UNSIGNED NOT NULL AUTO_INCREMENT, blob_text longblob, PRIMARY KEY (blob_id) diff --git a/maintenance/storage/checkStorage.php b/maintenance/storage/checkStorage.php index 060f32768d..37625cf2f0 100644 --- a/maintenance/storage/checkStorage.php +++ b/maintenance/storage/checkStorage.php @@ -232,7 +232,7 @@ class CheckStorage { } foreach ( $externalConcatBlobs as $cluster => $xBlobIds ) { $blobIds = array_keys( $xBlobIds ); - $extDb =& $this->dbStore->getSlave( $cluster ); + $extDb =& $this->dbStore->getReplica( $cluster ); $blobsTable = $this->dbStore->getTable( $extDb ); $res = $extDb->select( $blobsTable, [ 'blob_id' ], @@ -433,7 +433,7 @@ class CheckStorage { foreach ( $externalConcatBlobs as $cluster => $oldIds ) { $blobIds = array_keys( $oldIds ); - $extDb =& $this->dbStore->getSlave( $cluster ); + $extDb =& $this->dbStore->getReplica( $cluster ); $blobsTable = $this->dbStore->getTable( $extDb ); $headerLength = strlen( self::CONCAT_HEADER ); $res = $extDb->select( $blobsTable, diff --git a/maintenance/userOptions.php b/maintenance/userOptions.php index 98f1c24a86..2f8941f3da 100644 --- a/maintenance/userOptions.php +++ b/maintenance/userOptions.php @@ -110,11 +110,10 @@ The new option is NOT validated.' ); $ret[$option][$userValue] = ( $ret[$option][$userValue] ?? 0 ) + 1; } } else { - foreach ( $defaultOptions as $name => $defaultValue ) { $userValue = $user->getOption( $name ); if ( $userValue != $defaultValue ) { - $ret[$option][$userValue] = ( $ret[$option][$userValue] ?? 0 ) + 1; + $ret[$name][$userValue] = ( $ret[$name][$userValue] ?? 0 ) + 1; } } } diff --git a/tests/phpunit/includes/session/SessionManagerTest.php b/tests/phpunit/includes/session/SessionManagerTest.php index cd0867d2ef..b2f525d741 100644 --- a/tests/phpunit/includes/session/SessionManagerTest.php +++ b/tests/phpunit/includes/session/SessionManagerTest.php @@ -259,14 +259,14 @@ class SessionManagerTest extends MediaWikiTestCase { try { $manager->getSessionForRequest( $request ); $this->fail( 'Expcected exception not thrown' ); - } catch ( \OverflowException $ex ) { + } catch ( SessionOverflowException $ex ) { $this->assertStringStartsWith( 'Multiple sessions for this request tied for top priority: ', $ex->getMessage() ); - $this->assertCount( 2, $ex->sessionInfos ); - $this->assertContains( $request->info1, $ex->sessionInfos ); - $this->assertContains( $request->info2, $ex->sessionInfos ); + $this->assertCount( 2, $ex->getSessionInfos() ); + $this->assertContains( $request->info1, $ex->getSessionInfos() ); + $this->assertContains( $request->info2, $ex->getSessionInfos() ); } $this->assertFalse( $request->unpersist1 ); $this->assertFalse( $request->unpersist2 );