disabled.
=== New features in 1.21 ===
-* (bug 38110) Schema changes (adding or dropping tables, indicies and
+* (bug 38110) Schema changes (adding or dropping tables, indices and
fields) can be now be done separately from from other changes that
update.php makes. This is useful in environments that use database
permissions to restrict schema changes but allow the DB user that
MediaWiki normally runs as to perform other changes that update.php
- makes. Schema changes can be run seperately. See the file UPGRADE
+ makes. Schema changes can be run separately. See the file UPGRADE
for more information.
* (bug 34876) jquery.makeCollapsible has been improved in performance.
* Added ContentHandler facility to allow extensions to support other content
* (bug 5346) Categories that are redirects will be displayed italic in
the category links section at the bottom of a page.
* (bug 43915) New maintenance script deleteEqualMessages.php.
-* You can now create checkbox option matrixes through the HTMLCheckMatrix
+* You can now create checkbox option matrices through the HTMLCheckMatrix
subclass in HTMLForm.
* WikiText now permits the use of WAI-ARIA's role="presentation" inside of
html elements and tables. This allows presentational markup, especially
oc, pl, pt, rm, ro, ru, rup, sco, sk, sl, smn, sq, sr, sv, tk, tl, tr, tt, uk,
uz, vi.
* Added 'CategoryAfterPageAdded' and 'CategoryAfterPageRemoved' hooks.
+* (bug 33186) Add image rotation api "imagerotate"
+* (bug 34040) Add "User rights management" link on user page toolbox.
=== Bug fixes in 1.21 ===
* (bug 40353) SpecialDoubleRedirect should support interwiki redirects.
extensions) performed using Git 1.7.8+ should now appear.
* (bug 42184) $wgUploadSizeWarning missing second variable
* (bug 40326) Check if files exist with a different extension during uploading
+* (bug 34798) Updated CSS for Atom/RSS recent changes feeds to match on-wiki diffs.
=== API changes in 1.21 ===
* prop=revisions can now report the contentmodel and contentformat.
* (bug 43849) ApiQueryImageInfo no longer throws exceptions with ForeignDBRepo
redirects.
* On error, any warnings generated before that error will be shown in the result.
-* action=help suports generalized submodules (modules=query+value), querymodules obsolete
+* action=help supports generalized submodules (modules=query+value), querymodules obsolete
* ApiQueryImageInfo continuation is more reliable. The only major change is
that the imagerepository property will no longer be set on page objects not
processed in the current query (i.e. non-images or those skipped due to
* ApiQueryImageInfo will now limit the number of calls to File::transform made
in any one query. If there are too many, iicontinue will be returned.
* action=query&meta=siteinfo&siprop=general will now return the regexes used for
- link trails and link prefices. Added for Parsoid support.
+ link trails and link prefixes. Added for Parsoid support.
* Added an API query module list=pageswithprop, which lists pages using a
particular page property.
* Added an API query module list=pagepropnames, which lists all page prop names
* as an argument in the URL ('?action=') and with write-enabled set to the
* value of $wgEnableWriteAPI as specified in LocalSettings.php.
* It then invokes "execute()" on the ApiMain object instance, which
- * produces output in the format sepecified in the URL.
+ * produces output in the format specified in the URL.
*
* Copyright © 2006 Yuri Astrakhan <Firstname><Lastname>@gmail.com
*
<?php
/**
* Version of api.php to used in web server requiring .php5 extension
- * to execute scripts with PHP5 egine.
+ * to execute scripts with PHP5 engine.
*
* 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
<?php
/**
* Version of img_auth.php to used in web server requiring .php5 extension
- * to execute scripts with PHP5 egine.
+ * to execute scripts with PHP5 engine.
*
* 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
'MagicWord' => 'includes/MagicWord.php',
'MagicWordArray' => 'includes/MagicWord.php',
'MailAddress' => 'includes/UserMailer.php',
+ 'MappedIterator' => 'includes/MappedIterator.php',
'MediaWiki' => 'includes/Wiki.php',
'MediaWiki_I18N' => 'includes/SkinTemplate.php',
'Message' => 'includes/Message.php',
'ApiFormatXmlRsd' => 'includes/api/ApiRsd.php',
'ApiFormatYaml' => 'includes/api/ApiFormatYaml.php',
'ApiHelp' => 'includes/api/ApiHelp.php',
+ 'ApiImageRotate' => 'includes/api/ApiImageRotate.php',
'ApiImport' => 'includes/api/ApiImport.php',
'ApiImportReporter' => 'includes/api/ApiImport.php',
'ApiLogin' => 'includes/api/ApiLogin.php',
// Verified by native speakers
'be' => array( "Ё" ),
'be-tarask' => array( "Ё" ),
+ 'en' => array(),
'fi' => array( "Å", "Ä", "Ö" ),
+ 'hu' => array( "Cs", "Dz", "Dzs", "Gy", "Ly", "Ny", "Ö", "Sz", "Ty", "Ü", "Zs" ),
+ 'it' => array(),
'pl' => array( "Ą", "Ć", "Ę", "Ł", "Ń", "Ó", "Ś", "Ź", "Ż" ),
+ 'pt' => array(),
'ru' => array(),
+ 'uk' => array( "Ґ", "Ь" ),
// Not verified, but likely correct
'af' => array(),
- 'ast' => array( "CH", "LL", "Ñ" ),
+ 'ast' => array( "Ch", "Ll", "Ñ" ),
'az' => array( "Ç", "Ə", "Ğ", "İ", "Ö", "Ş", "Ü" ),
'bg' => array(),
- 'br' => array( "CH", "C'H" ),
- 'bs' => array( "Ä\8c", "Ä\86", "DŽ", "Ä\90", "LJ", "NJ", "Š", "Ž" ),
+ 'br' => array( "Ch", "C'h" ),
+ 'bs' => array( "Ä\8c", "Ä\86", "Dž", "Ä\90", "Lj", "Nj", "Š", "Ž" ),
'ca' => array(),
'co' => array(),
- 'cs' => array( "Č", "CH", "Ř", "Š", "Ž" ),
- 'cy' => array( "CH", "DD", "FF", "NG", "LL", "PH", "RH", "TH" ),
+ 'cs' => array( "Č", "Ch", "Ř", "Š", "Ž" ),
+ 'cy' => array( "Ch", "Dd", "Ff", "Ng", "Ll", "Ph", "Rh", "Th" ),
'da' => array( "Æ", "Ø", "Å" ),
'de' => array(),
- 'dsb' => array( "Ä\8c", "Ä\86", "DŹ", "Ä\9a", "CH", "Ł", "Ń", "Ŕ", "Š", "Ś", "Ž", "Ź" ),
+ 'dsb' => array( "Ä\8c", "Ä\86", "Dź", "Ä\9a", "Ch", "Ł", "Ń", "Ŕ", "Š", "Ś", "Ž", "Ź" ),
'el' => array(),
- 'en' => array(),
'eo' => array( "Ĉ", "Ĝ", "Ĥ", "Ĵ", "Ŝ", "Ŭ" ),
'es' => array( "Ñ" ),
'et' => array( "Š", "Ž", "Õ", "Ä", "Ö", "Ü" ),
'fy' => array(),
'ga' => array(),
'gd' => array(),
- 'gl' => array( "CH", "LL", "Ñ" ),
- 'hr' => array( "Č", "Ć", "DŽ", "Đ", "LJ", "NJ", "Š", "Ž" ),
- 'hsb' => array( "Č", "DŹ", "Ě", "CH", "Ł", "Ń", "Ř", "Š", "Ć", "Ž" ),
- 'hu' => array( "CS", "DZ", "DZS", "GY", "LY", "NY", "Ö", "SZ", "TY", "Ü", "ZS" ),
+ 'gl' => array( "Ch", "Ll", "Ñ" ),
+ 'hr' => array( "Č", "Ć", "Dž", "Đ", "Lj", "Nj", "Š", "Ž" ),
+ 'hsb' => array( "Č", "Dź", "Ě", "Ch", "Ł", "Ń", "Ř", "Š", "Ć", "Ž" ),
'is' => array( "Á", "Ð", "É", "Í", "Ó", "Ú", "Ý", "Þ", "Æ", "Ö", "Å" ),
- 'it' => array(),
'kk' => array( "Ү", "І" ),
'kl' => array( "Æ", "Ø", "Å" ),
'ku' => array( "Ç", "Ê", "Î", "Ş", "Û" ),
'lv' => array( "Č", "Ģ", "Ķ", "Ļ", "Ņ", "Š", "Ž" ),
'mk' => array(),
'mo' => array( "Ă", "Â", "Î", "Ş", "Ţ" ),
- 'mt' => array( "Ä\8a", "Ä ", "GĦ", "Ħ", "Ż" ),
+ 'mt' => array( "Ä\8a", "Ä ", "Għ", "Ħ", "Ż" ),
'nl' => array(),
'no' => array( "Æ", "Ø", "Å" ),
'oc' => array(),
- 'pt' => array(),
'rm' => array(),
'ro' => array( "Ă", "Â", "Î", "Ş", "Ţ" ),
'rup' => array( "Ă", "Â", "Î", "Ľ", "Ń", "Ş", "Ţ" ),
'sco' => array(),
- 'sk' => array( "Ä", "Č", "CH", "Ô", "Š", "Ž" ),
+ 'sk' => array( "Ä", "Č", "Ch", "Ô", "Š", "Ž" ),
'sl' => array( "Č", "Š", "Ž" ),
'smn' => array( "Á", "Č", "Đ", "Ŋ", "Š", "Ŧ", "Ž", "Æ", "Ø", "Å", "Ä", "Ö" ),
- 'sq' => array( "Ç", "DH", "Ë", "GJ", "LL", "NJ", "RR", "SH", "TH", "XH", "ZH" ),
+ 'sq' => array( "Ç", "Dh", "Ë", "Gj", "Ll", "Nj", "Rr", "Sh", "Th", "Xh", "Zh" ),
'sr' => array(),
'sv' => array( "Å", "Ä", "Ö" ),
'tk' => array( "Ç", "Ä", "Ž", "Ň", "Ö", "Ş", "Ü", "Ý" ),
- 'tl' => array( "Ñ", "NG" ),
+ 'tl' => array( "Ñ", "Ng" ),
'tr' => array( "Ç", "Ğ", "İ", "Ö", "Ş", "Ü" ),
'tt' => array( "Ә", "Ө", "Ү", "Җ", "Ң", "Һ" ),
- 'uk' => array( "Ґ", "Ь" ),
- 'uz' => array( "CH", "G'", "NG", "O'", "SH" ),
+ 'uz' => array( "Ch", "G'", "Ng", "O'", "Sh" ),
'vi' => array( "Ă", "Â", "Đ", "Ê", "Ô", "Ơ", "Ư" ),
);
* FSRepo is also supported for backwards compatibility.
*
* - name A unique name for the repository (but $wgLocalFileRepo should be 'local').
- * The name should consist of alpha-numberic characters.
+ * The name should consist of alpha-numeric characters.
* - backend A file backend name (see $wgFileBackends).
*
* For most core repos:
*
* ForeignDBRepo:
* - dbType, dbServer, dbUser, dbPassword, dbName, dbFlags
- * equivalent to the corresponding member of $wgDBservers
+ * equivalent to the corresponding member of $wgDBservers
* - tablePrefix Table prefix, the foreign wiki's $wgDBprefix
* - hasSharedCache True if the wiki's shared cache is accessible via the local $wgMemc
*
* If you leave $wgLocalFileRepo set to false, Setup will fill in appropriate values.
* Otherwise, set $wgLocalFileRepo to a repository structure as described above.
* If you set $wgUseInstantCommons to true, it will add an entry for Commons.
- * If you set $wgForeignFileRepos to an array of repostory structures, those will
+ * If you set $wgForeignFileRepos to an array of repository structures, those will
* be searched after the local file repo.
* Otherwise, you will only have access to local media files.
*
*/
$wgCustomConvertCommand = false;
+/** used for lossless jpeg rotation
+ *
+ * @since 1.21
+ * **/
+$wgJpegTran = '/usr/bin/jpegtran';
+
+
/**
* Some tests and extensions use exiv2 to manipulate the EXIF metadata in some
* image formats.
* "command" is the full command to call the virus scanner - %f will be
* replaced with the name of the file to scan. If not present, the filename
* will be appended to the command. Note that this must be overwritten if the
- * scanner is not in the system path; in that case, plase set
+ * scanner is not in the system path; in that case, please set
* $wgAntivirusSetup[$wgAntivirus]['command'] to the desired command with full
* path.
*
* the scan to be failed. This will pass the file if $wgAntivirusRequired
* is not set.
* - An exit code mapped to AV_SCAN_ABORTED causes the function to consider
- * the file to have an usupported format, which is probably imune to
- * virusses. This causes the file to pass.
+ * the file to have an unsupported format, which is probably immune to
+ * viruses. This causes the file to pass.
* - An exit code mapped to AV_NO_VIRUS will cause the file to pass, meaning
* no virus was found.
* - All other codes (like AV_VIRUS_FOUND) will cause the function to report
'codemap' => array(
"0" => AV_NO_VIRUS, # no virus
"1" => AV_VIRUS_FOUND, # virus found
- "52" => AV_SCAN_ABORTED, # unsupported file format (probably imune)
+ "52" => AV_SCAN_ABORTED, # unsupported file format (probably immune)
"*" => AV_SCAN_FAILED, # else scan failed
),
'messagepattern' => '/.*?:(.*)/sim',
* instead of From. ($wgEmergencyContact will be used as From.)
*
* Some mailers (eg sSMTP) set the SMTP envelope sender to the From value,
- * which can cause problems with SPF validation and leak recipient addressses
+ * which can cause problems with SPF validation and leak recipient addresses
* when bounces are sent to the sender.
*/
$wgUserEmailUseReplyTo = false;
* preferences shared (preferences were stored in the user table prior to 1.16)
*
* $wgSharedTables may be customized with a list of tables to share in the shared
- * datbase. However it is advised to limit what tables you do share as many of
+ * database. However it is advised to limit what tables you do share as many of
* MediaWiki's tables may have side effects if you try to share them.
*
* $wgSharedPrefix is the table prefix for the shared database. It defaults to
* Timezone to use in the error log.
* Defaults to the wiki timezone ($wgLocaltimezone).
*
- * A list of useable timezones can found at:
+ * A list of usable timezones can found at:
* http://php.net/manual/en/timezones.php
*
* @par Examples:
* change it in their preferences.
*
* This also defines the language of pages in the wiki. The content is wrapped
- * in a html element with lang=XX attribute. This behavior can be overriden
+ * in a html element with lang=XX attribute. This behavior can be overridden
* via hooks, see Title::getPageLanguage.
*/
$wgLanguageCode = 'en';
/**
* Language cache size, or really how many languages can we handle
- * simultanously without degrading to crawl speed.
+ * simultaneously without degrading to crawl speed.
*/
$wgLangObjCacheSize = 10;
/**
* List of language codes that don't correspond to an actual language.
- * These codes are mostly leftoffs from renames, or other legacy things.
+ * These codes are mostly left-offs from renames, or other legacy things.
* This array makes them not appear as a selectable language on the installer,
* and excludes them when running the transstat.php script.
*/
* Timezones can be translated by editing MediaWiki messages of type
* timezone-nameinlowercase like timezone-utc.
*
- * A list of useable timezones can found at:
+ * A list of usable timezones can found at:
* http://php.net/manual/en/timezones.php
*
* @par Examples:
* for anonymous users and new user accounts.
*
* This setting is used for most date/time displays in the software, and is
- * overrideable in user preferences. It is *not* used for signature timestamps.
+ * overridable in user preferences. It is *not* used for signature timestamps.
*
* By default, this will be set to match $wgLocaltimezone.
*/
* @par Example:
* @code
* $wgXhtmlNamespaces['svg'] = 'http://www.w3.org/2000/svg';
- * @endCode
+ * @endcode
* Normally we wouldn't have to define this in the root "<html>"
* element, but IE needs it there in some circumstances.
*
* for the icon, the following keys are used:
* - src: An absolute url to the image to use for the icon, this is recommended
* but not required, however some skins will ignore icons without an image
- * - url: The url to use in the a element arround the text or icon, if not set an a element will not be outputted
+ * - url: The url to use in the a element around the text or icon, if not set an a element will not be outputted
* - alt: This is the text form of the icon, it will be displayed without an image in
* skins like Modern or if src is not set, and will otherwise be used as
* the alt="" for the image. This key is required.
/**
* The $wgShowRollbackEditCount variable is used to show how many edits will be
- * rollback. The numeric value of the varible are the limit up to are counted.
+ * rollback. The numeric value of the variable are the limit up to are counted.
* If the value is false or 0, the edits are not counted. Disabling this will
* furthermore prevent MediaWiki from hiding some useless rollback links.
*
/** @} */ # end of Interwiki caching settings.
/**
- * If local interwikis are set up which allow redirects,
+ * If local interwikies are set up which allow redirects,
* set this regexp to restrict URLs which will be displayed
* as 'redirected from' links.
*
* class The class name
*
* preprocessorClass The preprocessor class. Two classes are currently available:
- * Preprocessor_Hash, which uses plain PHP arrays for tempoarary
+ * Preprocessor_Hash, which uses plain PHP arrays for temporary
* storage, and Preprocessor_DOM, which uses the DOM module for
* temporary storage. Preprocessor_DOM generally uses less memory;
* the speed of the two is roughly the same.
* namespaces constants (NS_USER, NS_MAIN...).
*
* Among other things, this may be useful to enforce read-restrictions
- * which may otherwise be bypassed by using the template machanism.
+ * which may otherwise be bypassed by using the template mechanism.
*/
$wgNonincludableNamespaces = array();
$wgDisableTextSearch = false;
/**
- * Set to true to have nicer highligted text in search results,
+ * Set to true to have nicer highlighted text in search results,
* by default off due to execution overhead
*/
$wgAdvancedSearchHighlighting = false;
/**
* Template for OpenSearch suggestions, defaults to API action=opensearch
*
- * Sites with heavy load would tipically have these point to a custom
+ * Sites with heavy load would typically have these point to a custom
* PHP wrapper to avoid firing up mediawiki for every keystroke
*
* Placeholders: {searchTerms}
/**
* Array of namespaces to generate a Google sitemap for when the
- * maintenance/generateSitemap.php script is run, or false if one is to be ge-
- * nerated for all namespaces.
+ * maintenance/generateSitemap.php script is run, or false if one is to be
+ * generated for all namespaces.
*/
$wgSitemapNamespaces = false;
/**
* Custom namespace priorities for sitemaps. Setting this will allow you to
- * set custom priorities to namsepaces when sitemaps are generated using the
+ * set custom priorities to namespaces when sitemaps are generated using the
* maintenance/generateSitemap.php script.
*
* This should be a map of namespace IDs to priority
/**
* Which namespaces have special treatment where they should be preview-on-open
- * Internaly only Category: pages apply, but using this extensions (e.g. Semantic MediaWiki)
+ * Internally only Category: pages apply, but using this extensions (e.g. Semantic MediaWiki)
* can specify namespaces of pages they have special treatment for
*/
$wgPreviewOnOpenNamespaces = array(
* 'version' => 1.9,
* 'path' => __FILE__,
* 'author' => 'Foo Barstein',
- * 'url' => 'http://wwww.example.com/Example%20Extension/',
+ * 'url' => 'http://www.example.com/Example%20Extension/',
* 'description' => 'An example extension',
* 'descriptionmsg' => 'exampleextension-desc',
* );
/**
* List of special pages, followed by what subtitle they should go under
* at Special:SpecialPages
+ *
+ * @deprecated 1.21 Override SpecialPage::getGroupName instead
*/
-$wgSpecialPageGroups = array(
- 'DoubleRedirects' => 'maintenance',
- 'BrokenRedirects' => 'maintenance',
- 'Lonelypages' => 'maintenance',
- 'Uncategorizedpages' => 'maintenance',
- 'Uncategorizedcategories' => 'maintenance',
- 'Uncategorizedimages' => 'maintenance',
- 'Uncategorizedtemplates' => 'maintenance',
- 'Unusedcategories' => 'maintenance',
- 'Unusedimages' => 'maintenance',
- 'Protectedpages' => 'maintenance',
- 'Protectedtitles' => 'maintenance',
- 'Unusedtemplates' => 'maintenance',
- 'Withoutinterwiki' => 'maintenance',
- 'Longpages' => 'maintenance',
- 'Shortpages' => 'maintenance',
- 'Ancientpages' => 'maintenance',
- 'Deadendpages' => 'maintenance',
- 'Wantedpages' => 'maintenance',
- 'Wantedcategories' => 'maintenance',
- 'Wantedfiles' => 'maintenance',
- 'Wantedtemplates' => 'maintenance',
- 'Unwatchedpages' => 'maintenance',
- 'Fewestrevisions' => 'maintenance',
-
- 'Userlogin' => 'login',
- 'Userlogout' => 'login',
- 'CreateAccount' => 'login',
-
- 'Recentchanges' => 'changes',
- 'Recentchangeslinked' => 'changes',
- 'Watchlist' => 'changes',
- 'Newimages' => 'changes',
- 'Newpages' => 'changes',
- 'Log' => 'changes',
- 'Tags' => 'changes',
-
- 'Upload' => 'media',
- 'Listfiles' => 'media',
- 'MIMEsearch' => 'media',
- 'FileDuplicateSearch' => 'media',
- 'Filepath' => 'media',
-
- 'Listusers' => 'users',
- 'Activeusers' => 'users',
- 'Listgrouprights' => 'users',
- 'BlockList' => 'users',
- 'Contributions' => 'users',
- 'Emailuser' => 'users',
- 'Listadmins' => 'users',
- 'Listbots' => 'users',
- 'Userrights' => 'users',
- 'Block' => 'users',
- 'Unblock' => 'users',
- 'Preferences' => 'users',
- 'ChangeEmail' => 'users',
- 'ChangePassword' => 'users',
- 'DeletedContributions' => 'users',
- 'PasswordReset' => 'users',
-
- 'Mostlinked' => 'highuse',
- 'Mostlinkedcategories' => 'highuse',
- 'Mostlinkedtemplates' => 'highuse',
- 'Mostcategories' => 'highuse',
- 'Mostimages' => 'highuse',
- 'Mostinterwikis' => 'highuse',
- 'Mostrevisions' => 'highuse',
-
- 'Allpages' => 'pages',
- 'Prefixindex' => 'pages',
- 'Listredirects' => 'pages',
- 'Categories' => 'pages',
- 'Disambiguations' => 'pages',
- 'PagesWithProp' => 'pages',
-
- 'Randompage' => 'redirects',
- 'Randomredirect' => 'redirects',
- 'Mypage' => 'redirects',
- 'Mytalk' => 'redirects',
- 'Mycontributions' => 'redirects',
- 'Search' => 'redirects',
- 'LinkSearch' => 'redirects',
-
- 'ComparePages' => 'pagetools',
- 'Movepage' => 'pagetools',
- 'MergeHistory' => 'pagetools',
- 'Revisiondelete' => 'pagetools',
- 'Undelete' => 'pagetools',
- 'Export' => 'pagetools',
- 'Import' => 'pagetools',
- 'Whatlinkshere' => 'pagetools',
-
- 'Statistics' => 'wiki',
- 'Version' => 'wiki',
- 'Lockdb' => 'wiki',
- 'Unlockdb' => 'wiki',
- 'Allmessages' => 'wiki',
- 'Popularpages' => 'wiki',
-
- 'Specialpages' => 'other',
- 'Blockme' => 'other',
- 'Booksources' => 'other',
- 'JavaScriptTest' => 'other',
-);
+$wgSpecialPageGroups = array();
/** Whether or not to sort special pages in Special:Specialpages */
/**
* Robot policies per article. These override the per-namespace robot policies.
- * Must be in the form of an array where the key part is a properly canonical-
- * ised text form title and the value is a robot policy.
+ * Must be in the form of an array where the key part is a properly canonicalised
+ * text form title and the value is a robot policy.
*
* @par Example:
* @code
public static function applyDiffStyle( $text ) {
$styles = array(
'diff' => 'background-color: white; color:black;',
- 'diff-otitle' => 'background-color: white; color:black;',
- 'diff-ntitle' => 'background-color: white; color:black;',
- 'diff-addedline' => 'background: #cfc; color:black; font-size: smaller;',
- 'diff-deletedline' => 'background: #ffa; color:black; font-size: smaller;',
- 'diff-context' => 'background: #eee; color:black; font-size: smaller;',
- 'diffchange' => 'color: red; font-weight: bold; text-decoration: none;',
+ 'diff-otitle' => 'background-color: white; color:black; text-align: center;',
+ 'diff-ntitle' => 'background-color: white; color:black; text-align: center;',
+ 'diff-addedline' => 'color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;',
+ 'diff-deletedline' => 'color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;',
+ 'diff-context' => 'background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;',
+ 'diffchange' => 'font-weight: bold; text-decoration: none;',
);
foreach( $styles as $class => $style ) {
* @return String complete HTML table row.
*/
public function getRaw( $value ) {
- list( $errors, $errorClass ) = $this->getErrorsAndErrorClass( $value );
+ list( $errors, ) = $this->getErrorsAndErrorClass( $value );
$inputHtml = $this->getInputHTML( $value );
$helptext = $this->getHelpTextHtmlRaw( $this->getHelpText() );
$cellAttributes = array();
* @return string
*/
function toHTML() {
- global $wgLang;
-
if ( $this->mPerRow > 0 ) {
$maxwidth = $this->mPerRow * ( $this->mWidths + self::THUMB_PADDING + self::GB_PADDING + self::GB_BORDERS );
$oldStyle = isset( $this->mAttribs['style'] ) ? $this->mAttribs['style'] : '';
$output .= "\n\t<li class='gallerycaption'>{$this->mCaption}</li>";
}
+ $lang = $this->getLang();
$params = array(
'width' => $this->mWidths,
'height' => $this->mHeights
if( $this->mShowBytes ) {
if( $img ) {
- $fileSize = htmlspecialchars( $wgLang->formatSize( $img->getSize() ) );
+ $fileSize = htmlspecialchars( $lang->formatSize( $img->getSize() ) );
} else {
$fileSize = wfMessage( 'filemissing' )->escaped();
}
$textlink = $this->mShowFilename ?
Linker::link(
$nt,
- htmlspecialchars( $wgLang->truncate( $nt->getText(), $this->mCaptionLength ) ),
+ htmlspecialchars( $lang->truncate( $nt->getText(), $this->mCaptionLength ) ),
array(),
array(),
array( 'known', 'noclasses' )
: false;
}
+ /**
+ * Determines the correct language to be used for this image gallery
+ * @return Language object
+ */
+ private function getLang() {
+ global $wgLang;
+ return $this->mParser
+ ? $this->mParser->getTargetLanguage()
+ : $wgLang;
+ }
+
} //class
--- /dev/null
+<?php
+/**
+ * Convenience class for generating iterators from iterators.
+ *
+ * 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
+ *
+ * @file
+ * @author Aaron Schulz
+ */
+
+/**
+ * Convenience class for generating iterators from iterators.
+ *
+ * @since 1.21
+ */
+class MappedIterator implements Iterator {
+ /** @var Iterator */
+ protected $baseIterator;
+ /** @var Closure */
+ protected $vCallback;
+
+ /**
+ * Build an new iterator from a base iterator by having the former wrap the
+ * later, returning the result of "value" callback for each current() invocation.
+ * The callback takes the result of current() on the base iterator as an argument.
+ * The keys of the base iterator are reused verbatim.
+ *
+ * @param Iterator|Array $iter
+ * @param Closure $vCallback
+ * @throws MWException
+ */
+ public function __construct( $iter, Closure $vCallback ) {
+ if ( is_array( $iter ) ) {
+ $this->baseIterator = new ArrayIterator( $iter );
+ } elseif ( $iter instanceof Iterator ) {
+ $this->baseIterator = $iter;
+ } else {
+ throw new MWException( "Invalid base iterator provided." );
+ }
+ $this->vCallback = $vCallback;
+ }
+
+ /**
+ * @return void
+ */
+ public function rewind() {
+ $this->baseIterator->rewind();
+ }
+
+ /**
+ * @return Mixed|null Returns null if out of range
+ */
+ public function current() {
+ if ( !$this->baseIterator->valid() ) {
+ return null; // out of range
+ }
+ return call_user_func_array( $this->vCallback, array( $this->baseIterator->current() ) );
+ }
+
+ /**
+ * @return Mixed|null Returns null if out of range
+ */
+ public function key() {
+ if ( !$this->baseIterator->valid() ) {
+ return null; // out of range
+ }
+ return $this->baseIterator->key();
+ }
+
+ /**
+ * @return void
+ */
+ public function next() {
+ $this->baseIterator->next();
+ }
+
+ /**
+ * @return bool
+ */
+ public function valid() {
+ return $this->baseIterator->valid();
+ }
+}
* Call the parent constructor, then store the key as
* the message.
*
- * @param $key Message to use
- * @param $params Parameters for the message
+ * @param $key string Message to use
+ * @param $params array Parameters for the message
* @see Message::__construct
*/
public function __construct( $key, $params = array() ) {
* @return string
*/
public function buildCssLinks() {
- global $wgUseSiteCss, $wgAllowUserCss, $wgAllowUserCssPrefs,
- $wgLang, $wgContLang;
+ global $wgUseSiteCss, $wgAllowUserCss, $wgAllowUserCssPrefs, $wgContLang;
$this->getSkin()->setupSkinUserCss( $this );
// If needed, Janus it first. This is user-supplied CSS, so it's
// assumed to be right for the content language directionality.
$previewedCSS = $this->getRequest()->getText( 'wpTextbox1' );
- if ( $wgLang->getDir() !== $wgContLang->getDir() ) {
+ if ( $this->getLanguage()->getDir() !== $wgContLang->getDir() ) {
$previewedCSS = CSSJanus::transform( $previewedCSS, true, false );
}
$otherTags .= Html::inlineStyle( $previewedCSS );
$nav_urls['log'] = false;
$nav_urls['blockip'] = false;
$nav_urls['emailuser'] = false;
+ $nav_urls['userrights'] = false;
// A print stylesheet is attached to all pages, but nobody ever
// figures that out. :) Add a link...
'href' => self::makeSpecialUrlSubpage( 'Emailuser', $rootUser )
);
}
+
+ $sur = new UserrightsPage;
+ if ( $sur->userCanExecute( $this->getUser() ) ) {
+ $nav_urls['userrights'] = array(
+ 'href' => self::makeSpecialUrlSubpage( 'Userrights', $rootUser )
+ );
+ }
}
wfProfileOut( __METHOD__ );
$toolbox['feeds']['links'][$key]['class'] = 'feedlink';
}
}
- foreach ( array( 'contributions', 'log', 'blockip', 'emailuser', 'upload', 'specialpages' ) as $special ) {
+ foreach ( array( 'contributions', 'log', 'blockip', 'emailuser', 'userrights', 'upload', 'specialpages' ) as $special ) {
if ( isset( $this->data['nav_urls'][$special] ) && $this->data['nav_urls'][$special] ) {
$toolbox[$special] = $this->data['nav_urls'][$special];
$toolbox[$special]['id'] = "t-$special";
$this->getOutput()->addFeedLink( $format, $url );
}
}
+
+ /**
+ * Get the group that the special page belongs in on Special:SpecialPage
+ * Use this method, instead of getGroupName to allow customization
+ * of the group name from the wiki side
+ *
+ * @return string Group of this special page
+ * @since 1.21
+ */
+ public function getFinalGroupName() {
+ global $wgSpecialPageGroups;
+ $name = $this->getName();
+ $group = '-';
+
+ // Allow overridding the group from the wiki side
+ $msg = $this->msg( 'specialpages-specialpagegroup-' . strtolower( $name ) )->inContentLanguage();
+ if ( !$msg->isBlank() ) {
+ $group = $msg->text();
+ } else {
+ // Than use the group from this object
+ $group = $this->getGroupName();
+
+ // Group '-' is used as default to have the chance to determine,
+ // if the special pages overriddes this method,
+ // if not overridden, $wgSpecialPageGroups is checked for b/c
+ if ( $group === '-' && isset( $wgSpecialPageGroups[$name] ) ) {
+ $group = $wgSpecialPageGroups[$name];
+ }
+ }
+
+ // never give '-' back, change to 'other'
+ if ( $group === '-' ) {
+ $group = 'other';
+ }
+
+ return $group;
+ }
+
+ /**
+ * Under which header this special page is listed in Special:SpecialPages
+ * See messages 'specialpages-group-*' for valid names
+ * This method defaults to group 'other'
+ *
+ * @return string
+ * @since 1.21
+ */
+ protected function getGroupName() {
+ // '-' used here to determine, if this group is overridden or has a hardcoded 'other'
+ // Needed for b/c in getFinalGroupName
+ return '-';
+ }
}
/**
*
* @param $page Mixed: SpecialPage or string
* @param $group String
+ * @deprecated 1.21 Override SpecialPage::getGroupName
*/
public static function setGroup( $page, $group ) {
+ wfDeprecated( __METHOD__, '1.21' );
+
global $wgSpecialPageGroups;
$name = is_object( $page ) ? $page->getName() : $page;
$wgSpecialPageGroups[$name] = $group;
*
* @param $page SpecialPage
* @return String
+ * @deprecated 1.21 Use SpecialPage::getFinalGroupName
*/
public static function getGroup( &$page ) {
- $name = $page->getName();
+ wfDeprecated( __METHOD__, '1.21' );
- global $wgSpecialPageGroups;
- static $specialPageGroupsCache = array();
- if ( isset( $specialPageGroupsCache[$name] ) ) {
- return $specialPageGroupsCache[$name];
- }
- $msg = wfMessage( 'specialpages-specialpagegroup-' . strtolower( $name ) );
- if ( !$msg->isBlank() ) {
- $group = $msg->text();
- } else {
- $group = isset( $wgSpecialPageGroups[$name] )
- ? $wgSpecialPageGroups[$name]
- : '-';
- }
- if ( $group == '-' ) {
- $group = 'other';
- }
- $specialPageGroupsCache[$name] = $group;
- return $group;
+ return $page->getFinalGroupName();
}
/**
// Use always content language to avoid loading hundreds of languages
// to get the link color.
global $wgContLang;
- list( $name, $lang ) = MessageCache::singleton()->figureMessage( $wgContLang->lcfirst( $this->getText() ) );
+ list( $name, ) = MessageCache::singleton()->figureMessage( $wgContLang->lcfirst( $this->getText() ) );
$message = wfMessage( $name )->inLanguage( $wgContLang )->useDatabase( false );
return $message->exists();
}
* @return string
*/
public static function detectProtocol() {
- list( $proto, $stdPort ) = self::detectProtocolAndStdPort();
+ list( $proto, ) = self::detectProtocolAndStdPort();
return $proto;
}
*/
public function loadFromRow( $data, $from ) {
$lc = LinkCache::singleton();
+ $lc->clearLink( $this->mTitle );
if ( $data ) {
$lc->addGoodLinkObjFromRow( $this->mTitle, $data );
$size = 0;
foreach ( $struct as $type ) {
if ( is_array( $type ) ) {
- list( $typeName, $fieldSize ) = $type;
+ list( , $fieldSize ) = $type;
$size += $fieldSize;
} else {
$size += $type;
if ( $required && $value === '' ) {
$this->dieUsageMsg( array( 'missingparam', $paramName ) );
}
-
break;
case 'integer': // Force everything using intval() and optionally validate limits
$min = isset ( $paramSettings[self::PARAM_MIN] ) ? $paramSettings[self::PARAM_MIN] : null;
}
break;
case 'user':
- if ( !is_array( $value ) ) {
- $value = array( $value );
- }
-
- foreach ( $value as $key => $val ) {
- $title = Title::makeTitleSafe( NS_USER, $val );
- if ( is_null( $title ) ) {
- $this->dieUsage( "Invalid value for user parameter $encParamName", "baduser_{$encParamName}" );
+ if ( is_array( $value ) ) {
+ foreach ( $value as $key => $val ) {
+ $value[$key] = $this->validateUser( $val, $encParamName );
}
- $value[$key] = $title->getText();
- }
-
- if ( !$multi ) {
- $value = $value[0];
+ } else {
+ $value = $this->validateUser( $value, $encParamName );
}
break;
case 'upload': // nothing to do
}
// Throw out duplicates if requested
- if ( is_array( $value ) && !$dupes ) {
+ if ( !$dupes && is_array( $value ) ) {
$value = array_unique( $value );
}
}
/**
- * @param $value string
- * @param $paramName string
- * @return string
+ * Validate and normalize of parameters of type 'timestamp'
+ * @param $value string Parameter value
+ * @param $encParamName string Parameter name
+ * @return string Validated and normalized parameter
*/
- function validateTimestamp( $value, $paramName ) {
+ function validateTimestamp( $value, $encParamName ) {
$unixTimestamp = wfTimestamp( TS_UNIX, $value );
if ( $unixTimestamp === false ) {
- $this->dieUsage( "Invalid value '$value' for timestamp parameter $paramName", "badtimestamp_{$paramName}" );
+ $this->dieUsage( "Invalid value '$value' for timestamp parameter $encParamName", "badtimestamp_{$encParamName}" );
}
return wfTimestamp( TS_MW, $unixTimestamp );
}
+ /**
+ * Validate and normalize of parameters of type 'user'
+ * @param $value string Parameter value
+ * @param $encParamName string Parameter value
+ * @return string Validated and normalized parameter
+ */
+ private function validateUser( $value, $encParamName ) {
+ $title = Title::makeTitleSafe( NS_USER, $value );
+ if ( $title === null ) {
+ $this->dieUsage( "Invalid value '$value' for user parameter $encParamName", "baduser_{$encParamName}" );
+ }
+ return $title->getText();
+ }
+
/**
* Adds a warning to the output, else dies
*
$apiResult = $this->getResult();
- if( $status->hasMessage( 'sessionfailure' ) ) {
- // Token was incorrect, so add it to result, but don't throw an exception.
+ if( $status->hasMessage( 'sessionfailure' ) || $status->hasMessage( 'nocookiesfornew' ) ) {
+ // Token was incorrect, so add it to result, but don't throw an exception
+ // since not having the correct token is part of the normal
+ // flow of events.
$result['token'] = LoginForm::getCreateaccountToken();
$result['result'] = 'needtoken';
} elseif( !$status->isOK() ) {
public function getPossibleErrors() {
$localErrors = array(
'wrongpassword',
- 'sessionfailure',
'sorbs_create_account_reason',
'noname',
'userexists',
if( !isset( $wgFeedClasses[$params['feedformat']] ) ) {
$this->dieUsage( 'Invalid subscription feed type', 'feed-invalid' );
}
- if ( !is_null( $params['wlexcludeuser'] ) ) {
- $fauxReqArr['wlexcludeuser'] = $params['wlexcludeuser'];
- }
// limit to the number of hours going from now back
$endTime = wfTimestamp( TS_MW, time() - intval( $params['hours'] * 60 * 60 ) );
'wllimit' => ( 50 > $wgFeedLimit ) ? $wgFeedLimit : 50
);
- if ( !is_null( $params['wlowner'] ) ) {
+ if ( $params['wlowner'] !== null ) {
$fauxReqArr['wlowner'] = $params['wlowner'];
}
- if ( !is_null( $params['wltoken'] ) ) {
+ if ( $params['wltoken'] !== null ) {
$fauxReqArr['wltoken'] = $params['wltoken'];
}
+ if ( $params['wlexcludeuser'] !== null ) {
+ $fauxReqArr['wlexcludeuser'] = $params['wlexcludeuser'];
+ }
// Support linking to diffs instead of article
if ( $params['linktodiffs'] ) {
--- /dev/null
+<?php
+/**
+ *
+ * Created on January 3rd, 2013
+ *
+ * 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
+ *
+ * @file
+ */
+
+class ApiImageRotate extends ApiBase {
+
+ private $mPageSet = null;
+
+ public function __construct( $main, $action ) {
+ parent::__construct( $main, $action );
+ }
+
+ /**
+ * Add all items from $values into the result
+ * @param $result array output
+ * @param $values array values to add
+ * @param $flag string the name of the boolean flag to mark this element
+ * @param $name string if given, name of the value
+ */
+ private static function addValues( array &$result, $values, $flag = null, $name = null ) {
+ foreach ( $values as $val ) {
+ if( $val instanceof Title ) {
+ $v = array();
+ ApiQueryBase::addTitleInfo( $v, $val );
+ } elseif( $name !== null ) {
+ $v = array( $name => $val );
+ } else {
+ $v = $val;
+ }
+ if( $flag !== null ) {
+ $v[$flag] = '';
+ }
+ $result[] = $v;
+ }
+ }
+
+
+ public function execute() {
+ $params = $this->extractRequestParams();
+ $rotation = $params[ 'rotation' ];
+ $user = $this->getUser();
+
+ if( is_null( $rotation ) || $rotation % 90 ) {
+ $this->dieUsage( "Rotation: {$rotation}", 'rotation must be multiple of 90 degrees' );
+ }
+
+ $pageSet = $this->getPageSet();
+ $pageSet->execute();
+
+ $result = array();
+ $result = array();
+
+ self::addValues( $result, $pageSet->getInvalidTitles(), 'invalid', 'title' );
+ self::addValues( $result, $pageSet->getSpecialTitles(), 'special', 'title' );
+ self::addValues( $result, $pageSet->getMissingPageIDs(), 'missing', 'pageid' );
+ self::addValues( $result, $pageSet->getMissingRevisionIDs(), 'missing', 'revid' );
+ self::addValues( $result, $pageSet->getMissingTitles(), 'missing' );
+ self::addValues( $result, $pageSet->getInterwikiTitlesAsResult() );
+
+ foreach ( $pageSet->getTitles() as $title ) {
+ $file = wfFindFile( $title );
+
+ $r = array();
+ $r[ 'title' ] = $title->getFullText();
+ if ( !$file ) {
+ $r['missing'] = '';
+ $r['result'] = 'Failure';
+ $result[] = $r;
+ continue;
+ }
+ $handler = $file->getHandler();
+ if ( !$handler || !$handler->canRotate() ) {
+ $r['invalid'] = '';
+ $r['result'] = 'Failure';
+ $result[] = $r;
+ continue;
+ }
+
+ // Check whether we're allowed to rotate this file
+ $this->checkPermissions( $this->getUser(), $file->getTitle() );
+
+ $srcPath = $file->getLocalRefPath();
+ $ext = strtolower( pathinfo( "$srcPath", PATHINFO_EXTENSION ) );
+ $tmpFile = TempFSFile::factory( 'rotate_', $ext);
+ $dstPath = $tmpFile->getPath();
+ $err = $handler->rotate( $file, array(
+ "srcPath" => $srcPath,
+ "dstPath" => $dstPath,
+ "rotation"=> $rotation
+ ) );
+ if ( !$err ) {
+ $comment = wfMessage( 'rotate-comment' )->numParams( $rotation )->text();
+ $status = $file->upload( $dstPath,
+ $comment, $comment, 0, false, false, $this->getUser() );
+ if ( $status->isGood() ) {
+ $r['result'] = 'Success';
+ } else {
+ $r['result'] = 'Failure';
+ $r['errormessage'] = $this->getResult()->convertStatusToArray( $status );
+ }
+ } else {
+ $r['result'] = 'Failure';
+ $r['errormessage'] = $err->toText();
+ }
+ $result[] = $r;
+ }
+ $apiResult = $this->getResult();
+ $apiResult->setIndexedTagName( $result, 'page' );
+ $apiResult->addValue( null, $this->getModuleName(), $result );
+ }
+
+ /**
+ * Get a cached instance of an ApiPageSet object
+ * @return ApiPageSet
+ */
+ private function getPageSet() {
+ if ( $this->mPageSet === null ) {
+ $this->mPageSet = new ApiPageSet( $this, 0, NS_FILE);
+ }
+ return $this->mPageSet;
+ }
+
+ /**
+ * Checks that the user has permissions to perform rotations.
+ * Dies with usage message on inadequate permissions.
+ * @param $user User The user to check.
+ */
+ protected function checkPermissions( $user, $title ) {
+ $permissionErrors = array_merge(
+ $title->getUserPermissionsErrors( 'edit' , $user ),
+ $title->getUserPermissionsErrors( 'upload' , $user )
+ );
+
+ if ( $permissionErrors ) {
+ $this->dieUsageMsg( $permissionErrors[0] );
+ }
+ }
+
+ public function mustBePosted() {
+ return true;
+ }
+
+ public function isWriteMode() {
+ return true;
+ }
+
+ public function getAllowedParams( $flags = 0 ) {
+ $pageSet = $this->getPageSet();
+ $result = array(
+ 'rotation' => array(
+ ApiBase::PARAM_DFLT => 0,
+ ),
+ 'token' => array(
+ ApiBase::PARAM_TYPE => 'string',
+ ApiBase::PARAM_REQUIRED => true
+ ),
+ );
+ if ( $flags ) {
+ $result += $this->getPageSet()->getFinalParams( $flags );
+ }
+ return $result;
+ }
+
+ public function getParamDescription() {
+ $pageSet = $this->getPageSet();
+ return $pageSet->getParamDescription() + array(
+ 'rotation' => 'Degrees to rotate image, values can be 0, 90, 180 or 270',
+ 'token' => 'Edit token. You can get one of these through prop=info',
+ );
+ }
+
+ public function getDescription() {
+ return 'Rotate one or more images';
+ }
+
+ public function needsToken() {
+ return true;
+ }
+
+ public function getTokenSalt() {
+ return '';
+ }
+
+ public function getPossibleErrors() {
+ $pageSet = $this->getPageSet();
+ return array_merge(
+ parent::getPossibleErrors(),
+ $pageSet->getPossibleErrors()
+ );
+ }
+
+ public function getExamples() {
+ return array(
+ 'api.php?action=imagerotate&titles=Example.jpg&rotation=90&token=+\\',
+ );
+ }
+}
'import' => 'ApiImport',
'userrights' => 'ApiUserrights',
'options' => 'ApiOptions',
+ 'imagerotate' =>'ApiImageRotate',
);
/**
protected function getCredits() {
return array(
'API developers:',
- ' Roan Kattouw "<Firstname>.<Lastname>@gmail.com" (lead developer Sep 2007-present)',
+ ' Roan Kattouw "<Firstname>.<Lastname>@gmail.com" (lead developer Sep 2007-2009)',
' Victor Vasiliev - vasilvv at gee mail dot com',
' Bryan Tong Minh - bryan . tongminh @ gmail . com',
' Sam Reed - sam @ reedyboy . net',
- ' Yuri Astrakhan "<Firstname><Lastname>@gmail.com" (creator, lead developer Sep 2006-Sep 2007, 2012)',
+ ' Yuri Astrakhan "<Firstname><Lastname>@gmail.com" (creator, lead developer Sep 2006-Sep 2007, 2012-present)',
'',
'Please send your comments, suggestions and questions to mediawiki-api@lists.wikimedia.org',
'or file a bug report at https://bugzilla.wikimedia.org/'
* @param $class ApiFormatBase The class implementing this format.
*/
protected function addFormat( $name, $class ) {
- $this->getModuleManager->addModule( $name, 'format', $class );
+ $this->getModuleManager()->addModule( $name, 'format', $class );
}
/**
$validation = $field->validate( $value, $user->getOptions() );
break;
case 'registered-multiselect':
- // A key for a multiselect option.
+ case 'registered-checkmatrix':
+ // A key for a multiselect or checkmatrix option.
$validation = true;
$value = $value !== null ? (bool) $value : null;
break;
}
if ( !$titleObj ) {
// Handle invalid titles gracefully
- $this->mAllpages[0][$title] = $this->mFakePageId;
+ $this->mAllPages[0][$title] = $this->mFakePageId;
$this->mInvalidTitles[$this->mFakePageId] = $title;
$this->mFakePageId--;
continue; // There's nothing else we can do
$params = $this->extractRequestParams();
if ( is_null( $params['lang'] ) ) {
- global $wgLang;
- $langObj = $wgLang;
+ $langObj = $this->getLanguage();
} else {
$langObj = Language::factory( $params['lang'] );
}
}
if ( isset( $prop['thumbmime'] ) && $file->getHandler() ) {
- list( $ext, $mime ) = $file->getHandler()->getThumbType(
+ list( , $mime ) = $file->getHandler()->getThumbType(
$mto->getExtension(), $file->getMimeType(), $thumbParams );
$vals['thumbmime'] = $mime;
}
);
}
} else {
- list( $host, $lag, $index ) = $lb->getMaxLag();
+ list( , $lag, $index ) = $lb->getMaxLag();
$data[] = array(
'host' => $wgShowHostnames
? $lb->getServerName( $index )
if ( $this->fld_user || $this->fld_userid ) {
- if ( $this->fld_user ) {
- $vals['user'] = $row->rc_user_text;
- }
-
if ( $this->fld_userid ) {
+ $vals['userid'] = $row->rc_user;
+ // for backwards compatibility
$vals['user'] = $row->rc_user;
}
+ if ( $this->fld_user ) {
+ $vals['user'] = $row->rc_user_text;
+ }
+
if ( !$row->rc_user ) {
$vals['anon'] = '';
}
protected $connectTimeout; // string; connection timeout
protected $persistent; // bool; whether connections persist
protected $password; // string; plaintext auth password
- protected $poolSize; // integer; maximum number of idle connections
protected $serializer; // integer; the serializer to use (Redis::SERIALIZER_*)
protected $idlePoolSize = 0; // integer; current idle pool size
* Optional, default is 1 second.
* - persistent : Set this to true to allow connections to persist across
* multiple web requests. False by default.
- * - poolSize : Maximim number of idle connections. Default is 5.
* - password : The authentication password, will be sent to Redis in clear text.
* Optional, if it is unspecified, no AUTH command will be sent.
* - serializer : Set to "php" or "igbinary". Default is "php".
$this->connectTimeout = $options['connectTimeout'];
$this->persistent = $options['persistent'];
$this->password = $options['password'];
- $this->poolSize = $options['poolSize'];
if ( !isset( $options['serializer'] ) || $options['serializer'] === 'php' ) {
$this->serializer = Redis::SERIALIZER_PHP;
} elseif ( $options['serializer'] === 'igbinary' ) {
if ( !isset( $options['password'] ) ) {
$options['password'] = '';
}
- if ( !isset( $options['poolSize'] ) ) {
- $options['poolSize'] = 1;
- }
return $options;
}
public static function singleton( array $options ) {
$options = self::applyDefaultConfig( $options );
// Map the options to a unique hash...
- $poolOptions = $options;
- unset( $poolOptions['poolSize'] ); // avoid pool fragmentation
- ksort( $poolOptions ); // normalize to avoid pool fragmentation
- $id = sha1( serialize( $poolOptions ) );
+ ksort( $options ); // normalize to avoid pool fragmentation
+ $id = sha1( serialize( $options ) );
// Initialize the object at the hash as needed...
if ( !isset( self::$instances[$id] ) ) {
self::$instances[$id] = new self( $options );
wfDebug( "Creating a new " . __CLASS__ . " instance with id $id." );
}
- // Simply grow the pool size if the existing one is too small
- $psize = $options['poolSize']; // size requested
- self::$instances[$id]->poolSize = max( $psize, self::$instances[$id]->poolSize );
-
return self::$instances[$id];
}
* @return void
*/
protected function closeExcessIdleConections() {
- if ( $this->idlePoolSize <= $this->poolSize ) {
- return; // nothing to do
+ if ( $this->idlePoolSize <= count( $this->connections ) ) {
+ return; // nothing to do (no more connections than servers)
}
foreach ( $this->connections as $server => &$serverConnections ) {
foreach ( $serverConnections as $key => &$connection ) {
if ( $connection['free'] ) {
unset( $serverConnections[$key] );
- if ( --$this->idlePoolSize <= $this->poolSize ) {
- return; // done
+ if ( --$this->idlePoolSize <= count( $this->connections ) ) {
+ return; // done (no more connections than servers)
}
}
}
* @throws MWException
* @return Content a Content object representing $text
*
- * @throw MWException if $model or $format is not supported or if $text can
+ * @throws MWException if $model or $format is not supported or if $text can
* not be unserialized using $format.
*/
public static function makeContent( $text, Title $title = null,
wfSuppressWarnings();
foreach ( $handlers as $handler ) {
- $info = '';
-
if ( is_array( $handler ) ) {
if ( is_object( $handler[0] ) ) {
$info = get_class( $handler[0] );
# @todo: could implement this in DifferenceEngine and just delegate here?
- if ( !$lang ) $lang = $wgContLang;
+ if ( !$lang ) {
+ $lang = $wgContLang;
+ }
$otext = $this->getNativeData();
$ntext = $this->getNativeData();
# Note: Use native PHP diff, external engines don't give us abstract output
- $ota = explode( "\n", $wgContLang->segmentForDiff( $otext ) );
- $nta = explode( "\n", $wgContLang->segmentForDiff( $ntext ) );
+ $ota = explode( "\n", $lang->segmentForDiff( $otext ) );
+ $nta = explode( "\n", $lang->segmentForDiff( $ntext ) );
$diff = new Diff( $ota, $nta );
return $diff;
* This is list does not contain magic keywords like "$user"
* Needs transaction
*
- * @seealso getSearchPath()
- * @seealso setSearchPath()
+ * @see getSearchPath()
+ * @see setSearchPath()
* @since 1.19
* @return array list of actual schemas for the current sesson
*/
* @param string|null $functionName
*
* @return ORMResult The result set
- * @throw DBQueryError if the query failed (even if the database was in ignoreErrors mode)
+ * @throws DBQueryError if the query failed (even if the database was in ignoreErrors mode)
*/
public function select( $fields = null, array $conditions = array(),
array $options = array(), $functionName = null );
* @param null|string $functionName
*
* @return ResultWrapper
- * @throw DBQueryError if the query failed (even if the database was in ignoreErrors mode)
+ * @throws DBQueryError if the query failed (even if the database was in ignoreErrors mode)
*/
public function rawSelect( $fields = null, array $conditions = array(),
array $options = array(), $functionName = null );
'See DefaultSettings.php entry for $wgDBservers.' );
}
- $host = $server['host'];
- $dbname = $server['dbname'];
-
if ( $dbNameOverride !== false ) {
- $server['dbname'] = $dbname = $dbNameOverride;
+ $server['dbname'] = $dbNameOverride;
}
# Create object
if ( $relPath === null ) {
return null; // invalid
}
- list( $b, $shortCont, $r ) = FileBackend::splitStoragePath( $storagePath );
+ list( , $shortCont, ) = FileBackend::splitStoragePath( $storagePath );
$fsPath = $this->containerFSRoot( $shortCont, $fullCont ); // must be valid
if ( $relPath != '' ) {
$fsPath .= "/{$relPath}";
*/
protected function doPrepareInternal( $fullCont, $dirRel, array $params ) {
$status = Status::newGood();
- list( $b, $shortCont, $r ) = FileBackend::splitStoragePath( $params['dir'] );
+ list( , $shortCont, ) = FileBackend::splitStoragePath( $params['dir'] );
$contRoot = $this->containerFSRoot( $shortCont, $fullCont ); // must be valid
$dir = ( $dirRel != '' ) ? "{$contRoot}/{$dirRel}" : $contRoot;
$existed = is_dir( $dir ); // already there?
*/
protected function doSecureInternal( $fullCont, $dirRel, array $params ) {
$status = Status::newGood();
- list( $b, $shortCont, $r ) = FileBackend::splitStoragePath( $params['dir'] );
+ list( , $shortCont, ) = FileBackend::splitStoragePath( $params['dir'] );
$contRoot = $this->containerFSRoot( $shortCont, $fullCont ); // must be valid
$dir = ( $dirRel != '' ) ? "{$contRoot}/{$dirRel}" : $contRoot;
// Seed new directories with a blank index.html, to prevent crawling...
*/
protected function doPublishInternal( $fullCont, $dirRel, array $params ) {
$status = Status::newGood();
- list( $b, $shortCont, $r ) = FileBackend::splitStoragePath( $params['dir'] );
+ list( , $shortCont, ) = FileBackend::splitStoragePath( $params['dir'] );
$contRoot = $this->containerFSRoot( $shortCont, $fullCont ); // must be valid
$dir = ( $dirRel != '' ) ? "{$contRoot}/{$dirRel}" : $contRoot;
// Unseed new directories with a blank index.html, to allow crawling...
*/
protected function doCleanInternal( $fullCont, $dirRel, array $params ) {
$status = Status::newGood();
- list( $b, $shortCont, $r ) = FileBackend::splitStoragePath( $params['dir'] );
+ list( , $shortCont, ) = FileBackend::splitStoragePath( $params['dir'] );
$contRoot = $this->containerFSRoot( $shortCont, $fullCont ); // must be valid
$dir = ( $dirRel != '' ) ? "{$contRoot}/{$dirRel}" : $contRoot;
$this->trapWarnings();
* @return bool|null
*/
protected function doDirectoryExists( $fullCont, $dirRel, array $params ) {
- list( $b, $shortCont, $r ) = FileBackend::splitStoragePath( $params['dir'] );
+ list( , $shortCont, ) = FileBackend::splitStoragePath( $params['dir'] );
$contRoot = $this->containerFSRoot( $shortCont, $fullCont ); // must be valid
$dir = ( $dirRel != '' ) ? "{$contRoot}/{$dirRel}" : $contRoot;
* @return Array|null
*/
public function getDirectoryListInternal( $fullCont, $dirRel, array $params ) {
- list( $b, $shortCont, $r ) = FileBackend::splitStoragePath( $params['dir'] );
+ list( , $shortCont, ) = FileBackend::splitStoragePath( $params['dir'] );
$contRoot = $this->containerFSRoot( $shortCont, $fullCont ); // must be valid
$dir = ( $dirRel != '' ) ? "{$contRoot}/{$dirRel}" : $contRoot;
$exists = is_dir( $dir );
* @return Array|FSFileBackendFileList|null
*/
public function getFileListInternal( $fullCont, $dirRel, array $params ) {
- list( $b, $shortCont, $r ) = FileBackend::splitStoragePath( $params['dir'] );
+ list( , $shortCont, ) = FileBackend::splitStoragePath( $params['dir'] );
$contRoot = $this->containerFSRoot( $shortCont, $fullCont ); // must be valid
$dir = ( $dirRel != '' ) ? "{$contRoot}/{$dirRel}" : $contRoot;
$exists = is_dir( $dir );
*/
final public static function parentStoragePath( $storagePath ) {
$storagePath = dirname( $storagePath );
- list( $b, $cont, $rel ) = self::splitStoragePath( $storagePath );
+ list( , , $rel ) = self::splitStoragePath( $storagePath );
return ( $rel === null ) ? null : $storagePath;
}
* @return FileBackend|null Backend or null on failure
*/
public function backendFromPath( $storagePath ) {
- list( $backend, $c, $p ) = FileBackend::splitStoragePath( $storagePath );
+ list( $backend, , ) = FileBackend::splitStoragePath( $storagePath );
if ( $backend !== null && isset( $this->backends[$backend] ) ) {
return $this->get( $backend );
}
* @return bool Path container should have dir changes pushed to all backends
*/
protected function replicateContainerDirChanges( $path ) {
- list( $b, $shortCont, $r ) = self::splitStoragePath( $path );
+ list( , $shortCont, ) = self::splitStoragePath( $path );
return !in_array( $shortCont, $this->noPushDirConts );
}
$status->merge( $this->doPrepareInternal( $fullCont, $dir, $params ) );
} else { // directory is on several shards
wfDebug( __METHOD__ . ": iterating over all container shards.\n" );
- list( $b, $shortCont, $r ) = self::splitStoragePath( $params['dir'] );
+ list( , $shortCont, ) = self::splitStoragePath( $params['dir'] );
foreach ( $this->getContainerSuffixes( $shortCont ) as $suffix ) {
$status->merge( $this->doPrepareInternal( "{$fullCont}{$suffix}", $dir, $params ) );
}
$status->merge( $this->doSecureInternal( $fullCont, $dir, $params ) );
} else { // directory is on several shards
wfDebug( __METHOD__ . ": iterating over all container shards.\n" );
- list( $b, $shortCont, $r ) = self::splitStoragePath( $params['dir'] );
+ list( , $shortCont, ) = self::splitStoragePath( $params['dir'] );
foreach ( $this->getContainerSuffixes( $shortCont ) as $suffix ) {
$status->merge( $this->doSecureInternal( "{$fullCont}{$suffix}", $dir, $params ) );
}
$status->merge( $this->doPublishInternal( $fullCont, $dir, $params ) );
} else { // directory is on several shards
wfDebug( __METHOD__ . ": iterating over all container shards.\n" );
- list( $b, $shortCont, $r ) = self::splitStoragePath( $params['dir'] );
+ list( , $shortCont, ) = self::splitStoragePath( $params['dir'] );
foreach ( $this->getContainerSuffixes( $shortCont ) as $suffix ) {
$status->merge( $this->doPublishInternal( "{$fullCont}{$suffix}", $dir, $params ) );
}
$this->deleteContainerCache( $fullCont ); // purge cache
} else { // directory is on several shards
wfDebug( __METHOD__ . ": iterating over all container shards.\n" );
- list( $b, $shortCont, $r ) = self::splitStoragePath( $params['dir'] );
+ list( , $shortCont, ) = self::splitStoragePath( $params['dir'] );
foreach ( $this->getContainerSuffixes( $shortCont ) as $suffix ) {
$status->merge( $this->doCleanInternal( "{$fullCont}{$suffix}", $dir, $params ) );
$this->deleteContainerCache( "{$fullCont}{$suffix}" ); // purge cache
return $this->doDirectoryExists( $fullCont, $dir, $params );
} else { // directory is on several shards
wfDebug( __METHOD__ . ": iterating over all container shards.\n" );
- list( $b, $shortCont, $r ) = self::splitStoragePath( $params['dir'] );
+ list( , $shortCont, ) = self::splitStoragePath( $params['dir'] );
$res = false; // response
foreach ( $this->getContainerSuffixes( $shortCont ) as $suffix ) {
$exists = $this->doDirectoryExists( "{$fullCont}{$suffix}", $dir, $params );
} else {
wfDebug( __METHOD__ . ": iterating over all container shards.\n" );
// File listing spans multiple containers/shards
- list( $b, $shortCont, $r ) = self::splitStoragePath( $params['dir'] );
+ list( , $shortCont, ) = self::splitStoragePath( $params['dir'] );
return new FileBackendStoreShardDirIterator( $this,
$fullCont, $dir, $this->getContainerSuffixes( $shortCont ), $params );
}
} else {
wfDebug( __METHOD__ . ": iterating over all container shards.\n" );
// File listing spans multiple containers/shards
- list( $b, $shortCont, $r ) = self::splitStoragePath( $params['dir'] );
+ list( , $shortCont, ) = self::splitStoragePath( $params['dir'] );
return new FileBackendStoreShardFileIterator( $this,
$fullCont, $dir, $this->getContainerSuffixes( $shortCont ), $params );
}
final public function preloadCache( array $paths ) {
$fullConts = array(); // full container names
foreach ( $paths as $path ) {
- list( $fullCont, $r, $s ) = $this->resolveStoragePath( $path );
+ list( $fullCont, , ) = $this->resolveStoragePath( $path );
$fullConts[] = $fullCont;
}
// Load from the persistent file and container caches
* @return bool
*/
final public function isSingleShardPathInternal( $storagePath ) {
- list( $c, $r, $shard ) = $this->resolveStoragePath( $storagePath );
+ list( , , $shard ) = $this->resolveStoragePath( $storagePath );
return ( $shard !== null );
}
}
// Get all the corresponding cache keys for paths...
foreach ( $paths as $path ) {
- list( $fullCont, $r, $s ) = $this->resolveStoragePath( $path );
+ list( $fullCont, , ) = $this->resolveStoragePath( $path );
if ( $fullCont !== null ) { // valid path for this backend
$contNames[$this->containerCacheKey( $fullCont )] = $fullCont;
}
$paths = array_filter( $paths, 'strlen' ); // remove nulls
// Get all the corresponding cache keys for paths...
foreach ( $paths as $path ) {
- list( $cont, $rel, $s ) = $this->resolveStoragePath( $path );
+ list( , $rel, ) = $this->resolveStoragePath( $path );
if ( $rel !== null ) { // valid path for this backend
$pathNames[$this->fileCacheKey( $path )] = $path;
}
// (a) Check if container already exists
try {
- $contObj = $this->getContainer( $fullCont );
+ $this->getContainer( $fullCont );
// NoSuchContainerException not thrown: container must exist
return $status; // already exists
} catch ( NoSuchContainerException $e ) {
try {
$sContObj = $this->getContainer( $srcCont );
$obj = new CF_Object( $sContObj, $srcRel, false, false ); // skip HEAD
- // Get source file extension
- $ext = FileBackend::extensionFromPath( $path );
// Create a new temporary memory file...
$handle = fopen( 'php://temp', 'wb' );
if ( $handle ) {
$date = gmdate( "YmdHis" );
$hashPath = $this->getHashPath( $originalName );
- $dstRel = "{$hashPath}{$date}!{$originalName}";
$dstUrlRel = $hashPath . $date . '!' . rawurlencode( $originalName );
$virtualUrl = $this->getVirtualUrl( 'temp' ) . '/' . $dstUrlRel;
$operations = array();
$sourceFSFilesToDelete = array(); // cleanup for disk source files
// Validate each triplet and get the store operation...
- foreach ( $ntuples as $i => $ntuple ) {
+ foreach ( $ntuples as $ntuple ) {
list( $srcPath, $dstRel, $archiveRel ) = $ntuple;
$options = isset( $ntuple[3] ) ? $ntuple[3] : array();
// Resolve source to a storage path if virtual
$status->merge( $backend->doOperations( $operations ) );
// Find out which files were archived...
foreach ( $ntuples as $i => $ntuple ) {
- list( $srcPath, $dstRel, $archiveRel ) = $ntuple;
+ list( , , $archiveRel ) = $ntuple;
$archivePath = $this->getZonePath( 'public' ) . "/$archiveRel";
if ( $this->fileExists( $archivePath ) ) {
$status->value[$i] = 'archived';
*/
protected function initDirectory( $dir ) {
$path = $this->resolveToStoragePath( $dir );
- list( $b, $container, $r ) = FileBackend::splitStoragePath( $path );
+ list( , $container, ) = FileBackend::splitStoragePath( $path );
$params = array( 'dir' => $path );
if ( $this->isPrivate || $container === $this->zones['deleted']['container'] ) {
* RTT regression for wikis without 404 handling.
*/
function migrateThumbFile( $thumbName ) {
- $thumbDir = $this->getThumbPath();
-
/* Old code for bug 2532
+ $thumbDir = $this->getThumbPath();
$thumbPath = "$thumbDir/$thumbName";
if ( is_dir( $thumbPath ) ) {
// Directory where file should be
$this->file->lock();
// Leave private files alone
$privateFiles = array();
- list( $oldRels, $deleteCurrent ) = $this->getOldRels();
+ list( $oldRels, ) = $this->getOldRels();
$dbw = $this->file->repo->getMasterDB();
if ( !empty( $oldRels ) ) {
$files = $newBatch = array();
foreach ( $batch as $batchItem ) {
- list( $src, $dest ) = $batchItem;
+ list( $src, ) = $batchItem;
$files[$src] = $this->file->repo->getVirtualUrl( 'public' ) . '/' . rawurlencode( $src );
}
$func = $funcList[0];
$arg = $funcList[1];
$origParams = $funcList[2];
- $ret = call_user_func_array( $func, $arg );
+ call_user_func_array( $func, $arg );
flush();
$this->updatesSkipped[] = $origParams;
}
* @author Calak
*/
$messages['ckb'] = array(
+ 'config-wiki-language' => 'زمانی ویکی:',
+ 'config-page-language' => 'زمان',
+ 'config-page-name' => 'ناو',
'mainpagetext' => "'''میدیاویکی بە سەرکەوتوویی دامەزرا.'''",
'mainpagedocfooter' => 'لە [//meta.wikimedia.org/wiki/Help:Contents ڕێنوێنیی بەکارھێنەران] بۆ زانیاری سەبارەت بە بەکارھێنانی نەرمامێری ویکی کەڵک وەربگرە.
If you run a high-traffic site, you should read a little on [//www.mediawiki.org/wiki/Unicode_normalization_considerations Unicode normalisation].",
'config-unicode-update-warning' => "'''Warning:''' The installed version of the Unicode normalisation wrapper uses an older version of [http://site.icu-project.org/ the ICU project's] library.
You should [//www.mediawiki.org/wiki/Unicode_normalization_considerations upgrade] if you are at all concerned about using Unicode.",
+ 'config-unknown-collation' => "'''Warning:''' Database is using unrecognised collation.",
'config-profile-fishbowl' => 'Authorised editors only',
'config-install-stats' => 'Initialising statistics',
);
$3
-'''注意''': この生成された設定ファイルをダウンロードせずにインストールを終了すると、このファイルは利用できなくなります。
+'''注意:''' この生成された設定ファイルをダウンロードせずにインストールを終了すると、このファイルは利用できなくなります。
上記の作業が完了すると、'''[$2 ウィキに入る]'''ことができます。",
'config-download-localsettings' => '<code>LocalSettings.php</code> をダウンロード',
* @author පසිඳු කාවින්ද
*/
$messages['yi'] = array(
+ 'config-desc' => 'דער אינסטאלירער פאר מעדיעוויקי',
+ 'config-title' => 'מעדיעוויקי $1 אינסטאלירונג',
'config-information' => 'אינפֿארמאציע',
+ 'config-wiki-language' => 'ווקי שפראך:',
'config-back' => '→ צוריק',
'config-continue' => 'פֿארזעצן ←',
'config-page-language' => 'שפראַך',
continue;
}
- list( $all, $lang, $territory, $charset, $modifier ) = $m;
+ list( , $lang, , , ) = $m;
$candidatesByLocale[$m[0]] = $m;
$candidatesByLang[$lang][] = $m;
protected function __construct( array $params ) {
$this->wiki = $params['wiki'];
$this->type = $params['type'];
- $this->order = isset( $params['order'] ) ? $params['order'] : 'random';
$this->claimTTL = isset( $params['claimTTL'] ) ? $params['claimTTL'] : 0;
$this->maxTries = isset( $params['maxTries'] ) ? $params['maxTries'] : 3;
+ if ( isset( $params['order'] ) && $params['order'] !== 'any' ) {
+ $this->order = $params['order'];
+ } else {
+ $this->order = $this->optimalOrder();
+ }
+ if ( !in_array( $this->order, $this->supportedOrders() ) ) {
+ throw new MWException( __CLASS__ . " does not support '{$this->order}' order." );
+ }
}
/**
* job runners since jobs can take different times to finish once popped.
* If "timestamp" is used, the queue will at least be loosely ordered
* by timestamp, allowing for some jobs to be popped off out of order.
- * If "random" is used, pop() will pick jobs in random order. This might be
- * useful for improving concurrency depending on the queue storage medium.
- * Note that "random" really means "don't care", so it may actually be FIFO
- * or only weakly random (e.g. pop() takes one of the first X jobs randomly).
+ * If "random" is used, pop() will pick jobs in random order.
+ * Note that it may only be weakly random (e.g. a lottery of the oldest X).
+ * If "any" is choosen, the queue will use whatever order is the fastest.
+ * This might be useful for improving concurrency for job acquisition.
* - claimTTL : If supported, the queue will recycle jobs that have been popped
* but not acknowledged as completed after this many seconds. Recycling
* of jobs simple means re-inserting them into the queue. Jobs can be
return $this->type;
}
+ /**
+ * @return string One of (random, timestamp, fifo)
+ */
+ final public function getOrder() {
+ return $this->order;
+ }
+
+ /**
+ * @return Array Subset of (random, timestamp, fifo)
+ */
+ abstract protected function supportedOrders();
+
+ /**
+ * @return string One of (random, timestamp, fifo)
+ */
+ abstract protected function optimalOrder();
+
/**
* Quickly check if the queue is empty (has no available jobs).
* Queue classes should use caching if they are any slower without memcached.
*
+ * If caching is used, this might return false when there are actually no jobs.
+ * If pop() is called and returns false then it should correct the cache. Also,
+ * calling flushCaches() first prevents this. However, this affect is typically
+ * not distinguishable from the race condition between isEmpty() and pop().
+ *
* @return bool
* @throws MWException
*/
abstract protected function doIsEmpty();
/**
- * Get the number of available jobs in the queue.
+ * Get the number of available (unacquired) jobs in the queue.
* Queue classes should use caching if they are any slower without memcached.
*
+ * If caching is used, this number might be out of date for a minute.
+ *
* @return integer
* @throws MWException
*/
* Get the number of acquired jobs (these are temporarily out of the queue).
* Queue classes should use caching if they are any slower without memcached.
*
+ * If caching is used, this number might be out of date for a minute.
+ *
* @return integer
* @throws MWException
*/
if ( !count( $jobs ) ) {
return true; // nothing to do
}
+
foreach ( $jobs as $job ) {
if ( $job->getType() !== $this->type ) {
throw new MWException( "Got '{$job->getType()}' job; expected '{$this->type}'." );
*/
protected function doFlushCaches() {}
+ /**
+ * Get an iterator to traverse over all of the jobs in this queue.
+ * This does not include jobs that are current acquired. In general,
+ * this should only be called on a queue that is no longer being popped.
+ *
+ * @return Iterator|Traversable|Array
+ * @throws MWException
+ */
+ abstract public function getAllQueuedJobs();
+
/**
* Namespace the queue with a key to isolate it for testing
*
$this->cluster = isset( $params['cluster'] ) ? $params['cluster'] : false;
}
+ protected function supportedOrders() {
+ return array( 'random', 'timestamp', 'fifo' );
+ }
+
+ protected function optimalOrder() {
+ return 'random';
+ }
+
/**
* @see JobQueue::doIsEmpty()
* @return bool
}
}
+ /**
+ * @see JobQueue::getAllQueuedJobs()
+ * @return Iterator
+ */
+ public function getAllQueuedJobs() {
+ list( $dbr, $scope ) = $this->getSlaveDB();
+ return new MappedIterator(
+ $dbr->select( 'job', '*', array( 'job_cmd' => $this->getType(), 'job_token' => '' ) ),
+ function( $row ) use ( $scope ) {
+ $job = Job::factory(
+ $row->job_cmd,
+ Title::makeTitle( $row->job_namespace, $row->job_title ),
+ strlen( $row->job_params ) ? unserialize( $row->job_params ) : false,
+ $row->job_id
+ );
+ $job->id = $row->job_id; // XXX: work around broken subclasses
+ return $job;
+ }
+ );
+ }
+
/**
* @return Array (DatabaseBase, ScopedCallback)
*/
$this->redisPool = RedisConnectionPool::singleton( $params['redisConfig'] );
}
+ protected function supportedOrders() {
+ return array( 'timestamp', 'fifo' );
+ }
+
+ protected function optimalOrder() {
+ return 'fifo';
+ }
+
/**
* @see JobQueue::doIsEmpty()
* @return bool
return ( $timestamp && $timestamp > $params['rootJobTimestamp'] );
}
+ /**
+ * @see JobQueue::getAllQueuedJobs()
+ * @return Iterator
+ */
+ public function getAllQueuedJobs() {
+ $conn = $this->getConnection();
+ if ( !$conn ) {
+ throw new MWException( "Unable to connect to redis server." );
+ }
+ try {
+ $that = $this;
+ return new MappedIterator(
+ $conn->lRange( $this->getQueueKey( 'l-unclaimed' ), 0, -1 ),
+ function( $uid ) use ( $that, $conn ) {
+ return $that->getJobFromUidInternal( $uid, $conn );
+ }
+ );
+ } catch ( RedisException $e ) {
+ $this->throwRedisException( $this->server, $conn, $e );
+ }
+ }
+
+ /**
+ * This function should not be called outside RedisJobQueue
+ *
+ * @param $uid string
+ * @param $conn RedisConnRef
+ * @return Job
+ * @throws MWException
+ */
+ public function getJobFromUidInternal( $uid, RedisConnRef $conn ) {
+ try {
+ $fields = $conn->get( $this->prefixWithQueueKey( 'data', $uid ) );
+ if ( !is_array( $fields ) ) { // wtf?
+ $conn->delete( $this->prefixWithQueueKey( 'data', $uid ) );
+ throw new MWException( "Could not find job with UID '$uid'." );
+ }
+ $title = Title::makeTitle( $fields['namespace'], $fields['title'] );
+ $job = Job::factory( $fields['type'], $title, $fields['params'] );
+ $job->metadata['sourceFields'] = $fields;
+ return $job;
+ } catch ( RedisException $e ) {
+ $this->throwRedisException( $this->server, $conn, $e );
+ }
+ }
+
/**
* Recycle or destroy any jobs that have been claimed for too long
*
\section intro Introduction
The data model consist of the following main components:
-
* The Job object represents a particular deferred task that happens in the
background. All jobs subclass the Job object and put the main logic in the
function called run().
For example there may be a queue for email jobs and a queue for squid purge
jobs.
+\section jobqueue Job queues
+
Each job type has its own queue and is associated to a storage medium. One
queue might save its jobs in redis while another one uses would use a database.
The following queue classes are available:
* JobQueueDB (stores jobs in the `job` table in a database)
+* JobQueueRedis (stores jobs in a redis server)
All queue classes support some basic operations (though some may be no-ops):
* enqueueing a batch of jobs
lost. Some jobs, like purging squid caches after a template change, may not
require durable queues, whereas other jobs might be more important.
+\section aggregator Job queue aggregator
+
+The aggregators are used by nextJobDB.php, which is a script that will return a
+random ready queue (on any wiki in the farm) that can be used with runJobs.php.
+This can be used in conjuction with any scripts that handle wiki farm job queues.
+Note that $wgLocalDatabases defines what wikis are in the wiki farm.
+
+Since each job type has its own queue, and wiki-farms may have many wikis,
+there might be a large number of queues to keep track of. To avoid wasting
+large amounts of time polling empty queues, aggregators exists to keep track
+of which queues are ready.
+
+The following queue aggregator classes are available:
+* JobQueueAggregatorMemc (uses $wgMemc to track ready queues)
+* JobQueueAggregatorRedis (uses a redis server to track ready queues)
+
+Some aggregators cache data for a few minutes while others may be always up to date.
+This can be an important factor for jobs that need a low pickup time (or latency).
+
+\section jobs Jobs
+
Callers should also try to make jobs maintain correctness when executed twice.
This is useful for queues that actually implement ack(), since they may recycle
dequeued but un-acknowledged jobs back into the queue to be attempted again. If
*
* @param $titleArray array
* @param $rootJobParams array
- * @rerturn void
+ * @return void
*/
protected function insertJobsFromTitles( $titleArray, $rootJobParams = array() ) {
// Carry over any "root job" information
else
ulimit -v "$MW_MEM_LIMIT"
fi
+else
+ MW_CGROUP=""
fi
if [ "$MW_FILE_SIZE_LIMIT" -gt 0 ]; then
ulimit -f "$MW_FILE_SIZE_LIMIT"
$formatter->setContext( $this->getContext() );
$formatter->setShowUserToolLinks( !( $this->flags & self::NO_EXTRA_USER_LINKS ) );
- $title = $entry->getTarget();
$time = htmlspecialchars( $this->getLanguage()->userTimeAndDate(
$entry->getTimestamp(), $this->getUser() ) );
// Filter out parameters which are not in format #:foo
foreach ( $entry->getParameters() as $key => $value ) {
- if ( strpos( $key, ':' ) === false ) continue;
- list( $index, $type, $name ) = explode( ':', $key, 3 );
+ if ( strpos( $key, ':' ) === false ) {
+ continue;
+ }
+ list( $index, $type, ) = explode( ':', $key, 3 );
$params[$index - 1] = $this->formatParameterValue( $type, $value );
}
*/
var $target;
- /* @acess public */
+ /* @access public */
var $updateRecentChanges, $sendToUDP;
/**
# Escape glob chars
$path = preg_replace( '/[*?\[\]{}]/', '\\\\\0', $path );
- return $this->escapeMagickPath( $path, $scene );
+ return self::escapeMagickPath( $path, $scene );
}
/**
*/
function escapeMagickOutput( $path, $scene = false ) {
$path = str_replace( '%', '%%', $path );
- return $this->escapeMagickPath( $path, $scene );
+ return self::escapeMagickPath( $path, $scene );
}
/**
}
}
+ /**
+ * @param $file File
+ * @param $params array Rotate parameters.
+ * 'rotation' clockwise rotation in degrees, allowed are multiples of 90
+ * @since 1.21
+ * @return bool
+ */
+ public static function rotate( $file, $params ) {
+ global $wgImageMagickConvertCommand;
+
+ $rotation = ( $params[ 'rotation' ] + self::getRotation( $file ) ) % 360;
+ $scene = false;
+
+ $scaler = self::getScalerType( null, false );
+ switch ( $scaler ) {
+ case 'im':
+ $cmd = wfEscapeShellArg( $wgImageMagickConvertCommand ) . " " .
+ wfEscapeShellArg( self::escapeMagickInput( $params[ 'srcPath' ], $scene ) ) .
+ " -rotate -$rotation " .
+ wfEscapeShellArg( self::escapeMagickOutput( $params[ 'dstPath' ] ) ) . " 2>&1";
+ wfDebug( __METHOD__ . ": running ImageMagick: $cmd\n" );
+ wfProfileIn( 'convert' );
+ $retval = 0;
+ $err = wfShellExec( $cmd, $retval, $env );
+ wfProfileOut( 'convert' );
+ if ( $retval !== 0 ) {
+ self::logErrorForExternalProcess( $retval, $err, $cmd );
+ return new MediaTransformError( 'thumbnail_error', 0, 0, $err );
+ }
+ return false;
+ case 'imext':
+ $im = new Imagick();
+ $im->readImage( $params['srcPath'] );
+ if ( !$im->rotateImage( new ImagickPixel( 'white' ), 360 - $rotation ) ) {
+ return new MediaTransformError( 'thumbnail_error', 0, 0,
+ "Error rotating $rotation degrees" );
+ }
+ $result = $im->writeImage( $params['dstPath'] );
+ if ( !$result ) {
+ return new MediaTransformError( 'thumbnail_error', 0, 0,
+ "Unable to write image to {$params['dstPath']}" );
+ }
+ return false;
+ default:
+ return new MediaTransformError( 'thumbnail_error', 0, 0,
+ "$scaler rotation not implemented" );
+ }
+ }
+
/**
* Rerurns whether the file needs to be rendered. Returns true if the
* file requires rotation and we are able to rotate it.
}
$data = $file->getMetadata();
- return $this->getRotationForExif( $data );
+ return self::getRotationForExif( $data );
}
/**
}
}
+ /**
+ * @param $file File
+ * @param $params array Rotate parameters.
+ * 'rotation' clockwise rotation in degrees, allowed are multiples of 90
+ * @since 1.21
+ * @return bool
+ */
+ public static function rotate( $file, $params ) {
+ global $wgJpegTran;
+
+ $rotation = ( $params[ 'rotation' ] + self::getRotation( $file ) ) % 360;
+
+ if( $wgJpegTran && is_file( $wgJpegTran ) ){
+ $cmd = wfEscapeShellArg( $wgJpegTran ) .
+ " -rotate " . wfEscapeShellArg( $rotation ) .
+ " -outfile " . wfEscapeShellArg( $params[ 'dstPath' ] ) .
+ " " . wfEscapeShellArg( $params[ 'srcPath' ] ) . " 2>&1";
+ wfDebug( __METHOD__ . ": running jpgtran: $cmd\n" );
+ wfProfileIn( 'jpegtran' );
+ $retval = 0;
+ $err = wfShellExec( $cmd, $retval, $env );
+ wfProfileOut( 'jpegtran' );
+ if ( $retval !== 0 ) {
+ self::logErrorForExternalProcess( $retval, $err, $cmd );
+ return new MediaTransformError( 'thumbnail_error', 0, 0, $err );
+ }
+ return false;
+ } else {
+ return Bitmap::rotate( $file, $params );
+ }
+ }
+
}
public function filterThumbnailPurgeList( &$files, $options ) {
// Do nothing
}
+
+ /*
+ * True if the handler can rotate the media
+ * @since 1.21
+ * @return bool
+ */
+ public static function canRotate() {
+ return false;
+ }
}
# Insert failed, check to see if it failed due to an expired key
if ( !$ret ) {
- list( $value, $expiry ) = $this->decode( dba_fetch( $key, $handle ) );
+ list( , $expiry ) = $this->decode( dba_fetch( $key, $handle ) );
if ( $expiry && $expiry < time() ) {
# Yes expired, delete and try again
$i = 0;
while ( $i<count( $bits ) ) {
$url = $bits[$i++];
- // @todo FIXME: Unused variable.
- $protocol = $bits[$i++];
+ $i++; // protocol
$text = $bits[$i++];
$trail = $bits[$i++];
$output = call_user_func_array( $this->mTagHooks[$name],
array( $content, $attributes, $this, $frame ) );
} elseif ( isset( $this->mFunctionTagHooks[$name] ) ) {
- list( $callback, $flags ) = $this->mFunctionTagHooks[$name];
+ list( $callback, ) = $this->mFunctionTagHooks[$name];
if ( !is_callable( $callback ) ) {
throw new MWException( "Tag hook for $name is not callable\n" );
}
}
}
+ protected function getGroupName() {
+ return 'users';
+ }
}
}
+ protected function getGroupName() {
+ return 'wiki';
+ }
}
/**
return null;
}
}
+
+ protected function getGroupName() {
+ return 'pages';
+ }
}
);
return $this->getLanguage()->specialList( $link, htmlspecialchars( $d ) );
}
+
+ protected function getGroupName() {
+ return 'maintenance';
+ }
}
$out->setPageTitle( $this->msg( 'blockipsuccesssub' ) );
$out->addWikiMsg( 'blockipsuccesstext', wfEscapeWikiText( $this->target ) );
}
+
+ protected function getGroupName() {
+ return 'users';
+ }
}
# BC @since 1.18
$out->addHTML( Html::rawElement( 'ul', array( 'class' => 'mw-ipblocklist-otherblocks' ), $list ) . "\n" );
}
}
+
+ protected function getGroupName() {
+ return 'users';
+ }
}
class BlockListPager extends TablePager {
$this->getOutput()->addWikiMsg( 'proxyblocksuccess' );
}
+
+ protected function getGroupName() {
+ return 'other';
+ }
}
$url = str_replace( '$1', $this->isbn, $url );
return '<li><a href="' . htmlspecialchars( $url ) . '" class="external">' . htmlspecialchars( $label ) . '</a></li>';
}
+
+ protected function getGroupName() {
+ return 'other';
+ }
}
$out .= " {$arr} {$to}";
return $out;
}
+
+ protected function getGroupName() {
+ return 'maintenance';
+ }
}
Html::closeElement( 'div' )
);
}
+
+ protected function getGroupName() {
+ return 'pages';
+ }
}
/**
return $status->value;
}
+
+ protected function getGroupName() {
+ return 'users';
+ }
}
$user->saveSettings();
}
+
+ protected function getGroupName() {
+ return 'users';
+ }
}
}
return true;
}
+
+ protected function getGroupName() {
+ return 'pagetools';
+ }
}
Xml::closeElement( 'form' );
return $form;
}
+
+ protected function getGroupName() {
+ return 'users';
+ }
}
/**
$result = array();
// loop all results and collect them in an array
- foreach ( $data as $j => $query ) {
+ foreach ( $data as $query ) {
foreach ( $query as $i => $row ) {
// use index column as key, allowing us to easily sort in PHP
$result[$row->{$this->getIndexField()} . "-$i"] = $row;
return array( 'page_title' );
}
}
+
+ protected function getGroupName() {
+ return 'maintenance';
+ }
}
Xml::closeElement( 'form' );
return $f;
}
+
+ protected function getGroupName() {
+ return 'users';
+ }
}
return "$from $edit $arr $to";
}
+
+ protected function getGroupName() {
+ return 'pages';
+ }
}
return( "{$linkA} {$edit} {$arr} {$linkB} {$arr} {$linkC}" );
}
+
+ protected function getGroupName() {
+ return 'maintenance';
+ }
}
return $status;
}
}
+
+ protected function getGroupName() {
+ return 'users';
+ }
}
return $pageSet;
}
+ protected function getGroupName() {
+ return 'pagetools';
+ }
}
return $this->getLanguage()->specialList( $plink, $nlink );
}
+
+ protected function getGroupName() {
+ return 'maintenance';
+ }
}
return "$plink . . $user . . $time";
}
+
+ protected function getGroupName() {
+ return 'media';
+ }
}
Html::closeElement( 'form' )
);
}
+
+ protected function getGroupName() {
+ return 'media';
+ }
}
);
}
}
+
+ protected function getGroupName() {
+ return 'pagetools';
+ }
}
/**
// $wgJavaScriptTestConfig in DefaultSettings.php
$out->addJsConfigVars( 'QUnitTestSwarmInjectJSPath', $wgJavaScriptTestConfig['qunit']['testswarm-injectjs'] );
}
+
+ protected function getGroupName() {
+ return 'other';
+ }
}
function getOrderFields() {
return array();
}
+
+ protected function getGroupName() {
+ return 'redirects';
+ }
}
}
$this->getOutput()->addHTML( $html );
}
+
+ protected function getGroupName() {
+ return 'media';
+ }
}
/**
return '<ul><li>' . implode( "</li>\n<li>", $r ) . '</li></ul>';
}
}
+
+ protected function getGroupName() {
+ return 'users';
+ }
}
return "<del>$rd_link</del>";
}
}
+
+ protected function getGroupName() {
+ return 'pages';
+ }
}
$this->getOutput()->addHTML( $s );
}
+
+ protected function getGroupName() {
+ return 'users';
+ }
}
$out->addSubtitle( $this->msg( 'lockdbsuccesssub' ) );
$out->addWikiMsg( 'lockdbsuccesstext' );
}
+
+ protected function getGroupName() {
+ return 'wiki';
+ }
}
$this->getOutput()->addHTML( $page->getDescription()->parseAsBlock() );
}
+ protected function getGroupName() {
+ return 'changes';
+ }
}
return array( 'page_title' );
}
}
+
+ protected function getGroupName() {
+ return 'maintenance';
+ }
}
function sortDescending() {
return true;
}
+
+ protected function getGroupName() {
+ return 'maintenance';
+ }
}
);
return in_array( $type, $types );
}
+
+ protected function getGroupName() {
+ return 'media';
+ }
}
return true;
}
+
+ protected function getGroupName() {
+ return 'pagetools';
+ }
}
class MergeHistoryPager extends ReverseChronologicalPager {
return $this->getLanguage()->specialList( $link, $count );
}
+
+ protected function getGroupName() {
+ return 'highuse';
+ }
}
return $this->msg( 'nimagelinks' )->numParams( $row->value )->escaped() . '<br />';
}
+ protected function getGroupName() {
+ return 'highuse';
+ }
}
return $this->getLanguage()->specialList( $link, $count );
}
+
+ protected function getGroupName() {
+ return 'highuse';
+ }
}
$this->msg( 'nlinks' )->numParams( $result->value )->escaped() );
return $this->getLanguage()->specialList( $link, $wlh );
}
+
+ protected function getGroupName() {
+ return 'highuse';
+ }
}
$nlinks = $this->msg( 'nmembers' )->numParams( $result->value )->escaped();
return $this->getLanguage()->specialList( $plink, $nlinks );
}
+
+ protected function getGroupName() {
+ return 'highuse';
+ }
}
$label = $this->msg( 'ntransclusions' )->numParams( $result->value )->escaped();
return Linker::link( $wlh, $label );
}
+
+ protected function getGroupName() {
+ return 'highuse';
+ }
}
function sortDescending() {
return true;
}
+
+ protected function getGroupName() {
+ return 'highuse';
+ }
}
}
$out->addHTML( "</ul>\n" );
}
+
+ protected function getGroupName() {
+ return 'pagetools';
+ }
}
$this->getOutput()->addHTML( $pager->getNavigationBar() );
}
}
+
+ protected function getGroupName() {
+ return 'changes';
+ }
}
/**
}
return '';
}
+
+ protected function getGroupName() {
+ return 'changes';
+ }
}
/**
}
return $ret;
}
+
+ protected function getGroupName() {
+ return 'pages';
+ }
}
return false;
}
+
+ protected function getGroupName() {
+ return 'users';
+ }
}
$nv = $this->msg( 'nviews' )->numParams( $result->value )->escaped();
return $this->getLanguage()->specialList( $link, $nv );
}
+
+ protected function getGroupName() {
+ return 'wiki';
+ }
}
return true;
}
+
+ protected function getGroupName() {
+ return 'users';
+ }
}
$this->getOutput()->addHTML( $out2 . $out . $footer );
}
+
+ protected function getGroupName() {
+ return 'pages';
+ }
}
array( 'id' => $this->IdLevel, 'name' => $this->IdLevel ),
implode( "\n", $options ) ) . "</span>";
}
+
+ protected function getGroupName() {
+ return 'maintenance';
+ }
}
/**
array( 'id' => $this->IdLevel, 'name' => $this->IdLevel ),
implode( "\n", $options ) );
}
+
+ protected function getGroupName() {
+ return 'maintenance';
+ }
}
/**
return $dbr->fetchObject( $res );
}
+
+ protected function getGroupName() {
+ return 'redirects';
+ }
}
'mediawiki.special.recentchanges',
) );
}
+
+ protected function getGroupName() {
+ return 'changes';
+ }
}
array( 'value' => $bitfield, 'comment' => $reason )
);
}
+
+ protected function getGroupName() {
+ return 'pagetools';
+ }
}
$this->extraParams[$key] = $value;
}
+ protected function getGroupName() {
+ return 'redirects';
+ }
}
? "${hlinkInParentheses} {$dm}{$plink} {$dm}[{$size}]"
: "<del>${hlinkInParentheses} {$dm}{$plink} {$dm}[{$size}]</del>";
}
+
+ protected function getGroupName() {
+ return 'maintenance';
+ }
}
$groups = array();
foreach ( $pages as $page ) {
if ( $page->isListed() ) {
- $group = SpecialPageFactory::getGroup( $page );
+ $group = $page->getFinalGroupName();
if( !isset( $groups[$group] ) ) {
$groups[$group] = array();
}
Xml::tags( 'th', array( 'colspan' => '2' ), $this->msg( $header )->parse() ) .
Xml::closeElement( 'tr' );
}
+
+ protected function getGroupName() {
+ return 'wiki';
+ }
}
return Xml::tags( 'tr', null, $newRow ) . "\n";
}
+
+ protected function getGroupName() {
+ return 'changes';
+ }
}
return true;
}
+
+ protected function getGroupName() {
+ return 'users';
+ }
}
);
}
+ protected function getGroupName() {
+ return 'maintenance';
+ }
}
return array( 'page_namespace', 'page_title' );
return array( 'page_title' );
}
+
+ protected function getGroupName() {
+ return 'maintenance';
+ }
}
$makepage = false;
# Page already exists. Import the history, and if necessary
# we'll update the latest revision field in the record.
- $newid = 0;
- $pageId = $page->page_id;
+
$previousRevId = $page->page_latest;
+
# Get the time span of this page
$previousTimestamp = $dbw->selectField( 'revision', 'rev_timestamp',
array( 'rev_id' => $previousRevId ),
$revision = Revision::newFromArchiveRow( $row,
array(
'title' => $article->getTitle(), // used to derive default content model
- ) );
-
- $m = $revision->getContentModel();
-
+ )
+ );
$user = User::newFromName( $revision->getRawUserText(), false );
$content = $revision->getContent( Revision::RAW );
$out->addWikiText( '<div class="error">' . $status->getWikiText( 'undelete-error-short', 'undelete-error-long' ) . '</div>' );
}
}
+
+ protected function getGroupName() {
+ return 'pagetools';
+ }
}
$out->addSubtitle( $this->msg( 'unlockdbsuccesssub' ) );
$out->addWikiMsg( 'unlockdbsuccesstext' );
}
+
+ protected function getGroupName() {
+ return 'wiki';
+ }
}
$title = Title::makeTitle( NS_CATEGORY, $result->title );
return Linker::link( $title, htmlspecialchars( $title->getText() ) );
}
+
+ protected function getGroupName() {
+ return 'maintenance';
+ }
}
return $this->msg( 'unusedimagestext' )->parseAsBlock();
}
+ protected function getGroupName() {
+ return 'maintenance';
+ }
}
function getPageHeader() {
return $this->msg( 'unusedtemplatestext' )->parseAsBlock();
}
+
+ protected function getGroupName() {
+ return 'maintenance';
+ }
}
return $this->getLanguage()->specialList( $plink, $wlink );
}
+
+ protected function getGroupName() {
+ return 'maintenance';
+ }
}
$gallery->toHtml() . "</li>\n";
}
+ protected function getGroupName() {
+ return 'media';
+ }
}
/**
/**
* Default action when we don't have a subpage -- just show links to the uploads we have,
* Also show a button to clear stashed files
- * @param $status [optional] Status: the result of processRequest
* @return bool
*/
- private function showUploads( $status = null ) {
- if ( $status === null ) {
- $status = Status::newGood();
- }
-
+ private function showUploads() {
// sets the title, etc.
$this->setHeaders();
$this->outputHeader();
if( !$status->isGood() ) {
$error = $this->getOutput()->parse( $status->getWikiText() );
$this->mainLoginForm( $error );
- return false;
+ return;
}
$u = $status->getValue();
}
}
+ /**
+ * @param $error string
+ */
function resetLoginForm( $error ) {
$this->getOutput()->addHTML( Xml::element( 'p', array( 'class' => 'error' ), $error ) );
$reset = new SpecialChangePassword();
* User::isBlockedFromCreateAccount(), which gets this block, ignores the 'hardblock'
* setting on blocks (bug 13611).
* @param $block Block the block causing this error
+ * @throws ErrorPageError
*/
function userBlockedMessage( Block $block ) {
# Let's be nice about this, it's likely that this feature will be used
* Create a language selector link for a particular language
* Links back to this page preserving type and returnto
*
- * @param $text Link text
- * @param $lang Language code
+ * @param $text string Link text
+ * @param $lang string Language code
* @return string
*/
function makeLanguageSelectorLink( $text, $lang ) {
$query
);
}
+
+ protected function getGroupName() {
+ return 'login';
+ }
}
$out->returnToMain();
}
+
+ protected function getGroupName() {
+ return 'login';
+ }
}
$output->addHTML( Xml::element( 'h2', null, $rightsLogPage->getName()->text() ) );
LogEventsList::showLogExtract( $output, 'rights', $user->getUserPage() );
}
+
+ protected function getGroupName() {
+ return 'users';
+ }
}
return $out;
}
+ protected function getGroupName() {
+ return 'wiki';
+ }
+
function showEasterEgg() {
$rx = $rp = $xe = '';
$alpha = array( "", "kbQW", "\$\n()" );
$nlinks = $this->msg( 'nmembers' )->numParams( $result->value )->escaped();
return $this->getLanguage()->specialList( $plink, $nlinks );
}
+
+ protected function getGroupName() {
+ return 'maintenance';
+ }
}
)
);
}
+
+ protected function getGroupName() {
+ return 'maintenance';
+ }
}
wfRunHooks( 'WantedPages::getQueryInfo', array( &$this, &$query ) );
return $query;
}
+
+ protected function getGroupName() {
+ return 'maintenance';
+ }
}
'page_title = tl_title' ) ) )
);
}
+
+ protected function getGroupName() {
+ return 'maintenance';
+ }
}
return floor( $count / 2 );
}
+
+ protected function getGroupName() {
+ return 'changes';
+ }
}
}
return Xml::fieldset( $this->msg( 'whatlinkshere-filters' )->text(), $this->getLanguage()->pipeList( $links ) );
}
+
+ protected function getGroupName() {
+ return 'pagetools';
+ }
}
}
return $query;
}
+
+ protected function getGroupName() {
+ return 'maintenance';
+ }
}
<?php
/**
* Version of index.php to used in web server requiring .php5 extension
- * to execute scripts with PHP5 egine.
+ * to execute scripts with PHP5 engine.
*
* 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
'gotaccount' => "Het u reeds 'n rekening? '''$1'''.",
'gotaccountlink' => 'Teken in',
'userlogin-resetlink' => 'U aanmeld besonderhede vergeet?',
-'createaccountmail' => 'deur e-pos',
+'createaccountmail' => "Gebruik 'n tydelike lukrake wagwoord en stuur dit na die e-posadres hier onder",
'createaccountreason' => 'Rede:',
'badretype' => 'Die ingetikte wagwoorde is nie dieselfde nie.',
'userexists' => "Die gebruikersnaam wat u gekies het is reeds geneem.
'loginlanguagelabel' => 'Taal: $1',
'suspicious-userlogout' => "U versoek om af te teken is geïgnoreer omdat dit lyk asof dit deur 'n gebreekte webleser of instaanbediener gestuur is.",
-# E-mail sending
+# Email sending
'php-mail-error-unknown' => 'Onbekende fout in PHP se mail()-funksie',
'user-mail-no-addy' => "Geprobeer om e-pos te stuur sonder 'n e-posadres.",
'user-mail-no-body' => "Daar is probeer om 'n leë of 'n onredelike kort boodskap te stuur.",
'search-interwiki-default' => '$1 resultate:',
'search-interwiki-more' => '(meer)',
'search-relatedarticle' => 'Verwante',
-'mwsuggest-disable' => 'Deaktiveer AJAX-voorstelle',
+'mwsuggest-disable' => 'Deaktiveer soek-voorstelle',
'searcheverything-enable' => 'Soek in alle naamruimtes',
'searchrelated' => 'verwante',
'searchall' => 'alle',
'prefs-displaywatchlist' => 'Weergaweopsies',
'prefs-diffs' => 'Verskille',
-# User preference: e-mail validation using jQuery
+# User preference: email validation using jQuery
'email-address-validity-valid' => 'Die e-posadres lyk geldig',
'email-address-validity-invalid' => "Verskaf 'n geldige e-posadres",
Hulle moet gewysig word om eerder direk na die regte onderwerpe te skakel.<br />
'n Bladsy word beskou as 'n dubbelsinnigheidsbladsy as dit 'n sjabloon bevat wat geskakel is vanaf [[MediaWiki:Disambiguationspage]]",
+'pageswithprop' => "Blaaie met 'n bladsy-eienskap",
+'pageswithprop-legend' => "Blaaie met 'n bladsy-eienskap",
+'pageswithprop-text' => "Hierdie bladsy lys blaaie met 'n bepaalde blady-eienskap.",
+'pageswithprop-prop' => 'Naam van die eienskap:',
+'pageswithprop-submit' => 'OK',
+
'doubleredirects' => 'Dubbele aansture',
'doubleredirectstext' => 'Hierdie lys bevat bladsye wat aansture na ander aanstuurblaaie is.
Elke ry bevat skakels na die eerste en die tweede aanstuur, asook die eerste reël van van die tweede aanstuur se teks, wat gewoonlik die "regte" teiken-bladsy gee waarna die eerste aanstuur behoort te wys.
'listgrouprights-addgroup-self-all' => 'Alle groepe byvoeg tot eie gebruiker',
'listgrouprights-removegroup-self-all' => 'Alle groepe verwyder van eie gebruiker',
-# E-mail user
+# Email user
'mailnologin' => 'Geen versendadres beskikbaar',
'mailnologintext' => "U moet [[Special:UserLogin|ingeteken]] wees en 'n geldige e-posadres in die [[Special:Preferences|voorkeure]] hê om e-pos aan ander gebruikers te stuur.",
'emailuser' => 'Stuur e-pos na hierdie gebruiker',
'usermessage-editor' => 'Stelselboodskapper',
# Watchlist
-'watchlist' => 'My dophoulys',
+'watchlist' => 'Dophoulys',
'mywatchlist' => 'Dophoulys',
'watchlistfor2' => 'Vir $1 $2',
'nowatchlist' => 'U het geen items in u dophoulys nie.',
'pageinfo-robot-noindex' => 'Nie indekseerbaar nie',
'pageinfo-views' => 'Aantal kere gewys',
'pageinfo-watchers' => 'Aantal dophouers',
+'pageinfo-few-watchers' => 'Minder as {{PLURAL:$1|dophouer|$1 dophouers}}',
'pageinfo-redirects-name' => 'Aansture na die bladsy',
'pageinfo-subpages-name' => 'Subblaaie van die bladsy',
'pageinfo-subpages-value' => '$1 ($2 {{PLURAL:$2|aanstuur|aansture}}; $3 {{PLURAL:$3|nie-aanstuur|nie-aansture}})',
'monthsall' => 'alle',
'limitall' => 'alle',
-# E-mail address confirmation
+# Email address confirmation
'confirmemail' => 'Bevestig e-posadres',
'confirmemail_noemail' => "U het nie 'n geldige e-posadres in u [[Special:Preferences|gebruikersvoorkeure]] gestel nie.",
'confirmemail_text' => "Hierdie wiki vereis dat u e-posadres bevestig word voordat epos-funksies gebruik word. Klik onderstaande knoppie om 'n bevestigingspos na u adres te stuur. Die pos sal 'n skakel met 'n kode insluit; maak hierdie skakel oop in u webblaaier om te bevestig dat die adres geldig is.",
'specialpages-group-highuse' => 'Baie gebruikte bladsye',
'specialpages-group-pages' => 'Lyste van bladsye',
'specialpages-group-pagetools' => 'Bladsyhulpmiddels',
-'specialpages-group-wiki' => 'Wiki data en hulpmiddels',
+'specialpages-group-wiki' => 'Data en hulpmiddels',
'specialpages-group-redirects' => 'Aanstuur gewone bladsye',
'specialpages-group-spam' => 'Spam-hulpmiddels',
'logentry-newusers-newusers' => 'Gebruiker $1 is geskep',
'logentry-newusers-create' => 'Gebruiker $1 is geskep',
'logentry-newusers-create2' => 'Gebruiker $3 is deur $1 geskep',
+'logentry-newusers-byemail' => 'Gebruiker $3 is deur $1 geskep en die wagwoord is per e-pos aangestuur',
'logentry-newusers-autocreate' => 'Die gebruiker $1 is outomaties geskep',
'logentry-rights-rights' => '$1 het groepslidmaatskap vir $3 van $4 na $5 gewysig',
'logentry-rights-rights-legacy' => '$1 het groepslidmaatskap vir $3 gewysig',
'api-error-ok-but-empty' => 'Interne fout: geen reaksie van die bediener.',
'api-error-overwrite' => "'N bestaande lêer vervang word nie toegelaat nie.",
'api-error-stashfailed' => 'Interne fout: Server nie tydelike lêer te stoor.',
+'api-error-publishfailed' => 'Interne fout: bediener kon nie die tydelike lêer publiseer nie.',
'api-error-timeout' => 'Die bediener het nie reageer binne die verwagte tyd.',
'api-error-unclassified' => "'n Onbekende fout het voorgekom.",
'api-error-unknown-code' => 'Onbekende fout: "$1"',
تعامل الصفحة كصفحة توضيح إذا كان بها قالب موجود في [[MediaWiki:Disambiguationspage]]",
'pageswithprop' => 'صفحات مع خاصية الصفحة',
+'pageswithprop-legend' => 'صفحات مع خاصية الصفحة',
'pageswithprop-text' => 'تسرد هذه الصفحة الصفحات التي تستخدم خاصية صفحة معينة.',
'pageswithprop-prop' => 'اسم الخاصية:',
+'pageswithprop-submit' => 'اذهب',
'doubleredirects' => 'تحويلات مزدوجة',
'doubleredirectstext' => 'هذه الصفحة تعرض الصفحات التي تحول إلى صفحات تحويل أخرى.
'duration-centuries' => '{{PLURAL: $1||قرن واحد|قرنان|$1 قرون|$1 قرنًا|$1 قرن}}',
'duration-millennia' => '{{PLURAL: $1||ألفية واحدة|ألفيتان|$1 ألفيات|$1 ألفية}}',
-# Unknown messages
-'pageswithprop-legend' => 'صفحات مع خاصية الصفحة',
-'pageswithprop-submit' => 'اذهب',
+# Image rotation
+'rotate-comment' => 'تدوير الصورة {{PLURAL:$1||درجة واحدة|درجتان|$1 درجات|$1 درجة}} باتجاه عقارب الساعة',
+
);
'pageinfo-lasttime' => 'ܣܝܩܘܡܐ ܕܫܘܚܠܦܐ ܐܚܪܝܐ',
'pageinfo-edits' => 'ܡܢܝܢܐ ܕܫܘܚܠܦ̈ܐ',
'pageinfo-authors' => 'ܡܢܝܢܐ ܕܡܫܚܠܦܢ̈ܐ ܡܫܚܠܦ̈ܐ',
-'pageinfo-recent-edits' => 'ܡܢܝܢܐ ܕܫܘܚܠܦ̈ܐ ܐܚܪ̈ܝܐ (ܒ {{PLURAL:$1||ܚܕ ܝܘܡܐ|$1 ܝܘܡܬ̈ܐ}})',
+'pageinfo-recent-edits' => 'ܡܢܝܢܐ ܕܫܘܚܠܦ̈ܐ ܐܚܪ̈ܝܐ (ܒ $1 ܕܕܥܒܪ)',
'pageinfo-recent-authors' => 'ܡܢܝܢܐ ܕܡܫܚܠܦܢ̈ܐ ܡܫܚܠܦ̈ܐ ܐܚܪ̈ܝܐ',
'pageinfo-toolboxlink' => 'ܝܕ̈ܥܬܐ ܥܠ ܦܐܬܐ',
'pageinfo-contentpage-yes' => 'ܐܝܢ',
Una páxina tratase como una páxina de dixebra si usa una plantía que tea enllaciada dende [[MediaWiki:Disambiguationspage]]",
'pageswithprop' => 'Páxines con una propiedá de páxina',
+'pageswithprop-legend' => 'Páxines con una propiedá de páxina',
'pageswithprop-text' => "Esta páxina llista les páxines qu'usen una propiedá de páxina determinada.",
'pageswithprop-prop' => 'Nome de la propiedá:',
+'pageswithprop-submit' => 'Dir',
'doubleredirects' => 'Redireiciones dobles',
'doubleredirectstext' => 'Esta páxina llista páxines que redireicionen a otres páxines de redireición.
'duration-centuries' => '$1 {{PLURAL:$1|sieglu|sieglos}}',
'duration-millennia' => '$1 {{PLURAL:$1|mileniu|milenios}}',
-# Unknown messages
-'pageswithprop-legend' => 'Páxines con una propiedá de páxina',
-'pageswithprop-submit' => 'Dir',
+# Image rotation
+'rotate-comment' => 'Imaxe xirada $1 {{PLURAL:$1|grau|graos}} en sentíu horariu',
+
);
'loginlanguagelabel' => 'Мова: $1',
'suspicious-userlogout' => 'Ваш запыт на выхад быў адмоўлены, паколькі ён выглядае як накіраваны са зламанага браўзера або кэшаванне проксі-сервераў.',
-# E-mail sending
+# Email sending
'php-mail-error-unknown' => 'Невядомая памылка ў функцыі PHP-пошты',
'user-mail-no-addy' => 'Паспрабаваў адправіць электронны ліст без адрасу электроннай пошты',
'prefs-displaywatchlist' => 'Паказ',
'prefs-diffs' => 'Розніцы',
-# User preference: e-mail validation using jQuery
+# User preference: email validation using jQuery
'email-address-validity-valid' => "Адрас электроннай пошты з'яўляецца сапраўдным",
'email-address-validity-invalid' => 'Увядзіце слушны адрас электроннай пошты',
'action-sendemail' => 'адпраўка электронных пісем',
# Recent changes
-'nchanges' => '$1 {{PLURAL:$1|мена|менаў}}',
+'nchanges' => '$1 {{PLURAL:$1|змена|зменÑ\8b|зменаў}}',
'recentchanges' => 'Нядаўнія змяненні',
'recentchanges-legend' => 'Магчымасці паказу',
'recentchanges-summary' => 'Гэта апошнія мены на пляцоўцы {{SITENAME}}.',
'listgrouprights-addgroup-self-all' => 'Дадаць усе групы да свайго акаунта',
'listgrouprights-removegroup-self-all' => 'Выдаліць усе групы са свайго акаунта',
-# E-mail user
+# Email user
'mailnologin' => 'Няма эл.адрасу',
'mailnologintext' => 'Трэба [[Special:UserLogin|ўвайсці ў сістэму]] і мець пацверджаны адрас эл.пошты ў сваіх [[Special:Preferences|настáўленнях]], каб слаць эл.пошту іншым удзельнікам.',
'emailuser' => 'Эл.пошта ўдзельніка',
'contributions-title' => 'Уклад удзельніка $1',
'mycontris' => 'Уклад',
'contribsub2' => 'Для $1 ($2)',
-'nocontribs' => 'Не знойдзена менаў, адпаведных зададзеным параметрам.',
+'nocontribs' => 'Ð\9dе знойдзена зменаÑ\9e, адпаведнÑ\8bÑ\85 зададзенÑ\8bм паÑ\80амеÑ\82Ñ\80ам.',
'uctop' => '(апошн.)',
'month' => 'Ад месяцу (і раней):',
'year' => 'Ад году (і раней):',
'monthsall' => 'усе',
'limitall' => 'усе',
-# E-mail address confirmation
+# Email address confirmation
'confirmemail' => 'Пацвердзіць адрас эл.пошты',
'confirmemail_noemail' => 'У [[Special:Preferences|вашых настаўленнях]] няма дапушчальнага адрасу эл.пошты.',
'confirmemail_text' => 'На пляцоўцы {{SITENAME}} патрабуецца праверка адрасу эл.пошты перад тым, як карыстацца магчымасцямі эл.пошты. Націсніце кнопку, што ніжэй, каб адаслаць сабе пацвярджальны ліст. У лісце будзе спасылка на спецыяльную пацвярджальную старонку, якую трэба будзе адкрыць у браўзеры, каб пацвердзіць правільнасць свайго адрасу эл.пошты.',
'tags-description-header' => 'Поўнае апісанне значэння',
'tags-hitcount-header' => 'Пазначаных правак',
'tags-edit' => 'правіць',
-'tags-hitcount' => '$1 {{PLURAL:$1|мена|менаў}}',
+'tags-hitcount' => '$1 {{PLURAL:$1|змена|зменÑ\8b|зменаў}}',
# Special:ComparePages
'comparepages' => 'Параўнанне старонак',
Старонка лічыцца шматзначнай, калі яна ўтрымлівае шаблён назва якога знаходзіцца на старонцы [[MediaWiki:Disambiguationspage]]",
'pageswithprop' => 'Старонкі з уласьцівасьцямі старонак',
+'pageswithprop-legend' => 'Старонкі з уласьцівасьцямі старонак',
'pageswithprop-text' => 'На гэтай старонцы адлюстроўваюцца старонкі, якія ўжываюць пэўныя ўласьцівасьці старонак',
'pageswithprop-prop' => 'Імя ўласьцівасьці:',
+'pageswithprop-submit' => 'Паказаць',
'doubleredirects' => 'Двайныя перанакіраваньні',
'doubleredirectstext' => 'На гэтай старонцы пададзены сьпіс перанакіраваньняў на іншыя перанакіраваньні. Кожны радок утрымлівае спасылкі на першае і другое перанакіраваньне, а таксама мэтавую старонку другога перанакіраваньня, якая звычайна зьяўляецца «сапраўднай» мэтавай старонкай, куды павіннае спасылацца першае перанакіраваньне.
'duration-centuries' => '$1 {{PLURAL:$1|стагодзьдзе|стагодзьдзі|стагодзьдзяў}}',
'duration-millennia' => '$1 {{PLURAL:$1|тысячагодзьдзе|тысячагодзьдзі|тысячагодзьдзяў}}',
-# Unknown messages
-'pageswithprop-legend' => 'Старонкі з уласьцівасьцямі старонак',
-'pageswithprop-submit' => 'Паказаць',
+# Image rotation
+'rotate-comment' => 'Выява павернутая на $1{{PLURAL:$1|°}} па гадзіньнікавай стрэлцы',
+
);
'tooltip-n-help' => 'जगह पता लगावे खातिर',
'tooltip-t-whatlinkshere' => 'अहिजा लिंक होखे वाला सब विकि पन्ना के सूची',
'tooltip-t-recentchangeslinked' => 'ई पन्ना से जुड़ल पन्नवन पर तुरंत भईल परिवर्तन',
+'tooltip-feed-atom' => 'ई पन्ना खातिर अणु फ़ीड',
'tooltip-t-upload' => 'फाईल लादीं (अपलोड )',
'tooltip-t-specialpages' => 'ख़ाश पन्नवन के सूची',
'tooltip-t-print' => 'ई पन्ना के छापे लायक संस्करण।',
Sellet e vez ouzh ur bajenn evel ouzh ur bajenn disheñvelout ma ra gant ur patrom liammet ouzh [[MediaWiki:Disambiguationspage]]",
'pageswithprop-prop' => 'Anv ar perzh :',
+'pageswithprop-submit' => 'Mont',
'doubleredirects' => 'Adkasoù doubl',
'doubleredirectstext' => 'Rollañ a ra ar bajenn-mañ ar pajennoù a adkas da bajennoù adkas all.
'duration-centuries' => "$1 {{PLURAL:$1|c'hantved|kantved}}",
'duration-millennia' => '$1 {{PLURAL:$1|milvloaz|milvoaz}}',
-# Unknown messages
-'pageswithprop-submit' => 'Mont',
);
# User preference toggles
'tog-underline' => 'ھێڵ ھێنان بەژێر بەستەرەکان:',
'tog-justify' => 'پەرەگرافەکان پڕاوپر نیشان بدە',
-'tog-hideminor' => 'دەستکارییە بچووکەکان بشارەوە لە دوایین گۆڕانکارییەکاندا',
+'tog-hideminor' => 'دەستکارییە بچووکەکان لە دوایین گۆڕانکارییەکاندا بشارەوە',
'tog-hidepatrolled' => 'لە دوایین گۆڕانکاریەکان، دەستکاریە پارێزراوەکان داشارە',
'tog-newpageshidepatrolled' => 'لە لیستی لاپەڕە نوێکان، لاپەڕە پارێزراوەکان داشارە',
'tog-extendwatchlist' => 'لیستی چاودێری درێژبکەرەوە بۆ نیشان دانی ھەموو گۆڕانکارییەکان، نەک تەنھا دوایینەکان.',
'searcharticle' => 'بڕۆ',
'history' => 'مێژووی پەڕە',
'history_short' => 'مێژووی پەڕە',
-'updatedmarker' => 'لە دوای دواسەردانم نوێکراوەتەوە',
+'updatedmarker' => 'لە دوایین سەردانمدا نوێ کراوەتەوە',
'printableversion' => 'وەشانی ئامادەی چاپ',
'permalink' => 'بەستەری ھەمیشەیی',
'print' => 'چاپ',
'otherlanguages' => 'بە زمانەکانی تر',
'redirectedfrom' => '(ڕەوانەکراوە لە $1 ەوە)',
'redirectpagesub' => 'پەڕەی ڕەوانەکردن',
-'lastmodifiedat' => 'ئەم پەڕەیە دواجار لە $2ی $1 نوێکراوەتەوە.',
+'lastmodifiedat' => 'ئەم پەڕەیە دواجار لە $2ی $1 نوێ کراوەتەوە.',
'viewcount' => 'ئەم پەڕەیە {{PLURAL:$1|یەکجار|$1 جار}} بینراوە.',
'protectedpage' => 'پەڕەی پارێزراو',
'jumpto' => 'باز بدە بۆ:',
ئەمە لەبەر چاو بگرە کە دەستکاریکردنی ئەم پەڕەیە بەقازانجە یان نا.
لۆگی سڕینەوە و گواستنەوەی ئەم پەڕەیە بۆ سانایی لێرەدا ھاتووە:",
'moveddeleted-notice' => 'ئەم پەڕەیە سڕاوەتەوە.
-لۆگی سڕینەوە و گواستنەوە بۆ پەڕەکە لە خوارەوە دابینکراوە.',
+لۆگی سڕینەوە و گواستنەوە بۆ پەڕەکە لە ژێرەوە دابین کراوە.',
'log-fulllog' => 'دیتنی لۆگی تەواو',
'edit-hook-aborted' => 'دەستکاری لە لایەن قولاپەوە ھەڵوەشێنرایەوە.
ھۆکارەکەی لەبەر دەست نییە.',
'diff' => 'جیاوازی',
'hist' => 'مێژوو',
'hide' => 'بشارەوە',
-'show' => 'نیشانبدە',
+'show' => 'نیشان بدە',
'minoreditletter' => 'ب',
'newpageletter' => 'ن',
'boteditletter' => '.بۆت',
'loginlanguagelabel' => 'Iaith: $1',
'suspicious-userlogout' => 'Gwrthodwyd eich cais i allgofnodi oherwydd ei fod yn ymddangos mai gweinydd wedi torri neu ddirprwy gelc a anfonodd y cais.',
-# E-mail sending
+# Email sending
'php-mail-error-unknown' => 'Gwall anhysbys yng ngweithrediad post() PHP',
'user-mail-no-addy' => 'Wedi ceisio anfon e-bost heb gyfeiriad e-bost',
'user-mail-no-body' => 'Ceisiwyd anfon e-bost gwag neu e-bost oedd a thestun rhy bwt iddo.',
'prefs-displaywatchlist' => 'Dewisiadau arddangos',
'prefs-diffs' => "Cymharu golygiadau ('gwahan')",
-# User preference: e-mail validation using jQuery
+# User preference: email validation using jQuery
'email-address-validity-valid' => 'Y cyfeiriad e-bost yn ymddangos yn un dilys',
'email-address-validity-invalid' => 'Rhowch gyfeiriad e-bost dilys',
'disambiguations-text' => "Mae'r tudalennau canlynol yn cynnwys un neu ragor o gysylltau, sydd yn arwain at '''dudalennau gwahaniaethu'''. Hwyrach y byddai'n hwylusach petai'r cyswllt yn arwain yn syth at y dudalen briodol.<br />
Diffinir tudalen yn dudalen gwahaniaethu pan mae'n cynnwys un o'r nodiadau '[[MediaWiki:Disambiguationspage|tudalen gwahaniaethu]]'.",
+'pageswithprop' => 'Tudalennau a chanddynt nodwedd arbennig',
+'pageswithprop-legend' => 'Tudalennau a chanddynt nodwedd arbennig',
+'pageswithprop-text' => "Mae'r dudalen hon yn rhestru tudalennau sydd yn defnyddio nodwedd arbennig yn y dudalen.",
+'pageswithprop-prop' => "Enw'r nodwedd:",
+'pageswithprop-submit' => 'Gwneler',
+
'doubleredirects' => 'Ailgyfeiriadau dwbl',
'doubleredirectstext' => "Mae pob rhes yn cynnwys cysylltiad i'r ddau ail-gyfeiriad cyntaf, ynghyd â chyrchfan yr ail ailgyfeiriad. Fel arfer bydd hyn yn rhoi'r gwir dudalen y dylai'r tudalennau cynt gyfeirio ati.
Gosodwyd <del>llinell</del> drwy'r eitemau sydd eisoes wedi eu datrys.",
'listgrouprights-addgroup-self-all' => "Yn gallu ychwanegu'r holl grwpiau at eich cyfrif eich hunan",
'listgrouprights-removegroup-self-all' => "Yn gallu tynnu'r holl grwpiau oddi ar eich cyfrif eich hunan",
-# E-mail user
+# Email user
'mailnologin' => "Does dim cyfeiriad i'w anfon iddo",
'mailnologintext' => 'Rhaid eich bod wedi [[Special:UserLogin|mewngofnodi]]
a bod cyfeiriad e-bost dilys yn eich [[Special:Preferences|dewisiadau]]
'monthsall' => 'pob mis',
'limitall' => 'oll',
-# E-mail address confirmation
+# Email address confirmation
'confirmemail' => "Cadarnhau'r cyfeiriad e-bost",
'confirmemail_noemail' => 'Does dim cyfeiriad e-bost dilys wedi ei osod yn eich [[Special:Preferences|dewisiadau defnyddiwr]].',
'confirmemail_text' => "Cyn i chi allu defnyddio'r nodweddion e-bost, mae'n rhaid i {{SITENAME}} ddilysu'ch cyfeiriad e-bost. Pwyswch y botwm isod er mwyn anfon côd cadarnhau i'ch cyfeiriad e-bost. Bydd yr e-bost yn cynnwys cyswllt gyda chôd ynddi; llwythwch y cyswllt ar eich porwr er mwyn cadarnhau dilysrwydd eich cyfeiriad e-bost.",
'duration-centuries' => '$1 {{PLURAL:$1|canmlwydd|ganmlwydd|ganmlwydd|canmlwydd|chanmlwydd|canmlwydd}}',
'duration-millennia' => '$1 {{PLURAL:$1|milflwydd|filflwydd|filflwydd|milflwydd|milflwydd|milflwydd}}',
+# Image rotation
+'rotate-comment' => "Trowyd y llun $1 {{PLURAL:$1|gradd|radd|radd|gradd}} gyda'r cloc",
+
);
'loginlanguagelabel' => 'Sprog: $1',
'suspicious-userlogout' => 'Din anmodning om at logge ud blev nægtet, fordi det ser ud som den blev sendt af en ødelagt browser eller caching proxy.',
-# E-mail sending
+# Email sending
'php-mail-error-unknown' => "Ukendt fejl i PHP's mail()-funtion",
'user-mail-no-addy' => 'Forsøgte at sende email uden en email-adresse',
'user-mail-no-body' => 'Forsøgte at sende en e-mail med tomt eller urimeligt kort indhold.',
'prefs-info' => 'Grundlæggende information',
'prefs-i18n' => 'Internationalisering:',
'prefs-signature' => 'Signatur',
-'prefs-dateformat' => 'Dataformat',
+'prefs-dateformat' => 'Formatering af datoer',
'prefs-timeoffset' => 'Tidsforskel',
'prefs-advancedediting' => 'Avancerede indstillinger',
'prefs-advancedrc' => 'Avancerede indstillinger',
'prefs-displaywatchlist' => 'Visningsmuligheder',
'prefs-diffs' => 'Forskelle',
-# User preference: e-mail validation using jQuery
+# User preference: email validation using jQuery
'email-address-validity-valid' => 'E-mailadressen ser ud til at være gyldig',
'email-address-validity-invalid' => 'Indtast en gyldig e-mail adresse',
'listgrouprights-addgroup-self-all' => 'Kan tilføje alle grupper til egen konto',
'listgrouprights-removegroup-self-all' => 'Kan fjerne alle grupper fra egen konto',
-# E-mail user
+# Email user
'mailnologin' => 'Du er ikke logget på',
'mailnologintext' => 'Du skal være [[Special:UserLogin|logget på]] og have en gyldig e-mailadresse sat i dine [[Special:Preferences|indstillinger]] for at sende e-mail til andre brugere.',
'emailuser' => 'E-mail til denne bruger',
'monthsall' => 'alle',
'limitall' => 'alle',
-# E-mail address confirmation
+# Email address confirmation
'confirmemail' => 'Bekræft e-mail-adressen',
'confirmemail_noemail' => 'Du har ikke angivet en gyldig e-mail-adresse i din [[Special:Preferences|brugerprofil]].',
'confirmemail_text' => '{{SITENAME}} kræver, at du bekræfter en e-mail-adresse (autentificering), før du kan bruge de udvidede e-mail-funktioner. Med et klik på kontrolfeltet forneden sendes en e-mail til dig. Denne e-mail indeholder et link med en bekræftelseskode. Med et klik på dette link bekræftes, at e-mail-adressen er gyldig.',
'nosuchaction' => 'Diese Aktion gibt es nicht',
'nosuchactiontext' => 'Die in der URL angegebene Aktion wird von MediaWiki nicht unterstützt.
Es kann ein Schreibfehler in der URL vorliegen oder es wurde ein fehlerhafter Link angeklickt.
-Es kann sich auch um einen Programmierfehler in der Software, die auf {{SITENAME}} benutzt wird, handeln.',
+Es kann sich auch um einen Programmierfehler in der Software, die von {{SITENAME}} benutzt wird, handeln.',
'nosuchspecialpage' => 'Spezialseite nicht vorhanden',
'nospecialpagetext' => '<strong>Die aufgerufene Spezialseite ist nicht vorhanden.</strong>
Eine Seite gilt als Begriffsklärungsseite, wenn sie mindestens eine der auf der Seite [[MediaWiki:Disambiguationspage|Disambiguationspage]] aufgeführten Vorlagen enthält.",
'pageswithprop' => 'Seiten mit einer Seiteneigenschaft',
+'pageswithprop-legend' => 'Seiten mit einer Seiteneigenschaft',
'pageswithprop-text' => 'Diese Spezialseite listet Seiten auf, die eine bestimmte Seiteneigenschaft verwenden.',
'pageswithprop-prop' => 'Eigenschaftsname:',
+'pageswithprop-submit' => 'Los',
'doubleredirects' => 'Doppelte Weiterleitungen',
'doubleredirectstext' => 'Diese Liste enthält Weiterleitungen, die auf Weiterleitungen verlinken.
'duration-centuries' => '$1 {{PLURAL:$1|Jahrhundert|Jahrhunderte}}',
'duration-millennia' => '$1 {{PLURAL:$1|Jahrtausend|Jahrtausende}}',
-# Unknown messages
-'pageswithprop-legend' => 'Seiten mit einer Seiteneigenschaft',
-'pageswithprop-submit' => 'Los',
+# Image rotation
+'rotate-comment' => 'Bild um $1 {{PLURAL:$1|Grad}} im Uhrzeigersinn gedreht',
+
);
'viewsourcetext' => 'To şikinay çımey na pele bıvêne u kopya kerê:',
'viewyourtext' => "Na pela '''Vurnayışê ke kerdê''' re şıma şenê kopya kerê:",
'protectedinterface' => 'Na pela qandê nusnerin destegê verri dana u kes xırabin nêqero deye kerda kılit.',
-'editinginterface' => "'''İqaz:''' Şıma hao jû pela ke seba nuşteyê meqalanê cayanê bırnayeyan dana, vurnenê.
+'editinginterface' => "'''İqaz:''' Şıma hayo yew pela ke seba nuşteyê meqalanê cayanê bırnayeyan dana, vurnenê.
Vurnayışê na pele karberanê binan rê serpela karberi kena ke bımocno.
Seba çarnayışi, yardımê [//translatewiki.net/wiki/Main_Page?setlang=diq translatewiki.net]i ra procêdoşkerdışi rê diqet kerên.",
'sqlhidden' => '(SQL pers kerdışê nımıte)',
'searchsubtitle' => 'Tı semedê \'\'\'[[:$1]]\'\'\' cıgeyra. ([[Special:Prefixindex/$1|pelê ke pêro be "$1" ra dest niyaê pıra]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|pelê ke pêro be "$1"\' ra gırê xo esto]])',
'searchsubtitleinvalid' => "Tı cıgeyra qe '''$1'''",
'toomanymatches' => 'Zêde teki (zewci) peyser çarnay, şıma rê zehmet, be persê do bin ra bıcerrebnên.',
-'titlematches' => 'tekê (zewcê) sernamey pele',
-'notitlematches' => 'Tekê (zewcê) sernamey pele çıniyê.',
+'titlematches' => 'Tekê (zewcê) sernameyê pele',
+'notitlematches' => 'Tekê (zewcê) sernameyê pele çıniyê.',
'textmatches' => 'Tekê (zewcê) nuştey pele',
'notextmatches' => 'tekê (zewcê) nuştey pele çıniyê',
'prevn' => '{{PLURAL:$1|$1}} verên',
'filedelete-success-old' => "Versiyonê'''[[Media:$1|$1]]'''î $3, $2 esteriyayo.",
'filedelete-nofile' => "'''$1''' çin o.",
'filedelete-nofile-old' => "Versiyonê arşivi ye '''$1'''î pê enê detayanê xasî çin o.",
-'filedelete-otherreason' => 'Sebebê binî',
-'filedelete-reason-otherlist' => 'Sebebê binî',
+'filedelete-otherreason' => 'Sebebo bin/ilaweyın:',
+'filedelete-reason-otherlist' => 'Sebebo bin',
'filedelete-reason-dropdown' => '*sebebê hewna kerdışi
** ihlalê heqê telifi
** Çift/dosyaya kopyayın',
-'filedelete-edit-reasonlist' => 'Sebebê esterayîşî bivurne',
+'filedelete-edit-reasonlist' => 'Sebebanê esterıtışi bıvurne',
'filedelete-maintenance' => 'Esterayîş u resterasyonê dosyayî wextê texmirî de nibenê.',
'filedelete-maintenance-title' => 'Dosyaya nêbesterneyêna',
'sp-contributions-blocked-notice-anon' => 'Eno adresê IPi bloke biyo.
Cıkewtışo tewr peyêno ke bloke biyo, cêr seba referansi belikerdeyo:',
'sp-contributions-search' => 'Dekerdena cı geyrê',
-'sp-contributions-username' => 'Adresa IP yana namey karberi:',
+'sp-contributions-username' => 'Adresa IPy ya zi nameyê karberi:',
'sp-contributions-toponly' => 'Tenya rewizyonanê tewr peyniyan bimocne',
'sp-contributions-submit' => 'Cı geyre',
'blockip-title' => 'Karberi kılit ke',
'blockip-legend' => 'Karber blok bike',
'blockiptext' => 'pê şuxulnayişê formê cêrıni, şıma eşkeni verniyê vurnayişkerdışê yew karberi ya zi yew IPyi bıgêrî. No têna qey verni-gırewtışê vandalizmiyo u gani şıma [[{{MediaWiki:Policy-url}}|qaydeyan]] re diqqet bıkeri. cêr de muheqqeq sebebê verni-grewtışi bınusi. (mesela: -nê- pelani de vandalizm kerdo).',
-'ipadressorusername' => 'Adresa IP yana namey karberi:',
+'ipadressorusername' => 'Adresa IPy ya zi nameyê karberi:',
'ipbexpiry' => 'Qedyayış:',
'ipbreason' => 'Sebeb:',
'ipbreasonotherlist' => 'Sebebê bini',
'ipb-blocklist' => 'Blokî ke hama estê ey bivîne',
'ipb-blocklist-contribs' => 'Ser $1 îştîrakî',
'unblockip' => 'Hesabê karberî a bike',
-'unblockiptext' => 'eke şıma qayili ê yê ke verniyê IPadesê inan geriyayê akeri formê cêrıni dekerê.',
-'ipusubmit' => 'Ena blok wedarne',
+'unblockiptext' => 'Cıreştışê nuştışê IP ya zi karberio ke ver ra gêriyayo, seba peyser barkerdışi dey rê formê cêrêni bıgurenên.',
+'ipusubmit' => 'Enê kılitkerdışi wedare',
'unblocked' => '[[User:$1|$1]] blok biyo',
'unblocked-range' => "Blokey $1'i wederya",
'unblocked-id' => 'Blokê $1î wedariyayo',
-'blocklist' => 'Karberê kılitbiyaey',
-'ipblocklist' => 'Karberê kılitbiyaey',
-'ipblocklist-legend' => 'Yew karberê blok biyaye bivîne',
-'blocklist-userblocks' => 'Wederneyanê hesaba bınımne',
-'blocklist-tempblocks' => 'Wederneyanê idaretan bınımne',
-'blocklist-addressblocks' => 'Nêverdışanê IP bınımne',
-'blocklist-rangeblocks' => 'Nêverdışanê gırda bınımne',
+'blocklist' => 'Karberê kılitbiyayey',
+'ipblocklist' => 'Karberê kılitbiyayey',
+'ipblocklist-legend' => 'Yew karberê kılitbiyayey bıvêne',
+'blocklist-userblocks' => 'Kılitkerdışê hesaban bınımne',
+'blocklist-tempblocks' => 'Kılitkerdışan mıweqet bınımne',
+'blocklist-addressblocks' => 'Tenya kılitkerdışanê IPy bınımne',
+'blocklist-rangeblocks' => 'Kılitkerdışanê rêzkiyan bınımne',
'blocklist-timestamp' => 'İmzay demi',
'blocklist-target' => 'Menzil',
'blocklist-expiry' => 'Wahdey qedyayışi',
'createaccountblock' => 'Hesab viraştîş blok biyo',
'emailblock' => 'e-mail blok biyo',
'blocklist-nousertalk' => 'ti nieşken pele minaqaşe xo bivurne',
-'ipblocklist-empty' => 'Listeyê blokî veng o.',
+'ipblocklist-empty' => 'Lista kılitkerdışi venga.',
'ipblocklist-no-results' => 'Adresa IPya waştiye ya zi namey karberi kılit nêbiyo.',
'blocklink' => 'kılit ke',
'unblocklink' => 'bloqi hewad',
Maju bok za bok rozjasnjenja zapśimjeśow, gaž wužywa pśedłogu, na kótaruž wótkazujo se wót [[MediaWiki:Disambiguationspage]].',
'pageswithprop' => 'Boki z kakosću boka',
+'pageswithprop-legend' => 'Boki z kakosću boka',
'pageswithprop-text' => 'Toś ten bok nalicyjo boki, kótarež wužywaju wěstu kakosć boka.',
'pageswithprop-prop' => 'Mě kakosći:',
+'pageswithprop-submit' => 'Wótpósłaś',
'doubleredirects' => 'Dwójne dalejpósrědnjenja',
'doubleredirectstext' => 'Toś ten bok nalicujo boki, kótarež dalej pósrědnjaju na druge dalejpósrědnjenja.
'duration-centuries' => '$1 {{PLURAL:$1|stolěśe|stolěśi|stolěśa|stolěśow}}',
'duration-millennia' => '$1 {{PLURAL:$1|lěttysac|lěttysaca|lěttysace|lěttysacow}}',
-# Unknown messages
-'pageswithprop-legend' => 'Boki z kakosću boka',
-'pageswithprop-submit' => 'Wótpósłaś',
+# Image rotation
+'rotate-comment' => 'Wobraz wó $1 {{PLURAL:$1|stopjeń|stopnja|stopnje|stopnjow}} ako špěra źo wobwjertnjony',
+
);
'loginreqtitle' => 'Login required',
'loginreqlink' => 'log in',
'loginreqpagetext' => 'You must $1 to view other pages.',
-'accmailtitle' => 'Password sent.',
+'accmailtitle' => 'Password sent',
'accmailtext' => "A randomly generated password for [[User talk:$1|$1]] has been sent to $2.
The password for this new account can be changed on the ''[[Special:ChangePassword|change password]]'' page upon logging in.",
'duration-centuries' => '$1 {{PLURAL:$1|century|centuries}}',
'duration-millennia' => '$1 {{PLURAL:$1|millennium|millennia}}',
+#Rotation
+'rotate-comment' => 'Image rotated by $1 {{PLURAL:$1|degree|degrees}} clockwise',
+
);
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'Página',
-'nstab-user' => 'Página de usuari{{gender:{{#titleparts:{{BASEPAGENAME}}|1}}|o|a|o}}',
+'nstab-user' => 'Página de usuario',
'nstab-media' => 'Media',
'nstab-special' => 'Página especial',
'nstab-project' => 'Página del proyecto',
'qbbrowse' => 'Sirvi',
'qbedit' => 'Redigeeri',
'qbpageoptions' => 'Lehekülje suvandid',
-'qbmyoptions' => 'Minu suvandid',
+'qbmyoptions' => 'Minu leheküljed',
'qbspecialpages' => 'Erileheküljed',
'faq' => 'KKK',
'faqpage' => 'Project:KKK',
'aboutsite' => '{{GRAMMAR:genitive|{{SITENAME}}}} tiitelandmed',
'aboutpage' => 'Project:Tiitelandmed',
'copyright' => 'Kogu tekst on kasutatav litsentsi $1 tingimustel.',
-'copyrightpage' => '{{ns:project}}:Autoriõigused',
+'copyrightpage' => '{{ns:project}}:Autoriõigus',
'currentevents' => 'Sündmused',
'currentevents-url' => 'Project:Sündmused',
'disclaimers' => 'Hoiatused',
Võimalik, et sellised lingid peaks viitama sobivamatele lehekülgedele.
Lehekülg loetakse täpsustusleheküljeks, kui see kasutab malli, millele viitab sõnum [[MediaWiki:Disambiguationspage]].",
+'pageswithprop' => 'Leheatribuudiga leheküljed',
+'pageswithprop-legend' => 'Leheatribuudiga leheküljed',
+'pageswithprop-text' => 'Sellel leheküljel on loetletud mõnd leheatribuuti kasutavad leheküljed.',
+'pageswithprop-prop' => 'Atribuudi nimi:',
+'pageswithprop-submit' => 'Mine',
+
'doubleredirects' => 'Kahekordsed ümbersuunamised',
'doubleredirectstext' => 'Käesolev leht esitab loendi lehtedest, mis sisaldavad ümbersuunamisi teistele ümbersuunamislehtedele.
Igal real on ära toodud esimene ja teine ümbersuunamisleht ning samuti teise ümbersuunamislehe sihtmärk, mis tavaliselt on esialgse ümbersuunamise tegelik siht, millele see otse osutama peakski.
'iteminvalidname' => "Probleem üksusega '$1'. Selle nimes on viga.",
'wlnote' => "Allpool on {{PLURAL:$1|viimane muudatus|viimased '''$1''' muudatust}} viimase {{PLURAL:$2|tunni|'''$2''' tunni}} jooksul seisuga $3, $4.",
'wlshowlast' => 'Näita viimast $1 tundi $2 päeva. $3',
-'watchlist-options' => 'Jälgimisloendi võimalused',
+'watchlist-options' => 'Jälgimisloendi seaded',
# Displayed when you click the "watch" button and it is in the process of watching
'watching' => 'Jälgimine...',
'confirmdeletetext' => 'Sa oled andmebaasist kustutamas lehekülge koos kogu tema ajalooga.
Palun kinnita, et tahad seda tõepoolest teha, et sa mõistad tagajärgi ja et sinu tegevus on kooskõlas siinse [[{{MediaWiki:Policy-url}}|sisekorraga]].',
'actioncomplete' => 'Toiming sooritatud',
-'actionfailed' => 'Tegevus ebaõnnestus',
+'actionfailed' => 'Toiming ebaõnnestus',
'deletedtext' => '"$1" on kustutatud. Kustutatud leheküljed on ära toodud eraldi loendis ($2).',
'dellogpage' => 'Kustutamislogi',
'dellogpagetext' => 'Allpool on esitatud nimekiri viimastest kustutamistest.
# Namespace 8 related
'allmessages' => 'Kõik süsteemi sõnumid',
'allmessagesname' => 'Nimi',
-'allmessagesdefault' => 'Vaikimisi tekst',
+'allmessagesdefault' => 'Vaiketekst',
'allmessagescurrent' => 'Praegune tekst',
'allmessagestext' => 'See on loend kõikidest olemasolevatest süsteemisõnumitest MediaWiki nimeruumis.
Kui soovid MediaWiki tarkvara tõlkimises osaleda, siis vaata lehti [//www.mediawiki.org/wiki/Localisation MediaWiki lokaliseerimine] ja [//translatewiki.net translatewiki.net].',
# Tooltip help for the actions
'tooltip-pt-userpage' => 'Sinu kasutajaleht',
'tooltip-pt-anonuserpage' => 'Sinu IP-aadressi kasutajalehekülg',
-'tooltip-pt-mytalk' => 'Minu aruteluleht',
+'tooltip-pt-mytalk' => 'Sinu arutelulehekülg',
'tooltip-pt-anontalk' => 'Arutelu sellelt IP-aadressilt tehtud muudatuste kohta',
-'tooltip-pt-preferences' => 'Minu eelistused',
+'tooltip-pt-preferences' => 'Sinu eelistused',
'tooltip-pt-watchlist' => 'Lehekülgede loend, mida jälgid muudatuste osas',
'tooltip-pt-mycontris' => 'Sinu kaastööde loend',
'tooltip-pt-login' => 'Me julgustame teid sisse logima, kuid see pole kohustuslik.',
'tooltip-ca-unprotect' => 'Muuda selle lehekülje kaitset',
'tooltip-ca-delete' => 'Kustuta see lehekülg',
'tooltip-ca-undelete' => 'Taasta enne lehekülje kustutamist tehtud muudatused',
-'tooltip-ca-move' => 'Teisalda see lehekülg teise nime alla.',
+'tooltip-ca-move' => 'Teisalda see lehekülg',
'tooltip-ca-watch' => 'Lisa see lehekülg oma jälgimisloendisse',
'tooltip-ca-unwatch' => 'Eemalda see lehekülg oma jälgimisloendist',
'tooltip-search' => 'Otsi vikist',
'minutes' => '{{PLURAL:$1|üks minut|$1 minutit}}',
'hours' => '{{PLURAL:$1|üks tund|$1 tundi}}',
'days' => '{{PLURAL:$1|üks päev|$1 päeva}}',
+'months' => '{{PLURAL:$1|Üks kuu|$1 kuud}}',
+'years' => '{{PLURAL:$1|Üks aasta|$1 aastat}}',
'ago' => '$1 tagasi',
'just-now' => 'just nüüd',
'api-error-ok-but-empty' => 'Sisetõrge: Server ei vasta.',
'api-error-overwrite' => 'Olemasolevate failide ülekirjutamine pole lubatud.',
'api-error-stashfailed' => 'Sisetõrge: Serveril ei õnnestunud ajutist faili talletada.',
+'api-error-publishfailed' => 'Sisetõrge: Serveril ebaõnnestus ajutise faili avaldamine.',
'api-error-timeout' => 'Server ei vastanud oodatud aja sees.',
'api-error-unclassified' => 'Ilmnes teadmata tõrge.',
'api-error-unknown-code' => 'Teadmata tõrge: "$1"',
'duration-centuries' => '$1 {{PLURAL:$1|sajandi}}',
'duration-millennia' => '$1 {{PLURAL:$1|aastatuhande}}',
+# Image rotation
+'rotate-comment' => 'Pilti pööratud $1 {{PLURAL:$1|kraad|kraadi}} päripäeva',
+
);
Mesedez beheko alderaketa egiaztatu, egin nahi duzuna hori dela frogatzeko, eta ondoren azpiko aldaketak gorde, aldaketa desegiten amaitzeko.',
'undo-failure' => 'Ezin izan da aldaketa desegin tarteko aldaketekin gatazkak direla-eta.',
'undo-norev' => 'Aldaketa ezin da desegin ez delako existitzen edo ezabatu zutelako.',
-'undo-summary' => '[[Special:Contributions/$2|$2(r)en]] $1 berrikuspena desegin da ([[User talk:$2|Eztabaida]])',
+'undo-summary' => '[[Special:Contributions/$2|$2]] ([[User talk:$2|eztabaida]]) wikilariaren $1 berrikuspena desegin da',
# Account creation failure
'cantcreateaccounttitle' => 'Ezin izan da kontua sortu',
'nchanges' => '{{PLURAL:$1|aldaketa 1|$1 aldaketa}}',
'recentchanges' => 'Aldaketa berriak',
'recentchanges-legend' => 'Azken aldaketen aukerak',
-'recentchanges-summary' => 'Orrialde honetan wiki honetan egindako azken aldaketak erakusten dira.',
+'recentchanges-summary' => 'Orri honetan ikuska ditzakezu wiki honetan egindako azken aldaketak.',
'recentchanges-feed-description' => 'Sindikazio honetan wikian eginiko azkeneko aldaketak jarrai daitezke.',
'recentchanges-label-newpage' => 'Aldaketa honek orrialde berri bat sortu du',
'recentchanges-label-minor' => 'Hau aldaketa txikia da',
این صفحهها شاید در عوض به موضوعات مرتبط پیوند داده شوند.<br />
یک صفحه هنگامی صفحهٔ ابهامزدایی در نظر گرفته میشود که در آن از الگویی که به [[MediaWiki:Disambiguationspage]] پیوند دارد استفاده شده باشد.",
+'pageswithprop' => 'صفحههای دارای خاصیت صفحه',
+'pageswithprop-legend' => 'صفحههای دارای خاصیت صفحه',
+'pageswithprop-text' => 'این صفحه فهرستی است از صفحههایی که از یک خاصیت صفحهٔ خاص استفاده میکنند.',
+'pageswithprop-prop' => 'نام خاصیت:',
+'pageswithprop-submit' => 'برو',
+
'doubleredirects' => 'تغییرمسیرهای دوتایی',
'doubleredirectstext' => 'این صفحه فهرستی از صفحههای تغییرمسیری را ارائه میکند که به صفحهٔ تغییرمسیر دیگری اشاره میکنند.
هر سطر دربردارندهٔ پیوندهایی به تغییرمسیر اول و دوم و همچنین مقصد تغییرمسیر دوم است، که معمولاً صفحهٔ مقصد واقعی است و نخستین تغییرمسیر باید به آن اشاره کند.
'duration-centuries' => '$1 قرن',
'duration-millennia' => '{{PLURAL:$1|هزار سال |$1 هزار سال}}',
+# Image rotation
+'rotate-comment' => 'تصویر به دست $1 {{PLURAL:$1|درجهٔ|درجهٔ}} ساعتگرد چرخانده شد',
+
);
Täsmennyssivun sijaan ne voisivat linkittää suoraan asianomaiseen aiheeseen.<br />
Sivua kohdellaan täsmennyssivuna, jos se käyttää mallinetta, johon on linkki sivulta [[MediaWiki:Disambiguationspage]].",
+'pageswithprop' => 'Sivut sivun ominaisuuden mukaan',
+'pageswithprop-legend' => 'Sivut sivun ominaisuuden mukaan',
+'pageswithprop-text' => 'Tällä sivulla on lueteltu sivut, jotka käyttävät erityistä sivun ominaisuutta.',
+'pageswithprop-submit' => 'Siirry',
+
'doubleredirects' => 'Kaksinkertaiset ohjaukset',
'doubleredirectstext' => 'Tässä listassa on ohjaussivut, jotka ohjaavat toiseen ohjaussivuun.
Jokaisella rivillä on linkit ensimmäiseen ja toiseen ohjaukseen sekä toisen ohjauksen kohteen ensimmäiseen riviin, eli yleensä ”oikeaan” kohteeseen, johon ensimmäisen ohjauksen pitäisi osoittaa.
'duration-centuries' => '$1 {{PLURAL:$1|vuosisata|vuosisataa}}',
'duration-millennia' => '$1 {{PLURAL:$1|vuosituhat|vuosituhatta}}',
-# Unknown messages
-'pageswithprop-submit' => 'Siirry',
);
Une page est considérée comme une page d'homonymie si elle utilise un modèle lié à [[MediaWiki:Disambiguationspage]]",
'pageswithprop' => 'Pages avec une propriété de page',
+'pageswithprop-legend' => 'Pages avec une propriété de page',
'pageswithprop-text' => 'Cette page liste les pages qui utilisent une propriété de page particulière.',
'pageswithprop-prop' => 'Nom de la propriété:',
+'pageswithprop-submit' => 'Aller',
'doubleredirects' => 'Doubles redirections',
'doubleredirectstext' => 'Voici une liste des pages qui redirigent vers des pages qui sont elles-mêmes des pages de redirection.
'duration-centuries' => '$1 siècle{{PLURAL:$1||s}}',
'duration-millennia' => '$1 millénaire{{PLURAL:$1||s}}',
-# Unknown messages
-'pageswithprop-legend' => 'Pages avec une propriété de page',
-'pageswithprop-submit' => 'Aller',
+# Image rotation
+'rotate-comment' => 'Image pivotée de $1 {{PLURAL:$1|degré|degrés}} dans le sens des aiguilles d’une montre',
+
);
'missing-revision' => 'La vèrsion numerô $1 de la pâge apelâye « {{PAGENAME}} » ègziste pas.
En g·ènèral cen arreve en siuvent un lim d’un historico dèpassâ de vers na pâge qu’est étâye suprimâye.
-Vos pouede trovar més de dètalys dedens lo [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} jornal de les suprèssions].',
+Vos pouede trovar més de dètalys sur lo [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} jornal de les suprèssions].',
'userpage-userdoesnotexist' => 'Lo compto utilisator « $1 » est pas encartâ.
Se vos plét, controlâd que vos voléd fâre / changiér cela pâge.',
'userpage-userdoesnotexist-view' => 'Lo compto utilisator « $1 » est pas encartâ.',
'rev-deleted-event' => '(accion du jornal enlevâye)',
'rev-deleted-user-contribs' => '[nom d’utilisator ou ben adrèce IP enlevâ(ye) - changement cachiê sur les contribucions]',
'rev-deleted-text-permission' => "Ceta vèrsion de la pâge est étâye '''suprimâye'''.
-Y pôt avêr més de dètalys dedens lo [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} jornal de les suprèssions].",
+Y pôt avêr més de dètalys sur lo [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} jornal de les suprèssions].",
'rev-deleted-text-unhide' => "Ceta vèrsion de la pâge est étâye '''suprimâye'''.
-Y pôt avêr més de dètalys dedens lo [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} jornal de les suprèssions].
+Y pôt avêr més de dètalys sur lo [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} jornal de les suprèssions].
Vos pouede adés [$1 vêre cela vèrsion] se vos o voléd.",
'rev-suppressed-text-unhide' => "Ceta vèrsion de la pâge est étâye '''rèprimâye'''.
-Y pôt avêr més de dètalys dedens lo [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} jornal de les rèprèssions].
+Y pôt avêr més de dètalys sur lo [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} jornal de les rèprèssions].
Vos pouede adés [$1 vêre cela vèrsion] se vos o voléd.",
'rev-deleted-text-view' => "Ceta vèrsion de la pâge est étâye '''suprimâye'''.
-Vos la pouede vêre ; y pôt avêr més de dètalys dedens lo [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} jornal de les suprèssions].",
+Vos la pouede vêre ; y pôt avêr més de dètalys sur lo [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} jornal de les suprèssions].",
'rev-suppressed-text-view' => "Ceta vèrsion de la pâge est étâye '''rèprimâye'''.
-Vos la pouede vêre ; y pôt avêr més de dètalys dedens lo [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} jornal de les rèprèssions].",
+Vos la pouede vêre ; y pôt avêr més de dètalys sur lo [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} jornal de les rèprèssions].",
'rev-deleted-no-diff' => "Vos pouede pas vêre ceta dif perce que yona de les vèrsions est étâye '''suprimâye'''.
-Y pôt avêr més de dètalys dedens lo [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} jornal de les suprèssions].",
+Y pôt avêr més de dètalys sur lo [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} jornal de les suprèssions].",
'rev-suppressed-no-diff' => "Vos pouede pas vêre ceta dif, yona de les vèrsions est étâye '''suprimâye'''.",
'rev-deleted-unhide-diff' => "Yona de les vèrsions de ceta dif est étâye '''suprimâye'''.
-Y pôt avêr més de dètalys dedens lo [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} jornal de les suprèssions].
+Y pôt avêr més de dètalys sur lo [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} jornal de les suprèssions].
Vos pouede adés [$1 vêre cela dif] se vos o voléd.",
'rev-suppressed-unhide-diff' => "Yona de les vèrsions de ceta dif est étâye '''rèprimâye'''.
-Y pôt avêr més de dètalys dedens lo [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} jornal de les rèprèssions].
+Y pôt avêr més de dètalys sur lo [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} jornal de les rèprèssions].
Vos pouede adés [$1 vêre cela dif] se vos o voléd.",
'rev-deleted-diff-view' => "Yona de les vèrsions de ceta dif est étâye '''suprimâye'''.
-Vos pouede vêre ceta dif ; y pôt avêr més de dètalys dedens lo [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} jornal de les suprèssions].",
+Vos pouede vêre ceta dif ; y pôt avêr més de dètalys sur lo [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} jornal de les suprèssions].",
'rev-suppressed-diff-view' => "Yona de les vèrsions de ceta dif est étâye '''rèprimâye'''.
-Vos pouede vêre ceta dif ; y pôt avêr més de dètalys dedens lo [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} jornal de les rèprèssions].",
+Vos pouede vêre ceta dif ; y pôt avêr més de dètalys sur lo [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} jornal de les rèprèssions].",
'rev-delundel' => 'montrar / cachiér',
'rev-showdeleted' => 'montrar',
'revisiondelete' => 'Suprimar / refâre des vèrsions',
'loginlanguagelabel' => 'Spräke: $1',
'suspicious-userlogout' => 'Dan Oufmäldönjfrååge wörd ferwaigred, deer ja fermouslik foon en defäkte browser unti en cache-proxy sånd wörd.',
-# E-mail sending
+# Email sending
'php-mail-error-unknown' => 'Ünbekäänd feeler mä det funktsjuun mail() faan PHP.',
'user-mail-no-addy' => 'Köö niinj e-mail schake suner e-mail-adres.',
'user-mail-no-body' => 'Dü wulst en e-mail saner tekst wechsjüür.',
'search-interwiki-default' => '$1 resultoote:',
'search-interwiki-more' => '(widere)',
'search-relatedarticle' => 'früne',
-'mwsuggest-disable' => 'forsliike per Ajax deaktiviire',
+'mwsuggest-disable' => "Föörslacher för't sjüken deaktiwiare",
'searcheverything-enable' => 'Onj ål noomerüme säke',
'searchrelated' => 'früne',
'searchall' => 'åle',
'prefs-displaywatchlist' => "Mögelkhaiden för't uunwisin",
'prefs-diffs' => 'Ferskeel',
-# User preference: e-mail validation using jQuery
+# User preference: email validation using jQuery
'email-address-validity-valid' => 'Detdiar E-Mail-adres schocht gud ütj.',
'email-address-validity-invalid' => 'Du en echt E-Mail-adres uun.',
# Special:ListGroupRights
'listgrouprights-members' => '(lasmoote-list)',
-# E-mail user
+# Email user
'emailuser' => 'E-mail tu dideere brüker',
# Watchlist
Unha páxina trátase como páxina de homónimos cando nela se usa un modelo que está ligado desde [[MediaWiki:Disambiguationspage]].",
'pageswithprop' => 'Páxinas cunha propiedade de páxina',
+'pageswithprop-legend' => 'Páxinas cunha propiedade de páxina',
'pageswithprop-text' => 'Esta páxina lista aquelas páxinas que utilizan unha propiedade de páxina determinada.',
'pageswithprop-prop' => 'Nome da propiedade:',
+'pageswithprop-submit' => 'Mostrar',
'doubleredirects' => 'Redireccións dobres',
'doubleredirectstext' => 'Esta lista contén as páxinas que redirixen cara a outras páxinas de redirección.
'duration-centuries' => '$1 {{PLURAL:$1|século|séculos}}',
'duration-millennia' => '$1 {{PLURAL:$1|milenio|milenios}}',
-# Unknown messages
-'pageswithprop-legend' => 'Páxinas cunha propiedade de páxina',
-'pageswithprop-submit' => 'Mostrar',
+# Image rotation
+'rotate-comment' => 'Imaxe rotada $1 {{PLURAL:$1|grao|graos}} en sentido horario',
+
);
'''הוא טרם נשמר!'''",
'sitejspreview' => "'''זכרו שזו רק תצוגה מקדימה של קוד ה־JavaScript הזה.'''
'''הוא טרם נשמר!'''",
-'userinvalidcssjstitle' => "'''אזהרה''': העיצוב \"\$1\" אינו קיים.
+'userinvalidcssjstitle' => "'''אזהרה:''' העיצוב \"\$1\" אינו קיים.
דפי .css ו־.js מותאמים אישית משתמשים בכותרת עם אותיות קטנות – למשל, {{ns:user}}:דוגמה/vector.css ולא {{ns:user}}:דוגמה/Vector.css.",
'updated' => '(מעודכן)',
'note' => "'''הערה:'''",
'showingresults' => "{{PLURAL:$1|מוצגת תוצאה '''אחת'''|מוצגות עד '''$1''' תוצאות}} החל ממספר '''$2''':",
'showingresultsnum' => "{{PLURAL:$3|מוצגת תוצאה '''אחת'''|מוצגות '''$3''' תוצאות}} החל ממספר '''$2''':",
'showingresultsheader' => "{{PLURAL:$5|תוצאה '''$1''' מתוך '''$3'''|תוצאות '''$1 - $2''' מתוך '''$3'''}} עבור '''$4'''",
-'nonefound' => "'''הערה''': כברירת מחדל, החיפוש מבוצע במספר מרחבי שם בלבד. באפשרותכם לכתוב '''all:''' לפני מונח החיפוש כדי לחפש בכל הדפים (כולל דפי שיחה, תבניות, ועוד), או לכתוב לפני מונח החיפוש את מרחב השם שאתם מעוניינים בו.",
+'nonefound' => "'''הערה:''' כברירת מחדל, החיפוש מבוצע במספר מרחבי שם בלבד. באפשרותכם לכתוב '''all:''' לפני מונח החיפוש כדי לחפש בכל הדפים (כולל דפי שיחה, תבניות, ועוד), או לכתוב לפני מונח החיפוש את מרחב השם שאתם מעוניינים בו.",
'search-nonefound' => 'לא נמצאו תוצאות המתאימות לחיפוש.',
'powersearch' => 'חיפוש מתקדם',
'powersearch-legend' => 'חיפוש מתקדם',
דף נחשב לדף פירושונים אם הוא משתמש בתבנית המקושרת מהדף [[MediaWiki:Disambiguationspage]].",
'pageswithprop' => 'דפים עם מאפיין דף',
-'pageswithprop-text' => 'הדף הזה נותן רשימה של דפים שמשתמשים במאפיין דף מסוים.',
+'pageswithprop-legend' => 'דפים עם מאפיין דף',
+'pageswithprop-text' => 'בדף זה מופיעה רשימת דפים שמשתמשים במאפיין דף מסוים.',
'pageswithprop-prop' => 'שם המאפיין:',
+'pageswithprop-submit' => 'הצגה',
'doubleredirects' => 'הפניות כפולות',
'doubleredirectstext' => 'בדף הזה מופיעה רשימת דפי הפניה שמפנים לדפי הפניה אחרים.
'unblockiptext' => 'השתמשו בטופס שלהלן כדי להחזיר את הרשאות הכתיבה למשתמש או כתובת IP חסומים.',
'ipusubmit' => 'שחרור חסימה',
'unblocked' => 'המשתמש [[User:$1|$1]] שוחרר מחסימתו.',
-'unblocked-range' => '$1 שוחרר מחסימתו',
+'unblocked-range' => '$1 שוחרר מחסימתו.',
'unblocked-id' => 'חסימה מספר $1 שוחררה.',
'blocklist' => 'משתמשים חסומים',
'ipblocklist' => 'משתמשים חסומים',
'scarytranscludetoolong' => '[כתובת ה־URL ארוכה מדי]',
# Delete conflict
-'deletedwhileediting' => "'''אזהרה''': דף זה נמחק לאחר שהתחלתם לערוך!",
+'deletedwhileediting' => "'''אזהרה:''' דף זה נמחק לאחר שהתחלתם לערוך!",
'confirmrecreate' => "הדף נמחק על ידי המשתמש [[User:$1|$1]] ([[User talk:$1|שיחה]]) לאחר שהתחלתם לערוך אותו, מסיבה זו:
:'''$2'''
אנא אשרו שאתם אכן רוצים ליצור מחדש את הדף.",
'duration-centuries' => '{{PLURAL:$1|מאה שנה|מאתיים שנה|$1 מאות שנים}}',
'duration-millennia' => '{{PLURAL:$1|אלף שנה|אלפיים שנה|$1 אלפי שנים}}',
-# Unknown messages
-'pageswithprop-legend' => 'דפים עם מאפיין דף',
-'pageswithprop-submit' => 'שליחה',
+# Image rotation
+'rotate-comment' => 'התמונה סובבה {{PLURAL:$1|במעלה אחת|ב֫־$1 מעלות}} בכיוון השעון',
+
);
'loginlanguagelabel' => 'Jezik: $1',
'suspicious-userlogout' => 'Vaš zahtjev za odjavu je odbijen jer to izgleda kao da je poslan preko pokvarenog preglednika ili keširanog posrednika (proxyja).',
-# E-mail sending
+# Email sending
'php-mail-error-unknown' => 'Nepoznata pogreška u PHP-mail() funkciji',
'user-mail-no-addy' => 'Pokušaj slanja e-maila bez e-mail adrese.',
'prefs-displaywatchlist' => 'Opcije prikaza',
'prefs-diffs' => 'razl',
-# User preference: e-mail validation using jQuery
-'email-address-validity-valid' => 'E-mail adresa se pokazuje ispravnom',
-'email-address-validity-invalid' => 'Unesite valjanu e-mail adresu',
+# User preference: email validation using jQuery
+'email-address-validity-valid' => 'Adresa e-pošte pokazuje se ispravnom',
+'email-address-validity-invalid' => 'Unesite valjanu adresu e-pošte',
# User rights
'userrights' => 'Upravljanje suradničkim pravima',
'listgrouprights-addgroup-self-all' => 'Dodaj sve skupine vlastitom računu',
'listgrouprights-removegroup-self-all' => 'Uklonite sve skupine iz vlastitog računa',
-# E-mail user
+# Email user
'mailnologin' => 'Nema adrese pošiljaoca',
'mailnologintext' => 'Morate biti [[Special:UserLogin|prijavljeni]]
i imati valjanu adresu e-pošte u svojim [[Special:Preferences|postavkama]]
'anononlyblock' => 'samo IP adrese',
'noautoblockblock' => 'blokiranje samoga sebe je onemogućeno',
'createaccountblock' => 'blokirano stvaranje suradničkog računa',
-'emailblock' => 'e-mail je blokiran',
+'emailblock' => 'e-pošta je blokirana',
'blocklist-nousertalk' => 'bez uređivanja vlastite stranice za razgovor',
'ipblocklist-empty' => 'Popis blokiranja je prazan.',
'ipblocklist-no-results' => 'Tražena IP adresa ili suradničko ime nije blokirano.',
'unblocklink' => 'deblokiraj',
'change-blocklink' => 'promijeni blokiranje',
'contribslink' => 'doprinosi',
-'emaillink' => 'pošalji e-mail',
+'emaillink' => 'pošalji e-poruku',
'autoblocker' => 'Automatski ste blokirani jer je Vašu IP adresu nedavno koristio "[[User:$1|$1]]" koji je blokiran zbog: "$2".',
'blocklogpage' => 'Evidencija blokiranja',
'blocklog-showlog' => 'Ovaj suradnik je ranije blokiran.
'monthsall' => 'sve',
'limitall' => 'sve',
-# E-mail address confirmation
+# Email address confirmation
'confirmemail' => 'Potvrda e-mail adrese',
'confirmemail_noemail' => 'Niste unijeli važeću e-mail adresu u Vaše [[Special:Preferences|suradničke postavke]].',
'confirmemail_text' => 'U ovom wikiju morate prije korištenja e-mail naredbi potvrditi svoju e-mail adresu. Kliknite na gumb ispod kako biste poslali poruku s potvrdom na Vašu adresu. U poruci će biti poveznica koju morate otvoriti u svom web pregledniku i time potvrditi svoju e-mail adresu.',
'disambiguations-text' => "Slědowace strony wobsahuja znajmjeńša jedyn wotkaz k stronje '''rozjasnjenja wjacezmyslnosće'''. Měli město toho na poprawnu stronu wotkazać.<br />Maja stronu za stronu rozjasnjenja wjacezmyslnosće, jeli předłohu wužiwa, na kotruž so wot [[MediaWiki:Disambiguationspage]] wotkazuje.",
'pageswithprop' => 'Strony z kajkosću strony',
+'pageswithprop-legend' => 'Strony z kajkosću strony',
'pageswithprop-text' => 'Tuta strona nalistuje strony, kotrež wěstu kajkosć strony wužiwaja.',
'pageswithprop-prop' => 'Mjeno kajkosće:',
+'pageswithprop-submit' => 'Wotpósłać',
'doubleredirects' => 'Dwójne daleposrědkowanja',
'doubleredirectstext' => 'Tuta strona nalistuje strony, kotrež k druhim daleposrědkowanskim stronam dale posrědkuja.
'duration-centuries' => '$1 {{PLURAL:$1|lětstotk|lětstotkaj|lětstotki|lětstotkow}}',
'duration-millennia' => '$1 {{PLURAL:$1|lěttysac|lěttysacaj|lěttysacy|lěttysacow}}',
-# Unknown messages
-'pageswithprop-legend' => 'Strony z kajkosću strony',
-'pageswithprop-submit' => 'Wotpósłać',
+# Image rotation
+'rotate-comment' => 'Wobraz wo $1 {{PLURAL:$1|stopjeń|stopnjej|stopnje|stopnjow}} w směrje časnika wjerćany',
+
);
# Vector skin
'vector-action-addsection' => 'Ավելացնել քննարկում',
'vector-action-delete' => 'Ջնջել',
-'vector-action-move' => 'Õ\8eÕ¥Ö\80Õ¡Õ¶Õ¾Õ¡Õ¶Õ¥Õ¬',
+'vector-action-move' => 'Õ\8fÕ¥Õ²Õ¡Ö\83Õ¸ÕÕ¥Õ¬ Õ¡ÕµÕ½ Õ§Õ»Õ¨',
'vector-action-protect' => 'Պաշտպանել',
'vector-action-undelete' => 'Վերականգնել',
'vector-action-unprotect' => 'Հանել պաշտպանումից',
'pool-errorunknown' => 'Անհայտ սխալ',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
-'aboutsite' => '{{grammar:genitive|{{SITENAME}}}}ի մասին',
+'aboutsite' => '{{grammar:genitive|{{SITENAME}}}} մասին',
'aboutpage' => 'Project:Էությունը',
'copyright' => 'Կայքի բովանդակությունը գտնվում է «$1» արտոնագրի տակ։',
'copyrightpage' => '{{ns:project}}:Հեղինակային իրավունքներ',
'welcomecreation-msg' => 'Ձեր հաշիվն ստեղծված է։
Չմոռանաք փոփոխել ձեր [[Special:Preferences|նախընտրությունները]]։',
'yourname' => 'Մասնակցի անուն՝',
-'yourpassword' => 'Գաղտնաբառ.',
+'yourpassword' => 'Գաղտնաբառ՝',
'yourpasswordagain' => 'Կրկնեք գաղտնաբառը',
'remembermypassword' => 'Հիշել իմ մուտքագրված տվյալները այս համակարգչում ($1 {{PLURAL:$1|օրից|օրից}} ոչ ավել ժամկետով)',
'yourdomainname' => 'Ձեր դոմենը՝',
# Content models
'content-model-wikitext' => 'վիքիտեքստ',
+'content-model-javascript' => 'ՋավաՍկրիպտ',
# "Undo" feature
'undo-success' => 'Խմբագրումը կարող է հետ շրջվել։ Ստուգեք տարբերակների համեմատությունը ստորև, որպեսզի համոզվեք, որ դա է ձեզ հետաքրքրող փոփոխությունը և մատնահարեք «Հիշել էջը»՝ գործողությունն ավարտելու համար։',
'prefs-emailconfirm-label' => 'Էլ-փոստի վավերացում․',
'prefs-textboxsize' => 'Խմբագրման պատուհանի չափը',
'youremail' => 'Էլեկտրոնային փոստ.',
-'username' => 'Մասնակցի անուն.',
+'username' => '{{GENDER:$1|Մասնակցի անուն}}՝',
'uid' => 'Մասնակցի իդենտիֆիկատոր.',
'prefs-memberingroups' => 'Անդամակցության {{PLURAL:$1|խումբ|խմբեր}}.',
'prefs-registration' => 'Գրանցման ամսաթիվը․',
Փոխարենը նրանք, հավանաբար, պետք է հղեն համապատասխան թեմային։<br />
Էջը համարվում է երկիմաստության փարատման էջ, եթե այն պարունակում է [[MediaWiki:Disambiguationspage]] էջում ընդգրկված կաղապարներից որևէ մեկը։',
+'pageswithprop-submit' => 'Անցնել',
+
'doubleredirects' => 'Կրկնակի վերահղումներ',
'doubleredirectstext' => 'Այս էջում բերված են վերահղման էջերին վերահղող էջերը։ Յուրաքանչյուր տող պարունակում է հղումներ դեպի առաջին և երկրորդ վերահղումները, ինչպես նաև երկրորդ վերահղման նպատակային էջի առաջին տողը, որում սովորաբար նշված է էջի անվանումը, որին պետք է հղի նաև առաջին վերահղումը։',
'double-redirect-fixed-move' => '«[[$1]]» էջը վերանվանված է և այժմ վերահղում է «[[$2]]» էջին։',
'ncategories' => '$1 {{PLURAL:$1|կատեգորիա|կատեգորիաներ}}',
'ninterwikis' => '$1 {{PLURAL:$1|ինտերվիքի|ինտերվիքիներ}}',
'nlinks' => '$1 {{PLURAL:$1|հղում|հղումներ}}',
-'nmembers' => '$1 {{PLURAL:$1|անդամ|անդամ}}',
+'nmembers' => '$1 {{PLURAL:$1|անդամ|անդամներ}}',
'nrevisions' => '$1 {{PLURAL:$1|տարբերակ|տարբերակներ}}',
'nviews' => '$1 {{PLURAL:$1|դիտում|դիտումներ}}',
'nimagelinks' => 'օգտագործվում է $1 {{PLURAL:$1|էջ|էջեր}}',
# Restrictions (nouns)
'restriction-edit' => 'Խմբագրում',
-'restriction-move' => 'Õ\8fÕ¥Õ²Õ¡Ö\83Õ¸ÕÕ¸Ö\82Õ´',
+'restriction-move' => 'Õ\8fÕ¥Õ²Õ¡Ö\83Õ¸ÕÕ¥Õ¬',
'restriction-create' => 'Ստեղծում',
-'restriction-upload' => 'Ô²Õ¥Õ¼Õ¶Õ¸Ö\82Õ´',
+'restriction-upload' => 'Ô²Õ¥Õ¼Õ¶Õ¥Õ¬',
# Restriction levels
'restriction-level-sysop' => 'լրիվ պաշտպանված',
'tooltip-ca-protect' => 'Պաշտպանել այս էջը',
'tooltip-ca-delete' => 'Ջնջել այս էջը',
'tooltip-ca-undelete' => 'Վերականգնել այս էջի խմբագրումները՝ կատարված ջնջումից առաջ',
-'tooltip-ca-move' => 'Õ\8eÕ¥Ö\80Õ¡Õ¶Õ¾Õ¡Õ¶Õ¥Õ¬ էջը',
+'tooltip-ca-move' => 'Õ\8fÕ¥Õ²Õ¡Ö\83Õ¸ÕÕ¥Õ¬ Õ¡ÕµÕ½ էջը',
'tooltip-ca-watch' => 'Ավելացնել այս էջը ձեր հսկողության ցանկին',
'tooltip-ca-unwatch' => 'Հանել այս էջը ձեր հսկողության ցանկից',
'tooltip-search' => 'Որոնել {{SITENAME}} կայքում',
'tooltip-search-go' => 'Անցնել այս ճշգրիտ անվանումով էջին',
'tooltip-search-fulltext' => 'Գտնել այս տեքստով էջերը',
-'tooltip-p-logo' => 'Ô³Õ¬ÕÕ¡Õ¾Õ¸Ö\80 Õ§Õ»',
+'tooltip-p-logo' => 'Ô±ÕµÖ\81Õ¥Õ¬Õ¥Ö\84 Ô³Õ¬ÕÕ¡Õ¾Õ¸Ö\80 Ô·Õ»Õ¨',
'tooltip-n-mainpage' => 'Այցելեք Գլխավոր Էջը',
'tooltip-n-mainpage-description' => 'Անցնել գլխավոր էջ',
'tooltip-n-portal' => 'Նախագծի մասին, որտեղ գտնել ինչը, ինչով կարող եք օգնել',
'skinname-myskin' => 'ԻմՏեսք',
'skinname-chick' => 'Ծիտ',
'skinname-simple' => 'Պարզ',
+'skinname-modern' => 'Մոդերն',
+'skinname-vector' => 'Սովորական',
# Patrolling
'markaspatrolleddiff' => 'Նշել որպես ստուգված',
'mediawarning' => "'''Զգուշացում'''. այս նիշքի տեսակը կարող է պարունակել վնասակար ծրագրային կոդ։ Այն կիրարկելը կարող է վտանգել ձեր համակարգը։",
'imagemaxsize' => 'Պատկերի էջում պատկերի չափի սահմանափակում.',
'thumbsize' => 'Պատկերների փոքրացված չափ.',
+'widthheight' => '$1 × $2',
'widthheightpage' => '$1 × $2, $3 էջեր',
'file-info' => 'նիշքի չափ՝ $1, MIME-տեսակ՝ $2',
'file-info-size' => '$1 × $2 փիքսել, նիշքի չափը՝ $3, MIME-տեսակը՝ $4',
'exif-componentsconfiguration-0' => 'գոյություն չունի',
'exif-urgency-normal' => 'Նորմալ ($1)',
+'exif-urgency-low' => 'Թույլ ($1)',
+'exif-urgency-high' => 'Ուժեղ ($1)',
# External editor support
'edit-externally' => 'Խմբագրել այս նիշքը արտաքին խմբագրիչով',
Un pagina se tracta como pagina de disambiguation si illo usa un patrono que es ligate ab [[MediaWiki:Disambiguationspage]].",
'pageswithprop' => 'Paginas con un proprietate de pagina',
+'pageswithprop-legend' => 'Paginas con un proprietate de pagina',
'pageswithprop-text' => 'Iste pagina lista le paginas que usa un certe proprietate de pagina.',
'pageswithprop-prop' => 'Nomine del proprietate:',
+'pageswithprop-submit' => 'Va',
'doubleredirects' => 'Redirectiones duple',
'doubleredirectstext' => 'Iste pagina lista paginas de redirection verso altere paginas de redirection.
'duration-centuries' => '$1 {{PLURAL:$1|seculo|seculos}}',
'duration-millennia' => '$1 {{PLURAL:$1|millennio|millennios}}',
-# Unknown messages
-'pageswithprop-legend' => 'Paginas con un proprietate de pagina',
-'pageswithprop-submit' => 'Va',
+# Image rotation
+'rotate-comment' => 'Imagine rotate de $1 {{PLURAL:$1|grado|grados}} in senso horologic',
+
);
Halaman-halaman tersebut seharusnya berpaut ke topik-topik yang sesuai.<br />
Suatu halaman dianggap sebagai halaman disambiguasi apabila halaman tersebut menggunakan templat yang terhubung ke [[MediaWiki:Disambiguationspage]].",
+'pageswithprop' => 'Halaman dengan halaman properti',
+'pageswithprop-legend' => 'Halaman dengan halaman properti',
+'pageswithprop-text' => 'Halaman ini berisi daftar halaman yang menggunakan properti halaman tertentu.',
+'pageswithprop-prop' => 'Nama properti:',
+'pageswithprop-submit' => 'Pergi',
+
'doubleredirects' => 'Pengalihan ganda',
'doubleredirectstext' => 'Halaman ini memuat daftar halaman yang dialihkan ke halaman pengalihan yang lain.
Setiap baris memuat pranala ke pengalihan pertama dan pengalihan kedua serta target dari pengalihan kedua yang umumnya adalah halaman yang "sebenarnya". Halaman peralihan pertama seharusnya dialihkan ke halaman yang bukan merupakan halaman peralihan.
'duration-centuries' => '{{PLURAL:$1||}}$1 abad',
'duration-millennia' => '{{PLURAL:$1||}}$1 milenium',
+# Image rotation
+'rotate-comment' => 'Gambar diputar $1 {{PLURAL:$1|derajat}} searah jarum jam',
+
);
Dagitoy ket embes a nasken a maisilpoda kadagiti maitutop a panid.<br />
Ti panid ket matrato a kas panangilawlawag a panid no agusar ti plantilia a nakasilpo manipud idiay [[MediaWiki:Disambiguationspage]].",
+'pageswithprop' => 'Pampanid nga adda maysa a tagikua ti panid',
+'pageswithprop-legend' => 'Pampanid nga adda maysa a tagikua ti panid',
+'pageswithprop-text' => 'Daytoy a panid ket ilistana ti pampanid nga agus-usar ti naisangayan a tagikua ti panid.',
+'pageswithprop-prop' => 'Nagan ti tagikua:',
+'pageswithprop-submit' => 'Inkan',
+
'doubleredirects' => 'Dagiti namindua a naibaw-ing',
'doubleredirectstext' => 'Daytoy a panid ket ilistana dagiti panid nga agbaw-ing kadagiti sabsabali a baw-ing a pampanid.
Iti tunggal maysa nga aray ket adda nagyanna kadagiti panilpo iti umuna ken maikadua a baw-ing, ken iti puntaan iti maikadua a baw-ing, nga isu ti "pudno" a puntaan ti panid, nga ti umuna a baw-ing ket isu ti ipatudona.
'duration-centuries' => '$1 {{PLURAL:$1|siglo|sig-siglo}}',
'duration-millennia' => '$1 {{PLURAL:$1|milenio|mil-milenio}}',
+# Image rotation
+'rotate-comment' => 'Ti ladawan ket napusipos babaen ti $1 {{PLURAL:$1|a degrado|a degdegrado}} nga agpakanawan',
+
);
Vengono considerate pagine di disambiguazione tutte quelle che contengono i template elencati in [[MediaWiki:Disambiguationspage]].",
'pageswithprop' => 'Pagine con una pagina di proprietà',
+'pageswithprop-legend' => 'Pagine con una pagina di proprietà',
'pageswithprop-text' => 'Questa pagina elenca le pagine che utilizzano una particolare pagina di proprietà.',
'pageswithprop-prop' => 'Nome proprietà:',
+'pageswithprop-submit' => 'Vai',
'doubleredirects' => 'Redirect doppi',
'doubleredirectstext' => 'In questa pagina sono elencate pagine che reindirizzano ad altre pagine di redirect.
'duration-centuries' => '$1 {{PLURAL:$1|secolo|secoli}}',
'duration-millennia' => '$1 {{PLURAL:$1|millennio|millenni}}',
-# Unknown messages
-'pageswithprop-legend' => 'Pagine con una pagina di proprietà',
-'pageswithprop-submit' => 'Vai',
+# Image rotation
+'rotate-comment' => 'Immagine ruotata di $1 {{PLURAL:$1|grado|gradi}} in senso orario',
+
);
このメッセージを無視して、引き続き以前のパスワードを使用し続けることができます。',
'noemail' => '利用者「$1」のメールアドレスは登録されていません。',
'noemailcreate' => '有効なメールアドレスを入力する必要があります',
-'passwordsent' => '新しいパスワードを「$1」に登録されたメールアドレスに送信しました。
-ã\83¡ã\83¼ã\83«ã\82\92å\8f\97ã\81\91å\8f\96ã\81£たら、再度ログインしてください。',
+'passwordsent' => '新しいパスワードを「$1」に登録されたメールアドレスにお送りしました。
+ã\83¡ã\83¼ã\83«ã\81\8cå±\8aã\81\84たら、再度ログインしてください。',
'blocked-mailpassword' => 'ご使用中のIPアドレスからの編集はブロックされており、不正利用防止のため、パスワードの再発行機能は使用できません。',
'eauthentsent' => '指定したメールアドレスに、アドレス確認のためのメールをお送りしました。
メールに記載された手順に従って、このアカウントの所有者であることの確認が取れると、このアカウント宛のメールを受け取れるようになります。',
# Special:ChangeEmail
'changeemail' => 'メールアドレスの変更',
-'changeemail-header' => 'ã\82¢ã\82«ã\82¦ã\83³ã\83\88ã\81®ã\83¡ã\83¼ã\83«ã\82¢ã\83\89ã\83¬ã\82¹ã\82\92変更',
+'changeemail-header' => 'ã\82¢ã\82«ã\82¦ã\83³ã\83\88ã\81®ã\83¡ã\83¼ã\83«ã\82¢ã\83\89ã\83¬ã\82¹ã\81®変更',
'changeemail-text' => 'このフォームではメールアドレスを変更できます。この変更を確認するためにパスワードを入力する必要があります。',
'changeemail-no-info' => 'このページに直接アクセスするためにはログインしている必要があります。',
'changeemail-oldemail' => '現在のメールアドレス:',
'loginreqtitle' => 'ログインが必要',
'loginreqlink' => 'ログイン',
'loginreqpagetext' => '他のページを閲覧するには$1する必要があります。',
-'accmailtitle' => 'パスワードをお送りしました。',
+'accmailtitle' => 'パスワードをお送りしました',
'accmailtext' => "[[User talk:$1|$1]]のために無作為に生成したパスワードを、$2に送信しました。
この新アカウントのパスワードは、ログインした際に''[[Special:ChangePassword|パスワード変更]]''ページで変更できます。",
'newarticletext' => "まだ存在しないページへのリンクをたどりました。
このページを新規作成するには、ページの内容を以下のボックスに記入してください (詳しくは[[{{MediaWiki:Helppage}}|ヘルプページ]]を参照してください)。
誤ってこのページにたどり着いた場合には、ブラウザーの'''戻る'''ボタンで前のページに戻ってください。",
-'anontalkpagetext' => "----''このページはアカウントをまだ作成していないか使用していない匿名利用者のための議論ページです。
-匿名利用者を識別するために、利用者名の代わりにIPアドレスが使用されています。
-IP アドレスは複数の利用者で共有されている場合があります。
-もし、あなたが匿名利用者であり、自分に関係のないコメントが寄せられている考えられる場合は、[[Special:UserLogin/signup|アカウントを作成する]]か[[Special:UserLogin|ログインして]]他の匿名利用者と間違えられないようにしてください。''",
+'anontalkpagetext' => "----
+''このページはアカウントをまだ作成していないか使用していない匿名利用者のための議論ページです。''
+
+匿名利用者を識別するために、利用者名の代わりにIPアドレスが使用されています。IP アドレスは複数の利用者で共有されている場合があります。もし、あなたが匿名利用者であり、自分に関係のないコメントが寄せられていると考えられる場合は、[[Special:UserLogin/signup|アカウントを作成する]]か[[Special:UserLogin|ログインして]]他の匿名利用者と間違えられないようにしてください。",
'noarticletext' => '現在このページには内容がありません。
他のページ内で[[Special:Search/{{PAGENAME}}|このページ名を検索]]、
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} 関連する記録を検索]、
[[MediaWiki:Disambiguationspage]] にリンクがあるテンプレートを使用しているページを、曖昧さ回避ページと見なします。",
'pageswithprop' => 'ページプロパティがあるページ',
+'pageswithprop-legend' => 'ページプロパティがあるページ',
'pageswithprop-text' => 'このページでは、特定のページプロパティを持つページを列挙します。',
'pageswithprop-prop' => 'プロパティ名:',
+'pageswithprop-submit' => '実行',
'doubleredirects' => '二重転送',
'doubleredirectstext' => 'このページでは、転送ページへの転送ページを列挙します。
'unblockip' => 'ブロックを解除',
'unblockiptext' => '以下のフォームで利用者またはIPアドレスのブロックを解除できます。',
'ipusubmit' => 'このブロックを解除',
-'unblocked' => '[[User:$1|$1]]のブロックを解除しました',
-'unblocked-range' => '$1のブロックを解除しました',
-'unblocked-id' => 'ブロック$1を除去しました',
+'unblocked' => '[[User:$1|$1]]のブロックを解除しました。',
+'unblocked-range' => '$1のブロックを解除しました。',
+'unblocked-id' => 'ブロック$1を除去しました。',
'blocklist' => 'ブロックされている利用者',
'ipblocklist' => 'ブロックされている利用者',
'ipblocklist-legend' => 'ブロックされている利用者の検索',
この確認コードは $4 に期限切れになります。',
'confirmemail_invalidated' => 'メールアドレスの確認が中止されました',
-'invalidateemail' => 'メールアドレスの認証中止',
+'invalidateemail' => 'メールアドレスの確認中止',
# Scary transclusion
'scarytranscludedisabled' => '[ウィキ間の参照読み込みは無効になっています]',
'duration-centuries' => '$1 {{PLURAL:$1|世紀}}',
'duration-millennia' => '$1{{PLURAL:$1|,000 年}}',
-# Unknown messages
-'pageswithprop-legend' => 'ページプロパティがあるページ',
-'pageswithprop-submit' => '実行',
+# Image rotation
+'rotate-comment' => '画像を時計回りに $1 {{PLURAL:$1|度}}回転',
+
);
გვერდი ითვლება მრავამნიშვნელოვნად, თუ მასში განთავსებულია თარგი, რომლის სახელიც მითითებულია გვერდზე [[MediaWiki:Disambiguationspage]].",
'pageswithprop-prop' => 'თვისების სახელი:',
+'pageswithprop-submit' => 'მიდი',
'doubleredirects' => 'ორმაგი გადამისამართება',
'doubleredirectstext' => 'ამ გვერდზე ჩამოთვლილია გვერდები, რომლებიც გადამისამართებულია სხვა გადამისამართების გვერდებზე.
'blocklog-showsuppresslog' => 'ეს მომხმარებლი უკვე დამალულია და დაბლოკილია.
დაბლოკვათა ჟურნალი ქვემოთ მოყვანილია:',
'blocklogentry' => 'დაიბლოკა [[$1]]. ბლოკირების ვადა $2 $3.',
-'reblock-logentry' => 'á\83¨á\83\94á\83\90á\83¡á\83¬á\83\9dá\83 á\83\90 á\83\91á\83\9aá\83\9dá\83\99á\83\98á\83 á\83\94á\83\91á\83\98á\83¡ á\83\99á\83\9dá\83\9cá\83¤á\83\98á\83\92á\83£á\83 á\83\90á\83ªá\83\98á\83\90 [[$1]]-á\83¡á\83\97á\83\95á\83\98á\83¡, á\83\95á\83\90á\83\93á\83\90 á\83\92á\83\90á\83¡á\83\93á\83\98á\83¡ $2 $3',
+'reblock-logentry' => 'á\83¨á\83\94á\83\90á\83¡á\83¬á\83\9dá\83 á\83\90 á\83\91á\83\9aá\83\9dá\83\99á\83\98á\83 á\83\94á\83\91á\83\98á\83¡ á\83\99á\83\9dá\83\9cá\83¤á\83\98á\83\92á\83£á\83 á\83\90á\83ªá\83\98á\83\90 [[$1]]-á\83¡á\83\97á\83\95á\83\98á\83¡, á\83\91á\83\9aá\83\9dá\83\99á\83\98á\83 á\83\94á\83\91á\83\98á\83¡ á\83\95á\83\90á\83\93á\83\90á\83\90 $2 $3',
'blocklogtext' => 'ეს არის მომხმარებლების დაბლოკვის და განბლოკვის ჟურნალი.
ავტომატურად დაბლოკილი IP მისამართები არაა ჩამოთვლილი.
იხილეთ [[Special:BlockList|ბლოკირებების სია]] მიმდინარე დაბლოკვებისთვის.',
'duration-centuries' => '$1 {{PLURAL:$1|საუკუნე|საუკუნე}}',
'duration-millennia' => '$1 {{PLURAL:$1|ათასწლეული|ათასწლეული}}',
-# Unknown messages
-'pageswithprop-submit' => 'მიდი',
);
'protectedpagetext' => 'Na pele vurnaisu rê qapan biya.',
'viewsourcetext' => 'Sıma şikinê çımê na pele bıvênê u kopya kerê:',
'protectedinterface' => "Na pele ''software'' rê meqalunê caunê bırnau dana, u qapana ke suıstımalu rê engel bo.",
-'editinginterface' => "'''Teme:''' Sıma hao jü pela ke serba nustê meqalunê caunê bırnau dana, vurnenê.
+'editinginterface' => "Teme:''' Sıma hawo jü pela ke serba nustê meqalunê caunê bırnau dana, vurnenê.
Vurnaisê na pele karberunê binu rê serpela karberi kena ke bıasno.
Serba çarnaişi, yardımê [//translatewiki.net/wiki/Main_Page?setlang=kiu translatewiki.net]i ra procêdoskerdene rê diqet kerê.",
'sqlhidden' => '(Persê SQLi nımıteo)',
'listgrouprights-addgroup-all' => 'Heme grubu ilawe ke',
'listgrouprights-removegroup-all' => 'Heme grubu wedare',
-# E-mail user
+# Email user
'emailuser' => 'Nê karberi rê e-poste bırusne',
'emailpage' => 'Karberi rê e-poste bırusne',
'emailfrom' => 'Kami ra:',
'toc' => '목차',
'showtoc' => '보이기',
'hidetoc' => '숨기기',
-'collapsible-collapse' => 'ì\88¨ê¸°기',
-'collapsible-expand' => '보이기',
+'collapsible-collapse' => 'ì \91기',
+'collapsible-expand' => '펼치기',
'thisisdeleted' => '$1을 보거나 되살리겠습니까?',
'viewdeleted' => '$1을 보겠습니까?',
'restorelink' => '삭제된 편집 $1개',
[[MediaWiki:Disambiguationspage]]에서 링크된 틀을 사용하는 문서를 동음이의 문서로 간주합니다.",
'pageswithprop' => '문서 속성으로 된 문서',
+'pageswithprop-legend' => '문서 속성으로 된 문서',
'pageswithprop-text' => '이 문서는 특정 문서 속성을 사용한 문서를 나타냅니다.',
'pageswithprop-prop' => '속성 이름:',
+'pageswithprop-submit' => '가기',
'doubleredirects' => '이중 넘겨주기 목록',
'doubleredirectstext' => '이 문서는 다른 넘겨주기 문서로 넘겨주고 있는 문서의 목록입니다.
'duration-centuries' => '$1{{PLURAL:$1|세기}}',
'duration-millennia' => '$1{{PLURAL:$1|천년}}',
-# Unknown messages
-'pageswithprop-legend' => '문서 속성으로 된 문서',
-'pageswithprop-submit' => '가기',
+# Image rotation
+'rotate-comment' => '그림을 시계 방향으로 $1{{PLURAL:$1|도}}로 회전함',
+
);
'history' => 'La îstoria de la hoja',
'history_short' => 'Îstoria',
'updatedmarker' => 'trocado desde mi visita de alcavo',
-'printableversion' => 'Versión apropiada para imprimir',
+'printableversion' => 'Forma apropiada para imprimir',
'permalink' => 'Atamiento permanente',
'print' => 'Imprimir',
'view' => 'Ver',
'redirectpagesub' => 'Hoja redirigida',
'lastmodifiedat' => 'Esta hoja fue trocada por la última vez el $1, a las $2.',
'protectedpage' => 'Hoja guardada',
-'jumpto' => 'Salta á:',
+'jumpto' => 'Salta a:',
'jumptonavigation' => 'navigación',
-'jumptosearch' => 'búsqueda',
+'jumptosearch' => 'búsquida',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => 'Encima de la {{SITENAME}}',
'currentevents' => 'Novedades',
'currentevents-url' => 'Project:Novedades',
'disclaimers' => 'Refuso de responsabilitá',
-'disclaimerpage' => 'Project:Rēfuso de responsabilitá jeneral',
+'disclaimerpage' => 'Project:Refuso de responsabilitá jeneral',
'edithelp' => '¿Cómo se la troca?',
'edithelppage' => 'Help:Una hoja, ¿cómodo se la troca?',
'helppage' => 'Help:Contènidos',
'mainpage' => 'La Primera Hoja',
'mainpage-description' => 'La Primera Hoja',
'policy-url' => 'Project:Politikas',
-'portal' => 'Puertal de la komunitá',
-'portal-url' => 'Project:Puertal de la komunitá',
+'portal' => 'Portal de la komunitá',
+'portal-url' => 'Project:Portal de la komunitá',
'privacy' => 'Principio de particòlaridad',
-'privacypage' => 'Project:Principio de particůlaridad',
+'privacypage' => 'Project:Principio de particòlaridad',
'badaccess' => 'Yerro de permissión',
'ok' => 'DE ACORDDO',
-'retrievedfrom' => 'Tomado del addresso "$1"',
+'retrievedfrom' => 'Acòjido del adhresso "$1"',
'youhavenewmessages' => 'Tienes $1 ($2).',
'newmessageslink' => 'mesajes nuevos',
'newmessagesdifflink' => 'el trocamiento de alcabo',
'history-title' => 'Istorya de trokamientos para «$1»',
'lineno' => 'Shurá $1:',
'compareselectedversions' => 'Comparar versiones escogidas',
-'editundo' => 'deshaze',
+'editundo' => 'des-haze',
'diff-multi' => '(No {{PLURAL:$1|es amostrado un trokamiento intermedio echo|son amostrados $1 trokamientos intermedios echos}} por {{PLURAL:$2|un usador|$2 usadores}})',
# Search results
'emailuser' => 'Embia e-mail a este usuario',
# Watchlist
-'watchlist' => 'Mi lista de escogidas',
+'watchlist' => 'Lista de akavidamiento',
'mywatchlist' => 'La mi lista de akavidamientos',
'watchlistfor2' => 'Para $1 $2',
'addedwatchtext' => "La hoja «[[:$1]]» fue ajustada a tu [[Special:Watchlist|lista de escogidas]]. Los trocamientos venideros en esta hoja i en tu hoja de diskussión associada se van indicar aí, i la hoja va aparecer '''gordo''' en la hoja de [[Special:RecentChanges|trocamientos freskos]] para hazerla más kolay de detektar.
'tooltip-pt-mycontris' => 'La lista de tus àjustamientos',
'tooltip-pt-login' => 'Te encorajamos de entrar ma no estás obligado',
'tooltip-pt-logout' => 'Salir',
-'tooltip-ca-talk' => 'Diskusyón encima del artícůlo de contènido',
-'tooltip-ca-edit' => 'Puedes trocar esta hoja. Y si puede ser, usa el botón de previsteo antes de enrejistrar la hoja',
+'tooltip-ca-talk' => 'Diskusyón encima del artíkolo',
+'tooltip-ca-edit' => 'Puedes trocar esta hoja. Te rogamos, antes de enrejistrarla, echa una ojada en kullaneando el botón de previsteo',
'tooltip-ca-addsection' => 'Empeça una nueva sección',
'tooltip-ca-viewsource' => 'Esta hoja está guardada.
Puedes ver su manadero',
-'tooltip-ca-history' => "Enderechamientos passados d'esta hoja",
+'tooltip-ca-history' => 'Enderechamientos passados de esta hoja',
'tooltip-ca-protect' => 'Guardar esta hoja',
'tooltip-ca-delete' => 'Efassar esta hoja',
'tooltip-ca-move' => 'Taxirea (renombra) esta hoja',
'tooltip-search-fulltext' => 'Busca este teksto en las hojas',
'tooltip-p-logo' => 'Vate a la primera hoja',
'tooltip-n-mainpage' => 'Visita la primera hoja',
-'tooltip-n-mainpage-description' => 'Visita la primera hoja',
+'tooltip-n-mainpage-description' => 'Vate a la primera hoja',
'tooltip-n-portal' => 'Encima del projeto, lo que puedes hazer y ánde topar todo',
-'tooltip-n-currentevents' => 'Información encima de los acontècimientos de oy día',
+'tooltip-n-currentevents' => 'Jhaberes y acontècimientos de oy día',
'tooltip-n-recentchanges' => 'Lista de los trocamientos muevos en el viki',
'tooltip-n-randompage' => 'Carga una hoja por asardo',
-'tooltip-n-help' => 'El lugar para saver más',
-'tooltip-t-whatlinkshere' => 'Una lista de todas las hojas del viki que tienen atamientos con esta hoja',
-'tooltip-t-recentchangeslinked' => 'Los trocamientos freskos de las hojas que tienen atamiento con esta hoja',
+'tooltip-n-help' => 'Para saver mas',
+'tooltip-t-whatlinkshere' => 'La lista de todas las hojas del viki que se atan con esta hoja',
+'tooltip-t-recentchangeslinked' => 'Los trocamientos freskos de las hojas atadas con esta hoja',
'tooltip-feed-rss' => 'Sindicación RSS de esta hoja',
'tooltip-feed-atom' => "Fuente de Atom d'esta hoja",
'tooltip-t-contributions' => 'Ver la lista de ajustamientos de este usuario',
'tooltip-t-emailuser' => 'A este usuario, mándale una letra electrόnica (ímey)',
-'tooltip-t-upload' => 'Suve dosyas por aquí',
+'tooltip-t-upload' => 'Suve las dosyas por aquí',
'tooltip-t-specialpages' => 'Lista de todas las hojas especiales',
'tooltip-t-print' => "Versión apropiada para imprimir d'esta hoja",
-'tooltip-t-permalink' => "Atamiento permanente á est'enderechamiento de la hoja",
-'tooltip-ca-nstab-main' => 'Ve el artícůlo de contènido',
+'tooltip-t-permalink' => 'Atamiento permanente a este enderechamiento de la hoja',
+'tooltip-ca-nstab-main' => 'Ve el artíkolo de contènido',
'tooltip-ca-nstab-user' => 'Ve la hoja de usuario',
'tooltip-ca-nstab-special' => 'Esta es una hoja especial, la hoja ya no se puede trocar',
'tooltip-ca-nstab-project' => 'Ver la hoja del prodjekto',
Sólo elementos de lista (liñas empeçando con *) se toman en konsidherasyón.
El primer atamiento de cada liña deve de atarse con una dosya negra (la dosya que se quere blokar).
-Los atamientos venideros que están en la misma liña se konsidheran como eksepsiones, por enxemplo, hojas ande la dosya se ve en la liña.',
+Los atamientos venideros que están en la misma liña se konsidheran como eksepsiones (yaani hojas ande la dosya puede aparecer encaxada en la liña)',
# Metadata
'metadata' => 'Metadatos',
'customjsprotected' => "Dir hutt net d'Recht dës JavaScript-Säit z'änneren, well dorop déi perséinlech Astellunge vun engem anere Benotzer gespäichert sinn.",
'ns-specialprotected' => 'Spezialsäite kënnen net verännert ginn.',
'titleprotected' => "Eng Säit mat dësem Numm kann net ugeluecht ginn. Dës Spär gouf vum [[User:$1|$1]] gemaach deen als Grond ''$2'' uginn huet.",
+'filereadonlyerror' => 'De Fichier "$1" konnt net geännert ginn well de Repertoire vun de Fichieren "$2" nëmme geliest däerf ginn.
+
+Den Administrateur den d\'Schreiwe gespaart huet, huet dës Erklärung uginn: "$3"',
'invalidtitle-knownnamespace' => 'Net valabelen Titel mam Nummraum "$2" a mam Text "$3"',
'invalidtitle-unknownnamespace' => 'Net valabelen Titel mat der onbekannter Nummraum-Zuel $1 a mam Text "$2"',
'exception-nologin' => 'Net ageloggt',
Eng Säite gëtt als Homonymie-Säit behandelt, wa si eng Schabloun benotzt déi vu [[MediaWiki:Disambiguationspage]] verlinkt ass.",
'pageswithprop' => 'Säite mat enger Säiten-Eegeschaft',
+'pageswithprop-legend' => 'Säite mat enger Säiten-Eegeschaft',
'pageswithprop-prop' => 'Numm vun der Eegeschaft:',
+'pageswithprop-submit' => 'Lass',
'doubleredirects' => 'Duebel Viruleedungen',
'doubleredirectstext' => 'Op dëser Säit stinn déi Säiten déi op aner Viruleedungssäite viruleeden.
'duration-centuries' => '$1 {{PLURAL:$1|Joerhonnert|Joerhonnerten}}',
'duration-millennia' => '$1 {{PLURAL:$1|Millenaire|Millenairen}}',
-# Unknown messages
-'pageswithprop-legend' => 'Säite mat enger Säiten-Eegeschaft',
-'pageswithprop-submit' => 'Lass',
);
# User preference toggles
'tog-underline' => 'Garih bawahi tautan:',
'tog-justify' => 'Ratokan paragraf',
-'tog-hideminor' => 'Suruakkan suntingan ketek di parubahan tabaru',
-'tog-hidepatrolled' => 'Suruakkan suntingan nan lah dijago di parubahan tabaru',
-'tog-newpageshidepatrolled' => 'Suruakkan laman nan lah dijago dari dafta laman baru',
+'tog-hideminor' => 'Suruakan suntiangan ketek di parubahan tabaru',
+'tog-hidepatrolled' => 'Suruakan suntiangan nan lah dipatroli di parubahan tabaru',
+'tog-newpageshidepatrolled' => 'Suruakkan laman nan lah dipatroli dari dafta laman baru',
'tog-extendwatchlist' => 'Kambangkan dafta pantau untuak malihek sado parubahan, indak nan baru se',
'tog-usenewrc' => 'Gunokan tampilan parubahan tingkek lanjuik (paralu JavaScript)',
'tog-numberheadings' => 'Agiah nomor judua sacaro otomatis',
'tog-fancysig' => 'Jadikan tando tangan manjadi teks wiki (indak jo tautan otomatis)',
'tog-externaleditor' => 'Gunokan editor dari lua sacaro bawaan (untuak nan ahli sajo, butuah pangaturan khusus di komputer Sanak [//www.mediawiki.org/wiki/Manual:External_editors Informasi labiah lanjuik.])',
'tog-externaldiff' => 'Gunokan diff eksternal sacaro bawaan (untuak nan ahli sajo, kabutuahan pangaturan khusus pado komputer Sanak [//www.mediawiki.org/wiki/Manual:External_editors Informasi labiah lanjuik.].)',
-'tog-showjumplinks' => 'Aktifkan tautan pambantu "langsuang ka"',
-'tog-uselivepreview' => 'Gunokan pratayang langsuang (JavaScript) (eksperimental)',
-'tog-forceeditsummary' => 'Ingekkan awak bilo kotak ringkasan suntiangan masih kosoang',
-'tog-watchlisthideown' => 'Suruakkan suntiangan surang di dafta pantau',
-'tog-watchlisthidebots' => 'Suruakkan suntiangan bot di dafta pantau',
-'tog-watchlisthideminor' => 'Suruakkan suntiangan ketek di dafta pantau',
-'tog-watchlisthideliu' => 'Suruakkan suntiangan pangguno masuak log di dafta pantau',
-'tog-watchlisthideanons' => 'Suruakkan suntiangan pangguno indak di kana di dafta pantau',
-'tog-watchlisthidepatrolled' => 'Suruakkan suntiangan tapatroli di dafta pantau',
+'tog-showjumplinks' => 'Aktifkan pautan bantuan "langsuang ka"',
+'tog-uselivepreview' => 'Gunoan pratonton langsuang (JavaScript) (eksperimental)',
+'tog-forceeditsummary' => 'Ingekan ambo bilo kotak ikhtisar suntiangan kosong',
+'tog-watchlisthideown' => 'Suruakan suntiangan surang di dafta pantau',
+'tog-watchlisthidebots' => 'Suruakan suntiangan bot di dafta pantau',
+'tog-watchlisthideminor' => 'Suruakan suntiangan ketek di dafta pantau',
+'tog-watchlisthideliu' => 'Suruakan suntiangan pangguno masuak log di dafta pantau',
+'tog-watchlisthideanons' => 'Suruakan suntiangan pangguno indak di kana di dafta pantau',
+'tog-watchlisthidepatrolled' => 'Suruakan suntiangan tapatroli di dafta pantau',
'tog-ccmeonemails' => 'Kiriman Ambo salinan surel nan dikiriman ka urang lain',
'tog-diffonly' => 'Jan tampilan isi laman di bawah pabedoan suntiangan',
'tog-showhiddencats' => 'Tampilan kategori tasambunyi',
# Dates
'sunday' => 'Akaik',
'monday' => 'Sinayan',
-'tuesday' => 'Salaso',
+'tuesday' => 'Salasa',
'wednesday' => "Raba'a",
'thursday' => 'Kamih',
'friday' => 'Jumaik',
'vector-action-delete' => 'Hapuih',
'vector-action-move' => 'Pindahkan',
'vector-action-protect' => 'Linduangkan',
-'vector-action-undelete' => 'Pambatalan panghapusan',
+'vector-action-undelete' => 'Pambatalan panghapuihan',
'vector-action-unprotect' => 'Tuka palinduangan',
'vector-simplesearch-preference' => 'Aktifkan kotak pancarian sadarano (hanyo kulik Vector)',
'vector-view-create' => 'Buek',
'vector-view-view' => 'Baco',
'vector-view-viewsource' => 'Caliak sumber',
'actions' => 'Tindakan',
-'namespaces' => 'Ruang namo:',
+'namespaces' => 'Ruang namo',
'variants' => 'Varian:',
'navigation-heading' => 'Menu navigasi',
'searcharticle' => 'Tuju',
'history' => 'Riwayaik laman',
'history_short' => 'Riwayaik',
-'updatedmarker' => 'diubah sajak kunjuangan tarakhir ambo',
+'updatedmarker' => 'diubah samanjak kunjuangan tarakhia ambo',
'printableversion' => 'Versi cetak',
'permalink' => 'Pautan parmanen',
'print' => 'Cetak',
-'view' => 'Tampilkan',
+'view' => 'Baco',
'edit' => 'Suntiang',
'create' => 'Buek',
'editthispage' => 'Suntiang laman ko',
'create-this-page' => 'Buek laman iko',
'delete' => 'Hapuih',
-'deletethispage' => 'Hapuih laman iko',
-'undelete_short' => 'Batal hapuih $1 {{PLURAL:$1|suntiangan|suntiangan}}',
-'viewdeleted_short' => 'Liek {{PLURAL:$1|ciek suntiangan|$1 suntiangan}} nan dihapuih',
+'deletethispage' => 'Hapuih laman ko',
+'undelete_short' => 'Batal hapuih $1 {{PLURAL:$1|suntiangan}}',
+'viewdeleted_short' => 'Lihek {{PLURAL:$1|$1 suntiangan}} nan dihapuih',
'protect' => 'Linduangkan',
'protect_change' => 'ubah',
-'protectthispage' => 'Lindungi laman iko',
+'protectthispage' => 'Linduangi laman ko',
'unprotect' => 'Tuka palinduangan',
'unprotectthispage' => 'Tuka palindungan laman ko',
'newpage' => 'Laman baru',
-'talkpage' => 'Musyawarahkan laman ko',
+'talkpage' => 'Rundiangkan laman ko',
'talkpagelinktext' => 'maota',
'specialpage' => 'Laman istimewa',
'personaltools' => 'Pakakeh pribadi',
'showingresults' => "Di bawah ko dikaluaan sampai {{PLURAL:$1|'''$1''' hasil}}, dimulai dari #'''$2'''.",
'showingresultsnum' => "Di bawah ko dikaluaan {{PLURAL:$3|'''$3'''}} hasil mulai dari #'''$2'''.",
'showingresultsheader' => "{{PLURAL:$5|Hasil '''$1 - $2''' dari '''$3'''}} untuak '''$4'''",
-'nonefound' => "'''Catatan''': hanyo babarapo ruangnamo yang dicari sacaro default.
-Cubo awali permintaan awak tu jo ''all:'' untuak mancari sado kandungan (tamasuak laman ota, templat, dll), atau gunoan ruangnamo yang diinginkan sabagai awalan.",
+'nonefound' => "'''Catatan''': hanyo babarapo ruangnamo nan dicari sacaro default.
+Cubo awali pamintaan Sanak tu jo ''sadonyo:'' untuak mancari kasado kandungan (tamasuak laman rundiang, templat, dll), atau gunoan ruangnamo nan diinginkan sabagai awalan.",
'search-nonefound' => 'Indak ado hasil nan cocok sasuai jo parmintaan',
'powersearch' => 'Pencarian lanjut',
'powersearch-legend' => 'Pencarian lanjut',
# Upload
'upload' => 'Muek berkas',
-'uploadlogpage' => 'Log unggah',
+'uploadbtn' => 'Mamuek berkas',
+'reuploaddesc' => 'Batal dan baliak ka formulir pamuatan',
+'uploadtext' => "Gunoan formulir di bawah untuak mangunggah berkas.
+Untuak manampilan atau mancari berkas nan sabalumnyo dimuek, gunoan [[Special:FileList|dafta berkas]]. Pangunggahan (ulang) tacatat dalam [[Special:Log/upload|log pangunggahan]], samantaro panghapuihan tacatat dalam [[Special:Log/delete|log panghapuihan]].
+
+Untuak manampilkan atau manyaratoan berkas pado suatu laman, gunoan salah satu format di bawah ko:
+* '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:Berkas.jpg]]</nowiki></code>''' untuak manampilan berkas dalam ukuran aslinyo
+* '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:Berkas.png|200px|thumb|left|teks alternatif]]</nowiki></code>''' untuak manampilan berkas jo leba 200px dalam sabuah kotak di kiri laman jo 'teks alternatif' sabagai katarangan gambar
+* '''<code><nowiki>[[</nowiki>{{ns:media}}<nowiki>:Berkas.ogg]]</nowiki></code>''' sabagai pautan langsuang ka berkas nan dimaksud tanpa manampilan berkas tarsabuik di laman wiki",
+'upload-permitted' => 'Jenis berkas nan dipabuliahan: $1.',
+'upload-preferred' => 'Jenis berkas nan disaranan: $1.',
+'upload-prohibited' => 'Jenis berkas nan dilarang: $1.',
+'uploadlog' => 'log pangunggahan',
+'uploadlogpage' => 'Log pangunggahan',
+'uploadlogpagetext' => 'Barikuik adolah dafta unggahan berkas tabaru.
+Lihek [[Special:NewFiles|galeri berkas baru]] untuak tampilan visual.',
'filename' => 'Namo berkas',
'filedesc' => 'Ikhtisar',
'fileuploadsummary' => 'Ikhtisar:',
Nampaknyo berkas ko marupoan gambar jo ukuran dipaketek ''(miniatua)''.
Koq Sanak ado versi resolusi panuah dari gambar ko, cubolah muekan berkas tasabuik. Koq indak, harap ubah namo berkas ko.",
'uploadedimage' => 'muek "[[$1]]"',
+'upload-source' => 'Berkas sumber',
+'sourcefilename' => 'Namo berkas sumber:',
+'sourceurl' => 'URL sumber:',
+'destfilename' => 'Namo berkas tujuan:',
+'upload-maxfilesize' => 'Ukuran berkas maksimum: $1',
+'upload-description' => 'Katarangan berkas',
+'upload-options' => 'Opsi pangunggahan',
+'watchthisupload' => 'Pantau berkas ko',
'license' => 'Lisensi:',
'license-header' => 'Lisensi',
+'nolicense' => 'Indak ad nan dipiliah',
+'license-nopreview' => '(Pratonton indak tasadio)',
+'upload_source_url' => ' (suatu URL valid nan dapek diakses publik)',
+'upload_source_file' => ' (berkas nan di komputer Sanak)',
# Special:ListFiles
+'listfiles-summary' => 'Laman istimewa ko manampilan kasado berkas nan alah diunggah.
+Katiko disariang dek pangguno, hanyo versi berkas tabaru dari berkas nan diunggah nan tampil.',
+'listfiles_search_for' => 'Cari namo berkas:',
+'imgfile' => 'berkas',
'listfiles' => 'Dafta berkas',
'listfiles_thumb' => 'Miniatur',
'listfiles_date' => 'Tanggal',
'imagelinks' => 'Panggunoan berkas',
'linkstoimage' => 'Barikuik ko {{PLURAL:$1|$1 laman nan takaik}} jo berkas:',
'nolinkstoimage' => 'Indak ado laman nan batauik ka berkas ko.',
+'morelinkstoimage' => 'Lihek [[Special:WhatLinksHere/$1|pautan baliak]] ka berkas ko.',
'linkstoimage-redirect' => '$1 (pangaliahan berkas) $2',
'sharedupload' => 'Berkas ko barasal dari $1 dan mungkin digunoan oleh berbagai proyek lain.',
'sharedupload-desc-here' => 'Berkas ko dari $1, mungkin juo digunoan untuak proyek-proyek lain.
'watchlist' => 'Pantauan',
'mywatchlist' => 'Pantauan',
'watchlistfor2' => 'Untuak $1 $2',
-'addedwatchtext' => "Laman \"[[:\$1]]\" lah ditambahkan ka [[Special:Watchlist|dafta pantauan Sanak]].
-Parubahan laman ko tamasuak laman rundiangnyo akan ditampilan pado [[Special:RecentChanges|dafta parubahan]] '''bacetak taba''' agar labiah mudah mancaliaknyo.",
+'addedwatchtext' => 'Laman "[[:$1]]" lah ditambahan ka [[Special:Watchlist|Pantauan]] Sanak.
+Parubahan laman ko tamasuak laman rundiangnyo akan ditampilan disinan.',
'removewatch' => 'Hapuih dari dafta pantau',
'removedwatchtext' => 'Laman "[[:$1]]" lah dihapuih dari [[Special:Watchlist|dafta pantau Sanak]].',
'watch' => 'Pantau',
Една страница се смета за страница за појаснување ако го користи шаблонот што води од [[MediaWiki:Disambiguationspage]]",
'pageswithprop' => 'Страници со својство',
+'pageswithprop-legend' => 'Страници со својство',
'pageswithprop-text' => 'На страницава се наведени страници што користат дадено својство.',
'pageswithprop-prop' => 'Име на својството:',
+'pageswithprop-submit' => 'Оди',
'doubleredirects' => 'Двојни пренасочувања',
'doubleredirectstext' => 'Оваа страница ги прикажува пренасочувачките страници до други пренасочувачки страници.
'duration-centuries' => '$1 {{PLURAL:$1|век|века}}',
'duration-millennia' => '$1 {{PLURAL:$1|милениум|милениуми}}',
-# Unknown messages
-'pageswithprop-legend' => 'Страници со својство',
-'pageswithprop-submit' => 'Оди',
+# Image rotation
+'rotate-comment' => 'Сликата е завртена за $1 {{PLURAL:$1|степен|степени}} вдесно',
+
);
'loginlanguagelabel' => 'भाषा: $1',
'suspicious-userlogout' => 'तुमचे अदाखल होणे प्रतिबंधित झाले कारण असे दिसते की ते तुटलेल्या न्याहाळकाद्वारे पाठवले गेले.',
-# E-mail sending
+# Email sending
'php-mail-error-unknown' => 'पीएचपीच्या विपत्र() पर्यायात अज्ञात चूक',
'user-mail-no-addy' => 'ईमेल पत्त्या विना ईमेल पाठवण्यचा प्रयत्न केला',
'prefs-displaywatchlist' => 'दर्शन पर्याय',
'prefs-diffs' => 'फरक',
-# User preference: e-mail validation using jQuery
+# User preference: email validation using jQuery
'email-address-validity-valid' => 'विपत्रपत्ता वैध आहे',
'email-address-validity-invalid' => 'वैध विपत्रपत्ता लिहा',
'listgrouprights-addgroup-self-all' => 'सर्व समूह स्वतःच्या खात्यात मिळवा',
'listgrouprights-removegroup-self-all' => 'सर्व समूह स्वतःच्या खात्यातून काढून टाका',
-# E-mail user
+# Email user
'mailnologin' => 'पाठविण्याचा पत्ता नाही',
'mailnologintext' => 'इतर सदस्यांना विपत्र(ई-मेल) पाठवण्याकरिता तुम्ही [[Special:UserLogin|प्रवेश केलेला]] असणे आणि प्रमाणित (ई-मेल) पत्ता तुमच्या [[Special:Preferences|पसंतीत]] नमुद असणे आवश्यक आहे.',
'emailuser' => 'या सदस्याला ई-मेल पाठवा',
'monthsall' => 'सर्व',
'limitall' => 'सर्व',
-# E-mail address confirmation
+# Email address confirmation
'confirmemail' => 'ई-मेल पत्ता पडताळून पहा',
'confirmemail_noemail' => '[[Special:Preferences|सदस्य पसंतीत]] तुम्ही प्रमाणित विपत्र (ई-मेल) पत्ता दिलेला नाही.',
'confirmemail_text' => 'विपत्र सुविधा वापरण्या पूर्वी {{SITENAME}}वर तुमचा विपत्र (ई-मेल) पत्ता प्रमाणित करणे गरजेचे आहे. तुमच्या पत्त्यावर निश्चितीकरण विपत्र (ई-मेल) पाठवण्याकरिता खालील बटण सुरू करा.विपत्रात कुटसंकेतच्(पासवर्ड) असलेला दुवा असेल;तुमचा विपत्र (ई-मेल) पत्ता प्रमाणित करण्या करिता तुमच्या विचरकात हा दिलेला दुवा चढवा.',
Een pagina wordt gezien als doorverwijspagina als er een sjabloon op staat dat opgenomen is op [[MediaWiki:Disambiguationspage]].",
'pageswithprop' => "Pagina's met een pagina-eigenschap",
+'pageswithprop-legend' => "Pagina's met een pagina-eigenschap",
'pageswithprop-text' => "Op deze pagina worden pagina's weergegeven met een bepaalde pagina-eigenschap.",
'pageswithprop-prop' => 'Naam van de eigenschap:',
+'pageswithprop-submit' => 'OK',
'doubleredirects' => 'Dubbele doorverwijzingen',
'doubleredirectstext' => "Deze lijst bevat pagina's die doorverwijzen naar andere doorverwijspagina's.
'duration-centuries' => '$1 {{PLURAL:$1|eeuw|eeuwen}}',
'duration-millennia' => '$1 {{PLURAL:$1|millennium|millennia}}',
-# Unknown messages
-'pageswithprop-legend' => "Pagina's met een pagina-eigenschap",
-'pageswithprop-submit' => 'OK',
);
Ei side vert handsama som ei fleirtydingsside om ho nyttar ein mal som er lenkja til frå [[MediaWiki:Disambiguationspage]].",
'pageswithprop' => 'Sider med ein sideeigenskap',
+'pageswithprop-legend' => 'Sider med ein sideeigenskap',
'pageswithprop-text' => 'Denne sida listar opp sider som nyttar ein viss sideeigenskap.',
'pageswithprop-prop' => 'Namn på eigenskap:',
+'pageswithprop-submit' => 'Gå',
'doubleredirects' => 'Doble omdirigeringar',
'doubleredirectstext' => 'Kvar line inneheld lenkjer til den første og den andre omdirigeringa, og den første lina frå den andre omdirigeringsteksten. Det gjev som regel den «rette» målartikkelen, som den første omdirigeringa skulle ha peikt på. <del>Overstrykne</del> liner har vorte retta på.',
'ipb-change-block' => 'Blokker brukaren på nytt med desse innstillingane',
'ipb-confirm' => 'Stadfest blokkering',
'badipaddress' => 'IP-adressa er ugyldig eller blokkering av brukarar er slått av på tenaren.',
-'blockipsuccesssub' => 'Blokkeringa er utførd',
+'blockipsuccesssub' => 'Blokkeringa er utført',
'blockipsuccesstext' => '«[[Special:Contributions/$1|$1]]» er blokkert.<br />
Sjå [[Special:BlockList|blokkeringslista]] for alle blokkeringane.',
'ipb-blockingself' => 'Du er i ferd med å blokkera deg sjølv. Er du viss på at du ynskjer gjera dette?',
'duration-centuries' => '$1 {{PLURAL:$1|hundreår|hundreår}}',
'duration-millennia' => '$1 {{PLURAL:$1|tusenår|tusenår}}',
-# Unknown messages
-'pageswithprop-legend' => 'Sider med ein sideeigenskap',
-'pageswithprop-submit' => 'Gå',
);
$messages = array(
# User preference toggles
-'tog-underline' => 'à¨\85ੰਡਰ-ਲਾà¨\88ਨ ਲਿੰà¨\95:',
-'tog-justify' => 'ਪà©\88ਰਾ ਸਹà©\80 à¨\95ਰà©\87 .',
-'tog-hideminor' => 'ਮà©\8cਨà¨\9cà©\81ਦਾ ਬਦਲਾਬ ਮà©\88 ਸà©\88 ਨà©\80à¨\95à©\88 ਬਦਲਾਬ à¨\95à©\8c à¨\9bà©\81ਪਾ à¨\95ਰ ਰà¨\96à©\87.',
-'tog-hidepatrolled' => 'ਮà©\8cਨà¨\9cà©\81ਦਾ ਬਦਲਾਬ ਮà©\88 ਸà©\88 ਸਹà©\80ਤà¨\95 ਬਦਲਾਬ à¨\95à©\8c à¨\9bà©\81ਪਾ à¨\95ਰ ਰà¨\96à©\87.',
+'tog-underline' => 'à¨\95à©\9cà©\80à¨\86à¨\82 à¨\85ਧà©\8bਰà©\87à¨\96ਨ:',
+'tog-justify' => 'ਪਰਿੱà¨\9bà©\87ਦ ਸਮਾਨ à¨\95ਰà©\8b',
+'tog-hideminor' => 'ਹਾਲ â\80\99à¨\9a ਹà©\8bà¨\8f ਬਦਲਾਵ ਵਿੱà¨\9a à¨\9bà©\8bà¨\9fà©\87 ਬਦਲਾਵ à¨\9bà©\81ਪਾà¨\93',
+'tog-hidepatrolled' => 'ਹਾਲ â\80\99à¨\9a ਹà©\8bà¨\8f ਬਦਲਾਵ ਵਿੱà¨\9a à¨\9cਾà¨\82à¨\9aà©\87 ਹà©\8bà¨\8f ਬਦਲਾਵ à¨\9bà©\81ਪਾà¨\93',
'tog-newpageshidepatrolled' => 'ਨਵੀ ਸੁਚੀ ਮੈ ਸੈ ਗਸ਼ਤ ਪਰਚੇ ਕੌ ਛੁਪਾਏ.',
-'tog-extendwatchlist' => 'ਸਾਰà©\80 ਨਵà©\80 ਤਬਦà©\80ਲà©\80à¨\86 ਹà©\80 ਨਹà©\80 ,ਪà©\82ਰਾਣà©\80 ਤਬਦà©\80ਲà©\80à¨\86 ਨà©\82à©° ਵà©\80 ਨਵà©\80 ਸà©\82à¨\9aà©\80 ਵਿà¨\9a ਵਧਾ à¨\95à©\88 ਸ਼ਾਮà©\80ਲ à¨\95ਰà©\8c.',
-'tog-usenewrc' => 'ਤਾà¨\9c਼ਾ ਤਬਦà©\80ਲà©\80à¨\86à¨\82 à¨\85ਤà©\87 ਨਿà¨\97ਰਾਨà©\80-ਲਿਸà¨\9f ਵਿà¨\9a ਸਫ਼à©\87 ਮà©\81ਤਾਬà¨\95 ਤਬਦà©\80ਲà©\80à¨\86à¨\82 ਦà©\87 à¨\97ਰà©\81ੱਪ ਬਣਾà¨\93 (à¨\9cਾਵਾ ਸà¨\95à©\8dਰਿਪà¨\9f ਲà©\8bà©\9cà©\80à¨\82ਦà©\80 ਹੈ)',
+'tog-extendwatchlist' => 'à¨\95à©\87ਵਲ ਹਾਲਿà¨\86 ਹà©\80 ਨਹà©\80à¨\82, ਸà¨\97à©\8bà¨\82 ਸਾਰà©\87 ਪਰਿਵਰਤਨਾà¨\82 ਨà©\82à©° ਵਿà¨\96ਾà¨\89ਣ ਲà¨\88 ਧਿà¨\86ਨਸà©\82à¨\9aà©\80 ਨà©\82à©° ਵਿਸਥਾਰਿਤ à¨\95ਰà©\8b',
+'tog-usenewrc' => 'ਹਾਲ â\80\99à¨\9a ਹà©\8bà¨\8f ਬਦਲਾਵ à¨\85ਤà©\87 ਧਿà¨\86ਨਸà©\82à¨\9aà©\80 ਵਿੱà¨\9a ਪੰਨà©\87 ਮà©\81ਤਾਬà¨\95 ਬਦਲਾਵ ਦà©\87 à¨\97ਰà©\81ੱਪ ਬਣਾà¨\93 (à¨\9cਾਵਾਸà¨\95à©\8dਰਿਪà¨\9f ਦà©\80 à¨\9cਰà©\82ਰਤ ਹੈ)',
'tog-numberheadings' => 'ਆਟੋ-ਨੰਬਰ ਹੈਡਿੰਗ',
'tog-showtoolbar' => 'ਐਡਿਟ ਟੂਲਬਾਰ ਵੇਖੋ (JavaScript)',
-'tog-editondblclick' => 'ਦੂਹਰੇ ਕਲਿੱਕ ਨਾਲ਼ ਸਫ਼ੇ ਸੋਧੋ (ਜਾਵਾ ਸਕ੍ਰਿਪਟ ਲੋੜੀਂਦੀ ਹੈ)',
-'tog-editsection' => '[ਸੰਪਾਦਨ] ਲਿੰà¨\95ਾà¨\82 à¨\9c਼ਰà©\80à¨\8f ਸà©\88à¨\95ਸ਼ਨ ਸà©\8bਧ à¨\9aਾਲà©\82 ਕਰੋ',
+'tog-editondblclick' => 'ਦੂਹਰੇ ਕਲਿੱਕ ’ਤੇ ਪੰਨੇ ਨੂੰ ਸੰਪਾਦਿਤ ਕਰੋ (ਜਾਵਾਸਕ੍ਰਿਪਟ ਦੀ ਜਰੂਰਤ ਹੈ)',
+'tog-editsection' => '[ਸੰਪਾਦਨ] à¨\95à©\9cà©\80à¨\86à¨\82 ਦà©\81à¨\86ਰਾ à¨\85ਨà©\81à¨à¨¾à¨\97 ਸੰਪਾਦਨ ਸਮਰੱਥਾਵਾਨ ਕਰੋ',
'tog-editsectiononrightclick' => 'ਸੈਕਸ਼ਨ ਸਿਰਲੇਖਾਂ ਤੇ ਸੱਜੀ ਕਲਿੱਕ ਦੁਆਰਾ ਸੋਧ ਯੋਗ ਕਰੋ (ਜਾਵਾ ਸਕ੍ਰਿਪਟ ਲੋੜੀਂਦੀ ਹੈ)',
'tog-showtoc' => 'ਟੇਬਲ ਆਫ਼ ਕੰਨਟੈੱਟ ਵੇਖਾਓ (for pages with more than 3 headings)',
'tog-rememberpassword' => 'ਇਸ ਬਰਾਊਜ਼ਰ ਉੱਤੇ ਮੇਰਾ ਲਾਗਇਨ ਯਾਦ ਰੱਖੋ ($1 {{PLURAL:$1|ਦਿਨ|ਦਿਨਾਂ}} ਲਈ ਵੱਧ ਤੋਂ ਵੱਧ)',
'tog-watchcreations' => 'ਮੇਰੇ ਵਲੋਂ ਬਣਾਏ ਗਏ ਪੰਨੇ ਅਤੇ ਅੱਪਲੋਡ ਕੀਤੀਆਂ ਫ਼ਾਈਲਾਂ ਮੇਰੀ ਧਿਆਨਸੂਚੀ ਵਿੱਚ ਪਾਓ',
-'tog-watchdefault' => 'ਮà©\87ਰà©\87 ਵੱਲà©\8bà¨\82 ਸà©\8bਧà©\87 à¨\97à¨\8f ਸਫ਼à©\87 à¨\85ਤà©\87 ਫ਼ਾà¨\88ਲਾà¨\82 ਮà©\87ਰà©\80 ਨਿà¨\97ਰਾਨà©\80-ਲਿਸà¨\9f ਵਿਚ ਪਾਓ',
-'tog-watchmoves' => 'ਮà©\87ਰà©\87 ਵੱਲà©\8bà¨\82 ਬਦਲà©\87 ਸਿਰਲà©\87à¨\96ਾà¨\82 ਵਾਲ਼à©\87 ਸਫ਼à©\87 à¨\85ਤà©\87 ਫ਼ਾà¨\88ਲਾà¨\82 ਮà©\87ਰà©\80 ਨਿà¨\97ਰਾਨà©\80-ਲਿਸà¨\9f ਵਿਚ ਪਾਓ',
+'tog-watchdefault' => 'ਮà©\87ਰà©\87 ਵੱਲà©\8bà¨\82 ਸੰਪਾਦਿਤ à¨\97à¨\8f ਪੰਨà©\87 à¨\85ਤà©\87 ਫਾà¨\88ਲਾà¨\82 ਮà©\87ਰà©\80 ਧਿà¨\86ਨਸà©\82à¨\9aà©\80 ਵਿੱਚ ਪਾਓ',
+'tog-watchmoves' => 'ਮà©\87ਰà©\87 ਵੱਲà©\8bà¨\82 ਸਥਾਨਾà¨\82ਤਰਿਤ ਪੰਨà©\87 à¨\85ਤà©\87 ਫਾà¨\88ਲਾà¨\82 ਮà©\87ਰà©\80 ਧਿà¨\86ਨਸà©\82à¨\9aà©\80 ਵਿੱਚ ਪਾਓ',
'tog-watchdeletion' => 'ਮੇਰੇ ਵਲੋਂ ਮਿਟਾਏ ਗਏ ਸਫ਼ੇ ਅਤੇ ਫ਼ਾਈਲਾਂ ਮੇਰੀ ਨਿਗਰਾਨੀ-ਲਿਸਟ ਵਿਚ ਪਾਓ',
'tog-minordefault' => 'ਸਾਰੇ ਫੇਰ-ਬਦਲਾਂ ’ਤੇ ਮੂਲ ਰੂਪ ਵਿਚ ਛੋਟੀਆਂ ਹੋਣ ਦਾ ਨਿਸ਼ਾਨ ਲਾਓ',
'tog-previewontop' => 'ਐਡਿਟ ਬਕਸੇ ਤੋਂ ਪਹਿਲਾਂ ਝਲਕ ਵੇਖਾਓ',
'login-abort-generic' => 'ਤੁਹਾਡੀ ਲਾਗਇਨ ਨਾਕਾਮ ਸੀ - ਰੱਦ',
'loginlanguagelabel' => 'ਭਾਸ਼ਾ: $1',
-# E-mail sending
+# Email sending
'user-mail-no-addy' => 'ਬਿਨਾਂ ਈ-ਮੇਲ ਪਤਾ ਦਿੱਤੇ ਈ-ਮੇਲ ਭੇਜਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕੀਤੀ।',
# Change password dialog
'prefs-advancedwatchlist' => 'ਤਕਨੀਕੀ ਚੋਣਾਂ',
'prefs-diffs' => 'ਫ਼ਰਕ',
-# User preference: e-mail validation using jQuery
+# User preference: email validation using jQuery
'email-address-validity-valid' => 'ਈ-ਮੇਲ ਪਤਾ ਸਹੀ ਲਗਦਾ ਹੈ',
'email-address-validity-invalid' => 'ਸਹੀ ਈ-ਮੇਲ ਪਤਾ ਦਾਖ਼ਲ ਕਰੋ',
'listgrouprights-addgroup-all' => 'ਸਾਰੇ ਗਰੁੱਪ ਜੋੜੋ',
'listgrouprights-removegroup-all' => 'ਸਾਰੇ ਗਰੁੱਪ ਹਟਾਓ',
-# E-mail user
+# Email user
'mailnologin' => 'ਕੋਈ ਭੇਜਣ ਐਡਰੈੱਸ ਨਹੀਂ',
'mailnologintext' => 'ਦੂਜੇ ਮੈਂਬਰਾਂ ਨੂੰ ਈ-ਮੇਲ ਭੇਜਣ ਲਈ ਤੁਹਾਨੂੰ [[Special:UserLogin|ਲਾਗਇਨ]] ਹੋਣਾ ਅਤੇ ਆਪਣੀਆਂ [[Special:Preferences|ਪਸੰਦਾਂ]] ਵਿਚ ਇਕ ਸਹੀ ਈ-ਮੇਲ ਪਤਾ ਦੇਣਾ ਪਵੇਗਾ।',
'emailuser' => 'ਇਸ ਵਰਤੋਂਕਾਰ ਨੂੰ ਈ-ਮੇਲ ਭੇਜੋ',
'monthsall' => 'ਸਭ',
'limitall' => 'ਸਭ',
-# E-mail address confirmation
+# Email address confirmation
'confirmemail' => 'ਈਮੇਲ ਐਡਰੈੱਸ ਪੁਸ਼ਟੀ',
'confirmemail_send' => 'ਇੱਕ ਪੁਸ਼ਟੀ ਕੋਡ ਭੇਜੋ',
'confirmemail_sent' => 'ਪੁਸ਼ਟੀ ਈਮੇਲ ਭੇਜੀ ਗਈ।',
'loginlanguagelabel' => 'Język: $1',
'suspicious-userlogout' => 'Żądanie wylogowania zostało odrzucone ponieważ wygląda na to, że zostało wysłane przez uszkodzoną przeglądarkę lub buforujący serwer proxy.',
-# E-mail sending
+# Email sending
'php-mail-error-unknown' => 'Wystąpił nieznany błąd w funkcji PHP mail()',
'user-mail-no-addy' => 'Próba wysłania e‐maila bez adresu odbiorcy',
'user-mail-no-body' => 'Próbowano wysłać e-mail o psutej lub krótkiej treści.',
'prefs-displaywatchlist' => 'Opcje wyświetlania',
'prefs-diffs' => 'Zmiany',
-# User preference: e-mail validation using jQuery
+# User preference: email validation using jQuery
'email-address-validity-valid' => 'Wygląda na prawidłowy',
'email-address-validity-invalid' => 'Wymagany jest prawidłowy adres!',
'listgrouprights-addgroup-self-all' => 'Może dodać własne konto do wszystkich grup',
'listgrouprights-removegroup-self-all' => 'Może usunąć własne konto ze wszystkich grup',
-# E-mail user
+# Email user
'mailnologin' => 'Brak adresu',
'mailnologintext' => 'Musisz się [[Special:UserLogin|zalogować]] i mieć wpisany aktualny adres e‐mailowy w swoich [[Special:Preferences|preferencjach]], aby móc wysłać e‐mail do innego użytkownika.',
'emailuser' => 'Wyślij e‐mail do tego użytkownika',
'pageinfo-robot-noindex' => 'Nieindeksowalne',
'pageinfo-views' => 'Odsłon',
'pageinfo-watchers' => 'Liczba obserwujących',
+'pageinfo-few-watchers' => 'Mniej niż $1 {{PLURAL:$1|obserwujący|obserwujących}}',
'pageinfo-redirects-name' => 'Liczba przekierowań do tej strony',
'pageinfo-subpages-name' => 'Liczba podstron tej strony',
'pageinfo-subpages-value' => '$1 ($2 {{PLURAL:$2|przekierowanie|przekierowania|przekierowań}}; $3 {{PLURAL:$3|bez przekierowania|bez przekierowań|bez przekierowań}})',
'monthsall' => 'wszystkie',
'limitall' => 'wszystkie',
-# E-mail address confirmation
+# Email address confirmation
'confirmemail' => 'Potwierdzanie adresu e‐mail',
'confirmemail_noemail' => 'Nie podał{{GENDER:|eś|aś|eś/aś}} prawidłowego adresu e‐mail w [[Special:Preferences|preferencjach]].',
'confirmemail_text' => 'Projekt {{SITENAME}} wymaga weryfikacji adresu e‐mail przed użyciem funkcji korzystających z poczty.
'duration-centuries' => '$1 {{PLURAL:$1|stulecie|stulecia|stuleci}}',
'duration-millennia' => '$1 {{PLURAL:$1|tysiąclecie|tysiąclecia|tysiącleci}}',
+# Image rotation
+'rotate-comment' => 'Obraz został odwrócony o $1 {{PLURAL:$1|stopień|stopnie|stopni}} (w kierunku zgodnym z ruchem wskazówek zegara)',
+
);
Uma página é considerada como de desambiguação se utilizar uma predefinição que esteja definida em [[MediaWiki:Disambiguationspage]].",
'pageswithprop' => 'Páginas com uma propriedade de página',
+'pageswithprop-legend' => 'Páginas com uma propriedade de página',
'pageswithprop-text' => 'Esta página lista as páginas que usam uma determinada propriedade de página.',
'pageswithprop-prop' => 'Nome da propriedade:',
+'pageswithprop-submit' => 'Ir',
'doubleredirects' => 'Redirecionamentos duplos',
'doubleredirectstext' => 'Esta página lista as páginas que redirecionam para outros redirecionamentos.
'duration-centuries' => '$1 {{PLURAL:$1|século|séculos}}',
'duration-millennia' => '$1 {{PLURAL:$1|milênio|milênios}}',
-# Unknown messages
-'pageswithprop-legend' => 'Páginas com uma propriedade de página',
-'pageswithprop-submit' => 'Ir',
);
This is the link used to collapse a collapsible element. (used as plaintext. No wikitext or html is parsed.)
See also:
-* {{msg-mw|Collapsible-expand}}',
+* {{msg-mw|Collapsible-expand}}
+{{Identical|Collapse}}',
'collapsible-expand' => '{{Doc-actionlink}}
This is the link used to expand a collapsible element (used as plaintext. No wikitext or html is parsed.)
* {{msg-mw|Accesskey-ca-nstab-main}}
* {{msg-mw|Tooltip-ca-nstab-main}}
{{Identical|Page}}',
-'nstab-user' => 'The name for the tab of the user namespace. Example: [[User:Example]]. It is possible to use <nowiki>
-{{GENDER:{{#titleparts:{{BASEPAGENAME}}|1}}|male form|female form}}</nowiki> if needed.
+'nstab-user' => 'The name for the tab of the user namespace. Example: [[User:Example]]. It is possible to use <nowiki>{{GENDER:{{BASEPAGENAME}}|male form|female form}}</nowiki> if needed.
See also:
* {{msg-mw|Nstab-user}}
'pageswithprop' => 'Title for [[Special:PagesWithProp]].
{{Identical|Page with page property}}',
+'pageswithprop-legend' => 'Legend for the input form on [[Special:PagesWithProp]].
+{{Identical|Page with page property}}',
'pageswithprop-text' => 'Introductory text for the input form on [[Special:PagesWithProp]]',
'pageswithprop-prop' => 'Label for the property name input field on [[Special:PagesWithProp]].
{{Identical|Property name}}',
+'pageswithprop-submit' => 'Label for the submit button on [[Special:PagesWithProp]].
+{{Identical|Go}}',
'doubleredirects' => 'Name of [[Special:DoubleRedirects]] displayed in [[Special:SpecialPages]]',
'doubleredirectstext' => 'Shown on top of [[Special:Doubleredirects]]',
'duration-centuries' => '{{Related|Duration}}',
'duration-millennia' => '{{Related|Duration}}',
-# Unknown messages
-'pageswithprop-legend' => 'Legend for the input form on [[Special:PagesWithProp]].
-{{Identical|Page with page property}}',
-'pageswithprop-submit' => 'Label for the submit button on [[Special:PagesWithProp]].
-{{Identical|Go}}',
+# Image rotation
+'rotate-comment' => 'Edit summary for the act of rotating an image.',
+
);
O pagină este considerată o pagină de dezambiguizare dacă folosește formate care apar la [[MediaWiki:Disambiguationspage]].",
'pageswithprop' => 'Pagini cu o proprietate de pagină',
+'pageswithprop-legend' => 'Pagini cu o proprietate de pagină',
'pageswithprop-text' => 'Această pagină listează paginile care utilizează o anumită proprietate de pagină.',
'pageswithprop-prop' => 'Numele proprietății:',
+'pageswithprop-submit' => 'Du-te',
'doubleredirects' => 'Redirecționări duble',
'doubleredirectstext' => 'Această listă conține pagini care redirecționează la alte pagini de redirecționare.
'duration-centuries' => '$1 {{PLURAL:$1|secol|secole|de secole}}',
'duration-millennia' => '$1 {{PLURAL:$1|mileniu|milenii|de milenii}}',
-# Unknown messages
-'pageswithprop-legend' => 'Pagini cu o proprietate de pagină',
-'pageswithprop-submit' => 'Du-te',
+# Image rotation
+'rotate-comment' => 'Imagine rotită în sensul acelor de ceasornic cu $1 {{PLURAL:$1|grad|grade|de grade}}',
+
);
'Na pàgene jè trattate cumme pàgene de disambiguazione ce tu ause 'nu template ca è appundate da [[MediaWiki:Disambiguationspage]]",
'pageswithprop' => "Pàggene cu 'na probbietà d'a pàgene",
+'pageswithprop-legend' => "Pàggene cu 'na probbietà d'a pàgene",
'pageswithprop-text' => "Sta pàgene elenghe le pàggene ca ausane 'na particolare probbietà d'a pàgene.",
'pageswithprop-prop' => "Nome d'a probbietà:",
+'pageswithprop-submit' => 'Véje',
'doubleredirects' => 'Ridirezionaminde a doppie',
'doubleredirectstext' => "Sta pàgene elenghe le pàggene ca se ridirezionane sus a otre pàggene de ridirezionaminde.
'duration-centuries' => '$1 {{PLURAL:$1|sechele|sechele}}',
'duration-millennia' => '$1 {{PLURAL:$1|millennie|millennie}}',
-# Unknown messages
-'pageswithprop-legend' => "Pàggene cu 'na probbietà d'a pàgene",
-'pageswithprop-submit' => 'Véje',
+# Image rotation
+'rotate-comment' => 'Immaggine rotate de $1 {{PLURAL:$1|grade}} in sienze orarie',
+
);
Страница считается многозначной, если на ней размещён шаблон, имя которого указано на странице [[MediaWiki:Disambiguationspage]].",
'pageswithprop' => 'Страницы с переопределёнными свойствами',
+'pageswithprop-legend' => 'Страницы с переопределёнными свойствами',
'pageswithprop-text' => 'Здесь перечислены страницы, у которых были вручную переопределены отдельные свойства.',
'pageswithprop-prop' => 'Название свойства:',
+'pageswithprop-submit' => 'Найти',
'doubleredirects' => 'Двойные перенаправления',
'doubleredirectstext' => 'На этой странице представлен список перенаправлений на другие перенаправления.
'duration-centuries' => '$1 {{PLURAL:$1|век|века|веков}}',
'duration-millennia' => '$1 {{PLURAL:$1|тысячелетие|тысячелетия|тысячелетий}}',
-# Unknown messages
-'pageswithprop-legend' => 'Страницы с переопределёнными свойствами',
-'pageswithprop-submit' => 'Найти',
);
* @author Irena Plahuta
* @author McDutchie
* @author Smihael
+ * @author Vadgt
* @author XJamRastafire
* @author Yerpo
* @author romanm
Stran se obravnava kot razločitvena, če uporablja predloge, povezane z [[MediaWiki:Disambiguationspage]].",
'pageswithprop' => 'Strani z lastnostmi strani',
+'pageswithprop-legend' => 'Strani z lastnostmi strani',
'pageswithprop-text' => 'Stran navaja vse strani, ki uporabljajo določene lastnosti strani.',
'pageswithprop-prop' => 'Ime lastnosti:',
+'pageswithprop-submit' => 'Pojdi',
'doubleredirects' => 'Dvojne preusmeritve',
'doubleredirectstext' => 'Ta stran navaja strani, ki se preusmerjajo na druge preusmeritvene strani.
'duration-centuries' => '$1 {{PLURAL:$1|stoletje|stoletji|stoletja|stoletij}}',
'duration-millennia' => '$1 {{PLURAL:$1|tisočletje|tisočletji|tisočletja|tisočletij}}',
-# Unknown messages
-'pageswithprop-legend' => 'Strani z lastnostmi strani',
-'pageswithprop-submit' => 'Pojdi',
+# Image rotation
+'rotate-comment' => 'Slika zavrti s $1 {{PLURAL:$1| degree|degrees}} v smeri urinega kazalca',
+
);
En sida anses vara en förgreningssida om den inkluderar en mall som länkas till från [[MediaWiki:Disambiguationspage]].",
'pageswithprop' => 'Sidor med en sidegenskap',
+'pageswithprop-legend' => 'Sidor med en sidegenskap',
'pageswithprop-text' => 'Denna sida listar sidor som använder en speciell sidegenskap.',
'pageswithprop-prop' => 'Egenskapsnamn:',
+'pageswithprop-submit' => 'Gå',
'doubleredirects' => 'Dubbla omdirigeringar',
'doubleredirectstext' => 'Det här är en lista över sidor som dirigerar om till andra omdirigeringssidor. Varje rad innehåller länkar till den första och andra omdirigeringsidan, samt till målet för den andra omdirigeringen. Målet för den andra omdirigeringen är ofta den "riktiga" sidan, som den första omdirigeringen egentligen ska leda till.
'duration-centuries' => '$1 {{PLURAL:$1|sekel|sekel}}',
'duration-millennia' => '$1 {{PLURAL:$1|millennium|millennier}}',
-# Unknown messages
-'pageswithprop-legend' => 'Sidor med en sidegenskap',
-'pageswithprop-submit' => 'Gå',
+# Image rotation
+'rotate-comment' => 'Bilden roteras $1 {{PLURAL:$1|grad|grader}} medurs',
+
);
'tog-hidepatrolled' => 'Пинҳон кардани вироишҳои гаштхӯрда дар тағйироти охир',
'tog-newpageshidepatrolled' => 'Пинҳони саҳифаҳои гаштхӯрда аз феҳристи саҳифаҳои нав',
'tog-extendwatchlist' => 'Густариши феҳристи пайгириҳо барои нишон додани ҳамаи тағйиротҳо, на танҳо аз ҳама охирин',
-'tog-usenewrc' => 'Ð\90з Ñ\82аÒ\93йиÑ\80оÑ\82и оÑ\85иÑ\80и гÑ\83Ñ\81Ñ\82аÑ\80иÑ\88Ñ\91Ñ\84Ñ\82а иÑ\81Ñ\82иÑ\84ода баÑ\80ед(ҶаваСкÑ\80ипÑ\82 лозим аÑ\81т)',
+'tog-usenewrc' => 'Ð\93Ñ\83Ñ\80ӯҳбандии Ñ\82аÒ\93ийÑ\80оÑ\82 баÑ\80 поÑ\8fи Ñ\81аÑ\84ҳа даÑ\80 Ñ\82аÒ\93ийÑ\80оÑ\82и оÑ\85иÑ\80 ва Ñ\84еҳÑ\80иÑ\81Ñ\82и пайгиÑ\80иҳо (ниÑ\91зманди ҶаваСкÑ\80ипт)',
'tog-numberheadings' => 'шуморагузори~и худкори инвонҳо',
'tog-showtoolbar' => 'Намоиши навори абзори вироиш (JavaScript)',
'tog-editondblclick' => 'Вироиш намудани саҳифаҳо ҳангоми ду карат пахш намудани тугмаи мушак (JavaScript)',
'tog-editsectiononrightclick' => 'Ба кор андохтани вироиши сарлавҳаҳои қисматҳо бо клики рост (ҶаваСкрипт)',
'tog-showtoc' => 'Намоиши феҳристи мундариҷон (барои мақолаҳои бо беш аз 3 сарлавҳа)',
'tog-rememberpassword' => 'Вуруди манро дар ин мурургар дар хотир нигоҳ дор (ҳадди аксар то $1 {{PLURAL:$1|рӯз|рӯз}})',
-'tog-watchcreations' => 'Ð\94оÑ\85ил намÑ\83дани Ñ\81аҳиÑ\84аҳое, ки ман Ñ\81оÑ\85Ñ\82аам ба Ñ\84еҳÑ\80иÑ\81Ñ\82и назаÑ\80оÑ\82и ман',
-'tog-watchdefault' => 'Саҳифаҳои эҷодкардаамро ба феҳристи пайгириам илова кунед',
-'tog-watchmoves' => 'Саҳифаҳои кӯчонидаамро ба феҳристи пайгириҳоям илова кунед',
-'tog-watchdeletion' => 'Саҳифаҳои эҷодкардаи манро ба феҳристи пайгириҳоям илова кунед',
+'tog-watchcreations' => 'СаҳиÑ\84аҳое, ки меÑ\81озам ва паÑ\80вандаҳое, ки боÑ\80гÑ\83зоÑ\80Ó£ мекÑ\83нам ба Ñ\84еҳÑ\80иÑ\81Ñ\82и пайгиÑ\80иҳоÑ\8fм аÑ\84зÑ\83да Ñ\88авад.',
+'tog-watchdefault' => 'Саҳифаҳо ва парвандаҳое, ки вироиш мекунам ба феҳристи пайгириҳоям афзуда шавад',
+'tog-watchmoves' => 'Саҳифаҳо ва парвандаҳое, ки мунтақил мекунам ба феҳристи пайгириҳоям афзуда шавад',
+'tog-watchdeletion' => 'Саҳифаҳо ва парвандаҳое, ки ҳазф мекунам ба феҳристи пайгириҳоям афзуда шавад',
'tog-minordefault' => 'Пешфарзи ҳамаи вироишҳоро ҷузъи ишора кунед',
'tog-previewontop' => 'Намоиши пешнамоиши қаблӣ пеш аз қуттии вироиш ва на пас аз он',
'tog-previewonfirst' => 'Нишон додани пешнамоиш дар нахустин вироиш',
'tog-nocache' => 'Ҳофизаи ниҳонии саҳифа дар мурургар ғайрифаъол шавад',
-'tog-enotifwatchlistpages' => 'Агар саҳифае мавриди пайгирии ман тағйир карда шавад ба ман тариқи почтаи электронӣ пайём бифиристед.',
+'tog-enotifwatchlistpages' => 'Агар сафҳа ё парвандае аз феҳристи пайгириҳоям вироиш шуд ба ман номае фиристода шавад',
'tog-enotifusertalkpages' => 'Ҳангоме ки дар саҳифаи корбариам тағйир дода мешавад ба ман тариқи почтаи электронӣ пайём бифиристед.',
-'tog-enotifminoredits' => 'Ð\91аÑ\80ои Ñ\82аÒ\93йиÑ\80оÑ\82и Ò·Ñ\83зÑ\8aи ба ман Ñ\82аÑ\80иÒ\9bи поÑ\87Ñ\82аи Ñ\8dлекÑ\82Ñ\80онӣ пайÑ\91м биÑ\84иÑ\80иÑ\81Ñ\82ед.',
+'tog-enotifminoredits' => 'Ð\91аÑ\80ои Ñ\82аÒ\93ийÑ\80оÑ\82и Ò·Ñ\83зÑ\8aÓ£ даÑ\80 Ñ\81аÑ\84ҳаҳо ва паÑ\80вандаҳо ҳам ба ман номае Ñ\84иÑ\80иÑ\81Ñ\82ода Ñ\88авад',
'tog-enotifrevealaddr' => 'Нишонаи почтаи электронии ман дар номаҳои иттилорасонӣ қайд шавад',
'tog-shownumberswatching' => 'Нишон додани шумораи корбарони пайгир',
'tog-oldsig' => 'Пешнамоиши имзои вуҷуддошта:',
'underline-always' => 'Доимо',
'underline-never' => 'Ҳеҷгоҳ',
-'underline-default' => 'Пешфарзи мурургар',
+'underline-default' => 'Пӯст ё мурургари пешфарз',
# Font style option in Special:Preferences
'editfont-style' => 'Сабки қалами ҷаъбаи вироиш:',
'listingcontinuesabbrev' => 'идома',
'index-category' => 'Саҳифаҳои намояшуда',
'noindex-category' => 'Саҳифаҳои намоиянашуда',
+'broken-file-category' => 'Саҳифаҳои дорои пайванди шикаста ба парванда',
'about' => 'Дар бораи',
'article' => 'Саҳифаи мӯҳтаво',
'newwindow' => '(дар равзанаи ҷадид боз мешавад)',
'cancel' => 'Лағв',
'moredotdotdot' => 'Бештар...',
-'mypage' => 'Саҳифаи ман',
-'mytalk' => 'Ð\93Ñ\83Ñ\84Ñ\82Ñ\83гӯи ман',
+'mypage' => 'Саҳифа',
+'mytalk' => 'Ð\91аҳÑ\81',
'anontalk' => 'Баҳс бо ин IP',
'navigation' => 'Гаштан',
'and' => ' ва',
'viewsource' => 'Намоиши матни вики',
'actionthrottled' => 'Ҷилави амали шумо гирифта шуд',
'actionthrottledtext' => 'Ба манзури ҷилавгирӣ аз спам, шумо иҷоза надоред, ки чунин амалеро беш аз чанд бор дар як муддати замони кӯтоҳ анҷом бидиҳед. Лутфан пас аз чанд дақиқа дубора талош кунед.',
-'protectedpagetext' => 'Ин саҳифа барои ҷилавгирӣ аз вироиш қуфл шудааст.',
+'protectedpagetext' => 'Ин саҳифа барои ҷилавгирӣ аз вироиш ва дигар амалҳо қуфл шудааст.',
'viewsourcetext' => 'Шумо метавонед матни викии ин саҳифаро назар кунед ё нусха бардоред:',
'protectedinterface' => 'Ин саҳифа ороишдиҳандаи матни ин нармафзор аст, ва ба манзури пешгирӣ аз харобкорӣ қуфл шудааст.',
'editinginterface' => "'''Огоҳӣ:''' Шумо саҳифаеро вироиш карда истодаед, ки матни интерфейси барнома мебошад. Тағйироти ин саҳифа барои намуди интерфейси дигар корбарон таъсир хоҳад расонид. Барои тарҷумаҳо, лутфан аз [//translatewiki.net/wiki/Main_Page?setlang=tg Бетавики], ки лоиҳаи маҳаликунонии МедиаВики мебошад, истифода кунед.",
'createaccount' => 'Ҳисоби ҷадидеро созед',
'gotaccount' => "Ҳисоби корбарӣ доред? '''$1'''.",
'gotaccountlink' => 'Вуруд шавед',
+'userlogin-resetlink' => 'Ҷузъиёти вурудро фаромӯш кардаед?',
'createaccountmail' => 'бо почтаи электронӣ',
'createaccountreason' => 'Сабаб:',
'badretype' => 'Калимаҳои убуре, ки ворид кардаед бо ҳамдигар мувофиқат намекунанд.',
'resetpass_forbidden' => 'Дар {{SITENAME}} калимаҳои убурро наметавон тағйир дод',
'resetpass-no-info' => 'Барои дастрасии мустақим ба ин саҳифа шумо бояд ба систем ворид шуда бошед.',
'resetpass-submit-loggedin' => 'Тағйири гузарвожа',
+'resetpass-submit-cancel' => 'Лағв',
'resetpass-wrong-oldpass' => 'Гузарвожаи мувақат ё охир номӯътабар.
Мумкин аст, ки шумо аллакай гузарвожаатонро бо муваффақият тағйир дода бошед ё дархости як гузарвожаи мувақатӣ карда бошед.',
'resetpass-temp-password' => 'Гузарвожаи муваққатӣ:',
# Special:PasswordReset
-'passwordreset-username' => 'Номи корбарӣ',
+'passwordreset-username' => 'Номи корбарӣ:',
+'passwordreset-emailelement' => 'Номи корбарӣ: $1
+Гузарвожаи муваққатӣ: $2',
+
+# Special:ChangeEmail
+'changeemail-cancel' => 'Лағв',
# Edit page toolbar
'bold_sample' => 'Матни пурранг',
'userinvalidcssjstitle' => "'''Ҳушдор:'''Пӯсте бо номи \"\$1\" вуҷуд надорад. Таваҷҷӯҳ кунед ки саҳифаҳои .css ва .js бо ҳарфҳои хурд навишта мешаванд, Намуна. {{ns:user}}:Фу/vector.css дар муқобили корбар {{ns:user}}:Фу/Vector.css.",
'updated' => '(Ба рӯз шуда)',
'note' => "'''Эзоҳ:'''",
-'previewnote' => "'''Ин фақат пешнамоиш аст; дигаргуниҳо ҳоло захира нашудаанд!'''",
+'previewnote' => "'''Ба ёд дошта бошед, ки ин фақат пешнамоиш аст.'''
+Тағийроти шумо ҳанӯз захира нашудааст!",
'previewconflict' => 'Ин пешнамоиш аккоскунандаи матни ноҳияи вироиш дар боло аст ва агар онро захира кунед бо ҳамин шакл нишода дода хоҳад шуд.',
'session_fail_preview' => "'''Бубахшед! Аз сабаби аз даст рафтани иттилооти нишасти корбарӣ, наметавонем вироишҳои шуморо пардозиш кунем.
Лутфан дубора саъй кунед. Агар боз бо ҳамин паём рӯ ба рӯ шавед, аз систем хориҷ шавед ва муҷаддадан ворид шавед.'''",
Шумо зарурияти вироиши ин саҳифаро дида баромаданатон лозим.
Сабти ҳазфшавии ин саҳифа барои фароҳам овардани имкониятҳои қулай оварда шудааст:",
+# Parser/template warnings
+'post-expand-template-argument-category' => 'Саҳифаҳои ҳавои шаблонҳои бо параметрҳои нодида гирифташуда',
+
# "Undo" feature
'undo-success' => 'Ин вироиш метавонад ботил шавад. Лутфан муқоисаи зеринро барои таъйид кардани амалӣ худ, баррасӣ кунед, ва баъдан барои анҷом додани ботилкунии вироиш тағйироти зеринро захира кунед.',
'undo-failure' => 'Ба иллати бархӯрдани вироишҳои дар миён омада, ин вироишро ботил наметавон кард.',
Шарҳ: (феълӣ) тафовут бо нусхаи феълӣ
(қаблӣ) = тафовут бо нусхаи феълӣ, ҷузъ = вироиши ҷузъӣ',
'history-fieldset-title' => 'Мурури таърих',
+'history-show-deleted' => 'Фақат ҳазфшуда',
'histfirst' => 'Аввалин',
'histlast' => 'Охирин',
'historysize' => '({{PLURAL:$1|1 байт|$1 байт}})',
'revdelete-success' => "'''Тағйири намоёнии нусха бо муваффақият анҷом шуд.'''",
'logdelete-success' => "'''Тағйири намоёнии маврид бо муваффақият анҷом шуд.'''",
'revdel-restore' => 'Тағйири падидорӣ',
+'revdel-restore-deleted' => 'нусхаҳои ҳазфшуда',
'revdel-restore-visible' => 'нусхаҳои намоён',
'pagehist' => 'Таърихи саҳифа',
'deletedhist' => 'Таърихи ҳазфшуда',
'lineno' => 'Сатри $1:',
'compareselectedversions' => 'Нусхаҳои интихобшударо муқоиса кунед',
'editundo' => 'ботил',
-'diff-multi' => '({{PLURAL:$1|вироиши миёнӣ|$1 вироишоти миёнӣ}} нишон дода нашудааст.)',
+'diff-multi' => '({{PLURAL:$1|як|$1}} вироиш миёнӣ тавассути {{PLURAL:$2|як|$2}} корбар нишон дода нашудааст)',
# Search results
'searchresults' => 'Натиҷаҳои ҷустуҷӯ',
'nextn' => 'баъдӣ {{PLURAL:$1|$1}}',
'viewprevnext' => 'Намоиш ($1 {{int:pipe-separator}} $2) ($3)',
'searchmenu-legend' => 'Гузинаҳои ҷустуҷӯ',
+'searchmenu-exists' => "'''Саҳифае бо номи \"[[:\$1]]\" дар ин вики вуҷуд дорад.'''",
'searchmenu-new' => "'''Эҷоди саҳифаи \"[[:\$1]]\" дар ин вики!'''",
'searchhelp-url' => 'Help:Мундариҷа',
-'searchprofile-articles' => 'Саҳифаҳои мӯҳтавоӣ',
-'searchprofile-project' => 'Саҳифаҳои лоиҳа',
-'searchprofile-images' => 'Парвандаҳо',
+'searchprofile-articles' => 'Саҳифаҳои мӯҳтаво',
+'searchprofile-project' => 'Саҳифаҳои роҳномо ва лоиҳа',
+'searchprofile-images' => 'Чандрасонаӣ',
+'searchprofile-everything' => 'Ҳамачиз',
'searchprofile-advanced' => 'Пешрафта',
'searchprofile-articles-tooltip' => 'Ҷустуҷӯ дар $1',
'searchprofile-project-tooltip' => 'Ҷустуҷӯ дар $1',
'searchprofile-images-tooltip' => 'Ҷустуҷӯи парвандаҳо',
'searchprofile-everything-tooltip' => 'Ҷустуҷӯи ҳамаи мӯҳтаво (бо ҳисоби саҳифаҳои баҳс)',
+'searchprofile-advanced-tooltip' => 'Ҷустуҷӯ дар фазоҳои номи дилхоҳ',
'search-result-size' => '$1 ({{PLURAL:$2|1 калима|$2 калимаҳо}})',
'search-result-score' => 'Иртибот: $1%',
'search-redirect' => '(тағйири масир $1)',
'showingresultsnum' => "Намоиши {{PLURAL:$3|'''1''' натиҷа|'''$3''' натоиҷ}} оғоз аз #'''$2'''.",
'nonefound' => "'''Эзоҳ''': Танҳо чанд фазоиномҳо аз рӯи пешфарш ҷустуҷӯ мешаванд.
Ҷустуҷӯи худро бо пешванди ''ҳама:'' барои ҷустуҷӯи мӯҳтавои пурра (саҳифаҳои баҳс, шаблонҳо ва ғайраҳо) такрор кунед, ё фазои номи дилхоҳро чун пешванд истифода баред.",
+'search-nonefound' => 'Натиҷаи муносиб бо дархост пайдо нашуд.',
'powersearch' => 'Ҷустуҷӯ',
'powersearch-legend' => 'Ҷустуҷӯи пешрафта',
'powersearch-ns' => 'Ҷустуҷӯ дар фазоҳои ном:',
# Preferences page
'preferences' => 'Тарҷиҳот',
-'mypreferences' => 'Тарҷиҳоти ман',
+'mypreferences' => 'Танзимот',
'prefs-edits' => 'Шумораи вироишҳо:',
'prefsnologin' => 'Ба систем ворид нашудаед',
'prefsnologintext' => 'Барои танзими тарҷиҳоти корбарӣ бояд [[Special:UserLogin|вуруд ба систем шавед]].',
'gender-female' => 'Зан',
'email' => 'Почтаи электронӣ',
'prefs-help-realname' => 'Номи ҳақиқӣ ихтиёрӣ ва агар шумо онро пешниҳод кунед онро ҳамчун муаллифи эҷодиётатон ёдоварӣ карда хоҳад шуд.',
-'prefs-help-email' => 'Нишонаи почтаи электронӣ (ихтиёрӣ); тамоси дигар корбарон бо шуморо ба василаи номаи электронӣ аз тариқи саҳифаи корбарӣ ё саҳифаи баҳси корбарӣ, бидуни ниёз ба фош кардани сомона ва нишонаи воқеъи почтаи электронии шумо мумкин месозад.',
+'prefs-help-email' => 'Нишонаи электронӣ ихтиёрист, аммо фиристодани гузарвожаи навро агар гузарвожаи худро фаромӯш кунед мумкин мегардад.',
'prefs-help-email-required' => 'Нишони почтаи электрони лозим аст.',
# User rights
'recentchanges-legend' => 'Ихтиёроти тағйироти охирин',
'recentchanges-summary' => 'Назорати тағйиротҳои навтарин дар Википедиа дар ҳамин саҳифа аст.',
'recentchanges-feed-description' => 'Радёбии охирин тағйироти ин вики дар ин хурд.',
+'recentchanges-label-newpage' => 'Ин вироиш саҳифаи нав эҷод кард',
+'recentchanges-label-minor' => 'Ин вироиши ҷузъи аст',
+'recentchanges-label-bot' => 'Ин вироишро робот анҷом додааст',
+'recentchanges-label-unpatrolled' => 'Ин вироиш ҳанӯз гаштзанӣ нашудааст',
'rcnote' => "Дар поён {{PLURAL:$1|'''1''' тағйире аст|'''$1''' тағйирот мебошанд}}, ки дар давоми {{PLURAL:$2|рӯҳ|'''$2''' рӯзҳои}} охир, сар карда аз $5, $4.",
'rcnotefrom' => 'Дар зер тағйиротҳои охирин аз <b>$2</b> (то <b>$1</b> нишон дода шудааст).',
'rclistfrom' => 'Нишон додани тағйиротҳои нав сар карда аз $1',
'upload-curl-error28-text' => 'Ин сомона беш аз андоза дар посух тӯл кард. Лутфан баррасӣ кунед, ки оё сомона фаъол ва бар хат аст ё на. Сипас лаҳзае интизор шавед ва дубора талош кунед. Шояд бад набошад дар вақти н он қадар банд дубора талош кунед.',
'license' => 'Иҷозатнома:',
-'license-header' => 'Иҷозатнома:',
+'license-header' => 'Иҷозатнома',
'nolicense' => 'Ҳеҷ яке интихоб нашудааст',
'license-nopreview' => '(Пешнамоиш вуҷуд надорад)',
'upload_source_url' => '(як нишони интернетии мӯътабар ва оммавӣ)',
'protectedtitlestext' => 'Унвонҳои зерин аз эҷод муҳофизат шудаанд',
'protectedtitlesempty' => 'Дар ҳоли ҳозир ҳеҷ унвоне бо ин параметрҳо муҳофизат нащудааст',
'listusers' => 'Рӯйхати корбарон',
+'usercreated' => '{{GENDER:$3|Эҷодшуда}} дар таърихи $1 дар соати $2',
'newpages' => 'Саҳифаҳои нав',
'newpages-username' => 'Номи корбар:',
'ancientpages' => 'Саҳифаҳои кӯҳнатарин',
'listgrouprights-helppage' => 'Help:Дастрасиҳои гурӯҳӣ',
'listgrouprights-members' => '(феҳристи аъзоён)',
-# E-mail user
+# Email user
'mailnologin' => 'Нишонае аз фиристанда вуҷуд надорад',
'mailnologintext' => 'Барои фиристодани почтаи электронӣ барои корбарони дигар бояд [[Special:UserLogin|ба систем ворид шавед]] ва нишонаи почтаи электронии мӯътабар дар [[Special:Preferences|тарҷиҳоти]] худ дошта бошед.',
'emailuser' => 'Фиристодани email ба ин корбар',
'emailsenttext' => 'Номаи почтаи электронии шумо фиристода шуд.',
# Watchlist
-'watchlist' => 'Феҳристи назароти ман',
-'mywatchlist' => 'Феҳристи назароти ман',
+'watchlist' => 'Феҳристи пайгирӣ',
+'mywatchlist' => 'Феҳристи пайгириҳо',
+'watchlistfor2' => 'Барои $1 $2',
'nowatchlist' => 'Дар феҳристи пайгириҳои шумо ҳеҷ мавриде нест.',
'watchlistanontext' => 'Лутфан барои мушоҳида ва вироиши феҳристи пайгириҳои худ аз $1 истифода кунед.',
'watchnologin' => 'Вуруд нашуда',
'historywarning' => 'Ҳушдор: Саҳифае ки шумо ҳазф карданиед, таърих дорад:',
'confirmdeletetext' => 'Шумо дар ҳоли ҳазф кардани як саҳифа ё аксе аз пойгоҳ дода ҳамроҳ бо тамоми таърихи он ҳастед. Лутфан ин амалро тасдиқ кунед ва итминон ҳосил кунед, ки оқибати ин корро медонед ва ин амалро мутобиқи [[{{MediaWiki:Policy-url}}|сиёсати ҳазф]] анҷом медиҳед.',
'actioncomplete' => 'Амал иҷро шуд',
+'actionfailed' => 'Амал номуваффақ шуд',
'deletedtext' => '"$1" ҳазф шудааст.
Нигаред ба $2 барои гузориши ҳазфи охирин.',
'dellogpage' => 'Гузоришҳои ҳазф',
'blanknamespace' => '(Аслӣ)',
# Contributions
-'contributions' => 'Ҳиссагузории корбар',
+'contributions' => 'Ҳиссагузориҳои {{GENDER:$1|корбар}}',
'contributions-title' => 'Ҳиссагузориҳои корбар барои $1',
-'mycontris' => 'Хиссагузории ман',
+'mycontris' => 'Ҳиссагузориҳо',
'contribsub2' => 'Барои $1 ($2)',
'nocontribs' => 'Ҳеҷ тағйире бо ин мушаххасот пайдо нашуд.',
'uctop' => '(боло)',
'sp-contributions-newbies-sub' => 'Барои навкорон',
'sp-contributions-blocklog' => 'Гузориши басташуданҳо',
'sp-contributions-deleted' => 'Ҳиссагузориҳои ҳазфшудаи корбар',
-'sp-contributions-talk' => 'Баҳс',
+'sp-contributions-uploads' => 'боргузориҳо',
+'sp-contributions-logs' => 'гузоришҳо',
+'sp-contributions-talk' => 'баҳс',
'sp-contributions-userrights' => 'Мудирияти ихтиёроти корбарӣ',
'sp-contributions-search' => 'Ҷустуҷӯи ҳиссагузориҳо',
'sp-contributions-username' => 'IP нишона ё номи корбар:',
'nolinkshere-ns' => "Ҳеҷ саҳифа аз фазоиноми интихобшуда ба '''[[:$1]]''' пайванд надорад.",
'isredirect' => 'саҳифаи тағйири масир',
'istemplate' => 'истифодашуда дар саҳифа',
-'isimage' => 'пайванди акс',
+'isimage' => 'пайванд ба парванда',
'whatlinkshere-prev' => '{{PLURAL:$1|қаблӣ|қаблӣ $1}}',
'whatlinkshere-next' => '{{PLURAL:$1|баъдӣ|баъдӣ $1}}',
'whatlinkshere-links' => '← пайвандҳо',
'whatlinkshere-hideredirs' => '$1 тағйири масир',
'whatlinkshere-hidetrans' => '$1 трансгунҷоишҳо',
'whatlinkshere-hidelinks' => '$1 пайвандҳо',
+'whatlinkshere-hideimages' => '$1 пайвандҳои парванда',
'whatlinkshere-filters' => 'Филтрҳо',
# Block/unblock
'ipusubmit' => 'Боз кардани дастрасӣ',
'unblocked' => 'Дастрасии [[User:$1|$1]] боз карда шуд',
'unblocked-id' => 'Қатъи дастрасии шумораи $1 хотима ёфт',
-'ipblocklist' => 'IP нишонаҳо ва номҳои корбарии баста шуда',
+'ipblocklist' => 'Корбарони басташуда',
'ipblocklist-legend' => 'Ҷустуҷӯи корбари баста шуда',
'ipblocklist-submit' => 'Ҷустуҷӯ',
'infiniteblock' => 'бе поён',
'tooltip-rollback' => '"Вогард" вироиш(ҳо)ро ба ин саҳифаи охирин ҳиссагузор бо як клик мегардонад',
'tooltip-undo' => '"Ботил" ин вироишро ботил мекунад ва форми вироишро дар ҳолати пешнамоиш боз мекунад.
Ин имкони илова кардани як сабаберо дар хулоса медиҳад.',
+'tooltip-summary' => 'Хулосаи кӯтоҳ ворид кунед',
# Metadata
'notacceptable' => 'Коргузори ин вики аз ирсоли дода ба шакле ки барномаи шумо битавонад намоиш диҳад, пешкаш карда наметавонад.',
'metadata-help' => 'Ин парванда иттилооти иловагиро дар бар мегирад, эҳтимол аз аксбардораки рақамӣ ё сканер дар вақти сохтан ва рақамӣ кардан, илова шудааст. Агар парванда аз вазъияти ибтидоиаш тағйир дода бошад, мумкин аст, шарҳу тафсилоти мавҷуди иттилооти аксро тамоман бозтоб надиҳад.',
'metadata-expand' => 'Намоиши ҷузъиёти тафсилӣ',
'metadata-collapse' => 'Пинҳон кардани ҷузъиёти тафсилӣ',
-'metadata-fields' => 'EXIF фосилаҳои додаҳо, ки дар ин паём оварда шудаанд дар ҷадвали акс ҷамъ шуда бошанд ҳам, намоиш дода хоҳанд шуд. Бақия онҳо танҳо дар вақти боз кардани ҷадвал нишон дода хоҳанд шуд.
+'metadata-fields' => 'Фарододаҳои тасвир нишон додашуда дар ин пайғом вақти ҷадвал фарододаҳои тавсир ҷамъ шуда бошад ҳам намоиш дода мешавад. Бақияи маворид танҳо замоне нишон дода мешавад, ки ҷадвали ёдшуда боз шавад.
* make
* model
* datetimeoriginal
'monthsall' => 'ҳама',
'limitall' => 'ҳама',
-# E-mail address confirmation
+# Email address confirmation
'confirmemail' => 'Тасдиқи нишонаи почтаи электронӣ',
'confirmemail_noemail' => 'Шумо дар саҳифаи [[Special:Preferences|тарҷиҳоти корбарии]] худ нишонаи почтаи электронии мӯътабареро ворид накардаед.',
'confirmemail_text' => '{{SITENAME}} таъйиди эътибои почтаи электронии шуморо пеш аз истифода хидмати электронӣ талаб мекунад. Тугмаи зеринро фаъол кунед то номаи таъйидӣ ба почтаи электронии шумо фиристода шавад. Ин нома пайвандеро дар бар мегирад, ки коде дорад; пайвандро дар мурургар боз кунед, то ки почтаи электрониатон дар ҳақиқат таъйид шавад.',
'blankpage' => 'Саҳифаи холӣ',
# Special:Tags
+'tag-filter' => 'Филтри [[Special:Tags|барчасбҳо]]:',
'tags-edit' => 'вироиш',
# Database error messages
'doubleredirectstext' => 'หน้านี้แสดงรายการหน้าที่เปลี่ยนทางไปยังหน้าเปลี่ยนทางอื่น
แต่ละแถวมีการเชื่อมโยงไปยังการเปลี่ยนทางครั้งแรกและครั้งที่สอง เช่นเดียวกับเป้าหมายของการเปลี่ยนทางครั้งที่สอง ซึ่งมักเป็นหน้าเป้าหมาย "ที่แท้จริง" ที่การเปลี่ยนแปลงครั้งแรกควรชี้ไป
หน่วยที่<del>ขีดฆ่า</del> คือ รายการที่ได้แก้ไขแล้ว',
-'double-redirect-fixed-move' => '[[$1]] à¸\96ูà¸\81à¹\80à¸\9bลีà¹\88ยà¸\99à¸\8aืà¹\88à¸แล้ว
+'double-redirect-fixed-move' => '[[$1]] à¹\84à¸\94à¹\89ยà¹\89ายแล้ว
ขณะนี้เปลี่ยนทางไปยัง [[$2]]',
'double-redirect-fixed-maintenance' => 'การแก้ไขการเปลี่ยนทางซ้ำซ้อนจาก [[$1]] ไปยัง [[$2]]',
-'double-redirect-fixer' => 'à¸\9cูà¹\89ซ่อมหน้าเปลี่ยนทาง',
+'double-redirect-fixer' => 'à¸\95ัวซ่อมหน้าเปลี่ยนทาง',
'brokenredirects' => 'หน้าเปลี่ยนทางเสีย',
'brokenredirectstext' => 'หน้าเปลี่ยนทางต่อไปนี้เชื่อมโยงไปยังหน้าที่ยังไม่ถูกสร้าง:',
'deletepage' => 'ลบหน้า',
'confirm' => 'ยืนยัน',
'excontent' => "เนื้อหาเดิม: '$1'",
-'excontentauthor' => "เนื้อหาเดิม: '$1' (และผู้เขียนคนเดียว คือ '[[Special:Contributions/$2|$2]]')",
+'excontentauthor' => "à¹\80à¸\99ืà¹\89à¸à¸«à¸²à¹\80à¸\94ิม: '$1' (à¹\81ละมีà¸\9cูà¹\89à¹\80à¸\82ียà¸\99à¸\84à¸\99à¹\80à¸\94ียว à¸\84ืภ'[[Special:Contributions/$2|$2]]')",
'exbeforeblank' => "เนื้อหาก่อนถูกทำว่างคือ: '$1'",
'exblank' => 'หน้าว่าง',
'delete-confirm' => 'ลบ "$1"',
'undelete-filename-mismatch' => 'ไม่สามารถกู้คืนรุ่นไฟล์ที่มีตราเวลา $1: ชื่อไฟล์ไม่ตรง',
'undelete-bad-store-key' => 'ไม่สามารถกู้คืนรุ่นไฟล์ที่มีตราเวลา $1: ไฟล์สูญหายก่อนถูกลบ',
'undelete-cleanup-error' => 'เกิดความผิดพลาดในการลบไฟล์กรุที่ไม่ใช้แล้ว "$1"',
-'undelete-missing-filearchive' => 'ไม่สามารถกู้คืนไฟล์เก่าหมายเลข $1 เพราะไม่มีในฐานข้อมูล
+'undelete-missing-filearchive' => 'à¹\84มà¹\88สามารà¸\96à¸\81ูà¹\89à¸\84ืà¸\99à¹\84à¸\9fลà¹\8cà¹\80à¸\81à¹\88าหมายà¹\80ลà¸\82 $1 à¹\80à¸\9eราะà¹\84มà¹\88มีà¸\82à¹\89à¸à¸¡à¸¹à¸¥à¹\83à¸\99à¸\90าà¸\99à¸\82à¹\89à¸à¸¡à¸¹à¸¥
ไฟล์อาจถูกกู้คืนไปแล้ว',
'undelete-error' => 'เกิดข้อผิดพลาดในการกู้คืนหน้า',
'undelete-error-short' => 'เกิดข้อผิดพลาดในการกู้คืนไฟล์: $1',
** ใส่ข้อมูลเท็จ
** ลบเนื้อหาในหน้าออก
** ใส่ลิงก์สแปม
-** ใส่ข้อความขยะเข้ามา
-** à¸\84ุà¸\81à¸\84ามà¸\9cูà¹\89à¸à¸·à¹\88น
-** à¸\81à¹\88à¸à¸\81วà¸\99à¸\9cูà¹\89à¸à¸·à¹\88à¸\99
-** à¸\8aืà¹\88à¸à¸\9cูà¹\89à¹\83à¸\8aà¹\89à¸\97ีà¹\88à¹\84มà¹\88สุภาà¸\9eหรืà¸à¹\84มà¹\88à¸\84วรà¹\83à¸\8a้',
+** à¹\83สà¹\88à¸\82à¹\89à¸à¸\84วามà¹\84รà¹\89สาระ/à¸\82ยะà¹\80à¸\82à¹\89ามา
+** à¸\9eฤà¸\95ิà¸\81รรมà¸\82à¹\88มà¸\82ูà¹\88/รัà¸\87à¸\84วาน
+** à¹\83à¸\8aà¹\89หลายà¸\9aัà¸\8dà¸\8aีà¹\83à¸\99à¸\97าà¸\87à¸\97ีà¹\88à¸\9cิà¸\94
+** à¸\8aืà¹\88à¸à¸\9cูà¹\89à¹\83à¸\8aà¹\89à¸\97ีà¹\88à¹\84มà¹\88à¸à¸²à¸\88ยà¸à¸¡à¸£à¸±à¸\9aà¹\84à¸\94้',
'ipb-hardblock' => 'ป้องกันไม่ให้ผู้ใช้ล็อกอินแก้ไขจากเลขที่อยู่ไอพีนี้',
'ipbcreateaccount' => 'ป้องกันการสร้างบัญชี',
'ipbemailban' => 'ป้องกันมิให้ผู้ใช้ส่งอีเมล',
'ipb-blockingself' => 'คุณกำลังบล็อกตัวเอง! แน่ใจแล้วหรือว่าต้องการทำอย่างนั้น',
'ipb-confirmhideuser' => 'คุณกำลังบล็อกผู้ใช้โดยเป็นผู้ใช้ "ซ่อนผู้ใช้" ซึ่งจะระงับชื่อผู้ใช้ในรายการและหน่วยปูมทั้งหมด คุณแน่ใจหรือว่าต้องการดำเนินการเช่นนั้น',
'ipb-edit-dropdown' => 'แก้ไขสาเหตุการบล็อก',
-'ipb-unblock-addr' => 'à¹\80ลิà¸\81บล็อก $1',
-'ipb-unblock' => 'à¹\80ลิà¸\81บล็อกผู้ใช้หรือเลขที่อยู่ไอพี',
+'ipb-unblock-addr' => 'à¸\9bลà¸\94บล็อก $1',
+'ipb-unblock' => 'à¸\9bลà¸\94บล็อกผู้ใช้หรือเลขที่อยู่ไอพี',
'ipb-blocklist' => 'ดูการบล็อกปัจจุบัน',
'ipb-blocklist-contribs' => 'ผลงานเขียนโดย $1',
'unblockip' => 'ปลดบล็อกผู้ใช้',
-'unblockiptext' => 'à¹\83à¸\8aà¹\89à¹\81à¸\9aà¸\9aà¸\94à¹\89าà¸\99ลà¹\88าà¸\87สำหรัà¸\9aคืนสิทธิการเข้าถึงการเขียนแก่เลขที่อยู่ไอพี หรือชื่อผู้ใช้ที่เคยถูกบล็อก',
+'unblockiptext' => 'à¹\83à¸\8aà¹\89à¹\81à¸\9aà¸\9aà¸\94à¹\89าà¸\99ลà¹\88าà¸\87à¹\80à¸\9eืà¹\88à¸คืนสิทธิการเข้าถึงการเขียนแก่เลขที่อยู่ไอพี หรือชื่อผู้ใช้ที่เคยถูกบล็อก',
'ipusubmit' => 'ยกเลิกการบล็อกนี้',
'unblocked' => '[[User:$1|$1]] ถูกบล็อก',
'unblocked-range' => '$1 ถูกปลดบล็อกแล้ว',
'blocklist-by' => 'ผู้ดูแลระบบที่บล็อก',
'blocklist-params' => 'พารามิเตอร์การบล็อก',
'blocklist-reason' => 'เหตุผล',
-'ipblocklist-submit' => 'สืà¸\9aà¸\84à¹\89à¸\99',
-'ipblocklist-localblock' => 'à¸\81ารสà¸\81ัà¸\94à¸\81ัà¹\89à¸\99ภายในวิกินี้',
-'ipblocklist-otherblocks' => '{{PLURAL:$1|à¸\81ารสà¸\81ัà¸\94à¸\81ัà¹\89à¸\99}}à¸à¸·à¹\88à¸\99à¹\86',
+'ipblocklist-submit' => 'à¸\84à¹\89à¸\99หา',
+'ipblocklist-localblock' => 'à¸\81ารà¸\9aลà¹\87à¸à¸\81ในวิกินี้',
+'ipblocklist-otherblocks' => '{{PLURAL:$1|à¸\81ารà¸\9aลà¹\87à¸à¸\81}}à¸à¸·à¹\88à¸\99',
'infiniteblock' => 'ไม่มีกำหนด',
'expiringblock' => 'หมดอายุ $1 เวลา $2',
'anononlyblock' => 'ไม่ล็อกอินเท่านั้น',
'noautoblockblock' => 'ยกเลิกการบล็อกอัตโนมัติ',
-'createaccountblock' => 'à¸\9aลà¹\87à¸à¸\81การสร้างบัญชีผู้ใช้ใหม่',
-'emailblock' => 'à¸\9aลà¹\87à¸à¸\81à¸\81ารสà¹\88à¸\87อีเมล',
-'blocklist-nousertalk' => 'à¹\84มà¹\88สามารà¸\96à¹\81à¸\81à¹\89à¹\84à¸\82หà¸\99à¹\89าà¸à¸ ิà¸\9bรายของตนเอง',
+'createaccountblock' => 'à¸\9bิà¸\94à¹\83à¸\8aà¹\89à¸\87าà¸\99การสร้างบัญชีผู้ใช้ใหม่',
+'emailblock' => 'à¸\9bิà¸\94à¹\83à¸\8aà¹\89à¸\87าà¸\99อีเมล',
+'blocklist-nousertalk' => 'à¹\84มà¹\88สามารà¸\96à¹\81à¸\81à¹\89à¹\84à¸\82หà¸\99à¹\89าà¸\84ุยà¸\81ัà¸\9aà¸\9cูà¹\89à¹\83à¸\8aà¹\89ของตนเอง',
'ipblocklist-empty' => 'รายการบล็อกว่าง',
'ipblocklist-no-results' => 'เลขที่อยู่ไอพีหรือชื่อผู้ใช้ที่ต้องการไม่ได้ถูกบล็อก',
'blocklink' => 'บล็อก',
# Thumbnails
'thumbnail-more' => 'ขยาย',
-'filemissing' => 'à¹\84มà¹\88à¹\80à¸\88à¸à¹\84à¸\9fลà¹\8c',
+'filemissing' => 'à¹\84à¸\9fลà¹\8cสูà¸\8dหาย',
'thumbnail_error' => 'เกิดปัญหาไม่สามารถทำรูปย่อได้: $1',
'djvu_page_error' => 'หน้าเดจาวู (DjVu) เกินขนาด',
'djvu_no_xml' => 'ไม่สามารถส่งเอกซ์เอ็มแอล (XML) สำหรับไฟล์เดจาวู (DjVu)',
# Tooltip help for the actions
'tooltip-pt-userpage' => 'หน้าผู้ใช้ของคุณ',
-'tooltip-pt-anonuserpage' => 'หà¸\99à¹\89าà¸\9cูà¹\89à¹\83à¸\8aà¹\89à¸\82à¸à¸\87หมายà¹\80ลà¸\82à¹\84à¸à¸\9eีà¸\97ีà¹\88แก้ไข',
+'tooltip-pt-anonuserpage' => 'หà¸\99à¹\89าà¸\9cูà¹\89à¹\83à¸\8aà¹\89à¸\82à¸à¸\87à¹\80ลà¸\82à¸\97ีà¹\88à¸à¸¢à¸¹à¹\88à¹\84à¸à¸\9eีà¸\97ีà¹\88à¸\84ุà¸\93à¸\81ำลัà¸\87à¹\83à¸\8aà¹\89แก้ไข',
'tooltip-pt-mytalk' => 'หน้าอภิปรายของคุณ',
-'tooltip-pt-anontalk' => 'à¸\9eูà¸\94à¸\84ุยà¹\80à¸\81ีà¹\88ยวà¸\81ัà¸\9aà¸\81ารà¹\81à¸\81à¹\89à¹\84à¸\82à¸\88าà¸\81หมายà¹\80ลà¸\82à¹\84à¸à¸\9eี',
+'tooltip-pt-anontalk' => 'à¸\9eูà¸\94à¸\84ุยà¹\80à¸\81ีà¹\88ยวà¸\81ัà¸\9aà¸\81ารà¹\81à¸\81à¹\89à¹\84à¸\82à¸\88าà¸\81à¹\80ลà¸\82à¸\97ีà¹\88à¸à¸¢à¸¹à¹\88à¹\84à¸à¸\9eีà¸\99ีà¹\89',
'tooltip-pt-preferences' => 'ตั้งค่าการใช้งานส่วนตัว',
-'tooltip-pt-watchlist' => 'รายà¸\81ารà¸\97ีà¹\88เฝ้าดูการแก้ไข',
+'tooltip-pt-watchlist' => 'รายà¸\81ารหà¸\99à¹\89าà¸\97ีà¹\88à¸\84ุà¸\93เฝ้าดูการแก้ไข',
'tooltip-pt-mycontris' => 'รายการหน้าที่คุณเขียน',
'tooltip-pt-login' => 'ไม่จำเป็นต้องล็อกอินในการแก้ไข แต่แนะนำอย่างยิ่งให้ล็อกอิน',
'tooltip-pt-anonlogin' => 'ไม่จำเป็นต้องล็อกอินในการแก้ไข แต่แนะนำอย่างยิ่งให้ล็อกอิน',
'notacceptable' => 'เซิร์ฟเวอร์ของวิกิไม่สามารถให้ข้อมูลในรูปแบบที่ไคลเอนต์สามารถอ่านได้',
# Attribution
-'anonymous' => 'ผู้ใช้นิรนามของ{{SITENAME}}',
+'anonymous' => '{{PLURAL:$1|ผู้ใช้|ผู้ใช้}}นิรนามของ{{SITENAME}}',
'siteuser' => 'ผู้ใช้ $1 จาก {{SITENAME}}',
'anonuser' => 'ผู้ใช้นิรนามจาก {{SITENAME}} $1',
'lastmodifiedatby' => 'แก้ไขล่าสุดเมื่อเวลา $2 $1 โดย $3',
# Spam protection
'spamprotectiontitle' => 'ตัวกรองป้องกันสแปม',
-'spamprotectiontext' => 'หน้าที่คุณต้องการบันทึกโดนบล็อกด้วยตัวกรองสแปม ซึ่งอาจเกิดจากมีลิงก์ไปยังเว็บไซต์ภายนอกที่อยู่ในบัญชีดำ',
-'spamprotectionmatch' => 'ข้อความต่อไปนี้ได้ทำให้ตัวกรองสแปมของเราทำงาน: $1',
+'spamprotectiontext' => 'ข้อความที่คุณต้องการบันทึกถูกตัวกรองสแปมบล็อก
+อาจเกิดจากลิงก์ไปยังเว็บไซต์ภายนอกที่ถูกขึ้นบัญชีดำ',
+'spamprotectionmatch' => 'ข้อความต่อไปนี้กระตุ้นให้ตัวกรองสแปมของเราทำงาน: $1',
'spambot_username' => 'กวาดล้างมีเดียวิกิสแปม',
'spam_reverting' => 'ย้อนกลับไปรุ่นก่อนหน้าที่ไม่มีลิงก์ไปยังเว็บ $1',
'spam_blanking' => 'รุ่นการปรับปรุงทุกรุ่นประกอบไปด้วยลิงก์ไปยังเว็บ $1 (ทำหน้าว่าง)',
'pageinfo-robot-policy' => 'สถานะเสิร์ชเอนจิน',
'pageinfo-views' => 'จำนวนการเข้าดู',
'pageinfo-watchers' => 'จำนวนผู้เข้าดูหน้า',
+'pageinfo-few-watchers' => '{{PLURAL:$1|ผู้เฝ้าดู|ผู้เฝ้าดู}}น้อยกว่า $1 คน',
'pageinfo-redirects-name' => 'หน้าเปลี่ยนทางมายังหน้านี้',
'pageinfo-subpages-name' => 'หน้าย่อยของหน้านี้',
'pageinfo-subpages-value' => '$1 ($2 หน้าเปลี่ยนทาง; $3 หน้าไม่เปลี่ยนทาง)',
# Email address confirmation
'confirmemail' => 'ยืนยันอีเมล',
'confirmemail_noemail' => 'ไม่ได้ใส่อีเมลในส่วน [[Special:Preferences|การตั้งค่าส่วนตัว]]',
-'confirmemail_text' => 'ถ้าต้องการใช้คำสั่งพิเศษในด้านอีเมสล จำเป็นต้องใส่ค่าอีเมลก่อน โดยกดที่ปุ่มด้านล่าง และทางระบบจะส่งไปที่อีเมลนี้ ในอีเมลจะมีลิงก์ซึ่งมีรหัสสำหรับยืนยันอีเมล',
-'confirmemail_pending' => 'รหัสยืนยันได้ถูกส่งไปที่อีเมลของคุณ ถ้าได้สร้างบัญชีเร็วนี้ ให้รอซักครู่ก่อนที่จะขอรหัสอีกครั้งหนึ่ง',
-'confirmemail_send' => 'ส่งรหัสยืนยันผ่านทางอีเมล',
-'confirmemail_sent' => 'อีเมลยืนยันได้ส่งเรียบร้อย',
-'confirmemail_oncreate' => 'รหัสยืนยันได้ถูกส่งไปที่อีเมล อย่างไรก็ตามรหัสนี้ไม่จำเป็นสำหรับการล็อกอิน เว้นเสียแต่ว่าต้องการใช้คำสั่งพิเศษในด้านอีเมลของวิกินี้',
-'confirmemail_sendfailed' => 'ขออภัย {{SITENAME}} ไม่สามารถส่งอีเมลให้คุณยืนยันการใช้งานได้
-กรุณาตรวจสอบอีเมลว่าถูกต้อง และไม่มีอักขระที่ไม่สามารถใช้ได้
+'confirmemail_text' => '{{SITENAME}} กำหนดให้คุณตรวจสอบความสมเหตุสมผลของที่อยู่อีเมลของคุณก่อนใช้คุณลักษณะอีเมล
+เปิดใช้งานปุ่มด้านล่างเพื่อส่งเมลยืนยันไปยังที่อยู่ของคุณ
+เมลจะรวมลิงก์ซึ่งมีรหัส
+โหลดลิงก์ในเบราว์เซอร์ของคุณเพื่อยืนยันว่าที่อยู่อีเมลของคุณสมเหตุสมผล',
+'confirmemail_pending' => 'รหัสยืนยันถูกอีเมลไปหาคุณแล้ว
+ถ้าคุณเพิ่งสร้างบัญชี คุณอาจอยากรอสักครู่ให้ส่งไปถึงก่อนพยายามขอรหัสใหม่',
+'confirmemail_send' => 'ส่งรหัสยืนยันทางอีเมล',
+'confirmemail_sent' => 'ส่งอีเมลยืนยันแล้ว',
+'confirmemail_oncreate' => 'รหัสยืนยันถูกส่งไปยังที่อยู่อีเมลของคุณ
+รหัสนี้ไม่กำหนดให้ต้องล็อกอิน แต่คุณต้องระบุรหัสก่อนเปิดใช้งานคุณลักษณะที่อาศัยอีเมลทั้งหมดในวิกินี้',
+'confirmemail_sendfailed' => '{{SITENAME}} ไม่สามารถส่งเมลยืนยันได้
+โปรดตรวจสอบที่อยู่อีเมลว่าไม่มีอักขระที่ไม่สมเหตุสมผล
ข้อความตีกลับ: $1',
-'confirmemail_invalid' => 'รหัสยืนยันไม่ถูกต้อง หรือรหัสหมดอายุ',
-'confirmemail_needlogin' => 'ต้องทำการ $1 เพื่อยืนยันอีเมลของคุณว่าถูกต้อง',
-'confirmemail_success' => 'อีเมลคุณได้รับการยืนยันแล้ว คุณอาจจะล็อกอินและมีความสุขกับวิกิ',
+'confirmemail_invalid' => 'รหัสยืนยันไม่ถูกต้อง
+รหัสอาจหมดอายุแล้ว',
+'confirmemail_needlogin' => 'ต้อง $1 เพื่อยืนยันที่อยู่อีเมลของคุณ',
+'confirmemail_success' => 'อีเมลคุณได้รับการยืนยันแล้ว
+คุณอาจ[[Special:UserLogin|ล็อกอิน]]ตอนนี้และสนุกกับการแก้ไขวิกิ',
'confirmemail_loggedin' => 'อีเมลคุณได้รับการยืนยันแล้ว',
-'confirmemail_error' => 'มีà¸\9bัà¸\8dหาà¹\80à¸\81ิà¸\94à¸\82ึà¹\89à¸\99à¹\83à¸\99à¸\81ารยืà¸\99ยัà¸\99à¸à¸µà¹\80มล',
-'confirmemail_subject' => '{{SITENAME}} ยืนยันการใช้งานอีเมล',
+'confirmemail_error' => 'à¹\80à¸\81ิà¸\94à¸\9bัà¸\8dหาà¸\82à¸\93ะà¸\9aัà¸\99à¸\97ึà¸\81à¸\81ารยืà¸\99ยัà¸\99à¸\82à¸à¸\87à¸\84ุà¸\93',
+'confirmemail_subject' => 'การยืนยันที่อยู่อีเมล {{SITENAME}}',
'confirmemail_body' => 'ใครบางคน ซึ่งอาจจะเป็นคุณ จากหมายเลขไอพี $1 ได้ลงทะเบียนในชื่อ "$2" โดยใช้อีเมลนี้ที่ {{SITENAME}}
เพื่อยืนยันว่าบัญชีผู้ใช้นี้เป็นของคุณอย่างแน่อน และใช้งานฟีเจอร์ส่งอีเมลหาผู้ใช้บน {{SITENAME}} กดลิงก์นี้ในเว็บเบราวเซอร์ของคุณ:
[[Special:Preferences|{{SITENAME}} tercihlerinizi]] değiştirmeyi unutmayın.',
'yourname' => 'Kullanıcı adı:',
'yourpassword' => 'Parola:',
-'yourpasswordagain' => 'Parolayı yeniden yaz:',
+'yourpasswordagain' => 'Parolayı yeniden girin:',
'remembermypassword' => 'Girişimi bu tarayıcıda hatırla (en fazla $1 {{PLURAL:$1|gün|gün}} için)',
'securelogin-stick-https' => "Giriş yaptıktan sonra HTTPS'e bağlı kal",
'yourdomainname' => 'Alan adınız:',
'prefs-help-gender' => 'İsteğe bağlı: Yazılım tarafından doğru cinsiyet adreslemesi için kullanılır. Bu bilgi umumi olacaktır.',
'email' => 'E-posta',
'prefs-help-realname' => '* Gerçek isim (isteğe bağlı): eğer gerçek isminizi vermeyi seçerseniz, çalışmanızı size atfederken kullanılacaktır.',
-'prefs-help-email' => 'E-posta adresi isteğe bağlıdır; ancak eğer parolanızı unutursanız e-posta adresinize yeni parola gönderilmesine olanak sağlar.',
+'prefs-help-email' => 'E-posta adresi isteğe bağlıdır; ancak parolanızı unutmanız durumunda parola sıfırlamak için gerekecektir.',
'prefs-help-email-others' => 'Ayrıca kullanıcı sayfanızdaki bir bağlantı yoluyla diğer kullanıcıların size e-posta atmasına izin vermeyi seçebilirsiniz.
Diğer kullanıcılar sizinle bu yolla iletişime geçtiğinde e-posta adresiniz açıklanmaz.',
'prefs-help-email-required' => 'E-posta adresi gerekmektedir.',
Сез {{SITENAME}} проектында аноним рәвештә кала яисә шул ук яки башка исем белән яңадан <span class='plainlinks'>[$1 керә]</span> аласыз.
Кайбер битләр Сез кергән кебек күрсәтелергә мөмкин. Моны бетерү өчен браузер кэшын чистартыгыз.",
+'welcomeuser' => 'Хуш килдегез, $1!',
'yourname' => 'Кулланучы исеме:',
'yourpassword' => 'Серсүз:',
'yourpasswordagain' => 'Серсүзне кабат кертү:',
'changeemail-oldemail' => 'Хәзерге электрон әрҗә адресы:',
'changeemail-newemail' => 'Яңа электрон почта адресы:',
'changeemail-none' => '(юк)',
+'changeemail-password' => '«{{SITENAME}}» проекты өчен серсүзегез:',
'changeemail-submit' => 'E-mail адресын үзгәртү',
'changeemail-cancel' => 'Баш тарту',
Мондый хаталар аноним web-проксилар кулланганда килеп чыгарга мөмкин.",
'edit_form_incomplete' => "'''Төзәтү кырларының кайбер өлешләре серверга барып ирешмәде. Сезнең үзгәртүләр бозылмаганмы - игътибар белән тикшерегез һәм яңадан җибәреп карагыз.'''",
'editing' => '«$1» битен үзгәртү',
+'creating' => '«$1» битен ясау',
'editingsection' => '«$1» битендә бүлек үзгәртүе',
'editingcomment' => '«$1» битен үзгәртү (яңа бүлек)',
'editconflict' => 'Үзгәртү конфликты: $1',
'allpagesnext' => 'Киләсе',
'allpagessubmit' => 'Башкару',
'allpagesprefix' => 'Алкушымчалы битләрне күрсәтү:',
+'allpages-hide-redirects' => 'Юнәлтүләрне яшер',
# Special:Categories
'categories' => 'Төркемнәр',
Сторінка вважається багатозначною, якщо на ній розміщений шаблон, назва якого є на сторінці [[MediaWiki:Disambiguationspage]].",
'pageswithprop' => 'Сторінки з перевизначеними властивостями',
+'pageswithprop-legend' => 'Сторінки з перевизначеними властивостями',
'pageswithprop-text' => 'Тут перераховані сторінки, у яких були вручну перевизначені окремі властивості.',
'pageswithprop-prop' => 'Назва властивості:',
+'pageswithprop-submit' => 'Перейти',
'doubleredirects' => 'Подвійні перенаправлення',
'doubleredirectstext' => 'На цій сторінці наведено список перенаправлень на інші перенаправлення.
'duration-centuries' => '$1 {{PLURAL:$1|століття|століття|століть}}',
'duration-millennia' => '$1 {{PLURAL:$1|тисячоліття|тисячоліття|тисячоліть}}',
-# Unknown messages
-'pageswithprop-legend' => 'Сторінки з перевизначеними властивостями',
-'pageswithprop-submit' => 'Перейти',
+# Image rotation
+'rotate-comment' => 'Зображення повернуте на $1 {{PLURAL:$1|градус|градусів}} за годинниковою стрілкою',
+
);
$messages = array(
# User preference toggles
'tog-underline' => 'Havolalarning tagiga chizish:',
-'tog-justify' => "Matnni sahifaning eni bo'yicha tekislash",
-'tog-hideminor' => "Yangi oʻzgarishlar ro'yxatida kichik tahrirlarni yashirish",
-'tog-hidepatrolled' => 'Yangi oʻzgarishlar roʻyxatida patrullangan tahrirlarni yashirish',
-'tog-newpageshidepatrolled' => "Yangi sahifalar ro'yxatida patrullangan sahifalarni yashirish",
-'tog-numberheadings' => 'Sarlavhalarni avtomatik tarzda raqamlash',
-'tog-showtoolbar' => "Tahrirlash vaqtida yuqorigi unsurlar darchasini ko'rsatish (JavaScript)",
-'tog-editsection' => "[tahrir] havolasini har bir seksiyada ko'rsatish",
-'tog-showtoc' => "Mundarijani ko'rsatish (3 ta sarlavhadan ko'p bo'lgan sahifalar uchun)",
-'tog-rememberpassword' => 'Hisob ma’lumotlarini ushbu kompyuterda eslab qolish (eng ko‘pi bilan $1 {{PLURAL:$1|kunga|kunga}})',
+'tog-justify' => 'Matnni sahifaning eni boʻyicha tekislash',
+'tog-hideminor' => 'Yangi oʻzgarishlar roʻyxatida kichik tahrirlarni yashirish',
+'tog-hidepatrolled' => 'Yangi oʻzgarishlar roʻyxatida tekshirilgan tahrirlarni yashirish',
+'tog-newpageshidepatrolled' => 'Yangi sahifalar roʻyxatida tekshirilgan sahifalarni yashirish',
+'tog-extendwatchlist' => 'Kengaytirilgan kuzatuv roʻyxati: faqat oxirgi paytdagi emas, barcha oʻzgarishlar koʻrsatiladi',
+'tog-usenewrc' => 'Yangi oʻzgarishlar va kuzatuv roʻyxatidagi sahifalarni guruhlarga boʻlish (JavaScript orqali)',
+'tog-numberheadings' => 'Sarlavhalarni avtomatik raqamlash',
+'tog-showtoolbar' => 'Tahrirlash asboblari joylashgan yoʻlakchani koʻrsatish (JavaScript orqali)',
+'tog-editondblclick' => 'Sichqoncha tugmasini ikki martagina bosib tahrirlashni boshlash',
+'tog-editsection' => '[tahrir] havolasini har bir boʻlim boshida koʻrsatish',
+'tog-editsectiononrightclick' => 'Boʻlim sarlavhasiga sichqonchaning oʻng tugmasi bilan bosib tahrirlashni boshlash',
+'tog-showtoc' => 'Mundarijani koʻrsatish (3 tadan koʻproq sarlavha bor sahifalarda)',
+'tog-rememberpassword' => 'Hisob ma’lumotlarim ushbu brauzerda eslab qolinsin (ko‘pi bilan $1 {{PLURAL:$1|kunga|kunga}})',
'tog-watchcreations' => 'Men yaratgan sahifalarni va yuklagan fayllarni kuzatuv roʻyxatimga qoʻsh',
'tog-watchdefault' => 'Men tahrirlagan sahifa va fayllarni kuzatuv roʻyxatimga qoʻsh',
'tog-watchmoves' => 'Men koʻchirgan sahifa va fayllarni kuzatuv roʻyxatimga qoʻsh',
-'tog-watchdeletion' => 'Men yoʻqotgan sahifa va fayllarni kuzatuv roʻyxatimga qoʻsh',
-'tog-minordefault' => "Boshlang'ich holatga barcha tahrirlarni kamahamiyatli qilib belgilash",
-'tog-previewontop' => "Oldindan ko'rishni tahrirlash oynasi oldiga joylashtirish",
-'tog-previewonfirst' => "Tahrirlashga o'tishda batafsil ko'rinishni ko'rsatish",
-'tog-nocache' => "Brauzerda sahifalarni keshda saqlashni o'chirish",
+'tog-watchdeletion' => 'Men oʻchirgan sahifa va fayllarni kuzatuv roʻyxatimga qoʻsh',
+'tog-minordefault' => 'Sukut boʻyicha barcha tahrirlarimni «kichik tahrir» etib belgilash',
+'tog-previewontop' => 'Tahrir oynasi tepasida koʻrib chiqish',
+'tog-previewonfirst' => 'Tahrirlashga oʻtiboq koʻrib chiqishni boshlash',
+'tog-nocache' => 'Brauzer sahifalarni kesh xotirasida saqlamasin',
'tog-enotifwatchlistpages' => 'Kuzatuv roʻyxatimdagi sahifa yoki fayllar oʻzgartirilsa, e-pochtamga bu haqda xat yuborilsin',
'tog-enotifusertalkpages' => 'Munozara sahifam oʻzgartirilsa, e-pochtamga bu haqda xat yuborilsin',
+'tog-enotifminoredits' => 'Kichik tahrir qilinsa ham e-pochtamga bu haqda xat yuborilsin',
+'tog-enotifrevealaddr' => 'Xabar beruvchi xatlarda e-pochta manzilim koʻrsatilsin',
+'tog-shownumberswatching' => 'Sahifani kuzatuv roʻyxatiga olgan foydalanuvchilar sonini koʻrsatish',
'tog-oldsig' => 'Joriy imzo:',
-'tog-fancysig' => 'Imzoni wikimatn sifatida qara (avtomatik ishoratsiz)',
-'tog-showjumplinks' => '"ga o\'tish" yordamchi havolalarini yoqish',
-'tog-ccmeonemails' => 'Men boshqa foydalanuvchilarga yuborayotgan xatnig nusxasi oʻzimning e-pochtamga ham yuborilsin',
+'tog-fancysig' => 'Imzoni viki-belgi qilib koʻrsatish (avtomatik ishoratsiz)',
+'tog-externaleditor' => 'Sukut boʻyicha tashqi tahrirlash dasturidan foydalanish (faqat mutaxassislar uchun, kompyuteringizda maxsus moslamalar boʻlishi zarur. [//www.mediawiki.org/wiki/Manual:External_editors More batafsil])',
+'tog-externaldiff' => 'Sukut boʻyicha tashqi taqqoslash dasturidan foydalanish (faqat mutaxassislar uchun, kompyuteringizda maxsus moslamalar boʻlishi zarur. [//www.mediawiki.org/wiki/Manual:External_editors More batafsil])',
+'tog-showjumplinks' => 'yordamchi "tez oʻtish" havolalarini yoqish',
+'tog-uselivepreview' => 'Tez koʻrib chiqish (JavaScript orqali) (sinovda)',
+'tog-forceeditsummary' => 'Qisqa tavsif oynasi toʻldirilmagani haqida ogohlantirish koʻrsatilsin',
+'tog-watchlisthideown' => 'Oʻz tahrirlarim kuzatuv roʻyxatimda koʻrsatilmasin',
+'tog-watchlisthidebots' => 'Botlar qilgan tahrirlar kuzatuv roʻyxatimda koʻrsatilmasin',
+'tog-watchlisthideminor' => 'Kichik tahrirlar kuzatuv roʻyxatimda koʻrsatilmasin',
+'tog-watchlisthideliu' => 'Tizimga kirgan foydalanuvchilar tahrirlari kuzatuv roʻyxatimda koʻrsatilmasin',
+'tog-watchlisthideanons' => 'Anonim foydalanuvchilar tahrirlari kuzatuv roʻyxatimda koʻrsatilmasin',
+'tog-watchlisthidepatrolled' => 'Tekshirilgan tahrirlar kuzatuv roʻyxatimda koʻrsatilmasin',
+'tog-ccmeonemails' => 'Boshqa ishtirokchilarga yozgan xatimning nusxasi oʻzimning e-pochtamga joʻnatilsin.',
+'tog-diffonly' => 'Versiyalar taqqoslanayotganda, pastda sahifa matni koʻrsatilmasin',
'tog-showhiddencats' => 'Yashirin turkumlarni koʻrsatish',
'tog-noconvertlink' => "Sarlavhaga aylantirish dastagini o'chirib qo'yish",
+'tog-norollbackdiff' => 'Tahrir qaytarilganda, versiyalar taqqosini koʻrsatish kerak emas',
'underline-always' => 'Har doim',
'underline-never' => 'Hech qachon',
'underline-default' => 'Brauzer moslamari boʻyicha',
# Font style option in Special:Preferences
-'editfont-style' => 'Tahrirlash maydoni bosma harflari turi',
+'editfont-style' => 'Tahrirlash maydonidagi shrift turi:',
'editfont-default' => 'Brauzer moslamari boʻyicha',
-'editfont-monospace' => 'Monoenli bosma harflar',
-'editfont-sansserif' => 'Sans-serif bosma harflari',
-'editfont-serif' => 'Serif bosma harflari',
+'editfont-monospace' => 'Teng enli shrift (Monospaced)',
+'editfont-sansserif' => 'Kertiksiz shrift (Sans-serif)',
+'editfont-serif' => 'Kertikli shrift (Serif)',
# Dates
'sunday' => 'Yakshanba',
'dec' => 'dek',
# Categories related messages
-'pagecategories' => '{{PLURAL:$1|Turkum|Turkumlar}}',
+'pagecategories' => '{{PLURAL:$1|Turkum}}',
'category_header' => '"$1" turkumidagi maqolalar.',
'subcategories' => 'Ostturkumlar',
'category-media-header' => '"$1" turkumidagi fayllar',
'category-empty' => "''Ushbu turkumda hozircha sahifa yoki fayllar yoʻq.''",
-'hidden-categories' => '{{PLURAL:$1|Yashirin turkum|Yashirin turkumlar}}',
+'hidden-categories' => '{{PLURAL:$1|Yashirin turkum}}',
'hidden-category-category' => 'Yashirin turkumlar',
-'category-subcat-count' => '{{PLURAL:$2|Ushbu turkumda faqat bitta ostturkum mavjud.|Ushbu turkumda quyidagi {{PLURAL:$1|ostturkum|$1 ostturkumlar}}, hammasi boʻlib $2 ta ostturkum mavjud.}}',
-'category-article-count' => '{{PLURAL:$2|Ushbu turkumda faqat bitta sahifa mavjud.|Ushbu turkumda quyidagi {{PLURAL:$1|sahifa|$1 sahifalar}}, hammasi boʻlib $2 ta sahifa mavjud.}}',
-'category-file-count' => "{{PLURAL:$2|Ushbu turkum faqat bitta faylga ega.|Ushbu turkumdagi $2 ta fayldan quyidagi $1 tasi ko'rsatildi.}}",
+'category-subcat-count' => '{{PLURAL:$2|Ushbu turkumda faqat bitta ostturkum mavjud.|Quyida ushbu turkumga kiruvchi $2 ta ostturkumdan $1 tasi koʻrsatilgan.}}',
+'category-subcat-count-limited' => 'Ushbu turkumda $1 ta ostturkum mavjud.',
+'category-article-count' => '{{PLURAL:$2|Ushbu turkumda faqat bitta sahifa mavjud.|Quyida ushbu turkumga kiruvchi $2 ta sahifadan $1 tasi koʻrsatilgan.}}',
+'category-article-count-limited' => 'Ushbu turkumda $1 ta sahifa mavjud.',
+'category-file-count' => '{{PLURAL:$2|Ushbu turkumda faqat bitta fayl mavjud.|Quyida ushbu turkumga kiruvchi $2 ta fayldan $1 tasi koʻrsatilgan.}}',
+'category-file-count-limited' => 'Ushbu turkumda $1 ta fayl mavjud.',
'listingcontinuesabbrev' => 'davomi',
'index-category' => 'Indekslanadigan sahifalar',
'noindex-category' => 'Indekslanmaydigan sahifalar',
-'broken-file-category' => 'Ishlamaydigan fayl havolalariga ega sahifalar',
+'broken-file-category' => 'Ishlamaydigan fayl havolalari bor sahifalar',
'linkprefix' => '/^(.*?)([a-zA-Z\\x80-\\xffʻʼ«„]+)$/sDu',
'newwindow' => '(yangi oynada ochiladi)',
'cancel' => 'Bekor qilish',
'moredotdotdot' => 'Batafsil...',
+'morenotlisted' => 'Boshqa hech nima yoʻq...',
'mypage' => 'Sahifa',
-'mytalk' => 'Munozaram',
-'anontalk' => 'Bu IP uchun suhbat',
+'mytalk' => 'Munozara',
+'anontalk' => 'Ushbu IP-manzil munozarasi',
'navigation' => 'Saytda harakatlanish',
'and' => ' va',
# Cologne Blue skin
'qbfind' => 'Qidiruv',
-'qbbrowse' => "Ko'rish",
+'qbbrowse' => 'Koʻrish',
'qbedit' => 'Tahrirlash',
-'qbpageoptions' => 'Ushbu sahifa',
-'qbmyoptions' => 'Mening sahifalarim',
+'qbpageoptions' => 'Ushbu sahifa moslamalari',
+'qbmyoptions' => 'Moslamalarim',
'qbspecialpages' => 'Maxsus sahifalar',
'faq' => 'TSS',
'faqpage' => 'Project:TSS',
'vector-action-move' => 'Ko‘chirish',
'vector-action-protect' => 'Himoyalash',
'vector-action-undelete' => 'Tiklash',
-'vector-action-unprotect' => "Himoyani o'zgartirish",
-'vector-simplesearch-preference' => 'Soddalashtirilgan qidiruv uskunasini yoqish (faqat "Vektor" tashqi ko\'rinishi uchun)',
+'vector-action-unprotect' => 'Himoyalashni oʻzgartirish',
+'vector-simplesearch-preference' => 'Soddalashtirilgan qidiruv qatorini koʻrsat (faqat «Vektorli» tashqi koʻrinish uchun)',
'vector-view-create' => 'Yaratish',
'vector-view-edit' => 'Tahrirlash',
'vector-view-history' => 'Tarix',
'vector-view-view' => 'Mutolaa',
-'vector-view-viewsource' => "Manbasini ko'rish",
+'vector-view-viewsource' => 'Manbasini koʻrish',
'actions' => 'Amallar',
'namespaces' => 'Nomfazolar',
'variants' => 'Variantlar',
+'navigation-heading' => 'Navigatsiya',
'errorpagetitle' => 'Xato',
'returnto' => '$1 sahifasiga qaytish.',
-'tagline' => '{{SITENAME}} dan',
+'tagline' => '{{SITENAME}} dan olingan',
'help' => 'Yordam',
'search' => 'Qidiruv',
'searchbutton' => 'Qidirish',
-'go' => "O'tish",
+'go' => 'Oʻtish',
'searcharticle' => 'O‘tish',
'history' => 'Sahifa tarixi',
'history_short' => 'Tarix',
-'updatedmarker' => 'mening oxirgi tashrifimdan keyin yangilandi',
+'updatedmarker' => 'oxirgi tashrifimdan keyingi oʻzgarishlar',
'printableversion' => 'Bosma uchun versiya',
'permalink' => 'Doimiy ishorat',
-'print' => 'Chop et',
+'print' => 'Chop etish',
'view' => 'Koʻrish',
'edit' => 'Tahrirlash',
'create' => 'Yaratish',
-'editthispage' => 'Sahifani tahrirlash',
+'editthispage' => 'Ushbu sahifani tahrirlash',
'create-this-page' => 'Ushbu sahifani yaratish',
'delete' => 'O‘chirish',
'deletethispage' => 'Ushbu sahifani o‘chirish',
-'undelete_short' => '{{PLURAL:$1|tahrir|$1 tahrirlar}}ni tiklash',
-'viewdeleted_short' => "{{PLURAL:$1|o'chirilgan tahrir|$1 ta o'chirilgan tahrirlar}}ni ko'rish",
+'undelete_short' => '$1 ta tahrirni tiklash',
+'viewdeleted_short' => '$1 ta oʻchirilgan tahrirni koʻrish',
'protect' => 'Himoyalash',
-'protect_change' => 'o‘zgartirish',
+'protect_change' => 'Oʻzgartirish',
'protectthispage' => 'Ushbu sahifani himoyalash',
'unprotect' => 'Himoyadan chiqarish',
-'unprotectthispage' => "Ushbu sahifaning himoyasini o'zgaritish",
+'unprotectthispage' => 'Ushbu sahifaning himoyasini oʻzgaritish',
'newpage' => 'Yangi sahifa',
'talkpage' => 'Bu sahifa haqida munozara',
-'talkpagelinktext' => 'munozara',
+'talkpagelinktext' => 'Munozara',
'specialpage' => 'Maxsus sahifa',
'personaltools' => 'Shaxsiy uskunalar',
'postcomment' => 'Yangi boʻlim',
-'articlepage' => 'Sahifani ko‘rish',
+'articlepage' => 'Maqolani koʻrib chiqish',
'talk' => 'Munozara',
-'views' => 'Ko‘rinishlar',
+'views' => 'Qarashlar',
'toolbox' => 'Asboblar',
-'userpage' => "Foydalanuvchi sahifasini ko'rish",
-'projectpage' => "Loyiha sahifasini ko'rish",
-'imagepage' => "Fayl sahifasini ko'rish",
-'mediawikipage' => "Xabar sahifasini ko'rsatish",
-'templatepage' => "Andoza sahifasini ko'rish",
+'userpage' => 'Foydalanuvchi sahifasini koʻrish',
+'projectpage' => 'Loyiha sahifasini koʻrish',
+'imagepage' => 'Fayl sahifasini koʻrish',
+'mediawikipage' => 'Xabar sahifasini koʻrsatish',
+'templatepage' => 'Andoza sahifasini koʻrish',
'viewhelppage' => 'Yordam olish',
-'categorypage' => 'Turkum sahifasi',
+'categorypage' => 'Turkum sahifasini koʻrish',
'viewtalkpage' => 'Munozarani koʻrish',
'otherlanguages' => 'Boshqa tillarda',
'redirectedfrom' => '($1dan yoʻnaltirildi)',
'redirectpagesub' => 'Yoʻnaltiruvchi sahifa',
-'lastmodifiedat' => 'Bu sahifa oxirgi marta $2, $1 sanasida tahrirlangan.',
+'lastmodifiedat' => 'Bu sahifa oxirgi marta $1 soat $2 da tahrirlangan.',
'viewcount' => 'Bu sahifaga {{PLURAL:$1|bir marta|$1 marta}} murojaat qilingan.',
'protectedpage' => 'Himoyalangan sahifa',
'jumpto' => 'Oʻtish:',
'jumptonavigation' => 'saytda harakatlanish',
'jumptosearch' => 'qidiruv',
-'pool-timeout' => "Muhosara (to'sish) ni kutish vaqti tugadi",
-'pool-queuefull' => "So'rovlar jamlanmasi to'ldi",
-'pool-errorunknown' => "Noma'lum xato",
+'view-pool-error' => 'Uzr, ayni paytda serverlarga ortiqcha yuk tushgan.
+Bu sahifaga birdaniga koʻpchilik kirmoqchi boʻldi.
+Iltimos, biroz kutib turing va keyin yangitdan kirishga urinib koʻring.
+
+$1',
+'pool-timeout' => 'Toʻsishni kutish vaqti tugadi',
+'pool-queuefull' => 'Soʻrovlar jamlanmasi toʻldi',
+'pool-errorunknown' => 'Nomaʼlum xato',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => '{{SITENAME}} haqida',
'aboutpage' => 'Project:Haqida',
-'copyright' => 'Kontent $1 ostidadir.',
+'copyright' => 'Keltirilgan maʼlumotlar $1 orqali tarqatilmoqda.',
'copyrightpage' => '{{ns:project}}:Mualliflik huquqlari',
'currentevents' => 'Joriy hodisalar',
'currentevents-url' => 'Project:Joriy hodisalar',
'yourname' => 'Foydalanuvchi nomi',
'yourpassword' => 'Maxfiy soʻz',
'yourpasswordagain' => 'Maxfiy so‘zni qayta kiriting:',
-'remembermypassword' => 'Hisob ma’lumotlarini ushbu kompyuterda eslab qolish (eng ko‘pi bilan $1 {{PLURAL:$1|kun|kun}} uchun)',
+'remembermypassword' => 'Hisob ma’lumotlarim ushbu brauzerda eslab qolinsin (ko‘pi bilan $1 {{PLURAL:$1|kunga|kunga}})',
'securelogin-stick-https' => "Kirgandan keyin HTTPS bo'yicha ulanishni davom ettirish",
'yourdomainname' => 'Sizning domeningiz:',
'password-change-forbidden' => "Siz bu vikida maxfiy so'zni o'zgartira olmaysiz.",
'emailsubject' => 'Sarlavha:',
'emailmessage' => 'Xabar',
'emailsend' => 'Joʻnatish',
-'emailccme' => 'Maktub nusxasini menga joʻnatish',
+'emailccme' => 'Maktub nusxasi mening elektron pochtamga joʻnatilsin',
'emailccsubject' => '$1ga maktubingizning nusxasi: $2',
'emailsent' => "Xat jo'natildi",
'emailsenttext' => "Sizning elektron maktubingiz jo'natildi.",
Agar siz bu sahifani kuzatuv ro'yxatingizdan o'chirmoqchi bo'lsangiz \"Kuzatmaslik\" yozuvini bosing.",
'removewatch' => "Kuzatuv ro'yxatidan o'chirish",
-'removedwatchtext' => '"[[:$1]]" sahifasi kuzatuv ro\'yxatingizdan o\'chirildi.',
+'removedwatchtext' => '"[[:$1]]" sahifasi [[Special:Watchlist|kuzatuv roʻyxatingizdan]] oʻchirildi.',
'watch' => 'Kuzatish',
'watchthispage' => 'Sahifani kuzatish',
'unwatch' => 'Kuzatmaslik',
'expensive-parserfunction-category' => 'Trang có quá nhiều lời gọi hàm cú pháp cần mức độ xử lý cao',
'post-expand-template-inclusion-warning' => 'Cảnh báo: Kích thước bản mẫu nhúng vào quá lớn.
Một số bản mẫu sẽ không được đưa vào.',
-'post-expand-template-inclusion-category' => 'Những trang có kích thước bản mẫu nhúng vào vượt quá giới hạn cho phép',
-'post-expand-template-argument-warning' => 'Cảnh báo: Trang này có chứa ít nhất một giá trị bản mẫu có kích thước bung ra quá lớn.
-Những giá trị này sẽ bị bỏ đi.',
-'post-expand-template-argument-category' => 'Những trang có chứa những giá trị bản mẫu bị loại bỏ',
+'post-expand-template-inclusion-category' => 'Trang có kích thước bản mẫu nhúng vào vượt quá giới hạn cho phép',
+'post-expand-template-argument-warning' => 'Cảnh báo: Trang này có chứa ít nhất một tham số bản mẫu có kích thước bung ra quá lớn.
+Những tham số này sẽ bị bỏ đi.',
+'post-expand-template-argument-category' => 'Trang có chứa tham số bản mẫu bị loại bỏ',
'parser-template-loop-warning' => 'Phát hiện bản mẫu lặp vòng: [[$1]]',
'parser-template-recursion-depth-warning' => 'Bản mẫu đã vượt quá giới hạn về độ sâu đệ quy ($1)',
'language-converter-depth-warning' => 'Đã vượt quá giới hạn độ sâu của bộ chuyển đổi ngôn ngữ ($1)',
'disambiguations-text' => "Các trang này có liên kết đến ít nhất một '''trang định hướng''', những trang này có thể có liên kết đến các trang đúng nghĩa hơn.<br />Các trang định hướng là trang sử dụng những bản mẫu được liệt kê ở [[MediaWiki:Disambiguationspage]].",
'pageswithprop' => 'Trang có thuộc tính trang',
+'pageswithprop-legend' => 'Các trang có thuộc tính trang',
'pageswithprop-text' => 'Trang này liệt kê các trang sử dụng một thuộc tính trang nào đó.',
'pageswithprop-prop' => 'Tên thuộc tính:',
+'pageswithprop-submit' => 'Xem',
'doubleredirects' => 'Đổi hướng kép',
'doubleredirectstext' => 'Trang này liệt kê các trang đổi hướng đến một trang đổi hướng khác.
'duration-centuries' => '$1 thế kỷ',
'duration-millennia' => '$1 thiên niên kỷ',
-# Unknown messages
-'pageswithprop-legend' => 'Các trang có thuộc tính trang',
-'pageswithprop-submit' => 'Xem',
+# Image rotation
+'rotate-comment' => 'Đã quay hình $1 độ theo chiều kim đồng hồ',
+
);
'about' => 'וועגן',
'article' => 'אינהאלט בלאט',
'newwindow' => '(עפֿנט זיך אין א נײַעם פענסטער)',
-'cancel' => '×\96×\99×\99 ×\9e×\91×\98×\9c',
+'cancel' => '×\90Ö·× ×\95×\9c×\99ר×\9f',
'moredotdotdot' => 'נאך…',
'mypage' => 'מײַן בלאט',
'mytalk' => 'שמועס',
'disambiguations-text' => "以下的页面都有到'''消歧义页'''的链接,但它们可能可以链接到更适当的页面。<br />一个页面如果使用了[[MediaWiki:Disambiguationspage]]内的模板,则会被视为消歧义页。",
'pageswithprop-prop' => '属性名称:',
+'pageswithprop-submit' => '提交',
'doubleredirects' => '双重重定向页',
'doubleredirectstext' => '本页面列出重定向至其他重定向页的页面。每行含有第一及第二重定向的链接和第二重定向的目标(通常是第一重定向应该指向的“真实”目标页面)。<del>带删除线的</del>条目已被解决。',
'duration-centuries' => '$1个世纪',
'duration-millennia' => '$1千年',
-# Unknown messages
-'pageswithprop-submit' => '提交',
);
'filehist-filesize' => '檔案大小',
'filehist-comment' => '註解',
'filehist-missing' => '檔案遺失',
-'imagelinks' => 'æ\96\87件使用情況',
+'imagelinks' => 'æª\94æ¡\88使用情況',
'linkstoimage' => '以下的$1個頁面連接到本檔案:',
'linkstoimage-more' => '多於$1個頁面連接到這個檔案。
下面的清單只列示了連去這個檔案的最首$1個頁面。
'disambiguations-text' => "以下的頁面都有至少一個連到'''消歧義頁'''的鏈接,但它們應鏈接到合適的頁面。<br />一個頁面如果使用了[[MediaWiki:Disambiguationspage]]內的模板,則會被視為消歧義頁。",
'pageswithprop' => '有頁面屬性的頁面',
+'pageswithprop-legend' => '有頁面屬性的頁面',
'pageswithprop-text' => '此頁列出所有頁面使用了特定的頁面屬性。',
'pageswithprop-prop' => '屬性名稱:',
+'pageswithprop-submit' => '進入',
'doubleredirects' => '雙重重定向頁面',
'doubleredirectstext' => '這一頁列出所有重定向頁面重定向到另一個重定向頁的頁面。每一行都包含到第一和第二個重定向頁面的連結,以及第二個重定向頁面的目標,通常顯示的都會是"真正"的目標頁面,也就是第一個重定向頁面應該指向的頁面。
'duration-centuries' => '$1個世紀',
'duration-millennia' => '$1千年',
-# Unknown messages
-'pageswithprop-legend' => '有頁面屬性的頁面',
-'pageswithprop-submit' => '進入',
+# Image rotation
+'rotate-comment' => '順時針旋轉圖像$1{{PLURAL:$1|度|度}}',
+
);
<?php
/**
* Version of load.php to used in web server requiring .php5 extension
- * to execute scripts with PHP5 egine.
+ * to execute scripts with PHP5 engine.
*
* 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
'pageswithprop' => array(
'pageswithprop',
'pageswithprop-summary',
+ 'pageswithprop-legend',
'pageswithprop-text',
'pageswithprop-prop',
- 'pageswithprop-ok',
+ 'pageswithprop-submit',
),
'doubleredirects' => array(
'doubleredirects',
'duration-centuries',
'duration-millennia'
),
+ 'rotation' => array(
+ 'rotate-comment',
+ ),
);
/** Comments for each block */
'apierrors' => 'API errors',
'duration' => 'Durations',
'cachedspecial' => 'SpecialCachedPage',
+ 'rotation' => 'Image rotation',
);
global $wgParserCacheExpireTime;
$date = wfTimestamp( TS_MW, time() + $wgParserCacheExpireTime - intval( $inputAge ) );
} else {
- echo "Must specify either --expiredate or --age\n";
- exit( 1 );
+ $this->error( "Must specify either --expiredate or --age", 1 );
}
$english = Language::factory( 'en' );
- echo "Deleting objects expiring before " . $english->timeanddate( $date ) . "\n";
+ $this->output( "Deleting objects expiring before " . $english->timeanddate( $date ) . "\n" );
$pc = wfGetParserCacheStorage();
$success = $pc->deleteObjectsExpiringBefore( $date, array( $this, 'showProgress' ) );
if ( !$success ) {
- echo "\nCannot purge this kind of parser cache.\n";
- exit( 1 );
+ $this->error( "\nCannot purge this kind of parser cache.", 1 );
}
$this->showProgress( 100 );
- echo "\nDone\n";
+ $this->output( "\nDone\n" );
}
function showProgress( $percent ) {
$this->lastProgress = $percentString;
$stars = floor( $percent / 2 );
- echo '[' . str_repeat( '*', $stars ), str_repeat( '.', 50 - $stars ) . '] ' .
- "$percentString%\r";
+ $this->output( '[' . str_repeat( '*', $stars ) . str_repeat( '.', 50 - $stars ) . '] ' .
+ "$percentString%\r" );
}
}
<?php
/**
* Version of mw-config/index.php to used in web server requiring .php5
- * extension to execute scripts with PHP5 egine.
+ * extension to execute scripts with PHP5 engine.
*
* 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
<?php
/**
* Version of opensearch_desc.php to used in web server requiring .php5 extension
- * to execute scripts with PHP5 egine.
+ * to execute scripts with PHP5 engine.
*
* 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
<?php
/**
* Version of redirect.php to used in web server requiring .php5 extension
- * to execute scripts with PHP5 egine.
+ * to execute scripts with PHP5 engine.
*
* 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
// List of callback functions waiting for modules to be ready to be called
jobs = [],
// Selector cache for the marker element. Use getMarker() to get/use the marker!
- $marker = null;
+ $marker = null,
+ // Buffer for addEmbeddedCSS.
+ cssBuffer = '';
/* Private methods */
}
/**
- * Checks if certain cssText is safe to append to
- * a stylesheet.
+ * Checks whether it is safe to add this css to a stylesheet.
*
- * Right now it only makes sure that cssText containing `@import`
- * rules will end up in a new stylesheet (as those only work when
- * placed at the start of a stylesheet; bug 35562).
- * This could later be extended to take care of other bugs, such as
- * the IE cssRules limit - not the same as the IE styleSheets limit).
* @private
- * @param {jQuery} $style
* @param {string} cssText
- * @return {boolean}
+ * @return {boolean} False if a new one must be created.
*/
- function canExpandStylesheetWith( $style, cssText ) {
+ function canExpandStylesheetWith( cssText ) {
+ // Makes sure that cssText containing `@import`
+ // rules will end up in a new stylesheet (as those only work when
+ // placed at the start of a stylesheet; bug 35562).
return cssText.indexOf( '@import' ) === -1;
}
+ /**
+ * @param {string} [cssText=cssBuffer] If called without cssText,
+ * the internal buffer will be inserted instead.
+ */
function addEmbeddedCSS( cssText ) {
var $style, styleEl;
- $style = getMarker().prev();
- // Re-use `<style>` tags if possible, this to try to stay
- // under the IE stylesheet limit (bug 31676).
- // Also verify that the the element before Marker actually is one
- // that came from ResourceLoader, and not a style tag that some
- // other script inserted before our marker, or, more importantly,
- // it may not be a style tag at all (could be `<meta>` or `<script>`).
- if (
- $style.data( 'ResourceLoaderDynamicStyleTag' ) === true &&
- canExpandStylesheetWith( $style, cssText )
- ) {
- // There's already a dynamic <style> tag present and
- // canExpandStylesheetWith() gave a green light to append more to it.
- styleEl = $style.get( 0 );
- if ( styleEl.styleSheet ) {
- try {
- styleEl.styleSheet.cssText += cssText; // IE
- } catch ( e ) {
- log( 'addEmbeddedCSS fail\ne.message: ' + e.message, e );
- }
- } else {
- styleEl.appendChild( document.createTextNode( String( cssText ) ) );
+
+ // Yield once before inserting the <style> tag. There are likely
+ // more calls coming up which we can combine this way.
+ // Appending a stylesheet and waiting for the browser to repaint
+ // is fairly expensive, this reduces it (bug 45810)
+ if ( cssText ) {
+ // Be careful not to extend the buffer with css that needs a new stylesheet
+ if ( !cssBuffer || canExpandStylesheetWith( cssText ) ) {
+ // Linebreak for somewhat distinguishable sections
+ // (the rl-cachekey comment separating each)
+ cssBuffer += '\n' + cssText;
+ // TODO: Use requestAnimationFrame in the future which will
+ // perform even better by not injecting styles while the browser
+ // is paiting.
+ setTimeout( addEmbeddedCSS );
+ return;
}
+
+ // This is a delayed call and we got a buffer still
+ } else if ( cssBuffer ) {
+ cssText = cssBuffer;
+ cssBuffer = '';
} else {
- $( addStyleTag( cssText, getMarker() ) )
- .data( 'ResourceLoaderDynamicStyleTag', true );
+ // This is a delayed call, but buffer is already cleared by
+ // another delayed call.
+ return;
}
+
+ // By default, always create a new <style>. Appending text
+ // to a <style> tag means the contents have to be re-parsed (bug 45810).
+ // Except, of course, in IE below 9, in there we default to
+ // re-using and appending to a <style> tag due to the
+ // IE stylesheet limit (bug 31676).
+ if ( 'documentMode' in document && document.documentMode <= 9 ) {
+
+ $style = getMarker().prev();
+ // Verify that the the element before Marker actually is a
+ // <style> tag and one that came from ResourceLoader
+ // (not some other style tag or even a `<meta>` or `<script>`).
+ if ( $style.data( 'ResourceLoaderDynamicStyleTag' ) === true ) {
+ // There's already a dynamic <style> tag present and
+ // canExpandStylesheetWith() gave a green light to append more to it.
+ styleEl = $style.get( 0 );
+ if ( styleEl.styleSheet ) {
+ try {
+ styleEl.styleSheet.cssText += cssText; // IE
+ } catch ( e ) {
+ log( 'addEmbeddedCSS fail\ne.message: ' + e.message, e );
+ }
+ } else {
+ styleEl.appendChild( document.createTextNode( String( cssText ) ) );
+ }
+ return;
+ }
+ }
+
+ $( addStyleTag( cssText, getMarker() ) ).data( 'ResourceLoaderDynamicStyleTag', true );
}
/**
*
* The obtained filename is enlisted to be removed upon tearDown
*
- * @returns string: absolute name of the temporary file
+ * @return string: absolute name of the temporary file
*/
protected function getNewTempFile() {
$fname = tempnam( wfTempDir(), 'MW_PHPUnit_' . get_class( $this ) . '_' );
* The obtained directory is enlisted to be removed (recursively with all its contained
* files) upon tearDown.
*
- * @returns string: absolute name of the temporary directory
+ * @return string: absolute name of the temporary directory
*/
protected function getNewTempDirectory() {
// Starting of with a temporary /file/.
$dbw = wfGetDB( DB_MASTER );
$dbw->update( 'revision',
- array( 'rev_timestamp' => $timestamp ),
+ array( 'rev_timestamp' => $dbw->timestamp( $timestamp ) ),
array( 'rev_id' => $page->getLatest() ) );
$page->clear();
/**
* Test out Html::element drops or enforces default value
- * @cover Html::dropDefaults
+ * @covers Html::dropDefaults
* @dataProvider provideElementsWithAttributesHavingDefaultValues
*/
function testDropDefaults( $expected, $element, $attribs, $message = '' ) {
/**
* @dataProvider provideCasesForUserLink
- * @cover Linker::userLink
+ * @covers Linker::userLink
*/
function testUserLink( $expected, $userId, $userName, $altUserName = false, $msg = '' ) {
$this->setMwGlobals( array(
}
/**
- * @cover Sanitizer::removeHTMLtags
+ * @covers Sanitizer::removeHTMLtags
* @dataProvider provideHtml5Tags
*
* @param String $tag Name of an HTML5 element (ie: 'video')
/**
* @dataProvider provideTagAttributesToDecode
- * @cover Sanitizer::decodeTagAttributes
+ * @covers Sanitizer::decodeTagAttributes
*/
function testDecodeTagAttributes( $expected, $attributes, $message = '' ) {
$this->assertEquals( $expected,
/**
* @dataProvider provideDeprecatedAttributes
- * @cover Sanitizer::fixTagAttributes
+ * @covers Sanitizer::fixTagAttributes
*/
function testDeprecatedAttributesUnaltered( $inputAttr, $inputEl, $message = '' ) {
$this->assertEquals( " $inputAttr",
/**
* @dataProvider provideCssCommentsFixtures
- * @cover Sanitizer::checkCss
+ * @covers Sanitizer::checkCss
*/
function testCssCommentsChecking( $expected, $css, $message = '' ) {
$this->assertEquals( $expected,
* This test StringUtils::isUtf8 whenever we have mbstring extension
* loaded.
*
- * @cover StringUtils::isUtf8
+ * @covers StringUtils::isUtf8
* @dataProvider provideStringsForIsUtf8Check
*/
function testIsUtf8WithMbstring( $expected, $string ) {
* implementation used as a fallback when mb_check_encoding() is
* not available.
*
- * @cover StringUtils::isUtf8
+ * @covers StringUtils::isUtf8
* @dataProvider provideStringsForIsUtf8Check
*/
function testIsUtf8WithPhpFallbackImplementation( $expected, $string ) {
$dbw = wfGetDB( DB_MASTER );
$dbw->update( 'revision',
- array( 'rev_timestamp' => $timestamp ),
+ array( 'rev_timestamp' => $dbw->timestamp( $timestamp ) ),
array( 'rev_id' => $page->getLatest() ) );
$page->clear();
}
function addDBData() {
+ // be sure english messages under $key, not $key/en
+ $this->setMwGlobals( array(
+ 'wgLanguageCode' => 'en',
+ 'wgContLang' => Language::factory( 'en' ),
+ ) );
+
// Set up messages and fallbacks ab -> ru -> en
$this->makePage( 'FallbackLanguageTest-Full', 'ab' );
$this->makePage( 'FallbackLanguageTest-Full', 'ru' );
mw.loader.implement(
'test.implement.a',
function () {
- assert.equal(
- $element.css( 'float' ),
- 'right',
- 'style is applied'
- );
+ QUnit.stop();
+ setTimeout(function () {
+ assert.equal(
+ $element.css( 'float' ),
+ 'right',
+ 'style is applied'
+ );
+ QUnit.start();
+ });
},
{
'all': '.mw-test-implement-a { float: right; }'
mw.loader.implement(
'test.implement.c',
function () {
- assert.equal(
- $element.css( 'float' ),
- 'right',
- 'style is applied'
- );
+ QUnit.stop();
+ setTimeout(function () {
+ assert.equal(
+ $element.css( 'float' ),
+ 'right',
+ 'style is applied'
+ );
+ QUnit.start();
+ });
},
{
'all': '.mw-test-implement-c { float: right; }'
<?php
/**
* Version of thumb.php to used in web server requiring .php5 extension
- * to execute scripts with PHP5 egine.
+ * to execute scripts with PHP5 engine.
*
* 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
<?php
/**
* Version of thumb_handler.php to used in web server requiring .php5 extension
- * to execute scripts with PHP5 egine.
+ * to execute scripts with PHP5 engine.
*
* 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