* The transitional wrapper classes AuthPluginPrimaryAuthenticationProvider,
AuthManagerAuthPlugin, and AuthManagerAuthPluginUser.
* The $wgAuth configuration setting and its use in Setup.php and unit tests
+* (T217772) The 'wgAvailableSkins' mw.config key in JavaScript, was removed.
=== Deprecations in 1.33 ===
* The configuration option $wgUseESI has been deprecated, and is expected
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE rdf:RDF [
+ <!ENTITY cc "http://creativecommons.org/ns#">
<!ENTITY xsd "http://www.w3.org/2001/XMLSchema#">
<!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<!ENTITY rdfs "http://www.w3.org/2000/01/rdf-schema#">
xmlns:rdf="&rdf;"
xmlns:rdfs="&rdfs;"
xmlns:owl="&owl;"
+ xmlns:cc="&cc;"
>
<owl:Ontology rdf:about="&mediawiki;">
<rdfs:label>MediaWiki ontology</rdfs:label>
<rdfs:comment>The ontology of MediaWiki</rdfs:comment>
+ <cc:licence rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
</owl:Ontology>
<!--
'ORDER BY' => $this->flip[$type] ? 'cl_sortkey DESC' : 'cl_sortkey',
],
[
- 'categorylinks' => [ 'INNER JOIN', 'cl_from = page_id' ],
+ 'categorylinks' => [ 'JOIN', 'cl_from = page_id' ],
'category' => [ 'LEFT JOIN', [
'cat_title = page_title',
'page_namespace' => NS_CATEGORY
// Prevent caching of responses with cookies (T127993)
$headers = [];
foreach ( headers_list() as $header ) {
- list( $name, $value ) = explode( ':', $header, 2 );
- $headers[strtolower( trim( $name ) )][] = trim( $value );
+ $header = explode( ':', $header, 2 );
+
+ // Note: The code below (currently) does not care about value-less headers
+ if ( isset( $header[1] ) ) {
+ $headers[ strtolower( trim( $header[0] ) ) ][] = trim( $header[1] );
+ }
}
if ( isset( $headers['set-cookie'] ) ) {
* @return bool True if this namespace either is or has a corresponding talk namespace.
*/
public static function canTalk( $index ) {
+ wfDeprecated( __METHOD__, '1.30' );
return self::hasTalkNamespace( $index );
}
/** @var array */
protected $mModules = [];
- /** @var array */
- protected $mModuleScripts = [];
-
/** @var array */
protected $mModuleStyles = [];
}
/**
- * Get the list of script-only modules to load on this page.
- *
- * @param bool $filter
- * @param string|null $position Unused
- * @return array Array of module names
- */
- public function getModuleScripts( $filter = false, $position = null ) {
- return $this->getModules( $filter, null, 'mModuleScripts',
- ResourceLoaderModule::TYPE_SCRIPTS
- );
- }
-
- /**
- * Load the scripts of one or more ResourceLoader modules, on this page.
- *
- * This method exists purely to provide the legacy behaviour of loading
- * a module's scripts in the global scope, and without dependency resolution.
- * See <https://phabricator.wikimedia.org/T188689>.
- *
- * @deprecated since 1.31 Use addModules() instead.
- * @param string|array $modules Module name (string) or array of module names
+ * @deprecated since 1.33 Use getModules() instead.
+ * @return array
*/
- public function addModuleScripts( $modules ) {
- $this->mModuleScripts = array_merge( $this->mModuleScripts, (array)$modules );
+ public function getModuleScripts() {
+ wfDeprecated( __METHOD__, '1.33' );
+ return [];
}
/**
$this->mNoGallery = $parserOutput->getNoGallery();
$this->mHeadItems = array_merge( $this->mHeadItems, $parserOutput->getHeadItems() );
$this->addModules( $parserOutput->getModules() );
- $this->addModuleScripts( $parserOutput->getModuleScripts() );
$this->addModuleStyles( $parserOutput->getModuleStyles() );
$this->addJsConfigVars( $parserOutput->getJsConfigVars() );
$this->mPreventClickjacking = $this->mPreventClickjacking
$this->addParserOutputText( $parserOutput, $poOptions );
$this->addModules( $parserOutput->getModules() );
- $this->addModuleScripts( $parserOutput->getModuleScripts() );
$this->addModuleStyles( $parserOutput->getModuleStyles() );
$this->addJsConfigVars( $parserOutput->getJsConfigVars() );
$rlClient->setConfig( $this->getJSVars() );
$rlClient->setModules( $this->getModules( /*filter*/ true ) );
$rlClient->setModuleStyles( $moduleStyles );
- $rlClient->setModuleScripts( $this->getModuleScripts( /*filter*/ true ) );
$rlClient->setExemptStates( $exemptStates );
$this->rlClient = $rlClient;
}
*/
public static function pageJoinCond() {
wfDeprecated( __METHOD__, '1.31' );
- return [ 'INNER JOIN', [ 'page_id = rev_page' ] ];
+ return [ 'JOIN', [ 'page_id = rev_page' ] ];
}
/**
'page_is_redirect',
'page_len',
] );
- $ret['joins']['page'] = [ 'INNER JOIN', [ 'page_id = rev_page' ] ];
+ $ret['joins']['page'] = [ 'JOIN', [ 'page_id = rev_page' ] ];
}
if ( in_array( 'user', $options, true ) ) {
'old_text',
'old_flags'
] );
- $ret['joins']['text'] = [ 'INNER JOIN', [ 'rev_text_id=old_id' ] ];
+ $ret['joins']['text'] = [ 'JOIN', [ 'rev_text_id=old_id' ] ];
}
return $ret;
'content_address',
'content_model',
] );
- $ret['joins']['content'] = [ 'INNER JOIN', [ 'slot_content_id = content_id' ] ];
+ $ret['joins']['content'] = [ 'JOIN', [ 'slot_content_id = content_id' ] ];
if ( in_array( 'model', $options, true ) ) {
// Use left join to attach model name, so we still find the revision row even
return new WatchedItemQueryService(
$services->getDBLoadBalancer(),
$services->getCommentStore(),
- $services->getActorMigration()
+ $services->getActorMigration(),
+ $services->getWatchedItemStore()
);
},
'WatchedItemStore' => function ( MediaWikiServices $services ) : WatchedItemStore {
$store = new WatchedItemStore(
$services->getDBLoadBalancerFactory(),
+ JobQueueGroup::singleton(),
+ $services->getMainObjectStash(),
new HashBagOStuff( [ 'maxKeys' => 100 ] ),
$services->getReadOnlyMode(),
$services->getMainConfig()->get( 'UpdateRowsPerQuery' )
* @param string $feature Feature being used.
*/
public function logFeatureUsage( $feature ) {
+ static $loggedFeatures = [];
+
+ // Only log each feature once per request. We can get multiple calls from calls to
+ // extractRequestParams() with different values for 'parseLimit', for example.
+ if ( isset( $loggedFeatures[$feature] ) ) {
+ return;
+ }
+ $loggedFeatures[$feature] = true;
+
$request = $this->getRequest();
$ctx = [
'feature' => $feature,
}
if ( isset( $prop['modules'] ) ) {
$retval['modules'] = array_values( array_unique( $p_output->getModules() ) );
- $retval['modulescripts'] = array_values( array_unique( $p_output->getModuleScripts() ) );
+ // Deprecated since 1.32 (T188689)
+ $retval['modulescripts'] = [];
$retval['modulestyles'] = array_values( array_unique( $p_output->getModuleStyles() ) );
}
if ( isset( $prop['jsconfigvars'] ) ) {
'html' => $out->getHTML(),
'modules' => array_values( array_unique( array_merge(
$out->getModules(),
- $out->getModuleScripts(),
$out->getModuleStyles()
) ) ),
'continue' => $this->getResult()->getResultData( 'continue' ),
if ( isset( $prop['modules'] ) ) {
if ( $skin ) {
$result_array['modules'] = $outputPage->getModules();
- $result_array['modulescripts'] = $outputPage->getModuleScripts();
+ // Deprecated since 1.32 (T188689)
+ $result_array['modulescripts'] = [];
$result_array['modulestyles'] = $outputPage->getModuleStyles();
} else {
$result_array['modules'] = array_values( array_unique( $p_result->getModules() ) );
- $result_array['modulescripts'] = array_values( array_unique( $p_result->getModuleScripts() ) );
+ // Deprecated since 1.32 (T188689)
+ $result_array['modulescripts'] = [];
$result_array['modulestyles'] = array_values( array_unique( $p_result->getModuleStyles() ) );
}
}
if ( !is_null( $params['tag'] ) ) {
$this->addTables( 'change_tag' );
$this->addJoinConds(
- [ 'change_tag' => [ 'INNER JOIN', [ 'ar_rev_id=ct_rev_id' ] ] ]
+ [ 'change_tag' => [ 'JOIN', [ 'ar_rev_id=ct_rev_id' ] ] ]
);
$changeTagDefStore = MediaWikiServices::getInstance()->getChangeTagDefStore();
try {
if ( $needPageTable ) {
$revQuery['tables'][] = 'page';
- $revQuery['joins']['page'] = [ 'INNER JOIN', [ "$pageField = page_id" ] ];
+ $revQuery['joins']['page'] = [ 'JOIN', [ "$pageField = page_id" ] ];
if ( (bool)$miser_ns ) {
$revQuery['fields'][] = 'page_namespace';
}
$this->addTables( 'user_groups', 'ug1' );
$this->addJoinConds( [
'ug1' => [
- 'INNER JOIN',
+ 'JOIN',
[
'ug1.ug_user=user_id',
'ug1.ug_group' => $params['group'],
// There shouldn't be any duplicate rows in querycachetwo here.
$this->addTables( 'querycachetwo' );
$this->addJoinConds( [ 'querycachetwo' => [
- 'INNER JOIN', [
+ 'JOIN', [
'qcc_type' => 'activeusers',
'qcc_namespace' => NS_USER,
'qcc_title=user_name',
$limitGroups = array_unique( $limitGroups );
$this->addTables( 'user_groups' );
$this->addJoinConds( [ 'user_groups' => [
- $excludeGroups ? 'LEFT OUTER JOIN' : 'INNER JOIN',
+ $excludeGroups ? 'LEFT OUTER JOIN' : 'JOIN',
[
'ug_user=' . $revQuery['fields']['rev_user'],
'ug_group' => $limitGroups,
if ( !is_null( $params['tag'] ) ) {
$this->addTables( 'change_tag' );
$this->addJoinConds(
- [ 'change_tag' => [ 'INNER JOIN', [ 'ar_rev_id=ct_rev_id' ] ] ]
+ [ 'change_tag' => [ 'JOIN', [ 'ar_rev_id=ct_rev_id' ] ] ]
);
$changeTagDefStore = MediaWikiServices::getInstance()->getChangeTagDefStore();
try {
if ( !is_null( $params['tag'] ) ) {
$this->addTables( 'change_tag' );
$this->addJoinConds(
- [ 'change_tag' => [ 'INNER JOIN', [ 'ar_rev_id=ct_rev_id' ] ] ]
+ [ 'change_tag' => [ 'JOIN', [ 'ar_rev_id=ct_rev_id' ] ] ]
);
$changeTagDefStore = MediaWikiServices::getInstance()->getChangeTagDefStore();
try {
if ( !is_null( $params['tag'] ) ) {
$this->addTables( 'change_tag' );
- $this->addJoinConds( [ 'change_tag' => [ 'INNER JOIN',
+ $this->addJoinConds( [ 'change_tag' => [ 'JOIN',
[ 'log_id=ct_log_id' ] ] ] );
$changeTagDefStore = MediaWikiServices::getInstance()->getChangeTagDefStore();
try {
if ( !is_null( $params['tag'] ) ) {
$this->addTables( 'change_tag' );
- $this->addJoinConds( [ 'change_tag' => [ 'INNER JOIN', [ 'rc_id=ct_rc_id' ] ] ] );
+ $this->addJoinConds( [ 'change_tag' => [ 'JOIN', [ 'rc_id=ct_rc_id' ] ] ] );
$changeTagDefStore = MediaWikiServices::getInstance()->getChangeTagDefStore();
try {
$this->addWhereFld( 'ct_tag_id', $changeTagDefStore->getId( $params['tag'] ) );
// Always join 'page' so orphaned revisions are filtered out
$this->addTables( [ 'revision', 'page' ] );
$this->addJoinConds(
- [ 'page' => [ 'INNER JOIN', [ 'page_id = rev_page' ] ] ]
+ [ 'page' => [ 'JOIN', [ 'page_id = rev_page' ] ] ]
);
$this->addFields( [
'rev_id' => $idField, 'rev_timestamp' => $tsField, 'rev_page' => $pageField
if ( $params['tag'] !== null ) {
$this->addTables( 'change_tag' );
$this->addJoinConds(
- [ 'change_tag' => [ 'INNER JOIN', [ 'rev_id=ct_rev_id' ] ] ]
+ [ 'change_tag' => [ 'JOIN', [ 'rev_id=ct_rev_id' ] ] ]
);
$changeTagDefStore = MediaWikiServices::getInstance()->getChangeTagDefStore();
try {
if ( isset( $this->params['tag'] ) ) {
$this->addTables( 'change_tag' );
$this->addJoinConds(
- [ 'change_tag' => [ 'INNER JOIN', [ $idField . ' = ct_rev_id' ] ] ]
+ [ 'change_tag' => [ 'JOIN', [ $idField . ' = ct_rev_id' ] ] ]
);
$changeTagDefStore = MediaWikiServices::getInstance()->getChangeTagDefStore();
try {
}
$this->addTables( 'user_groups' );
- $this->addJoinConds( [ 'user_groups' => [ 'INNER JOIN', 'ug_user=user_id' ] ] );
+ $this->addJoinConds( [ 'user_groups' => [ 'JOIN', 'ug_user=user_id' ] ] );
$this->addFields( [ 'user_name' ] );
$this->addFields( UserGroupMembership::selectFields() );
$this->addWhere( 'ug_expiry IS NULL OR ug_expiry >= ' .
foreach ( $sorted as $obj ) {
$title = Title::makeTitle( $obj->rc_namespace, $obj->rc_title );
- $talkpage = MWNamespace::canTalk( $obj->rc_namespace )
+ $talkpage = MWNamespace::hasTalkNamespace( $obj->rc_namespace )
? $title->getTalkPage()->getFullURL()
: '';
// Add an INNER JOIN on change_tag
$tables[] = 'change_tag';
- $join_conds['change_tag'] = [ 'INNER JOIN', $join_cond ];
+ $join_conds['change_tag'] = [ 'JOIN', $join_cond ];
$filterTagIds = [];
$changeTagDefStore = MediaWikiServices::getInstance()->getChangeTagDefStore();
foreach ( (array)$filter_tag as $filterTagName ) {
}
$tagTables = [ 'change_tag', 'change_tag_def' ];
- $join_cond_ts_tags = [ 'change_tag_def' => [ 'INNER JOIN', 'ct_tag_id=ctd_id' ] ];
+ $join_cond_ts_tags = [ 'change_tag_def' => [ 'JOIN', 'ct_tag_id=ctd_id' ] ];
$field = 'ctd_name';
return wfGetDB( DB_REPLICA )->buildGroupConcatField(
/**
* Do any deferred updates and clear the list
*
+ * If $stage is self::ALL then the queue of PRESEND updates will be resolved,
+ * followed by the queue of POSTSEND updates
+ *
* @param string $mode Use "enqueue" to use the job queue when possible [Default: "run"]
* @param int $stage DeferredUpdates constant (PRESEND, POSTSEND, or ALL) (since 1.27)
*/
* @param array $existing
* @return array
*/
- function getPropertyDeletions( $existing ) {
+ private function getPropertyDeletions( $existing ) {
return array_diff_assoc( $existing, $this->mProperties );
}
$opts[] = 'STRAIGHT_JOIN';
$opts['USE INDEX']['revision'] = 'rev_page_id';
unset( $join['revision'] );
- $join['page'] = [ 'INNER JOIN', 'rev_page=page_id' ];
+ $join['page'] = [ 'JOIN', 'rev_page=page_id' ];
}
} elseif ( $this->history & self::CURRENT ) {
# Latest revision dumps...
if ( $this->list_authors && $cond != '' ) { // List authors, if so desired
$this->do_list_authors( $cond );
}
- $join['revision'] = [ 'INNER JOIN', 'page_id=rev_page AND page_latest=rev_id' ];
+ $join['revision'] = [ 'JOIN', 'page_id=rev_page AND page_latest=rev_id' ];
} elseif ( $this->history & self::STABLE ) {
# "Stable" revision dumps...
# Default JOIN, to be overridden...
- $join['revision'] = [ 'INNER JOIN', 'page_id=rev_page AND page_latest=rev_id' ];
+ $join['revision'] = [ 'JOIN', 'page_id=rev_page AND page_latest=rev_id' ];
# One, and only one hook should set this, and return false
if ( Hooks::run( 'WikiExporter::dumpStableQuery', [ &$tables, &$opts, &$join ] ) ) {
throw new MWException( __METHOD__ . " given invalid history dump type." );
"Fengchao",
"Duolaimi",
"A Chinese Wikipedian",
- "水獭很懒"
+ "水獭很懒",
+ "Zazzzz"
]
},
"config-desc": "MediaWiki安装程序",
"config-wincache": "已安装[https://www.iis.net/downloads/microsoft/wincache-extension WinCache]",
"config-no-cache-apcu": "<strong>警告:</strong>找不到[https://secure.php.net/apcu APCu]或[https://www.iis.net/downloads/microsoft/wincache-extension WinCache]。对象缓存未启用。",
"config-mod-security": "<strong>警告:</strong>您的web服务器已启用[https://modsecurity.org/ mod_security]/mod_security2。它的很多常见配置可能导致MediaWiki及其他软件允许用户发布任意内容的问题。如果可能,这应当被禁用。否则,当您遭遇随机错误时,请参考[https://modsecurity.org/documentation/ mod_security 文档]或联络您的主机支持。",
- "config-diff3-bad": "找不到GNU diff3。",
+ "config-diff3-bad": "找不到GNU diff3文字对比工具程序,您可以暂时忽略它,但可能会更频繁遇到编辑冲突。",
"config-git": "发现Git版本控制软件:<code>$1</code>",
- "config-git-bad": "Git版本控制软件未找到。",
+ "config-git-bad": "Git版本控制软件未找到,您可以暂时忽略他,另请注意Special:Version不会显示提交散列。",
"config-imagemagick": "已找到ImageMagick:<code>$1</code>。如果您启用了上传功能,缩略图功能也将被启用。",
"config-gd": "已找到内建的GD图形库。如果你启用了上传功能,缩略图功能也将被启用。",
"config-no-scaling": "找不到GD库或ImageMagick。缩略图功能将不可用。",
"config-db-host-oracle": "数据库透明网络底层(TNS):",
"config-db-host-oracle-help": "请输入合法的[http://download.oracle.com/docs/cd/B28359_01/network.111/b28317/tnsnames.htm 本地连接名],并确保tnsnames.ora文件对本安装程序可见。<br />如果您使用的客户端库为10g或更新的版本,您还可以使用[http://download.oracle.com/docs/cd/E11882_01/network.112/e10836/naming.htm 简单连接名方法](easy connect naming method)。",
"config-db-wiki-settings": "标识本wiki",
- "config-db-name": "数据库名称:",
+ "config-db-name": "æ\95°æ\8d®åº\93å\90\8d称ï¼\88ä¸\8d带è¿\9eå\97å\8f·ï¼\89ï¼\9a",
"config-db-name-help": "请输入一个可以标识您的wiki的名称。请勿使用空格。\n\n如果您正在使用共享web主机,您的主机提供商或会给您指定一个数据库名称,或会让您通过控制面板创建数据库。",
"config-db-name-oracle": "数据库模式:",
"config-db-account-oracle-warn": "现有三种已支持方案可以将Oracle设置为后端数据库:\n\n如果您希望在安装过程中创建数据库帐户,请为安装程序提供具有SYSDBA角色的数据库帐户,并为web访问帐户指定所需身份证明;否则您可以手动创建web访问的账户并仅须提供该帐户(确保帐户已有创建方案对象(schema object)的所需权限);或提供两个不同的帐户,其一具有创建权限,另一则被限制为web访问。\n\n具有所需权限账户的创建脚本存放于本程序的“maintenance/oracle/”目录下。请注意,使用受限制的帐户将禁用默认帐户的所有维护性功能。",
"config-db-account-lock": "在普通操作中使用相同的用户名和密码",
"config-db-wiki-account": "用于普通操作的用户帐号",
"config-db-wiki-help": "输入在普通的wiki操作中(安装完成后)将用于连接数据库的用户名和密码。如果该帐号并不存在,而安装帐号具有足够的权限,该用户帐号会被自动创建,并被赋予足以运行此wiki的最低权限。",
- "config-db-prefix": "数据库表前缀:",
+ "config-db-prefix": "æ\95°æ\8d®åº\93表å\89\8dç¼\80ï¼\88ä¸\8d带è¿\9eå\97å\8f·ï¼\89ï¼\9a",
"config-db-prefix-help": "如果您需要在多个wiki之间(或在MediaWiki与其他web应用程序之间)共享一个数据库,您可以通过添加前缀的方式来避免出现表名称的冲突。请勿使用空格。\n\n此字段通常可留空。",
"config-mysql-old": "需要MySQL $1或更新的版本,您的版本为$2。",
"config-db-port": "数据库端口:",
- "config-db-schema": "MediaWiki的数据库模式",
+ "config-db-schema": "MediaWiki的数据库模式(不带连字号)",
"config-db-schema-help": "此数据库模式通常是正确的,请在有明确需求时才改动之。",
"config-pg-test-error": "无法连接到数据库<strong>$1</strong>:$2",
"config-sqlite-dir": "SQLite数据目录:",
}
}
# Don't show duplicate rows when using log_search
- $joins['log_search'] = [ 'INNER JOIN', 'ls_log_id=log_id' ];
+ $joins['log_search'] = [ 'JOIN', 'ls_log_id=log_id' ];
$info = [
'tables' => $tables,
],
__METHOD__,
[],
- [ 'categorylinks' => [ 'INNER JOIN', 'page_id = cl_from' ] ]
+ [ 'categorylinks' => [ 'JOIN', 'page_id = cl_from' ] ]
);
return TitleArray::newFromResult( $res );
*/
public $mModules = [];
- /**
- * @var array $mModuleScripts Modules of which only the JS will be loaded by ResourceLoader.
- */
- public $mModuleScripts = [];
-
/**
* @var array $mModuleStyles Modules of which only the CSSS will be loaded by ResourceLoader.
*/
}
public function getModuleScripts() {
- return $this->mModuleScripts;
+ wfDeprecated( __METHOD__, '1.33' );
+ return [];
}
public function getModuleStyles() {
$this->mModules = array_merge( $this->mModules, (array)$modules );
}
- /**
- * @deprecated since 1.31 Use addModules() instead.
- * @see OutputPage::addModuleScripts
- */
- public function addModuleScripts( $modules ) {
- $this->mModuleScripts = array_merge( $this->mModuleScripts, (array)$modules );
- }
-
/**
* @see OutputPage::addModuleStyles
*/
*/
public function addOutputPageMetadata( OutputPage $out ) {
$this->addModules( $out->getModules() );
- $this->addModuleScripts( $out->getModuleScripts() );
$this->addModuleStyles( $out->getModuleStyles() );
$this->addJsConfigVars( $out->getJsConfigVars() );
// HTML and HTTP
$this->mHeadItems = self::mergeMixedList( $this->mHeadItems, $source->getHeadItems() );
$this->mModules = self::mergeList( $this->mModules, $source->getModules() );
- $this->mModuleScripts = self::mergeList( $this->mModuleScripts, $source->getModuleScripts() );
$this->mModuleStyles = self::mergeList( $this->mModuleStyles, $source->getModuleStyles() );
$this->mJsConfigVars = self::mergeMap( $this->mJsConfigVars, $source->getJsConfigVars() );
$this->mMaxAdaptiveExpiry = min( $this->mMaxAdaptiveExpiry, $source->mMaxAdaptiveExpiry );
/** @var array */
private $moduleStyles = [];
- /** @var array */
- private $moduleScripts = [];
-
/** @var array */
private $exemptStates = [];
$this->moduleStyles = $modules;
}
- /**
- * Ensure the scripts of one or more modules are loaded.
- *
- * @deprecated since 1.28
- * @param array $modules Array of module names
- */
- public function setModuleScripts( array $modules ) {
- $this->moduleScripts = $modules;
- }
-
/**
* Set state of special modules that are handled by the caller manually.
*
],
'general' => [],
'styles' => [],
- 'scripts' => [],
// Embedding for private modules
'embed' => [
'styles' => [],
}
}
- foreach ( $this->moduleScripts as $name ) {
- $module = $rl->getModule( $name );
- if ( !$module ) {
- continue;
- }
-
- $group = $module->getGroup();
- $context = $this->getContext( $group, ResourceLoaderModule::TYPE_SCRIPTS );
- if ( $module->isKnownEmpty( $context ) ) {
- // Avoid needless request for empty module
- $data['states'][$name] = 'ready';
- } else {
- // Load from load.php?only=scripts via <script src></script>
- $data['scripts'][] = $name;
-
- // Avoid duplicate request from mw.loader
- $data['states'][$name] = 'loading';
- }
- }
-
return $data;
}
);
}
- // Inline RLQ: Load only=scripts
- if ( $data['scripts'] ) {
- $chunks[] = $this->getLoad(
- $data['scripts'],
- ResourceLoaderModule::TYPE_SCRIPTS,
- $nonce
- );
- }
-
// External stylesheets (only=styles)
if ( $data['styles'] ) {
$chunks[] = $this->getLoad(
$localFileRefs = array_values( array_unique( $localFileRefs ) );
sort( $localFileRefs );
$localPaths = self::getRelativePaths( $localFileRefs );
-
$storedPaths = self::getRelativePaths( $this->getFileDependencies( $context ) );
- // If the list has been modified since last time we cached it, update the cache
- if ( $localPaths !== $storedPaths ) {
- $vary = $context->getSkin() . '|' . $context->getLanguage();
- $cache = ObjectCache::getLocalClusterInstance();
- $key = $cache->makeKey( __METHOD__, $this->getName(), $vary );
- $scopeLock = $cache->getScopedLock( $key, 0 );
- if ( !$scopeLock ) {
- return; // T124649; avoid write slams
- }
- // No needless escaping as this isn't HTML output.
- // Only stored in the database and parsed in PHP.
- $deps = json_encode( $localPaths, JSON_UNESCAPED_SLASHES );
- $dbw = wfGetDB( DB_MASTER );
- $dbw->upsert( 'module_deps',
- [
- 'md_module' => $this->getName(),
- 'md_skin' => $vary,
- 'md_deps' => $deps,
- ],
- [ 'md_module', 'md_skin' ],
- [
- 'md_deps' => $deps,
- ]
- );
+ if ( $localPaths === $storedPaths ) {
+ // Unchanged. Avoid needless database query (especially master conn!).
+ return;
+ }
- if ( $dbw->trxLevel() ) {
- $dbw->onTransactionResolution(
- function () use ( &$scopeLock ) {
- ScopedCallback::consume( $scopeLock ); // release after commit
- },
- __METHOD__
- );
- }
+ // The file deps list has changed, we want to update it.
+ $vary = $context->getSkin() . '|' . $context->getLanguage();
+ $cache = ObjectCache::getLocalClusterInstance();
+ $key = $cache->makeKey( __METHOD__, $this->getName(), $vary );
+ $scopeLock = $cache->getScopedLock( $key, 0 );
+ if ( !$scopeLock ) {
+ // Another request appears to be doing this update already.
+ // Avoid write slams (T124649).
+ return;
+ }
+
+ // No needless escaping as this isn't HTML output.
+ // Only stored in the database and parsed in PHP.
+ $deps = json_encode( $localPaths, JSON_UNESCAPED_SLASHES );
+ $dbw = wfGetDB( DB_MASTER );
+ $dbw->upsert( 'module_deps',
+ [
+ 'md_module' => $this->getName(),
+ 'md_skin' => $vary,
+ 'md_deps' => $deps,
+ ],
+ [ 'md_module', 'md_skin' ],
+ [
+ 'md_deps' => $deps,
+ ]
+ );
+
+ if ( $dbw->trxLevel() ) {
+ $dbw->onTransactionResolution(
+ function () use ( &$scopeLock ) {
+ ScopedCallback::consume( $scopeLock ); // release after commit
+ },
+ __METHOD__
+ );
}
} catch ( Exception $e ) {
+ // Probably a DB failure. Either the read query from getFileDependencies(),
+ // or the write query above.
wfDebugLog( 'resourceloader', __METHOD__ . ": failed to update DB: $e" );
}
}
'wgSiteName' => $conf->get( 'Sitename' ),
'wgDBname' => $conf->get( 'DBname' ),
'wgExtraSignatureNamespaces' => $conf->get( 'ExtraSignatureNamespaces' ),
- 'wgAvailableSkins' => Skin::getSkinNames(),
'wgExtensionAssetsPath' => $conf->get( 'ExtensionAssetsPath' ),
// MediaWiki sets cookies to have this prefix by default
'wgCookiePrefix' => $conf->get( 'CookiePrefix' ),
'wgCookieDomain' => $conf->get( 'CookieDomain' ),
'wgCookiePath' => $conf->get( 'CookiePath' ),
'wgCookieExpiration' => $conf->get( 'CookieExpiration' ),
- 'wgResourceLoaderMaxQueryLength' => $conf->get( 'ResourceLoaderMaxQueryLength' ),
'wgCaseSensitiveNamespaces' => $caseSensitiveNamespaces,
'wgLegalTitleChars' => Title::convertByteClassToUnicodeClass( Title::legalChars() ),
'wgIllegalFileChars' => Title::convertByteClassToUnicodeClass( $illegalFileChars ),
*/
public function getScript( ResourceLoaderContext $context ) {
global $IP;
+ $conf = $this->getConfig();
+
if ( $context->getOnly() !== 'scripts' ) {
return '/* Requires only=script */';
}
if ( $context->getDebug() ) {
$mwLoaderCode .= file_get_contents( "$IP/resources/src/startup/mediawiki.log.js" );
}
- if ( $this->getConfig()->get( 'ResourceLoaderEnableJSProfiler' ) ) {
+ if ( $conf->get( 'ResourceLoaderEnableJSProfiler' ) ) {
$mwLoaderCode .= file_get_contents( "$IP/resources/src/startup/profiler.js" );
}
// Perform replacements for mediawiki.js
$mwLoaderPairs = [
'$VARS.baseModules' => ResourceLoader::encodeJsonForScript( $this->getBaseModules() ),
+ '$VARS.maxQueryLength' => ResourceLoader::encodeJsonForScript(
+ $conf->get( 'ResourceLoaderMaxQueryLength' )
+ ),
];
$profilerStubs = [
'$CODE.profileExecuteStart();' => 'mw.loader.profiler.onExecuteStart( module );',
'$CODE.profileScriptStart();' => 'mw.loader.profiler.onScriptStart( module );',
'$CODE.profileScriptEnd();' => 'mw.loader.profiler.onScriptEnd( module );',
];
- if ( $this->getConfig()->get( 'ResourceLoaderEnableJSProfiler' ) ) {
+ if ( $conf->get( 'ResourceLoaderEnableJSProfiler' ) ) {
// When profiling is enabled, insert the calls.
$mwLoaderPairs += $profilerStubs;
} else {
// Perform string replacements for startup.js
$pairs = [
'$VARS.wgLegacyJavaScriptGlobals' => ResourceLoader::encodeJsonForScript(
- $this->getConfig()->get( 'LegacyJavaScriptGlobals' )
+ $conf->get( 'LegacyJavaScriptGlobals' )
),
'$VARS.configuration' => ResourceLoader::encodeJsonForScript(
$this->getConfigSettings( $context )
*/
public function extend( $name, $value ) {
if ( $this->haveData( $name ) ) {
- $this->data[$name] = $this->data[$name] . $value;
+ $this->data[$name] .= $value;
} else {
$this->data[$name] = $value;
}
protected function checkExecutePermissions( User $user ) {
$this->checkPermissions();
- if ( $this->requiresUnblock() && $user->isBlocked() ) {
+ if ( $this->requiresUnblock() ) {
$block = $user->getBlock();
- throw new UserBlockedError( $block );
+ if ( $block && $block->isSitewide() ) {
+ throw new UserBlockedError( $block );
+ }
}
if ( $this->requiresWrite() ) {
];
$joinConds = [
'revision' => [
- 'INNER JOIN', [
+ 'JOIN', [
'page_latest = rev_id'
]
],
protected function getFormFields() {
global $wgBlockAllowsUTEdit;
+ $this->getOutput()->enableOOUI();
+
$user = $this->getUser();
$suggestedDurations = self::getSuggestedDurations();
'type' => 'radio',
'cssclass' => 'mw-block-editing-restriction',
'options' => [
- $this->msg( 'ipb-sitewide' )->escaped() => 'sitewide',
- $this->msg( 'ipb-partial' )->escaped() => 'partial',
+ $this->msg( 'ipb-sitewide' )->escaped() .
+ new \OOUI\LabelWidget( [
+ 'classes' => [ 'oo-ui-inline-help' ],
+ 'label' => $this->msg( 'ipb-sitewide-help' )->text(),
+ ] ) => 'sitewide',
+ $this->msg( 'ipb-partial' )->escaped() .
+ new \OOUI\LabelWidget( [
+ 'classes' => [ 'oo-ui-inline-help' ],
+ 'label' => $this->msg( 'ipb-partial-help' )->text(),
+ ] ) => 'partial',
],
'section' => 'actions',
];
'pp_propname' => $this->propName,
],
'join_conds' => [
- 'page' => [ 'INNER JOIN', 'page_id = pp_page' ]
+ 'page' => [ 'JOIN', 'page_id = pp_page' ]
],
'options' => []
];
'OFFSET' => $offset
],
'join_conds' => [
- 'page' => [ 'INNER JOIN', 'cl_from = page_id' ]
+ 'page' => [ 'JOIN', 'cl_from = page_id' ]
]
];
$conds + $subconds,
__METHOD__,
$order + $query_options,
- $join_conds + [ $link_table => [ 'INNER JOIN', $subjoin ] ]
+ $join_conds + [ $link_table => [ 'JOIN', $subjoin ] ]
);
if ( $dbr->unionSupportsOrderAndLimit() ) {
$join_conds = array_merge(
[
'watchlist' => [
- 'INNER JOIN',
+ 'JOIN',
[
'wl_user' => $user->getId(),
'wl_namespace=rc_namespace',
// Force JOIN order per T106682 to avoid large filesorts
[ 'ORDER BY' => $fromCol, 'LIMIT' => 2 * $queryLimit, 'STRAIGHT_JOIN' ],
[
- 'page' => [ 'INNER JOIN', "$fromCol = page_id" ],
+ 'page' => [ 'JOIN', "$fromCol = page_id" ],
'redirect' => [ 'LEFT JOIN', $on ]
]
);
[],
__CLASS__ . '::showIndirectLinks',
[ 'ORDER BY' => 'page_id', 'LIMIT' => $queryLimit ],
- [ 'page' => [ 'INNER JOIN', "$fromCol = page_id" ] ]
+ [ 'page' => [ 'JOIN', "$fromCol = page_id" ] ]
);
};
// Outer query to select the recent edit counts for the selected active users
$tables = [ 'qcc_users' => $subquery, 'recentchanges' ];
- $jconds = [ 'recentchanges' => [
- 'JOIN', $useActor ? 'rc_actor = actor_id' : 'rc_user_text = qcc_title',
- ] ];
- $conds = [
+ $jconds = [ 'recentchanges' => [ 'LEFT JOIN', [
+ $useActor ? 'rc_actor = actor_id' : 'rc_user_text = qcc_title',
'rc_type != ' . $dbr->addQuotes( RC_EXTERNAL ), // Don't count wikidata.
'rc_type != ' . $dbr->addQuotes( RC_CATEGORIZE ), // Don't count categorization changes.
'rc_log_type IS NULL OR rc_log_type != ' . $dbr->addQuotes( 'newusers' ),
'rc_timestamp >= ' . $dbr->addQuotes( $timestamp ),
- ];
+ ] ] ];
+ $conds = [];
return [
'tables' => $tables,
'qcc_title',
'user_name' => 'qcc_title',
'user_id' => 'user_id',
- 'recentedits' => 'COUNT(*)'
+ 'recentedits' => 'COUNT(rc_id)'
],
'options' => [ 'GROUP BY' => [ 'qcc_title' ] ],
'conds' => $conds,
$sortColumns = array_merge( [ $this->mIndexField ], $this->mExtraSortFields );
if ( $descending ) {
+ $dir = 'ASC';
$orderBy = $sortColumns;
$operator = $this->mIncludeOffset ? '>=' : '>';
} else {
+ $dir = 'DESC';
$orderBy = [];
foreach ( $sortColumns as $col ) {
$orderBy[] = $col . ' DESC';
}
$info = $this->getQueryInfo( [
'limit' => intval( $limit ),
- 'order' => $descending ? 'DESC' : 'ASC',
+ 'order' => $dir,
'conds' =>
$offset != '' ? [ $this->mIndexField . $operator . $this->mDb->addQuotes( $offset ) ] : [],
] );
$jcond = $rcQuery['fields']['rc_user'] . ' = ' . $imgQuery['fields']['img_user'];
}
$jconds['recentchanges'] = [
- 'INNER JOIN',
+ 'JOIN',
[
'rc_title = img_name',
$jcond,
$fields = array_merge( $rcQuery['fields'], [
'length' => 'page_len', 'rev_id' => 'page_latest', 'page_namespace', 'page_title'
] );
- $join_conds = [ 'page' => [ 'INNER JOIN', 'page_id=rc_cur_id' ] ] + $rcQuery['joins'];
+ $join_conds = [ 'page' => [ 'JOIN', 'page_id=rc_cur_id' ] ] + $rcQuery['joins'];
// Avoid PHP 7.1 warning from passing $this by reference
$pager = $this;
throw new DBReadOnlyError( null, self::DB_READONLY_ERROR );
}
+ public function getLatestNotificationTimestamp( $timestamp, User $user, LinkTarget $target ) {
+ return wfTimestampOrNull( TS_MW, $timestamp );
+ }
}
/** @var ActorMigration */
private $actorMigration;
+ /** @var WatchedItemStoreInterface */
+ private $watchedItemStore;
+
public function __construct(
LoadBalancer $loadBalancer,
CommentStore $commentStore,
- ActorMigration $actorMigration
+ ActorMigration $actorMigration,
+ WatchedItemStoreInterface $watchedItemStore
) {
$this->loadBalancer = $loadBalancer;
$this->commentStore = $commentStore;
$this->actorMigration = $actorMigration;
+ $this->watchedItemStore = $watchedItemStore;
}
/**
break;
}
+ $target = new TitleValue( (int)$row->rc_namespace, $row->rc_title );
$items[] = [
new WatchedItem(
$user,
- new TitleValue( (int)$row->rc_namespace, $row->rc_title ),
- $row->wl_notificationtimestamp
+ $target,
+ $this->watchedItemStore->getLatestNotificationTimestamp(
+ $row->wl_notificationtimestamp, $user, $target
+ )
),
$this->getRecentChangeFieldsFromRow( $row )
];
$watchedItems = [];
foreach ( $res as $row ) {
+ $target = new TitleValue( (int)$row->wl_namespace, $row->wl_title );
// todo these could all be cached at some point?
$watchedItems[] = new WatchedItem(
$user,
- new TitleValue( (int)$row->wl_namespace, $row->wl_title ),
- $row->wl_notificationtimestamp
+ $target,
+ $this->watchedItemStore->getLatestNotificationTimestamp(
+ $row->wl_notificationtimestamp, $user, $target
+ )
);
}
private function getWatchedItemsWithRCInfoQueryJoinConds( array $options ) {
$joinConds = [
- 'watchlist' => [ 'INNER JOIN',
+ 'watchlist' => [ 'JOIN',
[
'wl_namespace=rc_namespace',
'wl_title=rc_title'
<?php
-use Wikimedia\Rdbms\ResultWrapper;
+use Wikimedia\Rdbms\IResultWrapper;
use Wikimedia\Rdbms\IDatabase;
/**
* @param IDatabase $db Database connection being used for the query
* @param array &$items array of pairs ( WatchedItem $watchedItem, string[] $recentChangeInfo ).
* May be truncated if necessary, in which case $startFrom must be updated.
- * @param ResultWrapper|bool $res Database query result
+ * @param IResultWrapper|bool $res Database query result
* @param array|null &$startFrom Continuation value. If you truncate $items, set this to
* [ $recentChangeInfo['rc_timestamp'], $recentChangeInfo['rc_id'] ] from the first item
* removed.
*/
private $loadBalancer;
+ /**
+ * @var JobQueueGroup
+ */
+ private $queueGroup;
+
+ /**
+ * @var BagOStuff
+ */
+ private $stash;
+
/**
* @var ReadOnlyMode
*/
*/
private $cache;
+ /**
+ * @var HashBagOStuff
+ */
+ private $latestUpdateCache;
+
/**
* @var array[] Looks like $cacheIndex[Namespace ID][Target DB Key][User Id] => 'key'
* The index is needed so that on mass changes all relevant items can be un-cached.
/**
* @param ILBFactory $lbFactory
+ * @param JobQueueGroup $queueGroup
+ * @param BagOStuff $stash
* @param HashBagOStuff $cache
* @param ReadOnlyMode $readOnlyMode
* @param int $updateRowsPerQuery
*/
public function __construct(
ILBFactory $lbFactory,
+ JobQueueGroup $queueGroup,
+ BagOStuff $stash,
HashBagOStuff $cache,
ReadOnlyMode $readOnlyMode,
$updateRowsPerQuery
) {
$this->lbFactory = $lbFactory;
$this->loadBalancer = $lbFactory->getMainLB();
+ $this->queueGroup = $queueGroup;
+ $this->stash = $stash;
$this->cache = $cache;
$this->readOnlyMode = $readOnlyMode;
$this->stats = new NullStatsdDataFactory();
$this->revisionGetTimestampFromIdCallback =
[ Revision::class, 'getTimestampFromId' ];
$this->updateRowsPerQuery = $updateRowsPerQuery;
+
+ $this->latestUpdateCache = new HashBagOStuff( [ 'maxKeys' => 3 ] );
}
/**
*/
public function clearUserWatchedItemsUsingJobQueue( User $user ) {
$job = ClearUserWatchlistJob::newForUser( $user, $this->getMaxId() );
- // TODO inject me.
- JobQueueGroup::singleton()->push( $job );
+ $this->queueGroup->push( $job );
}
/**
}
$dbr = $this->getConnectionRef( DB_REPLICA );
+
$row = $dbr->selectRow(
'watchlist',
'wl_notificationtimestamp',
$item = new WatchedItem(
$user,
$target,
- wfTimestampOrNull( TS_MW, $row->wl_notificationtimestamp )
+ $this->getLatestNotificationTimestamp( $row->wl_notificationtimestamp, $user, $target )
);
$this->cache( $item );
$watchedItems = [];
foreach ( $res as $row ) {
+ $target = new TitleValue( (int)$row->wl_namespace, $row->wl_title );
// @todo: Should we add these to the process cache?
$watchedItems[] = new WatchedItem(
$user,
new TitleValue( (int)$row->wl_namespace, $row->wl_title ),
- $row->wl_notificationtimestamp
+ $this->getLatestNotificationTimestamp(
+ $row->wl_notificationtimestamp, $user, $target )
);
}
);
foreach ( $res as $row ) {
+ $target = new TitleValue( (int)$row->wl_namespace, $row->wl_title );
$timestamps[$row->wl_namespace][$row->wl_title] =
- wfTimestampOrNull( TS_MW, $row->wl_notificationtimestamp );
+ $this->getLatestNotificationTimestamp(
+ $row->wl_notificationtimestamp, $user, $target );
}
return $timestamps;
$timestamp = $dbw->timestamp( $timestamp );
}
- $success = $dbw->update(
+ $dbw->update(
'watchlist',
[ 'wl_notificationtimestamp' => $timestamp ],
$conds,
$this->uncacheUser( $user );
- return $success;
+ return true;
+ }
+
+ public function getLatestNotificationTimestamp( $timestamp, User $user, LinkTarget $target ) {
+ $timestamp = wfTimestampOrNull( TS_MW, $timestamp );
+ if ( $timestamp === null ) {
+ return null; // no notification
+ }
+
+ $seenTimestamps = $this->getPageSeenTimestamps( $user );
+ if (
+ $seenTimestamps &&
+ $seenTimestamps->get( $this->getPageSeenKey( $target ) ) >= $timestamp
+ ) {
+ // If a reset job did not yet run, then the "seen" timestamp will be higher
+ return null;
+ }
+
+ return $timestamp;
}
public function resetAllNotificationTimestampsForUser( User $user ) {
* @return bool
*/
public function resetNotificationTimestamp( User $user, Title $title, $force = '', $oldid = 0 ) {
+ $time = time();
+
// Only loggedin user can have a watchlist
if ( $this->readOnlyMode->isReadOnly() || $user->isAnon() ) {
return false;
}
}
+ // Mark the item as read immediately in lightweight storage
+ $this->stash->merge(
+ $this->getPageSeenTimestampsKey( $user ),
+ function ( $cache, $key, $current ) use ( $time, $title ) {
+ $value = $current ?: new MapCacheLRU( 300 );
+ $value->set( $this->getPageSeenKey( $title ), wfTimestamp( TS_MW, $time ) );
+
+ $this->latestUpdateCache->set( $key, $value, IExpiringStore::TTL_PROC_LONG );
+
+ return $value;
+ },
+ IExpiringStore::TTL_HOUR
+ );
+
// If the page is watched by the user (or may be watched), update the timestamp
$job = new ActivityUpdateJob(
$title,
'type' => 'updateWatchlistNotification',
'userid' => $user->getId(),
'notifTime' => $this->getNotificationTimestamp( $user, $title, $item, $force, $oldid ),
- 'curTime' => time()
+ 'curTime' => $time
]
);
+ // Try to enqueue this post-send
+ $this->queueGroup->lazyPush( $job );
- // Try to run this post-send
- // Calls DeferredUpdates::addCallableUpdate in normal operation
- call_user_func(
- $this->deferredUpdatesAddCallableUpdateCallback,
- function () use ( $job ) {
- $job->run();
+ $this->uncache( $user, $title );
+
+ return true;
+ }
+
+ /**
+ * @param User $user
+ * @return MapCacheLRU|null
+ */
+ private function getPageSeenTimestamps( User $user ) {
+ $key = $this->getPageSeenTimestampsKey( $user );
+
+ return $this->latestUpdateCache->getWithSetCallback(
+ $key,
+ IExpiringStore::TTL_PROC_LONG,
+ function () use ( $key ) {
+ return $this->stash->get( $key ) ?: null;
}
);
+ }
- $this->uncache( $user, $title );
+ /**
+ * @param User $user
+ * @return string
+ */
+ private function getPageSeenTimestampsKey( User $user ) {
+ return $this->stash->makeGlobalKey(
+ 'watchlist-recent-updates',
+ $this->lbFactory->getLocalDomainID(),
+ $user->getId()
+ );
+ }
- return true;
+ /**
+ * @param LinkTarget $target
+ * @return string
+ */
+ private function getPageSeenKey( LinkTarget $target ) {
+ return "{$target->getNamespace()}:{$target->getDBkey()}";
}
private function getNotificationTimestamp( User $user, Title $title, $item, $force, $oldid ) {
* @return int|bool
*/
public function countUnreadNotifications( User $user, $unreadLimit = null ) {
+ $dbr = $this->getConnectionRef( DB_REPLICA );
+
$queryOptions = [];
if ( $unreadLimit !== null ) {
$unreadLimit = (int)$unreadLimit;
$queryOptions['LIMIT'] = $unreadLimit;
}
- $dbr = $this->getConnectionRef( DB_REPLICA );
- $rowCount = $dbr->selectRowCount(
- 'watchlist',
- '1',
- [
- 'wl_user' => $user->getId(),
- 'wl_notificationtimestamp IS NOT NULL',
- ],
- __METHOD__,
- $queryOptions
- );
+ $conds = [
+ 'wl_user' => $user->getId(),
+ 'wl_notificationtimestamp IS NOT NULL'
+ ];
+
+ $rowCount = $dbr->selectRowCount( 'watchlist', '1', $conds, __METHOD__, $queryOptions );
- if ( !isset( $unreadLimit ) ) {
+ if ( $unreadLimit === null ) {
return $rowCount;
}
*/
public function removeWatchBatchForUser( User $user, array $targets );
+ /**
+ * Convert $timestamp to TS_MW or return null if the page was visited since then by $user
+ *
+ * Use this only on single-user methods (having higher read-after-write expectations)
+ * and not in places involving arbitrary batches of different users
+ *
+ * Usage of this method should be limited to WatchedItem* classes
+ *
+ * @param string|null $timestamp Value of wl_notificationtimestamp from the DB
+ * @param User $user
+ * @param LinkTarget $target
+ * @return string TS_MW timestamp or null
+ */
+ public function getLatestNotificationTimestamp( $timestamp, User $user, LinkTarget $target );
}
"authmanager-create-no-primary": "nipabeliay a pincen caay pisaungay i canghaw patizeng.",
"authmanager-link-no-primary": "nipabeliay a pincen caay pisaungay i canghaw masasiket.",
"authmanager-link-not-in-progress": "canghaw patizeng caay henay miteka saca kasasiketan kalunasulitan mahedaw tuway, piliyaw miteka aca.",
- "authmanager-authplugin-setpass-failed-title": "misumad mima mungangaw",
- "authmanager-authplugin-setpass-failed-message": "zencen cait ihekal makai misaimed tu mima.",
- "authmanager-authplugin-create-fail": "zencen cait ihekal makai patizeng tu canghaw.",
- "authmanager-authplugin-setpass-denied": "zencen cait ihekal caay mahasa misumad tu mima.",
- "authmanager-authplugin-setpass-bad-domain": "la’cusay a calay-subal(wangyi).",
"authmanager-autocreate-noperm": "caay mahasa lunuk canghaw patizeng.",
"authmanager-autocreate-exception": "lunuk canghaw patizeng zayhan mungangaw sisa nanunuz paedeb.",
"authmanager-userdoesnotexist": "misaungayay canghaw \"$1\" caay henay pangangan.",
"authmanager-create-no-primary": "الاعتمادات الموفرة لم يمكن استخدامها لإنشاء الحساب.",
"authmanager-link-no-primary": "الاعتماد الموفر لم يمكن استخدامه لوصل الحسابات.",
"authmanager-link-not-in-progress": "وصل الحساب ليس جاريا أو بيانات الجلسة تم فقدها. من فضلك ابدأ ثانية من البداية.",
- "authmanager-authplugin-setpass-failed-title": "تغيير كلمة السر فشل",
- "authmanager-authplugin-setpass-failed-message": "إضافة التحقق رفضت تغيير كلمة السر.",
- "authmanager-authplugin-create-fail": "إضافة التحقق رفضت إنشاء الحساب.",
- "authmanager-authplugin-setpass-denied": "إضافة التحقق لا تسمح بتغيير كلمات السر.",
- "authmanager-authplugin-setpass-bad-domain": "نطاق غير صحيح.",
"authmanager-autocreate-noperm": "إنشاء الحساب التلقائي غير مسموح به.",
"authmanager-autocreate-exception": "إنشاء الحسابات التلقائي تم تعطيله مؤقتا نظرا للأخطاء السابقة.",
"authmanager-userdoesnotexist": "حساب المستخدم \"$1\" غير مسجل.",
"authmanager-create-no-primary": "Les credenciales apurríes nun pueden usase pa crear cuentes.",
"authmanager-link-no-primary": "Les credenciales apurríes nun pueden usase pa enllazar cuentes.",
"authmanager-link-not-in-progress": "L'enllazáu de la cuenta nun ta progresando, o perdiéronse los datos de la sesión. Por favor, vuelve de nueves al principiu.",
- "authmanager-authplugin-setpass-failed-title": "Falló'l cambiu de contraseña",
- "authmanager-authplugin-setpass-failed-message": "El complementu d'autenticación refugó'l cambéu de contraseña.",
- "authmanager-authplugin-create-fail": "El complementu d'autenticación refugó la creación de la cuenta.",
- "authmanager-authplugin-setpass-denied": "El complementu de autenticación nun permite cambiar contraseñes.",
- "authmanager-authplugin-setpass-bad-domain": "Dominiu inválidu.",
"authmanager-autocreate-noperm": "Nun se permite la creación automática de cuentes.",
"authmanager-autocreate-exception": "La creación automática de cuentes desactivóse temporalmente por cuenta d'errores previos.",
"authmanager-userdoesnotexist": "La cuenta d'usuariu «$1» nun ta rexistrada.",
"tog-hideminor": "Palsera va <i>Noeltaf betakseem</i> mezolonaf",
"tog-hidepatrolled": "Palsera va fieyen betaks div noeltaf betakseem",
"tog-newpageshidepatrolled": "Palsera va fieyenu bu mal vexala dem warzafu bu",
+ "tog-hidecategorization": "Palsera va bulomara",
"tog-extendwatchlist": "Divatcera va suzdasiki ta nedira va kot rorewan betaks",
"tog-usenewrc": "Noeltaf betakseem tulogijayan (kucilas va Javascript)",
"tog-numberheadings": "Mivaskafa vergumveltotukara",
"tog-watchdefault": "Loplekura va jinon betanu bu iku iyeltak gu suzdaxa",
"tog-watchmoves": "Kosuzdara va jinon arrundan bueem",
"tog-watchdeletion": "Kosuzdara va jinon sulan bueem",
+ "tog-watchuploads": "Loplekura va warzaf iyeltak | Kalvajara ko suzdaxa",
"tog-minordefault": "Jinaf betakseem omavon mezolonon zo torigid",
"tog-previewontop": "Abdinedira nediwer vamoe sutelaxo",
"tog-previewonfirst": "Nedira va abdinedira bal taneafa betara",
"underline-always": "Kotviele",
"underline-never": "Meviele",
"underline-default": "Omavafa exulexa",
+ "editfont-sansserif": "Sans-serif eltayinda",
+ "editfont-serif": "Serif eltayinda",
"sunday": "Taneaviel",
"monday": "Toleaviel",
"tuesday": "Bareaviel",
"retypenew": "Va warzaf remravlem gruyel",
"resetpass_submit": "Va beksa bazel nume zo dogluyatal !",
"changepassword-success": "Rinaf remravlem kiewatcon su zo betar ! Nume rinafa dogluyara tir...",
+ "botpasswords-label-appid": "Stiernaf yolt",
+ "botpasswords-label-create": "Redura",
+ "botpasswords-label-update": "Nuskera",
+ "botpasswords-label-cancel": "Measkira",
+ "botpasswords-label-delete": "Sulara",
+ "botpasswords-label-resetpassword": "Va remravlem gire bazel",
+ "botpasswords-label-grants": "Rorewan rictaks :",
+ "botpasswords-label-grants-column": "Rictan",
+ "botpasswords-bad-appid": "$1 stiernaf yolt me tir enaf.",
+ "botpasswords-created-title": "Remravlem ke stiernik tir reduyun",
+ "botpasswords-updated-title": "Remravlem ke stiernik tir nuskeyen",
+ "botpasswords-deleted-title": "Remravlem ke stiernik tir sulayan",
+ "botpasswords-not-exist": "\"$1\" webesik va stiernik yoltkiraf gu \"$2\" me dadir.",
"resetpass_forbidden": "Kona beksa tir merobetana",
+ "resetpass_forbidden-reason": "Remravlem tir merobetana : $1",
"resetpass-submit-loggedin": "Betara va remravlem",
"resetpass-submit-cancel": "Kuidera",
"resetpass-temp-password": "Ugaloraf remravlem :",
"sig_tip": "Rinafa evlakirafa sugdara",
"hr_tip": "Zidafa gluyaxa ( me faversel )",
"summary": "Vildeks:",
- "subject": "Detce/vergumvelt:",
+ "subject": "Detce :",
"minoredit": "Betamaks.",
"watchthis": "Va bat teliz suzdá",
"savearticle": "Giwara",
+ "savechanges": "Giwara va betakseem",
+ "publishpage": "Busanegara",
+ "publishchanges": "Sanegara va betakseem",
+ "savearticle-start": "Bugiwara...",
+ "savechanges-start": "Giwara va betakseem...",
+ "publishpage-start": "Busanegara...",
+ "publishchanges-start": "Sanegara va betakseem...",
"preview": "Abdinedira",
"showpreview": "Abdinedira",
"showdiff": "Nedira va betakseem",
"anoneditwarning": "'''Obral !''' Rin til medogluyayan. Rinafe IP mane ko bubetarizvot zo stragatar. Ede <strong>[$1 va int dogluyal]</strong> oke <strong>[$2 pataredul]</strong>, betaks ik aryona belunda pu rinaf webesikyolt di zo gad.",
- "missingcommenttext": "Va sebuks vlevon bazel, vay !",
- "summary-preview": "Abdinedira va vildeks:",
- "subject-preview": "Abdinedira va detce ik kroj:",
+ "missingcommenttext": "Va sebuks valevon bazel, vay !!",
+ "summary-preview": "Abdinedira va vildeks :",
+ "subject-preview": "Abdinedira va detce :",
+ "previewerrortext": "Rokla sokiyir edje va betakseem fu abdinedil.",
"blockedtitle": "Elekan favesik",
"blockedtext": "<strong>Rinafa favesikpata oku IP mane tid elekayane.</strong>\n\nElekara skuyuna gan $1.\nLazava tir <em>$2</em>.\n\n* Elekaratoza : $8\n* Eleckaratena : $6\n* Xialana elekara : $7\n\nTa keyaksera va $1 ok konar [[{{MediaWiki:Grouppage-sysop}}|ristusik]] rotuzeral.\nVa '\"e-mail\" staksara pu bat favesik' me rofavel vaxede \"e-mail\" mane tir koe rinaf [[Special:Preferences|lodamaceem]] ise vaon faveson me zo elekayal.\nRinafe tise IP mane tir $3 isen ID elekara tir #$5.\nVa batyona pinta ko kota erura vay di bazel !!",
"blockednoreason": "Meka bazena lazava",
"whitelistedittext": "Ta bubetara rin gonaskil ta $1",
"confirmedittext": "Abdi bubetara va rinafe e-mail mane gogruyel. Kan rinaf [[Special:Preferences|favesiklodamaceem]] va rinafe e-mail mane vay plekul ise tuenal !",
- "nosuchsectiontitle": "Me man gabot",
- "nosuchsectiontext": "Rin yawal da va metis gabot betal.",
+ "nosuchsectiontitle": "Me man gabot trasiyin",
+ "nosuchsectiontext": "Va mekruldes gabot labetal.\nBan in zo arrundayar ike zo sulayar edje va bu nediyil.",
"loginreqtitle": "Kucilan favesikyolt",
"loginreqlink": "dogluyara",
"loginreqpagetext": "$1 tir adrafa ta da va aru bu rodisukel.",
"noarticletext-nopermission": "Dure me krent koe batu bu.\nVanmia yonaru bu [[Special:Search/{{PAGENAME}}|va batu bu rotaneyal]],\noke <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|bu={{FULLPAGENAMEE}}}} va icdef logs rotaneyal]</span>, voxe va batu bu vol ronoredul.",
"userpage-userdoesnotexist": "\"<nowiki>$1</nowiki>\" favesikpata me tir vuesteyena. Vay stujel ede va batu bu roredul ike robetal.",
"userpage-userdoesnotexist-view": "$1 favesikpata me zo koverteyer.",
+ "blocked-notice-logextract": "Bat webesik re zo elekar.\nBocaf \"log\" vuesteks valeveon zo bazer :",
"clearyourcache": "<strong>Note:</strong> After saving, you may have to bypass your browser's cache to see the changes.\n* <strong>Firefox / Safari:</strong> Hold <em>Shift</em> while clicking <em>Reload</em>, or press either <em>Ctrl-F5</em> or <em>Ctrl-R</em> (<em>⌘-R</em> on a Mac)\n* <strong>Google Chrome:</strong> Press <em>Ctrl-Shift-R</em> (<em>⌘-Shift-R</em> on a Mac)\n* <strong>Internet Explorer:</strong> Hold <em>Ctrl</em> while clicking <em>Refresh</em>, or press <em>Ctrl-F5</em>\n* <strong>Opera:</strong> Go to <em>Menu → Settings</em> (<em>Opera → Preferences</em> on a Mac) and then to <em>Privacy & security → Clear browsing data → Cached images and files</em>.",
- "usercssyoucanpreview": "'''Astuce :''' utilisez le bouton '''Prévisualisation''' pour tester votre nouvelle feuille css/js avant de l'enregistrer.",
- "userjsyoucanpreview": "'''Astuce :''' utilisez le bouton '''Prévisualisation''' pour tester votre nouvelle feuille css/js avant de l'enregistrer.",
- "usercsspreview": "'''Rappelez-vous que vous êtes en train de prévisualiser votre propre feuille css et qu'elle n'a pas encore été enregistrée !'''",
+ "usercssyoucanpreview": "<strong>Djasta :</strong> Va \"{{int:showpreview}}\" uzadjo ta weslara va rinaf warzaf CSS abdida giwal.",
+ "userjsonyoucanpreview": "<strong>Djasta :</strong> Va \"{{int:showpreview}}\" uzadjo ta weslara va rinaf warzaf JSON abdida giwal.",
+ "userjsyoucanpreview": "<strong>Djasta :</strong> Va \"{{int:showpreview}}\" uzadjo ta weslara va rinaf warzaf JavaScript abdida giwal.",
+ "usercsspreview": "<strong>Setikel da va rinaf CSS anton abdinedil.\nBan in men zo giwar !</strong>",
+ "userjsonpreview": "<strong>Setikel da va rinaf JSON tazukara anton weslal ike abdinedil.\nBana ina men zo giwar !</strong>",
"userjspreview": "'''Rappelez-vous que vous êtes en train de visualiser ou de tester votre code javascript et qu'il n'a pas encore été enregistré !'''",
+ "sitecsspreview": "<strong>Setikel da va rinaf CSS anton abdinedil.\nBan in men zo giwar !</strong>",
+ "sitejsonpreview": "<strong>Setikel da va rinaf JSON tazukara anton abdinedil.\nBana ina men zo giwar !</strong>",
+ "sitejspreview": "<strong>Setikel da va rinaf JavaScript beks anton abdinedil.\nBana ina men zo giwar !</strong>",
"updated": "(Nuskeyen)",
"note": "'''Straga :'''",
"previewnote": "'''Obral, bat krent anton tir abdinedik.'''\nRinafa betara men tid giwayan !",
"recreate-moveddeleted-warn": "'''Obral: Rin va sulayanu bu djutolredul.'''\n\nGokrafial ede tolredura va batu bu tir vodanyaf.\nSulara \"log\" va batu bu krafiason batlize zo nedir :",
"moveddeleted-notice": "Sulayanu bu.\n\"Log\" sulara va batu bu oku nendara oku arrundara valeveon vuesteson zo nedid.",
"edit-conflict": "Rupera va koboda.",
+ "postedit-confirmation-created": "Bu su zo redur.",
+ "postedit-confirmation-restored": "Bu su zo dimplekur.",
+ "postedit-confirmation-saved": "Betara zo giwayar.",
+ "postedit-confirmation-published": "Betara zo sanegayar.",
"edit-already-exists": "Buredura tir merotisa.\nBu ixam krulder.",
+ "defaultmessagetext": "Omavaf krent",
+ "slot-name-main": "Dalaf",
"content-model-wikitext": "\"wikitext\"",
+ "content-model-text": "Krentack",
+ "content-model-javascript": "JavaScript",
+ "content-json-empty-object": "Nedaca",
+ "content-json-empty-array": "Nedafa wafra",
+ "deprecated-self-close-category": "Bu dem meenafa HTML arttcala",
+ "duplicate-args-warning": "<strong>OBRAL</strong> [[:$1]] va [[:$2]] rozar, kan loa tanoya voda mu \"$3\" dor. Ant bocafa deana voda zo saveter.",
+ "duplicate-args-category": "Bu favesu va jontolayana rustoda ta tezarozara",
"expensive-parserfunction-category": "Bu dem slika rozara va exulerafli",
"post-expand-template-inclusion-warning": "'''Obral !:''' Lum ke toefa teza mantarsaf.\nKonaka teza me di zo kodoplekud.",
"post-expand-template-inclusion-category": "Bu dem lumars ke dofa teza",
"revdelete-show-file-submit": "En",
"logdelete-selected": "{{PLURAL:$1|Reban \"log\" bif|Yon reban \"log\" bif}} :",
"revdelete-legend": "Skus irutareem",
- "revdelete-hide-text": "Palsera va betaracek",
+ "revdelete-hide-text": "Krentbetara",
"revdelete-hide-image": "Palsera va iyeltakcek",
- "revdelete-hide-name": "Palsera va tegira is xala",
- "revdelete-hide-comment": "Palsera va betarasebusiki",
- "revdelete-hide-user": "Palsera va sutes favesikyolt iku IP mane",
+ "revdelete-hide-name": "Palsera va xala is doreem",
+ "revdelete-hide-comment": "Betara va vildeks",
+ "revdelete-hide-user": "Favesikyolt ik IP mane",
"revdelete-hide-restricted": "Rewara va bat irutareem pu kot ristusik az elekara va bati walasiki",
"revdelete-radio-same": "(videra)",
- "revdelete-radio-set": "En",
- "revdelete-radio-unset": "Me",
+ "revdelete-radio-set": "Palsen",
+ "revdelete-radio-unset": "Rowin",
"revdelete-suppress": "Origsulara mal ristusik lidam artan",
"revdelete-unsuppress": "Dimirutara va dimplekun betaks yo",
"revdelete-log": "Lazava :",
- "revdelete-submit": "Ko reban siatos rewar",
- "revdelete-success": "'''Kiewaskinon plekuyuna betarafa rowinuca.'''",
+ "revdelete-submit": "Ko reban {{PLURAL:$1|siatos}} rewar",
+ "revdelete-success": "Rowin siatos nuskeyen.",
+ "revdelete-failure": "Rowin siatos me zo ronusker :\n$1",
"logdelete-success": "'''Kiewaskinon plekuyuna bifafa rowinuca.'''",
"revdel-restore": "Betara va rowinuca",
"pagehist": "Buizvot",
"diff-multi-sameuser": "( {{PLURAL:$1|Tanoya walifa betara|$1 walifa betara}} gan mil menedin favesik )",
"diff-multi-otherusers": "({{PLURAL:$1|Tanoya walif betaks|$1 walif betaks}} gan {{PLURAL:$2|tanoy ar favesik|$2 favesik}} menedin)",
"searchresults": "Aneyan trasikseem",
+ "search-filter-title-prefix-reset": "Aneyara va bueem",
"searchresults-title": "Aneyan trasiks va \"$1\"",
"titlematches": "Vadjesaceem vanmia vergumvelteem",
"textmatches": "Vadjesaceem ko krenteem",
"notextmatches": "Mek krentvergumvelt ruldas va erune",
"prevn": "{{PLURAL:$1|$1}} daref",
"nextn": "{{PLURAL:$1|$1}} diref",
+ "prev-page": "darebu",
+ "next-page": "direbu",
"prevn-title": "Abdif $1 {{PLURAL:$1|trasiks|trasiks}}",
"nextn-title": "Diref $1 {{PLURAL:$1|trasiks}}",
"shown-title": "Nedira va $1 {{PLURAL:$1|trasiks}} tanbuon",
"search-result-category-size": "{{PLURAL:$1|1 bewik|$1 bewik}} ({{PLURAL:$2|1 volveyloma|$2 volveyloma}}, {{PLURAL:$3|1 iyeltak|$3 iyeltak}})",
"search-redirect": "( graskara male $1 )",
"search-section": "($1 gabot)",
+ "search-category": "( $1 loma )",
"search-file-match": "( va cek ke iyeltak aneyar )",
"search-suggest": "Va $1 sugdalayal ?",
+ "search-rewritten": "Nedira va trasiks va $1. Va $2 ikaon aneyal !!",
"search-interwiki-caption": "Beraf abdumimakseem",
"search-interwiki-default": "$1 trasiks :",
"search-interwiki-more": "(loon)",
+ "search-interwiki-more-results": "Lo trasiks",
"search-relatedarticle": "Skedaf",
"searchrelated": "skedaf",
"searchall": "kot",
"search-nonefound": "Mek trasiks vas kucilara",
"powersearch-legend": "Aneyapara",
"powersearch-ns": "Aneyara koe yoltxo:",
+ "powersearch-togglelabel": "Stujera :",
"powersearch-toggleall": "Kot",
"powersearch-togglenone": "Mek",
"search-external": "Divafa aneyara",
"searchdisabled": "<p>La fonction de recherche sur l'intégralité du texte a été temporairement désactivée à cause de la grande charge que cela impose au serveur. Nous espérons la rétablir prochainement lorsque nous disposerons d'un serveur plus puissant. En attendant, vous pouvez faire la recherche avec Google:</p>",
+ "search-error": "Rokla bak aneyara va $1 sokiyir",
+ "search-warning": "Walzera bak aneyara va $1 sokiyir",
"preferences": "Lodamaceem",
"mypreferences": "Jinaf lodamaceem",
"prefs-edits": "Ota va betaks :",
"prefs-skin": "Laviuca",
"skin-preview": "Abdiwira",
"datedefault": "Megelukon",
+ "prefs-user-pages": "Favesikbu",
"prefs-personal": "Ilkagiveem",
"prefs-rc": "Noeltaf betakseem",
"prefs-watchlist": "Suzdasiki",
+ "prefs-editwatchlist": "Betara va suzdaxa",
+ "prefs-editwatchlist-label": "Betara va olk ke suzdaxa :",
+ "prefs-editwatchlist-clear": "Tunedara va suzdaxa",
"prefs-watchlist-days": "Cugafa vielota gonedina koe suzdasiki :",
"prefs-watchlist-days-max": "Cugon $1 {{PLURAL:$1|viel|viel}}",
- "prefs-watchlist-edits": "Betaracugota gonedina koe mantafi suzdasiki :",
+ "prefs-watchlist-edits": "Betaksafa cugota gonedina koe suzdaxa :",
"prefs-watchlist-edits-max": "Cugafa ota : 1000",
"prefs-misc": "Gedrafa lodamaca yo",
"prefs-resetpass": "Betara va remravlem",
+ "prefs-changeemail": "Betara va e-mail mane",
+ "prefs-setemail": "Bazera va e-mail mane",
+ "prefs-email": "Ukeyeem ke e-mail mane",
"prefs-rendering": "Laviuca",
"saveprefs": "Va lodamaceem tuená",
"prefs-editing": "Sutelaxo",
"timezoneregion-indian": "India welfa",
"timezoneregion-pacific": "Pacifika welfa",
"allowemail": "Tutegirara va e-mail staksara mal ar favesik",
- "prefs-searchoptions": "Aneyarikatcura",
+ "prefs-searchoptions": "Aneyara",
"prefs-namespaces": "Yoltxo",
"default": "omava",
"prefs-files": "Iyeltak se",
+ "prefs-custom-css": "Ilkaf CSS",
+ "prefs-custom-json": "Ilkaf JSON",
+ "prefs-custom-js": "Ilkaf JavaScript",
"youremail": "Jinafe internetmane",
- "username": "Favesikyolt:",
- "prefs-memberingroups": "Bewik ke {{PLURAL:$1|lospa|lospa}}:",
+ "username": "{{GENDER:$1|Favesikyolt}} :",
+ "prefs-memberingroups": "{{GENDER:$2|Bewik}} ke {{PLURAL:$1|lospa}} :",
+ "group-membership-link-with-expiry": "$1 ( ik $2 )",
"yourrealname": "Rinaf ageltaf yolt*",
"yourlanguage": "Walasikiava",
"yournick": "Sugdara tori prilara se (do <tt><nowiki>~~~</nowiki></tt>) ",
"prefs-help-email": "E-mail mane tir rotikatcune vox adrafe gu betara va remravlem todon gu vulkura va bat.",
"prefs-help-email-others": "Dere ronaral da rictal da artan va rin kan e-mail is gluyasiki moe rinafu favesikbu oku prilarabu rotuzerar.\nRinafe e-mail mane me zo razdar viele ar webesik uzerar.",
"prefs-help-email-required": "E-mail mane zo kucilar.",
+ "prefs-preview": "Abdinedira",
+ "prefs-advancedrc": "Lo ukey",
+ "prefs-advancedrendering": "Lo ukey",
+ "prefs-advancedsearchoptions": "Lo ukey",
+ "prefs-advancedwatchlist": "Lo ukey",
+ "prefs-displayrc": "Fintara va ukey",
+ "prefs-displaywatchlist": "Fintara va ukey",
+ "prefs-changesrc": "Betaks nedin",
+ "prefs-changeswatchlist": "Betaks nedin",
+ "prefs-pageswatchlist": "Wiyinu bu",
+ "prefs-diffs": "Amid-",
"userrights": "Pofera va favesikrokeem",
- "userrights-lookup-user": "Pofera va favesikeem",
+ "userrights-lookup-user": "Rebara va favesik",
"userrights-user-editname": "Va favesikyolt bazel",
- "editusergroup": "Betara va favesikeem lospa",
+ "editusergroup": "Vajara va favesikafa lospa",
"editinguser": "Betara va rokeem ke '''[[User:$1|$1]]''' favesik ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
"userrights-editusergroup": "Betara va favesiklospa",
"saveusergroups": "Giwara va favesiklospa",
"right-userrights": "Betara va favesikrokeem",
"right-userrights-interwiki": "Betara va favesikrokeem koe aro 'wiki' xo",
"right-siteadmin": "Origakelekara is dimelekara",
+ "grant-group-email": "Staksera va e-mail",
+ "grant-editprotected": "Betara va nendanu bu",
"newuserlogpage": "Buredura \"log\"",
"rightslog": "\"Log\" bu va favesikrokeem",
"rightslogtext": "Tir \"log\" va betara va favesikroka.",
"log-action-filter-upload-upload": "Яңы күсереү",
"log-action-filter-upload-overwrite": "Ҡабаттан тейәү",
"authmanager-create-disabled": "Иҫәп яҙмаһын булдырыу бикләнгән.",
- "authmanager-authplugin-setpass-failed-title": "Серһүҙҙе үҙгәртеү хатаһы",
"authmanager-userdoesnotexist": "\"$1\" иҫәп яҙмаһы теркәлмәгән.",
"authmanager-domain-help": "Тышҡы аутентификация домены (өҫтәмә).",
"authmanager-email-label": "Электрон почта адресы",
"authmanager-create-no-primary": "Пададзеныя ўліковыя зьвесткі ня могуць быць выкарыстаныя для стварэньня рахунку.",
"authmanager-link-no-primary": "Пададзеныя ўліковыя зьвесткі ня могуць быць выкарыстаныя для злучэньня рахункаў.",
"authmanager-link-not-in-progress": "Злучэньне рахункаў не выконваецца або страчаныя зьвесткі сэсіі. Калі ласка, пачніце ізноў спачатку.",
- "authmanager-authplugin-setpass-failed-title": "Памылка зьмены паролю",
- "authmanager-authplugin-setpass-failed-message": "Дадатак аўтэнтыфікацыі адмовіў зьмену паролю.",
- "authmanager-authplugin-create-fail": "Дадатак аўтэнтыфікацыі адмовіў у стварэньні рахунку.",
- "authmanager-authplugin-setpass-denied": "Дадатак аўтэнтыфікацыі не дазваляе зьмяняць паролі.",
- "authmanager-authplugin-setpass-bad-domain": "Няслушны дамэн.",
"authmanager-autocreate-noperm": "Аўтаматычнае стварэньне рахункаў не дазволенае.",
"authmanager-autocreate-exception": "Аўтаматычнае стварэньне рахункаў часова адключанае праз папярэднія памылкі.",
"authmanager-userdoesnotexist": "Рахунак «$1» не зарэгістраваны.",
"authmanager-create-no-primary": "Прадастаўленыя ўліковыя дадзеныя не могуць быць выкарыстаны для стварэння ўліковага запісу.",
"authmanager-link-no-primary": "Прадастаўленыя ўліковыя дадзеныя не могуць быць выкарыстаны для прывязкі рахунку.",
"authmanager-link-not-in-progress": "Звязванне ўліковага запісу не выконваецца або сесія перадачы дадзеных была страчана. Калі ласка, пачніце зноў з самага пачатку.",
- "authmanager-authplugin-setpass-failed-title": "Памылка змены пароля",
- "authmanager-authplugin-setpass-failed-message": "Убудова аўтэнтыфікацыі адмоўлена па змене пароля.",
- "authmanager-authplugin-create-fail": "Убудова аўтэнтыфікацыі адмоўлена ў рэгістрацыі.",
- "authmanager-authplugin-setpass-denied": "Убудова праверкі сапраўднасці не дазваляе змяняць паролі.",
- "authmanager-authplugin-setpass-bad-domain": "Недапушчальны дамен.",
"authmanager-autocreate-noperm": "Аўтаматычнае стварэнне уліковых запісаў не дапускаецца.",
"authmanager-autocreate-exception": "Аўтаматычнае стварэнне уліковых запісаў часова адключана з-за памылак папярэдніх.",
"authmanager-userdoesnotexist": "Уліковы запіс удзельніка \"$1\" не зарэгістраваны.",
"ip_range_invalid": "Невалиден диапазон на IP-адреси.",
"ip_range_toolarge": "Забранено е блокиране на диапазони от IP адреси по-големи от /$1.",
"ip_range_exceeded": "IP диапазонът превишава максималния диапазон. Позволен диапазон: /$1.",
- "ip_range_toolow": "IP диапазониÑ\82е не Ñ\81а поозволени.",
+ "ip_range_toolow": "IP диапазоните не са позволени.",
"proxyblocker": "Блокировач на проксита",
"proxyblockreason": "IP-адресът Ви беше блокиран, тъй като представлява анонимно достъпен междинен сървър.\nСвържете се с доставчика си на Интернет и го информирайте за този сериозен проблем в сигурността.",
"sorbs": "DNSBL",
"log-action-filter-rights-autopromote": "Автоматична промяна",
"log-action-filter-upload-upload": "Ново качване",
"log-action-filter-upload-overwrite": "Повторно качване",
+ "log-action-filter-upload-revert": "Връщане",
"authmanager-create-disabled": "Създаването на сметки е изключено.",
"authmanager-create-from-login": "За да създадете сметка, моля попълнете полетата.",
- "authmanager-authplugin-setpass-failed-title": "Промяната на паролата е неуспешна",
- "authmanager-authplugin-setpass-bad-domain": "Невалиден домейн.",
"authmanager-userdoesnotexist": "Няма регистрирана потребителска сметка за „$1“.",
"authmanager-retype-help": "Парола (повторно) за потвърждение.",
"authmanager-email-label": "Е-поща",
"authmanager-create-no-primary": "সরবরাহকৃত পরিচয়জ্ঞাপক উপাত্তগুলি অ্যাকাউন্ট সৃষ্টির জন্য ব্যবহার করা সম্ভব হয়নি।",
"authmanager-link-no-primary": "সরবরাহকৃত পরিচয়জ্ঞাপক উপাত্তগুলি অ্যাকাউন্ট সংযুক্তকরণের জন্য ব্যবহার করা সম্ভব হয়নি।",
"authmanager-link-not-in-progress": "অ্যাকাউন্ট সংযুক্তকরণ প্রক্রিয়াটি আর অগ্রসর হচ্ছে না কিংবা সেশনের উপাত্ত হারিয়ে গেছে। অনুগ্রহ আবার শুরু থেকে শুরু করুন।",
- "authmanager-authplugin-setpass-failed-title": "পাসওয়ার্ড পরিবর্তন ব্যর্থ হয়েছে",
- "authmanager-authplugin-setpass-failed-message": "প্রমাণীকরণ প্লাগইন পাসওয়ার্ড পরিবর্তন করতে অস্বীকৃতি জানিয়েছে।",
- "authmanager-authplugin-create-fail": "প্রমাণীকরণ প্লাগইন অ্যাকাউন্ট তৈরি করতে অস্বীকৃতি জানিয়েছে।",
- "authmanager-authplugin-setpass-denied": "প্রমাণীকরণ প্লাগইন পাসওয়ার্ড পরিবর্তন করার অনুমতি দেয় না।",
- "authmanager-authplugin-setpass-bad-domain": "অবৈধ ডোমেইন।",
"authmanager-autocreate-noperm": "স্বয়ংক্রিয় অ্যাকাউন্ট সৃষ্টি মঞ্জুরিপ্রাপ্ত নয়।",
"authmanager-autocreate-exception": "স্বয়ংক্রিয় অ্যাকাউন্ট সৃষ্টিকরণ পূর্ববর্তী ত্রুটির কারণে সাময়িকভাবে অক্ষম করা হয়েছে।",
"authmanager-userdoesnotexist": "ব্যবহারকারী অ্যাকাউন্ট \"$1\" অনিবন্ধিত।",
"log-action-filter-block-block": "نیاگری ڤابۊ",
"log-action-filter-block-unblock": "نیاگری نٱڤابۊ",
"log-action-filter-delete-delete": "پاکسا کردن بٱلگاْ",
- "authmanager-authplugin-setpass-bad-domain": "پۊشگر نادیار.",
"authmanager-retype-help": "سی پوشت راسدکاری ز نۉ رازیناْ گوڌٱشتن ناْ بزنین",
"authmanager-email-label": "ٱنجوماناماْ",
"authmanager-email-help": "تیرنشۊن ٱنجوماناماْ",
"authmanager-create-no-primary": "N'eus ket bet gallet implijout an titouroù kred lakaet evit krouiñ ur gont.",
"authmanager-link-no-primary": "Ne c'hallomp ket liammañ ur gont gant an titouroù anaout pourchaset.",
"authmanager-link-not-in-progress": "Ne'z a ket war-raok al liammañ kontoù pe kollet ez eus bet roadennoù dalc'h marteze. Adkrogit adalek ar penn-kentañ.",
- "authmanager-authplugin-setpass-failed-title": "C'hwitet eo bet ar cheñchamant ger-tremen",
- "authmanager-authplugin-setpass-failed-message": "Nac'het eo bet cheñch ar ger-tremen gant an adveziant dilesa.",
- "authmanager-authplugin-create-fail": "Nac'het eo bet krouiñ ar gont gant an adveziant dilesa.",
- "authmanager-authplugin-setpass-denied": "N'eo ket aotreet cheñch gerioù-tremen gant an adveziant dilesa.",
- "authmanager-authplugin-setpass-bad-domain": "Domani direizh.",
"authmanager-autocreate-noperm": "N'haller ket krouiñ kontoù ent emgefre.",
"authmanager-autocreate-exception": "Diweredekaet eo bet ar c'hrouiñ kontoù evit ar mare abalamour da fazioù kent.",
"authmanager-userdoesnotexist": "N'eo ket enrollet ar gont implijer \"$1\".",
"authmanager-create-disabled": "Onemogućeno pravljenje računa.",
"authmanager-create-from-login": "Popunite polja da biste napravili račun.",
"authmanager-create-not-in-progress": "Pravljenje računa nije u toku ili su podaci o sesiji izgubljeni. Počnite ispočetka.",
- "authmanager-authplugin-setpass-failed-title": "Promjena lozinke nije uspjela",
- "authmanager-authplugin-setpass-failed-message": "Dodatak za autentifikaciju odbio je promjenu lozinke.",
- "authmanager-authplugin-create-fail": "Dodatak za autentifikaciju odbio je pravljenje računa.",
- "authmanager-authplugin-setpass-denied": "Dodatak za autentifikaciju ne dozvoljava mijenjanje lozinki.",
- "authmanager-authplugin-setpass-bad-domain": "Neispravna domena.",
"authmanager-autocreate-noperm": "Automatsko pravljenje računa nije dozvoljeno.",
"authmanager-autocreate-exception": "Automatsko pravljenje računa privremeno je onemogućeno zbog prijašnjih greški.",
"authmanager-userdoesnotexist": "Korisnički račun \"$1\" nije registriran.",
"formerror": "Error: No s'han pogut enviar les dades del formulari.",
"badarticleerror": "Aquesta operació no es pot dur a terme en aquesta pàgina.",
"cannotdelete": "No s'ha pogut suprimir la pàgina o fitxer «$1».\nPotser ja l'ha suprimit algú altre.",
- "cannotdelete-title": "No es pot suprimir la pàgina \" $1 \"",
+ "cannotdelete-title": "No es pot suprimir la pàgina «$1»",
"delete-scheduled": "S'ha programat la pàgina «$1» per ser eliminada.\nTingueu paciència.",
"delete-hook-aborted": "Un «hook» ha interromput la supressió.\nNo ha donat cap explicació.",
"no-null-revision": "No s'ha pogut crear una nova revisió nul·la de la pàgina «$1»",
"log-action-filter-suppress-delete": "Supressió de pàgines",
"log-action-filter-upload-upload": "Càrrega nova",
"log-action-filter-upload-overwrite": "Torna a carregar",
+ "log-action-filter-upload-revert": "Reverteix",
"authmanager-authn-not-in-progress": "L'autenticació no està en curs o les dades de sessió s'han perdut. Comenceu de nou des del principi.",
"authmanager-authn-no-primary": "Les dades credencials no s'han pogut autenticar.",
"authmanager-authn-autocreate-failed": "Ha fallat la creació automàtica d'un compte local: $1",
"authmanager-create-disabled": "S'ha inhabilitat la creació de comptes.",
"authmanager-create-from-login": "Per crear un compte, ompliu els camps.",
- "authmanager-authplugin-setpass-failed-title": "El canvi de contrasenya ha fallat",
- "authmanager-authplugin-setpass-bad-domain": "Domini invàlid.",
"authmanager-autocreate-noperm": "No es permet la creació automàtica de comptes.",
"authmanager-userdoesnotexist": "El compte d'usuari «$1» no està registrat.",
"authmanager-username-help": "Nom d'usuari per a l'autenticació.",
"authmanager-create-no-primary": "Uvedené přihlašovací údaje nelze použít pro založení účtu.",
"authmanager-link-no-primary": "Uvedené přihlašovací údaje nelze použít pro propojení účtů.",
"authmanager-link-not-in-progress": "Propojování účtů neprobíhá nebo se ztratila data relace. Začněte, prosíme, znovu od začátku.",
- "authmanager-authplugin-setpass-failed-title": "Změna hesla se nezdařila",
- "authmanager-authplugin-setpass-failed-message": "Autentizační modul změnu hesla zamítl.",
- "authmanager-authplugin-create-fail": "Autentizační modul založení účtu zamítl.",
- "authmanager-authplugin-setpass-denied": "Autentizační modul neumožňuje měnit hesla.",
- "authmanager-authplugin-setpass-bad-domain": "Neplatná doména.",
"authmanager-autocreate-noperm": "Automatické zakládání účtů není povoleno.",
"authmanager-autocreate-exception": "Automatické založení účtu je dočasně zakázáno kvůli předchozím chybám.",
"authmanager-userdoesnotexist": "Uživatelský účet „$1“ není zaregistrován.",
"log-action-filter-upload-revert": "Gendan",
"authmanager-create-disabled": "Kontooprettelse deaktiveret",
"authmanager-create-from-login": "For at oprette din konto, så udfyld venligst felterne.",
- "authmanager-authplugin-setpass-failed-title": "Ændring af adgangskode mislykkedes",
- "authmanager-authplugin-setpass-bad-domain": "Ugyldig domæne.",
"authmanager-autocreate-noperm": "Automatisk kontooprettelse er ikke tilladt.",
"authmanager-userdoesnotexist": "Brugerkontoen \"$1\" er ikke registreret.",
"authmanager-email-label": "E-post",
"authmanager-create-no-primary": "Die angegebenen Anmeldeinformationen konnten nicht für die Benutzerkontenerstellung verwendet werden.",
"authmanager-link-no-primary": "Die angegebenen Anmeldeinformationen konnten nicht für die Benutzerkontenverknüpfung verwendet werden.",
"authmanager-link-not-in-progress": "Die Benutzerkontenverknüpfung ist nicht im Gang oder es sind Sitzungsdaten verloren gegangen. Bitte beginne von vorn.",
- "authmanager-authplugin-setpass-failed-title": "Passwortänderung fehlgeschlagen",
- "authmanager-authplugin-setpass-failed-message": "Das Authentifizierungs-Plugin hat die Passwortänderung abgelehnt.",
- "authmanager-authplugin-create-fail": "Das Authentifizierungs-Plugin hat die Benutzerkontenerstellung abgelehnt.",
- "authmanager-authplugin-setpass-denied": "Das Authentifizierungs-Plugin erlaubt keine Passwortänderungen.",
- "authmanager-authplugin-setpass-bad-domain": "Ungültige Domain.",
"authmanager-autocreate-noperm": "Die automatische Benutzerkontenerstellung ist nicht erlaubt.",
"authmanager-autocreate-exception": "Die automatische Benutzerkontenerstellung ist aufgrund früherer Fehler vorübergehend deaktiviert.",
"authmanager-userdoesnotexist": "Das Benutzerkonto „$1“ ist nicht registriert.",
"unprotect": "Starnayışi bıvurne",
"newpage": "Perra newi",
"talkpagelinktext": "werênayış",
- "specialpage": "Perra xısusiye",
+ "specialpage": "Pela xısusiye",
"personaltools": "Hacetê şexsiy",
"talk": "Werênayış",
"views": "Asayışi",
"showtoc": "bımocne",
"hidetoc": "bınımne",
"collapsible-collapse": "Teng ke",
- "collapsible-expand": "Hera kerê",
+ "collapsible-expand": "Hira ke",
"confirmable-confirm": "{{GENDER:$1|Şıma}} pêbawerê?",
"confirmable-yes": "Eya",
"confirmable-no": "Nê",
"nstab-main": "Pele",
"nstab-user": "Pera karberi",
"nstab-media": "Pela medya",
- "nstab-special": "Perra xısusiye",
+ "nstab-special": "Pela xısusiye",
"nstab-project": "Perra proji",
"nstab-image": "Dosya",
"nstab-mediawiki": "Mesac",
"unstrip-depth-warning": "Sinorê newekerdışê ($1) viyarna ra",
"unstrip-size-warning": "Sinorê newekerdışê ($1) viyarna ra",
"converter-manual-rule-error": "Rehberê zıwan açarnayışi dı xırabin tesbit biya",
- "undo-success": "No vurnayiş tepeye geryeno. pêverronayişêyê cêrıni kontrol bıkeri.",
- "undo-failure": "Poxta pëverameyişa vurnayişan ra peyd grotışë kari në bı",
- "undo-norev": "Vurnayiş tepêya nêgeryeno çunke ya vere cû hewna biyo ya zi ca ra çino.",
- "undo-summary": "Vırnayışê $1'i [[Special:Contributions/$2|$2i]] ([[User talk:$2|Werênayış]]) peyser gırewt",
+ "undo-success": "Eno vurnayış şeno peyser bıgêriyo. Kerem ke, têvereştışê cêrêni kontrol ke, waştena nê vurnayışi kerdene rê bawer be û be qeydkerdışê pele ra vurnayışê vêrêni peyser bıgê.",
+ "undo-failure": "Seba vurnayışanê yewbininêgırewteyan ra vurnayış peyser nêgêriya.",
+ "undo-norev": "Vurnayış peyser nêgêriyeno, çıke çıniyo ya zi esteriyayo.",
+ "undo-nochange": "Vurnayış xora zey peysergırewte aseno.",
+ "undo-summary": "[[Special:Contributions/$2|$2]]i ([[User talk:$2|werênayış]]) vurnayışê $1i peyser gırewt",
"undo-summary-username-hidden": "Rewizyona veri $1'i hewada",
"cantcreateaccount-text": "Hesabvıraştışê na IP adrese ('''$1''') terefê [[User:$3|$3]] kılit biyo.\n\nSebebo ke terefê $3 ra diyao ''$2''",
"viewpagelogs": "Qeydanê na pele bımocne",
"lineno": "Xeta $1:",
"compareselectedversions": "Rewizyonanê weçineyan pêver ke",
"showhideselectedversions": "weçinaye revizyona bımotne/bınımne",
- "editundo": "Peyser bıgêre",
+ "editundo": "peyser bıgê",
"diff-empty": "(Babetna niyo)",
"diff-multi-sameuser": "(Terefê eyni karberi ra {{PLURAL:$1|yew revizyono miyanên nêmocno|$1 revizyonê miyanêni nêmocnê}})",
"diff-multi-otherusers": "(Terefê {{PLURAL:$2|yew karberi|$2 karberan}} ra {{PLURAL:$1|yew revizyono miyanên nêmocno|$1 revizyonê miyanêni nêmocnê}})",
"tooltip-t-emailuser": "{{GENDER:$1|Enê karberi}} rê yew e-poste bırışe",
"tooltip-t-info": "Derheqê ena pele de zêdêr melumat",
"tooltip-t-upload": "Dosyeyan bar ke",
- "tooltip-t-specialpages": "Listeya peranê hısusiyan hemın",
+ "tooltip-t-specialpages": "Yew lista pelanê xısusiyanê pêroyinan",
"tooltip-t-print": "Versiyono perre ro ke nuşterniyaye.",
"tooltip-t-permalink": "Gırêyo daimi be ena versiyonê pele",
"tooltip-ca-nstab-main": "Pela zerreki bıvêne",
"tooltip-recreate": "pel hewn a bışiyo zi tepiya biya",
"tooltip-upload": "Sergen de bari be",
"tooltip-rollback": "\"Peyser biya\" be yew tık pela iştıraqanê peyênan peyser ano",
- "tooltip-undo": "\"Undo\" ena vurnayışê newi iptal kena u vurnayışê verni a kena.\nTı eşkeno yew sebeb bınus.",
+ "tooltip-undo": "\"Peyser\" nê vurnayışi peyser ano û modusê verqayti de vurnayışê formi keno a. Têserkerdışê yew sebebi rê xulasa de imkan dano cı.",
"tooltip-preferences-save": "Terciha qeyd ke",
"tooltip-summary": "Xulasa kılmek bınuse",
"interlanguage-link-title": "$1 - $2",
"version": "Versiyon",
"version-extensions": "Ekstensiyonî ke ronaye",
"version-skins": "Bar kerde bejni",
- "version-specialpages": "Perê hısusiy",
+ "version-specialpages": "Pelê xısusiyi",
"version-parserhooks": "Çengelê Parserî",
"version-variables": "Vurnayeyî",
"version-editors": "Vurnayoği",
"tag-mw-blank-description": "Vengiya na pele bıvurne",
"tag-mw-replace": "Zerrek vurriya",
"tag-mw-rollback": "Peyserardış",
- "tag-mw-undo": "Peyser bıgêrê",
+ "tag-mw-undo": "Peyser bıgê",
"tags-title": "Etiketi",
"tags-intro": "Ena pele etiketê ke be vurnayışê nuşiyayışi ra nişan biyê û maneyê inan lista kena.",
"tags-tag": "Nameyê etiketi",
"htmlform-int-toohigh": "Ena değer ke ti spesife kerd maxsimumê $1î ra zafyer o.",
"htmlform-required": "Ena deger lazim o",
"htmlform-submit": "Bişirav",
- "htmlform-reset": "Vurnayişî reyna biyar",
+ "htmlform-reset": "Vurnayışan peyser bıgê",
"htmlform-selectorother-other": "Sewbi",
"htmlform-no": "Nê",
"htmlform-yes": "Eya",
"log-action-filter-upload-upload": "Νέα μεταφόρτωση",
"log-action-filter-upload-overwrite": "Επαναμεταφόρτωση",
"authmanager-create-disabled": "Η δημιουργία λογαριασμού έχει απενεργοποιηθεί.",
- "authmanager-authplugin-setpass-failed-title": "Η αλλαγή κωδικού πρόσβασης απέτυχε",
"authmanager-email-label": "Διεύθυνση ηλ. ταχυδρομείου",
"authmanager-email-help": "Διεύθυνση ηλεκτρονικού ταχυδρομείου:",
"authmanager-realname-label": "Πραγματικό όνομα",
"ipb-confirm": "Confirm block",
"ipb-sitewide": "Sitewide",
"ipb-partial": "Partial",
+ "ipb-sitewide-help": "Every page on the wiki and all other contribution actions.",
+ "ipb-partial-help": "Specific pages or namespaces.",
"ipb-pages-label": "Pages",
"ipb-namespaces-label": "Namespaces",
"badipaddress": "Invalid IP address",
"authmanager-create-no-primary": "La provizitaj legitimaĵoj ne povus esti uzita por konta kreo.",
"authmanager-link-no-primary": "La provizitaj legitimaĵoj ne povus esti uzita por konta ligado.",
"authmanager-link-not-in-progress": "La kontokreado ne estas progresanta aŭ la sencaj datumoj perdiĝis. Bonvolu provi denove ekde la komenco.",
- "authmanager-authplugin-setpass-failed-title": "Pasvorta ŝanĝo malsukcesis",
- "authmanager-authplugin-setpass-failed-message": "La aŭtentikigado kromprogramo neis la pasvortan ŝanĝon.",
- "authmanager-authplugin-create-fail": "La kromprogramo de aŭtentikigado neis la keon de konto.",
- "authmanager-authplugin-setpass-denied": "La kromprogramaro de aŭtentikigado ne permisas ŝanĝadon de pasvorto.",
- "authmanager-authplugin-setpass-bad-domain": "Malvalida domajno.",
"authmanager-autocreate-noperm": "Aŭtomata kreo de konto ne estas permesita.",
"authmanager-autocreate-exception": "Aŭtomata kreo de konto estas provizore malfunkciigita pro antaŭaj eraroj.",
"authmanager-userdoesnotexist": "Uzanto-konto \"$1\" ne estas registrita.",
"logentry-rights-autopromote": "$1 ha sido {{GENDER:$2|promocionado|promocionada}} automáticamente de $4 a $5",
"logentry-upload-upload": "$1 {{GENDER:$2|subió}} $3",
"logentry-upload-overwrite": "$1 {{GENDER:$2|subió}} una nueva versión de $3",
- "logentry-upload-revert": "$1 {{GENDER:$2|subió}} $3",
+ "logentry-upload-revert": "$1 {{GENDER:$2|revirtió}} $3 a una versión anterior",
"log-name-managetags": "Registro de gestión de etiquetas",
"log-description-managetags": "Esta página muestra las acciones realizadas sobre las [[Special:Tags|etiquetas]]. El registro solo contiene acciones llevadas a cabo por un administrador de forma manual; el software del wiki podría crear o eliminar etiquetas sin que se registre aquí.",
"logentry-managetags-create": "$1 {{GENDER:$2|creó}} la etiqueta «$4»",
"log-action-filter-suppress-reblock": "Usuario supresión de rebloqueo",
"log-action-filter-upload-upload": "Subida nueva",
"log-action-filter-upload-overwrite": "Volver a subir",
+ "log-action-filter-upload-revert": "Revertir",
"authmanager-authn-not-in-progress": "La autenticación no está en curso o los datos de sesión se han perdido. Por favor, vuelve a empezar desde el principio.",
"authmanager-authn-no-primary": "Las credenciales proporcionadas no se han podido autentificar.",
"authmanager-authn-no-local-user": "Las credenciales suministradas no están asociadas con ningún usuario en este wiki.",
"authmanager-create-no-primary": "Las credenciales suministradas no pueden usarse para la creación de la cuenta.",
"authmanager-link-no-primary": "Las credenciales proporcionadas no se han podido utilizar para enlazar cuentas.",
"authmanager-link-not-in-progress": "La vinculación de cuentas no está en curso o los datos de la sesión se han perdido. Por favor, vuelve a empezar desde el principio.",
- "authmanager-authplugin-setpass-failed-title": "Error de cambio de contraseña",
- "authmanager-authplugin-setpass-failed-message": "El complemento de autenticación denegó el cambio de contraseña.",
- "authmanager-authplugin-create-fail": "El complemento de autenticación denegó la creación de la cuenta.",
- "authmanager-authplugin-setpass-denied": "El complemento de autenticación no permite el cambio de contraseñas.",
- "authmanager-authplugin-setpass-bad-domain": "El dominio no es válido.",
"authmanager-autocreate-noperm": "La creación automática de cuentas no está permitida.",
"authmanager-autocreate-exception": "La creación automática de cuentas ha sido temporalmente desactivada debido a errores previos.",
"authmanager-userdoesnotexist": "El usuario «$1» no está registrado.",
"authmanager-create-no-primary": "Ette antud autentimisandmetega ei õnnestunud kontot luua.",
"authmanager-link-no-primary": "Ette antud autentimisandmetega ei õnnestunud kontot linkida.",
"authmanager-link-not-in-progress": "Konto linkimine pole teoksil või läksid seansiandmed kaduma. Palun alusta uuesti.",
- "authmanager-authplugin-setpass-failed-title": "Parooli muutmine ebaõnnestus",
- "authmanager-authplugin-setpass-failed-message": "Autentimise tarkvaralisa keeldus parooli muutmast.",
- "authmanager-authplugin-create-fail": "Autentimise tarkvaralisa keeldus kontot loomast.",
- "authmanager-authplugin-setpass-denied": "Autentimise tarkvaralisa ei luba paroole muuta.",
- "authmanager-authplugin-setpass-bad-domain": "Vigane domeen.",
"authmanager-autocreate-noperm": "Kontode automaatne loomine pole lubatud.",
"authmanager-autocreate-exception": "Kontode automaatne loomine on varasemate tõrgete tõttu ajutiselt keelatud.",
"authmanager-userdoesnotexist": "Kasutajakonto \"$1\" pole registreeritud.",
"authmanager-create-no-primary": "Ezin izan dira hornitutako kredentzialak kontu-sortzerakoan erabili.",
"authmanager-link-no-primary": "Ezin izan dira hornitutako kredentzialak kontuari lotzeko erabili.",
"authmanager-link-not-in-progress": "Kontua sortzea ez doa aurrera edo saioaren datuak galdu egin dira. Hasi berriro hasieratik mesedez.",
- "authmanager-authplugin-setpass-failed-title": "Ezin izan da pasahitza aldatu",
- "authmanager-authplugin-setpass-failed-message": "Autentifikazio pluginak pasahitza aldatzea ukatu du.",
- "authmanager-authplugin-create-fail": "Autentifikazio pluginak kontua sortzea ukatu du.",
- "authmanager-authplugin-setpass-denied": "Autentifikazio pluginak pasahitza aldatzerik ez du ahalbidetzen.",
- "authmanager-authplugin-setpass-bad-domain": "Balio ez duen domeinua.",
"authmanager-autocreate-noperm": "Ezin da automatikoki erabiltzaile bat sortu.",
"authmanager-autocreate-exception": "Kontua automatikoki sortzea aldi baterako desgaituta aurreko erroreak direla eta.",
"authmanager-userdoesnotexist": "\"$1\" erabiltzaile kontua ez dago erregistratua.",
"authmanager-create-no-primary": "اطلاعات اعتبارسنجی ارائه شده نمیتواند جهت ايجاد حساب بکار رود.",
"authmanager-link-no-primary": "اطلاعات اعتبارسنجی ارائه شده نمیتواند جهت مرتبط کردن حساب بکار رود.",
"authmanager-link-not-in-progress": "مرتبط کردن حساب در جريان نيست یا اطلاعات جلسه کاری از بين رفته است. لطفاً دوباره از ابتدا شروع کنيد.",
- "authmanager-authplugin-setpass-failed-title": "تغییر گذرواژه ناموفق بود",
- "authmanager-authplugin-setpass-failed-message": "افزونهٔ اعتبارسنجی، تغيير گذزواژه را مردود دانست",
- "authmanager-authplugin-create-fail": "افزونهٔ اعتبارسنجی، ايجاد حساب را مردود دانست",
- "authmanager-authplugin-setpass-denied": "افزونهٔ اعتبارسنجی اجازهٔ تغيير گذرواژه را نمیدهد",
- "authmanager-authplugin-setpass-bad-domain": "دامنه نامعتبر است.",
"authmanager-autocreate-noperm": "ایجاد حساب خودکار مجاز نیست.",
"authmanager-autocreate-exception": "ایجاد حساب کاربری به خاطر خطاهای قبلی به طور موقت غیرفعال است.",
"authmanager-userdoesnotexist": "حساب کاربری «$1» ثبت نشدهاست.",
"authmanager-create-no-primary": "Annettuja kirjautumistietoja ei voitu käyttää tunnuksen luontiin.",
"authmanager-link-no-primary": "Annettuja kirjautumistietoja ei voitu käyttää tunnuksen linkittämiseen.",
"authmanager-link-not-in-progress": "Tunnuksen linkitys ei ole käynnissä tai istunnon tiedot ovat hävinneet. Ole hyvä ja aloita uudelleen alusta.",
- "authmanager-authplugin-setpass-failed-title": "Salasanan muuttaminen epäonnistui",
- "authmanager-authplugin-setpass-failed-message": "Varmennuslisäosa esti salasanan muuttamisen.",
- "authmanager-authplugin-create-fail": "Varmennuslisäosa esti tunnuksen luonnin.",
- "authmanager-authplugin-setpass-denied": "Varmennuslisäosa ei salli salasanojen muuttamista.",
- "authmanager-authplugin-setpass-bad-domain": "Virheellinen domain.",
"authmanager-autocreate-noperm": "Automaattinen tunnustenluonti ei ole sallittu.",
"authmanager-autocreate-exception": "Automaattinen tunnuksenluonti on tilapäisesti poistettu käytöstä aikaisempien virheiden vuoksi.",
"authmanager-userdoesnotexist": "Käyttäjätunnusta ”$1” ei ole rekisteröity.",
"authmanager-create-no-primary": "Les informations d’identification fournies n’ont pas pu être utilisées pour la création de compte.",
"authmanager-link-no-primary": "Les informations d’identification fournies n’ont pas pu être utilisées pour lier un compte.",
"authmanager-link-not-in-progress": "La liaison de compte n’est pas en cours ou les données de session ont été perdues. Veuillez recommencer depuis le début.",
- "authmanager-authplugin-setpass-failed-title": "Échec du changement de mot de passe",
- "authmanager-authplugin-setpass-failed-message": "Le module d’authentification a refusé le changement de mot de passe.",
- "authmanager-authplugin-create-fail": "Le module d’authentification a refusé la création de compte.",
- "authmanager-authplugin-setpass-denied": "Le module d’authentification ne permet pas la modification des mots de passe.",
- "authmanager-authplugin-setpass-bad-domain": "Domaine non valide.",
"authmanager-autocreate-noperm": "La création automatique de compte n’est pas autorisée.",
"authmanager-autocreate-exception": "La création automatique de compte est désactivée temporairement, du fait d’erreurs antérieures.",
"authmanager-userdoesnotexist": "Le compte utilisateur « $1 » n’est pas inscrit.",
"anoncontribs": "Contribucións",
"contribsub2": "De {{GENDER:$3|$1}} ($2)",
"contributions-userdoesnotexist": "A conta de usuario \"$1\" non está rexistrada.",
+ "negative-namespace-not-supported": "Non están soportados os espazos de nomes con valore negativos.",
"nocontribs": "Non se deron atopado cambios con eses criterios.",
"uctop": "actual",
"month": "Desde o mes de (e anteriores):",
"logentry-rights-autopromote": "$1 foi {{GENDER:$2|promovido|promovida}} automaticamente de $4 a $5",
"logentry-upload-upload": "$1 {{GENDER:$2|cargou}} \"$3\"",
"logentry-upload-overwrite": "$1 {{GENDER:$2|cargou}} unha nova versión de \"$3\"",
- "logentry-upload-revert": "$1 {{GENDER:$2|cargou}} \"$3\"",
+ "logentry-upload-revert": "$1 {{GENDER:$2|reverteu}} $3 a unha versión antiga",
"log-name-managetags": "Rexistro de xestión de etiquetas",
"log-description-managetags": "Esta páxina contén unha lista das tarefas de xestión relacionadas con [[Special:Tags|tags]]. No rexistro figuran só aquelas accións realizadas de forma manual por un administrador; pódense crear ou borrar etiquetas por medio do software wiki sen que se engada unha nova entrada ao rexistro.",
"logentry-managetags-create": "$1 {{GENDER:$2|created}} a etiqueta \"$4\"",
"expand_templates_generate_rawhtml": "Amosar o HTML en bruto",
"expand_templates_preview": "Vista previa",
"expand_templates_preview_fail_html": "<em>Dado que o código HTML puro está activado en {{SITENAME}} e se produciu unha perda dos datos da sesión, a vista previa está oculta como precaución contra ataques mediante código JavaScript.</em>\n\n<strong>Se este é un intento lexítimo de acceso á vista previa, probe de novo.</strong>\nEn caso de que siga sen funcionar, intente [[Special:UserLogout|saír]] e volver entrar na súa conta e verifique que o seu navegador permite o uso de cookies neste sitio.",
- "expand_templates_preview_fail_html_anon": "<em>Dado que o código HTML puro está activado en {{SITENAME}} e produciuse unha perda dos datos da sesión, a vista previa está oculta como precaución contra ataques mediante código JavaScript.</em>\n\n<strong>Se este é un intento lexítimo de acceso á vista previa, probe a [[UserLogin|iniciar a sesión]] e volver a entrar coa súa conta.</strong>",
+ "expand_templates_preview_fail_html_anon": "<em>Dado que o código HTML puro está activado en {{SITENAME}} e non iniciou sesión, a vista previa está oculta como precaución contra ataques mediante código JavaScript.</em>\n\n<strong>Se este é un intento lexítimo de acceso á vista previa, probe a [[Special:UserLogin|iniciar a sesión]] e ténteo de novo.</strong>",
"expand_templates_input_missing": "Necesita proporcionar polo menos algún texto wiki de entrada.",
"pagelanguage": "Cambiar a lingua da páxina",
"pagelang-name": "Páxina",
"log-action-filter-suppress-reblock": "Supresión de usuario por bloqueo reiterado",
"log-action-filter-upload-upload": "Nova subida",
"log-action-filter-upload-overwrite": "Resubida",
+ "log-action-filter-upload-revert": "Reverter",
"authmanager-authn-not-in-progress": "O proceso de autenticación non está en progreso ou perdéronse os datos da sesión. Empece de novo desde o principio.",
"authmanager-authn-no-primary": "A información de identificación proporcionada non pode ser autenticada.",
"authmanager-authn-no-local-user": "As credenciais proporcionadas non están asociadas con ningún usuario neste wiki.",
"authmanager-create-no-primary": "As credenciais subministradas non poden usarse para a creación da conta.",
"authmanager-link-no-primary": "As credenciais subministradas non poden usarse para a ligazón da conta.",
"authmanager-link-not-in-progress": "A vinculación da conta non está en progreso ou perdéronse os datos da sesión. Empece de novo desde o principio.",
- "authmanager-authplugin-setpass-failed-title": "Fallou o cambio do contrasinal",
- "authmanager-authplugin-setpass-failed-message": "O complemento de autenticación denegou o cambio de contrasinal.",
- "authmanager-authplugin-create-fail": "O complemento de autenticación denegou a creación da conta.",
- "authmanager-authplugin-setpass-denied": "O complemento de autenticación non permite o cambio de contrasinais.",
- "authmanager-authplugin-setpass-bad-domain": "Dominio non válido.",
"authmanager-autocreate-noperm": "A creación automatica de contas non está permitida.",
"authmanager-autocreate-exception": "A creación automatica de contas foi desactivada temporalmente debido a erros previos.",
"authmanager-userdoesnotexist": "O usuario \"$1\" non está rexistrado.",
"rcfilters-filter-pageedits-label": "Panacheo sompadonam",
"rcfilters-filter-categorization-label": "Vorgache bodol",
"rcfilters-filtergroup-lastRevision": "Akherchim uzollnnim",
+ "rcfilters-filter-lastrevision-label": "Sogleanvon novi uzollnni",
"rcfilters-tag-prefix-namespace-inverted": "$1 <strong>:nhoi</strong>",
"rcnotefrom": "Sokoil <strong>$3, $4<strong> savn {{PLURAL:$5|zalelem bodol dilam|zalelem bodol dileant}} (<strong>$1<strong> meren {{PLURAL:$5|dakhoilam|dakhoileant}}).",
"rclistfrom": "$3 $2 savn suru zatelim nove bodol dakhoi",
"logentry-rights-autopromote": "$1 קודם אוטומטית מ{{GRAMMAR:תחילית|$4}} ל{{GRAMMAR:תחילית|$5}}",
"logentry-upload-upload": "$1 {{GENDER:$2|העלה|העלתה}} את $3",
"logentry-upload-overwrite": "$1 {{GENDER:$2|העלה|העלתה}} גרסה חדשה של $3",
- "logentry-upload-revert": "$1 {{GENDER:$2|×\94×¢×\9c×\94|×\94×¢×\9cת×\94}} ×\90ת $3",
+ "logentry-upload-revert": "$1 {{GENDER:$2|ש×\97×\96ר|ש×\97×\96ר×\94}} ×\90ת $3 ×\9c×\92רס×\94 ×\99×©× ×\94",
"log-name-managetags": "יומן ניהול תגיות",
"log-description-managetags": "דף זה כולל רשימה של פעולות ניהול הקשורות ל[[Special:Tags|תגיות]]. היומן כולל רק פעולות שבוצעו ידנית על־ידי מפעיל מערכת; ייתכן שתגיות ייווצרו או יימחקו על־ידי תוכנת הוויקי ללא הוספת ערך ליומן זה.",
"logentry-managetags-create": "$1 {{GENDER:$2|יצר|יצרה}} את התגית \"$4\"",
"log-action-filter-suppress-reblock": "העלמות של משתמשים באמצעות חסימה מחדש",
"log-action-filter-upload-upload": "העלאות של קבצים חדשים",
"log-action-filter-upload-overwrite": "דריסות של קבצים קיימים",
+ "log-action-filter-upload-revert": "שחזורי קבצים לגרסה ישנה",
"authmanager-authn-not-in-progress": "האימות נכשל או שנתוני הפעולה נאבדו. נא להתחיל את התהליך מחדש.",
"authmanager-authn-no-primary": "לא ניתן היה לאמת את נתוני ההזדהות שסופקו.",
"authmanager-authn-no-local-user": "נתוני ההזדהות שסופקו אינם שייכים לשום משתמש באתר זה.",
"authmanager-create-no-primary": "נתוני ההזדהות שסופקו לא יכולים להיות בשימוש ביצירת חשבון.",
"authmanager-link-no-primary": "נתוני ההזדהות שסופקו לא יכולים להיות בשימוש לשם קישור חשבונות.",
"authmanager-link-not-in-progress": "קישור החשבונות נכשל או שנתוני הפעולה נאבדו. נא להתחיל את התהליך מחדש.",
- "authmanager-authplugin-setpass-failed-title": "שינוי הסיסמה נכשל",
- "authmanager-authplugin-setpass-failed-message": "תוסף האימות דחה את שינוי הסיסמה.",
- "authmanager-authplugin-create-fail": "תוסף האימות דחה את יצירת החשבון.",
- "authmanager-authplugin-setpass-denied": "תוסף האימות אינו מאפשר לשנות סיסמאות.",
- "authmanager-authplugin-setpass-bad-domain": "דומיין לא תקין.",
"authmanager-autocreate-noperm": "אין אפשרות ליצור חשבונות באופן אוטומטי.",
"authmanager-autocreate-exception": "יצירת חשבונות אוטומטית מבוטלת באופן אוטומטי בשל שגיאות קודמות.",
"authmanager-userdoesnotexist": "חשבון המשתמש \"$1\" אינו רשום.",
"authmanager-create-no-primary": "खाता निर्माण के लिए आपूर्ति की गई क्रेडेंशियल्स का उपयोग नहीं किया जा सका।",
"authmanager-link-no-primary": "खाता लिंकिंग के लिए आपूर्ति की गई क्रेडेंशियल का उपयोग नहीं किया जा सका।",
"authmanager-link-not-in-progress": "खाता लिंक प्रगति में नहीं है या सत्र डेटा खो गया है। कृपया शुरुआत से फिर से शुरू करें",
- "authmanager-authplugin-setpass-failed-title": "पासवर्ड बदलाव विफल हुआ।",
- "authmanager-authplugin-setpass-failed-message": "प्रमाणन प्लगइन ने पासवर्ड बदलाव से इनकार किया।",
- "authmanager-authplugin-create-fail": "प्रमाणीकरण प्लग इन ने खाता निर्माण को अस्वीकार कर दिया।",
- "authmanager-authplugin-setpass-denied": "प्रमाणन प्लगइन पासवर्ड बदलने की अनुमति नहीं देता है",
- "authmanager-authplugin-setpass-bad-domain": "अमान्य जालस्थल।",
"authmanager-autocreate-noperm": "स्वचालित खाता निर्माण की अनुमति नहीं है।",
"authmanager-autocreate-exception": "स्वचालित खाता निर्माण को पहले के कुछ त्रुटियों के कारण कुछ समय के लिए निष्क्रिय किया गया है।",
"authmanager-userdoesnotexist": "सदस्य खाता \"$1\" पंजीकृत नहीं है।",
"authmanager-create-no-primary": "Supplied credentials ke account banae me nai kaam me laae sakaa.",
"authmanager-link-no-primary": "Supplied credentials ke account linking me nai kaam me laae sakaa.",
"authmanager-link-not-in-progress": "Account linking progress me nai hai, nai to, session data has been lost. Meharbaani kar ke suruu se suruu karo.",
- "authmanager-authplugin-setpass-failed-title": "Pasword ke nai badle sakaa",
- "authmanager-authplugin-setpass-failed-message": "The authentication plugin denied the password change.",
- "authmanager-authplugin-create-fail": "The authentication plugin denied the account creation.",
- "authmanager-authplugin-setpass-denied": "The authentication plugin does not allow changing passwords.",
- "authmanager-authplugin-setpass-bad-domain": "Domain invalid hai.",
"authmanager-autocreate-noperm": "Automatic account creation, allowed nai hai.",
"authmanager-autocreate-exception": "Automatic account creation ke temporarily disable kar dewa gais hai, due to prior errors.",
"authmanager-userdoesnotexist": "User account \"$1\" abhi registered nai hai",
"anoncontribs": "Közreműködések",
"contribsub2": "$1 ($2)",
"contributions-userdoesnotexist": "Nincs regisztrálva „$1” szerkesztői azonosító.",
+ "negative-namespace-not-supported": "Negatív értékű névterek nem támogatottak.",
"nocontribs": "Nem található a feltételeknek megfelelő változtatás.",
"uctop": "aktuális",
"month": "E hónap végéig:",
"logentry-rights-autopromote": "$1 automatikusan előléptetve erről: $4 erre: $5",
"logentry-upload-upload": "$1 {{GENDER:$2|feltöltötte}} ezt: $3",
"logentry-upload-overwrite": "$1 $3 új verzióját {{GENDER:$2|töltötte}} fel",
- "logentry-upload-revert": "$1 {{GENDER:$2|feltöltötte}} $3-t",
+ "logentry-upload-revert": "$1 {{GENDER:$2|visszaállította}} „$3”-t egy régebbi változatra",
"log-name-managetags": "Címkekezelési napló",
"log-description-managetags": "Ez a lap a [[Special:Tags|címkék]] kezelésével kapcsolatos tevékenységeket listázza. A napló csak azokat a műveleteket tartalmazza, amelyet az adminisztrátorok kézzel hajtottak végre; a wikiszoftver képes naplóbejegyzés nélkül is létrehozni és törölni címkéket.",
"logentry-managetags-create": "$1 {{GENDER:$2|létrehozta}} a(z) „$4” címkét",
"log-action-filter-suppress-reblock": "Felhasználó elrejtést újra blokkolással",
"log-action-filter-upload-upload": "Új feltöltés",
"log-action-filter-upload-overwrite": "Újrafeltöltés",
+ "log-action-filter-upload-revert": "Visszaállítás",
"authmanager-authn-not-in-progress": "Hitelesítés nincs folyamatban, vagy a folyamat adatai elvesztek. Kérjük, indítsd újra az elejétől.",
"authmanager-authn-no-primary": "A megadott hitelesítő adatokkal nem lehet hitelesíteni.",
"authmanager-authn-no-local-user": "A megadott hitelesítő adatok nincsenek társítva egyetlen felhasználóval sem ezen a wikin.",
"authmanager-create-no-primary": "A megadott hitelesítő adatok nem használhatók fióklétrehozásra.",
"authmanager-link-no-primary": "A megadott hitelesítő adatok nem használhatók fiókok összekapcsolására.",
"authmanager-link-not-in-progress": "Fiókok összekapcsolása nincs folyamatban, vagy a folyamat adatai elvesztek. Kérjük, indítsd újra az elejétől.",
- "authmanager-authplugin-setpass-failed-title": "Jelszó megváltoztatása nem sikerült",
- "authmanager-authplugin-setpass-failed-message": "A hitelesítés beépülője megtagadta a jelszó módosítását.",
- "authmanager-authplugin-create-fail": "A hitelesítés beépülője megtagadta a fiók létrehozását.",
- "authmanager-authplugin-setpass-denied": "A hitelesítés beépülője nem teszi lehetővé a jelszó megváltoztatását.",
- "authmanager-authplugin-setpass-bad-domain": "Érvénytelen domain.",
"authmanager-autocreate-noperm": "Az automatikus fióklétrehozás nem engedélyezett.",
"authmanager-autocreate-exception": "A fiókok automatikus létrehozását átmenetileg letiltottuk a korábbi hibák miatt.",
"authmanager-userdoesnotexist": "A(z) „$1” felhasználó nincs regisztrálva.",
"log-action-filter-suppress-reblock": "Suppression de usator per re-blocada",
"log-action-filter-upload-upload": "Nove file incargate",
"log-action-filter-upload-overwrite": "File re-incargate",
+ "log-action-filter-upload-revert": "Reverter",
"authmanager-authn-not-in-progress": "Le authentication non es in curso o le datos del session ha essite perdite. Per favor, recomencia ab initio.",
"authmanager-authn-no-primary": "Le credentiales fornite non poteva esse authenticate.",
"authmanager-authn-no-local-user": "Le credentiales fornite non es associate a alcun usator in iste wiki.",
"authmanager-create-no-primary": "Le credentiales fornite non pote esser usate pro crear un conto.",
"authmanager-link-no-primary": "Le credentiales fornite non pote esser usate pro ligar un conto.",
"authmanager-link-not-in-progress": "Nulle ligation de conto es in curso, o le datos del session ha essite perdite. Per favor, recomencia ab initio.",
- "authmanager-authplugin-setpass-failed-title": "Cambio de contrasigno fallite",
- "authmanager-authplugin-setpass-failed-message": "Le modulo de authentication ha refusate le cambio de contrasigno.",
- "authmanager-authplugin-create-fail": "Le modulo de authentication ha refusate le creation de conto.",
- "authmanager-authplugin-setpass-denied": "Le modulo de authentication non permitte cambiar contrasignos.",
- "authmanager-authplugin-setpass-bad-domain": "Dominio non valide.",
"authmanager-autocreate-noperm": "Le creation automatic de contos non es permittite.",
"authmanager-autocreate-exception": "Le creation automatic de contos ha essite temporarimente disactivate a causa de errores previe.",
"authmanager-userdoesnotexist": "Le conto de usator \"$1\" non es registrate.",
"passwordpolicies-policy-maximalpasswordlength": "Le contrasigno debe continer minus de $1 {{PLURAL:$1|character|characteres}}",
"passwordpolicies-policy-passwordcannotbepopular": "Le contrasigno non pote esser {{PLURAL:$1|le contrasigno le plus popular|in le lista de $1 contrasignos popular}}",
"passwordpolicies-policy-passwordnotinlargeblacklist": "Le contrasigno non pote apparer in le lista del 100.000 contrasignos le plus commun.",
+ "passwordpolicies-policyflag-forcechange": "debe cambiar al apertura de session",
"easydeflate-invaliddeflate": "Le contento fornite non es correctemente comprimite",
"unprotected-js": "Pro motivos de securitate, non es possibile cargar codice JavaScript de paginas non protegite. Crea JavaScript solmente in le spatio de nomines \"MediaWiki:\" o como un subpagina de usator."
}
"previousrevision": "← Revisi sebelumnya",
"nextrevision": "Revisi selanjutnya →",
"currentrevisionlink": "Revisi terkini",
- "cur": "skr",
+ "cur": "skrg.",
"next": "selanjutnya",
- "last": "sebelum",
+ "last": "sblm.",
"page_first": "pertama",
"page_last": "terakhir",
"histlegend": "Pilih dua tombol radio lalu tekan tombol ''bandingkan'' untuk membandingkan versi. Klik suatu tanggal untuk melihat versi halaman pada tanggal tersebut.<br />(skr) = perbedaan dengan versi sekarang, (akhir) = perbedaan dengan versi sebelumnya, '''k''' = suntingan kecil, '''b''' = suntingan bot, → = suntingan bagian, ← = ringkasan otomatis",
"notextmatches": "Tidak ada teks halaman yang cocok",
"prevn": "{{PLURAL:$1|$1}} sebelumnya",
"nextn": "{{PLURAL:$1|$1}} selanjutnya",
- "prev-page": "Halaman sebelumnya",
+ "prev-page": "halaman sebelumnya",
"next-page": "Halaman selanjutnya",
"prevn-title": "$1 {{PLURAL:$1|hasil|hasil}} sebelumnya",
"nextn-title": "$1 {{PLURAL:$1|hasil|hasil}} selanjutnya",
"authmanager-create-no-primary": "Kredensial yang diberikan tidak dapat digunakan untuk pembuatan akun.",
"authmanager-link-no-primary": "Kredensial yang diberikan tidak dapat digunakan untuk menautkan akun.",
"authmanager-link-not-in-progress": "Penautan akun tidak dilanjutkan atau data sesi telah hilang. Ulang kembali dari awal.",
- "authmanager-authplugin-setpass-failed-title": "Penggantian kata sandi gagal",
- "authmanager-authplugin-setpass-failed-message": "Plugin autentikasi mencegah pengubahan pasword.",
- "authmanager-authplugin-create-fail": "Plugin autentikasi mencegah pembuatan akun.",
- "authmanager-authplugin-setpass-denied": "Plugin autentikasi tidak memperbolehkan mengubah kata kunci.",
- "authmanager-authplugin-setpass-bad-domain": "Domain tidak sah.",
"authmanager-autocreate-noperm": "Pembuatan akun otomatis tidak diizinkan.",
"authmanager-autocreate-exception": "Pembuatan akun otomatis dimatikan sementara karena galat sebelumnya.",
"authmanager-userdoesnotexist": "Pengguna \"$1\" tidak terdaftar.",
"authmanager-create-no-primary": "Dagiti naited a kredensial ket saan a mabalin a mausar para iti panagpartuat ti pakabilangan.",
"authmanager-link-no-primary": "Dagiti naited a kredensial ket saan a mabalin a mausar para iti panangisilpo ti pakabilangan.",
"authmanager-link-not-in-progress": "Saan nga agprogprogreso ti panangisilpo ti pakabilangan wenno napukaw ti datos ti sesion. Pangngaasi a mangrugi manen iti pagrugian.",
- "authmanager-authplugin-setpass-failed-title": "Napaay ti panagbaliw ti kontrasenias",
- "authmanager-authplugin-setpass-failed-message": "Ti plugin ti pammasingked ket di nangipalubos ti panagbaliw ti kontrasenias.",
- "authmanager-authplugin-create-fail": "Ti plugin ti pammasingked ket di nangipalubos ti panagpartuat ti pakabilangan.",
- "authmanager-authplugin-setpass-denied": "Ti plugin ti pammasingked ket saan a mangipalubos iti panagbaliw kadagiti kontrasenias.",
- "authmanager-authplugin-setpass-bad-domain": "Imbalido a dominio.",
"authmanager-autocreate-noperm": "Saan a maipalubos ti automatiko a panagpartuat ti pakabilangan.",
"authmanager-autocreate-exception": "Temporario a nabaldado ti automatiko a panagpartuat iti pakabilangan gapu kadagiti dati a biddut.",
"authmanager-userdoesnotexist": "Ti pakabilangan ti agar-aramat ni \"$1\" ket saan a nakarehistro.",
"anontalk": "Diskuto relatant ad ica IP",
"navigation": "Navigado",
"and": " ed",
- "faq": "Maxim komuna questioni",
+ "faq": "Dubi maxim frequa (FAQ)",
"actions": "Agi",
"namespaces": "Nomari",
"variants": "Varianti",
"randomrootpage": "Handahófsvalin rótarsíða",
"log-action-filter-all": "Allt",
"log-action-filter-delete-delete": "Eyðing síðu",
- "authmanager-authplugin-setpass-bad-domain": "Ógilt lén.",
"authmanager-email-label": "Tölvupóstur",
"authmanager-email-help": "Tölvupóstfang",
"authmanager-realname-label": "Raunverulegt nafn",
"authmanager-create-no-primary": "Le credenziali fornite non possono essere utilizzate per la creazione dell'utenza.",
"authmanager-link-no-primary": "Le credenziali fornite non possono essere utilizzate per il collegamento dell'utenza.",
"authmanager-link-not-in-progress": "Il collegamento dell'utenza non è in corso o i dati della sessione sono andati persi. Si prega di ricominciare dall'inizio.",
- "authmanager-authplugin-setpass-failed-title": "Modifica della password fallita",
- "authmanager-authplugin-setpass-failed-message": "Il plugin di autenticazione ha impedito la modifica della password.",
- "authmanager-authplugin-create-fail": "Il plugin di autenticazione ha impedito la creazione dell'utenza.",
- "authmanager-authplugin-setpass-denied": "Il plugin di autenticazione non consente di cambiare le password.",
- "authmanager-authplugin-setpass-bad-domain": "Dominio non valido.",
"authmanager-autocreate-noperm": "La creazione automatica dell'utenza non è permessa.",
"authmanager-autocreate-exception": "La creazione automatica di utenze è temporaneamente disabilitata a causa di errori precedenti.",
"authmanager-userdoesnotexist": "L'utenza \"$1\" non è registrata.",
"authmanager-create-no-primary": "指定された証明情報は、アカウントの作成に使用できませんでした。",
"authmanager-link-no-primary": "指定された証明情報は、アカウントの関連付けに使用できませんでした。",
"authmanager-link-not-in-progress": "アカウントの関連付けが処理されていないか、セッションデータが失われています。最初からやり直してください。",
- "authmanager-authplugin-setpass-failed-title": "パスワードの変更に失敗しました",
- "authmanager-authplugin-setpass-failed-message": "パスワードの変更は、認証プラグインによって拒否されました。",
- "authmanager-authplugin-create-fail": "アカウントの作成は、認証プラグインによって拒否されました。",
- "authmanager-authplugin-setpass-denied": "パスワードの変更は、認証プラグインによって許可されていません。",
- "authmanager-authplugin-setpass-bad-domain": "無効なドメインです。",
"authmanager-autocreate-noperm": "アカウントの自動作成は許可されていません。",
"authmanager-autocreate-exception": "自動アカウント作成は、以前のエラーにより一時的に無効になっています。",
"authmanager-userdoesnotexist": "利用者アカウント「$1」は登録されていません。",
"authmanager-authn-autocreate-failed": "Gawéan otomatis akun lokal wurung: $1",
"authmanager-create-disabled": "Gawéan akun dipatèni.",
"authmanager-create-from-login": "Saperlu nggawé akun, panjenengan mangga ngisi babagan-babagan ing ngisor iki.",
- "authmanager-authplugin-setpass-bad-domain": "Dhomain ora trep.",
"authmanager-autocreate-noperm": "Gawéan akun otomatis ora diidinaké.",
"authmanager-autocreate-exception": "Gawéan akun otomatis sawetara dipatèni amarga masalah sadurungé.",
"authmanager-userdoesnotexist": "Akun panganggo \"$1\" ora kadhaftar.",
"authmanager-create-no-primary": "მოწოდებული მონაცემები არ გამოდგა ანგარიშის შესაქმნელად.",
"authmanager-link-no-primary": "მოწოდებული მონაცემები არ გამოდგა ანგარიშის დასაკავშირებლად.",
"authmanager-link-not-in-progress": "ანგარიშის დაკავშირება არ მიმდინარეობს ან სესიის მონაცემი დაიკარგა. გთხოვთ დაიწყეთ თავიდან.",
- "authmanager-authplugin-setpass-failed-title": "პაროლის ცვლილება ვერ განხორციელდა",
- "authmanager-authplugin-setpass-failed-message": "აუთენთიფიკაციის პლაგინმა უარყო პაროლის ცვლილება.",
- "authmanager-authplugin-create-fail": "აუთენთიფიკაციის პლაგინმა უარყო ანგარიშის შექმნა.",
- "authmanager-authplugin-setpass-denied": "აუთენთიფიკაციის პლაგინი არ იძლევა პაროლების გამოცვლის უფლებას.",
- "authmanager-authplugin-setpass-bad-domain": "არასწორი დომეინი.",
"authmanager-autocreate-noperm": "ავტომატური ანგარიშის შექმნა არ არის ნებადართული.",
"authmanager-autocreate-exception": "ავტომატური ანგარიშის შექმნა დროებით გათიშულია ადრინდელი ხარვეზების გამო.",
"authmanager-userdoesnotexist": "მომხმარებლის ანგარიში „$1“ არ არის რეგისტრირებული",
"tooltip-recreate": "Na pele esterıte bo ki, nae oncia bıaferne",
"tooltip-upload": "Dest be bar-kerdene ke",
"tooltip-rollback": "\"Peyser biya\" ebe jü tık pela iştırakunê peyênu peyser ano.",
- "tooltip-undo": "\"Peyser\" ni vurnaişi peyser ano u modusê verqayt de vurnaisê formi keno ra.\nTêser-kerdena jü sebebi rê xulasa de imkan dano cı.",
+ "tooltip-undo": "\"Peyser\" ni vurnayişi peyser ano u modusê verqayti de vurnayisê formi keno ra. Têserkerdena jü sebebi rê xulasa de imkan dano cı.",
"tooltip-summary": "Xulasê da kılme cı kuye",
"common.css": "/* CSSo ke itaro, serba çermu pêroine gurenino */",
"pageinfo-contentpage-yes": "Heya",
"Jay94ks",
"Ryuch",
"Delim",
- "Comjun04"
+ "Comjun04",
+ "Son77391"
]
},
"tog-underline": "링크에 밑줄 긋기:",
"blocklist-nousertalk": "자신의 토론 문서 편집 불가",
"blocklist-editing": "편집 중",
"blocklist-editing-sitewide": "편집 중 (사이트 전체)",
+ "blocklist-editing-page": "문서",
"blocklist-editing-ns": "이름공간",
"ipblocklist-empty": "차단 목록이 비어 있습니다.",
"ipblocklist-no-results": "요청한 IP 주소나 사용자는 차단되지 않았습니다.",
"authmanager-create-no-primary": "제공된 자격 증명은 계정 생성에 쓰일 수 없습니다.",
"authmanager-link-no-primary": "제공된 자격 증명은 계정을 연결하는 데 쓰일 수 없습니다.",
"authmanager-link-not-in-progress": "계정 연결이 진행 중이 아니거나 세션 데이터를 분실했습니다. 처음부터 다시 시작해 주십시오.",
- "authmanager-authplugin-setpass-failed-title": "비밀번호 변경 실패",
- "authmanager-authplugin-setpass-failed-message": "인증 플러그인이 비밀번호 변경을 거부했습니다.",
- "authmanager-authplugin-create-fail": "인증 플러그인이 계정 만들기를 거부했습니다.",
- "authmanager-authplugin-setpass-denied": "인증 플러그인이 비밀번호 변경을 허용하지 않습니다.",
- "authmanager-authplugin-setpass-bad-domain": "잘못된 도메인.",
"authmanager-autocreate-noperm": "자동 계정 만들기는 허용되지 않습니다.",
"authmanager-autocreate-exception": "이전의 오류들로 인해 자동 계정 만들기를 일시적으로 사용할 수 없습니다.",
"authmanager-userdoesnotexist": "\"$1\" 사용자 계정은 등록되어 있지 않습니다.",
"authmanager-authn-autocreate-failed": "Automattesch ene Zojang för heh et Wikki hät nit jeflup: $1",
"authmanager-create-disabled": "Neu Aanmelde es afjeschalldt",
"authmanager-create-from-login": "Öm Der ene Zohjang aanzelähje, bes esu johd, un föll heh di Fällder us:",
- "authmanager-authplugin-setpass-failed-title": "Dat Paßwoot ze änndere hät nit jeflupp",
- "authmanager-authplugin-setpass-bad-domain": "Onjöltijje Domäijn",
"authmanager-autocreate-noperm": "Automattesch Zohjäng aanzelähje es nit zohjelohße.",
"authmanager-autocreate-exception": "Automattesch Zohjäng aanzelähje es wähje verjange Fähler för en Zigg nit zohjelohße.",
"authmanager-userdoesnotexist": "Ene Metmaacher mem Nahme „$1“ es nit ennjedrahre.",
"log-action-filter-upload-overwrite": "Nees eroplueden",
"authmanager-create-disabled": "D'Opmaache vu Benotzerkonten ass gespaart.",
"authmanager-create-from-login": "Fir Äre Benotzerkont unzeleeën fëllt w.e.g. d'Felder aus.",
- "authmanager-authplugin-setpass-failed-title": "Änner vum Passwuert huet net funktionéiert",
- "authmanager-authplugin-setpass-bad-domain": "Net valabelen Domain.",
"authmanager-autocreate-noperm": "Automatescht Uleeë vu Benotzerkonten ass net erlaabt.",
"authmanager-autocreate-exception": "Automatescht Uleeë vu Benotzerkonte gouf op Grond vu fréiere Feeler temporär ausgeschalt.",
"authmanager-userdoesnotexist": "De Benotzerkont \"$1\" ass net registréiert.",
"authmanager-create-no-primary": "La identia furnida no pote es usada per crea un conta.",
"authmanager-link-no-primary": "La identia furnida no pote es usada per junta de conta.",
"authmanager-link-not-in-progress": "Junta de conta no aveni, o datos de sesion es perdeda. Per favore, comensa denova.",
- "authmanager-authplugin-setpass-failed-title": "Cambia de clave ia fali",
- "authmanager-authplugin-setpass-failed-message": "La estendente de autentici ia rejeta la cambia de clave.",
- "authmanager-authplugin-create-fail": "La estendente de autentici ia rejeta la crea de conta.",
- "authmanager-authplugin-setpass-denied": "La estendente de autentici no permete cambia claves.",
- "authmanager-authplugin-setpass-bad-domain": "Domina nonvalida.",
"authmanager-autocreate-noperm": "La crea automata de contas no es permeteda.",
"authmanager-autocreate-exception": "La crea automata de contas es tempora descomutada par causa de eras presedente.",
"authmanager-userdoesnotexist": "Conta de usor \"$1\" no es rejistrada.",
"authmanager-create-no-primary": "De ingeveurde aanmeljgegaeves kóste neet waere gebroek veur 't aanmake van de konto.",
"authmanager-link-no-primary": "De ingeveurde aanmeljgegaeves kóste neet waere gebroek veur de konto te koppele.",
"authmanager-link-not-in-progress": "Konto-koppeling is neet in behanjeling of de sessiegegaeves zint verlaore gegange. Begin gans oppernuuj van begins aaf aan.",
- "authmanager-authplugin-setpass-failed-title": "Verangere wachwaord mislök",
- "authmanager-authplugin-setpass-failed-message": "De verificatie-inveugtoepassing haet 't verangere van 't wachwaord taengegehaje.",
- "authmanager-authplugin-create-fail": "De verificatie-inveugtoepassing haet 't aanmake van diene konto taengegehaje.",
- "authmanager-authplugin-setpass-denied": "De verificatie-inveugtoepassing steit 't verangere van 't wachwaord neet toe.",
- "authmanager-authplugin-setpass-bad-domain": "Óngeljig demien.",
"authmanager-autocreate-noperm": "De verificatie-inveugtoepassing steit 't aanmake van konto's neet toe.",
"authmanager-autocreate-exception": "'t Automatisch aanmake van konto's is tiedelik oetgezat door ierder foute.",
"authmanager-userdoesnotexist": "Gebroeker \"$1\" is neet geregistreerd.",
"authmanager-create-no-primary": "E credençiæ fornie no poeuan ese doeuviæ pe-a creaçion de l'utença.",
"authmanager-link-no-primary": "E credençiæ fornie no pœuan ese dœuviæ pe conligâ l'utença.",
"authmanager-link-not-in-progress": "O conligamento de l'utença o no procede ò i dæti da sescion so-anæti perdui. Se prega de recomençâ da cavo.",
- "authmanager-authplugin-setpass-failed-title": "Modiffica da password fallia",
- "authmanager-authplugin-setpass-failed-message": "O plugin d'aotenticaçion o l'ha impedio a modiffica da password.",
- "authmanager-authplugin-create-fail": "O plugin d'aotenticaçion o l'ha impedio a creaçion de l'utença.",
- "authmanager-authplugin-setpass-denied": "O plugin d'aotenticaçion o no consente de cangiâ e password.",
- "authmanager-authplugin-setpass-bad-domain": "Dominnio non vallido.",
"authmanager-autocreate-noperm": "A creaçion aotomattica del'utença a no l'è permissa.",
"authmanager-autocreate-exception": "A creaçion aotomattica di utençe a l'è temporaniamente disabilitâ a caosa di erroî precedenti.",
"authmanager-userdoesnotexist": "L'utença \"$1\" a no l'è registrâ.",
"monday": "دۏشٱمٱ",
"tuesday": "ساْ شٱمٱ",
"wednesday": "چارشٱمٱ",
- "thursday": "پٱن شمٱ",
+ "thursday": "پٱÙ\86 شٱÙ\85Ù±",
"friday": "جۏمٱ",
"saturday": "شٱمٱ",
"sun": "یاٛشٱمٱ",
"february-gen": "فڤریٱ",
"march-gen": "مارس",
"april-gen": "آڤریل",
- "may-gen": "Ù\85ئی",
- "june-gen": "جۊٱن",
+ "may-gen": "Ù\85اÙ\9bی",
+ "june-gen": "ژوئٱن",
"july-gen": "جۊلای",
"august-gen": "آگوست",
"september-gen": "سپتامر",
"category-subcat-count-limited": "ئی دأسە ها د {{PLURAL:$1|زیردأسە|$1 زیردأسە یا}} یی کئ ها ڤئ دومئشوٙ",
"category-article-count": "{{PLURAL:$2|اؽ دٱسٱ د ڤٱرگرتٱ بٱلگٱ نهاییٱ.| {{PLURAL:$1| بٱلگٱ هؽ|$1 بٱلگٱیا هؽسن}} د اؽ دٱسٱ، ڤ دٱر د $2 کولٛ.}}",
"category-article-count-limited": "نئها {{PLURAL:$1|بألگە هی|$1بألگە یا هئن}} د دأسە ئیسئنی.",
- "category-file-count": "{{PLURAL:$2|اÛ\8c دٱسٱ Ù\81Ù±Ù\82ٱت د ڤٱرگرتٱ جاÙ\86Û\8cا Ù\86ئÙ\87اÛ\8cÛ\8cÙ±.| Ù\86ئÙ\87اÛ\8cÛ\8c {{PLURAL:$1|جاÙ\86Û\8cا Ù\87Û\8c|$1 جاÙ\86Û\8cاÛ\8cا Ù\87Û\8cÙ\86}} د اÛ\8c دٱسٱØ\8c Ú¤ دٱر د Ú©Ù\88Ù\84 $2 .}}",
+ "category-file-count": "{{PLURAL:$2|اÛ\8c دٱسٱ Ù\81Ù\82ٱت د ڤٱرگرتٱ جاÙ\86ؽا Ù\86Ù\87اÛ\8cÛ\8cÙ±.| Ù\86Ù\87اÛ\8cÛ\8c {{PLURAL:$1|جاÙ\86ؽا Ù\87ؽ|$1 جاÙ\86Û\8cاÛ\8cا Ù\87ؽسÙ\86}} د اؽ دٱسٱØ\8c Ú¤ دٱر د Ú©Ù\88Ù\84Ù\9b $2 .}}",
"category-file-count-limited": " {{PLURAL:$1|[جانیا هی|1$جانیایا هین}} نئهایی هان د دأسە ئیسئنی.",
"listingcontinuesabbrev": "دومالٱ",
"index-category": "بألگە یا سیاە دار",
"noindex-category": "بلگٱیا بی سیائٱ",
"broken-file-category": "بألگە یایی کئ هوم پئیڤأند جانیایا ئشگئسئ نە دارئن",
"categoryviewer-pagedlinks": "($1) ($2)",
- "about": "دئبارە",
+ "about": "دٱربارٱ",
"article": "مینوٙنە یا بألگە",
"newwindow": "(د یاٛ نیمدری تازٱ ڤازش کو)",
"cancel": "ٱنجوم شیڤسن",
"viewsourceold": "سئیل د سأرچئشمە بأکیت",
"editlink": "ڤیرایش",
"viewsourcelink": "ساٛلٛ د سرچشمٱ بٱکؽت",
- "editsectionhint": "ڤیرایش یاٛ بٱرجا:$1",
+ "editsectionhint": "Ú¤Û\8cراÛ\8cØ´ Û\8cاÙ\9b بٱئرجا:$1",
"toc": "مؽنونٱیا",
"showtoc": "نئشوٙ دأئن",
"hidetoc": "قام کئردئن",
"nstab-user": "بٱلگٱ کاریار",
"nstab-media": "بألگە ڤارئسگأر",
"nstab-special": "بٱلگٱیا ڤیژٱ",
- "nstab-project": "بألگە پوروجە",
+ "nstab-project": "بٱلگٱ پرۉژٱ",
"nstab-image": "جانؽا",
"nstab-mediawiki": "پئیغوٙم",
"nstab-template": "چۊٱ",
"mainpage-nstab": "سرآسونٱ",
"nosuchaction": "چئنی کونئشتگأری نییئش",
"nosuchactiontext": "کاری کئ ڤا یوٙ آر ئل تیار بییە نادیارە.\nگاسی شوما یوٙ آر ئل نە دوروس نأنیسأنیتە، یا یئ گئل هوم پئیڤأند ئشتئڤا ڤارئد بییە.\nڤئ گاسی یئ گئل سیسئریک د نأرم أفزاز ڤئ کار گئرئتە بییە ڤا {{SITENAME}} ئشارە بأکە.",
- "nosuchspecialpage": "چئنی بألگە ڤیجە یی نییئش",
- "nospecialpagetext": "<strong>Ø´Ù\88Ù\85ا Û\8cئ گئÙ\84 بأÙ\84Ú¯Û\95 Ù\86ادÛ\8cار Ù\86Û\95 Ù\87استÛ\8cتÛ\95.</strong>\nگاسÛ\8c Û\8cئ گئÙ\84 Ù\86Ù\88Ù\85Ú¯Û\95 سÛ\8c دÛ\8cارÛ\8c دأئÙ\86 د بأÙ\84Ú¯Û\95 Û\8cا باÛ\8cأد د [[Special:SpecialPages|{{int:specialpages}}]] دÛ\8cارÛ\8c بأکÛ\95.",
+ "nosuchspecialpage": "چنی بٱلگاٛ ڤیژاٛیی نؽسش",
+ "nospecialpagetext": "<strong>Ø´Ù\85ا Û\8cاÙ\9b بٱÙ\84Ú¯Ù± Ù\86ادؽار Ù\86اÙ\92 Ù\87استؽتٱ.</strong>\nگاسÛ\8c Û\8cاÙ\9b Ù\86Ù\88Ù\85Ú¯Ù± سÛ\8c دؽارÛ\8c داÙ\9bئÙ\86 د بٱÙ\84Ú¯Ù±Û\8cا باÛ\8cٱد د [[Special:SpecialPages|{{int:specialpages}}]] دؽارÛ\8c بٱکٱ.",
"error": "خأطا",
"databaseerror": "خأطا د رئسینە گا",
"databaseerror-text": "یئ گئل خأطا جوست کاری د رئسینە گا دیاری کئردە.گاسی یە یئ گل سیسئریک د کار گئرئتئن نأرم أفزار راس بأکە.",
"cannotdelete-title": "نأبوٙە بألگە $1 پاکسا با",
"delete-hook-aborted": "پاکسا کاری ڤا قولاڤ نئها گئری بیە.\nهیچ توضیی سیش نی.",
"no-null-revision": "سی بألگە $1 ڤانیأری خومثا نە راس بأکیت",
- "badtitle": "داسوٙن گأن",
+ "badtitle": "داسوݩ گٱن",
"badtitletext": "داسوݩ بٱلگٱ هاستنی نادؽارٱ، یٱ یاٛ داسوݩ مؽنجا زڤونی یا مؽنجا ڤیکی اْشتبائٱ.\nگاسؽ یٱ د ڤٱر گرتٱ یاٛ کاراکتر یا چٱن تا کاراکتر با کاْ نمۊئٱ د داسونؽا ڤ کارشو گرت.",
"title-invalid-empty": "داسوٙن بألگە هاستئنی حالیە یا فأقأط مینوٙنە دار یئ گئل نوٙم یا نوٙم جاە.",
"title-invalid-utf8": "داسوٙن بألگە هاستئنی مینوٙنە دار یئ گئل نئماجا UTF-8 نادیارە.",
"perfcachedts": "رئسینە یا نئهایی د ڤیرگە قام بییە موٙکیس بینە و گاسی هأنی ڤئ هئنگوم سازی نأبینە.بیشتئروٙنە {{PLURAL:$4|یئ گئل نأتیجە|$4 یئ گئل نأتیجە}} د ڤیرگە قام بییە هان د دأسرئس.",
"querypage-no-updates": "نأبوٙە ئی بألگە ڤئ هئنگوم سازی با.\nرئسینە یا ئیچئ تازە کاری نأبینە.",
"viewsource": "ساٛلٛ د سرچشمٱ بٱکؽت",
- "viewsource-title": "سئÛ\8cÙ\84 د سأرÚ\86ئشÙ\85Û\95 $1 بأکÛ\8cت",
+ "viewsource-title": "ساÙ\9bÙ\84Ù\9b د سرÚ\86Ø´Ù\85Ù± $1 بٱکؽت",
"actionthrottled": "کونئشتکاری نئهاگئری بییە",
"actionthrottledtext": "سی نئهاگئری د دأرتیچ بییئن ئسپأم نأبوٙە کئ شوما چئنی کاری نە د یئ گاتی کوٙتا چأن گئل أنجوم بئییت.\nلوطف بأکیت د چأن دئیقە هأنی د نۊ تئلاش بأکیت.",
"protectedpagetext": "نأبوٙە د ئی بألگە ڤیرایئشت کاریا کاریاریا هأنی نە سئیل بأکیت.",
- "viewsourcetext": "Ø´Ù\88Ù\85ا Ù\85Û\8c تÛ\8aÙ\86Û\8cت سرÚ\86Ø´Ù\85Ù± اÛ\8c بÙ\84Ú¯Ù± Ù\86اÙ\9b ساÙ\9bÛ\8cÙ\84 بٱکÛ\8cت Ù\88 داÙ\9bØ´ Û\8bردارÛ\8cت:",
+ "viewsourcetext": "Ø´Ù\85ا Ù\85ؽ تÙ\88Ù\86ؽت سرÚ\86Ø´Ù\85Ù± اؽ بٱÙ\84Ú¯Ù± Ù\86اÙ\92 ساÙ\9bÙ\84Ù\9b بٱکؽت Û\89 دش ڤردارؽت:",
"viewyourtext": "شوما می توٙنیت سأرچئشمە ڤیرایئشتیا توٙنە د ئی بألگە سئیل بأکیت و دئشوٙ ڤئرداریت:",
"protectedinterface": "ئی بألگە سی نأرم أفزار کئ ها د ئی ڤیکی نیسئسە آمادە میکە،و ڤئ د موزاحئمە ت کاری پأر و پیم کاری بیە\nسی ئضاف کئردئن یا آلئشت دأئن د هأمە ڤیکی یا لوطف بأکیت [https://translatewiki.net/ translatewiki.net] نە ڤئ کار بئیریت، پوروجە ڤولات نئشین سازی ڤیکیمئدیا.",
"editinginterface": "<strong>ڤارئسکاری کئردئن:</strong> شوما داریت یئ گئل بألگە نە کئ سی یئ گئل نیسئسە یا نأرم أفزار پئیڤأندکار ڤئ کار گئرئتە بیە ڤیرایئشت میکیت.\nآلئشت دأئن ئی بألگە ری رئخت و بارت پئیڤأندکاری کئ کاریاری هأنی ڤئ نە ڤئ کار مئیرئن کارگئرایی دارە.",
"yourpassword": "رازینە گوڤاردئن:",
"userlogin-yourpassword": "رازینٱ گوڤاردن",
"userlogin-yourpassword-ph": "رازینٱ گوئارسناْ بٱزاْ",
- "createacct-yourpassword-ph": "رازینە گوڤاردئن نە بأزە",
+ "createacct-yourpassword-ph": "رازینٱ گوئاردن ناْ بٱزاْ",
"yourpasswordagain": "یئ گئل هأنی رازینە گوڤاردئن نە بأزە",
- "createacct-yourpasswordagain": "رازینە گوڤاردئن نە پوشت راس کو",
- "createacct-yourpasswordagain-ph": "یاٛ گاٛل هٱنی رازینٱ گوڤاردن بٱزٱ",
- "userlogin-remembermypassword": "مئنە د ساموٙنە ڤادار",
+ "createacct-yourpasswordagain": "رازینٱ گوئاردن ناْ پوشت دۏرس کو",
+ "createacct-yourpasswordagain-ph": "یاٛ گلٛ هنی رازینٱ گوئاردن بٱزٱ",
+ "userlogin-remembermypassword": "مناْ د سامونٱ ڤادار",
"userlogin-signwithsecure": "ڤأصل بییئن أمن نە ڤئ کار بئیر",
"yourdomainname": "پوشگئر شوما:",
"password-change-forbidden": "شوما نئمی توٙنیت رازینە گوڤاردئن خوتوٙنە د ئی ڤیکی آلئشت بأکیت.",
"logout": "د ساموٙنە دئرئوٙمائن",
"userlogout": "د ساموٙنە دئرئوٙمائن",
"notloggedin": "نأبوٙأ بیائیت ڤامین",
- "userlogin-noaccount": "Û\8cئ گئÙ\84 Øئساڤ Ù\86ارÛ\8cت؟",
- "userlogin-joinproject": "أندوم دیارگە {{SITENAME}} بوٙئیت",
+ "userlogin-noaccount": "Û\8cاÙ\9b Ù\87ساÙ\88 Ù\86ارؽت؟",
+ "userlogin-joinproject": "ٱندوم دؽارگٱ {{SITENAME}} بۊئؽت",
"createaccount": "هساو دۏرس بٱکؽت",
"userlogin-resetpassword-link": "رازینٱ گوئارسن تو د ڤیرتو رٱتٱ؟",
- "userlogin-helplink2": "Ù\87Ù\88Ù\85Û\8cارÛ\8c کئردئÙ\86 د طأرÛ\8cÙ\82 ڤاÙ\85Û\8cÙ\86 ئÙ\88Ù\99Ù\85ائن",
+ "userlogin-helplink2": "Ù\87Ù\88Ù\85Û\8cارÛ\8c کردÙ\86 د تٱرÛ\8cÙ\82 ڤاÙ\85ؽÙ\86 اÙ\88Ù\85اÛ\8cن",
"userlogin-loggedin": "شوما ئیسئ چی یئ گئل {{GENDER:$1|$1}} ئوٙمایتە ڤامین.نوم بألگە هاری نە سی ڤامین ئوٙمائن چی یئ گئل کاریار هأنی بلگه هاری سی وا مین اومائن چی یه گل کاریار هنی ڤئ کار بئیریت.",
"userlogin-createanother": "یئ گئل حئساڤ هأنی راس بأکیت",
"createacct-emailrequired": "تیرنئشوٙن أنجومانامە",
- "createacct-emailoptional": "تیرنشۊن ٱنجومانامٱ",
- "createacct-email-ph": "تیرنشون انجومانامه تونه وارد بكيت",
+ "createacct-emailoptional": "تیرنشوݩ ٱنجومانامٱ",
+ "createacct-email-ph": "تیرنشوݩ ٱنجومانامٱ توناْ ڤارد بٱكؽت",
"createacct-another-email-ph": "تیرنئشوٙن أنجومانامە توٙنە بأزأنیت",
"createaccountmail": "یئ گئل رازینە گوڤاردئن موڤأقأتینە ڤئ کار بئیریت و ڤئ نەسی یئ گئل تیرنئشوٙن أنجومانامە تیار بییە کئل بأکیت.",
"createacct-realname": "نوم راستأکی(مأژبوٙری نی)",
"createacct-reason": "دألیل",
"createacct-reason-ph": "سی چی شوما داریت یئ گئل حئساڤ هأنی راس میکید",
- "createacct-submit": "حئسأڤ خوتوٙنە راس بأکیت",
+ "createacct-submit": "هساو خوتوناْ دۏرس بٱکؽت",
"createacct-another-submit": "یئ گئل حئساڤ هأنی راس بأکیت",
- "createacct-benefit-heading": "{{SITENAME}} ڤئ دأس خألکی چی شوما رأڤأندیاری بییە.",
- "createacct-benefit-body1": "{{PLURAL:$1|Ú¤Û\8cراÛ\8cئشت|Ú¤Û\8cراÛ\8cئشتÛ\8cا}}",
- "createacct-benefit-body2": "{{PLURAL:$1|بألگە|بألگە یا}}",
- "createacct-benefit-body3": "تازە{{PLURAL:$1|هومیار|ھومیاریا}}",
+ "createacct-benefit-heading": "{{SITENAME}} ڤ دٱس کٱسؽایؽ چی شما رٱڤٱندؽاری بیٱ.",
+ "createacct-benefit-body1": "{{PLURAL:$1|Ú¤Û\8cراÛ\8cØ´|Ú¤Û\8cراÛ\8cشؽا}}",
+ "createacct-benefit-body2": "{{PLURAL:$1|بٱلگٱ|بٱلگٱیا}}",
+ "createacct-benefit-body3": "تازٱ{{PLURAL:$1|هومیار|ھومیاریا}}",
"badretype": "رازینە گوڤاردئنی کئ شمأ دأییتە هومدأنگی نارە.",
"usernameinprogress": "رأرڤأندیاری یئ گئل حئساڤ سی ئی نوم کاریاری ھا د پیشکئرد. یئ گوری آھئرە داری بأکیت.",
"userexists": "نوم کاریاری دە بییە ئیسئنی ڤئ کار گئرئتە بییە.\nلوطف بأکیت یئ گئل نوم هأنی نە ڤئرداریت.",
"suspicious-userlogout": "د حاست ڤئ دأر رأتئن شوما تیە پوشی بییە سی یە کئ ڤئ نأظأر یما کئ ڤئ سی یئ گئل دوڤارتە نیأر گأن یا یئ گئل پوروکسی کئ ها د ڤیرگە کأش کئل بییە.",
"createacct-another-realname-tip": "نوم راستأکی دئل ڤئ حاییە.\nأر شوما ڤئنە نئها ئمایە بأکیت، یە سی هوم نئسبأت دأئن کاریاری سی کاریاش ڤئ کار گئرئتئ بوٙە.",
"pt-login": "ڤا مؽن اوماین",
- "pt-login-button": "ڤامین ئوٙمائن",
+ "pt-login-button": "ڤامؽن اوماین",
"pt-createaccount": "هساو دۏرس بٱکؽت",
"pt-userlogout": "د سامونٱ دروماین",
"php-mail-error-unknown": "خأطا نادیار د آلئشتگئر PHP's mail()",
"resetpass-expired": "گات دیاری رازینە گوڤاردئن شوما تأموم بییە. لوطف بأکیت یئ گئل رازینە گوڤاردئن هأنی نە سی ڤامین ئوٙمائن میزوٙنکاری بأکیت.",
"resetpass-expired-soft": "گات دیاری رازینە گوڤاردئن شوما تأموم بییە و باس د نۊ زئنە با. لوطف بأکیت یئ گئل رازینە گوڤاردئن هأنی نە ئنتئخاڤ بأکیت، یا سی د نۊ زئنە کئردئن د نئهاتئر د ئیچئ \"{{int:authprovider-resetpass-skip-label}}\" بأپوٙرنیت.",
"resetpass-validity-soft": "رازینە گوڤاردئن توٙ نادیاره:$1\n\n لوطف بأکیت یئ گئل رازینە گوڤاردئن هأنی نە ئنتئخاڤ بأکیت، یا سی د نۊ زئنە کئردئن د نئهاتئر د ئیچئ \"{{int:authprovider-resetpass-skip-label}}\" بأپوٙرنیت.",
- "passwordreset": "د Ù\86Û\8a دأئÙ\86 رازÛ\8cÙ\86Û\95 Ú¯Ù\88ڤاردئن",
+ "passwordreset": "د Ù\86Û\8a داÙ\9bئÙ\86 رازÛ\8cÙ± Ú¯Ù\88ئاردن",
"passwordreset-text-one": "ئی نوم بألگە نە سی گئرئتئن یئ گئل رازینە گوڤاردئن موڤأقأت ڤا أنجومانامە توٙ پور بأکیت.",
"passwordreset-text-many": "{{PLURAL:$1|یئ گئل د جاگە یا نە سی گئرئتئن رازینە گوڤاردئن موڤأقأتی نە ڤا أنجومانامە گئرئتە بوٙأ پور بأکیت.}}",
"passwordreset-disabled": "نۊ کئردئن رازینە گوڤاردئن د ئی ڤیکی ناکونئشگأر بییە.",
"accmailtitle": "رازینە گوڤاردئن کئل بی",
"accmailtext": "یئ گئل رازینە گوڤاردئن شامسأکی سی[[User talk:$1|$1]] سی $2 کئل بییە.بوٙە ڤئنە د گات ڤئ کار گئرئتئن بألگە ڤامین ئوٙمائن <em>[[Special:آلئشت دأئن رازینە گوڤاردئن|آلئشت دأئن رازینە گوڤاردئن]]</em> آلئشت کاری با.",
"newarticle": "تازە",
- "newarticletext": "Ø´Ù\88Ù\85ا Ù\87اÛ\8cÛ\8cÙ\86 ڤا دئÙ\85ا Ù\87Ù\88Ù\85 پئÛ\8cڤأÙ\86دÛ\8c کئ Ú¤Ù\88جÙ\88Ù\99د Ù\86ارÛ\95.\nسÛ\8c رأڤأÙ\86دÛ\8cارÛ\8c بأÙ\84Ú¯Û\95.Ø´Ù\88رÙ\88Ù\99 بأکÛ\8cت Ù\85Û\8cÙ\86ئ جأڤÛ\95 Ù\87ارÛ\8c بأÙ\86Û\8cسÛ\8cت (سÛ\8c دÙ\88Ù\99Ù\86ئسئÙ\86 بÛ\8cشتئر سئÛ\8cÙ\84 [$1 ] بأکÛ\8cت).\nأر Ø´Ù\88Ù\85ا سÛ\8c ئشتئڤا کئردئÙ\86 Ù\87ائÛ\8cت ئÛ\8cÚ\86ئØ\8c رÛ\8c دÙ\88Ú¯Ù\85Û\95 ڤادئÙ\85ا رأتئÙ\86 دÙ\88ڤارتÛ\95 Ù\86Û\8cأر بأپÙ\88Ù\99رÙ\86Û\8cت.",
+ "newarticletext": "Ø´Ù\85ا Ù\87ائؽت ڤا دÙ\85ا Ù\87Ù\88Ù\85 پاÙ\9bÚ¤Ù±Ù\86ؽ اÙ\92 Ú¤Ù\88جÛ\8aد Ù\86ارٱ.\nسÛ\8c رٱڤٱÙ\86دؽارÛ\8c بٱÙ\84Ú¯Ù±.شرÛ\8a بٱکؽت Ù\85ؽÙ\86 جٱڤٱ Ù\87Ù\88رÛ\8c بٱÙ\86Û\8cسؽت (سÛ\8c دÙ\88Ù\86سÙ\86 بؽشتر ساÙ\9bÙ\84Ù\9b [$1 ] بٱکؽت).\nٱر Ø´Ù\85ا سÛ\8c اÙ\92شتبا کردÙ\86 Ù\87ائؽت اÛ\8cÚ\86اÙ\92Ø\8c رÛ\8c دÛ\8fÚ¯Ù\85Ù± ڤادÙ\85ا رٱتÙ\86 دÙ\88ئارتٱ Ù\86Û\8cٱر بٱپÛ\8aرÙ\86ؽت.",
"anontalkpagetext": "----",
"noarticletext": "د ایسنؽا اؽ بٱلگٱ نیسسٱ ڤجۊد ناشتٱ.\nشما مؽ تونؽت د[[Special:Search/{{PAGENAME}}|بٱگٱردؽد]] د اؽ بٱلگٱ اؽ د بٱلگٱ هنی یا <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} د نۊ پاٛجۊری بۊئٱ]</span>، <span class=\"plainlinks\">[{{fullurl:{{FULLPAGENAME}}|action=edit}} یا ای بٱلگٱ ناْ ڤیرایش بٱکؽت]</span>.",
"noarticletext-nopermission": "د ایسنؽا اؽ بٱلگٱ نیسساٛیؽ ڤجۊد ناشتٱ.\nشما مؽ تونؽت د[[Special:Search/{{PAGENAME}}|بٱگردؽد]] د اؽ بٱلگٱیا د بٱلگٱ هنی یا <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} د نۊ پاٛجۊری بۊئٱ]</span>، <span class=\"plainlinks\">[{{fullurl:{{FULLPAGENAME}}|action=edit}}</span>.ڤلی شما سلا یٱناْ کاْ اؽ بٱلگٱ ناْ دۏرس بٱکؽت نارؽت.",
"session_fail_preview_html": "<strong>د بأخت گأن سی یە کئ رئسینە یا نئشأسجا نە د دأس دأئیمە نئمی توٙنیم کار پأردازئشت ڤیرایئشت کاری شومانە أنجوم بئمینوٙ.</strong>\n\n\n<em>سی یە کئ {{SITENAME}} یئ گئل رأگ ئچ تی ئم ئل کونئشتکار بییە دارە، پیش سئیل سی یە کئ د دأس چول کاریا جاڤا ئسکئریپت لیز داشتوٙە نئھوٙ بییە..</em>\n\nلوطف بأکیت یئ گئل ھأنی تئلاش بأکیت.\nأر ھأنی ڤئ دوروس کار نأکئرد،[[Special:UserLogout|ئوٙمائن ڤئ دأر]] نە ئزمایئشت بأکیت و د نۊ بیائیت ڤامین.",
"token_suffix_mismatch": "<strong>ڤیرایئشتیا شوما سی یە کئ دوڤارتە نیأر شوما نیسئسە یا نوقطە نیائن نە د رازینە أمینیأتی ڤیرایئشت د یأک تیچئسە رأد میکە.</strong>\nڤیرایئشت سی یە کئ د خئراڤ بییئن نیسئسە بألگە نئھاگئری با رأد بییە.\nئی روخ ڤأن د گاتیایی پیش میا کئ شوما یئ گئل رئسینە جا پوروکسی نە ڤئ کار بئیریت.",
"edit_form_incomplete": "<strong>پارە یی د ڤیرایئشتیا ڤئ رئسینە جا نئمی رئسئن، د نۊ ڤارئسی بأکیت سی یە کئ د خوٙ بییئن ڤیرایئشتیا خوتوٙ ڤارئسیاری بأکیت و د نۊ تئلاش بأکیت.</strong>",
- "editing": "د حال و بال ڤیرایئشت $1",
- "creating": "راس کئردئن $1",
- "editingsection": "د حال و بال ڤیرایئشت $1 (بأرجا$1)",
+ "editing": "د هال ۉ بال ڤیرایش $1",
+ "creating": "دÛ\8fرس کردن $1",
+ "editingsection": "د هال ۉ بال ڤیرایش $1 (بٱرجا$1)",
"editingcomment": "د حال و بال ڤیرایئشت $1 (بأرجا تازە)",
"editconflict": "ری ڤئ ری کاری د ڤیرایئشت: $1",
"explainconflict": "د گاتی کئ شوما شوروٙ د ڤیرایئشت کاری د بألگە کئردیتە، یئ کأس ھأنی ئی بألگە نئ آلئشت دئە.\nراساگە ڤارو نیسئسە بألگە، نیسئسە نە چی یە کئ ڤوجوٙد داشتوٙە د ڤأر گئرئتە.\nآلئشتکاریا شوم د نیسئسە ھاری دیاری میکە.\nشوما بایأد آلئشت کاریاتوٙنە د نیسئسە یی کئ ھیش سأریأک بأکیت.\nفأقأط نیسئسە یی کئ ھا د ڤارو د گاتی کئ شوما\"$1\" نە گوزارئشت میکیت ئمایە بوٙە.",
"templatesusedsection": "{{PLURAL:$1|چوٙأ|چوٙأ یا}} ڤئ کار گئرئتە بییە د ئی بأرجا:",
"template-protected": "(پٱر ۉ پیم بیٱ)",
"template-semiprotected": "(نسم ۉ نیمٱ پٱر ۉ پیم بیٱ)",
- "hiddencategories": "اؽ بٱلگٱ یٱکؽ د ٱندومیائٱ {{PLURAL:$1|1 hidden category|$1 hidden categories}} :",
+ "hiddencategories": "اؽ بٱلگٱ یٱکؽ د ٱندومؽا ٱ {{PLURAL:$1|1 hidden category|$1 hidden categories}} :",
"edittools-upload": "-",
"nocreatetext": "{{SITENAME}} سی رأڤأندیاری بألگە یا تازە نئھاگئری بییە.\nشوما می توٙنیت روئیت ڤادئما و بألگە ئی کئ بییشە ڤیرایئشت کاری بأکیت،[[Special:ڤامین ئوٙمائن کاریار|بیائیت ڤامین یا یە کئ یئ گئل حئساڤ دوروس بأکیت]].",
"nocreate-loggedin": "شوما صئلا راس کئردئن بألگە تازە نە ناریت.",
"sectioneditnotsupported-text": "ڤیرایئشت بأرجایی د ئی بألگە نیئش.",
"permissionserrors": "خأطا صئلا دأئن",
"permissionserrorstext": "شوما حأق ناریت ڤئنە أنجوم بئیت، سی{{PLURAL:$1|دألیل|دألیلیا}} نئھایی:",
- "permissionserrorstext-withaction": "Ø´Ù\88Ù\85ا سÛ\8c $2 صئÙ\84ا \nÙ\86ئھاگئرÛ\8c Ù\86ارÛ\8cت {{PLURAL:$1|دأÙ\84Û\8cÙ\84|دأÙ\84Û\8cÙ\84Û\8cا}}:",
+ "permissionserrorstext-withaction": "Ø´Ù\85ا سÛ\8c $2 سÙ\84ا \nÙ\86ھاگرÛ\8c Ù\86ارؽت {{PLURAL:$1|دÙ\84Ù\9bÛ\8cÙ\84Ù\9b|دÙ\84Ù\9bÛ\8cÙ\84Ù\9bؽا}}:",
"recreate-moveddeleted-warn": "'''د ڤیرئتوٙ با:شوما بألگە یی کئ ھا ڤادئما و پاکسا بییە د نۊ راس کئردیتە.'''\nبایأد د ڤیرئتوٙ با کئ آیا ھأنی نئھاگئری ڤیرایئشت ئی بألگە خوٙأ.\nپاکسا کاری و جا ڤئ جا کاری ئی بألگە سی حال و بال آسایئشت شوما آمادە بییە:",
- "moveddeleted-notice": "ای بلگٱ پاکسا بیٱ.\nپاکسا کاری و جا ۋ جا کاری ای بلگٱ سی هال و بال آسایشت شوما آمادٱ بیٱ.",
+ "moveddeleted-notice": "اؽ بٱلگٱ پاکسا بیٱ.\nپاکسا کاری ۉ جا ڤ جا کاری اؽ بٱلگٱ سی هال ۉ بال پٱلٛٱمار شما آمادٱ بیٱ.",
"log-fulllog": "دیئن هأمە پئهئرستنوٙمە یا",
"edit-hook-aborted": "ڤیرایئشت ڤا قولاڤ نئھاگئری بییە.\nھیچ توضیی سیش نی.",
"edit-gone-missing": "نأبوٙە ئی بألگە نە ڤئ ھئنگوم بأکیت.\nچئنی ڤئ نأظأر میا کئ ڤئ پاکسا بییە.",
"undo-summary-username-hidden": "خومثی بیئن وانئری $1 وا یه گل کاریار قام بیه",
"cantcreateaccount-text": "حساو دروس بیه و ا ای تیرنشون آی پی(<strong>$1</strong>) وه دس ای [[کاریار:$3|$3]] قلف بیه.\n\n\nدلیل دئه بیه وا $3 ها د<em>$2</em>",
"cantcreateaccount-range-text": "حساو دروس بیه وا تیرنشون آی پی که د پوشینه <strong>$1</strong> ، که وه ئم مینونه دار تیرنشون آی پی شما ئم هئ(<strong>$4</strong>)، وه دس [[کاریار:$3|$3]]قلف بیه.\n\nدلیل دئه بیه وا $3، \"$2\" ئه.",
- "viewpagelogs": "سئÛ\8cÙ\84 پئرئستÙ\86Ù\88Ù\99Ù\85Û\95 Û\8cا ئÛ\8c بأÙ\84Ú¯Û\95 بأکÛ\8cت",
+ "viewpagelogs": "ساÙ\9bÙ\84Ù\9b Ù¾Ù\87رستÙ\86Ù\88Ù\85Ù±Û\8cا اب بٱÙ\84Ú¯Ù± بٱکؽت",
"nohistory": "هیچ ویرگار ویرایشتی د ای بلگه نئ.",
"currentrev": "آخرین دوواره دیئن",
- "currentrev-asof": "آخري وانئری چی $1",
+ "currentrev-asof": "آخری ڤانری چی $1",
"revisionasof": "دوئرٱ دیئن $1",
- "revision-info": "دوواره سیل بیه چی $1 وا $2",
+ "revision-info": "دوئارٱ ساٛلٛ بیٱ چی $1 ڤا $2",
"previousrevision": "ڤانیٱری زیتری ←",
- "nextrevision": "ڤانیٱری تازٱتر",
- "currentrevisionlink": "آخری ڤانیٱری",
+ "nextrevision": "ڤانؽٱری تازٱتر",
+ "currentrevisionlink": "آخری ڤانؽٱری",
"cur": "تازٱ باو",
"next": "نئهایی",
"last": "دمایی",
"page_first": "أڤئلی",
"page_last": "آخئر",
- "histlegend": "اÙ\86تخاÙ\88 Ù\81رخدار:جعÙ\88Û\8cا رادÛ\8cÙ\88 Ù\86Ù\87 سÛ\8c دÙ\88Ù\88ارÙ\87 دÛ\8cئÙ\86 Ù\88 Ù\88ارسÛ\8c Ù\86Ø´Ù\88 دار بکÛ\8cد Ù\88 Û\8cا رÛ\8c رئتÙ\86 Ú©Ù\84Û\8cÚ© بکÛ\8cد .<br />\nØ´Ø±Ø Ù\86Ù\88شتÙ\87: '''({{int:cur}})''' = Ù\88ا آخرÛ\8c دÙ\88Ù\88ارÙ\87 دÛ\8cئÙ\86 Ù\81رخ دارÙ\87 '''({{ int:last}})'''= Ù\88ا دÙ\88ارÙ\87 دÛ\8cئÙ\86 اÙ\86جÙ\88Ù\85 دئÙ\86Û\8c Ù\81رخ دارÙ\87 '''{{int:minoreditletter}}''' =Ù\88Û\8cراÛ\8cشت کؤچک.",
- "history-fieldset-title": "ڤیرگار دوڤارٱ نیٱری",
+ "histlegend": "اÙ\92Ù\86تخاب Ù\81ٱرخدار:جٱڤٱÛ\8cا رادÛ\8cÙ\88 Ù\86اÙ\92 سÛ\8c دÙ\88ئارٱ دÛ\8cئÙ\86 Û\89 ڤارسÛ\8c Ù\86Ø´Ù\88Ý© دار بٱکؽت Û\89 Û\8cا رÛ\8c رٱتÙ\86 Ú©Ù\84Ù\9bÛ\8cÚ© بٱکؽت .<br />\nØ´Ø±Ø Ù\86Ù\88شتÙ\87: '''({{int:cur}})''' = ڤا آخرÛ\8c دÙ\88ئارٱ دÛ\8cئÙ\86 Ù\81ٱرخ دارٱ '''({{ int:last}})'''= ڤا دÙ\88ئارٱ دÛ\8cئÙ\86 Ù±Ù\86جÙ\88Ù\85 داÙ\9bئÙ\86Û\8c Ù\81ٱرخ دارٱ '''{{int:minoreditletter}}''' =Ú¤Û\8cراÛ\8cØ´ Ú©Ù\88چک.",
+ "history-fieldset-title": "ڤیرگار دوئارٱ نیٱری",
"history-show-deleted": "فقط پاكسا بيه",
"histfirst": "قاٛیمی تریݩ",
"histlast": "ایسنی تریݩ",
"mergelog": "سریک سازی پهرستنومه",
"revertmerge": "بی لوئه",
"mergelogpagetext": "شما د هار نوم گه آخرین چیا وه یک شیوسن ویرگار یه بلگه نه د بلگه تر میئنیت.",
- "history-title": "دوڤارٱ دیاٛن ڤیرگار $1",
- "difference-title": "فرخ مینجا وانیریا \"$1\"",
+ "history-title": "دوئارٱ دیئن ڤیرگار $1",
+ "difference-title": "فٱرخ مؽنجا ڤانیرؽا \"$1\"",
"difference-title-multipage": "فرخ مینجا بلگه یا \"$1\" و \"$2\"",
"difference-multipage": "(فرخ مینجا بلگه یا)",
"lineno": "خٱت $1:",
"showhideselectedversions": "شلک دیئن وانیریا انتخاو بیه نه آلشت بکید",
"editundo": "ناٱنجومگر کردن",
"diff-empty": "(بی فرق)",
- "diff-multi-sameuser": "({{PLURAL:$1|یه گل نسقه مینجایی|$1 نسقه یا مینجایی}} وه دس{{PLURAL:$2|کاریاری تر|$2 کاریاریا}} نشو دئه نبیه)",
+ "diff-multi-sameuser": "({{PLURAL:$1|یاٛ نۏسخٱ مؽنجایی|$1 نۏسخٱیا مؽنجایی}} ڤ دٱس{{PLURAL:$2|کاریارؽ تر|$2 کاریارؽا}} نشوݩ داٛئٱ ناٛیٱ)",
"diff-multi-otherusers": "({{PLURAL:$1|یه گل نسقه مینجایی|$1 نسقه یا مینجایی}} وه دس{{PLURAL:$2|کاریاری تر|$2 کاریاریا}} نشو دئه نبیه)",
"diff-multi-manyusers": "({{PLURAL:$1|یه گل وانیری مینجاگرته|$1وانیریا مینجا گرته}} بیشتر د $2 {{PLURAL:$2|کاریار|کاریاریا}} نشو دئه نبیه)",
"difference-missing-revision": "{{PLURAL:$2|یه گل ویرایشت|$2 ویرایشت}} د فرق مینجا($1) {{PLURAL:$2|پیدا نبی|پیدا نبینه}}.\n\nشایت بانی جاونه وه وا یه گل ویرگار وه هنگوم نبیه که د یه گل بلگه پاکسا بیه هوم پیوند بیه بوئه.\nشایت جزئیات د [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} deletion log] پیدا بوئن.",
"search-section": "(بٱئرجا $1)",
"search-category": "(دسه $1)",
"search-file-match": "(یکی کردن مینونه جانیا)",
- "search-suggest": "Ù\85Ù\86ظÙ\88رت Ù\8aÙ\87 بی:$1",
+ "search-suggest": "Ù\85Ù±Ù\86زÛ\8aرت Ù\8aÙ± بی:$1",
"search-rewritten": "نئشوٙ دأئن نأتیجە یا سی $1. سی نئموٙنە بأگأردیت سی $2.",
"search-interwiki-caption": "پروجه یا خوئر",
"search-interwiki-default": "$1 نتیجه یا:",
"rightslog": "پهرستنومه حقوق کاریار",
"rightslogtext": "یه پهرستنومه آلشتیا حقوق کاریاره.",
"action-read": "ای بلگه نه بحو",
- "action-edit": "ای بلگه نه ويرايشت بكيد",
+ "action-edit": "اؽ بٱلگٱ ناْ ڤيرايش بٱكیت",
"action-createpage": "راس کردن بلگیا",
"action-createtalk": "بلگه یا چک چنه نه راس بکید",
"action-createaccount": "حساو ای کاریار نه راس بکید",
"enhancedrc-history": "ڤیرگار",
"recentchanges": "آلشتؽا ایسنی",
"recentchanges-legend": "گوزینٱیا آلشتؽا ایسنی",
- "recentchanges-summary": "دۏ بؽشتر آلشتؽا تازباو ناْ د ڤیکی ناْ د اؽ بٱلگٱ پاٛجۊری کو.",
- "recentchanges-noresult": "Ù\87Û\8cÚ\98 Ø¢Ù\84شتÛ\8c د درازا دÙ\88رÙ\87 دÛ\8cار بÛ\8cÙ\87 Ù\88ا اÛ\8c Ù\85عÛ\8cارÛ\8cا Û\8cÚ©Û\8c Ù\86بی.",
+ "recentchanges-summary": "دۏ بؽشتر آلشتؽا تازباو ناْ د ڤیکی د اؽ بٱلگٱ پاٛجۊری کو.",
+ "recentchanges-noresult": "Ù\87Û\8cÚ\86 Ø¢Ù\84شتؽ د درازا دÛ\89رٱ دؽار بÛ\8cÙ± ڤا اؽ Ù\85اÙ\9bعÛ\8cاؽا Û\8cÙ±Ú©Û\8c Ù\86اÙ\9bی.",
"recentchanges-feed-description": "دو بیشتر آلشتیا تازباو نه د ویکی که ها د هوال حون پیگری کو.",
"recentchanges-label-newpage": "اؽ ڤیرایش یاٛ بٱلگٱ تازٱ دۏرس کردٱ.",
"recentchanges-label-minor": "یٱ یاٛ ڤیرایش کوچکٱ",
"recentchanges-legend-heading": "<strong>میرات:</strong>",
"recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (همچنو باٛینؽت [[ڤیژٱ:بٱلگٱیا تازٱ|نوم گٱ بٱلگٱیا تازٱ]])",
"recentchanges-legend-plusminus": "(<em>±123</em>)",
- "rcnotefrom": "د هار آلشتیا د $2 هیئن(د بال د $1 نشون دئه بیه)",
+ "rcnotefrom": "د هار آلشتؽا د $2 هؽسن(د بال د $1 نشوݩ داٛئٱ بیٱ)",
"rclistfrom": "آلشتؽا تازاٛیؽ کاْ ڤا $3 $2 شرۊ بیٱ نشونش باٛیٱ",
"rcshowhideminor": "ڤیرایشؽا فرٱ کوچک $1",
- "rcshowhideminor-show": "نشو دئن",
+ "rcshowhideminor-show": "نشوݩ داٛئن",
"rcshowhideminor-hide": "قایم کردن",
"rcshowhidebots": "$1 روباتؽا یا بوتؽا",
"rcshowhidebots-show": "نشوݩ داٛین",
- "rcshowhidebots-hide": "قام کردن",
+ "rcshowhidebots-hide": "قایم کردن",
"rcshowhideliu": "$1 کاریاریا سٱبت نوم کردٱ",
- "rcshowhideliu-show": "نشۊ دٱئن",
+ "rcshowhideliu-show": "نشوݩ داٛئن",
"rcshowhideliu-hide": "قایم کردن",
"rcshowhideanons": "کاریار نادؽار $1",
- "rcshowhideanons-show": "Ù\86ئشÙ\88Ù\99 دأئن",
+ "rcshowhideanons-show": "Ù\86Ø´Ù\88Ý© داÙ\9bئن",
"rcshowhideanons-hide": "قایم کردن",
"rcshowhidepatr": "$1 ویرایشتیا تیه پرس بیه",
"rcshowhidepatr-show": "نئشوٙ دأئن",
"rcshowhidepatr-hide": "قام کئردئن",
"rcshowhidemine": "ڤیرایشؽا ماْ $1",
- "rcshowhidemine-show": "Ù\86ئشÙ\88Ù\99 دأئن",
+ "rcshowhidemine-show": "Ù\86Ø´Ù\88Ý© داÙ\9bئن",
"rcshowhidemine-hide": "قایم کردن",
"rcshowhidecategorization": "جأرغە کاری بألگە $1",
"rcshowhidecategorization-show": "نئشوٙ دأئن",
"upload-curl-error28": "تموم بیئن مئلت سی سوار کرد",
"upload-curl-error28-text": "ای دیارگه فره دیر دتو واکنشت نشو دئه.\nلطف بکیت سی یه که دیارگه کنشگتر و ری خطه یه گل وارسی بکیت، اوسه یه گر واستید و هنی تلاش بکیت.\nشایت بیتر با که د گات خلوتری هنی تلاش بکیت.",
"license": "ليانس دار بيئن",
- "license-header": "د هال ۉ بال للیسانس دار بیین",
+ "license-header": "د هال ۉ بال لیسانس دار بیئن",
"nolicense": "هیچی انتخاو نبیه",
"licenses-edit": "گزینه یا مجوز ویرایشت",
"license-nopreview": "(پیش سیل د دسرس نئ)",
"listfiles-summary": "ای بلگه یا ویجه همه جانیایا سوار بیه نه نشو می ئین.",
"listfiles_search_for": "پی جوری سی نوم رسانه:",
"listfiles-userdoesnotexist": "حساو کاریاری «$1» ثوت نام نبیه.",
- "imgfile": "جانیا",
+ "imgfile": "جانؽا",
"listfiles": "نومگە جانیا",
"listfiles_thumb": "بأن کئلئکی",
"listfiles_date": "گات",
"ncategories": "$1{{PLURAL:$1|دسه|دسه يا}}",
"ninterwikis": "$1 {{PLURAL:$1|مئن ویکی|مئن ویکیا}}",
"nlinks": "$1 {{PLURAL:$1|هوم پیوند|هوم پیوندیا}}",
- "nmembers": "$1 {{PLURAL:$1|اندوم|اندوميا}}",
+ "nmembers": "$1 {{PLURAL:$1|ٱندوم|ٱندومؽا}}",
"nmemberschanged": "$1 → $2 {{PLURAL:$2|اندوم|اندومیا}}",
"nrevisions": "$1 {{جمس:$1|وانئری|وانئریا}}",
"nimagelinks": "$1 {{PLURAL:$1|بلگه|بلگيا}} استفاده بیه",
"notargettext": "شما بلگه یا کاریاری مقصدی سی انجوم دئن ای کنشت ریش انتخاو نکردیته.",
"nopagetitle": "چنی بلگه ای نیئش",
"nopagetext": "بلگه حاستنی که شما دیاری کردیته وجود ناره.",
- "pager-newer-n": "{{PLURAL:$1|وانها تر 1وانها تر $1}}",
- "pager-older-n": "{{PLURAL:$1|گپساÙ\84تر 1|Ú¯پسالتر $1}}",
+ "pager-newer-n": "{{PLURAL:$1|ڤانوئاتر 1ڤانوئاتر $1}}",
+ "pager-older-n": "{{PLURAL:$1|گٱپساÙ\84تر 1|Ú¯Ù±پسالتر $1}}",
"suppress": "پائیئن",
"querypage-disabled": "ای بلگه ویجه سی دلیلیا انجومکاری ناکشتگر بیه.",
"apihelp": "هومیاری آی پی آی",
"apihelp-no-such-module": "ماجول \"$1\" پیدا نبی.",
"booksources": "سرچشمٱیا کتاو",
- "booksources-search-legend": "پاٛ جۊری سی سٱرچشمٱیا کتاو",
+ "booksources-search-legend": "پاٛ جۊری سی سرچشمٱیا کتاو",
"booksources-isbn": "آی اس بی ان:",
"booksources-search": "پاٛ جۊری",
"booksources-text": "د هار نومگه ای د هوم پیوندیا د دیارگه یا هنی اومائه که کتاویا نو و دس دوئم می فروشن، و همچنو شایت دونسمنیا بیشتری راجع وه کتاو حاستنی شما داشتوئن:",
"removewatch": "جا ڤئ جا کئردئن د سئیل بأرگ",
"removedwatchtext": "بألگە \"[[:$1]]\" د [[Special:سئیل بأرگ|سئیل بأرگ خوتوٙ]] جا ڤئ جا بییە.",
"removedwatchtext-short": "بلگه \"$1\" د سیل برگ جا وه جا بیه.",
- "watch": "سئÛ\8cÙ\84 کئردئن",
+ "watch": "ساÙ\9bÙ\84Ù\9b کردن",
"watchthispage": "دیئن ئی بألگە",
"unwatch": "دیە نأبییە",
"unwatchthispage": "نئھاگئری دیئن",
"actioncomplete": "عملكرد كامل بيه",
"actionfailed": "عملكرد شكست حرده",
"deletedtext": "«$1» پاکسا بیه.\nسی نهاتری پاکساگریا ایسنی وه $2 سرکشی بکیت.",
- "dellogpage": "پاکسا کردÙ\86 Ù¾Ù\87رستÙ\86Ù\88Ù\85Ù\87",
+ "dellogpage": "پاکسا کردÙ\86 Ù¾Ù\87رستÙ\86Ù\88Ù\85Ù±",
"dellogpagetext": "نومگه هاری یه گل نومگه د آخری چیا پاکسا بیه هئ.",
"deletionlog": "پهرستنومه پاک بیئن",
"reverted": "لرسه د نزیکترین وانئری",
"deleting-backlinks-warning": "''' هشدار:''' [[Special:WhatLinksHere/{{FULLPAGENAME}}|بلگه یا هنی]] ین که وه بلگه یی که شما د حال و بار پاکسا کردن ونیت پیوند دارن یا د وه پرگنجایشت کاری بیینه.",
"rollback": "چواشه کردن ویرایشتیا",
"rollbacklink": "ڤرگٱشتن",
- "rollbacklinkcount": "Ú\86Ù\88اشÙ\87 کردÙ\86 $1 {{PLURAL:$1|Ù\88Û\8cراÛ\8cشت|Ù\88Û\8cراÛ\8cشتÛ\8cا}}",
+ "rollbacklinkcount": "Ú\86Ù\88ئارشٱ کردÙ\86 $1 {{PLURAL:$1|Ú¤Û\8cراÛ\8cØ´|Ú¤Û\8cراÛ\8cشؽا}}",
"rollbacklinkcount-morethan": "چواشه کردن بیشتر د$1 {{PLURAL:$1|ویرایشت|ویرایشتیا}}",
"rollbackfailed": "چواشه کردن د خوئی انجوم نبی",
"cantrollback": "نبوئه ویرایشت نه پاکساگری بکیت:\nآخری هومیار تئنا نیسنه ای گوتاره.",
"changecontentmodel-success-title": "حال و بال مینوٙنە آلئشتکاری بی",
"logentry-contentmodel-change-revertlink": "لئرنیئن",
"logentry-contentmodel-change-revert": "لئرنیئن",
- "protectlogpage": "پأر و پیم کاری پئرئستنوٙمە",
+ "protectlogpage": "پٱر ۉ پیم کاری پهرستنومٱ",
"protectlogtext": "د ھار یئ گئل نومگە د آلئشتیا ریتئراز پأر و پیم کاری بألگە یا ئوٙماە.\n[[Special:ProtectedPages|نومگە بألگە یا پأر و پیم کاری بییە]] نە سی دیئن نومگە پأر و پیم کاری کارگئرا بألگە یا نە سئیل بأکیت.",
"protectedarticle": "پأر و پیم کاری بییە [[$1]]",
"modifiedarticleprotection": "ریتراز حفاظت د \"[[$1]]\" آلشت بیه",
"contribsub2": "سي {{جنسيت:$3|$1}} ($2)",
"contributions-userdoesnotexist": "کاریار \"$1\" ثوت نام نکرده.",
"nocontribs": "هیچ آلشتی وا ای مشقصات دیاری نکرد.",
- "uctop": "تازÙ\87 باÙ\88",
+ "uctop": "تازٱ بÛ\8a",
"month": "د ما(یا زیتر)",
"year": "د سال",
"sp-contributions-newbies": "فقٱت هومیارؽایؽ کاْ د هساو تازٱ بیٱ نشوݩ باٛیٱ",
"movepage-page-moved": "بلگه $1 د $2 جا وه جا بیه",
"movepage-page-unmoved": "نبوئه بلگه $1 د $2 جا وه جا بوئه",
"movepage-max-pages": "بیشترونه انازه بلگه یا شایت سی ($1 {{PLURAL:$1|بلگه|بلگه یا}}) یی که بوئه جا وه جاکاری بوئن، جا وه جاکاری بیه و بلگه یا هنی نه نبوئه و شکل خودانجوم جا وه جاکاری کرد.",
- "movelogpage": "جاوه جا کردن",
+ "movelogpage": "جا ڤ جا کردن",
"movelogpagetext": "د هار یه گل نوم گه د جا وه جایی یا بلگه هئ",
"movesubpage": "{{PLURAL:$1|زیر بلگه|زیر بلگه یا}}",
"movesubpagetext": "ای بلگه $1 زیربلگه داره که د زیر نشو {{PLURAL:|نشو دئه بیه|دئه بینه}}.",
"tooltip-ca-unprotect": "پر و پیم گیری د ای بلگه نه آلشت بکیت",
"tooltip-ca-delete": "ای بلگه نه پاکسا کو",
"tooltip-ca-undelete": "د نو زنه کردن ویرایشتیا ری ای بلگه دما یه که پاکساگری بان",
- "tooltip-ca-move": "ای بگله نه جا وه جا كو",
+ "tooltip-ca-move": "اؽ بٱلگٱ ناْ جا ڤ جا كو",
"tooltip-ca-watch": "اْزاف کردن اؽ بٱلگٱ ڤ نوم نڤشت پاٛگیریاتو",
"tooltip-ca-unwatch": "ورداشتن ای بلگه وه نوم نوشت پیگئریاتو",
"tooltip-search": "پاٛ جۊری {{SITENAME}}",
"tooltip-t-print": "نۏسخٱ پاٛلا بی ینی سی اؽ بٱلگٱ",
"tooltip-t-permalink": "هوم پاٛڤٱن همیشاٛیی سی دوئارٱ دیئن اؽ بٱلگٱ",
"tooltip-ca-nstab-main": "ديئن مؽنونٱ بٱلگٱ",
- "tooltip-ca-nstab-user": "دیین بٱلگٱ کاریار",
+ "tooltip-ca-nstab-user": "دیئن بٱلگٱ کاریار",
"tooltip-ca-nstab-media": "دیئن بلگه وارسگر",
"tooltip-ca-nstab-special": "یٱ یاٛ بٱلگٱ ڤیژٱ آ؛ نمۊئٱ ڤیرایشش بٱکؽت",
- "tooltip-ca-nstab-project": "دÙ\8aئÙ\86 بÙ\84Ú¯Ù\87 پرÙ\88جÙ\87",
+ "tooltip-ca-nstab-project": "دÙ\8aئÙ\86 بٱÙ\84Ú¯Ù± پرÛ\89Ú\98Ù±",
"tooltip-ca-nstab-image": "دیئن بٱلگٱ جانؽا",
"tooltip-ca-nstab-mediawiki": "دیاٛن پیغوم سامۊنٱ",
"tooltip-ca-nstab-template": "ديئن چۊٱ",
"tooltip-save": "آلشتؽا توناْ آمادٱ بٱکؽت",
"tooltip-preview": "پیش ساٛلٛ آلشتؽاتو، لوتف بٱکؽت ڤنوناْ دما د آمایٱ کاریشو ڤ کار باٛیرؽت!",
"tooltip-diff": "آلشتؽا ناْ کاْ شما د ای مٱتن دۏرس کردؽتٱ نشوݩ باٛیٱ",
- "tooltip-compareselectedversions": "فرخیا مینجا د تا د دو بار دیاٛن ای بلگٱ نٱ بۉنیت",
+ "tooltip-compareselectedversions": "فٱرخؽا مؽنجا د تا د دۏ بار دیئن اؽ بٱلگٱ ناْ بونؽت",
"tooltip-watch": "ای بلگه نه د سیل برگتو اضاف بکید",
"tooltip-watchlistedit-normal-submit": "ؤرداشتن سرونیا",
"tooltip-watchlistedit-raw-submit": "وه هنگوم سازی سیل برگ",
"filedelete-old-unregistered": "وانئری جانیا تیارکرده \"$1\" د رسینه جا وجود ناره.",
"filedelete-current-unregistered": "جانیا تیارکرده \"$1\" د رسینه جا نئیش.",
"filedelete-archive-read-only": "نشونگه مال دیارکردن ($1) د لا سرور قاول نیسنن نئ.",
- "previousdiff": "← ويرايشت كۈهنه تر",
- "nextdiff": "ويرايشت تازه تر",
+ "previousdiff": "← ڤیرایش کۏنٱتر",
+ "nextdiff": "ڤیرایش تازٱ تر",
"mediawarning": "'''هشدار''': شایت ای جانیا د خوش رازینه یا گن داشتوئه.\nشایت وا اجرا وه انجومیار شما آسیو دینه.",
"imagemaxsize": "انازه عسگ:<br /><em>(سی شرح جانیا بلگه یا)</em>",
"thumbsize": "انازه بن کلکی:",
"file-info-size": "$1 × $2 پیکسل, ٱندازٱ فایل: $3, MIME نوع: $4",
"file-info-size-pages": "$1 × $2 pixels, انازه جانیا: $3, MIME type: $4, $5 {{PLURAL:$5|بلگه|بلگه یا}}",
"file-nohires": "عٱسک ڤٱن بالاترؽ دش نؽ",
- "svg-long-desc": "جانیا اٛس ۋی جی, نومی $1 × $2 پیکسل, ٱنازٱ جانیا: $3",
+ "svg-long-desc": "جانؽا اْس ڤی جی, نومی $1 × $2 پیکسل, ٱندازٱ جانؽا: $3",
"svg-long-desc-animated": "جانیا جمشدار اس وی جی .نومنا $1 × $2 پيكسل،انازه جانیا:$3",
"svg-long-error": "جانیا اس وی جی نامعتور:$1",
"show-big-image": "جانؽا ٱسلی",
"logentry-rights-rights": "$1 اندوم بیین $3 نه د گرو $4 د $5 {{GENDER:$2|آلشت ده}}",
"logentry-rights-rights-legacy": "$1 اندوم بیین $3 د گرو نه {{GENDER:$2|آلشت ده}}",
"logentry-rights-autopromote": "$1 وه شکل خودانجوم $4 نه د $5 {{GENDER:$2|برد واروتر}}",
- "logentry-upload-upload": "$1 {{GENDER:$2|سوار کرده}} $3",
+ "logentry-upload-upload": "$1 {{GENDER:$2|سڤار کردٱ}} $3",
"logentry-upload-overwrite": "$1 یه گل نسقه تازه د $3 نه {{GENDER:$2|سوار کرد}}",
"logentry-upload-revert": "$1 $3 نه {{GENDER:$2|سوارکرد}}",
"log-name-managetags": "سردیس دیوونداری کردن پهرستنومه",
"authmanager-create-from-login": "Norėdami sukurti savo paskyrą užpildykite laukelius žemiau.",
"authmanager-create-not-in-progress": "Paskyros kūrimas nevyksta arba buvo prarasti sesijos duomenys. Prašome pradėti iš naujo.",
"authmanager-link-not-in-progress": "Paskyrų susiejimas nevyksta arba buvo prarasti sesijos duomenys. Prašome pradėti iš naujo.",
- "authmanager-authplugin-setpass-failed-title": "Slaptažodžio keitimas nepavyko",
- "authmanager-authplugin-setpass-bad-domain": "Negalimas domenas.",
"authmanager-autocreate-noperm": "Automatinis paskyros kūrimas neleidžiamas.",
"authmanager-autocreate-exception": "Automatinis paskyros kūrimas laikinai neleidžiamas dėl ankstesnių klaidų.",
"authmanager-userdoesnotexist": "Vartotojo paskyrą „$1“ nėra registruota.",
"log-action-filter-upload-upload": "Jauna augšupielāde",
"log-action-filter-upload-overwrite": "Atkārtota augšupielāde",
"authmanager-create-disabled": "Kontu veidošana ir atspējota.",
- "authmanager-authplugin-setpass-bad-domain": "Nederīgs domēns.",
"authmanager-email-label": "E-pasts",
"authmanager-email-help": "E-pasta adrese",
"authmanager-realname-label": "Tavs īstais vārds",
"log-action-filter-upload-upload": "नया अपलोड",
"log-action-filter-upload-overwrite": "फैनसे अपलोड",
"authmanager-create-disabled": "लेखा निर्माण अशक्त कएल",
- "authmanager-authplugin-setpass-bad-domain": "अमान्य जालस्थल।",
"authmanager-userdoesnotexist": "प्रयोक्ता खाता \"$1\" पंजीकृत नै अछि।",
"authmanager-email-label": "इमेल",
"authmanager-email-help": "ई-पत्र ठेगान:",
"log-action-filter-protect-protect": "Fiarovana",
"log-action-filter-protect-unprotect": "Fanalana fiarovana",
"authmanager-authn-not-in-progress": "Tsy andalam-panaovana ny fampamantarana, na very ny angon'ny sesiôna. Avereno hatramin'ny voalohany azafady.",
- "authmanager-authplugin-setpass-failed-title": "Tsy nahomby ny fanovana tenimiafina",
- "authmanager-authplugin-setpass-failed-message": "Nandà ny fanovana tenimiafina ny plugin fampamantarana.",
- "authmanager-authplugin-create-fail": "Nandà ny famoronan-kaonty ny plugin fampamantarana.",
- "authmanager-authplugin-setpass-denied": "Tsy ahafahana manova tenimiafina ny plugin fampamantarana.",
"authmanager-userlogin-remembermypassword-help": "Milaza raha tsy maintsy tadidiana mihoatra ny halafan'ny fotoam-pitsidihana ny tenimiafina.",
"authmanager-username-help": "Anaram-pikambana ho an'ny fampamantarana.S",
"authmanager-password-help": "Tenimiafina ho an'ny fampamantarana.",
"authmanager-create-no-primary": "Укажаните најавни податоци не можат да се употребат во создавање на сметка.",
"authmanager-link-no-primary": "Укажаните најавни податоци не можат да се употребат во поврзување на сметка.",
"authmanager-link-not-in-progress": "Поврзувањето на сметката не е во тек, или има губиток на седничките податоци. Почнете одново.",
- "authmanager-authplugin-setpass-failed-title": "Промената на лозинката не успеа",
- "authmanager-authplugin-setpass-failed-message": "Приклучокот за заверка ја одби промената на лозинката.",
- "authmanager-authplugin-create-fail": "Приклучокот за заверка го одби создавањето на сметката.",
- "authmanager-authplugin-setpass-denied": "Приклучокот за заверка не допушта менување на лозинки.",
- "authmanager-authplugin-setpass-bad-domain": "Неважечки домен.",
"authmanager-autocreate-noperm": "Автоматското создавање на сметки не е дозволено.",
"authmanager-autocreate-exception": "Автоматското создавање на сметки е привремено оневозможено поради претходни грешки.",
"authmanager-userdoesnotexist": "Корисничката сметка „$1“ не е регистрирана.",
"watchnologin": "ലോഗിൻ ചെയ്തിട്ടില്ല",
"addwatch": "ശ്രദ്ധിക്കുന്ന താളുകളുടെ പട്ടികയിലേക്കു ചേർക്കുക",
"addedwatchtext": "താങ്കൾ [[Special:Watchlist|ശ്രദ്ധിക്കുന്ന താളുകളുടെ പട്ടികയിലേക്ക്]] \"[[:$1]]\" എന്ന ഈ താളും അതിന്റെ സംവാദത്താളും ചേർത്തിരിക്കുന്നു.",
+ "addedwatchtext-talk": "\"[[:$1]]\" ഒപ്പം ഇതിന്റെ ബന്ധപ്പെട്ട താളും താങ്കൾ [[Special:Watchlist|ശ്രദ്ധിക്കുന്നവയുടെ പട്ടികയിലേക്ക്]] ചേർത്തിരിക്കുന്നു.",
"addedwatchtext-short": "\"$1\" എന്ന താൾ താങ്കൾ ശ്രദ്ധിക്കുന്നവയുടെ പട്ടികയിലേക്ക് ചേർത്തു.",
"removewatch": "ശ്രദ്ധിക്കുന്ന താളുകളുടെ പട്ടികയിൽ നിന്നും ഒഴിവാക്കുക",
"removedwatchtext": "താങ്കൾ [[Special:Watchlist|ശ്രദ്ധിക്കുന്ന താളുകളുടെ പട്ടികയിൽ]] നിന്നും \"[[:$1]]\" എന്ന താളും അതിന്റെ സംവാദത്താളും നീക്കം ചെയ്തിരിക്കുന്നു.",
+ "removedwatchtext-talk": "\"[[:$1]]\" ഒപ്പം ഇതിന്റെ ബന്ധപ്പെട്ട താളും താങ്കൾ [[Special:Watchlist|ശ്രദ്ധിക്കുന്നവയുടെ പട്ടികയിൽ]] നിന്ന് ഒഴിവാക്കിയിരിക്കുന്നു.",
"removedwatchtext-short": "\"$1\" എന്ന താൾ താങ്കൾ ശ്രദ്ധിക്കുന്നവയുടെ പട്ടികയിൽ നിന്ന് നീക്കി.",
"watch": "മാറ്റങ്ങൾ ശ്രദ്ധിക്കുക",
"watchthispage": "ഈ താൾ ശ്രദ്ധിക്കുക",
"authmanager-create-no-primary": "അംഗത്വസൃഷ്ടിക്ക് നൽകിയിരിക്കുന്ന വിവരങ്ങൾ ഉപയോഗിക്കാനാവില്ല.",
"authmanager-link-no-primary": "അംഗത്വം ബന്ധിപ്പിക്കാൻ നൽകിയിരിക്കുന്ന വിവരങ്ങൾ ഉപയോഗിക്കാനാവില്ല.",
"authmanager-link-not-in-progress": "സെഷൻ ഡേറ്റ നഷ്ടപ്പെട്ടതിനാൽ അംഗത്വം ബന്ധിപ്പിക്കലിന്റെ പുരോഗതി നഷ്ടമായിരിക്കുന്നു. ദയവായി ആദ്യം മുതൽ വീണ്ടും തുടങ്ങുക.",
- "authmanager-authplugin-setpass-failed-title": "രഹസ്യവാക്ക് മാറ്റം പരാജയപ്പെട്ടു",
- "authmanager-authplugin-setpass-bad-domain": "അസാധുവായ ഡൊമൈൻ.",
"authmanager-userdoesnotexist": "\"$1\" എന്ന ഉപയോക്തൃ അംഗത്വം നിലവിലില്ല.",
"authmanager-userlogin-remembermypassword-help": "രഹസ്യവാക്ക് സെഷൻ കാലയളവിലധികം ഓർത്തുവെക്കണോ.",
"authmanager-username-help": "രഹസ്യവാക്ക് ഉപയോഗിച്ചുള്ള സാധൂകരണം.",
"log-action-filter-rights-rights": "လူဖြင့် ပြောင်းလဲမှု",
"log-action-filter-rights-autopromote": "အလိုအလျောက် ပြောင်းလဲမှု",
"authmanager-create-disabled": "အကောင့်ဖန်တီးခြင်းကို ပိတ်ထားသည်။",
- "authmanager-authplugin-setpass-failed-title": "စကားဝှက်ပြောင်းလဲမှု မအောင်မြင်ပါ",
"authmanager-autocreate-noperm": "အလိုအလျာက် အကောင့်ဖန်တီးခြင်းကို ခွင့်မပြုပါ။",
"authmanager-autocreate-exception": "ရှေ့ကအမှားများကြောင့် အလိုအလျာက် အကောင့်ဖန်တီးခြင်းကို ယာယီပိတ်ထားသည်။",
"authmanager-userdoesnotexist": "အသုံးပြုသူအကောင့် \"$1\" သည် မှတ်ပုံမတင်ထားပါ။",
"authmanager-create-no-primary": "Le credenziali date nun se ponno ausà pe' puté crià n'utenza.",
"authmanager-link-no-primary": "'E credenziale date nun se ponno ausà p' 'o cullegamento 'utenza.",
"authmanager-link-not-in-progress": "'O cullegamento 'e cunte nun è 'ncurzo o 'e date d' 'a sessione so' ghiute pierze. Verite 'accummincià n'ata vota a 'o prencipio.",
- "authmanager-authplugin-setpass-failed-title": "'O cagnamento d' 'a password è ghiuto malamente",
- "authmanager-authplugin-setpass-failed-message": "'O plugin 'autenticazione nun ave lassato 'o cagnamento d' 'a password.",
- "authmanager-authplugin-create-fail": "'O plugin autenticazione nun lassaie crià ll'utenza.",
- "authmanager-authplugin-setpass-denied": "'O plugin autenticazione nun premmettesse 'e cagnà 'e password.",
- "authmanager-authplugin-setpass-bad-domain": "Dominio invalido.",
"authmanager-autocreate-noperm": "'A criazione automatica 'e ll'utenza nun fosse premmessa.",
"authmanager-autocreate-exception": "Criazione 'e cunte automatica stutata pe nu poc'ê tiempo pe vvìa 'e ll'errure precedenti.",
"authmanager-userdoesnotexist": "'O cunto utente \"$1\" nun è riggistrato.",
"authmanager-create-no-primary": "De oppgitte akkreditivene kunne ikke brukes for kontooppretting.",
"authmanager-link-no-primary": "De oppgitte akkreditivene kunne ikke brukes for kontolenking.",
"authmanager-link-not-in-progress": "Kontolenking foregår ikke eller sesjonsdata er tapt. Start igjen fra begynnelsen.",
- "authmanager-authplugin-setpass-failed-title": "Passordendring mislyktes",
- "authmanager-authplugin-setpass-failed-message": "Autentiseringspluginen avviste passordendringen.",
- "authmanager-authplugin-create-fail": "Autentiseringspluginen avviste kontoopprettelsen.",
- "authmanager-authplugin-setpass-denied": "Autentiseringspluginen tillater ikke endring av passord.",
- "authmanager-authplugin-setpass-bad-domain": "Ugyldig domene.",
"authmanager-autocreate-noperm": "Automatisk kontoopprettelse tillates ikke.",
"authmanager-autocreate-exception": "Automatisk kontoopprettelse er midlertidig deaktivert på grunn av tidligere feil.",
"authmanager-userdoesnotexist": "Brukerkontoen «$1» er ikke registrert.",
"authmanager-create-no-primary": "De ingevoerde inloggegevens kunnen niet worden gebruikt voor het aanmaken van het account.",
"authmanager-link-no-primary": "De ingevoerde inloggegevens kunnen niet worden gebruikt om het account te koppelen.",
"authmanager-link-not-in-progress": "Het koppelen van het account is niet in behandeling, of de sessiegegevens zijn verloren gegaan. Start opnieuw vanaf het begin.",
- "authmanager-authplugin-setpass-failed-title": "Wachtwoord wijzigen is mislukt",
- "authmanager-authplugin-setpass-failed-message": "De verificatie-invoegtoepassing heeft het wijzigen van het wachtwoord geweigerd.",
- "authmanager-authplugin-create-fail": "De verificatie-invoegtoepassing heeft geweigerd uw account aan te maken.",
- "authmanager-authplugin-setpass-denied": "De verificatie-invoegtoepassing staat het wijzigen van wachtwoorden niet toe.",
- "authmanager-authplugin-setpass-bad-domain": "Ongeldig domein.",
"authmanager-autocreate-noperm": "Het automatisch aanmaken van accounts is niet toegestaan.",
"authmanager-autocreate-exception": "Het automatisch aanmaken van accounts is tijdelijk uitgeschakelijk vanwege eerdere fouten.",
"authmanager-userdoesnotexist": "Gebruikersaccount \"$1\" is niet geregistreerd.",
"log-action-filter-upload-overwrite": "Tornar mandar",
"authmanager-authn-autocreate-failed": "La creacion automatica d’un compte local a fracassat : $1",
"authmanager-create-disabled": "La creacion de compte es desactivada.",
- "authmanager-authplugin-setpass-bad-domain": "Domeni invalid.",
"authmanager-autocreate-noperm": "La creacion automatica de compte es pas autorizada.",
"authmanager-password-help": "Senhal per l'autentificacion.",
"authmanager-domain-help": "Domeni per l'autentificacion extèrna.",
"log-action-filter-all": "ਸਾਰੇ",
"log-action-filter-block-block": "ਪਾਬੰਦੀ",
"log-action-filter-block-unblock": "ਪਾਬੰਦੀ ਹਟਾਈ",
- "authmanager-authplugin-setpass-bad-domain": "ਗਲਤ ਡੋਮੇਨ",
"authmanager-password-help": "ਪ੍ਰਮਾਣਿਕਤਾ ਲਈ ਪਛਾਣ-ਸ਼ਬਦ।",
"authmanager-email-label": "ਈਮੇਲ",
"authmanager-email-help": "ਈਮੇਲ ਪਤਾ",
"authmanager-create-no-primary": "Podanych danych uwierzytelniających nie można użyć do utworzenia konta.",
"authmanager-link-no-primary": "Podanych danych uwierzytelniających nie można użyć do powiązania konta.",
"authmanager-link-not-in-progress": "Tworzenie konta nie jest wykonywane lub dane sesji zostały utracone. Zacznij od początku.",
- "authmanager-authplugin-setpass-failed-title": "Zmiana hasła nie powiodła się",
- "authmanager-authplugin-setpass-failed-message": "Wtyczka do uwierzytelniania uniemożliwiła zmianę hasła.",
- "authmanager-authplugin-create-fail": "Wtyczka do uwierzytelniania uniemożliwiła utworzenie konta.",
- "authmanager-authplugin-setpass-denied": "Wtyczka uwierzytelniania nie zezwala na zmianę haseł.",
- "authmanager-authplugin-setpass-bad-domain": "Niepoprawna domena.",
"authmanager-autocreate-noperm": "Automatyczne tworzenie konta jest niedozwolone.",
"authmanager-autocreate-exception": "Automatyczne tworzenie konta tymczasowo wyłączone z powodu wcześniejszych błędów.",
"authmanager-userdoesnotexist": "Konto użytkownika „$1” nie jest zarejestrowane.",
"authmanager-create-no-primary": "د ورکړل شوي کړني اعتبار نه شي کولی چي د حساب جوړولو لپاره وکارول شي.",
"authmanager-link-no-primary": "د ورکړل شوي تایید وړتیا د حساب کولو لپاره نه کارول کیدی.",
"authmanager-link-not-in-progress": "تایید په پرمختګ کې ندي یا د ناستې ډاټا ورک شوی. لطفا د پیل څخه بیا شروع وکړئ.",
- "authmanager-authplugin-setpass-failed-title": "د پټنوم بدلون ترسره نشو",
- "authmanager-authplugin-setpass-failed-message": "د تایید کولو پلگ ان د پاسورډ بدلون رد کړ.",
- "authmanager-authplugin-create-fail": "د تایید کولو پلگ ان د حساب جوړولو انکار رد کړ.",
- "authmanager-authplugin-setpass-denied": "د تاییدولو فلګن بدل شوي پټنوم اجازه نلري.",
- "authmanager-authplugin-setpass-bad-domain": "ناباوره ډومین.",
"authmanager-autocreate-noperm": "د اتوماتيک حساب جوړولو جوړولو اجازه نشته.",
"authmanager-autocreate-exception": "د پخوانیو غلطیو له امله د اتوماتیک حساب ورکولو جوړول په عارضي ډول معیوب شوی.",
"authmanager-userdoesnotexist": "د \"$1\" گڼون نه دی ثبت شوی.",
"authmanager-create-no-primary": "As credenciais fornecidas não puderam ser usadas para criação de conta.",
"authmanager-link-no-primary": "As credenciais fornecidas não puderam ser usadas para vinculação de contas.",
"authmanager-link-not-in-progress": "A associação de contas não está em andamento ou os dados da sessão foram perdidos. Por favor, comece novamente desde o início.",
- "authmanager-authplugin-setpass-failed-title": "Falha na alteração da senha",
- "authmanager-authplugin-setpass-failed-message": "O plugin de autenticação negou a alteração da senha.",
- "authmanager-authplugin-create-fail": "O plugin de autenticação negou a criação da conta.",
- "authmanager-authplugin-setpass-denied": "O plugin de autenticação não permite alterar senhas.",
- "authmanager-authplugin-setpass-bad-domain": "Domínio inválido.",
"authmanager-autocreate-noperm": "A criação automática de conta não é permitida.",
"authmanager-autocreate-exception": "Criação automática de conta temporariamente desativada devido a erros anteriores.",
"authmanager-userdoesnotexist": "A conta de usuário \"$1\" não está registrada.",
"logentry-rights-autopromote": "$1 foi automaticamente {{GENDER:$2|promovido|promovida}} de $4 a $5",
"logentry-upload-upload": "$1 {{GENDER:$2|carregou}} $3",
"logentry-upload-overwrite": "$1 {{GENDER:$2|carregou}} uma nova versão de $3",
- "logentry-upload-revert": "$1 {{GENDER:$2|carregou}} $3",
+ "logentry-upload-revert": "$1 {{GENDER:$2|reverteu}} $3 para uma versão antiga",
"log-name-managetags": "Registo de gestão de etiquetas",
"log-description-managetags": "Esta página lista as tarefas de gestão relacionadas com [[Special:Tags|etiquetas]]. O registo contém apenas ações realizadas manualmente por um administrador; etiquetas podem ser criadas ou eliminadas pelo ''software'' da wiki sem uma entrada a ser gravada neste registo.",
"logentry-managetags-create": "$1 {{GENDER:$2|criou}} a etiqueta \"$4\"",
"log-action-filter-suppress-reblock": "Supressão de utilizador por rebloqueio",
"log-action-filter-upload-upload": "Novo carregamento",
"log-action-filter-upload-overwrite": "Recarregamento",
+ "log-action-filter-upload-revert": "Reverter",
"authmanager-authn-not-in-progress": "A autenticação não está em curso ou os dados da sessão foram perdidos. Comece novamente desde o princípio, por favor.",
"authmanager-authn-no-primary": "As informações de identificação fornecidas não podem ser autenticadas.",
"authmanager-authn-no-local-user": "As credenciais fornecidas não estão associadas a nenhum utilizador nesta wiki.",
"authmanager-create-no-primary": "Não foi possível criar uma conta com as credenciais fornecidas.",
"authmanager-link-no-primary": "Não foi possível ligar a conta usando as credenciais fornecidas.",
"authmanager-link-not-in-progress": "A ligação da conta não está em curso ou os dados da sessão foram perdidos. Comece novamente desde o princípio, por favor.",
- "authmanager-authplugin-setpass-failed-title": "A alteração de palavra-passe falhou",
- "authmanager-authplugin-setpass-failed-message": "O plugin de autenticação negou a alteração de palavra-passe.",
- "authmanager-authplugin-create-fail": "O plugin de autenticação negou a criação de conta.",
- "authmanager-authplugin-setpass-denied": "O plugin de autenticação não permite a alteração de palavras-passe.",
- "authmanager-authplugin-setpass-bad-domain": "Domínio inválido.",
"authmanager-autocreate-noperm": "A criação automática de contas não é permitida.",
"authmanager-autocreate-exception": "A criação automática de contas foi temporariamente desativada devido a erros prévios.",
"authmanager-userdoesnotexist": "A conta de utilizador(a) \"$1\" não está registada.",
"passwordpolicies-policy-maximalpasswordlength": "A palavra-passe tem de ter menos de $1 {{PLURAL:$1|carácter|caracteres}}",
"passwordpolicies-policy-passwordcannotbepopular": "A palavra-passe não pode {{PLURAL:$1|ser a mais popular|estar na lista das $1 palavras-passe mais populares}}",
"passwordpolicies-policy-passwordnotinlargeblacklist": "A palavra-passe não pode constar na lista das 100 000 palavras-passe usadas com mais frequência.",
+ "passwordpolicies-policyflag-forcechange": "deve mudar ao iniciar sessão",
"easydeflate-invaliddeflate": "O conteúdo fornecido não está devidamente comprimido",
"unprotected-js": "Por motivos de segurança o JavaScript de páginas desprotegidas não pode ser carregado. Crie javascript só no espaço nominal/domínio MediaWiki: ou numa subpágina do utilizador"
}
"ipb-confirm": "Used as hidden field in the form on [[Special:Block]].",
"ipb-sitewide": "A type of block the user can select from on [[Special:Block]].",
"ipb-partial": "A type of block the user can select from on [[Special:Block]].",
+ "ipb-sitewide-help": "Help text describing the effects of a sitewide block on [[Special:Block]]",
+ "ipb-partial-help": "Help text describing the effects of a partial block on [[Special:Block]]",
"ipb-pages-label": "The label for an autocomplete text field to specify pages to block a user from editing on [[Special:Block]].",
"ipb-namespaces-label": "The label for an autocomplete text field to specify namespaces to block a user from editing on [[Special:Block]].",
"badipaddress": "An error message shown when one entered an invalid IP address in blocking page.",
"authmanager-create-no-primary": "Credețialele folosite nu au putut fi folosite pentru crearea de conturi.",
"authmanager-link-no-primary": "Credențialele folosite nu au putut fi folosite pentru conectarea conturilor.",
"authmanager-link-not-in-progress": "Conectarea conturilor nu este în progres sau datele sesiunii au fost pierdute. Vă rugăm să începeți de la început.",
- "authmanager-authplugin-setpass-failed-title": "Schimbarea parolei a eșuat",
- "authmanager-authplugin-setpass-failed-message": "Pluginul de autentificare a respins modificarea parolei.",
- "authmanager-authplugin-create-fail": "Pluginul de autentificare a respins crearea contului.",
- "authmanager-authplugin-setpass-denied": "Pluginul de autentificare nu permite schimbarea parolei.",
- "authmanager-authplugin-setpass-bad-domain": "Domeniu invalid.",
"authmanager-autocreate-noperm": "Crearea automată de conturi nu este permisă.",
"authmanager-autocreate-exception": "Crearea automată de conturi este temporar oprită din cauza erorilor anterioare.",
"authmanager-userdoesnotexist": "Contul de utilizator „$1” nu este înregistrat.",
"log-action-filter-upload-upload": "Carecamende nuève",
"log-action-filter-upload-overwrite": "Recareche",
"log-action-filter-upload-revert": "Turnate",
- "authmanager-authplugin-setpass-failed-title": "Cangiamende d'a passuord fallite",
- "authmanager-authplugin-setpass-bad-domain": "Dominie invalide.",
"authmanager-email-label": "Email",
"authmanager-email-help": "Indirizze e-mail",
"authmanager-realname-label": "Nome vere",
"authmanager-create-no-primary": "Предоставленные учётные данные не могут быть использованы для создания учётной записи.",
"authmanager-link-no-primary": "Предоставленные учётные данные не могут быть использованы для связывания учётных записей.",
"authmanager-link-not-in-progress": "Связывание учётной записи не выполняется или данные сессии были утеряны. Пожалуйста, начните снова с самого начала.",
- "authmanager-authplugin-setpass-failed-title": "Ошибка изменения пароля",
- "authmanager-authplugin-setpass-failed-message": "Плагин аутентификации запрещает смену пароля.",
- "authmanager-authplugin-create-fail": "Плагин аутентификации запрещает создание учётных записей.",
- "authmanager-authplugin-setpass-denied": "Плагин аутентификации не позволяет изменять пароли.",
- "authmanager-authplugin-setpass-bad-domain": "Неверный домен.",
"authmanager-autocreate-noperm": "Автоматическое создание учётных записей не разрешено.",
"authmanager-autocreate-exception": "Автоматическое создание учётной записи временно отключено из-за предыдущих ошибок.",
"authmanager-userdoesnotexist": "Не зарегистрировано учётной записи «$1».",
"authmanager-create-no-primary": "Эппит сибидиэнньэҕин туһанан бэлиэтэнэр сатаммат эбит.",
"authmanager-link-no-primary": "Эппит сибидиэнньэҕин туһанан бэлиэ ааттары холбуур сатаммат эбит.",
"authmanager-link-not-in-progress": "Бэлиэ ааттары холбуур сатаммата эбэтэр сиэссийэ быстан хаалла. Саҥаттан хатылаан көр.",
- "authmanager-authplugin-setpass-failed-title": "Аһарыгы уларытар табыллыбата",
- "authmanager-authplugin-setpass-failed-message": "Аутентификация былаҕыына аһарыгы уларытары бобор.",
- "authmanager-authplugin-create-fail": "Аутентификация былаҕыына бэлиэтэнэри бобор.",
- "authmanager-authplugin-setpass-denied": "Аутентификация былаҕыына аһарыгы уларытары бобор.",
- "authmanager-authplugin-setpass-bad-domain": "Алҕастаах домен.",
"authmanager-autocreate-noperm": "Аптамаатынан бэлиэтэнии көҥүллэммэт.",
"authmanager-autocreate-exception": "Аптамаатынан бэлиэтэнии урут тахсыбыт алҕастартан сылтаан араарыллыбыт.",
"authmanager-userdoesnotexist": "Маннык аат «$1» суох.",
"logentry-rights-autopromote": "$1 je {{GENDER:$2|bil samodejno povišan|bila samodejno povišana|bil(-a) samodejno povišan(-a)}} z $4 na $5",
"logentry-upload-upload": "$1 je {{GENDER:$2|naložil|naložila|naložil(-a)}} $3",
"logentry-upload-overwrite": "$1 je {{GENDER:$2|naložil|naložila|naložil(-a)}} novo različico $3",
- "logentry-upload-revert": "$1 je {{GENDER:$2|naložil|naložila|naložil(-a)}} $3",
+ "logentry-upload-revert": "$1 je {{GENDER:$2|vrnil|vrnila|vrnil(-a)}} $3 na starejšo različico",
"log-name-managetags": "Dnevnik upravljanja oznak",
"log-description-managetags": "Stran navaja opravila upravljanja, povezana z [[Special:Tags|oznakami]]. Dnevnik vsebuje samo dejanja, ki so jih ročno izvedli administratorji; oznake je lahko ustvarilo ali izbrisalo tudi programje wiki brez zabeleženega vnosa v tem dnevniku.",
"logentry-managetags-create": "$1 je {{GENDER:$2|ustvaril|ustvarila|ustvaril(-a)}} oznako »$4«",
"log-action-filter-suppress-reblock": "Zatrtje uporabnika s ponovno blokado",
"log-action-filter-upload-upload": "Novo nalaganje",
"log-action-filter-upload-overwrite": "Ponovno nalaganje",
+ "log-action-filter-upload-revert": "Vrni",
"authmanager-authn-not-in-progress": "Overjanje ni v teku ali pa smo izgubili podatke seje. Prosimo, pričnite znova od začetka.",
"authmanager-authn-no-primary": "Navedenih poverilnic nismo mogli overiti.",
"authmanager-authn-no-local-user": "Navedene poverilnice niso povezane z nobenim uporabnikom na wikiju.",
"authmanager-create-no-primary": "Navedenih poverilnic ne moremo uporabiti za ustvarjanje računa.",
"authmanager-link-no-primary": "Navedenih poverilnic ne moremo uporabiti za povezovanje računa.",
"authmanager-link-not-in-progress": "Povezovanje računa ni v teku ali pa smo izgubili podatke seje. Prosimo, pričnite znova od začetka.",
- "authmanager-authplugin-setpass-failed-title": "Sprememba gesla je spodletela",
- "authmanager-authplugin-setpass-failed-message": "Vtičnik za overitev je zavrnil spremembo gesla.",
- "authmanager-authplugin-create-fail": "Vtičnik za overitev je zavrnil ustvarjanje računa.",
- "authmanager-authplugin-setpass-denied": "Vtičnik za overitev ne dovoljuje spreminjanje gesel.",
- "authmanager-authplugin-setpass-bad-domain": "Neveljavna domena.",
"authmanager-autocreate-noperm": "Samodejno ustvarjanje računov ni dovoljeno.",
"authmanager-autocreate-exception": "Samodejno ustvarjanje računov smo začasno onemogočili zaradi predhodnih napak.",
"authmanager-userdoesnotexist": "Uporabniški račun »$1« ni registriran.",
"authmanager-create-no-primary": "Kredencialet e dhëna nuk mund të përdoreshin për krijim të llogarisë.",
"authmanager-link-no-primary": "Kredencialet e dhëna nuk mund të përdoreshin për lidhje të llogarive.",
"authmanager-link-not-in-progress": "Lidhja e llogarive nuk është në progres ose të dhënat e sesionit janë humbur. Ju lutem filloni nga fillimi.",
- "authmanager-authplugin-setpass-failed-title": "Ndryshimi i fjalëkalimit dështoi",
- "authmanager-authplugin-setpass-failed-message": "Plugin-i i autentikimit mohoi ndërrimin e fjalëkalimit.",
- "authmanager-authplugin-create-fail": "Plugin-i i autentikimit mohoi krijimin e llogarisë.",
- "authmanager-authplugin-setpass-denied": "Plugin-i i autentikimit nuk lejon ndërrimin e fjalëkalimeve.",
- "authmanager-authplugin-setpass-bad-domain": "Domen i pavlefshëm.",
"authmanager-autocreate-noperm": "Krijimi automatik i llogarive nuk lejohet.",
"authmanager-autocreate-exception": "Krijimi automatik i llogarive përkohësisht i pamundësuar për shkak të gabimeve.",
"authmanager-userdoesnotexist": "Llogaria e përdoruesit \"$1\" nuk është e regjistruar.",
"authmanager-create-no-primary": "Не могу да искористим пружене акредитиве за отварање налога.",
"authmanager-link-no-primary": "Не могу да искористим пружене акредитиве за спајање налога.",
"authmanager-link-not-in-progress": "Спајање налога није у току или је дошло до губитка података о сесији. Почните испочетка.",
- "authmanager-authplugin-setpass-failed-title": "Неуспешна промена лозинке",
- "authmanager-authplugin-setpass-failed-message": "Додатак за потврду идентитета је одбио промену лозинке.",
- "authmanager-authplugin-create-fail": "Додатак за потврду идентитета је одбио отварање налога.",
- "authmanager-authplugin-setpass-denied": "Додатак за потврду идентитета не дозвољава мењање лозику.",
- "authmanager-authplugin-setpass-bad-domain": "Неважећи домен.",
"authmanager-autocreate-noperm": "Аутоматско отварање налога није дозвољено.",
"authmanager-autocreate-exception": "Аутоматско креирање налога је привремено онемогућено због претходних грешака.",
"authmanager-userdoesnotexist": "Кориснички налог „$1“ није отворен.",
"authmanager-create-no-primary": "Ne mogu da iskoristim pružene akreditive za otvaranje naloga.",
"authmanager-link-no-primary": "Ne mogu da iskoristim pružene akreditive za spajanje naloga.",
"authmanager-link-not-in-progress": "Spajanje naloga nije u toku ili je došlo do gubitka podataka o sesiji. Počnite ispočetka.",
- "authmanager-authplugin-setpass-failed-title": "Neuspešna promena lozinke",
- "authmanager-authplugin-setpass-failed-message": "Dodatak za potvrdu identiteta je odbio promenu lozinke.",
- "authmanager-authplugin-create-fail": "Dodatak za potvrdu identiteta je odbio otvaranje naloga.",
- "authmanager-authplugin-setpass-denied": "Dodatak za potvrdu identiteta ne dozvoljava menjanje loziku.",
- "authmanager-authplugin-setpass-bad-domain": "Nevažeći domen.",
"authmanager-autocreate-noperm": "Automatsko otvaranje naloga nije dozvoljeno.",
"authmanager-autocreate-exception": "Automatsko kreiranje naloga je privremeno onemogućeno zbog prethodnih grešaka.",
"authmanager-userdoesnotexist": "Korisnički nalog „$1“ nije otvoren.",
"log-action-filter-upload-overwrite": "Unjal deui",
"authmanager-create-disabled": "Panyieunan akun ditumpurkeun",
"authmanager-create-from-login": "Pikeun nyieun akun, mangga eusi ieu kolom di handap.",
- "authmanager-authplugin-setpass-failed-title": "Parobahan kecap sandi gagal",
- "authmanager-authplugin-setpass-bad-domain": "Domain teu sah.",
"authmanager-autocreate-noperm": "Panyieunan akun otomatis teu diidinan.",
"authmanager-userdoesnotexist": "Akun pamaké \"$1\" teu kadaptar.",
"authmanager-username-help": "Sandiasma pikeun oténtikasi.",
"authmanager-create-no-primary": "De angivna inloggningsuppgifterna kunde inte användas för att skapa ett konto.",
"authmanager-link-no-primary": "De angivna inloggningsuppgifterna kunde inte användas för att länka ett konto.",
"authmanager-link-not-in-progress": "Kontolänkning pågår inte eller så har sessionsdata förlorats. Var god börja om från början igen.",
- "authmanager-authplugin-setpass-failed-title": "Kunde inte ändra lösenordet",
- "authmanager-authplugin-setpass-failed-message": "Insticksmodulen för autentisering nekade lösenordsändringen.",
- "authmanager-authplugin-create-fail": "Insticksmodulen för autentisering nekade skapande av konto.",
- "authmanager-authplugin-setpass-denied": "Insticksmodulen för autentisering tillåter inte ändring av lösenord.",
- "authmanager-authplugin-setpass-bad-domain": "Ogiltig domän.",
"authmanager-autocreate-noperm": "Det är inte tillåtet att skapa konton automatiskt.",
"authmanager-autocreate-exception": "P.g.a. tidigare fel har automatiskt skapande av konton inaktiverats.",
"authmanager-userdoesnotexist": "Användarkontot \"$1\" är inte registrerat.",
"log-action-filter-suppress-delete": "Laxiy pkt’aniy quw zngazyan",
"log-action-filter-upload-upload": "Misan sni’",
"log-action-filter-upload-overwrite": "T’aring lawziy pawsa’ sa kktan",
- "authmanager-authplugin-setpass-failed-title": "Wal yaqih quw sinbah sa mima’",
- "authmanager-authplugin-setpass-bad-domain": "Ungat zyuwaw na wangyu’.",
"authmanager-email-label": "e-meyo’",
"authmanager-email-help": "Zyusyo na e-meyo’",
"authmanager-realname-label": "Spzyang balay lalu’",
"php-uploaddisabledtext": "ಪಿಎಚ್'ಪಿ. ಡ್ ಕಡತ ಮಿತೇರಿಕೆಲೆನ್ ನಿಷ್ಕ್ರಿಯ ಮಲ್ದ್ಂಡ್.\nದಯಮಲ್ತ್ ಕಡತ_ಮಿತೇರಿಕೆ ಅಟ್ಟಣೆಲೆನ್ ಸಮಾತೂಲೆ.",
"uploadscripted": "ಕಡತೊಡು ಎಚ್'ಟಿಎಂಎಲ್ ಇಜಿಂಡ ಸ್ಕ್ರಿಪ್ಟ್ ಅಂಕೇತ ಉಂಡು, ಅವೆನ್ ಜಾಲದರ್ಶಿಲು ದೋಷಪೂರ್ಣವಾದ್ ವ್ಯಾಖ್ಯಾನ ಮಲ್ಪರೆ ಯಾವು.",
"upload-scripted-pi-callback": "ಎಕ್ಸ್'ಎಂಎಲ್ - ಶೈಲಿಪತ್ರ ಪ್ರಕ್ರಿಯೆಕಾರಕ ಸೂಚನೆ ಉಪ್ಪುನ ಕಡತೊನು ಮಿತೇರಿಸಾವರೆ ಆಪುಜಿ.",
+ "upload-scripted-dtd": "ಅ-ಮಾನಕ ಡಿಟಿಡಿ ಘೋಷಣೆ ಉಪ್ಪುನ ಎಸ್ವಿಜಿ ಕಡತೊಲೆನ್ ಮಿತೇರಾವರೆ ಆಪುಜಿ.",
+ "uploaded-script-svg": "ಮಿತೇರಾಯಿನ ಎಸ್ವಿಜಿ ಕಡತೊಡು $1 ಲಿಪಿಕಾರಕ ಘಟಕ ಪತ್ತೆ ಆಂಡ್.",
+ "uploaded-hostile-svg": "ಮಿತೇರಾಯಿನ ಎಸ್ವಿಜಿ ಕಡತದ ಶೈಲಿ ಘಟಕೊಡು ಅಸುರಕ್ಷಿತ ಸಿಎಸ್ಎಸ್ ಪತ್ತೆ ಆಂಡ್.",
+ "uploaded-event-handler-on-svg": "ಎಸ್ವಿಜಿ ಕಡತೊಲೆಡ್ ಘಟನೆ-ನಿರ್ವಹಣ ಗುಣೊ <code>$1=\"$2\"</code> ಅಟ್ಟಣೆಗ್ ಒಪ್ಪಿಗೆ ಇಜ್ಜಿ.",
+ "uploaded-href-attribute-svg": "<a> ಫಟಕೊಲು ದತ್ತಾಂಶೊಗು ಮಾತ್ರಾ ಕೊಂಡಿ (href) ಆಪಾ: (ಅಂತರ್ಗತ ಕಡತ), http:// or https://, ಇಜಿಂಡ ತುಂಡು (#, ಅವೇ-ದಾಖಲೆ) ಗುರಿಲು. ಇತರೆ ಘಟಕೊಲೆಗ್,ಉದರ್ಮೆಗ್ <image>, ದತ್ತಾಂಶ ಮಾತ್ರಾ: ಬೊಕ ತುಂಡುಲು ಒಪ್ಪುಂಡು. ಎಸ್ವಿಜಿ-ನ್ ರಪ್ತು ಮಲ್ಪುನಗ ಆಕೃತಿಲೆನ್ ಅಂತರ್ಗತಿಸಾರೆ ಯತ್ನಿಸಾಲೆ. ಪತ್ತೆ ಆಂಡ್ <code><$1 $2=\"$3\"></code>.",
+ "uploaded-href-unsafe-target-svg": "ಅಸುರಕ್ಷಿತ ದತ್ತಾಂಶ href ಪತ್ತೆ ಆಂಡ್: ಮಿತೇರಾಯಿನ ಎಸ್ವಿಜಿ ಕಡತೊಡು ಯೂಆರ್'ಐ URI ಗುರಿ <code><$1 $2=\"$3\"></code> .",
+ "uploaded-animate-svg": "ಮಿತೇರಾಯಿನ ಎಸ್ವಿಜಿ ಕಡತೊಡು \"ಇಂದ\" ಗುಣ ಬಳಕೆ ಆಯಿನ <code><$1 $2=\"$3\"></code>, href ನು ಬದಲ್'ಮಲ್ಪುನ \"ಜೀವಂತಿಸಾಲೆ\" ಕುಚ್ಚಿ ಪತ್ತೆ ಆಂಡ್.",
+ "uploaded-setting-event-handler-svg": "ಘಟನೆ-ನಿರ್ವಹಣ ಗುಣೊಲೆನ ಅಟ್ಟಣೆ ತಡೆಯಾತುಂಡು. ಮಿತೇರಾಯಿನ ಎಸ್ವಿಜಿ ಕಡತೊಡು <code><$1 $2=\"$3\"></code> ಪತ್ತೆಯಾಂಡ್.",
+ "uploaded-setting-href-svg": "ಪಿತೃ ಘಟಕೊಗು \"href\" ಸೇರಾರೆ, \"ಅಟ್ಟಣೆ\" ಕುಚ್ಚಿ ಬಳಕೆನ್ ತಡೆತ್'ದುಂಡು,",
+ "uploaded-wrong-setting-svg": "ಒವ್ವೆ ಗುಣೊಕು ಒಂಜಿ ದೂರಸಂವೇದಿ/ದತ್ತಾಂಶ/ಲಿಪಿಕಾರ ಗುರಿ ಸೇರಾರೆ, \"ಅಟ್ಟಣೆ\" ಕುಚ್ಚಿದ ಬಳಕೆನ್ ತಡೆತ್'ದುಂಡು, ಮಿತೇರಾಯಿನ ಎಸ್ವಿಜಿ ಕಡತೊಡು <code><set to=\"$1\"></code> ಪತ್ತೆ ಆಂಡ್.",
"upload-source": "ಮೂಲ ಕಡತ",
"upload-options": "ಅಪ್ಲೋಡ್ ಆಯ್ಕೆಲು",
"watchthisupload": "ಈ ಪುಟೊನು ತೂಲೆ",
"authmanager-create-no-primary": "మీరిచ్చిన విశేషాలతో ఖాతాను సృష్టించలేకపోయాం.",
"authmanager-link-no-primary": "మీరిచ్చిన విశేషాలతో ఖాతాలను లింకు చెయ్యలేకపోయాం.",
"authmanager-link-not-in-progress": "ఖాతాలను లింకు చేసే పని జరగడం లేదు. లేదా సెషను డేటా పోయింది. మళ్ళీ మొదటినుండి మొదలుపెట్టండి.",
- "authmanager-authplugin-setpass-failed-title": "సంకేతపదం మార్పు విఫలమైంది.",
- "authmanager-authplugin-setpass-failed-message": "సంకేతపదం మార్పును ఆథెంటికేషన్ ప్లగిన్ తిరస్కరించింది.",
- "authmanager-authplugin-create-fail": "ఖాతా సృష్టిని ఆథెంటికేషన్ ప్లగిన్ తిరస్కరించింది.",
- "authmanager-authplugin-setpass-denied": "ఆథెంటికేషన్ ప్లగిన్ సంకేతపదం మార్పులను అనుమతించదు.",
- "authmanager-authplugin-setpass-bad-domain": "తప్పు డొమెయిన్",
"authmanager-autocreate-noperm": "ఆటోమాటిక్ ఖాతా సృష్టికి అనుమతి లేదు.",
"authmanager-userdoesnotexist": "వాడుకరి ఖాతా \"$1\" నమోదయి లేదు.",
"authmanager-userlogin-remembermypassword-help": "సెషను ముగిసిన తరువాత కూడా సంకేతపదాన్ని గుర్తుంచుకోమంటారా",
"group-bot": "บอต",
"group-sysop": "ผู้ดูแลระบบ",
"group-interface-admin": "ผู้ดูแลระบบอินเตอร์เฟซ",
- "group-bureaucrat": "à¸\9cูà¹\89à¸\94ูà¹\81ลระà¸\9aà¸\9aสิà¸\97à¸\98ิà¹\8cà¹\81à¸\95à¹\88à¸\87à¸\95ัà¹\89à¸\87",
+ "group-bureaucrat": "ผู้ดูแลระบบสิทธิแต่งตั้ง",
"group-suppress": "ผู้ดูแลประวัติ",
"group-all": "(ทั้งหมด)",
"group-user-member": "{{GENDER:$1|ผู้ใช้}}",
"group-bot-member": "{{GENDER:$1|บอต}}",
"group-sysop-member": "{{GENDER:$1|ผู้ดูแลระบบ}}",
"group-interface-admin-member": "{{GENDER:$1|ผู้ดูแลระบบอินเตอร์เฟซ}}",
- "group-bureaucrat-member": "{{GENDER:$1|à¸\9cูà¹\89à¸\94ูà¹\81ลระà¸\9aà¸\9aสิà¸\97à¸\98ิà¹\8cà¹\81à¸\95à¹\88à¸\87à¸\95ัà¹\89à¸\87}}",
+ "group-bureaucrat-member": "{{GENDER:$1|ผู้ดูแลระบบสิทธิแต่งตั้ง}}",
"group-suppress-member": "{{GENDER:$1|ผู้ดูแลประวัติ}}",
"grouppage-user": "{{ns:project}}:ผู้ใช้",
"grouppage-autoconfirmed": "{{ns:project}}:ผู้ใช้ยืนยันอัตโนมัติ",
"grouppage-bot": "{{ns:project}}:บอต",
"grouppage-sysop": "{{ns:project}}:ผู้ดูแลระบบ",
"grouppage-interface-admin": "{{ns:project}}:ผู้ดูแลระบบอินเตอร์เฟซ",
- "grouppage-bureaucrat": "{{ns:project}}:à¸\9cูà¹\89à¸\94ูà¹\81ลระà¸\9aà¸\9aสิà¸\97à¸\98ิà¹\8cà¹\81à¸\95à¹\88à¸\87à¸\95ัà¹\89à¸\87",
+ "grouppage-bureaucrat": "{{ns:project}}:ผู้ดูแลระบบสิทธิแต่งตั้ง",
"grouppage-suppress": "{{ns:project}}:ผู้ดูแลประวัติ",
"right-read": "อ่านหน้า",
"right-edit": "แก้ไขหน้า",
"listgrouprights-summary": "ด้านล่างเป็นรายการกลุ่มผู้ใช้ที่นิยามบนวิกินี้ และสิทธิการเข้าถึงที่เกี่ยวข้อง\nอาจมี[[{{MediaWiki:Listgrouprights-helppage}}|ข้อมูลเพิ่มเติม]]เกี่ยวกับสิทธิหนึ่ง ๆ",
"listgrouprights-key": "คำอธิบาย:\n* <span class=\"listgrouprights-granted\">สิทธิที่ได้รับแต่งตั้ง</span>\n* <span class=\"listgrouprights-revoked\">สิทธิที่ถูกเพิกถอน</span>",
"listgrouprights-group": "กลุ่ม",
- "listgrouprights-rights": "สิทธิ์",
+ "listgrouprights-rights": "สิทธิ",
"listgrouprights-helppage": "Help:สิทธิกลุ่ม",
"listgrouprights-members": "(รายการสมาชิก)",
"listgrouprights-addgroup": "เพิ่ม{{PLURAL:$2|กลุ่มนี้|กลุ่มเหล่านี้}}: $1",
"listgrouprights-namespaceprotection-restrictedto": "สิทธิอนุญาตให้ผู้ใช้แก้ไข",
"listgrants": "การให้สิทธิ",
"listgrants-grant": "การให้สิทธิ",
- "listgrants-rights": "สิทธิ์",
+ "listgrants-rights": "สิทธิ",
"trackingcategories": "หมวดหมู่ค้นหาและติดตาม",
"trackingcategories-summary": "หน้านี้แสดงรายการหมวดหมู่ค้นหาและติดตามซึ่งซอฟต์แวร์มีเดียวิกิจัดการอัตโนมัติ สามารถเปลี่ยนชื่อเหล่านี้ได้โดยการเปลี่ยนข้อความระบบที่เกี่ยวข้องในเนมสเปซ {{ns:8}}",
"trackingcategories-msg": "หมวดหมู่ค้นหาและติดตาม",
"authmanager-create-no-primary": "เอกสารทางการที่ให้ไม่สามารถใช้สำหรับการสร้างบัญชีได้",
"authmanager-link-no-primary": "เอกสารทางการที่ให้ไม่สามารถใช้สำหรับการเชื่อมโยงบัญชี",
"authmanager-link-not-in-progress": "ไม่อยู่ระหว่างการโยงบัญชีหรือข้อมูลเซสชันสูญหาย กรุณาเริ่มใหม่ตั้งแต่ต้น",
- "authmanager-authplugin-setpass-failed-title": "การเปลี่ยนรหัสผ่านล้มเหลว",
- "authmanager-authplugin-setpass-failed-message": "ปลั๊กอินการพิสูจน์ตัวจริงปฏิเสธการเปลี่ยนรหัสผ่าน",
- "authmanager-authplugin-create-fail": "ปลั๊กอินการพิสูจน์ตัวจริงปฏิเสธการสร้างบัญชี",
- "authmanager-authplugin-setpass-denied": "ปลั๊กอินการพิสูจน์ตัวจริงไม่อนุญาตการเปลี่ยนรหัสผ่าน",
- "authmanager-authplugin-setpass-bad-domain": "โดเมนไม่สมเหตุสมผล",
"authmanager-autocreate-noperm": "ไม่อนุญาตการสร้างบัญชีอัตโนมัติ",
"authmanager-autocreate-exception": "ปิดใช้งานการสร้างบัญชีอัตโนมัติชั่วคราวเนื่องจากข้อผิดพลาดก่อนหน้านี้",
"authmanager-userdoesnotexist": "บัญชีผู้ใช้ \"$1\"ยังไม่ลงทะเบียน",
"log-action-filter-protect-move_prot": "Taşıma koruması",
"log-action-filter-upload-upload": "Yeni yükleme",
"log-action-filter-upload-overwrite": "Yeniden yükle",
- "authmanager-authplugin-setpass-bad-domain": "Geçersiz alanadı.",
"authmanager-autocreate-noperm": "Otomatik kullanıcı oluşturma izni yok.",
"authmanager-userdoesnotexist": "\"$1\" kullanıcı hesabı kayıtlı değil.",
"authmanager-email-label": "E-posta",
"authmanager-create-no-primary": "Надані облікові дані не можуть бути використані для створення облікового запису.",
"authmanager-link-no-primary": "Надані облікові дані не можуть бути використані для прив'язки облікового запису.",
"authmanager-link-not-in-progress": "Пов'язання облікового запису не виконується або втрачено дані сесії. Будь ласка, почніть знову з самого початку.",
- "authmanager-authplugin-setpass-failed-title": "Не вдалося змінити пароль",
- "authmanager-authplugin-setpass-failed-message": "Плагін автентифікації відмовив у зміні пароля.",
- "authmanager-authplugin-create-fail": "Плагін автентифікації відмовив у створенні облікового запису.",
- "authmanager-authplugin-setpass-denied": "Плагін автентифікації не дозволяє змінювати паролі.",
- "authmanager-authplugin-setpass-bad-domain": "Неприпустимий домен.",
"authmanager-autocreate-noperm": "Автоматичне створення облікових записів не допускається.",
"authmanager-autocreate-exception": "Автоматичне створення облікових записів тимчасово відключене через попередні помилки.",
"authmanager-userdoesnotexist": "Обліковий запис користувача «$1» не зареєстровано.",
"authmanager-create-no-primary": "فراہم کردہ وثیقوں کو کھاتہ سازی کے لیے استعمال نہیں کیا جا سکا۔",
"authmanager-link-no-primary": "فراہم کردہ وثیقوں کو کھاتوں سے مربوط کرنے کے لیے استعمال نہیں کیا جا سکا۔",
"authmanager-link-not-in-progress": "کھاتوں کو مربوط کرنے کا عمل جاری نہ رہ سکا یا نشست کا ڈیٹا گم ہو چکا ہے۔ براہ کرم آغاز سے دوبارہ کوشش کریں۔",
- "authmanager-authplugin-setpass-failed-title": "پاس ورڈ کی تبدیلی ناکام رہی",
- "authmanager-authplugin-setpass-failed-message": "تصدیقی ہلگ ان نے پاس ورڈ کی تبدیلی کو رد کر دیا۔",
- "authmanager-authplugin-create-fail": "تصدیقی ہلگ ان نے کھاتہ سازی کو رد کر دیا۔",
- "authmanager-authplugin-setpass-denied": "تصدیقی ہلگ ان میں پاس ورڈ کی تبدیلی کی اجازت نہیں ہے۔",
- "authmanager-authplugin-setpass-bad-domain": "نادرست ڈومین۔",
"authmanager-autocreate-noperm": "خودکار کھاتہ سازی کی اجازت نہیں ہے۔",
"authmanager-autocreate-exception": "سابقہ نقص کی وجہ سے عارضی طور پر خودکار کھاتہ سازی غیر فعال ہے۔",
"authmanager-userdoesnotexist": "«$1» کے نام سے صارف کھاتہ مندرج نہیں ہے۔",
"log-action-filter-suppress-reblock": "Ẩn giấu người dùng bằng cách cấm lại",
"log-action-filter-upload-upload": "Tải lên mới",
"log-action-filter-upload-overwrite": "Tải lên lại",
+ "log-action-filter-upload-revert": "Lùi lại",
"authmanager-authn-not-in-progress": "Không phải đang xác thực, hoặc dữ liệu phiên làm việc bị mất. Xin hãy thử lại từ đầu.",
"authmanager-authn-no-primary": "Không thể xác thực định danh được cung cấp.",
"authmanager-authn-no-local-user": "Định danh được cung cấp không ứng với người dùng nào trên wiki này.",
"authmanager-create-no-primary": "Không thể sử dụng định danh được cung cấp để tạo tài khoản.",
"authmanager-link-no-primary": "Không thể sử dụng định danh được cung cấp để liên kết tài khoản.",
"authmanager-link-not-in-progress": "Không phải đang liên kết tài khoản, hoặc dữ liệu phiên làm việc bị mất. Xin hãy thử lại từ đầu.",
- "authmanager-authplugin-setpass-failed-title": "Thay đổi mật khẩu bị thất bại",
- "authmanager-authplugin-setpass-failed-message": "Phần bổ trợ xác thực đã từ chối việc đổi mật khẩu.",
- "authmanager-authplugin-create-fail": "Phần bổ trợ xác thực đã từ chối việc tạo tài khoản.",
- "authmanager-authplugin-setpass-denied": "Phần bổ trợ xác thực không cho phép đổi mật khẩu.",
- "authmanager-authplugin-setpass-bad-domain": "Tên miền không hợp lệ.",
"authmanager-autocreate-noperm": "Không cho phép tự động tạo tài khoản.",
"authmanager-autocreate-exception": "Tạm thời không cho phép tự động tạo tài khoản vì các lỗi trước đây.",
"authmanager-userdoesnotexist": "Chưa có tài khoản với tên “$1”.",
"log-action-filter-protect-protect": "保護",
"log-action-filter-protect-unprotect": "取消保護",
"log-action-filter-upload-overwrite": "再上載",
- "authmanager-authplugin-setpass-failed-title": "改唔到密碼",
"authmanager-email-label": "電郵",
"authmanager-email-help": "電郵地址",
"authmanager-realname-label": "真名",
"mediastatistics-header-total": "ⵎⴰⵕⵕⴰ ⵉⴼⵓⵍⵢⴰ",
"randomrootpage": "ⵜⴰⵙⵏⴰ ⴰⵥⵓⵔ ⵜⴰⵡⴳⴰⵛⵓⵔⵜ",
"log-action-filter-all": "ⵎⴰⵕⵕⴰ",
- "authmanager-authplugin-setpass-denied": "ⵎⴰⵕⵕⴰ",
"authmanager-email-label": "ⵉⵎⴰⵢⵍ",
"authmanager-realname-label": "ⵉⵙⵎ ⴰⵎⴷⴷⴰⵜ",
"authmanager-realname-help": "ⵉⵙⵎ ⴰⵎⴷⴷⴰⵜ ⵏ ⵓⵏⵙⵙⵔⵎⵙ",
"authmanager-create-no-primary": "提供的凭据不能用于账户创建。",
"authmanager-link-no-primary": "提供的证书不能用于账户链接。",
"authmanager-link-not-in-progress": "账户链接尚未进行,或会话数据丢失。请从头重新开始。",
- "authmanager-authplugin-setpass-failed-title": "密码更改失败",
- "authmanager-authplugin-setpass-failed-message": "身份验证插件拒绝了密码更改。",
- "authmanager-authplugin-create-fail": "身份验证插件拒绝了账户创建。",
- "authmanager-authplugin-setpass-denied": "身份验证插件不允许更改密码。",
- "authmanager-authplugin-setpass-bad-domain": "无效域。",
"authmanager-autocreate-noperm": "不允许自动账户创建。",
"authmanager-autocreate-exception": "由于之前的错误,自动账户创建已临时停用。",
"authmanager-userdoesnotexist": "用户帐户“$1”尚未注册。",
"Kanashimi",
"Hello903hello",
"Luuva",
- "Davidzdh"
+ "Davidzdh",
+ "WQL"
]
},
"tog-underline": "底線標示連結:",
"navigation-heading": "導覽選單",
"errorpagetitle": "錯誤",
"returnto": "返回「$1」頁面",
- "tagline": "出自 {{SITENAME}}",
+ "tagline": "出自{{SITENAME}}",
"help": "說明",
"help-mediawiki": "有關 MediaWiki 的說明",
"search": "搜尋",
"authmanager-create-no-primary": "提供的憑證不能用於帳號建立。",
"authmanager-link-no-primary": "提供的憑證無使用在帳號連結。",
"authmanager-link-not-in-progress": "帳號連結尚未進行或連線階段資料已遺失,請重頭再開始。",
- "authmanager-authplugin-setpass-failed-title": "密碼變更失敗",
- "authmanager-authplugin-setpass-failed-message": "認証外掛已拒絕密碼變更。",
- "authmanager-authplugin-create-fail": "認証外掛已拒絕帳號建立。",
- "authmanager-authplugin-setpass-denied": "驗證外掛程式不允許變更密碼。",
- "authmanager-authplugin-setpass-bad-domain": "無效網域。",
"authmanager-autocreate-noperm": "不允許自動帳號建立。",
"authmanager-autocreate-exception": "自動帳號建立因發生錯誤臨時關閉。",
"authmanager-userdoesnotexist": "使用者帳號 \"$1\" 尚未註冊。",
"Quest for Truth",
"Wxyveronica",
"和平至上",
- "A2093064"
+ "A2093064",
+ "WQL"
]
},
"tog-watchlisthidebots": "隱藏監視清單中機械人的編輯",
"namespaces": "命名空間",
"variants": "變體",
"navigation-heading": "導覽菜單",
- "tagline": "å¾\9e {{SITENAME}}",
+ "tagline": "å\87ºè\87ª{{SITENAME}}",
"help": "說明",
"search": "搜尋",
"searchbutton": "搜尋",
],
__METHOD__,
[ 'ORDER BY' => 'rev_timestamp DESC', 'LIMIT' => 1 ],
- [ 'revision' => [ 'INNER JOIN', 'rev_page=page_id' ] ]
+ [ 'revision' => [ 'JOIN', 'rev_page=page_id' ] ]
);
return $id;
'rc_type' => RC_LOG,
] );
$it->addJoinConditions( [
- 'page' => [ 'INNER JOIN', 'rc_cur_id = page_id' ],
+ 'page' => [ 'JOIN', 'rc_cur_id = page_id' ],
] );
$this->addIndex( $it );
return $it;
$joinConds = [];
if ( $mtime1 || $mtime2 ) {
$joinTables[] = 'page';
- $joinConds['page'] = [ 'INNER JOIN',
+ $joinConds['page'] = [ 'JOIN',
[ 'page_title = img_name', 'page_namespace' => NS_FILE ] ];
$joinTables[] = 'logging';
$on = [ 'log_page = page_id', 'log_type' => [ 'upload', 'move', 'delete' ] ];
if ( $mtime2 ) {
$on[] = "log_timestamp < {$dbr->addQuotes($mtime2)}";
}
- $joinConds['logging'] = [ 'INNER JOIN', $on ];
+ $joinConds['logging'] = [ 'JOIN', $on ];
}
do {
};
</script>
<script>
- // Mock startup.js
+ // Mock ResourceLoaderStartUpModule substitutions
window.$VARS = {
- baseModules: []
+ baseModules: [],
+ maxQueryLength: 2000
};
+ // Mock startup.js
window.RLQ = [];
</script>
<script src="modules/src/startup/mediawiki.js"></script>
} else { // revision
$selectTables = [ 'revision', 'page' ];
$fields = [ 'page_title', 'page_namespace' ];
- $join_conds = [ 'page' => [ 'INNER JOIN', 'rev_page=page_id' ] ];
+ $join_conds = [ 'page' => [ 'JOIN', 'rev_page=page_id' ] ];
$where = $ns === 'all' ? [] : [ 'page_namespace' => $ns ];
$page_id_column = 'rev_page';
$rev_id_column = 'rev_id';
__METHOD__,
[ 'ORDER BY' => 'rev_timestamp', 'LIMIT' => $bSize ],
[
- 'page' => [ 'INNER JOIN', 'rev_page=page_id' ],
+ 'page' => [ 'JOIN', 'rev_page=page_id' ],
]
);
[ 'ug_group' => $botgroups ],
__METHOD__,
[ 'DISTINCT' ],
- [ 'user_group' => [ 'JOIN', 'user_id = ug_user' ] ] + $userQuery['joins']
+ [ 'user_groups' => [ 'JOIN', 'user_id = ug_user' ] ] + $userQuery['joins']
);
$botusers = [];
[ 'ug_group' => $autopatrolgroups ],
__METHOD__,
[ 'DISTINCT' ],
- [ 'user_group' => [ 'JOIN', 'user_id = ug_user' ] ] + $userQuery['joins']
+ [ 'user_groups' => [ 'JOIN', 'user_id = ug_user' ] ] + $userQuery['joins']
);
foreach ( $res as $obj ) {
'fy' => 'resources/lib/moment/locale/fy.js',
'gd' => 'resources/lib/moment/locale/gd.js',
'gl' => 'resources/lib/moment/locale/gl.js',
+ 'gom' => 'resources/lib/moment/locale/gom-latn.js',
'gom-latn' => 'resources/lib/moment/locale/gom-latn.js',
'gu' => 'resources/lib/moment/locale/gu.js',
'he' => 'resources/lib/moment/locale/he.js',
],
],
'mediawiki.diff.styles' => [
- // FIXME: Remove class and lessMessages
- // when I6aad563e48f41c783df8b176a4f437e60a1255cc has
- // been in production for 1 week.
- 'class' => ResourceLoaderLessVarFileModule::class,
'styles' => [
- // Remove resources/src/mediawiki.interface.helpers.styles.less
- // when I6aad563e48f41c783df8b176a4f437e60a1255cc has
- // been in production for 1 week.
- 'resources/src/mediawiki.interface.helpers.styles.less',
'resources/src/mediawiki.diff.styles/diff.css',
'resources/src/mediawiki.diff.styles/print.css' => [
'media' => 'print'
],
],
- 'lessMessages' => [
- 'parentheses-start',
- 'parentheses-end',
- 'pipe-separator'
- ],
'targets' => [ 'desktop', 'mobile' ],
],
'mediawiki.feedback' => [
'targets' => [ 'desktop', 'mobile' ],
],
'mediawiki.special.changeslist' => [
- // FIXME: Remove class and lessMessages
- // when I6aad563e48f41c783df8b176a4f437e60a1255cc has
- // been in production for 1 week.
- 'class' => ResourceLoaderLessVarFileModule::class,
- 'lessMessages' => [
- 'parentheses-start',
- 'parentheses-end',
- 'pipe-separator'
- ],
'styles' => [
- // FIXME: Remove this line when I6aad563e48f41c783df8b176a4f437e60a1255cc has
- // been in production for 1 week.
- 'resources/src/mediawiki.interface.helpers.styles.less',
'resources/src/mediawiki.special.changeslist.less',
],
'targets' => [ 'desktop', 'mobile' ],
}
if ( response.parse.modules ) {
mw.loader.load( response.parse.modules.concat(
- response.parse.modulescripts,
response.parse.modulestyles
) );
}
* @param {string[]} batch
*/
function batchRequest( batch ) {
- var reqBase, splits, maxQueryLength, b, bSource, bGroup,
+ var reqBase, splits, b, bSource, bGroup,
source, group, i, modules, sourceLoadScript,
currReqBase, currReqBaseLength, moduleMap, currReqModules, l,
lastDotIndex, prefix, suffix, bytesAdded;
lang: mw.config.get( 'wgUserLanguage' ),
debug: mw.config.get( 'debug' )
};
- maxQueryLength = mw.config.get( 'wgResourceLoaderMaxQueryLength', 2000 );
// Split module list by source and by group.
splits = Object.create( null );
modules[ i ].length + 3; // '%7C'.length == 3
// If the url would become too long, create a new one, but don't create empty requests
- if ( maxQueryLength > 0 && currReqModules.length && l + bytesAdded > maxQueryLength ) {
+ if ( currReqModules.length && l + bytesAdded > mw.loader.maxQueryLength ) {
// Dispatch what we've got...
doRequest();
// .. and start again.
moduleMap = Object.create( null );
currReqModules = [];
- mw.track( 'resourceloader.splitRequest', { maxQueryLength: maxQueryLength } );
+ mw.track( 'resourceloader.splitRequest', { maxQueryLength: mw.loader.maxQueryLength } );
}
if ( !moduleMap[ prefix ] ) {
moduleMap[ prefix ] = [];
*/
moduleRegistry: registry,
+ /**
+ * Exposed for testing and debugging only.
+ *
+ * @see #batchRequest
+ * @property
+ * @private
+ */
+ maxQueryLength: $VARS.maxQueryLength,
+
/**
* @inheritdoc #newStyleTag
* @method
# tests/phpunit/includes/specialpage
'SpecialPageTestHelper' => "$testDir/phpunit/includes/specialpage/SpecialPageTestHelper.php",
'AbstractChangesListSpecialPageTestCase' => "$testDir/phpunit/includes/specialpage/AbstractChangesListSpecialPageTestCase.php",
+ 'FormSpecialPageTestCase' => "$testDir/phpunit/includes/specialpage/FormSpecialPageTestCase.php",
# tests/phpunit/includes/specials
'SpecialPageTestBase' => "$testDir/phpunit/includes/specials/SpecialPageTestBase.php",
* @param bool $expected
*/
public function testCanTalk( $index, $expected ) {
+ $this->hideDeprecated( 'MWNamespace::canTalk' );
$actual = MWNamespace::canTalk( $index );
$this->assertSame( $actual, $expected, "NS $index" );
}
// @todo Make sure to test the following in addParserOutputMetadata() as well when we add tests
// for them:
// * addModules()
- // * addModuleScripts()
// * addModuleStyles()
// * addJsConfigVars()
// * enableOOUI()
[ 'rev_id' => $rev->getId(), 'rev_text_id > 0' ],
[ [ 1 ] ],
[],
- [ 'text' => [ 'INNER JOIN', [ 'rev_text_id = old_id' ] ] ]
+ [ 'text' => [ 'JOIN', [ 'rev_text_id = old_id' ] ] ]
);
parent::assertRevisionExistsInDatabase( $rev );
[ 'rev_id' => $rev->getId(), 'rev_text_id > 0' ],
[ [ 1 ] ],
[],
- [ 'text' => [ 'INNER JOIN', [ 'rev_text_id = old_id' ] ] ]
+ [ 'text' => [ 'JOIN', [ 'rev_text_id = old_id' ] ] ]
);
parent::assertRevisionExistsInDatabase( $rev );
]
),
'joins' => [
- 'page' => [ 'INNER JOIN', [ 'page_id = rev_page' ] ],
+ 'page' => [ 'JOIN', [ 'page_id = rev_page' ] ],
],
]
];
]
),
'joins' => [
- 'text' => [ 'INNER JOIN', [ 'rev_text_id=old_id' ] ],
+ 'text' => [ 'JOIN', [ 'rev_text_id=old_id' ] ],
],
]
];
[ 'rev_id' => $rev->getId(), 'rev_text_id > 0' ],
[ [ 1 ] ],
[],
- [ 'text' => [ 'INNER JOIN', [ 'rev_text_id = old_id' ] ] ]
+ [ 'text' => [ 'JOIN', [ 'rev_text_id = old_id' ] ] ]
);
parent::assertRevisionExistsInDatabase( $rev );
$this->getNewCommentQueryFields( 'rev' )
),
'joins' => [
- 'page' => [ 'INNER JOIN', [ 'page_id = rev_page' ] ],
+ 'page' => [ 'JOIN', [ 'page_id = rev_page' ] ],
'user' => [
'LEFT JOIN',
[ 'actor_rev_user.actor_user != 0', 'user_id = actor_rev_user.actor_user' ],
),
'joins' => array_merge(
[
- 'page' => [ 'INNER JOIN', [ 'page_id = rev_page' ] ],
+ 'page' => [ 'JOIN', [ 'page_id = rev_page' ] ],
'user' => [
'LEFT JOIN',
[
),
'joins' => array_merge(
[
- 'page' => [ 'INNER JOIN', [ 'page_id = rev_page' ] ],
+ 'page' => [ 'JOIN', [ 'page_id = rev_page' ] ],
'user' => [
'LEFT JOIN',
[
),
'joins' => array_merge(
[
- 'page' => [ 'INNER JOIN', [ 'page_id = rev_page' ] ],
+ 'page' => [ 'JOIN', [ 'page_id = rev_page' ] ],
'user' => [
'LEFT JOIN',
[
$this->getNewCommentQueryFields( 'rev' )
),
'joins' => [
- 'page' => [ 'INNER JOIN', [ 'page_id = rev_page' ] ],
+ 'page' => [ 'JOIN', [ 'page_id = rev_page' ] ],
'user' => [ 'LEFT JOIN', [ 'rev_user != 0', 'user_id = rev_user' ] ],
'temp_rev_comment' => [ 'JOIN', 'temp_rev_comment.revcomment_rev = rev_id' ],
'comment_rev_comment'
$this->getNewCommentQueryFields( 'rev' )
),
'joins' => [
- 'page' => [ 'INNER JOIN', [ 'page_id = rev_page' ], ],
+ 'page' => [ 'JOIN', [ 'page_id = rev_page' ], ],
'temp_rev_comment' => [ 'JOIN', 'temp_rev_comment.revcomment_rev = rev_id' ],
'comment_rev_comment'
=> [ 'JOIN', 'comment_rev_comment.comment_id = temp_rev_comment.revcomment_comment_id' ],
$this->getNewCommentQueryFields( 'rev' )
),
'joins' => [
- 'text' => [ 'INNER JOIN', [ 'rev_text_id=old_id' ] ],
+ 'text' => [ 'JOIN', [ 'rev_text_id=old_id' ] ],
'temp_rev_comment' => [ 'JOIN', 'temp_rev_comment.revcomment_rev = rev_id' ],
'comment_rev_comment'
=> [ 'JOIN', 'comment_rev_comment.comment_id = temp_rev_comment.revcomment_comment_id' ],
),
'joins' => [
'page' => [
- 'INNER JOIN',
+ 'JOIN',
[ 'page_id = rev_page' ],
],
'user' => [
],
],
'text' => [
- 'INNER JOIN',
+ 'JOIN',
[ 'rev_text_id=old_id' ],
],
'temp_rev_comment' => [ 'JOIN', 'temp_rev_comment.revcomment_rev = rev_id' ],
'content_model',
],
'joins' => [
- 'content' => [ 'INNER JOIN', [ 'slot_content_id = content_id' ] ],
+ 'content' => [ 'JOIN', [ 'slot_content_id = content_id' ] ],
],
]
];
'model_name',
],
'joins' => [
- 'content' => [ 'INNER JOIN', [ 'slot_content_id = content_id' ] ],
+ 'content' => [ 'JOIN', [ 'slot_content_id = content_id' ] ],
'content_models' => [ 'LEFT JOIN', [ 'content_model = model_id' ] ],
],
]
public function testRevisionPageJoinCond() {
$this->hideDeprecated( 'Revision::pageJoinCond' );
$this->assertEquals(
- [ 'INNER JOIN', [ 'page_id = rev_page' ] ],
+ [ 'JOIN', [ 'page_id = rev_page' ] ],
Revision::pageJoinCond()
);
}
[
'tables' => [ 'text' ],
'fields' => [ 'old_id', 'old_text', 'old_flags', 'rev_text_id' ],
- 'joins' => [ 'text' => [ 'INNER JOIN', 'old_id=rev_text_id' ] ]
+ 'joins' => [ 'text' => [ 'JOIN', 'old_id=rev_text_id' ] ]
]
];
}
__METHOD__,
[],
[
- 'change_tag' => [ 'INNER JOIN', 'ct_log_id = log_id' ],
- 'change_tag_def' => [ 'INNER JOIN', 'ctd_id = ct_tag_id' ],
+ 'change_tag' => [ 'JOIN', 'ct_log_id = log_id' ],
+ 'change_tag_def' => [ 'JOIN', 'ctd_id = ct_tag_id' ],
]
) );
}
__METHOD__,
[],
[
- 'change_tag' => [ 'INNER JOIN', 'ct_log_id = log_id' ],
- 'change_tag_def' => [ 'INNER JOIN', 'ctd_id = ct_tag_id' ]
+ 'change_tag' => [ 'JOIN', 'ct_log_id = log_id' ],
+ 'change_tag_def' => [ 'JOIN', 'ctd_id = ct_tag_id' ]
]
) );
}
'ctd_name',
[ 'ct_rev_id' => $revId ],
__METHOD__,
- [ 'change_tag_def' => [ 'INNER JOIN', 'ctd_id = ct_tag_id' ] ]
+ [ 'change_tag_def' => [ 'JOIN', 'ctd_id = ct_tag_id' ] ]
)
);
}
function ( $parser ) {
$output = $parser->getOutput();
$output->addModules( [ 'foo', 'bar' ] );
- $output->addModuleScripts( [ 'baz', 'quuz' ] );
$output->addModuleStyles( [ 'aaa', 'zzz' ] );
$output->addJsConfigVars( [ 'x' => 'y', 'z' => -3 ] );
}
] );
$this->assertSame( [ 'foo', 'bar' ], $res[0]['parse']['modules'] );
- $this->assertSame( [ 'baz', 'quuz' ], $res[0]['parse']['modulescripts'] );
+ $this->assertSame( [], $res[0]['parse']['modulescripts'] );
$this->assertSame( [ 'aaa', 'zzz' ], $res[0]['parse']['modulestyles'] );
$this->assertSame( [ 'x' => 'y', 'z' => -3 ], $res[0]['parse']['jsconfigvars'] );
$this->assertSame( '{"x":"y","z":-3}', $res[0]['parse']['encodedjsconfigvars'] );
__METHOD__,
[],
[
- 'change_tag' => [ 'INNER JOIN', 'ct_log_id = log_id' ],
- 'change_tag_def' => [ 'INNER JOIN', 'ctd_id = ct_tag_id' ],
+ 'change_tag' => [ 'JOIN', 'ct_log_id = log_id' ],
+ 'change_tag_def' => [ 'JOIN', 'ctd_id = ct_tag_id' ],
]
) );
}
'log_title' => strtr( $user->getName(), ' ', '_' )
],
__METHOD__,
- [ 'change_tag_def' => [ 'INNER JOIN', 'ctd_id = ct_tag_id' ] ]
+ [ 'change_tag_def' => [ 'JOIN', 'ctd_id = ct_tag_id' ] ]
)
);
}
// HACK if we call $dbr->buildGroupConcatField() now, it will return the wrong table names
// We have to have the test runner call it instead
$baseConcats = [ ',', [ 'change_tag', 'change_tag_def' ], 'ctd_name' ];
- $joinConds = [ 'change_tag_def' => [ 'INNER JOIN', 'ct_tag_id=ctd_id' ] ];
+ $joinConds = [ 'change_tag_def' => [ 'JOIN', 'ct_tag_id=ctd_id' ] ];
$groupConcats = [
'recentchanges' => array_merge( $baseConcats, [ 'ct_rc_id=rc_id', $joinConds ] ),
'logging' => array_merge( $baseConcats, [ 'ct_log_id=log_id', $joinConds ] ),
'tables' => [ 'recentchanges', 'change_tag' ],
'fields' => [ 'rc_id', 'rc_timestamp', 'ts_tags' => $groupConcats['recentchanges'] ],
'conds' => [ "rc_timestamp > '20170714183203'", 'ct_tag_id' => [ 1 ] ],
- 'join_conds' => [ 'change_tag' => [ 'INNER JOIN', 'ct_rc_id=rc_id' ] ],
+ 'join_conds' => [ 'change_tag' => [ 'JOIN', 'ct_rc_id=rc_id' ] ],
'options' => [ 'ORDER BY' => 'rc_timestamp DESC' ],
]
],
'tables' => [ 'logging', 'change_tag' ],
'fields' => [ 'log_id', 'ts_tags' => $groupConcats['logging'] ],
'conds' => [ "log_timestamp > '20170714183203'", 'ct_tag_id' => [ 1 ] ],
- 'join_conds' => [ 'change_tag' => [ 'INNER JOIN', 'ct_log_id=log_id' ] ],
+ 'join_conds' => [ 'change_tag' => [ 'JOIN', 'ct_log_id=log_id' ] ],
'options' => [ 'ORDER BY log_timestamp DESC' ],
]
],
'tables' => [ 'revision', 'change_tag' ],
'fields' => [ 'rev_id', 'rev_timestamp', 'ts_tags' => $groupConcats['revision'] ],
'conds' => [ "rev_timestamp > '20170714183203'", 'ct_tag_id' => [ 1 ] ],
- 'join_conds' => [ 'change_tag' => [ 'INNER JOIN', 'ct_rev_id=rev_id' ] ],
+ 'join_conds' => [ 'change_tag' => [ 'JOIN', 'ct_rev_id=rev_id' ] ],
'options' => [ 'ORDER BY' => 'rev_timestamp DESC' ],
]
],
'tables' => [ 'archive', 'change_tag' ],
'fields' => [ 'ar_id', 'ar_timestamp', 'ts_tags' => $groupConcats['archive'] ],
'conds' => [ "ar_timestamp > '20170714183203'", 'ct_tag_id' => [ 1 ] ],
- 'join_conds' => [ 'change_tag' => [ 'INNER JOIN', 'ct_rev_id=ar_rev_id' ] ],
+ 'join_conds' => [ 'change_tag' => [ 'JOIN', 'ct_rev_id=ar_rev_id' ] ],
'options' => [ 'ORDER BY' => 'ar_timestamp DESC' ],
]
],
'tables' => [ 'recentchanges', 'change_tag' ],
'fields' => [ 'rc_id', 'rc_timestamp', 'ts_tags' => $groupConcats['recentchanges'] ],
'conds' => [ "rc_timestamp > '20170714183203'", 'ct_tag_id' => [ 1, 2 ] ],
- 'join_conds' => [ 'change_tag' => [ 'INNER JOIN', 'ct_rc_id=rc_id' ] ],
+ 'join_conds' => [ 'change_tag' => [ 'JOIN', 'ct_rc_id=rc_id' ] ],
'options' => [ 'ORDER BY' => 'rc_timestamp DESC', 'DISTINCT' ],
]
],
'tables' => [ 'recentchanges', 'change_tag' ],
'fields' => [ 'rc_id', 'rc_timestamp', 'ts_tags' => $groupConcats['recentchanges'] ],
'conds' => [ "rc_timestamp > '20170714183203'", 'ct_tag_id' => [ 1, 2 ] ],
- 'join_conds' => [ 'change_tag' => [ 'INNER JOIN', 'ct_rc_id=rc_id' ] ],
+ 'join_conds' => [ 'change_tag' => [ 'JOIN', 'ct_rc_id=rc_id' ] ],
'options' => [ 'DISTINCT', 'ORDER BY' => 'rc_timestamp DESC' ],
]
],
'tables' => [ 'recentchanges', 'change_tag' ],
'fields' => [ 'rc_id', 'ts_tags' => $groupConcats['recentchanges'] ],
'conds' => [ "rc_timestamp > '20170714183203'", 'ct_tag_id' => [ 1, 2 ] ],
- 'join_conds' => [ 'change_tag' => [ 'INNER JOIN', 'ct_rc_id=rc_id' ] ],
+ 'join_conds' => [ 'change_tag' => [ 'JOIN', 'ct_rc_id=rc_id' ] ],
'options' => [ 'ORDER BY rc_timestamp DESC', 'DISTINCT' ],
]
],
$a->addHeadItem( '<foo1>' );
$a->addHeadItem( '<bar1>', 'bar' );
$a->addModules( 'test-module-a' );
- $a->addModuleScripts( 'test-module-script-a' );
$a->addModuleStyles( 'test-module-styles-a' );
$b->addJsConfigVars( 'test-config-var-a', 'a' );
$b->addHeadItem( '<foo2>' );
$b->addHeadItem( '<bar2>', 'bar' );
$b->addModules( 'test-module-b' );
- $b->addModuleScripts( 'test-module-script-b' );
$b->addModuleStyles( 'test-module-styles-b' );
$b->addJsConfigVars( 'test-config-var-b', 'b' );
$b->addJsConfigVars( 'test-config-var-a', 'X' );
'test-module-a',
'test-module-b',
],
- 'getModuleScripts' => [
- 'test-module-script-a',
- 'test-module-script-b',
- ],
'getModuleStyles' => [
'test-module-styles-a',
'test-module-styles-b',
* @covers ResourceLoaderClientHtml::__construct
* @covers ResourceLoaderClientHtml::setModules
* @covers ResourceLoaderClientHtml::setModuleStyles
- * @covers ResourceLoaderClientHtml::setModuleScripts
* @covers ResourceLoaderClientHtml::getData
* @covers ResourceLoaderClientHtml::getContext
*/
'test.styles.deprecated',
'test.unregistered.styles',
] );
- $client->setModuleScripts( [
- 'test.scripts',
- 'test.scripts.user',
- 'test.scripts.user.empty',
- 'test.scripts.shouldembed',
- 'test.unregistered.scripts',
- ] );
$expected = [
'states' => [
'test.styles.private' => 'ready',
'test.styles.shouldembed' => 'ready',
'test.styles.deprecated' => 'ready',
- 'test.scripts' => 'loading',
- 'test.scripts.user' => 'loading',
- 'test.scripts.user.empty' => 'ready',
- 'test.scripts.shouldembed' => 'loading',
],
'general' => [
'test',
'test.styles.pure',
'test.styles.deprecated',
],
- 'scripts' => [
- 'test.scripts',
- 'test.scripts.user',
- 'test.scripts.shouldembed',
- ],
'embed' => [
'styles' => [ 'test.styles.private', 'test.styles.shouldembed' ],
'general' => [
'test.styles.private',
'test.styles.deprecated',
] );
- $client->setModuleScripts( [
- 'test.scripts',
- ] );
$client->setExemptStates( [
'test.exempt' => 'ready',
] );
$expected = '<script>document.documentElement.className = document.documentElement.className.replace( /(^|\s)client-nojs(\s|$)/, "$1client-js$2" );</script>' . "\n"
. '<script>(window.RLQ=window.RLQ||[]).push(function(){'
. 'mw.config.set({"key":"value"});'
- . 'mw.loader.state({"test.exempt":"ready","test.private":"loading","test.styles.pure":"ready","test.styles.private":"ready","test.styles.deprecated":"ready","test.scripts":"loading"});'
+ . 'mw.loader.state({"test.exempt":"ready","test.private":"loading","test.styles.pure":"ready","test.styles.private":"ready","test.styles.deprecated":"ready"});'
. 'mw.loader.implement("test.private@{blankVer}",null,{"css":[]});'
. 'RLPAGEMODULES=["test"];mw.loader.load(RLPAGEMODULES);'
- . 'mw.loader.load("/w/load.php?debug=false\u0026lang=nl\u0026modules=test.scripts\u0026only=scripts\u0026skin=fallback");'
. '});</script>' . "\n"
. '<link rel="stylesheet" href="/w/load.php?debug=false&lang=nl&modules=test.styles.deprecated%2Cpure&only=styles&skin=fallback"/>' . "\n"
. '<style>.private{}</style>' . "\n"
$client->setModuleStyles( [
'test.styles.deprecated',
] );
- $client->setModuleScripts( [
- 'test.scripts',
- ] );
// phpcs:disable Generic.Files.LineLength
$expected = '<script>(window.RLQ=window.RLQ||[]).push(function(){'
. 'mw.log.warn("This page is using the deprecated ResourceLoader module \"test.styles.deprecated\".\nDeprecation message.");'
--- /dev/null
+<?php
+/**
+ * Factory for handling the special page list and generating SpecialPage objects.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @group SpecialPage
+ */
+abstract class FormSpecialPageTestCase extends SpecialPageTestBase {
+
+ /**
+ * @covers FormSpecialPage::checkExecutePermissions
+ */
+ public function testCheckExecutePermissionsSitewideBlock() {
+ $special = $this->newSpecialPage();
+ $checkExecutePermissions = $this->getMethod( $special, 'checkExecutePermissions' );
+
+ $user = clone $this->getTestUser()->getUser();
+ $user->mBlockedby = $user->getName();
+ $user->mBlock = new Block( [
+ 'address' => '127.0.8.1',
+ 'by' => $user->getId(),
+ 'reason' => 'sitewide block',
+ 'timestamp' => time(),
+ 'sitewide' => true,
+ 'expiry' => 10,
+ ] );
+
+ $this->expectException( UserBlockedError::class );
+ $checkExecutePermissions( $user );
+ }
+
+ /**
+ * @covers FormSpecialPage::checkExecutePermissions
+ */
+ public function testCheckExecutePermissionsPartialBlock() {
+ $special = $this->newSpecialPage();
+ $checkExecutePermissions = $this->getMethod( $special, 'checkExecutePermissions' );
+
+ $user = clone $this->getTestUser()->getUser();
+ $user->mBlockedby = $user->getName();
+ $user->mBlock = new Block( [
+ 'address' => '127.0.8.1',
+ 'by' => $user->getId(),
+ 'reason' => 'partial block',
+ 'timestamp' => time(),
+ 'sitewide' => false,
+ 'expiry' => 10,
+ ] );
+
+ $this->assertNull( $checkExecutePermissions( $user ) );
+ }
+
+ /**
+ * Get a protected/private method.
+ *
+ * @param object $obj
+ * @param string $name
+ * @return callable
+ */
+ protected function getMethod( $obj, $name ) {
+ $method = new ReflectionMethod( $obj, $name );
+ $method->setAccessible( true );
+ return $method->getClosure( $obj );
+ }
+}
--- /dev/null
+<?php
+
+class SpecialPasswordResetTest extends FormSpecialPageTestCase {
+ /**
+ * {@inheritdoc}
+ */
+ protected function newSpecialPage() {
+ return new SpecialPasswordReset();
+ }
+}
return new WatchedItemQueryService(
$this->getMockLoadBalancer( $mockDb ),
$this->getMockCommentStore(),
- $this->getMockActorMigration()
+ $this->getMockActorMigration(),
+ $this->getMockWatchedItemStore()
);
}
return $mock;
}
+ /**
+ * @param PHPUnit_Framework_MockObject_MockObject|Database $mockDb
+ * @return PHPUnit_Framework_MockObject_MockObject|WatchedItemStore
+ */
+ private function getMockWatchedItemStore() {
+ $mock = $this->getMockBuilder( WatchedItemStore::class )
+ ->disableOriginalConstructor()
+ ->getMock();
+ $mock->expects( $this->any() )
+ ->method( 'getLatestNotificationTimestamp' )
+ ->will( $this->returnCallback( function ( $timestamp ) {
+ return $timestamp;
+ } ) );
+ return $mock;
+ }
+
/**
* @param int $id
* @return PHPUnit_Framework_MockObject_MockObject|User
],
[
'watchlist' => [
- 'INNER JOIN',
+ 'JOIN',
[
'wl_namespace=rc_namespace',
'wl_title=rc_title'
],
[
'watchlist' => [
- 'INNER JOIN',
+ 'JOIN',
[
'wl_namespace=rc_namespace',
'wl_title=rc_title'
$expectedJoinConds = array_merge(
[
'watchlist' => [
- 'INNER JOIN',
+ 'JOIN',
[
'wl_namespace=rc_namespace',
'wl_title=rc_title'
$this->isType( 'string' ),
$this->isType( 'array' ),
array_merge( [
- 'watchlist' => [ 'INNER JOIN', [ 'wl_namespace=rc_namespace', 'wl_title=rc_title' ] ],
+ 'watchlist' => [ 'JOIN', [ 'wl_namespace=rc_namespace', 'wl_title=rc_title' ] ],
'page' => [ 'LEFT JOIN', 'rc_cur_id=page_id' ],
], $expectedExtraJoins )
)
[],
[
'watchlist' => [
- 'INNER JOIN',
+ 'JOIN',
[
'wl_namespace=rc_namespace',
'wl_title=rc_title'
[],
[
'watchlist' => [
- 'INNER JOIN',
+ 'JOIN',
[
'wl_namespace=rc_namespace',
'wl_title=rc_title'
[],
[
'watchlist' => [
- 'INNER JOIN',
+ 'JOIN',
[
'wl_namespace=rc_namespace',
'wl_title=rc_title'
[ $title->getNamespace() => [ $title->getDBkey() => null ] ],
$store->getNotificationTimestampsBatch( $user, [ $title ] )
);
+
+ // Run the job queue
+ JobQueueGroup::destroySingletons();
+ $jobs = new RunJobs;
+ $jobs->loadParamsAndArgs( null, [ 'quiet' => true ], null );
+ $jobs->execute();
+
$this->assertEquals(
$initialVisitingWatchers,
$store->countVisitingWatchers( $title, '20150202020202' )
return $mock;
}
+ /**
+ * @return PHPUnit_Framework_MockObject_MockObject|JobQueueGroup
+ */
+ private function getMockJobQueueGroup() {
+ $mock = $this->getMockBuilder( JobQueueGroup::class )
+ ->disableOriginalConstructor()
+ ->getMock();
+ $mock->expects( $this->any() )
+ ->method( 'push' )
+ ->will( $this->returnCallback( function ( Job $job ) {
+ $job->run();
+ } ) );
+ $mock->expects( $this->any() )
+ ->method( 'lazyPush' )
+ ->will( $this->returnCallback( function ( Job $job ) {
+ $job->run();
+ } ) );
+ return $mock;
+ }
+
/**
* @return PHPUnit_Framework_MockObject_MockObject|HashBagOStuff
*/
return $fakeRow;
}
- private function newWatchedItemStore( LBFactory $lbFactory, HashBagOStuff $cache,
+ private function newWatchedItemStore(
+ LBFactory $lbFactory,
+ JobQueueGroup $queueGroup,
+ HashBagOStuff $cache,
ReadOnlyMode $readOnlyMode
) {
return new WatchedItemStore(
$lbFactory,
+ $queueGroup,
+ new HashBagOStuff(),
$cache,
$readOnlyMode,
1000
$store = $this->newWatchedItemStore(
$this->getMockLBFactory( $mockDb ),
+ $this->getMockJobQueueGroup(),
$mockCache,
$this->getMockReadOnlyMode()
);
$store = $this->newWatchedItemStore(
$this->getMockLBFactory( $mockDb ),
+ $this->getMockJobQueueGroup(),
$mockCache,
$this->getMockReadOnlyMode()
);
$store = $this->newWatchedItemStore(
$this->getMockLBFactory( $mockDb ),
+ $this->getMockJobQueueGroup(),
$mockCache,
$this->getMockReadOnlyMode()
);
$store = $this->newWatchedItemStore(
$this->getMockLBFactory( $mockDb ),
+ $this->getMockJobQueueGroup(),
$mockCache,
$this->getMockReadOnlyMode()
);
$store = $this->newWatchedItemStore(
$this->getMockLBFactory( $mockDb ),
+ $this->getMockJobQueueGroup(),
$mockCache,
$this->getMockReadOnlyMode()
);
$store = $this->newWatchedItemStore(
$this->getMockLBFactory( $mockDb ),
+ $this->getMockJobQueueGroup(),
$mockCache,
$this->getMockReadOnlyMode()
);
$store = $this->newWatchedItemStore(
$this->getMockLBFactory( $mockDb ),
+ $this->getMockJobQueueGroup(),
$mockCache,
$this->getMockReadOnlyMode()
);
$store = $this->newWatchedItemStore(
$this->getMockLBFactory( $mockDb ),
+ $this->getMockJobQueueGroup(),
$mockCache,
$this->getMockReadOnlyMode()
);
$store = $this->newWatchedItemStore(
$this->getMockLBFactory( $mockDb ),
+ $this->getMockJobQueueGroup(),
$mockCache,
$this->getMockReadOnlyMode()
);
$store = $this->newWatchedItemStore(
$this->getMockLBFactory( $mockDb ),
+ $this->getMockJobQueueGroup(),
$mockCache,
$this->getMockReadOnlyMode()
);
$store = $this->newWatchedItemStore(
$this->getMockLBFactory( $mockDb ),
+ $this->getMockJobQueueGroup(),
$mockCache,
$this->getMockReadOnlyMode()
);
$store = $this->newWatchedItemStore(
$this->getMockLBFactory( $mockDb ),
+ $this->getMockJobQueueGroup(),
$mockCache,
$this->getMockReadOnlyMode()
);
$store = $this->newWatchedItemStore(
$this->getMockLBFactory( $mockDb ),
+ $this->getMockJobQueueGroup(),
$mockCache,
$this->getMockReadOnlyMode()
);
$store = $this->newWatchedItemStore(
$this->getMockLBFactory( $mockDb ),
+ $this->getMockJobQueueGroup(),
$this->getMockCache(),
$this->getMockReadOnlyMode()
);
$store = $this->newWatchedItemStore(
$this->getMockLBFactory( $mockDb ),
+ $this->getMockJobQueueGroup(),
$mockCache,
$this->getMockReadOnlyMode()
);
$store = $this->newWatchedItemStore(
$this->getMockLBFactory( $mockDb ),
+ $this->getMockJobQueueGroup(),
$mockCache,
$this->getMockReadOnlyMode()
);
$store = $this->newWatchedItemStore(
$this->getMockLBFactory( $mockDb ),
+ $this->getMockJobQueueGroup(),
$mockCache,
$this->getMockReadOnlyMode()
);
$store = $this->newWatchedItemStore(
$this->getMockLBFactory( $mockDb ),
+ $this->getMockJobQueueGroup(),
$mockCache,
$this->getMockReadOnlyMode()
);
$store = $this->newWatchedItemStore(
$this->getMockLBFactory( $mockDb ),
+ $this->getMockJobQueueGroup(),
$mockCache,
$this->getMockReadOnlyMode()
);
public function testAddWatchBatchForUser_readOnlyDBReturnsFalse() {
$store = $this->newWatchedItemStore(
$this->getMockLBFactory( $this->getMockDb() ),
+ $this->getMockJobQueueGroup(),
$this->getMockCache(),
$this->getMockReadOnlyMode( true )
);
$store = $this->newWatchedItemStore(
$this->getMockLBFactory( $mockDb ),
+ $this->getMockJobQueueGroup(),
$mockCache,
$this->getMockReadOnlyMode()
);
$store = $this->newWatchedItemStore(
$this->getMockLBFactory( $mockDb ),
+ $this->getMockJobQueueGroup(),
$mockCache,
$this->getMockReadOnlyMode()
);
$store = $this->newWatchedItemStore(
$this->getMockLBFactory( $mockDb ),
+ $this->getMockJobQueueGroup(),
$mockCache,
$this->getMockReadOnlyMode()
);
$store = $this->newWatchedItemStore(
$this->getMockLBFactory( $mockDb ),
+ $this->getMockJobQueueGroup(),
$mockCache,
$this->getMockReadOnlyMode()
);
$store = $this->newWatchedItemStore(
$this->getMockLBFactory( $mockDb ),
+ $this->getMockJobQueueGroup(),
$mockCache,
$this->getMockReadOnlyMode()
);
$store = $this->newWatchedItemStore(
$this->getMockLBFactory( $mockDb ),
+ $this->getMockJobQueueGroup(),
$mockCache,
$this->getMockReadOnlyMode()
);
$store = $this->newWatchedItemStore(
$this->getMockLBFactory( $mockDb ),
+ $this->getMockJobQueueGroup(),
$mockCache,
$this->getMockReadOnlyMode()
);
$store = $this->newWatchedItemStore(
$this->getMockLBFactory( $mockDb ),
+ $this->getMockJobQueueGroup(),
$mockCache,
$this->getMockReadOnlyMode()
);
$store = $this->newWatchedItemStore(
$this->getMockLBFactory( $mockDb ),
+ $this->getMockJobQueueGroup(),
$mockCache,
$this->getMockReadOnlyMode()
);
$store = $this->newWatchedItemStore(
$this->getMockLBFactory( $mockDb ),
+ $this->getMockJobQueueGroup(),
$mockCache,
$this->getMockReadOnlyMode()
);
$store = $this->newWatchedItemStore(
$this->getMockLBFactory( $mockDb ),
+ $this->getMockJobQueueGroup(),
$mockCache,
$this->getMockReadOnlyMode()
);
$store = $this->newWatchedItemStore(
$this->getMockLBFactory( $mockDb ),
+ $this->getMockJobQueueGroup(),
$mockCache,
$this->getMockReadOnlyMode()
);
$store = $this->newWatchedItemStore(
$this->getMockLBFactory( $mockDb ),
+ $this->getMockJobQueueGroup(),
$mockCache,
$this->getMockReadOnlyMode()
);
$store = $this->newWatchedItemStore(
$this->getMockLBFactory( $mockDb ),
+ $this->getMockJobQueueGroup(),
$mockCache,
$this->getMockReadOnlyMode()
);
$store = $this->newWatchedItemStore(
$mockLoadBalancer,
+ $this->getMockJobQueueGroup(),
$mockCache,
$this->getMockReadOnlyMode()
);
public function testGetWatchedItemsForUser_badSortOptionThrowsException() {
$store = $this->newWatchedItemStore(
$this->getMockLBFactory( $this->getMockDb() ),
+ $this->getMockJobQueueGroup(),
$this->getMockCache(),
$this->getMockReadOnlyMode()
);
$store = $this->newWatchedItemStore(
$this->getMockLBFactory( $mockDb ),
+ $this->getMockJobQueueGroup(),
$mockCache,
$this->getMockReadOnlyMode()
);
$store = $this->newWatchedItemStore(
$this->getMockLBFactory( $mockDb ),
+ $this->getMockJobQueueGroup(),
$mockCache,
$this->getMockReadOnlyMode()
);
$store = $this->newWatchedItemStore(
$this->getMockLBFactory( $mockDb ),
+ $this->getMockJobQueueGroup(),
$mockCache,
$this->getMockReadOnlyMode()
);
$store = $this->newWatchedItemStore(
$this->getMockLBFactory( $mockDb ),
+ $this->getMockJobQueueGroup(),
$mockCache,
$this->getMockReadOnlyMode()
);
$store = $this->newWatchedItemStore(
$this->getMockLBFactory( $mockDb ),
+ $this->getMockJobQueueGroup(),
$mockCache,
$this->getMockReadOnlyMode()
);
$store = $this->newWatchedItemStore(
$this->getMockLBFactory( $mockDb ),
+ $this->getMockJobQueueGroup(),
$mockCache,
$this->getMockReadOnlyMode()
);
$store = $this->newWatchedItemStore(
$this->getMockLBFactory( $mockDb ),
+ $this->getMockJobQueueGroup(),
$mockCache,
$this->getMockReadOnlyMode()
);
$store = $this->newWatchedItemStore(
$this->getMockLBFactory( $mockDb ),
+ $this->getMockJobQueueGroup(),
$mockCache,
$this->getMockReadOnlyMode()
);
$store = $this->newWatchedItemStore(
$this->getMockLBFactory( $mockDb ),
+ $this->getMockJobQueueGroup(),
$mockCache,
$this->getMockReadOnlyMode()
);
$store = $this->newWatchedItemStore(
$this->getMockLBFactory( $mockDb ),
+ $this->getMockJobQueueGroup(),
$mockCache,
$this->getMockReadOnlyMode()
);
->method( 'delete' )
->with( '0:SomeDbKey:1' );
+ $mockQueueGroup = $this->getMockJobQueueGroup();
+ $mockQueueGroup->expects( $this->once() )
+ ->method( 'lazyPush' )
+ ->willReturnCallback( function ( ActivityUpdateJob $job ) {
+ // don't run
+ } );
+
$store = $this->newWatchedItemStore(
$this->getMockLBFactory( $mockDb ),
+ $mockQueueGroup,
$mockCache,
$this->getMockReadOnlyMode()
);
- // Note: This does not actually assert the job is correct
- $callableCallCounter = 0;
- $mockCallback = function ( $callable ) use ( &$callableCallCounter ) {
- $callableCallCounter++;
- $this->assertInternalType( 'callable', $callable );
- };
- $scopedOverride = $store->overrideDeferredUpdatesAddCallableUpdateCallback( $mockCallback );
-
$this->assertTrue(
$store->resetNotificationTimestamp(
$user,
$title
)
);
- $this->assertEquals( 1, $callableCallCounter );
-
- ScopedCallback::consume( $scopedOverride );
}
public function testResetNotificationTimestamp_noItemForced() {
->method( 'delete' )
->with( '0:SomeDbKey:1' );
+ $mockQueueGroup = $this->getMockJobQueueGroup();
$store = $this->newWatchedItemStore(
$this->getMockLBFactory( $mockDb ),
+ $mockQueueGroup,
$mockCache,
$this->getMockReadOnlyMode()
);
- // Note: This does not actually assert the job is correct
- $callableCallCounter = 0;
- $mockCallback = function ( $callable ) use ( &$callableCallCounter ) {
- $callableCallCounter++;
- $this->assertInternalType( 'callable', $callable );
- };
- $scopedOverride = $store->overrideDeferredUpdatesAddCallableUpdateCallback( $mockCallback );
+ $mockQueueGroup->expects( $this->any() )
+ ->method( 'lazyPush' )
+ ->will( $this->returnCallback( function ( ActivityUpdateJob $job ) {
+ // don't run
+ } ) );
$this->assertTrue(
$store->resetNotificationTimestamp(
'force'
)
);
- $this->assertEquals( 1, $callableCallCounter );
-
- ScopedCallback::consume( $scopedOverride );
}
/**
}
private function verifyCallbackJob(
- $callback,
+ ActivityUpdateJob $job,
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() );
->method( 'delete' )
->with( '0:SomeTitle:1' );
+ $mockQueueGroup = $this->getMockJobQueueGroup();
$store = $this->newWatchedItemStore(
$this->getMockLBFactory( $mockDb ),
+ $mockQueueGroup,
$mockCache,
$this->getMockReadOnlyMode()
);
- $callableCallCounter = 0;
- $scopedOverride = $store->overrideDeferredUpdatesAddCallableUpdateCallback(
- function ( $callable ) use ( &$callableCallCounter, $title, $user ) {
- $callableCallCounter++;
- $this->verifyCallbackJob(
- $callable,
- $title,
- $user->getId(),
- function ( $time ) {
- return $time === null;
- }
- );
- }
- );
+ $mockQueueGroup->expects( $this->any() )
+ ->method( 'lazyPush' )
+ ->will( $this->returnCallback(
+ function ( ActivityUpdateJob $job ) use ( $title, $user ) {
+ $this->verifyCallbackJob(
+ $job,
+ $title,
+ $user->getId(),
+ function ( $time ) {
+ return $time === null;
+ }
+ );
+ }
+ ) );
$this->assertTrue(
$store->resetNotificationTimestamp(
$oldid
)
);
- $this->assertEquals( 1, $callableCallCounter );
-
- ScopedCallback::consume( $scopedOverride );
}
public function testResetNotificationTimestamp_oldidSpecifiedNotLatestRevisionForced() {
->method( 'delete' )
->with( '0:SomeDbKey:1' );
+ $mockQueueGroup = $this->getMockJobQueueGroup();
$store = $this->newWatchedItemStore(
$this->getMockLBFactory( $mockDb ),
+ $mockQueueGroup,
$mockCache,
$this->getMockReadOnlyMode()
);
- $addUpdateCallCounter = 0;
- $scopedOverrideDeferred = $store->overrideDeferredUpdatesAddCallableUpdateCallback(
- function ( $callable ) use ( &$addUpdateCallCounter, $title, $user ) {
- $addUpdateCallCounter++;
- $this->verifyCallbackJob(
- $callable,
- $title,
- $user->getId(),
- function ( $time ) {
- return $time !== null && $time > '20151212010101';
- }
- );
- }
- );
+ $mockQueueGroup->expects( $this->any() )
+ ->method( 'lazyPush' )
+ ->will( $this->returnCallback(
+ function ( ActivityUpdateJob $job ) use ( $title, $user ) {
+ $this->verifyCallbackJob(
+ $job,
+ $title,
+ $user->getId(),
+ function ( $time ) {
+ return $time !== null && $time > '20151212010101';
+ }
+ );
+ }
+ ) );
$getTimestampCallCounter = 0;
$scopedOverrideRevision = $store->overrideRevisionGetTimestampFromIdCallback(
$oldid
)
);
- $this->assertEquals( 1, $addUpdateCallCounter );
$this->assertEquals( 1, $getTimestampCallCounter );
- ScopedCallback::consume( $scopedOverrideDeferred );
ScopedCallback::consume( $scopedOverrideRevision );
}
->method( 'delete' )
->with( '0:SomeDbKey:1' );
+ $mockQueueGroup = $this->getMockJobQueueGroup();
$store = $this->newWatchedItemStore(
$this->getMockLBFactory( $mockDb ),
+ $mockQueueGroup,
$mockCache,
$this->getMockReadOnlyMode()
);
- $callableCallCounter = 0;
- $scopedOverride = $store->overrideDeferredUpdatesAddCallableUpdateCallback(
- function ( $callable ) use ( &$callableCallCounter, $title, $user ) {
- $callableCallCounter++;
- $this->verifyCallbackJob(
- $callable,
- $title,
- $user->getId(),
- function ( $time ) {
- return $time === null;
- }
- );
- }
- );
+ $mockQueueGroup->expects( $this->any() )
+ ->method( 'lazyPush' )
+ ->will( $this->returnCallback(
+ function ( ActivityUpdateJob $job ) use ( $title, $user ) {
+ $this->verifyCallbackJob(
+ $job,
+ $title,
+ $user->getId(),
+ function ( $time ) {
+ return $time === null;
+ }
+ );
+ }
+ ) );
$this->assertTrue(
$store->resetNotificationTimestamp(
$oldid
)
);
- $this->assertEquals( 1, $callableCallCounter );
-
- ScopedCallback::consume( $scopedOverride );
}
public function testResetNotificationTimestamp_futureNotificationTimestampForced() {
->method( 'delete' )
->with( '0:SomeDbKey:1' );
+ $mockQueueGroup = $this->getMockJobQueueGroup();
$store = $this->newWatchedItemStore(
$this->getMockLBFactory( $mockDb ),
+ $mockQueueGroup,
$mockCache,
$this->getMockReadOnlyMode()
);
- $addUpdateCallCounter = 0;
- $scopedOverrideDeferred = $store->overrideDeferredUpdatesAddCallableUpdateCallback(
- function ( $callable ) use ( &$addUpdateCallCounter, $title, $user ) {
- $addUpdateCallCounter++;
- $this->verifyCallbackJob(
- $callable,
- $title,
- $user->getId(),
- function ( $time ) {
- return $time === '30151212010101';
- }
- );
- }
- );
+ $mockQueueGroup->expects( $this->any() )
+ ->method( 'lazyPush' )
+ ->will( $this->returnCallback(
+ function ( ActivityUpdateJob $job ) use ( $title, $user ) {
+ $this->verifyCallbackJob(
+ $job,
+ $title,
+ $user->getId(),
+ function ( $time ) {
+ return $time === '30151212010101';
+ }
+ );
+ }
+ ) );
$getTimestampCallCounter = 0;
$scopedOverrideRevision = $store->overrideRevisionGetTimestampFromIdCallback(
$oldid
)
);
- $this->assertEquals( 1, $addUpdateCallCounter );
$this->assertEquals( 1, $getTimestampCallCounter );
- ScopedCallback::consume( $scopedOverrideDeferred );
ScopedCallback::consume( $scopedOverrideRevision );
}
->method( 'delete' )
->with( '0:SomeDbKey:1' );
+ $mockQueueGroup = $this->getMockJobQueueGroup();
$store = $this->newWatchedItemStore(
$this->getMockLBFactory( $mockDb ),
+ $mockQueueGroup,
$mockCache,
$this->getMockReadOnlyMode()
);
- $addUpdateCallCounter = 0;
- $scopedOverrideDeferred = $store->overrideDeferredUpdatesAddCallableUpdateCallback(
- function ( $callable ) use ( &$addUpdateCallCounter, $title, $user ) {
- $addUpdateCallCounter++;
- $this->verifyCallbackJob(
- $callable,
- $title,
- $user->getId(),
- function ( $time ) {
- return $time === false;
- }
- );
- }
- );
+ $mockQueueGroup->expects( $this->any() )
+ ->method( 'lazyPush' )
+ ->will( $this->returnCallback(
+ function ( ActivityUpdateJob $job ) use ( $title, $user ) {
+ $this->verifyCallbackJob(
+ $job,
+ $title,
+ $user->getId(),
+ function ( $time ) {
+ return $time === false;
+ }
+ );
+ }
+ ) );
$getTimestampCallCounter = 0;
$scopedOverrideRevision = $store->overrideRevisionGetTimestampFromIdCallback(
$oldid
)
);
- $this->assertEquals( 1, $addUpdateCallCounter );
$this->assertEquals( 1, $getTimestampCallCounter );
- ScopedCallback::consume( $scopedOverrideDeferred );
ScopedCallback::consume( $scopedOverrideRevision );
}
public function testSetNotificationTimestampsForUser_anonUser() {
$store = $this->newWatchedItemStore(
$this->getMockLBFactory( $this->getMockDb() ),
+ $this->getMockJobQueueGroup(),
$this->getMockCache(),
$this->getMockReadOnlyMode()
);
$store = $this->newWatchedItemStore(
$this->getMockLBFactory( $mockDb ),
+ $this->getMockJobQueueGroup(),
$this->getMockCache(),
$this->getMockReadOnlyMode()
);
$store = $this->newWatchedItemStore(
$this->getMockLBFactory( $mockDb ),
+ $this->getMockJobQueueGroup(),
$this->getMockCache(),
$this->getMockReadOnlyMode()
);
$store = $this->newWatchedItemStore(
$this->getMockLBFactory( $mockDb ),
+ $this->getMockJobQueueGroup(),
$this->getMockCache(),
$this->getMockReadOnlyMode()
);
$store = $this->newWatchedItemStore(
$this->getMockLBFactory( $mockDb ),
+ $this->getMockJobQueueGroup(),
$mockCache,
$this->getMockReadOnlyMode()
);
$store = $this->newWatchedItemStore(
$this->getMockLBFactory( $mockDb ),
+ $this->getMockJobQueueGroup(),
$mockCache,
$this->getMockReadOnlyMode()
);
$store = $this->newWatchedItemStore(
$this->getMockLBFactory( $mockDb ),
+ $this->getMockJobQueueGroup(),
$mockCache,
$this->getMockReadOnlyMode()
);
};
},
teardown: function () {
+ mw.loader.maxQueryLength = 2000;
// Teardown for StringSet shim test
if ( this.nativeSet ) {
window.Set = this.nativeSet;
[ 'testUrlIncDump', 'dump', [], null, 'testloader' ]
] );
- mw.config.set( 'wgResourceLoaderMaxQueryLength', 10 );
+ mw.loader.maxQueryLength = 10;
return mw.loader.using( [ 'testUrlIncDump', 'testUrlInc' ] ).then( function ( require ) {
assert.propEqual(