'LoadMonitorNull' => __DIR__ . '/includes/db/loadbalancer/LoadMonitor.php',
'LocalFile' => __DIR__ . '/includes/filerepo/file/LocalFile.php',
'LocalFileDeleteBatch' => __DIR__ . '/includes/filerepo/file/LocalFile.php',
+ 'LocalFileLockError' => __DIR__ . '/includes/filerepo/file/LocalFile.php',
'LocalFileMoveBatch' => __DIR__ . '/includes/filerepo/file/LocalFile.php',
'LocalFileRestoreBatch' => __DIR__ . '/includes/filerepo/file/LocalFile.php',
'LocalIdLookup' => __DIR__ . '/includes/user/LocalIdLookup.php',
use GlobalVarConfig;
use Config;
use Hooks;
-use LBFactory;
use Liuggio\StatsdClient\Factory\StatsdDataFactory;
-use LoadBalancer;
use MediaWiki\Services\ServiceContainer;
use SearchEngine;
use SearchEngineConfig;
},
'SearchEngineFactory' => function( MediaWikiServices $services ) {
- // Create search engine
- return new SearchEngineFactory( $services->getService( 'SearchEngineConfig' ) );
+ return new SearchEngineFactory( $services->getSearchEngineConfig() );
},
'SearchEngineConfig' => function( MediaWikiServices $services ) {
global $wgContLang;
- // Create a search engine config from main config.
- $config = $services->getService( 'MainConfig' );
- return new SearchEngineConfig( $config, $wgContLang );
+ return new SearchEngineConfig( $services->getMainConfig(), $wgContLang );
},
'SkinFactory' => function( MediaWikiServices $services ) {
const ERROR_CACHE = 'error_cache';
const ERROR_UNCACHEABLE = 'uncacheable';
+ const PRESUME_FRESH_TTL_SEC = 5;
+
public function execute() {
$user = $this->getUser();
$params = $this->extractRequestParams();
return false;
}
- $time = wfTimestamp( TS_UNIX, $editInfo->output->getTimestamp() );
- if ( ( time() - $time ) <= 3 ) {
+ $age = time() - wfTimestamp( TS_UNIX, $editInfo->output->getCacheTime() );
+ if ( $age <= self::PRESUME_FRESH_TTL_SEC ) {
$stats->increment( 'editstash.cache_hits.presumed_fresh' );
- $logger->debug( "Timestamp-based cache hit for key '$key'." );
+ $logger->debug( "Timestamp-based cache hit for key '$key' (age: $age sec)." );
return $editInfo; // assume nothing changed
}
if ( $changed || $res->numRows() != $templateUses ) {
$stats->increment( 'editstash.cache_misses.proven_stale' );
- $logger->info( "Stale cache for key '$key'; template changed." );
+ $logger->info( "Stale cache for key '$key'; template changed. (age: $age sec)" );
return false;
}
}
if ( $changed || $res->numRows() != count( $files ) ) {
$stats->increment( 'editstash.cache_misses.proven_stale' );
- $logger->info( "Stale cache for key '$key'; file changed." );
+ $logger->info( "Stale cache for key '$key'; file changed. (age: $age sec)" );
return false;
}
}
$stats->increment( 'editstash.cache_hits.proven_fresh' );
- $logger->debug( "Cache hit for key '$key'." );
+ $logger->debug( "Verified cache hit for key '$key' (age: $age sec)." );
return $editInfo;
}
"apihelp-parse-example-text": "Расчлени викитекст.",
"apihelp-parse-example-texttitle": "Расчлени страница, укажувајќи го насловот на страницата.",
"apihelp-parse-example-summary": "Расчлени опис.",
- "apihelp-patrol-description": "Испатролирај страница или ревизија.",
+ "apihelp-patrol-description": "Испатролирај страница или преработка.",
"apihelp-patrol-param-rcid": "Назнака на спорешните промени за патролирање.",
"apihelp-patrol-param-revid": "Назнака на преработката за патролирање.",
"apihelp-patrol-example-rcid": "Испатролирај скорешна промена",
"apihelp-upload-param-offset": "Зафатнина на делот во бајти.",
"apihelp-upload-param-chunk": "Содржина на делот.",
"apihelp-upload-param-async": "Направи ги работите со потенцијално големи податотеки неусогласени, кога е можно.",
- "apihelp-upload-param-asyncdownload": "Направи го добивањето на URL-адреса неусогласено.",
- "apihelp-upload-param-leavemessage": "Ако се користи неусогласено преземање, остави порака на страницата за разговор на корисникот ако е готово.",
- "apihelp-upload-param-statuskey": "Дај ја состојбата на подигнатост за овој податотечен клуч (подигање по URL).",
"apihelp-upload-param-checkstatus": "Дај ја состојбата на подигнатост само за дадениот податотечен клуч.",
"apihelp-upload-example-url": "Подигни од URL",
"apihelp-userrights-param-user": "Корисничко име.",
"apihelp-watch-example-unwatch": "Отстрани ја страницата <kbd>Главна страница</kbd> од набљудуваните.",
"apihelp-watch-example-generator": "Набљудувај ги првите неколку страници во главниот именски простор",
"apihelp-format-example-generic": "Дај го исходот од барањето во $1-формат.",
- "apihelp-dbg-description": "Давај го изводот во PHP-форматот <code>var_export()</code> .",
- "apihelp-dbgfm-description": "Давај го изводот во PHP-форматот <code>var_export()</code> (подобрен испис во HTML).",
"apihelp-json-description": "Давај го изводот во JSON-формат.",
"apihelp-json-param-callback": "Ако е укажано, го обвива изводот во даден повик на функција. За безбедност, ќе се ограничат сите податоци што се однесуваат на корисниците.",
"apihelp-json-param-utf8": "Ако е укажано, ги шифрира највеќето (но не сите) не-ASCII знаци како UTF-8 наместо да ги заменува со хексадецимални изводни низи. Ова е стандардно кога <var>formatversion</var> не е <kbd>1</kbd>.",
"apihelp-php-param-formatversion": "Форматирање на изводот:\n;1:Назадно-складен формат (булови во XML-стил, клучеви <samp>*</samp> за содржински јазли и тн.).\n;2:Пробен современ формат. Поединостите може да се изменат!\n;најнов:Користење на најновиот формат (тековно <kbd>2</kbd>), може да се смени без предупредување.",
"apihelp-phpfm-description": "Давај го изводот во серијализиран PHP-формат (подобрен испис во HTML).",
"apihelp-rawfm-description": "Давај го изводот со елементи за отстранување грешки во JSON-формат (подобрен испис во HTML).",
- "apihelp-txt-description": "Давај го изводот во PHP-форматот <code>print_r()</code>.",
- "apihelp-txtfm-description": "Давај го изводот во PHP-форматот <code>print_r()</code> (подобрен испис во HTML).",
"apihelp-xml-description": "Давај го изводот во XML-формат.",
"apihelp-xml-param-xslt": "Ако е укажано, ја додава именуваната страница како XSL-стилска страница. Вредноста мора да биде наслов во именскиот простор „{{ns:mediawiki}}“ што ќе завршува со <code>.xsl</code>.",
"apihelp-xml-param-includexmlnamespace": "Ако е укажано, додава именски простор XML.",
"apihelp-xmlfm-description": "Давај го изводот во XML-формат (подобрен испис во HTML).",
- "apihelp-yaml-description": "Давај го изводот во YAML-формат.",
- "apihelp-yamlfm-description": "Давај го изводот во YAML-формат (подобрен испис во HTML).",
"api-format-title": "Резултат од Извршникот на МедијаВики",
"api-format-prettyprint-header": "Ова е HTML-претстава на форматот $1. HTML е добар за отстранување на грешки, но не е погоден за употреба во извршник.\n\nУкажете го параметарот <var>format</var> за да го смените изводниот формат. За да ги видите претставите на форматот $1 вон HTML, задајте <kbd>format=$2</kbd>.\n\nПовеќе информации ќе најдете на [[mw:API|целосната документација]], или пак [[Special:ApiHelp/main|помош со извршникот]].",
- "api-orm-param-props": "Полиња за пребарување.",
- "api-orm-param-limit": "Макс. број на редови во изводот.",
"api-pageset-param-titles": "Список на наслови на кои ќе се работи",
"api-pageset-param-pageids": "Список на назнаки за страници на кои ќе се работи",
"api-pageset-param-revids": "Список на назнаки на преработки на кои ќе се работи",
"apihelp-main-param-curtimestamp": "Dołącz obecny znacznik czasu do wyniku.",
"apihelp-block-description": "Zablokuj użytkownika.",
"apihelp-block-param-user": "Nazwa użytkownika, adres IP lub zakres adresów IP, które chcesz zablokować.",
+ "apihelp-block-param-expiry": "Czas trwania. Może być względny (np. <kbd>5 months</kbd> or <kbd>2 weeks</kbd>) lub konkretny (np. <kbd>2014-09-18T12:34:56Z</kbd>). Jeśli jest ustawiony na <kbd>infinite</kbd>, <kbd>indefinite</kbd>, lub <kbd>never</kbd>, blokada nigdy nie wygaśnie.",
"apihelp-block-param-reason": "Powód blokady.",
"apihelp-block-param-anononly": "Blokuj tylko anonimowych użytkowników (blokuje anonimowe edycje z tego adresu IP).",
"apihelp-block-param-nocreate": "Zapobiegnij utworzeniu konta.",
"apihelp-block-param-autoblock": "Zablokuj ostatni adres IP tego użytkownika i automatycznie wszystkie kolejne, z których będzie się logował.",
+ "apihelp-block-param-noemail": "Uniemożliwia użytkownikowi wysyłanie wiadomości e-mail za pośrednictwem interfejsu wiki. (Wymagane uprawnienia <code>blockemail</code>).",
"apihelp-block-param-hidename": "Ukryj nazwę użytkownika z rejestru blokad. (Wymagane uprawnienia <code>hideuser</code>)",
+ "apihelp-block-param-allowusertalk": "Pozwala użytkownikowi edytować własną stronę dyskusji (zależy od <var>[[mw:Manual:$wgBlockAllowsUTEdit|$wgBlockAllowsUTEdit]]</var>).",
"apihelp-block-param-reblock": "Jeżeli ten użytkownik jest już zablokowany, nadpisz blokadę.",
"apihelp-block-param-watchuser": "Obserwuj stronę użytkownika i jego IP oraz ich strony dyskusji.",
"apihelp-block-example-ip-simple": "Zablokuj IP <kbd>192.0.2.5</kbd> na 3 dni za <kbd>Pierwszy atak</kbd>.",
"api-help-param-multi-max": "Maksymalna liczba wartości to {{PLURAL:$1|$1}} ({{PLURAL:$2|$2}} dla botów).",
"api-help-param-default": "Domyślnie: $1",
"api-help-param-default-empty": "Domyślnie: <span class=\"apihelp-empty\">(puste)</span>",
+ "api-help-param-token": "Token \"$1\" zdobyty z [[Special:ApiHelp/query+tokens|action=query&meta=tokens]]",
"api-help-param-no-description": "<span class=\"apihelp-empty\">(bez opisu)</span>",
"api-help-examples": "{{PLURAL:$1|Przykład|Przykłady}}:",
"api-help-permissions": "{{PLURAL:$2|Uprawnienie|Uprawnienia}}:",
* have it / want it.
*/
public function getAutoDeleteReason( Title $title, &$hasHistory ) {
- $dbw = wfGetDB( DB_MASTER );
+ $dbr = wfGetDB( DB_SLAVE );
// Get the last revision
$rev = Revision::newFromTitle( $title );
// Find out if there was only one contributor
// Only scan the last 20 revisions
- $res = $dbw->select( 'revision', 'rev_user_text',
+ $res = $dbr->select( 'revision', 'rev_user_text',
[
'rev_page' => $title->getArticleID(),
- $dbw->bitAnd( 'rev_deleted', Revision::DELETED_USER ) . ' = 0'
+ $dbr->bitAnd( 'rev_deleted', Revision::DELETED_USER ) . ' = 0'
],
__METHOD__,
[ 'LIMIT' => 20 ]
}
$hasHistory = ( $res->numRows() > 1 );
- $row = $dbw->fetchObject( $res );
+ $row = $dbr->fetchObject( $res );
if ( $row ) { // $row is false if the only contributor is hidden
$onlyAuthor = $row->rev_user_text;
return;
}
+ $upgrade = false;
if ( is_null( $this->media_type ) ||
$this->mime == 'image/svg'
) {
- $this->upgradeRow();
- $this->upgraded = true;
+ $upgrade = true;
} else {
$handler = $this->getHandler();
if ( $handler ) {
if ( $validity === MediaHandler::METADATA_BAD
|| ( $validity === MediaHandler::METADATA_COMPATIBLE && $wgUpdateCompatibleMetadata )
) {
- $this->upgradeRow();
- $this->upgraded = true;
+ $upgrade = true;
}
}
}
+
+ if ( $upgrade ) {
+ try {
+ $this->upgradeRow();
+ } catch ( LocalFileLockError $e ) {
+ // let the other process handle it (or do it next time)
+ }
+ $this->upgraded = true; // avoid rework/retries
+ }
}
function getUpgraded() {
* Fix assorted version-related problems with the image row by reloading it from the file
*/
function upgradeRow() {
-
$this->lock(); // begin
$this->loadFromFile();
/**
* Start a transaction and lock the image for update
* Increments a reference counter if the lock is already held
- * @throws MWException Throws an error if the lock was not acquired
+ * @throws LocalFileLockError Throws an error if the lock was not acquired
* @return bool Whether the file lock owns/spawned the DB transaction
*/
function lock() {
- $dbw = $this->repo->getMasterDB();
-
if ( !$this->locked ) {
+ $dbw = $this->repo->getMasterDB();
if ( !$dbw->trxLevel() ) {
$dbw->begin( __METHOD__ );
$this->lockedOwnTrx = true;
}
- $this->locked++;
// Bug 54736: use simple lock to handle when the file does not exist.
// SELECT FOR UPDATE prevents changes, not other SELECTs with FOR UPDATE.
// Also, that would cause contention on INSERT of similarly named rows.
$lockPaths = [ $this->getPath() ]; // represents all versions of the file
$status = $backend->lockFiles( $lockPaths, LockManager::LOCK_EX, 5 );
if ( !$status->isGood() ) {
- throw new MWException( "Could not acquire lock for '{$this->getName()}.'" );
+ if ( $this->lockedOwnTrx ) {
+ $dbw->rollback( __METHOD__ );
+ }
+ throw new LocalFileLockError( "Could not acquire lock for '{$this->getName()}.'" );
}
+ // Release the lock *after* commit to avoid row-level contention
+ $this->locked++;
$dbw->onTransactionIdle( function () use ( $backend, $lockPaths ) {
- $backend->unlockFiles( $lockPaths, LockManager::LOCK_EX ); // release on commit
+ $backend->unlockFiles( $lockPaths, LockManager::LOCK_EX );
} );
}
$this->file->repo->cleanupBatch( $files );
}
}
+
+class LocalFileLockError extends Exception {
+
+}
"config-email-watchlist": "启用监视列表通知",
"config-email-watchlist-help": "允许用户收到与其监视列表有关的通知,假若他们启用了该功能。",
"config-email-auth": "启用电子邮件身份验证",
- "config-email-auth-help": "如果启用此选项,在用户设置或修改电子邮件地址时,就会收到一封邮件,内含确认电子地址的链接。只有经过身份验证的电子邮件地址,才能收到来自其他用户的电子邮件,或任何修改通知的邮件。'''建议'''公开wiki启用本选项,以防对电子邮件功能的滥用。",
+ "config-email-auth-help": "如果启用此选项,在用户设置或修改电子邮件地址时,就会收到一封邮件,内含确认电子地址的链接。只有经过身份验证的电子邮件地址,才能收到来自其他用户的电子邮件,或任何修改通知的邮件。<strong>建议</strong>公开wiki启用本选项,以防对电子邮件功能的滥用。",
"config-email-sender": "回复电子邮件地址:",
"config-email-sender-help": "输入要用来发送出站电子邮件的地址,该地址将会收到被拒收的邮件。许多邮件服务器要求域名部分必须有效。",
"config-upload-settings": "图像和文件上传",
"config-upload-deleted": "已删除文件的目录:",
"config-upload-deleted-help": "指定用于存放被删除文件的目录。理想情况下,该目录不应能通过web访问。",
"config-logo": "标志URL:",
- "config-logo-help": "在MediaWiki的默认外观中,左侧栏菜单之上有一块135x160像素的标志区。请上传一幅相应大小的图像,并在此输入URL。\n\n你可以用<code>$wgStylePath</code>或<code>$wgScriptPath</code>来表示相对于这些位置的路径。\n\n如果您不希望使用标志,请将本处留空。",
+ "config-logo-help": "在MediaWiki的默认外观中,左侧栏菜单之上有一块135x160像素的标志区。请上传一幅相应大小的图像,并在此输入URL。\n\n您可以用<code>$wgStylePath</code>或<code>$wgScriptPath</code>来表示相对于这些位置的路径。\n\n如果您不希望使用标志,请将本处留空。",
"config-instantcommons": "启用即时共享资源",
"config-instantcommons-help": "[//www.mediawiki.org/wiki/InstantCommons 即时共享资源]可以让wiki使用来自[//commons.wikimedia.org/ 维基共享资源]网站的图像、音频和其他媒体文件。要启用该功能,MediaWiki必须能够访问互联网。\n\n有关此功能的详细信息,包括如何将其他wiki网站设为具有类似共享功能的方法,请参考[//www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgForeignFileRepos 手册]。",
"config-cc-error": "知识共享许可证挑选器无法找到结果,请手动输入许可证的名称。",
"config-cc-again": "重新挑选……",
- "config-cc-not-chosen": "选择你想要的知识共享许可协议并单击“proceed”。",
+ "config-cc-not-chosen": "选择您想要的知识共享许可协议并单击“proceed”。",
"config-advanced-settings": "高级设置",
"config-cache-options": "对象缓存设置:",
"config-cache-help": "对象缓存可通过缓存频繁使用的数据来提高MediaWiki的速度。高度推荐中到大型的网站启用该功能,小型网站亦能从其中受益。",
"config-skins-missing": "没有找到皮肤;MediaWiki将使用备选皮肤直到您自行安装一个后。",
"config-skins-must-enable-some": "您必须选择至少一个皮肤以起用。",
"config-skins-must-enable-default": "默认选择的皮肤必须启用。",
- "config-install-alreadydone": "'''警告:'''您似乎已经安装了MediaWiki,并试图重新安装它。请前往下一个页面。",
+ "config-install-alreadydone": "<strong>警告:</strong>您似乎已经安装了MediaWiki,并试图重新安装它。请前往下一个页面。",
"config-install-begin": "点击“{{int:config-continue}}”后,您将开始安装MediaWiki。如果您还想对配置作一些修改,请点击“{{int:config-back}}”。",
"config-install-step-done": "完成",
"config-install-step-failed": "失败",
"config-install-user-missing": "指定的用户“$1”不存在。",
"config-install-user-missing-create": "指定的用户“$1”不存在。如果您想要创建一名,请点选“创建帐户”下面的复选框。",
"config-install-tables": "正在创建数据表",
- "config-install-tables-exist": "'''警告''':MediaWiki的数据表似乎已经存在,跳过创建。",
- "config-install-tables-failed": "'''错误''':创建数据表出错,下为错误信息:$1",
+ "config-install-tables-exist": "<strong>警告:</strong>MediaWiki的数据表似乎已经存在,跳过创建。",
+ "config-install-tables-failed": "<strong>错误:</strong>创建数据表出错,下为错误信息:$1",
"config-install-interwiki": "正在填充默认的跨wiki数据表",
- "config-install-interwiki-list": "æ\89¾ä¸\8då\88°文件<code>interwiki.list</code>。",
- "config-install-interwiki-exists": "'''警告''':跨wiki数据表似乎已有内容,跳过默认列表。",
+ "config-install-interwiki-list": "æ\97 æ³\95读å\8f\96文件<code>interwiki.list</code>。",
+ "config-install-interwiki-exists": "<strong>警告:</strong>跨wiki数据表似乎已有内容,跳过默认列表。",
"config-install-stats": "初始化统计",
"config-install-keys": "生成密钥中",
- "config-insecure-keys": "'''警告''':在安装过程中生成的{{PLURAL:$2|安全密钥|安全密钥}}($1){{PLURAL:$2|并|并}}不一定安全。请考虑手动更改{{PLURAL:$2|它|它们}}。",
+ "config-insecure-keys": "<strong>警告:</strong>在安装过程中生成的{{PLURAL:$2|安全密钥}}($1){{PLURAL:$2|并}}不一定安全。请考虑手动更改{{PLURAL:$2|它|它们}}。",
"config-install-updates": "防止运行不需要的更新",
"config-install-updates-failed": "<strong>错误:</strong>表格中插入更新关键字失败并出现如下错误:$1",
"config-install-sysop": "正在创建管理员用户帐号",
"config-help": "帮助",
"config-help-tooltip": "单击展开",
"config-nofile": "找不到文件“$1”。它是否已被删除?",
- "config-extension-link": "æ\82¨æ\98¯å\90¦ç\9f¥é\81\93æ\82¨ç\9a\84wikiæ\94¯æ\8c\81[//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Extensions æ\8b\93å±\95]ï¼\9f\næ\82¨å\8f¯æµ\8fè§\88[//www.mediawiki.org/wiki/Special:MyLanguage/Category:Extensions_by_category æ\8b\93å±\95å\88\86ç±»]。",
+ "config-extension-link": "æ\82¨æ\98¯å\90¦ç\9f¥é\81\93æ\82¨ç\9a\84wikiæ\94¯æ\8c\81[//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Extensions æ\89©å±\95]ï¼\9f\n\næ\82¨å\8f¯ä»¥æµ\8fè§\88[//www.mediawiki.org/wiki/Special:MyLanguage/Category:Extensions_by_category æ\89©å±\95å\88\86ç±»]æ\88\96[//www.mediawiki.org/wiki/Extension_Matrix æ\89©å±\95ç\9f©é\98µ]以æ\9f¥ç\9c\8bå®\8cæ\95´ç\9a\84æ\89©å±\95å\88\97表。",
"mainpagetext": "<strong>已安装MediaWiki。</strong>",
"mainpagedocfooter": "请查阅[//meta.wikimedia.org/wiki/Help:Contents 用户指南]以获取使用本wiki软件的信息!\n\n== 入门 ==\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings MediaWiki配置设置列表]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ/zh-hans MediaWiki常见问题]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki发布邮件列表]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources 本地化MediaWiki到您的语言]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam 了解如何在您的wiki上打击破坏]"
}
: '';
$edit->pst = $edit->pstContent ? $edit->pstContent->serialize( $serialFormat ) : '';
+ if ( $edit->output ) {
+ $edit->output->setCacheTime( wfTimestampNow() );
+ }
+
+ // Process cache the result
$this->mPreparedEdit = $edit;
+
return $edit;
}
}
$casToken = null;
+ /** @var ParserOutput $value */
$value = $this->mMemc->get( $parserOutputKey, $casToken, BagOStuff::READ_VERIFIED );
if ( !$value ) {
wfDebug( "ParserOutput cache miss.\n" );
return $this->mTOCHTML;
}
+ /**
+ * @return string|null TS_MW timestamp of the revision content
+ */
public function getTimestamp() {
return $this->mTimestamp;
}
$user->setOption( 'searchNs' . $n, true );
}
- $user->saveSettings();
+ DeferredUpdates::addCallableUpdate( function () use ( $user ) {
+ $user->saveSettings();
+ } );
+
return true;
}
"apisandbox-results-error": "Адбылася памылка пры загрузцы адказу на API-запыт: $1.",
"apisandbox-request-url-label": "URL-адрас запыту:",
"apisandbox-request-time": "Час запыту: {{PLURAL:$1|$1 мс}}",
+ "apisandbox-alert-page": "Палі на гэтай старонцы няслушныя.",
+ "apisandbox-alert-field": "Значэньне гэтага поля зьяўляецца няслушным.",
"booksources": "Крыніцы кніг",
"booksources-search-legend": "Пошук кніг",
"booksources-isbn": "ISBN:",
"minoredit": "Tato změna je malá editace.",
"watchthis": "Sledovat tuto stránku",
"savearticle": "Uložit změny",
+ "publishpage": "Zveřejnit stránku",
"preview": "Náhled",
"showpreview": "Ukázat náhled",
"showdiff": "Ukázat změny",
"tooltip-ca-nstab-category": "Zobrazit kategorii",
"tooltip-minoredit": "Označit změnu jako malou editaci",
"tooltip-save": "Uložit vaše změny",
+ "tooltip-publish": "Zveřejnit vaše změny",
"tooltip-preview": "Zobrazit náhled vašich změn; prosíme, zobrazte si ho před uložením!",
"tooltip-diff": "Zobrazit, jaké změny jste v textu provedli",
"tooltip-compareselectedversions": "Podívat se na rozdíly mezi dvěma vybranými verzemi této stránky.",
"hidden-category-category": "Kategoriyê nımıtey",
"category-subcat-count": "{{PLURAL:$2|Na kategoriya de $1 bınkategoriyay estê.|$2 kategoriyan ra $1 bınkategoriyay asenê.}}",
"category-subcat-count-limited": "Na kategoriye de {{PLURAL:$1|ena kategoriya bınêne esta|enê $1 kategoriyê bınêni estê}}.",
- "category-article-count": "{{PLURAL:$2|Na kategoriye de teyna ena pele esta.|Na kategoriye de $2 ra pêro pia, {{PLURAL:$1|ena pele esta|enê $1 peli estê.}}, be $2 ra pêro pia}}",
+ "category-article-count": "{{PLURAL:$2|Na kategoriye de teyna ena pele esta.|Na kategoriye de $2 tenan ra, {{PLURAL:$1|ena pele esta|$1 peli}}, ena kategoriye miyan derê}}",
"category-article-count-limited": "{{PLURAL:$1|Pela cêrêne|$1 Pelê cêrêni}} na kategoriye derê.",
"category-file-count": "<noinclude>{{PLURAL:$2|Na kategoriye tenya dosyayanê cêrênan muhtewa kena.}}</noinclude>\n*Na kategoriye de $2 dosyayan ra {{PLURAL:$1|yew dosya tenêka esta| $1 dosyey asenê}}.",
"category-file-count-limited": "{{PLURAL:$1|Dosya cêrêne|$1 Dosyê cêrêni}} na kategoriye derê.",
"resetpass_submit": "Parola eyar kere u newe ra dekewe",
"changepassword-success": "Parola şıma be serkewtış vuriye!",
"changepassword-throttled": "Şıma zaf ronıştış akerdış ke.Kerem ke verdi dekewten $1 bıpawe.",
+ "botpasswords-label-appid": "Bot name:",
+ "botpasswords-label-create": "Vıraze",
+ "botpasswords-label-update": "Rocane ke",
"botpasswords-label-cancel": "Bıtexelne",
"botpasswords-label-delete": "Bestere",
+ "botpasswords-label-resetpassword": "Parola reset ke",
+ "botpasswords-label-grants-column": "Dayen",
"resetpass_forbidden": "parolayi nêvuryayi",
"resetpass-no-info": "şıma gani hesab akere u hona bıeşke bırese cı",
"resetpass-submit-loggedin": "Parola bıvurne",
"userinvalidcssjstitle": "'''Teme:''' Mewzuyê \"$1\" çıniyo.\nDosyanê be namey .css u .js'i de herfa werdiye bıgurêne, mesela herında {{ns:user}}:Foo/Vector.css'i de {{ns:user}}:Foo/vector.css bınuse.",
"updated": "(Rozeneya)",
"note": "'''Not:'''",
- "previewnote": "'''Xo vira mekerê ke ena yew verqayta.'''\nVurnayışê şıma hona qeyd nêbiyo!",
+ "previewnote": "'''Şıma bızanê ke ena yew verqayta.'''\nVurnayışê şıma hona qeyd nêbiyo!",
"continue-editing": "Şo herunda vurnayışi",
"previewconflict": "No seyrkerdışê verqaydi serê qutiyê nuşte tezim kerdış de yo, eke şıma qayile vurnayişê maddeyi seyino bıvini, no mocneno şıma.",
"session_fail_preview": "Ma ef kere. Vindibiyayişê tayê datay ra a kerdışê hesabê şıma de ma vurnayişê şıma qayd nêkerd. Newe ra tesel (cereb) bıkere. Eke no qayde zi nêbo, [[Special:UserLogout|hesabê xo bıqefelne]] u newera a kere.",
"last": "peyên",
"page_first": "verên",
"page_last": "peyên",
- "histlegend": "Ferqê weçinıtışi: Qutiya versiyonan seba têversanayış işaret ke û dest be ''enter''i ya zi gocega cêrêne ro ne.<br />\nCedwel: <strong>({{int:ferq}})</strong> = ferqê verziyonê peyêni, <strong>({{int:peyên}})</strong> = ferqê versiyonê verêni, <strong>{{int:q}}</strong> = vurnayışo werdi.",
+ "histlegend": "Ferqê weçinıtışi: Qutiya versiyonan seba pêver sanayış işaret ke û dest be ''enter''i ya zi gocega cêrêne ro ne.<br />\nCetwel: <strong>({{int:ferq}})</strong> = ferqê verziyonê peyêni, <strong>({{int:peyên}})</strong> = ferqê versiyonê verêni, <strong>{{int:q}}</strong> = vurnayışo werdi.",
"history-fieldset-title": "Tarixi bıvêne",
"history-show-deleted": "Tenya esterıtey",
"histfirst": "Verênêr",
"group-sysop": "İdarekari",
"group-bureaucrat": "Burokrati",
"group-suppress": "Çımpawıteni",
- "group-all": "(pêro)",
+ "group-all": "(pêron)",
"group-user-member": "{{GENDER:$1|karber}}",
"group-autoconfirmed-member": "{{GENDER:$1|Karberê ke otomatikmen biyê araşt}}",
"group-bot-member": "{{GENDER:$1|bot}}",
"enhancedrc-history": "tarix",
"recentchanges": "Vurnayışê peyêni",
"recentchanges-legend": "Tercihê vurnayışanê peyênan",
- "recentchanges-summary": "Ena pele de wiki sero vurnayışanê peyênan teqib ke.",
+ "recentchanges-summary": "Wiki sero vurnayışanê peyênan ena pele de teqib kerê.",
"recentchanges-noresult": "Goreyê kriteranê kıfşkerdeyan ra qet yew vurnayış nêvêniya.",
"recentchanges-feed-description": "Ena feed dı vurnayişanê tewr peniyan teqip bık.",
"recentchanges-label-newpage": "Enê vurnayışi ra yew pela newiye vıraziye",
"recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} ([[Special:NewPages|Lista pelanê neweyan]] zi bıvêne)",
"recentchanges-legend-plusminus": "''(±123)''",
"rcnotefrom": "Cêr de <strong>$2</strong> ra nata vurnayışiyê asenê (tewr vêşi <strong>$1</strong> asenê).",
- "rclistfrom": "$3 $2 ra tepiya vurnayışanê neweyan bımocne",
- "rcshowhideminor": "Vurnayışanê werdiyan $1",
+ "rclistfrom": "$3 u seate $2 ra tepiya vurnayışanê neweyan bımocne",
+ "rcshowhideminor": "vurnayışanê werdiyan $1",
"rcshowhideminor-show": "Bımocne",
"rcshowhideminor-hide": "Bınımne",
- "rcshowhidebots": "Botan $1",
+ "rcshowhidebots": "Vurnayışanê botan $1",
"rcshowhidebots-show": "Bımocne",
"rcshowhidebots-hide": "Bınımne",
- "rcshowhideliu": "Karberanê qeydınan $1",
+ "rcshowhideliu": "Qeydbıyayê karberan $1",
"rcshowhideliu-show": "Bımocne",
"rcshowhideliu-hide": "Bınımne",
- "rcshowhideanons": "Karberanê bênameyan $1",
+ "rcshowhideanons": "Bêname karberan $1",
"rcshowhideanons-show": "Bımocne",
"rcshowhideanons-hide": "Bınımne",
"rcshowhidepatr": "$1 vurnayışê ke dewriya geyrayê",
"rcshowhidepatr-show": "Bımocne",
"rcshowhidepatr-hide": "Bınımne",
- "rcshowhidemine": "Vurnayışanê mı $1",
+ "rcshowhidemine": "Vurnayışanê êdê mı $1",
"rcshowhidemine-show": "Bımocne",
"rcshowhidemine-hide": "Bınımne",
"rcshowhidecategorization": "kategorizasyona perer $1",
"rcshowhidecategorization-show": "Bımocne",
"rcshowhidecategorization-hide": "Bınımne",
- "rclinks": "Peyniya $2 rocan de $1 vurnayışan bımocne <br />$3",
+ "rclinks": "Peyên $2 rocan de $1 vurnayışan bımocne <br />$3",
"diff": "ferq",
"hist": "verên",
"hide": "Bınımne",
"uploadbtn": "Dosya bar ke",
"reuploaddesc": "Barkerdışi iptal ke u peyser şo formê barkerdışi",
"upload-tryagain": "Deskripyonê dosyayî ke vurîya ey qeyd bike",
- "uploadnologin": "Şıma cıkewtış nêvıraşto",
+ "uploadnologin": "Şıma cıkewtış nêvıraşt o",
"uploadnologintext": "Ti şeni $1 dosya bar bikere.",
"upload_directory_missing": "Direktorê dosyayê ($1)î biyo vînî u webserver de nieşkeno viraziye.",
"upload_directory_read_only": "Direktorê dosyayê ($1)î webserver de nieşkeno binuse.",
"randomredirect-nopages": "Cayê nameyê \"$1\" de serşıkıtışi çıniyê.",
"statistics": "İstatistiki",
"statistics-header-pages": "İstatistikê pele",
- "statistics-header-edits": "Îstatistikê vurnayîşî",
+ "statistics-header-edits": "İstatistikê vurnayışan",
"statistics-header-users": "İstatistikê karberi",
- "statistics-header-hooks": "Îstatistiksê binî",
+ "statistics-header-hooks": "Yewbina istatistiki",
"statistics-articles": "Pelê zerreki",
"statistics-pages": "Peli",
"statistics-pages-desc": "Pelanê hemî ke wîkî de estê, pelanê mineqeşeyî, redireksiyon ucb... dehil o.",
"statistics-files": "Dosyayê bar biye",
"statistics-edits": "{{SITENAME}} saz kerdış ra hetana newke amora vırnayışan",
"statistics-edits-average": "Her pele sero nısbi vurnayış",
- "statistics-users": "Qeyd biye [[Special:ListUsers|karberî]]",
+ "statistics-users": "[[Special:ListUsers|Karber]]ê qeydıni",
"statistics-users-active": "Karberê aktifi",
"statistics-users-active-desc": "{{PLURAL:$1|roco peyin de|$1 roco peyin de}} karber ê ke kar kerdê.",
"pageswithprop": "Peli be yew xısusiyetê pele",
"listgrouprights-group": "Grube",
"listgrouprights-rights": "Heqqî",
"listgrouprights-helppage": "Help:Heqqanê gruban",
- "listgrouprights-members": "(listey ezayan)",
+ "listgrouprights-members": "[listeya ezayan]",
"listgrouprights-right-display": "<span class=\"listgrouprights-granted\">$1 <code>($2)</code></span>",
"listgrouprights-right-revoked": "<span class=\"listgrouprights-revoked\">$1 <code>($2)</code></span>",
"listgrouprights-addgroup": "{{PLURAL:$2|Grube|Gruban}} cı kerê: $1",
"watchlist-details": "{{PLURAL:$1|$1 pele|$1 peleyan}} listeyê seyr-kerdışi şıma dı, peleyanê vurnayışi dahil niyo.",
"wlheader-enotif": "E-mail xeber dayiş abiyo.",
"wlheader-showupdated": "ziyaretê şıma ye peyini de vuryayişê peli pê '''nuşteyo qalıni''' mocyayo.",
- "wlnote": "$3 seate u bahde $4 deqa dıma {{PLURAL:$2|ju seate dı|'''$2''' ju seate dı}} {{PLURAL:$1|vurnayışe peyeni|vurnayışe '''$1''' peyeni}} cêrdeyê",
+ "wlnote": "$3 seate u $4 deqa dıma {{PLURAL:$2|ju seate dı|'''$2''' ju seate dı}} {{PLURAL:$1|vurnayışe peyeni|vurnayışe '''$1''' peyeni}} cêrdeyê",
"wlshowlast": "Peyni de vurnayışan ra $1 seata u $2 roca bımocnê",
"watchlist-hide": "Bınımne",
"wlshowtime": "Peyênan bımocne:",
- "wlshowhideminor": "vurnayışê werdiyi",
+ "wlshowhideminor": "vurnayışanê werdiyan",
"wlshowhidebots": "boti",
"wlshowhideliu": "karberê qeydıni",
"wlshowhideanons": "karberê anonimi",
"actioncomplete": "Kar bi temam",
"actionfailed": "kar nêbı",
"deletedtext": "\"$1\" biya wedariya.\nQe qeydê wedarnayışi, $2 bevinin.",
- "dellogpage": "Qeydê esterıtışi",
+ "dellogpage": "Qeydê esternayışi",
"dellogpagetext": "listeya cêrıni heme qaydê hewn a kerdeyan o.",
- "deletionlog": "qeydê esterıtışi",
+ "deletionlog": "Qeydê esternayışi",
"reverted": "revizyono verin tepiya anciyayo",
"deletecomment": "Sebeb:",
"deleteotherreason": "Sebebo bin:",
"sp-contributions-newbies": "Tenya iştıraqanê karberanê neweyan bımocne",
"sp-contributions-newbies-sub": "Qe hesebê newe",
"sp-contributions-newbies-title": "Îştîrakê karberî ser hesabê neweyî",
- "sp-contributions-blocklog": "Qeydê blokey",
+ "sp-contributions-blocklog": "Qeydê meni",
"sp-contributions-deleted": "iştırakê karberi esterdi",
"sp-contributions-uploads": "barkerdey",
"sp-contributions-logs": "qeydi",
"contribslink": "iştıraqi",
"emaillink": "e-poste bırışe",
"autoblocker": "Şıma otomatikmen kılit biy, çıke adresa şımaya ''IP''y terefê \"[[User:$1|$1]]\" gureniyena.\nSebebê kılitbiyayışê $1'i \"$2\"o",
- "blocklogpage": "Qeydê bloqi",
+ "blocklogpage": "Qeydê meni",
"blocklog-showlog": "verniyê no/na karberi cıwa ver geriyayo/ya.",
"blocklog-showsuppresslog": "verniyê no/na karberi cıwa ver geriyayo/ya.",
"blocklogentry": "[[$1]] biyo bloqe, sebeb: $3, hetana $2 do bıramo.",
"exif-urgency-low": "($1) Kemiyo",
"exif-urgency-high": "( $1 ) Vêşiyo",
"exif-urgency-other": "Sıftê şınasiya karberi ($1)",
- "namespacesall": "pêro",
+ "namespacesall": "pêron",
"monthsall": "pêro",
"confirmemail": "Adresê e-posta tesdiq ker",
"confirmemail_noemail": "Yew emaîlê tu raştîyê çin o ke [[Special:Preferences|tercihê karberî]] ayar bike.",
"htmlform-cloner-delete": "Wedare",
"sqlite-has-fts": "$1 tam-metn destegê cı geyrayışiya piya",
"sqlite-no-fts": "$1 tam-metn bê destegê cı geyrayışi",
- "logentry-delete-delete": "$1 pela $3 {{GENDER:$2|esterıte}}",
+ "logentry-delete-delete": "Karber $1 pela $3 {{GENDER:$2|besternê}}",
"logentry-delete-restore": "$1 pela $3 {{GENDER:$2|peyser arde}}",
"logentry-delete-event": "$1 $3: $4 de asayışê {{PLURAL:$5|cıkerdışi|cıkerdışan}} {{GENDER:$2|vurna}}",
"logentry-delete-revision": "$1 pela $3: $4 de asayışê {{PLURAL:$5|yew revizyoni|$5 revizyonan}} {{GENDER:$2|vurna}}",
"api-error-nomodule": "Internal error: No upload module set.",
"api-error-ok-but-empty": "Internal error: No response from server.",
"api-error-overwrite": "Overwriting an existing file is not allowed.",
+ "api-error-ratelimited": "You're trying to upload more files in a short space of time than this wiki allows.\nPlease try again in a few minutes.",
"api-error-stashfailed": "Internal error: Server failed to store temporary file.",
"api-error-publishfailed": "Internal error: Server failed to publish temporary file.",
"api-error-stasherror": "There was an error while uploading the file to stash.",
"minoredit": "Modification mineure",
"watchthis": "Suivre cette page",
"savearticle": "Enregistrer",
- "publishpage": "Publier",
+ "publishpage": "Publier la page",
"preview": "Prévisualisation",
"showpreview": "Prévisualiser",
"showdiff": "Voir les modifications",
"tooltip-ca-nstab-category": "Voir la page de la catégorie",
"tooltip-minoredit": "Marquer mes modifications comme mineures",
"tooltip-save": "Enregistrer vos modifications",
+ "tooltip-publish": "Publier vos modifications",
"tooltip-preview": "Merci de prévisualiser vos modifications avant de les publier",
"tooltip-diff": "Affiche les modifications que vous avez apportées au texte",
"tooltip-compareselectedversions": "Afficher les différences entre deux versions de cette page",
"minoredit": "O est un petiôt changement",
"watchthis": "Siuvre cela pâge",
"savearticle": "Encartar la pâge",
+ "publishpage": "Publeyér la pâge",
"preview": "Apèrçu",
"showpreview": "Montrar un apèrçu",
"showdiff": "Montrar los changements",
"userpage-userdoesnotexist": "Lo comptio utilisator « $1 » est pas encartâ.\nSe vos plét, controlâd se vos voléd fâre changiér cela pâge.",
"userpage-userdoesnotexist-view": "Lo comptio utilisator « $1 » est pas encartâ.",
"blocked-notice-logextract": "Ora {{GENDER:$1|cél utilisator|cel’utilisatrice}} est blocâ{{GENDER:$1||ye}}.\nLa dèrriére entrâ du jornâl des blocâjos est balyêe ce-desot coment rèference :",
- "clearyourcache": "<strong>Nota :</strong> aprés avêr encartâ, sè pôt que vos deveyéd forciér lo rechargement complèt du cacho de voutron navegator por vêre los changements.\n* <strong>Firefox / Safari :</strong> mantegnéd la toche <em>Granta Lètra</em> (<em>Shift</em>) en clliquent dessus <em>Rechargiér</em> (<em>Reload</em>) ou ben apoyéd dessus <em>Ctrl-F5</em> <em>Ctrl-R</em> (<em>⌘-R</em> sur un Mac)\n* <strong>Google Chrome :</strong> apoyéd dessus <em>Ctrl-Shift-R</em> (''⌘-Shift-R</em> sur un Mac)\n* <strong>Internet Explorer :</strong> mantegnéd la toche <em>Ctrl</em> en clliquent dessus <em>Rafrèchir</em> (<em>Refresh</em>) ou ben apoyéd dessus <em>Ctrl-F5</em>\n* <strong>Opera :</strong> vouedâd lo cacho dedens <em>Outils → Prèferences</em>",
+ "clearyourcache": "<strong>Nota :</strong> aprés avêr encartâ, sè pôt que vos deveyéd forciér lo rechargement complèt du cacho de voutron navegator por vêre los changements.\n* <strong>Firefox / Safari :</strong> mantegnéd la toche <em>Granta Lètra</em> (<em>Shift</em>) en clliquent dessus <em>Rechargiér</em> (<em>Reload</em>) ou ben apoyéd dessus <em>Ctrl-F5</em> <em>Ctrl-R</em> (<em>⌘-R</em> sur un Mac)\n* <strong>Google Chrome :</strong> apoyéd dessus <em>Ctrl-Shift-R</em> (''⌘-Shift-R</em> sur un Mac)\n* <strong>Internet Explorer :</strong> mantegnéd la toche <em>Ctrl</em> en clliquent dessus <em>Rafrèchir</em> (<em>Refresh</em>) ou ben apoyéd dessus <em>Ctrl-F5</em>\n* <strong>Opera :<strong> alâd dedens <em>Menu → Settings</em> (<em>Opera → Prèferences</em> sur un Mac) et pués a <em>Confidencialitât & sècuritât → Vouedar les balyês d’èxploracion → Émâges et fichiérs en cacho</em>.",
"usercssyoucanpreview": "<strong>Combina :</strong> empleyéd lo boton « {{int:showpreview}} » por èprovar voutra fôlye CSS novèla devant que l’encartar.",
"userjsyoucanpreview": "<strong>Combina :</strong> empleyéd lo boton « {{int:showpreview}} » por èprovar voutra fôlye JavaScript novèla devant que l’encartar.",
"usercsspreview": "<strong>Rapelâd-vos que vos éte ren qu’aprés prèvêre voutra fôlye CSS.\nEl est p’oncor étâye encartâye !</strong>",
"tooltip-ca-nstab-category": "Vêre la pâge de la catègoria",
"tooltip-minoredit": "Marcar mos changements coment petiôts",
"tooltip-save": "Encartar voutros changements",
+ "tooltip-publish": "Publeyér voutros changements",
"tooltip-preview": "Prèvêde voutros changements. Se vos plét, empleyéd-lo devant qu’encartar.",
"tooltip-diff": "Montrar los changements que vos éd aportâs u tèxto",
"tooltip-compareselectedversions": "Fâre ressortir les difèrences entre les doves vèrsions chouèsies de cela pâge",
"exif-meteringmode-0": "Encognua",
"exif-meteringmode-1": "Moyena",
"exif-meteringmode-2": "Moyena d’aplomb u centro",
- "exif-meteringmode-3": "Pouent",
- "exif-meteringmode-4": "MultiPouent",
+ "exif-meteringmode-3": "Spote",
+ "exif-meteringmode-4": "Multi-spote",
"exif-meteringmode-5": "Modèlo",
- "exif-meteringmode-6": "Encomplèta",
+ "exif-meteringmode-6": "Parciâla",
"exif-meteringmode-255": "Ôtra",
"exif-lightsource-0": "Encognua",
"exif-lightsource-1": "Lumiére du jorn",
"exif-lightsource-2": "Fluorèscenta",
- "exif-lightsource-3": "Tungstène (lumiére chôdâ a blanc)",
+ "exif-lightsource-3": "Tungstène (lumiére enfarâye)",
"exif-lightsource-4": "Èludo",
"exif-lightsource-9": "Temps cllâr",
"exif-lightsource-10": "Temps enneblo",
"exif-lightsource-11": "Ombra",
- "exif-lightsource-12": "Lumiére fluorèscenta « lumiére du jorn » (D 5700 – 7100 K)",
- "exif-lightsource-13": "Lumiére fluorèscenta blanche « jorn » (N 4600 – 5400 K)",
- "exif-lightsource-14": "Lumiére fluorèscenta blanche « frêd » (W 3900 – 4500 K)",
- "exif-lightsource-15": "Lumiére fluorèscenta blanche (WW 3200 – 3700 K)",
+ "exif-lightsource-12": "Ècllèrâjo fluorèscent « lumiére du jorn » (D 5700 – 7100 K)",
+ "exif-lightsource-13": "Ècllèrâjo fluorèscent blanc « jorn » (N 4600 – 5400 K)",
+ "exif-lightsource-14": "Ècllèrâjo fluorèscent blanc « frêd » (W 3900 – 4500 K)",
+ "exif-lightsource-15": "Ècllèrâjo fluorèscent blanc (WW 3200 – 3700 K)",
"exif-lightsource-17": "Lumiére estandârd A",
"exif-lightsource-18": "Lumiére estandârd B",
"exif-lightsource-19": "Lumiére estandârd C",
"userpage-userdoesnotexist": "חשבון המשתמש \"$1\" אינו רשום.\nאנא בִּדקו אם ברצונכם ליצור/לערוך את הדף הזה.",
"userpage-userdoesnotexist-view": "חשבון המשתמש \"$1\" אינו רשום.",
"blocked-notice-logextract": "{{GENDER:$1|המשתמש הזה חסום|המשתמשת הזו חסומה}} כרגע.\nהפעולה האחרונה ביומן החסימות מוצגת להלן:",
- "clearyourcache": "<strong>×\94ער×\94:</strong> ×\9c×\90×\97ר ×\94ש×\9e×\99ר×\94, ×\99×\99ת×\9b×\9f שתצ×\98ר×\9b×\95 ×\9c× ×§×\95ת ×\90ת ×\96×\99×\9bר×\95×\9f ×\94×\9e×\98×\9e×\95×\9f (cache) ש×\9c ×\94×\93פ×\93פ×\9f ×\9b×\93×\99 ×\9c×\94×\91×\97×\99×\9f ×\91ש×\99× ×\95×\99×\99×\9d.\n* <strong>פ×\99×\99רפ×\95קס / ספ×\90ר×\99:</strong> ×\9c×\97צ×\95 ×\95×\94×\97×\96×\99ק×\95 ×\90ת ×\94×\9eקש <em>Shift</em> ×\91עת ×\9c×\97×\99צת×\9b×\9d ×¢×\9c <strong>×\98×¢×\99× ×\94 ×\9e×\97×\93ש</strong> (Reload), ×\90×\95 ×\9c×\97צ×\95 ×¢×\9c צ×\99ר×\95×£ ×\94×\9eקש×\99×\9d <em>Ctrl-F5</em> ×\90×\95 <em>Ctrl-R</em>‏ (<em><span dir=\"ltr\">â\8c\98-R</span></em> ×\91×\9e×\97ש×\91 ×\9eק)\n* <strong>×\92×\95×\92×\9c ×\9bר×\95×\9d:</strong> ×\9c×\97צ×\95 ×¢×\9c צ×\99ר×\95×£ ×\94×\9eקש×\99×\9d <em>Ctrl-Shift-R</em>‏ (<em><span dir=\"ltr\">â\8c\98-Shift-R</span></em> ×\91×\9e×\97ש×\91 ×\9eק)\n* <strong>×\90×\99× ×\98×¨× ×\98 ×\90קספ×\9c×\95רר:</strong> ×\9c×\97צ×\95 ×\95×\94×\97×\96×\99ק×\95 ×\90ת ×\94×\9eקש <em>Ctrl</em> ×\91עת ×\9c×\97×\99צת×\9b×\9d ×¢×\9c <strong>×¨×¢× ×\9f</strong> (Refresh), ×\90×\95 ×\9c×\97צ×\95 ×¢×\9c צ×\99ר×\95×£ ×\94×\9eקש×\99×\9d <em>Ctrl-F5</em>\n* <strong>×\90×\95פר×\94:</strong> פת×\97×\95 ×\90ת <em>Menu â\86\92 Settings</em> (×\94× ×§×¨×\90 <em>Opera â\86\92 Preferences</em> ×\91×\9e×\97ש×\91 ×\9eק) ×\95×\90×\96 ×\9c×\97צ×\95 ×¢×\9c <em>Privacy & security â\86\92 Clear browsing data â\86\92 Cached images and files</em>.",
+ "clearyourcache": "<strong>×\94ער×\94:</strong> ×\9c×\90×\97ר ×\94ש×\9e×\99ר×\94, ×\99×\99ת×\9b×\9f ש×\99×\94×\99×\94 צ×\95ר×\9a ×\9c× ×§×\95ת ×\90ת ×\96×\99×\9bר×\95×\9f ×\94×\9e×\98×\9e×\95×\9f (cache) ש×\9c ×\94×\93פ×\93פ×\9f ×\9b×\93×\99 ×\9c×\94×\91×\97×\99×\9f ×\91ש×\99× ×\95×\99×\99×\9d.\n* <strong>פ×\99×\99רפ×\95קס / ספ×\90ר×\99:</strong> ×\9c×\94×\97×\96×\99ק ×\90ת ×\94×\9eקש <em>Shift</em> ×\91עת ×\9c×\97×\99צ×\94 ×¢×\9c <strong>×\98×¢×\99× ×\94 ×\9e×\97×\93ש</strong> (Reload), ×\90×\95 ×\9c×\9c×\97×\95×¥ ×¢×\9c צ×\99ר×\95×£ ×\94×\9eקש×\99×\9d <em>Ctrl-F5</em> ×\90×\95 <em>Ctrl-R</em> (×\91×\9e×\97ש×\91 ×\9eק: <em dir=\"ltr\">â\8c\98-R</em>)\n* <strong>×\92×\95×\92×\9c ×\9bר×\95×\9d:</strong> ×\9c×\9c×\97×\95×¥ ×¢×\9c צ×\99ר×\95×£ ×\94×\9eקש×\99×\9d <em>Ctrl-Shift-R</em> (×\91×\9e×\97ש×\91 ×\9eק: <em dir=\"ltr\">â\8c\98-Shift-R</em>)\n* <strong>×\90×\99× ×\98×¨× ×\98 ×\90קספ×\9c×\95רר:</strong> ×\9c×\9c×\97×\95×¥ ×\95×\9c×\94×\97×\96×\99ק ×\90ת ×\94×\9eקש <em>Ctrl</em> ×\91עת ×\9c×\97×\99צ×\94 ×¢×\9c <strong>×¨×¢× ×\9f</strong> (Refresh), ×\90×\95 ×\9c×\9c×\97×\95×¥ ×¢×\9c צ×\99ר×\95×£ ×\94×\9eקש×\99×\9d <em>Ctrl-F5</em>\n* <strong>×\90×\95פר×\94:</strong> ×\9cפת×\95×\97 <em>תפר×\99×\98 â\86\90 ×\94×\92×\93ר×\95ת</em> (×\91×\9e×\97ש×\91 ×\9eק <em>Opera â\86\90 ×\94×¢×\93פ×\95ת</em>) ×\95×\90×\96 ×\9c×\9c×\97×\95×¥ ×¢×\9c <em>פר×\98×\99×\95ת ×\95×\90×\91×\98×\97×\94 â\86\90 ×\9e×\97ק ×\94×\99ס×\98×\95ר×\99×\99ת ×\92×\9c×\99ש×\94 â\86\90 Cached images and files</em>.",
"usercssyoucanpreview": "<strong>עצה:</strong> השתמשו בכפתור \"{{int:showpreview}}\" כדי לבחון את גיליון ה־CSS החדש שלכם לפני השמירה.",
"userjsyoucanpreview": "<strong>עצה:</strong> השתמשו בכפתור \"{{int:showpreview}}\" כדי לבחון את סקריפט ה־JavaScript החדש שלכם לפני השמירה.",
"usercsspreview": "<strong>זִכרו שזו רק תצוגה מקדימה של גיליון ה־CSS שלכם.\nהוא עדיין לא נשמר!</strong>",
"mergehistory-fail-permission": "הרשאות לא מספיקות למיזוג היסטוריה.",
"mergehistory-fail-self-merge": "דף המקור זהה לדף היעד.",
"mergehistory-fail-timestamps-overlap": "גרסאות המקור חופפות או מגיעות אחרי גרסאות היעד.",
- "mergehistory-fail-toobig": "לא ניתן לבצע את מיזוג הגרסאות כיוון שצריך להעביר יותר גרסאות מהמגבלה, שהיא {{PLURAL:$1|גרסה אחת|֫$1 גרסאות}}.",
+ "mergehistory-fail-toobig": "לא ניתן לבצע את מיזוג הגרסאות כיוון שצריך להעביר יותר גרסאות מהמגבלה, שהיא {{PLURAL:$1|גרסה אחת|$1 גרסאות}}.",
"mergehistory-no-source": "דף המקור $1 אינו קיים.",
"mergehistory-no-destination": "דף היעד $1 אינו קיים.",
"mergehistory-invalid-source": "דף המקור חייב להיות בעל כותרת תקינה.",
"searchrelated": "קשור",
"searchall": "הכול",
"showingresults": "{{PLURAL:$1|מוצגת תוצאה <strong>אחת</strong>|מוצגות עד <strong>$1</strong> תוצאות}} החל ממספר <strong>$2</strong>:",
- "showingresultsinrange": "{{PLURAL:$1|מוצגת תוצאה <strong>אחת</strong>|מוצגות עד <strong>$1</strong> תוצאות}} בין המספרים <strong>$2</strong> ו־<strong>$3</strong>:",
+ "showingresultsinrange": "{{PLURAL:$1|מוצגת תוצאה <strong>אחת</strong>|מוצגות עד <strong>$1</strong> תוצאות}} בין המספרים <strong>$2</strong> ו־<strong>$3</strong>:",
"search-showingresults": "{{PLURAL:$4|תוצאה <strong>$1</strong> מתוך <strong>$3</strong>|תוצאות <strong>$1 - $2</strong> מתוך <strong>$3</strong>}}",
"search-nonefound": "לא נמצאו תוצאות המתאימות לחיפוש.",
"search-nonefound-thiswiki": "לא נמצאו תוצאות המתאימות לחיפוש באתר זה.",
"recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (ראו גם [[Special:NewPages|רשימת דפים חדשים]])",
"recentchanges-legend-plusminus": "(''±123'')",
"recentchanges-submit": "הצגה",
- "rcnotefrom": "×\9c×\94×\9c×\9f {{PLURAL:$5|×\94ש×\99× ×\95×\99 ש×\91×\95צע|×\94ש×\99× ×\95×\99×\99×\9d ש×\91×\95צע×\95}} ×\94×\97×\9c ×\9eâ\80\8fâ\80\8fÖ«Ö¾<b>$2</b> (×¢×\93 <b>$1</b> ×\9e×\95צ×\92×\99×\9d).",
+ "rcnotefrom": "×\9c×\94×\9c×\9f {{PLURAL:$5|×\94ש×\99× ×\95×\99 ש×\91×\95צע|×\94ש×\99× ×\95×\99×\99×\9d ש×\91×\95צע×\95}} ×\9e×\90×\96 <strong>$3, $4</strong> (×\9e×\95צ×\92×\99×\9d ×¢×\93 <strong>$1</strong>).",
"rclistfrom": "הצגת שינויים חדשים החל מ־$2, $3",
"rcshowhideminor": "$1 עריכות משניות",
"rcshowhideminor-show": "הצגת",
"logentry-import-upload": "$1 {{GENDER:$2|ייבא|ייבאה}} את $3 באמצעות העלאת קובץ",
"logentry-import-upload-details": "$1 {{GENDER:$2|ייבא|ייבאה}} את $3 באמצעות העלאת קובץ ({{PLURAL:$4|גרסה אחת|$4 גרסאות}})",
"logentry-import-interwiki": "$1 {{GENDER:$2|ייבא|ייבאה}} את $3 מאתר ויקי אחר",
- "logentry-import-interwiki-details": "$1 {{GENDER:$2|ייבא|ייבאה}} את $3 מ־$5‏ ({{PLURAL:$4|גרסה אחת|$4 גרסאות}})‏",
+ "logentry-import-interwiki-details": "$1 {{GENDER:$2|ייבא|ייבאה}} את $3 מ־$5‏ ({{PLURAL:$4|גרסה אחת|$4 גרסאות}})",
"logentry-merge-merge": "$1 {{GENDER:$2|מיזג|מיזגה}} את $3 לתוך $4 (גרסאות עד $5)",
"logentry-move-move": "$1 {{GENDER:$2|העביר|העבירה}} את הדף $3 לשם $4",
"logentry-move-move-noredirect": "$1 {{GENDER:$2|העביר|העבירה}} את הדף $3 לשם $4 בלי להשאיר הפניה",
"logentry-protect-modify": "$1 {{GENDER:$2|שינה|שינתה}} את רמת ההגנה של הדף $3 $4",
"logentry-protect-modify-cascade": "$1 {{GENDER:$2|שינה|שינתה}} את רמת ההגנה של הדף $3 $4 [מדורג]",
"logentry-rights-rights": "$1 {{GENDER:$2|שינה|שינתה}} את ההרשאות של {{GENDER:$6|$3}} מ{{GRAMMAR:תחילית|$4}} ל{{GRAMMAR:תחילית|$5}}",
- "logentry-rights-rights-legacy": "$1 {{GENDER:$2|שינה|שינתה}} את ההרשאות של $3‏",
+ "logentry-rights-rights-legacy": "$1 {{GENDER:$2|שינה|שינתה}} את ההרשאות של $3",
"logentry-rights-autopromote": "$1 קודם אוטומטית מ{{GRAMMAR:תחילית|$4}} ל{{GRAMMAR:תחילית|$5}}",
"logentry-upload-upload": "$1 {{GENDER:$2|העלה|העלתה}} את $3",
"logentry-upload-overwrite": "$1 {{GENDER:$2|העלה|העלתה}} גרסה חדשה של $3",
"tog-watchdefault": "Ավելացնել իմ խմբագրած էջերը և նիշքերը իմ հսկացանկում",
"tog-watchmoves": "Ավելացնել իմ վերնավանած էջերը և նիշքերը իմ հսկացանկում",
"tog-watchdeletion": "Ավելացնել իմ ջնջած էջերը և նիշքերը իմ հսկացանկում",
+ "tog-watchuploads": "Իմ բեռնած նիշքերը ավելացնել իմ հսկացանկում",
"tog-watchrollback": "Իմ հետ շրջած էջերն ավելացնել իմ հսկացանկում",
"tog-minordefault": "Բոլոր խմբագրումները լռելյայն կերպով նշել որպես չնչին",
"tog-previewontop": "Ցույց տալ նախադիտումը խմբագրման դաշտից առաջ",
"october-date": "Հոկտեմբերի $1",
"november-date": "Նոյեմբերի $1",
"december-date": "Դեկտեմբերի $1",
+ "period-am": "AM",
+ "period-pm": "PM",
"pagecategories": "{{PLURAL:$1|Կատեգորիա|Կատեգորիաներ}}",
"category_header": "«$1» կատեգորիայի հոդվածները",
"subcategories": "Ենթակատեգորիաներ",
"view-pool-error": "Ներեցեք, սերվերները գերբեռնված են այս պահին։\nՇատ օգտվողներ փորձում են դիտել այս էջը։\nԽնդրում ենք սպասել որոշ ժամանակ էջը կրկին դիտելու համար։\n\n$1",
"generic-pool-error": "Ներեցեք, սերվերները գերբեռնված են այս պահին։\nՇատ օգտվողներ փորձում են դիտել այս էջը։\nԽնդրում ենք սպասել որոշ ժամանակ էջը կրկին դիտելու համար։",
"pool-errorunknown": "Անհայտ սխալ",
+ "poolcounter-usage-error": "Օգտագործման սխալ՝ $1",
"aboutsite": "{{grammar:genitive|{{SITENAME}}}} մասին",
"aboutpage": "Project:Էությունը",
"copyright": "Կայքի բովանդակությունը թողարկված է $1 թույլատրագրով, եթե այլ բան նշված չէ։",
"pagetitle": "$1 — {{SITENAME}}",
"retrievedfrom": "Ստացված է «$1» էջից",
"youhavenewmessages": "Դուք ունեք $1 ($2)։",
+ "youhavenewmessagesfromusers": "{{PLURAL:$4|Դուք ունեք}} $1 {{PLURAL:$3|այլ մասնակից|$3 մասնակցից}} ($2):",
"youhavenewmessagesmanyusers": "Դուք ունեք $1 մի քանի օգտագործողից ($2)։",
"newmessageslinkplural": "{{PLURAL:$1|նոր հաղորդագրություն|999=նոր հաղորդագրություններ}}",
"newmessagesdifflinkplural": "վերջին {{PLURAL:$1|փոփոխում|999=փոփոխումներ}}",
"filerenameerror": "Չհաջողվեց «$1» նիշքը վերանվանել «$2»։",
"filedeleteerror": "Չհաջողվեց ջնջել «$1» ֆայլը։",
"directorycreateerror": "Չհաջողվեց ստեղծել «$1» պանակը։",
+ "directoryreadonlyerror": "$1 թղթապանակը միայն ընթերցելու համար է:",
"filenotfound": "Չհաջողվեց գտնել «$1» ֆայլը։",
"unexpected": "Անսպասելի արժեք. «$1»=«$2»։",
"formerror": "Սխալ. չհաջողվեց փոխանցել տվյալները",
"customjsprotected": "Դուք չեք կարող խմբագրել այս ՋավաՍկրիպտ էջը, քանի որ այն պարունակում է այլ մասնակցի անձնական նախընտրանքներ։",
"mycustomcssprotected": "Դուք բավարար իրավունքներ չունեք այս CSS էջը խմբագրելու համար։",
"mycustomjsprotected": "Դուք բավարար իրավունքներ չունեք այս JavaScript էջը խմբագրելու համար։",
+ "myprivateinfoprotected": "Դուք իրավասու չեք խմբագրել Ձեր անձնական տեղեկությունը:",
"mypreferencesprotected": "Դուք բավարար իրավունքներ չունեք Ձեր նախընտրությունները խմբագրելու համար։",
"ns-specialprotected": "«{{ns:special}}» անվանատարածքի էջերը չեն կարող խմբագրվել։",
"titleprotected": "Այս անվանմամբ էջի ստեղծումը արգելվել է [[User:$1|$1]] մասնակցի կողմից։\nՏրված պատճառն է՝ <em>$2</em>։",
"virus-scanfailed": "զննման սխալ (կոդ $1)",
"virus-unknownscanner": "անծանոթ հակավիրուս՝",
"logouttext": "<strong>Դուք դուրս եկաք համակարգից։</strong>\n\nԻ նկատի ունեցեք, որ որոշ էջեր կարող են ցուցադրվել այնպես՝ ինչպես եթե դեռ համակարգում լինեիք մինչև որ չջնջեք ձեր զննարկիչի հիշապահեստը։",
+ "cannotlogoutnow-title": "Այժմ դուրս գալ անհնար է",
+ "cannotlogoutnow-text": "$1 օգտագործելիս դուրս գալն անհնար է:",
"welcomeuser": "Բարի գալո՜ւստ, $1",
"welcomecreation-msg": "Ձեր հաշիվն ստեղծված է։\nՉմոռանաք փոփոխել ձեր [[Special:Preferences|նախընտրությունները]]։",
"yourname": "Մասնակցի անուն՝",
"remembermypassword": "Հիշել իմ մուտքը այս դիտարկչում ($1 {{PLURAL:$1|օրից}} ոչ ավել ժամկետով)",
"userlogin-remembermypassword": "Մուտք գործած մնալ",
"userlogin-signwithsecure": "Օգտագործել անվտանգ միացում",
+ "cannotloginnow-title": "Այժմ դուրս գալ անհնար է",
+ "cannotloginnow-text": "$1 օգտագործելիս դուրս գալն անհնար է:",
"yourdomainname": "Ձեր դոմենը՝",
"password-change-forbidden": "Այս վիքիում չեք կարող փոխել գաղտնաբառ։",
"externaldberror": "Տեղի է ունեցել վավերացման արտաքին տվյալների բազայի սխալ, կամ դուք չունեք բավարար իրավունքներ ձեր արտաքին հաշվի փոփոխման համար։",
"wrongpassword": "Մուտքագրված գաղտնաբառը սխալ էր։ Խնդրում ենք կրկին փորձել։",
"wrongpasswordempty": "Մուտքագրված գաղտնաբառը դատարկ էր։ Խնդրում ենք կրկին փորձել։",
"passwordtooshort": "Գաղտնաբառը պետք է պարունակի առնվազն {{PLURAL:$1|1 սիմվոլ|$1 սիմվոլ}}։",
+ "passwordtoolong": "Ծածկագիրը չի կարող գերազանցել {{PLURAL:$1|1 նիշը|$1 նիշը}}:",
"password-name-match": "Գաղտնաբառը պետք է տարբեր լինել ձեր մասնակցի անունից։",
"password-login-forbidden": "Այս ծածկանվան և գաղտնաբառի օգտագործումն արգելված է",
"mailmypassword": "Փոխել գաղտնաբառը",
"noemailprefs": "Այս հնարավորության գործածման համար անհրաժեշտ է նշել էլ-փոստի հասցե։",
"emailconfirmlink": "Վավերացնել ձեր էլ-փոստի հասցեն",
"invalidemailaddress": "Նշված էլ-փոստի հասցեն անընդունելի է, քանի որ այն ունի անթույլատրելի ֆորմատ։ Խնդրում ենք նշել ճշմարիտ հասցե կամ այս դաշտը թողնել դատարկ։",
+ "cannotchangeemail": "Այս վիքիում մասնակցային հաշվի էլ.փոստի փոփոխությունն անհնար է:",
"emaildisabled": "Այս կայքը չի կարող ուղարկել էլ․ նամակներ։",
"accountcreated": "Հաշիվը ստեղծված է",
"accountcreatedtext": "[[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|քննարկում]]) մասնակցի հաշիվը ստեղծված է։",
"createaccount-title": "{{SITENAME}}. մասնակցային հաշվի ստեղծում",
"createaccount-text": "Ինչ-որ մեկը ստեղծել է «$2» անվանմամբ մասնակցային հաշիվ «$3» գաղտնաբառով {{SITENAME}} ($4) նախագծում՝ նշելով ձեր էլ-հասցեն։ Ձեզ անհրաժեշտ է մտնել համակարգ և փոխել գաղտնաբառը։\n\nԿարող եք անտեսել այս հաղորդագրությունը, եթե հաշիվը ստեղծվել է սխալմամբ։",
"login-throttled": "Դուք կատարել եք չափից շատ մուտքի փորձ։\nԽնդրում ենք սպասել $1 կրկին փորձելուց առաջ։",
+ "login-abort-generic": "Մուտք գործելը ձախողվեց: Մերժված է:",
+ "login-migrated-generic": "Ձեր մասնակցային հաշիվը տեղափոխվել է, և Ձեր մասնակցային անունն այլևս գոյություն չունի այս վիքիում:",
"loginlanguagelabel": "Լեզու՝ $1",
"pt-login": "Մուտք գործել",
"pt-login-button": "Մտնել",
"newpassword": "Նոր գաղտնաբառը.",
"retypenew": "Հաստատեք նոր գաղտնաբառը.",
"resetpass_submit": "Հաստատել գաղտնաբառը և մտնել համակարգ",
- "changepassword-success": "Ձեր գաղտնաբառը հաջողությամբ փոխված է։",
+ "changepassword-success": "Ձեր գաղտնաբառը փոփոխվեց։",
+ "botpasswords": "Բոտերի ծածկագրեր",
+ "botpasswords-disabled": "Բոտերի ծածկագրերն անջատված են:",
+ "botpasswords-existing": "Գոյություն ունեցող բոտային ծածկագրերը",
+ "botpasswords-createnew": "Ստեղծել նոր բոտային ծածկագիր",
+ "botpasswords-editexisting": "Խմբագրել առկա բոտային ծածկագիրը",
+ "botpasswords-label-appid": "Բոտի անուն՝",
+ "botpasswords-label-create": "Ստեղծել",
+ "botpasswords-label-update": "Թարմացնել",
+ "botpasswords-label-cancel": "Չեղարկել",
+ "botpasswords-label-delete": "Ջնջել",
+ "botpasswords-label-resetpassword": "Վերականգնել ծածկագիրը",
+ "botpasswords-label-restrictions": "Օգտագործման սահմանափակումներ:",
+ "botpasswords-label-grants-column": "Թույլատրված է",
+ "botpasswords-bad-appid": "\"$1\" բոտի անունն անթույլատրելի է:",
+ "botpasswords-created-title": "Բոտի ծածկագիրը ստեղծվել է",
+ "botpasswords-created-body": "$2 մասնակցի $1 բոտի համար բոտի ծածկագիրը ստեղծվել է:",
+ "botpasswords-updated-title": "Բոտի ծածկագիրը թարմացվել է",
+ "botpasswords-updated-body": "$2 մասնակցի $1 բոտի համար բոտի ծածկագիրը ստեղծվել է:",
+ "botpasswords-deleted-title": "Բոտի ծածկագիրը ջնջված է",
+ "botpasswords-deleted-body": "$2 մասնակցի $1 բոտի համար բոտի ծածկագիրը ջնջվել է:",
"resetpass_forbidden": "Գաղտնաբառը չի կարող փոխվել",
"resetpass-no-info": "Այս էջին ուղիղ դիմելու համար անհրաժեշտ է մտնել համակարգ։",
"resetpass-submit-loggedin": "Փոխել գաղտնաբառը",
"thursday": "ера",
"friday": "пӀаьраска",
"saturday": "шоатта",
- "sun": "К|и",
+ "sun": "КIиранди",
"mon": "Ор",
"tue": "Шин",
"wed": "Кха",
"october": "Ардарий\\АьрхIий бутт",
"november": "Лай чилла бутт",
"december": "Чан-тар бутт",
- "january-gen": "Ð\9dажгамÑ\81Ñ\85ой бетт",
+ "january-gen": "Ð\90гIой бетт",
"february-gen": "Саь-кур бетт",
"march-gen": "Муттхьол бетт",
"april-gen": "Тушоли бетт",
"oct": "Ардарий\\АьрхIий",
"nov": "Лай чилла",
"dec": "Чан-тар",
- "january-date": "Ð\9dажгамÑ\81Ñ\85ой $1",
+ "january-date": "Ð\90гIой бÑ\83Ñ\82Ñ\82 $1",
"february-date": "Саь-кур бутт $1",
"march-date": "Муттхьол $1",
"april-date": "Тушоли $1",
"period-am": "ДЦ",
"period-pm": "ДТ",
"pagecategories": "{{PLURAL:$1|1=Категори|Категореш}}",
- "category_header": "\"$1\" Катага чура оаг|онаш",
+ "category_header": "«$1» категори чура оагIонаш",
"subcategories": "Чуракатагаш",
"category-media-header": "\"$1\" Категори чура файлаш",
"category-empty": "''Укх катага чу цхьаккха оаг|онаш е паьлаш яц.''",
"category-article-count-limited": "Укх катага чу {{PLURAL:$1|1=$1 оаг|ув|$1 оаг|oнаш}}.",
"category-file-count": "{{PLURAL:$2|Укх катагори чу цаI мара файл яц.|{{PLURAL:$1|1=$1 файл хьахьокхаш я|$1 файл хьахьокхаш я}} укх категори $2 долачарeх.}}",
"category-file-count-limited": "Укх катага чу {{PLURAL:$1|1=$1 лурдар|$1 лурдараш}}.",
- "listingcontinuesabbrev": "д|ахо",
+ "listingcontinuesabbrev": "(дIахо)",
"index-category": "Д|ахьожама оаг|онаш",
"noindex-category": "Д|ахьожаманза оаг|онаш",
"broken-file-category": "Паьла хьожадергашца болхбеш йоаца оаг|онаш",
"permalink": "Даиман латташ йола хьожаярг",
"print": "Кепатохар",
"view": "Хьажар",
- "view-foreign": "Ð\9cазаоаг|он Ñ\87Ñ\83 $1 хьажа",
+ "view-foreign": "УкÑ\85 $1 Ñ\8fÑ\85 Ñ\81айÑ\82а Ñ\87Ñ\83 хьажа",
"edit": "Нийсде",
"edit-local": "Хувца локальни йоазонца сурт оттадар",
"create": "Хьаде",
"aboutsite": "{{grammar:genitive|{{SITENAME}}}} лаьца",
"aboutpage": "Project:Лоацам",
"copyright": "$1 чулоацамаца тIакхоачаш да.",
- "copyrightpage": "{{ns:project}}:ЯздаÑ\8cÑ\87Ñ\83нна бокÑ\8aо",
+ "copyrightpage": "{{ns:project}}:Ð\90вÑ\82оÑ\80а бокÑ\8aонаÑ\88",
"currentevents": "ХӀанзара хинна хIамаш",
"currentevents-url": "Project:ХӀанзара хинна хIамаш",
"disclaimers": "Бехктокхам хьацаэцар",
"disclaimerpage": "Project:Бехктокхам хьацаэцар",
- "edithelp": "Хувцама гӀо",
+ "edithelp": "Хувцам бара новкъостал",
"helppage-top-gethelp": "ГӀо",
"mainpage": "Кертера оагӀув",
"mainpage-description": "Кертера оагӀув",
"cannotdelete-title": "ОагIув дIаяккха йиш яц \"$1\"",
"badtitle": "Мегаш йоаца цӀи",
"badtitletext": "Езаш йола оагӀува цӀи нийса яц, яьсса я, е харцахь я меттаюкъара цIи е интервики цӀи. Иштта, цӀера юкъе оттаде мегаш доаца хьаракъаш нийсаденна хила тарлуш да.",
- "viewsource": "Ð\91IаÑ\80гÑ\82аÑ\81Ñ\81ам",
+ "viewsource": "Ð¥Ñ\8cажаÑ\80",
"actionthrottled": "Сихален овзамал",
"protectedpagetext": "Ер оаг|ув къайла я хувцамаш дергдоацаш е кхы дола х|амдараш.",
"virus-unknownscanner": "довзашдоаца мазаундохьалург:",
"userlogin-yourname-ph": "Чуйоалае доакъашхочун цӀи",
"createacct-another-username-ph": "Чуйоалае доакъашхочун цӀи",
"yourpassword": "КъайладIоагӀа:",
+ "userlogin-yourpassword": "Пароль",
"yourpasswordagain": "КъайладIоагӀа юха Ӏоязаде:",
"remembermypassword": "(укх $1 {{PLURAL:$1|1=ден|деношкахь}}) мара са чувалара/чуялара дагалоаца дезаш дац",
"yourdomainname": "Шун цӀеноагӀув:",
"summary": "Хувцамий белгалдер",
"subject": "БӀагал/кортале:",
"minoredit": "ЗӀамига хувцам",
- "watchthis": "УкÑ\85 оагÓ\80Ñ\83ва Ñ\82еÑ\80кам бе",
- "savearticle": "ОагӀув хьаязъе",
+ "watchthis": "Ð\97ем бе Ñ\83кÑ\85 оагÓ\80он",
+ "savearticle": "ОагӀув дIаязъе",
"preview": "Хьалхе бӀаргтассар",
- "showpreview": "Хьалхе бӀаргтaссам",
+ "showpreview": "Хьалххе хьажар",
"showdiff": "Даь хувцамаш",
"anoneditwarning": "Зем хила! Шо кхы чудаьннадац. Шун IP-моттиг укх хийца оагӀув искаречу дӀаяздаь хургья.",
"summary-preview": "Лоацам ба:",
"templatesused": "Укх бӀаргоагӀувни оагӀув тӀа лелаяь {{PLURAL:$1|1=Куцкеп|Куцкепаш}}:",
"templatesusedpreview": "Хьалхе бӀаргтассама оагӀув тӀа леладеш дола {{PLURAL:$1|1=Куцкеп|Куцкепаш}}:",
"template-protected": "(лорадаь да)",
- "template-semiprotected": "(дакъа-лорам)",
+ "template-semiprotected": "(цхьа долча даькъе гIо оттадаь да)",
"hiddencategories": "Ер оагӀув укх {{PLURAL:$1|1=къайла цатегаца|къайла цатегашца}} дакъа лоаца:",
"permissionserrorstext-withaction": "$2 де бокъо яц {{PLURAL:$1|1=из бахьан долаш|из бахьанаш долаш}}:",
"recreate-moveddeleted-warn": "'''Зем бе! Шо хьалххе дIайоаккхаш хинна оагӀув хьае гӀерта.'''\n\nХьажа, бокъонцахь езаш йолга.\nКӀалхагIа укх оагӀуви дӀадаккхами цӀи хувцами тептараш хьекха да.",
"previousrevision": "← Xьалхарча",
"nextrevision": "ТIехьайоагIараш →",
"currentrevisionlink": "ХIанзара верси",
- "cur": "хӀанз.",
+ "cur": "хӀанза.",
"next": "тӀехь.",
- "last": "хьалх.",
+ "last": "хьалха.",
"page_first": "хьалхара",
"page_last": "тӀехьара",
"histlegend": "Кхетам: (хӀанз.) = хӀанза йолачунна бӀаргоагӀувни хьакъоастам ба; (хьалх.) = хьалха хинначунна бӀаргоагӀувни хьакъоастам ба; '''зӀ''' = зӀамига хьахувцам ба.",
"searchresults": "Лахар чакхдоалаш корадаьр",
"searchresults-title": "«$1» лахар",
"notextmatches": "ОагIувнаша яздамий вIашагIакхетараш дац",
- "prevn": "{{PLURAL:$1|хьалхйоагlар $1|хьалхйоагlараш $1|хьалхйоагlараш $1}}",
+ "prevn": "{{PLURAL:$1|1=хьалхайогIар|хьалхайогIараш}} $1",
"nextn": "{{PLURAL:$1|1=тIехьайоагIар|тIехьайоагIараш}} $1",
"prevn-title": "{{PLURAL:$1|1=$1 хьалхара йоазув|$1 хьалхара йоазувнаш}}",
- "nextn-title": "{{PLURAL:$1|1=$1 тIехьара йоазув|$1 тIехьара йоазувнаш}}",
+ "nextn-title": "{{PLURAL:$1|ТIадоагIа $1 яздар|ТIадоагIа $1 яздараш}}",
"shown-title": "Хьóкха $1 {{PLURAL:$1|даь йоазо|даь йоазонаш}} укх оáгIувна тIа",
- "viewprevnext": "($1 {{int:pipe-separator}} $2) ($3) хьажа",
+ "viewprevnext": "ДIахьажа ($1 {{int:pipe-separator}} $2) ($3)",
"searchmenu-exists": "'''Укх масса-хьахьоадайтамач ер оаг|ув \"[[:$1]]\" я'''",
"searchmenu-new": "<strong>Кхолла оагIув «[[:$1]]» укх вики-проекте!</strong>\n{{PLURAL:$2|0=|Иштта хьажа хьай лийха оагIувнага.|Иштта хьажа хьай лахара хьахиннарашка.}}",
"searchprofile-articles": "Кертера оагIонаш",
"searchprofile-advanced-tooltip": "Iочуязаяь цIераренашках лаха",
"search-result-size": "$1 ({{PLURAL:$2|$2 дош|$2 дешаш}})",
"search-result-category-size": "{{PLURAL:$1|1=$1 дакъа|$1 дакъаш}} ({{PLURAL:$2|1=$2 кIалцатег|$2 кIалцатегаш}}, {{PLURAL:$3|1=$3 паьла|$3 паьлий}})",
- "search-redirect": "($1 дехьачуяьккхар)",
+ "search-redirect": "(дIа-сахьожадар $1 тIара)",
"search-section": " (дакъа $1)",
"search-suggest": "Хьона эшар ер хила мега: $1",
"search-interwiki-caption": "Гаргалон хьахьоадайтамаш",
"search-relatedarticle": "шоайл дола",
"searchrelated": "гаргара",
"searchall": "деррига",
- "search-nonefound": "Ð\94IаÑ\85аÑ\82Ñ\82ама нийÑ\81амаÑ\88 корадаьдац.",
+ "search-nonefound": "Ð¥Ñ\8cа деÑ\85аÑ\80 даÑ\80а вIаÑ\88и нийÑ\81а доагIаÑ\88 Ñ\85илаÑ\80 корадаьдац.",
"powersearch-legend": " Доккха тахкар",
"powersearch-ns": " ЦIерий аренашкахь лахар",
"powersearch-toggleall": "Деррига",
"nchanges": "$1 {{PLURAL:$1|1=хувцам|хувцамаш}}",
"enhancedrc-history": "истори",
"recentchanges": "Керда хувцамаш",
- "recentchanges-legend": "Ð\9aеÑ\80да Ñ\85Ñ\83вÑ\86амий оттамаш",
+ "recentchanges-legend": "Ð\9aеÑ\80да Ñ\85Ñ\83вÑ\86амай оттамаш",
"recentchanges-summary": "КIалхагIа лоарамий доаламе тIехьара оагIувний хувцамаш дIаязадаь да {{grammar:genitive|{{SITENAME}}}}.",
"recentchanges-feed-description": "Укх ларамца тIехьара массахувцамашт теркам бе.",
"recentchanges-label-newpage": "Укх хувцамаца керда оагIув кхелла хиннай",
"recentchanges-label-minor": "Ер зIамига хувцам ба",
"recentchanges-label-bot": "Ер хувцам ботаца баь ба",
- "recentchanges-label-unpatrolled": "Ð\95Ñ\80 Ñ\85Ñ\83вÑ\86ам Ñ\88ий моÑ\82Ñ\82иге кÑ\85Ñ\8b дIадеÑ\85Ñ\8cаÑ\8fÑ\8cккÑ\85аÑ\8fц.",
+ "recentchanges-label-unpatrolled": "УкÑ\85 Ñ\85Ñ\83вÑ\86ама Ñ\85Iанза Ñ\86Ñ\85Ñ\8cанно Ñ\85а (паÑ\82Ñ\80Ñ\83лиÑ\80оваÑ\82Ñ\8c) даÑ\8c дац.",
"recentchanges-label-plusminus": "байташкахь боарам хувцар",
"recentchanges-legend-heading": "<strong>Легенда: </strong>",
- "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (хьажа иштта [[Special:NewPages|керда оагIувнашка]])",
+ "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (хьажа иштта [[Special:NewPages|керда оагIонашка]])",
"rcnotefrom": "КIалхагIа хувцамаш хьахьекха я <strong>$2</strong> денза (<strong>$1</strong> кхачалца).",
- "rclistfrom": "$3 $2 тIара хувцамаш хьахьокха",
- "rcshowhideminor": "$1 зIамига хувцамаш",
+ "rclistfrom": "$3 $2 денза даь хувцамаш хьахьокха",
+ "rcshowhideminor": "$1 зIамига нийсдараш",
"rcshowhideminor-hide": "Къайлдаккха",
"rcshowhidebots": "$1 боташ",
"rcshowhidebots-show": "Хьахьокха",
"rcshowhideliu": "$1 бовзийтарчара доакъашхой",
- "rcshowhideliu-hide": "Ð\9aÑ\8aайлдаккха",
- "rcshowhideanons": "$1 цIияьккханза дакъалаьцархой",
+ "rcshowhideliu-hide": "Ð\9aÑ\8aайлабаха",
+ "rcshowhideanons": "$1 цIияккханза доакъашхой",
"rcshowhideanons-show": "Хьахьокха",
- "rcshowhideanons-hide": "Ð\9aÑ\8aайлдаккха",
+ "rcshowhideanons-hide": "Ð\9aÑ\8aайлабаха",
"rcshowhidepatr": "$1 теркам даь хувцамаш",
- "rcshowhidemine": "$1 Ñ\81ай Ñ\85Ñ\83вÑ\86амаш",
+ "rcshowhidemine": "$1 Ñ\85Ñ\8cа нийÑ\81даÑ\80аш",
"rcshowhidemine-hide": "Къайлдаккха",
- "rclinks": "$2 динах<br />$3 $1 хинна тIехьара хувцамаш хьахьокха",
+ "rclinks": "Хьахьокха $2 дийнахь даь хинна тIеххьара $1 хувцамаш\n<br />$3",
"diff": "башхало",
"hist": "истори",
"hide": "Къайлдаккха",
"recentchangeslinked": "Гаргалон хувцамаш",
"recentchangeslinked-feed": "Гаргалон хувцамаш",
"recentchangeslinked-toolbox": "Укханца вIашагIдувзаденна хувцамаш",
- "recentchangeslinked-title": "$1ца хьалаьца хувцамаш",
+ "recentchangeslinked-title": "$1ца вIашидувзаденна хувцамаш",
"recentchangeslinked-summary": "Ер, Iинк яь йола оагIув (е укх цатегачу чуйоагIараш), дукха ха йоацаш хьийца оагIувнашкий дагарле я.\n[[Special:Watchlist|Шун теркама дагарленашках]] чуйоагIа оагIувнаш '''белгалаяь я'''.",
"recentchangeslinked-page": "ОагIува цIи",
"recentchangeslinked-to": "ОагIувнаш тIа хувцамаш хьахьокха, хьахьекха йола оагIув тIа Iинкаш еш йола.",
"invert": "Харжар юхадаккха",
"namespace_association": "Ювзаенна мотт",
"blanknamespace": "(Кертера)",
- "contributions": "{{GENDER:$1|Доакъашхочунна}} къахьегам",
+ "contributions": "{{GENDER:$1|Доакъашхочун}} къахьегам",
"contributions-title": "$1 дакъалаьцархочунна къахьегам",
"mycontris": "Са къахьегам",
+ "anoncontribs": "Къахьегам",
"contribsub2": "{{GENDER:$3|$1}} ($2) баь болх",
"uctop": "(xIанзара)",
"month": "Укх бетт (кхы хьалхагIа)",
"thumbnail-more": "Доккха де",
"thumbnail_error": "ЗIамигасуртанчий кхеллама гIалат: $1",
"import-upload-filename": "ПаьлацIи:",
- "tooltip-pt-userpage": "Дакъалаьцархочунна оагIув",
+ "tooltip-pt-userpage": "{{GENDER:|Хьа}} доакъашхочунна оагIув",
"tooltip-pt-mytalk": "Шун дувцамий оагIув",
- "tooltip-pt-preferences": "Шун оттамаш",
+ "tooltip-pt-preferences": "{{GENDER:|Хьа оттамаш}}",
"tooltip-pt-watchlist": "ОоагIувна дагарле, шо бIаргалокхаш йола",
"tooltip-pt-mycontris": "Шун хувцамаш",
"tooltip-pt-login": "Укхаза хьай цIи аьле чувала/яла йиша я, амма из параз дац",
"tooltip-ca-talk": "ОагIон чулоацам дувца оттадар",
"tooltip-ca-edit": "Нийсъе ер оагIув",
"tooltip-ca-addsection": "Керда дакъа хьаде",
- "tooltip-ca-viewsource": "Ð\95Ñ\80 оагIÑ\83в Ñ\85Ñ\83вÑ\86амаÑ\85 лоÑ\80аÑ\8fÑ\8c Ñ\8f, амма Ñ\88Ñ\83н Ñ\86Ñ\83нна гIÑ\83вамага Ñ\85Ñ\8cажа бокъо я.",
+ "tooltip-ca-viewsource": "Ð\95Ñ\80 оагIÑ\83в Ñ\85Ñ\83вÑ\86амбаÑ\80аÑ\85 гIо Ñ\82еÑ\85а (лоÑ\80аÑ\8f) Ñ\8f, амма Ñ\86Ñ\83нна дIадолалÑ\83 Ñ\82екÑ\81Ñ\82ага Ñ\85Ñ\8cажа а, из Ñ\82IеÑ\80Ñ\85Ñ\8cаÑ\8fзÑ\8aе а бокъо я.",
"tooltip-ca-history": "Укх оагIон даь хувцамаш тIа дола тептар",
"tooltip-ca-protect": "Eр оагIув лорае",
"tooltip-ca-delete": "Ер оагIув дIаяькха",
"tooltip-ca-nstab-help": "ГӀон оагIув",
"tooltip-ca-nstab-category": "Категорий оагӀув",
"tooltip-minoredit": "Ер хувцар башха доаца санна белгалде",
- "tooltip-save": "Ð¥Ñ\83вÑ\86амаÑ\88 кÑ\85оде",
- "tooltip-preview": "Ð\9eагIÑ\83в Ñ\82Iа Ñ\85Ñ\8cалÑ\85е бIаÑ\80гÑ\82аÑ\81Ñ\81аÑ\80, деÑ\85аÑ\80 да, оагIÑ\83в дIаÑ\8fзÑ\8aелаÑ\8cÑ\85, Ñ\86Ñ\83н Ñ\82еÑ\80кам бе.",
- "tooltip-diff": "Яздам Ñ\82Iа Ñ\8fÑ\8c йола хувцамаш хьахьокха",
+ "tooltip-save": "Ð¥Ñ\8cай Ñ\85Ñ\83вÑ\86амаÑ\88 лоÑ\80адеÑ\88 дIаÑ\8fзаде",
+ "tooltip-preview": "Ð\94еÑ\85аÑ\80 да, оагÓ\80Ñ\83в лоÑ\80аеÑ\88Ñ\8c дIаÑ\8fзаелеÑ\85Ñ\8c из миÑ\88Ñ\82а Ñ\8f Ñ\82аÑ\85ка Ñ\85Ñ\8cалÑ\85Ñ\85е Ñ\85Ñ\8cажаÑ\80аÑ\85 пайда Ñ\8dÑ\86аÑ\88!",
+ "tooltip-diff": "Ð\94IадолалÑ\83 Ñ\82екÑ\81Ñ\82аÑ\86а даÑ\8c хувцамаш хьахьокха",
"tooltip-compareselectedversions": "Укх оагIувни шин доржамаш тIа юкъера хувцамаш зе.",
"tooltip-watch": "Ер оагIув теркам беча каьхата тIа яькха",
"tooltip-rollback": "Цкъа пIелг тоIабе дIадаккха тIехьара редакторас даь хувцамаш",
"tooltip-undo": "Даь хувцар дIадаьккха, хьалххе хьажар хьахьокха, дIадаккхара бахьан Iочуязаде аьттув болаш.",
- "tooltip-summary": "Лоаца чулоацам Iочуязаде",
+ "tooltip-summary": "Лоаца йоазонца сурт оттадар Iочуязаде",
"pageinfo-toolboxlink": "ОагIонах бола хоам",
"previousdiff": "← Хьалхара нийсдар",
"nextdiff": "ТIайоагIа нийсъар",
"ilsubmit": "Хьалáха",
"bad_image_list": "Бустам цу тайпара хила беза:\n\nДагарлен хьаракъаш мара лоарх|аш хургьяц (укх тамагIалгацa * дувлашду мугIараш).\nМугIарен хьалхара Iинк, сурт Iоттае пурам доаца Iинка, хила еза. \nЦу мугIара тIехьайоагIа Iинкаш, арадаккхар мо лоарх|аш хургья, вешта аьлча, йоазувашка чуIоттаде мегаш дола сурт санна ларх|а мега.",
"metadata": "Метахоамаш",
- "metadata-help": "Ð\9fаÑ\8cлаÑ\81 Ñ\87Ñ\83лоаÑ\86а, кÑ\85Ñ\8bдола Ñ\85IамаÑ\88, Ñ\82аÑ\8cÑ\80аÑ\85Ñ\8cа Ñ\81Ñ\83Ñ\80Ñ\82доакÑ\85аÑ\80гÑ\86а е Ñ\82IагIолладоакÑ\85аÑ\80гÑ\86а Ñ\87Ñ\83дакÑ\85аÑ\88 дола. Ð¥Ñ\8cаÑ\8fÑ\8c паÑ\8cл, гIалаÑ\82аÑ\85Ñ\8c мÑ\83кÑ\8aадаÑ\8cкÑ\85а Ñ\85инна дале, Ñ\85Ñ\8cаÑ\85Ñ\8cокÑ\85аÑ\88 дола Ñ\81Ñ\83Ñ\80Ñ\82, деÑ\80Ñ\80ига Ñ\85IамаÑ\88 Ñ\87Ñ\83лоаÑ\86аÑ\80гдаÑ\86.",
+ "metadata-help": "ФайлаÑ\81 кÑ\85Ñ\8bдола Ñ\85оамаÑ\88 Ñ\87Ñ\83лоаÑ\86а, Ñ\86иÑ\84Ñ\80овой Ñ\81Ñ\83Ñ\80Ñ\82доакÑ\85аÑ\80го е Ñ\81канеÑ\80о Ñ\82IаÑ\82оÑ\85аÑ\88 дола. Ð\9dагаÑ\85Ñ\8cа Ñ\84айл Ñ\87Ñ\83Ñ\8fкÑ\85аÑ\87Ñ\83л Ñ\82IеÑ\85Ñ\8cа Ñ\85ийÑ\86а Ñ\85инна дале, Ñ\86Ñ\85Ñ\8cаÑ\86Ñ\86айола паÑ\80амеÑ\82Ñ\80аÑ\88 Ñ\85IанзаÑ\80а Ñ\81Ñ\83Ñ\80Ñ\82а Ñ\82аÑ\80а йоаÑ\86аÑ\88 Ñ\85ила мегаÑ\88 Ñ\8f.",
"metadata-expand": "Кхыдола хIамаш хьахьокха",
"metadata-collapse": "Кхыдола хIамаш къайладаккха",
"metadata-fields": "Укх списке дагaрадаь суртай метахоамай йистош, хьахьекха хургда суртан оагIон тIа, метахоамай таблица хьоарчая йолаш. Юхедиса йистош къайла хургда.\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-artist": "Яздархо",
"exif-exifversion": "Верси Exif",
"exif-colorspace": "Басара аре",
- "exif-pixelxdimension": "СÑ\83Ñ\80Ñ\82а Ñ\88ерал",
+ "exif-pixelxdimension": "СÑ\83Ñ\80Ñ\82а Ñ\88орал",
"exif-pixelydimension": "Сурта лакхал",
"exif-datetimedigitized": "Оцифровк яь таьрахь а, ха а",
"exif-writer": "Яздама да",
"watchlisttools-view": "Дагарчера оагIувнаш тIа хувцамаш",
"watchlisttools-edit": "Дагарче хьажа/хувца",
"watchlisttools-raw": "Яздам мо хувца",
+ "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|дувца оттадар]])",
"duplicate-defaultsort": "Зем бе. Сатийна дIа-хьа хьоржама доагI \"$2\" хьалхара сатийна дIа-хьа хьоржама доагI \"$1\" хьахьоржа.",
"version": "Доржам",
"version-specialpages": "ГIулакхий оагIувнаш",
"recentchangeslinked-page": "ページ名:",
"recentchangeslinked-to": "このページへのリンク元での変更の表示に切り替え",
"recentchanges-page-added-to-category": "[[:$1]]をカテゴリに追加",
- "recentchanges-page-added-to-category-bundled": "[[:$1]]ã\81¨ä»\96[[Special:WhatLinksHere/$1|{{PLURAL:$2|1ã\83\9aã\83¼ã\82¸|$2ã\83\9aã\83¼ã\82¸}}]]ã\82\92ã\82«ã\83\86ã\82´ã\83ªã\81«è¿½å\8a ",
+ "recentchanges-page-added-to-category-bundled": "[[:$1]]ã\82\92ã\82«ã\83\86ã\82´ã\83ªã\81«è¿½å\8a ã\80\82[[Special:WhatLinksHere/$1|ã\81\93ã\81®ã\83\9aã\83¼ã\82¸ã\81¯ä»\96ã\81®ã\83\9aã\83¼ã\82¸ã\81«å\90«ã\81¾ã\82\8cã\81¦ã\81\84ã\81¾ã\81\99ã\80\82]]",
"recentchanges-page-removed-from-category": "[[:$1]]をカテゴリから除外",
"recentchanges-page-removed-from-category-bundled": "[[:$1]]と他 [[Special:WhatLinksHere/$1|{{PLURAL:$2|1ページ|$2ページ}}]]をカテゴリから除外",
"autochange-username": "メディアウィキ自動変更",
"talkpage": "Rembug kaca iki",
"talkpagelinktext": "gunem",
"specialpage": "Kaca mirunggan",
- "personaltools": "Piranti pribadhi",
+ "personaltools": "Piranti pribadi",
"articlepage": "Deleng kaca isi",
"talk": "Rembug",
"views": "Praèn",
"permissionserrorstext": "Panjengan ora kagungan idin kanggo nglakoni sing panjenengan gayuh amerga {{PLURAL:$1|alesan|alesan-alesan}} iki:",
"permissionserrorstext-withaction": "Panjenengan ora duwé hak aksès kanggo $2, amarga {{PLURAL:$1|alasan|alasan}} ing ngisor iki:",
"recreate-moveddeleted-warn": "'''Pènget: Panjenengan gawé manèh sawijining kaca sing wis tau dibusak.'''\n\nMangga digagas manèh apa pantes nerusaké nyunting kaca iki.\nIng ngisor iki kapacak log pambusakan lan pamindhahan saka kaca iki:",
- "moveddeleted-notice": "Kaca iki wis dibusak.\nCathetan busakan lan lihlihan kaca ana ing ngisor minangka rujukan.",
+ "moveddeleted-notice": "Kaca iki wis dibusak.\nCathetan busakan lan lih-lihan kaca ana ing ngisor minangka rujukan.",
"log-fulllog": "Deleng cathetan wutuh",
"edit-hook-aborted": "Suntingan dibatalaké déning kait parser\nTanpa ana katrangan.",
"edit-gone-missing": "Ora bisa nganyari kaca.\nKatoné kaca iki wis dibusak.",
"protect-otherreason": "Alesan liya/tambahan:",
"protect-otherreason-op": "Alesan liya",
"protect-dropdown": "*Alesan umum pangreksan\n** Vandalisme makaping-kaping\n** Spam makaping-kaping\n** Perang suntingan\n** Kaca kerep disunting",
- "protect-edit-reasonlist": "Nyunting alesan reksan",
+ "protect-edit-reasonlist": "Mbesut jalaraning pangreksa",
"protect-expiry-options": "1 jam:1 hour,1 dina:1 day,1 minggu:1 week,2 minggu:2 weeks,1 sasi:1 month,3 sasi:3 months,6 sasi:6 months,1 taun:1 year,tanpa wates:infinite",
"restriction-type": "Pangreksan:",
"restriction-level": "Tingkatan pambatesan:",
"linkshere": "Kaca-kaca iki nduwé pranala menyang '''[[:$1]]''':",
"nolinkshere": "Ora ana kaca sing nduwé pranala menyang '''[[:$1]]'''.",
"nolinkshere-ns": " Ora ana kaca sing nduwé pranala menyang '''[[:$1]]''' ing bilik jeneng sing kapilih.",
- "isredirect": "kaca lihlihan",
+ "isredirect": "kaca lih-lihan",
"istemplate": "karo cithakan",
"isimage": "pranala berkas",
"whatlinkshere-prev": "{{PLURAL:$1|sadurungé|$1 sadurungé}}",
"movepage-page-moved": "Kaca $1 wis dipindhah menyang $2.",
"movepage-page-unmoved": "Kaca $1 ora bisa dialihaké menyang $2.",
"movepage-max-pages": "Paling akèh $1 {{PLURAL:$1|kaca|kaca}} wis dialihaké lan ora ana manèh sing bakal dialihaké sacara otomatis.",
- "movelogpage": "Cathetan lihlihan",
+ "movelogpage": "Cathetan lih-lihan",
"movelogpagetext": "Ing ngisor iki kapacak log pangalihan kaca.",
"movesubpage": "{{PLURAL:$1|Anak-kaca|Anak-kaca}}",
"movesubpagetext": "Kaca iki nduwèni $1 {{PLURAL:$1|anak-kaca|anak-kaca}} kaya kapacak ing ngisor.",
"feedback-cancel": "Batal",
"feedback-close": "Rampung",
"feedback-error1": "Kasalahan: Asil ora dikenal saka API",
- "feedback-error2": "Kasalahan: Gagal nyunting",
+ "feedback-error2": "Cacad: Gagal mbesut",
"feedback-error3": "Kasalahan: Ora ana tanggepan saka API",
"feedback-message": "Layang:",
"feedback-subject": "Jejer:",
"minoredit": "Dëst ass eng kleng Ännerung",
"watchthis": "Dës Säit iwwerwaachen",
"savearticle": "Säit späicheren",
+ "publishpage": "Säit publizéieren",
"preview": "Kucken ouni ofzespäicheren",
"showpreview": "Kucken ouni ofzespäicheren",
"showdiff": "Ännerunge weisen",
"tooltip-ca-nstab-category": "Kategoriesäit weisen",
"tooltip-minoredit": "Dës Ännerung als kleng markéieren.",
"tooltip-save": "Ännerunge späicheren",
+ "tooltip-publish": "Är Ännerunge publizéieren",
"tooltip-preview": "Kuckt är Ännerungen ouni ofzespäicheren, Benotzt dëst w.e.g. virum späicheren!",
"tooltip-diff": "Weist wéi eng Ännerungen Dir beim Text gemaach hutt.",
"tooltip-compareselectedversions": "D'Ënnerscheeder op dëser Säit tëscht den zwou gewielte Versioune weisen.",
"minoredit": "Chisto è nu cagnamiénto piccerillo",
"watchthis": "Tiene d'uocchio sta paggena",
"savearticle": "Sarva 'a paggena",
+ "publishpage": "Pubbreca paggena",
"preview": "Anteprimma",
"showpreview": "Vire anteprimma",
"showdiff": "Fa veré 'e cagnamiente",
"userpage-userdoesnotexist": "'O cunto utente \"<nowiki>$1</nowiki>\" nun è riggistrato. Cuntrolla ca si buò overo crià o cagnà sta paggena.",
"userpage-userdoesnotexist-view": "'O cunto utente \"$1\" nun è riggistrato.",
"blocked-notice-logextract": "St'utente è bloccato mò.\nL'urdemo elemento d' 'o riggistro 'e blocche è ripurtato ccà abbascio p'avé nu riferimento:",
- "clearyourcache": "'''Nota:''' aroppo sarvate putisse necessità 'e pulezzà 'a caché d' 'o navigatóre pe' vedé 'e cagnamiente. \n*'''Firefox / Safari''': sprémme 'o buttóne maiuscole e ffà clic ncopp'a ''Recarreca'', o pure spremme ''Ctrl-F5'' o ''Ctrl-R'' (''⌘-R'' ncopp'a Mac)\n*'''Google Chrome''': spremme ''Ctrl-Shift-R'' (''⌘-Shift-R'' ncopp'a nu Mac)\n*'''Internet Explorer''': spremme 'o buttóne ''Ctrl'' pe' tramente ca faie click ncopp'a ''Refresh'', o pure spremmere ''Ctrl-F5''\n*'''Opera''': sbacanta tutt' 'a cache addò menu ''Strumiente → Preferenze''",
+ "clearyourcache": "<strong>Nota:</strong> aroppo sarvate putisse necessità 'e pulezzà 'a caché d' 'o navigatóre pe' vedé 'e cagnamiente. \n*<strong>Firefox / Safari</strong>: sprémme 'o buttóne maiuscole e ffà clic ncopp'a ''Recarreca'', o pure spremme ''Ctrl-F5'' o ''Ctrl-R'' (''⌘-R'' ncopp'a Mac)\n*<strong>Google Chrome''': spremme ''Ctrl-Shift-R'' (''⌘-Shift-R'' ncopp'a nu Mac)\n*<strong>Internet Explorer</strong>: spremme 'o buttóne ''Ctrl'' pe' tramente ca faie click ncopp'a ''Refresh'', o pure spremmere ''Ctrl-F5''\n* <strong>Opera:</strong> Vaje addò 'o <em>Menu → Mpustaziune</em> (<em>Opera → Mpustaziune</em> ncopp' 'o Mac) e po' ncopp'a <em>Privacy & sicurezza → Pulezza date d' 'o browser → Immaggene e file d' 'a cache</em>.",
"usercssyoucanpreview": "'''Cunziglio:''' spremme 'o buttone 'Vide anteprimma' pe' pruvà 'o CSS nuovo apprimma d' 'o sarvà.",
"userjsyoucanpreview": "'''Cunziglio:''' spremme 'o buttone 'Vide anteprimma' pe' pruvà 'o JavaScript nuovo apprimma d' 'o sarvà.",
"usercsspreview": "'''Arricuordate ca chest'è sulamente n'anteprimma p' 'o CSS perzunale. 'E cagnamiente nun so' state ancora sarvate!'''",
"tooltip-ca-nstab-category": "Vere a paggena d\"a categurìa",
"tooltip-minoredit": "Rénne chìsto cagnamiénto cchiù ppiccirìllo.",
"tooltip-save": "Sàrva 'e cagnamiénte.",
+ "tooltip-publish": "Pubbreca 'e cagnamiente vuoste",
"tooltip-preview": "Primma 'e sarvà, vìre primma chille ca hê cagnàte!",
"tooltip-diff": "Fà vedé 'e cagnamiente c'avite fatto ô testo",
"tooltip-compareselectedversions": "Fà vedé 'e differenze nfra tutt' 'e dduje verziune scigliute 'e sta paggena",
"wantedfiles": "Niet-bestaande bestanden met koppelingen",
"wantedfiletext-cat": "De volgende bestanden worden gebruikt maar bestaan niet. Bestanden van externe repositories kunnen zijn opgenomen in de lijst, ondanks dat ze bestaan. Dergelijke vals positieven worden <del>doorgehaald weergegeven</del>. Pagina's die niet-bestaande bestanden insluiten staan op de pagina [[:$1]].",
"wantedfiletext-cat-noforeign": "De volgende bestanden zijn in gebruik maar bestaan niet. Daarnaast staan pagina's met niet-bestaande bestanden op [[:$1]].",
- "wantedfiletext-nocat": "De volgende bestanden worden gebruikt maar bestaan niet. Bestanden van externe repositories kunnen zijn opgenomen in de lijst, ondanks dat ze bestaan. Dergelijke vals positieven worden <del>doorgehaald weergegeven</del>.",
+ "wantedfiletext-nocat": "De volgende bestanden worden gebruikt maar bestaan niet. Bestanden van externe repositories kunnen zijn opgenomen in de lijst, ondanks dat ze bestaan. Dergelijke valse positieven worden <del>doorgehaald weergegeven</del>.",
"wantedfiletext-nocat-noforeign": "De volgende bestanden zijn in gebruik maar bestaan niet.",
"wantedtemplates": "Niet-bestaande sjablonen met koppelingen",
"mostlinked": "Pagina's waar het meest naar verwezen wordt",
"randomrootpage": "Losowa strona (bez podstron)",
"log-action-filter-block": "Rodzaj blokady:",
"log-action-filter-delete": "Rodzaj usunięcia:",
+ "log-action-filter-patrol": "Rodzaj patrolu:",
"log-action-filter-protect": "Rodzaj zabezpieczenia:",
+ "log-action-filter-rights": "Typ zmiany uprawień",
"log-action-filter-upload": "Rodzaj przesłanych:",
"log-action-filter-all": "Wszystkie",
"log-action-filter-block-block": "Zablokowanie",
"log-action-filter-managetags-delete": "Usunięcie znacznika",
"log-action-filter-managetags-activate": "Aktywacja znacznika",
"log-action-filter-managetags-deactivate": "Deaktywacja znacznika",
+ "log-action-filter-patrol-patrol": "Ręczny",
+ "log-action-filter-patrol-autopatrol": "Automatyczny",
"log-action-filter-protect-protect": "Zabezpieczenie",
"log-action-filter-protect-modify": "Zmiana zabezpieczenia",
"log-action-filter-protect-unprotect": "Odbezpieczenie",
+ "log-action-filter-rights-rights": "Ręczna zmiana",
+ "log-action-filter-rights-autopromote": "Automatyczna zmiana",
"log-action-filter-upload-upload": "Nowe przesłane",
"log-action-filter-upload-overwrite": "Przesłane ponownie"
}
"api-error-nomodule": "API error message that can be used for client side localisation of API errors.",
"api-error-ok-but-empty": "API error message that can be used for client side localisation of API errors.",
"api-error-overwrite": "API error message that can be used for client side localisation of API errors.",
+ "api-error-ratelimited": "API error message that can be used for client side localisation of API errors.",
"api-error-stashfailed": "API error message that can be used for client side localisation of API errors.",
"api-error-publishfailed": "API error message that can be used for client side localisation of API errors.",
"api-error-stasherror": "API error message that can be used for client side localisation of API errors.",
"userrights-changeable-col": "Grupuri pe care le puteți schimba",
"userrights-unchangeable-col": "Grupuri pe care nu le puteți schimba",
"userrights-conflict": "Conflict al schimbării drepturilor de utilizator! Reverificați și confirmați-vă modificările.",
- "userrights-removed-self": "V-ați eliminat cu succes propriile drepturi. Ca urmare, nu mai puteți accesa această pagină.",
+ "userrights-removed-self": "V-ați eliminat propriile drepturi. Ca urmare, nu mai puteți accesa această pagină.",
"group": "Grup:",
"group-user": "Utilizatori",
"group-autoconfirmed": "Utilizatori autoconfirmați",
"special-characters-group-ipa": "AFI",
"special-characters-group-symbols": "Simboluri",
"special-characters-group-greek": "Greacă",
+ "special-characters-group-greekextended": "Greacă extinsă",
"special-characters-group-cyrillic": "Chirilică",
"special-characters-group-arabic": "Arabă",
"special-characters-group-arabicextended": "Arabă extinsă",
"minoredit": "manjše urejanje",
"watchthis": "Opazuj članek",
"savearticle": "Shrani stran",
+ "publishpage": "Objavi stran",
"preview": "Predogled",
"showpreview": "Prikaži predogled",
"showdiff": "Prikaži spremembe",
"tooltip-ca-nstab-category": "Prikaže stran kategorije",
"tooltip-minoredit": "Označite kot manjše urejanje",
"tooltip-save": "Shranite vnesene spremembe (ste si jih predogledali?)",
+ "tooltip-publish": "Objavite svoje spremembe",
"tooltip-preview": "Pred shranjevanjem si, prosimo, predoglejte stran!",
"tooltip-diff": "Preglejte spremembe, ki ste jih vnesli.",
"tooltip-compareselectedversions": "Preglejte razlike med izbranima redakcijama.",
"minoredit": "Mindre ändring (m)",
"watchthis": "Bevaka denna sida",
"savearticle": "Spara sidan",
+ "publishpage": "Publicera sida",
"preview": "Förhandsgranska",
"showpreview": "Visa förhandsgranskning",
"showdiff": "Visa ändringar",
"userpage-userdoesnotexist": "\"<nowiki>$1</nowiki>\" är inte ett registrerat användarkonto. Tänk efter om du vill skapa/redigera den här sidan.",
"userpage-userdoesnotexist-view": "Kontot \"$1\" är inte registrerat.",
"blocked-notice-logextract": "Användaren är blockerad.\nOrsaken till senaste blockeringen kan ses nedan:",
- "clearyourcache": "'''OBS:''' Efter du sparat sidan kan du behöva tömma din webbläsares cache för att se ändringarna.\n*'''Firefox / Safari:''' Håll ned ''Skift'' och klicka på ''Uppdatera sidan'' eller tryck antingen ''Ctrl-F5'' eller ''Ctrl-R'' (''⌘-R'' på Mac)\n*'''Google Chrome:''' Tryck ''Ctrl-Skift-R'' (''⌘-Shift-R'' på Mac)\n*'''Internet Explorer:''' Håll ned ''Ctrl'' och klicka på ''Uppdatera'' eller tryck ''Ctrl-F5''\n*'''Opera:''' Rensa cachen i ''Verktyg → Inställningar''",
+ "clearyourcache": "<strong>OBS:</strong> Efter du sparat sidan kan du behöva tömma din webbläsares cache för att se ändringarna.\n*<strong>Firefox / Safari:</strong> Håll ned <em>Skift</em> och klicka på <em>Uppdatera sidan</em> eller tryck antingen <em>Ctrl-F5</em> eller <em>Ctrl-R</em> (<em>⌘-R</em> på Mac)\n*<strong>Google Chrome:</strong> Tryck <em>Ctrl-Skift-R</em> (<em>⌘-Shift-R</em> på Mac)\n*<strong>Internet Explorer:</strong> Håll ned <em>Ctrl</em> och klicka på <em>Uppdatera</em> eller tryck <em>Ctrl-F5</em>\n*<strong>Opera:</strong> Gå till <em>Meny → Inställningar</em> (<em>Opera → Inställningar</em> på en Mac) och sedan på <em>Sekretess & säkerhet → Rensa webbläsardata → Hämtade bilder och filer</em>.",
"usercssyoucanpreview": "'''Tips:''' Använd knappen \"{{int:showpreview}}\" för att testa din nya CSS innan du sparar.",
"userjsyoucanpreview": "'''Tips:''' Använd knappen \"{{int:showpreview}}\" för att testa ditt nya JavaScript innan du sparar.",
"usercsspreview": "'''Kom ihåg att du bara förhandsgranskar din användar-CSS.'''\n'''Den har inte sparats än!'''",
"tooltip-ca-nstab-category": "Visa kategorisidan",
"tooltip-minoredit": "Markera som mindre ändring",
"tooltip-save": "Spara dina ändringar",
+ "tooltip-publish": "Publicera dina ändringar",
"tooltip-preview": "Förhandsgranska dina ändringar, vänligen använd detta innan du sparar!",
"tooltip-diff": "Visa vilka ändringar du har gjort i texten.",
"tooltip-compareselectedversions": "Visa skillnaden mellan de två markerade versionerna av den här sidan.",
Update OOjs UI to v$OOJSUI_VERSION
Release notes:
- https://git.wikimedia.org/blob/oojs%2Fui.git/v$OOJSUI_VERSION/History.md
+ https://phabricator.wikimedia.org/diffusion/GOJU/browse/master/History.md;v$OOJS_VERSION
END
)
Update OOjs to v$OOJS_VERSION
Release notes:
- https://git.wikimedia.org/blob/oojs%2Fcore.git/v$OOJS_VERSION/History.md
+ https://phabricator.wikimedia.org/diffusion/GOJS/browse/master/History.md;v$OOJS_VERSION
END
)
-#
-# This file is subject to the license terms in the LICENSE file found in the
-# qa-browsertests top-level directory and at
-# https://git.wikimedia.org/blob/qa%2Fbrowsertests/HEAD/LICENSE. No part of
-# qa-browsertests, including this file, may be copied, modified, propagated, or
-# distributed except according to the terms contained in the LICENSE file.
-#
-# Copyright 2012-2014 by the Mediawiki developers. See the CREDITS file in the
-# qa-browsertests top-level directory and at
-# https://git.wikimedia.org/blob/qa%2Fbrowsertests/HEAD/CREDITS
-#
Given(/^I go to Create account page at (.+)$/) do |path|
visit(CreateAccountPage, using_params: { page_title: path })
end
-#
-# This file is subject to the license terms in the LICENSE file found in the
-# qa-browsertests top-level directory and at
-# https://git.wikimedia.org/blob/qa%2Fbrowsertests/HEAD/LICENSE. No part of
-# qa-browsertests, including this file, may be copied, modified, propagated, or
-# distributed except according to the terms contained in the LICENSE file.
-#
-# Copyright 2012-2014 by the Mediawiki developers. See the CREDITS file in the
-# qa-browsertests top-level directory and at
-# https://git.wikimedia.org/blob/qa%2Fbrowsertests/HEAD/CREDITS
-#
Given(/^I am at file that does not exist$/) do
visit(FileDoesNotExistPage, using_params: { page_name: @random_string })
end
-#
-# This file is subject to the license terms in the LICENSE file found in the
-# qa-browsertests top-level directory and at
-# https://git.wikimedia.org/blob/qa%2Fbrowsertests/HEAD/LICENSE. No part of
-# qa-browsertests, including this file, may be copied, modified, propagated, or
-# distributed except according to the terms contained in the LICENSE file.
-#
-# Copyright 2012-2014 by the Mediawiki developers. See the CREDITS file in the
-# qa-browsertests top-level directory and at
-# https://git.wikimedia.org/blob/qa%2Fbrowsertests/HEAD/CREDITS
-#
Given(/^I am at Log in page$/) do
visit LoginPage
end
-#
-# This file is subject to the license terms in the LICENSE file found in the
-# qa-browsertests top-level directory and at
-# https://git.wikimedia.org/blob/qa%2Fbrowsertests/HEAD/LICENSE. No part of
-# qa-browsertests, including this file, may be copied, modified, propagated, or
-# distributed except according to the terms contained in the LICENSE file.
-#
-# Copyright 2012-2014 by the Mediawiki developers. See the CREDITS file in the
-# qa-browsertests top-level directory and at
-# https://git.wikimedia.org/blob/qa%2Fbrowsertests/HEAD/CREDITS
-#
When(/^I click Appearance$/) do
visit(PreferencesPage).appearance_link_element.when_present.click
end
-#
-# This file is subject to the license terms in the LICENSE file found in the
-# qa-browsertests top-level directory and at
-# https://git.wikimedia.org/blob/qa%2Fbrowsertests/HEAD/LICENSE. No part of
-# qa-browsertests, including this file, may be copied, modified, propagated, or
-# distributed except according to the terms contained in the LICENSE file.
-#
-# Copyright 2012-2014 by the Mediawiki developers. See the CREDITS file in the
-# qa-browsertests top-level directory and at
-# https://git.wikimedia.org/blob/qa%2Fbrowsertests/HEAD/CREDITS
-#
When(/^I click Editing$/) do
visit(PreferencesPage).editing_link_element.when_present.click
end
-#
-# This file is subject to the license terms in the LICENSE file found in the
-# qa-browsertests top-level directory and at
-# https://git.wikimedia.org/blob/qa%2Fbrowsertests/HEAD/LICENSE. No part of
-# qa-browsertests, including this file, may be copied, modified, propagated, or
-# distributed except according to the terms contained in the LICENSE file.
-#
-# Copyright 2012-2014 by the Mediawiki developers. See the CREDITS file in the
-# qa-browsertests top-level directory and at
-# https://git.wikimedia.org/blob/qa%2Fbrowsertests/HEAD/CREDITS
-#
When(/^I click User profile$/) do
visit(PreferencesPage).user_profile_link_element.when_present.click
end
-#
-# This file is subject to the license terms in the LICENSE file found in the
-# qa-browsertests top-level directory and at
-# https://git.wikimedia.org/blob/qa%2Fbrowsertests/HEAD/LICENSE. No part of
-# qa-browsertests, including this file, may be copied, modified, propagated, or
-# distributed except according to the terms contained in the LICENSE file.
-#
-# Copyright 2012-2014 by the Mediawiki developers. See the CREDITS file in the
-# qa-browsertests top-level directory and at
-# https://git.wikimedia.org/blob/qa%2Fbrowsertests/HEAD/CREDITS
-#
class CreateAccountPage
include PageObject
-#
-# This file is subject to the license terms in the LICENSE file found in the
-# qa-browsertests top-level directory and at
-# https://git.wikimedia.org/blob/qa%2Fbrowsertests/HEAD/LICENSE. No part of
-# qa-browsertests, including this file, may be copied, modified, propagated, or
-# distributed except according to the terms contained in the LICENSE file.
-#
-# Copyright 2012-2014 by the Mediawiki developers. See the CREDITS file in the
-# qa-browsertests top-level directory and at
-# https://git.wikimedia.org/blob/qa%2Fbrowsertests/HEAD/CREDITS
-#
class FileDoesNotExistPage
include PageObject
-#
-# This file is subject to the license terms in the LICENSE file found in the
-# qa-browsertests top-level directory and at
-# https://git.wikimedia.org/blob/qa%2Fbrowsertests/HEAD/LICENSE. No part of
-# qa-browsertests, including this file, may be copied, modified, propagated, or
-# distributed except according to the terms contained in the LICENSE file.
-#
-# Copyright 2012-2014 by the Mediawiki developers. See the CREDITS file in the
-# qa-browsertests top-level directory and at
-# https://git.wikimedia.org/blob/qa%2Fbrowsertests/HEAD/CREDITS
-#
class PreferencesAppearancePage
include PageObject
-#
-# This file is subject to the license terms in the LICENSE file found in the
-# qa-browsertests top-level directory and at
-# https://git.wikimedia.org/blob/qa%2Fbrowsertests/HEAD/LICENSE. No part of
-# qa-browsertests, including this file, may be copied, modified, propagated, or
-# distributed except according to the terms contained in the LICENSE file.
-#
-# Copyright 2012-2014 by the Mediawiki developers. See the CREDITS file in the
-# qa-browsertests top-level directory and at
-# https://git.wikimedia.org/blob/qa%2Fbrowsertests/HEAD/CREDITS
-#
class PreferencesEditingPage
include PageObject
-#
-# This file is subject to the license terms in the LICENSE file found in the
-# qa-browsertests top-level directory and at
-# https://git.wikimedia.org/blob/qa%2Fbrowsertests/HEAD/LICENSE. No part of
-# qa-browsertests, including this file, may be copied, modified, propagated, or
-# distributed except according to the terms contained in the LICENSE file.
-#
-# Copyright 2012-2014 by the Mediawiki developers. See the CREDITS file in the
-# qa-browsertests top-level directory and at
-# https://git.wikimedia.org/blob/qa%2Fbrowsertests/HEAD/CREDITS
-#
class PreferencesPage
include PageObject
-#
-# This file is subject to the license terms in the LICENSE file found in the
-# qa-browsertests top-level directory and at
-# https://git.wikimedia.org/blob/qa%2Fbrowsertests/HEAD/LICENSE. No part of
-# qa-browsertests, including this file, may be copied, modified, propagated, or
-# distributed except according to the terms contained in the LICENSE file.
-#
-# Copyright 2012-2014 by the Mediawiki developers. See the CREDITS file in the
-# qa-browsertests top-level directory and at
-# https://git.wikimedia.org/blob/qa%2Fbrowsertests/HEAD/CREDITS
-#
class PreferencesUserProfilePage
include PageObject
* @group Database
*/
class PrefixSearchTest extends MediaWikiLangTestCase {
+ private $originalHandlers;
public function addDBDataOnce() {
if ( !$this->isWikitextNS( NS_MAIN ) ) {
}
// Avoid special pages from extensions interferring with the tests
- $this->setMwGlobals( 'wgSpecialPages', [] );
+ $this->setMwGlobals( [
+ 'wgSpecialPages' => [],
+ 'wgHooks' => [],
+ ] );
+
+ $this->originalHandlers = TestingAccessWrapper::newFromClass( 'Hooks' )->handlers;
+ TestingAccessWrapper::newFromClass( 'Hooks' )->handlers = [];
+
+ SpecialPageFactory::resetList();
+ }
+
+ public function tearDown() {
+ parent::tearDown();
+
+ TestingAccessWrapper::newFromClass( 'Hooks' )->handlers = $this->originalHandlers;
+
+ SpecialPageFactory::resetList();
}
protected function searchProvision( array $results = null ) {
return $title;
}
+ private function verifyCallbackJob(
+ $callback,
+ LinkTarget $expectedTitle,
+ $expectedUserId,
+ callable $notificationTimestampCondition
+ ) {
+ $this->assertInternalType( 'callable', $callback );
+
+ $callbackReflector = new ReflectionFunction( $callback );
+ $vars = $callbackReflector->getStaticVariables();
+ $this->assertArrayHasKey( 'job', $vars );
+ $this->assertInstanceOf( ActivityUpdateJob::class, $vars['job'] );
+
+ /** @var ActivityUpdateJob $job */
+ $job = $vars['job'];
+ $this->assertEquals( $expectedTitle->getDBkey(), $job->getTitle()->getDBkey() );
+ $this->assertEquals( $expectedTitle->getNamespace(), $job->getTitle()->getNamespace() );
+
+ $jobParams = $job->getParams();
+ $this->assertArrayHasKey( 'type', $jobParams );
+ $this->assertEquals( 'updateWatchlistNotification', $jobParams['type'] );
+ $this->assertArrayHasKey( 'userid', $jobParams );
+ $this->assertEquals( $expectedUserId, $jobParams['userid'] );
+ $this->assertArrayHasKey( 'notifTime', $jobParams );
+ $this->assertTrue( $notificationTimestampCondition( $jobParams['notifTime'] ) );
+ }
+
public function testResetNotificationTimestamp_oldidSpecifiedLatestRevisionForced() {
$user = $this->getMockNonAnonUserWithId( 1 );
$oldid = 22;
$mockCache
);
- // Note: This does not actually assert the job is correct
$callableCallCounter = 0;
$scopedOverride = $store->overrideDeferredUpdatesAddCallableUpdateCallback(
- function( $callable ) use ( &$callableCallCounter ) {
+ function( $callable ) use ( &$callableCallCounter, $title, $user ) {
$callableCallCounter++;
- $this->assertInternalType( 'callable', $callable );
+ $this->verifyCallbackJob(
+ $callable,
+ $title,
+ $user->getId(),
+ function( $time ) {
+ return $time === null;
+ }
+ );
}
);
$mockCache
);
- // Note: This does not actually assert the job is correct
$addUpdateCallCounter = 0;
$scopedOverrideDeferred = $store->overrideDeferredUpdatesAddCallableUpdateCallback(
- function( $callable ) use ( &$addUpdateCallCounter ) {
+ function( $callable ) use ( &$addUpdateCallCounter, $title, $user ) {
$addUpdateCallCounter++;
- $this->assertInternalType( 'callable', $callable );
+ $this->verifyCallbackJob(
+ $callable,
+ $title,
+ $user->getId(),
+ function( $time ) {
+ return $time !== null && $time > '20151212010101';
+ }
+ );
}
);
ScopedCallback::consume( $scopedOverrideRevision );
}
+ public function testResetNotificationTimestamp_notWatchedPageForced() {
+ $user = $this->getMockNonAnonUserWithId( 1 );
+ $oldid = 22;
+ $title = $this->getMockTitle( 'SomeDbKey' );
+ $title->expects( $this->once() )
+ ->method( 'getNextRevisionID' )
+ ->with( $oldid )
+ ->will( $this->returnValue( 33 ) );
+
+ $mockDb = $this->getMockDb();
+ $mockDb->expects( $this->once() )
+ ->method( 'selectRow' )
+ ->with(
+ 'watchlist',
+ 'wl_notificationtimestamp',
+ [
+ 'wl_user' => 1,
+ 'wl_namespace' => 0,
+ 'wl_title' => 'SomeDbKey',
+ ]
+ )
+ ->will( $this->returnValue( false ) );
+
+ $mockCache = $this->getMockCache();
+ $mockDb->expects( $this->never() )
+ ->method( 'get' );
+ $mockDb->expects( $this->never() )
+ ->method( 'set' );
+ $mockDb->expects( $this->never() )
+ ->method( 'delete' );
+
+ $store = $this->newWatchedItemStore(
+ $this->getMockLoadBalancer( $mockDb ),
+ $mockCache
+ );
+
+ $callableCallCounter = 0;
+ $scopedOverride = $store->overrideDeferredUpdatesAddCallableUpdateCallback(
+ function( $callable ) use ( &$callableCallCounter, $title, $user ) {
+ $callableCallCounter++;
+ $this->verifyCallbackJob(
+ $callable,
+ $title,
+ $user->getId(),
+ function( $time ) {
+ return $time === null;
+ }
+ );
+ }
+ );
+
+ $this->assertTrue(
+ $store->resetNotificationTimestamp(
+ $user,
+ $title,
+ 'force',
+ $oldid
+ )
+ );
+ $this->assertEquals( 1, $callableCallCounter );
+
+ ScopedCallback::consume( $scopedOverride );
+ }
+
+ public function testResetNotificationTimestamp_futureNotificationTimestampForced() {
+ $user = $this->getMockNonAnonUserWithId( 1 );
+ $oldid = 22;
+ $title = $this->getMockTitle( 'SomeDbKey' );
+ $title->expects( $this->once() )
+ ->method( 'getNextRevisionID' )
+ ->with( $oldid )
+ ->will( $this->returnValue( 33 ) );
+
+ $mockDb = $this->getMockDb();
+ $mockDb->expects( $this->once() )
+ ->method( 'selectRow' )
+ ->with(
+ 'watchlist',
+ 'wl_notificationtimestamp',
+ [
+ 'wl_user' => 1,
+ 'wl_namespace' => 0,
+ 'wl_title' => 'SomeDbKey',
+ ]
+ )
+ ->will( $this->returnValue(
+ $this->getFakeRow( [ 'wl_notificationtimestamp' => '30151212010101' ] )
+ ) );
+
+ $mockCache = $this->getMockCache();
+ $mockDb->expects( $this->never() )
+ ->method( 'get' );
+ $mockDb->expects( $this->never() )
+ ->method( 'set' );
+ $mockDb->expects( $this->never() )
+ ->method( 'delete' );
+
+ $store = $this->newWatchedItemStore(
+ $this->getMockLoadBalancer( $mockDb ),
+ $mockCache
+ );
+
+ $addUpdateCallCounter = 0;
+ $scopedOverrideDeferred = $store->overrideDeferredUpdatesAddCallableUpdateCallback(
+ function( $callable ) use ( &$addUpdateCallCounter, $title, $user ) {
+ $addUpdateCallCounter++;
+ $this->verifyCallbackJob(
+ $callable,
+ $title,
+ $user->getId(),
+ function( $time ) {
+ return $time === '30151212010101';
+ }
+ );
+ }
+ );
+
+ $getTimestampCallCounter = 0;
+ $scopedOverrideRevision = $store->overrideRevisionGetTimestampFromIdCallback(
+ function( $titleParam, $oldidParam ) use ( &$getTimestampCallCounter, $title, $oldid ) {
+ $getTimestampCallCounter++;
+ $this->assertEquals( $title, $titleParam );
+ $this->assertEquals( $oldid, $oldidParam );
+ }
+ );
+
+ $this->assertTrue(
+ $store->resetNotificationTimestamp(
+ $user,
+ $title,
+ 'force',
+ $oldid
+ )
+ );
+ $this->assertEquals( 1, $addUpdateCallCounter );
+ $this->assertEquals( 1, $getTimestampCallCounter );
+
+ ScopedCallback::consume( $scopedOverrideDeferred );
+ ScopedCallback::consume( $scopedOverrideRevision );
+ }
+
+ public function testResetNotificationTimestamp_futureNotificationTimestampNotForced() {
+ $user = $this->getMockNonAnonUserWithId( 1 );
+ $oldid = 22;
+ $title = $this->getMockTitle( 'SomeDbKey' );
+ $title->expects( $this->once() )
+ ->method( 'getNextRevisionID' )
+ ->with( $oldid )
+ ->will( $this->returnValue( 33 ) );
+
+ $mockDb = $this->getMockDb();
+ $mockDb->expects( $this->once() )
+ ->method( 'selectRow' )
+ ->with(
+ 'watchlist',
+ 'wl_notificationtimestamp',
+ [
+ 'wl_user' => 1,
+ 'wl_namespace' => 0,
+ 'wl_title' => 'SomeDbKey',
+ ]
+ )
+ ->will( $this->returnValue(
+ $this->getFakeRow( [ 'wl_notificationtimestamp' => '30151212010101' ] )
+ ) );
+
+ $mockCache = $this->getMockCache();
+ $mockDb->expects( $this->never() )
+ ->method( 'get' );
+ $mockDb->expects( $this->never() )
+ ->method( 'set' );
+ $mockDb->expects( $this->never() )
+ ->method( 'delete' );
+
+ $store = $this->newWatchedItemStore(
+ $this->getMockLoadBalancer( $mockDb ),
+ $mockCache
+ );
+
+ $addUpdateCallCounter = 0;
+ $scopedOverrideDeferred = $store->overrideDeferredUpdatesAddCallableUpdateCallback(
+ function( $callable ) use ( &$addUpdateCallCounter, $title, $user ) {
+ $addUpdateCallCounter++;
+ $this->verifyCallbackJob(
+ $callable,
+ $title,
+ $user->getId(),
+ function( $time ) {
+ return $time === false;
+ }
+ );
+ }
+ );
+
+ $getTimestampCallCounter = 0;
+ $scopedOverrideRevision = $store->overrideRevisionGetTimestampFromIdCallback(
+ function( $titleParam, $oldidParam ) use ( &$getTimestampCallCounter, $title, $oldid ) {
+ $getTimestampCallCounter++;
+ $this->assertEquals( $title, $titleParam );
+ $this->assertEquals( $oldid, $oldidParam );
+ }
+ );
+
+ $this->assertTrue(
+ $store->resetNotificationTimestamp(
+ $user,
+ $title,
+ '',
+ $oldid
+ )
+ );
+ $this->assertEquals( 1, $addUpdateCallCounter );
+ $this->assertEquals( 1, $getTimestampCallCounter );
+
+ ScopedCallback::consume( $scopedOverrideDeferred );
+ ScopedCallback::consume( $scopedOverrideRevision );
+ }
+
public function testUpdateNotificationTimestamp_watchersExist() {
$mockDb = $this->getMockDb();
$mockDb->expects( $this->once() )
* @group Database
*/
class SearchEnginePrefixTest extends MediaWikiLangTestCase {
+ private $originalHandlers;
/**
* @var SearchEngine
}
// Avoid special pages from extensions interferring with the tests
- $this->setMwGlobals( 'wgSpecialPages', [] );
+ $this->setMwGlobals( [
+ 'wgSpecialPages' => [],
+ 'wgHooks' => [],
+ ] );
+
$this->search = MediaWikiServices::getInstance()->newSearchEngine();
$this->search->setNamespaces( [] );
+
+ $this->originalHandlers = TestingAccessWrapper::newFromClass( 'Hooks' )->handlers;
+ TestingAccessWrapper::newFromClass( 'Hooks' )->handlers = [];
+
+ SpecialPageFactory::resetList();
+ }
+
+ public function tearDown() {
+ parent::tearDown();
+
+ TestingAccessWrapper::newFromClass( 'Hooks' )->handlers = $this->originalHandlers;
+
+ SpecialPageFactory::resetList();
}
protected function searchProvision( array $results = null ) {