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
$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.
/** @var string */
public $action = 'submit';
- /** @var bool */
+ /** @var bool Whether an edit conflict needs to be resolved. Detected based on whether
+ * $editRevId is different from the current revision. When a conflict has successfully
+ * been resolved by a 3-way-merge, this field is set to false.
+ */
public $isConflict = false;
/** @var bool New page or new section */
/** @var bool Has a summary been preset using GET parameter &summary= ? */
public $hasPresetSummary = false;
- /** @var Revision|bool|null */
+ /** @var Revision|bool|null A revision object corresponding to $this->editRevId. */
public $mBaseRevision = false;
/** @var bool */
/** @var string */
public $edittime = '';
- /** @var int */
+ /** @var int ID of the current revision at the time editing was initiated on the client.
+ * This is used to detect and resolve edit conflicts.
+ *
+ * @note 0 if the page did not exist at that time.
+ * @note When starting an edit from an old revision, this still records the current
+ * revision at the time , not the one the edit is based on.
+ *
+ * @see $oldid
+ * @see getBaseRevision()
+ */
private $editRevId = null;
/** @var string */
/** @var string */
public $starttime = '';
- /** @var int */
+ /** @var int Revision ID the edit is based on, or 0 if it's the current revision.
+ * @see $editRevId
+ */
public $oldid = 0;
- /** @var int */
+ /** @var int Revision ID the edit is based on, adjusted when an edit conflict is resolved.
+ * @see $editRevId
+ * @see $oldid
+ * @see getparentRevId()
+ */
public $parentRevId = 0;
/** @var string */
wfDebug( "timestamp: {$timestamp}, edittime: {$this->edittime}\n" );
- // Check editRevId if set, which handles same-second timestamp collisions
+ // An edit conflict is detected if the current revision is different from the
+ // revision that was current when editing was initiated on the client.
+ // This is checked based on the timestamp and revision ID.
+ // TODO: the timestamp based check can probably go away now.
if ( $timestamp != $this->edittime
|| ( $this->editRevId !== null && $this->editRevId != $latest )
) {
private function mergeChangesIntoContent( &$editContent ) {
$db = wfGetDB( DB_MASTER );
- // This is the revision the editor started from
+ // This is the revision that was current at the time editing was initiated on the client,
+ // even if the edit was based on an old revision.
$baseRevision = $this->getBaseRevision();
$baseContent = $baseRevision ? $baseRevision->getContent() : null;
}
/**
- * @note: this method is very poorly named. If the user opened the form with ?oldid=X,
- * one might think of X as the "base revision", which is NOT what this returns.
- * @return Revision|null Current version when the edit was started
+ * Returns the revision that was current at the time editing was initiated on the client,
+ * even if the edit was based on an old revision.
+ *
+ * @warning: this method is very poorly named. If the user opened the form with ?oldid=X,
+ * one might think of X as the "base revision", which is NOT what this returns,
+ * see oldid for that. One might further assume that this corresponds to the $baseRevId
+ * parameter of WikiPage::doEditContent, which is not the case either.
+ * getExpectedParentRevision() would perhaps be a better name.
+ *
+ * @return Revision|null Current version when editing was initiated on the client
*/
public function getBaseRevision() {
if ( !$this->mBaseRevision ) {
return $this->getService( 'SlotRoleStore' );
}
+ /**
+ * @since 1.32
+ * @return NameTableStore
+ */
+ public function getChangeTagDefStore() {
+ return $this->getService( 'ChangeTagDefStore' );
+ }
+
/**
* @since 1.31
* @return PreferencesFactory
* @return string|bool Decompressed text, or false on failure
*/
public static function decompressRevisionText( $text, $flags ) {
+ if ( $text === false ) {
+ // Text failed to be fetched; nothing to do
+ return false;
+ }
+
return self::getBlobStore()->decompressData( $text, $flags );
}
);
},
+ '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();
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
}
/**
- * 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.
*
* 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;
}
/**
/**
* 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;
}
/**
- * 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;
}
/**
* 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.
// 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 );
$tags = $this->computeEffectiveTags( $flags );
Hooks::run(
'NewRevisionFromEditComplete',
- [ $wikiPage, $newLegacyRevision, $this->baseRevId, $user, &$tags ]
+ [ $wikiPage, $newLegacyRevision, $this->getOriginalRevisionId(), $user, &$tags ]
);
// Update recentchanges
// 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 );
}
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 );
}
),
// No negative caching per BlobStore::getBlob()
$blob = ExternalStore::fetchFromURL( $url, [ 'wiki' => $this->wikiId ] );
- return $this->decompressData( $blob, $flags );
+ return $blob === false ? false : $this->decompressData( $blob, $flags );
},
[ 'pcGroup' => self::TEXT_CACHE_GROUP, 'pcTTL' => WANObjectCache::TTL_PROC_LONG ]
);
} else {
$blob = ExternalStore::fetchFromURL( $url, [ 'wiki' => $this->wikiId ] );
- return $this->decompressData( $blob, $flags );
+ return $blob === false ? false : $this->decompressData( $blob, $flags );
}
} else {
return $this->decompressData( $raw, $flags );
* @note direct use is deprecated, use getBlob() or SlotRecord::getContent() instead.
* @todo make this private, there should be no need to use this method outside this class.
*
- * @param mixed $blob Reference to a text
+ * @param string $blob Blob in compressed/encoded form.
* @param array $blobFlags Compression flags, such as 'gzip'.
* Note that not including 'utf-8' in $blobFlags will cause the data to be decoded
* according to the legacy encoding specified via setLegacyEncoding.
* @return string|bool Decompressed text, or false on failure
*/
public function decompressData( $blob, array $blobFlags ) {
- if ( $blob === false ) {
- // Text failed to be fetched; nothing to do
- return false;
- }
+ // Revision::decompressRevisionText accepted false here, so defend against that
+ Assert::parameterType( 'string', $blob, '$blob' );
if ( in_array( 'error', $blobFlags ) ) {
// Error row, return false
ApiBase::PARAM_DFLT => implode( '|', $props ),
ApiBase::PARAM_ISMULTI => true,
ApiBase::PARAM_TYPE => $props,
+ ApiBase::PARAM_HELP_MSG_PER_VALUE => [],
],
];
}
$propValues[] = 'canUpload';
+ sort( $propValues );
return $propValues;
}
protected function getExamplesMessages() {
- return [
- 'action=query&meta=filerepoinfo&friprop=apiurl|name|displayname'
- => 'apihelp-query+filerepoinfo-example-simple',
- ];
+ $examples = [];
+
+ $props = array_intersect( [ 'apiurl', 'name', 'displayname' ], $this->getProps() );
+ if ( $props ) {
+ $examples['action=query&meta=filerepoinfo&friprop=' . implode( '|', $props )] =
+ 'apihelp-query+filerepoinfo-example-simple';
+ }
+
+ return $examples;
}
public function getHelpUrls() {
"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>{$1}</var> في اسم الوسيط بقيم <var>$2</var>",
"api-help-param-templated-var": "<var>{$1}</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 ميدياويكي في <https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce> ; للحصول على إشعار بإيقاف 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/."
}
"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:",
"apihelp-query+filearchive-example-simple": "Show a list of all deleted files.",
"apihelp-query+filerepoinfo-summary": "Return meta information about image repositories configured on the wiki.",
- "apihelp-query+filerepoinfo-param-prop": "Which repository properties to get (there may be more available on some wikis):\n;apiurl:URL to the repository API - helpful for getting image info from the host.\n;name:The key of the repository - used in e.g. <var>[[mw:Special:MyLanguage/Manual:$wgForeignFileRepos|$wgForeignFileRepos]]</var> and [[Special:ApiHelp/query+imageinfo|imageinfo]] return values.\n;displayname:The human-readable name of the repository wiki.\n;rooturl:Root URL for image paths.\n;local:Whether that repository is the local one or not.",
+ "apihelp-query+filerepoinfo-param-prop": "Which repository properties to get (properties available may vary on other wikis).",
+ "apihelp-query+filerepoinfo-paramvalue-prop-apiurl": "URL to the repository API - helpful for getting image info from the host.",
+ "apihelp-query+filerepoinfo-paramvalue-prop-articlepath": "Repository wiki's <var>[[mw:Special:MyLanguage/Manual:$wgArticlePath|$wgArticlePath]]</var> or equivalent.",
+ "apihelp-query+filerepoinfo-paramvalue-prop-canUpload": "Whether files can be uploaded to this repository, e.g. via CORS and shared authentication.",
+ "apihelp-query+filerepoinfo-paramvalue-prop-displayname": "The human-readable name of the repository wiki.",
+ "apihelp-query+filerepoinfo-paramvalue-prop-favicon": "Repository wiki's favicon URL, from <var>[[mw:Special:MyLanguage/Manual:$wgFavicon|$wgFavicon]]</var>.",
+ "apihelp-query+filerepoinfo-paramvalue-prop-fetchDescription": "Whether file description pages are fetched from this repository when viewing local file description pages.",
+ "apihelp-query+filerepoinfo-paramvalue-prop-initialCapital": "Whether file names implicitly start with a capital letter.",
+ "apihelp-query+filerepoinfo-paramvalue-prop-local": "Whether that repository is the local one or not.",
+ "apihelp-query+filerepoinfo-paramvalue-prop-name": "The key of the repository - used in e.g. <var>[[mw:Special:MyLanguage/Manual:$wgForeignFileRepos|$wgForeignFileRepos]]</var> and [[Special:ApiHelp/query+imageinfo|imageinfo]] return values.",
+ "apihelp-query+filerepoinfo-paramvalue-prop-rootUrl": "Root URL path for image paths.",
+ "apihelp-query+filerepoinfo-paramvalue-prop-scriptDirUrl": "Root URL path for the repository wiki's MediaWiki installation.",
+ "apihelp-query+filerepoinfo-paramvalue-prop-server": "Repository wiki's <var>[[mw:Special:MyLanguage/Manual:$wgServer|$wgServer]]</var> or equivalent.",
+ "apihelp-query+filerepoinfo-paramvalue-prop-thumbUrl": "Root URL path for thumbnail paths.",
+ "apihelp-query+filerepoinfo-paramvalue-prop-url": "Public zone URL path.",
"apihelp-query+filerepoinfo-example-simple": "Get information about file repositories.",
"apihelp-query+fileusage-summary": "Find all pages that use the given files.",
"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 :",
"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": "קבלת מידע על הדף על שינויים אחרונים שלא נבדקו.",
"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>__HIDDENCAT__</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/."
}
"apihelp-query+filearchive-example-simple": "{{doc-apihelp-example|query+filearchive}}",
"apihelp-query+filerepoinfo-summary": "{{doc-apihelp-summary|query+filerepoinfo}}",
"apihelp-query+filerepoinfo-param-prop": "{{doc-apihelp-param|query+filerepoinfo|prop}}",
+ "apihelp-query+filerepoinfo-paramvalue-prop-apiurl": "{{doc-apihelp-paramvalue|query+filerepoinfo|prop|apiurl}}",
+ "apihelp-query+filerepoinfo-paramvalue-prop-articlepath": "{{doc-apihelp-paramvalue|query+filerepoinfo|prop|articlepath}}",
+ "apihelp-query+filerepoinfo-paramvalue-prop-canUpload": "{{doc-apihelp-paramvalue|query+filerepoinfo|prop|canUpload}}",
+ "apihelp-query+filerepoinfo-paramvalue-prop-displayname": "{{doc-apihelp-paramvalue|query+filerepoinfo|prop|displayname}}",
+ "apihelp-query+filerepoinfo-paramvalue-prop-favicon": "{{doc-apihelp-paramvalue|query+filerepoinfo|prop|favicon}}",
+ "apihelp-query+filerepoinfo-paramvalue-prop-fetchDescription": "{{doc-apihelp-paramvalue|query+filerepoinfo|prop|fetchDescription}}",
+ "apihelp-query+filerepoinfo-paramvalue-prop-initialCapital": "{{doc-apihelp-paramvalue|query+filerepoinfo|prop|initialCapital}}",
+ "apihelp-query+filerepoinfo-paramvalue-prop-local": "{{doc-apihelp-paramvalue|query+filerepoinfo|prop|local}}",
+ "apihelp-query+filerepoinfo-paramvalue-prop-name": "{{doc-apihelp-paramvalue|query+filerepoinfo|prop|name}}",
+ "apihelp-query+filerepoinfo-paramvalue-prop-rootUrl": "{{doc-apihelp-paramvalue|query+filerepoinfo|prop|rootUrl}}",
+ "apihelp-query+filerepoinfo-paramvalue-prop-scriptDirUrl": "{{doc-apihelp-paramvalue|query+filerepoinfo|prop|scriptDirUrl}}",
+ "apihelp-query+filerepoinfo-paramvalue-prop-server": "{{doc-apihelp-paramvalue|query+filerepoinfo|prop|server}}",
+ "apihelp-query+filerepoinfo-paramvalue-prop-thumbUrl": "{{doc-apihelp-paramvalue|query+filerepoinfo|prop|thumbUrl}}",
+ "apihelp-query+filerepoinfo-paramvalue-prop-url": "{{doc-apihelp-paramvalue|query+filerepoinfo|prop|url}}",
"apihelp-query+filerepoinfo-example-simple": "{{doc-apihelp-example|query+filerepoinfo}}",
"apihelp-query+fileusage-summary": "{{doc-apihelp-summary|query+fileusage}}",
"apihelp-query+fileusage-param-prop": "{{doc-apihelp-param|query+fileusage|prop|paramvalues=1}}",
"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": "要获取的属性:",
* @ingroup Change tagging
*/
-use MediaWiki\Logger\LoggerFactory;
use MediaWiki\MediaWikiServices;
-use MediaWiki\Storage\NameTableStore;
use Wikimedia\Rdbms\Database;
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 );
public function getAcceptLanguage() {
global $wgLanguageCode, $wgRequest;
- $mwLanguages = Language::fetchLanguageNames();
+ $mwLanguages = Language::fetchLanguageNames( null, 'mwfile' );
$headerLanguages = array_keys( $wgRequest->getAcceptLang() );
foreach ( $headerLanguages as $lang ) {
$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
* @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 );
}
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 ]
+ );
}
/**
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" );
}
}
}
// Use the busy fallback value if nothing else
if ( $busyValue !== null ) {
- $this->stats->increment( "wanobjectcache.$kClass.miss.busy" );
+ $miss = is_infinite( $minTime ) ? 'renew' : 'miss';
+ $this->stats->increment( "wanobjectcache.$kClass.$miss.busy" );
return is_callable( $busyValue ) ? $busyValue() : $busyValue;
}
$this->cache->changeTTL( self::MUTEX_KEY_PREFIX . $key, (int)$preCallbackTime - 60 );
}
- $this->stats->increment( "wanobjectcache.$kClass.miss.compute" );
+ $miss = is_infinite( $minTime ) ? 'renew' : 'miss';
+ $this->stats->increment( "wanobjectcache.$kClass.$miss.compute" );
return $value;
}
* @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
);
}
* 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
* @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;
// 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() );
'label-message' => 'tog-hideminor',
'section' => 'rc/advancedrc',
];
+ $defaultPreferences['rcfilters-rc-collapsed'] = [
+ 'type' => 'api',
+ ];
+ $defaultPreferences['rcfilters-wl-collapsed'] = [
+ 'type' => 'api',
+ ];
$defaultPreferences['rcfilters-saved-queries'] = [
'type' => 'api',
];
* ($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 {
/**
*/
protected static $limitPreferenceName;
+ /**
+ * Preference name for collapsing the active filter display. Subclasses should override this.
+ * @var string
+ */
+ protected static $collapsedPreferenceName;
+
/** @var string */
protected $rcSubpage;
foreach ( $jsData['messageKeys'] as $key ) {
$messages[$key] = $this->msg( $key )->plain();
}
-
$out->addBodyClasses( 'mw-rcfilters-enabled' );
+ $collapsed = $this->getUser()->getBoolOption( static::$collapsedPreferenceName );
+ if ( $collapsed ) {
+ $out->addBodyClasses( 'mw-rcfilters-collapsed' );
+ }
+
$out->addHTML(
ResourceLoader::makeInlineScript(
ResourceLoader::makeMessageSetScript( $messages ),
);
$out->addJsConfigVars( 'wgStructuredChangeFilters', $jsData['groups'] );
+ $out->addJsConfigVars( 'wgStructuredChangeFiltersCollapsedState', $collapsed );
$out->addJsConfigVars(
'wgRCFiltersChangeTags',
'wgStructuredChangeFiltersDaysPreferenceName',
static::$daysPreferenceName
);
+ $out->addJsConfigVars(
+ 'wgStructuredChangeFiltersCollapsedPreferenceName',
+ static::$collapsedPreferenceName
+ );
$out->addJsConfigVars(
'StructuredChangeFiltersLiveUpdatePollingRate',
protected static $savedQueriesPreferenceName = 'rcfilters-saved-queries';
protected static $daysPreferenceName = 'rcdays'; // Use general RecentChanges preference
protected static $limitPreferenceName = 'rcfilters-limit'; // Use RCFilters-specific preference
+ protected static $collapsedPreferenceName = 'rcfilters-rc-collapsed';
private $watchlistFilterGroupDefinition;
)->escaped();
$grouplist = '';
- $count = count( $list );
+ $count = count( $list ) + count( $tempList );
if ( $count > 0 ) {
$grouplist = $this->msg( 'userrights-groupsmember' )
->numParams( $count )
protected static $savedQueriesPreferenceName = 'rcfilters-wl-saved-queries';
protected static $daysPreferenceName = 'watchlistdays';
protected static $limitPreferenceName = 'wllimit';
+ protected static $collapsedPreferenceName = 'rcfilters-wl-collapsed';
private $maxDays;
/**
* 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;
/**
* 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;
/**
* 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;
* @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 );
}
}
*/
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;
}
}
}
"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",
"George Animal",
"Lokal Profil",
"Joe Watzmo",
- "WhatamIdoing"
+ "WhatamIdoing",
+ "Alexx"
]
},
"tog-underline": "Links unterstreichen:",
"and": " 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 ..."
}
"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]]",
"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",
"confirm-unwatch-top": "Κατάργηση αυτής της σελίδας από τη λίστα παρακολούθησης σας;",
"confirm-rollback-button": "Εντάξει",
"confirm-rollback-top": "Επαναφέρετε τις επεξεργασίες σε αυτή τη σελίδα;",
- "semicolon-separator": " ",
+ "semicolon-separator": "• ",
"quotation-marks": "«$1»",
"imgmultipageprev": "← προηγούμενη σελίδα",
"imgmultipagenext": "επόμενη σελίδα →",
"rcfilters-activefilters": "Active filters",
"rcfilters-activefilters-hide": "Hide",
"rcfilters-activefilters-show": "Show",
+ "rcfilters-activefilters-hide-tooltip": "Hide Active Filters area",
+ "rcfilters-activefilters-show-tooltip": "Show Active Filters area",
"rcfilters-advancedfilters": "Advanced filters",
"rcfilters-limit-title": "Results to show",
"rcfilters-limit-and-date-label": "$1 {{PLURAL:$1|change|changes}}, $2",
"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.",
"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):",
"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",
"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": "𐌱𐌹𐌲𐌹𐍄 𐌼𐌰𐌹𐍃 𐌺𐌿𐌽𐌸𐌹 𐌱𐌹 𐌽𐌹𐌿𐌾𐍉𐍃 𐍅𐌰𐌿𐍂𐌸𐌰𐌽𐍉𐍃 𐍅𐌰𐌹𐌷𐍄𐌹𐌽𐍃",
"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": "כתובת הדוא\"ל שלך אושרה כעת.",
"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",
"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": "Хьа бокъо я дагара йоазув хьа а кхелла ражача чувала.",
"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",
"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",
"savechanges": "Fisa cambias",
"publishpage": "Publici paje",
"publishchanges": "Publici cambias",
+ "publishchanges-start": "Publici cambias...",
"preview": "Previde",
"showpreview": "Mostra previde",
"showdiff": "Mostra cambias",
"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",
"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",
"rcfilters-activefilters": "{{doc-important|Translations of this message should not more than 3 cm long, otherwise it will make bad user experiences for potential mobile users.}}\nTitle for the filters selection showing the active filters.",
"rcfilters-activefilters-hide": "Label for the button that hides the active filters list and dropdown in [[Special:RecentChanges]].\n{{Identical|Hide}}",
"rcfilters-activefilters-show": "Label for the button that shows the active filters list and dropdown in [[Special:RecentChanges]].\n{{Identical|Show}}",
+ "rcfilters-activefilters-hide-tooltip": "Tooltip for the button that hides the active filters list and dropdown in [[Special:RecentChanges]].",
+ "rcfilters-activefilters-show-tooltip": "Tooltip for the button that shows the active filters list and dropdown in [[Special:RecentChanges]].",
"rcfilters-advancedfilters": "Title for the buttons allowing the user to switch to the various advanced filters views.",
"rcfilters-limit-title": "Title for the options to change the number of results shown.",
"rcfilters-limit-and-date-label": "Title for the button that opens the operation to control how many results to show and in which time period to search. \n\nParameters: $1 - Number of results shown\n\n$2 - Time period to search. One of {{msg-mw|rcfilters-days-title}} or {{msg-mw|rcfilters-hours-title}} is used as $2\n{{Identical|Change}}",
"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": "ново преусмерење",
"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!'''",
"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",
"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": "నిరోధపు రకం:",
"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": "ⵉⵙⵎ ⴰⵎⴷⴷⴰⵜ ⵏ ⵓⵏⵙⵙⵔⵎⵙ",
"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",
"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><set to=\"$1\"></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><$1 $2=\"$3\"></code>。",
+ "uploaded-image-filter-svg": "於已上傳的 SVG 檔案中找到以 URL 形式的圖片篩選:<code><$1 $2=\"$3\"></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": "翻譯",
'special' => [ '0', 'цастәи', 'служебная', 'special' ],
'index' => [ '1', '__АИНДЕКС__', '__ИНДЕКС__', '__INDEX__' ],
];
+
+$linkTrail = '/^([a-zабвгҕдежзӡикқҟлмнопҧрстҭуфхҳцҵчҷҽҿшыҩџьә]+)(.*)$/sDu';
'rcfilters-activefilters',
'rcfilters-activefilters-hide',
'rcfilters-activefilters-show',
+ 'rcfilters-activefilters-hide-tooltip',
+ 'rcfilters-activefilters-show-tooltip',
'rcfilters-advancedfilters',
'rcfilters-group-results-by-page',
'rcfilters-limit-title',
* @cfg {string} savedQueriesPreferenceName Where to save the saved queries
* @cfg {string} daysPreferenceName Preference name for the days filter
* @cfg {string} limitPreferenceName Preference name for the limit filter
+ * @cfg {string} collapsedPreferenceName Preference name for collapsing and showing
+ * the active filters area
* @cfg {boolean} [normalizeTarget] Dictates whether or not to go through the
* title normalization to separate title subpage/parts into the target= url
* parameter
this.savedQueriesPreferenceName = config.savedQueriesPreferenceName;
this.daysPreferenceName = config.daysPreferenceName;
this.limitPreferenceName = config.limitPreferenceName;
+ this.collapsedPreferenceName = config.collapsedPreferenceName;
this.normalizeTarget = !!config.normalizeTarget;
this.requestCounter = {};
this.updateNumericPreference( 'usenewrc', Number( newValue ) );
};
+ /**
+ * Update the collapsed state value
+ *
+ * @param {boolean} isCollapsed Filter area is collapsed
+ */
+ mw.rcfilters.Controller.prototype.updateCollapsedState = function ( isCollapsed ) {
+ this.updateNumericPreference( this.collapsedPreferenceName, Number( isCollapsed ) );
+ };
+
/**
* Update a numeric preference with a new value
*
savedQueriesPreferenceName = mw.config.get( 'wgStructuredChangeFiltersSavedQueriesPreferenceName' ),
daysPreferenceName = mw.config.get( 'wgStructuredChangeFiltersDaysPreferenceName' ),
limitPreferenceName = mw.config.get( 'wgStructuredChangeFiltersLimitPreferenceName' ),
+ activeFiltersCollapsedName = mw.config.get( 'wgStructuredChangeFiltersCollapsedPreferenceName' ),
+ initialCollapsedState = mw.config.get( 'wgStructuredChangeFiltersCollapsedState' ),
filtersModel = new mw.rcfilters.dm.FiltersViewModel(),
changesListModel = new mw.rcfilters.dm.ChangesListViewModel( $initialFieldset ),
savedQueriesModel = new mw.rcfilters.dm.SavedQueriesModel( filtersModel ),
savedQueriesPreferenceName: savedQueriesPreferenceName,
daysPreferenceName: daysPreferenceName,
limitPreferenceName: limitPreferenceName,
+ collapsedPreferenceName: activeFiltersCollapsedName,
normalizeTarget: specialPage === 'Recentchangeslinked'
}
);
savedQueriesModel,
changesListModel,
{
+ $wrapper: $( 'body' ),
$topSection: $topSection,
$filtersContainer: $( '.rcfilters-container' ),
$changesListContainer: $( '.mw-changeslist, .mw-changeslist-empty' ),
- $formContainer: $initialFieldset
+ $formContainer: $initialFieldset,
+ collapsed: initialCollapsedState
}
);
@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: 220px;
// Corrections for the standard special page
.client-js {
// On the watchlist, reserve a bit more
.mw-special-Watchlist .rcfilters-head {
min-height: @rcfilters-wl-head-min-height;
+
+ }
+
+ .mw-rcfilters-collapsed {
+ .rcfilters-head {
+ min-height: @rcfilters-head-min-height-collapsed;
+ }
+
+ // On the watchlist, reserve a bit more
+ &.mw-special-Watchlist .rcfilters-head {
+ min-height: @rcfilters-wl-head-min-height-collapsed;
+ }
}
.mw-recentchanges-toplinks {
// 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 )';
}
}
line-height: normal;
}
- &-collapsed {
+ .mw-rcfilters-collapsed & {
// Taking from the handle, since border-bottom is set on the
// filters view which is hidden when collapsed
border-bottom: 1px solid @colorGray10;
display: flex;
flex-wrap: nowrap;
justify-content: space-between;
- }
- &-title {
- padding: 0.6em 0; // Same top padding as the handle
- white-space: nowrap;
- min-width: 0; // This has to be here to enable the text truncation
- overflow: hidden;
- text-overflow: ellipsis;
- }
+ &-title {
+ padding: 0.6em 0; // Same top padding as the handle
+ flex: 0 0 auto;
+ }
+ &-queryName {
+ flex: 1 1 auto;
+ padding: 0.6em 0; // Same top padding as the handle
+ white-space: nowrap;
+ min-width: 0; // This has to be here to enable the text truncation
+ overflow: hidden;
+ text-overflow: ellipsis;
+ }
- &-hideshow {
- margin-left: 0.5em;
- padding-left: 0.5em;
+ &-hideshow {
+ flex: 0 0 auto;
+ margin-left: 0.5em;
+ padding-left: 0.5em;
+ }
}
&-content {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
+ // This is necessary for Firefox to be able to
+ // truncate the text. Without this rule, the label
+ // is treated as if it's full-width, and while it is
+ // being truncated with the overflow:hidden,
+ // the ellipses isn't showing properly.
+ // This rule seems to convince Firefox to re-render,
+ // fix the label's width properly, and add the ellipses
+ max-width: 100%;
}
}
}
&-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 {
* @param {mw.rcfilters.dm.SavedQueriesModel} savedQueriesModel Saved queries model
* @param {Object} config Configuration object
* @cfg {jQuery} [$overlay] A jQuery object serving as overlay for popups
+ * @cfg {jQuery} [$wrapper] A jQuery object for the wrapper of the general
+ * system. If not given, falls back to this widget's $element
+ * @cfg {boolean} [collapsed] Filter area is collapsed
*/
mw.rcfilters.ui.FilterTagMultiselectWidget = function MwRcfiltersUiFilterTagMultiselectWidget( controller, model, savedQueriesModel, config ) {
var rcFiltersRow,
this.model = model;
this.queriesModel = savedQueriesModel;
this.$overlay = config.$overlay || this.$element;
+ this.$wrapper = config.$wrapper || this.$element;
this.matchingQuery = null;
this.currentView = this.model.getCurrentView();
+ this.collapsed = false;
// Parent
mw.rcfilters.ui.FilterTagMultiselectWidget.parent.call( this, $.extend( true, {
this.hideShowButton = new OO.ui.ButtonWidget( {
framed: false,
flags: [ 'progressive' ],
- label: mw.msg( 'rcfilters-activefilters-hide' ),
classes: [ 'mw-rcfilters-ui-filterTagMultiselectWidget-hideshowButton' ]
} );
- this.collapsed = false;
+ this.toggleCollapsed( !!config.collapsed );
if ( !mw.user.isAnon() ) {
this.saveQueryButton = new mw.rcfilters.ui.SaveFiltersPopupButtonWidget(
.addClass( 'mw-rcfilters-ui-filterTagMultiselectWidget-wrapper-top' )
.append(
$( '<div>' )
- .addClass( 'mw-rcfilters-ui-filterTagMultiselectWidget-wrapper-title' )
- .append(
- title.$element,
- this.savedQueryTitle.$element
- ),
+ .addClass( 'mw-rcfilters-ui-filterTagMultiselectWidget-wrapper-top-title' )
+ .append( title.$element ),
$( '<div>' )
- .addClass( 'mw-rcfilters-ui-filterTagMultiselectWidget-wrapper-hideshow' )
+ .addClass( 'mw-rcfilters-ui-filterTagMultiselectWidget-wrapper-top-queryName' )
+ .append( this.savedQueryTitle.$element ),
+ $( '<div>' )
+ .addClass( 'mw-rcfilters-ui-filterTagMultiselectWidget-wrapper-top-hideshow' )
.append(
this.hideShowButton.$element
)
mw.rcfilters.ui.FilterTagMultiselectWidget.prototype.toggleCollapsed = function ( isCollapsed ) {
isCollapsed = isCollapsed === undefined ? !this.collapsed : !!isCollapsed;
- if ( this.collapsed !== isCollapsed ) {
- this.collapsed = isCollapsed;
-
- if ( isCollapsed ) {
- // If we are collapsing, close the menu, in case it was open
- // We should make sure the menu closes before the rest of the elements
- // are hidden, otherwise there is an unknown error in jQuery as ooui
- // sets and unsets properties on the input (which is hidden at that point)
- this.menu.toggle( false );
- }
- this.input.setDisabled( isCollapsed );
- this.hideShowButton.setLabel( mw.msg(
- isCollapsed ? 'rcfilters-activefilters-show' : 'rcfilters-activefilters-hide'
- ) );
+ this.collapsed = isCollapsed;
- this.$element.toggleClass( 'mw-rcfilters-ui-filterTagMultiselectWidget-collapsed', isCollapsed );
+ if ( isCollapsed ) {
+ // If we are collapsing, close the menu, in case it was open
+ // We should make sure the menu closes before the rest of the elements
+ // are hidden, otherwise there is an unknown error in jQuery as ooui
+ // sets and unsets properties on the input (which is hidden at that point)
+ this.menu.toggle( false );
}
+ this.input.setDisabled( isCollapsed );
+ this.hideShowButton.setLabel( mw.msg(
+ isCollapsed ? 'rcfilters-activefilters-show' : 'rcfilters-activefilters-hide'
+ ) );
+ this.hideShowButton.setTitle( mw.msg(
+ isCollapsed ? 'rcfilters-activefilters-show-tooltip' : 'rcfilters-activefilters-hide-tooltip'
+ ) );
+
+ // Toggle the wrapper class, so we have min height values correctly throughout
+ this.$wrapper.toggleClass( 'mw-rcfilters-collapsed', isCollapsed );
+
+ // Save the state
+ this.controller.updateCollapsedState( isCollapsed );
};
/**
* @param {Object} [config] Configuration object
* @cfg {Object} [filters] A definition of the filter groups in this list
* @cfg {jQuery} [$overlay] A jQuery object serving as overlay for popups
+ * @cfg {jQuery} [$wrapper] A jQuery object for the wrapper of the general
+ * system. If not given, falls back to this widget's $element
+ * @cfg {boolean} [collapsed] Filter area is collapsed
*/
mw.rcfilters.ui.FilterWrapperWidget = function MwRcfiltersUiFilterWrapperWidget(
controller, model, savedQueriesModel, changesListModel, config
this.queriesModel = savedQueriesModel;
this.changesListModel = changesListModel;
this.$overlay = config.$overlay || this.$element;
+ this.$wrapper = config.$wrapper || this.$element;
this.filterTagWidget = new mw.rcfilters.ui.FilterTagMultiselectWidget(
this.controller,
this.model,
this.queriesModel,
- { $overlay: this.$overlay }
+ {
+ $overlay: this.$overlay,
+ collapsed: config.collapsed,
+ $wrapper: this.$wrapper
+ }
);
this.liveUpdateButton = new mw.rcfilters.ui.LiveUpdateButtonWidget(
* @cfg {jQuery} $filtersContainer
* @cfg {jQuery} $changesListContainer
* @cfg {jQuery} $formContainer
+ * @cfg {boolean} [collapsed] Filter area is collapsed
+ * @cfg {jQuery} [$wrapper] A jQuery object for the wrapper of the general
+ * system. If not given, falls back to this widget's $element
*/
mw.rcfilters.ui.MainWrapperWidget = function MwRcfiltersUiMainWrapperWidget(
controller, model, savedQueriesModel, changesListModel, config
this.$changesListContainer = config.$changesListContainer;
this.$formContainer = config.$formContainer;
this.$overlay = $( '<div>' ).addClass( 'mw-rcfilters-ui-overlay' );
+ this.$wrapper = config.$wrapper || this.$element;
this.savedLinksListWidget = new mw.rcfilters.ui.SavedLinksListWidget(
controller, savedQueriesModel, { $overlay: this.$overlay }
savedQueriesModel,
changesListModel,
{
- $overlay: this.$overlay
+ $overlay: this.$overlay,
+ $wrapper: this.$wrapper,
+ collapsed: config.collapsed
}
);
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;
'RevisionLookup' => [ 'RevisionLookup', RevisionLookup::class ],
'HttpRequestFactory' => [ 'HttpRequestFactory', HttpRequestFactory::class ],
'CommentStore' => [ 'CommentStore', CommentStore::class ],
+ 'ChangeTagDefStore' => [ 'ChangeTagDefStore', NameTableStore::class ],
];
}
$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' ] );
$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
$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' ) );
$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 ];
}
public function provideDecompress() {
- yield '(no legacy encoding), false in false out' => [ false, false, [], false ];
yield '(no legacy encoding), empty in empty out' => [ false, '', [], '' ];
yield '(no legacy encoding), empty in empty out' => [ false, 'A', [], 'A' ];
+ yield '(no legacy encoding), error flag -> false' => [ false, 'X', [ 'error' ], false ];
yield '(no legacy encoding), string in with gzip flag returns string' => [
// gzip string below generated with gzdeflate( 'AAAABBAAA' )
false, "sttttr\002\022\000", [ 'gzip' ], 'AAAABBAAA',
);
}
+ /**
+ * @covers \MediaWiki\Storage\SqlBlobStore::decompressData
+ */
+ public function testDecompressData_InvalidArgumentException() {
+ $store = $this->getBlobStore();
+
+ $this->setExpectedException( InvalidArgumentException::class );
+ $store->decompressData( false, [] );
+ }
+
/**
* @covers \MediaWiki\Storage\SqlBlobStore::compressData
*/
<?php
+use MediaWiki\MediaWikiServices;
+
/**
* @covers ChangeTags
* @group Database
$dbw = wfGetDB( DB_MASTER );
$dbw->delete( 'change_tag', '*' );
$dbw->delete( 'change_tag_def', '*' );
+ MediaWikiServices::getInstance()->resetServiceForTesting( 'ChangeTagDefStore' );
$rcId = 123;
ChangeTags::updateTags( [ 'tag1', 'tag2' ], [], $rcId );
$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;
}