Merge "RCFilters: Fix saved filter name truncation for Firefox"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Fri, 22 Jun 2018 19:09:35 +0000 (19:09 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Fri, 22 Jun 2018 19:09:35 +0000 (19:09 +0000)
51 files changed:
docs/hooks.txt
includes/MediaWikiServices.php
includes/ServiceWiring.php
includes/Storage/PageUpdater.php
includes/api/i18n/ar.json
includes/api/i18n/de.json
includes/api/i18n/fr.json
includes/api/i18n/he.json
includes/api/i18n/nl.json
includes/api/i18n/zh-hans.json
includes/changetags/ChangeTags.php
includes/installer/WebInstaller.php
includes/installer/WebInstallerLanguage.php
includes/libs/Xhprof.php
includes/page/Article.php
includes/page/WikiPage.php
includes/profiler/ProfilerXhprof.php
includes/specials/SpecialUserrights.php
languages/LanguageConverter.php
languages/classes/LanguageEn.php
languages/i18n/ar.json
languages/i18n/bar.json
languages/i18n/be-tarask.json
languages/i18n/de.json
languages/i18n/el.json
languages/i18n/es.json
languages/i18n/eu.json
languages/i18n/fr.json
languages/i18n/got.json
languages/i18n/he.json
languages/i18n/hr.json
languages/i18n/inh.json
languages/i18n/io.json
languages/i18n/it.json
languages/i18n/lfn.json
languages/i18n/mk.json
languages/i18n/nds-nl.json
languages/i18n/sr-ec.json
languages/i18n/sr-el.json
languages/i18n/sv.json
languages/i18n/te.json
languages/i18n/zgh.json
languages/i18n/zh-hans.json
languages/i18n/zh-hant.json
languages/messages/MessagesAb.php
resources/src/mediawiki.rcfilters/styles/mw.rcfilters.less
resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.WatchlistTopSectionWidget.less
tests/phpunit/includes/MediaWikiServicesTest.php
tests/phpunit/includes/Storage/PageUpdaterTest.php
tests/phpunit/includes/changetags/ChangeTagsTest.php
tests/phpunit/includes/libs/XhprofTest.php

index b452b94..708456c 100644 (file)
@@ -2394,7 +2394,9 @@ $row: the database row for this page (the recentchanges record and a few extras
 edit.
 $wikiPage: the WikiPage edited
 $rev: the new revision
-$baseID: the revision ID this was based off, if any
+$originalRevId: if the edit restores or repeats an earlier revision (such as a
+  rollback or a null revision), the ID of that earlier revision. False otherwise.
+  (Used to be called $baseID.)
 $user: the editing user
 &$tags: tags to apply to the edit and recent change
 
@@ -2502,7 +2504,9 @@ $flags: Flags passed to WikiPage::doEditContent()
 $revision: New Revision of the article (can be null for edits that change
   nothing)
 $status: Status object about to be returned by doEditContent()
-$baseRevId: the rev ID (or false) this edit was based on
+$originalRevId: if the edit restores or repeats an earlier revision (such as a
+  rollback or a null revision), the ID of that earlier revision. False otherwise.
+  (Used to be called $baseRevId.)
 $undidRevId: the rev ID (or 0) this edit undid
 
 'PageHistoryBeforeList': When a history page list is about to be constructed.
index dbb18a7..ac15574 100644 (file)
@@ -789,6 +789,14 @@ class MediaWikiServices extends ServiceContainer {
                return $this->getService( 'SlotRoleStore' );
        }
 
+       /**
+        * @since 1.32
+        * @return NameTableStore
+        */
+       public function getChangeTagDefStore() {
+               return $this->getService( 'ChangeTagDefStore' );
+       }
+
        /**
         * @since 1.31
         * @return PreferencesFactory
index 379424c..425b789 100644 (file)
@@ -540,6 +540,24 @@ return [
                );
        },
 
+       'ChangeTagDefStore' => function ( MediaWikiServices $services ) {
+               return new NameTableStore(
+                       $services->getDBLoadBalancer(),
+                       $services->getMainWANObjectCache(),
+                       LoggerFactory::getInstance( 'NameTableSqlStore' ),
+                       'change_tag_def',
+                       'ctd_id',
+                       'ctd_name',
+                       null,
+                       false,
+                       function ( $insertFields ) {
+                               $insertFields['ctd_user_defined'] = 0;
+                               $insertFields['ctd_count'] = 0;
+                               return $insertFields;
+                       }
+               );
+       },
+
        'PreferencesFactory' => function ( MediaWikiServices $services ) {
                global $wgContLang;
                $authManager = AuthManager::singleton();
index 10caac4..7900210 100644 (file)
@@ -112,15 +112,9 @@ class PageUpdater {
        private $ajaxEditStash = true;
 
        /**
-        * The ID of the logical base revision the content of the new revision is based on.
-        * Not to be confused with the immediate parent revision (the current revision before the
-        * new revision is created).
-        * The base revision is the last revision known to the client, while the parent revision
-        * is determined on the server by grabParentRevision().
-        *
         * @var bool|int
         */
-       private $baseRevId = false;
+       private $originalRevId = false;
 
        /**
         * @var array
@@ -247,19 +241,19 @@ class PageUpdater {
        }
 
        /**
-        * Checks whether this update conflicts with another update performed since the specified base
-        * revision. A user level "edit conflict" is detected when the base revision known to the client
-        * and specified via setBaseRevisionId() is not the ID of the current revision before the
-        * update. If setBaseRevisionId() was not called, this method always returns false.
+        * Checks whether this update conflicts with another update performed between the client
+        * loading data to prepare an edit, and the client committing the edit. This is intended to
+        * detect user level "edit conflict" when the latest revision known to the client
+        * is no longer the current revision when processing the update.
         *
-        * Note that an update expected to be based on a non-existing page will have base revision ID 0,
-        * and is considered to have a conflict if a current revision exists (that is, the page was
-        * created since the base revision was determined by the client).
+        * An update expected to create a new page can be checked by setting $expectedParentRevision = 0.
+        * Such an update is considered to have a conflict if a current revision exists (that is,
+        * the page was created since the edit was initiated on the client).
         *
         * This method returning true indicates to calling code that edit conflict resolution should
         * be applied before saving any data. It does not prevent the update from being performed, and
         * it should not be confused with a "late" conflict indicated by the "edit-conflict" status.
-        * A "late" conflict is a CAS failure caused by an update being performed concurrently, between
+        * A "late" conflict is a CAS failure caused by an update being performed concurrently between
         * the time grabParentRevision() was called and the time saveRevision() trying to insert the
         * new revision.
         *
@@ -269,22 +263,21 @@ class PageUpdater {
         * for the update to be fixed to the page's current revision at this point in time.
         * It acts as a compare-and-swap (CAS) token in that it is guaranteed that saveRevision()
         * will fail with the "edit-conflict" status if the current revision of the page changes after
-        * hasEditConflict() was called and before saveRevision() could insert a new revision.
+        * hasEditConflict() (or grabParentRevision()) was called and before saveRevision() could insert
+        * a new revision.
         *
         * @see grabParentRevision()
         *
+        * @param int $expectedParentRevision The ID of the revision the client expects to be the
+        *        current one. Use 0 to indicate that the page is expected to not yet exist.
+        *
         * @return bool
         */
-       public function hasEditConflict() {
-               $baseId = $this->getBaseRevisionId();
-               if ( $baseId === false ) {
-                       return false;
-               }
-
+       public function hasEditConflict( $expectedParentRevision ) {
                $parent = $this->grabParentRevision();
                $parentId = $parent ? $parent->getId() : 0;
 
-               return $parentId !== $baseId;
+               return $parentId !== $expectedParentRevision;
        }
 
        /**
@@ -328,18 +321,13 @@ class PageUpdater {
 
        /**
         * Check flags and add EDIT_NEW or EDIT_UPDATE to them as needed.
-        * This also performs sanity checks against the base revision specified via setBaseRevisionId().
         *
         * @param int $flags
         * @return int Updated $flags
         */
        private function checkFlags( $flags ) {
                if ( !( $flags & EDIT_NEW ) && !( $flags & EDIT_UPDATE ) ) {
-                       if ( $this->baseRevId === false ) {
-                               $flags |= ( $this->derivedDataUpdater->pageExisted() ) ? EDIT_UPDATE : EDIT_NEW;
-                       } else {
-                               $flags |= ( $this->baseRevId > 0 ) ? EDIT_UPDATE : EDIT_NEW;
-                       }
+                       $flags |= ( $this->derivedDataUpdater->pageExisted() ) ? EDIT_UPDATE : EDIT_NEW;
                }
 
                return $flags;
@@ -398,37 +386,29 @@ class PageUpdater {
        }
 
        /**
-        * Returns the ID of the logical base revision of the update. Not to be confused with the
-        * immediate parent revision. The base revision is set via setBaseRevisionId(),
-        * the parent revision is determined by grabParentRevision().
+        * Returns the ID of an earlier revision that is being repeated or restored by this update.
         *
-        * Application may use this information to detect user level edit conflicts. Edit conflicts
-        * can be resolved by performing a 3-way merge, using the revision returned by this method as
-        * the common base of the conflicting revisions, namely the new revision being saved,
-        * and the revision returned by grabParentRevision().
-        *
-        * @return bool|int The ID of the base revision, 0 if the base is a non-existing page, false
-        *         if no base revision was specified.
+        * @return bool|int The original revision id, or false if no earlier revision is known to be
+        * repeated or restored by this update.
         */
-       public function getBaseRevisionId() {
-               return $this->baseRevId;
+       public function getOriginalRevisionId() {
+               return $this->originalRevId;
        }
 
        /**
-        * Sets the ID of the revision the content of this update is based on, if any.
-        * The base revision ID is not to be confused with the new revision's parent revision:
-        * the parent revision is the page's current revision immediately before the new revision
-        * is created; the base revision indicates what revision the client based the content of
-        * the new revision on. If base revision and parent revision are not the same, the update is
-        * considered to require edit conflict resolution.
+        * Sets the ID of an earlier revision that is being repeated or restored by this update.
+        * The new revision is expected to have the exact same content as the given original revision.
+        * This is used with rollbacks and with dummy "null" revisions which are created to record
+        * things like page moves.
+        *
+        * This value is passed to the PageContentSaveComplete and NewRevisionFromEditComplete hooks.
         *
-        * @param int|bool $baseRevId The ID of the base revision, or 0 if the update is expected to be
-        *        performed on a non-existing page. false can be used to indicate that the caller
-        *        doesn't care about the base revision.
+        * @param int|bool $originalRevId The original revision id, or false if no earlier revision
+        * is known to be repeated or restored by this update.
         */
-       public function setBaseRevisionId( $baseRevId ) {
-               Assert::parameterType( 'integer|boolean', $baseRevId, '$baseRevId' );
-               $this->baseRevId = $baseRevId;
+       public function setOriginalRevisionId( $originalRevId ) {
+               Assert::parameterType( 'integer|boolean', $originalRevId, '$originalRevId' );
+               $this->originalRevId = $originalRevId;
        }
 
        /**
@@ -589,10 +569,9 @@ class PageUpdater {
         * changes after grabParentRevision() was called and before saveRevision() can insert
         * a new revision, as per the CAS mechanism described above.
         *
-        * However, the actual parent revision is allowed to be different from the revision set
-        * with setBaseRevisionId(). The caller is responsible for checking this via
-        * hasEditConflict() and adjusting the content of the new revision accordingly,
-        * using a 3-way-merge if desired.
+        * The caller is however responsible for calling hasEditConflict() to detect a
+        * user-level edit conflict, and to adjust the content of the new revision accordingly,
+        * e.g. by using a 3-way-merge.
         *
         * MCR migration note: this replaces WikiPage::doEditContent. Callers that change to using
         * saveRevision() now need to check the "minoredit" themselves before using EDIT_MINOR.
@@ -660,9 +639,7 @@ class PageUpdater {
                // NOTE: This grabs the parent revision as the CAS token, if grabParentRevision
                // wasn't called yet. If the page is modified by another process before we are done with
                // it, this method must fail (with status 'edit-conflict')!
-               // NOTE: The actual parent revision may be different from $this->baseRevisionId.
-               // The caller is responsible for checking this via hasEditConflict and adjusting the
-               // content of the new revision accordingly, using a 3-way-merge.
+               // NOTE: The parent revision may be different from $this->baseRevisionId.
                $this->grabParentRevision();
                $flags = $this->checkFlags( $flags );
 
@@ -987,7 +964,7 @@ class PageUpdater {
                        $tags = $this->computeEffectiveTags( $flags );
                        Hooks::run(
                                'NewRevisionFromEditComplete',
-                               [ $wikiPage, $newLegacyRevision, $this->baseRevId, $user, &$tags ]
+                               [ $wikiPage, $newLegacyRevision, $this->getOriginalRevisionId(), $user, &$tags ]
                        );
 
                        // Update recentchanges
@@ -1064,7 +1041,7 @@ class PageUpdater {
                                        // TODO: replace legacy hook!
                                        // TODO: avoid pass-by-reference, see T193950
                                        $params = [ &$wikiPage, &$user, $mainContent, $summary->text, $flags & EDIT_MINOR,
-                                               null, null, &$flags, $newLegacyRevision, &$status, $this->baseRevId,
+                                               null, null, &$flags, $newLegacyRevision, &$status, $this->getOriginalRevisionId(),
                                                $this->undidRevId ];
                                        Hooks::run( 'PageContentSaveComplete', $params );
                                }
@@ -1218,7 +1195,7 @@ class PageUpdater {
                                        Hooks::run( 'PageContentInsertComplete', $params );
                                        // Trigger post-save hook
                                        // TODO: replace legacy hook!
-                                       $params = array_merge( $params, [ &$status, $this->baseRevId, 0 ] );
+                                       $params = array_merge( $params, [ &$status, $this->getOriginalRevisionId(), 0 ] );
                                        Hooks::run( 'PageContentSaveComplete', $params );
                                }
                        ),
index 04eb2e7..4b4177f 100644 (file)
        "apihelp-expandtemplates-paramvalue-prop-properties": "خصائص الصفحة التي تحددها الكلمات السحرية الموسعة في نص الويكي.",
        "apihelp-expandtemplates-paramvalue-prop-volatile": "إذا كان الإخراج سريع التأثر، ينبغي عدم استخدامه في أي مكان آخر داخل الصفحة.",
        "apihelp-expandtemplates-paramvalue-prop-ttl": "الحد الأقصى للوقت الذي يجب بعده إبطال ذاكرة التخزين المؤقت للنتيجة.",
+       "apihelp-expandtemplates-paramvalue-prop-modules": "تتم إضافة أية وحدات ResourceLoader التي طلبت تعيين دالات المحلل اللغوي إلى الإخراج، يجب طلب <kbd>jsconfigvars</kbd> أو <kbd>encodedjsconfigvars</kbd> بشكل مشترك مع <kbd>modules</kbd>.",
        "apihelp-expandtemplates-paramvalue-prop-jsconfigvars": "يعطي متغيرات تكوين جافا سكريبت الخاصة بهذه الصفحة.",
        "apihelp-expandtemplates-paramvalue-prop-encodedjsconfigvars": "يعطي متغيرات تكوين جافا سكريبت الخاصة بهذه الصفحة كسلسلة JSON.",
        "apihelp-expandtemplates-paramvalue-prop-parsetree": "شجرة تحليل XML للمدخلات.",
        "apihelp-query+alldeletedrevisions-param-user": "إددراج المراجعات بواسطة هذا المستخدم فقط.",
        "apihelp-query+alldeletedrevisions-param-excludeuser": "لا تسرد المراجعات بواسطة هذا المستخدم.",
        "apihelp-query+alldeletedrevisions-param-namespace": "أدرج الصفحات  في هذا النطاق فقط.",
-       "apihelp-query+alldeletedrevisions-param-miser-user-namespace": "<strong>ملاحظة:</strong> بسبب [[mw:Special:MyLanguage/Manual:$wgMiserMode|وضع miser]]، باستخدام <var>$1user</var> و<var>$1namespace</var> معا قد يؤدي إلى نتائج أقل من <var>$1limit</var> نتائج التي يتم عرضها قبل المتابعة، في الحالات القصوى، قد يتم إرجاع صفر نتائج.",
+       "apihelp-query+alldeletedrevisions-param-miser-user-namespace": "<strong>ملاحظة:</strong> بسبب [[mw:Special:MyLanguage/Manual:$wgMiserMode|وضع miser]]استخدام <var>$1user</var> و<var>$1namespace</var> معا قد يؤدي إلى نتائج أقل من <var>$1limit</var> نتائج التي يتم عرضها قبل المتابعة، في الحالات القصوى، قد يتم إرجاع صفر نتائج.",
        "apihelp-query+alldeletedrevisions-param-generatetitles": "عندما يُستخدَم كمولد، ولد عناوين بدلا من معرفات المراجعات.",
        "apihelp-query+alldeletedrevisions-example-user": "اذكر آخر 50 مشاركة محذوفة بواسطة المستخدم <kbd>Example</kbd.",
        "apihelp-query+alldeletedrevisions-example-ns-main": "سرد أول 50 مراجعات محذوفة في النطاق الرئيسي.",
        "apihelp-query+filearchive-paramvalue-prop-archivename": "يضيف اسم ملف إصدار الأرشيف للإصدارات غير الأحدث.",
        "apihelp-query+filearchive-example-simple": "عرض قائمة بجميع الملفات المحذوفة.",
        "apihelp-query+filerepoinfo-summary": "إرجاع معلومات التعريف حول مستودعات الصور المكونة في الويكي.",
-       "apihelp-query+filerepoinfo-param-prop": "أي خصائص المستودع يمكن الحصول عليها (قد يكون هناك المزيد متاح في بعض الويكيات): \n;apiurl:مسار إلى API المستودع ، مفيد للحصول على معلومات الصورة من المضيف.\n;name: مفتاح المستودع، يُستخدَم على سبيل المثال في قيم عودة <var>[[mw:Special:MyLanguage/Manual:$wgForeignFileRepos|$wgForeignFileRepos]]</var> و[[Special:ApiHelp/query+imageinfo|معلومات الصورة]].",
+       "apihelp-query+filerepoinfo-param-prop": "أي خصائص المستودع للحصول عليها (قد يكون هناك المزيد متاح في بعض الويكيات).",
+       "apihelp-query+filerepoinfo-paramvalue-prop-apiurl": "مسار إلى API تطبيقات المستودع، مفيد في الحصول على معلومات الصورة من المضيف.",
+       "apihelp-query+filerepoinfo-paramvalue-prop-articlepath": "مستودع الويكي <var>[[mw:Special:MyLanguage/Manual:$wgArticlePath|$wgArticlePath]]</var> أو ما يعادله.",
+       "apihelp-query+filerepoinfo-paramvalue-prop-canUpload": "ما إذا كان يمكن رفع ملفات إلى هذا المستودع، على سبيل المثال عبر CORS والمصادقة المشتركة.",
+       "apihelp-query+filerepoinfo-paramvalue-prop-displayname": "اسم قابل للقراءة من قبل الإنسان في مستودع الويكي.",
+       "apihelp-query+filerepoinfo-paramvalue-prop-favicon": "مسار أيقونة المفضلة الخاصة بمستودع الويكي <var>[[mw:Special:MyLanguage/Manual:$wgFavicon|$wgFavicon]]</var>.",
+       "apihelp-query+filerepoinfo-paramvalue-prop-fetchDescription": "ما إذا تم جلب صفحات وصف الملفات من هذا المستودع عند عرض صفحات وصف الملف المحلية.",
+       "apihelp-query+filerepoinfo-paramvalue-prop-initialCapital": "ما إذا كانت أسماء الملفات تبدأ ضمنياً بحرف كبير.",
+       "apihelp-query+filerepoinfo-paramvalue-prop-local": "سواء كان هذا المستودع محليا أم لا.",
+       "apihelp-query+filerepoinfo-paramvalue-prop-name": "مفتاح المستودع، المستخدم على سبيل المثال في <var>[[mw:Special:MyLanguage/Manual:$wgForeignFileRepos|$wgForeignFileRepos]]</var> and [[Special:ApiHelp/query+imageinfo|imageinfo]] يعيد القيم.",
+       "apihelp-query+filerepoinfo-paramvalue-prop-rootUrl": "مسار مسار الجذر لمسارات الصورة.",
+       "apihelp-query+filerepoinfo-paramvalue-prop-scriptDirUrl": "مسار مسار الجذر لتثبيت ميدياويكي الخاص بمستودع الويكي.",
+       "apihelp-query+filerepoinfo-paramvalue-prop-server": "مستودع الويكي <var>[[mw:Special:MyLanguage/Manual:$wgServer|$wgServer]]</var> أو ما يعادله.",
+       "apihelp-query+filerepoinfo-paramvalue-prop-thumbUrl": "مسار مسار الجذر لمسارات الصورة المصغرة.",
+       "apihelp-query+filerepoinfo-paramvalue-prop-url": "مسار مسار المنطقة العامة.",
        "apihelp-query+filerepoinfo-example-simple": "الحصول على معلومات حول مستودعات الملفات.",
        "apihelp-query+fileusage-summary": "ابحث عن كل الصفحات التي تستخدم الملفات المعطاة.",
        "apihelp-query+fileusage-param-prop": "أي الخصائص للحصول عليها.",
        "apihelp-query+revisions+base-param-generatexml": "استخدم <kbd>[[Special:ApiHelp/expandtemplates|action=expandtemplates]]</kbd> أو <kbd>[[Special:ApiHelp/parse|action=parse]]</kbd> بدلا من ذلك، قم بتوليد شجرة تحليل XML لمحتوى المراجعة (تتطلب $1prop=content).",
        "apihelp-query+revisions+base-param-parse": "استخدم <kbd>[[Special:ApiHelp/parse|action=parse]]</kbd> بدلا من ذلك، تحليل محتوى المراجعة (يتطلب $1prop=content)، لأسباب تتعلق بالأداء; إذا تم استخدام هذا الخيار، يتم فرض $1limit إلى 1.",
        "apihelp-query+revisions+base-param-section": "استرجع محتويات رقم هذا القسم فقط.",
+       "apihelp-query+revisions+base-param-diffto": "استخدم <kbd>[[Special:ApiHelp/compare|action=compare]]</kbd> بدلا من ذلك، معرف المراجعة للتفريق بين كل مراجعة، استخدم <kbd>prev</kbd> و<kbd>next</kbd> و<kbd>cur</kbd> للمراجعة السابقة واللاحقة والحالية على التوالي.",
+       "apihelp-query+revisions+base-param-difftotext": "استخدم <kbd>[[Special:ApiHelp/compare|action=compare]]</kbd> بدلا من ذلك، النص للتفريق بين كل مراجعة، يختلف عدد محدود فقط من المراجعات، يتجاوز <var>$1diffto</var>، إذا تم تعيين <var>$1section</var>، فسيتم تمييز هذا القسم فقط مقابل هذا النص.",
        "apihelp-query+revisions+base-param-difftotextpst": "استخدم <kbd>[[Special:ApiHelp/compare|action=compare]]</kbd> بدلا من ذلك، قم بإجراء تحويل ما قبل الحفظ على النص قبل نشره، صالح فقط عند استخدامه مع <var>$1difftotext</var>.",
        "apihelp-query+revisions+base-param-contentformat": "تنسيق التسلسل المستخدم لـ<var>$1difftotext</var> والمتوقع لإخراج المحتوى.",
        "apihelp-query+search-summary": "إجراء بحث نص كامل.",
        "apihelp-unlinkaccount-summary": "إزالة حساب جهة خارجية مرتبط من المستخدم الحالي.",
        "apihelp-unlinkaccount-example-simple": "محاولة إزالة رابط المستخدم الحالي للموفر المقترن بـ<kbd>FooAuthenticationRequest</kbd>.",
        "apihelp-upload-summary": "رفع ملف أو الحصول على حالة المرفوعات المعلقة.",
+       "apihelp-upload-extended-description": "تتوفر عدة طرق: \n* ارفع محتويات الملف مباشرة، باستخدام الوسيط <var>$1file</var>.\n* ارفع الملف على أجزاء باستخدام الوسائط <var>$1filesize</var> و<var>$1chunk</var> و<var>$1offset</var>.\n*  اجعل خادم ميدياويكي يقوم بجلب ملف من مسار، باستخدام الوسيط <var>$1url</var>.\n*  أكمل عملية رفع سابقة فشلت بسبب التحذيرات، باستخدام الوسيط <var>$1filekey</var>.\nلاحظ أنه يجب إجراء HTTP POST كرفع ملف (أي استخدام <code>multipart/form-data</code>) عند إرسال <var>$1file</var>.",
        "apihelp-upload-param-filename": "اسم الملف المستهدف.",
        "apihelp-upload-param-comment": "تحميل تعليق الرفع، يُستخدَم أيضا كنص الصفحة الأولي للملفات الجديدة إذا لم يتم تحديد <var>$1text</var>.",
        "apihelp-upload-param-tags": "غتيير الوسوم لتطبيقها على إدخال سجل الرفع ومراجعة صفحة الملف.",
        "api-pageset-param-generator": "احصل على قائمة الصفحات للعمل عليها من خلال تنفيذ وحدة الاستعلام المحددة.\n\n<strong>ملاحظة:</strong> يجب أن تبدأ أسماء وسطائط المولد بـ\"g\"، انظر الأمثلة.",
        "api-pageset-param-redirects-generator": "حل التحويلات تلقائيا في <var>$1titles</var> و<var>$1pageids</var> و<var>$1revids</var> وفي الصفحات التي يتم إرجاعها بواسطة <var>$1generator</var>.",
        "api-pageset-param-redirects-nogenerator": "حل التحويلات تلقائيا في <var>$1titles</var> و<var>$1pageids</var> و<var>$1revids</var>.",
+       "api-pageset-param-converttitles": "تحويل العناوين إلى المتغيرات الأخرى إذا لزم الأمر، يعمل فقط إذا كانت لغة محتوى الويكي تدعم تحويل المتغير، تتضمن اللغات التي تدعم تحويل المتغير $1.",
        "api-help-title": "مساعدة API ميدياويكي",
        "api-help-lead": "\nهذه صفحة توثيق ميدياويكي API التي تم إنشاؤها تلقائيا.\n\nوثائق وأمثلة: https://www.mediawiki.org/wiki/API",
        "api-help-main-header": "الوحدة الرئيسية",
        "api-help-param-templated-var-first": "يجب استبدال <var>&#x7B;$1&#x7D;</var> في اسم الوسيط بقيم <var>$2</var>",
        "api-help-param-templated-var": "<var>&#x7B;$1&#x7D;</var> بقيم <var>$2</var>",
        "api-help-datatypes-header": "أنواع البيانات",
+       "api-help-datatypes": "يجب أن يكون الإدخال إلى ميدياويكي هو UTF-8 المعيَّن لـNFC، قد يحاول ميدياويكي تحويل مدخلات أخرى، ولكن قد يتسبب ذلك في فشل بعض العمليات (مثل [[Special:ApiHelp/edit|التعديلات]] مع عمليات فحص MD5).\n\nتحتاج بعض أنواع الوسائط في طلبات API إلى مزيد من الشرح:\n;منطقية\n:تعمل الوسائط المنطقية مثل صناديق اختيار HTML: إذا تم تحديد الوسيط، بغض النظر عن القيمة، فيتم اعتباره صحيحا، للحصول على قيمة خاطئة; احذف الوسيط تماما.\n;الطابع الزمني\n:قد يتم تحديد الطوابع الزمنية بتنسيقات متعددة، يُوصَى بـISO 8601 التاريخ والوقت، جميع الأوقات بالتوقيت العالمي المنسق، يتم تجاهل أية منطقة زمنية مضمنة.\n:* تاريخ ووقت ISO 8601، <kbd><var>2001</var>-<var>01</var>-<var>15</var>T<var>14</var>:<var>56</var>:<var>00</var>Z</kbd> (علامات الترقيم و<kbd>Z</kbd> اختيارية)\n:* تاريخ ووقت ISO 8601مع الثواني المجزأة (متجاهلة)، <kbd><var>2001</var>-<var>01</var>-<var>15</var>T<var>14</var>:<var>56</var>:<var>00</var>.<var>00001</var>Z</kbd>  (الشرطات، والنقطتان الرأسيتان اختيارية و<kbd>Z</kbd>)\n:* تنسيق ميدياويكي، <kbd><var>2001</var><var>01</var><var>15</var><var>14</var><var>56</var><var>00</var></kbd>\n:* تنسيق رقمي عام، (توقيت اختياري، أو يتم تجاهل) <kbd><var>2001</var>-<var>01</var>-<var>15</var> <var>14</var>:<var>56</var>:<var>00</var></kbd> (منطقة زمنية اختيارية لـ<kbd>GMT</kbd>، <kbd>+<var>##</var></kbd>، أو يتم تجاهل <kbd>-<var>##</var></kbd>)\n:* تنسيق EXIF، <kbd><var>2001</var>:<var>01</var>:<var>15</var> <var>14</var>:<var>56</var>:<var>00</var></kbd>\n:*تنسيق RFC 2822 (قد يتم حذف المنطقة الزمنية)، <kbd><var>Mon</var>, <var>15</var> <var>Jan</var> <var>2001</var> <var>14</var>:<var>56</var>:<var>00</var></kbd>\n:*تنسيق RFC 850 format (قد يتم حذف المنطقة الزمنية)، <kbd><var>Monday</var>, <var>15</var>-<var>Jan</var>-<var>2001</var> <var>14</var>:<var>56</var>:<var>00</var></kbd>\n:* تنسيق C ctime format, <kbd><var>Mon</var> <var>Jan</var> <var>15</var> <var>14</var>:<var>56</var>:<var>00</var> <var>2001</var></kbd>\n:* الثواني منذ 1970-01-01T00:00:00Z كعدد صحيح يتراوح بين 1 و13 (باستثناء <kbd>0</kbd>)\n:* السلسلة <kbd>now</kbd>\n;فاصل بديل متعدد القيم\n:يتم عادةً إرسال الوسائط التي تأخذ قيم متعددة مع القيم المفصولة باستخدام حرف الأنبوب، على سبيل المثال <kbd>param=value1|value2</kbd> or <kbd>param=value1%7Cvalue2</kbd> إذا كانت القيمة يجب أن تحتوي على حرف الأنبوب، فاستخدم U+001F (فاصل الوحدة) مثل الفاصل ''و'' بادئة القيمة بـU+001F، على سبيل المثال <kbd>param=%1Fvalue1%1Fvalue2</kbd>.",
+       "api-help-templatedparams-header": "وسائط القالب",
+       "api-help-templatedparams": "تدعم وسائط القوالب الحالات التي تحتاج فيها API إلى قيمة لكل قيمة من وسيط آخر، على سبيل المثال، إذا كانت هناك وحدة API لطلب الفاكهة، فإنه قد يكون لديك وسيط <var>fruits</var>  لتحديد أي الفواكه تم طلبها ووسيط قالب <var>{fruit}-quantity</var>لتحديد عدد الفواكه لكل طلب، يمكن لعميل API الذي يريد 1 تفاحة، 5 موز، 20 فراولة ثم تقديم طلب مثل <kbd>fruits=apples|bananas|strawberries&apples-quantity=1&bananas-quantity=5&strawberries-quantity=20</kbd>.",
+       "api-help-param-type-limit": "النوع: عدد صحيح أو <kbd>max</kbd>",
+       "api-help-param-type-integer": "النوع: {{PLURAL:$1|1=عدد صحيح|2=قائمة الأعداد الصحيحة}}",
+       "api-help-param-type-boolean": "النوع: منطقية ([[Special:ApiHelp/main#main/datatypes|التفاصيل]])",
+       "api-help-param-type-timestamp": "النوع: {{PLURAL:$1|1=طابع زمني|2=قائمة الطوابع الزمنية}} ([[Special:ApiHelp/main#main/datatypes|الصيغ المسموح بها]])",
+       "api-help-param-type-user": "النوع: {{PLURAL:$1|1=اسم مستخدم|2=قائمة أسماء المستخدمين}}",
+       "api-help-param-list": "{{PLURAL:$1|1=إحدى القيم التالية|2=القيم (منفصلة مع <kbd>{{!}}</kbd> أو [[Special:ApiHelp/main#main/datatypes|البديل]])}}: $2",
+       "api-help-param-list-can-be-empty": "{{PLURAL:$1|0=يجب أن تكون فارغة|يمكن أن تكون فارغة، أو $2}}",
+       "api-help-param-limit": "لا يُسمَح بأكثر من $1.",
+       "api-help-param-limit2": "لا يُسمَح بأكثر من $1 ($2 للبوتات).",
+       "api-help-param-integer-min": "يجب ألا تقل {{PLURAL:$1|1=القيمة|2=القيم}} عن $2.",
+       "api-help-param-integer-max": "يجب ألا تزيد {{PLURAL:$1|1=القيمة|2=القيم}} عن $3.",
+       "api-help-param-integer-minmax": "يجب أن تتراوح {{PLURAL:$1|1=القيمة|2=القيم}} بين $2 و$3.",
+       "api-help-param-upload": "يجب أن يتم نشره كرفع ملف باستخدام بيانات متعددة الأجزاء/النماذج.",
+       "api-help-param-multi-separate": "قيم منفصلة بـ<kbd>|</kbd> أو [[Special:ApiHelp/main#main/datatypes|بديل]].",
+       "api-help-param-multi-max": "الحد الأقصى لعدد القيم هو {{PLURAL:$1|$1}} ({{PLURAL:$2|$2}} للبوتات).",
+       "api-help-param-multi-max-simple": "الحد الأقصى لعدد القيم هو {{PLURAL:$1|$1}}.",
+       "api-help-param-multi-all": "لتحديد كل القيم; استخدم <kbd>$1</kbd>.",
+       "api-help-param-default": "الافتراضي: $1",
+       "api-help-param-default-empty": "الافتراضي: <span class=\"apihelp-empty\">(فارغ)</span>",
+       "api-help-param-token": "تم استرداد رمز مميز \"$1\" من [[Special:ApiHelp/query+tokens|action=query&meta=tokens]]",
+       "api-help-param-token-webui": "للتوافق; يتم أيضا قبول الرمز المميز المستخدم في واجهة المستخدم على الويب.",
+       "api-help-param-disabled-in-miser-mode": "تم التعطيل بسبب [[mw:Special:MyLanguage/Manual:$wgMiserMode|وضع miser]].",
+       "api-help-param-limited-in-miser-mode": "<strong>ملاحظة:</strong> بسبب [[mw:Special:MyLanguage/Manual:$wgMiserMode|وضع miser]]; استخدام هذا قد يؤدي إلى نتائج أقل من <var>$1limit</var> نتائج التي يتم عرضها قبل المتابعة، في الحالات القصوى، قد يتم إرجاع صفر نتائج.",
+       "api-help-param-direction": "في أي اتجاه للتعداد:\n;الأحدث: سرد الأقدم أولا، ملاحظة: يجب أن يكون $1start قبل $1end.\n;older:List newest first (default). Note: $1start has to be later than $1end.\n;الأقدم: سرد الأحدث أولا (افتراضي)، ملاحظة: يجب أن يكون $1start بعد $1end.",
+       "api-help-param-continue": "عندما تتوفر المزيد من النتائج، استخدم هذا للمتابعة",
+       "api-help-param-no-description": "<span class=\"apihelp-empty\">(لا يوجد وصف)</span>",
+       "api-help-param-maxbytes": "Cلا يمكن أن يكون أطول من $1 {{PLURAL:$1|بايت}}.",
+       "api-help-param-maxchars": "Cلا يمكن أن يكون أطول من $1 {{PLURAL:$1|حرف|أحرف}}.",
+       "api-help-examples": "{{PLURAL:$1|مثال|أمثلة}}:",
+       "api-help-permissions": "{{PLURAL:$1|الإذن|الأذونات}}:",
+       "api-help-permissions-granted-to": "{{PLURAL:$1|ممنوحة لـ}}: $2",
+       "api-help-right-apihighlimits": "استخدم حدودا أعلى في استعلامات API (استعلامات بطيئة: $1، استعلامات سريعة: $2)، تنطبق حدود الاستعلامات البطيئة أيضا على وسائط متعددة القيم.",
+       "api-help-open-in-apisandbox": "<small>[فتح في ملعب]</small>",
+       "api-help-authmanager-general-usage": "الإجراء العام لاستخدام هذه الوحدة هو:\n# جلب الحقول المتاحة من <kbd>[[Special:ApiHelp/query+authmanagerinfo|action=query&meta=authmanagerinfo]]</kbd> مع amirequestsfor=$4، $<kbd>amirequestsfor=$4</kbd> ورمز <kbd>$5</kbd> من <kbd>[[Special:ApiHelp/query+tokens|action=query&meta=tokens]]</kbd>.\nعرض الحقول للمستخدم، والحصول على تقديمها.\n# النشر في هذه الوحدة، مع توفير <var>$1returnurl</var> وأية حقول ذات صلة.\n# افحص <samp>status</samp> في الاستجابة.\n#* إذا تلقيت <samp>PASS</samp> أو <samp>FAIL</samp> أنت انتهيت، العملية نجحت أو لم تفعل.\n#* إذا تلقيت <samp>UI</samp>، قدم الحقول الجديدة للمستخدم والحصول على تقديمها، ثم انشر في هذه الوحدة باستخدام <var>$1continue</var> والحقول ذات الصلة المحددة، وكرر الخطوة 4.\n#* إذا تلقيت <samp>REDIRECT</samp>، وجه المستخدم إلى <samp>redirecttarget</samp> وانتظر العودة إلى <var>$1returnurl</var>، ثم انشر في هذه الوحدة باستخدام <var>$1continue</var> وأية حقول تم تمريرها إلى المسار للعودة ، وكرر الخطوة 4.\n#* إذا تلقيت <samp>RESTART</samp>، هذا يعني أن المصادقة ناجحة ولكن ليس لدينا حساب مستخدم مرتبط، قد تعامل هذا كـ<samp>UI</samp> أو كـ<samp>FAIL</samp>.",
+       "api-help-authmanagerhelper-requests": "استخدم فقط طلبات المصادقة هذه، بواسطة <samp>id</samp> الذي يتم إرجاعه من <kbd>[[Special:ApiHelp/query+authmanagerinfo|action=query&meta=authmanagerinfo]]</kbd> with <kbd>amirequestsfor=$1</kbd> أو من رد سابق من هذه الوحدة.",
+       "api-help-authmanagerhelper-request": "استخدم طلب المصادقة هذا ، بواسطة <samp>id</samp> الذي يتم إرجاعه من <kbd>[[Special:ApiHelp/query+authmanagerinfo|action=query&meta=authmanagerinfo]]</kbd> مع <kbd>amirequestsfor=$1</kbd>.",
+       "api-help-authmanagerhelper-messageformat": "تنسيق لاستخدامه في إرسال الرسائل.",
+       "api-help-authmanagerhelper-mergerequestfields": "دمج معلومات الحقل لجميع طلبات التوثيق في مصفوفة واحدة.",
+       "api-help-authmanagerhelper-preservestate": "الحفاظ على الحالة من محاولة تسجيل دخول فاشلة سابقة، إن أمكن.",
+       "api-help-authmanagerhelper-returnurl": "يجب أن يكون العودة لتدفقات المصادقة من الجهات الخارجية مطلقا، مطلوب إما هذا أو  <var>$1continue</var>.\n\nعند استلام استجابة <samp>REDIRECT</samp>، ستفتح عادةً متصفح أو عرض ويب للمسار <samp>redirecttarget</samp>المحدد لتدفق مصادقة طرف ثالث، عند اكتمال ذلك، سيرسل الطرف الثالث المتصفح أو عرض الويب إلى هذا المسار، يجب عليك استخلاص أي استعلام أو وسائط POST من المسار وتمريرها كطلب <var>$1continue</var> إلى وحدة API هذه.",
+       "api-help-authmanagerhelper-continue": "هذا الطلب استمرار بعد استجابة <samp>UI</samp> أو <samp>REDIRECT</samp> سابقة، مطلوب إما هذا أو <var>$1returnurl</var>.",
+       "api-help-authmanagerhelper-additional-params": "تقبل هذه الوحدة معايير إضافية بناءً على طلبات المصادقة المتاحة، استخدم <kbd>[[Special:ApiHelp/query+authmanagerinfo|action=query&meta=authmanagerinfo]]</kbd> مع <kbd>amirequestsfor=$1</kbd> (أو استجابة سابقة من هذه الوحدة، إن وُجِدت) لتحديد الطلبات المتاحة والحقول التي يستخدمونها.",
+       "apierror-allimages-redirect": "استخدم <kbd>gaifilterredir=nonredirects</kbd> بدلا من <var>redirects</var> عند استخدام <kbd>allimages</kbd> كمولد.",
+       "apierror-allpages-generator-redirects": "استخدم <kbd>gaifilterredir=nonredirects</kbd> بدلا من <var>redirects</var> عند استخدام <kbd>allimages</kbd> كمولد.",
+       "apierror-appendnotsupported": "لا يمكن إلحاق الصفحات باستخدام نموذج المحتوى $1.",
+       "apierror-articleexists": "تم بالفعل إنشاء المقالة التي حاولت إنشاءها.",
+       "apierror-assertbotfailed": "التأكيد على فشل المستخدم في صلاحية <code>bot</code>.",
+       "apierror-assertnameduserfailed": "تأكيد أن المستخدم \"$1\" فشل.",
+       "apierror-assertuserfailed": "التأكيد على فشل تسجيل الدخول للمستخدم.",
+       "apierror-autoblocked": "عنوان الآيبي الخاص بك تم منعه تلقائيا; لأنه تم استخدامه بواسطة مستخدم ممنوع.",
+       "apierror-badconfig-resulttoosmall": "إن قيمة <code>$wgAPIMaxResultSize</code> في هذا الويكي صغيرة جدا لا تحتوي على معلومات النتائج الأساسية.",
+       "apierror-badcontinue": "متابعة غير صحيحة; يجب عليك تمرير القيمة الأصلية التي تم إرجاعها بواسطة الاستعلام السابق.",
+       "apierror-baddiff": "لا يمكن استرجاع الفرقك; إحدى أو كلا المراجعتين غير موجودة أو ليست لديك صلاحية لعرضها.",
+       "apierror-baddiffto": "يجب تعيين <var>$1diffto</var> على عدد غير سالب، <kbd>prev</kbd>, <kbd>next</kbd> أو <kbd>cur</kbd>.",
+       "apierror-badformat-generic": "التنسيق المطلوب $1 غير مدعوم لنموذج المحتوى $2.",
+       "apierror-badformat": "التنسيق المطلوب $1 غير مدعوم لنموذج المحتوى $2 المستخدم بواسطة $3.",
+       "apierror-badgenerator-notgenerator": "لا يمكن استخدام الوحدة <kbd>$1</kbd> كمولد.",
+       "apierror-badgenerator-unknown": "<kbd>generator=$1</kbd> مجهول.",
+       "apierror-badip": "وسيط الآيبي غير صالح.",
+       "apierror-badmd5": "رمز الرقم MD5 المتوفر غير صحيح.",
+       "apierror-badmodule-badsubmodule": "لا تحتوي الوحدة <kbd>$1</kbd> على وحدة فرعية \"$2\".",
+       "apierror-badmodule-nosubmodules": "لا تحتوي الوحدة <kbd>$1</kbd> على وحدات فرعية.",
+       "apierror-badparameter": "قيمة غير صالحة للوسيط <var>$1</var>.",
+       "apierror-badquery": "استعلام غير صالح.",
+       "apierror-badtimestamp": "قيمة غير صالحة \"$2\" لوسيط الطابع الزمني <var>$1</var>.",
+       "apierror-badtoken": "رمز CSRF غير صالح.",
+       "apierror-badupload": "وسيط رفع الملف <var>$1</var> ليس رفع ملف; تأكد من استخدام <code>multipart/form-data</code> لـPOST الخاص بك وقم بتضمين اسم ملف في الرأس <code>Content-Disposition</code>.",
+       "apierror-badurl": "قيمة غير صالحة \"$2\" لوسيط العنوان <var>$1</var>.",
+       "apierror-baduser": "قيمة غير صالحة \"$2\" لوسيط المستخدم <var>$1</var>.",
+       "apierror-badvalue-notmultivalue": "لا يمكن استخدام فصل U+001F متعدد القيم إلا لوسائط متعددة القيم.",
+       "apierror-bad-watchlist-token": "رمز قائمة مراقبة غير صحيح مقدم; يُرجَى تعيين رمز مميز في [[Special:Preferences]].",
+       "apierror-blockedfrommail": "لقد تم منعك من إرسال البريد الإلكتروني.",
+       "apierror-blocked": "لقد تم منعك من التحرير.",
+       "apierror-botsnotsupported": "هذه الواجهة غير مدعومة للبوتات.",
+       "apierror-cannot-async-upload-file": "لا يمكن الجمع بين الوسيطين <var>async</var> و<var>file</var>، إذا كنت تريد معالجة غير متزامنة لملفك المرفوع، فارفعه أولاً إلى المخبأ (باستخدام الوسيط <var>stash</var>) ثم انشر الملف المتقطع بشكل غير متزامن (باستخدام <var>filekey</var> و<var>async</var>).",
+       "apierror-cannotreauthenticate": "هذا الإجراء غير متاح لأن هويتك لا يمكن التحقق منها.",
+       "apierror-cannotviewtitle": "لا يُسمَح لك بعرض $1.",
+       "apierror-cantblock-email": "ليست لديك صلاحية لمنع المستخدمين من إرسال البريد الإلكتروني من خلال الويكي.",
+       "apierror-cantblock": "ليست لديك صلاحية لمنع المستخدمين.",
+       "apierror-cantchangecontentmodel": "ليست لديك صلاحية لمنع المستخدمين لتغيير نموذج محتوى صفحة.",
+       "apierror-canthide": "ليست لديك صلاحية إخفاء أسماء المستخدمين من سجل المنع.",
+       "apierror-cantimport-upload": "ليست لديك صلاحية استيراد الصفحات المرفوعة.",
+       "apierror-cantimport": "ليست لديك صلاحية لاستيراد الصفحات.",
+       "apierror-cantoverwrite-sharedfile": "الملف الهدف موجود في مستودع مشترك وليست لديك صلاحية لتجاوزه.",
+       "apierror-cantsend": "لم تقم بتسجيل الدخول أو ليس لديك عنوان بريد إلكتروني مؤكد أو غير مسموح لك بإرسال بريد إلكتروني إلى مستخدمين آخرين; لذلك لا يمكنك إرسال بريد إلكتروني.",
+       "apierror-cantundelete": "تعذر الاسترجاع: قد لا تكون المراجعات المطلوبة موجودة، أو ربما تم الاسترجاع بالفعل.",
+       "apierror-changeauth-norequest": "فشل في إنشاء طلب التغيير.",
+       "apierror-chunk-too-small": "الحد الأدنى لحجم القطعة هو $1 {{PLURAL:$1|بايت}} للقطع غير النهائية.",
+       "apierror-cidrtoobroad": "لا يُقبَل مدى $1 CIDR أكبر من /$2.",
+       "apierror-compare-no-title": "لا يمكن الحفظ المسبق للحفظ بدون عنوان; حاول تحديد <var>fromtitle</var> أو <var>totitle</var>.",
+       "apierror-compare-nosuchfromsection": "لا يوجد قسم $1 في المحتوى 'من'.",
+       "apierror-compare-nosuchtosection": "لا يوجد قسم $1 في المحتوى 'إلى'.",
+       "apierror-compare-relative-to-nothing": "لا توجد مراجعة 'من' لـ<var>torelative</var> لتكون نسبة.",
+       "apierror-contentserializationexception": "فشل تسلسل المحتوى: $1",
+       "apierror-contenttoobig": "يتجاوز المحتوى الذي أدخلته حد حجم المقالة البالغ $1 {{PLURAL:$1|كيلوبايت}}.",
+       "apierror-copyuploadbaddomain": "لا يُسمَح بالمرفوعات بواسطة مسار من هذا النطاق.",
+       "apierror-copyuploadbadurl": "لا يُسمَح بالرفع من هذا المسار.",
+       "apierror-create-titleexists": "لا يمكن حماية العناوين الموجودة باستخدام <kbd>create</kbd>.",
+       "apierror-csp-report": "خطأ في معالجة تقرير CSP: $1.",
+       "apierror-databaseerror": "[$1] خطأ في استعلام قاعدة البيانات.",
+       "apierror-deletedrevs-param-not-1-2": "لا يمكن استخدام الوسيط <var>$1</var> في الأوضاع 1 أو 2.",
+       "apierror-deletedrevs-param-not-3": "لا يمكن استخدام الوسيط <var>$1</var> في الوضع 3.",
+       "apierror-emptynewsection": "إنشاء أقسام جديدة فارغة غير ممكن.",
+       "apierror-emptypage": "لا يُسمَح بإنشاء صفحات جديدة فارغة.",
+       "apierror-exceptioncaught": "[$1] تم اكتشاف الاستثناء: $2",
+       "apierror-filedoesnotexist": "الملف غير موجود.",
+       "apierror-fileexists-sharedrepo-perm": "الملف الهدف موجود في مستودع مشترك; استخدم الوسيط <var>ignorewarnings</var> لتجاوزه.",
+       "apierror-filenopath": "لا يمكن الحصول على مسار الملف المحلي.",
+       "apierror-filetypecannotberotated": "لا يمكن تدوير نوع الملف.",
+       "apierror-formatphp": "لا يمكن تمثيل هذه الاستجابة باستخدام <kbd>format=php</kbd>; انظر https://phabricator.wikimedia.org/T68776.",
+       "apierror-imageusage-badtitle": "يجب أن يكون عنوان <<kbd>$1</kbd> ملفا.",
+       "apierror-import-unknownerror": "خطأ غير معروف في الاستيراد: $1.",
+       "apierror-integeroutofrange-abovebotmax": "لا يجوز أن يكون <var>$1</var> أكثر من $2 (معين إلى $3) للبوتات أو الإداريين.",
+       "apierror-integeroutofrange-abovemax": "لا يجوز أن يكون <var>$1</var> أكثر من $2 (معين إلى $3) للمستخدمين.",
+       "apierror-integeroutofrange-belowminimum": "لا يجوز أن يكون <var>$1</var> أقل من $2 (معين إلى $3)",
+       "apierror-invalidcategory": "اسم التصنيفف الذي أدخلته غير صالح.",
+       "apierror-invalid-chunk": "الإزاحة بالإضافة إلى الجزء الحالي أكبر من حجم الملف المطالب به.",
+       "apierror-invalidexpiry": "وقت انتهاء الصلاحية غير صالح \"$1\".",
+       "apierror-invalid-file-key": "ليس مفتاح ملف صالح.",
+       "apierror-invalidlang": "رمز لغة غير صالح للوسيط <var>$1</var>.",
+       "apierror-invalidoldimage": "يحتوي الوسيط <var>oldimage</var> على تنسيق غير صالح.",
+       "apierror-invalidparammix-cannotusewith": "لا يمكن استخدام الوسيط <kbd>$1</kbd> مع <kbd>$2</kbd>.",
+       "apierror-invalidparammix-mustusewith": "يمكن استخدام الوسيط <kbd>$1</kbd> مع <kbd>$2</kbd> فقط.",
+       "apierror-invalidparammix-parse-new-section": "لا يمكن دمج <kbd>section=new</kbd> مع الوسائط <var>oldid</var> أو <var>pageid</var> أو <var>page</var>; الرجاء استخدام <var>title</var> و<var>text</var>.",
+       "apierror-invalidparammix": "لا يمكن استخدام {{PLURAL:$2|الوسائط}} $1 معا.",
+       "apierror-invalidsection": "يجب أن يكون الوسيط <var>section</var> معرف قسم صالحا أو <kbd>new</kbd>.",
+       "apierror-invalidsha1base36hash": "رمز رقم SHA1Base36 المقدم غير صالح.",
+       "apierror-invalidsha1hash": "رمز رقم SHA1 المقدم غير صالح.",
+       "apierror-invalidtitle": "عنوان سيء \"$1\".",
+       "apierror-invalidurlparam": "قيمة غير صالحة لـ<var>$1urlparam</var> (<kbd>$2=$3</kbd>).",
+       "apierror-invaliduser": "اسم المستخدم غير صالح \"$1\".",
+       "apierror-invaliduserid": "معرف المستخدم <var>$1</var> غير صالح.",
+       "apierror-maxbytes": "لا يمكن أن يكون الوسيط <var>$1</var> أطول من $2 {{PLURAL:$2|بايت}}",
+       "apierror-maxchars": "لا يمكن أن يكون الوسيط <var>$1</var> أطول من $2 {{PLURAL:$2|حرف|أحرف}}",
+       "apierror-maxlag-generic": "في انتظار خادم قاعدة البيانات: تأخر $1 {{PLURAL:$1|ثانية|ثوانٍ}}.",
+       "apierror-maxlag": "في انتظار $2: تأخر $1 {{PLURAL:$1|ثانية|ثوانٍ}}.",
+       "apierror-mimesearchdisabled": "تم تعطيل بحث MIME في وضع Miser.",
+       "apierror-missingcontent-pageid": "محتوى مفقود لمعرف الصفحة $1.",
+       "apierror-missingcontent-revid": "محتوى مفقود لمعرف المراجعة $1.",
+       "apierror-missingparam-at-least-one-of": "مطلوب {{PLURAL:$2|الوسيط|واحد على الأقل من الوسائط}} $1.",
+       "apierror-missingparam-one-of": "مطلوب {{PLURAL:$2|الوسيط|واحد على الأقل من الوسائط}} $1.",
+       "apierror-missingparam": "يجب تعيين الوسيط <var>$1</var>.",
+       "apierror-missingrev-pageid": "لا توجد مراجعة حالية لمعرف الصفحة $1.",
+       "apierror-missingrev-title": "لا توجد مراجعة حالية للعنوان $1.",
+       "apierror-missingtitle-createonly": "يمكن حماية العناوين المفقودة فقط باستخدام <kbd>create</kbd>.",
+       "apierror-missingtitle": "الصفحة التي حددتها غير موجودة.",
+       "apierror-missingtitle-byname": "الصفحة $1 غير موجودة.",
+       "apierror-moduledisabled": "تم تعطيل الوحدة <kbd>$1</kbd>.",
+       "apierror-multival-only-one-of": "{{PLURAL:$3|فقط|واحد فقط من}} $2 مسموح به للوسيط <var>$1</var>.",
+       "apierror-multpages": "لا يجوز استخدام <var>$1</var> إلا مع صفحة واحدة.",
+       "apierror-mustbeloggedin-changeauth": "يجب عليك تسجيل الدخول لتغيير بيانات المصادقة.",
+       "apierror-mustbeloggedin-generic": "يجب أن تكون مسجلا.",
+       "apierror-mustbeloggedin-linkaccounts": "يجب عليك تسجيل الدخول لربط الحسابات.",
+       "apierror-mustbeloggedin-removeauth": "يجب عليك تسجيل الدخول لإزالة بيانات المصادقة.",
+       "apierror-mustbeloggedin-uploadstash": "لا يتوفر الرفع المخبأ إلا للمستخدمين المسجلين.",
+       "apierror-mustbeloggedin": "يجب تسجيل الدخول إلى $1.",
+       "apierror-mustbeposted": "تتطلب الوحدة <kbd>$1</kbd> طلب POST.",
+       "apierror-mustpostparams": "تم العثور على {{PLURAL:$2|الوسيط|الوسائط}} في سلسلة الاستعلام، ولكن يجب أن يكون في نص POST: $1.",
+       "apierror-noapiwrite": "تم تعطيل تحرير هذا الويكي من خلال  API; تأكد من تضمين العبارة <code>$wgEnableWriteAPI=true;</code> في ملف <code>LocalSettings.php</code> الخاص بالويكي.",
+       "apierror-nochanges": "لم يتم طلب أية تغييرات.",
+       "apierror-nodeleteablefile": "لا يوجد مثل هذا الإصدار القديم من الملف.",
+       "apierror-no-direct-editing": "التعديل المباشر عبر API غير مدعوم لنموذج المحتوى $1 المستخدم في $2.",
+       "apierror-noedit-anon": "لا يمكن للمستخدمين المجهولين تحرير الصفحات.",
+       "apierror-noedit": "ليست لديك صلاحية تعديل الصفحات.",
+       "apierror-noimageredirect-anon": "لا يمكن للمستخدمين المجهولين إنشاء تحويلات صور.",
+       "apierror-noimageredirect": "ليست لديك صلاحية تعديل الصفحات إنشاء تحويلات الصور.",
+       "apierror-nosuchlogid": "لا توجد مدخلة سجل بالمعرف $1.",
+       "apierror-nosuchpageid": "لا توجد صفحة بالمعرف $1.",
+       "apierror-nosuchrcid": "لا يوجد تغيير حديث بالمعرف $1.",
+       "apierror-nosuchrevid": "لا توجد مراجعة بالمعرف $1.",
+       "apierror-nosuchsection": "لا يوجد قسم $1.",
+       "apierror-nosuchsection-what": "لا يوجد قسم $1 في $2.",
+       "apierror-nosuchuserid": "لا يوجد مستخدم بالمعرف $1.",
+       "apierror-notarget": "لم تحدد هدفا صالحا لهذا الإجراء.",
+       "apierror-notpatrollable": "لا يمكن إجراء مراجعة للمراجعة $1 لأنها قديمة جدا.",
+       "apierror-nouploadmodule": "لا توجد وحدة رفع محددة.",
        "apierror-offline": "لم يمكن المتابعة بسبب مشاكل في الاتصال بالشبكة; تأكد من أنه لديك اتصال بالإنترنت وحاول مرة أخرى.",
+       "apierror-opensearch-json-warnings": "لا يمكن تمثيل التحذيرات بتنسيق OpenSearch JSON.",
+       "apierror-pagecannotexist": "النطاق لا يسمح بالصفحات الفعلية.",
+       "apierror-pagedeleted": "لقد تم حذف الصفحة منذ أن جلبت طابعها الزمني.",
+       "apierror-pagelang-disabled": "لا يُسمَح بتغيير لغة صفحة في هذا الويكي.",
+       "apierror-paramempty": "قد لا يكون الوسيط <var>$1</var> فارغا.",
+       "apierror-parsetree-notwikitext": "<kbd>prop=parsetree</kbd> مدعوم لمحتوى نص الويكي فقط.",
+       "apierror-parsetree-notwikitext-title": "<kbd>prop=parsetree</kbd> مدعوم لمحتوى نص الويكي فقط، يستخدم $1 نموذج المحتوى $2.",
+       "apierror-pastexpiry": "وقت انتهاء الصلاحية \"$1\" في الماضي.",
+       "apierror-permissiondenied": "ليست لديك صلاحية لـ$1.",
+       "apierror-permissiondenied-generic": "الإذن مرفوض.",
+       "apierror-permissiondenied-patrolflag": "تحتاج إلى صلاحية<code>patrol</code> أو <code>patrolmarks</code> لطلب علم مراجع.",
+       "apierror-permissiondenied-unblock": "ليست لديك صلاحية لرفع منع المستخدمين.",
+       "apierror-prefixsearchdisabled": "تم تعطيل البحث عن بادئة MIME في وضع Miser.",
+       "apierror-promised-nonwrite-api": "لا يمكن إرسال رأس HTTP <code>Promise-Non-Write-API-Action</code> إلى وحدات API الخاصة بوضع الكتابة.",
+       "apierror-protect-invalidaction": "نوع حماية غير صالح \"$1\".",
+       "apierror-protect-invalidlevel": "مستوى حماية غير صالح \"$1\".",
+       "apierror-ratelimited": "لقد تجاوزت حد المعدل الخاص بك; يُرجَى الانتظار بعض الوقت والمحاولة مرة أخرى.",
+       "apierror-readapidenied": "أنت بحاجة لصلاحية القراءة لاستخدام هذه الوحدة.",
+       "apierror-readonly": "الويكي حاليا في وضع القراءة فقط.",
+       "apierror-reauthenticate": "لم تقم بالمصادقة مؤخرًا في هذه الجلسة; الرجاء إعادة التصديق.",
+       "apierror-redirect-appendonly": "لقد حاولت إجراء التعديل باستخدام وضع تحويل التالي، والذي يجب استخدامه في الاقتران مع <kbd>section=new</kbd> أو <var>prependtext</var> أو <var>appendtext</var>.",
+       "apierror-revdel-mutuallyexclusive": "لا يمكن استخدام نفس الحقل في كل من <var>hide</var> و<var>show</var>.",
+       "apierror-revdel-needtarget": "مطلوب عنوان مستهدف لنوع RevDel هذا.",
+       "apierror-revdel-paramneeded": "هناك قيمة واحدة على الأقل مطلوبة لـ<var>hide</var> و/أو <var>show</var>.",
+       "apierror-revisions-badid": "لم يتم العثور على مراجعة للوسيط <var>$1</var>.",
+       "apierror-revisions-norevids": "لا يجوز استخدام الوسيط <var>revids</var> مع خيارات القائمة (<var>$1limit</var> و<var>$1startid</var> و<var>$1endid</var و<kbd>$1dir=newer</kbd> و<var>$1user</var> و<var>$1excludeuser</var> و<var>$1start</var> و<var>$1end</var>).",
+       "apierror-revisions-singlepage": "تم استخدام <var>titles</var> أو <var>pageids</var> أو مولد لتزويد صفحات متعددة، لكن يمكن استخدام وسائط <var>$1limit</var> و<var>$1startid</var> و<var>$1endid</var> و<kbd>$1dir=newer</kbd> و<var>$1user</var> و<var>$1excludeuser</var> و<var>$1start</var> و<var>$1end</var> في صفحة واحدة فقط.",
+       "apierror-revwrongpage": "r$1 ليست مراجعة $2.",
+       "apierror-searchdisabled": "تم تعطيل بحث <var>$1</var>.",
+       "apierror-sectionreplacefailed": "لا يمكن دمج القسم المحدث.",
+       "apierror-sectionsnotsupported": "الأقسام غير مدعومة لنموذج المحتوى $1.",
+       "apierror-sectionsnotsupported-what": "الأقسام غير مدعومة بواسطة $1.",
+       "apierror-show": "وسيط غير صحيحة; قد لا يتم تقديم قيم خاصة متبادلة.",
+       "apierror-siteinfo-includealldenied": "يمكن عرض جميع معلومات الخوادم ما لم يكن <var>$wgShowHostNames</var> صحيحا.",
+       "apierror-sizediffdisabled": "تم تعطيل فرق الحجم في وضع Miser.",
+       "apierror-spamdetected": "تم رفض تعديلك لأنه يحتوي على جزء من الرسائل غير المرغوب فيها: <code>$1</code>.",
+       "apierror-specialpage-cantexecute": "ليست لديك صلاحية لعرض نتائج هذه الصفحة الخاصة.",
+       "apierror-stashedfilenotfound": "تعذر العثور على الملف في المخبأ: $1.",
+       "apierror-stashedit-missingtext": "لم يتم العثور على نص متقطع مع رمز الرقم المحدد.",
+       "apierror-stashfailed-complete": "تم اكتمال الرفع المقسم بالفعل، تحقق من الحالة للتفاصيل.",
+       "apierror-stashfailed-nosession": "لا توجد جلسة رفع مقسمة بهذا المفتاح.",
+       "apierror-stashfilestorage": "تعذر تخزين الرفع في المخبأ: $1",
+       "apierror-stashinvalidfile": "ملف مخفي غير صالح.",
+       "apierror-stashnosuchfilekey": "لا يوجد مفتاح ملف كهذا: $1.",
+       "apierror-stashpathinvalid": "مفتاح الملف بتنسيق غير لائق أو غير صالح بأي شكل آخر: $1.",
+       "apierror-stashwrongowner": "مالك غير صحيح: $1",
+       "apierror-stashzerolength": "الملف ذو طول صفري، ولا يمكن تخزينه في المخبأ: $1.",
+       "apierror-systemblocked": "لقد تم منعك تلقائيا بواسطة ميدياويكي.",
+       "apierror-templateexpansion-notwikitext": "توسيع القالب مدعوم لمحتوى نص الويكي فقط، يستخدم $1 نموذج المحتوى $2.",
        "apierror-timeout": "لم يستجب الخادم ضمن الوقت المتوقع.",
-       "api-feed-error-title": "خطأ ($1)"
+       "apierror-toofewexpiries": "$1 انتهت صلاحية {{PLURAL:$1|الطابع الزمني المقدم|الطوابع الزمنية المقدمة}} حيث كان يلزم توفر $2 {{PLURAL:$2|ه|ها}}.",
+       "apierror-toomanyvalues": "تم توفير قيم كثيرة جدا للوسيط <var>$1</var>، الحد هو $2.",
+       "apierror-unknownaction": "لم يتم التعرف على الإجراء المحدد <kbd>$1</kbd>.",
+       "apierror-unknownerror-editpage": "خطأ غير معروف في صفحة التعديل: $1.",
+       "apierror-unknownerror-nocode": "خطأ غير معروف.",
+       "apierror-unknownerror": "خطأ غير معروف: \"$1\".",
+       "apierror-unknownformat": "تنسيق غير معروف \"$1\".",
+       "apierror-unrecognizedparams": "{{PLURAL:$2|وسيط غير معترف به|وسائط غير معترف بها}}: $1.",
+       "apierror-unrecognizedvalue": "قيمة غير معروفة للوسيط <var>$1</var>: $2.",
+       "apierror-unsupportedrepo": "مستودع الملفات المحلي لا يدعم الاستعلام عن كل الصور.",
+       "apierror-upload-filekeyneeded": "يجب توفير Must supply a <var>filekey</var> عندما يكون <var>offset</var> غير صفري.",
+       "apierror-upload-filekeynotallowed": "لا يمكن توفير <var>filekey</var> عندما يكون <var>offset</var> 0.",
+       "apierror-upload-inprogress": "الرفع من المخبأ قيد التقدم بالفعل.",
+       "apierror-upload-missingresult": "لا توجد نتيجة في بيانات الحالة.",
+       "apierror-urlparamnormal": "تعذر تطبيع وسائط الصور لـ$1.",
+       "apierror-writeapidenied": "لا يُسمَح لك بتعديل هذا الويكي من خلال API.",
+       "apiwarn-alldeletedrevisions-performance": "للحصول على أداء أفضل عند إنشاء العناوين; اضبط <kbd>$1dir=newer</kbd>.",
+       "apiwarn-badurlparam": "تعذر تحليل <var>$1urlparam</var> لـ$2، باستخدام العرض والطول فقط.",
+       "apiwarn-badutf8": "تحتوي القيمة التي تم تمريرها لـ<var>$1</var> على بيانات غير صالحة أو غير طبيعية، يجب أن تكون البيانات النصية صالحة، NFC-normalized Unicode بدون أحرف تحكم C0 غير HT (\\t) وLF (\\n) وCR (\\r).",
+       "apiwarn-checktoken-percentencoding": "تحقق من أن الرموز مثل \"+\" في الرمز المميز يتم ترميزها بشكل صحيح في المسار.",
+       "apiwarn-compare-nocontentmodel": "لا يمكن تحديد نموذج محتوى، على افتراض $1.",
+       "apiwarn-deprecation-deletedrevs": "تم إيقاف <kbd>list=deletedrevs</kbd>; الرجاء استخدام <kbd>prop=deletedrevisions</kbd> or <kbd>list=alldeletedrevisions</kbd> بدلا من ذلك.",
+       "apiwarn-deprecation-expandtemplates-prop": "نظرا لعدم تحديد أية قيم للوسيط <var>prop</var>; تم استخدام تنسيق قديم للإخراج، تم إيقاف هذا التنسيق، وفي المستقبل، سيتم تعيين قيمة افتراضية للوسيط <var>prop</var>، مما يؤدي إلى استخدام التنسيق الجديد دائما.",
+       "apiwarn-deprecation-httpsexpected": "HTTP المستخدمة عند توقع HTTPS.",
+       "apiwarn-deprecation-login-botpw": "تم إيقاف تسجيل الدخول إلى الحساب الرئيسي عبر <kbd>action=login</kbd> وقد يتوقف عن العمل دون سابق إنذار، لمتابعة تسجيل الدخول باستخدام <kbd>action=login</kbd>; راجع [[Special:BotPasswords]]، لمتابعة استخدام تسجيل الدخول إلى الحساب الرئيسي بأمان; راجع <kbd>action=clientlogin</kbd>.",
+       "apiwarn-deprecation-login-nobotpw": "تم إيقاف تسجيل الدخول إلى الحساب الرئيسي عبر <kbd>action=login</kbd>، وقد يتوقف عن العمل دون سابق إنذار، لتسجيل الدخول بأمان; راجع <kbd>action=clientlogin</kbd>.",
+       "apiwarn-deprecation-login-token": "تم إيقاف عمل رمز مميز عبر <kbd>action=login</kbd> ;استخدم <kbd>action=query&meta=tokens&type=login</kbd> بدلا من ذلك.",
+       "apiwarn-deprecation-parameter": "تم إيقاف الوسيط <var>$1</var>.",
+       "apiwarn-deprecation-parse-headitems": "تم إيقاف <kbd>prop=headitems</kbd> منذ ميدياويكي 1.28; استخدم <kbd>prop=headhtml</kbd> عند إنشاء مستندات HTML جديدة، أو <kbd>prop=modules|jsconfigvars</kbd> عند تحديث مستند من جانب العميل.",
+       "apiwarn-deprecation-purge-get": "تم إيقاف استخدام <kbd>action=purge</kbd> عبر GET; استخدم POST بدلا من ذلك.",
+       "apiwarn-deprecation-withreplacement": "تم إيقاف <kbd>$1</kbd>; الرجاء استخدام <kbd>$2</kbd> بدلا من ذلك.",
+       "apiwarn-difftohidden": "لا يمكنك إجراء مقارنة مع r$1: المحتوى مخفي.",
+       "apiwarn-errorprinterfailed": "فشل خطأ الطباعة; سوف يعيد دون وسائط.",
+       "apiwarn-errorprinterfailed-ex": "فشل خطأ الطباعة (سوف يعيد دون وسائط): $1.",
+       "apiwarn-ignoring-invalid-templated-value": "تجاهل القيمة <kbd>$2</kbd> في <var>$1</var> عند معالجة وسائط القوالب.",
+       "apiwarn-invalidcategory": "\"$1\" ليس تصنيفا.",
+       "apiwarn-invalidtitle": "\"$1\" ليس عنوانا صالحا.",
+       "apiwarn-invalidxmlstylesheetext": "يجب أن تحتوي ورقة الأنماط على الملحق <code>.xsl</code> extension.",
+       "apiwarn-invalidxmlstylesheet": "ورقة أنماط غير صالحة أو غير موجودة محددة.",
+       "apiwarn-invalidxmlstylesheetns": "يجب أن تكون ورقة الأنماط في نطاق {{ns:MediaWiki}}.",
+       "apiwarn-moduleswithoutvars": "تم تعيين الخاصية <kbd>modules</kbd> ولكن ليست <kbd>jsconfigvars</kbd> أو <kbd>encodedjsconfigvars</kbd>، متغيرات التكوين ضرورية للاستخدام السليم للوحدة.",
+       "apiwarn-notfile": "\"$1\" ليس ملفا.",
+       "apiwarn-nothumb-noimagehandler": "تعذر إنشاء الصورة المصغرة نظرا لعدم احتواء $1 على معالج صورة مقترن.",
+       "apiwarn-parse-nocontentmodel": "لم يتم إعطاء <var>title</var> أو <var>contentmodel</var>، على افتراض $1.",
+       "apiwarn-parse-revidwithouttext": "تم استخدام <var>revid</var> بدون <var>text</var>، وتم طلب خصائص الصفحة المحللة، هل تقصد استخدام <var>oldid</var> بدلا من <var>revid</var>؟",
+       "apiwarn-parse-titlewithouttext": "تم استخدام <var>title</var> بدون <var>text</var>، وتم طلب خصائص الصفحة المحللة، هل تقصد استخدام <var>page</var> بدلا من <var>title</var>؟",
+       "apiwarn-tokennotallowed": "الإجراء \"$1\" غير مسموح به للمستخدم الحالي.",
+       "apiwarn-tokens-origin": "قد لا يتم الحصول على الرموز عند عدم تطبيق السياسة الأصلية.",
+       "apiwarn-truncatedresult": "تم اقتطاع هذه النتيجة لأنها قد تكون أكبر من حد الـ$1 بايت.",
+       "apiwarn-unclearnowtimestamp": "تم إيقاف تمرير \"$2\" لوسيط الطابع الزمني <var>$1</var>; إذا احتجت لسبب ما إلى تحديد الوقت الحالي دون حسابه من جانب العميل، فاستخدم <kbd>now</kbd>.",
+       "apiwarn-unrecognizedvalues": "{{PLURAL:$3|قيمة|قيم}} غير معروفة للوسيط <var>$1</var>: $2.",
+       "apiwarn-unsupportedarray": "يستخدم الوسيط <var>$1</var> بنية مصفوفة PHP غير مدعومة.",
+       "apiwarn-urlparamwidth": "تجاهل قيمة العرض المحددة في <var>$1urlparam</var> ($2) لصالح قيمة العرض المشتقة من <var>$1urlwidth</var>/<var>$1urlheight</var> ($3).",
+       "apiwarn-validationfailed-badchars": "أحرف غير صالحة في المفتاح (مسموح فقط بـ<code>a-z</code> و<code>A-Z</code> و<code>0-9</code> و<code>_</code> و<code>-</code>).",
+       "apiwarn-validationfailed-badpref": "ليس تفضيلا صالحا.",
+       "apiwarn-validationfailed-cannotset": "لا يمكن ضبطها بواسطة هذه الوحدة.",
+       "apiwarn-validationfailed-keytoolong": "المفتاح طويل جدًا (لا يُسمَح بأكثر من $1 بايت).",
+       "apiwarn-validationfailed": "خطأ في التحقق من <kbd>$1</kbd>: $2",
+       "apiwarn-wgDebugAPI": "<strong>تحذير الأمان</strong>: تم تمكين <var>$wgDebugAPI</var>.",
+       "api-feed-error-title": "خطأ ($1)",
+       "api-usage-docref": "راجع $1 لاستخدام API.",
+       "api-usage-mailinglist-ref": "اشترك في القائمة البريدية لإعلان api ميدياويكي في &lt;https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce&gt ; للحصول على إشعار بإيقاف API وإيقاف التغييرات.",
+       "api-exception-trace": "$1 في $2($3)\n$4",
+       "api-credits-header": "الإحالات",
+       "api-credits": "مطورو API:\n* يوري أستراخان (مبتكر، المطور الرئيسي سبتمبر 2006 - سبتمبر 2007) \n* روان كاتو (المطور الرئيسي سبتمبر 2007-2009) \n* فيكتور فاسيليف \n* برايان تونغ مينه \n* سام ريد \n* براد يورش (المطور الرئيسي 2013 - الآن) \n\nيُرجَى إرسال تعليقاتك واقتراحاتك وأسئلتك لـmediawiki-api@lists.wikimedia.org\nأو إرسال تقريرا عن خطأ في https://phabricator.wikimedia.org/."
 }
index d0e9f1a..54fbef8 100644 (file)
        "apihelp-query+filearchive-paramvalue-prop-archivename": "Fügt den Dateinamen der Archivversion für die nicht-neuesten Versionen hinzu.",
        "apihelp-query+filearchive-example-simple": "Eine Liste aller gelöschten Dateien auflisten",
        "apihelp-query+filerepoinfo-summary": "Gebe Metainformationen über Bild-Repositorien zurück, die im Wiki eingerichtet sind.",
+       "apihelp-query+filerepoinfo-paramvalue-prop-rootUrl": "Wurzel-URL-Pfad für Bildpfade.",
+       "apihelp-query+filerepoinfo-paramvalue-prop-scriptDirUrl": "Wurzel-URL-Pfad für die MediaWiki-Installation des Repositoriumwikis.",
+       "apihelp-query+filerepoinfo-paramvalue-prop-thumbUrl": "Wurzel-URL-Pfad für Vorschaubildpfade.",
+       "apihelp-query+filerepoinfo-paramvalue-prop-url": "URL-Pfad der öffentlichen Zone.",
        "apihelp-query+filerepoinfo-example-simple": "Ruft Informationen über Dateirepositorien ab.",
        "apihelp-query+fileusage-summary": "Alle Seiten finden, die die angegebenen Dateien verwenden.",
        "apihelp-query+fileusage-param-prop": "Zurückzugebende Eigenschaften:",
index 323a784..3d24743 100644 (file)
        "apihelp-query+filearchive-paramvalue-prop-archivename": "Ajoute le nom de fichier de la version d’archive pour les versions autres que la dernière.",
        "apihelp-query+filearchive-example-simple": "Afficher une liste de tous les fichiers supprimés",
        "apihelp-query+filerepoinfo-summary": "Renvoyer les méta-informations sur les référentiels d’images configurés dans le wiki.",
-       "apihelp-query+filerepoinfo-param-prop": "Quelles propriétés du référentiel récupérer (il peut y en avoir plus de disponibles sur certains wikis) :\n;apiurl:URL de l’API du référentiel - utile pour obtenir les infos de l’image depuis l’hôte.\n;name:La clé du référentiel - utilisé par ex. dans les valeurs de retour de <var>[[mw:Special:MyLanguage/Manual:$wgForeignFileRepos|$wgForeignFileRepos]]</var> et [[Special:ApiHelp/query+imageinfo|imageinfo]].\n;displayname:Le nom lisible du wiki référentiel.\n;rooturl:URL racine des chemins d’image.\n;local:Si ce référentiel est le référentiel local ou non.",
+       "apihelp-query+filerepoinfo-param-prop": "Quelles propriétés du référentiel récupérer (les propriétés disponibles peuvent varier sur les autres wikis).",
+       "apihelp-query+filerepoinfo-paramvalue-prop-apiurl": "URL vers l’API du dépôt — utile pour obtenir des informations sur l’image depuis l’hôte.",
+       "apihelp-query+filerepoinfo-paramvalue-prop-articlepath": "<var>[[mw:Special:MyLanguage/Manual:$wgArticlePath|$wgArticlePath]]</var> du wiki du dépôt, ou équivalent.",
+       "apihelp-query+filerepoinfo-paramvalue-prop-canUpload": "Si les fichiers peuvent être téléchargés sur ce dépôt, par ex. via CORS et l’authentification partagée.",
+       "apihelp-query+filerepoinfo-paramvalue-prop-displayname": "Le nom lisible du wiki du dépôt.",
+       "apihelp-query+filerepoinfo-paramvalue-prop-favicon": "L’URL du favicon du wiki, depuis <var>[[mw:Special:MyLanguage/Manual:$wgFavicon|$wgFavicon]]</var>.",
+       "apihelp-query+filerepoinfo-paramvalue-prop-fetchDescription": "Si les pages de description de fichier sont récupérées de ce dépôt lors de l’affichage des pages de description de fichier locales.",
+       "apihelp-query+filerepoinfo-paramvalue-prop-initialCapital": "Si les noms de fichier commencent implicitement par une majuscule.",
+       "apihelp-query+filerepoinfo-paramvalue-prop-local": "Si ce dépôt est local ou non.",
+       "apihelp-query+filerepoinfo-paramvalue-prop-name": "La clé du dépôt — utilisée dans les valeurs de retour, par ex. <var>[[mw:Special:MyLanguage/Manual:$wgForeignFileRepos|$wgForeignFileRepos]]</var> et [[Special:ApiHelp/query+imageinfo|imageinfo]] return values.",
+       "apihelp-query+filerepoinfo-paramvalue-prop-rootUrl": "Chemin de l’URL racine pour les chemins d’image.",
+       "apihelp-query+filerepoinfo-paramvalue-prop-scriptDirUrl": "Chemin de l’URL racine pour l’installation de MédiaWiki du wiki du dépôt.",
+       "apihelp-query+filerepoinfo-paramvalue-prop-server": "<var>[[mw:Special:MyLanguage/Manual:$wgServer|$wgServer]]</var> du wiki du dépôt, ou équivalent.",
+       "apihelp-query+filerepoinfo-paramvalue-prop-thumbUrl": "Chemin de l’URL racine pour les chemins des vignettes.",
+       "apihelp-query+filerepoinfo-paramvalue-prop-url": "Chemin de l’URL de la zone publique.",
        "apihelp-query+filerepoinfo-example-simple": "Obtenir des informations sur les référentiels de fichier.",
        "apihelp-query+fileusage-summary": "Trouver toutes les pages qui utilisent les fichiers donnés.",
        "apihelp-query+fileusage-param-prop": "Quelles propriétés obtenir :",
index 057adc0..44910c8 100644 (file)
        "apihelp-query+filearchive-paramvalue-prop-archivename": "הוספת שם הקובץ של גרסה מאורכבת עבור גרסאות שאינן האחרונה.",
        "apihelp-query+filearchive-example-simple": "הצגת רשימת כל הקבצים המחוקים.",
        "apihelp-query+filerepoinfo-summary": "החזרת מידע מטא על מאגרי תמונות שמוגדרים בוויקי.",
-       "apihelp-query+filerepoinfo-param-prop": "אילו מאפייני מאגר לקבל (יכולים להיות יותר מזה באתרי ויקי אחדים):\n;apiurl:URL ל־API של המאגר – מועיל לקבלת מידע על התמונה מהמארח.\n;name:המפתח של המאגר – משמש למשל בערכים המוחזרים מ־<var>[[mw:Special:MyLanguage/Manual:$wgForeignFileRepos|$wgForeignFileRepos]]</var> ומ־[[Special:ApiHelp/query+imageinfo|imageinfo]].\n;displayname:שם קריא של אתר הוויקי של המאגר.\n;rooturl:URL שורש לנתיבי תמונות.\n;local:האם המאגר הוא מקומי או לא.",
+       "apihelp-query+filerepoinfo-param-prop": "אילו מאפייני מאגר לקבל (המאפיינים הזמינים עשויים להשתנות באתרי ויקי אחרים).",
+       "apihelp-query+filerepoinfo-paramvalue-prop-apiurl": "כתובת URL ל־API של המאגר – שימושי לקבלת מידע על תמונות מהשרת המארח.",
+       "apihelp-query+filerepoinfo-paramvalue-prop-articlepath": "ההגדרה <var dir=\"ltr\">[[mw:Special:MyLanguage/Manual:$wgArticlePath|$wgArticlePath]]</var> של אתר הוויקי של המאגר או ערך השווה לה.",
+       "apihelp-query+filerepoinfo-paramvalue-prop-canUpload": "האם ניתן להעלות קבצים למאגר הזה, למשל באמצעות CORS ובאמצעות אימות משותף.",
+       "apihelp-query+filerepoinfo-paramvalue-prop-displayname": "שם אתר הוויקי של המאגר (בפורמט שמתאים לקריאה על־ידי אדם).",
+       "apihelp-query+filerepoinfo-paramvalue-prop-favicon": "כתובת הצלמית של אתר הוויקי של המאגר, מתוך ההגדרה <var dir=\"ltr\">[[mw:Special:MyLanguage/Manual:$wgFavicon|$wgFavicon]]</var>.",
+       "apihelp-query+filerepoinfo-paramvalue-prop-fetchDescription": "האם דפי תיאור של קבצים מאוחזרים מהמאגר הזה בעת צפייה בדפי תיאור של קבצים מקומיים.",
+       "apihelp-query+filerepoinfo-paramvalue-prop-initialCapital": "האם שמות של קבצים מתחילים באות גדולה.",
+       "apihelp-query+filerepoinfo-paramvalue-prop-local": "האם המאגר הזה הוא המאגר המקומי או לא.",
+       "apihelp-query+filerepoinfo-paramvalue-prop-name": "מפתח המאגר, שנמצא בשימוש למשל בערכים המוחזרים של <var dir=\"ltr\">[[mw:Special:MyLanguage/Manual:$wgForeignFileRepos|$wgForeignFileRepos]]</var> ושל [[Special:ApiHelp/query+imageinfo|imageinfo]].",
+       "apihelp-query+filerepoinfo-paramvalue-prop-rootUrl": "נתיב כתובת הבסיס עבור נתיבים של תמונות.",
+       "apihelp-query+filerepoinfo-paramvalue-prop-scriptDirUrl": "נתיב כתובת הבסיס של התקנת מדיה־ויקי באתר הוויקי של המאגר.",
+       "apihelp-query+filerepoinfo-paramvalue-prop-server": "ההגדרה <var dir=\"ltr\">[[mw:Special:MyLanguage/Manual:$wgServer|$wgServer]]</var> של אתר הוויקי של המאגר או ערך השווה לה.",
+       "apihelp-query+filerepoinfo-paramvalue-prop-thumbUrl": "נתיב כתובת הבסיס עבור נתיבים של תמונות ממוזערות.",
+       "apihelp-query+filerepoinfo-paramvalue-prop-url": "נתיב הכתובת של התחום הציבורי.",
        "apihelp-query+filerepoinfo-example-simple": "קבלת מידע על מאגרי קבצים.",
        "apihelp-query+fileusage-summary": "מציאת כל הדפים שמשתמשים בקבצים הנתונים.",
        "apihelp-query+fileusage-param-prop": "אילו מאפיינים לקבל:",
        "apihelp-query+recentchanges-param-limit": "כמה שינויים להחזיר בסך הכול.",
        "apihelp-query+recentchanges-param-type": "אילו סוגים של שינויים להציג.",
        "apihelp-query+recentchanges-param-toponly": "לרשום רק שינויים שהם הגרסה האחרונה.",
+       "apihelp-query+recentchanges-param-title": "סינון הרשומות לאלו הקשורות לדף.",
        "apihelp-query+recentchanges-param-generaterevisions": "בעת שימוש בתור מחולל, לחולל מזהי גרסה במקום כותרות. עיולי שינויים אחרונים ללא מזהה גרסה משויך (למשל רוב עיולי היומן) לא יחוללו דבר.",
        "apihelp-query+recentchanges-example-simple": "הצגת השינויים האחרונים.",
        "apihelp-query+recentchanges-example-generator": "קבלת מידע על הדף על שינויים אחרונים שלא נבדקו.",
index d0148fe..1da2c02 100644 (file)
@@ -31,6 +31,7 @@
        "apihelp-main-param-servedby": "De hostnaam van de server die de aanvraag heeft afgehandeld aan de resultaten toevoegen.",
        "apihelp-main-param-curtimestamp": "Huidige tijd aan de resultaten toevoegen.",
        "apihelp-main-param-responselanginfo": "De voor <var>uselang</var> en <var>errorlang</var> gebruikte talen aan de resultaten toevoegen.",
+       "apihelp-main-param-uselang": "Taal om te gebruiken voor berichtvertalingen. <kbd>[[Special:ApiHelp/query+siteinfo|action=query&meta=siteinfo]]</kbd> gecombineerd met <kbd>siprop=languages</kbd> toont een lijst met taalcodes. De waarde <kbd>user</kbd> gebruikt de taal die door de huidige gebruiker als voorkeur is ingesteld. De waarde <kbd>content</kbd> gebruikt de taal die de inhoud op de wiki heeft.",
        "apihelp-main-param-errorlang": "De voor waarschuwingen en fouten te gebruiken taal. <kbd>[[Special:ApiHelp/query+siteinfo|action=query&meta=siteinfo]]</kbd> met <kbd>siprop=languages</kbd> geeft een lijst van taalcodes, of stel <kbd>content</kbd> in om de taal van de inhoud van deze wiki te gebruiken, of stel <kbd>uselang</kbd> in om dezelfde waarde als de parameter <var>uselang</var> te gebruiken.",
        "apihelp-main-param-errorsuselocal": "Indien ingesteld maken foutmeldingen gebruik van lokaal-aangepaste berichten in de {{ns:MediaWiki}}-naamruimte.",
        "apihelp-block-summary": "Gebruiker blokkeren.",
        "apihelp-move-param-to": "Nieuwe paginanaam.",
        "apihelp-move-param-reason": "Reden voor de naamswijziging.",
        "apihelp-move-param-movetalk": "Hernoem de overlegpagina, indien deze bestaat.",
+       "apihelp-move-param-movesubpages": "Hernoem ook deelpagina's, indien van toepassing.",
        "apihelp-move-param-noredirect": "Geen doorverwijzing achterlaten.",
        "apihelp-move-param-watch": "Voeg de pagina en de doorverwijzing toe aan de volglijst van de huidige gebruiker.",
        "apihelp-move-param-unwatch": "Verwijder de pagina en de doorverwijzing van de volglijst van de huidige gebruiker.",
        "apihelp-query+alldeletedrevisions-param-tag": "Alleen versies met dit label weergeven.",
        "apihelp-query+alldeletedrevisions-param-excludeuser": "Geen revisies door deze gebruiker weergeven.",
        "apihelp-query+alldeletedrevisions-param-namespace": "Alleen pagina's in deze naamruimte weergeven.",
+       "apihelp-query+alldeletedrevisions-example-user": "Toon de laatste 50 verwijderde bijdragen van gebruiker <kbd>Example</kbd>.",
+       "apihelp-query+alldeletedrevisions-example-ns-main": "Toon de eerse 50 verwijderde versies in de hoofdnaamruimte.",
        "apihelp-query+allfileusages-paramvalue-prop-title": "Voegt de titel van het bestand toe.",
        "apihelp-query+allfileusages-param-limit": "Hoeveel items er in totaal moeten worden getoond.",
        "apihelp-query+allimages-example-recent": "Toon een lijst van recentelijk geüploade bestanden, vergelijkbaar met [[Special:NewFiles]].",
        "apihelp-query+alllinks-param-namespace": "De door te lopen naamruimte.",
        "apihelp-query+alllinks-param-limit": "Hoeveel items er in totaal moeten worden getoond.",
+       "apihelp-query+allmessages-param-prop": "Welke eigenschappen op te vragen.",
        "apihelp-query+allmessages-param-enableparser": "Stel in om de parser in te schakelen, zorgt voor het voorverwerken van de wikitekst van een bericht (vervangen van magische woorden, afhandelen van sjablonen, enz.).",
        "apihelp-query+allmessages-param-lang": "Toon berichten in deze taal.",
        "apihelp-query+allmessages-param-from": "Toon berichten vanaf dit bericht.",
        "apihelp-query+allmessages-param-to": "Toon berichten tot aan dit bericht.",
+       "apihelp-query+allmessages-param-prefix": "Toon berichten met dit voorvoegsel.",
+       "apihelp-query+allpages-param-limit": "Het totaal aantal pagina's dat getoont moeten worden.",
        "apihelp-query+allredirects-summary": "Toon alle doorverwijzingen naar een naamruimte.",
+       "apihelp-query+allredirects-paramvalue-prop-title": "Voegt de titel van de doorverwijzing toe.",
+       "apihelp-query+allrevisions-summary": "Toon alle versies.",
        "apihelp-query+allrevisions-example-user": "Toon de laatste 50 bijdragen van gebruiker <kbd>Example</kbd>.",
        "apihelp-query+mystashedfiles-paramvalue-prop-type": "Vraag het MIME- en mediatype van het bestand op.",
        "apihelp-query+mystashedfiles-param-limit": "Hoeveel bestanden te tonen.",
+       "apihelp-query+alltransclusions-param-namespace": "De door te lopen naamruimte.",
+       "apihelp-query+allusers-param-dir": "Richting om in te sorteren.",
        "apihelp-query+allusers-param-excludegroup": "Sluit gebruikers in de gegeven groepen uit.",
        "apihelp-query+allusers-paramvalue-prop-blockinfo": "Voegt informatie over een actuele blokkade van de gebruiker toe.",
        "apihelp-query+allusers-paramvalue-prop-groups": "Toont de groepen waar de gebruiker in zit. Dit gebruikt meer serverbronnen en retourneert mogelijk minder resultaten dan de opgegeven limiet.",
        "apihelp-query+allusers-paramvalue-prop-rights": "Toont de rechten die de gebruiker heeft.",
        "apihelp-query+allusers-paramvalue-prop-editcount": "Voegt het aantal bewerkingen van de gebruiker toe.",
        "apihelp-query+allusers-paramvalue-prop-registration": "Voegt de registratiedatum van de gebruiker toe, indien beschikbaar (kan leeg zijn).",
+       "apihelp-query+allusers-param-limit": "Het totaal aantal aan gebruikersnamen dat getoont moet worden.",
        "apihelp-query+allusers-param-witheditsonly": "Toon alleen gebruikers die bewerkingen hebben gemaakt.",
        "apihelp-query+allusers-param-activeusers": "Toon alleen gebruikers die actief zijn geweest in de laatste {{PLURAL:$1|dag|$1 dagen}}.",
        "apihelp-query+allusers-example-Y": "Toon gebruikers vanaf <kbd>Y</kbd>.",
        "apihelp-query+categories-paramvalue-prop-hidden": "Markeert categorieën die verborgen zijn met <code>_&#95;HIDDENCAT_&#95;</code>",
        "apihelp-query+categories-param-show": "Welke soort categorieën te tonen.",
        "apihelp-query+categories-param-limit": "Hoeveel categorieën te tonen.",
+       "apihelp-query+categories-example-simple": "Toon de lijst waarin de pagina <kbd>Albert Einstein</kbd> zich bevind.",
+       "apihelp-query+categorymembers-summary": "Toon alle pagina's in de opgegeven categorie.",
        "apihelp-query+categorymembers-paramvalue-prop-ids": "Voegt de pagina-ID toe.",
        "apihelp-query+categorymembers-paramvalue-prop-title": "Voegt de titel en de naamruimte-ID van de pagina toe.",
+       "apihelp-query+categorymembers-param-limit": "Het maximale aantal weer te geven pagina's.",
        "apihelp-query+categorymembers-param-dir": "Richting om in te sorteren.",
+       "apihelp-query+categorymembers-example-simple": "Toon de eerste 10 pagina's in <kbd>Category:Physics</kbd>.",
        "apihelp-query+deletedrevisions-param-tag": "Alleen revisies met dit label weergeven.",
        "apihelp-query+deletedrevs-param-tag": "Alleen revisies met dit label weergeven.",
        "apihelp-query+embeddedin-param-namespace": "De door te lopen naamruimte.",
        "apihelp-query+imageusage-example-simple": "Toon pagina's die [[:File:Albert Einstein Head.jpg]] gebruiken.",
        "apihelp-query+imageusage-example-generator": "Toon informatie over pagina's die [[:File:Albert Einstein Head.jpg]] gebruiken.",
        "apihelp-query+iwbacklinks-param-prefix": "Voorvoegsel voor de interwiki.",
+       "apihelp-query+langbacklinks-example-simple": "Toon de pagina's die verwijzen naar [[:fr:Test]].",
+       "apihelp-query+linkshere-paramvalue-prop-pageid": "Pagina-ID van elke pagina.",
+       "apihelp-query+linkshere-paramvalue-prop-title": "Titel van elke pagina.",
+       "apihelp-query+linkshere-param-namespace": "Toon alleen pagina's in deze naamruimten.",
+       "apihelp-query+linkshere-example-simple": "Toon een lijst van pagina's die naar [[Main Page]] verwijzen.",
        "apihelp-query+logevents-param-type": "Logboekregels alleen voor dit type filteren.",
        "apihelp-query+logevents-param-tag": "Alleen logboekregels met dit label weergeven.",
        "apihelp-query+logevents-example-simple": "Recente logboekregels weergeven.",
+       "apihelp-query+pageswithprop-paramvalue-prop-ids": "Voegt de pagina-ID toe.",
+       "apihelp-query+prefixsearch-param-offset": "Aantal resultaten dat overgeslagen moeten worden.",
        "apihelp-query+protectedtitles-paramvalue-prop-level": "Voegt het beveiligingsniveau toe.",
        "apihelp-query+protectedtitles-example-simple": "Toon beveiligde titels.",
        "apihelp-query+querypage-param-limit": "Aantal te tonen resultaten.",
        "apihelp-query+querypage-example-ancientpages": "Toon resultaten van [[Special:Ancientpages]].",
        "apihelp-query+random-param-namespace": "Toon alleen pagina's in deze naamruimten.",
        "apihelp-query+random-param-limit": "Beperk hoeveel willekeurige pagina's worden getoond.",
+       "apihelp-query+random-param-redirect": "Gebruik in plaats daarvan <kbd>$1filterredir=redirects</kbd>.",
        "apihelp-query+random-example-simple": "Toon twee willekeurige pagina's uit de hoofdnaamruimte.",
        "apihelp-query+random-example-generator": "Toon pagina-informatie over twee willekeurige pagina's uit de hoofdnaamruimte.",
        "apihelp-query+recentchanges-param-user": "Toon alleen wijzigingen door deze gebruiker.",
        "apihelp-query+revisions+base-paramvalue-prop-tags": "Labels voor de versie.",
        "apihelp-query+revisions+base-param-difftotextpst": "Gebruik in plaats hiervan [[Special:ApiHelp/compare|action=compare]]. Een \"pre-save\"-transformatie uitvoeren op de tekst alvorens de verschillen te bepalen. Alleen geldig indien gebruikt met <var>$1difftotext</var>.",
        "apihelp-query+search-summary": "Voer een zoekopdracht in de volledige tekst uit.",
+       "apihelp-query+search-paramvalue-prop-score": "Genegeerd.",
+       "apihelp-query+search-paramvalue-prop-hasrelated": "Genegeerd.",
        "apihelp-query+search-param-limit": "Hoeveel pagina's te tonen.",
        "apihelp-query+search-example-simple": "Zoeken naar <kbd>meaning</kbd>.",
        "apihelp-query+siteinfo-paramvalue-prop-namespacealiases": "Lijst van geregistreerde naamruimte-aliassen.",
        "apihelp-query+usercontribs-example-ipprefix": "Bijdragen van alle IP-adressen met het voorvoegsel <kbd>192.0.2.</kbd> weergeven.",
        "apihelp-query+userinfo-summary": "Informatie over de huidige gebruiker opvragen.",
        "apihelp-query+userinfo-paramvalue-prop-realname": "Voegt de echte naam van de gebruiker toe.",
+       "apihelp-query+watchlist-paramvalue-prop-title": "Voegt de titel van de pagina toe.",
        "apihelp-query+watchlist-paramvalue-prop-loginfo": "Voegt logboekgegevens toe waar van toepassing.",
        "apihelp-query+watchlist-param-type": "Welke typen wijzigingen weer te geven:",
        "apihelp-query+watchlist-paramvalue-type-edit": "Gewone paginabewerkingen.",
        "apihelp-query+watchlist-paramvalue-type-new": "Nieuwe pagina's.",
        "apihelp-query+watchlist-paramvalue-type-log": "Logboekregels.",
        "apihelp-query+watchlist-paramvalue-type-categorize": "Wijzigingen in categorielidmaatschap.",
+       "apihelp-setpagelanguage-summary": "Wijzig de taal van een pagina.",
+       "apihelp-stashedit-param-sectiontitle": "De titel van een nieuw kopje.",
        "apihelp-stashedit-param-text": "Pagina-inhoud.",
+       "apihelp-unblock-summary": "Gebruikers deblokkeren.",
        "apihelp-unblock-param-user": "Te deblokkeren gebruikersnaam, IP-adres of IP-range. Kan niet in combinatie met <var>$1id</var> of <var>$1userid</var> gebruikt worden.",
        "apihelp-unblock-param-userid": "Te deblokkeren gebruikers-ID. Kan niet in combinatie met <var>$1id</var> of <var>$1user</var> gebruikt worden.",
+       "apihelp-unblock-param-reason": "Reden voor de deblokkade.",
+       "apihelp-upload-param-watch": "De pagina volgen.",
+       "apihelp-upload-param-ignorewarnings": "Eventuele waarschuwingen negeren.",
+       "apihelp-upload-param-file": "Bestandsinhoud.",
+       "apihelp-upload-param-filesize": "Bestandsgroote van de hele upload.",
+       "apihelp-userrights-param-user": "Gebruikersnaam.",
+       "apihelp-userrights-param-userid": "Gebruikers-ID.",
+       "apihelp-userrights-param-remove": "Verwijder de gebruiker uit deze groepen.",
+       "apihelp-userrights-param-reason": "Reden voor de wijziging.",
        "apihelp-json-param-formatversion": "Uitvoeropmaak:\n;1:Achterwaarts-compatibele opmaak (booleans in XML-stijl, <samp>*</samp>-sleutels voor contentnodes, enz.).\n;2:Experimentele moderne opmaak. Details kunnen wijzigen!\n;latest:Gebruik de meest recente opmaak (op het moment <kbd>2</kbd>), kan zonder waarschuwing wijzigen.",
+       "apihelp-jsonfm-summary": "Toon de data in het JSON formaat (opgemaakt in HTML).",
+       "apihelp-none-summary": "Toon niets.",
+       "apihelp-php-summary": "Toon de data in geserialiseerde PHP.",
        "apihelp-php-param-formatversion": "Uitvoeropmaak:\n;1:Achterwaarts-compatibele opmaak (booleans in XML-stijl, <samp>*</samp>-sleutels voor contentnodes, enz.).\n;2:Experimentele moderne opmaak. Details kunnen wijzigen!\n;latest:Gebruik de meest recente opmaak (op het moment <kbd>2</kbd>), kan zonder waarschuwing wijzigen.",
+       "apihelp-phpfm-summary": "Toon de data in geserialiseerde PHP (opgemaakt in HTML).",
        "apihelp-rawfm-summary": "Gegevens, inclusief debugelementen, in JSON-formaat (nette opmaak in HTML) uitvoeren.",
+       "apihelp-xml-summary": "Toon de data in het XML formaat.",
+       "apihelp-xmlfm-summary": "Toon de data in het XML formaat (opgemaakt in HTML).",
+       "api-format-title": "MediaWiki API resultaat.",
+       "api-format-prettyprint-header-hyperlinked": "Dit is de HTML uitvoer van het $1 formaat. HTML is geschikt voor het debuggen, maar ongeschikt voor applicatiegebruik.\n\nGeef de parameter <var>format</var> mee om het uitvoerformaat te wijzigen. Geef [$3 <kbd>format=$2</kbd>] mee om de niet-HTML uitvoer van het $1 formaat te zien.\n\nBekijk de [[mw:API|volledige documentatie]], of de [[Special:ApiHelp/main|API hulp]] voor meer informatie.",
+       "api-help-title": "MediaWiki API hulp",
+       "api-help-undocumented-module": "Er is geen documentatie voor de module $1.",
+       "api-help-flag-internal": "<strong>Deze module is voor intern gebruik of nog niet stabiel.</strong> De functionaliteit kan zonder enige voorafgaande melding wijzigen.",
        "api-help-flag-readrights": "Voor deze module zijn leesrechten nodig.",
        "api-help-flag-writerights": "Voor deze module zijn schrijfrechten nodig.",
+       "api-help-source": "Bron: $1",
+       "api-help-source-unknown": "Bron: <span class=\"apihelp-unknown\">onbekend</span>",
+       "api-help-license": "Licentie: [[$1|$2]]",
+       "api-help-license-noname": "Licentie: [[$1|Zie koppeling]]",
+       "api-help-license-unknown": "Licentie: <span class=\"apihelp-unknown\">onbekend</span>",
        "api-help-parameters": "{{PLURAL:$1|Parameter|Parameters}}:",
        "api-help-param-deprecated": "Verouderd.",
+       "api-help-param-required": "Deze parameter is verplicht.",
        "api-help-datatypes-header": "Gegevenstypen",
+       "api-help-param-type-limit": "Type: geheel getal of <kbd>max</kbd>",
+       "api-help-param-type-integer": "Type: {{PLURAL:$1|1=geheel getal|2=lijst met gehele getallen}}",
+       "api-help-param-type-user": "Type: {{PLURAL:$1|1=gebruikersnaam|2=lijst met gebruikersnamen}}",
+       "api-help-param-list": "{{PLURAL:$1|1=Een van de volgende waarden|2=Waarden (gescheiden met <kbd>{{!}}</kbd> of [[Special:ApiHelp/main#main/datatypes|alternatief]])}}: $2",
+       "api-help-param-list-can-be-empty": "{{PLURAL:$1|0=Moet leeg zijn|Moet leeg of $2 zijn}}",
+       "api-help-param-limit": "Niet meer dan $1 toegestaan.",
+       "api-help-param-limit2": "Niet meer dan $1 ($2 voor bots) toegestaan.",
+       "api-help-param-integer-min": "De {{PLURAL:$1|1=waarde|2=waardes}} mogen niet minder dan $2 zijn.",
+       "api-help-param-integer-max": "De {{PLURAL:$1|1=waarde|2=waardes}} mogen niet meer dan $3 zijn.",
+       "api-help-param-integer-minmax": "De {{PLURAL:$1|1=waarde|2=waardes}} moeten zich tussen $2 en $3 bevinden.",
+       "api-help-param-multi-max": "Het maximaal aantal waarden is {{PLURAL:$1|$1}} ({{PLURAL:$2|$2}} voor bots).",
+       "api-help-param-multi-max-simple": "Het maximaal aantal waarden is {{PLURAL:$1|$1}}.",
+       "api-help-param-multi-all": "Gebruik <kbd>$1</kbd> om alle waarden op te geven.",
        "api-help-param-default": "Standaard: $1",
+       "api-help-param-maxbytes": "Mag niet langer zijn dan $1 {{PLURAL:$1|byte|bytes}}.",
+       "api-help-param-maxchars": "Mag niet langer zijn dan $1 {{PLURAL:$1|teken|tekens}}.",
        "api-help-examples": "{{PLURAL:$1|Voorbeeld|Voorbeelden}}:",
+       "api-help-open-in-apisandbox": "<small>[open in de zandbak]</small>",
        "apierror-autoblocked": "Uw IP-adres is automatisch geblokkeerd, omdat het gebruikt werd door een geblokkeerde gebruiker.",
+       "apierror-badmd5": "De opgegeven MD5 hash is onjuist.",
+       "apierror-badmodule-badsubmodule": "De module <kbd>$1</kbd> heeft geen deelmodule \"$2\".",
        "apierror-badmodule-nosubmodules": "De module <kbd>$1</kbd> heeft geen submodules.",
+       "apierror-badparameter": "Ongeldige waarde voor parameter <var>$1</var>.",
        "apierror-blockedfrommail": "Het versturen van e-mail is voor u geblokkeerd.",
        "apierror-blocked": "Het bewerken is voor u geblokkeerd.",
+       "apierror-cannotviewtitle": "U hebt geen toestemming om $1 te bekijken.",
+       "apierror-cantblock": "U hebt geen rechten om gebruikers te blokkeren.",
+       "apierror-cantchangecontentmodel": "U hebt geen rechten om het inhoudsmodel van een pagina te wijzigen.",
+       "apierror-canthide": "U hebt geen rechten om gebruikersnamen van het blokkeerlogboek te verbergen.",
+       "apierror-cantimport-upload": "U hebt geen rechten om geuploade pagina's te importeren.",
+       "apierror-cantimport": "U hebt geen rechten om pagina's te importeren.",
        "apierror-filedoesnotexist": "Bestand bestaat niet.",
+       "apierror-filetypecannotberotated": "Dit bestandstype kan niet geroteerd worden.",
+       "apierror-import-unknownerror": "Onbekende fout trad op tijdens het importeren: $1.",
        "apierror-integeroutofrange-belowminimum": "<var>$1</var> mag niet minder zijn dan $2 (ingesteld op $3).",
        "apierror-invalidcategory": "De opgegeven categorienaam is niet geldig.",
+       "apierror-invalidtitle": "Ongeldige titel \"$1\".",
        "apierror-invaliduser": "Ongeldige gebruikersnaam \"$1\".",
+       "apierror-invaliduserid": "Gebruikers-ID <var>$1</var> is ongeldig.",
+       "apierror-maxbytes": "Parameter <var>$1</var> mag niet langer dan $2 {{PLURAL:$2|byte|bytes}} zijn",
+       "apierror-maxchars": "Parameter <var>$1</var> mag niet langer dan $2 {{PLURAL:$2|teken|tekens}} zijn",
        "apierror-maxlag-generic": "Wachten op een databaseserver: $1 {{PLURAL:$1|seconde|seconden}} vertraging.",
        "apierror-maxlag": "Wachten op $2: $1 {{PLURAL:$1|seconde|seconden}} vertraging.",
+       "apierror-missingparam-one-of": "{{PLURAL:$2|De parameter|Een van de parameters}} $1 is verplicht.",
+       "apierror-missingparam": "De parameter <var>$1</var> moet opgegeven zijn.",
+       "apierror-missingtitle-createonly": "Ontbrekende titels kunnen alleen beveiligd worden met <kbd>create</kbd>.",
        "apierror-missingtitle": "De opgegeven pagina bestaat niet.",
        "apierror-missingtitle-byname": "De pagina $1 bestaat niet.",
+       "apierror-moduledisabled": "De module <kbd>$1</kbd> is uitgeschakeld.",
+       "apierror-multival-only-one-of": "{{PLURAL:$3|Alleen|Alleen een uit}} $2 is toegestaan voor de parameter <var>$1</var>.",
        "apierror-mustbeloggedin-generic": "U moet ingelogd zijn.",
+       "apierror-mustbeloggedin": "U moet ingelogd zijn om $1.",
+       "apierror-noedit": "U hebt geen rechten om pagina's te bewerken.",
+       "apierror-noimageredirect-anon": "Anonieme gebruikers kunnen geen afbeeldingdoorverwijzingen aanmaken.",
+       "apierror-noimageredirect": "U hebt geen rechten om afbeeldingdoorverwijzingen aan te maken.",
+       "apierror-nosuchlogid": "Er is geen logboekregel met de ID $1.",
+       "apierror-nosuchpageid": "Er is geen pagina met de ID $1.",
+       "apierror-nosuchrcid": "Er is geen recente wijziging met de ID $1.",
+       "apierror-nosuchrevid": "Er is geen versie met de ID $1.",
+       "apierror-nosuchsection": "Er is geen kopje $1.",
+       "apierror-nosuchsection-what": "Er is geen kopje $1 in $2.",
        "apierror-nosuchuserid": "Er is geen gebruiker met ID $1.",
+       "apierror-notarget": "U hebt geen geldig doel opgegeven voor deze handeling.",
+       "apierror-notpatrollable": "De versie r$1 kan niet gemarkeerd worden omdat deze te oud is.",
+       "apierror-opensearch-json-warnings": "Waarschuwingen kunnen niet worden getoond in het OpenSearch JSON formaat.",
+       "apierror-pagelang-disabled": "Het wijzigen van de taal van een pagina is niet toegestaan op deze pagina.",
+       "apierror-paramempty": "De parameter <var>$1</var> mag niet leeg zijn.",
+       "apierror-pastexpiry": "Vervaldatum  \"$1\" is in het verleden.",
        "apierror-permissiondenied": "U hebt geen toestemming om $1.",
        "apierror-permissiondenied-generic": "Toegang geweigerd.",
+       "apierror-protect-invalidaction": "Ongeldig beveiligingstype \"$1\".",
+       "apierror-readapidenied": "U hebt leesrechten nodig om deze module te kunnen gebruiken.",
        "apierror-readonly": "De wiki is momenteel in alleen-lezen modus.",
+       "apierror-searchdisabled": "<var>$1</var> zoeken is uitgeschakeld.",
+       "apierror-sectionsnotsupported": "Kopjes worden niet ondersteund door inhoudsmodel $1.",
+       "apierror-sectionsnotsupported-what": "Kopjes worden niet ondersteund door $1.",
+       "apierror-stashwrongowner": "Onjuiste eigenaar: $1",
        "apierror-systemblocked": "U bent automatisch geblokkeerd door MediaWiki.",
        "apierror-timeout": "De server heeft niet binnen de verwachte tijd geantwoord.",
        "apierror-unknownerror-nocode": "Onbekende fout.",
        "apierror-unknownerror": "Onbekende fout: \"$1\".",
        "apierror-unrecognizedparams": "Niet-herkende {{PLURAL:$2|parameter|parameters}}: $1.",
+       "apiwarn-compare-nocontentmodel": "Het inhoudsmodel kon niet worden bepaald. $1 wordt aangenomen.",
        "apiwarn-invalidcategory": "\"$1\" is geen categorie.",
        "apiwarn-invalidtitle": "\"$1\" is geen geldige titel.",
+       "apiwarn-invalidxmlstylesheetext": "Stijlblad moet de bestandsextensie <code>.xsl</code> hebben.",
+       "apiwarn-invalidxmlstylesheet": "Ongeldig of niet-bestaand stijlblad opgegeven.",
+       "apiwarn-invalidxmlstylesheetns": "Het stijlblad moet zich in de {{ns:MediaWiki}} naamruimte bevinden.",
        "apiwarn-notfile": "\"$1\" is geen bestand.",
+       "apiwarn-parse-nocontentmodel": "Er is geen <var>title</var> of <var>contentmodel</var> opgegeven, $1 wordt aangenomen.",
+       "apiwarn-unrecognizedvalues": "Onbekende {{PLURAL:$3|waarde|waardes}} voor parameter <var>$1</var>: $2.",
        "apiwarn-validationfailed-badpref": "geen geldige voorkeur.",
        "api-feed-error-title": "Fout ($1)",
        "api-usage-docref": "Zie $1 voor API-gebruik.",
+       "api-exception-trace": "$1 in $2($3)\n$4",
        "api-credits-header": "Vermeldingen",
        "api-credits": "API-ontwikkelaars:\n* Yuri Astrakhan (oorspronkelijke ontwikkelaar, hoofdontwikkelaar september 2006 – september 2007)\n* Roan Kattouw (hoofdontwikkelaar september 2007–2009)\n* Victor Vasiliev\n* Bryan Tong Minh\n* Sam Reed\n* Brad Jorsch (hoofdontwikkelaar 2013–heden)\n\nStuur uw opmerkingen, suggesties en vragen naar mediawiki-api@lists.wikimedia.org\nof maak een bugrapport aan op https://phabricator.wikimedia.org/."
 }
index 818f717..1cc7c5c 100644 (file)
        "apihelp-query+filearchive-paramvalue-prop-archivename": "添加用于非最新版本的存档版本的文件名。",
        "apihelp-query+filearchive-example-simple": "显示已删除文件列表。",
        "apihelp-query+filerepoinfo-summary": "返回有关wiki配置的图片存储库的元信息。",
-       "apihelp-query+filerepoinfo-param-prop": "要获取的存储库属性(这在一些wiki上可能有更多可用选项):\n;apiurl:链接至API的URL - 对从主机获取图片信息有用。\n;name:存储库关键词 - 用于例如<var>[[mw:Special:MyLanguage/Manual:$wgForeignFileRepos|$wgForeignFileRepos]]</var>,并且[[Special:ApiHelp/query+imageinfo|imageinfo]]会返回值。\n;displayname:人类可读的存储库wiki名称。\n;rooturl:图片路径的根URL。\n;local:存储库是否在本地。",
+       "apihelp-query+filerepoinfo-param-prop": "要获取的存储库属性(可用属性在其他wiki上可能不同)。",
+       "apihelp-query+filerepoinfo-paramvalue-prop-apiurl": "至存储库API的URL - 对从主机获取图片信息有用。",
+       "apihelp-query+filerepoinfo-paramvalue-prop-articlepath": "存储库wiki的<var>[[mw:Special:MyLanguage/Manual:$wgArticlePath|$wgArticlePath]]</var>或等价物。",
+       "apihelp-query+filerepoinfo-paramvalue-prop-canUpload": "文件是否可以上传至此存储库,例如通过CORS和共享身份验证。",
+       "apihelp-query+filerepoinfo-paramvalue-prop-displayname": "人类可读的存储库wiki名称。",
+       "apihelp-query+filerepoinfo-paramvalue-prop-favicon": "存储库wiki的网站图标URL,来自<var>[[mw:Special:MyLanguage/Manual:$wgFavicon|$wgFavicon]]</var>。",
+       "apihelp-query+filerepoinfo-paramvalue-prop-fetchDescription": "当查看本地文件说明页面时,文件描述页面是否检索自此存储库。",
+       "apihelp-query+filerepoinfo-paramvalue-prop-initialCapital": "文件名是否隐式地以大写字母开头。",
+       "apihelp-query+filerepoinfo-paramvalue-prop-local": "存储库是否为本地的。",
+       "apihelp-query+filerepoinfo-paramvalue-prop-name": "存储库的关键词 - 用于例如<var>[[mw:Special:MyLanguage/Manual:$wgForeignFileRepos|$wgForeignFileRepos]]</var>和[[Special:ApiHelp/query+imageinfo|imageinfo]]返回的值。",
+       "apihelp-query+filerepoinfo-paramvalue-prop-rootUrl": "用于图片路径的根URL路径。",
+       "apihelp-query+filerepoinfo-paramvalue-prop-scriptDirUrl": "用于存储库wiki的MediaWiki安装副本的根URL路径。",
+       "apihelp-query+filerepoinfo-paramvalue-prop-server": "存储库wiki的<var>[[mw:Special:MyLanguage/Manual:$wgServer|$wgServer]]</var>或等价物。",
+       "apihelp-query+filerepoinfo-paramvalue-prop-thumbUrl": "用于缩略图路径的根URL路径。",
+       "apihelp-query+filerepoinfo-paramvalue-prop-url": "公开区域URL路径。",
        "apihelp-query+filerepoinfo-example-simple": "获得有关文件存储库的信息。",
        "apihelp-query+fileusage-summary": "查找所有使用指定文件的页面。",
        "apihelp-query+fileusage-param-prop": "要获取的属性:",
index bd9cedc..97f124b 100644 (file)
@@ -21,9 +21,7 @@
  * @ingroup Change tagging
  */
 
-use MediaWiki\Logger\LoggerFactory;
 use MediaWiki\MediaWikiServices;
-use MediaWiki\Storage\NameTableStore;
 use Wikimedia\Rdbms\Database;
 
 class ChangeTags {
@@ -348,21 +346,7 @@ class ChangeTags {
                if ( count( $tagsToAdd ) ) {
                        $changeTagMapping = [];
                        if ( $wgChangeTagsSchemaMigrationStage > MIGRATION_OLD ) {
-                               $changeTagDefStore = new NameTableStore(
-                                       MediaWikiServices::getInstance()->getDBLoadBalancer(),
-                                       MediaWikiServices::getInstance()->getMainWANObjectCache(),
-                                       LoggerFactory::getInstance( 'NameTableSqlStore' ),
-                                       'change_tag_def',
-                                       'ctd_id',
-                                       'ctd_name',
-                                       null,
-                                       false,
-                                       function ( $insertFields ) {
-                                               $insertFields['ctd_user_defined'] = 0;
-                                               $insertFields['ctd_count'] = 0;
-                                               return $insertFields;
-                                       }
-                               );
+                               $changeTagDefStore = MediaWikiServices::getInstance()->getChangeTagDefStore();
 
                                foreach ( $tagsToAdd as $tag ) {
                                        $changeTagMapping[$tag] = $changeTagDefStore->acquireId( $tag );
index 018754b..4836c14 100644 (file)
@@ -529,7 +529,7 @@ class WebInstaller extends Installer {
        public function getAcceptLanguage() {
                global $wgLanguageCode, $wgRequest;
 
-               $mwLanguages = Language::fetchLanguageNames();
+               $mwLanguages = Language::fetchLanguageNames( null, 'mwfile' );
                $headerLanguages = array_keys( $wgRequest->getAcceptLang() );
 
                foreach ( $headerLanguages as $lang ) {
index 846be6c..85d1a2d 100644 (file)
@@ -30,7 +30,7 @@ class WebInstallerLanguage extends WebInstallerPage {
                $userLang = $r->getVal( 'uselang' );
                $contLang = $r->getVal( 'ContLang' );
 
-               $languages = Language::fetchLanguageNames();
+               $languages = Language::fetchLanguageNames( null, 'mwfile' );
                $lifetime = intval( ini_get( 'session.gc_maxlifetime' ) );
                if ( !$lifetime ) {
                        $lifetime = 1440; // PHP default
@@ -98,20 +98,13 @@ class WebInstallerLanguage extends WebInstallerPage {
         * @return string
         */
        public function getLanguageSelector( $name, $label, $selectedCode, $helpHtml = '' ) {
-               global $wgExtraLanguageCodes;
-
                $output = $helpHtml;
 
                $select = new XmlSelect( $name, $name, $selectedCode );
                $select->setAttribute( 'tabindex', $this->parent->nextTabIndex() );
 
-               $unwantedLanguageCodes = $wgExtraLanguageCodes +
-                       LanguageCode::getDeprecatedCodeMapping();
-               $languages = Language::fetchLanguageNames();
+               $languages = Language::fetchLanguageNames( null, 'mwfile' );
                foreach ( $languages as $code => $lang ) {
-                       if ( isset( $unwantedLanguageCodes[$code] ) ) {
-                               continue;
-                       }
                        $select->addOption( "$code - $lang", $code );
                }
 
index e58d98f..8175427 100644 (file)
@@ -54,13 +54,14 @@ class Xhprof {
                        throw new Exception( 'Profiling is already enabled.' );
                }
                self::$enabled = true;
-               if ( function_exists( 'xhprof_enable' ) ) {
-                       xhprof_enable( $flags, $options );
-               } elseif ( function_exists( 'tideways_enable' ) ) {
-                       tideways_enable( $flags, $options );
-               } else {
-                       throw new Exception( "Neither xhprof nor tideways are installed" );
-               }
+               self::callAny(
+                       [
+                               'xhprof_enable',
+                               'tideways_enable',
+                               'tideways_xhprof_enable'
+                       ],
+                       [ $flags, $options ]
+               );
        }
 
        /**
@@ -71,12 +72,27 @@ class Xhprof {
        public static function disable() {
                if ( self::isEnabled() ) {
                        self::$enabled = false;
-                       if ( function_exists( 'xhprof_disable' ) ) {
-                               return xhprof_disable();
-                       } else {
-                               // tideways
-                               return tideways_disable();
+                       return self::callAny( [
+                               'xhprof_disable',
+                               'tideways_disable',
+                               'tideways_xhprof_disable'
+                       ] );
+               }
+       }
+
+       /**
+        * Call the first available function from $functions.
+        * @param array $functions
+        * @param array $args
+        * @throws Exception
+        */
+       protected static function callAny( array $functions, array $args = [] ) {
+               foreach ( $functions as $func ) {
+                       if ( function_exists( $func ) ) {
+                               return $func( ...$args );
                        }
                }
+
+               throw new Exception( "Neither xhprof nor tideways are installed" );
        }
 }
index 1abf974..51136ff 100644 (file)
@@ -2114,11 +2114,11 @@ class Article implements Page {
         * @deprecated since 1.29. Use WikiPage::doEditContent() directly instead
         * @see WikiPage::doEditContent
         */
-       public function doEditContent( Content $content, $summary, $flags = 0, $baseRevId = false,
+       public function doEditContent( Content $content, $summary, $flags = 0, $originalRevId = false,
                User $user = null, $serialFormat = null
        ) {
                wfDeprecated( __METHOD__, '1.29' );
-               return $this->mPage->doEditContent( $content, $summary, $flags, $baseRevId,
+               return $this->mPage->doEditContent( $content, $summary, $flags, $originalRevId,
                        $user, $serialFormat
                );
        }
index 5bbdb6c..fd58a36 100644 (file)
@@ -1742,9 +1742,10 @@ class WikiPage implements Page, IDBAccessObject {
         * error will be returned. These two conditions are also possible with
         * auto-detection due to MediaWiki's performance-optimised locking strategy.
         *
-        * @param bool|int $baseRevId The revision ID this edit was based off, if any.
-        *   This is not the parent revision ID, rather the revision ID for older
-        *   content used as the source for a rollback, for example.
+        * @param bool|int $originalRevId: The ID of an original revision that the edit
+        * restores or repeats. The new revision is expected to have the exact same content as
+        * the given original revision. This is used with rollbacks and with dummy "null" revisions
+        * which are created to record things like page moves.
         * @param User $user The user doing the edit
         * @param string $serialFormat IGNORED.
         * @param array|null $tags Change tags to apply to this edit
@@ -1771,7 +1772,7 @@ class WikiPage implements Page, IDBAccessObject {
         * @throws MWException
         */
        public function doEditContent(
-               Content $content, $summary, $flags = 0, $baseRevId = false,
+               Content $content, $summary, $flags = 0, $originalRevId = false,
                User $user = null, $serialFormat = null, $tags = [], $undidRevId = 0
        ) {
                global $wgUser, $wgUseNPPatrol, $wgUseRCPatrol;
@@ -1796,7 +1797,7 @@ class WikiPage implements Page, IDBAccessObject {
                // used by this PageUpdater. However, there is no guarantee for this.
                $updater = $this->newPageUpdater( $user );
                $updater->setContent( 'main', $content );
-               $updater->setBaseRevisionId( $baseRevId );
+               $updater->setOriginalRevisionId( $originalRevId );
                $updater->setUndidRevisionId( $undidRevId );
 
                $needsPatrol = $wgUseRCPatrol || ( $wgUseNPPatrol && !$this->exists() );
index 2f2be47..55a5a1f 100644 (file)
  * ($wgProfiler['exclude']) containing an array of function names.
  * Shell-style patterns are also accepted.
  *
- * It is also possible to use the Tideways PHP extension, which is mostly
- * a drop-in replacement for Xhprof. Just change the XHPROF_FLAGS_* constants
- * to TIDEWAYS_FLAGS_*.
+ * This also supports Tideways-XHProf PHP extension, which is mostly a drop-in
+ * replacement for Xhprof (replace XHPROF_FLAGS_* with XHPROF_TIDEWAYS_FLAGS_*),
+ * as well as the older (discontinued) Tideways extension (TIDEWAYS_FLAGS_*).
  *
  * @copyright © 2014 Wikimedia Foundation and contributors
  * @ingroup Profiler
  * @see Xhprof
  * @see https://php.net/xhprof
  * @see https://github.com/facebook/hhvm/blob/master/hphp/doc/profiling.md
- * @see https://github.com/tideways/php-profiler-extension
+ * @see https://github.com/tideways/php-xhprof-extension
  */
 class ProfilerXhprof extends Profiler {
        /**
index 22c6afe..0a35178 100644 (file)
@@ -658,7 +658,7 @@ class UserrightsPage extends SpecialPage {
                        )->escaped();
 
                $grouplist = '';
-               $count = count( $list );
+               $count = count( $list ) + count( $tempList );
                if ( $count > 0 ) {
                        $grouplist = $this->msg( 'userrights-groupsmember' )
                                ->numParams( $count )
index d11838a..ce35717 100644 (file)
@@ -224,7 +224,7 @@ class LanguageConverter {
        /**
         * Get the variant specified in the URL
         *
-        * @return mixed Variant if one found, false otherwise.
+        * @return mixed Variant if one found, null otherwise
         */
        public function getURLVariant() {
                global $wgRequest;
@@ -247,7 +247,7 @@ class LanguageConverter {
        /**
         * Determine if the user has a variant set.
         *
-        * @return mixed Variant if one found, false otherwise.
+        * @return mixed Variant if one found, null otherwise
         */
        protected function getUserVariant() {
                global $wgUser, $wgContLang;
@@ -284,7 +284,7 @@ class LanguageConverter {
        /**
         * Determine the language variant from the Accept-Language header.
         *
-        * @return mixed Variant if one found, false otherwise.
+        * @return mixed Variant if one found, null otherwise
         */
        protected function getHeaderVariant() {
                global $wgRequest;
index 6d603f5..b838d06 100644 (file)
@@ -43,28 +43,28 @@ class EnConverter extends LanguageConverter {
         * @return string
         */
        function translate( $text, $toVariant ) {
-               if ( $toVariant === 'en-x-piglatin' ) {
-                       // Only process words composed of standard English alphabet, leave the rest unchanged.
-                       // This skips some English words like 'naïve' or 'résumé', but we can live with that.
-                       // Ignore single letters and words which aren't lowercase or uppercase-first.
-                       return preg_replace_callback( '/[A-Za-z][a-z\']+/', function ( $matches ) {
-                               $word = $matches[0];
-                               if ( preg_match( '/^[aeiou]/i', $word ) ) {
-                                       return $word . 'way';
-                               } else {
-                                       return preg_replace_callback( '/^(s?qu|[^aeiou][^aeiouy]*)(.*)$/i', function ( $m ) {
-                                               $ucfirst = strtoupper( $m[1][0] ) === $m[1][0];
-                                               if ( $ucfirst ) {
-                                                       return ucfirst( $m[2] ) . lcfirst( $m[1] ) . 'ay';
-                                               } else {
-                                                       return $m[2] . $m[1] . 'ay';
-                                               }
-                                       }, $word );
-                               }
-                       }, $text );
-               } else {
+               if ( $toVariant !== 'en-x-piglatin' ) {
                        return $text;
                }
+
+               // Only process words composed of standard English alphabet, leave the rest unchanged.
+               // This skips some English words like 'naïve' or 'résumé', but we can live with that.
+               // Ignore single letters and words which aren't lowercase or uppercase-first.
+               return preg_replace_callback( '/[A-Za-z][a-z\']+/', function ( $matches ) {
+                       $word = $matches[0];
+                       if ( preg_match( '/^[aeiou]/i', $word ) ) {
+                               return $word . 'way';
+                       }
+
+                       return preg_replace_callback( '/^(s?qu|[^aeiou][^aeiouy]*)(.*)$/i', function ( $m ) {
+                               $ucfirst = strtoupper( $m[1][0] ) === $m[1][0];
+                               if ( $ucfirst ) {
+                                       return ucfirst( $m[2] ) . lcfirst( $m[1] ) . 'ay';
+                               }
+
+                               return $m[2] . $m[1] . 'ay';
+                       }, $word );
+               }, $text );
        }
 }
 
@@ -75,13 +75,12 @@ class EnConverter extends LanguageConverter {
  */
 class LanguageEn extends Language {
        function __construct() {
-               global $wgUsePigLatinVariant, $wgHooks;
+               global $wgUsePigLatinVariant;
 
                parent::__construct();
 
                if ( $wgUsePigLatinVariant ) {
                        $this->mConverter = new EnConverter( $this, 'en', [ 'en', 'en-x-piglatin' ] );
-                       $wgHooks['PageContentSaveComplete'][] = $this->mConverter;
                }
        }
 }
index 8f9b163..0344828 100644 (file)
        "rcfilters-activefilters": "المرشحات النشطة",
        "rcfilters-activefilters-hide": "إخفاء",
        "rcfilters-activefilters-show": "عرض",
+       "rcfilters-activefilters-hide-tooltip": "إخفاء منطقة المرشحات النشطة",
+       "rcfilters-activefilters-show-tooltip": "إظهار منطقة المرشحات النشطة",
        "rcfilters-advancedfilters": "مرشحات متقدمة",
        "rcfilters-limit-title": "النتائج للعرض",
        "rcfilters-limit-and-date-label": "$1 {{PLURAL:$1|تغيير|تغييرات}}، $2",
index e4eeccc..15f06a1 100644 (file)
@@ -19,7 +19,8 @@
                        "George Animal",
                        "Lokal Profil",
                        "Joe Watzmo",
-                       "WhatamIdoing"
+                       "WhatamIdoing",
+                       "Alexx"
                ]
        },
        "tog-underline": "Links unterstreichen:",
        "and": "&#32;und",
        "faq": "Oft gstejte Frong",
        "actions": "Aktiona",
-       "namespaces": "Namasramm",
+       "namespaces": "Namasram",
        "variants": "Variantn",
+       "navigation-heading": "Navigationsmenü",
        "errorpagetitle": "Fehla",
        "returnto": "Zruck za da Seitn $1.",
        "tagline": "Aus {{SITENAME}}",
        "permalink": "Permanenta Link",
        "print": "Drucken",
        "view": "Leesen",
-       "edit": "Werkln",
+       "view-foreign": "Af $1 åschaung",
+       "edit": "Weakln",
        "create": "Aufbaun",
        "delete": "Leschn",
        "undelete_short": "{{PLURAL:$1|1 Version|$1 Versiona}} wiedaheastäin",
        "personaltools": "Mei Weakzeig",
        "talk": "Dischkrian",
        "views": "Osichtn",
-       "toolbox": "Werkzeigkisten",
+       "toolbox": "Weakzeig",
        "imagepage": "Daateiseiten åzoang",
        "mediawikipage": "Inhoitsseiten åzoang",
        "templatepage": "Vurlongseiten åzoang",
        "pool-errorunknown": "Unbekånnter Feeler",
        "aboutsite": "Iba {{SITENAME}}",
        "aboutpage": "Project:Iba",
-       "copyright": "Da Inhoid is unter da $1 vafiagbor.",
+       "copyright": "Den Inhoid gibts unta da Lizent $1, wen nix andast oogem is.",
        "copyrightpage": "{{ns:project}}:Urhebarecht",
        "currentevents": "Aktuelle Ereigniss",
        "currentevents-url": "Project:Aktuelle Ereigniss",
-       "disclaimers": "Impressum",
+       "disclaimers": "Hoftungsausschluss",
        "disclaimerpage": "Project:Impressum",
        "edithelp": "Huif fias Werkln",
        "mainpage": "Hoamseitn",
        "retrievedfrom": "Vh „$1“",
        "youhavenewmessages": "Du host $1 ($2).",
        "youhavenewmessagesmulti": "Du host neiche Nochrichtn: $1",
-       "editsection": "Werkln",
+       "editsection": "Weakln",
        "editold": "Werkln",
        "viewsourceold": "Quejtext ozoagn",
        "editlink": "werkln",
        "nstab-template": "Vorlog",
        "nstab-help": "Hüfeseiten",
        "nstab-category": "Kategorie",
+       "mainpage-nstab": "Hóamsaiten",
        "nosuchaction": "De Akzion gibts ned",
        "nosuchactiontext": "Dé in da URL ågeewerne Akzión werd voh MediaWiki néd unterstytzd.\nEs kå a Schreibfeeler in da URL vurlieng óder es is a feelerhofter Link åklickt worn.\nEs kå sé aa um an Prógrammierfeeler in da Software, dé auf {{SITENAME}} bnutzd werd, håndeln.",
        "nosuchspecialpage": "De Speziaalsaiten gibts ned",
        "actionthrottled": "Aktionsfrequenz drossld",
        "actionthrottledtext": "A Anti-Spam-Skript begrenzd de Ozoi vo de Vaendarunga pro Minutn. Vasuachs in a boar Minutn wieda.",
        "protectedpagetext": "Dé Seiten is gschytzd worn, um Beorweitungen z' vahindern.",
-       "viewsourcetext": "Du kåst ower 'n Quötext åschaung und kópirn:",
+       "viewsourcetext": "Du konst a en Quejtext vo da Seitn ooschaugn und kopian:",
        "viewyourtext": "Du kåst 'n Quejtext vah '''deiner Beorwatung''' derer Seiten betrochten und kópiern:",
        "protectedinterface": "Dé Seiten do enthoit Text fyr d' Benutzerówerflächen voh da Software und is gschytzd, um an Missbrauch vurzbeing.",
        "editinginterface": "'''Ówocht:''' Dé Seiten do enthoit voh da MediaWiki-Software gnutzden Text. \nÄnderrungen auf derer Seiten wirken sé auf d' Benutzerówerflächen aus.\nZiag bittscheh im Foi voh Ywersétzungen in Betrocht, dé bei [https://translatewiki.net/wiki/Main_Page?setlang=de translatewiki.net], da Lókaalisiarungsblottform fyr MediaWiki, durchzfyrn.",
        "accountcreated": "Benytzerkonto is erstöid worn",
        "accountcreatedtext": "'s Benytzerkonto $1 is aigrichtt worn.",
        "loginlanguagelabel": "Sproch: $1",
-       "pt-login": "Eilogga",
+       "pt-login": "Omejdn",
+       "pt-createaccount": "Benitzerkóntó åléeng",
        "changepassword": "Posswort ändern",
        "oldpassword": "Oids Posswort:",
        "newpassword": "Neichs Posswort:",
        "accmailtext": "E zuafällig genariards Posswort fyr [[User talk:$1|$1]] is an $2 gschickt worn.\n\nDes Posswort fyr des naiche Benutzerkonto kå auf da Speziaalseiten  „[[Special:ChangePassword|Posswort ändern]]“ gändert wern.",
        "newarticle": "(Neich)",
        "newarticletext": "Du bist am Link gfoigt, wos no koa Seitn gibt.\nUm de Seitn ozlegn, trog dein Text im untan Kostn ei (schaug af da [$1 Huifeseitn] fia mea Infos).\nWens a Irrtum is, dassd do bist, nach druck in Zruck-Knopf vom Brausa.",
-       "anontalkpagetext": "---- ''De Seiten werd dodazua hergnumma, am ned-ågmöiderten Benutzer Nochrichten z' hinterlossen.\nWånnst mid de Kommentare auf derer Seiten nix åfanga kåst, is vamuatlich da friarerne Inhower vo derer IP-Adress gmoat und du kåstas ignorirn.\nWånnst a anonymer Benutzer bist und denkst, das irrelevante Kommentare ån di grichtt worn san, [[Special:UserLogin|möid de bittschee å]], um zuakynfteg Vawirrung z' vamein.''",
+       "anontalkpagetext": "----\n<em>Des is a Dischk vo an anonyman Nutze, wo no koa Konto ooglegt hod, oda wo s grod ned nutzt.</em>\nDesweng vawend ma a IP-Adress zua Identifiziarung.\nSo a IP-Adress kina mearane Nutza gmoasam vawendn.\nWannst du a anonma Nutza bist und mid dem Kommentar nix oofanga konst, konst da oafoch a [[Special:CreateAccount|Nutzakonto oolegn]] oda di [[Special:UserLogin|oomejdn]], damidst ned mid andan Nutzan vawexlst weasd.",
        "noarticletext": "De Seitn enthoid momentan koan Text ned.\nDu konst [[Special:Search/{{PAGENAME}}|nochm Titl]] in andan Seitn suacha,\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} de Logbiacha duachsuacha],\noda [{{fullurl:{{FULLPAGENAME}}|action=edit}} de Seitn beorbatn]</span>.",
        "noarticletext-nopermission": "Af dea Seitn gibts zua Zeit koan Text.\nDu konst [[Special:Search/{{PAGENAME}}|in Seitntitl]] in andan Seitn suacha, oda <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} dia de Logbiachln dazua oschaugn]</span>, oba du hosd koa Berechtigung de Seitn ozlegn.",
        "userpage-userdoesnotexist": "Des Benutzerkonto „<nowiki>$1</nowiki>“ is ned vurhånden. Bittschee priaf, ob du de Seiten wirkle erstöin/beorweiten wüist.",
        "template-semiprotected": "(schreibgschitzt fia ned-ogmejdte Nutza)",
        "hiddencategories": "De Seitn is in {{PLURAL:$1|a vasteckde Kategorie|$1 vasteckde Kategorina}} eisortiad:",
        "nocreate-loggedin": "Du host koah Berechtigung, neiche Seiten z' erstön.",
-       "permissionserrors": "Berechtigungsfeeler",
+       "permissionserrors": "Berechtigungsfaila",
        "permissionserrorstext": "Du hosd koa Recht, des z doa. {{PLURAL:$1|Grund|Grind}}:",
        "permissionserrorstext-withaction": "Du hosd aus {{PLURAL:$1|foigendm Grund|foigendn Grind}} koa Recht ned, $2:",
        "recreate-moveddeleted-warn": "'''Obocht: Du legst a Seitn o, wo scho friaa glescht worn is.'''\n\nBittschee ibaleg da genau, obs sinnvoi is de Seitn ozlegn.\nDes Lesch- und Vaschiab-Logbuach dazua findsd do:",
        "histlegend": "Zua Ozoag vo de Endarunga oafoch de z vagleichandn Versiona und Schoitflechn „{{int:compareselectedversions}}“ druckn.<br />\n* ({{int:cur}}) = Unterschied zua aktuelln Version, ({{int:last}}) = Unterschied zua vorherign Version\n* Uhrzeid/Datum = Version za dera Zeid, Nutzanama/IP-Adress vom Beorbata, {{int:minoreditletter}} = Kloane Endarung",
        "history-fieldset-title": "Suach in da Versionsgschicht",
        "history-show-deleted": "Nua gleschte Versiona",
-       "histfirst": "Ejtaste",
+       "histfirst": "Ejdaste",
        "histlast": "Neiaste",
        "historyempty": "(laar)",
        "history-feed-title": "Versiónsgschicht",
        "shown-title": "Zoag $1 {{PLURAL:$1|Ergebnis|Ergebniss}} pro Seitn",
        "viewprevnext": "Zoag ($1 {{int:pipe-separator}} $2) ($3)",
        "searchmenu-exists": "'''Es gibt a Seiten, wo „[[:$1]]“ hoasst.'''",
-       "searchmenu-new": "'''De Seitn „[[:$1]]“ in em Wiki eastejn.'''",
+       "searchmenu-new": "<strong>Schreib an Artike „[[:$1]]“ in dem Wiki.</strong> {{PLURAL:$2|0=|Schaug da aa de Artike oo, wosd iwa dei Suach gfundn host.|Schaug da aa de gfundanan Suachagebniss oo.}}",
        "searchprofile-articles": "Inhoidsseitn",
        "searchprofile-images": "Muitimedia",
        "searchprofile-everything": "Ollas",
        "action-createpage": "Seiten z' dastön",
        "action-autopatrol": "eigerne Beorweitungen ois kontroilird markirn",
        "nchanges": "$1 {{PLURAL:$1|Endarung|Endarunga}}",
+       "enhancedrc-history": "Valaaf",
        "recentchanges": "Letzte Endarunga",
        "recentchanges-legend": "Ozoagoptiona",
        "recentchanges-summary": "Auf derer Seiten kåst d' létzden Änderrungen auf '''{{SITENAME}}''' nochévavóing.",
        "recentchanges-label-minor": "Kloane Endarunga",
        "recentchanges-label-bot": "Endarung duach an Bot",
        "recentchanges-label-unpatrolled": "De Endarung is no ned kontrolliad worn",
-       "rcnotefrom": "Untn san de Endarunga seit  '''$2''' (bis za '''$1''' Ozoagn).",
+       "rcnotefrom": "Oozoagt {{PLURAL:$5|wead de Endarung|wean de Endarunga}} seitd <strong>$3, $4</strong> (max. <strong>$1</strong> Eihdräg).",
        "rclistfrom": "Nua Endarunga seit $3 $2 zoagn",
        "rcshowhideminor": "Kloane Endarunga $1",
        "rcshowhideminor-hide": "Ausblendn",
        "rcshowhidebots": "Bots $1",
-       "rcshowhideliu": "Eigloggte Nutza $1",
+       "rcshowhidebots-show": "Åzóang",
+       "rcshowhideliu": "Registriade Nutza $1",
        "rcshowhideliu-hide": "Ausblendn",
        "rcshowhideanons": "Anonyme Nutza $1",
        "rcshowhideanons-hide": "Ausblendn",
        "rcshowhidepatr": "Kontrolliade Endarunga $1",
        "rcshowhidemine": "Meine Beidreg $1",
        "rcshowhidemine-hide": "Ausblendn",
-       "rclinks": "De letztn Endarunga vo de letztn $2 Dog zoagn",
+       "rclinks": "Zoag de letztn $1 Endarunga vo de letztn $2 Dog.",
        "diff": "Untaschied",
        "hist": "Versiona",
        "hide": "Ausblendn",
        "newpageletter": "N",
        "boteditletter": "B",
        "number_of_watching_users_pageview": "[$1 {{PLURAL:$1|beówochtender|beówochtende}} Benutzer]",
+       "rc-change-size-new": "$1 {{PLURAL:$1|Byte|Bytes}} noch da Éndarung",
        "newsectionsummary": "Neicher Obschnit /* $1 */",
        "rc-enhanced-expand": "Details zoagn (braucht JavaScript)",
        "rc-enhanced-hide": "Details vastecka",
        "recentchangeslinked-feed": "Valinkts priaffm",
        "recentchangeslinked-toolbox": "Endarunga af valinktn Seitn",
        "recentchangeslinked-title": "Endarunga wo vo „$1“ valinkt san",
-       "recentchangeslinked-summary": "Des is a Listn vo de letztn Endarunga af Seitn, de wo vo ana bstimmtn Seitn valinkt san (bzw. za ana bstimmtn Kategorie ghean).\nSeitn af [[Special:Watchlist|deina Beobochtungslistn]] san '''fett'''.",
+       "recentchangeslinked-summary": "Gib an Saitennåman aih, um Éndarungen auf Saiten z' seeng, dé af óder voh derer Saiten valinkt san. Daasd Midgliader vo aner Kategorie siagst, gib „{{ns:category}}:''Nåm voh da Kategorie''“ aih. Énderungen voh Saiten af [[Special:Watchlist|dainer Beówochtungslisten]] san<strong>fett</strong> viarerghóom.",
        "recentchangeslinked-page": "Seitn:",
        "recentchangeslinked-to": "Zoagt Änderrungen auf Seiten, dé do her valinken",
        "upload": "Affelodn",
        "sharedupload-desc-there": "De Datei stãmmt aus $1 und deaf bei ãndera Projekte vawendt wean. Schau auf'd [$2 Dateibeschreibungsseitn] fia weidare Infoamazionen.",
        "sharedupload-desc-here": "De Datei stammt aus $1 und deaf vo andan Projektn vawendt wean. De Bschreibung vo da [$2 Dateibschreibungsseitn] wead unen ozoagt.",
        "uploadnewversion-linktext": "A neiche Versión voh derer Daatei aufféloon",
+       "upload-disallowed-here": "Du kåst dé Daatai néd iwerschraim.",
        "filerevert-defaultcomment": "zruckgsétzd auf dé Versión vom $1, $2 ($3)",
        "filerevert-submit": "Zrucksetzen",
        "filedelete-legend": "Lésch dé Daatei",
        "emailuserfooter": "Dé E-Mail is voh {{SITENAME}}-Benutzer „$1“ an „$2“ gsendt worn.",
        "usermessage-summary": "Systémnoochricht gspeicherd.",
        "usermessage-editor": "Systém-Messenger",
-       "watchlist": "Beobochtungslistn",
+       "watchlist": "Mei Beobochta",
        "mywatchlist": "Mei Beobochta",
        "watchlistfor2": "Vo $1 $2",
        "nowatchlist": "Es gibt koane Eihträg auf deiner Beówochtungslisten.",
        "notvisiblerev": "Versión is gléschd worn",
        "watchlist-details": "Du beoochst {{PLURAL:$1|$1 Seitn}}, Dischkriaseitn ned mitgrechnad",
        "wlheader-enotif": "Da E-Mail-Benoochrichtigungsdeanst is aktivierd.",
-       "wlheader-showupdated": "Seiten mid noh néd gseengne Änderrungen wern '''fett''' dorgstöd.",
-       "wlnote": "Es {{PLURAL:$1|fóigt d' létzde Änderrung|fóing d' létzden '''$1''' Änderrungen}} voh da/dé {{PLURAL:$2|Stund| '''$2''' Stunden}}. Staund: $3, $4 Uar.",
-       "wlshowlast": "Zoag dé Änderrungen voh dé létzden $1 Stunden, $2 Dog óder  (in dé létzden 30 Dog).",
+       "wlheader-showupdated": "Seitn mid no ned oogschaugtn Endarunga wean '''fett''' gschriem.",
+       "wlnote": "Es {{PLURAL:$1|foigt de letzte Endarung|foign de letztn <strong>$1</strong> Endarunga}} vo de letztn {{PLURAL:$2|Stunde|<strong>$2</strong> Stundn}}. Stand: $3, $4 Uah.",
+       "wlshowlast": "Zoag de Endarunga vo de letztn $1 Stund, $2 Dog.",
        "watchlist-options": "Mei Beobochta: Optiona",
        "watching": "Beówochten ...",
        "unwatching": "Néd Beówochten",
        "contributions": "{{GENDER:$1|Nutza}}beidreg",
        "contributions-title": "Nutzabeidräg vo „$1“",
        "mycontris": "Meine Beidreg",
-       "contribsub2": "Vo $1 ($2)",
+       "contribsub2": "Vo {{GENDER:$3|$1}} ($2)",
        "uctop": "(aktuell)",
        "month": "und Monad:",
        "year": "Bis zan Joar:",
        "importlogpage": "Import-Logbuach",
        "tooltip-pt-userpage": "Dei Nutzaseitn",
        "tooltip-pt-mytalk": "Dei Dischkriaseitn",
-       "tooltip-pt-preferences": "Deine Preferenzen",
+       "tooltip-pt-preferences": "{{GENDER:|Daine}} Aihstöungen",
        "tooltip-pt-watchlist": "A Listn vo Seitn, wos du beobochtest",
        "tooltip-pt-mycontris": "A Listn vo de oagna Beidreg",
        "tooltip-pt-login": "Warad schee, wensd di omejdn dadast, es is oba ned zwingend nedig.",
        "tooltip-pt-logout": "Auslogga",
+       "tooltip-pt-createaccount": "Mir loon di aih, a Benitzerkóntó åzléeng und di åzmöden. Dés is ower dert néd nédig.",
        "tooltip-ca-talk": "Dischkrian iban Seitninhoid",
        "tooltip-ca-edit": "Du konsd de Seitn beorbatn. Bittschee vawendt in Vorschau-Knopf bevorsd speichasd.",
        "tooltip-ca-addsection": "Neichn Obschnitt ofanga",
        "lastmodifiedatby": "Dé Seiten is zletzt am $1 um $2 voh $3 gänderd worn.",
        "othercontribs": "Basiard auf da Orweid voh $1",
        "creditspage": "Seiteninformaziónen",
+       "simpleantispam-label": "Spamschutziwerpriaffung.\nDoda <strong>nichts</strong> aihtroong!",
        "pageinfo-redirects-name": "Ozoi vo de Weidaloatunga zua dea Seitn",
        "pageinfo-subpages-value": "$1 ($2 {{PLURAL:$2|Weidaloatung|Weidaloatunga}}; $3 {{PLURAL:$3|Untaseitn|Untaseitn}})",
+       "pageinfo-toolboxlink": "Saiteninfórmaziónen",
        "pageinfo-redirectsto": "Weidaloatunga af",
        "markedaspatrollederrortext": "Du muasst a Seitenänderrung auswön",
        "deletedrevision": "Oide Version $1 glöscht.",
        "file-info-size": "$1 × $2 Pixel, Dateigress: $3, MIME-Typ: $4",
        "file-nohires": "Es gibt koa hehare Aflesung.",
        "svg-long-desc": "SVG-Datei, Basisgress: $1 × $2 Pixl, Dateigress: $3",
-       "show-big-image": "Volle Aflesung",
+       "show-big-image": "Originaldatei",
+       "show-big-image-size": "$1 × $2 Pixel",
        "newimages": "Neiche Daatein",
        "newimages-summary": "Dé Speziaalseiten zoagt d' zlétzd aufféglooderne Daatei auh.",
        "noimages": "Koane Daatein gfunden.",
        "tags": "Gütige Änderrungsmarkiarunen",
        "tag-filter": "[[Special:Tags|Markiarungs]]-Fuita:",
        "tag-filter-submit": "Füter",
+       "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|Markierung|Markiarungen}}]]: $2)",
        "tags-title": "Markiarungen",
        "tags-intro": "Dé Seiten zoagt olle Markiarungen, dé fyr Beorweidungen vawendt wern, sówia dé Bedeitung voh dé.",
        "tags-tag": "Markiarungsnåm",
        "htmlform-selectorother-other": "Åndre",
        "logentry-move-move_redir": "$1 hod de Seitn $3 af $4 {{GENDER:$2|verschom}} und hod dabei a Weidaloatung ibaschriem",
        "logentry-move-move_redir-noredirect": "$1 hod de Seitn $3 af $4 {{GENDER:$2|verschom}} und dabei a Weidaloatung ibaschriem, ohne a neiche ozlegn",
+       "logentry-newusers-create": "Benutzerkóntó $1 is {{GENDER:$2|erstöd}} worn",
        "searchsuggest-search": "Suach (af Boarisch oda Deutsch)",
        "searchsuggest-containing": "Voitextsuach noch ..."
 }
index e041164..d024b5d 100644 (file)
        "rcfilters-activefilters": "Актыўныя фільтры",
        "rcfilters-activefilters-hide": "Схаваць",
        "rcfilters-activefilters-show": "Паказаць",
+       "rcfilters-activefilters-hide-tooltip": "Схаваць поле актыўных фільтраў",
        "rcfilters-advancedfilters": "Пашыраныя фільтры",
        "rcfilters-limit-title": "Паказаць вынікаў",
        "rcfilters-limit-and-date-label": "$1 {{PLURAL:$1|зьмена|зьмены|зьменаў}}, $2",
        "unknown-error": "Узьнікла невядомая памылка.",
        "tmp-create-error": "Немагчыма стварыць часовы файл.",
        "tmp-write-error": "Памылка запісу часовага файлу.",
-       "large-file": "Рэкамэндаваны памер файлаў — ня болей $1;\nпамер гэтага файла — $2.",
-       "largefileserver": "Памер гэтага файла перавышае максымальна дазволены.",
+       "large-file": "Рэкамэндаваны памер файлаў — ня болей за $1;\nпамер гэтага файлу — $2.",
+       "largefileserver": "Памер гэтага файлу перавышае максымальна дазволены сэрвэрам.",
        "emptyfile": "Загружаны файл, здаецца, пусты. Магчыма гэты адбылося з-за памылкі ў назьве файла.\nУдакладніце, ці Вы сапраўды жадаеце загрузіць гэты файл.",
        "windows-nonascii-filename": "Гэтая вікі не падтрымлівае назвы файлаў з спэцыяльнымі сымбалямі.",
        "fileexists": "Файл з такой назвай ужо існуе. Калі ласка, праверце <strong>[[:$1]]</strong>, калі Вы ня ўпэўненыя, што жадаеце яго замяніць. [[$1|thumb]]",
index cab15ae..7f72179 100644 (file)
        "category-empty": "''Diese Kategorie enthält zurzeit keine Seiten oder Medien.''",
        "hidden-categories": "{{PLURAL:$1|Versteckte Kategorie|Versteckte Kategorien}}",
        "hidden-category-category": "Versteckte Kategorien",
-       "category-subcat-count": "{{PLURAL:$2|Diese Kategorie enthält nur folgende Unterkategorie.|Diese Kategorie enthält {{PLURAL:$1|folgende Unterkategorie|die folgende $1 Unterkategorien}}, von $2 insgesamt.}}",
-       "category-subcat-count-limited": "Diese Kategorie enthält folgende {{PLURAL:$1|Unterkategorie|$1 Unterkategorien}}:",
+       "category-subcat-count": "{{PLURAL:$2|Diese Kategorie enthält die folgende Unterkategorie:|Diese Kategorie enthält die {{PLURAL:$1|folgende Unterkategorie|folgenden $1 Unterkategorien}} ($2 insgesamt):}}",
+       "category-subcat-count-limited": "Diese Kategorie enthält die {{PLURAL:$1|folgende Unterkategorie|folgenden $1 Unterkategorien}}:",
        "category-article-count": "{{PLURAL:$2|Diese Kategorie enthält nur die folgende Seite.|Folgende {{PLURAL:$1|Seite ist| $1 Seiten sind}} in dieser Kategorie, von $2 insgesamt.}}",
        "category-article-count-limited": "{{PLURAL:$1|Folgende Seite ist|Die folgenden $1 Seiten sind}} in dieser Kategorie enthalten:",
        "category-file-count": "{{PLURAL:$2|Diese Kategorie enthält nur folgende Datei.|Folgende {{PLURAL:$1|Datei ist|$1 Dateien sind}} in dieser Kategorie, von $2 insgesamt.}}",
        "rcfilters-activefilters": "Aktive Filter",
        "rcfilters-activefilters-hide": "Ausblenden",
        "rcfilters-activefilters-show": "Anzeigen",
+       "rcfilters-activefilters-hide-tooltip": "Bereich der aktiven Filter ausblenden",
+       "rcfilters-activefilters-show-tooltip": "Bereich der aktiven Filter anzeigen",
        "rcfilters-advancedfilters": "Erweiterte Filter",
        "rcfilters-limit-title": "Anzuzeigende Ergebnisse",
        "rcfilters-limit-and-date-label": "{{PLURAL:$1|Eine Änderung|$1 Änderungen}}, $2",
index fa7a604..bcb2ab9 100644 (file)
        "confirm-unwatch-top": "Κατάργηση αυτής της σελίδας από τη λίστα παρακολούθησης σας;",
        "confirm-rollback-button": "Εντάξει",
        "confirm-rollback-top": "Επαναφέρετε τις επεξεργασίες σε αυτή τη σελίδα;",
-       "semicolon-separator": "&#32;",
+       "semicolon-separator": "&#32;",
        "quotation-marks": "«$1»",
        "imgmultipageprev": "← προηγούμενη σελίδα",
        "imgmultipagenext": "επόμενη σελίδα →",
index cc44a70..53ab74d 100644 (file)
        "expansion-depth-exceeded-warning": "La página ha sobrepasado el límite de profundidad de expansión",
        "parser-unstrip-loop-warning": "Se ha detectado un bucle en la función \"unstrip\"",
        "unstrip-depth-warning": "Se ha superado el límite de recursividad de la función \"unstrip\" ($1)",
+       "unstrip-depth-category": "Páginas en que se excede el límite de profundidad de la función «unstrip»",
+       "unstrip-size-warning": "Se excedió el límite de tamaño de la función «unstrip» ($1)",
+       "unstrip-size-category": "Páginas en que se excede el límite de tamaño de la función «unstrip»",
        "converter-manual-rule-error": "Se ha detectado un error en una regla manual de conversión de idioma",
        "undo-success": "Puedes deshacer la edición. Antes de deshacer la edición, comprueba la siguiente comparación para verificar que realmente es lo que quieres hacer, y entonces guarda los cambios para así efectuar la reversión.",
        "undo-failure": "No se ha podido deshacer la edición ya que otro usuario ha realizado una edición intermedia.",
        "rcfilters-activefilters": "Filtros activos",
        "rcfilters-activefilters-hide": "Ocultar",
        "rcfilters-activefilters-show": "Mostrar",
+       "rcfilters-activefilters-hide-tooltip": "Ocultar apartado Filtros activos",
+       "rcfilters-activefilters-show-tooltip": "Mostrar apartado Filtros activos",
        "rcfilters-advancedfilters": "Filtros avanzados",
        "rcfilters-limit-title": "Resultados que mostrar",
        "rcfilters-limit-and-date-label": "$1 {{PLURAL:$1|cambio|cambios}}, $2",
        "rcfilters-preference-label": "Ocultar la versión mejorada de Cambios recientes",
        "rcfilters-preference-help": "Revierte el rediseño de interfaz de 2017 y desactiva todas las herramientas añadidas desde entonces.",
        "rcfilters-watchlist-preference-label": "Ocultar la versión mejorada de la lista de seguimiento",
+       "rcfilters-watchlist-preference-help": "Revierte el rediseño de la interfaz de 2017 e indisponibiliza todas las herramientas añadidas desde entonces.",
        "rcfilters-filter-showlinkedfrom-label": "Mostrar cambios en páginas enlazadas desde",
        "rcfilters-filter-showlinkedfrom-option-label": "<strong>Páginas enlazadas desde</strong> la página seleccionada",
        "rcfilters-filter-showlinkedto-label": "Mostrar cambios en páginas que enlazan a",
        "limitreport-templateargumentsize-value": "$1/$2 {{PLURAL:$2|byte|bytes}}",
        "limitreport-expansiondepth": "Profundidad máxima de expansión",
        "limitreport-expensivefunctioncount": "Cuenta de la función expansiva del analizador",
+       "limitreport-unstrip-depth": "Profundidad de recursión de función «unstrip»",
        "limitreport-unstrip-size-value": "$1/$2 {{PLURAL:$2|byte|bytes}}",
        "expandtemplates": "Expandir plantillas",
        "expand_templates_intro": "Esta página especial toma un texto wiki y expande todas sus plantillas recursivamente.\nTambién expande las funciones sintácticas como <code><nowiki>{{</nowiki>#language:…}}</code>, y variables como\n<code><nowiki>{{</nowiki>CURRENTDAY}}</code>. De hecho, expande casi cualquier cosa que esté entre llaves dobles.",
index af53e14..8677bc8 100644 (file)
        "rcfilters-activefilters": "Iragazki aktiboak",
        "rcfilters-activefilters-hide": "Ezkutatu",
        "rcfilters-activefilters-show": "Erakutsi",
+       "rcfilters-activefilters-hide-tooltip": "Ezkutatze Iragazki Aktiboen eremua",
+       "rcfilters-activefilters-show-tooltip": "Erakuste Iragazki Aktiboen eremua",
        "rcfilters-advancedfilters": "Iragazki aurreratuak",
        "rcfilters-limit-title": "Erakusteko emaitzak",
        "rcfilters-limit-and-date-label": "$1 {{PLURAL:$1|aldaketa|aldaketak}}, $2",
        "limitreport-templateargumentsize-value": "{{PLURAL:$2|byte $1/$2|$1/$2 byte}}",
        "limitreport-expansiondepth": "Gehienezko espantsio sakonera",
        "limitreport-expensivefunctioncount": "Parser funtzio kontaketa garestia",
+       "limitreport-unstrip-depth": "Unstrip errekurtsio sakona",
        "expandtemplates": "Txantiloi ordezkatzailea",
        "expand_templates_intro": "Orri berezi honek wiki-testua hartu eta txantiloi guztiak modu errekurtsiboan zabaltzen ditu.\nOnartutako funtzio sintaktikoak ere ordezkatzen ditu, hala nola\n<code><nowiki>{{</nowiki>#language:…}}</code>; eta aldagaiak ere, hala nola\n<code><nowiki>{{</nowiki>CURRENTDAY}}</code>.\nIzan ere, kortxete bikoitzen arteko ia edozer zabaltzen du.",
        "expand_templates_title": "Izenburua ({{FULLPAGENAME}} ordezkatzeko, eta abar):",
index a81a622..d2bcc12 100644 (file)
        "rcfilters-activefilters": "Filtres actifs",
        "rcfilters-activefilters-hide": "Masquer",
        "rcfilters-activefilters-show": "Afficher",
+       "rcfilters-activefilters-hide-tooltip": "Masquer la zone des Filtres actifs",
+       "rcfilters-activefilters-show-tooltip": "Afficher la zone des Filtres actifs",
        "rcfilters-advancedfilters": "Filtres avancés",
        "rcfilters-limit-title": "Résultats à afficher",
        "rcfilters-limit-and-date-label": "$1 modification{{PLURAL:$1||s}}, $2",
index 24106ce..2236e97 100644 (file)
        "tooltip-search-go": "𐌲𐌰𐌲𐌲 𐌳𐌿 𐌻𐌰𐌿𐌱𐌰 𐌼𐌹𐌸 𐌸𐌰𐌼𐌼𐌰 𐌲𐌰𐌻𐌴𐌹𐌺𐌰𐌼𐌼𐌰 𐌽𐌰𐌼𐌹𐌽",
        "tooltip-search-fulltext": "𐍃𐍉𐌺𐌴𐌹 𐌻𐌰𐌿𐌱𐌰𐌽𐍃 𐌸𐌰𐌹𐌼 𐌱𐍉𐌺𐍉𐌼",
        "tooltip-p-logo": "𐌲𐌰𐍅𐌴𐌹𐍃 𐌷𐌰𐌿𐌱𐌹𐌳𐌰𐌻𐌰𐌿𐌱𐌹𐍃",
-       "tooltip-n-mainpage": "𐌲𐌰𐍅𐌴𐌹𐍃 𐌷𐌰𐌿𐌱𐌹𐌳𐌰𐌻𐌰𐌿𐌱𐌹𐍃",
+       "tooltip-n-mainpage": "𐌲𐌰𐍅𐌴𐌹𐍃𐍉 𐌷𐌰𐌿𐌱𐌹𐌳𐌰𐌻𐌰𐌿𐌱𐌹𐍃",
        "tooltip-n-mainpage-description": "𐌲𐌰𐍅𐌴𐌹𐍃 𐌷𐌰𐌿𐌱𐌹𐌳𐌰𐌻𐌰𐌿𐌱𐌹𐍃",
        "tooltip-n-portal": "𐌱𐌹 𐍆𐌰𐌿𐍂𐌰𐍅𐌰𐌿𐍂𐍀𐌰, 𐍈𐌰 𐌼𐌰𐌲𐍄 𐍄𐌰𐌿𐌾𐌰𐌽, 𐍈𐌰𐍂 𐌱𐌹𐌲𐌹𐍄𐌹𐍃 𐍅𐌰𐌹𐌷𐍄𐌹𐌽𐍃",
        "tooltip-n-currentevents": "𐌱𐌹𐌲𐌹𐍄 𐌼𐌰𐌹𐍃 𐌺𐌿𐌽𐌸𐌹 𐌱𐌹 𐌽𐌹𐌿𐌾𐍉𐍃 𐍅𐌰𐌿𐍂𐌸𐌰𐌽𐍉𐍃 𐍅𐌰𐌹𐌷𐍄𐌹𐌽𐍃",
index 93ad441..7aa831d 100644 (file)
@@ -67,7 +67,7 @@
        "tog-shownumberswatching": "הצגת מספר המשתמשים העוקבים",
        "tog-oldsig": "החתימה הנוכחית שלך:",
        "tog-fancysig": "התייחסות לחתימה כקוד ויקי (ללא קישור אוטומטי)",
-       "tog-uselivepreview": "×\9c×\94ר×\90×\95ת תצוגה מקדימה בלי לטעון מחדש את הדף",
+       "tog-uselivepreview": "×\94צ×\92ת תצוגה מקדימה בלי לטעון מחדש את הדף",
        "tog-forceeditsummary": "הצגת אזהרה בעת הכנסת תקציר עריכה ריק",
        "tog-watchlisthideown": "הסתרת עריכות שלי ברשימת המעקב",
        "tog-watchlisthidebots": "הסתרת עריכות של בוטים ברשימת המעקב",
        "rcfilters-activefilters": "מסננים פעילים",
        "rcfilters-activefilters-hide": "הסתרה",
        "rcfilters-activefilters-show": "הצגה",
+       "rcfilters-activefilters-hide-tooltip": "הסתרת תיבת המסננים הפעילים",
+       "rcfilters-activefilters-show-tooltip": "הצגת תיבת המסננים הפעילים",
        "rcfilters-advancedfilters": "מסננים מתקדמים",
        "rcfilters-limit-title": "כמה תוצאות להראות",
        "rcfilters-limit-and-date-label": "{{PLURAL:$1|שינוי אחד|$1 שינויים}}, $2",
        "exif-colorspace": "מרחב הצבע",
        "exif-componentsconfiguration": "משמעות כל רכיב",
        "exif-compressedbitsperpixel": "שיטת דחיסת התמונה",
-       "exif-pixelxdimension": "רוחב התמונה הנכון",
-       "exif-pixelydimension": "גובה התמונה הנכון",
+       "exif-pixelxdimension": "רוחב התמונה",
+       "exif-pixelydimension": "גובה התמונה",
        "exif-usercomment": "הערות המשתמש",
        "exif-relatedsoundfile": "קובץ שמע מקושר",
        "exif-datetimeoriginal": "התאריך והשעה של יצירת הקובץ",
        "exif-subsectimedigitized": "תת־השניות של הפיכת הקובץ לדיגיטלי",
        "exif-exposuretime": "זמן חשיפה",
        "exif-exposuretime-format": "$1 שניות ($2)",
-       "exif-fnumber": "מספר F",
+       "exif-fnumber": "מספר המִפתח",
        "exif-exposureprogram": "תוכנית החשיפה",
        "exif-spectralsensitivity": "רגישות הספקטרום",
        "exif-isospeedratings": "דירוג מהירות ה־ISO",
        "exif-shutterspeedvalue": "מהירות צמצם ביחידות APEX",
        "exif-aperturevalue": "מִפתח APEX",
        "exif-brightnessvalue": "בהירות ביחידות APEX",
-       "exif-exposurebiasvalue": "נטיית החשיפה",
+       "exif-exposurebiasvalue": "נטיית החשיפה ביחידות APEX",
        "exif-maxaperturevalue": "גודל המִפתח המרבי",
        "exif-subjectdistance": "מרחק נושא הצילום",
        "exif-meteringmode": "שיטת מדידה",
        "exif-focallength-format": "{{PLURAL:$1|מילימטר אחד|$1 מילימטרים}}",
        "exif-subjectarea": "נושא האזור",
        "exif-flashenergy": "אנרגיית המַבזק",
-       "exif-focalplanexresolution": "×\9eש×\98×\97 ×\94פ×\95ק×\95ס ברזולוציה האופקית",
-       "exif-focalplaneyresolution": "×\9eש×\98×\97 ×\94פ×\95ק×\95ס ברזולוציה האנכית",
-       "exif-focalplaneresolutionunit": "×\99×\97×\99×\93ת ×\94×\9e×\99×\93×\94 ×©×\9c ×\9eש×\98×\97 ×\94פ×\95ק×\95ס ברזולוציה",
+       "exif-focalplanexresolution": "×\9eש×\98×\97 ×\94×\9e×\95ק×\93 ברזולוציה האופקית",
+       "exif-focalplaneyresolution": "×\9eש×\98×\97 ×\94×\9e×\95ק×\93 ברזולוציה האנכית",
+       "exif-focalplaneresolutionunit": "×\99×\97×\99×\93ת ×\94×\9e×\99×\93×\94 ×©×\9c ×\9eש×\98×\97 ×\94×\9e×\95ק×\93 ברזולוציה",
        "exif-subjectlocation": "נושא המיקום",
        "exif-exposureindex": "מדד החשיפה",
        "exif-sensingmethod": "שיטת חישה",
        "exif-customrendered": "עיבוד תמונה מותאם",
        "exif-exposuremode": "מצב החשיפה",
        "exif-whitebalance": "איזון צבע לבן",
-       "exif-digitalzoomratio": "×\99×\97ס ×\94×\96×\95×\9d ×\94×\93×\99×\92×\99×\98×\9c×\99",
+       "exif-digitalzoomratio": "×\99×\97ס ×\94×\94תקר×\91×\95ת ×\94×\93×\99×\92×\99×\98×\9c×\99ת",
        "exif-focallengthin35mmfilm": "אורך מוקדי העדשות בסרט צילום של 35 מ\"מ",
        "exif-scenecapturetype": "אופן צילום הסצנה",
        "exif-gaincontrol": "בקרת הסצנה",
        "exif-gpsaltituderef": "התייחסות גובה",
        "exif-gpsaltitude": "גובה",
        "exif-gpstimestamp": "זמן GPS (שעון אטומי)",
-       "exif-gpssatellites": "לוויינים ששמשו למדידה",
+       "exif-gpssatellites": "×\9c×\95×\95×\99×\99× ×\99×\9d ×©×©×\99×\9eש×\95 ×\9c×\9e×\93×\99×\93×\94",
        "exif-gpsstatus": "מעמד המקלט",
        "exif-gpsmeasuremode": "מצב מדידה",
        "exif-gpsdop": "דיוק מדידה",
        "exif-gpstrack": "מהירות התנועה",
        "exif-gpsimgdirectionref": "התייחסות לכיוון התמונה",
        "exif-gpsimgdirection": "כיוון התמונה",
-       "exif-gpsmapdatum": "מידע סקר מדידת הארץ שנעשה בו שימוש",
+       "exif-gpsmapdatum": "×\9e×\99×\93×¢ ×¢×\9c ×¡×§×¨ ×\9e×\93×\99×\93ת ×\94×\90רץ ×©× ×¢×©×\94 ×\91×\95 ×©×\99×\9e×\95ש",
        "exif-gpsdestlatituderef": "התייחסות לקו־הרוחב של היעד",
        "exif-gpsdestlatitude": "קו־הרוחב של היעד",
        "exif-gpsdestlongituderef": "התייחסות לקו־האורך של היעד",
        "exif-originalimageheight": "גובה התמונה לפני קיטוע",
        "exif-originalimagewidth": "רוחב התמונה לפני קיטוע",
        "exif-compression-1": "לא דחוס",
-       "exif-compression-2": "ק×\99×\93×\95×\93 ×\94×\95פ×\9e×\9f ×\9e×\95ת×\90×\9d ×\97×\93Ö¾×\9e×\99×\9e×\93×\99 ×\9c×\90×\95ר×\9a ×¨×\99צ×\94 CCITT ×§×\91×\95צ×\94 3",
+       "exif-compression-2": "קידוד הופמן מותאם חד־ממדי לאורך ריצה CCITT קבוצה 3",
        "exif-compression-3": "קידוד פקס CCITT קבוצה 3",
        "exif-compression-4": "קידוד פקס CCITT קבוצה 4",
        "exif-compression-6": "JPEG (ישן)",
        "exif-sensingmethod-4": "חיישן אזור בצבע עם שלושה שבבים",
        "exif-sensingmethod-5": "חיישן אזור עם צבע רציף",
        "exif-sensingmethod-7": "חיישן טריליניארי",
-       "exif-sensingmethod-8": "×\97×\99×\99ש×\9f ×¢×\9d ×¦×\91×¢ ×¨×¦×\99×£ ×\9c×\99× ×\99×\90רי",
+       "exif-sensingmethod-8": "×\97×\99×\99ש×\9f ×¢×\9d ×¦×\91×¢ ×¨×¦×\99×£ ×§×\95×\95י",
        "exif-filesource-3": "מצלמת תמונות ספרתית",
        "exif-scenetype-1": "תמונה שצולמה ישירות",
        "exif-customrendered-0": "תהליך רגיל",
        "exif-gpslatitude-s": "קו־רוחב דרומי",
        "exif-gpslongitude-e": "קו־אורך מזרחי",
        "exif-gpslongitude-w": "קו־אורך מערבי",
-       "exif-gpsaltitude-above-sealevel": "{{PLURAL:$1|×\9e×\98ר ×\90×\97ר|$1 מטרים}} מעל פני הים",
-       "exif-gpsaltitude-below-sealevel": "{{PLURAL:$1|×\9e×\98ר ×\90×\97ר|$1 מטרים}} מתחת לפני הים",
+       "exif-gpsaltitude-above-sealevel": "{{PLURAL:$1|×\9e×\98ר ×\90×\97×\93|$1 מטרים}} מעל פני הים",
+       "exif-gpsaltitude-below-sealevel": "{{PLURAL:$1|×\9e×\98ר ×\90×\97×\93|$1 מטרים}} מתחת לפני הים",
        "exif-gpsstatus-a": "מדידה בתהליך",
        "exif-gpsstatus-v": "מדידה בו־זמנית",
        "exif-gpsmeasuremode-2": "מדידה בשני ממדים",
        "exif-rating-rejected": "נדחה",
        "exif-isospeedratings-overflow": "מעל 65535",
        "exif-maxaperturevalue-value": "$1 APEX (יחידות: f/$2)",
-       "exif-iimcategory-ace": "אמנויות, תרבות ובידור",
+       "exif-iimcategory-ace": "×\90×\95×\9e× ×\95×\99×\95ת, ×ª×¨×\91×\95ת ×\95×\91×\99×\93×\95ר",
        "exif-iimcategory-clj": "פשע ומשפט",
        "exif-iimcategory-dis": "אסונות ותאונות",
        "exif-iimcategory-fin": "כלכלה ועסקים",
        "monthsall": "הכול",
        "confirmemail": "אימות כתובת דוא\"ל",
        "confirmemail_noemail": "אין לך כתובת דוא\"ל תקפה המוגדרת ב[[Special:Preferences|העדפות המשתמש]] שלך.",
-       "confirmemail_text": "{{GENDER:|עליך|עלייך|עליכם}} לאמת את כתובת הדוא\"ל {{GENDER:|שלך|שלך|שלכם}} לפני ש{{GENDER:|תוכל|תוכלי|תוכלו}} להשתמש בשירותי הדוא\"ל של {{SITENAME}}.\n{{GENDER:|לחץ|לחצי|לחצו}} על הכפתור שלמטה כדי לשלוח קוד אימות לכתובת הדוא\"ל ש{{GENDER:|הזנת|הזנת|הזנתם}}.\nההודעה {{GENDER:|שתקבל|שתקבלי|שתקבלו}} תכלול קישור שמכיל קוד;\n{{GENDER:|פתח|פתחי|פתחו}} את הקישור בדפדפן {{GENDER:|שלך|שלך|שלכם}} כדי לאשר שכתובת הדוא\"ל תקפה.",
-       "confirmemail_pending": "קוד האימות כבר נשלח לדואר האלקטרוני {{GENDER:|שלך|שלך|שלכם}};\nאם {{GENDER:|יצרת|יצרת|יצרתם}} את החשבון לאחרונה, כדאי להמתין מספר דקות עד שהדוא\"ל יגיע לפני בקשת קוד חדש.",
-       "confirmemail_send": "×\9cש×\9c×\95×\97 קוד אימות",
+       "confirmemail_text": "יש לאמת את כתובת הדוא\"ל כדי שניתן יהיה להשתמש בשירותי הדוא\"ל של {{SITENAME}}.\nכדי לשלוח קוד אימות לכתובת הדוא\"ל שהזנת, יש ללחוץ על הכפתור שלמטה.\nהודעת הדוא\"ל שתישלח תכלול קישור שמכיל קוד;\nיש לפתוח את הקישור בדפדפן כדי לאשר שכתובת הדוא\"ל תקפה.",
+       "confirmemail_pending": "קוד האימות כבר נשלח לדואר האלקטרוני שלך;\nאם יצרת את החשבון לאחרונה, כדאי להמתין מספר דקות עד שהדוא\"ל יגיע לפני בקשת קוד חדש.",
+       "confirmemail_send": "ש×\9c×\99×\97ת קוד אימות",
        "confirmemail_sent": "הדוא\"ל עם קוד האימות נשלח.",
-       "confirmemail_oncreate": "ק×\95×\93 ×\90×\99×\9e×\95ת ×\93×\95×\90\"×\9c × ×©×\9c×\97 ×\9c×\9bת×\95×\91ת ×\94×\93×\95×\90\"×\9c ×©×\9c×\9b×\9d. ×\94ק×\95×\93 ×\94×\96×\94 ×\90×\99× ×\95 × ×\93רש ×\9c×\9b× ×\99ס×\94, ×\90×\9a ×ª×¦×\98ר×\9b×\95 לספקו כדי להשתמש בכל תכונה מבוססת דוא\"ל באתר זה.",
-       "confirmemail_sendfailed": "אתר {{SITENAME}} לא הצליח לשלוח דוא\"ל האימות שלך.\nנא לבדוק שבכתובת הדוא\"ל שלך אין תווים בלתי־תקינים.\n\nמערכת שליחת הדוא\"ל החזירה את ההודעה הבאה: $1",
-       "confirmemail_invalid": "קוד האימות שגוי. ייתכן שפג תוקפו.",
+       "confirmemail_oncreate": "ק×\95×\93 ×\90×\99×\9e×\95ת × ×©×\9c×\97 ×\9c×\9bת×\95×\91ת ×\94×\93×\95×\90\"×\9c ×©×\9c×\9a.\n×\94ק×\95×\93 ×\94×\96×\94 ×\90×\99× ×\95 × ×\93רש ×\9c×\9b× ×\99ס×\94 ×\9c×\97ש×\91×\95×\9f, ×\90×\9a ×\99×\94×\99×\94 ×¦×\95ר×\9a לספקו כדי להשתמש בכל תכונה מבוססת דוא\"ל באתר זה.",
+       "confirmemail_sendfailed": "×\90תר {{SITENAME}} ×\9c×\90 ×\94צ×\9c×\99×\97 ×\9cש×\9c×\95×\97 ×\90ת ×\93×\95×\90\"×\9c ×\94×\90×\99×\9e×\95ת ×©×\9c×\9a.\n× ×\90 ×\9c×\91×\93×\95ק ×©×\91×\9bת×\95×\91ת ×\94×\93×\95×\90\"×\9c ×©×\9c×\9a ×\90×\99×\9f ×ª×\95×\95×\99×\9d ×\91×\9cת×\99־תק×\99× ×\99×\9d.\n\n×\9eער×\9bת ×©×\9c×\99×\97ת ×\94×\93×\95×\90\"×\9c ×\94×\97×\96×\99ר×\94 ×\90ת ×\94×\94×\95×\93×¢×\94 ×\94×\91×\90×\94: $1",
+       "confirmemail_invalid": "קוד האימות שגוי.\nייתכן שפג תוקפו.",
        "confirmemail_needlogin": "נדרשת $1 כדי לאמת את כתובת הדוא\"ל שלך.",
        "confirmemail_success": "כתובת הדוא\"ל שלך אושרה.\nכעת באפשרותך [[Special:UserLogin|להיכנס לחשבון שלך]] וליהנות מהאתר.",
        "confirmemail_loggedin": "כתובת הדוא\"ל שלך אושרה כעת.",
index 966953c..c72cad6 100644 (file)
        "group-suppress": "Otajnici",
        "group-all": "(svi)",
        "group-user-member": "{{GENDER:$1|suradnik|suradnica}}",
-       "group-autoconfirmed-member": "{{GENDER:$1|automatski potvrđen suradnik|automatski potvrđena suradnica}}",
+       "group-autoconfirmed-member": "{{GENDER:$1|automatski potvrđeni suradnik|automatski potvrđena suradnica}}",
        "group-bot-member": "{{GENDER:$1|bot}}",
        "group-sysop-member": "{{GENDER:$1|administrator|administratorica}}",
        "group-bureaucrat-member": "{{GENDER:$1|birokrat|birokratica}}",
        "revdelete-unrestricted": "uklonjeno ograničenje za administratore",
        "logentry-block-block": "$1 {{GENDER:$2|blokirao|blokirala}} je {{GENDER:$4|$3}} na rok od $5 $6",
        "logentry-block-unblock": "$1 {{GENDER:$2|odblokirao|odblokirala}} je {{GENDER:$4|$3}}",
-       "logentry-block-reblock": "$1 {{GENDER:$2|promijenio|promijenila}} je postavke blokiranja {{GENDER:$4|suradnika|suradnice}} {{GENDER:$4|$3}} s krajnjim rokom koji ističe $5 $6",
+       "logentry-block-reblock": "$1 {{GENDER:$2|promijenio|promijenila}} je postavke blokiranja {{GENDER:$4|suradnika|suradnice}} {{GENDER:$4|$3}} s krajnjim rokom koji istječe $5 $6",
        "logentry-suppress-block": "$1 {{GENDER:$2|blokirao|blokirala}} je {{GENDER:$4|$3}} s krajnjim rokom koji ističe $5 $6",
        "logentry-suppress-reblock": "$1 {{GENDER:$2|promijenio|promijenila}} je postavke blokiranja {{GENDER:$4|suradnika|suradnice}} {{GENDER:$4|$3}} s krajnjim rokom koji ističe $5 $6",
        "logentry-import-interwiki": "$1 {{GENDER:$2|uvezao|uvezla}} je $3 s drugog wikija",
index cc3e900..757e76d 100644 (file)
        "actionthrottled": "Сухала доазув дар",
        "protectedpagetext": "Ер оагIув лораяь я цу тIа хувцамаш дергдоацаш.",
        "viewsourcetext": "Укх оагIон чухьнахьарча текстах бIаргатоха а, цунах кеп яьккха а, йиш я хьа.",
+       "exception-nologin-text-manual": "Укх оагIон тIакхача йиш хургйолаш $1 деза шо.",
        "virus-unknownscanner": "йовзанза антивирус:",
-       "logouttext": "<strong>Ð\9eаÑ\88а Ð±Ð¾Ð»Ñ\85 Ñ\87акÑ\85баÑ\8cккÑ\85аб.</strong>\n\nÐ\9dекоÑ\82оÑ\80Ñ\8bе Ñ\81Ñ\82Ñ\80аниÑ\86Ñ\8b Ð¼Ð¾Ð³Ñ\83Ñ\82 Ð¿Ñ\80одолжиÑ\82Ñ\8c Ð¾Ñ\82обÑ\80ажаÑ\82Ñ\8cÑ\81Ñ\8f Ñ\82ак, Ñ\81ловно Ð²Ñ\8b Ð²Ñ\81е ÐµÑ\89Ñ\91 Ð½Ðµ Ð·Ð°Ð²ÐµÑ\80Ñ\88или Ñ\81еанÑ\81. Ð\94лÑ\8f Ð±Ð¾Ñ\80Ñ\8cбÑ\8b Ñ\81 Ñ\8dÑ\82им Ñ\8fвлением Ð¾Ð±Ð½Ð¾Ð²Ð¸Ñ\82е ÐºÑ\8dÑ\88 Ð±Ñ\80аÑ\83зеÑ\80а.",
+       "logouttext": "<strong>Ð\9eаÑ\88а Ð±Ð¾Ð»Ñ\85 Ñ\87акÑ\85баÑ\8cккÑ\85аб.</strong>\n\nЦÑ\85Ñ\8cайола Ð¾Ð°Ð³IонаÑ\88 Ñ\85Ñ\8cагÑ\83Ñ\88 Ñ\85ила Ð¼ÐµÐ³ Ð¾Ð°Ñ\88а Ð±Ð¾Ð»Ñ\85 Ñ\87акÑ\85баÑ\8cккÑ\85абоаÑ\86аÑ\88 Ñ\81анна. Ð\98з Ñ\85Ñ\83Ñ\80гдоаÑ\86аÑ\88 Ð±Ñ\80аÑ\83зеÑ\80а ÐºÑ\8dÑ\88 IоÑ\86IенÑ\8aе.",
        "welcomeuser": "Марша воагIалва, доакъашхо $1!",
        "yourname": "Дагара йоазон цIи:",
        "userlogin-yourname": "Доакъашхочун цӀи",
        "createacct-yourpasswordagain-ph": "Кхы цхьаькхаза Ӏочуязъе пароль",
        "userlogin-remembermypassword": "Ражача чувиса",
        "yourdomainname": "Хьа домен:",
-       "login": "ЧÑ\83вала/Ñ\8fла",
+       "login": "ЧÑ\83довла",
        "nav-login-createaccount": "Шоаш довзийтар / Дагара йоазув кхоллар",
        "logout": "Аравала/яла",
        "userlogout": "Аравала/яла",
        "emailauthenticated": "Хьа электронни пошта цIай бакъдаьд (тIатоадаьд) укх хана: $3, $2.",
        "emailconfirmlink": "Бакъде хьай электронни пошта цIай",
        "loginlanguagelabel": "Мотт: $1",
-       "pt-login": "ЧÑ\83вала/Ñ\8fла",
-       "pt-login-button": "ЧÑ\83вала/Ñ\8fла",
+       "pt-login": "ЧÑ\83довла",
+       "pt-login-button": "ЧÑ\83довла",
        "pt-createaccount": "Дагара йоазув хьакхолла",
        "pt-userlogout": "Аравала/яла",
        "changepassword": "КъайладIоaгIа дIахувцар",
        "blockedtitle": "Доакъашхочун чIега техаб",
        "blockedtext": "<strong>Хьа дагара йоазон е IP-адреса блоктехай.</strong>\n\nБлоктохар даьд $1 яхача администраторо.\nБелгалдаьд ер бахьан: «<em>$2</em>».\n\n* Блоктохара дух: $8\n* Блоктохара чаккхе: $6\n* Блоктохара дагалоаттам: $7\n\nХьа аьттув ба $1-ца е моллагIа кхыволча [[{{MediaWiki:Grouppage-sysop}}|администраторца]] бувзаме вала блоктохар тахкар духьа.\nТеркал делахь, хьа йиш хургьяц «письмо участнику» яхача функцех пайда эца, нагахьа санна хьай [[Special:Preferences|персональни настройкаш]] чу нийса дола электронни поштан адрес белгалдаькха деце, е нагахьа санна хьона теха блока чу цу тайпара каьхат дахьийтар могадаь деце.\nХьа IP-адрес — $3, блоктохара идентификатор — $5.\nБоккъала, белгалдаха уж хоамаш (дараш) Iайха моллагIа каьхат дохьийтача хана.",
        "blockednoreason": "бахьан белгалдаьккха дац",
-       "loginreqlink": "довзийта",
-       "loginreqpagetext": "Оаш шоаш $1 деза кхыйола оагIонашка хьожаргдолаш.",
+       "whitelistedittext": "Шо $1 деза оагIонашта хувцам бергболаш.",
+       "loginreqlink": "чудовла",
+       "loginreqpagetext": "Шо $1 деза кхыйола оагIонашка хьожаргдолаш.",
        "accmailtitle": "КъайладIоагӀа дӀадахьийтад",
        "newarticle": "(Kерда)",
        "newarticletext": "Шо тIатовжама гIолла дехьадаьннад йолаш йоацача оагӀон тӀа.\nИз хьакхолларгьйолаш кӀалхагӀа доалача корачу текст Iочуязъе (нагахьа санна кхетаде хала дале [$1 новкъосталара оагӀонга] хьажа).\nЦаховш укхаза нийсденнадале, шоай браузера чу '''Юха''' (Назад) яха тоIаера тӀа пӀелг тоӀабе.",
        "recentchangeslinked-to": "Вешта, белгаляьккха оагIон тIахьожавеш дола оагIонашта даь хувцамаш хьахьокха.",
        "upload": "Файл чуяккха",
        "uploadbtn": "Файл чуяккха",
+       "uploadnologintext": "Шо $1 деза сервера тIа файлаш хьачуйоахаргйолаш.",
        "uploadlogpage": "Чуяьккхарий тептар",
        "filedesc": "Лоаца йоазонца сурт оттадар",
        "fileuploadsummary": "Лоаца сурт оттадар:",
        "allpages-hide-redirects": "ДIакъайладаха дӀа-хьа хьожавераш",
        "categories": "ОагӀаташ",
        "categories-submit": "Хьахьокха",
+       "sp-deletedcontributions-contribs": "къахьегам",
        "linksearch": "Арахьара тIахьожаяргаш лахар",
        "linksearch-ns": "ЦIерий моттигаш:",
        "linksearch-ok": "Хьалаха",
        "blanknamespace": "(Кертера)",
        "contributions": "{{GENDER:$1|Доакъашхочун}} къахьегам",
        "contributions-title": "{{GENDER:$1|Доакъашхочун}} $1 къахьегам",
-       "mycontris": "Са Ðºъахьегам",
+       "mycontris": "Ð\9aъахьегам",
        "anoncontribs": "Къахьегам",
        "contribsub2": "Къахьегам {{GENDER:$3|$1}} ($2)",
        "nocontribs": "ДIадийха хувцамаш корадаьдац",
        "tooltip-pt-mytalk": "{{GENDER:|Хьа}} дувца оттадара оагIув",
        "tooltip-pt-preferences": "{{GENDER:|Хьа оттамаш}}",
        "tooltip-pt-watchlist": "Iа зем бу оагIонаш",
-       "tooltip-pt-mycontris": "{{GENDER:|хьа}} хувцамаш",
+       "tooltip-pt-mycontris": "{{GENDER:|Хьа}} хувцамаш",
        "tooltip-pt-login": "Укхаза хьай цIи аьле чувала/яла йиша я, амма из параз дац",
        "tooltip-pt-logout": "Аравала/яла",
        "tooltip-pt-createaccount": "Хьа бокъо я дагара йоазув хьа а кхелла ражача чувала.",
index f1e5433..dc88124 100644 (file)
        "rcfilters-savedqueries-defaultlabel": "Konservita filtrili",
        "rcfilters-show-new-changes": "Videz la maxim recenta chanji",
        "rcfilters-search-placeholder": "Filtrar la modifikuri (uzez la menuo o serchez segun la nomo dil filtrilo)",
+       "rcfilters-filterlist-feedbacklink": "Dicez a ni quon vu pensas pri la filtrili",
        "rcfilters-filter-editsbyself-label": "Vua modifikuri",
+       "rcfilters-filter-editsbyother-label": "Modifikuri da altri",
+       "rcfilters-filter-editsbyother-description": "Omna modififuri, ecepte vua propra.",
        "rcfilters-filter-user-experience-level-registered-label": "Enrejistrita",
+       "rcfilters-filter-user-experience-level-registered-description": "Enrejistrita redakteri.",
        "rcfilters-filter-user-experience-level-unregistered-label": "Sen registro",
        "rcfilters-filter-user-experience-level-unregistered-description": "Redakteri qui ne facis 'log in'.",
        "rcfilters-filter-user-experience-level-newcomer-label": "Nova uzeri",
+       "rcfilters-filter-user-experience-level-newcomer-description": "Enrejistrita uzeri qui havas min kam 10 redakturi o 4 dii di aktiveso.",
        "rcfilters-filter-user-experience-level-learner-label": "Lernanti",
        "rcfilters-filter-user-experience-level-learner-description": "Redakteri enrejistrita kun konoco inter \"Nova uzeri\" ed \"experta uzeri.\"",
        "rcfilters-filter-user-experience-level-experienced-label": "Experta uzeri",
        "rcfilters-filter-user-experience-level-experienced-description": "Plu kam 30 dii di agemeso e 500 redakti.",
+       "rcfilters-filter-bots-description": "Redakturi kreita da automatala informatikoprogrami.",
        "rcfilters-filter-humans-label": "Homala (ne 'bot')",
        "rcfilters-filter-humans-description": "Redakturi kreita da homi.",
        "rcfilters-filtergroup-significance": "Senco",
index c124df0..b3b617f 100644 (file)
        "botpasswords-existing": "Password bot esistenti",
        "botpasswords-createnew": "Crea una nuova password bot",
        "botpasswords-editexisting": "Modifica password bot esistenti",
+       "botpasswords-label-needsreset": "(occorre ripristinare la password)",
        "botpasswords-label-appid": "Nome bot:",
        "botpasswords-label-create": "Crea",
        "botpasswords-label-update": "Aggiorna",
        "pageswithprop-text": "Questa pagina elenca le pagine che utilizzano una particolare proprietà di pagina.",
        "pageswithprop-prop": "Nome proprietà:",
        "pageswithprop-reverse": "Ordinamento inverso",
+       "pageswithprop-sortbyvalue": "Ordina in base al valore della proprietà",
        "pageswithprop-submit": "Vai",
        "pageswithprop-prophidden-long": "valore testuale lungo della proprietà nascosto ($1)",
        "pageswithprop-prophidden-binary": "valore binario della proprietà nascosto ($1)",
        "import-mapping-subpage": "Importa come sottopagine della pagina seguente:",
        "import-upload-filename": "Nome file:",
        "import-upload-username-prefix": "Prefisso interwiki:",
+       "import-assign-known-users": "Assegna le modifiche agli utenti locali qualora l'utente indicato esista localmente",
        "import-comment": "Oggetto:",
        "importtext": "Si prega di esportare il file dal sito wiki di origine con la [[Special:Export|funzione di esportazione]], salvarlo sul proprio disco e poi caricarlo qui.",
        "importstart": "Importazione delle pagine in corso...",
        "watchlistedit-clear-titles": "Titoli:",
        "watchlistedit-clear-submit": "Svuota gli osservati speciali (sarà permanente!)",
        "watchlistedit-clear-done": "La lista degli osservati speciali è stata svuotata.",
+       "watchlistedit-clear-jobqueue": "I tuoi osservati speciali sono in corso di svuotamento. Potrebbe volerci un po' di tempo!",
        "watchlistedit-clear-removed": "{{PLURAL:$1|È stata eliminata una pagina|Sono state eliminate $1 pagine}}:",
        "watchlistedit-too-many": "Ci sono troppe pagine da visualizzare qui.",
        "watchlisttools-clear": "svuota la lista degli osservati speciali",
        "pagedata-bad-title": "Titolo non valido: $1.",
        "unregistered-user-config": "Per motivi di sicurezza, non è possibile caricare sottopagine utente JavaScript, CSS e JSON per utenti non registrati.",
        "passwordpolicies-group": "Gruppo",
+       "passwordpolicies-policies": "Politiche",
        "passwordpolicies-policy-minimalpasswordlength": "La password deve essere lunga almeno $1 {{PLURAL:$1|carattere|caratteri}}",
        "passwordpolicies-policy-minimumpasswordlengthtologin": "La password deve essere lunga almeno $1 {{PLURAL:$1|carattere|caratteri}} per poter accedere",
        "passwordpolicies-policy-passwordcannotmatchusername": "La password non può essere uguale al nome utente",
index f2c9726..4821c83 100644 (file)
        "savechanges": "Fisa cambias",
        "publishpage": "Publici paje",
        "publishchanges": "Publici cambias",
+       "publishchanges-start": "Publici cambias...",
        "preview": "Previde",
        "showpreview": "Mostra previde",
        "showdiff": "Mostra cambias",
index 6283381..80e6541 100644 (file)
        "rcfilters-activefilters": "Активни филтри",
        "rcfilters-activefilters-hide": "Скриј",
        "rcfilters-activefilters-show": "Прикажи",
+       "rcfilters-activefilters-hide-tooltip": "Скриј го подрачјето за активни филтри",
+       "rcfilters-activefilters-show-tooltip": "Покажи го подрачјето за активни филтри",
        "rcfilters-advancedfilters": "Напредни филтри",
        "rcfilters-limit-title": "Ставки за приказ",
        "rcfilters-limit-and-date-label": "$1 {{PLURAL:$1|промена|промени}}, $2",
index 7cef2d4..663fec1 100644 (file)
        "rcfilters-view-namespaces-tooltip": "Filter resultåten up naamruumte",
        "rcfilters-view-tags-tooltip": "Filter resultåten döär gebruuk te maken van bewarkingsetiketten",
        "rcfilters-liveupdates-button": "Rechtstreakse aktualisering",
-       "rcfilters-liveupdates-button-title-off": "Nieje wiezigingen voortdalik laoten zien",
+       "rcfilters-liveupdates-button-title-off": "Nye wysigingen voorddalik låten seen",
        "rcnotefrom": "Dit bin de wiezigingen sinds <strong>$2</strong> (maximum van <strong>$1</strong> wiezigingen).",
        "rclistfrom": "Bekiek wiezigingen vanaof $3 $2",
        "rcshowhideminor": "$1 kleine wiezigingen",
index 440d1c8..d331a95 100644 (file)
        "userpage-userdoesnotexist": "Кориснички налог „<nowiki>$1</nowiki>“ није отворен.\nРазмислите да ли заиста желите да направите/уредите ову страницу.",
        "userpage-userdoesnotexist-view": "Кориснички налог „$1“ није отворен.",
        "blocked-notice-logextract": "Овај корисник је тренутно блокиран.\nИзвештај о последњем блокирању можете погледати испод:",
-       "clearyourcache": "<strong>Ð\9dапомена:</strong> Ð½Ð°ÐºÐ¾Ð½ Ñ\87Ñ\83ваÑ\9aа, Ð¼Ð¾Ð¶Ð´Ð° Ñ\9bеÑ\82е Ð¼Ð¾Ñ\80аÑ\82и Ð´Ð° Ð¾Ñ\87иÑ\81Ñ\82иÑ\82е ÐºÐµÑ\88 Ð¿Ñ\80егледаÑ\87а ÐºÐ°ÐºÐ¾ Ð±Ð¸Ñ\81Ñ\82е Ð²Ð¸Ð´ÐµÐ»Ð¸ Ð¸Ð·Ð¼ÐµÐ½Ðµ.\n* <strong>ФаÑ\98еÑ\80Ñ\84окÑ\81 / Ð¡Ð°Ñ\84аÑ\80и:</strong> Ð´Ñ\80жиÑ\82е <em>Shift</em> Ð¸ ÐºÐ»Ð¸ÐºÐ½Ð¸Ñ\82е Ð½Ð° <em>Ð\9eÑ\81вежи</em>, Ð¸Ð»Ð¸ Ð¿Ñ\80иÑ\82иÑ\81ниÑ\82е <em>Ctrl-F5</em> Ð¸Ð»Ð¸ <em>Ctrl-R</em> (<em>â\8c\98-R</em> Ð½Ð° Ð\9cекÑ\83)\n* <strong>Ð\93Ñ\83гл ÐºÑ\80оÑ\83м:</strong> Ð¿Ñ\80иÑ\82иÑ\81ниÑ\82е <em>Ctrl-Shift-R</em> (<em>â\8c\98-Shift-R</em> Ð½Ð° Ð\9cекÑ\83)\n* <strong>Ð\98нÑ\82еÑ\80неÑ\82 ÐµÐºÑ\81плоÑ\80еÑ\80:</strong> Ð´Ñ\80жиÑ\82е <em>Ctrl</em> Ð¸ ÐºÐ»Ð¸ÐºÐ½Ð¸Ñ\82е Ð½Ð° <em>Ð\9eÑ\81вежи</em> Ð¸Ð»Ð¸ Ð¿Ñ\80иÑ\82иÑ\81ниÑ\82е <em>Ctrl-F5</em>\n* <strong>Ð\9eпеÑ\80а:</strong> Ð¸дите на <em>Алатке → Подешавања</em> (<em>Опера → Поставке</em> на Меку) и затим <em>Приватност и безбедност → Очистите податке о прегледима → Кеширане слике и датотеке</em>.",
+       "clearyourcache": "<strong>Ð\9dапомена:</strong> Ð\9dакон Ñ\87Ñ\83ваÑ\9aа, Ð¼Ð¾Ð¶Ð´Ð° Ñ\9bеÑ\82е Ð¼Ð¾Ñ\80аÑ\82и Ð´Ð° Ð¾Ñ\87иÑ\81Ñ\82иÑ\82е ÐºÐµÑ\88 Ð¿Ñ\80егледаÑ\87а ÐºÐ°ÐºÐ¾ Ð±Ð¸Ñ\81Ñ\82е Ð²Ð¸Ð´ÐµÐ»Ð¸ Ð¸Ð·Ð¼ÐµÐ½Ðµ.\n* <strong>ФаÑ\98еÑ\80Ñ\84окÑ\81/СаÑ\84аÑ\80и:</strong> Ð\94Ñ\80жиÑ\82е <em>Shift</em> Ð¸ ÐºÐ»Ð¸ÐºÐ½Ð¸Ñ\82е Ð½Ð° <em>Ð\9eÑ\81вежи</em> Ð¸Ð»Ð¸ Ð¿Ñ\80иÑ\82иÑ\81ниÑ\82е <em>Ctrl-F5</em> Ð¸Ð»Ð¸ <em>Ctrl-R</em> (<em>â\8c\98-R</em> Ð½Ð° Ð\9cекÑ\83)\n* <strong>Ð\93Ñ\83гл ÐºÑ\80оÑ\83м:</strong> Ð\9fÑ\80иÑ\82иÑ\81ниÑ\82е <em>Ctrl-Shift-R</em> (<em>â\8c\98-Shift-R</em> Ð½Ð° Ð\9cекÑ\83)\n* <strong>Ð\98нÑ\82еÑ\80неÑ\82 ÐµÐºÑ\81плоÑ\80еÑ\80:</strong> Ð\94Ñ\80жиÑ\82е <em>Ctrl</em> Ð¸ ÐºÐ»Ð¸ÐºÐ½Ð¸Ñ\82е Ð½Ð° <em>Ð\9eÑ\81вежи</em> Ð¸Ð»Ð¸ Ð¿Ñ\80иÑ\82иÑ\81ниÑ\82е <em>Ctrl-F5</em>\n* <strong>Ð\9eпеÑ\80а:</strong> Ð\98дите на <em>Алатке → Подешавања</em> (<em>Опера → Поставке</em> на Меку) и затим <em>Приватност и безбедност → Очистите податке о прегледима → Кеширане слике и датотеке</em>.",
        "usercssyoucanpreview": "<strong>Савет:<strong> кориситите дугме „{{int:showpreview}}“ да испробате свој нови CSS пре него што га сачувате.",
        "userjsyoucanpreview": "<strong>Савет:</strong> кориситите дугме „{{int:showpreview}}“ да испробате свој нови јаваскрипт пре него што га сачувате.",
        "usercsspreview": "<strong>Ово је само преглед CSS-а.\nСтраница још није сачувана!</strong>",
        "tags": "Важеће ознаке измена",
        "tag-filter": "Филтер за [[Special:Tags|ознаке]]:",
        "tag-filter-submit": "Филтрирај",
-       "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|Ð\9eзнака|Ð\9eзнаке}}]]: $2)",
+       "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|ознака|ознаке}}]]: $2)",
        "tag-mw-contentmodelchange": "промена модела садржаја",
        "tag-mw-contentmodelchange-description": "Измене које мењају модел садржаја странице",
        "tag-mw-new-redirect": "ново преусмерење",
index 54f471d..141529a 100644 (file)
        "userpage-userdoesnotexist": "Korisnički nalog „<nowiki>$1</nowiki>“ nije otvoren.\nRazmislite da li zaista želite da napravite/uredite ovu stranicu.",
        "userpage-userdoesnotexist-view": "Korisnički nalog „$1“ nije otvoren.",
        "blocked-notice-logextract": "Ovaj korisnik je trenutno blokiran.\nIzveštaj o poslednjem blokiranju možete pogledati ispod:",
-       "clearyourcache": "<strong>Napomena:</strong> nakon čuvanja, možda ćete morati da očistite keš pregledača kako biste videli promene.\n* <strong>Fajerfoks / Safari:</strong> držite <em>Shift</em> i kliknite na <em>Osveži</em>, ili pritisnite <em>Ctrl-F5</em> ili <em>Ctrl-R</em> (<em>⌘-R</em> na Meku)\n* <strong>Gugl kroum:</strong> pritisnite <em>Ctrl-Shift-R</em> (<em>⌘-Shift-R</em> na Meku)\n* <strong>Internet eksplorer:</strong> držite <em>Ctrl</em> i kliknite na <em>Osveži</em> ili pritisnite <em>Ctrl-F5</em>\n* <strong>Opera:</strong> idite na <em>Alatke → Podešavanja</em> (<em>Opera → Postavke</em> na Meku) i zatim <em>Privatnost i bezbednost → Očistite podatke o pregledima → Keširane slike i datoteke</em>.",
+       "clearyourcache": "<strong>Napomena:</strong> Nakon čuvanja, možda ćete morati da očistite keš pregledača kako biste videli izmene.\n* <strong>Fajerfoks/Safari:</strong> Držite <em>Shift</em> i kliknite na <em>Osveži</em> ili pritisnite <em>Ctrl-F5</em> ili <em>Ctrl-R</em> (<em>⌘-R</em> na Meku)\n* <strong>Gugl kroum:</strong> Pritisnite <em>Ctrl-Shift-R</em> (<em>⌘-Shift-R</em> na Meku)\n* <strong>Internet eksplorer:</strong> Držite <em>Ctrl</em> i kliknite na <em>Osveži</em> ili pritisnite <em>Ctrl-F5</em>\n* <strong>Opera:</strong> Idite na <em>Alatke → Podešavanja</em> (<em>Opera → Postavke</em> na Meku) i zatim <em>Privatnost i bezbednost → Očistite podatke o pregledima → Keširane slike i datoteke</em>.",
        "usercssyoucanpreview": "'''Savet:''' korisitite dugme „{{int:showpreview}}“ da isprobate svoj novi CSS pre nego što ga sačuvate.",
        "userjsyoucanpreview": "'''Savet:''' korisitite dugme „{{int:showpreview}}“ da isprobate svoj novi javaskript pre nego što ga sačuvate.",
        "usercsspreview": "'''Ovo je samo pregled CSS-a.'''\n'''Stranica još nije sačuvana!'''",
index 3a72579..f9cc47d 100644 (file)
        "tag-mw-undo": "Ångra",
        "tag-mw-undo-description": "Redigeringar som ångrar föregående redigeringar med ångralänken",
        "tags-title": "Märken",
-       "tags-intro": "Denna sida listar de märken som programvaran kan markera en redigering med, och deras betydelse.",
+       "tags-intro": "Denna sida listar de märken som programvaran kan markera en redigering med, samt deras betydelse.",
        "tags-tag": "Märkesnamn",
        "tags-display-header": "Utseende på listor över ändringar",
        "tags-description-header": "Full beskrivning av betydelse",
index 6ed30a6..9b2077c 100644 (file)
        "mw-widgets-titleinput-description-redirect": "$1 కు దారిమార్పు",
        "mw-widgets-categoryselector-add-category-placeholder": "ఓ వర్గాన్ని చేర్చండి...",
        "mw-widgets-usersmultiselect-placeholder": "మరిన్ని చేర్చండి...",
+       "date-range-from": "తేదీ నుండి",
+       "date-range-to": "తేదీ వరకు",
        "sessionprovider-generic": "$1 సెషన్లు",
        "sessionprovider-mediawiki-session-cookiesessionprovider": "కూకీ-ఆధారిత సెషన్లు",
        "log-action-filter-block": "నిరోధపు రకం:",
index 2ed7c43..4253a3b 100644 (file)
        "userlogin-resetpassword-link": "ⵜⴻⵜⵜⵓⴷ ⵜⴰⴳⵓⵔⵉ ⵏ ⵓⵣⵔⴰⵢ ⵏⵏⵎ/ⴽ?",
        "createacct-emailoptional": "ⵉⵎⴰⵢⵍ (ⴰⵔⵓⵛⵛⵉⵍ)",
        "createacct-email-ph": "ⵙⵙⴽⵛⵎ ⴰⵏⵙⴰ ⵉⵎⴰⵢⵍ ⵏⵏⴽ",
+       "createacct-realname": "ⵉⵙⵎ ⵏ ⵜⵉⴷⵜ (‍ⵎ ⵜⵔⵉⵜ)",
        "createacct-reason": "ⵜⴰⵎⵏⵜⵉⵍⵜ",
        "createacct-submit": "ⵔⵥⵎ ⴰⵎⵉⴹⴰⵏ {{GENDER:|ⵏⵏⴽ|ⵏⵏⵎ}}",
+       "createacct-another-submit": "ⵙⵏⴼⵍⵓⵍ ⴰⵎⵉⴹⴰⵏ",
        "createacct-benefit-heading": "{{SITENAME}} ⵜⴻⵜⵜⵓⴽ ⵙⴳ ⵎⵉⴷⴷⵏ ⴰⵎ ⴽⵢⵢⵉⵏ",
        "createacct-benefit-body1": "{{PLURAL:$1|ⴰⵙⵏⴼⵍ|ⵉⵙⵏⴼⴰⵍ}}",
        "createacct-benefit-body2": "{{PLURAL:$1|ⵜⴰⵙⵏⴰ|ⵜⴰⵙⵏⵉⵡⵉⵏ}}",
        "pt-login-button": "ⴽⵛⵎ",
        "pt-createaccount": "ⵙⵏⴼⵍⵓⵍ ⴰⵎⵉⴹⴰⵏ",
        "pt-userlogout": "ⴼⴼⵖ",
+       "oldpassword": "ⵜⴰⴳⵓⵔⵉ ⵏ ⵓⵣⵔⴰⵢ ⵜⴰⵇⴱⵓⵔⵜ",
        "newpassword": "ⵜⴰⴳⵓⵔⵉ ⵏ ⵓⵣⵔⴰⵢ ⵜⴰⵎⴰⵢⵏⵓⵜ",
        "botpasswords-label-create": "ⵙⵏⵓⵍⴼⵓ",
+       "botpasswords-label-cancel": "ⵙⵔ",
        "botpasswords-label-delete": "ⴽⴽⵙ",
+       "resetpass-submit-cancel": "ⵙⵔ",
        "passwordreset": "ⵔⴰⵔ ⴷ ⵜⴰⴳⵓⵔⵉ ⵏ ⵓⵣⵔⴰⵢ",
        "changeemail-newemail": "ⵉⵎⴰⵢⵍ ⴰⵎⴰⵢⵏⵓ:",
        "changeemail-none": "(ⵓⵍⴰ ⵢⴰⵏ)",
        "minoredit": "ⵡⴰ ⴷ ⴰⵙⵏⴼⵍ ⵓⵎⵥⵉⵢ",
        "watchthis": "ⵎⵎⴰⵜⵔ ⵜⴰⵙⵏⴰ ⴰⴷ",
        "savearticle": "ⵃⴹⵓ ⵜⴰⵙⵏⴰ",
+       "publishchanges": "ⴼⵙⵔ ⵉⵙⵏⴼⵍⵏ",
+       "savearticle-start": "ⵃⴹⵓ ⵜⴰⵙⵏⴰ",
+       "savechanges-start": "ⵃⴹⵓ ⵉⵙⵏⴼⵍⵏ",
+       "publishpage-start": "ⴼⵙⵔ ⵜⴰⵙⵏⴰ...",
+       "publishchanges-start": "ⴼⵙⵔ ⵉⵙⵏⴼⵓⵍⵏ...",
        "showpreview": "ⵙⴽⵏ ⴰⴱⵔⵉⴼⵢⵓ",
        "showdiff": "ⵙⵎⴰⵍ ⵉⵙⵏⴼⵍⵏ",
        "loginreqlink": "ⴽⵛⵎ",
        "hiddencategories": "ⵜⴰⵙⵏⴰ ⴰ ⴷ ⴰⴳⵎⴰⵎ ⵏ {{PLURAL:$1|1 ⵏⵜⵍ ⴰⵙⵎⵉⵍ|$1 ⵏⵜⵍ ⵉⵙⵎⵉⵍⵏ}}:",
        "permissionserrorstext-withaction": "ⵓⵔ ⴷⴰⵔⴽ ⵜⵓⵔⴰⴳⵜ ⴰⴼⴰⴷ ⴰⴷ $2, ⵙ {{PLURAL:$1|reason|reasons}}:",
        "content-model-wikitext": "wikitext",
+       "content-model-javascript": "JavaScript",
        "currentrev-asof": "ⴰⵣⵣⵔⴰⵢ ⴰⵎⴳⴳⴰⵔⵓ ⴳ $1",
        "revisionasof": "ⵜⵓⵏⵖⵉⵍⵜ ⵏ $1",
        "previousrevision": "ⵜⵓⵏⵖⵉⵍⵜ ⵜⴰⵇⴱⵓⵔⵜ",
        "currentrevisionlink": "ⴰⵣⵣⵔⴰⵢ ⴰⵎⴳⴳⴰⵔⵓ",
        "cur": "ⵎⵔⵏ",
        "last": "ⵓⵣⵡⵔ",
+       "page_last": "ⴰⵎⴳⴳⴰⵔⵓ",
        "history-fieldset-title": "ⵔⵣⵓ ⵖⴼ ⵉⵣⵣⵔⴰⵢⵏ",
        "histfirst": "ⴰⵇⴱⵓⵔ",
        "histlast": "ⴰⵎⴰⵢⵏⵓ",
        "history-feed-title": "ⴰⵎⵣⵔⵓⵢ ⵏ ⵓⵣⵣⵔⴰⵢ",
        "history-feed-description": "ⴰⵎⵣⵔⵓⵢ ⵏ ⵓⵣⵣⵔⴰⵢ ⵉ ⵜⴰⵙⵏⴰ ⴰⴷ ⴳ ⵡⵉⴽⵉ",
        "history-feed-item-nocomment": "$1 ⵖⵔ $2",
+       "rev-showdeleted": "ⵙⴽⵏ",
        "revdelete-show-file-submit": "ⵢⴰⵀ",
        "revdelete-log": "ⵜⴰⵎⵏⵜⵉⵍⵜ:",
        "mergehistory-reason": "ⵜⴰⵎⵏⵜⵉⵍⵜ:",
        "file-anchor-link": "ⴰⴼⴰⵢⵍⵓ",
        "filehist": "ⴰⵎⵣⵔⵓⵢ ⵏ ⵓⴼⴰⵢⵍⵓ",
        "filehist-help": "ⴰⴷⵔ ⵖⴼ ⵓⵙⴰⴽⵓⴷ/ⴰⴽⵓⴷ ⵃⵎⴰ ⴰⴷ ⵜⵥⵔⴷ ⴰⵙⴷⴰⵡ ⵎⴰⵎⴽ ⵢⴰⴷⵍⵍⵉ ⵉⴳⴰ ⴰⵇⵓⴷ ⴰⵏ.",
+       "filehist-deleteall": "ⴽⴽⵙ ⵎⴰⵕⵕⴰ",
        "filehist-deleteone": "ⴽⴽⵙ",
        "filehist-current": "ⴰⵎⵉⵔⴰⵏ",
        "filehist-datetime": "ⴰⵙⴰⴽⵓⴷ/ⴰⴽⵓⴷ",
        "categories": "ⵉⵙⵎⵉⵍⵏ",
        "sp-deletedcontributions-contribs": "ⵜⵓⵎⵓⵜⵉⵏ",
        "listgrouprights-members": "ⵜⴰⵍⴳⴰⵎⵜ ⵏ ⵉⴳⵎⴰⵎⵏ",
+       "listgrouprights-addgroup-all": "ⵔⵏⵓ ⵎⴰⵕⵕⴰ ⵜⵉⵔⴰⴱⴱⵓⵜⵉⵏ",
+       "listgrouprights-removegroup-all": "ⴽⴽⵙ ⵎⴰⵕⵕⴰ ⵜⵉⵔⴰⴱⴱⵓⵜⵉⵏ",
        "emailmessage": "ⵜⵓⵣⵉⵏⵜ:",
        "usermessage-editor": "ⵓⴷⵓⵙ ⵏ ⵓⵎⵢⴰⵣⴰⵏ",
        "watchlist": "ⵜⴰⵍⴳⴰⵎⵜ ⵏ ⵓⴹⴼⴼⵓⵔ",
        "whatlinkshere-title": "ⵜⴰⵙⵏⵉⵡⵉⵏ ⵉⵣⴷⵉⵏ ⵖⵔ $1",
        "whatlinkshere-page": "ⵜⴰⵙⵏⴰ:",
        "linkshere": "ⵜⴰⵙⵏⵉⵡⵉⵏ ⴰⴷ ⵣⴷⵉⵏ ⵖⵔ <strong>$1</strong>:",
-       "nolinkshere": "ⵓⵔ ⵍⵍⵉⵏ ⵜⴰⵙⵏⵉⵡⵉⵏ ⵉⵣⴷⵉⵏ ⵖⵔ <strong>$1</strong>",
+       "nolinkshere": "ⵓⵔ ⵍⵍⵉⵏ ⵜⴰⵙⵏⵉⵡⵉⵏ ⵉⵣⴷⵉⵏ ⵖⵔ <strong>$2</strong>",
        "isredirect": "ⵙⵡⴰⵍⴰ ⵜⴰⵙⵏⴰ",
        "istemplate": "ⴰⵙⵙⵓⵎⵢ",
        "isimage": "ⴰⵙⵖⵓⵏ ⵏ ⵓⴼⴰⵢⵍⵓ",
        "exif-dc-contributor": "ⵉⵏⴰⵎⵓⵜⵏ",
        "exif-iimcategory-edu": "ⴰⵙⴳⵎⵉ",
        "exif-iimcategory-hth": "ⵜⴰⴷⵓⵙⵉ",
-       "namespacesall": "ⴰⴽⴽⵯ",
+       "namespacesall": "âµ\8eâ´°âµ\95âµ\95â´°",
        "monthsall": "ⵎⴰⵕⵕⴰ",
        "confirm_purge_button": "ⵡⴰⵅⵅⴰ",
        "confirm-watch-button": "ⵡⴰⵅⵅⴰ",
        "imgmultigo": "ⴷⴷⵓ!",
        "imgmultigoto": "ⴷⴷⵓ ⵖⵔ ⵜⴰⵙⵏⴰ ⴰⴷ $1",
        "img-lang-default": "(ⵜⵓⵜⵍⴰⵢⵜ ⵙ ⵓⵡⵏⵓⵍ)",
+       "watchlistedit-clear-explain": "ⵎⴰⵕⵕⴰ",
        "watchlisttools-clear": "ⵙⴼⴹ ⵜⴰⵍⴳⴰⵎⵜ ⵏ ⵓⴹⴼⴼⵓⵔ",
        "watchlisttools-view": "ⵙⴽⵏ ⵉⵙⵏⵉⴼⵉⵍⵏ ⴷ ⵢⵓⵙⴰⵏ",
        "watchlisttools-edit": "ⵥⵕ ⴷ ⵜⵙⵏⴼⵍⴷ ⵜⴰⵍⴳⴰⵎⵜ ⵏ ⵓⴹⴼⴼⵓⵔ",
        "pagelang-name": "ⵜⴰⵙⵏⴰ",
        "pagelang-language": "ⵜⵓⵜⵍⴰⵢⵜ",
        "right-pagelang": "ⵙⵏⴼⵍ ⵜⵓⵜⵍⴰⵢⵜ ⵏ ⵜⴰⵙⵏⴰ",
+       "mediastatistics-header-total": "ⵎⴰⵕⵕⴰ ⵉⴼⵓⵍⵢⴰ",
+       "log-action-filter-all": "ⵎⴰⵕⵕⴰ",
+       "authmanager-authplugin-setpass-denied": "ⵎⴰⵕⵕⴰ",
        "authmanager-email-label": "ⵉⵎⴰⵢⵍ",
        "authmanager-realname-label": "ⵉⵙⵎ ⴰⵎⴷⴷⴰⵜ",
        "authmanager-realname-help": "ⵉⵙⵎ ⴰⵎⴷⴷⴰⵜ ⵏ ⵓⵏⵙⵙⵔⵎⵙ",
index 0bc666c..3528c79 100644 (file)
        "rcfilters-activefilters": "应用的过滤器",
        "rcfilters-activefilters-hide": "隐藏",
        "rcfilters-activefilters-show": "显示",
+       "rcfilters-activefilters-hide-tooltip": "隐藏激活过滤器区域",
+       "rcfilters-activefilters-show-tooltip": "显示激活过滤器区域",
        "rcfilters-advancedfilters": "高级过滤器",
        "rcfilters-limit-title": "要显示的结果",
        "rcfilters-limit-and-date-label": "$1次{{PLURAL:$1|更改}},$2",
index 626a454..8bfa8dc 100644 (file)
        "tog-watchlisthidebots": "隱藏監視清單中機器人的編輯",
        "tog-watchlisthideminor": "隱藏監視清單中的次要修訂",
        "tog-watchlisthideliu": "隱藏監視清單中已登入使用者的編輯",
-       "tog-watchlistreloadautomatically": "查詢條件變更時自動重新讀取監視清單(需要使用 JavaScript)",
+       "tog-watchlistreloadautomatically": "篩選條件變更時自動重新讀取監視清單(需要使用 JavaScript)",
        "tog-watchlistunwatchlinks": "為帶有變更的監試頁面添加直接(取消)監視標記({{int:Watchlist-unwatch}}/{{int:Watchlist-unwatch-undo}}),需要 JavaScript 來打開功能",
        "tog-watchlisthideanons": "隱藏監視清單中匿名使用者的編輯",
        "tog-watchlisthidepatrolled": "隱藏監視清單中已巡查的編輯",
        "rcfilters-legend-heading": "<strong>縮寫列表:</strong>",
        "rcfilters-other-review-tools": "其他檢閱工具",
        "rcfilters-group-results-by-page": "按頁面分組結果",
-       "rcfilters-activefilters": "使用的篩選",
+       "rcfilters-activefilters": "使用的篩選",
        "rcfilters-activefilters-hide": "隱藏",
        "rcfilters-activefilters-show": "顯示",
-       "rcfilters-advancedfilters": "進階查詢條件",
+       "rcfilters-activefilters-hide-tooltip": "隱藏使用的篩選區域",
+       "rcfilters-activefilters-show-tooltip": "顯示使用的篩選區域",
+       "rcfilters-advancedfilters": "進階篩選條件",
        "rcfilters-limit-title": "要顯示的結果",
        "rcfilters-limit-and-date-label": "$1次{{PLURAL:$1|變更}},$2",
        "rcfilters-date-popup-title": "搜尋的時間段",
        "rcfilters-days-show-days": "$1{{PLURAL:$1|天}}",
        "rcfilters-days-show-hours": "$1{{PLURAL:$1|小時}}",
        "rcfilters-highlighted-filters-list": "已明顯標示:$1",
-       "rcfilters-quickfilters": "儲存的查詢條件",
+       "rcfilters-quickfilters": "儲存的篩選條件",
        "rcfilters-quickfilters-placeholder-title": "尚未保存過濾器",
-       "rcfilters-quickfilters-placeholder-description": "要儲存您的篩選器設定並供以後重新使用,點選下方啟用的篩選器區域之內的書籤圖示。",
+       "rcfilters-quickfilters-placeholder-description": "要儲存您的篩選設定並供以後重新使用,點選下方啟用的篩選區域之內的書籤圖示。",
        "rcfilters-savedqueries-defaultlabel": "已儲存的查詢條件",
        "rcfilters-savedqueries-rename": "重新命名",
        "rcfilters-savedqueries-setdefault": "設為預設",
        "rcfilters-savedqueries-unsetdefault": "取消設為預設",
        "rcfilters-savedqueries-remove": "刪除",
        "rcfilters-savedqueries-new-name-label": "名稱",
-       "rcfilters-savedqueries-new-name-placeholder": "說明查詢條件的用途",
+       "rcfilters-savedqueries-new-name-placeholder": "說明篩選條件的用途",
        "rcfilters-savedqueries-apply-label": "建立查詢條件",
-       "rcfilters-savedqueries-apply-and-setdefault-label": "建立預設過濾器",
+       "rcfilters-savedqueries-apply-and-setdefault-label": "建立預設篩選",
        "rcfilters-savedqueries-cancel-label": "取消",
-       "rcfilters-savedqueries-add-new-title": "儲存目前的過濾器設定",
-       "rcfilters-savedqueries-already-saved": "這些過濾已被儲存。變更您的設定,來建立新的已儲存過濾。",
+       "rcfilters-savedqueries-add-new-title": "儲存目前的篩選設定",
+       "rcfilters-savedqueries-already-saved": "這些篩選已被儲存。變更您的設定,來建立新的已儲存篩選。",
        "rcfilters-restore-default-filters": "還原預設過濾條件",
-       "rcfilters-clear-all-filters": "清除所有過濾條件",
+       "rcfilters-clear-all-filters": "清除所有篩選條件",
        "rcfilters-show-new-changes": "檢視最新變更",
-       "rcfilters-search-placeholder": "過濾變更(使用選單或搜尋過濾名稱)",
-       "rcfilters-invalid-filter": "無效的過濾條件",
+       "rcfilters-search-placeholder": "篩選變更(使用選單或搜尋篩選名稱)",
+       "rcfilters-invalid-filter": "無效的篩選條件",
        "rcfilters-empty-filter": "沒有使用中的過濾條件。已顯示所有的貢獻。",
-       "rcfilters-filterlist-title": "過濾條件",
+       "rcfilters-filterlist-title": "篩選",
        "rcfilters-filterlist-whatsthis": "這些是怎樣工作的?",
-       "rcfilters-filterlist-feedbacklink": "告訴我們您對這些過濾工具有什麼想法",
+       "rcfilters-filterlist-feedbacklink": "告訴我們您對這些篩選工具有什麼想法",
        "rcfilters-highlightbutton-title": "明顯標示結果",
        "rcfilters-highlightmenu-title": "選擇顏色",
        "rcfilters-highlightmenu-help": "選擇要明顯標示此屬性的色彩",
-       "rcfilters-filterlist-noresults": "查無過濾條件",
+       "rcfilters-filterlist-noresults": "查無篩選條件",
        "rcfilters-noresults-conflict": "因搜尋條件衝突,查無結果",
-       "rcfilters-state-message-subset": "此過濾條件沒有效果,因其結果包含了以下範圍更廣的{{PLURAL:$2|過濾條件|過濾條件}}其中之一 (嘗試以明顯標示來區別它):$1",
-       "rcfilters-state-message-fullcoverage": "選擇在此群組中的所有過濾條件與沒選擇時相同,代表此過濾條件沒有效果。群組包含了:$1",
+       "rcfilters-state-message-subset": "此篩選條件沒有效果,因其結果包含了以下範圍更廣的{{PLURAL:$2|篩選條件|篩選條件}}其中之一(嘗試以明顯標示來區別它):$1",
+       "rcfilters-state-message-fullcoverage": "選擇在此群組中的所有篩選條件與沒選擇時相同,代表此篩選條件沒有效果。群組包含了:$1",
        "rcfilters-filtergroup-authorship": "貢獻的作者",
        "rcfilters-filter-editsbyself-label": "您的編輯",
        "rcfilters-filter-editsbyself-description": "您的貢獻",
        "rcfilters-filter-categorization-description": "從分類中添加或移除頁面的記錄。",
        "rcfilters-filter-logactions-label": "日誌動作",
        "rcfilters-filter-logactions-description": "管理動作、帳號建立、頁面刪除、上傳…",
-       "rcfilters-hideminor-conflicts-typeofchange-global": "\"次要編輯\" 過濾條件與一個或多個變更類型過濾條件衝突,因為某些變更類型無法指定為 \"次要\"。衝突的過濾條件已在上方使用的過濾條件區域中標示。",
-       "rcfilters-hideminor-conflicts-typeofchange": "某些變更類型無法指定為 \"次要\",所以此過濾條件與以下變更類型的過濾條件衝突:$1",
+       "rcfilters-hideminor-conflicts-typeofchange-global": "\"次要編輯\" 過濾條件與一個或多個變更類型篩選條件衝突,因為某些變更類型無法指定為 \"次要\"。衝突的篩選條件已在上方使用的篩選條件區域中標示。",
+       "rcfilters-hideminor-conflicts-typeofchange": "某些變更類型無法指定為 \"次要\",所以此篩選條件與以下變更類型的篩選條件衝突:$1",
        "rcfilters-typeofchange-conflicts-hideminor": "此變更類型過濾條件與 \"次要編輯\" 過濾條件衝突,某些變更類型無法指定為 \"次要\"。",
        "rcfilters-filtergroup-lastRevision": "最新修訂版本",
        "rcfilters-filter-lastrevision-label": "最新修訂版本",
        "rcfilters-exclude-button-off": "排除選項",
        "rcfilters-exclude-button-on": "排除所選",
        "rcfilters-view-tags": "標記的編輯",
-       "rcfilters-view-namespaces-tooltip": "按命名空間過濾結果",
+       "rcfilters-view-namespaces-tooltip": "按命名空間篩選結果",
        "rcfilters-view-tags-tooltip": "按編輯標籤過濾結果",
-       "rcfilters-view-return-to-default-tooltip": "返回主過濾選單",
+       "rcfilters-view-return-to-default-tooltip": "返回主篩選選單",
        "rcfilters-view-tags-help-icon-tooltip": "了解更多關於標記編輯的資訊",
        "rcfilters-liveupdates-button": "動態更新",
        "rcfilters-liveupdates-button-title-on": "關閉動態更新",
        "uploaded-wrong-setting-svg": "於已上傳的 SVG 檔案中找到 <code>&lt;set to=\"$1\"&gt;</code>,已禁止使用 \"set\" 標籤加入 remote/data/script 目標至任何屬性。",
        "uploaded-setting-handler-svg": "於已上傳的 SVG 檔案中找到 <code>$1=\"$2\"</code>,已禁止 SVG 使用 remote/data/script 設定 \"handler\" 屬性。",
        "uploaded-remote-url-svg": "於已上傳的 SVG 檔案中找到 <code>$1=\"$2\"</code>,已禁止 SVG 使用任何遠端 URL 設定樣式。",
-       "uploaded-image-filter-svg": "於已上傳的 SVG 檔案中找到圖片過濾器使用 URL:<code>&lt;$1 $2=\"$3\"&gt;</code>。",
+       "uploaded-image-filter-svg": "於已上傳的 SVG 檔案中找到以 URL 形式的圖片篩選:<code>&lt;$1 $2=\"$3\"&gt;</code>。",
        "uploadscriptednamespace": "此 SVG 檔案使用了非法的命名空間 \"<nowiki>$1</nowiki>\"。",
        "uploadinvalidxml": "無法解析已上傳檔案中的 XML。",
        "uploadvirus": "該檔案含有病毒!\n詳細資料:$1",
        "filedelete-maintenance": "維護期間檔案刪除和還原暫停使用。",
        "filedelete-maintenance-title": "無法刪除檔案",
        "mimesearch": "MIME 搜尋",
-       "mimesearch-summary": "本頁面可搜尋檔案的 MIME 類型。\n輸入格式:內容類型/子類型 或 內容類型/*,如 <code>image/jpeg</code>。",
+       "mimesearch-summary": "本頁面可篩選檔案的 MIME 類型。\n輸入格式:內容類型/子類型 或 內容類型/*,如 <code>image/jpeg</code>。",
        "mimetype": "MIME 類型:",
        "download": "下載",
        "unwatchedpages": "未監視的頁面",
        "whatlinkshere-hidetrans": "$1 引用",
        "whatlinkshere-hidelinks": "$1 連結",
        "whatlinkshere-hideimages": "$1 檔案連結",
-       "whatlinkshere-filters": "篩選",
+       "whatlinkshere-filters": "篩選",
        "whatlinkshere-submit": "前往",
        "autoblockid": "自動封鎖 #$1",
        "block": "封鎖使用者",
        "allmessages-filter-unmodified": "未修改",
        "allmessages-filter-all": "全部",
        "allmessages-filter-modified": "已修改",
-       "allmessages-prefix": "依字首搜尋:",
+       "allmessages-prefix": "依字首篩選:",
        "allmessages-language": "語言:",
        "allmessages-filter-submit": "執行",
        "allmessages-filter-translate": "翻譯",
index 9ad5951..93260fe 100644 (file)
@@ -73,3 +73,5 @@ $magicWords = [
        'special'                   => [ '0', 'цастәи', 'служебная', 'special' ],
        'index'                     => [ '1', '__АИНДЕКС__', '__ИНДЕКС__', '__INDEX__' ],
 ];
+
+$linkTrail = '/^([a-zабвгҕдежзӡикқҟлмнопҧрстҭуфхҳцҵчҷҽҿшыҩџьә]+)(.*)$/sDu';
index c6d8d17..940d665 100644 (file)
@@ -5,9 +5,9 @@
 @rcfilters-spinner-size: 12px;
 @rcfilters-head-min-height: 210px;
 @rcfilters-head-margin-bottom: 20px;
-@rcfilters-wl-head-min-height: 270px;
+@rcfilters-wl-head-min-height: 295px;
 @rcfilters-head-min-height-collapsed: 130px;
-@rcfilters-wl-head-min-height-collapsed: 200px;
+@rcfilters-wl-head-min-height-collapsed: 220px;
 
 // Corrections for the standard special page
 .client-js {
@@ -24,6 +24,7 @@
        // On the watchlist, reserve a bit more
        .mw-special-Watchlist .rcfilters-head {
                min-height: @rcfilters-wl-head-min-height;
+
        }
 
        .mw-rcfilters-collapsed {
        // space. This makes the min-height trick work better.
        .watchlistDetails {
                float: left;
+               // The 20em should match the min-width we are setting up
+               // for the .mw-rcfilters-ui-watchlistTopSectionWidget-editWatchlistButton
+               // in mw.rcfilters.ui.WatchlistTopSectionWidget.less
+               width: ~'calc( 100% - 20em )';
        }
 }
 
index 4307c6f..52f7ff2 100644 (file)
@@ -7,6 +7,10 @@
 
        &-editWatchlistButton {
                vertical-align: bottom;
+               // Match the width that we are setting up for the loading
+               // of the .watchlistDetails in mw.rcfilters.less
+               min-width: 20em;
+               text-align: right;
 
                // actual button
                .oo-ui-buttonWidget {
index 03588ae..93c7ed3 100644 (file)
@@ -11,6 +11,7 @@ use MediaWiki\Services\ServiceDisabledException;
 use MediaWiki\Shell\CommandFactory;
 use MediaWiki\Storage\BlobStore;
 use MediaWiki\Storage\BlobStoreFactory;
+use MediaWiki\Storage\NameTableStore;
 use MediaWiki\Storage\RevisionLookup;
 use MediaWiki\Storage\RevisionStore;
 use MediaWiki\Storage\SqlBlobStore;
@@ -348,6 +349,7 @@ class MediaWikiServicesTest extends MediaWikiTestCase {
                        'RevisionLookup' => [ 'RevisionLookup', RevisionLookup::class ],
                        'HttpRequestFactory' => [ 'HttpRequestFactory', HttpRequestFactory::class ],
                        'CommentStore' => [ 'CommentStore', CommentStore::class ],
+                       'ChangeTagDefStore' => [ 'ChangeTagDefStore', NameTableStore::class ],
                ];
        }
 
index 24107b1..bdabf9c 100644 (file)
@@ -58,12 +58,9 @@ class PageUpdaterTest extends MediaWikiTestCase {
                $oldStats = $this->db->selectRow( 'site_stats', '*', '1=1' );
 
                $this->assertFalse( $updater->wasCommitted(), 'wasCommitted' );
-               $this->assertFalse( $updater->getBaseRevisionId(), 'getBaseRevisionId' );
+               $this->assertFalse( $updater->getOriginalRevisionId(), 'getOriginalRevisionId' );
                $this->assertSame( 0, $updater->getUndidRevisionId(), 'getUndidRevisionId' );
 
-               $updater->setBaseRevisionId( 0 );
-               $this->assertSame( 0, $updater->getBaseRevisionId(), 'getBaseRevisionId' );
-
                $updater->addTag( 'foo' );
                $updater->addTags( [ 'bar', 'qux' ] );
 
@@ -77,10 +74,12 @@ class PageUpdaterTest extends MediaWikiTestCase {
 
                $parent = $updater->grabParentRevision();
 
-               // TODO: test that hasEditConflict() grabs the parent revision
                $this->assertNull( $parent, 'getParentRevision' );
                $this->assertFalse( $updater->wasCommitted(), 'wasCommitted' );
-               $this->assertFalse( $updater->hasEditConflict(), 'hasEditConflict' );
+
+               // TODO: test that hasEditConflict() grabs the parent revision
+               $this->assertFalse( $updater->hasEditConflict( 0 ), 'hasEditConflict' );
+               $this->assertTrue( $updater->hasEditConflict( 1 ), 'hasEditConflict' );
 
                // TODO: test failure with EDIT_UPDATE
                // TODO: test EDIT_MINOR, EDIT_BOT, etc
@@ -158,10 +157,12 @@ class PageUpdaterTest extends MediaWikiTestCase {
 
                $oldStats = $this->db->selectRow( 'site_stats', '*', '1=1' );
 
-               // TODO: test page update does not fail with mismatching base rev ID
-               $baseRev = $title->getLatestRevID( Title::GAID_FOR_UPDATE );
-               $updater->setBaseRevisionId( $baseRev );
-               $this->assertSame( $baseRev, $updater->getBaseRevisionId(), 'getBaseRevisionId' );
+               $updater->setOriginalRevisionId( 7 );
+               $this->assertSame( 7, $updater->getOriginalRevisionId(), 'getOriginalRevisionId' );
+
+               $this->assertFalse( $updater->hasEditConflict( $parentId ), 'hasEditConflict' );
+               $this->assertTrue( $updater->hasEditConflict( $parentId - 1 ), 'hasEditConflict' );
+               $this->assertTrue( $updater->hasEditConflict( 0 ), 'hasEditConflict' );
 
                // TODO: MCR: test additional slots
                $updater->setContent( 'main', new TextContent( 'Lorem Ipsum' ) );
@@ -332,48 +333,6 @@ class PageUpdaterTest extends MediaWikiTestCase {
                $this->assertTrue( $status->hasMessage( 'edit-already-exists' ), 'edit-already-exists' );
        }
 
-       /**
-        * @covers \MediaWiki\Storage\PageUpdater::saveRevision()
-        * @covers \MediaWiki\Storage\PageUpdater::setBaseRevisionId()
-        */
-       public function testFailureOnBaseRevision() {
-               $user = $this->getTestUser()->getUser();
-
-               $title = $this->getDummyTitle( __METHOD__ );
-
-               // start editing non-existing page
-               $page = WikiPage::factory( $title );
-               $updater = $page->newPageUpdater( $user );
-
-               // update for base revision 7 should fail
-               $summary = CommentStoreComment::newUnsavedComment( 'udpate?!' );
-               $updater->setBaseRevisionId( 7 ); // expect page to exist
-               $updater->setContent( 'main', new TextContent( 'Lorem ipsum' ) );
-               $updater->saveRevision( $summary );
-               $status = $updater->getStatus();
-
-               $this->assertFalse( $updater->wasSuccessful(), 'wasSuccessful()' );
-               $this->assertNull( $updater->getNewRevision(), 'getNewRevision()' );
-               $this->assertFalse( $status->isOK(), 'getStatus()->isOK()' );
-               $this->assertTrue( $status->hasMessage( 'edit-gone-missing' ), 'edit-gone-missing' );
-
-               // create the page
-               $this->createRevision( $page, __METHOD__ );
-
-               // update for base revision 0 should fail
-               $summary = CommentStoreComment::newUnsavedComment( 'create?!' );
-               $updater = $page->newPageUpdater( $user );
-               $updater->setBaseRevisionId( 0 ); // expect page to not exist
-               $updater->setContent( 'main', new TextContent( 'dolor sit amet' ) );
-               $updater->saveRevision( $summary );
-               $status = $updater->getStatus();
-
-               $this->assertFalse( $updater->wasSuccessful(), 'wasSuccessful()' );
-               $this->assertNull( $updater->getNewRevision(), 'getNewRevision()' );
-               $this->assertFalse( $status->isOK(), 'getStatus()->isOK()' );
-               $this->assertTrue( $status->hasMessage( 'edit-already-exists' ), 'edit-already-exists' );
-       }
-
        public function provideSetRcPatrolStatus( $patrolled ) {
                yield [ RecentChange::PRC_UNPATROLLED ];
                yield [ RecentChange::PRC_AUTOPATROLLED ];
index 216228a..d7c8ec4 100644 (file)
@@ -1,5 +1,7 @@
 <?php
 
+use MediaWiki\MediaWikiServices;
+
 /**
  * @covers ChangeTags
  * @group Database
@@ -505,6 +507,7 @@ class ChangeTagsTest extends MediaWikiTestCase {
                $dbw = wfGetDB( DB_MASTER );
                $dbw->delete( 'change_tag', '*' );
                $dbw->delete( 'change_tag_def', '*' );
+               MediaWikiServices::getInstance()->resetServiceForTesting( 'ChangeTagDefStore' );
 
                $rcId = 123;
                ChangeTags::updateTags( [ 'tag1', 'tag2' ], [], $rcId );
index 0ea1328..ccad4a4 100644 (file)
@@ -37,4 +37,77 @@ class XhprofTest extends PHPUnit\Framework\TestCase {
                $enabled->setValue( true );
                $xhprof->getMethod( 'enable' )->invoke( null );
        }
+
+       /**
+        * callAny() calls the first function of the list.
+        *
+        * @covers Xhprof::callAny
+        * @dataProvider provideCallAny
+        */
+       public function testCallAny( array $functions, array $args, $expectedResult ) {
+               $xhprof = new ReflectionClass( Xhprof::class );
+               $callAny = $xhprof->getMethod( 'callAny' );
+               $callAny->setAccessible( true );
+
+               $this->assertEquals( $expectedResult,
+                       $callAny->invoke( null, $functions, $args ) );
+       }
+
+       /**
+        * Data provider for testCallAny().
+       */
+       public function provideCallAny() {
+               return [
+                       [
+                               [ 'wfTestCallAny_func1', 'wfTestCallAny_func2', 'wfTestCallAny_func3' ],
+                               [ 3, 4 ],
+                               12
+                       ],
+                       [
+                               [ 'wfTestCallAny_nosuchfunc1', 'wfTestCallAny_func2', 'wfTestCallAny_func3' ],
+                               [ 3, 4 ],
+                               7
+                       ],
+                       [
+                               [ 'wfTestCallAny_nosuchfunc1', 'wfTestCallAny_nosuchfunc2', 'wfTestCallAny_func3' ],
+                               [ 3, 4 ],
+                               -1
+                       ]
+
+               ];
+       }
+
+       /**
+        * callAny() throws an exception when all functions are unavailable.
+        *
+        * @expectedException        Exception
+        * @expectedExceptionMessage Neither xhprof nor tideways are installed
+        * @covers Xhprof::callAny
+        */
+       public function testCallAnyNoneAvailable() {
+               $xhprof = new ReflectionClass( Xhprof::class );
+               $callAny = $xhprof->getMethod( 'callAny' );
+               $callAny->setAccessible( true );
+
+               $callAny->invoke( $xhprof, [
+                       'wfTestCallAny_nosuchfunc1',
+                       'wfTestCallAny_nosuchfunc2',
+                       'wfTestCallAny_nosuchfunc3'
+               ] );
+       }
+}
+
+/** Test function #1 for XhprofTest::testCallAny */
+function wfTestCallAny_func1( $a, $b ) {
+       return $a * $b;
+}
+
+/** Test function #2 for XhprofTest::testCallAny */
+function wfTestCallAny_func2( $a, $b ) {
+       return $a + $b;
+}
+
+/** Test function #3 for XhprofTest::testCallAny */
+function wfTestCallAny_func3( $a, $b ) {
+       return $a - $b;
 }