'!vendor/**',
// Explicitly say "**/*.js" here in case of symlinks
'!extensions/**/*.js',
- '!skins/**/*.js',
- // Skip functions aren't even parseable
- '!resources/src/mediawiki.hidpi/skip.js'
+ '!skins/**/*.js'
]
},
jsonlint: {
templated parameters.
* It is now an error to submit too many values for a multi-valued parameter.
This has generated a warning since MediaWiki 1.14.
+* Assertion failures from the 'assert' and 'assertuser' parameters will no
+ longer use the action module's custom response format, for the few modules
+ that use custom formatters that handle errors.
=== Action API internal changes in 1.32 ===
* Added 'ApiParseMakeOutputPage' hook.
removed. Use JobQueueGroup::singleton()->push() instead.
* The jquery.footHovzer module, for mediawiki.debug, was removed.
* The es5-shim module, empty and deprecated since 1.29, was removed.
+* the dom-level2-shim module, empty and deprecated since 1.29, was removed.
* The mediawiki.widgets.visibleByteLimit module alias, deprecated in 1.32, was
removed. Use mediawiki.widgets.visibleLengthLimit instead.
* The jquery.farbtastic module, unused since 1.18, was removed.
* (T176526) EditPage::getContextTitle() falling back to $wgTitle when the
context title is unset is now deprecated; anything creating an EditPage
instance should set the context title via ::setContextTitle().
+* The 'jquery.hidpi' module (polyfill for IMG srcset) is deprecated.
=== Other changes in 1.32 ===
* …
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.
foreach ( $colContents as $char => $articles ) {
# Change space to non-breaking space to keep headers aligned
- $h3char = $char === ' ' ? ' ' : htmlspecialchars( $char );
+ $h3char = $char === ' ' ? "\u{00A0}" : htmlspecialchars( $char );
$ret .= '<div class="mw-category-group"><h3>' . $h3char;
$ret .= "</h3>\n";
*
* This means a 320x240 use of an image on the wiki will also generate 480x360 and 640x480
* thumbnails, output via the srcset attribute.
- *
- * On older browsers, a JavaScript polyfill switches the appropriate images in after loading
- * the original low-resolution versions depending on the reported window.devicePixelRatio.
- * The polyfill can be found in the jquery.hidpi module.
*/
$wgResponsiveImages = true;
if ( $undo > 0 && $undoafter > 0 ) {
$undorev = Revision::newFromId( $undo );
$oldrev = Revision::newFromId( $undoafter );
+ $undoMsg = null;
# Sanity check, make sure it's the right page,
# the revisions exist and they were not deleted.
!$undorev->isDeleted( Revision::DELETED_TEXT ) &&
!$oldrev->isDeleted( Revision::DELETED_TEXT )
) {
- $content = $this->page->getUndoContent( $undorev, $oldrev );
-
- if ( $content === false ) {
- # Warn the user that something went wrong
- $undoMsg = 'failure';
+ if ( WikiPage::hasDifferencesOutsideMainSlot( $undorev, $oldrev ) ) {
+ // Cannot yet undo edits that involve anything other the main slot.
+ $undoMsg = 'main-slot-only';
} else {
+ $content = $this->page->getUndoContent( $undorev, $oldrev );
+
+ if ( $content === false ) {
+ # Warn the user that something went wrong
+ $undoMsg = 'failure';
+ }
+ }
+
+ if ( $undoMsg === null ) {
$oldContent = $this->page->getContent( Revision::RAW );
$popts = ParserOptions::newFromUserAndLang( $user, $wgContLang );
$newContent = $content->preSaveTransform( $this->mTitle, $user, $popts );
}
$out = $this->context->getOutput();
- // Messages: undo-success, undo-failure, undo-norev, undo-nochange
+ // Messages: undo-success, undo-failure, undo-main-slot-only, undo-norev,
+ // undo-nochange.
$class = ( $undoMsg == 'success' ? '' : 'error ' ) . "mw-undo-{$undoMsg}";
$this->editFormPageTop .= $out->parse( "<div class=\"{$class}\">" .
$this->context->msg( 'undo-' . $undoMsg )->plain() . '</div>', true, /* interface */true );
$date = false;
if ( is_file( $wgGitBin ) &&
is_executable( $wgGitBin ) &&
+ !Shell::isDisabled() &&
$this->getHead() !== false
) {
$cmd = [
'label', [
'for' => $selectAttribs['id'] ?? null,
], $params['label']
- ) . ' ';
+ ) . "\u{00A0}";
}
// Wrap options in a <select>
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 );
}
),
return true;
}
+ /**
+ * Find roles for which the $other RevisionSlots object has different content
+ * as this RevisionSlots object, including any roles that are present in one
+ * but not the other.
+ *
+ * @param RevisionSlots $other
+ *
+ * @return string[] a list of slot roles that are different.
+ */
+ public function getRolesWithDifferentContent( RevisionSlots $other ) {
+ if ( $other === $this ) {
+ return [];
+ }
+
+ $aSlots = $this->getSlots();
+ $bSlots = $other->getSlots();
+
+ ksort( $aSlots );
+ ksort( $bSlots );
+
+ $different = array_keys( array_merge(
+ array_diff_key( $aSlots, $bSlots ),
+ array_diff_key( $bSlots, $aSlots )
+ ) );
+
+ /** @var SlotRecord[] $common */
+ $common = array_intersect_key( $aSlots, $bSlots );
+
+ foreach ( $common as $role => $s ) {
+ $t = $bSlots[$role];
+
+ if ( !$s->hasSameContent( $t ) ) {
+ $different[] = $role;
+ }
+ }
+
+ return $different;
+ }
+
}
$value = false, $attribs = []
) {
list( $label, $input ) = self::inputLabelSep( $label, $name, $id, $size, $value, $attribs );
- return $label . ' ' . $input;
+ return $label . "\u{00A0}" . $input;
}
/**
public static function checkLabel( $label, $name, $id, $checked = false, $attribs = [] ) {
global $wgUseMediaWikiUIEverywhere;
$chkLabel = self::check( $name, $checked, [ 'id' => $id ] + $attribs ) .
- ' ' .
+ "\u{00A0}" .
self::label( $label, $id, $attribs );
if ( $wgUseMediaWikiUIEverywhere ) {
$checked = false, $attribs = []
) {
return self::radio( $name, $value, $checked, [ 'id' => $id ] + $attribs ) .
- ' ' .
+ "\u{00A0}" .
self::label( $label, $id, $attribs );
}
$content .= Xml::dateMenu(
( $year == null ? MWTimestamp::getLocalInstance()->format( 'Y' ) : $year ),
$month
- ) . ' ';
- $content .= $tagSelector ? ( implode( ' ', $tagSelector ) . ' ' ) : '';
+ ) . "\u{00A0}";
+ $content .= $tagSelector ? ( implode( "\u{00A0}", $tagSelector ) . "\u{00A0}" ) : '';
$content .= $checkDeleted . Html::submitButton(
$this->msg( 'historyaction-submit' )->text(),
[],
*/
protected function executeAction() {
$params = $this->setupExecuteAction();
+
+ // Check asserts early so e.g. errors in parsing a module's parameters due to being
+ // logged out don't override the client's intended "am I logged in?" check.
+ $this->checkAsserts( $params );
+
$module = $this->setupModule();
$this->mModule = $module;
$this->setupExternalResponse( $module, $params );
}
- $this->checkAsserts( $params );
-
// Execute
$module->execute();
Hooks::run( 'APIAfterExecute', [ &$module ] );
"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+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": "غتيير الوسوم لتطبيقها على إدخال سجل الرفع ومراجعة صفحة الملف.",
"Ilimanaq29"
]
},
- "apihelp-main-extended-description": "<div class=\"hlist plainlinks api-main-links\">\n* [[mw:Special:MyLanguage/API:Main_page|Dokumentace]]\n* [[mw:Special:MyLanguage/API:FAQ|Otázky a odpovědi]]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api E-mailová konference]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce Oznámení k API]\n* [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R Chyby a požadavky]\n</div>\n<strong>Stav:</strong> Všechny funkce uvedené na této stránce by měly fungovat, ale API se stále aktivně vyvíjí a může se kdykoli změnit. Upozornění na změny získáte přihlášením se k [https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ e-mailové konferenci mediawiki-api-announce].\n\n<strong>Chybné požadavky:</strong> Pokud jsou do API zaslány chybné požadavky, bude vrácena HTTP hlavička s klíčem „MediaWiki-API-Error“ a hodnota této hlavičky a chybový kód budou nastaveny na stejnou hodnotu. Více informací najdete [[mw:Special:MyLanguage/API:Errors_and_warnings|v dokumentaci]].\n\n<strong>Testování:</strong> Pro jednoduché testování požadavků na API zkuste [[Special:ApiSandbox]].",
+ "apihelp-main-extended-description": "<div class=\"hlist plainlinks api-main-links\">\n* [[mw:Special:MyLanguage/API:Main_page|Dokumentace]]\n* [[mw:Special:MyLanguage/API:FAQ|Otázky a odpovědi]]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api E-mailová konference]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce Oznámení k API]\n* [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R Chyby a požadavky]\n</div>\n<strong>Stav:</strong> Všechny funkce uvedené na této stránce by měly fungovat, ale API se stále aktivně vyvíjí a může se kdykoli změnit. Upozornění na změny získáte přihlášením se k [https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ e-mailové konferenci mediawiki-api-announce].\n\n<strong>Chybné požadavky:</strong> Pokud jsou do API zaslány chybné požadavky, bude vrácena HTTP hlavička s klíčem „MediaWiki-API-Error“ a hodnota této hlavičky a chybový kód budou nastaveny na stejnou hodnotu. Více informací najdete [[mw:Special:MyLanguage/API:Errors_and_warnings|v dokumentaci]].\n\n<p class=\"mw-apisandbox-link\"><strong>Testování:</strong> Pro jednoduché testování požadavků na API zkuste [[Special:ApiSandbox]].</p>",
"apihelp-main-param-action": "Která akce se má provést.",
"apihelp-main-param-format": "Formát výstupu.",
"apihelp-main-param-maxlag": "Maximální zpoždění lze použít, když je MediaWiki nainstalováno na cluster s replikovanou databází. Abyste se vyhnuli zhoršování už tak špatného replikačního zpoždění, můžete tímto parametrem nechat klienta čekat, dokud replikační zpoždění neklesne pod uvedenou hodnotu. V případě příliš vysokého zpoždění se vrátí chybový kód „<samp>maxlag</samp>“ s hlášením typu „<samp>Waiting for $host: $lag seconds lagged</samp>“.<br />Více informací najdete v [[mw:Special:MyLanguage/Manual:Maxlag_parameter|příručce]].",
"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-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 récupérer du référentiel (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": "URL de l'icône favorite du dépôt 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-query+filearchive-paramvalue-prop-metadata": "그림의 버전에 대한 Exif 메타데이터를 나열합니다.",
"apihelp-query+filearchive-example-simple": "삭제된 모든 파일의 목록을 표시합니다.",
"apihelp-query+filerepoinfo-summary": "위키에 구성된 그림 저장소에 대한 메타 정보를 반환합니다.",
+ "apihelp-query+filerepoinfo-paramvalue-prop-apiurl": "저장소 API의 URL - 호스트로부터 이미지 정보를 가져오는데 유용합니다.",
+ "apihelp-query+filerepoinfo-paramvalue-prop-canUpload": "파일을 이 저장소에 올릴 수 있는지의 여부. (예: CORS를 통해, 공유 인증을 통해)",
+ "apihelp-query+filerepoinfo-paramvalue-prop-displayname": "사람이 식별할 수 있는 저장소 위키의 이름입니다.",
+ "apihelp-query+filerepoinfo-paramvalue-prop-local": "해당 저장소가 로컬인지 아닌지의 여부입니다.",
+ "apihelp-query+filerepoinfo-paramvalue-prop-rootUrl": "이미지 경로의 루트 URL 경로입니다.",
+ "apihelp-query+filerepoinfo-paramvalue-prop-thumbUrl": "섬네일 경로의 루트 URL 경로입니다.",
"apihelp-query+filerepoinfo-example-simple": "파일 저장소의 정보를 가져옵니다.",
"apihelp-query+fileusage-summary": "제시된 파일을 사용하는 모든 문서를 찾습니다.",
"apihelp-query+fileusage-param-prop": "얻고자 하는 속성:",
"apihelp-opensearch-summary": "In de wiki zoeken met behulp het OpenSearchprotocol.",
"apihelp-opensearch-param-search": "Zoektekst.",
"apihelp-opensearch-param-limit": "Het maximale aantal weer te geven resultaten.",
- "apihelp-opensearch-param-namespace": "Te doorzoeken naamruimten.",
+ "apihelp-opensearch-param-namespace": "Te doorzoeken naamruimten. Wordt genegeerd indien <var>$1search</var> met een geldige naamruimte voorvoegsel begint.",
"apihelp-opensearch-param-suggest": "Niets doen als <var>[[mw:Special:MyLanguage/Manual:$wgEnableOpenSearchSuggest|$wgEnableOpenSearchSuggest]]</var> onwaar is.",
"apihelp-opensearch-param-redirects": "Hoe om te gaan met doorverwijzingen:\n;return:Retourneer de doorverwijzing.\n;resolve:Retourneer de doelpagina. Retourneert mogelijk minder dan $1limit resultaten.\nOm historische redenen is \"return\" de standaardinstelling voor <code>$1format=json</code>, en \"resolve\" voor andere formaten.",
"apihelp-opensearch-param-format": "Het uitvoerformaat.",
"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.",
"apihelp-query+filearchive-paramvalue-prop-archivename": "Adiciona o nome do arquivo da versão arquivada para as versões não-mais recentes.",
"apihelp-query+filearchive-example-simple": "Mostrar uma lista de todos os arquivos excluídos.",
"apihelp-query+filerepoinfo-summary": "Retorna informações meta sobre repositórios de imagens configurados na wiki.",
- "apihelp-query+filerepoinfo-param-prop": "Quais propriedades do repositório obter (pode haver mais disponível em algumas wikis):\n;apiurl: URL para a API do repositório - útil para obter informações de imagem do host.\n;name: A chave do repositório - usado em por exemplo, <var>[[mw:Special:MyLanguage/Manual:$wgForeignFileRepos|$wgForeignFileRepos]]</var> e [[Special:ApiHelp/query+imageinfo|imageinfo]] valores de retorno.\n;displayname: O legível para humanos do repositório wiki.\n;rooturl: URL raiz para caminhos de imagem.\n; local: Se esse repositório é o local ou não.",
+ "apihelp-query+filerepoinfo-param-prop": "As propriedades do repositório que devem ser obtidas (as propriedades disponíveis podem variar noutras wikis).",
+ "apihelp-query+filerepoinfo-paramvalue-prop-apiurl": "URL para a API do repositório - útil para obter informação sobre imagens, do repositório.",
+ "apihelp-query+filerepoinfo-paramvalue-prop-articlepath": "<var>[[mw:Special:MyLanguage/Manual:$wgArticlePath|$wgArticlePath]]</var> da wiki do repositório ou equivalente.",
+ "apihelp-query+filerepoinfo-paramvalue-prop-canUpload": "Indica se podem ser carregados ficheiros neste repositório, por exemplo, via CORS e autenticação partilhada.",
+ "apihelp-query+filerepoinfo-paramvalue-prop-displayname": "O nome legível da wiki do repositório.",
+ "apihelp-query+filerepoinfo-paramvalue-prop-favicon": "O URL da favicon da wiki do repositório, de <var>[[mw:Special:MyLanguage/Manual:$wgFavicon|$wgFavicon]]</var>.",
+ "apihelp-query+filerepoinfo-paramvalue-prop-fetchDescription": "Indica se as páginas de descrição de ficheiro devem ser obtidas deste repositório ao ver as páginas de descrição de ficheiros locais.",
+ "apihelp-query+filerepoinfo-paramvalue-prop-initialCapital": "Indica se os nomes de arquivos começam implicitamente com letra maiúscula.",
+ "apihelp-query+filerepoinfo-paramvalue-prop-local": "Indica se o repositório em questão é o local ou não.",
+ "apihelp-query+filerepoinfo-paramvalue-prop-name": "A chave do repositório - usada, por exemplo, nos valores devolvidos em <var>[[mw:Special:MyLanguage/Manual:$wgForeignFileRepos|$wgForeignFileRepos]]</var> e [[Special:ApiHelp/query+imageinfo|imageinfo]].",
+ "apihelp-query+filerepoinfo-paramvalue-prop-rootUrl": "Caminho do URL de raiz para os caminhos de imagens.",
+ "apihelp-query+filerepoinfo-paramvalue-prop-scriptDirUrl": "Caminho do URL de raiz para a instalação MediaWiki da wiki do repositório.",
+ "apihelp-query+filerepoinfo-paramvalue-prop-server": "<var>[[mw:Special:MyLanguage/Manual:$wgServer|$wgServer]]</var> da wiki do repositório ou equivalente.",
+ "apihelp-query+filerepoinfo-paramvalue-prop-thumbUrl": "Caminho do URL de raiz para os caminhos das miniaturas.",
+ "apihelp-query+filerepoinfo-paramvalue-prop-url": "Caminho do URL da zona pública.",
"apihelp-query+filerepoinfo-example-simple": "Obter informações sobre repositórios de arquivos.",
"apihelp-query+fileusage-summary": "Encontre todas as páginas que usam os arquivos dados.",
"apihelp-query+fileusage-param-prop": "Quais propriedades obter:",
"apihelp-query+filearchive-paramvalue-prop-archivename": "Adiciona o nome de ficheiro da versão arquivada das versões anteriores à última.",
"apihelp-query+filearchive-example-simple": "Mostrar uma lista de todos os ficheiros eliminados.",
"apihelp-query+filerepoinfo-summary": "Devolver meta informação sobre os repositórios de imagens configurados na wiki.",
- "apihelp-query+filerepoinfo-param-prop": "As propriedades do repositório que devem ser obtidas (em algumas wikis poderão haver mais disponíveis):\n;apiurl:URL para a API do repositório - útil para obter informação de imagens do servidor.\n;name:A chave para o repositório - usada, por exemplo, em <var>[[mw:Special:MyLanguage/Manual:$wgForeignFileRepos|$wgForeignFileRepos]]</var> e nos valores de retorno de [[Special:ApiHelp/query+imageinfo|imageinfo]].\n;displayname:O nome legível da wiki repositório.\n;rooturl:URL de raiz para endereços de imagens.\n;local:Se o repositório é o local ou não.",
+ "apihelp-query+filerepoinfo-param-prop": "As propriedades do repositório que devem ser obtidas (as propriedades disponíveis podem variar noutras wikis).",
+ "apihelp-query+filerepoinfo-paramvalue-prop-apiurl": "URL para a API do repositório - útil para obter informação sobre imagens, do repositório.",
+ "apihelp-query+filerepoinfo-paramvalue-prop-articlepath": "<var>[[mw:Special:MyLanguage/Manual:$wgArticlePath|$wgArticlePath]]</var> da wiki do repositório ou equivalente.",
+ "apihelp-query+filerepoinfo-paramvalue-prop-canUpload": "Indica se podem ser carregados ficheiros neste repositório, por exemplo, via CORS e autenticação partilhada.",
+ "apihelp-query+filerepoinfo-paramvalue-prop-displayname": "O nome legível da wiki do repositório.",
+ "apihelp-query+filerepoinfo-paramvalue-prop-favicon": "O URL da favicon da wiki do repositório, de <var>[[mw:Special:MyLanguage/Manual:$wgFavicon|$wgFavicon]]</var>.",
+ "apihelp-query+filerepoinfo-paramvalue-prop-fetchDescription": "Indica se as páginas de descrição de ficheiro devem ser obtidas deste repositório ao ver as páginas de descrição de ficheiros locais.",
+ "apihelp-query+filerepoinfo-paramvalue-prop-initialCapital": "Indica se os nomes de ficheiros começam implicitamente com letra maiúscula.",
+ "apihelp-query+filerepoinfo-paramvalue-prop-local": "Indica se o repositório em questão é o local ou não.",
+ "apihelp-query+filerepoinfo-paramvalue-prop-name": "A chave do repositório - usada, por exemplo, nos valores devolvidos em <var>[[mw:Special:MyLanguage/Manual:$wgForeignFileRepos|$wgForeignFileRepos]]</var> e [[Special:ApiHelp/query+imageinfo|imageinfo]].",
+ "apihelp-query+filerepoinfo-paramvalue-prop-rootUrl": "Caminho do URL de raiz para os caminhos de imagens.",
+ "apihelp-query+filerepoinfo-paramvalue-prop-scriptDirUrl": "Caminho do URL de raiz para a instalação MediaWiki da wiki do repositório.",
+ "apihelp-query+filerepoinfo-paramvalue-prop-server": "<var>[[mw:Special:MyLanguage/Manual:$wgServer|$wgServer]]</var> da wiki do repositório ou equivalente.",
+ "apihelp-query+filerepoinfo-paramvalue-prop-thumbUrl": "Caminho do URL de raiz para os caminhos das miniaturas.",
+ "apihelp-query+filerepoinfo-paramvalue-prop-url": "Caminho do URL da zona pública.",
"apihelp-query+filerepoinfo-example-simple": "Obter informações sobre os repositórios de ficheiros.",
"apihelp-query+fileusage-summary": "Encontrar todas as páginas que usam os ficheiros indicados.",
"apihelp-query+fileusage-param-prop": "As propriedades a serem obtidas:",
"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": "要获取的属性:",
define( 'MSG_CACHE_VERSION', 2 );
/**
- * Message cache
+ * Cache of messages that are defined by MediaWiki namespace pages or by hooks
+ *
* Performs various MediaWiki namespace-related functions
* @ingroup Cache
*/
}
// Fall through and try invididual message cache below
} else {
- // XXX: This is not cached in process cache, should it?
$message = false;
Hooks::run( 'MessagesPreLoad', [ $title, &$message, $code ] );
if ( $message !== false ) {
- return $message;
+ $this->mCache[$code][$title] = ' ' . $message;
+ } else {
+ $this->mCache[$code][$title] = '!NONEXISTENT';
}
- return false;
+ return $message;
}
// Individual message cache key
}
public function startWrite( $code ) {
+ if ( !file_exists( $this->directory ) ) {
+ if ( !wfMkdirParents( $this->directory, null, __METHOD__ ) ) {
+ throw new MWException( "Unable to create the localisation store " .
+ "directory \"{$this->directory}\"" );
+ }
+ }
+
$this->currentLang = $code;
$this->fname = $this->directory . '/' . $code . '.l10n.php';
$this->data[$code] = [];
* @param string $nothing To use for empty space
* @return string
*/
- public function recentChangesFlags( $flags, $nothing = ' ' ) {
+ public function recentChangesFlags( $flags, $nothing = "\u{00A0}" ) {
$f = '';
foreach ( array_keys( $this->getConfig()->get( 'RecentChangesFlags' ) ) as $flag ) {
$f .= isset( $flags[$flag] ) && $flags[$flag]
}
if ( isset( $data['timestampLink'] ) ) {
- $line .= ' ' . $data['timestampLink'];
+ $line .= "\u{00A0}" . $data['timestampLink'];
unset( $data['timestampLink'] );
}
- $line .= ' </td>';
+ $line .= "\u{00A0}</td>";
$line .= Html::openElement( 'td', [
'class' => 'mw-changeslist-line-inner',
// Used for reliable determination of the affiliated page
* @param Revision $undo The revision to undo
* @param Revision $undoafter Must be an earlier revision than $undo
*
- * @return mixed String on success, false on failure
+ * @return mixed Content on success, false on failure
*/
public function getUndoContent( Revision $current, Revision $undo, Revision $undoafter ) {
$cur_content = $current->getContent();
$rollbackLink = Linker::generateRollback( $this->mNewRev, $this->getContext() );
if ( $rollbackLink ) {
$out->preventClickjacking();
- $rollback = '   ' . $rollbackLink;
+ $rollback = "\u{00A0}\u{00A0}\u{00A0}" . $rollbackLink;
}
}
[ 'diff' => 'prev', 'oldid' => $this->mOldid ] + $query
);
} else {
- $prevlink = ' ';
+ $prevlink = "\u{00A0}";
}
if ( $this->mOldRev->isMinor() ) {
[ 'diff' => 'next', 'oldid' => $this->mNewid ] + $query
);
} else {
- $nextlink = ' ';
+ $nextlink = "\u{00A0}";
}
if ( $this->mNewRev->isMinor() ) {
protected function revisionDeleteLink( $rev ) {
$link = Linker::getRevDeleteLink( $this->getUser(), $rev, $rev->getTitle() );
if ( $link !== '' ) {
- $link = '   ' . $link . ' ';
+ $link = "\u{00A0}\u{00A0}\u{00A0}" . $link . ' ';
}
return $link;
* @return mixed
*/
public static function escapeWhiteSpace( $msg ) {
- $msg = preg_replace( '/^ /m', '  ', $msg );
- $msg = preg_replace( '/ $/m', '  ', $msg );
- $msg = preg_replace( '/ /', '  ', $msg );
+ $msg = preg_replace( '/^ /m', "\u{00A0} ", $msg );
+ $msg = preg_replace( '/ $/m', " \u{00A0}", $msg );
+ $msg = preg_replace( '/ /', "\u{00A0} ", $msg );
return $msg;
}
* @return string
*/
protected function contextLine( $line ) {
- return $this->wrapLine( ' ', 'diff-context', $line );
+ return $this->wrapLine( "\u{00A0}", 'diff-context', $line );
}
/**
* @return string
*/
protected function emptyLine() {
- return '<td colspan="2"> </td>';
+ return "<td colspan=\"2\">\u{00A0}</td>";
}
/**
array_push( $this->lines, $this->line );
} else {
# make empty lines visible by inserting an NBSP
- array_push( $this->lines, ' ' );
+ array_push( $this->lines, "\u{00A0}" );
}
$this->line = '';
}
self::printError( self::getText( $e ) );
} elseif ( $mode === self::AS_PRETTY ) {
self::statusHeader( 500 );
+ self::header( "Content-Type: $wgMimeType; charset=utf-8" );
if ( $e instanceof DBConnectionError ) {
self::reportOutageHTML( $e );
} else {
- self::header( "Content-Type: $wgMimeType; charset=utf-8" );
self::reportHTML( $e );
}
} else {
+ self::statusHeader( 500 );
+ self::header( "Content-Type: $wgMimeType; charset=utf-8" );
if ( $eNew ) {
$message = "MediaWiki internal error.\n\n";
if ( self::showBackTrace( $e ) ) {
* @param Exception|Throwable $e
*/
private static function reportOutageHTML( $e ) {
- global $wgShowDBErrorBacktrace, $wgShowHostnames, $wgShowSQLErrors;
+ global $wgShowDBErrorBacktrace, $wgShowHostnames, $wgShowSQLErrors, $wgSitename;
$sorry = htmlspecialchars( self::msg(
'dberr-problems',
}
MessageCache::singleton()->disable(); // no DB access
-
- $html = "<h1>$sorry</h1><p>$again</p><p><small>$info</small></p>";
+ $html = "<!DOCTYPE html>\n" .
+ '<html><head>' .
+ '<title>' .
+ htmlspecialchars( $wgSitename ) .
+ '</title>' .
+ '<style>body { font-family: sans-serif; margin: 0; padding: 0.5em 2em; }</style>' .
+ "</head><body><h1>$sorry</h1><p>$again</p><p><small>$info</small></p>";
if ( $wgShowDBErrorBacktrace ) {
$html .= '<p>Backtrace:</p><pre>' .
$html .= '<hr />';
$html .= self::googleSearchForm();
-
+ $html .= '</body></html>';
echo $html;
}
$html[] = $retval;
$labelValue = trim( $value->getLabel() );
- if ( $labelValue !== ' ' && $labelValue !== '' ) {
+ if ( $labelValue !== "\u{00A0}" && $labelValue !== '' ) {
$hasLabel = true;
}
if ( isset( $params['label-message'] ) ) {
$this->mLabel = $this->getMessage( $params['label-message'] )->parse();
} elseif ( isset( $params['label'] ) ) {
- if ( $params['label'] === ' ' ) {
+ if ( $params['label'] === ' ' || $params['label'] === "\u{00A0}" ) {
// Apparently some things set   directly and in an odd format
- $this->mLabel = ' ';
+ $this->mLabel = "\u{00A0}";
} else {
$this->mLabel = htmlspecialchars( $params['label'] );
}
$horizontalLabel = $this->mParams['horizontal-label'] ?? false;
if ( $horizontalLabel ) {
- $field = ' ' . $inputHtml . "\n$errors";
+ $field = "\u{00A0}" . $inputHtml . "\n$errors";
} else {
$field = Html::rawElement(
'div',
// the element could specify, that the label doesn't need to be added
$label = $this->getLabel();
- if ( $label && $label !== ' ' ) {
+ if ( $label && $label !== "\u{00A0}" ) {
$config['label'] = new OOUI\HtmlSnippet( $label );
}
$label = $this->getLabelHtml( $cellAttributes );
$html = "\n" . $errors .
- $label . ' ' .
+ $label . "\u{00A0}" .
$inputHtml .
$helptext;
* @return string HTML
*/
public function getLabel() {
- return is_null( $this->mLabel ) ? '' : $this->mLabel;
+ if ( is_null( $this->mLabel ) ) {
+ return '';
+ }
+ if ( $this->mLabel === ' ' ) {
+ return "\u{00A0}";
+ }
+ return $this->mLabel;
}
public function getLabelHtml( $cellAttributes = [] ) {
$labelValue = trim( $this->getLabel() );
$hasLabel = false;
- if ( $labelValue !== ' ' && $labelValue !== '' ) {
+ if ( $labelValue !== "\u{00A0}" && $labelValue !== '' ) {
$hasLabel = true;
}
if ( isset( $info['buttonlabel-message'] ) ) {
$this->buttonLabel = $this->getMessage( $info['buttonlabel-message'] )->parse();
} elseif ( isset( $info['buttonlabel'] ) ) {
- if ( $info['buttonlabel'] === ' ' ) {
+ if ( $info['buttonlabel'] === ' ' || $info['buttonlabel'] === "\u{00A0}" ) {
// Apparently some things set   directly and in an odd format
- $this->buttonLabel = ' ';
+ $this->buttonLabel = "\u{00A0}";
} else {
$this->buttonLabel = htmlspecialchars( $info['buttonlabel'] );
}
}
$chkLabel = Xml::check( $this->mName, $value, $attr ) .
- ' ' .
+ "\u{00A0}" .
Html::rawElement( 'label', $attrLabel, $this->mLabel );
if ( $wgUseMediaWikiUIEverywhere || $this->mParent instanceof VFormHTMLForm ) {
) {
return '';
} else {
- return ' ';
+ return "\u{00A0}";
}
}
$attribs = $this->getAttributes( [ 'disabled', 'tabindex' ] );
// Build the column headers
- $headerContents = Html::rawElement( 'td', [], ' ' );
+ $headerContents = Html::rawElement( 'td', [], "\u{00A0}" );
foreach ( $columns as $columnLabel => $columnTag ) {
$headerContents .= Html::rawElement( 'td', [], $columnLabel );
}
$html .= $field->$getFieldHtmlMethod( $v );
$labelValue = trim( $field->getLabel() );
- if ( $labelValue != ' ' && $labelValue !== '' ) {
+ if ( $labelValue != "\u{00A0}" && $labelValue !== '' ) {
$hasLabel = true;
}
}
* @return String
*/
public function getElement( $element ) {
- return $element . ' ' . $this->getInputHTML( '' );
+ return $element . "\u{00A0}" . $this->getInputHTML( '' );
}
}
$elementFunc = [ Html::class, $this->mOptionsLabelsNotFromMessage ? 'rawElement' : 'element' ];
$checkbox =
Xml::check( "{$this->mName}[]", $checked, $attribs ) .
- ' ' .
+ "\u{00A0}" .
call_user_func( $elementFunc,
'label',
[ 'for' => $attribs['id'] ],
$classes[] = 'mw-ui-radio';
}
$radio = Xml::radio( $this->mName, $info, $info === $value, $attribs + [ 'id' => $id ] );
- $radio .= ' ' . call_user_func( $elementFunc, 'label', [ 'for' => $id ], $label );
+ $radio .= "\u{00A0}" . call_user_func( $elementFunc, 'label', [ 'for' => $id ], $label );
$html .= ' ' . Html::rawElement(
'div',
$value >= 0,
$attribs
);
- $html .= ' ' . Xml::radioLabel(
+ $html .= "\u{00A0}" . Xml::radioLabel(
$this->msg( 'maximum-size' )->text(),
$this->mName . '-mode',
'max',
$value < 0,
$attribs
);
- $html .= ' ' . parent::getInputHTML( $value ? abs( $value ) : '' );
- $html .= ' ' . $this->msg( 'pagesize' )->parse();
+ $html .= "\u{00A0}" . parent::getInputHTML( $value ? abs( $value ) : '' );
+ $html .= "\u{00A0}" . $this->msg( 'pagesize' )->parse();
return $html;
}
public function getAcceptLanguage() {
global $wgLanguageCode, $wgRequest;
- $mwLanguages = Language::fetchLanguageNames();
+ $mwLanguages = Language::fetchLanguageNames( null, 'mwfile' );
$headerLanguages = array_keys( $wgRequest->getAcceptLang() );
foreach ( $headerLanguages as $lang ) {
*/
public function label( $msg, $forId, $contents, $helpData = "" ) {
if ( strval( $msg ) == '' ) {
- $labelText = ' ';
+ $labelText = '\u{00A0}';
} else {
$labelText = wfMessage( $msg )->escaped();
}
$items[$value] =
Xml::radio( $params['controlName'], $value, $checked, $itemAttribs ) .
- ' ' .
+ '\u{00A0}' .
Xml::tags( 'label', [ 'for' => $id ], $this->parse(
isset( $params['itemLabels'] ) ?
wfMessage( $params['itemLabels'][$value] )->plain() :
$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 );
}
return '<p>' .
Html::element( 'img', [ 'src' => $this->getVar( 'wgRightsIcon' ) ] ) .
- '  ' .
+ '\u{00A0}\u{00A0}' .
htmlspecialchars( $this->getVar( 'wgRightsText' ) ) .
"</p>\n" .
"<p style=\"text-align: center;\">" .
"config-license-help": "Muchos wikis públicos ponen todas las contribuciones bajo una [https://freedomdefined.org/Definition licencia libre].\nEsto ayuda a crear un sentido de propiedad comunitaria y alienta la contribución a largo plazo.\nEsto no es generalmente necesario para un wiki privado o corporativo.\n\nSi deseas poder utilizar texto de Wikipedia, y deseas que Wikipedia pueda aceptar el texto copiado de tu wiki, debes elegir <strong>{{int:config-license-cc-by-sa}}</strong>.\n\nWikipedia utilizaba anteriormente la licencia de documentación libre de GNU (GFDL).\nLa GFDL es una licencia válida, pero es difícil de entender.\nTambién es difícil reutilizar el contenido licenciado bajo la GFDL.",
"config-email-settings": "Configuración de correo electrónico",
"config-enable-email": "Activar el envío de correos electrónicos",
- "config-enable-email-help": "Si quieres que el correo electrónico funcione, la [https://secure.php.net/manual/en/mail.configuration.php configuración PHP de correo electrónico] debe ser configurada correctamente.\nSi no quieres ninguna funcionalidad del correo electrónico, puedes desactivarla aquí.",
+ "config-enable-email-help": "Si quieres que el correo electrónico funcione, la [https://secure.php.net/manual/en/mail.configuration.php configuración PHP de correo electrónico] debe ser la correcta.\nSi no quieres ninguna funcionalidad de correo electrónico, puedes desactivarlas aquí.",
"config-email-user": "Activar correo electrónico entre usuarios",
"config-email-user-help": "Permitir que todos los usuarios intercambien correos electrónicos si lo han activado en sus preferencias.",
"config-email-usertalk": "Activar notificaciones de páginas de discusión de usuarios",
"config-support-info": "מדיה־ויקי תומכת במערכות מסדי הנתונים הבאות:\n\n$1\n\nאם אינך רואה את מסד הנתונים שלך ברשימה, יש לעקוב אחר ההוראות המקושרות לעיל כדי להפעיל את התמיכה.",
"config-dbsupport-mysql": "* [{{int:version-db-mysql-url}} MySQL] הוא היעד העיקרי עבור מדיה־ויקי ולו התמיכה הטובה ביותר. מדיה־ויקי עובדת גם עם [{{int:version-db-mariadb-url}} MariaDB] ועם [{{int:version-db-percona-url}} Percona Server], שתואמים ל־MySQL. (ר׳ [https://secure.php.net/manual/en/mysql.installation.php how to compile PHP with MySQL support])",
"config-dbsupport-postgres": "* [{{int:version-db-postgres-url}} PostgreSQL] הוא מסד נתונים נפוץ בקוד פתוח והוא נפוץ בתור חלופה ל־MySQL. (ר׳ [https://secure.php.net/manual/en/pgsql.installation.php how to compile PHP with PostgreSQL support]).",
- "config-dbsupport-sqlite": "* [{{int:version-db-sqlite-url}} SQLite] הוא מסד נתונים קליל עם תמיכה טובה מאוד. (ר׳ [http://www.php.net/manual/en/pdo.installation.php How to compile PHP with SQLite support], משתמש ב־PDO)",
- "config-dbsupport-oracle": "* [{{int:version-db-oracle-url}} Oracle] הוא מסד נתונים עסקי מסחרי. (ר׳ [http://www.php.net/manual/en/oci8.installation.php How to compile PHP with OCI8 support])",
+ "config-dbsupport-sqlite": "* [{{int:version-db-sqlite-url}} SQLite] הוא מסד נתונים קליל עם תמיכה טובה מאוד. (ר׳ [https://secure.php.net/manual/en/pdo.installation.php How to compile PHP with SQLite support], משתמש ב־PDO)",
+ "config-dbsupport-oracle": "* [{{int:version-db-oracle-url}} Oracle] הוא מסד נתונים עסקי מסחרי. (ר׳ [https://secure.php.net/manual/en/oci8.installation.php How to compile PHP with OCI8 support])",
"config-dbsupport-mssql": "* [{{int:version-db-mssql-url}} Microsoft SQL Server] הוא מסד נתונים עסקי מסחרי לחלונות. ([https://secure.php.net/manual/en/sqlsrv.installation.php How to compile PHP with SQLSRV support])",
"config-header-mysql": "הגדרות MySQL",
"config-header-postgres": "הגדרות PostgreSQL",
"config-license-help": "אתרי ויקי ציבוריים רבים מפרסמים את כל התרומות [https://freedomdefined.org/Definition ברישיון חופשי].\nזה עוזר ליצור תחושה של בעלות קהילתית ומעודד תרומה לאורך זמן.\nזה בדרך כלל לא נחוץ לאתר ויקי פרטי או אתר של חברה מסחרית.\n\nאם האפשרות להשתמש בטקסט מוויקיפדיה והאפשרות שוויקיפדיה תוכל תקבל עותקים של טקסטים מהוויקי שלך חשובות לך, כדאי לבחור ב<strong>{{int:config-license-cc-by-sa}}</strong>.\n\nויקיפדיה השתמשה בעבר ברישיון החופשי למסמכים של גנו (GNU FDL או GFDL).\nהוא עדיין רישיון תקין, אבל קשה להבנה.\nכמו־כן, קשה לעשות שימוש חוזר ביצירות שפורסמו לפי GFDL.",
"config-email-settings": "הגדרות דוא״ל",
"config-enable-email": "להפעיל דוא״ל יוצא",
- "config-enable-email-help": "אם אתם רוצים שדוא״ל יעבוד, [Config-dbsupport-oracle/manual/en/mail.configuration.php אפשרויות הדוא״ל של PHP] צריכות להיות מוגדרות נכון.\nאם אינכם רוצים להפעיל שום אפשרויות דוא״ל, כבו אותן כאן ועכשיו.",
+ "config-enable-email-help": "אם אתם רוצים שדוא״ל יעבוד, [https://secure.php.net/manual/en/mail.configuration.php אפשרויות הדוא״ל של PHP] צריכות להיות מוגדרות נכון.\nאם אינכם רוצים להפעיל שום אפשרויות דוא״ל, כבו אותן כאן ועכשיו.",
"config-email-user": "להפעיל שליחת דוא״ל ממשתמש למשתמש",
"config-email-user-help": "לאפשר לכל המשתמשים לשלוח אחד לשני דוא״ל אם הם הפעילו את זה בהעדפות שלהם.",
"config-email-usertalk": "להפעיל הודעות על דף שיחת משתמש",
"config-support-info": "MediaWiki ondersteunt de volgende databasesystemen:\n\n$1\n\nAls u het databasesysteem dat u wilt gebruiken niet in de lijst terugvindt, volg dan de handleiding waarnaar hierboven wordt verwezen om ondersteuning toe te voegen.",
"config-dbsupport-mysql": "* [{{int:version-db-mysql-url}} MySQL] is de primaire database voor MediaWiki en wordt het best ondersteund. MediaWiki werkt ook met [{{int:version-db-mariadb-url}} MariaDB] en [{{int:version-db-percona-url}} Percona Server], die MySQL compatibel zijn ([https://secure.php.net/manual/en/mysqli.installation.php hoe PHP te compileren met MySQL-ondersteuning]).",
"config-dbsupport-postgres": "* [{{int:version-db-postgres-url}} PostgreSQL] is een populair open source databasesysteem als alternatief voor MySQL.([https://secure.php.net/manual/en/pgsql.installation.php Hoe u PHP kunt compileren met ondersteuning voor PostgreSQL])",
- "config-dbsupport-sqlite": "* [{{int:version-db-sqlite-url}} SQLite] is een zeer goed ondersteund lichtgewicht databasesysteem ([http://www.php.net/manual/en/pdo.installation.php hoe PHP gecompileerd moet zijn met ondersteuning voor SQLite]; gebruikt PDO).",
- "config-dbsupport-oracle": "* [{{int:version-db-oracle-url}} Oracle] is een commerciële database voor grote bedrijven ([http://www.php.net/manual/en/oci8.installation.php PHP compileren met ondersteuning voor OCI8]).",
+ "config-dbsupport-sqlite": "* [{{int:version-db-sqlite-url}} SQLite] is een zeer goed ondersteund lichtgewicht databasesysteem ([https://secure.php.net/manual/en/pdo.installation.php hoe PHP gecompileerd moet zijn met ondersteuning voor SQLite]; gebruikt PDO).",
+ "config-dbsupport-oracle": "* [{{int:version-db-oracle-url}} Oracle] is een commerciële database voor grote bedrijven ([https://secure.php.net/manual/en/oci8.installation.php PHP compileren met ondersteuning voor OCI8]).",
"config-dbsupport-mssql": "* [{{int:version-db-mssql-url}} Microsoft SQL Server] is een commerciële enterprisedatabase voor Windows ([https://secure.php.net/manual/en/sqlsrv.installation.php PHP compileren met ondersteuning voor SQLSRV]).",
"config-header-mysql": "MySQL-instellingen",
"config-header-postgres": "PostgreSQL-instellingen",
"config-license-help": "In veel openbare wiki's zijn alle bijdragen beschikbaar onder een [https://freedomdefined.org/Definition vrije licentie].\nDit helpt bij het creëren van een gevoel van gemeenschappelijk eigendom en stimuleert bijdragen op lange termijn.\nDit is over het algemeen niet nodig is voor een particuliere of zakelijke wiki.\n\nAls u teksten uit Wikipedia wilt kunnen gebruiken en u wilt het mogelijk maken teksten uit uw wiki naar Wikipedia te kopiëren, kies dan de licentie <strong>{{int:config-license-cc-by-sa}}</strong>.\n\nDe GNU Free Documentation License is de oude licentie voor inhoud uit Wikipedia.\nDit is nog steeds een geldige licentie, maar deze licentie is lastig te begrijpen.\nHet is ook lastig inhoud te hergebruiken onder de GFDL.",
"config-email-settings": "E-mailinstellingen",
"config-enable-email": "Uitgaande e-mail inschakelen",
- "config-enable-email-help": "Als u wilt dat e-mailen mogelijk is, dan moeten de [Config-dbsupport-oracle/manual/en/mail.configuration.php e-mailinstellingen van PHP] correct zijn.\nAls u niet wilt dat e-mailen mogelijk is, dan kunt u de instellingen hier uitschakelen.",
+ "config-enable-email-help": "Als u wilt dat e-mailen mogelijk is, dan moeten de [https://secure.php.net/manual/en/mail.configuration.php e-mailinstellingen van PHP] correct zijn.\nAls u niet wilt dat e-mailen mogelijk is, dan kunt u de instellingen hier uitschakelen.",
"config-email-user": "E-mail tussen gebruikers inschakelen",
"config-email-user-help": "Gebruikers toestaan e-mail aan elkaar te verzenden als dit in de voorkeuren is ingesteld.",
"config-email-usertalk": "Gebruikersoverlegmeldingen inschakelen",
"config-cache-options": "Instellingen voor het cachen van objecten:",
"config-cache-help": "Het cachen van objecten wordt gebruikt om de snelheid van MediaWiki te verbeteren door vaak gebruikte gegevens te bewaren.\nMiddelgrote tot grote websites wordt geadviseerd dit in te schakelen en ook kleine sites merken de voordelen.",
"config-cache-none": "Niets cachen.\nEr gaat geen functionaliteit verloren, maar dit kan invloed hebben op de prestaties.",
- "config-cache-accel": "Cachen van objecten via PHP (APC, APCu, XCache of WinCache)",
+ "config-cache-accel": "Cachen van objecten via PHP (APC, APCu of WinCache)",
"config-cache-memcached": "Memcached gebruiken (dit vereist aanvullende instellingen)",
"config-memcached-servers": "Memcachedservers:",
"config-memcached-help": "Lijst met IP-adressen te gebruiken voor Memcached.\nEén IP-adres per regel met een poortnummer.\nBijvoorbeeld:\n 127.0.0.1:11211\n 192.168.1.25:1234",
"config-nofile": "Het bestand \"$1\" is niet gevonden. Is het verwijderd?",
"config-extension-link": "Weet u dat u [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Extensions uitbreidingen] kunt gebruiken voor uw wiki?\n\nU kunt [https://www.mediawiki.org/wiki/Special:MyLanguage/Category:Extensions_by_category uitbreidingen op categorie] bekijken of ga naar de [https://www.mediawiki.org/wiki/Extension_Matrix uitbreidingenmatrix] om de volledige lijst met uitbreidingen te bekijken.",
"config-skins-screenshots": "$1 (schermafbeeldingen: $2)",
+ "config-extensions-requires": "$1 (vereist $2)",
"config-screenshot": "schermafbeelding",
"mainpagetext": "<strong>De installatie van MediaWiki is geslaagd.</strong>",
"mainpagedocfooter": "Raadpleeg de [https://meta.wikimedia.org/wiki/Special:MyLanguage/Help:Contents handleiding] voor informatie over het gebruik van de wikisoftware.\n\n== Meer hulp over MediaWiki ==\n\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Lijst met instellingen]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ Veelgestelde vragen (FAQ)]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Mailinglijst voor aankondigingen van nieuwe versies]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Maak MediaWiki beschikbaar in uw taal]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Leer hoe u spam kunt voorkomen op uw wiki]"
"Сербијана",
"Zoranzoki21",
"Acamicamacaraca",
- "Obsuser"
+ "Obsuser",
+ "BadDog"
]
},
"config-desc": "Инсталација за Медијавики",
"config-page-upgrade": "Надоградња постојеће инсталације",
"config-page-dbsettings": "Подешавања базе података",
"config-page-name": "Назив",
- "config-page-options": "Ð\9fодеÑ\88аваÑ\9aа",
+ "config-page-options": "Ð\9eпÑ\86иÑ\98е",
"config-page-install": "Инсталирај",
"config-page-complete": "Завршено!",
"config-page-restart": "Поновно покретање инсталације",
*/
abstract class LBFactory implements ILBFactory {
/** @var ChronologyProtector */
- protected $chronProt;
+ private $chronProt;
/** @var object|string Class name or object With profileIn/profileOut methods */
- protected $profiler;
+ private $profiler;
/** @var TransactionProfiler */
- protected $trxProfiler;
+ private $trxProfiler;
/** @var LoggerInterface */
- protected $replLogger;
+ private $replLogger;
/** @var LoggerInterface */
- protected $connLogger;
+ private $connLogger;
/** @var LoggerInterface */
- protected $queryLogger;
+ private $queryLogger;
/** @var LoggerInterface */
- protected $perfLogger;
+ private $perfLogger;
/** @var callable Error logger */
- protected $errorLogger;
+ private $errorLogger;
/** @var callable Deprecation logger */
- protected $deprecationLogger;
+ private $deprecationLogger;
+
/** @var BagOStuff */
protected $srvCache;
/** @var BagOStuff */
/** @var DatabaseDomain Local domain */
protected $localDomain;
+
/** @var string Local hostname of the app server */
- protected $hostname;
+ private $hostname;
/** @var array Web request information about the client */
- protected $requestInfo;
-
- /** @var mixed */
- protected $ticket;
- /** @var string|bool String if a requested DBO_TRX transaction round is active */
- protected $trxRoundId = false;
- /** @var string|bool Reason all LBs are read-only or false if not */
- protected $readOnlyReason = false;
- /** @var callable[] */
- protected $replicationWaitCallbacks = [];
+ private $requestInfo;
+ /** @var bool Whether this PHP instance is for a CLI script */
+ private $cliMode;
+ /** @var string Agent name for query profiling */
+ private $agent;
/** @var array[] $aliases Map of (table => (dbname, schema, prefix) map) */
- protected $tableAliases = [];
+ private $tableAliases = [];
/** @var string[] Map of (index alias => index) */
- protected $indexAliases = [];
-
- /** @var bool Whether this PHP instance is for a CLI script */
- protected $cliMode;
- /** @var string Agent name for query profiling */
- protected $agent;
+ private $indexAliases = [];
+ /** @var callable[] */
+ private $replicationWaitCallbacks = [];
+ /** @var mixed */
+ private $ticket;
+ /** @var string|bool String if a requested DBO_TRX transaction round is active */
+ private $trxRoundId = false;
/** @var string One of the ROUND_* class constants */
private $trxRoundStage = self::ROUND_CURSORY;
+ /** @var string|bool Reason all LBs are read-only or false if not */
+ protected $readOnlyReason = false;
+
/** @var string|null */
private $defaultGroup = null;
* @ingroup Database
*/
class LoadBalancer implements ILoadBalancer {
- /** @var array[] Map of (server index => server config array) */
- private $servers;
+ /** @var ILoadMonitor */
+ private $loadMonitor;
+ /** @var callable|null Callback to run before the first connection attempt */
+ private $chronologyCallback;
+ /** @var BagOStuff */
+ private $srvCache;
+ /** @var WANObjectCache */
+ private $wanCache;
+ /** @var object|string Class name or object With profileIn/profileOut methods */
+ private $profiler;
+ /** @var TransactionProfiler */
+ private $trxProfiler;
+ /** @var LoggerInterface */
+ private $replLogger;
+ /** @var LoggerInterface */
+ private $connLogger;
+ /** @var LoggerInterface */
+ private $queryLogger;
+ /** @var LoggerInterface */
+ private $perfLogger;
+ /** @var callable Exception logger */
+ private $errorLogger;
+ /** @var callable Deprecation logger */
+ private $deprecationLogger;
+
+ /** @var DatabaseDomain Local Domain ID and default for selectDB() calls */
+ private $localDomain;
+
/** @var Database[][][] Map of (connection category => server index => IDatabase[]) */
private $conns;
+
+ /** @var array[] Map of (server index => server config array) */
+ private $servers;
/** @var float[] Map of (server index => weight) */
private $loads;
/** @var array[] Map of (group => server index => weight) */
private $waitTimeout;
/** @var array The LoadMonitor configuration */
private $loadMonitorConfig;
+ /** @var string Alternate ID string for the domain instead of DatabaseDomain::getId() */
+ private $localDomainIdAlias;
+ /** @var int */
+ private $maxLag = self::MAX_LAG_DEFAULT;
+
+ /** @var string Current server name */
+ private $hostname;
+ /** @var bool Whether this PHP instance is for a CLI script */
+ private $cliMode;
+ /** @var string Agent name for query profiling */
+ private $agent;
+
/** @var array[] $aliases Map of (table => (dbname, schema, prefix) map) */
private $tableAliases = [];
/** @var string[] Map of (index alias => index) */
private $indexAliases = [];
-
- /** @var ILoadMonitor */
- private $loadMonitor;
- /** @var callable|null Callback to run before the first connection attempt */
- private $chronologyCallback;
- /** @var BagOStuff */
- private $srvCache;
- /** @var WANObjectCache */
- private $wanCache;
- /** @var object|string Class name or object With profileIn/profileOut methods */
- protected $profiler;
- /** @var TransactionProfiler */
- protected $trxProfiler;
- /** @var LoggerInterface */
- protected $replLogger;
- /** @var LoggerInterface */
- protected $connLogger;
- /** @var LoggerInterface */
- protected $queryLogger;
- /** @var LoggerInterface */
- protected $perfLogger;
+ /** @var array[] Map of (name => callable) */
+ private $trxRecurringCallbacks = [];
/** @var Database DB connection object that caused a problem */
private $errorConnection;
private $readOnlyReason = false;
/** @var int Total connections opened */
private $connsOpened = 0;
- /** @var string|bool String if a requested DBO_TRX transaction round is active */
- private $trxRoundId = false;
- /** @var array[] Map of (name => callable) */
- private $trxRecurringCallbacks = [];
- /** @var DatabaseDomain Local Domain ID and default for selectDB() calls */
- private $localDomain;
- /** @var string Alternate ID string for the domain instead of DatabaseDomain::getId() */
- private $localDomainIdAlias;
- /** @var string Current server name */
- private $host;
- /** @var bool Whether this PHP instance is for a CLI script */
- protected $cliMode;
- /** @var string Agent name for query profiling */
- protected $agent;
-
- /** @var callable Exception logger */
- private $errorLogger;
- /** @var callable Deprecation logger */
- private $deprecationLogger;
-
/** @var bool */
private $disabled = false;
/** @var bool Whether any connection has been attempted yet */
private $connectionAttempted = false;
- /** @var int */
- private $maxLag = self::MAX_LAG_DEFAULT;
+
+ /** @var string|bool String if a requested DBO_TRX transaction round is active */
+ private $trxRoundId = false;
/** @var string Stage of the current transaction round in the transaction round life-cycle */
private $trxRoundStage = self::ROUND_CURSORY;
$this->$key = $params[$key] ?? new NullLogger();
}
- $this->host = $params['hostname'] ?? ( gethostname() ?: 'unknown' );
+ $this->hostname = $params['hostname'] ?? ( gethostname() ?: 'unknown' );
$this->cliMode = $params['cliMode'] ?? ( PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg' );
$this->agent = $params['agent'] ?? '';
$oldDomain = key( $this->conns[$connFreeKey][$i] );
if ( strlen( $dbName ) && !$conn->selectDB( $dbName ) ) {
$this->lastError = "Error selecting database '$dbName' on server " .
- $conn->getServer() . " from client host {$this->host}";
+ $conn->getServer() . " from client host {$this->hostname}";
$this->errorConnection = $conn;
$conn = false;
} else {
// Tag filter
if ( $tagSelector ) {
- $html .= Xml::tags( 'p', null, implode( ' ', $tagSelector ) );
+ $html .= Xml::tags( 'p', null, implode( "\u{00A0}", $tagSelector ) );
}
// Filter links
* @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
);
}
* @param object|string|int $type
* @return mixed
*/
- private static function convertSelectType( $type ) {
+ protected static function convertSelectType( $type ) {
switch ( $type ) {
case 'fromdb':
return self::READ_NORMAL;
return $ret;
}
+ /**
+ * Helper method for checking whether two revisions have differences that go
+ * beyond the main slot.
+ *
+ * MCR migration note: this method should go away!
+ *
+ * @deprecated Use only as a stop-gap before refactoring to support MCR.
+ *
+ * @param Revision $a
+ * @param Revision $b
+ * @return bool
+ */
+ public static function hasDifferencesOutsideMainSlot( Revision $a, Revision $b ) {
+ $aSlots = $a->getRevisionRecord()->getSlots();
+ $bSlots = $b->getRevisionRecord()->getSlots();
+ $changedRoles = $aSlots->getRolesWithDifferentContent( $bSlots );
+
+ return ( $changedRoles !== [ 'main' ] );
+ }
+
/**
* Get the content that needs to be saved in order to undo all revisions
* between $undo and $undoafter. Revisions must belong to the same page,
* must exist and must not be deleted
+ *
* @param Revision $undo
* @param Revision $undoafter Must be an earlier revision than $undo
* @return Content|bool Content on success, false on failure
* @since 1.21
* Before we had the Content object, this was done in getUndoText
*/
- public function getUndoContent( Revision $undo, Revision $undoafter = null ) {
+ public function getUndoContent( Revision $undo, Revision $undoafter ) {
+ // TODO: MCR: replace this with a method that returns a RevisionSlotsUpdate
+
+ if ( self::hasDifferencesOutsideMainSlot( $undo, $undoafter ) ) {
+ // Cannot yet undo edits that involve anything other the main slot.
+ return false;
+ }
+
$handler = $undo->getContentHandler();
return $handler->getUndoContent( $this->getRevision(), $undo, $undoafter );
}
* 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() );
* Callers are responsible for permission checks
* (with ChangeTags::canAddTagsAccompanyingChange)
*
- * @return array
+ * @return array An array of error messages, as returned by Status::getErrorsArray()
*/
public function commitRollback( $fromP, $summary, $bot,
&$resultDetails, User $guser, $tags = null
return [ [ 'readonlytext' ] ];
}
- // Get the last editor
- $current = $this->getRevision();
+ // Begin revision creation cycle by creating a PageUpdater.
+ // If the page is changed concurrently after grabParentRevision(), the rollback will fail.
+ $updater = $this->newPageUpdater( $guser );
+ $current = $updater->grabParentRevision();
+
if ( is_null( $current ) ) {
// Something wrong... no page?
return [ [ 'notanarticle' ] ];
}
+ $currentEditorForPublic = $current->getUser( RevisionRecord::FOR_PUBLIC );
+ $legacyCurrent = new Revision( $current );
$from = str_replace( '_', ' ', $fromP );
+
// User name given should match up with the top revision.
- // If the user was deleted then $from should be empty.
- if ( $from != $current->getUserText() ) {
- $resultDetails = [ 'current' => $current ];
+ // If the revision's user is not visible, then $from should be empty.
+ if ( $from !== ( $currentEditorForPublic ? $currentEditorForPublic->getName() : '' ) ) {
+ $resultDetails = [ 'current' => $legacyCurrent ];
return [ [ 'alreadyrolled',
htmlspecialchars( $this->mTitle->getPrefixedText() ),
htmlspecialchars( $fromP ),
- htmlspecialchars( $current->getUserText() )
+ htmlspecialchars( $currentEditorForPublic ? $currentEditorForPublic->getName() : '' )
] ];
}
// Get the last edit not by this person...
// Note: these may not be public values
- $userId = intval( $current->getUser( Revision::RAW ) );
- $userName = $current->getUserText( Revision::RAW );
- if ( $userId ) {
- $user = User::newFromId( $userId );
- $user->setName( $userName );
- } else {
- $user = User::newFromName( $current->getUserText( Revision::RAW ), false );
- }
-
- $actorWhere = ActorMigration::newMigration()->getWhere( $dbw, 'rev_user', $user );
+ $actorWhere = ActorMigration::newMigration()->getWhere(
+ $dbw,
+ 'rev_user',
+ $current->getUser( RevisionRecord::RAW )
+ );
$s = $dbw->selectRow(
[ 'revision' ] + $actorWhere['tables'],
[ 'rev_id', 'rev_timestamp', 'rev_deleted' ],
[
- 'rev_page' => $current->getPage(),
+ 'rev_page' => $current->getPageId(),
'NOT(' . $actorWhere['conds'] . ')',
],
__METHOD__,
if ( $s === false ) {
// No one else ever edited this page
return [ [ 'cantrollback' ] ];
- } elseif ( $s->rev_deleted & Revision::DELETED_TEXT
- || $s->rev_deleted & Revision::DELETED_USER
+ } elseif ( $s->rev_deleted & RevisionRecord::DELETED_TEXT
+ || $s->rev_deleted & RevisionRecord::DELETED_USER
) {
// Only admins can see this text
return [ [ 'notvisiblerev' ] ];
}
// Generate the edit summary if necessary
- $target = Revision::newFromId( $s->rev_id, Revision::READ_LATEST );
+ $target = $this->getRevisionStore()->getRevisionById(
+ $s->rev_id,
+ RevisionStore::READ_LATEST
+ );
if ( empty( $summary ) ) {
- if ( $from == '' ) { // no public user name
+ if ( !$currentEditorForPublic ) { // no public user name
$summary = wfMessage( 'revertpage-nouser' );
} else {
$summary = wfMessage( 'revertpage' );
}
}
+ $legacyTarget = new Revision( $target );
+ $targetEditorForPublic = $target->getUser( RevisionRecord::FOR_PUBLIC );
// Allow the custom summary to use the same args as the default message
$args = [
- $target->getUserText(), $from, $s->rev_id,
+ $targetEditorForPublic ? $targetEditorForPublic->getName() : null,
+ $currentEditorForPublic ? $currentEditorForPublic->getName() : null,
+ $s->rev_id,
$wgContLang->timeanddate( wfTimestamp( TS_MW, $s->rev_timestamp ) ),
- $current->getId(), $wgContLang->timeanddate( $current->getTimestamp() )
+ $current->getId(),
+ $wgContLang->timeanddate( $current->getTimestamp() )
];
if ( $summary instanceof Message ) {
$summary = $summary->params( $args )->inContentLanguage()->text();
$flags |= EDIT_FORCE_BOT;
}
- $targetContent = $target->getContent();
- $changingContentModel = $targetContent->getModel() !== $current->getContentModel();
+ // TODO: MCR: also log model changes in other slots, in case that becomes possible!
+ $currentContent = $current->getContent( 'main' );
+ $targetContent = $target->getContent( 'main' );
+ $changingContentModel = $targetContent->getModel() !== $currentContent->getModel();
if ( in_array( 'mw-rollback', ChangeTags::getSoftwareTags() ) ) {
$tags[] = 'mw-rollback';
}
- // Actually store the edit
- $status = $this->doEditContent(
- $targetContent,
- $summary,
- $flags,
- $target->getId(),
- $guser,
- null,
- $tags
+ // Build rollback revision:
+ // Restore old content
+ // TODO: MCR: test this once we can store multiple slots
+ foreach ( $target->getSlots()->getSlots() as $slot ) {
+ $updater->inheritSlot( $slot );
+ }
+
+ // Remove extra slots
+ // TODO: MCR: test this once we can store multiple slots
+ foreach ( $current->getSlotRoles() as $role ) {
+ if ( !$target->hasSlot( $role ) ) {
+ $updater->removeSlot( $role );
+ }
+ }
+
+ $updater->setOriginalRevisionId( $target->getId() );
+ $updater->setUndidRevisionId( $current->getId() );
+ $updater->addTags( $tags );
+
+ // Actually store the rollback
+ $rev = $updater->saveRevision(
+ CommentStoreComment::newUnsavedComment( $summary ),
+ $flags
);
// Set patrolling and bot flag on the edits, which gets rollbacked.
}
if ( count( $set ) ) {
- $actorWhere = ActorMigration::newMigration()->getWhere( $dbw, 'rc_user', $user, false );
+ $actorWhere = ActorMigration::newMigration()->getWhere(
+ $dbw,
+ 'rc_user',
+ $current->getUser( RevisionRecord::RAW ),
+ false
+ );
$dbw->update( 'recentchanges', $set,
[ /* WHERE */
- 'rc_cur_id' => $current->getPage(),
+ 'rc_cur_id' => $current->getPageId(),
'rc_timestamp > ' . $dbw->addQuotes( $s->rev_timestamp ),
$actorWhere['conds'], // No tables/joins are needed for rc_user
],
);
}
- if ( !$status->isOK() ) {
- return $status->getErrorsArray();
+ if ( !$updater->wasSuccessful() ) {
+ return $updater->getStatus()->getErrorsArray();
}
- // raise error, when the edit is an edit without a new version
- $statusRev = $status->value['revision'] ?? null;
- if ( !( $statusRev instanceof Revision ) ) {
- $resultDetails = [ 'current' => $current ];
+ // Report if the edit was not created because it did not change the content.
+ if ( $updater->isUnchanged() ) {
+ $resultDetails = [ 'current' => $legacyCurrent ];
return [ [ 'alreadyrolled',
htmlspecialchars( $this->mTitle->getPrefixedText() ),
htmlspecialchars( $fromP ),
- htmlspecialchars( $current->getUserText() )
+ htmlspecialchars( $targetEditorForPublic ? $targetEditorForPublic->getName() : '' )
] ];
}
$log->setTarget( $this->mTitle );
$log->setComment( $summary );
$log->setParameters( [
- '4::oldmodel' => $current->getContentModel(),
+ '4::oldmodel' => $currentContent->getModel(),
'5::newmodel' => $targetContent->getModel(),
] );
$log->publish( $logId );
}
- $revId = $statusRev->getId();
+ $revId = $rev->getId();
- Hooks::run( 'ArticleRollbackComplete', [ $this, $guser, $target, $current ] );
+ Hooks::run( 'ArticleRollbackComplete', [ $this, $guser, $legacyTarget, $legacyCurrent ] );
$resultDetails = [
'summary' => $summary,
- 'current' => $current,
- 'target' => $target,
+ 'current' => $legacyCurrent,
+ 'target' => $legacyTarget,
'newid' => $revId,
'tags' => $tags
];
+ // TODO: make this return a Status object and wrap $resultDetails in that.
return [];
}
// Make table header
foreach ( $fields as $field => $name ) {
if ( strval( $name ) == '' ) {
- $s .= Html::rawElement( 'th', [], ' ' ) . "\n";
+ $s .= Html::rawElement( 'th', [], "\u{00A0}" ) . "\n";
} elseif ( $this->isFieldSortable( $field ) ) {
$query = [ 'sort' => $field, 'limit' => $this->mLimit ];
$linkType = null;
$formatted = strval( $this->formatValue( $field, $value ) );
if ( $formatted == '' ) {
- $formatted = ' ';
+ $formatted = "\u{00A0}";
}
$s .= Html::rawElement( 'td', $this->getCellAttrs( $field, $value ), $formatted ) . "\n";
* @return array
*/
public static function getStartupModules() {
- return [ 'jquery', 'mediawiki' ];
+ return [ 'jquery', 'mediawiki', 'mediawiki.base' ];
}
public static function getLegacyModules() {
// This url may be preloaded. See getPreloadLinks().
'$VARS.baseModulesUri' => self::getStartupModulesUrl( $context ),
] );
- $pairs['$CODE.registrations()'] = str_replace(
+ $pairs['$CODE.registrations();'] = str_replace(
"\n",
"\n\t",
trim( $this->getModuleRegistrations( $context ) )
// Detect changes to the module registrations
'moduleHashes' => $this->getAllModuleHashes( $context ),
- 'fileMtimes' => [
- filemtime( "$IP/resources/src/startup.js" ),
+ 'fileHashes' => [
+ $this->safeFileHash( "$IP/resources/src/startup.js" ),
],
];
return $summary;
'syndicate' => [],
];
- // Support for high-density display images if enabled
- if ( $config->get( 'ResponsiveImages' ) ) {
- $modules['core'][] = 'mediawiki.hidpi';
- }
-
// Preload jquery.tablesorter for mediawiki.page.ready
if ( strpos( $out->getHTML(), 'sortable' ) !== false ) {
$modules['content'][] = 'jquery.tablesorter';
$filterSelection = Html::rawElement(
'div',
[],
- implode( ' ', $tagFilter )
+ implode( "\u{00A0}", $tagFilter )
);
} else {
$filterSelection = Html::rawElement( 'div', [], '' );
$this->msg( 'namespace' )->text(),
'namespace',
''
- ) . ' ' .
+ ) . "\u{00A0}" .
Html::namespaceSelector(
[ 'selected' => $this->opts['namespace'], 'all' => '' ],
[
'id' => 'namespace',
'class' => 'namespaceselector',
]
- ) . ' ' .
+ ) . "\u{00A0}" .
Html::rawElement(
'span',
[ 'class' => 'mw-input-with-label' ],
'title' => $this->msg( 'tooltip-invert' )->text(),
'class' => 'mw-input'
]
- ) . ' '
+ ) . "\u{00A0}"
) .
Html::rawElement( 'span', [ 'class' => 'mw-input-with-label' ],
Xml::checkLabel(
'title' => $this->msg( 'tooltip-namespace_association' )->text(),
'class' => 'mw-input'
]
- ) . ' '
+ ) . "\u{00A0}"
)
);
Html::label(
$this->msg( 'emailusername' )->text(),
'emailusertarget'
- ) . ' ' .
+ ) . "\u{00A0}" .
Html::input(
'target',
$name,
'</td>
<td class="mw-input">' .
Xml::input( 'wpComment', 50, $this->mComment, [ 'id' => 'wpComment' ] ) .
- '</td>
+ "</td>
</tr>
<tr>
- <td> </td>
- <td class="mw-submit">' .
+ <td>\u{00A0}</td>
+ <td class=\"mw-submit\">" .
Xml::submitButton(
$this->msg( 'mergehistory-submit' )->text(),
[ 'name' => 'merge', 'id' => 'mw-merge-submit' ]
)->escaped();
$grouplist = '';
- $count = count( $list );
+ $count = count( $list ) + count( $tempList );
if ( $count > 0 ) {
$grouplist = $this->msg( 'userrights-groupsmember' )
->numParams( $count )
$this->msg( 'watchlist-unwatch' )->text(), [
'class' => 'mw-unwatch-link',
'title' => $this->msg( 'tooltip-ca-unwatch' )->text()
- ], [ 'action' => 'unwatch' ] ) . ' ';
+ ], [ 'action' => 'unwatch' ] ) . "\u{00A0}";
}
} );
}
]
);
- $f .= ' ' .
+ $f .= "\u{00A0}" .
Xml::checkLabel(
$this->msg( 'invert' )->text(),
'invert',
$formatted = strval( $this->formatValue( 'am_actual', $row->am_actual ) );
if ( $formatted === '' ) {
- $formatted = ' ';
+ $formatted = "\u{00A0}";
}
$s .= Xml::tags( 'td', $this->getCellAttrs( 'am_actual', $row->am_actual ), $formatted )
'en-gb' => 'British English', # British English
'eo' => 'Esperanto', # Esperanto
'es' => 'español', # Spanish
+ 'es-419' => 'español de América Latina', # Spanish for the Latin America and Caribbean region
'es-formal' => "español (formal)\u{200E}", # Spanish formal address
'et' => 'eesti', # Estonian
'eu' => 'euskara', # Basque
"group": "Kawan:",
"group-user": "Ureueng-ureueng ngui",
"group-autoconfirmed": "Ureueng ngui nyang meu-konfirmasi otomatis",
+ "group-bot": "Bot",
"group-sysop": "Ureuëng urôh",
"group-bureaucrat": "Birôkrat",
"group-suppress": "Ureueng kalön",
"action-read": "beuët laman nyoe",
"action-edit": "andam laman nyoë",
"action-createpage": "peugöt laman",
+ "action-createaccount": "peugöt akun ureueng ngui nyoe",
"action-move": "Peupinah laman nyoë",
"nchanges": "$1 {{PLURAL:$1|neuubah}}",
"enhancedrc-since-last-visit": "$1 {{PLURAL:$1|yôh seunaweuë seuneulheuëh kön}}",
"protect-expiry-options": "1 jeum:1 hour,1 uroë:1 day,1 minggu:1 week,2 minggu:2 weeks,1 buleuën:1 month,3 buleuën:3 months,6 buleuën:6 months,1 thôn:1 year,sabé:infinite",
"restriction-type": "Lindông:",
"restriction-level": "Tingkat:",
+ "restriction-edit": "Andam",
+ "restriction-move": "Pupinah",
"undeletebtn": "Peuriwang!",
"undeletelink": "eu/peuriwang",
"undeleteviewlink": "eu",
"ipboptions": "2 jeum:2 hours,1 uroë:1 day,3 uroë:3 days,1 minggu:1 week,2 minggu:2 weeks,1 buleuën:1 month,3 buleuën:3 months,6 buleuën:6 months,1 thôn:1 year,sabé:infinite",
"ipblocklist": "Ureuëng ngui teutheun",
"ipblocklist-submit": "Mita",
+ "infiniteblock": "hana bataih",
"blocklink": "theun",
"unblocklink": "peugadöh theun",
"change-blocklink": "gantoë theun",
"blocklogentry": "theun [[$1]] ngön watèë maté tanggay $2 $3",
"unblocklogentry": "peugadöh theun \"$1\"",
"block-log-flags-nocreate": "pumeugöt akun geupumaté",
+ "proxyblocker": "Ngön theun proxy",
"movepagetext": "Formulir di yup nyoë geunguy keu jak ubah nan saboh ôn ngön jak peupinah ban dum data riwayat u nan barô. Nan nyang trép euntreuk jeuët keu ôn peupinah u nan nyang barô. Hubông u nan trép hana meu’ubah. Neupeupaseuti keu neupréksa peuninah ôn nyang reulöh atawa meuganda lheuëh neupinah. Droëneuh nyang mat tanggông jaweuëb keu neupeupaseuti meunyo hubông laju teusambông u ôn nyang patôt.\n\nBeu neuingat that meunyo ôn '''h’an''' jan geupeupinah meunyo ka na ôn nyang geunguy nan barô, keucuali meunyo ôn nyan soh atawa nakeuh ôn peuninah ngön hana riwayat andam. Nyoë areutijih Droëneuh jeuët neu’ubah nan ôn keulayi lagèë söt meunyo Droëneuh neupeugöt seunalah, ngön Droëneuh h‘an jeuët neutimpa ôn nyang ka na.\n'''INGAT'''\nNyoë jeuët geupeuakébat neu’ubah nyang h’an neuduga ngön kreuëh ngön bacah keu ôn nyang meuceuhu. Neupeupaseuti Droëneuh meuphôm akébat nibak buët nyoë sigohlom neulanjut.",
"movepagetalktext": "Ôn peugah haba nyang na hubôngan euntreuk teupinah keudroë '''keucuali meunyo:'''\n\n*Saboh ôn peugah haba nyang hana soh ka na di yup nan barô, atawa\n*Droëneuh hana neubôh tanda cunténg bak kutak di yup nyoë\n\nLam masalah nyoë, meunyo neuhawa, Droëneuh jeuët neupeupinah atawa neupeugabông ôn keudroë.",
"newtitle": "Nan barô:",
"pageinfo-language": "Bahsa asoe mieng",
"pageinfo-content-model": "Modèl asoe mieng",
"pageinfo-robot-policy": "Geuindèks lé robot",
+ "pageinfo-robot-index": "Geupeuidin",
+ "pageinfo-robot-noindex": "Hana geupeuidin",
"pageinfo-watchers": "Jumeulah ureueng kalön mieng",
"pageinfo-redirects-name": "Jumeulah peuninah u mieng nyoe",
+ "pageinfo-firstuser": "Ureueng peugot mieng",
+ "pageinfo-firsttime": "Uroe buleuen pumeugot mieng",
+ "pageinfo-edits": "Jumeulah neuandam ban dum",
+ "pageinfo-recent-edits": "Jumeulah neuandam ban-ban nyoe (lam $1 nyoe)",
"pageinfo-toolboxlink": "Keutrangan miëng",
+ "pageinfo-contentpage-yes": "Nyo",
+ "patrol-log-page": "Log patroli",
"previousdiff": "← Bida awai",
"nextdiff": "Geunantoë lheuëh nyan →",
"file-info-size": "$1 × $2 piksel, rayek beureukaih: $3, MIME jeunèh: $4",
"confirm-unwatch-button": "Ka göt",
"confirm-unwatch-top": "Sampôh laman nyoë nibak dapeuta keunalön droëneuh?",
"imgmultipageprev": "← laman sigohlomjih",
+ "imgmultipagenext": "mieng lheueh nyoe →",
"imgmultigo": "Jak!",
"imgmultigoto": "Jak u mieng $1",
"autosumm-new": "Geupeugöt laman ngön asoë '$1'",
"tag-filter": "Saréng [[Special:Tags|tag]]:",
"tag-filter-submit": "Saréng",
"tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|Tag}}]]: $2)",
+ "tags-active-yes": "Nyo",
+ "tags-active-no": "H`an",
+ "tags-hitcount": "$1 {{PLURAL:$1|neuubah}}",
"logentry-delete-delete": "$1 {{GENDER:$2|geusampôh}} miëng $3",
"logentry-move-move": "$1 {{GENDER:$2|geupinah}} mieng $3 u $4",
"logentry-move-move-noredirect": "$1 {{GENDER:$2|geupinah}} mieng $3 u $4 hana geubôh peuninah",
"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",
"Matma Rex",
"চাণক্য কুমাৰ দাস",
"Fitoschido",
- "Sagsag"
+ "Sagsag",
+ "Bodhisattwa"
]
},
"tog-underline": "সংযোগসমূহ অধোৰেখিত কৰক:",
"special-characters-group-hebrew": "হিব্ৰু",
"special-characters-group-bangla": "বাংলা",
"special-characters-group-tamil": "তামিল",
- "special-characters-group-telugu": "তà§\87লà§\87গু",
+ "special-characters-group-telugu": "তà§\87লà§\81গু",
"special-characters-group-sinhala": "সিংহলী",
"special-characters-group-gujarati": "গুজৰাটী",
"special-characters-group-devanagari": "দেবনাগৰী",
"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 ooschaung",
+ "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": "Hoamseitn",
"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": "Nutzakonto ooleng",
"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": "Valaf",
"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": "Ozoang",
+ "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 Endarung",
"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 Seitnnama oo, damidst de Endarunga siagst, wo zua oda vo da Seitn valinkt san. Damidst Mitglieda vo ana Kategorie siagst, gib „{{ns:category}}:''Nam vo da Kategorie''“ eih. 'Endarunga vo Seitn af [[Special:Watchlist|dainer Beobochtalistn]] san<strong>fett</strong> viaraghom.",
"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 konst de Datei ned iwaschreim.",
"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:|Deine}} Prefarenzen",
"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": "Mia lodn di eih, a Nutzakonto oozleng und di oozmejdn; es is owa ned nedig.",
"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": "Anti-Spam Check.\nDo <strong>nix</strong> eihdrong!",
"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": "Seitninformation",
"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|Markiarunga}}]]: $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": "Nutzakonto $1 is {{GENDER:$2|eastejt}} worn",
"searchsuggest-search": "Suach (af Boarisch oda Deutsch)",
"searchsuggest-containing": "Voitextsuach noch ..."
}
"converter-manual-rule-error": "Знойдзеная памылка ў ручным правіле моўнага канвэртару",
"undo-success": "Рэдагаваньне можа быць адмененае. Калі ласка, параўнайце адрозьненьні паміж вэрсіямі, каб упэўніцца, што гэта адпаведныя зьмены, а потым запішыце зьмены для сканчэньня рэдагаваньня.",
"undo-failure": "Рэдагаваньне ня можа быць скасаванае праз канфлікт паміж папярэднімі рэдагаваньнямі.",
+ "undo-main-slot-only": "Праўка ня можа быць адмененая, бо яна ўключае зьмест па-за асноўным месцам.",
"undo-norev": "Рэдагаваньне ня можа быць адмененае, таму што яно не існуе альбо было выдаленае.",
"undo-nochange": "Выглядае, што праўка ўжо была адмененая.",
"undo-summary": "Скасаваньне праўкі $1 {{GENDER:$2|удзельніка|удзельніцы}} [[Special:Contributions/$2|$2]] ([[User talk:$2|гутаркі]])",
"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",
"tmp-create-error": "Немагчыма стварыць часовы файл.",
"tmp-write-error": "Памылка запісу часовага файлу.",
"large-file": "Рэкамэндаваны памер файлаў — ня болей за $1;\nпамер гэтага файлу — $2.",
- "largefileserver": "Памер гэтага файла перавышае максымальна дазволены.",
- "emptyfile": "Загружаны файл, здаецца, пусты. Магчыма гэты адбылося з-за памылкі ў назьве файла.\nУдакладніце, ці Вы сапраўды жадаеце загрузіць гэты файл.",
+ "largefileserver": "Памер гэтага файлу перавышае максымальна дазволены сэрвэрам.",
+ "emptyfile": "Загружаны файл, здаецца, пусты. Магчыма гэта адбылося з-за памылкі ў назьве файлу. Калі ласка, удакладніце, ці вы сапраўды жадаеце загрузіць гэты файл.",
"windows-nonascii-filename": "Гэтая вікі не падтрымлівае назвы файлаў з спэцыяльнымі сымбалямі.",
"fileexists": "Файл з такой назвай ужо існуе. Калі ласка, праверце <strong>[[:$1]]</strong>, калі Вы ня ўпэўненыя, што жадаеце яго замяніць. [[$1|thumb]]",
"filepageexists": "Старонка апісаньня для гэтага файла ўжо існуе як <strong>[[:$1]]</strong>, але файла з такой назвай няма.\nАпісаньне якое Вы дадалі ня зьявіцца на старонцы апісаньня.\nКаб яно там зьявілася, Вам трэба рэдагаваць яе самастойна.\n[[$1|thumb]]",
"resetpass-temp-password": "অস্থায়ী পাসওয়ার্ড:",
"resetpass-abort-generic": "পাসওয়ার্ড পরিবর্তন একটি এক্সটেনশনের কারণে স্থগিত করা হয়েছে।",
"resetpass-expired": "আপনার পাসওয়ার্ডের মেয়াদ উত্তীর্ণ হয়েছে। অ্যাকাউন্টে প্রবেশের জন্য অনুগ্রহ করে নতুন পাসওয়ার্ড নির্ধারণ করুন।",
- "resetpass-expired-soft": "à¦\86পনার পাসà¦\93য়ারà§\8dডà§\87র মà§\87য়াদ à¦\89তà§\8dতà§\80রà§\8dণ হয়à§\87à¦\9bà§\87 à¦\8fবà¦\82 à¦\86পনাà¦\95à§\87 à¦\8fà¦\95à¦\9fি নতà§\81ন পাসà¦\93য়ারà§\8dড নিরà§\8dধারণ à¦\95রতà§\87 হবà§\87। à¦\85নà§\81à¦\97à§\8dরহ à¦\95রà§\87 à¦\8fà¦\96নà¦\87 à¦\8fà¦\95à¦\9fি নতà§\81ন পাসà¦\93য়ারà§\8dড নিরà§\8dধারণ à¦\95রà§\81ন à¦\85থবা পরà§\87 পরিবরà§\8dতন à¦\95রতà§\87 à¦\9aাà¦\87লà§\87 \"{{int:authprovider-resetpass-skip-label}}\" বাà¦\9fনà§\87 ক্লিক করুন।",
- "resetpass-validity-soft": "à¦\86পনার পাসà¦\93য়ারà§\8dড বà§\88ধ নয়: $1\n\nদয়া à¦\95রà§\87 à¦\8fà¦\95à¦\9fি নতà§\81ন পাসà¦\93য়ারà§\8dড নিরà§\8dধারণ করুন অথবা পরে করার জন্য \"{{int:authprovider-resetpass-skip-label}}\" ক্লিক করুন।",
+ "resetpass-expired-soft": "à¦\86পনার পাসà¦\93য়ারà§\8dডà§\87র মà§\87য়াদ à¦\89তà§\8dতà§\80রà§\8dণ হয়à§\87à¦\9bà§\87 à¦\8fবà¦\82 à¦\86পনাà¦\95à§\87 পাসà¦\93য়ারà§\8dড পরিবরà§\8dতন à¦\95রতà§\87 হবà§\87। à¦\85নà§\81à¦\97à§\8dরহ à¦\95রà§\87 à¦\8fà¦\96নà¦\87 à¦\8fà¦\95à¦\9fি নতà§\81ন পাসà¦\93য়ারà§\8dড নিরà§\8dধারণ à¦\95রà§\81ন à¦\85থবা পরà§\87 পরিবরà§\8dতন à¦\95রতà§\87 à¦\9aাà¦\87লà§\87 \"{{int:authprovider-resetpass-skip-label}}\" ক্লিক করুন।",
+ "resetpass-validity-soft": "à¦\86পনার পাসà¦\93য়ারà§\8dড বà§\88ধ নয়: $1\n\nদয়া à¦\95রà§\87 à¦\8fà¦\95à¦\9fি নতà§\81ন পাসà¦\93য়ারà§\8dড à¦\9aয়ন করুন অথবা পরে করার জন্য \"{{int:authprovider-resetpass-skip-label}}\" ক্লিক করুন।",
"passwordreset": "পাসওয়ার্ড পুনঃস্থাপন করুন",
"passwordreset-text-one": "ইমেইলের মাধ্যমে একটি অস্থায়ী পাসওয়ার্ড পেতে এই ফরম পূরণ করুন।",
"passwordreset-text-many": "{{PLURAL:$1|ইমেইলের মাধ্যমে একটি অস্থায়ী পাসওয়ার্ড পেতে ঘরগুলির একটি পূরণ করুন।}}",
"expansion-depth-exceeded-category-desc": "পাতাটি সর্বোচ্চ এক্সপশন সীমানা অতিক্রম করেছে।",
"expansion-depth-exceeded-warning": "পাতাটি এক্সেপশন সীমানা অতিক্রম করেছে",
"parser-unstrip-loop-warning": "ত্রুটিপূর্ণ লুপ খুঁজে পাওয়া গিয়েছে",
- "unstrip-depth-warning": "লà§\81প রিà¦\95ারশন সীমানা অতিক্রম করেছে ($1)",
- "unstrip-depth-category": "পাতাà¦\97à§\81লি যà§\87à¦\96ানà§\87 unstrip à¦\97à¦à§\80রতার সà§\80মা à¦\85তিà¦\95à§\8dরম à¦\95রà§\87à¦\9bà§\87ন",
+ "unstrip-depth-warning": "à¦\86নসà§\8dà¦\9fà§\8dরিপ à¦\97à¦à§\80রতার সীমানা অতিক্রম করেছে ($1)",
+ "unstrip-depth-category": "পাতাসমà§\82হ যà§\87à¦\96ানà§\87 à¦\86নসà§\8dà¦\9fà§\8dরিপ à¦\97à¦à§\80রতার সà§\80মা à¦\85তিà¦\95à§\8dরম à¦\95রà§\87à¦\9bà§\87",
"unstrip-size-warning": "Unstrip আকারের সীমা অতিক্রম করেছে ($1)",
+ "unstrip-size-category": "পাতাসমূহ যেখানে আনস্ট্রিপ আকারের সীমা অতিক্রম করেছে",
"converter-manual-rule-error": "ম্যানুয়াল ভাষা রূপান্তর নিয়মে ত্রুটি পাওয়া গিয়েছে",
"undo-success": "সম্পাদনাটি বাতিল করা যাবে। অনুগ্রহ করে নিচের তুলনাটি পরীক্ষা করে দেখুন ও নিশ্চিত করুন যে এটাই আপনি করতে চান, এবং তারপর নিচের সম্পাদনাগুলি সংরক্ষণ করে সম্পাদনাটির বাতিল প্রক্রিয়া সমাপ্ত করুন।",
"undo-failure": "এ সম্পাদনা মধ্যবর্তী সম্পাদনাসমূহের কারণে পূর্বাবস্থায় ফিরিয়ে নেওয়া যাবে না।",
"limitreport-templateargumentsize-value": "$1/$2 {{PLURAL:$2|বাইট}}",
"limitreport-expansiondepth": "সর্বোচ্চ গভীরতা বিস্তার",
"limitreport-expensivefunctioncount": "ব্যয়বহুল পার্সার ফাংশন গণনা",
+ "limitreport-unstrip-depth": "Unstrip পুনরাবৃত্তির গভীরতা",
+ "limitreport-unstrip-size": "পরবর্তী-প্রসারিত unstrip আকার",
"limitreport-unstrip-size-value": "$1/$2 {{PLURAL:$2|বাইট}}",
"expandtemplates": "টেমপ্লেট সম্প্রসারণ",
"expand_templates_intro": "এই বিশেষ পাতাটি কিছু উইকিটেক্সট গ্রহণ করে এবং এর ভেতরের সব টেমপ্লেট বারংবার সম্প্রসারিত করে।\nএছাড়াও এটি\n<code><nowiki>{{</nowiki>#language:...}}</code>-এর মত পার্সার ফাংশন,\n<code><nowiki>{{</nowiki>CURRENTDAY}}</code>-এর মত ভ্যারিয়েবল\nমোটকথা দ্বিতীয় বন্ধনীর মধ্যে অবস্থিত সবকিছুকেই সম্প্রসারিত করতে পারে।",
"special-characters-group-hebrew": "হিব্রু",
"special-characters-group-bangla": "বাংলা",
"special-characters-group-tamil": "তামিল",
- "special-characters-group-telugu": "তà§\87লà§\87গু",
+ "special-characters-group-telugu": "তà§\87লà§\81গু",
"special-characters-group-sinhala": "সিংহলী",
"special-characters-group-gujarati": "গুজরাটি",
"special-characters-group-devanagari": "দেবনাগরী",
"Uttam Singha, Dec 2006",
"아라",
"Macofe",
- "MtDu"
+ "MtDu",
+ "Bodhisattwa"
]
},
"tog-underline": "লিঙ্কর তলে দুরগ দিক:",
"special-characters-group-persian": "ফারসি",
"special-characters-group-hebrew": "হিব্রু",
"special-characters-group-bangla": "বাংলা",
- "special-characters-group-telugu": "তà§\87লà§\87গু",
+ "special-characters-group-telugu": "তà§\87লà§\81গু",
"special-characters-group-sinhala": "শিংহলী",
"special-characters-group-gujarati": "গুজরাতি",
"special-characters-group-thai": "থাই",
"customcssprotected": "N'oc'h ket aotreet da gemmañ ar bajenn CSS-mañ rak kavout a reer enni arventennoù personel un implijer all.",
"customjsprotected": "N'oc'h ket aotreet da gemmañ ar bajenn JavaScript-mañ rak kavout a reer enni arventennoù personel un implijer all.",
"mycustomcssprotected": "N'oc'h ket aotreet da gemmañ d'ar bajenn CSS-mañ.",
+ "mycustomjsonprotected": "N'oc'h ket aotreet da gemmañ ar bajenn JSON-mañ.",
"mycustomjsprotected": "N'oc'h ket aotreet da gemmañ d'ar bajenn JavaScript-mañ.",
"myprivateinfoprotected": "N'ho peus ket ar gwirioù evit kemmañ ho titouroù personel.",
"mypreferencesprotected": "N'ho peus ket ar gwirioù evit kemmañ ho Penndibaboù.",
"nosuchusershort": "N'eus perzhiad ebet gantañ an anv « $1 ». Gwiriit ar reizhskrivadur.",
"nouserspecified": "Ret eo deoc'h spisaat un anv implijer.",
"login-userblocked": "Stanket eo an implijer-mañ. N'eo ket aotret da gevreañ.",
- "wrongpassword": "Ger-tremen kamm. Klaskit en-dro.",
+ "wrongpassword": "Ger-tremen pe anv implijer kamm. Klaskit en-dro.",
"wrongpasswordempty": "Ger-tremen ebet. Lakait unan mar plij.",
"passwordtooshort": "{{PLURAL:$1|1 arouezenn|$1 arouezenn}} hir a rank bezañ ar gerioù-tremen da nebeutañ.",
"passwordtoolong": "N'hall ket ar gerioù-tremen bezañ enno ouzhpenn $1 {{PLURAL:$1|1 arouezenn|$1 arouezenn}}.",
- "passwordtoopopular": "N'haller ket ober gant gerioù-ter boutin betek re. Grit gant ur ger-tremen raloc'h.",
+ "passwordtoopopular": "N'haller ket ober gant gerioù-kuzh boutin betek re. Grit gant ur ger-tremen diaesoc'h da gavout.",
"password-name-match": "Rankout a ra ho ker-tremen bezañ disheñvel diouzh hoc'h anv implijer.",
"password-login-forbidden": "Berzet eo ober gant an anv implijer hag ar ger-tremen-mañ.",
"mailmypassword": "Adderaouekaat ar ger-tremen",
"botpasswords-existing": "Gerioù-tremen botoù a zo anezho",
"botpasswords-createnew": "Krouiñ ur ger-tremen bot nevez",
"botpasswords-editexisting": "Cheñch ger-tremen ur bot a zo anezhañ c'hoazh",
+ "botpasswords-label-needsreset": "(ar ger kuzh a rank bezañ riñset)",
"botpasswords-label-appid": "Anv ar robot",
"botpasswords-label-create": "Krouiñ",
"botpasswords-label-update": "Hizivaat",
"postedit-confirmation-created": "Krouet eo bet ar bajenn.",
"postedit-confirmation-restored": "Adsavet eo bet ar bajenn.",
"postedit-confirmation-saved": "Enrollet eo bet ho kemmoù.",
+ "postedit-confirmation-published": "Embannet eo bet ho kemm.",
"edit-already-exists": "N'eus ket bet gallet krouiñ ur bajenn nevez.\nKrouet e oa bet c'hoazh.",
"defaultmessagetext": "Testenn dre ziouer",
"content-failed-to-parse": "C'hwitet eo dielfennadur endalc'had $2 evit ar patrom $1: $3",
"diff-multi-sameuser": "({{PLURAL:$1|Ur reizhadenn da c'hortoz|$1 reizhadenn da c'hortoz}} gant ar memes implijer kuzhet)",
"diff-multi-otherusers": "({{PLURAL:$1|Ur reizhadenn da c'hortoz|$1 reizhadenn da c'hortoz}} gant {{PLURAL:$2|un implijer all|$2 implijer}} kuzhet.)",
"diff-multi-manyusers": "({{PLURAL:$1|Ur reizhadenn da c'hortoz|$1 reizhadenn da c'hortoz}} gant muioc'h eget $2 {{PLURAL:$2|implijer|implijer}} kuzhet.)",
+ "diff-paragraph-moved-tonew": "Fiñvet eo bet ar rannbennad. Klikit evit mont davet al lec'hiadur nevez.",
+ "diff-paragraph-moved-toold": "Ar rannbennad azo bet fiñvet. Klikit evit mont davet al lec'hiadur gozh.",
"difference-missing-revision": "!!{{PLURAL:$2|Un adweladur|$2 adweladurioù}} eus an disheñvelder ($1) {{PLURAL:$2|n'eo ket bet kavet|n'int ket bet adkavet}}.\n\nC'hoarvezout a ra peurliesañ pa vez heuliet ul liamm disheñvel dispredet war-zu ur bajenn zo bet dilamet.\nGallout a reot kavout munudoù e [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} renabl an dilamadurioù].",
"searchresults": "Disoc'hoù enklask",
"searchresults-title": "Disoc'hoù klask evit \"$1\"",
"timezoneregion-indian": "Meurvor Indez",
"timezoneregion-pacific": "Meurvor Habask",
"allowemail": "Aotren ar posteloù a-berzh implijerien all",
+ "email-allow-new-users-label": "Aotreañ e-bostoù a-berzh an implijerien nevez",
+ "email-blacklist-label": "Difenn d'an implijerien-se da gas un e-bost din:",
"prefs-searchoptions": "Klask",
"prefs-namespaces": "Esaouennoù",
"default": "dre ziouer",
"prefs-files": "Restroù",
"prefs-custom-css": "CSS personelaet",
+ "prefs-custom-json": "JSON hiniennel",
"prefs-custom-js": "JS personelaet",
- "prefs-common-config": "JavaScript ha CSS kenrannet evit an holl wiskadurioù :",
+ "prefs-common-config": "CSS/JSON/JavaScript kenrannet evit an holl wiskadurioù :",
"prefs-reset-intro": "Ober gant ar bajenn-mañ a c'hallit evit adlakaat ho penndibaboù dre ziouer evit al lec'hienn-mañ. Kement-se n'hallo ket bezañ disc'hraet da c'houde.",
"prefs-emailconfirm-label": "Kadarnaat ar postel :",
"youremail": "Postel :",
"right-editcontentmodel": "Kemmañ patrom danvez ur bajenn bennak",
"right-editinterface": "Kemmañ an etrefas implijer",
"right-editusercss": "Kemmañ restroù CSS implijerien all",
+ "right-edituserjson": "Kemmañ restroù JSON un implijer all",
"right-edituserjs": "Kemmañ restroù JS implijerien all",
"right-editmyusercss": "Aozañ ho restroù implijer CSS deoc'h-c'hwi",
+ "right-editmyuserjson": "Aozañ ho restroù implijer JSON deoc'h-c'hwi",
"right-editmyuserjs": "Aoazañ ho restroù JavaScript implijer deoc'h-c'hwi",
"right-viewmywatchlist": "Gwelet ho roll-evezhiañ deoc'h-c'hwi",
"right-editmywatchlist": "Kemmañ ho roll evezhiañ deoc'h-c'hwi. Notit mat e vo c'hoazh ouzhpennet pajennoù hep ar gwir-mañ gant obererezhioù zo.",
"grant-createaccount": "Krouiñ kontoù",
"grant-createeditmovepage": "Krouiñ, aozañ ha dilec'hiañ pajennoù",
"grant-delete": "Diverkañ ar pajennoù, an adweladennoù hag an enmontoù er marilh",
- "grant-editinterface": "Kemmañ esaouenn anvioù MediaWiki hag ar CSS/JavaScript implijer",
- "grant-editmycssjs": "Kemmañ ho CSS/JavaScript implijer",
+ "grant-editinterface": "Kemmañ esaouenn anvioù MediaWiki hag implijer CSS/JSON/JavaScript",
+ "grant-editmycssjs": "Kemmañ ho CSS/JSON/JavaScript implijer",
"grant-editmyoptions": "Kemmañ ho penndibaboù implijer.",
"grant-editmywatchlist": "Kemmañ ho roll evezhiañ",
"grant-editpage": "Kemmañ pajennoù a zo anezho c'hoazh",
"rcfilters-other-review-tools": "Ostilhoù reizhañ all",
"rcfilters-group-results-by-page": "Strollañ an disoc'hoù dre bajenn",
"rcfilters-activefilters": "Siloù oberiant",
+ "rcfilters-activefilters-hide": "Kuzhat",
+ "rcfilters-activefilters-show": "Diskouez",
"rcfilters-advancedfilters": "Siloù araokaet",
"rcfilters-limit-title": "Kemmoù da vezañ diskouezet",
"rcfilters-limit-and-date-label": "$1 {{PLURAL:$1|kemm|kemmoù}}, $2",
"rcfilters-hideminor-conflicts-typeofchange-global": "Tabut zo etre ar sil \"Kemmoù dister\" hag unan pe meur a sil a Seurt kemmoù peogwir n'haller merkañ kemmoù zo evel \"dister\". Kavet e vo ar siloù o tabutal e takad ar siloù gweredekaet, a-us.",
"rcfilters-hideminor-conflicts-typeofchange": "Seurtoù kemmoù zo n'hallont ket bezañ merket evel \"dister,\", rak se ez eus tabut etre ar sil-mañ ha siloù ar Seurtoù kemmoù da heul : $1",
"rcfilters-typeofchange-conflicts-hideminor": "Tabut zo etre ar sil-mañ Seurt kemmoù gant sil ar \"c'hemmoù dister\". Kemmoù zo n'hallont ket bezañ merket evel \"dister\".",
- "rcfilters-filtergroup-lastRevision": "Stumm diwezhañ",
- "rcfilters-filter-lastrevision-label": "Stumm diwezhañ",
+ "rcfilters-filtergroup-lastRevision": "Stumm a-vremañ pe stumm red",
+ "rcfilters-filter-lastrevision-label": "Stumm a-vremañ pe stumm red",
"rcfilters-filter-lastrevision-description": "Kemm diwezhañ graet ouzh ur bajenn.",
"rcfilters-filter-previousrevision-label": "Stummoù koshoc'h",
"rcfilters-filter-previousrevision-description": "An holl gemmoù nemet ar c'hemm diwezhañ graet ouzh ur bajenn.",
+ "rcfilters-filter-excluded": "Skarzhet",
+ "rcfilters-tag-prefix-namespace-inverted": "<strong>:not</strong> $1",
+ "rcfilters-exclude-button-off": "Skarzhañ ar re dibabet",
+ "rcfilters-exclude-button-on": "Re dibabet skarzhet",
+ "rcfilters-filter-showlinkedfrom-label": "Diskouez ar c'hemmoù war ar bajennoù liammet",
"rcfilters-filter-showlinkedto-label": "Diskouez ar c'hemmoù war ar bajennoù liammet",
"rcfilters-target-page-placeholder": "Skrivañ anv ar bajenn (pe rummad)",
"rcnotefrom": "Setu aze {{PLURAL:$5|ar c'hemm|ar c'hemmoù}} c'hoarvezet abaoe an <strong>$3, $4</strong> (<strong>$1</strong> d'ar muiañ).",
"uploadstash-refresh": "Freskaat roll ar restroù",
"uploadstash-thumbnail": "gwelet ar munud",
"uploadstash-exception": "Dibosupl stokañ an enporzhiadenn er sanailh ($1) : \"$2\".",
+ "uploadstash-bad-path-unknown-type": "Obererezh dianav \"$1\".",
+ "uploadstash-zero-length": "Ment ar restr a zo mann",
"invalid-chunk-offset": "Direizh eo offset ar rannad",
"img-auth-accessdenied": "Moned nac'het",
"img-auth-nopathinfo": "Mankout a ra ar PATH_INFO.\nN'eo ket kefluniet ho servijer evit reiñ an titour-mañ.\nMarteze eo diazezet war CGI ha n'hall ket skorañ img_auth.\nGwelet https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization",
"pageswithprop-legend": "Pajennoù gant ur perzh pajenn",
"pageswithprop-text": "Rollañ a ra ar bajenn-mañ ar pajennoù a ra gant ur perzh pajenn dibar",
"pageswithprop-prop": "Anv ar perzh :",
+ "pageswithprop-reverse": "Renkañ en urzh enep",
"pageswithprop-submit": "Mont",
"pageswithprop-prophidden-long": "talvoud perzh testenn hir kuzhet ($1)",
"pageswithprop-prophidden-binary": "Talvoud perzh binarel kuzhet ($1)",
"version-specialpages": "Pajennoù dibar",
"version-parserhooks": "Astennoù an dielfenner",
"version-variables": "Argemmennoù",
+ "version-editors": "Embannerien",
"version-antispam": "Mirout ouzh ar strob",
"version-other": "Diseurt",
"version-mediahandlers": "Merer danvez liesvedia",
"compare-revision-not-exists": "N'eus ket eus an adweladenn spisaet ganeoc'h.",
"diff-form": "ur '''furmskrid'''",
"permanentlink": "Peurliamm",
+ "permanentlink-submit": "Lammañ d'ar c'hemm",
"dberr-problems": "Ho tigarez ! Kudennoù teknikel zo gant al lec'hienn-mañ.",
"dberr-again": "Gortozit un nebeud munutennoù a-raok adkargañ.",
"dberr-info": "(Dibosupl kevreañ ouzh an diaz roadennoù : $1)",
"restrictionsfield-badip": "Chomlec'h IP pe lijorenn direizh : $1",
"restrictionsfield-label": "Lijorennoù IP aotreet :",
"restrictionsfield-help": "Ur chomlec'h IP pe un esaouenn CIDR dre linenn. Evit gweredekaat pep tra, ober gant <pre>0.0.0.0/0\n::/0</pre>",
+ "edit-error-short": "Fazi : $1",
+ "edit-error-long": "Fazi:\n\n\n$1",
"revid": "Adweladenn $1",
"pageid": "ID ar bajenn $1",
"rawhtml-notallowed": "N'hall an tikedennoù <html> bezañ implijet nemet er pajennoù normal.",
"pagedata-title": "Roadennoù ar bajenn",
"pagedata-bad-title": "Titl direizh : $1.",
"passwordpolicies-group": "Strollad",
- "passwordpolicies-policies": "Politikerezh"
+ "passwordpolicies-policies": "Politikerezh",
+ "passwordpolicies-policy-passwordcannotmatchusername": "Ar ger-kuzh ne c'hell ket bezañ an anv implijer"
}
"Сербијана",
"Asmen",
"Obsuser",
- "Fitoschido"
+ "Fitoschido",
+ "BadDog"
]
},
"tog-underline": "Podvlačenje linkova:",
"allmessagesname": "Naziv",
"allmessagesdefault": "Predodređeni tekst",
"allmessagescurrent": "Trenutni tekst",
- "allmessagestext": "Ovo je spisak svih sistemskih poruka u dostupnih u imenskom prostoru MediaWiki.\nPosjetite [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation lokalizaciju MediaWikija] i [https://translatewiki.net translatewiki.net] ako želite doprinijeti općoj lokalizaciji MediaWikija.",
+ "allmessagestext": "Ovo je spisak sistemskih poruka u dostupnih u imenskom prostoru MediaWiki.\nPosjetite [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation lokalizaciju MediaWikija] i [https://translatewiki.net translatewiki.net] ako želite doprinijeti općoj lokalizaciji MediaWikija.",
"allmessagesnotsupportedDB": "Ova stranica ne može biti korištena jer je <i>wgUseDatabaseMessages</i> isključen.",
"allmessages-filter-legend": "Filter",
"allmessages-filter": "Filter po stanju podešavanja:",
"tooltip-pt-createaccount": "Ohrabrujemo vas da otvorite nalog i prijavite se, međutim to nije obavezno",
"tooltip-ca-talk": "Razgovor o sadržaju",
"tooltip-ca-edit": "Uredi ovu stranicu",
- "tooltip-ca-addsection": "Započnite novu sekciju.",
+ "tooltip-ca-addsection": "Započni novu sekciju.",
"tooltip-ca-viewsource": "Ova stranica je zaštićena.\nMožete joj vidjeti izvorni kôd",
"tooltip-ca-history": "Prethodne verzije ove stranice.",
"tooltip-ca-protect": "Zaštitite stranicu od budućih izmjena",
"Xð",
"Abella",
"Pierpao",
- "Amire80"
+ "Amire80",
+ "Leptictidium"
]
},
"tog-underline": "Subratlla els enllaços:",
"move-page": "Reanomena $1",
"move-page-legend": "Reanomena la pàgina",
"movepagetext": "Amb el formulari següent reanomenareu una pàgina, movent tot el seu historial al nou nom.\nEl títol anterior es convertirà en una pàgina de redirecció al nou títol.\nPodeu actualitzar automàticament les redireccions que apuntin al títol original.\nSi no ho feu, assegureu-vos de verificar les redireccions [[Special:DoubleRedirects|dobles]] o [[Special:BrokenRedirects|trencades]].\nSerà de la vostra responsabilitat verificar que els enllaços segueixin apuntant cap a on se suposa que ho han de fer.\n\nTingueu en compte que la pàgina <strong>no</strong> serà traslladada si ja existeix una pàgina amb el títol nou, tret que sigui una redirecció sense més historial.\nAixò significa que podeu reanomenar de nou una pàgina al seu títol original si cometeu un error, i que no podeu sobreescriure una pàgina existent.\n\n<strong>Nota:</strong>\nAçò pot ser un canvi dràstic i inesperat en una pàgina que sigui popular; \nassegureu-vos d'entendre les conseqüències que comporta abans de seguir endavant.",
- "movepagetext-noredirectfixer": "Amb el formulari següent podeu reanomenar una pàgina movent tot el seu historial al nom nou.\nEl títol anterior es convertirà en una pàgina de redirecció al nou títol. \nAssegureu-vos de verificar les redireccions [[Special:DoubleRedirects|dobles]] o [[Special:BrokenRedirects|trencades]].\nÉs responsabilitat vostra assegurar que els enllaços continuen apuntant cap a on se suposa que han d'anar. \n\nTingueu en compte que la pàgina <strong>no</strong> serà traslladada si ja existeix una pàgina amb el títol nou, tret que sigui una redirecció i no tingui més historial. \nAixò significa que podeu reanomenar de nou una pàgina al seu títol original si cometeu un error, i que no podeu sobreescriure una pàgina existent.\n \n<strong>Nota:</strong>\nAixò pot ser un canvi dràstic i inesperat per una pàgina popular; \nassegureu-vos que sabeu el que feu abans de continuar.",
+ "movepagetext-noredirectfixer": "El formulari següent permet reanomenar una pàgina movent-ne tot l'historial al nom nou.\nEl títol anterior es convertirà en una pàgina de redirecció al nou títol. \nAssegureu-vos de verificar les redireccions [[Special:DoubleRedirects|dobles]] o [[Special:BrokenRedirects|trencades]].\nÉs responsabilitat vostra que els enllaços continuïn apuntant cap on se suposa que han d'anar. \n\nTingueu en compte que la pàgina <strong>no</strong> serà traslladada si ja existeix una pàgina amb el títol nou, tret que sigui una redirecció i no tingui més historial. \nAixò significa que podeu reanomenar de nou una pàgina al seu títol original si cometeu un error, i que no podeu sobreescriure una pàgina existent.\n \n<strong>Nota:</strong>\nAixò pot ser un canvi dràstic i inesperat per a una pàgina popular; \nassegureu-vos que sabeu el que feu abans de continuar.",
"movepagetalktext": "Si marqueu aquesta casella, la pàgina de discussió associada també serà traslladada automàticament al nou títol, tret que ja existeixi allà una pàgina de discussió no buida.\n\nEn aquest cas, haureu de traslladar o fusionar la pàgina manualment si ho desitgeu.",
"moveuserpage-warning": "'''Atenció:''' Esteu a punt de moure una pàgina d'usuari. Tingueu en compte que només la pàgina es desplaçarà i que el compte d'usuari ''no'' canviarà de nom.",
"movecategorypage-warning": "<strong>Avís:</strong> Esteu a punt de moure una pàgina de categoria. Tingueu en compte que només es mourà aquesta pàgina, i que les pàgines dins la categoria antiga <em>no</em> es recategoritzaran automàticament en la nova.",
"converter-manual-rule-error": "Detekována chyba v pravidlech manuální jazykové konverze",
"undo-success": "Editace může být zrušena. Zkontrolujte a pak potvrďte změny zobrazené níže.",
"undo-failure": "Editace nemohla být zrušena kvůli konfliktu mezilehlých editací.",
+ "undo-main-slot-only": "Editace nemohla být zrušena, protože zapojuje obsah mimo hlavní sloupec",
"undo-norev": "Tuto editaci není možné vrátit, protože neexistuje nebo byla smazána.",
"undo-nochange": "Zdá se, že editace již byla zrušena.",
"undo-summary": "Zrušena verze $1 od uživatele [[Special:Contributions/$2|$2]] ([[User talk:$2|diskuse]])",
"rcfilters-filter-reviewstatus-unpatrolled-label": "Neprověřené",
"rcfilters-filter-reviewstatus-manual-description": "Editace ručně označené jako prověřené.",
"rcfilters-filter-reviewstatus-manual-label": "Ručně prověřené",
- "rcfilters-filter-reviewstatus-auto-description": "Editace pokročilých uživatelů, jejichž práce je autoamticky označena jako prověřená.",
+ "rcfilters-filter-reviewstatus-auto-description": "Editace pokročilých uživatelů, jejichž práce je automaticky označena jako prověřená.",
"rcfilters-filter-reviewstatus-auto-label": "Automaticky prověřené",
"rcfilters-filtergroup-significance": "Důležitost",
"rcfilters-filter-minor-label": "Malé editace",
"revid": "revize $1",
"pageid": "Stránka s ID $1",
"rawhtml-notallowed": "Značky <html> nelze používat mimo běžné stránky.",
- "gotointerwiki": "Opustit {{GENDER:4sg|{{SITENAME}}}}",
+ "gotointerwiki": "Opustit {{GRAMMAR:4sg|{{SITENAME}}}}",
"gotointerwiki-invalid": "Zadaný název je neplatný.",
"gotointerwiki-external": "Chystáte se opustit {{GRAMMAR:4sg|{{SITENAME}}}} a navštívit [[$2]], což je jiná webová stránka.\n\n'''[$1 Pokračovat na $1].'''",
"undelete-cantedit": "Tuto stránku nemůžete obnovit, protože ji nejste oprávněni editovat.",
"tog-watchlisthideminor": "Cuddio golygiadau bychain rhag y rhestr wylio",
"tog-watchlisthideliu": "Cuddio golygiadau gan ddefnyddwyr mewngofnodedig rhag y rhestr wylio",
"tog-watchlistreloadautomatically": "Ail-lwyther y Rhestr wylio yn otomatigpan newider ffiltr (angen JavaScript)",
- "tog-watchlistunwatchlinks": "Ychwanegwch ddolenau 'gwylio/heb eu gwylio' i'r cofnodion rydych yn eu gwylio (angen JavaScript)",
+ "tog-watchlistunwatchlinks": "Ychwanegwch farciau gweld/heb weld ({{int:Watchlist-unwatch}}/{{int:Watchlist-unwatch-undo}}) ar ddalennau rydych yn eu wgylio - gyda newidiadau (angen JavaScript)",
"tog-watchlisthideanons": "Cuddio golygiadau gan ddefnyddwyr anhysbys rhag y rhestr wylio",
"tog-watchlisthidepatrolled": "Cuddio golygiadau sydd wedi derbyn ymweliad patrôl rhag y rhestr wylio",
"tog-watchlisthidecategorization": "Cuddiwch y categoriau",
"resetpass-submit-loggedin": "Newidier y cyfrinair",
"resetpass-submit-cancel": "Diddymu",
"resetpass-wrong-oldpass": "Mae'r cyfrinair dros dro neu gyfredol yn annilys.\nEfallai eich bod wedi newid eich cyfrinair neu wedi gofyn am gyfrinair dros dro newydd.",
- "resetpass-recycled": "Ailosodwch eich cyfrinair os gwelwch yn dda i rywbeth heblaw eich cyfrinair cyfredol.",
+ "resetpass-recycled": "Ailosodwch eich cyfrinair i rywbeth heblaw eich cyfrinair cyfredol.",
"resetpass-temp-emailed": "Rydych wedi mewngofnodi gyda chod dros dro. I gwbwlhau hyn, mae'n rhaid i chi ailosod eich cyfrinair yma:",
"resetpass-temp-password": "Cyfrinair dros dro:",
"resetpass-abort-generic": "Mae estyniad wedi atal newid y cyfrinair.",
"resetpass-expired": "Mae oes eich cyfrinair wedi dod i ben. Gosodwch gyfrinair newydd i fewngofnodi.",
- "resetpass-expired-soft": "Mae eich cyfrinair wedi dod i ben ac mae'n rhaid ei ailosod. Dewisiwch gyfrinair newydd sbon nawr, neu cliciwch \"{{int:authprovider-resetpass-skip-label}}\" a'i ailosod rywdro eto.",
- "resetpass-validity-soft": "Nid yw eich cyfrinair $1 yn dal ddilys.\n\nDewisiwch gyfrinair newydd nawr, neu gliciwch \"{{int:authprovider-resetpass-skip-label}}\" i'w ailosod yn nes ymlaen.",
+ "resetpass-expired-soft": "Mae eich cyfrinair wedi dod i ben ac mae'n rhaid ei ailosod. Dewisiwch gyfrinair newydd sbon nawr, neu gliciwch \"{{int:authprovider-resetpass-skip-label}}\" i'w ailosod rywdro eto.",
+ "resetpass-validity-soft": "Nid yw eich cyfrinair $1 yn ddilys.\n\nDewisiwch gyfrinair newydd nawr, neu gliciwch \"{{int:authprovider-resetpass-skip-label}}\" i'w ailosod.",
"passwordreset": "Ailosod cyfrinair",
"passwordreset-text-one": "Cwblhewch y ffurflen hon er mwyn ailosod eich cyfrinair.",
"passwordreset-text-many": "{{PLURAL:$1|Llanwch un o'r blychau er mwyn derbyn cyfrinair dros dro mewn ebost.}}",
"savechanges": "Cadw'r holl newidiadau",
"publishpage": "Cyhoeddi tudalen",
"publishchanges": "Cyhoeddi newidiadau",
+ "savearticle-start": "Cadw'r ddalen...",
+ "savechanges-start": "Cadw'r newidiadau...",
+ "publishpage-start": "Cyhoeddi'r ddalen...",
+ "publishchanges-start": "Cyhoeddi'r newidiadau...",
"preview": "Rhagolwg",
"showpreview": "Dangos rhagolwg",
"showdiff": "Dangos newidiadau",
"subject-preview": "Rhagolwg pwnc:",
"previewerrortext": "Cafwyd nam tra'n ceisio creu rhagolwg o'r newidiadau.",
"blockedtitle": "Mae'r defnyddiwr hwn wedi cael ei flocio",
- "blockedtext": "'''Mae eich enw defnyddiwr neu gyfeiriad IP wedi cael ei flocio.'''\n\n$1 a osododd y bloc.\nY rheswm a roddwyd dros y blocio yw: ''$2''.\n\n*Dechreuodd y bloc am: $8\n*Bydd y bloc yn dod i ben am: $6\n*Bwriadwyd blocio: $7\n\nGallwch gysylltu â $1 neu un arall o'r [[{{MediaWiki:Grouppage-sysop}}|gweinyddwyr]] i drafod y bloc.\nSylwch mai dim ond y rhai sydd wedi gosod cyfeiriad e-bost yn eu [[Special:Preferences|dewisiadau defnyddiwr]], a hwnnw heb ei flocio, sydd yn gallu 'anfon e-bost at ddefnyddiwr' trwy'r wici.\n$3 yw eich cyfeiriad IP presennol. Cyfeirnod y bloc yw #$5.\nPan yn ysgrifennu at weinyddwr, cofiwch gynnwys yr holl fanylion uchod, os gwelwch yn dda.",
- "autoblockedtext": "Rhoddwyd bloc yn awtomatig ar eich cyfeiriad IP oherwydd iddo gael ei ddefnyddio gan ddefnyddiwr arall, a bod bloc wedi ei roi ar hwnnw gan $1.\nY rheswm a roddwyd dros y bloc oedd:\n\n:''$2''\n\n*Dechreuodd y bloc am: $8\n*Daw'r bloc i ben am: $6\n*Bwriadwyd blocio: $7\n\nGallwch gysylltu â $1 neu un arall o'r [[{{MediaWiki:Grouppage-sysop}}|gweinyddwyr]] i drafod y bloc.\n\nSylwch mai dim ond y rhai sydd wedi gosod cyfeiriad e-bost yn eu [[Special:Preferences|dewisiadau defnyddiwr]], a hwnnw heb ei flocio, sydd yn gallu 'anfon e-bost at ddefnyddiwr' trwy'r wici.\n\nEich cyfeiriad IP presennol yw $3. Cyfeirnod y bloc yw $5. Nodwch y manylion hyn wrth drafod y bloc.",
+ "blockedtext": "Mae eich enw defnyddiwr neu gyfeiriad IP wedi cael ei flocio.</strong>\n\n$1 a osododd y bloc.\nY rheswm a roddwyd dros y blocio yw: <em>$2</em>.\n\n*Dechreuodd y bloc am: $8\n*Bydd y bloc yn dod i ben am: $6\n*Defnyddiwr a flociwyd: $7\n\nGallwch gysylltu â $1 neu un arall o'r [[{{MediaWiki:Grouppage-sysop}}|gweinyddwyr]] i drafod y bloc.\nSylwch mai dim ond y rhai sydd wedi gosod cyfeiriad e-bost yn eu [[Special:Preferences|dewisiadau defnyddiwr]], a hwnnw heb ei flocio, sy'n gallu 'anfon e-bost at ddefnyddiwr' trwy'r wici.\n$3 yw eich cyfeiriad IP presennol. Cyfeirnod y bloc yw #$5.\nPan yn ysgrifennu at weinyddwr, cofiwch gynnwys yr holl fanylion uchod, os gwelwch yn dda.",
+ "autoblockedtext": "Rhoddwyd bloc yn awtomatig ar eich cyfeiriad IP oherwydd iddo gael ei ddefnyddio gan ddefnyddiwr arall, a bod bloc wedi ei roi ar hwnnw gan $1.\nY rheswm a roddwyd dros y bloc oedd:\n\n:<em>$2</em>\n\n*Dechreuodd y bloc am: $8\n*Daw'r bloc i ben am: $6\n*Bwriadwyd blocio: $7\n\nGallwch gysylltu â $1 neu un arall o'r [[{{MediaWiki:Grouppage-sysop}}|gweinyddwyr]] i drafod y bloc.\n\nSylwch mai dim ond y rhai sydd wedi gosod cyfeiriad e-bost yn eu [[Special:Preferences|dewisiadau defnyddiwr]], a hwnnw heb ei flocio, sydd yn gallu 'anfon e-bost at ddefnyddiwr' trwy'r wici.\n\nEich cyfeiriad IP presennol yw $3. Cyfeirnod y bloc yw $5. Nodwch y manylion hyn wrth drafod y bloc.",
+ "systemblockedtext": "Mae eich enw defnyddiwr neu eich cyfeiriad IP wedi'i flocio gan MediaWiki.\nY rheswm yw:\n\n:<em>$2</em>\n\n* Dechrau'r bloc: $8\n* Daw'r bloc i ben: $6\n* Y person a geisiwyd ei flocio: $7\n\nEich cyfeiriad IP presennol yw $3.\nPan yn ysgrifennu at weinyddwr, cofiwch gynnwys yr holl fanylion uchod, os gwelwch yn dda.",
"blockednoreason": "dim rheswm wedi ei roi",
"whitelistedittext": "Rhaid $1 i olygu tudalennau.",
"confirmedittext": "Mae'n rhaid i chi gadarnhau eich cyfeiriad e-bost cyn y gallwch ddechrau golygu tudalennau.\nGosodwch eich cyfeiriad e-bost drwy eich [[Special:Preferences|dewisiadau defnyddiwr]] ac yna'i gadarnhau, os gwelwch yn dda.",
"userjspreview": "'''Cofiwch -- dim ond rhagolwg o'ch JavaScript yw hwn; nid yw wedi'i gadw eto!'''",
"sitecsspreview": "'''Cofiwch - dim ond rhagolwg o'ch CSS yw hwn.'''\n'''Nid yw wedi'i gadw eto!'''",
"sitejspreview": "'''Cofiwch - dim ond rhagolwg o'ch côd JavaScript yw hwn.'''\n'''Nid yw wedi'i rhoi ar gadw eto!'''",
- "userinvalidconfigtitle": "'''Rhybudd:''' Nid oes gwedd o'r enw \"$1\".\nCofiwch bod y tudalennau .css a .js yn defnyddio llythrennau bach, e.e. {{ns:user}}:Foo/vector.css yn hytrach na {{ns:user}}:Foo/Vector.css.",
+ "userinvalidconfigtitle": "<strong>Rhybudd:</strong> Nid oes gwedd o'r enw \"$1\".\nCofiwch bod y tudalennau .css a .js yn defnyddio llythrennau bach, e.e. {{ns:user}}:Foo/vector.css yn hytrach na {{ns:user}}:Foo/Vector.css.",
"updated": "(Diweddariad)",
"note": "'''Dalier sylw:'''",
"previewnote": "'''Cofiwch taw rhagolwg yw hwn.''' Nid yw eich gwaith wedi ei roi ar gadw eto!",
"longpageerror": "'''GWALL: Mae'r testun yr ydych wedi ei osod yma yn {{PLURAL:$1|$1 cilobeit}} o hyd, ac yn hwy na'r hyd eithaf o {{PLURAL:$2|$2}} cilobeit.\nNi ellir ei roi ar gadw.'''",
"readonlywarning": "<strong>Rhybudd: Mae'r gronfa ddata wedi'i chloi am gyfnod er mwyn cynnal a chadw, felly fyddwch chi ddim yn gallu cadw'ch golygiadau ar hyn o bryd.</strong>\nGallwch gopïo'r testun a'i gludo i ffeil destun er mwyn ei gadw tan yn hwyrach.\n\nCynigiodd y gweinyddwr a glodd y gronfa ddata y rheswm hwn dros ei chloi: $1",
"protectedpagewarning": "'''RHYBUDD: Mae'r dudalen hon wedi'i diogelu. Dim ond gweinyddwyr sydd yn gallu ei golygu.'''\nDyma'r cofnod lòg diweddaraf, er gwybodaeth:",
- "semiprotectedpagewarning": "'''Sylwer:''' Mae'r dudalen hon wedi ei chloi; dim ond defnyddwyr cofrestredig a allant ei golygu.\nDyma'r cofnod lòg diweddaraf, er gwybodaeth:",
- "cascadeprotectedwarning": "<strong>Gofal:</strong> Mae'r ddalen hon wedi ei chloi fel mai dim ond defnyddwyr â [[Special:ListGroupRights|hawliau arbennig]] all olygu, gan fod y ddalen yn cael ei dynnu i fewn i'r dalennau canlynol:",
+ "semiprotectedpagewarning": "<strong>Sylwer:</strong> Mae'r ddalen hon wedi ei chloi; dim ond defnyddwyr cofrestredig a allant ei golygu.\nDyma'r cofnod lòg diweddaraf, er gwybodaeth:",
+ "cascadeprotectedwarning": "<strong>Gofal:</strong> Mae'r ddalen hon wedi ei chloi fel mai dim ond defnyddwyr â [[Special:ListGroupRights|hawliau arbennig]] all olygu, gan fod y ddalen yn cael ei dynnu i fewn i'r {{PLURAL:$1|ddalen|dalennau}} canlynol:",
"titleprotectedwarning": "'''RHYBUDD: Mae'r dudalen hon wedi ei chloi; dim ond rhai defnyddwyr sydd â'r [[Special:ListGroupRights|gallu]] i'w chreu.'''\nDyma'r cofnod lòg diweddaraf, er gwybodaeth:",
"templatesused": "Defnyddir y {{PLURAL:$1|nodyn hwn|nodyn hwn|nodiadau hyn|nodiadau hyn|nodiadau hyn|nodiadau hyn}} yn y dudalen hon:",
"templatesusedpreview": "Defnyddir y {{PLURAL:$1|nodyn hwn|nodyn hwn|nodiadau hyn|nodiadau hyn|nodiadau hyn|nodiadau hyn}} yn y rhagolwg hwn:",
"prefs-help-email": "Die Angabe einer E-Mail-Adresse ist optional, ermöglicht aber die Zusendung eines Ersatzpasswortes, sofern Sie Ihr Passwort vergessen haben.",
"prefs-help-email-others": "Mit anderen Benutzern können Sie auch über die Benutzerdiskussionsseiten Kontakt aufnehmen, ohne dass Sie Ihre Identität offenlegen müssen.",
"prefs-help-prefershttps": "Diese Einstellung wird bei Ihrer nächsten Anmeldung wirksam.",
- "userrights-groups-help": "Sie können die Gruppenzugehörigkeit dieses Benutzers ändern:\n* Ein markiertes Kästchen bedeutet, dass der Benutzer Mitglied dieser Gruppe ist.\n* Ein nichtmarkiertes Kästchen bedeutet, dass der Benutzer nicht Mitglied dieser Gruppe ist.\n* Ein * bedeutet, dass Sie das Benutzerrecht nach Erteilung nicht wieder zurücknehmen können (oder umgekehrt).",
+ "userrights-groups-help": "Sie können die Gruppenzugehörigkeit {{GENDER:$1|dieses Benutzers|dieser Benutzerin}} ändern:\n* Ein markiertes Kästchen bedeutet, dass {{GENDER:$1|der Benutzer|die Benutzerin}} Mitglied dieser Gruppe ist.\n* Ein nicht markiertes Kästchen bedeutet, dass {{GENDER:$1|der Benutzer|die Benutzerin}} nicht dieser Gruppe angehört.\n* Ein * bedeutet, dass Sie das Benutzerrecht nach Erteilung nicht wieder zurücknehmen können, oder umgekehrt.\n* Ein # bedeutet, dass Sie den Zeitpunkt des Ablaufs dieser Gruppenzugehörigkeit nur nach hinten verlegen können. Sie können ihn nicht vorverlegen.",
"userrights-no-interwiki": "Sie haben nicht die erforderliche Berechtigung, um Benutzerrechte in anderen Wikis ändern zu können.",
"userrights-changeable-col": "Gruppenzugehörigkeit, die Sie ändern dürfen",
"userrights-unchangeable-col": "Gruppenzugehörigkeit, die Sie nicht ändern dürfen",
"converter-manual-rule-error": "Bei der manuellen Sprachkonvertierungsregel wurde ein Fehler entdeckt.",
"undo-success": "Die Bearbeitung kann rückgängig gemacht werden.\nBitte prüfe den Vergleich unten, um sicherzustellen, dass du dies tun möchtest, und speichere dann unten deine Änderungen, um die Bearbeitung rückgängig zu machen.",
"undo-failure": "Die Änderung konnte nicht rückgängig gemacht werden, da der betroffene Abschnitt zwischenzeitlich verändert wurde.",
+ "undo-main-slot-only": "Die Bearbeitung konnte nicht rückgängig gemacht werden, da sie Inhalte außerhalb der Hauptspalte enthält.",
"undo-norev": "Die Bearbeitung konnte nicht rückgängig gemacht werden, da sie nicht vorhanden ist oder gelöscht wurde.",
"undo-nochange": "Anscheinend wurde diese Bearbeitung bereits rückgängig gemacht.",
"undo-summary": "Änderung $1 von [[Special:Contributions/$2|$2]] ([[User talk:$2|Diskussion]]) rückgängig gemacht.",
"userrights-groupsmember": "Mitglied von:",
"userrights-groupsmember-auto": "Automatisch Mitglied von:",
"userrights-groupsmember-type": "$2",
- "userrights-groups-help": "Du kannst die Gruppenzugehörigkeit {{GENDER:$1|dieses Benutzers|dieser Benutzerin}} ändern:\n* Ein markiertes Kästchen bedeutet, dass {{GENDER:$1|der Benutzer|die Benutzerin}} Mitglied dieser Gruppe ist.\n* Ein nicht markiertes Kästchen bedeutet, dass {{GENDER:$1|der Benutzer|die Benutzerin}} nicht Mitglied dieser Gruppe ist.\n* Ein * bedeutet, dass du das Benutzerrecht nach Erteilung nicht wieder zurücknehmen kannst (oder umgekehrt).\n* Ein # bedeutet, dass du den Zeitpunkt des Ablaufs dieser Gruppenmitgliedschaft nur nach hinten verschieben kannst. Du kannst ihn nicht vorverlegen.",
+ "userrights-groups-help": "Du kannst die Gruppenzugehörigkeit {{GENDER:$1|dieses Benutzers|dieser Benutzerin}} ändern:\n* Ein markiertes Kästchen bedeutet, dass {{GENDER:$1|der Benutzer|die Benutzerin}} Mitglied dieser Gruppe ist.\n* Ein nicht markiertes Kästchen bedeutet, dass {{GENDER:$1|der Benutzer|die Benutzerin}} nicht dieser Gruppe angehört.\n* Ein * bedeutet, dass du das Benutzerrecht nach Erteilung nicht wieder zurücknehmen kannst, oder umgekehrt.\n* Ein # bedeutet, dass du den Zeitpunkt des Ablaufs dieser Gruppenzugehörigkeit nur nach hinten verlegen kannst. Du kannst ihn nicht vorverlegen.",
"userrights-reason": "Grund:",
"userrights-no-interwiki": "Du hast nicht die erforderliche Berechtigung, um Benutzerrechte in anderen Wikis ändern zu können.",
"userrights-nodatabase": "Die Datenbank $1 ist nicht vorhanden oder nicht lokal.",
"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",
"converter-manual-rule-error": "Error detected in manual language conversion rule",
"undo-success": "The edit can be undone.\nPlease check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.",
"undo-failure": "The edit could not be undone due to conflicting intermediate edits.",
+ "undo-main-slot-only": "The edit could not be undone because it involves content outside the main slot.",
"undo-norev": "The edit could not be undone because it does not exist or was deleted.",
"undo-nochange": "The edit appears to have already been undone.",
"undo-summary": "Undo revision $1 by [[Special:Contributions/$2|$2]] ([[User talk:$2|talk]])",
"expansion-depth-exceeded-category": "Páginas que sobrepasan la profundidad de expansión",
"expansion-depth-exceeded-category-desc": "Esta página sobrepasa la profundidad de expansión máxima.",
"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)",
+ "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.",
"Mikel Ibaiba",
"MarcoAurelio",
"Iñaki LL",
- "Amaia"
+ "Amaia",
+ "Matěj Suchánek"
]
},
"tog-underline": "Azpimarratu loturak:",
"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",
"dellogpage": "Ezabaketa erregistroa",
"dellogpagetext": "Behean ageri da azken ezabaketen zerrenda.",
"deletionlog": "ezabaketa erregistroa",
+ "log-name-create": "Orri sorkuntzaren erregistroa",
+ "log-description-create": "Azpian, sortutako azken orrien zerrenda ageri da.",
"reverted": "Lehenagoko berrikuspen batera itzuli da",
"deletecomment": "Arrazoia:",
"deleteotherreason": "Arrazoi gehigarria:",
"logentry-move-move": "$1 {{GENDER:$2|wikilariak}} «$3» orria «$4» izenera aldatu du",
"logentry-move-move-noredirect": "$1 {{GENDER:$2|wikilariak}} «$3» orria «$4» izenera aldatu du, birzuzenketarik utzi gabe",
"logentry-move-move_redir": "$1 {{GENDER:$2|wikilariak}} «$3» orria «$4» izenera aldatu du, birzuzenketaren gainetik",
- "logentry-move-move_redir-noredirect": "$1 {{GENDER:wikilariak}} «$3» orria «$4» izenera aldatu du, birbideratze bat gainidatzita, birbideratzerik utzi gabe",
+ "logentry-move-move_redir-noredirect": "$1 {{GENDER:$2|wikilariak}} «$3» orria «$4» izenera aldatu du, birbideratze bat gainidatzita, birbideratzerik utzi gabe",
"logentry-patrol-patrol": "$1(e)k $3 orrialdearen $4 berrikuspena patruilatutzat {{GENDER:$2|markatu}} du",
"logentry-patrol-patrol-auto": "$1(e)k $3 orrialdearen $4 berrikuspena patruilatutzat {{GENDER:$2|markatu}} du",
"logentry-newusers-newusers": "$1 erabiltzaile kontua {{GENDER:$2|sortu da}}",
"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):",
"pagedata-title": "Orri data",
"pagedata-text": "Orrialde honek orrien interfaze datuak eskaintzen ditu. Eman orrialdearen izenburua URLan, azpiorri sintaxia erabiliz.\n*Edukiaren negoziazioa zure bezeroaren onarpen goiburuan oinarritzen erabiltzen da. Horrek esan nahi du orriaren datuak zure bezeroak nahiago duen formatuan emango direla.",
"pagedata-not-acceptable": "Bat egiten duen formaturik ez da aurkitu. Onartutako MIME motak: $1",
- "pagedata-bad-title": "Izenburu baliogabea: $1"
+ "pagedata-bad-title": "Izenburu baliogabea: $1",
+ "unregistered-user-config": "Segurtasun arrazoiengatik JavaScript, CSS eta JSON erabiltzaile azpiorriak ezin dira kargatu erregistratu gabeko erabiltzaileen orrietan.",
+ "passwordpolicies": "Pasahitzen inguruko politika",
+ "passwordpolicies-summary": "Hona wiki honetako erabiltzaile taldeentzako pasahitzen politikaren zerrenda.",
+ "passwordpolicies-group": "Taldea",
+ "passwordpolicies-policies": "Politikak",
+ "passwordpolicies-policy-minimalpasswordlength": "Pasahitzak gutxienez {{PLURAL:$1|kraktere $1eko|$1 karaktereko}} luzera izan behar du",
+ "passwordpolicies-policy-minimumpasswordlengthtologin": "Pasahitzak gutxienez {{PLURAL:$1|kraktere $1eko|$1 karaktereko}} luzera izan behar du saioa hasi ahal izateko",
+ "passwordpolicies-policy-passwordcannotmatchusername": "Pasahitza ezin da erabiltzaile izenaren berdina izan",
+ "passwordpolicies-policy-passwordcannotmatchblacklist": "Pasahitza ezin da zerrenda beltzean zehaztutakoren bat izan"
}
"rcfilters-other-review-tools": "Muut arviointityökalut",
"rcfilters-group-results-by-page": "Ryhmitä tulokset sivujen mukaan",
"rcfilters-activefilters": "Aktiiviset suodattimet",
+ "rcfilters-activefilters-hide": "Piilota",
+ "rcfilters-activefilters-show": "Näytä",
"rcfilters-advancedfilters": "Kehittyneet suodattimet",
"rcfilters-limit-title": "Näytettävät tulokset",
"rcfilters-limit-and-date-label": "$1 {{PLURAL:$1|muutos|muutosta}}, $2",
"rcfilters-empty-filter": "Ei aktiivisia suodattimia. Kaikki muutokset näytetään.",
"rcfilters-filterlist-title": "Suodattimet",
"rcfilters-filterlist-whatsthis": "Miten nämä toimivat?",
- "rcfilters-filterlist-feedbacklink": "Kerro mielipiteesi (uusista) suodattimista",
+ "rcfilters-filterlist-feedbacklink": "Kerro mielipiteesi näistä suodatintyökaluista",
"rcfilters-highlightbutton-title": "Korosta tulokset",
"rcfilters-highlightmenu-title": "Valitse väri",
"rcfilters-highlightmenu-help": "Valitse korostusväri tälle ominaisuudelle",
"dellogpage": "Poistoloki",
"dellogpagetext": "Alla on loki viimeisimmistä poistoista.",
"deletionlog": "poistoloki",
+ "logentry-create-create": "$1 {{GENDER:$2|loi}} sivun $3",
"reverted": "Palautettu aikaisempaan versioon",
"deletecomment": "Syy:",
"deleteotherreason": "Muu syy tai tarkennus:",
"password-login-forbidden": "L’utilisation de ce nom d’utilisateur ou de ce mot de passe a été interdite.",
"mailmypassword": "Réinitialiser le mot de passe",
"passwordremindertitle": "Nouveau mot de passe temporaire pour {{SITENAME}}",
- "passwordremindertext": "Quelqu’un (depuis l’adresse IP $1) a demandé un nouveau mot de\npasse pour {{SITENAME}} ($4). Un mot de passe temporaire pour l’utilisateur\n« $2 » a été créé et est « $3 ». Si cela était votre intention,\nvous devrez vous connecter et choisir un nouveau mot de passe.\nVotre mot de passe temporaire expirera dans $5 jour{{PLURAL:$5||s}}.\n\nSi vous n’êtes pas l’auteur de cette demande, ou si vous vous souvenez à présent de\nvotre mot de passe et ne souhaitez plus en changer, vous pouvez ignorer ce message\net continuer à utiliser votre ancien mot de passe.",
+ "passwordremindertext": "Quelqu’un (depuis l’adresse IP $1) a demandé un nouveau mot de\npasse pour {{SITENAME}} ($4). Un mot de passe temporaire pour l’utilisateur\n« $2 » a été créé et est « $3 ». Si cela était votre intention,\nvous devrez vous connecter et choisir un nouveau mot de passe.\nVotre mot de passe temporaire expirera dans $5 jour{{PLURAL:$5||s}}.\n\nSi vous n’êtes pas l’auteur de cette demande, ou si vous vous avez retrouvé votre mot de passe et ne souhaitez plus en changer, vous pouvez ignorer ce message\net continuer à utiliser votre ancien mot de passe.",
"noemail": "Aucune adresse de courriel n’a été enregistrée pour l’utilisat{{GENDER:$1|eur|rice}} « $1 ».",
"noemailcreate": "Vous devez fournir une adresse de courriel valide",
"passwordsent": "Un nouveau mot de passe a été envoyé à l’adresse de courriel de l’utilisat{{GENDER:$1|eur|rice}} « $1 ».\nVeuillez vous reconnecter après l’avoir reçu.",
"resetpass-submit-loggedin": "Changer de mot de passe",
"resetpass-submit-cancel": "Annuler",
"resetpass-wrong-oldpass": "Mot de passe actuel ou temporaire invalide.\nVous avez peut-être déjà changé votre mot de passe ou demandé un nouveau mot de passe temporaire.",
- "resetpass-recycled": "Veuillez modifier votre mot de passe à quelque chose d’autre que l’actuel.",
+ "resetpass-recycled": "Veuillez modifier votre mot de passe avec autre chose que l’actuel.",
"resetpass-temp-emailed": "Vous êtes connecté{{GENDER:||e}} avec un code temporaire fourni par courriel.\nPour terminer la connexion, vous devez fournir un nouveau mot de passe ici :",
"resetpass-temp-password": "Mot de passe temporaire :",
"resetpass-abort-generic": "La modification du mot de passe a été annulée par une extension.",
"converter-manual-rule-error": "Erreur détectée dans la règle manuelle de conversion de langue",
"undo-success": "Cette modification va être annulée.\nVeuillez vérifier les différences ci-dessous, puis publier l’annulation si c’est bien ce que vous voulez faire.",
"undo-failure": "Cette modification ne peut pas être défaite : cela entrerait en conflit avec les modifications intermédiaires.",
+ "undo-main-slot-only": "La modification n'a pas pu être annulée car elle implique un contenu en dehors de la tranche principale.",
"undo-norev": "La modification n’a pas pu être défaite parce qu’elle est inexistante ou qu’elle a été supprimée.",
"undo-nochange": "Il semblerait que la modification ait déjà été annulée.",
"undo-summary": "Annulation des modifications $1 de [[Special:Contributions/$2|$2]] ([[User talk:$2|discussion]])",
"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",
"whatlinkshere-title": "Pages qui pointent vers « $1 »",
"whatlinkshere-page": "Page :",
"linkshere": "Les pages ci-dessous contiennent un lien vers <strong>$2</strong> :",
- "nolinkshere": "Aucune page ne contient de lien vers <strong>$2</strong>.",
+ "nolinkshere": "Aucune page ne contient de liens vers <strong>$2</strong>.",
"nolinkshere-ns": "Aucune page ne contient de liens vers <strong>$2</strong> dans l'espace de noms choisi.",
"isredirect": "page de redirection",
"istemplate": "inclusion",
"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": "הסתרת עריכות של בוטים ברשימת המעקב",
"converter-manual-rule-error": "התגלתה שגיאה בכלל המרת שפה ידני",
"undo-success": "ניתן לבטל את העריכה.\nאנא {{GENDER:|בדוק|בדקי|בדקו}} את השוואת הגרסאות שלהלן כדי לוודא שזה אכן מה {{GENDER:|שאתה רוצה|שאת רוצה|שאתם רוצים}} לעשות, ולאחר מכן {{GENDER:|שמור|שמרי|שמרו}} את השינויים למטה כדי לסיים את ביטול העריכה.",
"undo-failure": "לא ניתן היה לבטל את העריכה עקב התנגשות עם עריכות מאוחרות יותר.",
+ "undo-main-slot-only": "לא ניתן היה לבטל את העריכה כיוון שהיא כוללת תוכן מחוץ למיקום הראשי.",
"undo-norev": "לא ניתן היה לבטל את העריכה כי היא אינה קיימת או כי היא נמחקה.",
"undo-nochange": "נראה שהעריכה כבר בוטלה.",
"undo-summary": "ביטול גרסה $1 של [[Special:Contributions/$2|$2]] ([[User talk:$2|שיחה]])",
"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": "כתובת הדוא\"ל שלך אושרה כעת.",
"Сербијана",
"Wumbolo",
"Fitoschido",
- "Hamster"
+ "Hamster",
+ "BadDog"
]
},
"tog-underline": "Podcrtavanje poveznica",
"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}}",
"allmessagesname": "Ime",
"allmessagesdefault": "Prvotni tekst",
"allmessagescurrent": "Trenutačni tekst",
- "allmessagestext": "Ovo je popis svih sistemskih poruka u imenskom prostoru MediaWiki. Molimo posjetite [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation lokalizaciju MediaWikija] i [https://translatewiki.net translatewiki.net] ako želite doprinijeti lokalizaciji MediaWiki softvera.",
+ "allmessagestext": "Ovo je popis sistemskih poruka u imenskom prostoru MediaWiki. Molimo posjetite [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation lokalizaciju MediaWikija] i [https://translatewiki.net translatewiki.net] ako želite doprinijeti lokalizaciji MediaWiki softvera.",
"allmessagesnotsupportedDB": "Ova stranica ne može biti korištena jer je isključen parametar '''$wgUseDatabaseMessages'''.",
"allmessages-filter-legend": "Filtriraj",
"allmessages-filter": "Filtriraj prema prilagođenom obliku:",
"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",
"gotointerwiki-invalid": "Navedeni naslov nije valjan.",
"gotointerwiki-external": "Napuštate projekt {{SITENAME}} da biste posjetili zasebno mrežno mjesto [[$2]].\n\n<strong>[$1 Nastavljate na $1]</strong>",
"pagedata-title": "Podatci o stranici",
- "pagedata-bad-title": "Naslov nije valjan: $1."
+ "pagedata-bad-title": "Naslov nije valjan: $1.",
+ "passwordpolicies": "Pravila za zaporke",
+ "passwordpolicies-summary": "Ovo je popis pravila za zaporke za suradničke grupe definirane na ovom wikiju.",
+ "passwordpolicies-policy-minimalpasswordlength": "Zaporka mora sadržavati najmanje {{PLURAL:$1|1 znak|$1 znaka|$1 znakova}}",
+ "passwordpolicies-policy-minimumpasswordlengthtologin": "Da biste se prijavili, zaporka mora sadržavati najmanje {{PLURAL:$1|1 znak|$1 znaka|$1 znakova}}",
+ "passwordpolicies-policy-passwordcannotmatchusername": "Zaporka ne može biti ista kao i suradničko ime",
+ "passwordpolicies-policy-passwordcannotmatchblacklist": "Zaporka se ne može podudarati sa zaporkama na crnoj listi",
+ "passwordpolicies-policy-maximalpasswordlength": "Zaporka mora biti kraća od {{PLURAL:$1|1 znaka|$1 znaka|$1 znakova}}"
}
"rcfilters-filter-minor-description": "Авторо зIамига да аьнна белгалдаь тоадаьраш.",
"rcfilters-filter-major-label": "ЛерттIа хувцамаш",
"rcfilters-filter-major-description": "Авторо зIамига да аьнна белгалдаьдоаца тоадаьраш.",
+ "rcfilters-filtergroup-watchlist": "Зема хьаязяьра чура оагӀонаш",
+ "rcfilters-filter-watchlist-watched-label": "Зема хьаязяьра чу",
+ "rcfilters-filter-watchlist-watched-description": "Хьа зема хьаязяьра чура оагӀонашта даь хувцамаш",
+ "rcfilters-filter-watchlist-watchednew-label": "Керда хувцамаш зема хьаязяьра чу",
+ "rcfilters-filter-watchlist-watchednew-description": "Хьа зема хьаязяьра чура оагӀонаш тӀа даь хьона хӀанзехьа бӀаргадайна доаца хувцамаш",
+ "rcfilters-filter-watchlist-notwatched-label": "Яц зема хьаязяьра чу",
+ "rcfilters-filter-watchlist-notwatched-description": "Ерригаш, Iа зем беш йола оагIонаш юкъерайоахаш.",
"rcfilters-filtergroup-changetype": "Хувцама тайпа",
"rcfilters-filter-pageedits-label": "ОагӀона тоадаьраш",
"rcfilters-filter-pageedits-description": "Чулоацами, дувцара оагIонаши, оагIаташи тоаяр",
"rcfilters-filter-lastrevision-description": "ОагIон тIа алхха тIехьара хинна хувцам.",
"rcfilters-filter-previousrevision-label": "ТIехьара йоаца эрш",
"rcfilters-filter-previousrevision-description": "«ТӀехьара эрш» мел доаца тоадаьраш.",
+ "rcfilters-view-tags": "Фосташ",
"rcfilters-liveupdates-button": "Ши-шегIа кердадувлийта",
"rcfilters-liveupdates-button-title-on": "ДIадоаде ши-шегIа кердадалар",
"rcfilters-liveupdates-button-title-off": "Керда хувцам бешше хьахьокха",
"nbytes": "$1 {{PLURAL:$1|байт}}",
"nmembers": "$1 {{PLURAL:$1|объект}}",
"prefixindex": "ОагӀонаш шоай цӀерий хьалхарча алапах хьахокхар",
- "prefixindex-namespace": "ОагӀоний цӀераш шоай дешхьалхех хьахьокхар (цIерий моттиг «{{ns:$1}}»)",
+ "prefixindex-namespace": "ОагӀоний цӀераш шоай дешхьалхех хьахьокхар (цӀерий моттиг «{{ns:$1}}»)",
"prefixindex-submit": "Хьахьокха",
"prefixindex-strip": "ДIакъайлаяха хьелехача оагIоний дешхьалхенаш (префиксаш)",
"shortpages": "Лоаца оагIонаш",
"movepagebtn": "ОагIон цIи хувца",
"pagemovedsub": "ОагӀонах керда цӀи тиллай",
"movepage-moved": "'''«$1» яхача оагӀонах «$2» яха цӀи тиллай'''",
+ "movepage-moved-redirect": "Хьакхеллад дIа-юхаластар",
"articleexists": "Иззамо цӀи йола оагӀув тхьовре йолаш я е оаш тилла цӀи мегаш яц.\nДехар да, кхыйола цӀи харжа.",
"movetalk": "Дувца оттадара оагӀон а хувца цӀи",
"movelogpage": "ЦӀераш хувцара тептар",
"importlogpage": "Импорта тептар",
"tooltip-pt-userpage": "{{GENDER:|Хьа}} доакъашхочун оагIув",
"tooltip-pt-mytalk": "{{GENDER:|Хьа}} дувца оттадара оагIув",
+ "tooltip-pt-anontalk": "Шун IP-цIайна лаьрхIа дувцара оагӀув",
"tooltip-pt-preferences": "{{GENDER:|Хьа оттамаш}}",
"tooltip-pt-watchlist": "Iа зем бу оагIонаш",
"tooltip-pt-mycontris": "{{GENDER:|Хьа}} хувцамаш",
- "tooltip-pt-login": "Укхаза хьай цIи аьле чувала/яла йиша я, амма из параз дац",
+ "tooltip-pt-anoncontribs": "Укх IP-цIайна тIара даь хувцамаш",
+ "tooltip-pt-login": "Укхаза ражача чу а даьнна регистраци е йиш я.",
"tooltip-pt-logout": "Аравала/яла",
- "tooltip-pt-createaccount": "Ð¥Ñ\8cа бокÑ\8aо Ñ\8f дагаÑ\80а йоазÑ\83в Ñ\85Ñ\8cа а кÑ\85елла Ñ\80ажаÑ\87а Ñ\87Ñ\83вала.",
+ "tooltip-pt-createaccount": "ШÑ\83н бокÑ\8aо Ñ\8f дагаÑ\80а йоазÑ\83в Ñ\85Ñ\8cа а кÑ\85елла Ñ\80ажаÑ\87а Ñ\87Ñ\83довла.",
"tooltip-ca-talk": "ОагIон чулоацамах лаьца дувцар",
"tooltip-ca-edit": "Нийсъе ер оагIув",
"tooltip-ca-addsection": "Керда дáкъа хьаде",
"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",
+ "rcfilters-filtergroup-watchlist": "Pagini surveyata",
+ "rcfilters-filter-watchlist-watched-label": "En mea surveyo-listo",
+ "rcfilters-filter-watchlist-watched-description": "Modifikuri en pagini de vua surveyo-listo.",
+ "rcfilters-filter-watchlist-watchednew-label": "Nova modifikuri en la surveyo-listo",
"rcfilters-filter-pageedits-label": "Redakti di pagini",
"rcfilters-filter-pageedits-description": "Redakturi en la kontenajo dil Wiki, diskuti, deskriptado di kategorii...",
"rcfilters-filter-newpages-label": "Kreado di pagini",
"rcfilters-filter-newpages-description": "Redakturi qui kreas nova pagini.",
- "rcfilters-filter-categorization-label": "Modifiki di la kategorio",
+ "rcfilters-filter-categorization-label": "Modifikuri di kategorio",
"rcfilters-filter-logactions-label": "Agadi enrejistrata",
"rcfilters-filter-logactions-description": "Agadi dal administreri, kreado di konti, efaco di pagini, sendo di arkivi...",
+ "rcfilters-view-tags": "Redakturi etiketizata",
"rcfilters-liveupdates-button": "Quika aktualigi",
"rcnotefrom": "Infre {{PLURAL:$5|esas la chanjo|esas la chanji}} de <strong>$3, $4</strong> (montrata til <strong>$1</strong>).",
"rclistfrom": "Montrar nova chanji startante de $3 $2",
"recentchangeslinked-summary": "Skribez la nomo di ula pagino por vidar la modifikuri en pagini ligita ad ol. (Por vidar la membri di ula kategoriio, skribez Kategorio:Nomo di la kategorio). Chanji en la pagini qui esas en [[Special:Watchlist|vua surveryo-listo]] aparos en <strong>dika literi</strong>.",
"recentchangeslinked-page": "Nomo di la pagino:",
"recentchangeslinked-to": "Montrez chanji a pagini ligita a la specigita pagino vice",
+ "recentchanges-page-added-to-category": "[[:$1]] adjuntita a kategorio",
"autochange-username": "Automatala chanjo di MediaWiki",
"upload": "Adkargar arkivo",
"uploadbtn": "Adkargar arkivo",
"duration-years": "$1 {{PLURAL:$1|yaro|yari}}",
"limitreport-title": "Analizo di dati pri profilo:",
"limitreport-ppvisitednodes": "Quanto di nodi vizitita dal preprocesoro",
+ "limitreport-ppgeneratednodes": "Quanto di nodi kreita dal preprocesoro",
"limitreport-postexpandincludesize": "Grandeso dil inkluzo pos expanso",
"limitreport-expansiondepth": "Maxima profundeso di expanso",
"limitreport-expensivefunctioncount": "Kontado di funcioni kustoza di analizo sintaxala",
"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",
"savechanges": "Fisa cambias",
"publishpage": "Publici paje",
"publishchanges": "Publici cambias",
+ "publishchanges-start": "Publici cambias...",
"preview": "Previde",
"showpreview": "Mostra previde",
"showdiff": "Mostra cambias",
"Nemo bis",
"Nersip",
"Manvydasz",
- "Fitoschido"
+ "Fitoschido",
+ "Matěj Suchánek"
]
},
"tog-underline": "Nuorodos pabraukimas:",
"create": "Sukurti",
"create-local": "Pridėti vietos aprašymą",
"delete": "Trinti",
- "undelete_short": "Atkurti $1 {{PLURAL:$1:redagavimą|redagavimus|redagavimų}}",
+ "undelete_short": "Atkurti $1 {{PLURAL:$1|redagavimą|redagavimus|redagavimų}}",
"viewdeleted_short": "Peržiūrėti $1 {{PLURAL:$1|ištrintą keitimą|ištrintus keitimus|ištrintų keitimų}}",
"protect": "Užrakinti",
"protect_change": "keisti",
"grant-generic": "\"$1\" tiesību paka",
"grant-group-page-interaction": "Darboties ar lapām",
"grant-group-file-interaction": "Darboties ar multimediju failiem",
+ "grant-group-watchlist-interaction": "Darboties ar tavu uzraugāmo lapu sarakstu",
"grant-group-email": "Sūtīt e-pastu",
"grant-group-high-volume": "Veikt liela apjoma aktivitātes",
"grant-group-administration": "Veikt administratīvās darbības",
"grant-group-private-information": "Piekļūt privātiem datiem par tevi",
+ "grant-group-other": "Dažādas darbības",
"grant-blockusers": "Bloķēt un atbloķēt dalībniekus",
"grant-createaccount": "Izveidot kontu",
"grant-createeditmovepage": "Izveidot, labot un pārvietot lapas",
"grant-uploadfile": "Augšupielādēt jaunus failus",
"grant-basic": "Pamattiesības",
"grant-viewdeleted": "Skatīt dzēstos failus un lapas",
+ "grant-viewmywatchlist": "Skatīt tavu uzraugāmo rakstu sarakstu",
"newuserlogpage": "Jauno dalībnieku reģistrs",
"newuserlogpagetext": "Jauno lietotājvārdu reģistrs.",
"rightslog": "Dalībnieku tiesību reģistrs",
"converter-manual-rule-error": "Пронајдов грешка во правилото за рачно претворање на јазик",
"undo-success": "Уредувањето може да се откаже.\nВе молиме споредете ги промените со претходната верзија за да проверите дали тоа е сигурно она што сакате да го направите, а потоа зачувајте ги промените за да го завршите откажувањето на претходното уредување.",
"undo-failure": "Уредувањето не можеше да се откаже заради меѓувремени спротиставени уредувања.",
+ "undo-main-slot-only": "Уредувањето не може да се отповика бидејќи има содржина вон главниот жлеб.",
"undo-norev": "Измената не можеше да биде вратена бидејќи не постои или била избришана.",
"undo-nochange": "Се чини дека измената (уредувањето) е веќе вратена.",
"undo-summary": "Откажано уредувањето $1 на уредникот [[Special:Contribs/$2|$2]] ([[User talk:$2|разговор]])",
"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",
"botpasswords-label-grants": "ബാധകമായ അനുമതികൾ:",
"botpasswords-label-grants-column": "അനുവദിച്ചിരിക്കുന്നവ",
"resetpass_forbidden": "രഹസ്യവാക്കുകൾ മാറ്റുന്നത് അനുവദിക്കുന്നില്ല",
+ "resetpass_forbidden-reason": "രഹസ്യവാക്കുകൾ മാറ്റാൻ കഴിയില്ല: $1",
"resetpass-no-info": "ഈ താൾ നേരിട്ടു കാണുന്നതിന് താങ്കൾ ലോഗിൻ ചെയ്തിരിക്കണം.",
"resetpass-submit-loggedin": "രഹസ്യവാക്ക് മാറ്റുക",
"resetpass-submit-cancel": "റദ്ദാക്കുക",
"resetpass-wrong-oldpass": "താത്കാലികമായി ലഭിച്ച അല്ലെങ്കിൽ നിലവിലുള്ളതായി നൽകിയ രഹസ്യവാക്ക് അസാധുവാണ്.\nതാങ്കൾ രഹസ്യവാക്ക് വിജയകരമായി മാറ്റിയിട്ടുണ്ടാകാം അല്ലെങ്കിൽ പുതിയ താത്കാലിക രഹസ്യവാക്ക് അഭ്യർത്ഥിച്ചിട്ടുണ്ടാകാം.",
- "resetpass-recycled": "താà´\99àµ\8dà´\95à´³àµ\81à´\9fàµ\86 രഹസàµ\8dയവാà´\95àµ\8dà´\95àµ\8d നിലവിലàµ\81à´³àµ\8dളതിൽ നിനàµ\8dà´¨àµ\81à´\82 à´µàµ\8dയതàµ\8dയസàµ\8dതമായതാà´\95àµ\8dà´\95ുക.",
+ "resetpass-recycled": "താà´\99àµ\8dà´\95à´³àµ\81à´\9fàµ\86 രഹസàµ\8dയവാà´\95àµ\8dà´\95àµ\8d നിലവിലàµ\81à´³àµ\8dളതിൽ നിനàµ\8dà´¨àµ\81à´\82 à´µàµ\8dയതàµ\8dയസàµ\8dതമായതായി മാറàµ\8dà´±ുക.",
"resetpass-temp-emailed": "ഇമെയിൽ വഴി ലഭിച്ച താൽക്കാലിക കോഡ് ഉപയോഗിച്ചാണ് താങ്കൾ പ്രവേശിച്ചിരിക്കുന്നത്.\nപ്രവേശനം പൂർത്തിയാക്കാൻ, ഇവിടെ പുതിയ രഹസ്യവാക്ക് സജ്ജമാക്കുക:",
"resetpass-temp-password": "താത്കാലിക രഹസ്യവാക്ക്:",
"resetpass-abort-generic": "രഹസ്യവാക്ക് മാറ്റുന്നത് ഒരു അനുബന്ധം തടഞ്ഞിരിക്കുന്നു.",
"resetpass-expired": "താങ്കളുടെ രഹസ്യവാക്ക് കാലഹരണപ്പെട്ടിരിക്കുന്നു. പ്രവേശിക്കാനായി പുതിയ രഹസ്യവാക്ക് സജ്ജമാക്കുക.",
- "resetpass-expired-soft": "താà´\99àµ\8dà´\95à´³àµ\81à´\9fàµ\86 രഹസàµ\8dയവാà´\95àµ\8dà´\95àµ\8d à´\95ാലഹരണപàµ\8dà´ªàµ\86à´\9fàµ\8dà´\9fà´¿à´°à´¿à´\95àµ\8dà´\95àµ\81à´¨àµ\8dനതിനാൽ à´ªàµ\81à´¨à´\83à´¸à´\9càµ\8dà´\9càµ\80à´\95à´°à´¿à´\95àµ\8dà´\95àµ\87à´£àµ\8dà´\9fà´¤àµ\81à´£àµ\8dà´\9fàµ\8d. à´\87à´ªàµ\8dà´ªàµ\8bൾ തനàµ\8dà´¨àµ\86 à´ªàµ\81തിയ രഹസàµ\8dയവാà´\95àµ\8dà´\95àµ\8d തിരà´\9eàµ\8dà´\9eàµ\86à´\9fàµ\81à´\95àµ\8dà´\95àµ\81à´\95 à´\85à´²àµ\8dà´²àµ\86à´\99àµ\8dà´\95ിൽ പിനàµ\8dà´¨àµ\80à´\9fàµ\8d à´ªàµ\81à´¨à´\83à´¸à´\9càµ\8dà´\9càµ\80à´\95à´°à´¿à´\95àµ\8dà´\95ാനായി \"{{int:authprovider-resetpass-skip-label}}\" ഞെക്കുക.",
- "resetpass-validity-soft": "താà´\99àµ\8dà´\95à´³àµ\81à´\9fàµ\86 രഹസàµ\8dയവാà´\95àµ\8dà´\95àµ\8d സാധàµ\81തയàµ\81à´³àµ\8dളതലàµ\8dà´²: $1\n\nദയവായി à´ªàµ\81തിയàµ\8aà´°àµ\81 രഹസàµ\8dയവാà´\95àµ\8dà´\95àµ\8d à´\87à´ªàµ\8dà´ªàµ\8bൾ തനàµ\8dà´¨àµ\86 തിരà´\9eàµ\8dà´\9eàµ\86à´\9fàµ\81à´\95àµ\8dà´\95àµ\81à´\95 à´\85à´²àµ\8dà´²àµ\86à´\99àµ\8dà´\95ിൽ പിനàµ\8dà´¨àµ\80à´\9fàµ\8d à´ªàµ\81à´¨à´\83à´¸à´\9càµ\8dà´\9càµ\80à´\95à´°à´¿à´\95àµ\8dà´\95ുന്നതിനായി \"{{int:authprovider-resetpass-skip-label}}\" ഞെക്കുക.",
+ "resetpass-expired-soft": "താà´\99àµ\8dà´\95à´³àµ\81à´\9fàµ\86 രഹസàµ\8dയവാà´\95àµ\8dà´\95àµ\8d à´\95ാലഹരണപàµ\8dà´ªàµ\86à´\9fàµ\8dà´\9fà´¿à´°à´¿à´\95àµ\8dà´\95àµ\81à´¨àµ\8dനതിനാൽ മാറàµ\8dà´±àµ\87à´£àµ\8dà´\9fà´¤àµ\81à´£àµ\8dà´\9fàµ\8d. à´\87à´ªàµ\8dà´ªàµ\8bൾ തനàµ\8dà´¨àµ\86 à´ªàµ\81തിയ രഹസàµ\8dയവാà´\95àµ\8dà´\95àµ\8d തിരà´\9eàµ\8dà´\9eàµ\86à´\9fàµ\81à´\95àµ\8dà´\95àµ\81à´\95 à´\85à´²àµ\8dà´²àµ\86à´\99àµ\8dà´\95ിൽ പിനàµ\8dà´¨àµ\80à´\9fàµ\8d മാറàµ\8dà´±àµ\81à´µാനായി \"{{int:authprovider-resetpass-skip-label}}\" ഞെക്കുക.",
+ "resetpass-validity-soft": "താà´\99àµ\8dà´\95à´³àµ\81à´\9fàµ\86 രഹസàµ\8dയവാà´\95àµ\8dà´\95àµ\8d സാധàµ\81തയàµ\81à´³àµ\8dളതലàµ\8dà´²: $1\n\nദയവായി à´ªàµ\81തിയàµ\8aà´°àµ\81 രഹസàµ\8dയവാà´\95àµ\8dà´\95àµ\8d à´\87à´ªàµ\8dà´ªàµ\8bൾ തനàµ\8dà´¨àµ\86 തിരà´\9eàµ\8dà´\9eàµ\86à´\9fàµ\81à´\95àµ\8dà´\95àµ\81à´\95 à´\85à´²àµ\8dà´²àµ\86à´\99àµ\8dà´\95ിൽ പിനàµ\8dà´¨àµ\80à´\9fàµ\8d മാറàµ\8dà´±ുന്നതിനായി \"{{int:authprovider-resetpass-skip-label}}\" ഞെക്കുക.",
"passwordreset": "രഹസ്യവാക്ക് പുനഃക്രമീകരിക്കുക",
"passwordreset-text-one": "രഹസ്യവാക്ക് പുനർസജ്ജീകരിക്കാനായി ഈ ഫോം പൂരിപ്പിക്കുക.",
"passwordreset-text-many": "{{PLURAL:$1|ഇമെയിൽ വഴി താത്കാലിക രഹസ്യവാക്ക് ലഭിക്കാനായി താഴെ നൽകിയിരിക്കുന്നവയിൽ ഏതെങ്കിലുമൊന്ന് പൂരിപ്പിച്ചു നൽകുക.}}",
"default": "സ്വതേ",
"prefs-files": "പ്രമാണങ്ങൾ",
"prefs-custom-css": "സ്വന്തം സി.എസ്.എസ്.",
+ "prefs-custom-json": "ഐച്ഛിക ജെസൺ",
"prefs-custom-js": "സ്വന്തം ജെ.എസ്.",
"prefs-common-config": "എല്ലാ ദൃശ്യരൂപങ്ങൾക്കുമായി പങ്ക് വെയ്ക്കപ്പെട്ട സി.എസ്.എസ്./ജെസൺ/ജാവാസ്ക്രിപ്റ്റ്:",
"prefs-reset-intro": "സൈറ്റിൽ സ്വതേയുണ്ടാവേണ്ട ക്രമീകരണങ്ങൾ പുനഃക്രമീകരിക്കാൻ താങ്കൾക്ക് ഈ താൾ ഉപയോഗിക്കാവുന്നതാണ്.\nഇത് തിരിച്ചു ചെയ്യാൻ സാദ്ധ്യമല്ല.",
"prefs-dateformat": "ദിന ലേഖന രീതി",
"prefs-timeoffset": "സമയ വ്യത്യാസം",
"prefs-advancedediting": "പൊതുവായിട്ടുള്ള ഐച്ഛികങ്ങൾ",
+ "prefs-developertools": "വികസന ഉപകരണങ്ങൾ",
"prefs-editor": "എഡിറ്റർ",
"prefs-preview": "എങ്ങനെയുണ്ടെന്ന് കാണൽ",
"prefs-advancedrc": "വിപുലമായ ഉപാധികൾ",
"rcfilters-other-review-tools": "മറ്റ് സംശോധന ഉപകരണങ്ങൾ",
"rcfilters-group-results-by-page": "ഫലങ്ങൾ താളനുസരിച്ച് ഗണങ്ങളാക്കുക",
"rcfilters-activefilters": "സജീവ അരിപ്പകൾ",
+ "rcfilters-activefilters-hide": "മറയ്ക്കുക",
+ "rcfilters-activefilters-show": "പ്രദർശിപ്പിക്കുക",
"rcfilters-advancedfilters": "വിപുല അരിപ്പകൾ",
"rcfilters-limit-title": "പ്രദർശിപ്പിക്കേണ്ട ഫലങ്ങൾ",
"rcfilters-limit-and-date-label": "{{PLURAL:$1|ഒരു മാറ്റം|$1 മാറ്റങ്ങൾ}}, $2",
"rcfilters-empty-filter": "സജീവ അരിപ്പകൾ ഇല്ല. എല്ലാ സംഭാവനകളും പ്രദർശിപ്പിക്കുന്നു.",
"rcfilters-filterlist-title": "അരിപ്പകൾ",
"rcfilters-filterlist-whatsthis": "ഇതെങ്ങനെയാണ് പ്രവർത്തിക്കുന്നത്?",
- "rcfilters-filterlist-feedbacklink": "ഈ (പുതിയ) അരിച്ചെടുക്കൽ ഉപകരണങ്ങൾ എങ്ങനെയുണ്ടെന്ന് ഞങ്ങളോട് പറയുക",
+ "rcfilters-filterlist-feedbacklink": "ഈ അരിച്ചെടുക്കൽ ഉപകരണങ്ങൾ എങ്ങനെയുണ്ടെന്ന് ഞങ്ങളോട് പറയുക",
"rcfilters-highlightbutton-title": "ഫലങ്ങൾ പ്രമുഖമാക്കി കാട്ടുക",
"rcfilters-highlightmenu-title": "നിറം തിരഞ്ഞെടുക്കുക",
"rcfilters-highlightmenu-help": "ഈ ഇനം പ്രമുഖമാക്കി കാട്ടാൻ ഒരു നിറം തിരഞ്ഞെടുക്കുക",
"dellogpage": "മായ്ക്കൽ രേഖ",
"dellogpagetext": "സമീപകാലത്ത് മായ്ക്കപ്പെട്ട താളുകളുടെ പട്ടിക താഴെ കാണാം.",
"deletionlog": "മായ്ക്കൽ രേഖ",
+ "log-name-create": "താൾ സൃഷ്ടിയുടെ രേഖ",
+ "log-description-create": "സമീപകാലത്ത് സൃഷ്ടിക്കപ്പെട്ട താളുകളുടെ പട്ടിക താഴെ കാണാം.",
+ "logentry-create-create": "$3 എന്ന താൾ $1 {{GENDER:$2|സൃഷ്ടിച്ചു}}",
"reverted": "പൂർവ്വസ്ഥിതിയിലേക്കാക്കിയിരിക്കുന്നു.",
"deletecomment": "കാരണം:",
"deleteotherreason": "മറ്റ്/കൂടുതൽ കാരണങ്ങൾ:",
"thumbnail_dest_directory": "ലക്ഷ്യ ഡയറക്ടറി സൃഷ്ടിക്കുവാൻ സാധിച്ചില്ല",
"thumbnail_image-type": "ചിത്രത്തിന്റെ തരം പിന്തുണക്കപ്പെട്ടതല്ല",
"thumbnail_gd-library": "അപൂർണ്ണമായ ജി.ഡി. ലൈബ്രറി ക്രമീകരണം: ഫങ്ഷൻ $1 ലഭ്യമല്ല",
+ "thumbnail_image-size-zero": "ചിത്രപ്രമാണത്തിന്റെ വലിപ്പം പൂജ്യമായി കാണുന്നു.",
"thumbnail_image-missing": "പ്രമാണം ലഭ്യമല്ലെന്നു കാണുന്നു: $1",
"thumbnail_image-failure-limit": "ഈ ലഘുചിത്രം സൃഷ്ടിക്കാൻ നിരവധി പരാജയപ്പെട്ട ശ്രമങ്ങൾ ($1 അല്ലെങ്കിൽ കൂടുതൽ) നടന്നിട്ടുണ്ട്. ദയവായി പിന്നീട് ശ്രമിക്കുക.",
"import": "താളുകൾ ഇറക്കുമതി ചെയ്യുക",
"import-mapping-subpage": "ഇനിക്കൊടുക്കുന്ന താളിന്റെ ഉപതാളുകളായി ഇറക്കുമതി ചെയ്യുക:",
"import-upload-filename": "പ്രമാണത്തിന്റെ പേര്",
"import-upload-username-prefix": "അന്തർവിക്കി പൂർവ്വാക്ഷരങ്ങൾ:",
+ "import-assign-known-users": "പേരുനൽകിയിട്ടുള്ള ഉപയോക്താക്കൾ പ്രാദേശികമായി ഉണ്ടങ്കിൽ തിരുത്തുകൾ പ്രാദേശിക ഉപയോക്താക്കളുടേതായി നൽകുക",
"import-comment": "കുറിപ്പ്:",
"importtext": "ദയവായി സ്രോതസ്സ് വിക്കിയിൽ നിന്ന് [[Special:Export|കയറ്റുമതി ഉപകരണം]] ഉപയോഗിച്ച് പ്രമാണം കയറ്റുമതി ചെയ്യുക.\nഅത് താങ്കളുടെ കമ്പ്യൂട്ടറിൽ ശേഖരിച്ച് ഇവിടെ അപ്ലോഡ് ചെയ്യുക.",
"importstart": "താളുകൾ ഇറക്കുമതി ചെയ്യുന്നു...",
"imported-log-entries": "{{PLURAL:$1|രേഖയിലെ ഒരുൾപ്പെടുത്തൽ|രേഖയിലെ $1 ഉൾപ്പെടുത്തലുകൾ}} ഇറക്കുമതി ചെയ്തു.",
"importfailed": "ഇറക്കുമതി പരാജയപ്പെട്ടു: <nowiki>$1</nowiki>",
"importunknownsource": "അപരിചിതമായ ഇറക്കുമതി സ്രോതസ്സ് തരം",
+ "importnoprefix": "അന്തർവിക്കി പൂർവ്വപദം ഒന്നും നൽകിയിട്ടില്ലായിരുന്നു",
"importcantopen": "ഇറക്കുമതി പ്രമാണം തുറക്കാൻ കഴിഞ്ഞില്ല",
"importbadinterwiki": "മോശമായ അന്തർവിക്കി കണ്ണി",
"importsuccess": "ഇറക്കുമതി ചെയ്തുകഴിഞ്ഞു!",
"import-nonewrevisions": "ഒരു നാൾപ്പതിപ്പും ഇറക്കുമതി ചെയ്തിട്ടില്ല (എല്ലാം നിലവിൽ ഉണ്ട്, അല്ലെങ്കിൽ പിഴവുകളുള്ളതിനാൽ ഒഴിവാക്കി).",
"xml-error-string": "$2 വരിയിൽ $1, നിര $3 (ബൈറ്റ് $4): $5",
"import-upload": "എക്സ്.എം.എൽ. ഡേറ്റ അപ്ലോഡ് ചെയ്യുക",
- "import-token-mismatch": "à´¸àµ\86ഷൻ ഡാറàµ\8dà´± നഷàµ\8dà´\9fà´ªàµ\8dà´ªàµ\86à´\9fàµ\8dà´\9fതിനാൽ ദയവായി à´µàµ\80à´£àµ\8dà´\9fàµ\81à´\82 à´¶àµ\8dരമിà´\95àµ\8dà´\95àµ\82à´\95",
+ "import-token-mismatch": "à´¸àµ\86ഷൻ à´¡àµ\87à´±àµ\8dà´± നഷàµ\8dà´\9fà´ªàµ\8dà´ªàµ\86à´\9fàµ\8dà´\9fà´¿à´°à´¿à´\95àµ\8dà´\95àµ\81à´¨àµ\8dà´¨àµ\81.\n\nതാà´\99àµ\8dà´\95ൾ à´ªàµ\81റതàµ\8dà´¤àµ\8d à´\95à´\9fà´¨àµ\8dനിà´\9fàµ\8dà´\9fàµ\81à´£àµ\8dà´\9fà´¾à´\95à´¾à´\82. '''à´\87à´ªàµ\8dà´ªàµ\8bà´´àµ\81à´\82 à´ªàµ\8dà´°à´µàµ\87ശിà´\9aàµ\8dà´\9aà´¿à´°à´¿à´\95àµ\8dà´\95àµ\81à´\95യാണàµ\86à´¨àµ\8dà´¨àµ\8d à´\89റപàµ\8dà´ªàµ\8d വരàµ\81à´¤àµ\8dതിയിà´\9fàµ\8dà´\9fàµ\8d à´µàµ\80à´£àµ\8dà´\9fàµ\81à´\82 à´¶àµ\8dരമിà´\95àµ\8dà´\95àµ\81à´\95'''.\nà´\8eà´¨àµ\8dനിà´\9fàµ\8dà´\9fàµ\81à´\82 ശരിയാവàµ\81à´¨àµ\8dനിലàµ\8dà´²àµ\86à´\99àµ\8dà´\95ിൽ [[Special:UserLogout|à´²àµ\8bà´\97àµ\97à´\9fàµ\8dà´\9fàµ\8d à´\9aàµ\86à´¯àµ\8dതതിനàµ\81 à´¶àµ\87à´·à´\82]] à´µàµ\80à´£àµ\8dà´\9fàµ\81à´\82 à´²àµ\8bà´\97ിൻ à´\9aàµ\86à´¯àµ\8dà´¤àµ\81à´¨àµ\8bà´\95àµ\8dà´\95àµ\81à´\95, താà´\99àµ\8dà´\95à´³àµ\81à´\9fàµ\86 à´¬àµ\8dà´°àµ\97സർ à´\88 à´¸àµ\88à´±àµ\8dറിൽ നിനàµ\8dà´¨àµ\81à´®àµ\81à´³àµ\8dà´³ à´\95àµ\81à´\95àµ\8dà´\95à´¿à´\95ൾ à´\85à´¨àµ\81വദിà´\95àµ\8dà´\95àµ\81à´¨àµ\8dà´¨àµ\81à´£àµ\8dà´\9fàµ\86à´¨àµ\8dà´¨àµ\8d à´\89റപàµ\8dà´ªàµ\81വരàµ\81à´¤àµ\8dà´¤àµ\81à´\95.",
"import-invalid-interwiki": "താങ്കൾ നിർദ്ദേശിച്ച വിക്കിയിൽനിന്നും ഇറക്കുമതിചെയ്യാൻ സാധിച്ചില്ല",
"import-error-edit": "\"$1\" എന്ന താൾ തിരുത്താനുള്ള അനുമതി താങ്കൾക്ക് ഇല്ലാത്തതിനാൽ അത് ഇറക്കുമതി ചെയ്തില്ല.",
"import-error-create": "\"$1\" എന്ന താൾ സൃഷ്ടിക്കാനുള്ള അനുമതി താങ്കൾക്ക് ഇല്ലാത്തതിനാൽ അത് ഇറക്കുമതി ചെയ്തില്ല.",
"group-bot.css": "/* ഇവിടെ നൽകുന്ന സി.എസ്.എസ്. ബോട്ടുകൾക്ക് ബാധകമായിരിക്കും */",
"group-sysop.css": "/* ഇവിടെ നൽകുന്ന സി.എസ്.എസ്. കാര്യനിർവാഹകർക്ക് ബാധകമായിരിക്കും */",
"group-bureaucrat.css": "/* ഇവിടെ നൽകുന്ന സി.എസ്.എസ്. ബ്യൂറോക്രാറ്റുകൾക്ക് ബാധകമായിരിക്കും */",
+ "common.json": "/* ഇവിടെ നൽകുന്ന ജെസൺ എല്ലാ ഉപയോക്താക്കൾക്കും, എല്ലാ താളുകളിലും പ്രവർത്തിക്കുന്നതായിരിക്കും */",
"common.js": "/* ഇവിടെ നൽകുന്ന ജാവാസ്ക്രിപ്റ്റ് എല്ലാ ഉപയോക്താക്കൾക്കും, എല്ലാ താളുകളിലും പ്രവർത്തിക്കുന്നതായിരിക്കും */",
"group-autoconfirmed.js": "/* ഇവിടെ നൽകുന്ന ജാവാസ്ക്രിപ്റ്റ് യാന്ത്രികമായി സ്ഥിരീകരിക്കപ്പെട്ട ഉപയോക്താക്കൾക്ക് ബാധകമായിരിക്കും */",
"group-bot.js": "/* ഇവിടെ നൽകുന്ന ജാവാസ്ക്രിപ്റ്റ് ബോട്ടുകൾക്ക് ബാധകമായിരിക്കും */",
"newimages-hidepatrolled": "റോന്തുചുറ്റപ്പെട്ട അപ്ലോഡുകൾ മറയ്ക്കുക",
"newimages-mediatype": "മീഡിയ തരം:",
"noimages": "ഒന്നും കാണാനില്ല.",
+ "gallery-slideshow-toggle": "ലഘുചിത്രങ്ങൾ മാറ്റിക്കാണിക്കുക",
"ilsubmit": "തിരയൂ",
"bydate": "ദിനക്രമത്തിൽ",
"sp-newimages-showfrom": "$2, $1 നു ശേഷം അപ്ലോഡ് ചെയ്ത പ്രമാണങ്ങൾ പ്രദർശിപ്പിക്കുക",
--- /dev/null
+{
+ "@metadata": {
+ "authors": [
+ "Awangba Mangang"
+ ]
+ },
+ "tog-underline": "ꯃꯔꯤꯂꯩꯅꯥꯍꯜꯂꯨ",
+ "tog-hideminor": "ꯂꯣꯠꯂꯨ ꯈꯖꯤꯛꯇꯪ ꯁꯣꯏꯕꯗꯒꯤ",
+ "tog-hidepatrolled": "ꯂꯣꯠꯂꯨ ꯈꯖꯤꯛꯇꯪ ꯁꯣꯏꯕꯗꯒꯤ ꯍꯧꯖꯤꯛꯀꯤ ꯑꯍꯣꯡꯕꯗꯒꯤ",
+ "tog-newpageshidepatrolled": "Hide patrolled pages from new page list",
+ "tog-hidecategorization": "ꯂꯥꯃꯥꯏꯒꯤ ꯃꯊꯪ ꯃꯅꯥꯎ ꯅꯥꯏꯕꯥ ꯂꯣꯠꯄꯥ",
+ "tog-extendwatchlist": "ꯌꯦꯡꯅꯕꯥ ꯄꯥꯔꯦꯡꯗꯨ ꯄꯥꯛꯊꯣꯛꯍꯟꯂꯨ ꯑꯍꯣꯡꯕꯥ ꯂꯣꯏꯅꯥ ꯎꯅꯕꯥ, ꯍꯧꯖꯤꯛꯀꯤ ꯈꯋꯥꯏꯗꯒꯤ ꯑꯅꯛꯄ ꯑꯍꯣꯡꯕꯗꯨ ꯅꯠꯇꯕꯥ",
+ "tog-usenewrc": "Group changes by page in recent changes and watchlist",
+ "tog-numberheadings": "ꯃꯁꯥ ꯃꯇꯣꯝꯇꯥ-ꯃꯁꯤꯡ-ꯃꯀꯣꯛꯁꯤꯡ",
+ "tog-showtoolbar": "ꯁꯦꯝꯒꯠꯅꯕ ꯇꯨꯜꯕꯥꯔ ꯎꯨꯠꯂꯨ",
+ "tog-editondblclick": "꯲ ꯔꯛ ꯅꯝꯃꯒꯥ ꯂꯥꯃꯥꯏꯗꯨ ꯁꯦꯝꯒꯠꯂꯨ",
+ "tog-editsectiononrightclick": "section titles ꯗ ꯌꯦꯠꯅ ꯅꯝꯗꯨꯅꯥ ꯁꯦꯝꯒꯠꯂꯛꯅꯕꯒꯤ ꯃꯐꯝꯗꯨ ꯌꯥꯍꯟꯂꯨ",
+ "tog-watchcreations": "ꯍꯥꯞꯆꯤꯟꯂꯨ ꯑꯩꯅꯥ ꯁꯦꯝꯂꯛꯄꯥ ꯂꯥꯃꯥꯏꯗꯨ ꯑꯃꯗꯤ ꯑꯩꯅꯥ ꯊꯥꯒꯠꯂꯛꯄꯥ ꯐꯥꯏꯜ ꯗꯨ ꯑꯩꯒꯤ ꯌꯦꯡꯅꯕꯥ ꯄꯔꯦꯡꯗꯥ",
+ "tog-watchdefault": "ꯍꯥꯞꯆꯤꯟꯂꯨ ꯂꯥꯃꯥꯏ ꯑꯃꯗꯤ ꯑꯩꯅꯥ ꯁꯦꯝꯒꯠꯂꯛꯄꯥ ꯐꯥꯏꯜ ꯗꯨ ꯑꯩꯒꯤ ꯌꯦꯡꯅꯕꯥ ꯄꯔꯦꯡꯗ",
+ "tog-watchmoves": "I move to my watchlist ꯍꯥꯞꯆꯤꯟꯂꯨ ꯂꯥꯃꯥꯏ ꯑꯃꯗꯤ ꯐꯥꯏꯜꯁꯤꯡ",
+ "tog-watchdeletion": "ꯍꯥꯞꯆꯤꯟꯂꯨ ꯂꯥꯃꯥꯏ ꯑꯃꯗꯤ ꯐꯥꯏꯜ ꯑꯩꯅꯥ ꯀꯛꯊꯠꯈꯤꯕꯥ ꯗꯨ ꯑꯩꯒꯤ ꯌꯦꯡꯅꯕꯥ ꯄꯔꯦꯡꯗꯥ",
+ "tog-watchuploads": "ꯍꯥꯞꯆꯤꯟꯂꯨ ꯑꯅꯧꯕꯥ ꯐꯥꯏꯜ ꯑꯩꯅꯥ ꯊꯥꯒꯠꯈꯤꯕꯗꯨ ꯑꯩꯒꯤ ꯌꯦꯡꯅꯕꯥ ꯄꯔꯦꯡꯗꯥ",
+ "tog-watchrollback": "ꯂꯥꯃꯥꯏ ꯍꯥꯞꯆꯤꯟꯂꯨ where I have performed a rollback to ꯑꯩꯒꯤ ꯌꯦꯡꯅꯕꯥ ꯄꯔꯦꯡꯗꯥ",
+ "tog-minordefault": "Mark all edits minor by default",
+ "tog-previewontop": "Show preview before edit box",
+ "tog-previewonfirst": "Show preview on first edit",
+ "tog-enotifwatchlistpages": "Email me when a page or a file on my watchlist is changed",
+ "tog-enotifusertalkpages": "Email me when my user talk page is changed",
+ "tog-enotifminoredits": "Email me also for minor edits of pages and files",
+ "tog-enotifrevealaddr": "Reveal my email address in notification emails",
+ "tog-shownumberswatching": " watching users ꯀꯤ ꯃꯁꯤꯡꯗꯨ ꯎꯨꯠꯂꯨ",
+ "tog-oldsig": "ꯅꯪꯒꯤ gi hanna leijariba khutyek",
+ "tog-fancysig": "Khutyek tu wikitext oina khanlu(Mashamatomta Samnafam yaodaba)",
+ "tog-uselivepreview": "Anouba ꯂꯥꯃꯥꯏ chingthadabida hannagido ootlu",
+ "tog-forceeditsummary": "Ahangba semgatlakpa hapchinlak pa matamda hairak o eingonda",
+ "tog-watchlisthideown": " watchlist tagi eigi semgatlakpa c lotlu",
+ "tog-watchlisthidebots": "watchlist tagi bot semgatlakpa du lotlu",
+ "tog-watchlisthideminor": "Yengnaba Parengdagi eigi apikpa semgatlak pa su lotlu",
+ "tog-watchlisthideliu": " watchlist tagi changsinlu sijinnariba shingna semgatlakliba du lotnaba",
+ "tog-watchlistreloadautomatically": "Reload the watchlist automatically whenever a filter is changed (JavaScript required)",
+ "tog-watchlistunwatchlinks": "Add direct unwatch/watch markers ({{int:Watchlist-unwatch}}/{{int:Watchlist-unwatch-undo}}) to watched pages with changes (JavaScript required for toggle functionality)",
+ "tog-watchlisthideanons": " watchlist tagi changsinlu sijinnariba shingna semgatlakliba du lotnaba",
+ "tog-watchlisthidepatrolled": "Yengnaba Parengdagi eigi apikpa semgatlak pa su lotlu",
+ "tog-watchlisthidecategorization": "ꯂꯥꯃꯥꯏꯒꯤ ꯃꯊꯪ ꯃꯅꯥꯎ ꯅꯥꯏꯕꯥ ꯂꯣꯠꯄꯥ",
+ "tog-ccmeonemails": "Send me copies of emails I send to other users",
+ "tog-diffonly": "ꯂꯥꯃꯥꯏꯒꯤ ꯑꯌꯥꯎꯕꯥꯗꯨ ꯃꯈꯥꯒꯤ diffs ꯇꯥ ꯎꯨꯠꯀꯅꯨ",
+ "tog-showhiddencats": "ꯑꯔꯣꯠꯄꯥ ꯃꯊꯪ ꯃꯅꯥꯎ ꯅꯥꯏꯕꯗꯨ ꯎꯨꯠꯂꯨ",
+ "tog-norollbackdiff": "Don't show diff after performing a rollback",
+ "tog-useeditwarning": "Warn me when I leave an edit page with unsaved changes",
+ "tog-prefershttps": "Always use a secure connection while logged in",
+ "underline-always": "ꯑꯗꯨꯝ",
+ "underline-never": "ꯁꯪꯇꯧ ꯇꯧꯔꯣꯏꯗꯕꯥ",
+ "underline-default": "Skin or browser default",
+ "editfont-style": "font style ꯒꯤ ꯁꯦꯝꯒꯠꯂꯛꯅꯕꯥ ꯃꯐꯝ:",
+ "editfont-monospace": "Monospaced font",
+ "editfont-sansserif": "Sans-serif font",
+ "editfont-serif": "Serif font",
+ "sunday": "ꯅꯣꯡꯃꯥꯏꯖꯤꯡ",
+ "monday": "ꯅꯤꯡꯊꯧꯀꯥꯕꯥ",
+ "tuesday": "ꯂꯩꯄꯥꯛꯄꯣꯛꯄꯥ",
+ "wednesday": "ꯌꯨꯝꯁꯥꯀꯩꯁꯥ",
+ "thursday": "ꯁꯥꯒꯣꯜꯁꯦꯟ",
+ "friday": "ꯏꯔꯥꯏ",
+ "saturday": "ꯊꯥꯡꯖꯥ",
+ "sun": "ꯅꯨꯃꯤꯠ",
+ "mon": "ꯅꯤꯡ",
+ "tue": "ꯂꯩ",
+ "wed": "ꯌꯨꯝ",
+ "thu": "ꯁꯥꯀꯣꯜ",
+ "fri": "ꯏꯔꯥꯏ",
+ "sat": "ꯊꯥꯡ",
+ "january": "ꯖꯥꯅꯨꯋꯥꯔꯤ",
+ "february": "ꯐꯦꯕꯨꯋꯥꯔꯤ",
+ "march": "ꯃꯥꯔꯆ",
+ "april": "ꯑꯦꯄꯔꯤꯜ",
+ "may_long": "ꯃꯦ",
+ "june": "ꯖꯨꯟ",
+ "july": "ꯖꯨꯂꯥꯏ",
+ "august": "ꯑꯥꯒꯥꯁꯇ",
+ "september": "ꯁꯦꯄꯇꯦꯝꯕꯔ",
+ "october": "ꯑꯣꯛꯇꯣꯕꯔ",
+ "november": "ꯅꯣꯕꯦꯝꯕꯔ",
+ "december": "ꯗꯤꯁꯦꯝꯕꯔ",
+ "january-gen": "ꯖꯥꯅꯨꯋꯥꯔꯤ",
+ "february-gen": "ꯐꯦꯕꯨꯋꯥꯔꯤ",
+ "march-gen": "ꯃꯥꯔꯆ",
+ "april-gen": "ꯑꯦꯄꯔꯤꯜ",
+ "may-gen": "ꯃꯦ",
+ "june-gen": "ꯖꯨꯟ",
+ "july-gen": "ꯖꯨꯂꯥꯏ",
+ "august-gen": "ꯑꯥꯒꯥꯁꯇ",
+ "september-gen": "ꯁꯦꯞꯇꯦꯝꯕꯔ",
+ "october-gen": "ꯑꯣꯛꯇꯣꯕꯔ",
+ "november-gen": "ꯅꯣꯕꯦꯝꯕꯔ",
+ "december-gen": "ꯗꯤꯁꯦꯝꯕꯔ",
+ "jan": "ꯖꯥꯟ",
+ "feb": "ꯐꯦꯕ",
+ "mar": "ꯃꯥꯔ",
+ "apr": "ꯑꯦꯄꯔ",
+ "may": "ꯃꯦ",
+ "jun": "ꯖꯨꯟ",
+ "jul": "ꯖꯨꯜ",
+ "aug": "ꯑꯥꯒ",
+ "sep": "ꯁꯦꯞ",
+ "oct": "ꯑꯣꯇ",
+ "nov": "ꯅꯣꯕ",
+ "dec": "ꯗꯦꯈ",
+ "january-date": "$1 ꯖꯥꯅꯨꯋꯥꯔꯤ",
+ "february-date": "$1 ꯄꯦꯕꯔꯨꯋꯥꯔꯤ",
+ "march-date": "$1ꯃꯥꯔꯆ",
+ "april-date": "$1 ꯑꯦꯄꯔꯤꯜ",
+ "may-date": "$1 ꯃꯦ",
+ "june-date": "$1 ꯖꯨꯟ",
+ "july-date": "$1 ꯖꯨꯂꯥꯏ",
+ "august-date": "$1 ꯑꯒꯨꯁꯇ",
+ "september-date": "$1 ꯁꯦꯞꯇꯦꯝꯕꯔ",
+ "october-date": "$1 ꯑꯣꯛꯇꯣꯕꯔ",
+ "november-date": "$1 ꯅꯥꯕꯦꯝꯕꯔ",
+ "december-date": "$1 ꯗꯤꯁꯦꯝꯕꯔ",
+ "period-am": "ꯑꯦ ꯑꯦꯝ",
+ "period-pm": "ꯄꯤ ꯑꯦꯝ",
+ "pagecategories": "{{PLURAL:$1|Category|Categories}}",
+ "category_header": "$1 ꯗꯥ ꯂꯩꯕꯥ ꯂꯥꯃꯥꯏꯒꯤ ꯃꯆꯥꯈꯥꯏꯕꯥ",
+ "subcategories": "ꯃꯆꯥꯈꯥꯏꯕꯥ ꯃꯆꯥ",
+ "category-media-header": "$1 ꯗꯥ ꯂꯩꯕꯥ ꯃꯦꯗꯤꯌꯥꯒꯤ ꯃꯆꯥꯈꯥꯏꯕꯥ",
+ "category-empty": "<em>This category currently contains no pages or media.</em>",
+ "hidden-categories": "{{PLURAL:$1|Hidden category|Hidden categories}}",
+ "hidden-category-category": "ꯑꯔꯣꯠꯄꯥ ꯃꯊꯪ ꯃꯅꯥꯎ ꯅꯥꯏꯕꯥ",
+ "category-subcat-count": "{{PLURAL:$2|This category has only the following subcategory.|This category has the following {{PLURAL:$1|subcategory|$1 subcategories}}, out of $2 total.}}",
+ "category-subcat-count-limited": "This category has the following {{PLURAL:$1|subcategory|$1 subcategories}}.",
+ "category-article-count": "{{PLURAL:$2|This category contains only the following page.|The following {{PLURAL:$1|page is|$1 pages are}} in this category, out of $2 total.}}",
+ "category-article-count-limited": "The following {{PLURAL:$1|page is|$1 pages are}} in the current category.",
+ "category-file-count": "{{PLURAL:$2|This category contains only the following file.|The following {{PLURAL:$1|file is|$1 files are}} in this category, out of $2 total.}}",
+ "category-file-count-limited": "The following {{PLURAL:$1|file is|$1 files are}} in the current category.",
+ "listingcontinuesabbrev": "ꯆꯠꯊꯕꯥ",
+ "index-category": "Indexed ꯂꯥꯃꯥꯏꯁꯤꯡ",
+ "noindex-category": "Noindexed ꯂꯥꯃꯥꯏꯁꯤꯡ",
+ "broken-file-category": " ꯀꯥꯏꯔꯕꯥ file links ꯒꯥ ꯂꯣꯏꯅꯕꯥ ꯂꯥꯃꯥꯏꯁꯤꯡ",
+ "about": "ꯄꯣꯠꯇꯨꯗꯤ ꯃꯔꯝꯗꯥ",
+ "article": "ꯂꯥꯃꯥꯏꯁꯤꯗꯥ ꯌꯥꯎꯕꯥ ꯄꯨꯝꯅꯃꯛ",
+ "newwindow": "ꯑꯅꯧꯕꯥ ꯊꯣꯡꯅꯥꯎꯗꯥ ꯍꯥꯡꯗꯣꯛ ꯎ",
+ "cancel": "ꯀꯛꯊꯠꯄꯥ",
+ "moredotdotdot": "ꯋꯥꯠꯂꯤ",
+ "morenotlisted": "ꯃꯁꯤꯒꯤ ꯄꯔꯦꯡꯁꯤ ꯃꯄꯨꯡ ꯐꯥꯗꯦ",
+ "mypage": "ꯂꯥꯃꯥꯏ",
+ "mytalk": "ꯉꯥꯡꯐꯝ",
+ "anontalk": "ꯉꯥꯡꯐꯝ",
+ "navigation": "ꯆꯠꯄꯥ",
+ "and": "꯱ꯁꯪ #꯳꯲; ꯑꯃꯁꯨꯪ",
+ "faq": "FAQ",
+ "actions": "Actions",
+ "namespaces": "ꯃꯥꯃꯤꯡꯒꯤ ꯃꯐꯝ",
+ "variants": "ꯈꯦꯇꯅꯕꯥ",
+ "navigation-heading": "Chatnaba Yengfam",
+ "errorpagetitle": "ꯑꯔꯥꯟꯕꯥ",
+ "returnto": "$1 ꯗꯥ ꯍꯟꯂꯨ",
+ "tagline": "ꯃꯔꯝꯗꯥ ꯃꯐꯝꯗꯨꯒꯤ ꯃꯃꯤꯡ",
+ "help": "ꯃꯥꯇꯦꯡ",
+ "search": "ꯊꯤꯕꯥ",
+ "search-ignored-headings": " #<!-- leave this line exactly as it is --> <pre>\n# Headings that will be ignored by search.\n# Changes to this take effect as soon as the page with the heading is indexed.\n# You can force page reindexing by doing a null edit.\n# The syntax is as follows:\n# * Everything from a \"#\" character to the end of the line is a comment.\n# * Every non-blank line is the exact title to ignore, case and everything.\nReferences\nExternal links\nSee also\n #</pre> <!-- leave this line exactly as it is -->",
+ "searchbutton": "ꯇꯤꯕꯥ",
+ "go": "ꯆꯠꯂꯨ",
+ "searcharticle": "Chatlu",
+ "history": "ꯂꯥꯃꯥꯏꯒꯤ ꯄꯨꯋꯥꯔꯤ",
+ "history_short": "ꯄꯨꯋꯥꯔꯤ",
+ "history_small": "ꯄꯨꯋꯥꯔꯤ",
+ "updatedmarker": "updated since my last visit",
+ "printableversion": "ꯅꯝꯊꯣꯛꯄꯥꯌꯥꯕꯥ ꯃꯑꯣꯡ",
+ "permalink": "Matampumbagi Samafam",
+ "print": "ꯅꯝꯕꯥ",
+ "view": "ꯃꯤꯠꯌꯦꯡ",
+ "view-foreign": "$1 ꯗꯥ ꯌꯦꯡꯉꯨ",
+ "edit": "ꯁꯦꯝꯒꯠꯄꯥ",
+ "edit-local": "Edit local description",
+ "create": "ꯁꯥꯕꯥ",
+ "create-local": "ꯁꯨꯋꯥꯏꯒꯤ ꯁꯟꯗꯣꯛꯅꯥ ꯇꯥꯛꯄꯗꯨ ꯍꯥꯞꯆꯤꯟꯂꯨ",
+ "delete": "ꯀꯛꯊꯠꯄꯥ",
+ "undelete_short": "Undelete {{PLURAL:$1|one edit|$1 edits}}",
+ "viewdeleted_short": "View {{PLURAL:$1|one deleted edit|$1 deleted edits}}",
+ "protect": "ꯉꯥꯛꯊꯣꯛꯂꯕꯥ",
+ "protect_change": "ꯑꯍꯣꯡꯕꯥ",
+ "unprotect": "ꯍꯥꯛꯊꯣꯛꯂꯕꯥ ꯗꯨ ꯍꯣꯡꯕꯥ",
+ "newpage": "ꯑꯅꯧꯕꯥ ꯂꯥꯃꯥꯏ",
+ "talkpagelinktext": "ꯉꯥꯡꯐꯝ",
+ "specialpage": "MediaWiki:Bs-wikiadmin-mediawiki-akhannaba-lamai-text/mni",
+ "personaltools": "ꯏꯁꯥꯒꯥ ꯂꯣꯏꯅꯕꯥ ꯈꯨꯠꯂꯥꯏ",
+ "talk": "Khanna Neinaba",
+ "views": "ꯃꯤꯠꯌꯦꯡ",
+ "toolbox": "ꯈꯨꯠꯂꯥꯏ",
+ "tool-link-userrights": "Change {{GENDER:$1|user}} groups",
+ "tool-link-userrights-readonly": "View {{GENDER:$1|user}} groups",
+ "tool-link-emailuser": "Email this {{GENDER:$1|user}}",
+ "imagepage": "File lamai du ootlu",
+ "mediawikipage": "ꯄꯥꯎꯖꯦꯜꯒꯤ ꯂꯥꯃꯥꯏꯗꯨ ꯎꯨꯠꯂꯨ",
+ "templatepage": "ꯇꯦꯝꯄꯂꯦꯠꯀꯤ ꯂꯥꯃꯥꯏꯗꯨ ꯎꯨꯠꯂꯨ",
+ "viewhelppage": "ꯃꯇꯦꯡ ꯄꯥꯡꯅꯕꯒꯤ ꯂꯥꯃꯥꯏꯗꯨ ꯎꯨꯠꯂꯨ",
+ "categorypage": "Macahkhaiba lamai oootlooo",
+ "viewtalkpage": "ꯈꯟꯅꯥ ꯅꯩꯅꯕꯗꯨ ꯎꯨꯠꯂꯨ",
+ "otherlanguages": "ꯑꯇꯣꯞꯄꯥ ꯂꯣꯟꯁꯤꯡꯗꯥ",
+ "redirectedfrom": "(Redirected from $1)",
+ "redirectpagesub": "ꯑꯃꯨꯛ ꯍꯟꯂꯛꯄꯥ ꯂꯥꯃꯥꯏ",
+ "redirectto": "Redirect to:",
+ "lastmodifiedat": "$2$1 ꯃꯁꯤꯒꯤ ꯂꯃꯥꯏꯁꯤ ꯑꯔꯣꯏꯕꯥ ꯁꯦꯝꯒꯠꯈꯤꯕꯥ",
+ "viewcount": "This page has been accessed {{PLURAL:$1|once|$1 times}}?",
+ "protectedpage": "ꯍꯥꯛꯊꯣꯛꯂꯕꯥ ꯂꯥꯃꯥꯏ",
+ "jumpto": "ꯑꯗꯨꯗꯥ ꯆꯣꯡꯈꯠꯄꯥ",
+ "jumptonavigation": "ꯆꯠꯄꯥ",
+ "jumptosearch": "ꯊꯤꯕꯥ",
+ "view-pool-error": "Sorry, the servers are overloaded at the moment.\nToo many users are trying to view this page.\nPlease wait a while before you try to access this page again.\n\n$1",
+ "generic-pool-error": "Sorry, the servers are overloaded at the moment.\nToo many users are trying to view this resource.\nPlease wait a while before you try to access this resource again.",
+ "pool-timeout": "ꯃꯇꯝ ꯍꯦꯟꯂꯦ ꯂꯣꯟꯅꯕꯥꯒꯤ ꯉꯥꯏꯕꯥ",
+ "pool-queuefull": "ꯄꯨꯜꯒꯤ ꯄꯔꯦꯡ ꯊꯟꯂꯦ",
+ "pool-errorunknown": "ꯁꯛꯈꯪꯗꯕꯥ ꯑꯔꯥꯟꯕꯥ",
+ "pool-servererror": "$1 ꯄꯨꯜ ꯀꯥꯎꯟꯇꯔ ꯇꯧꯅꯕꯥ ꯂꯩꯇꯔꯦ",
+ "poolcounter-usage-error": "$1:ꯁꯤꯖꯤꯟꯅꯔꯤꯕꯥ ꯑꯔꯥꯟꯕꯥ",
+ "aboutsite": "ꯃꯔꯝꯗꯥ ꯃꯐꯝꯗꯨꯒꯤ ꯃꯃꯤꯡ",
+ "aboutpage": "Project:ꯃꯔꯝꯗꯥ",
+ "copyright": "$1 ꯒꯤ ꯃꯇꯦꯡꯅ ꯃꯅꯨꯡꯒꯤ ꯑꯌꯥꯑꯣꯕꯥ ꯐꯪꯒꯅꯤ ꯅꯠꯇꯔꯒꯥ ꯏꯁꯤꯟꯗꯔꯤꯒꯩ",
+ "copyrightpage": "{{ns:project}}: ꯁꯤꯟꯗꯣꯔꯛꯄꯒꯤ ꯍꯛ",
+ "currentevents": "Houjikkee thouram",
+ "currentevents-url": "Project:houjikkee thouram",
+ "disclaimers": "ꯌꯥꯅꯤꯡꯗꯕꯥ ꯐꯣꯡꯗꯣꯛꯄꯁꯤꯡ",
+ "disclaimerpage": "Project:ꯃꯌꯥꯝꯒꯤ ꯑꯣꯏꯅꯥ ꯌꯥꯅꯤꯡꯗꯕꯥ ꯐꯣꯡꯗꯣꯔꯛꯄꯥ",
+ "edithelp": "ꯁꯦꯝꯒꯠꯅꯕꯥ ꯃꯥꯇꯦꯡ",
+ "helppage-top-gethelp": "ꯃꯥꯇꯦꯡ",
+ "mainpage": "ꯃꯔꯨ ꯑꯣꯏꯕꯥ ꯂꯃꯥꯏ",
+ "mainpage-description": "ꯃꯔꯨ ꯑꯣꯏꯕꯥ ꯂꯃꯥꯏ",
+ "policy-url": "Project:ꯈꯣꯡꯊꯥꯡ",
+ "portal": "Meeyam gi portal",
+ "portal-url": "Project:Meeyam gi oiba portal",
+ "privacy": "ꯑꯔꯣꯟꯕꯥ ꯊꯧꯔꯥꯡ",
+ "privacypage": "Project:ꯑꯔꯣꯟꯕꯥ ꯊꯧꯔꯥꯡ",
+ "badaccess": "ꯑꯌꯥꯕꯥꯗꯨ ꯁꯣꯏꯔꯦ",
+ "badaccess-group0": "ꯅꯪ ꯍꯧꯖꯤꯛ ꯑꯦꯛꯁꯟ ꯂꯧꯈꯠꯄꯥ ꯌꯥꯗꯔꯤ ꯅꯪꯅꯥ ꯍꯪꯒꯠꯆꯔꯤꯕꯗꯨꯒꯤ ꯃꯇꯥꯡꯗ",
+ "badaccess-groups": "The action you have requested is limited to users in {{PLURAL:$2|the group|one of the groups}}: $1.",
+ "versionrequired": "ꯃꯦꯗꯤꯌꯥ ꯋꯤꯀꯤꯅ ꯋꯥꯠꯂꯤꯕꯥ $1ꯕꯔꯖꯟ",
+ "versionrequiredtext": "ꯃꯦꯗꯤꯌꯥ ꯋꯤꯀꯤꯅ ꯋꯥꯠꯂꯤꯕꯥ $1ꯕꯔꯖꯟ ꯃꯁꯤꯒꯤ ꯂꯥꯃꯥꯏꯁꯤꯗꯥ ꯁꯤꯖꯤꯟꯅꯕꯥ [[Special:Version|version page]].",
+ "ok": "ꯌꯥꯔꯦ",
+ "retrievedfrom": "$1 ꯃꯐꯝꯗꯨꯗꯒꯤ ꯑꯣꯏꯔꯛꯄꯥ",
+ "youhavenewmessages": "{{PLURAL:$3|You have}} $1 ($2).",
+ "youhavenewmessagesfromusers": "{{PLURAL:$4|You have}} $1 from {{PLURAL:$3|another user|$3 users}} ($2).",
+ "youhavenewmessagesmanyusers": "ꯅꯪ $1 ꯂꯩꯔꯦ $2 ꯁꯤꯖꯤꯟꯅꯔꯤꯕꯥ ꯃꯌꯥꯝꯗꯒꯤ",
+ "newmessageslinkplural": "{{PLURAL:$1|a new message|999=new messages}}",
+ "newmessagesdifflinkplural": "ꯑꯔꯣꯏꯕꯥ {{PLURAL:$1|change|999=changes}}",
+ "youhavenewmessagesmulti": "$1 ꯅꯪꯒꯤ ꯑꯅꯧꯕꯥ ꯃꯦꯁꯦꯁ",
+ "editsection": "ꯁꯦꯝꯒꯠꯄꯥ",
+ "editold": "ꯁꯦꯝꯒꯠꯄꯥ",
+ "viewsourceold": "ꯍꯧꯔꯛꯐꯝ ꯎꯨꯇꯂꯨ",
+ "editlink": "ꯁꯦꯝꯒꯠꯄꯥ",
+ "viewsourcelink": "ꯍꯧꯔꯛꯐꯝ ꯎꯨꯇꯂꯨ",
+ "editsectionhint": "ꯁꯦꯝꯒꯠꯄꯒꯤ ꯁꯔꯨꯛ: $1",
+ "toc": "ꯑꯌꯥꯎꯕꯥ",
+ "showtoc": "ꯎꯨꯠꯂꯨ",
+ "hidetoc": "ꯂꯣꯇꯄꯥ",
+ "collapsible-collapse": "ꯁꯨꯞꯆꯤꯟꯕꯥ",
+ "collapsible-expand": "ꯄꯥꯛꯊꯣꯛꯄꯥ",
+ "confirmable-confirm": "Are {{GENDER:$1|you}} sure?",
+ "confirmable-yes": "ꯍꯣꯏ",
+ "confirmable-no": "ꯅꯠꯇꯦ",
+ "thisisdeleted": "View or restore $1?",
+ "viewdeleted": "$1 ꯌꯦꯡꯍꯟꯂꯨ?",
+ "restorelink": "{{PLURAL:$1|one deleted edit|$1 deleted edits}}",
+ "feedlinks": "ꯐꯤꯗ",
+ "feed-invalid": "ꯌꯥꯎꯗꯕꯥ subscription feed type.",
+ "feed-unavailable": "Syndication feeds are not available",
+ "site-rss-feed": "$1 RSS feed",
+ "site-atom-feed": "$1 ꯑꯦꯇꯣꯝ ꯇꯥꯛꯄꯥ",
+ "page-rss-feed": "\"$1\" RSS feed",
+ "page-atom-feed": "\"$1\" Atom feed",
+ "red-link-title": "$1 ꯂꯃꯥꯏꯗꯨ ꯂꯩꯇꯔꯦ",
+ "sort-descending": "ꯑꯇꯦꯟꯕꯥ ꯍꯟꯊꯔꯛꯂꯤꯕꯥ",
+ "sort-ascending": "ꯑꯇꯦꯟꯕꯥ ꯍꯦꯟꯒꯠꯂꯛꯂꯤꯕꯥ",
+ "nstab-main": "ꯂꯥꯃꯥꯏ",
+ "nstab-user": "Sijinnariba Lamai",
+ "nstab-media": "ꯃꯦꯗꯤꯌꯥꯒꯤ ꯂꯥꯃꯥꯏ",
+ "nstab-special": "MediaWiki:Bs-wikiadmin-mediawiki-akhannaba-lamai-text/mni",
+ "nstab-project": "ꯄꯥꯡꯊꯣꯛꯀꯗꯕꯥ ꯂꯥꯃꯥꯏ",
+ "nstab-image": "ꯈꯣꯝꯖꯤꯟꯗꯨꯅꯥ ꯍꯥꯞꯐꯝ",
+ "nstab-mediawiki": "ꯄꯥꯎꯖꯦꯜ",
+ "nstab-template": "ꯇꯦꯝꯄꯂꯦꯠ",
+ "nstab-help": "ꯂꯥꯃꯥꯏꯒꯤ ꯃꯇꯦꯂꯧꯐꯝ",
+ "nstab-category": "Machakhaiba",
+ "mainpage-nstab": "ꯃꯔꯨ ꯑꯣꯏꯕꯥ ꯂꯃꯥꯏ",
+ "nosuchaction": "ꯃꯁꯤꯒꯨꯕꯥ ꯃꯥꯑꯣꯡꯁꯤ ꯅꯠꯇꯦ",
+ "nosuchactiontext": "The action specified by the URL is invalid.\nYou might have mistyped the URL, or followed an incorrect link.\nThis might also indicate a bug in the software used by {{SITENAME}}.",
+ "nosuchspecialpage": "ꯃꯁꯤꯒꯥ ꯃꯥꯟꯅꯕꯥ ꯑꯈꯟꯅꯕꯥ ꯂꯥꯃꯥꯏ ꯂꯩꯇꯦ",
+ "nospecialpagetext": "<strong>You have requested an invalid special page.</strong>\n\nA list of valid special pages can be found at [[Special:SpecialPages|{{int:specialpages}}]].",
+ "error": "ꯑꯔꯥꯟꯕꯥ",
+ "databaseerror": "ꯗꯇꯥꯕꯦꯁꯀꯤ ꯑꯁꯣꯏꯕꯥ",
+ "databaseerror-text": "A database query error has occurred.\nThis may indicate a bug in the software.",
+ "databaseerror-textcl": "ꯗꯇꯥꯕꯦꯁꯀꯤ ꯅꯪꯉꯥꯏꯇꯕꯥ ꯑꯁꯣꯏꯕꯁꯤ ꯍꯧꯖꯤꯛ ꯃꯌꯣꯛꯅꯔꯤ",
+ "databaseerror-query": "Query: $1",
+ "databaseerror-function": "$1:ꯊꯧꯔꯝ",
+ "databaseerror-error": "ꯑꯁꯣꯏꯕꯥ: $1",
+ "transaction-duration-limit-exceeded": "To avoid creating high replication lag, this transaction was aborted because the write duration ($1) exceeded the $2 second limit.\nIf you are changing many items at once, try doing multiple smaller operations instead.",
+ "laggedslavemode": "<strong>Warning:</strong> Page may not contain recent updates.",
+ "readonly": "ꯗꯇꯥꯕꯦꯁ ꯊꯤꯡꯖꯤꯟꯂꯦ",
+ "enterlockreason": "ꯊꯤꯡꯖꯤꯟꯕꯒꯤ ꯃꯔꯝꯗꯨ ꯍꯥꯞꯄꯨ, ꯑꯦꯁꯇꯤꯃꯦꯠꯀꯥ ꯂꯣꯏꯅꯅ ꯍꯣꯔꯦꯟ ꯊꯤꯡꯖꯤꯟꯂꯤꯕꯗꯨ ꯊꯥꯗꯣꯧꯂꯕꯥ ꯃꯇꯝꯐꯥꯑꯣ",
+ "readonlytext": "The database is currently locked to new entries and other modifications, probably for routine database maintenance, after which it will be back to normal.\n\nThe system administrator who locked it offered this explanation: $1",
+ "missing-article": "The database did not find the text of a page that it should have found, named \"$1\" $2.\n\nThis is usually caused by following an outdated diff or history link to a page that has been deleted.\n\nIf this is not the case, you may have found a bug in the software.\nPlease report this to an [[Special:ListUsers/sysop|administrator]], making note of the URL.",
+ "missingarticle-rev": "(revision#: $1)",
+ "missingarticle-diff": "(Diff: $1, $2)",
+ "readonly_lag": "ꯗꯇꯥꯕꯦꯁ ꯁꯤ ꯃꯁꯥ ꯃꯇꯣꯝꯇꯥ ꯊꯤꯡꯖꯤꯟꯂꯦ while the slave database servers catch up to the master",
+ "nonwrite-api-promise-error": "The 'Promise-Non-Write-API-Action' HTTP header was sent but the request was to an API write module.",
+ "internalerror": "ꯃꯅꯨꯡꯒꯤ ꯑꯁꯣꯏꯕꯥ",
+ "internalerror_info": "ꯃꯅꯪꯨꯒꯤ ꯑꯁꯣꯏꯕꯥ: $1",
+ "internalerror-fatal-exception": "Fatal exception of type \"$1\"",
+ "filecopyerror": "ꯐꯥꯏꯜꯁꯤ ꯁꯤꯟꯗꯣꯛꯄꯥ ꯌꯥꯗꯔꯦ $1 ꯗꯒꯤ $2 ꯗꯥ",
+ "filerenameerror": "ꯐꯥꯏꯜꯁꯤ ꯑꯃꯨꯛ ꯅꯧꯅꯥ ꯃꯃꯤꯡ ꯊꯣꯟꯕꯥ ꯌꯥꯗꯔꯦ $1 ꯗꯒꯤ $2",
+ "filedeleteerror": "$1 ꯐꯥꯏꯜ ꯀꯛꯊꯠꯄꯥ ꯌꯥꯗꯔꯦ",
+ "directorycreateerror": "$1 ꯗꯥꯏꯔꯦꯛꯇꯔꯤ ꯁꯦꯝꯕꯥ ꯌꯥꯗꯔꯦ",
+ "directoryreadonlyerror": "$1 ꯗꯥꯏꯔꯦꯛꯇꯔꯤ ꯁꯤ ꯄꯥꯅꯕꯥ ꯈꯛꯇꯅꯤ",
+ "directorynotreadableerror": "$1 ꯗꯥꯏꯔꯦꯛꯇꯔꯤ ꯁꯤ ꯄꯥꯕꯥ ꯌꯥꯗꯦ",
+ "filenotfound": "$1 ꯐꯥꯏꯜ ꯊꯤꯕꯥ ꯐꯪꯗꯔꯦ",
+ "unexpected": "ꯊꯥꯖꯔꯨꯗꯕꯥ ꯃꯁꯤꯡ $1=$2",
+ "formerror": "ꯑꯔꯥꯟꯕꯥ: ꯐꯣꯝ ꯊꯥꯖꯤꯟꯕꯥ ꯌꯥꯗꯦ",
+ "badarticleerror": "ꯃꯁꯤꯒꯤ ꯂꯥꯃꯥꯏꯁꯤꯗꯥ ꯃꯁꯤꯒꯨꯝꯕꯥ ꯃꯥꯑꯣꯡꯁꯤ ꯄꯥꯡꯊꯣꯛꯄꯥ ꯌꯥꯗꯦ",
+ "cannotdelete": "ꯂꯥꯃꯥꯏ ꯅꯠꯇꯔꯒꯥ $1 ꯐꯥꯏꯜ ꯁꯤ ꯀꯛꯊꯠꯄꯥ ꯌꯥꯗꯦ. \nꯃꯁꯤ ꯍꯥꯟꯅꯅ ꯃꯤꯑꯣꯏ ꯈꯔꯅꯥ ꯀꯛꯊꯠꯈꯔꯦ",
+ "cannotdelete-title": "$1 ꯂꯥꯃꯥꯏꯁꯤ ꯀꯛꯊꯠꯄꯥ ꯌꯥꯗꯦ",
+ "delete-hook-aborted": "ꯀꯛꯊꯠꯄꯥ aborted by hook.\nIt gave no ꯁꯟꯇꯣꯛꯅꯥ ꯇꯥꯛꯄꯥ",
+ "no-null-revision": "$1ꯂꯥꯃꯥꯏꯒꯤ ꯑꯅꯧꯕꯥ ꯀꯔꯤꯝꯇꯥ ꯌꯥꯑꯣꯗꯕꯥ ꯑꯃꯨꯛꯍꯟꯕꯥ ꯃꯤꯠꯌꯦꯡꯗꯥ ꯁꯦꯝꯕꯥ ꯌꯥꯗꯦ",
+ "badtitle": "ꯑꯐꯠꯇꯕꯥ ꯃꯃꯤꯡ",
+ "badtitletext": "The requested page title was invalid, empty, or an incorrectly linked inter-language or inter-wiki title.\nIt may contain one or more characters that cannot be used in titles.",
+ "title-invalid-empty": "The requested page title is empty or contains only the name of a namespace.",
+ "title-invalid-utf8": "The requested page title contains an invalid UTF-8 sequence.",
+ "viewsource": "ꯍꯧꯔꯛꯐꯝ ꯎꯨꯇꯂꯨ",
+ "userlogin-yourname": "Username",
+ "userlogin-yourname-ph": "Enter your username",
+ "userlogin-yourpassword": "ꯆꯪꯁꯤꯟꯅꯕꯥ ꯋꯥꯍꯩ",
+ "createacct-yourpassword-ph": "ꯄꯥꯁꯋ꯭ꯇ ꯏꯔꯛ ꯎ",
+ "createacct-yourpasswordagain": "Confirm password",
+ "createacct-yourpasswordagain-ph": "ꯑꯃꯨꯛ ꯍꯟꯅꯥ ꯄꯥꯁꯋ꯭ꯇ ꯏꯌꯨ",
+ "login": "Chang Sinba",
+ "createaccount": "ꯑꯩꯒꯤ ꯑꯣꯏꯕꯥ ꯑꯃꯥ ꯁꯦꯝꯕꯥ",
+ "createacct-emailoptional": "Email address (ꯑꯇꯣꯞꯄꯥ ꯱)",
+ "createacct-email-ph": "Enter your email address",
+ "createacct-submit": "ꯅꯪꯒꯤ ꯑꯦꯀꯥꯎꯟꯇ ꯁꯦꯝꯕꯥ",
+ "createacct-benefit-heading": "{{SITENAME}} ꯁꯤ ꯅꯪꯒꯥ ꯃꯥꯟꯅꯕꯥ ꯃꯤꯑꯣꯏꯁꯤꯡꯅꯥ ꯁꯦꯝꯕꯅꯤ",
+ "createacct-benefit-body1": "{{PLURAL:$1|edit|edits}}",
+ "createacct-benefit-body2": "{{PLURAL:$1|page|pages}}",
+ "createacct-benefit-body3": "ꯍꯧꯖꯤꯛꯀꯤ {{PLURAL:$1|contributor|contributors}}",
+ "loginlanguagelabel": "$1 ꯂꯣꯟ",
+ "pt-login": "Chang Sinba",
+ "pt-createaccount": "ꯑꯩꯒꯤ ꯑꯣꯏꯕꯥ ꯑꯃꯥ ꯁꯦꯝꯕꯥ",
+ "pt-userlogout": "Log out",
+ "bold_sample": "ꯆꯥꯎꯅꯥ ꯏꯕꯥ",
+ "bold_tip": "ꯆꯥꯎꯅꯥ ꯏꯕꯥ",
+ "italic_sample": "ꯋꯥꯔꯦꯡ ꯐꯆꯅꯥ ꯏꯕꯥ",
+ "italic_tip": "ꯋꯥꯔꯦꯡ ꯐꯩꯅꯥ ꯏꯕꯥ",
+ "link_sample": "ꯃꯩꯃꯤꯡꯃꯤ ꯁꯝꯅꯐꯝ",
+ "link_tip": "ꯃꯅꯨꯡꯒꯥ ꯁꯝꯅꯐꯝ",
+ "extlink_sample": "http://www.example.com link title",
+ "extlink_tip": "ꯑꯇꯣꯞꯄꯥꯒꯥ ꯁꯝꯅꯐꯝ",
+ "headline_sample": "ꯃꯀꯣꯛꯀꯤ ꯋꯥꯔꯦꯡ ꯄꯥꯔꯦꯡ",
+ "headline_tip": "꯲ ꯁꯨꯕꯥ ꯃꯀꯣꯛꯀꯤ ꯄꯔꯦꯡ",
+ "nowiki_sample": "ꯍꯥꯞꯆꯤꯟꯂꯨ non formating ꯋꯥꯔꯦꯡꯗꯨ ꯁꯤꯗꯥ",
+ "nowiki_tip": "ꯋꯤꯀꯤꯒꯤ ꯃꯥꯑꯣꯡ ꯁꯦꯝꯕꯗꯨ ꯊꯧꯑꯣꯏꯗꯕꯥ",
+ "image_tip": "ꯅꯝꯁꯤꯟꯂꯕꯥ ꯐꯥꯏꯜ",
+ "media_tip": "ꯐꯥꯏꯜꯒꯤ ꯁꯝꯅꯐꯝ",
+ "sig_tip": "ꯃꯇꯝꯒꯤ ꯏꯁꯇꯥꯝꯒꯥ ꯂꯣꯏꯟꯅꯥ ꯅꯪꯒꯤ ꯈꯨꯇꯌꯦꯛ",
+ "hr_tip": "ꯐꯩꯅꯥ ꯆꯤꯡꯕꯥ ꯂꯥ ꯏ (ꯃꯔꯤꯛ ꯃꯔꯤꯛ ꯑꯣꯏꯅꯥ ꯁꯤꯖꯤꯟꯅꯧ)",
+ "summary": "ꯑꯇꯦꯟꯕꯥ ꯁꯟꯗꯣꯛꯅꯥ ꯇꯥꯛꯄꯥ",
+ "minoredit": "ꯃꯁꯤ ꯑꯄꯤꯛꯄꯥ ꯁꯦꯝꯒꯠꯄꯅꯤ",
+ "watchthis": "ꯃꯁꯤꯒꯤ ꯂꯥꯃꯥꯏꯁꯤ ꯌꯦꯡꯉꯨ",
+ "savearticle": "ꯂꯥꯃꯥꯏ ꯇꯨꯪꯁꯤꯟꯕꯥ",
+ "showpreview": "ꯍꯥꯟꯅꯒꯤꯗꯨ ꯎꯨꯇꯂꯨ",
+ "showdiff": "ꯑꯍꯣꯡꯕꯗꯨ ꯎꯨꯇꯂꯨ",
+ "anoneditwarning": "<strong>Warning:</strong> You are not logged in. Your IP address will be publicly visible if you make any edits. If you <strong>[$1 log in]</strong> or <strong>[$2 create an account]</strong>, your edits will be attributed to your username, along with other benefits.",
+ "loginreqlink": "Chang Sinba",
+ "noarticletext": "There is currently no text in this page.\nYou can [[Special:Search/{{PAGENAME}}|search for this page title]] in other pages,\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} search the related logs],\nor [{{fullurl:{{FULLPAGENAME}}|action=edit}} create this page]</span>.",
+ "noarticletext-nopermission": "There is currently no text in this page.\nYou can [[Special:Search/{{PAGENAME}}|search for this page title]] in other pages, or <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} search the related logs]</span>, but you do not have permission to create this page.",
+ "creating": "Creating $1",
+ "editingsection": "Editing $1 (section)",
+ "template-protected": "ꯉꯥꯛꯊꯣꯛꯂꯕꯥ",
+ "template-semiprotected": "ꯇꯪꯈꯥꯏ ꯉꯥꯛꯊꯣꯛꯂꯕꯥ",
+ "revisionasof": "Revision as of $1",
+ "previousrevision": "ꯑꯔꯤꯕꯥ ꯑꯃꯨꯛ ꯍꯟꯅꯥ ꯌꯦꯡꯕꯥ",
+ "cur": "ꯍꯧ",
+ "last": "ꯃꯥꯃꯥꯡꯒꯤ",
+ "rev-delundel": "ꯑꯍꯣꯡꯕꯥ ꯎꯍꯟꯂꯤꯕꯥ",
+ "difference-title": "$1 ꯒꯤ ꯑꯃꯨꯛꯍꯟꯕꯥ ꯈꯦꯠꯅꯕꯥꯒꯤ ꯃꯔꯛ",
+ "lineno": "ꯂꯥ ꯏ $1",
+ "editundo": "ꯇꯧꯒꯅꯨ",
+ "diff-multi-sameuser": "({{PLURAL:$1|One intermediate revision|$1 intermediate revisions}} by the same user not shown)",
+ "searchresults": "ꯊꯤꯕꯒꯤ ꯐꯣꯜ",
+ "searchresults-title": "Search results for \"$1\"",
+ "prevn": "ꯍꯥꯟꯅꯒꯤ {{PLURAL:$1|$1}}",
+ "nextn": "ꯃꯥꯊꯪ{{PLURAL:$1|$1}}",
+ "nextn-title": "Next $1 {{PLURAL:$1|result|results}}",
+ "shown-title": "Show $1 {{PLURAL:$1|result|results}} per page",
+ "viewprevnext": "ꯎꯨꯇꯂꯨ ($1 {{int:pipe-separator}} $2) ($3)",
+ "searchmenu-new": "<strong>Create the page \"[[:$1]]\" on this wiki!</strong> {{PLURAL:$2|0=|See also the page found with your search.|See also the search results found.}}",
+ "searchprofile-articles": "Kamai c da yaoba pumnamak",
+ "searchprofile-images": "Multimedia",
+ "searchprofile-everything": "Pumnamak",
+ "searchprofile-advanced": "Khumangchaoba",
+ "searchprofile-articles-tooltip": "$1 da thiyu",
+ "searchprofile-images-tooltip": "File gi damak thiba",
+ "searchprofile-everything-tooltip": "Mashida yaoriba c loina thiyu (Ngamgani Lamgi ga loinana)",
+ "searchprofile-advanced-tooltip": "Custom gi ming eramdamgi thiyu",
+ "search-result-size": "$1 ({{PLURAL:$2|1 word|$2 words}})",
+ "search-redirect": "(redirect from $1)",
+ "search-section": "(section $1)",
+ "searchall": "ꯄꯨꯂꯞ",
+ "search-showingresults": "{{PLURAL:$4|Result <strong>$1</strong> of <strong>$3</strong>|Results <strong>$1 – $2</strong> of <strong>$3</strong>}}",
+ "search-nonefound": "ꯃꯁꯤꯒꯤ ꯐꯣꯜꯁꯤꯒꯥ ꯆꯥꯟꯅꯕꯥ ꯂꯩꯇꯦ",
+ "mypreferences": "Preferences",
+ "right-writeapi": "API sijinaduna eba",
+ "newuserlogpage": "User creation log",
+ "enhancedrc-history": "ꯄꯨꯋꯥꯔꯤ",
+ "recentchanges": "ꯍꯧꯖꯤꯛꯀꯤ ꯑꯣꯏꯕꯥ ꯑꯍꯣꯡꯕꯁꯤꯡ",
+ "recentchanges-legend": "ꯍꯧꯖꯤꯛꯀꯤ ꯑꯣꯏꯕꯥ ꯑꯍꯣꯡꯕꯥ ꯈꯟꯐꯝꯁꯤꯡ",
+ "recentchanges-summary": "ꯋꯤꯀꯤꯄꯦꯗꯤꯌꯥ ꯂꯃꯥꯏꯒꯤ ꯍꯧꯖꯤꯛꯀꯤ ꯑꯣꯏꯕꯥ ꯑꯍꯣꯡꯕꯒꯤ ꯃꯐꯝ ꯇꯥꯛꯄꯥ",
+ "recentchanges-label-newpage": "ꯃꯁꯤꯒꯤ ꯁꯦꯝꯒꯠꯄꯁꯤꯅꯥ ꯑꯅꯧꯕꯥ ꯂꯥꯃꯥꯏ ꯱ ꯁꯥꯔꯦ",
+ "recentchanges-label-minor": "ꯃꯁꯤ ꯑꯄꯤꯛꯄꯥ ꯁꯦꯝꯒꯠꯄꯅꯤ",
+ "recentchanges-label-bot": "ꯃꯁꯤꯒꯤ ꯁꯦꯝꯒꯠꯄꯁꯤ ꯕ ꯅꯥ ꯄꯥꯡꯊꯣꯛꯄꯅꯤ",
+ "recentchanges-label-unpatrolled": "ꯃꯁꯤꯒꯤ ꯁꯦꯝꯒꯠꯄꯁꯤ ꯍꯧꯖꯤꯛꯐꯥꯎ ꯌꯦꯡꯁꯤꯟꯗ꯭ꯔꯤ",
+ "recentchanges-label-plusminus": "ꯕꯥꯏꯠꯀꯤ ꯑꯍꯣꯡꯕꯒꯤ ꯃꯇꯪ ꯏꯟꯅꯥ ꯂꯥꯃꯥꯏꯁꯤꯒꯤ ꯑꯆꯧꯕꯥ ꯂꯦꯞꯄꯤ",
+ "recentchanges-legend-heading": "<ꯑꯀꯟꯕꯥ>ꯊꯥꯏꯅꯗꯒꯤ</ꯑꯀꯟꯕꯥ>",
+ "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (also see [[Special:NewPages|list of new pages]])",
+ "rclistfrom": "$2$3 ꯁꯤꯗꯒꯤ ꯍꯧꯔꯒꯥ ꯑꯅꯧꯕꯥ ꯑꯍꯣꯡꯕꯗꯨ ꯎꯨꯇꯂꯨ",
+ "rcshowhideminor": "$1 ꯄꯤꯛꯅꯥ ꯁꯦꯝꯒꯠꯄꯥ",
+ "rcshowhideminor-hide": "ꯂꯣꯇꯄꯥ",
+ "rcshowhidebots": "$1 bots",
+ "rcshowhidebots-show": "ꯎꯨꯇꯄꯥ",
+ "rcshowhideliu": "ꯃꯃꯤꯡ ꯆꯟꯂꯕꯥ ꯄꯥꯏꯔꯤꯕꯥ $1",
+ "rcshowhideliu-hide": "ꯂꯣꯇꯄꯥ",
+ "rcshowhideanons": "$1 ꯃꯁꯛ ꯃꯥꯅꯥꯗꯕꯥ ꯄꯥꯏꯔꯤꯕꯥ ꯃꯤ",
+ "rcshowhideanons-hide": "ꯂꯣꯇꯄꯥ",
+ "rcshowhidemine": "$1 ꯑꯩꯅꯥ ꯁꯦꯝꯒꯠꯄꯁꯤꯡ",
+ "rcshowhidemine-hide": "ꯂꯣꯇꯄꯥ",
+ "rclinks": "$1 ꯒꯤ ꯑꯔꯣꯏꯕꯥ ꯑꯍꯣꯡꯕꯥꯗꯎ ꯎꯨꯇꯂꯎ $2 ꯃꯅꯨꯡꯗꯥ",
+ "diff": "ꯈꯦꯠ",
+ "hist": "ꯄꯨꯋꯥ",
+ "hide": "ꯂꯣꯇꯄꯥ",
+ "show": "ꯎꯨꯇꯄꯥ",
+ "minoreditletter": "ꯃ",
+ "newpageletter": "ꯟ",
+ "boteditletter": "ꯕ",
+ "rc-change-size-new": "{{PLURAL:$1|$1}} ꯍꯣꯡꯗꯣꯛꯑꯕꯥ ꯃꯇꯨꯪꯗꯥ",
+ "recentchangeslinked": "ꯃꯔꯤꯂꯩꯅꯕꯥ ꯑꯍꯣꯡꯕꯁꯤꯡ",
+ "recentchangeslinked-toolbox": "ꯃꯔꯤꯂꯩꯅꯕꯥ ꯑꯍꯣꯡꯕꯁꯤꯡ",
+ "recentchangeslinked-title": "$1 ꯂꯩꯅꯕꯥ ꯑꯍꯣꯡꯕꯁꯤꯡ",
+ "recentchangeslinked-summary": "Enter a page name to see changes on pages linked to or from that page. (To see members of a category, enter {{ns:category}}:Name of category). Changes to pages on [[Special:Watchlist|your Watchlist]] are in <strong>bold</strong>.",
+ "recentchangeslinked-page": "ꯂꯥꯃꯥꯏ ꯃꯥꯃꯤꯡ",
+ "recentchangeslinked-to": "ꯂꯥꯃꯥꯏꯁꯤꯒꯥ ꯁꯝꯅꯐꯝꯒꯤ ꯑꯍꯣꯡꯕꯗꯨ ꯎꯠꯂꯨ ꯄꯤꯔꯝꯂꯤꯕꯥ ꯂꯥꯃꯥꯏꯗꯨ ꯃꯍꯨꯠꯇꯥ",
+ "upload": "ꯐꯥꯏꯜ ꯊꯥꯒꯠꯂꯨ",
+ "filedesc": "ꯑꯇꯦꯟꯕꯥ ꯁꯟꯗꯣꯛꯅꯥ ꯇꯥꯛꯄꯥ",
+ "license-header": "ꯑꯌꯥꯕꯥ",
+ "file-anchor-link": "ꯈꯣꯝꯖꯤꯟꯗꯨꯅꯥ ꯍꯥꯞꯐꯝ",
+ "filehist": "ꯐꯥꯏꯜꯒꯤ ꯄꯨꯋꯥꯔꯤ",
+ "filehist-help": "Cheichat/Matamda nammmu matam aduda file adu ooonaba",
+ "filehist-current": "Houjikki",
+ "filehist-datetime": "ꯆꯩꯆꯠ/ꯃꯇꯝ",
+ "filehist-thumb": "Khutpina namba",
+ "filehist-thumbtext": "Thumbnail for version as of $1",
+ "filehist-user": "ꯄꯥꯏꯔꯤꯕꯥ",
+ "filehist-dimensions": "ꯄꯥꯛ ꯆꯥꯎꯕꯥ",
+ "filehist-comment": "ꯑꯄꯥꯝꯕꯥ ꯐꯣꯡꯗꯣꯛ ꯎ",
+ "imagelinks": "ꯐꯥꯏꯜꯒꯤ ꯁꯤꯖꯤꯟꯅꯐꯝ",
+ "linkstoimage": "The following {{PLURAL:$1|page links|$1 pages link}} to this file:",
+ "nolinkstoimage": "ꯃꯁꯤꯒꯤ ꯂꯥꯃꯥꯏꯁꯤꯒꯥ ꯃꯔꯤ ꯂꯩꯅꯕꯥ ꯁꯝꯅꯐꯝ ꯐꯥꯏꯜ ꯂꯩꯇꯦ",
+ "sharedupload-desc-here": "This file is from $1 and may be used by other projects.\nThe description on its [$2 file description page] there is shown below.",
+ "upload-disallowed-here": "ꯃꯁꯤꯒꯤ ꯐꯥꯏꯜꯁꯤ ꯅꯪꯅꯥ ꯑꯃꯨꯛ ꯍꯟꯅꯥ ꯏꯕꯥ ꯌꯥꯔꯣꯏ",
+ "randompage": "ꯆꯥꯡ ꯅꯥꯏꯗꯕꯥ ꯂꯥꯃꯥꯏ",
+ "nbytes": "$1 {{PLURAL:$1|byte|bytes}}",
+ "newpages": "ꯑꯅꯧꯕꯥ ꯂꯥꯃꯥꯏꯁꯤꯡ",
+ "booksources": "ꯂꯥꯏꯔꯤꯛꯀꯤ ꯍꯧꯔꯛꯐꯝ",
+ "log": "ꯆꯪꯕꯥ",
+ "allpagessubmit": "ꯆꯠꯂꯨ",
+ "mywatchlist": "Watchlist",
+ "watch": "ꯌꯦꯡꯕꯥ",
+ "rollbacklink": "ꯑꯃꯨꯛ ꯍꯟꯍꯟꯕꯥ",
+ "namespace": "ꯃꯥꯃꯤꯡꯒꯤ ꯃꯐꯝ",
+ "invert": "Khanlibadu Makoktagi lak hanba",
+ "tooltip-invert": "Akhannaba maming gi manungda page tungi ahongba lotnaba oopu du yeng ngoo",
+ "namespace_association": "Maming eefam ga marileinaba",
+ "tooltip-namespace_association": "Oopu du yengoo maming eefam gi hiramga mari leinaba khangatlaba maming eefam amadi wa ngangfam manung channaba",
+ "blanknamespace": "ꯃꯔꯨꯑꯣꯏꯕꯥ",
+ "contributions": "{{GENDER:$1|User}} ꯈꯣꯝꯒꯠꯂꯛꯄꯁꯤꯡ",
+ "mycontris": "ꯈꯣꯝꯒꯠꯂꯛꯂꯤꯕꯁꯤꯡ",
+ "anoncontribs": "ꯈꯣꯝꯒꯠꯂꯛꯂꯤꯕꯁꯤꯡ",
+ "month": "ꯃꯗꯨꯒꯤ ꯊꯥꯗꯒꯤ (ꯑꯃꯗꯤ ꯅꯧꯔꯤꯕꯥ)",
+ "year": "ꯃꯗꯨꯒꯤ ꯆꯥꯍꯤꯗꯒꯤ (ꯑꯃꯗꯤ ꯅꯧꯔꯤꯕꯥ)",
+ "whatlinkshere": "ꯃꯁꯤꯗꯥ ꯀꯔꯤ ꯁꯝꯃꯤ",
+ "whatlinkshere-title": "$1 ꯒꯥ ꯃꯔꯤ ꯂꯩꯅꯕꯥ ꯁꯝꯅꯐꯝ",
+ "whatlinkshere-page": "ꯂꯥꯃꯥꯏ",
+ "linkshere": "$2<strong> ꯒꯥ ꯁꯝꯅꯐꯝ ꯑꯣꯏꯕꯥ ꯂꯥꯃꯥꯏꯁꯤꯡ",
+ "isredirect": "ꯑꯃꯨꯛ ꯍꯟꯂꯛꯄꯥ ꯂꯥꯃꯥꯏ",
+ "istemplate": " transclusions",
+ "isimage": "ꯐꯥꯏꯜꯒꯤ ꯁꯝꯅꯐꯝ",
+ "whatlinkshere-prev": "{{PLURAL:$1|previous|previous $1}}",
+ "whatlinkshere-next": "{{PLURAL:$1|next|next $1}}",
+ "whatlinkshere-links": " ꯁꯝꯅꯐꯝ",
+ "whatlinkshere-hideredirs": "$1 redirects",
+ "whatlinkshere-hidetrans": "$1 transclusions",
+ "whatlinkshere-hidelinks": "$1 ꯁꯝꯅꯐꯝ",
+ "whatlinkshere-filters": "ꯁꯦꯡꯇꯣꯛꯐꯝ",
+ "blocklink": "Thingba",
+ "contribslink": "ꯐꯪꯉꯛꯄꯥ",
+ "movelogpage": "ꯂꯣꯒ ꯁꯤ ꯂꯦꯡꯍꯟꯂꯨ",
+ "export": "ꯂꯥꯃꯥꯏꯁꯤꯡ ꯄꯨꯊꯣꯛꯈꯣ",
+ "thumbnail-more": "ꯆꯥꯑꯣꯍꯟꯕꯥ",
+ "tooltip-pt-userpage": "{{GENDER:|Your user}} ꯂꯥꯃꯥꯏ",
+ "tooltip-pt-mytalk": "{{GENDER:|Your}} ꯉꯥꯡꯐꯝ ꯂꯥꯃꯥꯏ",
+ "tooltip-pt-preferences": "{{GENDER:|Your}} preferences",
+ "tooltip-pt-watchlist": "ꯑꯍꯣꯡꯕꯗꯥ ꯌꯦꯡꯁꯤꯟꯅꯕꯥ ꯅꯪꯒꯤ ꯂꯥꯃꯥꯏ ꯄꯔꯦꯡ ꯱",
+ "tooltip-pt-mycontris": "A list of {{GENDER:|your}} ꯈꯣꯝꯒꯠꯂꯛꯂꯤꯕꯥ ꯁꯤꯡ",
+ "tooltip-pt-login": "ꯅꯪꯅꯥ ꯃꯅꯨꯡ ꯆꯪꯉꯛꯄꯁꯤ ꯄꯨꯛꯅꯤꯡ ꯊꯧꯒꯠꯂꯤ, ꯇꯧꯕꯇꯕꯨ ꯃꯁꯤ ꯁꯪꯁꯣꯏ ꯁꯣꯏꯗꯅꯥ ꯆꯡꯕꯗꯤ ꯅꯠꯇꯦ",
+ "tooltip-pt-logout": "Log out",
+ "tooltip-pt-createaccount": "ꯅꯪꯒꯤ ꯑꯣꯏꯕꯥ ꯱ ꯁꯦꯝꯕꯥ ꯑꯃꯥꯁꯨꯪ ꯃꯅꯨꯡ ꯆꯪꯁꯤꯟꯕꯥꯁꯤ ꯄꯨꯛꯅꯤꯡ ꯊꯧꯒꯠꯂꯤ, ꯇꯧꯕꯇꯕꯨ ꯃꯁꯤ ꯁꯪꯁꯣꯏ ꯁꯣꯏꯗꯅꯥ ꯆꯡꯕꯗꯤ ꯅꯠꯇꯦ",
+ "tooltip-ca-talk": "ꯃꯅꯨꯡꯆꯟꯂꯤꯕꯥ ꯂꯥꯃꯥꯏꯁꯤꯒꯤ ꯃꯇꯥꯁꯗꯥ ꯈꯟꯅꯥ ꯅꯩꯅꯕꯥ",
+ "tooltip-ca-edit": "ꯃꯁꯤꯒꯤ ꯂꯥꯃꯥꯏꯁꯤ ꯁꯦꯝꯒꯠꯂꯨ",
+ "tooltip-ca-addsection": "Anouba khaidokpadu houro",
+ "tooltip-ca-viewsource": "ꯃꯁꯤꯒꯤ ꯂꯥꯃꯥꯏꯁꯤ ꯉꯥꯛꯊꯣꯛꯂꯦ \nꯅꯪꯅꯥ ꯂꯥꯃꯥꯏꯁꯤꯒꯤ ꯍꯧꯔꯛꯐꯝ ꯎꯒꯅꯤ",
+ "tooltip-ca-history": "ꯍꯧꯈꯔꯕꯥ ꯂꯥꯃꯥꯏ ꯑꯃꯨꯛ ꯍꯟꯅꯥ ꯌꯦꯡꯕꯥ",
+ "tooltip-ca-move": "ꯃꯁꯤꯒꯤ ꯂꯥꯃꯥꯏꯁꯤ ꯂꯦꯡꯍꯟꯂꯨ",
+ "tooltip-ca-watch": "ꯅꯪꯒꯤ ꯌꯦꯡꯅꯕꯥ ꯄꯥꯔꯦꯡꯗꯨꯗꯥ ꯍꯥꯞꯆꯏꯟꯂꯨ ꯃꯁꯤꯒꯤ ꯂꯥꯃꯥꯏꯁꯤ",
+ "tooltip-search": "ꯊꯤꯔꯣ ꯃꯐꯝꯗꯨꯒꯤ ꯃꯃꯤꯡ",
+ "tooltip-search-go": "Leiraga Chatlu madugi chapchaba Lamai Duda",
+ "tooltip-search-fulltext": "ꯏꯔꯤꯕꯥ ꯃꯇꯦꯛꯁꯤꯒꯤ ꯂꯃꯥꯏ ꯁꯤ ꯊꯤꯔꯣ",
+ "tooltip-p-logo": "ꯃꯔꯨ ꯑꯣꯏꯕꯥ ꯂꯥꯃꯥꯏꯗꯨꯗꯥ ꯌꯧꯁꯤꯟꯂꯨ",
+ "tooltip-n-mainpage": "ꯃꯔꯨ ꯑꯣꯏꯕꯥ ꯂꯥꯃꯥꯏꯗꯨꯗꯥ ꯌꯧꯁꯤꯟꯂꯨ",
+ "tooltip-n-mainpage-description": "ꯃꯔꯨ ꯑꯣꯏꯕꯥ ꯂꯥꯃꯥꯏꯗꯨꯗꯥ ꯌꯧꯁꯤꯟꯂꯨ",
+ "tooltip-n-portal": "ꯊꯧꯑꯣꯡ ꯂꯥꯛꯄꯗꯨꯒꯤ ꯃꯔꯝꯗ꯬",
+ "tooltip-n-currentevents": "ꯆꯠꯊꯔꯤꯕꯥ ꯊꯧꯔꯝꯁꯤꯒꯤ ꯃꯅꯨꯒꯤ ꯑꯣꯏꯕꯥ ꯋꯥꯔꯣꯟꯗꯨ ꯄꯨꯊꯣꯛ ꯎ",
+ "tooltip-n-recentchanges": "ꯍꯧꯖꯤꯛꯀꯤ ꯑꯣꯏꯅꯥ ꯋꯤꯀꯤꯄꯦꯗꯤꯌꯥꯗꯥ ꯑꯍꯣꯡꯕꯥꯁꯤꯡꯒꯤ ꯄꯥꯔꯦꯡ",
+ "tooltip-n-randompage": "ꯆꯥꯡ ꯅꯥꯏꯗꯕꯥ ꯂꯃꯥꯏ ꯍꯥꯞꯆꯤꯟꯕꯥ",
+ "tooltip-n-help": "ꯄꯨꯊꯣꯔꯛꯅꯕꯥ ꯃꯐꯝꯅꯤ",
+ "tooltip-t-whatlinkshere": "Mashigi Lamai c da samliba wiki parent ama",
+ "tooltip-t-recentchangeslinked": "ꯃꯁꯤꯒꯤ ꯂꯃꯥꯏꯁꯤꯒꯥ ꯃꯔꯤ ꯂꯩꯅꯕꯥ ꯍꯧꯖꯤꯛꯀꯤ ꯑꯍꯣꯡꯕꯥ ꯂꯥꯃꯥꯏꯁꯤꯡ",
+ "tooltip-feed-atom": "ꯂꯥꯃꯥꯏꯁꯤꯒꯤ ꯃꯁꯥ ꯃꯇꯣꯝꯇꯥ ꯌꯣꯛꯈꯠꯂꯛꯄꯥ",
+ "tooltip-t-contributions": " {{GENDER:$1|this user}} ꯅꯥ ꯈꯣꯝꯖꯤꯟꯂꯛꯂꯤꯕꯥ ꯄꯥꯔꯦꯡ ꯱",
+ "tooltip-t-upload": "ꯐꯥꯏꯜꯁꯤꯡ ꯊꯥꯒꯠꯂꯨ",
+ "tooltip-t-specialpages": "Akhanaba Lamai gi Parent Ama",
+ "tooltip-t-print": "Namba Yaba ma ong gi Lamai",
+ "tooltip-t-permalink": "Amuk han na yengba lamaisigi Lengdaba Samnafam",
+ "tooltip-ca-nstab-main": "ꯂꯃꯥꯏꯁꯤꯒꯤ ꯑꯌꯥꯎꯕꯁꯤꯡꯗꯨ ꯎꯨꯇꯂꯨ",
+ "tooltip-ca-nstab-user": "ꯁꯤꯖꯤꯟꯅꯔꯤꯕꯥ ꯂꯥꯃꯥꯏꯁꯤ ꯌꯦꯡꯕꯥ",
+ "tooltip-ca-nstab-special": "ꯃꯁꯤ ꯑꯈꯟꯅꯕꯥ ꯂꯥꯃꯥꯏꯅꯤ, ꯁꯦꯝꯒꯠꯄꯥ ꯌꯥꯔꯣꯏ",
+ "tooltip-ca-nstab-image": "File lamai du ootlu",
+ "tooltip-ca-nstab-template": "ꯇꯦꯝꯄꯂꯦꯠ ꯇꯨ ꯎꯨꯠꯂꯨ",
+ "tooltip-ca-nstab-category": "Macahkhaiba lamai sure oootlooo",
+ "tooltip-save": "ꯅꯪꯒꯤ ꯑꯍꯣꯡꯕꯗꯨ ꯇꯨꯡꯁꯤꯟꯂꯨ",
+ "tooltip-preview": "ꯅꯪꯒꯤ ꯑꯍꯣꯡꯕꯗꯨ ꯑꯃꯨꯛ ꯍꯟꯅꯥ ꯎꯠꯂꯨ. ꯆꯥꯟꯕꯤꯗꯨꯅꯥ ꯃꯁꯤ ꯍꯥꯟꯅꯥ ꯁꯤꯖꯤꯅꯧ ꯇꯪꯁꯤꯟꯗ꯭ꯔꯤꯉꯧꯗꯥ",
+ "tooltip-diff": "ꯅꯪꯅꯥ ꯏꯔꯤꯕꯥ ꯄꯥꯔꯦꯡꯗꯨꯗꯥ ꯑꯍꯣꯡꯕꯥ ꯎꯠꯂꯨ",
+ "tooltip-rollback": "ꯑꯔꯣꯏꯕꯥ ꯈꯣꯝꯒꯠꯛꯂꯤꯕꯥꯁꯤꯡꯒꯤ ꯁꯦꯝꯒꯠꯄꯁꯤꯡ ꯗꯨꯒꯤ ꯂꯥꯃꯥꯏ ꯑꯃꯨꯛ ꯅꯝꯕꯗꯥ ꯂꯥꯛꯍꯟꯂꯨ ꯍꯥꯟꯅꯒꯤ ꯃꯐꯝꯗꯨꯗꯥ",
+ "tooltip-undo": "\"Undo\" reverts this edit and opens the edit form in preview mode. It allows adding a reason in the summary.",
+ "tooltip-summary": "ꯑꯇꯦꯟꯕꯥ ꯀꯨꯞꯅꯥ ꯁꯟꯗꯣꯛꯅꯩ ꯇꯥꯛꯄꯥ ꯏꯌꯨ",
+ "simpleantispam-label": "Anti-spam check.\nDo <strong>not</strong> fill this in!",
+ "pageinfo-robot-noindex": "ꯌꯥꯍꯟꯗꯕꯥ",
+ "pageinfo-subpages-name": "ꯂꯥꯃꯥꯏꯁꯤ ꯒꯤ ꯃꯅꯨꯡ ꯆꯟꯕꯥ ꯀꯨꯞꯊꯕꯥ ꯂꯥꯃꯥꯏꯁꯤꯡ",
+ "pageinfo-subpages-value": "$1 ($2 {{PLURAL:$2|redirect|redirects}}; $3 {{PLURAL:$3|non-redirect|non-redirects}})",
+ "pageinfo-magic-words": "Magic {{PLURAL:$1|word|words}} ($1)",
+ "pageinfo-toolboxlink": "ꯂꯥꯃꯥꯏꯒꯤ ꯃꯇꯥꯡꯗꯥ",
+ "previousdiff": "ꯑꯔꯤꯕꯥ ꯁꯦꯝꯒꯠꯂꯛꯐꯝ",
+ "file-info-size": "$1 × $2 pixels, file size: $3, MIME type: $4",
+ "file-nohires": "ꯃꯁꯤꯗꯒꯤ ꯍꯦꯟꯅꯥ ꯁꯦꯡꯕꯥ ꯂꯩꯇꯔꯦ",
+ "svg-long-desc": "SVG file, nominally $1 × $2 pixels, file size: $3",
+ "show-big-image": "File Asengba",
+ "show-big-image-preview": "Size of this preview: $1.",
+ "show-big-image-other": "Other {{PLURAL:$2|resolution|resolutions}}: $1.",
+ "show-big-image-size": "$1 × $2 pixels",
+ "metadata": "ꯃꯦꯇꯥꯗꯥꯇꯥ",
+ "metadata-help": "This file contains additional information, probably added from the digital camera or scanner used to create or digitize it.\nIf the file has been modified from its original state, some details may not fully reflect the modified file.",
+ "metadata-fields": "ꯃꯥꯇꯥꯗꯥꯇꯥꯒꯤ ꯃꯥꯃꯤꯒꯤ ꯄꯥꯔꯦꯡ ꯑꯗꯨ ꯃꯥꯃꯤꯒꯤ ꯂꯥꯃꯥꯏꯗꯨꯒꯤ ꯄꯥꯎꯖꯦꯜꯗꯥ ꯎꯨꯇꯂꯦ ꯃꯦꯇꯥꯗꯥꯇꯥ ꯒꯤ\nꯎꯨꯇꯊꯣꯛꯐꯝꯗꯨ ꯀꯥꯏꯔꯥꯀꯥꯟꯗꯥ \nꯑꯇꯩꯗꯤ ꯂꯣꯠꯂꯅꯤ ꯎꯨꯇꯄꯥ ꯉꯝꯗꯕꯒꯤ\n* make\n* model\n* datetimeoriginal\n* exposuretime\n* fnumber\n* isospeedratings\n* focallength\n* artist\n* copyright\n* imagedescription\n* gpslatitude\n* gpslongitude\n* gpsaltitude",
+ "exif-orientation": "ꯃꯐꯝ ꯆꯥꯟꯅꯍꯟꯕꯥ",
+ "exif-xresolution": " resolution ꯐꯩꯅꯥ",
+ "exif-yresolution": " resolution ꯌꯨꯡꯅꯥ",
+ "exif-datetime": "ꯐꯥꯏꯜ ꯍꯣꯡꯕꯒꯤ ꯆꯩꯆꯠ ꯑꯃꯗꯤ ꯃꯇꯝ",
+ "exif-make": "Camera ꯁꯥꯔꯤꯕꯁꯤꯡ",
+ "exif-model": "Camera model",
+ "exif-software": "Software ꯁꯤꯖꯤꯟꯅꯔꯤꯕꯥ",
+ "exif-exifversion": "Exif version",
+ "exif-colorspace": "ꯉꯛꯁꯝꯒꯤ ꯑꯍꯥꯡꯕꯥ",
+ "exif-datetimeoriginal": "data generationꯒꯤ ꯃꯇꯝ ꯑꯝꯗꯤ ꯆꯩꯆꯠ",
+ "exif-datetimedigitized": "ꯃꯥꯃꯤ ꯇꯥꯏꯕꯪꯗꯥ ꯍꯥꯞꯆꯤꯟꯕꯒꯤ ꯃꯇꯝ ꯑꯃꯥꯗꯤ ꯆꯩꯆꯠ",
+ "exif-orientation-1": "ꯆꯥꯡ ꯅꯥꯏꯅꯥ",
+ "namespacesall": "Pullap",
+ "monthsall": "ꯄꯨꯂꯞ",
+ "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|talk]])",
+ "specialpages": "MediaWiki:Bs-wikiadmin-mediawiki-akhannaba-lamai-text/mni",
+ "tag-filter": "[[Special:Tags|Tag]] filter:",
+ "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|Tag|Tags}}]]: $2)",
+ "logentry-delete-delete": "$1 {{GENDER:$2|deleted}} page $3",
+ "logentry-newusers-create": "User account $1 was {{GENDER:$2|created}}",
+ "searchsuggest-search": "ꯊꯤꯔꯣ ꯃꯐꯝꯗꯨꯒꯤ ꯃꯃꯤꯡ"
+}
"Macofe",
"進也",
"Liuxinyu970226",
- "Yoxem"
+ "Yoxem",
+ "Matěj Suchánek"
]
},
"tog-underline": "Liân-kiat oē té-sûn:",
"filemissing": "Bô tóng-àn",
"import": "Su-ji̍p ia̍h",
"tooltip-pt-userpage": "{{GENDER:|Lí ê iōng-chiá}} ê ia̍h",
- "tooltip-pt-mytalk": "{{GENDER:Lí}} ê thó-lūn ia̍h",
+ "tooltip-pt-mytalk": "{{GENDER:|Lí}} ê thó-lūn ia̍h",
"tooltip-pt-preferences": "{{GENDER:|Lí ê}} siat-tēng",
"tooltip-pt-watchlist": "你監視的頁有改過的清單",
"tooltip-pt-mycontris": "{{GENDER:|Lí}} ê kòng-hiàn lia̍t-toaⁿ",
"backend-fail-usable": "Nun se può lieggere o scrivere 'o file \"$1\" pecché mancano 'e permesse sufficiente o nun esiste 'a cartella/cuntenitore.",
"filejournal-fail-dbconnect": "Nun se può fà connessione a l'archivio d' 'o database pe' puté astipà archivie 'n rezza \"$1\".",
"filejournal-fail-dbquery": "Nun se può agghiurnà l'archivio d' 'o database pe' puté astipà l'archivie 'n rezza \"$1\".",
- "lockmanager-notlocked": "Nun se può sbloccà \"$1\"; nun è bluccato.",
+ "lockmanager-notlocked": "Nun se può sbloccà \"$1\"; nun sta bluccato.",
"lockmanager-fail-closelock": "Nun se può nchiure 'o file 'e blocco pe' \"$1\".",
"lockmanager-fail-deletelock": "Nun se può scancellà 'o file 'e blocco pe' \"$1\".",
"lockmanager-fail-acquirelock": "Nun se può piglià 'o blocco pe' \"$1\".",
"sorbsreason": "L'indirizzo IP vuosto è elencato comm'a nu proxy araputo dint' 'a lista DNSBL ausata 'a {{SITENAME}}.",
"sorbs_create_account_reason": "L'indirizzo IP d' 'o vuosto è elencato comm'a nu proxy araputo dint' 'a DNSBL ausata 'a {{SITENAME}}. Nun putite crià nu cunto.",
"xffblockreason": "N'indirizzo IP prisente dint' 'e cap'e paggena X-Forwarded-For, o chillu d' 'o vuosto o chillu 'e n'atu server proxy ca stat'ausann, è stato bloccato. 'O mutivo origgenale 'e blocco era: $1",
- "cant-see-hidden-user": "L'utente ca state a bluccà è stato già bluccato e annascunnuto. Si nun tenite 'o deritto ''hideuser'', nun putite veré stu blocco d'utente.",
+ "cant-see-hidden-user": "L'utente ca state fremmanno he sito bluccato e annascunnuto già. Si nun tenite 'o deritto ''hideuser'', nun putite veré stu blocco utente.",
"ipbblocked": "Nun putite bloccà o sbluccà utente pecche vuje stesso site bluccato.",
"ipbnounblockself": "Nun avite permesso a ve bluccà vuje stesso.",
"lockdb": "Nzerra 'o database",
"lockdbsuccesstext": "'O database è stato bloccato.<br />\nArricuordateve 'e [[Special:UnlockDB|luvà 'o blocco]] appriesso c' 'a manutenziona sarrà fernuta.",
"unlockdbsuccesstext": "'O database è stato sbluccato.",
"lockfilenotwritable": "Nun se può scrivere ncopp' 'o file 'e blocco d' 'o database.\nPe' bluccà o sbluccà 'o database abbesuogne 'e scrivere dint' 'o server web.",
- "databaselocked": "'O database è bluccato già.",
- "databasenotlocked": "'O database nun è bluccato.",
+ "databaselocked": "'O database sta stutato già.",
+ "databasenotlocked": "'O database nun sta stutato.",
"lockedbyandtime": "(pe' {{GENDER:$1|$1}} 'o $2 a 'e $3)",
"move-page": "Mòve $1",
"move-page-legend": "Mòve paggena",
"tags-deactivate": "stuta",
"tags-hitcount": "$1 {{PLURAL:$1|cagnamiento|cagnamiente}}",
"tags-manage-no-permission": "Nun tenite 'o permesso pe' cagnà 'e tag.",
- "tags-manage-blocked": "Nun putite cagnà sti tag quanno site bluccato/a.",
+ "tags-manage-blocked": "Nun putite cagnà sti tag quanno state {{GENDER:$1|fremmato|freammata}}.",
"tags-create-heading": "Crìa nu tag nuovo",
"tags-create-explanation": "Comme predefinito, 'e tag criate nuove nuove se farranno disponibbele pe ll'ausà ll'utente e re bot",
"tags-create-tag-name": "Nomme 'e ll'etichetta ('o tag):",
"tags-apply-not-allowed-one": "'O tag \"$1\" nun è premmesso a se ffà manualmente apprecà.",
"tags-apply-not-allowed-multi": "{{PLURAL:$2|'O tag ccà abbascio nun è|'E tag ccà abbascio nun songo}} premmesse 'e s'apprecà manualmente: $1",
"tags-update-no-permission": "Nun tenite premmesse pe' putè azzeccà o luvà tag 'e cagnamiento 'a 'e verziune nnividuale o entrate 'o log.",
- "tags-update-blocked": "Nun putite azzeccà o luvà tag quanno site bluccato/a.",
+ "tags-update-blocked": "Nun putite azzeccà o luvà tag quanno state {{GENDER:$1|bluccato|bluccata}}.",
"tags-update-add-not-allowed-one": "'O tag \"$1\" nun è premmesso 'e s'azzeccà 'n manuale.",
"tags-update-add-not-allowed-multi": "{{PLURAL:$2|'O tag ccà abbascio nun è|'E tag ccà abbascio nu so'}} premmesse 'e s'azzeccà manualmente: $1",
"tags-update-remove-not-allowed-one": "'O tag \"$1\" nun è permesso d' 'o luvà.",
"revdelete-uname-unhid": "nomme utente fatto avvedè",
"revdelete-restricted": "restriziune apprecate a ll'ammenistrature",
"revdelete-unrestricted": "restriziune luvate a ll'ammenistrature",
- "logentry-block-block": "$1 {{GENDER:$2|ave bluccato}} {{GENDER:$4|$3}} cu na scadenza 'e $5 $6",
+ "logentry-block-block": "$1 {{GENDER:$2|ave fremmato}} {{GENDER:$4|$3}} cu na scadenza 'e $5 $6",
"logentry-block-unblock": "$1 {{GENDER:$2|ave sbluccato}} {{GENDER:$4|$3}}",
"logentry-block-reblock": "$1 {{GENDER:$2|ave cagnato}} 'e mpustaziune 'e blocco pe' {{GENDER:$4|$3}} cu na scadenza 'e $5 $6",
- "logentry-suppress-block": "$1 {{GENDER:$2|ave bluccato}} {{GENDER:$4|$3}} cu na scadenza 'e $5 $6",
+ "logentry-suppress-block": "$1 {{GENDER:$2|ave fremmato}} {{GENDER:$4|$3}} cu na scadenza 'e $5 $6",
"logentry-suppress-reblock": "$1 {{GENDER:$2|cagnaje}} 'e mpustaziune 'e blocco 'e {{GENDER:$4|$3}} ch' 'ammaturasse a nu $5 $6",
"logentry-import-upload": "$1 {{GENDER:$2|ave mpurtato}} $3 pe' bbìa d' 'a carreca",
"logentry-import-upload-details": "$1 {{GENDER:$2|mpurtaje}} $3 pe' carreca 'e file ($4 {{PLURAL:$4|verziona|verziune}})",
"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",
"converter-manual-rule-error": "Er is een fout gedetecteerd in een handmatig toegevoegde taalconversieregel.",
"undo-success": "Deze bewerking kan ongedaan gemaakt worden.\nHieronder staat de tekst waarin de wijziging ongedaan is gemaakt.\nControleer voor het opslaan of het resultaat gewenst is.",
"undo-failure": "De wijziging kan niet ongedaan gemaakt worden vanwege andere strijdige wijzigingen.",
+ "undo-main-slot-only": "De wijziging kan niet ongedaan gemaakt wordenomdat deze inhoud bevat die niet in het hoofdslot bevind.",
"undo-norev": "De bewerking kon niet ongedaan gemaakt worden, omdat die niet bestaat of is verwijderd.",
"undo-nochange": "De bewerking lijkt al ongedaan gemaakt te zijn.",
"undo-summary": "Versie $1 van [[Special:Contributions/$2|$2]] ([[User talk:$2|overleg]]) ongedaan gemaakt",
"rcfilters-activefilters": "Actieve filters",
"rcfilters-activefilters-hide": "Verbergen",
"rcfilters-activefilters-show": "Weergeven",
+ "rcfilters-activefilters-hide-tooltip": "Verberg actieve filters",
+ "rcfilters-activefilters-show-tooltip": "Toon active filters",
"rcfilters-advancedfilters": "Geavanceerde filters",
"rcfilters-limit-title": "Resultaten om te tonen",
"rcfilters-limit-and-date-label": "$1 {{PLURAL:$1|wijziging|wijzigingen}}, $2",
"mw-widgets-dateinput-placeholder-month": "ÅÅÅÅ-MM",
"mw-widgets-titleinput-description-new-page": "sida finst ikkje enno",
"mw-widgets-titleinput-description-redirect": "omdirigering til $1",
+ "mw-widgets-categoryselector-add-category-placeholder": "Legg til ein kategori …",
"mw-widgets-usersmultiselect-placeholder": "Legg til fleire …",
"date-range-from": "Frå dato:",
"date-range-to": "Til dato:",
"password-login-forbidden": "Wykorzystanie tej nazwy użytkownika lub hasła zostało zabronione.",
"mailmypassword": "Zresetuj hasło",
"passwordremindertitle": "Nowe tymczasowe hasło do {{GRAMMAR:D.lp|{{SITENAME}}}}",
- "passwordremindertext": "Ktoś (prawdopodobnie Ty, spod adresu IP $1)\npoprosił o przesłanie nowego hasła do {{GRAMMAR:D.lp|{{SITENAME}}}} ($4).\nDla użytkownika „$2” zostało wygenerowane tymczasowe hasło i jest nim „$3”.\nJeśli było to zamierzone działanie, to po zalogowaniu się, musisz podać nowe hasło.\nTymczasowe hasło wygaśnie za {{PLURAL:$5|1 dzień|$5 dni}}.\n\nJeśli to nie Ty prosiłeś o przesłanie hasła lub przypomniałeś sobie hasło i nie chcesz go zmieniać, wystarczy, że zignorujesz tę wiadomość i dalej będziesz się posługiwać swoim dotychczasowym hasłem.",
+ "passwordremindertext": "Ktoś (z adresu IP $1) poprosił o przesłanie nowego hasła do {{GRAMMAR:D.lp|{{SITENAME}}}} ($4).\nDla użytkownika „$2” zostało wygenerowane tymczasowe hasło „$3”.\nJeśli było to zamierzone działanie, po zalogowaniu się, musisz podać nowe hasło.\nTymczasowe hasło wygaśnie za {{PLURAL:$5|1 dzień|$5 dni}}.\n\nJeśli to ktoś inny prosił o przesłanie hasła lub przypomniałeś sobie hasło i nie chcesz go zmieniać, wystarczy, że zignorujesz tę wiadomość i dalej będziesz się posługiwał swoim dotychczasowym hasłem.",
"noemail": "Brak zdefiniowanego adresu e‐mail dla użytkownika „$1”.",
"noemailcreate": "Musisz podać prawidłowy adres e‐mail",
"passwordsent": "Nowe hasło zostało wysłane na adres e‐mail użytkownika „$1”.\nPo otrzymaniu go zaloguj się ponownie.",
"expansion-depth-exceeded-warning": "Strona przekroczyła głębokość rozbudowy",
"parser-unstrip-loop-warning": "Wykryto nieskończoną pętlę",
"unstrip-depth-warning": "Przekroczono maksymalną głębokość zagnieżdżania ($1)",
+ "unstrip-depth-category": "Strony, które przekraczają limit zagnieżdżenia",
"unstrip-size-warning": "Przekroczono maksymalną głębokość zagnieżdżania ($1)",
+ "unstrip-size-category": "Strony, które przekraczają dopuszczalny rozmiar dla funkcji unstrip",
"converter-manual-rule-error": "Błąd w językowych regułach konwersji",
"undo-success": "Edycja może zostać wycofana. Porównaj ukazane poniżej różnice między wersjami, a następnie zapisz zmiany.",
"undo-failure": "Edycja nie może zostać wycofana z powodu konfliktu z wersjami pośrednimi.",
+ "undo-main-slot-only": "Zmiany nie można cofnąć, ponieważ dotyczy treści znajdujących się poza głównym wątkiem.",
"undo-norev": "Edycja nie może być cofnięta, ponieważ nie istnieje lub została usunięta.",
"undo-nochange": "Wygląda na to, że edycja została już anulowana.",
"undo-summary": "Anulowanie wersji $1 autora [[Special:Contributions/$2|$2]] ([[User talk:$2|dyskusja]])",
"rcfilters-activefilters": "Aktywne filtry",
"rcfilters-activefilters-hide": "Ukryj",
"rcfilters-activefilters-show": "Pokaż",
+ "rcfilters-activefilters-hide-tooltip": "Ukryj obszar aktywnych filtrów",
+ "rcfilters-activefilters-show-tooltip": "Pokaż obszar aktywnych filtrów",
"rcfilters-advancedfilters": "Zaawansowane filtry",
"rcfilters-limit-title": "Wyników do pokazania",
"rcfilters-limit-and-date-label": "$1 {{PLURAL:$1|zmiana|zmiany|zmian}}, $2",
"rcfilters-watchlist-showupdated": "<strong>Wytłuszczono</strong> strony, których nie odwiedził{{GENDER:|e|a|e}}ś od czasu zapisania ostatnich zmian.",
"rcfilters-preference-label": "Wyłącz ulepszenia strony Ostatnich zmian",
"rcfilters-preference-help": "Wycofuje wszystkie zmiany interfejsu z 2017 i narzędzia dodane od tamtej pory.",
+ "rcfilters-watchlist-preference-label": "Ukryj ulepszoną wersję listy obserwowanych",
+ "rcfilters-watchlist-preference-help": "Wycofaj zmiany wyglądu interfejsu z 2017 i wszystkie narzędzia dodane wtedy i od tego czasu.",
"rcfilters-filter-showlinkedfrom-label": "Pokaż zmiany na stronach linkowanych z",
"rcfilters-filter-showlinkedfrom-option-label": "<strong>Strony linkowane z</strong> zaznaczonej strony",
"rcfilters-filter-showlinkedto-label": "Pokaż zmiany na stronach linkujących do",
"limitreport-templateargumentsize-value": "$1/$2 {{PLURAL:$2|bajt|bajty|bajtów}}",
"limitreport-expansiondepth": "Największa głębokość ekspansji",
"limitreport-expensivefunctioncount": "Liczba wywołań kosztownych funkcji parsera",
+ "limitreport-unstrip-depth": "Głębokość rekurencji funkcji unstrip",
+ "limitreport-unstrip-size": "Rozmiar dla funkcji unstrip po rozwinięciu",
"limitreport-unstrip-size-value": "$1/$2 {{PLURAL:$2|bajt|bajty|bajtów}}",
"expandtemplates": "Rozwijanie szablonów",
"expand_templates_intro": "We wprowadzonym na tej stronie tekście źródłowym zostaną rozwinięte rekurencyjnie wszystkie szablony.\nRozwinięte także zostaną funkcje parsera takie jak\n<code><nowiki>{{</nowiki>#language:…}}</code> i zmienne jak\n<code><nowiki>{{</nowiki>CURRENTDAY}}</code>.\nW zasadzie rozwijane jest prawie wszystko w podwójnych nawiasach klamrowych.",
"Trigonometria87",
"RadiX",
"Fitoschido",
- "Ed g2s"
+ "Ed g2s",
+ "Matěj Suchánek"
]
},
"tog-underline": "Ligação sublinhada:",
"createacct-loginerror": "A conta foi criada com êxito, mas não pôde ser autenticado automaticamente. Por favor, faça o [[Special:UserLogin|início de sessão manualmente]].",
"noname": "Você não colocou um nome de usuário válido.",
"loginsuccesstitle": "Autenticado",
- "loginsuccess": "'''Agora você está {{GENDER:autenticado|autenticada}} ao wiki {{SITENAME}} como \"$1\"'''.",
+ "loginsuccess": "'''Agora você está {{GENDER:|autenticado|autenticada}} ao wiki {{SITENAME}} como \"$1\"'''.",
"nosuchuser": "Não existe nenhum usuário com o nome \"$1\".\nOs nomes de usuário são sensíveis a letras maiúsculas.\nVerifique se digitou corretamente ou [[Special:CreateAccount|crie uma nova conta]].",
"nosuchusershort": "Não existe um usuário com o nome \"$1\". Verifique o nome que introduziu.",
"nouserspecified": "Você precisa especificar um nome de usuário.",
"rcfilters-activefilters": "Filtros ativos",
"rcfilters-activefilters-hide": "Ocultar",
"rcfilters-activefilters-show": "Exibir",
+ "rcfilters-activefilters-hide-tooltip": "Ocultar a área dos filtros ativos",
+ "rcfilters-activefilters-show-tooltip": "Mostrar a área dos filtros ativos",
"rcfilters-advancedfilters": "Filtros avançados",
"rcfilters-limit-title": "Resultados para mostrar",
"rcfilters-limit-and-date-label": "$1 {{PLURAL:$1|mudança|mudanças}}, $2",
"tog-hidecategorization": "Ocultar categorização de páginas",
"tog-extendwatchlist": "Listagem expandida de todas as mudanças às páginas vigiadas, não apenas das mais recentes",
"tog-usenewrc": "Agrupar alterações por página nas mudanças recentes e páginas vigiadas",
- "tog-numberheadings": "Auto-numerar cabeçalhos",
+ "tog-numberheadings": "Numerar cabeçalhos automaticamente",
"tog-showtoolbar": "Mostrar barra de edição",
"tog-editondblclick": "Editar páginas quando houver um clique duplo",
"tog-editsectiononrightclick": "Possibilitar a edição de secções por clique com o botão direito no título da secção",
"protect_change": "alterar",
"unprotect": "Alterar proteção",
"newpage": "Página nova",
- "talkpagelinktext": "Discussão",
+ "talkpagelinktext": "discussão",
"specialpage": "Página especial",
"personaltools": "Ferramentas pessoais",
"talk": "Discussão",
"viewhelppage": "Ver página de ajuda",
"categorypage": "Ver página de categoria",
"viewtalkpage": "Ver discussão",
- "otherlanguages": "Noutros idiomas",
+ "otherlanguages": "Noutras línguas",
"redirectedfrom": "(Redirecionado de $1)",
"redirectpagesub": "Página de redirecionamento",
"redirectto": "Redireciona para:",
- "lastmodifiedat": "Esta página foi editada pela última vez à(s) $2 de $1.",
+ "lastmodifiedat": "Esta página foi editada pela última vez às $2 de $1.",
"viewcount": "Esta página foi acedida {{PLURAL:$1|uma vez|$1 vezes}}.",
"protectedpage": "Página protegida",
"jumpto": "Ir para:",
"sort-descending": "Ordenar por ordem descendente",
"sort-ascending": "Ordenar por ordem ascendente",
"nstab-main": "Página",
- "nstab-user": "Página d{{GENDER:{{BASEPAGENAME}}|o utilizador|a utilizadora|e utilizador(a)}}",
+ "nstab-user": "Página {{GENDER:{{BASEPAGENAME}}|do utilizador|da utilizadora}}",
"nstab-media": "Multimédia",
"nstab-special": "Página especial",
"nstab-project": "Página do projeto",
"undo-failure": "Não foi possível desfazer a edição por conflito com alterações intermédias.",
"undo-norev": "Não foi possível desfazer a edição porque não existe ou foi apagada.",
"undo-nochange": "A edição parece já ter sido desfeita.",
- "undo-summary": "Desfez a edição $1 de [[Special:Contributions/$2|$2]] ([[User talk:$2|Discussão]])",
+ "undo-summary": "Desfez a edição $1 de [[Special:Contributions/$2|$2]] ([[User talk:$2|discussão]])",
"undo-summary-username-hidden": "Desfez a edição $1 de um utilizador oculto",
"cantcreateaccount-text": "A criação de contas a partir deste endereço IP (<strong>$1</strong>) foi bloqueada por [[User:$3|$3]].\n\nO motivo apresentado por $3 foi <em>$2</em>",
"cantcreateaccount-range-text": "A criação de conta a partir dos endereços IP no intervalo <strong>$1</strong>, que inclui o seu endereço IP (<strong>$4</strong>), foi bloqueada por [[User:$3|$3]].\n\nO motivo apresentado por $3 foi <em>$2</em>",
"rev-deleted-comment": "(resumo da edição suprimido)",
"rev-deleted-user": "(nome de utilizador removido)",
"rev-deleted-event": "(registos de detalhes eliminados)",
- "rev-deleted-user-contribs": "[nome de utilizador(a) ou IP removido do histórico – edição ocultada das contribuições públicas]",
+ "rev-deleted-user-contribs": "[nome de utilizador ou IP removido do histórico – edição ocultada das contribuições públicas]",
"rev-deleted-text-permission": "Esta revisão de página foi <strong>eliminada</strong>.\nEncontrará detalhes no [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registo de eliminações].",
"rev-suppressed-text-permission": "Esta revisão de página foi <strong>suprimida</strong>.\nPode consultar os detalhes no [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} registo de supressões].",
"rev-deleted-text-unhide": "Esta revisão de página foi <strong>eliminada</strong>.\nEncontrará detalhes no [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registo de eliminações].\nPode mesmo assim [$1 ver esta revisão] se deseja prosseguir.",
"gender-unknown": "Ao mencioná-lo, o software irá utilizar palavras de género neutro sempre que possível",
"gender-male": "Ele é um utilizador",
"gender-female": "Ela é uma utilizadora",
- "prefs-help-gender": "Esta preferência é opcional.\nO software usa o seu valor para o endereçar e para o mencionar a outros usando o género gramatical apropriado.\nEsta informação será pública.",
+ "prefs-help-gender": "Esta preferência é opcional.\nO ''software'' usa o valor para se dirigir a si e para o mencionar a outros usando o género gramatical apropriado.\nEsta informação será pública.",
"email": "Correio eletrónico",
"prefs-help-realname": "O fornecimento do nome verdadeiro é opcional.\nSe optar por revelá-lo, será utilizado para atribuir-lhe crédito pelo seu trabalho.",
"prefs-help-email": "Opcional: o endereço de correio eletrónico é opcional, mas será necessário para redefinir a palavra-passe caso esqueça a antiga.",
"userrights-lookup-user": "Selecionar um utilizador",
"userrights-user-editname": "Introduza um nome de utilizador:",
"editusergroup": "Carregar grupos do utilizador",
- "editinguser": "A modificar os privilégios {{GENDER:$1|do utilizador|da utilizadora|do(a) utilizador(a)}} <strong>[[User:$1|$1]]</strong> $2",
+ "editinguser": "A modificar os privilégios {{GENDER:$1|do utilizador|da utilizadora}} <strong>[[User:$1|$1]]</strong> $2",
"viewinguserrights": "A ver os privilégios {{GENDER:$1|do utilizador|da utilizadora}} <strong>[[User:$1|$1]]</strong> $2",
"userrights-editusergroup": "Editar grupos {{GENDER:$1|do utilizador|da utilizadora}}",
"userrights-viewusergroup": "Ver grupos {{GENDER:$1|do utilizador|da utilizadora}}",
- "saveusergroups": "Gravar grupos {{GENDER:$1|do utilizador|da utilizadora|do(a) utilizador(a)}}",
+ "saveusergroups": "Gravar grupos {{GENDER:$1|do utilizador|da utilizadora}}",
"userrights-groupsmember": "Membro de:",
"userrights-groupsmember-auto": "Membro implícito de:",
"userrights-groupsmember-type": "$1",
"group-suppress": "Supressores",
"group-all": "(todos)",
"group-user-member": "{{GENDER:$1|utilizador|utilizadora}}",
- "group-autoconfirmed-member": "{{GENDER:$1|utilizador autoconfirmado|utilizadora autoconfirmada|utilizador(a) autoconfirmado(a)}}",
+ "group-autoconfirmed-member": "{{GENDER:$1|utilizador autoconfirmado|utilizadora autoconfirmada}}",
"group-bot-member": "{{GENDER:$1|robô}}",
"group-sysop-member": "{{GENDER:$1|administrador|administradora}}",
"group-bureaucrat-member": "{{GENDER:$1|burocrata}}",
- "group-suppress-member": "{{GENDER:$1|supressor|supressora|supressor(a)}}",
+ "group-suppress-member": "{{GENDER:$1|supressor|supressora}}",
"grouppage-user": "{{ns:project}}:Utilizadores",
"grouppage-autoconfirmed": "{{ns:project}}:Autoconfirmados",
"grouppage-bot": "{{ns:project}}:Robôs",
"rcfilters-activefilters": "Filtros ativos",
"rcfilters-activefilters-hide": "Ocultar",
"rcfilters-activefilters-show": "Mostrar",
+ "rcfilters-activefilters-hide-tooltip": "Ocultar a área dos filtros ativos",
+ "rcfilters-activefilters-show-tooltip": "Mostrar a área dos filtros ativos",
"rcfilters-advancedfilters": "Filtros avançados",
"rcfilters-limit-title": "Resultados a mostrar",
"rcfilters-limit-and-date-label": "$1 {{PLURAL:$1|mudança|mudanças}}, $2",
"uploadnewversion-linktext": "Carregar uma nova versão deste ficheiro",
"shared-repo-from": "de $1",
"shared-repo": "um repositório partilhado",
+ "filepage.css": "/* Os estilos CSS colocados aqui serão incluídos na página de descrição do ficheiro, também incluída nas wikis clientes externas */",
"upload-disallowed-here": "Não pode substituir este ficheiro.",
"filerevert": "Reverter $1",
"filerevert-legend": "Reverter ficheiro",
"listusersfrom": "Mostrar utilizadores começados por:",
"listusers-submit": "Mostrar",
"listusers-noresult": "Não foram encontrados utilizadores.",
- "listusers-blocked": "({{GENDER:$1|bloqueado|bloqueada|bloqueado(a)}})",
+ "listusers-blocked": "({{GENDER:$1|bloqueado|bloqueada}})",
"activeusers": "Utilizadores ativos",
"activeusers-intro": "Esta é uma lista dos utilizadores com qualquer tipo de atividade {{PLURAL:$1|no último dia|nos últimos $1 dias}}.",
"activeusers-count": "$1 {{PLURAL:$1|ação|ações}} {{PLURAL:$3|no último dia|nos últimos $3 dias}}",
"nowikiemailtext": "Este utilizador optou por não receber correio eletrónico de outros utilizadores.",
"emailnotarget": "O nome do destinatário não existe ou é inválido.",
"emailtarget": "Introduza o nome do destinatário",
- "emailusername": "Utilizador(a):",
+ "emailusername": "Utilizador:",
"emailusernamesubmit": "Enviar",
"email-legend": "Enviar uma mensagem a outro utilizador da wiki {{SITENAME}}",
"emailfrom": "De:",
"mywatchlist": "Páginas vigiadas",
"watchlistfor2": "Para $1 $2",
"nowatchlist": "A sua lista de páginas vigiadas está vazia.",
- "watchlistanontext": "Por favor, inicie sessão para ver ou editar itens da sua lista de páginas vigiadas.",
+ "watchlistanontext": "Para ver ou editar entradas da sua lista de páginas vigiadas, inicie uma sessão, por favor.",
"watchnologin": "Não está autenticado(a)",
"addwatch": "Adicionar às páginas vigiadas",
- "addedwatchtext": "\"[[:$1]]\" e a sua página de discussão foram adicionadas à sua [[Special:Watchlist|lista de páginas vigiadas]].",
- "addedwatchtext-talk": "\"[[:$1]]\" e a sua página associada foram adicionadas à sua lista de [[Special:Watchlist|páginas vigiadas]].",
- "addedwatchtext-short": "A página \"$1\" foi adicionada à sua lista de vigiadas.",
+ "addedwatchtext": "\"[[:$1]]\" e a respetiva página de discussão foram adicionadas à sua [[Special:Watchlist|lista de páginas vigiadas]].",
+ "addedwatchtext-talk": "\"[[:$1]]\" e a respetiva página associada foram adicionadas à sua lista de [[Special:Watchlist|páginas vigiadas]].",
+ "addedwatchtext-short": "A página \"$1\" foi adicionada às suas páginas vigiadas.",
"removewatch": "Remover das páginas vigiadas",
- "removedwatchtext": "\"[[:$1]]\" e a sua página de discussão foram removidas da sua lista de [[Special:Watchlist|páginas vigiadas]].",
- "removedwatchtext-talk": "\"[[:$1]]\" e a sua página associada foram removidas da sua lista de [[Special:Watchlist|páginas vigiadas]].",
- "removedwatchtext-short": "A página \"$1\" foi removida da sua lista de vigiadas.",
+ "removedwatchtext": "\"[[:$1]]\" e a respetiva página de discussão foram removidas da sua lista de [[Special:Watchlist|páginas vigiadas]].",
+ "removedwatchtext-talk": "\"[[:$1]]\" e a respetiva página associada foram removidas da sua lista de [[Special:Watchlist|páginas vigiadas]].",
+ "removedwatchtext-short": "A página \"$1\" foi removida das suas páginas vigiadas.",
"watch": "Vigiar",
"watchthispage": "Vigiar esta página",
"unwatch": "Desinteressar-se",
"unwatchthispage": "Parar de vigiar esta página",
"notanarticle": "Não é uma página de conteúdo",
- "notvisiblerev": "Edição eliminada",
+ "notvisiblerev": "A última revisão feita por um utilizador diferente foi eliminada",
"watchlist-details": "{{PLURAL:$1|Existe $1 página|Existem $1 páginas}} na sua lista de páginas vigiadas (mais as páginas de discussão).",
"wlheader-enotif": "A notificação por correio eletrónico está ativa.",
"wlheader-showupdated": "As páginas modificadas desde a última vez que as visitou aparecem destacadas a <strong>negrito</strong>.",
"deletepage": "Eliminar página",
"confirm": "Confirmar",
"excontent": "o conteúdo era: \"$1\"",
- "excontentauthor": "o conteúdo era: \"$1\", e {{GENDER:$2|o único editor|a única editora|o(a) único(a) editor(a)}} era [[Special:Contributions/$2|$2]] ([[User talk:$2|discussão]])",
+ "excontentauthor": "o conteúdo era: \"$1\", e {{GENDER:$2|o único editor|a única editora}} era [[Special:Contributions/$2|$2]] ([[User talk:$2|discussão]])",
"exbeforeblank": "o conteúdo antes de esvaziar era: \"$1\"",
"delete-confirm": "Eliminar \"$1\"",
"delete-legend": "Eliminar",
"undelete-error-long": "Foram encontrados erros ao tentar restaurar o ficheiro:\n\n$1",
"undelete-show-file-confirm": "Tem a certeza de que quer ver a revisão eliminada do ficheiro \"<nowiki>$1</nowiki>\" de $2 às $3?",
"undelete-show-file-submit": "Sim",
- "namespace": "Domínio:",
+ "namespace": "Espaço nominal:",
"invert": "Inverter seleção",
"tooltip-invert": "Marque esta caixa para esconder as alterações a páginas no domínio selecionado (e no domínio associado, se escolheu fazê-lo)",
"tooltip-whatlinkshere-invert": "Marque esta caixa de seleção para ocultar ligações de páginas dentro do domínio selecionado.",
- "namespace_association": "Domínio associado",
+ "namespace_association": "Espaço nominal associado",
"tooltip-namespace_association": "Marque esta caixa para incluir também o domínio de conteúdo ou de discussão associado à sua seleção",
"blanknamespace": "(Principal)",
"contributions": "Contribuições {{GENDER:$1|do utilizador|da utilizadora}}",
"javascripttest": "Teste de JavaScript",
"javascripttest-pagetext-unknownaction": "Ação \"$1\" desconhecida.",
"javascripttest-qunit-intro": "Consulte a [ $1 documentação de testes] no mediawiki.org.",
- "tooltip-pt-userpage": "A sua página de {{GENDER:|utilizador|utilizadora|utilizador(a)}}",
+ "tooltip-pt-userpage": "A sua página de {{GENDER:|utilizador|utilizadora}}",
"tooltip-pt-anonuserpage": "A página de utilizador para o endereço IP que está a usar",
"tooltip-pt-mytalk": "A {{GENDER:|sua}} página de discussão",
"tooltip-pt-anontalk": "Discussão sobre edições feitas a partir deste endereço IP",
"tooltip-t-recentchangeslinked": "Mudanças recentes nas páginas para as quais esta contém hiperligações",
"tooltip-feed-rss": "''Feed'' RSS desta página",
"tooltip-feed-atom": "''Feed'' Atom desta página",
- "tooltip-t-contributions": "Ver as contribuições {{GENDER:$1|deste utilizador|desta utilizadora|deste(a) utilizador(a)}}",
- "tooltip-t-emailuser": "Enviar uma mensagem de correio a {{GENDER:$1|este utilizador|esta utilizadora|este(a) utilizador(a)}}",
+ "tooltip-t-contributions": "Ver as contribuições {{GENDER:$1|deste utilizador|desta utilizadora}}",
+ "tooltip-t-emailuser": "Enviar uma mensagem de correio a {{GENDER:$1|este utilizador|esta utilizadora}}",
"tooltip-t-info": "Mais informações sobre esta página",
"tooltip-t-upload": "Carregar ficheiros",
"tooltip-t-specialpages": "Lista de páginas especiais",
"interlanguage-link-title-nonlang": "$1 – $2",
"common.css": "/* Código CSS colocado aqui será aplicado a todos os temas */",
"print.css": "/* Código CSS colocado aqui afectará as impressões */",
- "noscript.css": "/* Os estilos CSS colocados aqui afetarão os utilizadores que tenham o JavaScript desativado em seus navegadores */",
+ "noscript.css": "/* Os estilos CSS colocados aqui afetarão os utilizadores que tenham o JavaScript desativado */",
+ "group-autoconfirmed.css": "/* Os estilos CSS colocados aqui só afetarão os utilizadores autoconfirmados */",
+ "group-user.css": "/* Os estilos CSS colocados aqui só afetarão os utilizadores registados */",
+ "group-bot.css": "/* Os estilos CSS colocados aqui só afetarão robôs */",
+ "group-sysop.css": "/* Os estilos CSS colocados aqui só afetarão os administradores */",
+ "group-bureaucrat.css": "/* Os estilos CSS colocados aqui só afetarão os burocratas */",
"common.json": "/* Qualquer JSON colocado aqui será carregado para todos os utilizadores em cada carregamento de página. */",
"common.js": "/* Código Javascript colocado aqui será carregado para todos os utilizadores em cada carregamento de página */",
+ "group-autoconfirmed.js": "/* O código JavaScript colocado aqui só será carregado para utilizadores autoconfirmados */",
+ "group-user.js": "/* O código JavaScript colocado aqui só será carregado para utilizadores registados */",
+ "group-bot.js": "/* O código JavaScript colocado aqui só será carregado para robôs */",
+ "group-sysop.js": "/* O código JavaScript colocado aqui só será carregado para administradores */",
+ "group-bureaucrat.js": "/* O código JavaScript colocado aqui só será carregado para burocratas */",
"anonymous": "{{PLURAL:$1|Utilizador anónimo|Utilizadores anónimos}} da wiki {{SITENAME}}",
"siteuser": "$1 da wiki {{SITENAME}}",
"anonuser": "utilizador anónimo $1 da wiki {{SITENAME}}",
- "lastmodifiedatby": "Esta página foi editada pela última vez à(s) $2 de $1 por $3.",
+ "lastmodifiedatby": "Esta página foi editada pela última vez às $2 de $1 por $3.",
"othercontribs": "Baseado no trabalho de $1.",
"others": "outros",
"siteusers": "{{PLURAL:$2|um utilizador|$2 utilizadores}} da wiki {{SITENAME}} ($1)",
"exif-compression-2": "CCITT Grupo 3 1-D Codificação Unidimensional Huffman Modificado e Run Length Encoding",
"exif-compression-3": "CCITT Grupo 3 codificação de fax",
"exif-compression-4": "CCITT Grupo 4 codificação de fax",
+ "exif-compression-6": "JPEG (antigo)",
"exif-copyrighted-true": "Direitos de autor reservados",
"exif-copyrighted-false": "Estado dos direitos de autor indefinido",
- "exif-photometricinterpretation-1": "Preto e branco (Preto é 0)",
+ "exif-photometricinterpretation-0": "Preto e branco (branco é 0)",
+ "exif-photometricinterpretation-1": "Preto e branco (preto é 0)",
+ "exif-photometricinterpretation-3": "Palete",
+ "exif-photometricinterpretation-4": "Máscara de transparência",
+ "exif-photometricinterpretation-5": "Separados (provavelmente CMYK)",
+ "exif-photometricinterpretation-9": "CIE L*a*b* (codificação ICC)",
+ "exif-photometricinterpretation-10": "CIE L*a*b* (codificação ITU)",
+ "exif-photometricinterpretation-32803": "Matriz de filtros de cores",
+ "exif-photometricinterpretation-34892": "Linear não processado",
"exif-unknowndate": "Data desconhecida",
"exif-orientation-1": "Normal",
"exif-orientation-2": "Espelhamento horizontal",
"exif-orientation-8": "Rodado 90° no sentido horário",
"exif-planarconfiguration-1": "formato irregular",
"exif-planarconfiguration-2": "formato plano",
+ "exif-xyresolution-i": "$1 ppp",
"exif-xyresolution-c": "$1 pt/cm",
"exif-colorspace-65535": "Cor não calibrada",
"exif-componentsconfiguration-0": "não existe",
"exif-meteringmode-1": "Média",
"exif-meteringmode-2": "MédiaPonderadaAoCentro",
"exif-meteringmode-3": "Ponto",
- "exif-meteringmode-4": "MultiPonto",
+ "exif-meteringmode-4": "Multiponto",
"exif-meteringmode-5": "Padrão",
"exif-meteringmode-6": "Parcial",
"exif-meteringmode-255": "Outro",
"autosumm-changed-redirect-target": "Alteração do redirecionamento de [[$1]] para [[$2]]",
"autosumm-new": "Criou a página com \"$1\"",
"autosumm-newblank": "Página em branco criada",
- "lag-warn-normal": "Alterações realizadas {{PLURAL:$1|no último segundo|nos últimos $1 segundos}} podem não constar desta lista.",
- "lag-warn-high": "Devido a latência elevada no acesso ao servidor da base de dados, as alterações realizadas {{PLURAL:$1|no último segundo|nos últimos $1 segundos}} podem não constar desta lista.",
+ "size-pixel": "$1 {{PLURAL:$1|píxel|píxeis}}",
+ "lag-warn-normal": "As alterações realizadas {{PLURAL:$1|no último segundo|nos últimos $1 segundos}} podem não constar desta lista.",
+ "lag-warn-high": "Devido a uma latência elevada no acesso ao servidor da base de dados, as alterações realizadas {{PLURAL:$1|no último segundo|nos últimos $1 segundos}} podem não constar desta lista.",
"watchlistedit-normal-title": "Editar lista de páginas vigiadas",
"watchlistedit-normal-legend": "Remover páginas da lista de páginas vigiadas",
"watchlistedit-normal-explain": "As suas páginas vigiadas são listadas abaixo.\nPara remover uma página, marque a caixa de seleção correspondente e clique o botão \"{{int:Watchlistedit-normal-submit}}\".\nTambém pode [[Special:EditWatchlist/raw|editar a lista de páginas vigiadas em forma de texto]].",
"logentry-protect-protect-cascade": "$1 {{GENDER:$2|protegeu}} $3 $4 [em cascata]",
"logentry-protect-modify": "$1 {{GENDER:$2|alterou}} o nível de proteção para $3 $4",
"logentry-protect-modify-cascade": "$1 {{GENDER:$2|alterou}} o nível de proteção para $3 $4 [em cascata]",
- "logentry-rights-rights": "$1 {{GENDER:$2|modificou}} os privilégios {{GENDER:$3|do utilizador $3|da utilizadora $3|do(a) utilizador(a) $3}} de $4 para $5",
+ "logentry-rights-rights": "$1 {{GENDER:$2|modificou}} os privilégios {{GENDER:$3|do utilizador|da utilizadora}} $3 de $4 para $5",
"logentry-rights-rights-legacy": "$1 alterou os grupos de $3",
"logentry-rights-autopromote": "$1 foi automaticamente {{GENDER:$2|promovido|promovida}} de $4 a $5",
"logentry-upload-upload": "$1 {{GENDER:$2|carregou}} $3",
"authmanager-email-label": "Correio eletrónico",
"authmanager-email-help": "Endereço de correio eletrónico",
"authmanager-realname-label": "Nome verdadeiro",
- "authmanager-realname-help": "Nome verdadeiro do(a) utilizador(a)",
+ "authmanager-realname-help": "Nome verdadeiro do utilizador",
"authmanager-provider-password": "Autenticação baseada em palavra-passe",
"authmanager-provider-password-domain": "Autenticação baseada em palavra-passe e domínio",
"authmanager-provider-temporarypassword": "Palavra-passe temporária",
"converter-manual-rule-error": "Used as error message when a manual conversion rule for the [[mw:Language_converter|language converter]] has errors. For example it's not using the correct syntax, or not supplying text in all variants.",
"undo-success": "Text on special page to confirm edit revert. You arrive on this page by clicking on the \"undo\" link on a revision history special page.\n\n{{Identical|Undo}}",
"undo-failure": "Message appears if an attempt to revert an edit by clicking the \"undo\" link on the page history fails.\n\nSee also:\n* {{msg-mw|Undo-norev}}\n* {{msg-mw|Undo-nochange}}\n{{Identical|Undo}}",
+ "undo-main-slot-only": "Message appears if an attempt to revert an edit by clicking the \"undo\" link on the page history fails because it involves content outside the page's main slot, which is not yet supported.\nThis message is temporary, see https://phabricator.wikimedia.org/T189808\n\nSee also:\n* {{msg-mw|Undo-failure}}\n{{Identical|Undo}}",
"undo-norev": "Message appears if an attempt to revert an edit by clicking the \"undo\" link on the page history fails.\n\nSee also:\n* {{msg-mw|Undo-failure}}\n* {{msg-mw|Undo-nochange}}\n{{Identical|Undo}}",
"undo-nochange": "Message appears if an attempt to revert an edit by clicking the \"undo\" link results in an edit making no change to the current version of the page.\n\nSee also:\n* {{msg-mw|Undo-failure}}\n* {{msg-mw|Undo-norev}}",
"undo-summary": "Edit summary for an undo action. Parameters:\n* $1 - revision ID\n* $2 - username\n{{Identical|Undo}}",
"Macofe",
"Purodha",
"Fitoschido",
- "Ruthven"
+ "Ruthven",
+ "Matěj Suchánek"
]
},
"tog-underline": "Collegaminde sottolinèate:",
"prefs-help-recentchangescount": "Quiste 'nglude le urteme cangiaminde, le storie de le pàggene e le archivije.",
"prefs-help-watchlist-token2": "Queste jè 'a chiave segrete a le feed d'u web de l'elenghe de le pàggene condrollate tune.\nCengate vò ccu canosce ce pò leggere l'elenghe de le pàggene condrollate tune, accussì non g'ù pò condividere.\nCe è abbesogne, [[Special:ResetTokens|'u puè azzerà]].",
"savedprefs": "Le preferenze tue onne state aggiornete.",
- "savedrights": "Le gruppe utinde de {{GENDER:$1$1}} onne state reggistrate.",
+ "savedrights": "Le gruppe utinde de {{GENDER:$1|$1}} onne state reggistrate.",
"timezonelegend": "Orarie d'a zone:",
"localtime": "Orarie lochele:",
"timezoneuseserverdefault": "Ause 'u valore de default de uicchi ($1)",
"tooltip-feed-rss": "RSS feed pe sta pàgene",
"tooltip-feed-atom": "Atom feed pe sta pàgene",
"tooltip-t-contributions": "Vide l'elenghe de le condrebbute de {{GENDER:$1|stu utende}}",
- "tooltip-t-emailuser": "Manne n'e-mail a {{GENDER:$1stu utende}}",
+ "tooltip-t-emailuser": "Manne n'e-mail a {{GENDER:$1|stu utende}}",
"tooltip-t-info": "Cchiù 'mbormaziune sus a sta pàgene",
"tooltip-t-upload": "Careche le file",
"tooltip-t-specialpages": "Liste de tutte le pàggene speciale",
"converter-manual-rule-error": "Ошибка в ручном правиле преобразования языка",
"undo-success": "Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.",
"undo-failure": "Правка не может быть отменена из-за несовместимости промежуточных изменений.",
+ "undo-main-slot-only": "Правка не может быть отменена, поскольку оно включает контент вне основного слота.",
"undo-norev": "Правка не может быть отменена, так как её не существует или она была удалена.",
"undo-nochange": "Правка, похоже, уже была отменена.",
"undo-summary": "Отмена правки $1, сделанной [[Special:Contributions/$2|$2]] ([[User talk:$2|обсуждение]])",
"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",
"Xð",
"Сербијана",
"Acamicamacaraca",
- "Fitoschido"
+ "Fitoschido",
+ "BadDog"
]
},
"tog-underline": "Podvuci linkove:",
"allmessagesname": "Naziv",
"allmessagesdefault": "Uobičajeni tekst",
"allmessagescurrent": "Trenutni tekst",
- "allmessagestext": "Ovo je spisak svih sistemskih poruka u dostupnih u MediaWiki imenskom prostoru.\nMolimo posjetite [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation MediaWiki lokalizaciju] i [https://translatewiki.net translatewiki.net] ako želite doprinijeti općoj lokalizaciji MediaWikija.",
+ "allmessagestext": "Ovo je spisak sistemskih poruka u dostupnih u MediaWiki imenskom prostoru.\nMolimo posjetite [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation MediaWiki lokalizaciju] i [https://translatewiki.net translatewiki.net] ako želite doprinijeti općoj lokalizaciji MediaWikija.",
"allmessagesnotsupportedDB": "Ova stranica ne može biti korištena jer je '''$wgUseDatabaseMessages''' isključen.",
"allmessages-filter-legend": "Filter",
"allmessages-filter": "Filter po stanju podešavanja:",
"LacoR",
"Xð",
"Pmikolas44",
- "Fitoschido"
+ "Fitoschido",
+ "Matěj Suchánek"
]
},
"tog-underline": "Podčiarkovať odkazy:",
"watcherrortext": "Vyskytla sa chyba počas zmeny nastavenia vášho zoznamu sledovaných pre „$1“.",
"enotif_reset": "Označiť všetky stránky ako „navštívené“",
"enotif_impersonal_salutation": "používateľ {{GRAMMAR:genitív|{{SITENAME}}}}",
- "enotif_subject_deleted": "Stránku {{GENDER:genitív|{{SITENAME}}}} „$1“ odstránil používateľ $2",
- "enotif_subject_created": "Stránku {{GENDER:genitív|{{SITENAME}}}} „$1“ vytvoril používateľ $2",
- "enotif_subject_moved": "Stránku {{GENDER:genitív|{{SITENAME}}}} „$1“ presunul používateľ $2",
- "enotif_subject_restored": "Stránku {{GENDER:genitív|{{SITENAME}}}} „$1“ obnovil používateľ $2",
- "enotif_subject_changed": "Stránku {{GENDER:genitív|{{SITENAME}}}} „$1“ zmenil používateľ $2",
+ "enotif_subject_deleted": "Stránku {{GRAMMAR:genitív|{{SITENAME}}}} „$1“ odstránil používateľ {{GENDER:$2|$2}}",
+ "enotif_subject_created": "Stránku {{GRAMMAR:genitív|{{SITENAME}}}} „$1“ vytvoril používateľ {{GENDER:$2|$2}}",
+ "enotif_subject_moved": "Stránku {{GRAMMAR:genitív|{{SITENAME}}}} „$1“ presunul používateľ {{GENDER:$2|$2}}",
+ "enotif_subject_restored": "Stránku {{GRAMMAR:genitív|{{SITENAME}}}} „$1“ obnovil používateľ {{GENDER:$2|$2}}",
+ "enotif_subject_changed": "Stránku {{GRAMMAR:genitív|{{SITENAME}}}} „$1“ zmenil používateľ {{GENDER:$2|$2}}",
"enotif_body_intro_deleted": "Stránka {{GENDER:genitív|{{SITENAME}}}} „$1“ zmazal $PAGEEDITDATE používateľ $2, pozri $3.",
"enotif_body_intro_created": "Stránka {{GENDER:genitív|{{SITENAME}}}} „$1“ vytvoril $PAGEEDITDATE používateľ $2, pozri aktuálnu verziu $3.",
"enotif_body_intro_moved": "Stránka {{GENDER:genitív|{{SITENAME}}}} „$1“ presunul $PAGEEDITDATE používateľ $2, pozri aktuálnu verziu $3.",
"ipb-unblock-addr": "Odblokovať $1",
"ipb-unblock": "Odblokovať používateľa alebo IP adresu",
"ipb-blocklist": "Zobraziť existujúce blokovania",
- "ipb-blocklist-contribs": "Príspevky {{GENDER:redaktora|redaktorky}} $1",
+ "ipb-blocklist-contribs": "Príspevky {{GENDER:$1|redaktora|redaktorky}} $1",
"ipb-blocklist-duration-left": "zostáva $1",
"unblockip": "Odblokovať používateľa",
"unblockiptext": "Použite tento formulár na obnovenie možnosti zápisov\nz/od momentálne zablokovanej IP adresy/používateľa.",
"Matma Rex",
"NegativeTwelveDollars",
"Xð",
- "HairyFotr"
+ "HairyFotr",
+ "Upwinxp"
]
},
"tog-underline": "Podčrtavanje povezav:",
"converter-manual-rule-error": "Odkril sem napako v ročnem pravilu pretvorbe jezikov",
"undo-success": "Urejanje ste razveljavili. Prosimo, preverite prikazano primerjavo redakcij in, če ustrezajo, shranite spremembe.",
"undo-failure": "Zaradi navzkrižij urejanj, ki so se vmes pojavila, tega urejanja ni moč razveljaviti.",
+ "undo-main-slot-only": "Urejanja nismo mogli razveljaviti, ker vključuje vsebino zunaj glavne reže.",
"undo-norev": "Urejanja ni mogoče razveljaviti, ker ne obstaja ali je bilo izbrisano.",
"undo-nochange": "Zdi se, da je urejanje nekdo že razveljavil.",
"undo-summary": "Redakcija $1 uporabnika [[Special:Contributions/$2|$2]] ([[User talk:$2|pogovor]]) razveljavljena",
"rcfilters-activefilters": "Dejavni filtri",
"rcfilters-activefilters-hide": "Skrij",
"rcfilters-activefilters-show": "Prikaži",
+ "rcfilters-activefilters-hide-tooltip": "Skrij območje Aktivnih filtrov",
+ "rcfilters-activefilters-show-tooltip": "Pokaži območje Aktivnih filtrov",
"rcfilters-advancedfilters": "Napredni filtri",
"rcfilters-limit-title": "Rezultati za prikaz",
"rcfilters-limit-and-date-label": "$1 {{PLURAL:$1|sprememba|spremembi|spremembe|sprememb}}, $2",
"exif-lightsource-19": "Običajna svetloba C",
"exif-lightsource-24": "ISO-ateljejski volfram",
"exif-lightsource-255": "Drugačen",
- "exif-flash-fired-0": "Flash se ni sprožil",
- "exif-flash-fired-1": "Flash se je sprožil",
+ "exif-flash-fired-0": "Bliskavica se ni sprožila",
+ "exif-flash-fired-1": "Bliskavica se je sprožila",
"exif-flash-return-0": "stroboskop ni uporabil funkcije zaznavanja",
"exif-flash-return-2": "stroboskop ni zaznal svetlobe",
"exif-flash-return-3": "stroboskop je zaznal svetlobo",
"youhavenewmessagesmulti": "Имате нове поруке на $1",
"editsection": "уреди",
"editold": "уреди",
- "viewsourceold": "изворни код",
+ "viewsourceold": "изворни кôд",
"editlink": "уреди",
- "viewsourcelink": "изворни код",
+ "viewsourcelink": "изворни кôд",
"editsectionhint": "Уреди одељак „$1“",
"toc": "Садржај",
"showtoc": "прикажи",
"hidetoc": "сакриј",
- "collapsible-collapse": "Скупи",
- "collapsible-expand": "Ð\9fÑ\80икажи",
+ "collapsible-collapse": "скупи",
+ "collapsible-expand": "пÑ\80оÑ\88иÑ\80и",
"confirmable-confirm": "Да ли {{GENDER:$1|сте}} сигурни?",
"confirmable-yes": "Да",
"confirmable-no": "Не",
"perfcached": "Следећи подаци су кеширани и можда нису ажурирани. У кешу {{PLURAL:$1|је доступан највише један резултат|су доступна највише $1 резултата|је доступно највише $1 резултата}}.",
"perfcachedts": "Следећи подаци су кеширани и последњи пут ажурирани на датум $2 у $3 ч. У кешу {{PLURAL:$4|је доступан највише један резултат|су доступна највише $4 резултата|је доступно највише $4 резултата}}.",
"querypage-no-updates": "Ажурирање ове странице је тренутно онемогућено.\nПодаци који се овде налазе могу бити застарели.",
- "viewsource": "Изворни код",
- "viewsource-title": "Изворни код за страницу $1",
+ "viewsource": "Изворни кôд",
+ "viewsource-title": "Изворни кôд за страницу $1",
"actionthrottled": "Радња је успорена",
"actionthrottledtext": "У циљу борбе против непожељних порука, ограничене су вам измене у одређеном времену, а управо сте прешли то ограничење. Покушајте поново за неколико минута.",
"protectedpagetext": "Ова страница је закључана за измене и друге радње.",
- "viewsourcetext": "Можете читати и копирати изворник ове странице.",
- "viewyourtext": "Можете да погледате и копирате изворник <strong>ваших измена</strong> на овој страници.",
+ "viewsourcetext": "Можете да погледате и копирате изворни кôд ове странице.",
+ "viewyourtext": "Можете да погледате и копирате изворни кôд <strong>Ваших измена</strong> на овој страници.",
"protectedinterface": "Ова страница садржи текст интерфејса за софтвер на овом викију и заштићена је ради спречавања злоупотребе.\nДа бисте додали или изменили преводе било којег викија, посетите [https://translatewiki.net/ translatewiki.net], пројекат за локализацију Медијавикија.",
"editinginterface": "<strong>Упозорење:</strong> уређујете страницу која се користи за приказивање текста корисничког окружења.\nИзмене на овој страници ће утицати на све кориснике овог викија.",
"translateinterface": "Да додате или промените преводе за све викије, посетите [https://translatewiki.net/ Транслејтвики], пројекат за локализацију Медијавикија.",
"customcssprotected": "Немате дозволу да мењате ову CSS страницу јер садржи лична подешавања другог корисника.",
"customjsprotected": "Немате дозволу да мењате ову страницу JavaScript јер садржи лична подешавања другог корисника.",
"mycustomcssprotected": "Немате дозволу за мењање ове CSS странице.",
+ "mycustomjsonprotected": "Немате дозволу за мењање ове JSON странице.",
"mycustomjsprotected": "Немате дозволу за мењање ове JavaScript странице.",
"myprivateinfoprotected": "Немате дозволу за мењање ваших личних информација.",
"mypreferencesprotected": "Немате дозволу за мењање ваших подешавања.",
"nocookieslogin": "{{SITENAME}} користи колачиће за пријављивање корисника.\nВама су колачићи онемогућени. Омогућите их и покушајте поново.",
"nocookiesfornew": "Кориснички налог није отворен јер његов извор није потврђен.\nОмогућите колачиће на прегледачу и поново учитајте страницу.",
"nocookiesforlogin": "{{int:nocookieslogin}}",
+ "createacct-loginerror": "Налог је успешно направљен, али се не можете аутоматски пријавити. Пређите на [[Special:UserLogin|ручно пријављивање]].",
"noname": "Унели сте неисправно корисничко име.",
"loginsuccesstitle": "Успешно пријављивање",
"loginsuccess": "<strong>Пријављени сте на {{SITENAME}} као „$1”.</strong>",
"wrongpasswordempty": "Нисте унели лозинку. Покушајте поново.",
"passwordtooshort": "Лозинка мора имати најмање {{PLURAL:$1|један знак|$1 знака|$1 знакова}}.",
"passwordtoolong": "Лозинке не могу бити дуже од {{PLURAL:$1|$1 знака|$1 знакова}}.",
- "passwordtoopopular": "ЧеÑ\81Ñ\82о коÑ\80иÑ\88Ñ\9bене Ñ\88иÑ\84Ñ\80е не могÑ\83 биÑ\82и коÑ\80иÑ\88Ñ\9bене. Ð\9cолимо изабеÑ\80иÑ\82е Ñ\81ложениÑ\98Ñ\83 лозинкÑ\83.",
+ "passwordtoopopular": "ЧеÑ\81Ñ\82о изабÑ\80ане лозинке не могÑ\83 да Ñ\81е коÑ\80иÑ\81Ñ\82е. Ð\98забеÑ\80иÑ\82е лозинкÑ\83 коÑ\98Ñ\83 Ñ\98е Ñ\82еже погодиÑ\82и.",
"password-name-match": "Лозинка се мора разликовати од корисничког имена.",
"password-login-forbidden": "Коришћење овог корисничког имена и лозинке је забрањено.",
"mailmypassword": "Ресетуј лозинку",
"passwordremindertitle": "{{SITENAME}} — привремена лозинка",
- "passwordremindertext": "Неко, вероватно ви, са IP адресе $1 је затражио нову лозинку на викију {{SITENAME}} ($4).\nСтворена је привремена лозинка за {{GENDER:$2|корисника|корисницу|корисника}} $2 која гласи $3.\nУколико је ово ваш захтев, сада се пријавите и поставите нову лозинку.\nПривремена лозинка истиче за {{PLURAL:$5|један дан|$5 дана}}.\n\nАко је неко други затражио промену лозинке, или сте се сетили ваше лозинке и не желите да је мењате, занемарите ову поруку.",
+ "passwordremindertext": "Неко са IP адресе $1 је затражио нову лозинку на викију {{SITENAME}} ($4).\nСтворена је привремена лозинка за {{GENDER:$2|корисника|корисницу|корисника}} $2 која гласи $3.\nУколико је ово ваш захтев, сада се пријавите и поставите нову лозинку.\nПривремена лозинка истиче за {{PLURAL:$5|један дан|$5 дана}}.\n\nАко је неко други затражио промену лозинке, или сте се сетили ваше лозинке и не желите да је мењате, занемарите ову поруку.",
"noemail": "Не постоји имејл адреса за {{GENDER:$1|корисника|корисницу}} $1.",
"noemailcreate": "Морате навести исправну имејл адресу.",
"passwordsent": "Нова лозинка је послата на имејл адресу {{GENDER:$1|корисника|кориснице|корисника}} $1.\nПријавите се пошто је примите.",
"blocked-mailpassword": "Ваша IP адреса има забрану уређивања. Ради спречавања злоупотребе, није дозвољено враћање лозинке са ње.",
- "eauthentsent": "На наведену имејл адресу је послат потврдни код.\nПре него што пошаљемо даљње поруке, пратите упутства с имејла да бисте потврдили да сте Ви отворили налог.",
+ "eauthentsent": "На наведену имејл адресу је послат потврдни кôд.\nПре него што пошаљемо даљње поруке, пратите упутства с имејла да бисте потврдили да сте Ви отворили налог.",
"throttled-mailpassword": "Порука за промену лозинке је послата у {{PLURAL:$1|1=последњих сат времена|последња $1 сата|последњих $1 сати}}.\nДа бисмо спречили злоупотребу, подсетник шаљемо само једном у року од {{PLURAL:$1|1=сат времена|$1 сата|$1 сати}}.",
"mailerror": "Грешка при слању поруке: $1",
"acct_creation_throttle_hit": "Посетиоци овог викија који користе вашу IP адресу су већ отворили {{PLURAL:$1|1=један налог|$1 налога}} претходни $2, што је највећи дозвољени број у том временском периоду.\nЗбог тога посетиоци с ове IP адресе тренутно не могу отворити више налога.",
"changepassword-throttled": "Превише пута сте покушали да се пријавите.\nМолимо вас да сачекате $1 пре него што покушате поново.",
"botpasswords": "Лозинке ботова",
"botpasswords-disabled": "Лозинке ботова су онемогућене.",
+ "botpasswords-no-central-id": "Да би сте користили ботовске лозинке, морате бити пријављени на средишњи налог.",
"botpasswords-existing": "Постојећа лозинка бота",
"botpasswords-createnew": "Направи нову лозинку за бота",
"botpasswords-editexisting": "Измени постојећу лозинку за бота",
+ "botpasswords-label-needsreset": "(лозинку треба ресетовати)",
"botpasswords-label-appid": "Име бота:",
"botpasswords-label-create": "Направи",
"botpasswords-label-update": "Ажурирај",
"resetpass-submit-loggedin": "Промени лозинку",
"resetpass-submit-cancel": "Откажи",
"resetpass-wrong-oldpass": "Неисправна привремена или тренутна лозинка.\nМожда сте већ променили лозинку или сте затражили нову привремену лозинку.",
- "resetpass-recycled": "Унели сте садашњу лозинку, да бисте ресетовали лозинку морате унети нову.",
+ "resetpass-recycled": "Унели сте садашњу лозинку, да бисте променили лозинку морате унети нову.",
"resetpass-temp-emailed": "Пријавили сте се са привременим кодом из имејла.\nДа бисте завршили пријављивање морате поставити нову лозинку овде:",
"resetpass-temp-password": "Привремена лозинка:",
"resetpass-abort-generic": "Промену лозинке је спречио додатак.",
"resetpass-expired": "Ваша лозинка је истекла. Поставите нову лозинку да бисте се пријавили.",
- "resetpass-expired-soft": "Ваша лозинка је истекла и морате поставити нову. Поставите нову лозинку или кликните „{{int:authprovider-resetpass-skip-label}}“ да је поставите касније.",
- "resetpass-validity-soft": "Ð\92аÑ\88а лозинка ниÑ\98е иÑ\81пÑ\80авна: $1\n\nÐ\9cолимо изабеÑ\80иÑ\82е новÑ\83 или кликниÑ\82е â\80\9e{{int:authprovider-resetpass-skip-label}}â\80\9c да Ñ\80еÑ\81еÑ\82Ñ\83Ñ\98ете касније.",
+ "resetpass-expired-soft": "Ваша лозинка је истекла и морате је променити. Поставите нову лозинку или кликните „{{int:authprovider-resetpass-skip-label}}“ да је промените касније.",
+ "resetpass-validity-soft": "Ð\92аÑ\88а лозинка ниÑ\98е иÑ\81пÑ\80авна: $1\n\nÐ\9cолимо изабеÑ\80иÑ\82е новÑ\83 или кликниÑ\82е â\80\9e{{int:authprovider-resetpass-skip-label}}â\80\9c да Ñ\98е пÑ\80омените касније.",
"passwordreset": "Обнављање лозинке",
"passwordreset-text-one": "Попуните овај образац да бисте добили привремену лозинку на имејл.",
"passwordreset-text-many": "{{PLURAL:$1|Испуните једно од поља како бисте добили привремену лозинку на имејл.}}",
"previewerrortext": "Догодила се грешка приликом приказивања ваших измена.",
"blockedtitle": "Корисник је блокиран",
"blockedtext": "<strong>Ваше корисничко име или IP адреса је блокирана.</strong>\n\nБлокирање је {{GENDER:$4|извршио|извршила}} $1.\nРазлог је <em>$2</em>.\n\n* Почетак блокирања: $8\n* Истек блокирања: $6\n* Блокирани: $7\n\nМожете да се обратите {{GENDER:$4|кориснику|корисници}} $1 или [[{{MediaWiki:Grouppage-sysop}}|администратору]] ради дискусије о блокирању.\nНе можете да користите могућност „{{int:emailuser}}” осим ако сте унели валидну имејл адресу у својим [[Special:Preferences|подешавањима]] налога и нисте блокирани од коришћења исте.\nВаша тренутна IP адреса је $3, а ID блокирања #$5.\nНаведите све информације одозго при стварању било каквих упита.",
- "autoblockedtext": "Ваша IP адреса је блокирана јер ју је употребљавао други корисник, кога је {{GENDER:$4|блокирао|блокирала}} $1.\nРазлог:\n\n:<em>$2</em>\n\n* Датум блокирања: $8\n* Блокирање истиче: $6\n* Име корисника: $7\n\nОбратите се {{GENDER:$4|кориснику|корисници}} $1 или [[{{MediaWiki:Grouppage-sysop}}|администратору]] да разјасните ствар.\n\nНе можете користити могућност „Пошаљи имејл овом кориснику“ ако нисте унели исправну имејл адресу у [[Special:Preferences|подешавањима]].\n\nВаша блокирана IP адреса је $3, а ID $5.\nНаведите све податке изнад при стварању било каквих упита.",
+ "autoblockedtext": "Ваша IP адреса је блокирана јер ју је употребљавао други корисник, кога је {{GENDER:$4|блокирао|блокирала}} $1.\nРазлог:\n\n:<em>$2</em>\n\n* Датум блокирања: $8\n* Блокирање истиче: $6\n* Име корисника: $7\n\nОбратите се {{GENDER:$4|кориснику|корисници}} $1 или [[{{MediaWiki:Grouppage-sysop}}|администратору]] да разјасните ствар.\n\nНе можете користити могућност „{{int:emailuser}}“ ако нисте унели исправну имејл адресу у [[Special:Preferences|подешавањима]].\n\nВаша блокирана IP адреса је $3, а ID $5.\nНаведите све податке изнад при стварању било каквих упита.",
"blockednoreason": "разлог није наведен",
"whitelistedittext": "За уређивање странице је потребно да будете $1.",
"confirmedittext": "Морате да потврдите своју имејл адресу пре уређивања страница.\nПоставите и потврдите имејл адресу преко [[Special:Preferences|подешавања]].",
"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> идиÑ\82е на <em>Ð\90лаÑ\82ке â\86\92 Ð\9fодеÑ\88аваÑ\9aа</em> (<em>Ð\9eпеÑ\80а â\86\92 Ð\9fоÑ\81Ñ\82авке</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диÑ\82е на <em>Ð\90лаÑ\82ке â\86\92 Ð\9fодеÑ\88аваÑ\9aа</em> (<em>Ð\9eпеÑ\80а â\86\92 Ð\9fодеÑ\88аваÑ\9aа</em> на Меку) и затим <em>Приватност и безбедност → Очистите податке о прегледима → Кеширане слике и датотеке</em>.",
"usercssyoucanpreview": "<strong>Савет:<strong> кориситите дугме „{{int:showpreview}}“ да испробате свој нови CSS пре него што га сачувате.",
"userjsyoucanpreview": "<strong>Савет:</strong> кориситите дугме „{{int:showpreview}}“ да испробате свој нови јаваскрипт пре него што га сачувате.",
"usercsspreview": "<strong>Ово је само преглед CSS-а.\nСтраница још није сачувана!</strong>",
"currentrevisionlink": "Тренутна измена",
"cur": "трен",
"next": "след",
- "last": "разл",
+ "last": "претх",
"page_first": "прва",
"page_last": "последња",
"histlegend": "Избор разлика: изаберите кутијице измена за упоређивање и притисните ентер или дугме на дну.<br />\nОбјашњење: <strong>({{int:cur}})</strong> = разлика с тренутном изменом, <strong>({{int:last}})</strong> = разлика с претходном изменом, <strong>{{int:minoreditletter}}</strong> = мања измена",
"prefs-watchlist-edits": "Највећи број измена приказаних на списку надгледања:",
"prefs-watchlist-edits-max": "Највећа вредност је хиљаду",
"prefs-watchlist-token": "Жетон списка надгледања:",
+ "prefs-watchlist-managetokens": "Управљај жетонима",
"prefs-misc": "Друга подешавања",
"prefs-resetpass": "промени лозинку",
"prefs-changeemail": "промени или уклони имејл адресу",
"prefs-dateformat": "Формат датума",
"prefs-timeoffset": "Временска разлика",
"prefs-advancedediting": "Главна подешавања",
+ "prefs-developertools": "Програмерске алатке",
"prefs-editor": "Уређивач",
"prefs-preview": "Претпреглед",
"prefs-advancedrc": "Напредна подешавања",
"prefs-opt-out": "Онемогућавање побољшања",
"prefs-advancedrendering": "Напредна подешавања",
- "prefs-advancedsearchoptions": "Ð\9dапÑ\80една подеÑ\88аваÑ\9aа",
+ "prefs-advancedsearchoptions": "Ð\9dапÑ\80едне опÑ\86иÑ\98е",
"prefs-advancedwatchlist": "Напредна подешавања",
"prefs-displayrc": "Подешавања приказа",
"prefs-displaywatchlist": "Подешавања приказа",
"right-editcontentmodel": "мењање модела садржаја странице",
"right-editinterface": "уређивање корисничког окружења",
"right-editusercss": "уређивање туђих CSS датотека",
+ "right-edituserjson": "уређивање туђих JSON датотека",
"right-edituserjs": "уређивање туђих JavaScript датотека",
"right-editmyusercss": "уређивање сопствених CSS датотека",
+ "right-editmyuserjson": "уређивање сопствених JSON датотека",
"right-editmyuserjs": "уређивање сопствених JavaScript датотека",
"right-viewmywatchlist": "преглед сопственог списка надгледања",
"right-editmywatchlist": "уређивање сопственог списка надгледања; неке предузете радње ће свеједно додати странице на списак и без овог права",
"grant-delete": "Брисање страница, измена и уноса у дневницима",
"grant-editinterface": "Уређивање Медијавики именског простора и корисничких CSS/JSON/Јаваскрипт страница",
"grant-editmycssjs": "Уређивање вашег CSS/JSON/Јаваскрипта",
- "grant-editmyoptions": "УÑ\80еÑ\92иваÑ\9aе ваших подешавања",
+ "grant-editmyoptions": "УÑ\80еÑ\92иваÑ\9aе Ð\92аших подешавања",
"grant-editmywatchlist": "Уређивање вашег списка надгледања",
"grant-editpage": "Уређивање постојећих страница",
"grant-editprotected": "Уређивање заштићених страница",
"action-userrights-interwiki": "уређивање корисничких права на другим викијима",
"action-siteadmin": "закључавање или откључавање базе података",
"action-sendemail": "слање имејлова",
- "action-editmyoptions": "Ñ\83Ñ\80еÑ\92иваÑ\9aе ваших подешавања",
+ "action-editmyoptions": "Ñ\83Ñ\80еÑ\92иваÑ\9aе Ð\92аших подешавања",
"action-editmywatchlist": "измену сопственог списак надгледања",
"action-viewmywatchlist": "преглед вашег списак надгледања",
"action-viewmyprivateinfo": "прегледање ваших личних података",
"recentchanges-summary": "Пратите скорашње измене на овој страници.",
"recentchanges-noresult": "Нема измена у задатом периоду који одговарају овим критеријумима.",
"recentchanges-timeout": "Ова претрага је истекла. Можда желите да покушате другачије параметре претраге.",
- "recentchanges-network": "Ð\97бог Ñ\82еÑ\85ниÑ\87ког пÑ\80облема не могÑ\83 да Ñ\83Ñ\87иÑ\82ам Ñ\80езÑ\83лÑ\82аÑ\82е. Ð\9fокÑ\83Ñ\88аÑ\98Ñ\82е поновно да Ñ\83Ñ\87иÑ\82ате страницу.",
+ "recentchanges-network": "Ð\97бог Ñ\82еÑ\85ниÑ\87ког пÑ\80облема не могÑ\83 да Ñ\83Ñ\87иÑ\82ам Ñ\80езÑ\83лÑ\82аÑ\82е. Ð\9fокÑ\83Ñ\88аÑ\98Ñ\82е да оÑ\81вежите страницу.",
"recentchanges-notargetpage": "Унесите назив странице како бисте видели сродне измене.",
"recentchanges-feed-description": "Пратите скорашње измене уз помоћ овог довода.",
"recentchanges-label-newpage": "Нова страница",
"recentchanges-label-minor": "Ово је мања измена",
- "recentchanges-label-bot": "Ову измену је начинио бот",
+ "recentchanges-label-bot": "Ову измену је направио бот",
"recentchanges-label-unpatrolled": "Ова измена још није патролирана",
"recentchanges-label-plusminus": "Промена величине странице у бајтовима",
"recentchanges-legend-heading": "<strong>Легенда:</strong>",
"recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} ([[Special:NewPages|списак нових страница]])",
"recentchanges-submit": "Прикажи",
- "rcfilters-tag-remove": "Уклоните филтер „$1”",
+ "rcfilters-tag-remove": "Уклони филтер „$1”",
"rcfilters-legend-heading": "<strong>Списак скраћеница:</strong>",
- "rcfilters-other-review-tools": "Ð\9eÑ\81Ñ\82але алатке за преглед",
+ "rcfilters-other-review-tools": "Ð\94Ñ\80Ñ\83ге алатке за преглед",
"rcfilters-group-results-by-page": "Групиши резултате по страницама",
"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-date-popup-title": "Временски период",
+ "rcfilters-date-popup-title": "Временски период за претрагу",
"rcfilters-days-title": "Скорашњи дани",
"rcfilters-hours-title": "Скорашњи сати",
"rcfilters-days-show-days": "$1 {{PLURAL:$1|дан|дана}}",
"rcfilters-days-show-hours": "$1 {{PLURAL:$1|сат|сата}}",
"rcfilters-highlighted-filters-list": "Истакнуто: $1",
"rcfilters-quickfilters": "Сачувани филтери",
- "rcfilters-quickfilters-placeholder-title": "Још увек нема сачуваних филтера",
- "rcfilters-quickfilters-placeholder-description": "Да бисте сачували своја подешавања филтера и употребљавали их касније, кликните на икону за ознаку у подручју активних филтера, испод.",
+ "rcfilters-quickfilters-placeholder-title": "Још нема сачуваних филтера",
+ "rcfilters-quickfilters-placeholder-description": "Да бисте сачували своја подешавања филтера и поново их употребљавали касније, кликните на икону за обележавање у подручју активних филтера, испод.",
"rcfilters-savedqueries-defaultlabel": "Сачувани филтери",
"rcfilters-savedqueries-rename": "Преименуј",
"rcfilters-savedqueries-setdefault": "Постави као подразумевано",
"rcfilters-savedqueries-apply-label": "Направи филтер",
"rcfilters-savedqueries-apply-and-setdefault-label": "Направи подразумевани филтер",
"rcfilters-savedqueries-cancel-label": "Откажи",
- "rcfilters-savedqueries-add-new-title": "Сачувајте тренутна подешавања филтера",
+ "rcfilters-savedqueries-add-new-title": "Сачувај тренутна подешавања филтера",
"rcfilters-savedqueries-already-saved": "Ови филтери су већ сачувани. Измените Ваша подешавања како бисте направили нове сачуване филтере.",
"rcfilters-restore-default-filters": "Врати подразумеване филтере",
- "rcfilters-clear-all-filters": "Уклоните све филтере",
- "rcfilters-show-new-changes": "Ð\9fогледаÑ\98 најновије измене",
- "rcfilters-search-placeholder": "Филтрирајте измене (користите мени или претрагу за име филтера)",
+ "rcfilters-clear-all-filters": "Уклони све филтере",
+ "rcfilters-show-new-changes": "Ð\9dајновије измене",
+ "rcfilters-search-placeholder": "Филтрирај измене (користите мени или претрагу за име филтера)",
"rcfilters-invalid-filter": "Неисправан филтер",
"rcfilters-empty-filter": "Нема активних филтера. Сви доприноси су приказани.",
"rcfilters-filterlist-title": "Филтери",
"rcfilters-filterlist-whatsthis": "Како ово функционише?",
- "rcfilters-filterlist-feedbacklink": "Реците нам шта мислите о овим (новим) алаткама за филтрирање",
+ "rcfilters-filterlist-feedbacklink": "Реците нам шта мислите о овим алаткама за филтрирање",
"rcfilters-highlightbutton-title": "Истакни резултате",
- "rcfilters-highlightmenu-title": "Ð\9eдабеÑ\80и боју",
+ "rcfilters-highlightmenu-title": "Ð\98забеÑ\80иÑ\82е боју",
"rcfilters-highlightmenu-help": "Изаберите боју да бисте истакнули ово својство",
"rcfilters-filterlist-noresults": "Нема пронађених филтера",
"rcfilters-noresults-conflict": "Није пронађен ниједан резултат јер су критеријуми претраге сукобљени",
"rcfilters-filter-user-experience-level-unregistered-label": "Нерегистровани",
"rcfilters-filter-user-experience-level-unregistered-description": "Уредници који нису пријављени.",
"rcfilters-filter-user-experience-level-newcomer-label": "Новајлије",
- "rcfilters-filter-user-experience-level-newcomer-description": "Регистровани уредници са мање од 10 измена и 4 дана активности.",
+ "rcfilters-filter-user-experience-level-newcomer-description": "Регистровани уредници који имају мање од 10 измена или 4 дана активности.",
"rcfilters-filter-user-experience-level-learner-label": "Ученици",
- "rcfilters-filter-user-experience-level-learner-description": "РегиÑ\81Ñ\82Ñ\80овани Ñ\83Ñ\80едниÑ\86и Ñ\81а виÑ\88е иÑ\81кÑ\83Ñ\81Ñ\82ва од â\80\9eноваÑ\98лиÑ\98аâ\80\9d, али маÑ\9aе од „искусних корисника”.",
+ "rcfilters-filter-user-experience-level-learner-description": "РегиÑ\81Ñ\82Ñ\80овани Ñ\83Ñ\80едниÑ\86и Ñ\87иÑ\98е Ñ\98е иÑ\81кÑ\83Ñ\81Ñ\82во измеÑ\92Ñ\83 â\80\9eноваÑ\98лиÑ\98аâ\80\9d и „искусних корисника”.",
"rcfilters-filter-user-experience-level-experienced-label": "Искусни корисници",
"rcfilters-filter-user-experience-level-experienced-description": "Регистровани уредници са више од 500 измена и 30 дана активности.",
"rcfilters-filtergroup-automated": "Аутоматизовани доприноси",
"rcfilters-filter-bots-label": "Бот",
- "rcfilters-filter-bots-description": "Ð\98змене напÑ\80авÑ\99ене аÑ\83Ñ\82омаÑ\82изованим алаÑ\82има.",
+ "rcfilters-filter-bots-description": "Ð\98змене напÑ\80авÑ\99ене аÑ\83Ñ\82омаÑ\82изованим алаÑ\82кама.",
"rcfilters-filter-humans-label": "Човек (није бот)",
"rcfilters-filter-humans-description": "Измене које су направили људи-уредници.",
- "rcfilters-filtergroup-reviewstatus": "Патролираност",
- "rcfilters-filter-reviewstatus-unpatrolled-description": "Измене нису ручно или аутоматски означене патролираним.",
+ "rcfilters-filtergroup-reviewstatus": "Прегледаност",
+ "rcfilters-filter-reviewstatus-unpatrolled-description": "Ð\98змене коÑ\98е ниÑ\81Ñ\83 Ñ\80Ñ\83Ñ\87но или аÑ\83Ñ\82омаÑ\82Ñ\81ки ознаÑ\87ене паÑ\82Ñ\80олиÑ\80аним.",
"rcfilters-filter-reviewstatus-unpatrolled-label": "Непатролирано",
- "rcfilters-filter-reviewstatus-manual-description": "Измене ручно означене патролираним.",
+ "rcfilters-filter-reviewstatus-manual-description": "Измене које су ручно означене патролираним.",
"rcfilters-filter-reviewstatus-manual-label": "Ручно патролирано",
- "rcfilters-filter-reviewstatus-auto-description": "Ð\98змене иÑ\81кÑ\83Ñ\81ниÑ\85 Ñ\83Ñ\80едника чији је рад аутоматски означен патролираним.",
+ "rcfilters-filter-reviewstatus-auto-description": "Ð\98змене напÑ\80едниÑ\85 коÑ\80иÑ\81ника чији је рад аутоматски означен патролираним.",
"rcfilters-filter-reviewstatus-auto-label": "Аутоматски патролирано",
"rcfilters-filtergroup-significance": "Значај",
"rcfilters-filter-minor-label": "Мање измене",
- "rcfilters-filter-minor-description": "Ð\98змене коÑ\98е Ñ\98е аÑ\83Ñ\82оÑ\80 ознаÑ\87ио као маÑ\9aе.",
+ "rcfilters-filter-minor-description": "Ð\98змене коÑ\98е Ñ\98е аÑ\83Ñ\82оÑ\80 ознаÑ\87ио маÑ\9aим.",
"rcfilters-filter-major-label": "Не-мање измене",
- "rcfilters-filter-major-description": "Ð\98змене коÑ\98е ниÑ\81Ñ\83 ознаÑ\87ене као маÑ\9aе.",
+ "rcfilters-filter-major-description": "Ð\98змене коÑ\98е ниÑ\81Ñ\83 ознаÑ\87ене маÑ\9aим.",
"rcfilters-filtergroup-watchlist": "Странице на списку надгледања",
"rcfilters-filter-watchlist-watched-label": "На списку надгледања",
"rcfilters-filter-watchlist-watched-description": "Измене страница на Вашем списку надгледања.",
"rcfilters-filter-watchlistactivity-unseen-description": "Измене страница које нисте посетили од када су направљене измене.",
"rcfilters-filter-watchlistactivity-seen-label": "Погледане измене",
"rcfilters-filter-watchlistactivity-seen-description": "Измене страница које сте посетили од када су направљене измене.",
- "rcfilters-filtergroup-changetype": "Тип измене",
+ "rcfilters-filtergroup-changetype": "Ð\92Ñ\80Ñ\81Ñ\82а измене",
"rcfilters-filter-pageedits-label": "Измене страница",
"rcfilters-filter-pageedits-description": "Измене вики садржаја, расправа, описа категорија…",
"rcfilters-filter-newpages-label": "Прављење страница",
- "rcfilters-filter-newpages-description": "Измене којима се стварају нове странице.",
+ "rcfilters-filter-newpages-description": "Измене којима се праве нове странице.",
"rcfilters-filter-categorization-label": "Измене категорија",
"rcfilters-filter-categorization-description": "Записи о страницама додатим или уклоњеним из категорија.",
- "rcfilters-filter-logactions-label": "РадÑ\9aе забележене Ñ\83 дневниÑ\86има",
- "rcfilters-filter-logactions-description": "Административне радње, стварање налога, брисање страница, отпремања…",
+ "rcfilters-filter-logactions-label": "Ð\97абележене Ñ\80адÑ\9aе",
+ "rcfilters-filter-logactions-description": "Административне радње, прављење налога, брисање страница, отпремања…",
"rcfilters-hideminor-conflicts-typeofchange-global": "Филтер за „мање” измене је у сукобу са једним или више филтера типа измена, зато што одређени типови измена не могу да се означе као „мање”. Сукобљени филтери су означени у подручју Активни филтери, изнад.",
"rcfilters-hideminor-conflicts-typeofchange": "Одређени типови измена не могу да се означе као „мање”, тако да је овај филтер у сукобу са следећим филтерима типа измена: $1",
"rcfilters-typeofchange-conflicts-hideminor": "Овај филтер типа измене је у сукобу са филтером за „мање” измене. Одређени типови измена не могу да се означе као „мање”.",
"rcfilters-exclude-button-off": "Изостави означено",
"rcfilters-exclude-button-on": "Изостави одабрано",
"rcfilters-view-tags": "Означене измене",
- "rcfilters-view-namespaces-tooltip": "Филтрирајте резултате према именском простору",
- "rcfilters-view-tags-tooltip": "Филтрирајте резултате према ознаци измене",
+ "rcfilters-view-namespaces-tooltip": "Филтрирај резултате према именском простору",
+ "rcfilters-view-tags-tooltip": "Филтрирај резултате према ознаци измене",
"rcfilters-view-return-to-default-tooltip": "Повратак на главни мени",
"rcfilters-view-tags-help-icon-tooltip": "Сазнајте више о означеним изменама",
"rcfilters-liveupdates-button": "Ажурирај уживо",
- "rcfilters-liveupdates-button-title-on": "Искључите ажурирања уживо",
- "rcfilters-liveupdates-button-title-off": "Ð\9fÑ\80иказ новиÑ\85 измена уживо",
+ "rcfilters-liveupdates-button-title-on": "Искључи ажурирања уживо",
+ "rcfilters-liveupdates-button-title-off": "Ð\9fÑ\80икажи нове измене уживо",
"rcfilters-watchlist-markseen-button": "Означи све измене као погледане",
"rcfilters-watchlist-edit-watchlist-button": "Промени списак надгледаних страница",
"rcfilters-watchlist-showupdated": "Измене на страницама које нисте посетили од када је измена извршена су <strong>подебљане</strong>, са испуњеним ознакама.",
"rcfilters-preference-label": "Сакриј побољшану верзију скорашњих измена",
"rcfilters-preference-help": "Поништава редизајн интерфејса из 2017. и све алатке додате тада и после.",
+ "rcfilters-watchlist-preference-label": "Сакриј побољшану верзију списка надгледања",
"rcfilters-filter-showlinkedfrom-label": "Прикажи измене на страницама са којих долазе везе",
"rcfilters-filter-showlinkedfrom-option-label": "<strong>Странице са којих долазе везе до</strong> изабране странице",
"rcfilters-filter-showlinkedto-label": "Прикажи измене на страницама ка којима воде везе",
"copyuploaddisabled": "Отпремање путем веб-адресе је онемогућено.",
"uploaddisabledtext": "Отпремање датотека је онемогућено.",
"php-uploaddisabledtext": "Отпремање датотека је онемогућено у PHP-у.\nПроверите подешавања file_uploads.",
- "uploadscripted": "Датотека садржи HTML или скриптни код који може бити погрешно протумачен од стране прегледача.",
+ "uploadscripted": "Датотека садржи HTML или скриптни кôд који може бити погрешно протумачен од стране прегледача.",
"upload-scripted-pi-callback": "Датотека која садржи инструкције за обраду XML стилског облика се не може отпремити.",
"upload-scripted-dtd": "Није могуће отпремање SVG датотека које садрже нестандардну DTD декларацију.",
"uploaded-script-svg": "Пронађен скриптни елеменат „$1“ у постављеној SVG датотеци.",
"destfilename": "Назив:",
"upload-maxfilesize": "Максимална величина датотеке: $1",
"upload-description": "Опис датотеке",
- "upload-options": "Ð\9fодеÑ\88аваÑ\9aа отпремања",
+ "upload-options": "Ð\9eпÑ\86иÑ\98е отпремања",
"watchthisupload": "Надгледај ову датотеку",
"filewasdeleted": "Датотека с овим називом је раније послата, али је обрисана.\nПроверите $1 пре него што наставите с поновним слањем.",
"filename-bad-prefix": "Назив датотеке коју шаљете почиње са <strong>„$1“</strong>, а њега обично додељују дигитални фотоапарати.\nИзаберите назив датотеке који описује њен садржај.",
"deadendpages": "Странице без унутрашњих веза",
"deadendpagestext": "Следеће странице немају везе до других страница на овом викију.",
"protectedpages": "Заштићене странице",
+ "protectedpages-filters": "Филтери:",
"protectedpages-indef": "Само неограничене заштите",
"protectedpages-summary": "На овој страници се налази списак тренутно заштићених страница. За списак заштићених наслова види [[{{#special:ProtectedTitles}}|{{int:protectedtitles}}]].",
"protectedpages-cascade": "Само преносиве заштите",
"protectedtitles-submit": "Прикажи наслове",
"listusers": "Списак корисника",
"listusers-editsonly": "Прикажи само кориснике који су уређивали",
+ "listusers-temporarygroupsonly": "Прикажи само кориснике у привременим корисничким групама",
"listusers-creationsort": "Поређај по датуму стварања",
"listusers-desc": "Поређај у опадајућем редоследу",
"usereditcount": "$1 {{PLURAL:$1|измена|измене|измена}}",
"apisandbox-dynamic-error-exists": "Параметар под називом \"$1\" већ постоји.",
"apisandbox-deprecated-parameters": "Застарели параметри",
"apisandbox-fetch-token": "Аутоматски попуни токен",
+ "apisandbox-add-multi": "Додај",
"apisandbox-submit-invalid-fields-title": "Нека поља нису исправна",
"apisandbox-submit-invalid-fields-message": "Молимо Вас поправите означена поља и покушајте поново.",
"apisandbox-results": "Резултати",
"wlshowhidepatr": "патролиране измене",
"wlshowhidemine": "моје измене",
"wlshowhidecategorization": "категоризацију страница",
- "watchlist-options": "Ð\9fодеÑ\88аваÑ\9aа списка надгледања",
+ "watchlist-options": "Ð\9eпÑ\86иÑ\98е списка надгледања",
"watching": "Надгледање…",
"unwatching": "Уклањање са списка надгледања...",
"watcherrortext": "Дошло је до грешке при промени поставки вашег списка надгледања за „$1“.",
"minimum-size": "Најмања величина",
"maximum-size": "Највећа величина:",
"pagesize": "(бајтови)",
- "restriction-edit": "Уређивање",
- "restriction-move": "Ð\9fремештање",
+ "restriction-edit": "уређивање",
+ "restriction-move": "премештање",
"restriction-create": "прављење",
"restriction-upload": "отпремање",
"restriction-level-sysop": "потпуно заштићено",
"allmessagesname": "Назив",
"allmessagesdefault": "Подразумевани текст",
"allmessagescurrent": "Тренутни текст поруке",
- "allmessagestext": "Ð\9eво Ñ\98е Ñ\81пиÑ\81ак Ñ\81виÑ\85 Ñ\81иÑ\81Ñ\82емÑ\81киÑ\85 поÑ\80Ñ\83ка коÑ\98е Ñ\81Ñ\83 доÑ\81Ñ\82Ñ\83пне Ñ\83 именÑ\81ком пÑ\80оÑ\81Ñ\82оÑ\80Ñ\83 â\80\9eÐ\9cедиÑ\98авикиâ\80\9c.\nÐ\9fоÑ\81еÑ\82иÑ\82е [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation Ð\9cедиÑ\98авики локализаÑ\86иÑ\98Ñ\83] и [https://translatewiki.net ТÑ\80анÑ\81леÑ\98Ñ\82вики] ако желиÑ\82е да помогнеÑ\82е Ñ\83 пÑ\80евоÑ\92еÑ\9aÑ\83.",
+ "allmessagestext": "Ð\9eво Ñ\98е Ñ\81пиÑ\81ак Ñ\81иÑ\81Ñ\82емÑ\81киÑ\85 поÑ\80Ñ\83ка доÑ\81Ñ\82Ñ\83пниÑ\85 Ñ\83 именÑ\81ком пÑ\80оÑ\81Ñ\82оÑ\80Ñ\83 â\80\9eÐ\9cедиÑ\98авикиâ\80\9c.\nÐ\9fоÑ\81еÑ\82иÑ\82е [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation Ð\9cедиÑ\98авики локализаÑ\86иÑ\98Ñ\83] и [https://translatewiki.net translatewiki.net] ако желиÑ\82е да допÑ\80инеÑ\81еÑ\82е опÑ\88Ñ\82оÑ\98 локализаÑ\86иÑ\98и Ð\9cедиÑ\98авикиÑ\98а.",
"allmessagesnotsupportedDB": "Ова страница не може да се користи јер је '''$wgUseDatabaseMessages''' онемогућен.",
"allmessages-filter-legend": "Филтер",
"allmessages-filter": "Филтрирај по стању:",
"import-error-special": "Не могу да увезем страницу „$1“ јер она припада посебном именском простору које не прихвата странице.",
"import-error-invalid": "Не могу да увезем страницу „$1“ јер је њен назив неисправан.",
"import-error-unserialize": "Верзија $2 странице $1 не може бити прочитана/увезена. Записано је да верзија користи $3 тип садржаја у $4 формату.",
- "import-options-wrong": "{{PLURAL:$2|Ð\9fогÑ\80еÑ\88но подеÑ\88аваÑ\9aе|Ð\9fогÑ\80еÑ\88на подеÑ\88аваÑ\9aа}}: <nowiki>$1</nowiki>",
+ "import-options-wrong": "{{PLURAL:$2|Ð\9fогÑ\80еÑ\88на опÑ\86иÑ\98а|Ð\9fогÑ\80еÑ\88не опÑ\86иÑ\98е}}: <nowiki>$1</nowiki>",
"import-rootpage-invalid": "Наведена основна страница има неисправан наслов.",
"import-rootpage-nosubpage": "Именски простор „$1“ основне странице не дозвољава подстранице.",
"importlogpage": "Дневник увоза",
"tooltip-pt-logout": "Одјавите се",
"tooltip-pt-createaccount": "Препоручијемо Вам да отворите налог и пријавите се, иако то није обавезно",
"tooltip-ca-talk": "Разговор о страници са садржајем",
- "tooltip-ca-edit": "Уредите ову страницу",
- "tooltip-ca-addsection": "Започните нови одељак",
- "tooltip-ca-viewsource": "Ð\9eва Ñ\81Ñ\82Ñ\80аниÑ\86а Ñ\98е закÑ\99Ñ\83Ñ\87ана. \nÐ\9cожеÑ\82е погледаÑ\82и извоÑ\80ни Ñ\82екÑ\81Ñ\82.",
+ "tooltip-ca-edit": "Уреди ову страницу",
+ "tooltip-ca-addsection": "Започни нови одељак",
+ "tooltip-ca-viewsource": "Ð\9eва Ñ\81Ñ\82Ñ\80аниÑ\86а Ñ\98е закÑ\99Ñ\83Ñ\87ана. \nÐ\9cожеÑ\82е да погледаÑ\82е Ñ\9aен извоÑ\80ни кôд",
"tooltip-ca-history": "Претходне измене ове странице",
"tooltip-ca-protect": "Заштитите ову страницу",
"tooltip-ca-unprotect": "Промени заштиту ове странице",
"tooltip-ca-nstab-template": "Погледајте шаблон",
"tooltip-ca-nstab-help": "Погледајте страницу за помоћ",
"tooltip-ca-nstab-category": "Погледајте страницу категорија",
- "tooltip-minoredit": "Означите ову измену као мању",
+ "tooltip-minoredit": "Означи као мању измену",
"tooltip-save": "Сачувајте своје измене",
- "tooltip-publish": "Објавите своје измене",
+ "tooltip-publish": "Објави своје измене",
"tooltip-preview": "Прегледајте своје измене. Користите ово дугме пре чувања.",
"tooltip-diff": "Погледајте које измене сте направили на тексту",
"tooltip-compareselectedversions": "Погледаjте разлике између две изабране измене ове странице.",
- "tooltip-watch": "Додајте ову страницу на свој списак надгледања",
+ "tooltip-watch": "Додај ову страницу на свој списак надгледања",
"tooltip-watchlistedit-normal-submit": "Уклони наслове",
"tooltip-watchlistedit-raw-submit": "Ажурирај списак",
"tooltip-recreate": "Поново направите страницу иако је обрисана",
"filedelete-archive-read-only": "Сервер не може да пише по складишној фасцикли ($1).",
"previousdiff": "← Старија измена",
"nextdiff": "Новија измена →",
- "mediawarning": "<strong>Упозорење:</strong> ова врста датотеке може садржати штетан код.\nАко га покренете, Ваш рачунар може бити угрожен.",
+ "mediawarning": "<strong>Упозорење:</strong> ова врста датотеке може садржати штетан кôд.\nАко га покренете, Ваш рачунар може бити угрожен.",
"imagemaxsize": "Ограничење величине слике:<br /><em>(на страницама за опис датотека)</em>",
"thumbsize": "Величина минијатуре:",
"widthheight": "$1 × $2",
"exif-keywords": "Кључне речи",
"exif-worldregioncreated": "Област света где је сликана фотографија",
"exif-countrycreated": "Земља где је сликана фотографија",
- "exif-countrycodecreated": "Код земље где је слика направљена",
+ "exif-countrycodecreated": "Кôд земље где је слика направљена",
"exif-provinceorstatecreated": "Покрајина или држава где је сликана фотографија",
"exif-citycreated": "Град где је сликана фотографија",
"exif-sublocationcreated": "Област града где је сликана фотографија",
"exif-worldregiondest": "Приказана област света",
"exif-countrydest": "Приказана земља",
- "exif-countrycodedest": "Код приказане земље",
+ "exif-countrycodedest": "Кôд приказане земље",
"exif-provinceorstatedest": "Приказана покрајина или држава",
"exif-citydest": "Приказани град",
"exif-sublocationdest": "Приказана област града",
"exif-urgency": "Хитност",
"exif-fixtureidentifier": "Назив рубрике",
"exif-locationdest": "Приказана локација",
- "exif-locationdestcode": "Код приказаног места",
+ "exif-locationdestcode": "Кôд приказаног места",
"exif-objectcycle": "Доба дана за који је медиј намењен",
"exif-contact": "Подаци за контакт",
"exif-writer": "Писац",
"exif-contentwarning": "Упозорење о садржају",
"exif-giffilecomment": "Коментар на датотеку GIF",
"exif-intellectualgenre": "Врста ставке",
- "exif-subjectnewscode": "Код предмета",
- "exif-scenecode": "IPTC код сцене",
+ "exif-subjectnewscode": "Кôд предмета",
+ "exif-scenecode": "IPTC кôд сцене",
"exif-event": "Приказани догађај",
"exif-organisationinimage": "Приказана организација",
"exif-personinimage": "Приказана особа",
"confirmemail": "Потврда имејл адресе",
"confirmemail_noemail": "Нисте унели исправну имејл адресу у [[Special:Preferences|подешавањима]].",
"confirmemail_text": "{{SITENAME}} захтева да потврдите имејл адресу пре него што почнете да користите могућности имејла.\nКликните на дугме испод за слање поруке на вашу адресу.\nУ поруци ће се налазити веза с потврдним кодом;\nунесите је у прегледач да бисте потврдили да је ваша имејл адреса исправна.",
- "confirmemail_pending": "Потврдни код вам је већ послат. Ако сте управо отворили налог, онда вероватно треба да сачекате неколико минута да пристигне, пре него што поново затражите нови код.",
- "confirmemail_send": "Пошаљи потврдни код",
+ "confirmemail_pending": "Потврдни кôд вам је већ послат. Ако сте управо отворили налог, онда вероватно треба да сачекате неколико минута да пристигне, пре него што поново затражите нови кôд.",
+ "confirmemail_send": "Пошаљи потврдни кôд",
"confirmemail_sent": "Потврдна порука је послата.",
- "confirmemail_oncreate": "Послат је потврдни код на вашу имејл адресу.\nОвај код није потребан за пријављивање, али вам треба да бисте укључили могућности имејла на викију.",
+ "confirmemail_oncreate": "Послат је потврдни кôд на вашу имејл адресу.\nОвај кôд није потребан за пријављивање, али вам треба да бисте укључили могућности имејла на викију.",
"confirmemail_sendfailed": "{{SITENAME}} не може да пошаље имејл потврду.\nПроверите да ли је имејл адреса правилно написана.\n\nГрешка: $1",
"confirmemail_invalid": "Потврдни код је неисправан. Вероватно је истекао.",
"confirmemail_needlogin": "Морате бити $1 да бисте потврдили имејл адресу.",
"tag-mw-replace-description": "Измене које уклањају више од 90% садржаја странице",
"tag-mw-rollback": "враћање",
"tag-mw-rollback-description": "Измене које враћају страницу на претходне измене",
- "tag-mw-undo": "поништена ранија измена",
+ "tag-mw-undo": "поништење",
"tag-mw-undo-description": "Измене које поништавају претходне измене",
"tags-title": "Ознаке",
"tags-intro": "На овој страници је наведен списак ознака с којима програм може да означи измене и његово значење.",
"feedback-cancel": "Откажи",
"feedback-close": "Урађено",
"feedback-external-bug-report-button": "Пријави грешку",
- "feedback-dialog-title": "Ð\9fоÑ\88аÑ\99и повÑ\80аÑ\82нÑ\83 инÑ\84оÑ\80маÑ\86иÑ\98Ñ\83",
+ "feedback-dialog-title": "СлаÑ\9aе повÑ\80аÑ\82не инÑ\84оÑ\80маÑ\86иÑ\98е",
"feedback-error1": "Грешка: непрепознат резултат од АПИ-ја",
"feedback-error2": "Грешка: уређивање није успело",
"feedback-error3": "Грешка: нема одговора од АПИ-ја",
"default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (омогућена)",
"mediastatistics": "Статистика датотека",
"mediastatistics-summary": "Статистике о типовима послатих датотека. Овде су урачунате само најновије верзије датотека. Старе или обрисане верзије нису урачунате.",
+ "mediastatistics-nbytes": "{{PLURAL:$1|$1 бајт|$1 бајта|$1 бајтова}} ($2; $3%)",
+ "mediastatistics-bytespertype": "Укупна величина датотеке овог одељка: {{PLURAL:$1|$1 бајт|$1 бајта|$1 бајтова}} ($2; $3%).",
+ "mediastatistics-allbytes": "Укупна величина свих датотека: {{PLURAL:$1|$1 бајт|$1 бајта|$1 бајтова}} ($2).",
"mediastatistics-table-mimetype": "MIME тип",
"mediastatistics-table-extensions": "Могуће екстензије",
"mediastatistics-table-count": "Број датотека",
"json-error-state-mismatch": "Невалидан или покварени JSON",
"json-error-ctrl-char": "Грешка контролног симбола, могуће је да је неисправно енкодиран",
"json-error-syntax": "Грешка у синтакси",
+ "json-error-utf8": "Малформирани UTF-8 знаци, могуће је да су неисправно енкодирани",
+ "json-error-recursion": "Једна или више рекурзивних референци у вредности коју треба енкодирати.",
+ "json-error-inf-or-nan": "Једна или више NAN или INF вредности у вредности коју треба енкодирати",
"json-error-unsupported-type": "Дата је вреднос врсте која се не може енкодирати",
"headline-anchor-title": "Веза до овог одељка",
"special-characters-group-latin": "Латиница",
"date-range-to": "До датума:",
"sessionprovider-generic": "$1 сесије",
"sessionprovider-mediawiki-session-cookiesessionprovider": "сесије са колачићима",
+ "sessionprovider-nocookies": "Колачићи су можда онемогућени. Уверите се да су колачићи омогућени и почните поново.",
"randomrootpage": "Случајна коренска страница",
"log-action-filter-block": "Тип блокирања:",
"log-action-filter-contentmodel": "Тип промене модела садржаја:",
"Prevodim",
"Bugoslav",
"Acamicamacaraca",
- "Fitoschido"
+ "Fitoschido",
+ "BadDog"
]
},
"tog-underline": "Podvlačenje veza:",
"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!'''",
"minimum-size": "Najmanja veličina",
"maximum-size": "Najveća veličina:",
"pagesize": "(bajtovi)",
- "restriction-edit": "Uređivanje",
- "restriction-move": "Premeštanje",
+ "restriction-edit": "uređivanje",
+ "restriction-move": "premeštanje",
"restriction-create": "pravljenje",
"restriction-upload": "otpremanje",
"restriction-level-sysop": "potpuno zaštićeno",
"tooltip-ca-talk": "Razgovor o stranici sa sadržajem",
"tooltip-ca-edit": "Uredi ovu stranicu",
"tooltip-ca-addsection": "Započnite novi odeljak",
- "tooltip-ca-viewsource": "Ова страница је закључана. \nМожете погледати изворни текст.",
+ "tooltip-ca-viewsource": "Ova stranica je zaključana. \nMožete da pogledate njen izvorni kôd",
"tooltip-ca-history": "Prethodne verzije ove stranice",
"tooltip-ca-protect": "Zaštitite ovu stranicu",
"tooltip-ca-unprotect": "Promeni zaštitu ove stranice",
"converter-manual-rule-error": "Fel upptäcktes i manuell språkkonverteringsregel",
"undo-success": "Redigeringen kan göras ogjord.\nVar god och kontrollera jämförelsen nedan för att bekräfta att detta är vad du avser att göra, och spara sedan ändringarna nedan för att göra redigeringen ogjord.",
"undo-failure": "Redigeringen kunde inte göras ogjord på grund av konflikt med mellanliggande redigeringar.",
+ "undo-main-slot-only": "Redigeringen kunde inte göras ogjord eftersom den omfattar innehåll utanför huvudplatsen.",
"undo-norev": "Redigeringen kan inte göras ogjord eftersom den inte finns eller har raderats.",
"undo-nochange": "Det verkar som att redigeringen redan har blivit ogjord.",
"undo-summary": "Gör version $1 av [[Special:Contributions/$2|$2]] ([[User talk:$2|diskussion]]) ogjord",
"rcfilters-activefilters": "Aktiva filter",
"rcfilters-activefilters-hide": "Dölj",
"rcfilters-activefilters-show": "Visa",
+ "rcfilters-activefilters-hide-tooltip": "Dölj området för aktiva filter",
+ "rcfilters-activefilters-show-tooltip": "Visa området för aktiva filter",
"rcfilters-advancedfilters": "Avancerade filter",
"rcfilters-limit-title": "Resultat att visa",
"rcfilters-limit-and-date-label": "$1 {{PLURAL:$1|ändring|ändringar}}, $2",
"rcfilters-days-show-hours": "$1 {{PLURAL:$1|timme|timmar}}",
"rcfilters-highlighted-filters-list": "Markerade: $1",
"rcfilters-quickfilters": "Sparade filter",
- "rcfilters-quickfilters-placeholder-title": "Inga filter har sparats ännu",
+ "rcfilters-quickfilters-placeholder-title": "Inga filter har ännu sparats",
"rcfilters-quickfilters-placeholder-description": "För att spara dina filterinställningar och återanvända dem senare, klicka på bokmärkesikonen under \"Aktiva filter\" nedan.",
"rcfilters-savedqueries-defaultlabel": "Sparade filter",
"rcfilters-savedqueries-rename": "Döp om",
"Macofe",
"Uostofchuodnego",
"Przem(1)s",
- "Fitoschido"
+ "Fitoschido",
+ "Matěj Suchánek"
]
},
"tog-underline": "Podsztrychniyniy linkōw:",
"listusers": "Lista užytkowńikůw",
"listusers-editsonly": "Pokoż yno użytkowńikůw kere majům sprowjyńa",
"usereditcount": "$1 {{PLURAL:$1|sprowjyńe|sprowjyńa|sprowjyń}}",
- "usercreated": "{{GENDER:$3:Utworzono}} $1 uo $2",
+ "usercreated": "{{GENDER:$3|Utworzono}} $1 uo $2",
"newpages": "Nowe zajty",
"newpages-username": "Mjano użytkowńika:",
"ancientpages": "Nojstarše artikle",
"specialpages-group-media": "میڈیا رپورٹیں اور اپلوڈ کردہ",
"specialpages-group-users": "صارفین اور اختیارات",
"specialpages-group-highuse": "کثیر مستعمل صفحات",
- "specialpages-group-pages": "فہارست صفحات",
+ "specialpages-group-pages": "صفحات کی فہرستیں",
"specialpages-group-pagetools": "آلات صفحہ",
"specialpages-group-wiki": "ڈیٹا اور آلات",
"specialpages-group-redirects": "رجوع مکرر کے حامل خصوصی صفحات",
"resetpass-submit-loggedin": "Thay đổi mật khẩu",
"resetpass-submit-cancel": "Hủy bỏ",
"resetpass-wrong-oldpass": "Mật khẩu tạm hoặc mật khẩu hiện thời không hợp lệ.\nCó thể bạn đã thay đổi mật khẩu của mình hoặc đã yêu cầu cung cấp một mật khẩu tạm mới.",
- "resetpass-recycled": "Xin vui lòng chọn một mật khẩu khác với mật khẩu hiện tại.",
+ "resetpass-recycled": "Xin vui lòng thay đổi mật khẩu của bạn thành mật khẩu khác.",
"resetpass-temp-emailed": "Bạn đã đăng nhập bằng mật khẩu tạm gửi qua thư điện tử. Để hoàn tất việc đăng nhập, bạn phải tạo lại mật khẩu mới tại đây:",
"resetpass-temp-password": "Mật khẩu tạm:",
"resetpass-abort-generic": "Một phần mở rộng đã hủy bỏ tác vụ thay đổi mật khẩu.",
"resetpass-expired": "Mật khẩu của bạn đã hết hạn. Xin vui lòng tạo lại mật khẩu mới để đăng nhập.",
- "resetpass-expired-soft": "Mật khẩu của bạn đã hết hạn và cần được đặt lại. Xin vui lòng chọn một mật khẩu mới lúc bây giờ hoặc bấm “{{int:authprovider-resetpass-skip-label}}” để đặt lại sau.",
- "resetpass-validity-soft": "Mật khẩu của bạn không hợp lệ: $1\n\nXin hãy chọn mật khẩu mới bây giờ hoặc bấm “{{int:authprovider-resetpass-skip-label}}” để đặt lại sau.",
+ "resetpass-expired-soft": "Mật khẩu của bạn đã hết hạn và cần được thay đổi. Xin vui lòng thay đổi mật khẩu mới lúc bây giờ hoặc bấm “{{int:authprovider-resetpass-skip-label}}” để thay đổi sau.",
+ "resetpass-validity-soft": "Mật khẩu của bạn không hợp lệ: $1\n\nXin hãy chọn mật khẩu mới bây giờ hoặc bấm “{{int:authprovider-resetpass-skip-label}}” để thay đổi sau.",
"passwordreset": "Tái tạo mật khẩu",
"passwordreset-text-one": "Hãy điền mẫu đơn này để tái tạo mật khẩu.",
"passwordreset-text-many": "Điền vào {{PLURAL:$1}}một hộp sau để nhận một mật khẩu tạm thời qua thư điện tử.",
"rcfilters-other-review-tools": "Công cụ duyệt khác",
"rcfilters-group-results-by-page": "Nhóm kết quả theo trang",
"rcfilters-activefilters": "Bộ lọc hiện hành",
+ "rcfilters-activefilters-hide": "Ẩn",
+ "rcfilters-activefilters-show": "Hiện",
"rcfilters-advancedfilters": "Bộ lọc nâng cao",
"rcfilters-limit-title": "Số kết quả hiển thị",
"rcfilters-limit-and-date-label": "$1 thay đổi, $2",
"uploadstash-file-not-found-no-remote-thumb": "Nạp hình thu nhỏ thất bại: $1\nURL = $2",
"uploadstash-file-not-found-missing-content-type": "Thiếu đầu đề kiểu-nội-dung (content-type).",
"uploadstash-not-logged-in": "Người dùng chưa đăng nhập, các tập tin phải do người dùng đã đăng nhập tải lên.",
- "uploadstash-no-such-key": "Khoá không tồn tại ($1), không thể xoá.",
+ "uploadstash-no-such-key": "Khóa không tồn tại ($1), không thể xóa.",
"uploadstash-zero-length": "Tập tin có dung lượng bằng không.",
"invalid-chunk-offset": "Khúc lệch (chunk offset) không hợp lệ",
"img-auth-accessdenied": "Không cho phép truy cập",
"dellogpage": "Nhật trình xóa",
"dellogpagetext": "Dưới đây là danh sách các trang bị xóa gần đây nhất.",
"deletionlog": "nhật trình xóa",
+ "log-name-create": "Nhật trình tạo trang",
+ "log-description-create": "Dưới đây là danh sách các trang được tạo gần đây nhất.",
"logentry-create-create": "$1 {{GENDER:$2|đã tạo}} trang $3",
"reverted": "Đã hồi phục một phiên bản cũ",
"deletecomment": "Lý do:",
"autosumm-blank": "Đã tẩy trống trang",
"autosumm-replace": "Đã thay thế cả nội dung bằng “$1”",
"autoredircomment": "Đổi hướng đến [[$1]]",
- "autosumm-removed-redirect": "Xoá đổi hướng đến trang [[$1]]",
+ "autosumm-removed-redirect": "Xóa đổi hướng đến trang [[$1]]",
"autosumm-changed-redirect-target": "Thay đổi trang đích của đổi hướng từ [[$1]] sang [[$2]]",
"autosumm-new": "Tạo trang mới với nội dung “$1”",
"autosumm-newblank": "Đã tạo trang trống",
"watchlistedit-clear-titles": "Các tiêu đề:",
"watchlistedit-clear-submit": "Xóa sạch danh sách theo dõi (không thể lùi lại!)",
"watchlistedit-clear-done": "Đã xóa sạch danh sách theo dõi của bạn.",
- "watchlistedit-clear-jobqueue": "Danh sách theo dõi của bạn đang bị xoá. Quá trình này có thể tốn một khoảng thời gian!",
+ "watchlistedit-clear-jobqueue": "Danh sách theo dõi của bạn đang bị xóa. Quá trình này có thể tốn một khoảng thời gian!",
"watchlistedit-clear-removed": "$1 tựa đề đã được xóa khỏi danh sách:",
"watchlistedit-too-many": "Danh sách có quá nhiều trang để hiển thị.",
"watchlisttools-clear": "Xóa sạch danh sách theo dõi",
"tag-mw-contentmodelchange-description": "Sửa đổi [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:ChangeContentModel thay đổi kiểu nội dung] của trang",
"tag-mw-new-redirect": "Trang đổi hướng mới",
"tag-mw-new-redirect-description": "Các sửa đổi tạo ra trang đổi hướng mới hoặc biến một trang thành trang đổi hướng.",
- "tag-mw-removed-redirect": "Xoá đổi hướng",
+ "tag-mw-removed-redirect": "Xóa đổi hướng",
"tag-mw-removed-redirect-description": "Các thay đổi biến một trang đổi hướng thành trang không đổi hướng",
"tag-mw-changed-redirect-target": "Thay đổi trang đích của đổi hướng",
"tag-mw-changed-redirect-target-description": "Các thay đổi làm thay đổi trang đích của một trang đổi hướng",
"tag-mw-blank": "Tẩy trống trang",
- "tag-mw-blank-description": "Các sửa đổi tẩy trống (xoá trắng) một trang",
+ "tag-mw-blank-description": "Các sửa đổi tẩy trống (xóa trắng) một trang",
"tag-mw-replace": "Thay thế nội dung",
"tag-mw-replace-description": "Các sửa đổi thay đổi trên 90% nội dung của một trang",
"tag-mw-rollback": "Lùi tất cả",
"아라",
"Macofe",
"Matma Rex",
- "Reptilien.19831209BE1"
+ "Reptilien.19831209BE1",
+ "Matěj Suchánek"
]
},
"tog-underline": "Sorlignî les loyéns:",
"saveusergroups": "Schaper les groupes d' uzeus",
"userrights-groupsmember": "Mimbe di:",
"userrights-groupsmember-auto": "Mimbe implicite di:",
- "userrights-groups-help": "Vos ploz candjî les groupes ki {{GENDER:$1|cist uzeu|ciste uzeuse}} apårtént:\n* Ene boesse clitcheye c' est k' {{GENDER:$|il|elle}} est mimbe do groupe.\n* Ene boesse disclitcheye c' est k' {{GENDER:$|i|ele}} n' end est nén mimbe.\n* Ene sitoele (*) mostere k' on n' pout nén rsaetchî l' groupe on côp k' il a stî radjouté, ou årvierdimint.",
+ "userrights-groups-help": "Vos ploz candjî les groupes ki {{GENDER:$1|cist uzeu|ciste uzeuse}} apårtént:\n* Ene boesse clitcheye c' est k' {{GENDER:$1|il|elle}} est mimbe do groupe.\n* Ene boesse disclitcheye c' est k' {{GENDER:$1|i|ele}} n' end est nén mimbe.\n* Ene sitoele (*) mostere k' on n' pout nén rsaetchî l' groupe on côp k' il a stî radjouté, ou årvierdimint.",
"userrights-reason": "Råjhon:",
"userrights-no-interwiki": "Vos n' avoz nén les permissions po candjî les droets des uzeus so ds ôtes wikis.",
"userrights-nodatabase": "Li båze di dnêyes «$1» n' egzistêye nén ou n' est nén locåle.",
"viewsource": "ⵙⴽⵏ ⴰⵙⴰⴳⵎ",
"viewsource-title": "ⵥⵕ ⴰⵖⴱⴰⵍⵓ ⵉ $1",
"viewsourcetext": "ⵜⵣⵎⵔⴷ ⴰⴷ ⵜⵥⵔⴷ ⴷ ⴰⴷ ⵜⵙⵙⵏⵖⵍⴷ ⴰⵙⴰⴳⵎ ⵏ ⵜⴰⵙⵏⴰ ⴰⴷ",
+ "welcomeuser": "ⴰⵏⵙⵓⴼ, $1!",
+ "yourname": "ⵉⵙⵎ ⵏ ⵓⵙⵎⵔⴰⵙ",
"userlogin-yourname": "ⵉⵙⵎ ⵏ ⵓⵙⵎⵔⴰⵙ",
"userlogin-yourname-ph": "ⵙⵙⴽⵛⵎ ⵉⵙⵎ ⵏ ⵓⵏⵙⵙⵎⵔⵙ ⵏⵏⵎ/ⴽ",
+ "createacct-another-username-ph": "ⵙⵙⴽⵛⵎ ⵉⵙⵎ ⵏ ⵓⵏⵙⵙⵎⵔⵙ ⵏⵏⵎ/ⴽ",
"yourpassword": "ⵜⴰⴳⵓⵔⵉ ⵏ ⵓⵣⵔⴰⵢ",
"userlogin-yourpassword": "ⵜⴰⴳⵓⵔⵉ ⵏ ⵓⵣⵔⴰⵢ",
"userlogin-yourpassword-ph": "ⵙⵙⴽⵛⵎ ⵜⴰⴳⵓⵔⵉ ⵏ ⵓⵣⵔⴰⵢ ⵏⵏⴽ",
"createacct-benefit-body1": "{{PLURAL:$1|ⴰⵙⵏⴼⵍ|ⵉⵙⵏⴼⴰⵍ}}",
"createacct-benefit-body2": "{{PLURAL:$1|ⵜⴰⵙⵏⴰ|ⵜⴰⵙⵏⵉⵡⵉⵏ}}",
"createacct-benefit-body3": "{{PLURAL:$1|ⴰⵏⴰⵎⵓ|ⵉⵏⴰⵎⵓⵜⵏ}} {{PLURAL:$1|ⴰⵎⴳⴳⴰⵔⵓ|ⵉⵎⴳⴳⵓⵔⴰ}}",
+ "mailmypassword": "ⵔⴰⵔ ⴷ ⵜⴰⴳⵓⵔⵉ ⵏ ⵓⵣⵔⴰⵢ",
"loginlanguagelabel": "ⵜⵓⵜⵍⴰⵢⵜ: $1",
"pt-login": "ⴽⵛⵎ",
"pt-login-button": "ⴽⵛⵎ",
"botpasswords-label-delete": "ⴽⴽⵙ",
"resetpass-submit-cancel": "ⵙⵔ",
"passwordreset": "ⵔⴰⵔ ⴷ ⵜⴰⴳⵓⵔⵉ ⵏ ⵓⵣⵔⴰⵢ",
+ "passwordreset-username": "ⵉⵙⵎ ⵏ ⵓⵙⵎⵔⴰⵙ:",
"changeemail-newemail": "ⵉⵎⴰⵢⵍ ⴰⵎⴰⵢⵏⵓ:",
"changeemail-none": "(ⵓⵍⴰ ⵢⴰⵏ)",
"bold_sample": "ⴰⴹⵔⵉⵙ ⴰⵣⵓⵔⴰⵔ",
"showpreview": "ⵙⴽⵏ ⴰⴱⵔⵉⴼⵢⵓ",
"showdiff": "ⵙⵎⴰⵍ ⵉⵙⵏⴼⵍⵏ",
"loginreqlink": "ⴽⵛⵎ",
+ "accmailtitle": "ⵜⴰⴳⵓⵔⵉ ⵓⵣⵔⴰⵢ ⵜⴻⵜⵜⵡⴰⵣⵏ",
"newarticle": "(ⴰⵎⴰⵢⵏⵓ)",
"newarticletext": "ⵜⴹⴼⴰⵔⴷ ⵢⴰⵏ ⵓⵙⵖⵏ ⵖⵔ ⵢⴰⵜ ⵜⴰⵙⵏⴰ ⵏⵏⴰ ⵓⵔ ⵜⴰ ⵉⵍⵍⵉⵏ. \nⴰⴼⴰⴷ ⴰⴷ ⵜⵙⵏⵓⵍⴼⵓⴷ ⵜⴰⵙⵏⴰ, ⵙⵙⵏⵜⵉ ⵜⵉⵔⵔⴰ ⴳ ⵓⴼⵏⵉⵇ ⴳ ⵉⵣⴷⴷⴰⵔ (ⵥⵔ [$1 ⵜⴰⵙⵏⴰ ⵏ ⵜⵡⵉⵙⵉ] ⵉ ⵡⵓⴳⴳⴰⵔ ⵏ ⵉⵏⵖⵎⵉⵙⵏ). \nⵎⴽ ⵜⵍⵍⵉⴷ ⴷⴰ ⵙ ⵓⵣⴳⴰⵍ, ⴰⴽⵍ ⵖⴼ <strong>ⴰⵖⵓⵍ</strong> ⴳ ⵓⵙⴰⵔⴰ ⵏⵏⴽ.",
"noarticletext": "ⵓⵔ ⵉⵍⵍⵉ ⴽⵔⴰ ⵏ ⵓⴹⵔⵉⵙ ⴳ ⵜⴰⵙⵏⴰ ⴰⴷ ⵖⵉⵍⴰ. \nⵜⵣⵎⵔⴷ ⴰⴷ [[Special:Search/{{PAGENAME}}|ⵜⵔⵣⵓⴷ ⵖⴼ ⵓⵣⵡⵍ ⵏⵏⵙ]] ⴳ ⵜⴰⵙⵏⵉⵡⵉⵏ ⵢⴰⴹⵏ, <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ⵔⵣⵓ ⵖⴼ logs ⵖⵔⵙ ⵉⵇⵇⵏⴻⵏ],\nⵏⵖ [{{fullurl:{{FULLPAGENAME}}|action=edit}} ⵙⵏⵓⵍⴼⵓ ⵜⴰⵙⵏⴰ]</span>.",
"editing": "ⴰⵙⵏⴼⵍ ⵏ $1",
"creating": "ⴰⵙⵏⵓⵍⴼⵓ ⵏ $1",
"editingsection": "ⵙⵏⴼⵍ ⴰⴳⵣⵣⵓⵎ $1",
+ "yourtext": "ⴰⴹⵕⵉⵙ ⵏⵏⴽ/ⵎ",
"templatesused": "{{PLURAL:$1|ⵜⴰⵙⴽⴽⴰ|ⵜⴰⵙⴽⴽⵉⵡⵉⵏ}} {{PLURAL:$1|ⵉⵜⵜⵓⵙⵎⵔⵙⵏ|ⵜⵜⵓⵙⵎⵔⵙⵏⵉⵏ}} ⴳ ⵜⴰⵙⵏⴰ ⴰⴷ:",
"template-protected": "(ⵉⵜⵜⵢⴰⵔⴰⵢ)",
"template-semiprotected": "(ⵜⵎⵃⴹⴰ ⵙ ⵓⴳⵣⵎⴰⵏ)",
"filedelete-submit": "ⴽⴽⵙ",
"download": "ⴰⴳⵎ",
"randompage": "ⵜⴰⵙⵏⴰ ⵜⴰⴷⵀⵎⴰⵙⵜ",
+ "randomincategory-submit": "ⴷⴷⵓ",
"statistics": "ⴰⵙⵏⵎⴽⵜⴰ",
"statistics-pages": "ⵜⴰⵙⵏⵉⵡⵉⵏ",
+ "pageswithprop-submit": "ⴷⴷⵓ",
"brokenredirects-edit": "ⵙⵏⴼⵍ",
"brokenredirects-delete": "ⴽⴽⵙ",
"withoutinterwiki-legend": "ⴰⵣⵡⵉⵔ",
"whatlinkshere-title": "ⵜⴰⵙⵏⵉⵡⵉⵏ ⵉⵣⴷⵉⵏ ⵖⵔ $1",
"whatlinkshere-page": "ⵜⴰⵙⵏⴰ:",
"linkshere": "ⵜⴰⵙⵏⵉⵡⵉⵏ ⴰⴷ ⵣⴷⵉⵏ ⵖⵔ <strong>$1</strong>:",
- "nolinkshere": "ⵓⵔ ⵍⵍⵉⵏ ⵜⴰⵙⵏⵉⵡⵉⵏ ⵉⵣⴷⵉⵏ ⵖⵔ <strong>$1</strong>",
+ "nolinkshere": "ⵓⵔ ⵍⵍⵉⵏ ⵜⴰⵙⵏⵉⵡⵉⵏ ⵉⵣⴷⵉⵏ ⵖⵔ <strong>$2</strong>",
"isredirect": "ⵙⵡⴰⵍⴰ ⵜⴰⵙⵏⴰ",
"istemplate": "ⴰⵙⵙⵓⵎⵢ",
"isimage": "ⴰⵙⵖⵓⵏ ⵏ ⵓⴼⴰⵢⵍⵓ",
"whatlinkshere-hidelinks": "$1 ⵉⵙⵖⵓⵏⴻⵏ",
"whatlinkshere-hideimages": "$1 ⵉⵣⴷⴰⵢⵏ ⵖⵔ ⵓⴼⵉⵍⵢⵓ",
"whatlinkshere-filters": "ⵜⵉⵙⵜⵜⴰⵢⵉⵏ",
+ "whatlinkshere-submit": "ⴷⴷⵓ",
"ipbreason": "ⵜⴰⵎⵏⵜⵉⵍⵜ:",
"ipboptions": "2 ⵜⵙⵔⴰⴳⵉⵏ:2 ⵜⵙⵔⴰⴳⵉⵏ,1 ⵡⴰⵙⵙ:1 ⵡⴰⵙⵙ,3 ⵡⵓⵙⵙⴰⵏ:3 ⵡⵓⵙⵙⴰⵏ,1 ⵉⵎⴰⵍⴰⵙⵙ:1 ⵉⵎⴰⵍⴰⵙⵙ,2 ⵉⵎⴰⵍⴰⵙⵙⵏ:2 ⵉⵎⴰⵍⴰⵙⵙⵏ,1 ⵡⴰⵢⵢⵓⵔ:1 ⵡⴰⵢⵢⵓⵔ,3 ⵉⵢⵢⵉⵔⵏ:3 ⵉⵢⵢⵉⵔⵏ,6 ⵉⵢⵢⵉⵔⵏ:6 ⵉⵢⵢⵉⵔⵏ,1 ⵓⵙⴳⴳⴰⵙ:1 ⵓⵙⴳⴳⴰⵙ,ⴰⵔⵓⵙⵎⵉⵍ:ⴰⵔⵓⵙⵎⵉⵍ",
"blocklist-reason": "ⵜⴰⵎⵏⵜⵉⵍⵜ",
"imgmultigo": "ⴷⴷⵓ!",
"imgmultigoto": "ⴷⴷⵓ ⵖⵔ ⵜⴰⵙⵏⴰ ⴰⴷ $1",
"img-lang-default": "(ⵜⵓⵜⵍⴰⵢⵜ ⵙ ⵓⵡⵏⵓⵍ)",
+ "img-lang-go": "ⴷⴷⵓ",
+ "table_pager_limit_submit": "ⴷⴷⵓ",
"watchlistedit-clear-explain": "ⵎⴰⵕⵕⴰ",
"watchlisttools-clear": "ⵙⴼⴹ ⵜⴰⵍⴳⴰⵎⵜ ⵏ ⵓⴹⴼⴼⵓⵔ",
"watchlisttools-view": "ⵙⴽⵏ ⵉⵙⵏⵉⴼⵉⵍⵏ ⴷ ⵢⵓⵙⴰⵏ",
"逆襲的天邪鬼",
"WhitePhosphorus",
"A2093064",
- "EagerLin"
+ "EagerLin",
+ "Deathkon"
]
},
"tog-underline": "链接下划线:",
"resetpass-submit-loggedin": "更改密码",
"resetpass-submit-cancel": "取消",
"resetpass-wrong-oldpass": "临时密码或当前密码无效。您可能已经更改了您的密码,或者请求了新的临时密码。",
- "resetpass-recycled": "请更改您的密码为与当前密码不同的密码。",
+ "resetpass-recycled": "请将您的密码更改为除当前密码以外的其他密码。",
"resetpass-temp-emailed": "您使用了通过电子邮件发送的临时密码登录。要完成登录,您必须在此设置一个新密码:",
"resetpass-temp-password": "临时密码:",
"resetpass-abort-generic": "密码更改已经被扩展程序中止。",
"converter-manual-rule-error": "在手动语言转换规则中检测到错误",
"undo-success": "该编辑可以被撤销。请检查下面的对比以核实您想要撤销的内容,然后保存下面的更改以完成撤销。",
"undo-failure": "因存在冲突的中间编辑,本编辑不能撤销。",
+ "undo-main-slot-only": "编辑无法撤销,因为其涉及主位置以外的内容。",
"undo-norev": "该编辑无法撤消,因为它不存在或已被删除。",
"undo-nochange": "这次编辑似乎已被撤销。",
"undo-summary": "撤销[[Special:Contributions/$2|$2]]([[User talk:$2|讨论]])的版本$1",
"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": "隱藏監視清單中已巡查的編輯",
"thu": "四",
"fri": "五",
"sat": "六",
- "january": "1月",
+ "january": "一月",
"february": "二月",
"march": "三月",
"april": "四月",
"september": "九月",
"october": "十月",
"november": "十一月",
- "december": "12月",
+ "december": "十二月",
"january-gen": "一月",
"february-gen": "二月",
"march-gen": "三月",
"helppage-top-gethelp": "說明",
"mainpage": "首頁",
"mainpage-description": "首頁",
- "policy-url": "Project:Policy",
+ "policy-url": "Project:方針",
"portal": "社群入口",
"portal-url": "Project:社群入口",
"privacy": "隱私政策",
"converter-manual-rule-error": "手動語言轉換規則時偵測到錯誤",
"undo-success": "此編輯可以被還原。\n請檢查以下比較表,確認您是否要還原,然後儲存以下變更以完成編輯還原。",
"undo-failure": "由於編輯的修訂間有衝突,此編輯不能還原。",
+ "undo-main-slot-only": "編輯無法還原,因為有包含到在主分配之外的內容。",
"undo-norev": "此編輯不存在或已被刪除,無法還原。",
"undo-nochange": "此編輯已被還原。",
"undo-summary": "取消由 [[Special:Contributions/$2|$2]] ([[User talk:$2|對話]]) 所作出的修訂 $1",
"revdelete-text-file": "已刪除的檔案版本仍會出現於檔案歷史中,但內容將不開放存取。",
"logdelete-text": "已刪除的日誌活動仍會出現於日誌中,但其部分內容將不會向公眾開放存取。",
"revdelete-text-others": "若未設定額外條件,其他管理員仍有權限檢視與取消刪除隱藏的內容。",
- "revdelete-confirm": "è«\8b確èª\8dæ\82¨æ\98¯å\90¦æ\98\8eç\99½æ¤å\8b\95ä½\9cæ\9c\83é\80 æ\88\90ç\9a\84å¾\8cæ\9e\9cï¼\8c以å\8f\8aæ\82¨æ\89\80å\81\9aç\9a\84å\8b\95ä½\9cæ\98¯å\90¦ç¬¦å\90\88[[{{MediaWiki:Policy-url}}|æ\94¿ç\96]]規範。",
+ "revdelete-confirm": "è«\8b確èª\8dæ\82¨æ\98¯å\90¦æ\98\8eç\99½æ¤å\8b\95ä½\9cæ\9c\83é\80 æ\88\90ç\9a\84å¾\8cæ\9e\9cï¼\8c以å\8f\8aæ\82¨æ\89\80å\81\9aç\9a\84å\8b\95ä½\9cæ\98¯å\90¦ç¬¦å\90\88[[{{MediaWiki:Policy-url}}|æ\96¹é\87\9d]]規範。",
"revdelete-suppress-text": "禁止顯示應<strong>只有</strong>在下述情形時使用:\n* 潛在誹謗的資訊\n* 不恰當的個人資料\n*: <em>住家地址、電話號碼、身分證號碼等。</em>",
"revdelete-legend": "設定顯示限制",
"revdelete-hide-text": "修訂文字",
"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": "翻譯",
</script>
<script src="modules/lib/jquery/jquery.js"></script>
<script src="modules/src/mediawiki/mediawiki.js"></script>
- <script src="modules/src/mediawiki/mediawiki.base.js"></script>
- <script src="modules/src/mediawiki/mediawiki.errorLogger.js"></script>
+ <script src="modules/src/mediawiki.base/mediawiki.base.js"></script>
+ <script src="modules/src/mediawiki.base/mediawiki.errorLogger.js"></script>
<script src="modules/lib/oojs/oojs.jquery.js"></script>
<script src="modules/lib/oojs-ui/oojs-ui-core.js"></script>
<script src="modules/lib/oojs-ui/oojs-ui-widgets.js"></script>
'targets' => [ 'desktop', 'mobile' ],
],
'jquery.hidpi' => [
+ 'deprecated' => 'Use of the srcset polyfill is deprecated since MediaWiki 1.32.0',
'scripts' => 'resources/src/jquery/jquery.hidpi.js',
'targets' => [ 'desktop', 'mobile' ],
],
'scripts' => [
'resources/src/mediawiki/mediawiki.js',
'resources/src/mediawiki/mediawiki.requestIdleCallback.js',
- 'resources/src/mediawiki/mediawiki.errorLogger.js',
- 'resources/src/mediawiki/mediawiki.base.js',
],
'debugScripts' => 'resources/src/mediawiki/mediawiki.log.js',
'targets' => [ 'desktop', 'mobile' ],
],
+ 'mediawiki.base' => [
+ // Keep in sync with maintenance/jsduck/eg-iframe.html
+ 'scripts' => [
+ 'resources/src/mediawiki.base/mediawiki.errorLogger.js',
+ 'resources/src/mediawiki.base/mediawiki.base.js',
+ ],
+ 'targets' => [ 'desktop', 'mobile' ],
+ ],
'mediawiki.apihelp' => [
'styles' => 'resources/src/mediawiki.apihelp.css',
'targets' => [ 'desktop' ],
],
'targets' => [ 'desktop', 'mobile' ],
],
- 'mediawiki.hidpi' => [
- 'scripts' => 'resources/src/mediawiki.hidpi/hidpi.js',
- 'dependencies' => 'jquery.hidpi',
- 'skipFunction' => 'resources/src/mediawiki.hidpi/skip.js',
- 'targets' => [ 'desktop', 'mobile' ],
- ],
'mediawiki.hlist' => [
'targets' => [ 'desktop', 'mobile' ],
'styles' => [
],
],
- /* dom-level2-shim */
- 'dom-level2-shim' => [
- 'deprecated' => 'Use of the "dom-level2-shim" module is deprecated since MediaWiki 1.29.0',
- 'targets' => [ 'desktop', 'mobile' ],
- ],
-
/**
* html5shiv
*
--- /dev/null
+/*!
+ * This file is currently loaded as part of the 'mediawiki' module and therefore
+ * concatenated to mediawiki.js and executed at the same time. This file exists
+ * to help prepare for splitting up the 'mediawiki' module.
+ * This effort is tracked at https://phabricator.wikimedia.org/T192623
+ *
+ * In short:
+ *
+ * - mediawiki.js will be reduced to the minimum needed to define mw.loader and
+ * mw.config, and then moved to its own private "mediawiki.loader" module that
+ * can be embedded within the StartupModule response.
+ *
+ * - mediawiki.base.js and other files in this directory will remain part of the
+ * "mediawiki" module, and will remain a default/implicit dependency for all
+ * regular modules, just like jquery and wikibits already are.
+ */
+/* globals mw */
+( function () {
+ 'use strict';
+
+ var slice = Array.prototype.slice,
+ mwLoaderTrack = mw.track,
+ trackCallbacks = $.Callbacks( 'memory' ),
+ trackHandlers = [],
+ hasOwn = Object.prototype.hasOwnProperty;
+
+ /**
+ * Object constructor for messages.
+ *
+ * Similar to the Message class in MediaWiki PHP.
+ *
+ * Format defaults to 'text'.
+ *
+ * @example
+ *
+ * var obj, str;
+ * mw.messages.set( {
+ * 'hello': 'Hello world',
+ * 'hello-user': 'Hello, $1!',
+ * 'welcome-user': 'Welcome back to $2, $1! Last visit by $1: $3'
+ * } );
+ *
+ * obj = new mw.Message( mw.messages, 'hello' );
+ * mw.log( obj.text() );
+ * // Hello world
+ *
+ * obj = new mw.Message( mw.messages, 'hello-user', [ 'John Doe' ] );
+ * mw.log( obj.text() );
+ * // Hello, John Doe!
+ *
+ * obj = new mw.Message( mw.messages, 'welcome-user', [ 'John Doe', 'Wikipedia', '2 hours ago' ] );
+ * mw.log( obj.text() );
+ * // Welcome back to Wikipedia, John Doe! Last visit by John Doe: 2 hours ago
+ *
+ * // Using mw.message shortcut
+ * obj = mw.message( 'hello-user', 'John Doe' );
+ * mw.log( obj.text() );
+ * // Hello, John Doe!
+ *
+ * // Using mw.msg shortcut
+ * str = mw.msg( 'hello-user', 'John Doe' );
+ * mw.log( str );
+ * // Hello, John Doe!
+ *
+ * // Different formats
+ * obj = new mw.Message( mw.messages, 'hello-user', [ 'John "Wiki" <3 Doe' ] );
+ *
+ * obj.format = 'text';
+ * str = obj.toString();
+ * // Same as:
+ * str = obj.text();
+ *
+ * mw.log( str );
+ * // Hello, John "Wiki" <3 Doe!
+ *
+ * mw.log( obj.escaped() );
+ * // Hello, John "Wiki" <3 Doe!
+ *
+ * @class mw.Message
+ *
+ * @constructor
+ * @param {mw.Map} map Message store
+ * @param {string} key
+ * @param {Array} [parameters]
+ */
+ function Message( map, key, parameters ) {
+ this.format = 'text';
+ this.map = map;
+ this.key = key;
+ this.parameters = parameters === undefined ? [] : slice.call( parameters );
+ return this;
+ }
+
+ Message.prototype = {
+ /**
+ * Get parsed contents of the message.
+ *
+ * The default parser does simple $N replacements and nothing else.
+ * This may be overridden to provide a more complex message parser.
+ * The primary override is in the mediawiki.jqueryMsg module.
+ *
+ * This function will not be called for nonexistent messages.
+ *
+ * @return {string} Parsed message
+ */
+ parser: function () {
+ return mw.format.apply( null, [ this.map.get( this.key ) ].concat( this.parameters ) );
+ },
+
+ /**
+ * Add (does not replace) parameters for `$N` placeholder values.
+ *
+ * @param {Array} parameters
+ * @return {mw.Message}
+ * @chainable
+ */
+ params: function ( parameters ) {
+ var i;
+ for ( i = 0; i < parameters.length; i++ ) {
+ this.parameters.push( parameters[ i ] );
+ }
+ return this;
+ },
+
+ /**
+ * Convert message object to its string form based on current format.
+ *
+ * @return {string} Message as a string in the current form, or `<key>` if key
+ * does not exist.
+ */
+ toString: function () {
+ var text;
+
+ if ( !this.exists() ) {
+ // Use ⧼key⧽ as text if key does not exist
+ // Err on the side of safety, ensure that the output
+ // is always html safe in the event the message key is
+ // missing, since in that case its highly likely the
+ // message key is user-controlled.
+ // '⧼' is used instead of '<' to side-step any
+ // double-escaping issues.
+ // (Keep synchronised with Message::toString() in PHP.)
+ return '⧼' + mw.html.escape( this.key ) + '⧽';
+ }
+
+ if ( this.format === 'plain' || this.format === 'text' || this.format === 'parse' ) {
+ text = this.parser();
+ }
+
+ if ( this.format === 'escaped' ) {
+ text = this.parser();
+ text = mw.html.escape( text );
+ }
+
+ return text;
+ },
+
+ /**
+ * Change format to 'parse' and convert message to string
+ *
+ * If jqueryMsg is loaded, this parses the message text from wikitext
+ * (where supported) to HTML
+ *
+ * Otherwise, it is equivalent to plain.
+ *
+ * @return {string} String form of parsed message
+ */
+ parse: function () {
+ this.format = 'parse';
+ return this.toString();
+ },
+
+ /**
+ * Change format to 'plain' and convert message to string
+ *
+ * This substitutes parameters, but otherwise does not change the
+ * message text.
+ *
+ * @return {string} String form of plain message
+ */
+ plain: function () {
+ this.format = 'plain';
+ return this.toString();
+ },
+
+ /**
+ * Change format to 'text' and convert message to string
+ *
+ * If jqueryMsg is loaded, {{-transformation is done where supported
+ * (such as {{plural:}}, {{gender:}}, {{int:}}).
+ *
+ * Otherwise, it is equivalent to plain
+ *
+ * @return {string} String form of text message
+ */
+ text: function () {
+ this.format = 'text';
+ return this.toString();
+ },
+
+ /**
+ * Change the format to 'escaped' and convert message to string
+ *
+ * This is equivalent to using the 'text' format (see #text), then
+ * HTML-escaping the output.
+ *
+ * @return {string} String form of html escaped message
+ */
+ escaped: function () {
+ this.format = 'escaped';
+ return this.toString();
+ },
+
+ /**
+ * Check if a message exists
+ *
+ * @see mw.Map#exists
+ * @return {boolean}
+ */
+ exists: function () {
+ return this.map.exists( this.key );
+ }
+ };
+
+ /**
+ * @class mw
+ * @singleton
+ */
+
+ /**
+ * @inheritdoc mw.inspect#runReports
+ * @method
+ */
+ mw.inspect = function () {
+ var args = arguments;
+ mw.loader.using( 'mediawiki.inspect', function () {
+ mw.inspect.runReports.apply( mw.inspect, args );
+ } );
+ };
+
+ /**
+ * Format a string. Replace $1, $2 ... $N with positional arguments.
+ *
+ * Used by Message#parser().
+ *
+ * @since 1.25
+ * @param {string} formatString Format string
+ * @param {...Mixed} parameters Values for $N replacements
+ * @return {string} Formatted string
+ */
+ mw.format = function ( formatString ) {
+ var parameters = slice.call( arguments, 1 );
+ return formatString.replace( /\$(\d+)/g, function ( str, match ) {
+ var index = parseInt( match, 10 ) - 1;
+ return parameters[ index ] !== undefined ? parameters[ index ] : '$' + match;
+ } );
+ };
+
+ // Expose Message constructor
+ mw.Message = Message;
+
+ /**
+ * Get a message object.
+ *
+ * Shortcut for `new mw.Message( mw.messages, key, parameters )`.
+ *
+ * @see mw.Message
+ * @param {string} key Key of message to get
+ * @param {...Mixed} parameters Values for $N replacements
+ * @return {mw.Message}
+ */
+ mw.message = function ( key ) {
+ var parameters = slice.call( arguments, 1 );
+ return new Message( mw.messages, key, parameters );
+ };
+
+ /**
+ * Get a message string using the (default) 'text' format.
+ *
+ * Shortcut for `mw.message( key, parameters... ).text()`.
+ *
+ * @see mw.Message
+ * @param {string} key Key of message to get
+ * @param {...Mixed} parameters Values for $N replacements
+ * @return {string}
+ */
+ mw.msg = function () {
+ return mw.message.apply( mw.message, arguments ).toString();
+ };
+
+ /**
+ * Track an analytic event.
+ *
+ * This method provides a generic means for MediaWiki JavaScript code to capture state
+ * information for analysis. Each logged event specifies a string topic name that describes
+ * the kind of event that it is. Topic names consist of dot-separated path components,
+ * arranged from most general to most specific. Each path component should have a clear and
+ * well-defined purpose.
+ *
+ * Data handlers are registered via `mw.trackSubscribe`, and receive the full set of
+ * events that match their subcription, including those that fired before the handler was
+ * bound.
+ *
+ * @param {string} topic Topic name
+ * @param {Object} [data] Data describing the event, encoded as an object
+ */
+ mw.track = function ( topic, data ) {
+ mwLoaderTrack( topic, data );
+ trackCallbacks.fire( mw.trackQueue );
+ };
+
+ /**
+ * Register a handler for subset of analytic events, specified by topic.
+ *
+ * Handlers will be called once for each tracked event, including any events that fired before the
+ * handler was registered; 'this' is set to a plain object with a 'timeStamp' property indicating
+ * the exact time at which the event fired, a string 'topic' property naming the event, and a
+ * 'data' property which is an object of event-specific data. The event topic and event data are
+ * also passed to the callback as the first and second arguments, respectively.
+ *
+ * @param {string} topic Handle events whose name starts with this string prefix
+ * @param {Function} callback Handler to call for each matching tracked event
+ * @param {string} callback.topic
+ * @param {Object} [callback.data]
+ */
+ mw.trackSubscribe = function ( topic, callback ) {
+ var seen = 0;
+ function handler( trackQueue ) {
+ var event;
+ for ( ; seen < trackQueue.length; seen++ ) {
+ event = trackQueue[ seen ];
+ if ( event.topic.indexOf( topic ) === 0 ) {
+ callback.call( event, event.topic, event.data );
+ }
+ }
+ }
+
+ trackHandlers.push( [ handler, callback ] );
+
+ trackCallbacks.add( handler );
+ };
+
+ /**
+ * Stop handling events for a particular handler
+ *
+ * @param {Function} callback
+ */
+ mw.trackUnsubscribe = function ( callback ) {
+ trackHandlers = trackHandlers.filter( function ( fns ) {
+ if ( fns[ 1 ] === callback ) {
+ trackCallbacks.remove( fns[ 0 ] );
+ // Ensure the tuple is removed to avoid holding on to closures
+ return false;
+ }
+ return true;
+ } );
+ };
+
+ // Fire events from before track() triggred fire()
+ trackCallbacks.fire( mw.trackQueue );
+
+ /**
+ * Registry and firing of events.
+ *
+ * MediaWiki has various interface components that are extended, enhanced
+ * or manipulated in some other way by extensions, gadgets and even
+ * in core itself.
+ *
+ * This framework helps streamlining the timing of when these other
+ * code paths fire their plugins (instead of using document-ready,
+ * which can and should be limited to firing only once).
+ *
+ * Features like navigating to other wiki pages, previewing an edit
+ * and editing itself – without a refresh – can then retrigger these
+ * hooks accordingly to ensure everything still works as expected.
+ *
+ * Example usage:
+ *
+ * mw.hook( 'wikipage.content' ).add( fn ).remove( fn );
+ * mw.hook( 'wikipage.content' ).fire( $content );
+ *
+ * Handlers can be added and fired for arbitrary event names at any time. The same
+ * event can be fired multiple times. The last run of an event is memorized
+ * (similar to `$(document).ready` and `$.Deferred().done`).
+ * This means if an event is fired, and a handler added afterwards, the added
+ * function will be fired right away with the last given event data.
+ *
+ * Like Deferreds and Promises, the mw.hook object is both detachable and chainable.
+ * Thus allowing flexible use and optimal maintainability and authority control.
+ * You can pass around the `add` and/or `fire` method to another piece of code
+ * without it having to know the event name (or `mw.hook` for that matter).
+ *
+ * var h = mw.hook( 'bar.ready' );
+ * new mw.Foo( .. ).fetch( { callback: h.fire } );
+ *
+ * Note: Events are documented with an underscore instead of a dot in the event
+ * name due to jsduck not supporting dots in that position.
+ *
+ * @class mw.hook
+ */
+ mw.hook = ( function () {
+ var lists = {};
+
+ /**
+ * Create an instance of mw.hook.
+ *
+ * @method hook
+ * @member mw
+ * @param {string} name Name of hook.
+ * @return {mw.hook}
+ */
+ return function ( name ) {
+ var list = hasOwn.call( lists, name ) ?
+ lists[ name ] :
+ lists[ name ] = $.Callbacks( 'memory' );
+
+ return {
+ /**
+ * Register a hook handler
+ *
+ * @param {...Function} handler Function to bind.
+ * @chainable
+ */
+ add: list.add,
+
+ /**
+ * Unregister a hook handler
+ *
+ * @param {...Function} handler Function to unbind.
+ * @chainable
+ */
+ remove: list.remove,
+
+ /**
+ * Run a hook.
+ *
+ * @param {...Mixed} data
+ * @return {mw.hook}
+ * @chainable
+ */
+ fire: function () {
+ return list.fireWith.call( this, null, slice.call( arguments ) );
+ }
+ };
+ };
+ }() );
+
+ /**
+ * HTML construction helper functions
+ *
+ * @example
+ *
+ * var Html, output;
+ *
+ * Html = mw.html;
+ * output = Html.element( 'div', {}, new Html.Raw(
+ * Html.element( 'img', { src: '<' } )
+ * ) );
+ * mw.log( output ); // <div><img src="<"/></div>
+ *
+ * @class mw.html
+ * @singleton
+ */
+ mw.html = ( function () {
+ function escapeCallback( s ) {
+ switch ( s ) {
+ case '\'':
+ return ''';
+ case '"':
+ return '"';
+ case '<':
+ return '<';
+ case '>':
+ return '>';
+ case '&':
+ return '&';
+ }
+ }
+
+ return {
+ /**
+ * Escape a string for HTML.
+ *
+ * Converts special characters to HTML entities.
+ *
+ * mw.html.escape( '< > \' & "' );
+ * // Returns < > ' & "
+ *
+ * @param {string} s The string to escape
+ * @return {string} HTML
+ */
+ escape: function ( s ) {
+ return s.replace( /['"<>&]/g, escapeCallback );
+ },
+
+ /**
+ * Create an HTML element string, with safe escaping.
+ *
+ * @param {string} name The tag name.
+ * @param {Object} [attrs] An object with members mapping element names to values
+ * @param {string|mw.html.Raw|mw.html.Cdata|null} [contents=null] The contents of the element.
+ *
+ * - string: Text to be escaped.
+ * - null: The element is treated as void with short closing form, e.g. `<br/>`.
+ * - this.Raw: The raw value is directly included.
+ * - this.Cdata: The raw value is directly included. An exception is
+ * thrown if it contains any illegal ETAGO delimiter.
+ * See <https://www.w3.org/TR/html401/appendix/notes.html#h-B.3.2>.
+ * @return {string} HTML
+ */
+ element: function ( name, attrs, contents ) {
+ var v, attrName, s = '<' + name;
+
+ if ( attrs ) {
+ for ( attrName in attrs ) {
+ v = attrs[ attrName ];
+ // Convert name=true, to name=name
+ if ( v === true ) {
+ v = attrName;
+ // Skip name=false
+ } else if ( v === false ) {
+ continue;
+ }
+ s += ' ' + attrName + '="' + this.escape( String( v ) ) + '"';
+ }
+ }
+ if ( contents === undefined || contents === null ) {
+ // Self close tag
+ s += '/>';
+ return s;
+ }
+ // Regular open tag
+ s += '>';
+ switch ( typeof contents ) {
+ case 'string':
+ // Escaped
+ s += this.escape( contents );
+ break;
+ case 'number':
+ case 'boolean':
+ // Convert to string
+ s += String( contents );
+ break;
+ default:
+ if ( contents instanceof this.Raw ) {
+ // Raw HTML inclusion
+ s += contents.value;
+ } else if ( contents instanceof this.Cdata ) {
+ // CDATA
+ if ( /<\/[a-zA-z]/.test( contents.value ) ) {
+ throw new Error( 'mw.html.element: Illegal end tag found in CDATA' );
+ }
+ s += contents.value;
+ } else {
+ throw new Error( 'mw.html.element: Invalid type of contents' );
+ }
+ }
+ s += '</' + name + '>';
+ return s;
+ },
+
+ /**
+ * Wrapper object for raw HTML passed to mw.html.element().
+ *
+ * @class mw.html.Raw
+ * @constructor
+ * @param {string} value
+ */
+ Raw: function ( value ) {
+ this.value = value;
+ },
+
+ /**
+ * Wrapper object for CDATA element contents passed to mw.html.element()
+ *
+ * @class mw.html.Cdata
+ * @constructor
+ * @param {string} value
+ */
+ Cdata: function ( value ) {
+ this.value = value;
+ }
+ };
+ }() );
+
+ /**
+ * Execute a function as soon as one or more required modules are ready.
+ *
+ * Example of inline dependency on OOjs:
+ *
+ * mw.loader.using( 'oojs', function () {
+ * OO.compare( [ 1 ], [ 1 ] );
+ * } );
+ *
+ * Example of inline dependency obtained via `require()`:
+ *
+ * mw.loader.using( [ 'mediawiki.util' ], function ( require ) {
+ * var util = require( 'mediawiki.util' );
+ * } );
+ *
+ * Since MediaWiki 1.23 this also returns a promise.
+ *
+ * Since MediaWiki 1.28 the promise is resolved with a `require` function.
+ *
+ * @member mw.loader
+ * @param {string|Array} dependencies Module name or array of modules names the
+ * callback depends on to be ready before executing
+ * @param {Function} [ready] Callback to execute when all dependencies are ready
+ * @param {Function} [error] Callback to execute if one or more dependencies failed
+ * @return {jQuery.Promise} With a `require` function
+ */
+ mw.loader.using = function ( dependencies, ready, error ) {
+ var deferred = $.Deferred();
+
+ // Allow calling with a single dependency as a string
+ if ( typeof dependencies === 'string' ) {
+ dependencies = [ dependencies ];
+ }
+
+ if ( ready ) {
+ deferred.done( ready );
+ }
+ if ( error ) {
+ deferred.fail( error );
+ }
+
+ try {
+ // Resolve entire dependency map
+ dependencies = mw.loader.resolve( dependencies );
+ } catch ( e ) {
+ return deferred.reject( e ).promise();
+ }
+
+ mw.loader.enqueue( dependencies, function () {
+ deferred.resolve( mw.loader.require );
+ }, deferred.reject );
+
+ return deferred.promise();
+ };
+
+ // Alias $j to jQuery for backwards compatibility
+ // @deprecated since 1.23 Use $ or jQuery instead
+ mw.log.deprecate( window, '$j', $, 'Use $ or jQuery instead.' );
+}() );
--- /dev/null
+/**
+ * Try to catch errors in modules which don't do their own error handling.
+ *
+ * @class mw.errorLogger
+ * @singleton
+ */
+( function ( mw ) {
+ 'use strict';
+
+ mw.errorLogger = {
+ /**
+ * Fired via mw.track when an error is not handled by local code and is caught by the
+ * window.onerror handler.
+ *
+ * @event global_error
+ * @param {string} errorMessage Error errorMessage.
+ * @param {string} url URL where error was raised.
+ * @param {number} lineNumber Line number where error was raised.
+ * @param {number} [columnNumber] Line number where error was raised. Not all browsers
+ * support this.
+ * @param {Error|Mixed} [errorObject] The error object. Typically an instance of Error, but anything
+ * (even a primitive value) passed to a throw clause will end up here.
+ */
+
+ /**
+ * Install a window.onerror handler that will report via mw.track, while preserving
+ * any previous handler.
+ *
+ * @param {Object} window
+ */
+ installGlobalHandler: function ( window ) {
+ // We will preserve the return value of the previous handler. window.onerror works the
+ // opposite way than normal event handlers (returning true will prevent the default
+ // action, returning false will let the browser handle the error normally, by e.g.
+ // logging to the console), so our fallback old handler needs to return false.
+ var oldHandler = window.onerror || function () { return false; };
+
+ /**
+ * Dumb window.onerror handler which forwards the errors via mw.track.
+ *
+ * @param {string} errorMessage
+ * @param {string} url
+ * @param {number} lineNumber
+ * @param {number} [columnNumber]
+ * @param {Error|Mixed} [errorObject]
+ * @return {boolean} True to prevent the default action
+ * @fires global_error
+ */
+ window.onerror = function ( errorMessage, url, lineNumber, columnNumber, errorObject ) {
+ mw.track( 'global.error', { errorMessage: errorMessage, url: url,
+ lineNumber: lineNumber, columnNumber: columnNumber, errorObject: errorObject } );
+ return oldHandler.apply( this, arguments );
+ };
+ }
+ };
+
+ mw.errorLogger.installGlobalHandler( window );
+}( mediaWiki ) );
+++ /dev/null
-jQuery( function ( $ ) {
- // Apply hidpi images on DOM-ready
- // Some may have already partly preloaded at low resolution.
- $( 'body' ).hidpi();
-} );
+++ /dev/null
-/*!
- * Skip function for mediawiki.hdpi.js.
- */
-return 'srcset' in new Image();
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%;
}
}
}
.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-top-queryName' )
+ .append( this.savedQueryTitle.$element ),
$( '<div>' )
- .addClass( 'mw-rcfilters-ui-filterTagMultiselectWidget-wrapper-hideshow' )
+ .addClass( 'mw-rcfilters-ui-filterTagMultiselectWidget-wrapper-top-hideshow' )
.append(
this.hideShowButton.$element
)
+++ /dev/null
-/*!
- * This file is currently loaded as part of the 'mediawiki' module and therefore
- * concatenated to mediawiki.js and executed at the same time. This file exists
- * to help prepare for splitting up the 'mediawiki' module.
- * This effort is tracked at https://phabricator.wikimedia.org/T192623
- *
- * In short:
- *
- * - mediawiki.js will be reduced to the minimum needed to define mw.loader and
- * mw.config, and then moved to its own private "mediawiki.loader" module that
- * can be embedded within the StartupModule response.
- *
- * - mediawiki.base.js and other files in this directory will remain part of the
- * "mediawiki" module, and will remain a default/implicit dependency for all
- * regular modules, just like jquery and wikibits already are.
- */
-/* globals mw */
-( function () {
- 'use strict';
-
- var slice = Array.prototype.slice,
- mwLoaderTrack = mw.track,
- trackCallbacks = $.Callbacks( 'memory' ),
- trackHandlers = [],
- hasOwn = Object.prototype.hasOwnProperty;
-
- /**
- * Object constructor for messages.
- *
- * Similar to the Message class in MediaWiki PHP.
- *
- * Format defaults to 'text'.
- *
- * @example
- *
- * var obj, str;
- * mw.messages.set( {
- * 'hello': 'Hello world',
- * 'hello-user': 'Hello, $1!',
- * 'welcome-user': 'Welcome back to $2, $1! Last visit by $1: $3'
- * } );
- *
- * obj = new mw.Message( mw.messages, 'hello' );
- * mw.log( obj.text() );
- * // Hello world
- *
- * obj = new mw.Message( mw.messages, 'hello-user', [ 'John Doe' ] );
- * mw.log( obj.text() );
- * // Hello, John Doe!
- *
- * obj = new mw.Message( mw.messages, 'welcome-user', [ 'John Doe', 'Wikipedia', '2 hours ago' ] );
- * mw.log( obj.text() );
- * // Welcome back to Wikipedia, John Doe! Last visit by John Doe: 2 hours ago
- *
- * // Using mw.message shortcut
- * obj = mw.message( 'hello-user', 'John Doe' );
- * mw.log( obj.text() );
- * // Hello, John Doe!
- *
- * // Using mw.msg shortcut
- * str = mw.msg( 'hello-user', 'John Doe' );
- * mw.log( str );
- * // Hello, John Doe!
- *
- * // Different formats
- * obj = new mw.Message( mw.messages, 'hello-user', [ 'John "Wiki" <3 Doe' ] );
- *
- * obj.format = 'text';
- * str = obj.toString();
- * // Same as:
- * str = obj.text();
- *
- * mw.log( str );
- * // Hello, John "Wiki" <3 Doe!
- *
- * mw.log( obj.escaped() );
- * // Hello, John "Wiki" <3 Doe!
- *
- * @class mw.Message
- *
- * @constructor
- * @param {mw.Map} map Message store
- * @param {string} key
- * @param {Array} [parameters]
- */
- function Message( map, key, parameters ) {
- this.format = 'text';
- this.map = map;
- this.key = key;
- this.parameters = parameters === undefined ? [] : slice.call( parameters );
- return this;
- }
-
- Message.prototype = {
- /**
- * Get parsed contents of the message.
- *
- * The default parser does simple $N replacements and nothing else.
- * This may be overridden to provide a more complex message parser.
- * The primary override is in the mediawiki.jqueryMsg module.
- *
- * This function will not be called for nonexistent messages.
- *
- * @return {string} Parsed message
- */
- parser: function () {
- return mw.format.apply( null, [ this.map.get( this.key ) ].concat( this.parameters ) );
- },
-
- /**
- * Add (does not replace) parameters for `$N` placeholder values.
- *
- * @param {Array} parameters
- * @return {mw.Message}
- * @chainable
- */
- params: function ( parameters ) {
- var i;
- for ( i = 0; i < parameters.length; i++ ) {
- this.parameters.push( parameters[ i ] );
- }
- return this;
- },
-
- /**
- * Convert message object to its string form based on current format.
- *
- * @return {string} Message as a string in the current form, or `<key>` if key
- * does not exist.
- */
- toString: function () {
- var text;
-
- if ( !this.exists() ) {
- // Use ⧼key⧽ as text if key does not exist
- // Err on the side of safety, ensure that the output
- // is always html safe in the event the message key is
- // missing, since in that case its highly likely the
- // message key is user-controlled.
- // '⧼' is used instead of '<' to side-step any
- // double-escaping issues.
- // (Keep synchronised with Message::toString() in PHP.)
- return '⧼' + mw.html.escape( this.key ) + '⧽';
- }
-
- if ( this.format === 'plain' || this.format === 'text' || this.format === 'parse' ) {
- text = this.parser();
- }
-
- if ( this.format === 'escaped' ) {
- text = this.parser();
- text = mw.html.escape( text );
- }
-
- return text;
- },
-
- /**
- * Change format to 'parse' and convert message to string
- *
- * If jqueryMsg is loaded, this parses the message text from wikitext
- * (where supported) to HTML
- *
- * Otherwise, it is equivalent to plain.
- *
- * @return {string} String form of parsed message
- */
- parse: function () {
- this.format = 'parse';
- return this.toString();
- },
-
- /**
- * Change format to 'plain' and convert message to string
- *
- * This substitutes parameters, but otherwise does not change the
- * message text.
- *
- * @return {string} String form of plain message
- */
- plain: function () {
- this.format = 'plain';
- return this.toString();
- },
-
- /**
- * Change format to 'text' and convert message to string
- *
- * If jqueryMsg is loaded, {{-transformation is done where supported
- * (such as {{plural:}}, {{gender:}}, {{int:}}).
- *
- * Otherwise, it is equivalent to plain
- *
- * @return {string} String form of text message
- */
- text: function () {
- this.format = 'text';
- return this.toString();
- },
-
- /**
- * Change the format to 'escaped' and convert message to string
- *
- * This is equivalent to using the 'text' format (see #text), then
- * HTML-escaping the output.
- *
- * @return {string} String form of html escaped message
- */
- escaped: function () {
- this.format = 'escaped';
- return this.toString();
- },
-
- /**
- * Check if a message exists
- *
- * @see mw.Map#exists
- * @return {boolean}
- */
- exists: function () {
- return this.map.exists( this.key );
- }
- };
-
- /**
- * @class mw
- * @singleton
- */
-
- /**
- * @inheritdoc mw.inspect#runReports
- * @method
- */
- mw.inspect = function () {
- var args = arguments;
- mw.loader.using( 'mediawiki.inspect', function () {
- mw.inspect.runReports.apply( mw.inspect, args );
- } );
- };
-
- /**
- * Format a string. Replace $1, $2 ... $N with positional arguments.
- *
- * Used by Message#parser().
- *
- * @since 1.25
- * @param {string} formatString Format string
- * @param {...Mixed} parameters Values for $N replacements
- * @return {string} Formatted string
- */
- mw.format = function ( formatString ) {
- var parameters = slice.call( arguments, 1 );
- return formatString.replace( /\$(\d+)/g, function ( str, match ) {
- var index = parseInt( match, 10 ) - 1;
- return parameters[ index ] !== undefined ? parameters[ index ] : '$' + match;
- } );
- };
-
- // Expose Message constructor
- mw.Message = Message;
-
- /**
- * Get a message object.
- *
- * Shortcut for `new mw.Message( mw.messages, key, parameters )`.
- *
- * @see mw.Message
- * @param {string} key Key of message to get
- * @param {...Mixed} parameters Values for $N replacements
- * @return {mw.Message}
- */
- mw.message = function ( key ) {
- var parameters = slice.call( arguments, 1 );
- return new Message( mw.messages, key, parameters );
- };
-
- /**
- * Get a message string using the (default) 'text' format.
- *
- * Shortcut for `mw.message( key, parameters... ).text()`.
- *
- * @see mw.Message
- * @param {string} key Key of message to get
- * @param {...Mixed} parameters Values for $N replacements
- * @return {string}
- */
- mw.msg = function () {
- return mw.message.apply( mw.message, arguments ).toString();
- };
-
- /**
- * Track an analytic event.
- *
- * This method provides a generic means for MediaWiki JavaScript code to capture state
- * information for analysis. Each logged event specifies a string topic name that describes
- * the kind of event that it is. Topic names consist of dot-separated path components,
- * arranged from most general to most specific. Each path component should have a clear and
- * well-defined purpose.
- *
- * Data handlers are registered via `mw.trackSubscribe`, and receive the full set of
- * events that match their subcription, including those that fired before the handler was
- * bound.
- *
- * @param {string} topic Topic name
- * @param {Object} [data] Data describing the event, encoded as an object
- */
- mw.track = function ( topic, data ) {
- mwLoaderTrack( topic, data );
- trackCallbacks.fire( mw.trackQueue );
- };
-
- /**
- * Register a handler for subset of analytic events, specified by topic.
- *
- * Handlers will be called once for each tracked event, including any events that fired before the
- * handler was registered; 'this' is set to a plain object with a 'timeStamp' property indicating
- * the exact time at which the event fired, a string 'topic' property naming the event, and a
- * 'data' property which is an object of event-specific data. The event topic and event data are
- * also passed to the callback as the first and second arguments, respectively.
- *
- * @param {string} topic Handle events whose name starts with this string prefix
- * @param {Function} callback Handler to call for each matching tracked event
- * @param {string} callback.topic
- * @param {Object} [callback.data]
- */
- mw.trackSubscribe = function ( topic, callback ) {
- var seen = 0;
- function handler( trackQueue ) {
- var event;
- for ( ; seen < trackQueue.length; seen++ ) {
- event = trackQueue[ seen ];
- if ( event.topic.indexOf( topic ) === 0 ) {
- callback.call( event, event.topic, event.data );
- }
- }
- }
-
- trackHandlers.push( [ handler, callback ] );
-
- trackCallbacks.add( handler );
- };
-
- /**
- * Stop handling events for a particular handler
- *
- * @param {Function} callback
- */
- mw.trackUnsubscribe = function ( callback ) {
- trackHandlers = trackHandlers.filter( function ( fns ) {
- if ( fns[ 1 ] === callback ) {
- trackCallbacks.remove( fns[ 0 ] );
- // Ensure the tuple is removed to avoid holding on to closures
- return false;
- }
- return true;
- } );
- };
-
- // Fire events from before track() triggred fire()
- trackCallbacks.fire( mw.trackQueue );
-
- /**
- * Registry and firing of events.
- *
- * MediaWiki has various interface components that are extended, enhanced
- * or manipulated in some other way by extensions, gadgets and even
- * in core itself.
- *
- * This framework helps streamlining the timing of when these other
- * code paths fire their plugins (instead of using document-ready,
- * which can and should be limited to firing only once).
- *
- * Features like navigating to other wiki pages, previewing an edit
- * and editing itself – without a refresh – can then retrigger these
- * hooks accordingly to ensure everything still works as expected.
- *
- * Example usage:
- *
- * mw.hook( 'wikipage.content' ).add( fn ).remove( fn );
- * mw.hook( 'wikipage.content' ).fire( $content );
- *
- * Handlers can be added and fired for arbitrary event names at any time. The same
- * event can be fired multiple times. The last run of an event is memorized
- * (similar to `$(document).ready` and `$.Deferred().done`).
- * This means if an event is fired, and a handler added afterwards, the added
- * function will be fired right away with the last given event data.
- *
- * Like Deferreds and Promises, the mw.hook object is both detachable and chainable.
- * Thus allowing flexible use and optimal maintainability and authority control.
- * You can pass around the `add` and/or `fire` method to another piece of code
- * without it having to know the event name (or `mw.hook` for that matter).
- *
- * var h = mw.hook( 'bar.ready' );
- * new mw.Foo( .. ).fetch( { callback: h.fire } );
- *
- * Note: Events are documented with an underscore instead of a dot in the event
- * name due to jsduck not supporting dots in that position.
- *
- * @class mw.hook
- */
- mw.hook = ( function () {
- var lists = {};
-
- /**
- * Create an instance of mw.hook.
- *
- * @method hook
- * @member mw
- * @param {string} name Name of hook.
- * @return {mw.hook}
- */
- return function ( name ) {
- var list = hasOwn.call( lists, name ) ?
- lists[ name ] :
- lists[ name ] = $.Callbacks( 'memory' );
-
- return {
- /**
- * Register a hook handler
- *
- * @param {...Function} handler Function to bind.
- * @chainable
- */
- add: list.add,
-
- /**
- * Unregister a hook handler
- *
- * @param {...Function} handler Function to unbind.
- * @chainable
- */
- remove: list.remove,
-
- /**
- * Run a hook.
- *
- * @param {...Mixed} data
- * @return {mw.hook}
- * @chainable
- */
- fire: function () {
- return list.fireWith.call( this, null, slice.call( arguments ) );
- }
- };
- };
- }() );
-
- /**
- * HTML construction helper functions
- *
- * @example
- *
- * var Html, output;
- *
- * Html = mw.html;
- * output = Html.element( 'div', {}, new Html.Raw(
- * Html.element( 'img', { src: '<' } )
- * ) );
- * mw.log( output ); // <div><img src="<"/></div>
- *
- * @class mw.html
- * @singleton
- */
- mw.html = ( function () {
- function escapeCallback( s ) {
- switch ( s ) {
- case '\'':
- return ''';
- case '"':
- return '"';
- case '<':
- return '<';
- case '>':
- return '>';
- case '&':
- return '&';
- }
- }
-
- return {
- /**
- * Escape a string for HTML.
- *
- * Converts special characters to HTML entities.
- *
- * mw.html.escape( '< > \' & "' );
- * // Returns < > ' & "
- *
- * @param {string} s The string to escape
- * @return {string} HTML
- */
- escape: function ( s ) {
- return s.replace( /['"<>&]/g, escapeCallback );
- },
-
- /**
- * Create an HTML element string, with safe escaping.
- *
- * @param {string} name The tag name.
- * @param {Object} [attrs] An object with members mapping element names to values
- * @param {string|mw.html.Raw|mw.html.Cdata|null} [contents=null] The contents of the element.
- *
- * - string: Text to be escaped.
- * - null: The element is treated as void with short closing form, e.g. `<br/>`.
- * - this.Raw: The raw value is directly included.
- * - this.Cdata: The raw value is directly included. An exception is
- * thrown if it contains any illegal ETAGO delimiter.
- * See <https://www.w3.org/TR/html401/appendix/notes.html#h-B.3.2>.
- * @return {string} HTML
- */
- element: function ( name, attrs, contents ) {
- var v, attrName, s = '<' + name;
-
- if ( attrs ) {
- for ( attrName in attrs ) {
- v = attrs[ attrName ];
- // Convert name=true, to name=name
- if ( v === true ) {
- v = attrName;
- // Skip name=false
- } else if ( v === false ) {
- continue;
- }
- s += ' ' + attrName + '="' + this.escape( String( v ) ) + '"';
- }
- }
- if ( contents === undefined || contents === null ) {
- // Self close tag
- s += '/>';
- return s;
- }
- // Regular open tag
- s += '>';
- switch ( typeof contents ) {
- case 'string':
- // Escaped
- s += this.escape( contents );
- break;
- case 'number':
- case 'boolean':
- // Convert to string
- s += String( contents );
- break;
- default:
- if ( contents instanceof this.Raw ) {
- // Raw HTML inclusion
- s += contents.value;
- } else if ( contents instanceof this.Cdata ) {
- // CDATA
- if ( /<\/[a-zA-z]/.test( contents.value ) ) {
- throw new Error( 'mw.html.element: Illegal end tag found in CDATA' );
- }
- s += contents.value;
- } else {
- throw new Error( 'mw.html.element: Invalid type of contents' );
- }
- }
- s += '</' + name + '>';
- return s;
- },
-
- /**
- * Wrapper object for raw HTML passed to mw.html.element().
- *
- * @class mw.html.Raw
- * @constructor
- * @param {string} value
- */
- Raw: function ( value ) {
- this.value = value;
- },
-
- /**
- * Wrapper object for CDATA element contents passed to mw.html.element()
- *
- * @class mw.html.Cdata
- * @constructor
- * @param {string} value
- */
- Cdata: function ( value ) {
- this.value = value;
- }
- };
- }() );
-
- // Alias $j to jQuery for backwards compatibility
- // @deprecated since 1.23 Use $ or jQuery instead
- mw.log.deprecate( window, '$j', $, 'Use $ or jQuery instead.' );
-}() );
+++ /dev/null
-/**
- * Try to catch errors in modules which don't do their own error handling.
- *
- * @class mw.errorLogger
- * @singleton
- */
-( function ( mw ) {
- 'use strict';
-
- mw.errorLogger = {
- /**
- * Fired via mw.track when an error is not handled by local code and is caught by the
- * window.onerror handler.
- *
- * @event global_error
- * @param {string} errorMessage Error errorMessage.
- * @param {string} url URL where error was raised.
- * @param {number} lineNumber Line number where error was raised.
- * @param {number} [columnNumber] Line number where error was raised. Not all browsers
- * support this.
- * @param {Error|Mixed} [errorObject] The error object. Typically an instance of Error, but anything
- * (even a primitive value) passed to a throw clause will end up here.
- */
-
- /**
- * Install a window.onerror handler that will report via mw.track, while preserving
- * any previous handler.
- *
- * @param {Object} window
- */
- installGlobalHandler: function ( window ) {
- // We will preserve the return value of the previous handler. window.onerror works the
- // opposite way than normal event handlers (returning true will prevent the default
- // action, returning false will let the browser handle the error normally, by e.g.
- // logging to the console), so our fallback old handler needs to return false.
- var oldHandler = window.onerror || function () { return false; };
-
- /**
- * Dumb window.onerror handler which forwards the errors via mw.track.
- *
- * @param {string} errorMessage
- * @param {string} url
- * @param {number} lineNumber
- * @param {number} [columnNumber]
- * @param {Error|Mixed} [errorObject]
- * @return {boolean} True to prevent the default action
- * @fires global_error
- */
- window.onerror = function ( errorMessage, url, lineNumber, columnNumber, errorObject ) {
- mw.track( 'global.error', { errorMessage: errorMessage, url: url,
- lineNumber: lineNumber, columnNumber: columnNumber, errorObject: errorObject } );
- return oldHandler.apply( this, arguments );
- };
- }
- };
-
- mw.errorLogger.installGlobalHandler( window );
-}( mediaWiki ) );
script.parentNode.removeChild( script );
}
+ /**
+ * Add one or more modules to the module load queue.
+ *
+ * See also #work().
+ *
+ * @private
+ * @param {string|string[]} dependencies Module name or array of string module names
+ * @param {Function} [ready] Callback to execute when all dependencies are ready
+ * @param {Function} [error] Callback to execute when any dependency fails
+ */
+ function enqueue( dependencies, ready, error ) {
+ // Allow calling by single module name
+ if ( typeof dependencies === 'string' ) {
+ dependencies = [ dependencies ];
+ }
+
+ if ( allReady( dependencies ) ) {
+ // Run ready immediately
+ if ( ready !== undefined ) {
+ ready();
+ }
+
+ return;
+ }
+
+ if ( anyFailed( dependencies ) ) {
+ if ( error !== undefined ) {
+ // Execute error immediately if any dependencies have errors
+ error(
+ new Error( 'One or more dependencies failed to load' ),
+ dependencies
+ );
+ }
+
+ return;
+ }
+
+ // Not all dependencies are ready, add to the load queue...
+
+ // Add ready and error callbacks if they were given
+ if ( ready !== undefined || error !== undefined ) {
+ jobs.push( {
+ // Narrow down the list to modules that are worth waiting for
+ dependencies: dependencies.filter( function ( module ) {
+ var state = mw.loader.getState( module );
+ return state === 'registered' || state === 'loaded' || state === 'loading' || state === 'executing';
+ } ),
+ ready: ready,
+ error: error
+ } );
+ }
+
+ dependencies.forEach( function ( module ) {
+ var state = mw.loader.getState( module );
+ // Only queue modules that are still in the initial 'registered' state
+ // (not ones already loading, ready or error).
+ if ( state === 'registered' && queue.indexOf( module ) === -1 ) {
+ // Private modules must be embedded in the page. Don't bother queuing
+ // these as the server will deny them anyway (T101806).
+ if ( registry[ module ].group === 'private' ) {
+ registry[ module ].state = 'error';
+ handlePending( module );
+ return;
+ }
+ queue.push( module );
+ }
+ } );
+
+ mw.loader.work();
+ }
+
/**
* Executes a loaded module, making it ready to use
*
( function () {
var pending = 0;
checkCssHandles = function () {
+ var ex, dependencies;
// cssHandlesRegistered ensures we don't take off too soon, e.g. when
// one of the cssHandles is fired while we're still creating more handles.
if ( cssHandlesRegistered && pending === 0 && runScript ) {
if ( module === 'user' ) {
// Implicit dependency on the site module. Not real dependency because
// it should run after 'site' regardless of whether it succeeds or fails.
- mw.loader.using( [ 'site' ] ).always( runScript );
+ // Note: This is a simplified version of mw.loader.using(), inlined here
+ // as using() depends on jQuery (T192623).
+ try {
+ dependencies = resolve( [ 'site' ] );
+ } catch ( e ) {
+ ex = e;
+ runScript();
+ }
+ if ( ex === undefined ) {
+ enqueue( dependencies, runScript, runScript );
+ }
} else {
runScript();
}
checkCssHandles();
}
- /**
- * Add one or more modules to the module load queue.
- *
- * See also #work().
- *
- * @private
- * @param {string|string[]} dependencies Module name or array of string module names
- * @param {Function} [ready] Callback to execute when all dependencies are ready
- * @param {Function} [error] Callback to execute when any dependency fails
- */
- function enqueue( dependencies, ready, error ) {
- // Allow calling by single module name
- if ( typeof dependencies === 'string' ) {
- dependencies = [ dependencies ];
- }
-
- // Add ready and error callbacks if they were given
- if ( ready !== undefined || error !== undefined ) {
- jobs.push( {
- // Narrow down the list to modules that are worth waiting for
- dependencies: dependencies.filter( function ( module ) {
- var state = mw.loader.getState( module );
- return state === 'registered' || state === 'loaded' || state === 'loading' || state === 'executing';
- } ),
- ready: ready,
- error: error
- } );
- }
-
- dependencies.forEach( function ( module ) {
- var state = mw.loader.getState( module );
- // Only queue modules that are still in the initial 'registered' state
- // (not ones already loading, ready or error).
- if ( state === 'registered' && queue.indexOf( module ) === -1 ) {
- // Private modules must be embedded in the page. Don't bother queuing
- // these as the server will deny them anyway (T101806).
- if ( registry[ module ].group === 'private' ) {
- registry[ module ].state = 'error';
- handlePending( module );
- return;
- }
- queue.push( module );
- }
- } );
-
- mw.loader.work();
- }
-
function sortQuery( o ) {
var key,
sorted = {},
*/
addStyleTag: newStyleTag,
+ enqueue: enqueue,
+
+ resolve: resolve,
+
/**
* Start loading of all queued module dependencies.
*
}
},
- /**
- * Execute a function as soon as one or more required modules are ready.
- *
- * Example of inline dependency on OOjs:
- *
- * mw.loader.using( 'oojs', function () {
- * OO.compare( [ 1 ], [ 1 ] );
- * } );
- *
- * Example of inline dependency obtained via `require()`:
- *
- * mw.loader.using( [ 'mediawiki.util' ], function ( require ) {
- * var util = require( 'mediawiki.util' );
- * } );
- *
- * Since MediaWiki 1.23 this also returns a promise.
- *
- * Since MediaWiki 1.28 the promise is resolved with a `require` function.
- *
- * @param {string|Array} dependencies Module name or array of modules names the
- * callback depends on to be ready before executing
- * @param {Function} [ready] Callback to execute when all dependencies are ready
- * @param {Function} [error] Callback to execute if one or more dependencies failed
- * @return {jQuery.Promise} With a `require` function
- */
- using: function ( dependencies, ready, error ) {
- var deferred = $.Deferred();
-
- // Allow calling with a single dependency as a string
- if ( typeof dependencies === 'string' ) {
- dependencies = [ dependencies ];
- }
-
- if ( ready ) {
- deferred.done( ready );
- }
- if ( error ) {
- deferred.fail( error );
- }
-
- try {
- // Resolve entire dependency map
- dependencies = resolve( dependencies );
- } catch ( e ) {
- return deferred.reject( e ).promise();
- }
- if ( allReady( dependencies ) ) {
- // Run ready immediately
- deferred.resolve( mw.loader.require );
- } else if ( anyFailed( dependencies ) ) {
- // Execute error immediately if any dependencies have errors
- deferred.reject(
- new Error( 'One or more dependencies failed to load' ),
- dependencies
- );
- } else {
- // Not all dependencies are ready, add to the load queue
- enqueue( dependencies, function () {
- deferred.resolve( mw.loader.require );
- }, deferred.reject );
- }
-
- return deferred.promise();
- },
-
/**
* Load an external script or one or more modules.
*
// Resolve remaining list using the known dependency tree.
// This also filters out modules with unknown dependencies. (T36853)
filtered = resolveStubbornly( filtered );
- // If all modules are ready, or if any modules have errors, nothing to be done.
- if ( allReady( filtered ) || anyFailed( filtered ) ) {
- return;
- }
- if ( filtered.length === 0 ) {
- return;
- }
// Some modules are not yet ready, add to module load queue.
enqueue( filtered, undefined, undefined );
},
);
$this->assertEquals(
- '<label for="mw-test-namespace">Select a namespace:</label> ' .
+ '<label for="mw-test-namespace">Select a namespace:</label>' . "\u{00A0}" .
'<select id="mw-test-namespace" name="wpNamespace">' . "\n" .
'<option value="all">all</option>' . "\n" .
'<option value="0">(Main)</option>' . "\n" .
);
$this->assertEquals(
- '<label for="namespace">Select a namespace:</label> ' .
+ '<label for="namespace">Select a namespace:</label>' . "\u{00A0}" .
'<select id="namespace" name="namespace">' . "\n" .
'<option value="0">(Main)</option>' . "\n" .
'<option value="1">Talk</option>' . "\n" .
$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 ];
$this->assertSame( $same, $b->hasSameContent( $a ) );
}
+ public function provideGetRolesWithDifferentContent() {
+ $fooX = SlotRecord::newUnsaved( 'x', new TextContent( 'Foo' ) );
+ $barZ = SlotRecord::newUnsaved( 'z', new TextContent( 'Bar' ) );
+ $fooY = SlotRecord::newUnsaved( 'y', new TextContent( 'Foo' ) );
+ $barZS = SlotRecord::newSaved( 7, 7, 'xyz', $barZ );
+ $barZ2 = SlotRecord::newUnsaved( 'z', new TextContent( 'Baz' ) );
+
+ $a = $this->newRevisionSlots( [ 'x' => $fooX, 'z' => $barZ ] );
+ $a2 = $this->newRevisionSlots( [ 'x' => $fooX, 'z' => $barZ ] );
+ $a3 = $this->newRevisionSlots( [ 'x' => $fooX, 'z' => $barZS ] );
+ $b = $this->newRevisionSlots( [ 'y' => $fooY, 'z' => $barZ ] );
+ $c = $this->newRevisionSlots( [ 'x' => $fooX, 'z' => $barZ2 ] );
+
+ yield 'same instance' => [ $a, $a, [] ];
+ yield 'same slots' => [ $a, $a2, [] ];
+ yield 'same content' => [ $a, $a3, [] ];
+
+ yield 'different roles' => [ $a, $b, [ 'x', 'y' ] ];
+ yield 'different content' => [ $a, $c, [ 'z' ] ];
+ }
+
+ /**
+ * @dataProvider provideGetRolesWithDifferentContent
+ * @covers \MediaWiki\Storage\RevisionSlots::getRolesWithDifferentContent
+ */
+ public function testGetRolesWithDifferentContent( RevisionSlots $a, RevisionSlots $b, $roles ) {
+ $this->assertArrayEquals( $roles, $a->getRolesWithDifferentContent( $b ) );
+ $this->assertArrayEquals( $roles, $b->getRolesWithDifferentContent( $a ) );
+ }
+
}
}
}
+ /**
+ * Test that 'assert' is processed before module errors
+ */
+ public function testAssertBeforeModule() {
+ // Sanity check that the query without assert throws too-many-titles
+ try {
+ $this->doApiRequest( [
+ 'action' => 'query',
+ 'titles' => implode( '|', range( 1, ApiBase::LIMIT_SML1 + 1 ) ),
+ ], null, null, new User );
+ $this->fail( 'Expected exception not thrown' );
+ } catch ( ApiUsageException $e ) {
+ $this->assertTrue( self::apiExceptionHasCode( $e, 'too-many-titles' ), 'sanity check' );
+ }
+
+ // Now test that the assert happens first
+ try {
+ $this->doApiRequest( [
+ 'action' => 'query',
+ 'titles' => implode( '|', range( 1, ApiBase::LIMIT_SML1 + 1 ) ),
+ 'assert' => 'user',
+ ], null, null, new User );
+ $this->fail( 'Expected exception not thrown' );
+ } catch ( ApiUsageException $e ) {
+ $this->assertTrue( self::apiExceptionHasCode( $e, 'assertuserfailed' ),
+ "Error '{$e->getMessage()}' matched expected 'assertuserfailed'" );
+ }
+ }
+
/**
* Test if all classes in the main module manager exists
*/
$preferences[$k] = [
'type' => 'text',
'section' => 'test',
- 'label' => ' ',
+ 'label' => "\u{00A0}",
];
}
],
],
'section' => 'test',
- 'label' => ' ',
+ 'label' => "\u{00A0}",
'prefix' => 'testmultiselect-',
'default' => [],
];
// Use the confirmed group for user2 to make sure the user is different
$user2 = $this->getTestUser( [ 'confirmed' ] )->getUser();
+ // TODO: MCR: test rollback of multiple slots!
$page = $this->newPage( __METHOD__ );
// Make some edits
$this->assertEquals( $rev2->getSha1(), $page->getRevision()->getSha1(),
"rollback did not revert to the correct revision" );
$this->assertEquals( "one\n\ntwo", $page->getContent()->getNativeData() );
+
+ // TODO: MCR: assert origin once we write slot data
+ // $mainSlot = $page->getRevision()->getRevisionRecord()->getSlot( 'main' );
+ // $this->assertTrue( $mainSlot->isInherited(), 'isInherited' );
+ // $this->assertSame( $rev2->getId(), $mainSlot->getOrigin(), 'getOrigin' );
}
/**
);
}
+ /**
+ * @covers ResourceLoaderStartupModule::getDefinitionSummary
+ */
+ public function testGetVersionHash_varyConfig() {
+ $context = $this->getResourceLoaderContext();
+
+ $this->setMwGlobals( 'wgArticlePath', '/w1' );
+ $module = new ResourceLoaderStartupModule();
+ $version1 = $module->getVersionHash( $context );
+ $module = new ResourceLoaderStartupModule();
+ $version2 = $module->getVersionHash( $context );
+ $this->setMwGlobals( 'wgArticlePath', '/w3' );
+ $module = new ResourceLoaderStartupModule();
+ $version3 = $module->getVersionHash( $context );
+
+ $this->assertEquals(
+ $version1,
+ $version2,
+ 'Deterministic version hash'
+ );
+
+ $this->assertNotEquals(
+ $version1,
+ $version3,
+ 'Config change impacts version hash'
+ );
+ }
+
}
'tests/qunit/suites/resources/mediawiki/mediawiki.template.test.js',
'tests/qunit/suites/resources/mediawiki/mediawiki.template.mustache.test.js',
'tests/qunit/suites/resources/mediawiki/mediawiki.test.js',
+ 'tests/qunit/suites/resources/mediawiki/mediawiki.base.test.js',
'tests/qunit/suites/resources/mediawiki/mediawiki.loader.test.js',
'tests/qunit/suites/resources/mediawiki/mediawiki.html.test.js',
'tests/qunit/suites/resources/mediawiki/mediawiki.inspect.test.js',
--- /dev/null
+( function ( mw ) {
+ QUnit.module( 'mediawiki.base' );
+
+ QUnit.test( 'mw.hook - basic', function ( assert ) {
+ var q = [];
+ mw.hook( 'test.hook.basic' ).add( function () {
+ q.push( 'basic' );
+ } );
+
+ mw.hook( 'test.hook.basic' ).fire();
+ assert.deepEqual( q, [ 'basic' ], 'Callback' );
+ } );
+
+ QUnit.test( 'mw.hook - name', function ( assert ) {
+ var q = [];
+ mw.hook( 'hasOwnProperty' ).add( function () {
+ q.push( 'prototype' );
+ } );
+
+ mw.hook( 'hasOwnProperty' ).fire();
+ assert.deepEqual( q, [ 'prototype' ], 'Callback' );
+ } );
+
+ QUnit.test( 'mw.hook - data', function ( assert ) {
+ var q;
+
+ mw.hook( 'test.hook.data' ).add( function ( data1, data2 ) {
+ q = [ data1, data2 ];
+ } );
+ mw.hook( 'test.hook.data' ).fire( 'example', [ 'two' ] );
+
+ assert.deepEqual( q,
+ [
+ 'example',
+ [ 'two' ]
+ ],
+ 'Data containing a string and an array'
+ );
+ } );
+
+ QUnit.test( 'mw.hook - chainable', function ( assert ) {
+ var hook, add, fire, q = [];
+
+ hook = mw.hook( 'test.hook.chainable' );
+ assert.strictEqual( hook.add(), hook, 'hook.add is chainable' );
+ assert.strictEqual( hook.remove(), hook, 'hook.remove is chainable' );
+ assert.strictEqual( hook.fire(), hook, 'hook.fire is chainable' );
+
+ hook = mw.hook( 'test.hook.detach' );
+ add = hook.add;
+ fire = hook.fire;
+ add( function ( x, y ) {
+ q.push( x, y );
+ } );
+ fire( 'x', 'y' );
+ assert.deepEqual( q, [ 'x', 'y' ], 'Contextless firing with data' );
+ } );
+
+ QUnit.test( 'mw.hook - memory before', function ( assert ) {
+ var q;
+
+ q = [];
+ mw.hook( 'test.hook.fireBefore' ).fire().add( function () {
+ q.push( 'X' );
+ } );
+ assert.deepEqual( q, [ 'X' ], 'Remember previous firing for newly added handler' );
+
+ q = [];
+ mw.hook( 'test.hook.fireTwiceBefore' ).fire( 'Y1' ).fire( 'Y2' ).add( function ( data ) {
+ q.push( data );
+ } );
+ assert.deepEqual( q, [ 'Y2' ], 'Remember only the most recent firing' );
+ } );
+
+ QUnit.test( 'mw.hook - memory before and after', function ( assert ) {
+ var q1 = [], q2 = [];
+ mw.hook( 'test.hook.many' )
+ .add( function ( chr ) {
+ q1.push( chr );
+ } )
+ .fire( 'x' ).fire( 'y' ).fire( 'z' )
+ .add( function ( chr ) {
+ q2.push( chr );
+ } );
+
+ assert.deepEqual( q1, [ 'x', 'y', 'z' ], 'Multiple fires after callback addition' );
+ assert.deepEqual( q2, [ 'z' ], 'Last fire applied to new handler' );
+ } );
+
+ QUnit.test( 'mw.hook - data variadic', function ( assert ) {
+ var q = [];
+ function callback( chr ) {
+ q.push( chr );
+ }
+
+ mw.hook( 'test.hook.variadic' )
+ .add(
+ callback,
+ callback,
+ function ( chr ) {
+ q.push( chr );
+ },
+ callback
+ )
+ .fire( 'x' )
+ .remove(
+ function () {
+ 'not-added';
+ },
+ callback
+ )
+ .fire( 'y' )
+ .remove( callback )
+ .fire( 'z' );
+
+ assert.deepEqual(
+ q,
+ [ 'x', 'x', 'x', 'x', 'y', 'z' ],
+ '"add" and "remove" support variadic arguments. ' +
+ '"add" does not filter unique. ' +
+ '"remove" removes all equal by reference. ' +
+ '"remove" is silent if the function is not found'
+ );
+ } );
+
+}( mediaWiki ) );
assert.strictEqual( mw.msg( 'int-msg' ), 'Some Other Message', 'int is resolved' );
} );
-
- QUnit.test( 'mw.hook', function ( assert ) {
- var hook, add, fire, chars, callback;
-
- mw.hook( 'test.hook.unfired' ).add( function () {
- assert.ok( false, 'Unfired hook' );
- } );
-
- mw.hook( 'test.hook.basic' ).add( function () {
- assert.ok( true, 'Basic callback' );
- } );
- mw.hook( 'test.hook.basic' ).fire();
-
- mw.hook( 'hasOwnProperty' ).add( function () {
- assert.ok( true, 'hook with name of predefined method' );
- } );
- mw.hook( 'hasOwnProperty' ).fire();
-
- mw.hook( 'test.hook.data' ).add( function ( data1, data2 ) {
- assert.strictEqual( data1, 'example', 'Fire with data (string param)' );
- assert.deepEqual( data2, [ 'two' ], 'Fire with data (array param)' );
- } );
- mw.hook( 'test.hook.data' ).fire( 'example', [ 'two' ] );
-
- hook = mw.hook( 'test.hook.chainable' );
- assert.strictEqual( hook.add(), hook, 'hook.add is chainable' );
- assert.strictEqual( hook.remove(), hook, 'hook.remove is chainable' );
- assert.strictEqual( hook.fire(), hook, 'hook.fire is chainable' );
-
- hook = mw.hook( 'test.hook.detach' );
- add = hook.add;
- fire = hook.fire;
- add( function ( x, y ) {
- assert.deepEqual( [ x, y ], [ 'x', 'y' ], 'Detached (contextless) with data' );
- } );
- fire( 'x', 'y' );
-
- mw.hook( 'test.hook.fireBefore' ).fire().add( function () {
- assert.ok( true, 'Invoke handler right away if it was fired before' );
- } );
-
- mw.hook( 'test.hook.fireTwiceBefore' ).fire().fire().add( function () {
- assert.ok( true, 'Invoke handler right away if it was fired before (only last one)' );
- } );
-
- chars = [];
-
- mw.hook( 'test.hook.many' )
- .add( function ( chr ) {
- chars.push( chr );
- } )
- .fire( 'x' ).fire( 'y' ).fire( 'z' )
- .add( function ( chr ) {
- assert.strictEqual( chr, 'z', 'Adding callback later invokes right away with last data' );
- } );
-
- assert.deepEqual( chars, [ 'x', 'y', 'z' ], 'Multiple callbacks with multiple fires' );
-
- chars = [];
- callback = function ( chr ) {
- chars.push( chr );
- };
-
- mw.hook( 'test.hook.variadic' )
- .add(
- callback,
- callback,
- function ( chr ) {
- chars.push( chr );
- },
- callback
- )
- .fire( 'x' )
- .remove(
- function () {
- 'not-added';
- },
- callback
- )
- .fire( 'y' )
- .remove( callback )
- .fire( 'z' );
-
- assert.deepEqual(
- chars,
- [ 'x', 'x', 'x', 'x', 'y', 'z' ],
- '"add" and "remove" support variadic arguments. ' +
- '"add" does not filter unique. ' +
- '"remove" removes all equal by reference. ' +
- '"remove" is silent if the function is not found'
- );
- } );
-
}( mediaWiki ) );
--- /dev/null
+const Page = require( 'wdio-mediawiki/Page' );
+
+class WatchablePage extends Page {
+
+ get confirmWatch() { return browser.element( '#mw-content-text button[type="submit"]' ); }
+
+ watch( title ) {
+ super.openTitle( title, { action: 'watch' } );
+ this.confirmWatch.click();
+ }
+}
+
+module.exports = new WatchablePage();
--- /dev/null
+const Page = require( 'wdio-mediawiki/Page' );
+
+class WatchlistPage extends Page {
+ get titles() {
+ return browser.element( '.mw-changeslist' )
+ .$$( '.mw-changeslist-line .mw-title' );
+ }
+
+ open() {
+ super.openTitle( 'Special:Watchlist' );
+ }
+
+}
+
+module.exports = new WatchlistPage();
RestorePage = require( '../pageobjects/restore.page' ),
EditPage = require( '../pageobjects/edit.page' ),
HistoryPage = require( '../pageobjects/history.page' ),
- UserLoginPage = require( '../pageobjects/userlogin.page' );
+ UserLoginPage = require( '../pageobjects/userlogin.page' ),
+ Util = require( 'wdio-mediawiki/Util' );
describe( 'Page', function () {
var content,
name;
- function getTestString( suffix = 'defaultsuffix' ) {
- return Math.random().toString() + '-Iñtërnâtiônàlizætiøn☃-' + suffix;
- }
-
before( function () {
// disable VisualEditor welcome dialog
UserLoginPage.open();
beforeEach( function () {
browser.deleteCookie();
- content = getTestString( 'beforeEach-content' );
- name = getTestString( 'beforeEach-name' );
+ content = Util.getTestString( 'beforeEach-content-' );
+ name = Util.getTestString( 'BeforeEach-name-' );
} );
it( 'should be creatable', function () {
} );
it( 'should be re-creatable', function () {
- let initialContent = getTestString( 'initialContent' );
+ let initialContent = Util.getTestString( 'initialContent-' );
// create
browser.call( function () {
} );
// edit
- let editContent = getTestString( 'editContent' );
+ let editContent = Util.getTestString( 'editContent-' );
EditPage.edit( name, editContent );
// check
const assert = require( 'assert' ),
Api = require( 'wdio-mediawiki/Api' ),
- RecentChangesPage = require( '../pageobjects/recentchanges.page' );
+ RecentChangesPage = require( '../pageobjects/recentchanges.page' ),
+ Util = require( 'wdio-mediawiki/Util' );
describe( 'Special:RecentChanges', function () {
let content,
name;
- function getTestString() {
- return Math.random().toString() + '-öäü-♠♣♥♦';
- }
-
beforeEach( function () {
browser.deleteCookie();
- content = getTestString();
- name = getTestString();
+ content = Util.getTestString();
+ name = Util.getTestString();
} );
it( 'shows page creation', function () {
--- /dev/null
+const assert = require( 'assert' ),
+ Api = require( 'wdio-mediawiki/Api' ),
+ WatchlistPage = require( '../pageobjects/watchlist.page' ),
+ WatchablePage = require( '../pageobjects/watchable.page' ),
+ LoginPage = require( 'wdio-mediawiki/LoginPage' ),
+ Util = require( 'wdio-mediawiki/Util' );
+
+describe( 'Special:Watchlist', function () {
+ let username, password;
+
+ before( function () {
+ username = Util.getTestString( 'user-' );
+ password = Util.getTestString( 'password-' );
+
+ browser.call( function () {
+ return Api.createAccount( username, password );
+ } );
+ } );
+
+ beforeEach( function () {
+ browser.deleteCookie();
+ LoginPage.login( username, password );
+ } );
+
+ it( 'should show page with new edit', function () {
+ const title = Util.getTestString( 'Title-' );
+
+ browser.call( function () {
+ return Api.edit( title, Util.getTestString() ); // create
+ } );
+ WatchablePage.watch( title );
+ browser.call( function () {
+ return Api.edit( title, Util.getTestString() ); // edit
+ } );
+
+ WatchlistPage.open();
+
+ assert.strictEqual( WatchlistPage.titles[ 0 ].getText(), title );
+ } );
+
+} );
CreateAccountPage = require( '../pageobjects/createaccount.page' ),
PreferencesPage = require( '../pageobjects/preferences.page' ),
UserLoginPage = require( 'wdio-mediawiki/LoginPage' ),
- Api = require( 'wdio-mediawiki/Api' );
+ Api = require( 'wdio-mediawiki/Api' ),
+ Util = require( 'wdio-mediawiki/Util' );
describe( 'User', function () {
var password,
beforeEach( function () {
browser.deleteCookie();
- username = `User-${Math.random().toString()}`;
- password = Math.random().toString();
+ username = Util.getTestString( 'User-' );
+ password = Util.getTestString();
} );
it( 'should be able to create account', function () {
} );
it( 'should be able to change preferences', function () {
- var realName = Math.random().toString();
+ var realName = Util.getTestString();
// create
browser.call( function () {
--- /dev/null
+module.exports = {
+ getTestString( prefix = '' ) {
+ return prefix + Math.random().toString() + '-Iñtërnâtiônàlizætiøn☃';
+ }
+};