+# Generated documentation
+docs/html/
+docs/js/
+
# third-party libs
extensions/
node_modules/
-MediaWiki 1.21 is a collaborative project released under the
+MediaWiki 1.22 is a collaborative project released under the
GNU General Public License v2. We would like to recognize the
following names for their contribution to the product.
-Change notes from older releases. For current info see RELEASE-NOTES-1.21.
+Change notes from older releases. For current info see RELEASE-NOTES-1.22.
+
+== MediaWiki 1.21 ==
+
+MediaWiki 1.21 is an alpha-quality branch and is not recommended for use in
+production.
+
+=== Configuration changes in 1.21 ===
+* (bug 29374) $wgVectorUseSimpleSearch is now enabled by default.
+* Deprecated $wgAllowRealName is removed. Use $wgHiddenPrefs[] = 'realname'
+ instead.
+* (bug 39957) Added $wgUnwatchedPageThreshold, specifying minimum count
+ of page watchers required for the number to be accessible to users
+ without the unwatchedpages permission.
+* $wgBug34832TransitionalRollback has been removed.
+* (bug 29472) $wgUseDynamicDates has been removed and its functionality
+ disabled.
+
+=== New features in 1.21 ===
+* (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 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
+ than wikitext. See docs/contenthandler.txt for details.
+* New feature was developed for showing high-DPI thumbnails for high-DPI mobile
+ and desktop displays (configurable with $wgResponsiveImages).
+* Added new backend to represent and store information about sites and site
+ specific configuration.
+* jQuery upgraded from 1.8.2 to 1.8.3.
+* jQuery UI upgraded from 1.8.23 to 1.8.24.
+* Added separate fa_sha1 field to filearchive table. This allows sha1
+ searches with the api in miser mode for deleted files.
+* Add initial and programmatic sorting for tablesorter.
+* Add the event "sortEnd.tablesorter", triggered after sorting has completed.
+* The Job system was refactored to allow for different backing stores for
+ queues as well as cross-wiki access to queues, among other things. The schema
+ for the DB queue was changed to support better concurrency and reduce
+ deadlock errors.
+* Added ApiQueryORM class to facilitate creation of query API modules based on
+ tables that have a corresponding ORMTable class.
+* (bug 40876) Icon for PSD (Adobe Photoshop) file types.
+* (bug 40641) Implemented Special:Version/Credits with a list of contributors.
+* (bug 7851) Implemented one-click AJAX patrolling.
+* The <data>, <time>, <meta>, and <link> elements are allowed within WikiText
+ for use with Microdata.
+* The HTML5 <mark> tag has been whitelisted.
+* Added ParserCloned hook for when the Parser object is cloned.
+* Added AlternateEditPreview hook to allow extensions to replace the page
+ preview from the edit page.
+* Added EditPage::showStandardInputs:options hook to allow extensions to add
+ new fields to the "editOptions" area of the edit form.
+* Upload stash DB schema altered to improve upload performance.
+* The following global functions are now reporting deprecated warnings in
+ debug mode: wfMsg, wfMsgNoTrans, wfMsgForContent, wfMsgForContentNoTrans,
+ wfMsgReal, wfMsgGetKey, wfMsgHtml, wfMsgWikiHtml, wfMsgExt, wfEmptyMsg. Use
+ the Message class, or the global method wfMessage.
+* Added $wgEnableCanonicalServerLink, off by default. If enabled, a
+ <link rel=canonical> tag is added to every page indicating the correct server
+ to use.
+* Debug message emitted by wfDebugLog() will now be prefixed with the group
+ name when its logged to the default log file. That is the case whenever the
+ group has no key in wgDebugLogGroups, that will help triage the default log.
+* (bug 24620) Add types to LogFormatter.
+* jQuery JSON upgraded from 2.3 to 2.4.0.
+* Added GetDoubleUnderscoreIDs hook, for modifying the list of magic words.
+* DatabaseUpdater class has two new methods to ease extensions schema changes:
+ dropExtensionIndex and renameExtensionIndex.
+* New preference type - 'api'. Preferences of this type are not shown on
+ Special:Preferences, but are still available via the action=options API.
+* (bug 39397) Hide rollback link if a user is the only contributor of the page.
+* $wgPageInfoTransclusionLimit limits the list size of transcluded articles
+ on the info action. Default is 50.
+* Added action=createaccount to allow user account creation.
+* (bug 40124) action=options API also allows for setting of arbitrary
+ preferences, provided that their names are prefixed with 'userjs-'. This
+ officially reenables the feature that was undocumented and defective
+ in MW 1.20 (saving preferences using Special:Preferences cleared any
+ additional fields) and which has been disabled in 1.20.1 as a part of
+ a security fix (bug 42202).
+* Added option to specify "others" as author in extension credits using
+ "..." as author name.
+* Added the ability to limit the wall clock time used by shell processes,
+ as well as the CPU time. Configurable with $wgMaxShellWallClockTime.
+* Allow memory of shell subprocesses to be limited using Linux cgroups
+ instead of ulimit -v, which tends to cause deadlocks in recent versions
+ of ImageMagick. Configurable with $wgShellCgroup.
+* Added $wgWhitelistReadRegexp for regex whitelisting.
+* (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 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
+ tables. To be marked up as such.
+* maintenance/sql.php learned the --cluster option. Let you run the script
+ on some external cluster instead of the primary cluster for a given wiki.
+* (bug 20281) test the parsing of inline URLs.
+* Added Special:PagesWithProp, which lists pages using a particular page property.
+* Implemented language-specific collations for category sorting for 67 languages
+ based in latin, greek and cyrillic alphabets. This allows one to *finally* get
+ articles to be correctly sorted on category pages. They are named
+ 'uca-<langcode>', where <langcode> is one of: af, ast, az, be, bg, br, bs, ca,
+ co, cs, cy, da, de, dsb, el, en, eo, es, et, eu, fi, fo, fr, fur, fy, ga, gd,
+ gl, hr, hsb, hu, is, it, kk, kl, ku, ky, la, lb, lt, lv, mk, mo, mt, nl, no,
+ 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.
+* Added 'HistoryRevisionTools' and 'DiffRevisionTools' hooks.
+* Added 'SpecialSearchResultsPrepend' and 'SpecialSearchResultsAppend' hooks.
+* (bug 33186) Add image rotation api "imagerotate"
+* (bug 34040) Add "User rights management" link on user page toolbox.
+* (bug 45526) Add QUnit assertion helper "QUnit.assert.htmlEqual" for asserting
+ structual equality of HTML (ignoring insignificant differences like
+ quotmarks, order and whitespace in the attribute list).
+* (bug 23393) HTML <hN> headings containing line breaks are now handled
+ correctly.
+* (bug 45803) Whitespace within == Headline == syntax and within <hN> headings
+ is now non-significant and not preserved in the HTML output.
+
+=== Bug fixes in 1.21 ===
+* (bug 40353) SpecialDoubleRedirect should support interwiki redirects.
+* (bug 40352) fixDoubleRedirects.php should support interwiki redirects.
+* (bug 9237) SpecialBrokenRedirect should not list interwiki redirects.
+* (bug 34960) Drop unused fields rc_moved_to_ns and rc_moved_to_title from
+ recentchanges table.
+* (bug 32951) Do not register internal externals with absolute protocol,
+ when server has relative protocol.
+* (bug 39005) When purging proxies listed in $wgSquidServers using HTTP PURGE
+ method requests, we now send a Host header by default, for Varnish
+ compatibility. This also works with Squid in reverse-proxy mode. If you wish
+ to support Squid configured in forward-proxy mode, set
+ $wgSquidPurgeUseHostHeader to false.
+* (bug 37020) sql.php with readline eats semicolon.
+* (bug 11748) Properly handle optionally-closed HTML tags when Tidy is
+ disabled, and don't wrap HTML-syntax definition lists in paragraphs.
+* (bug 41409) Diffs while editing an old revision should again diff against the
+ current revision.
+* (bug 41494) Honor $wgLogExceptionBacktrace when logging non-API exceptions
+ caught during API execution.
+* (bug 37963) Fixed loading process for user options.
+* (bug 26995) Update filename field on Upload page after having sanitized it.
+* (bug 41793) Contribution links to users with 0 edits on Special:ListUsers
+ didn't show up red.
+* (bug 41899) A PHP notice no longer occurs when using the "rvcontinue" API
+ parameter.
+* (bug 42036) Account creation emails now contain canonical (not
+ protocol-relative) URLs.
+* (bug 41990) Fix regression: API edit with redirect=true and lacking
+ starttimestamp and basetimestamp should not cause an edit conflict.
+* (bug 41706) EditPage: Preloaded page should be converted if possible and
+ needed.
+* (bug 41886) Rowspans are no longer exploded by tablesorter until the table is
+ actually sorted.
+* (bug 2865) User interface HTML elements don't use lang attribute.
+ (completed the fix by adding the lang attribute to firstHeading).
+* (bug 42173) Removed namespace prefixes on Special:UncategorizedCategories.
+* (bug 36053) Log in "returnto" feature forgets query parameters if no
+ title parameter was specified.
+* (bug 42410) API action=edit now returns correct timestamp for the new edit.
+* (bug 14901) Email notification mistakes log action for new page creation.
+ Enotif no longer sends "page has been created" notifications for some log
+ actions. The following events now have a correct message: page creation,
+ deletion, move, restore (undeletion), change (edit). Parameter
+ $CHANGEDORCREATED is deprecated in 'enotif_body' and scheduled for removal in
+ MediaWiki 1.23.
+* (bug 457) In the sidebar of Vector, CologneBlue, Monobook, and Monobook-based
+ skins, the heading levels have been changed from (variously per skin)
+ <h4>, <h5> or <h6> to only <h3>s, with a <h2> hidden heading above them.
+ If you are styling or scripting the headings in a custom way, this change
+ will require updates to your site's CSS or JS.
+* (bug 41342) jquery.suggestions should cancel any active (async) fetches
+ before it triggers another fetch.
+* (bug 42184) $wgUploadSizeWarning missing second variable.
+* (bug 34581) removeUnusedAccounts.php maintenance script now ignores newuser
+ log when determining whether an account is used.
+* (bug 43379) Gracefully fail if rev_len is unavailable for a revision on the
+ History page.
+* (bug 42949) API no longer assumes all exceptions are MWException.
+* (bug 41733) Hide "New user message" (.usermessage) element from printable view.
+* (bug 39062) Special:Contributions will display changes that don't have
+ a parent id instead of just an empty bullet item.
+* (bug 37209) "LinkCache doesn't currently know about this title" error fixed.
+* wfMerge() now works if $wgDiff3 contains spaces
+* (bug 43052) mediawiki.action.view.dblClickEdit.dblClickEdit should trigger
+ ca-edit click instead opening URL directly.
+* (bug 43964) Invalid value of "link" parameter in <gallery> no longer produces
+ a fatal error.
+* (bug 44775) The username field is not pre-filled when creating an account.
+* (bug 45069) wfParseUrl() no longer produces a PHP notice if passed a "mailto:"
+ URL without address
+* (bug 45012) Creating an account by e-mail can no longer show a
+ "password mismatch" error.
+* (bug 44599) On Special:Version, HEADs for submodule checkouts (e.g. for
+ 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.
+* (bug 42430) Calling numRows on MySQL no longer propagates unrelated errors.
+* (bug 44719) Removed mention of non-existing maintenance/migrateCurStubs.php
+ script in includes/DefaultSettings.php
+* (bug 45143) jquery.badge: Treat non-Latin variants of zero as zero as well.
+* (bug 46151) mwdocgen.php should not ignore exit code of doxygen command.
+* (bug 41889) Fix $.tablesorter rowspan exploding for complex cases.
+
+=== API changes in 1.21 ===
+* prop=revisions can now report the contentmodel and contentformat.
+ See docs/contenthandler.txt.
+* action=edit and action=parse now support contentmodel and contentformat
+ parameters to control the interpretation of page content.
+ See docs/contenthandler.txt for details.
+* (bug 35693) ApiQueryImageInfo now suppresses errors when unserializing metadata.
+* (bug 40111) Disable minor edit for page/section creation by API.
+* (bug 41042) Revert change to action=parse&page=... behavior when the page
+ does not exist.
+* (bug 27202) Add timestamp sort to list=allimages.
+* (bug 43137) Don't return the sha1 of revisions through the API if the content is
+ revision-deleted.
+* ApiQueryImageInfo now also returns imageinfo for redirects.
+* list=alltransclusions added to enumerate every instance of page embedding
+* list=alllinks & alltransclusions now allow both 'from' and 'continue' in
+ the same query. When both are present, 'from' is simply ignored.
+* list=alllinks & alltransclusions now allow 'unique' in generators, to yield
+ a list of all link/template target pages instead of source pages.
+* BREAKING CHANGE: list=logevents output format changed for details of some log
+ types. Specifically, details that were formerly reported under a key like
+ "4::foo" will now be reported under a key of simply "foo".
+* BREAKING CHANGE: '??_badcontinue' error code was changed to '??badcontinue'
+ for all query modules.
+* ApiQueryBase adds 'badcontinue' error code if module has 'continue' parameter.
+* (bug 35885) Removed version parameter and all getVersion() methods.
+* action=options now takes a "resetkinds" option, which allows only resetting
+ certain types of preferences when the "reset" option is set.
+* (bug 36751) ApiQueryImageInfo now returns imageinfo for the redirect target
+ when queried with &redirects=.
+* (bug 31849) ApiQueryImageInfo no longer gets confused when asked for info on
+ a redirect and its target.
+* (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 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
+ iicontinue).
+* Add supports for all pageset capabilities - generators, redirects, converttitles to
+ action=purge and action=setnotificationtimestamp.
+* (bug 43251) prop=pageprops&ppprop= now accepts multiple props to query.
+* 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 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
+ currently in use on the wiki.
+* (bug 44921) ApiMain::execute() will now return after the CORS check for an
+ HTTP OPTIONS request.
+* (bug 44923) action=upload works correctly if the entire file is uploaded in
+ the first chunk.
+* Added 'continue=' parameter to streamline client iteration over complex query results
+* (bug 44909) API parameters may now be marked as type "upload", which is now
+ used for action=upload's 'file' and 'chunk' parameters. This type will raise
+ an error during parameter validation if the parameter is given but not
+ recognized as an uploaded file.
+* (bug 44244) prop=info may now return the number of people watching each page.
+* (bug 33304) list=allpages will no longer return duplicate entries when
+ querying protection.
+* (bug 33304) list=allpages will now find really old indefinite protections.
+* (bug 45937) meta=allmessages will report a syntactically invalid lang as a
+ proper error instead of as an uncaught exception.
+* (bug 25325) added support for wlshow filtering (bots/anon/minor/patrolled)
+ to action=feedwatchlist
+* WDDX formatted output will actually be formatted (and normal output will no
+ longer be), and will no longer choke on booleans.
+
+=== API internal changes in 1.21 ===
+* For debugging only, a new global $wgDebugAPI removes many API restrictions when true.
+ Never use on the production servers, as this flag introduces security holes.
+ Whenever enabled, a warning will also be added to all output.
+* ApiModuleManager now handles all submodules (actions,props,lists) and instantiation
+* Query stores prop/list/meta as submodules
+* ApiPageSet can now be used in any action to process titles/pageids/revids or any generator.
+* BREAKING CHANGE: ApiPageSet constructor now has two params instead of three, with only the
+ first one keeping its meaning. ApiPageSet is now derived from ApiBase.
+* BREAKING CHANGE: ApiQuery::newGenerator() and executeGeneratorModule() were deleted.
+* ApiQueryGeneratorBase::setGeneratorMode() now requires a pageset param.
+* $wgAPIGeneratorModules is now obsolete and will be ignored.
+* Added flags ApiResult::OVERRIDE and ADD_ON_TOP to setElement() and addValue()
+* Internal API calls will now include <warnings> in case of unused parameters
+
+=== Languages updated in 1.21 ===
+
+MediaWiki supports over 350 languages. Many localisations are updated
+regularly. Below only new and removed languages are listed, as well as
+changes to languages because of Bugzilla reports.
+
+* South Azerbaijani (azb) added.
+* (bug 30040) Autonym for nds-nl is now 'Nedersaksies' (was 'Nedersaksisch').
+* (bug 45436) Autonym for pi (Pali) is now 'पालि' (was ''पाळि').
+* (bug 34977) Now formatted numbers in Spanish use space as separator
+ for thousands, as mandated by the Real Academia Española.
+* (bug 35031) Kurdish formatted numbers now use period and comma
+ as separators for thousands and decimals respectively.
+
+=== Other changes in 1.21 ===
+* BREAKING CHANGE: (bug 44385) Removed the jquery.collapsibleTabs module and
+ moved it to the Vector extension. It was entirely Vector-extension-specific,
+ deeply interconnected with the extension, and this functionality really
+ belongs to the extension instead of the skin anyway. In the unlikely case you
+ were using it, you have to either copy it to your extension, or install the
+ Vector extension (and possibly disable its features using config settings if
+ you don't want them).
+* Experimental IBM DB2 support was removed due to lack of interest and maintainership
+* BREAKING CHANGE: Filenames of maintenance scripts were standardized into
+ lowerCamelCase format, and made more explicit:
+ - clear_stats.php -> clearCacheStats.php
+ - clear_interwiki_cache.php -> clearInterwikiCache.php
+ - initStats.php -> initSiteStats.php
+ - proxy_check.php -> proxyCheck.php
+ - stats.php -> showCacheStats.php
+ - showStats.php -> showSiteStats.php.
+ Class names were renamed accordingly:
+ - clear_stats -> ClearCacheStats
+ - InitStats -> InitSiteStats
+ - CacheStats -> ShowCacheStats
+ - ShowStats -> ShowSiteStats.
+* BREAKING CHANGE: (bug 38244) Removed the mediawiki.api.titleblacklist module
+ and moved it to the TitleBlacklist extension.
== MediaWiki 1.20 ==
* $wgBug34832TransitionalRollback has been removed.
* (bug 29472) $wgUseDynamicDates has been removed and its functionality
disabled.
+* $wgVectorUseIconWatch is now enabled by default.
=== New features in 1.21 ===
* (bug 38110) Schema changes (adding or dropping tables, indices and
correctly.
* (bug 45803) Whitespace within == Headline == syntax and within <hN> headings
is now non-significant and not preserved in the HTML output.
+* (bug 23343) Implemented ability to apply IP blocks to the contents of X-Forwarded-For headers
+ by adding a new configuration variable $wgApplyIpBlocksToXff (disabled by default).
=== Bug fixes in 1.21 ===
+* (bug 40617) Installer can now customize the logo in LocalSettings.php
* (bug 40353) SpecialDoubleRedirect should support interwiki redirects.
* (bug 40352) fixDoubleRedirects.php should support interwiki redirects.
* (bug 9237) SpecialBrokenRedirect should not list interwiki redirects.
to action=feedwatchlist
* WDDX formatted output will actually be formatted (and normal output will no
longer be), and will no longer choke on booleans.
+* The JSON output formatter now leaves forward slashes unescaped to improve human
+ readability of URLs and similar strings. Also, a "utf8" option is now provided
+ to use UTF-8 encoding instead of hex escape codes for most non-ASCII characters.
+* action=opensearch no longer silently ignores the format parameter.
+* action=opensearch now supports format=jsonfm.
=== API internal changes in 1.21 ===
* For debugging only, a new global $wgDebugAPI removes many API restrictions when true.
* BREAKING CHANGE: (bug 38244) Removed the mediawiki.api.titleblacklist module
and moved it to the TitleBlacklist extension.
* The Special:ActiveUsers special page was removed
+* BREAKING CHANGE: Implementation of MediaWiki's JS and JSON value encoding
+ has changed:
+** MediaWiki no longer supports PHP installations in which the native JSON
+ extension is missing or disabled.
+** XmlJsCode objects can no longer be nested inside objects or arrays.
+ (For Xml::encodeJsCall(), this individually applies to each argument.)
+** The sets of characters escaped by default, along with the precise escape
+ sequences used, have changed (except for the Xml::escapeJsString()
+ function, which is now deprecated).
+* BREAKING CHANGE: The Services_JSON class has been removed; if necessary,
+ be sure to upgrade affected extensions at the same time (e.g. Collection).
+* Calling Linker methods using a skin will now output deprecation warnings.
+* Pages with a returnto (such as the page when you login or logout), no
+ longer have a rel="next" link tag.
== Compatibility ==
--- /dev/null
+Security reminder: MediaWiki does not require PHP's register_globals. If you
+have it on, turn it '''off''' if you can.
+
+== MediaWiki 1.22 ==
+
+THIS IS NOT A RELEASE YET
+
+MediaWiki 1.22 is an alpha-quality branch and is not recommended for use in
+production.
+
+=== Configuration changes in 1.22 ===
+* $wgRedirectScript was removed. It was unused.
+
+=== New features in 1.22 ===
+
+=== Bug fixes in 1.22 ===
+
+=== API changes in 1.22 ===
+
+=== Languages updated in 1.22===
+
+MediaWiki supports over 350 languages. Many localisations are updated
+regularly. Below only new and removed languages are listed, as well as
+changes to languages because of Bugzilla reports.
+
+=== Other changes in 1.22 ===
+* redirect.php was removed. It was unused.
+* BREAKING CHANGE: Legacy skins Simple, MySkin and Standard were all removed.
+ Nostalgia was moved to an extension.
+
+== Compatibility ==
+
+MediaWiki 1.22 requires PHP 5.3.2 or later.
+
+MySQL is the recommended DBMS. PostgreSQL or SQLite can also be used, but
+support for them is somewhat less mature. There is experimental support for
+Oracle.
+
+The supported versions are:
+
+* MySQL 5.0.2 or later
+* PostgreSQL 8.3 or later
+* SQLite 3.3.7 or later
+* Oracle 9.0.1 or later
+
+== Upgrading ==
+
+1.22 has several database changes since 1.21, and will not work without schema
+updates. Note that due to changes to some very large tables like the revision
+table, the schema update may take quite long (minutes on a medium sized site,
+many hours on a large site).
+
+If upgrading from before 1.11, and you are using a wiki as a commons
+repository, make sure that it is updated as well. Otherwise, errors may arise
+due to database schema changes.
+
+If upgrading from before 1.7, you may want to run refreshLinks.php to ensure
+new database fields are filled with data.
+
+If you are upgrading from MediaWiki 1.4.x or earlier, you should upgrade to
+1.5 first. The upgrade script maintenance/upgrade1_5.php has been removed
+with MediaWiki 1.21.
+
+Don't forget to always back up your database before upgrading!
+
+See the file UPGRADE for more detailed upgrade instructions.
+
+For notes on 1.21.x and older releases, see HISTORY.
+
+== Online documentation ==
+
+Documentation for both end-users and site administrators is available on
+MediaWiki.org, and is covered under the GNU Free Documentation License (except
+for pages that explicitly state that their contents are in the public domain):
+
+ https://www.mediawiki.org/wiki/Documentation
+
+== Mailing list ==
+
+A mailing list is available for MediaWiki user support and discussion:
+
+ https://lists.wikimedia.org/mailman/listinfo/mediawiki-l
+
+A low-traffic announcements-only list is also available:
+
+ https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce
+
+It's highly recommended that you sign up for one of these lists if you're
+going to run a public MediaWiki, so you can be notified of security fixes.
+
+== IRC help ==
+
+There's usually someone online in #mediawiki on irc.freenode.net.
in late August 2003) you may need to manually run some of the update SQL
scripts in maintenance/archives before the installer is able to pick up
with remaining updates.
-
-
-== Upgrading from UseModWiki or old "phase 2" Wikipedia code ==
-
-There is a semi-maintained UseModWiki to MediaWiki conversion script at
-maintenance/importUseModWiki.php; it may require tweaking and customization
-to work for you.
-
-Install a new MediaWiki first, then use the conversion script which will
-output SQL statements; direct these to a file and then run that into your
-database.
-
-You will have to rebuild the links tables etc after importing.
-
-
is intended to be an immutable "value" class, so there are no mutator functions.
To get a new instance, call Title::newFromText(). Once instantiated, the
-non-static accessor methods can be used, such as getText(), getDBKey(),
+non-static accessor methods can be used, such as getText(), getDBkey(),
getNamespace(), etc. Note that Title::newFromText() may return false if the text
is illegal according to the rules below.
handling for interlanguage links, image links, and category links. It is also
used to indicate the main namespace in template inclusions.
-Once prefixes have been stripped, the rest of the title processed this way:
+Once prefixes have been stripped, the rest of the title processed this way:
* Spaces and underscores are treated as equivalent and each is converted to the
other in the appropriate context (underscore in URL and database keys, spaces
- in plain text).
+ in plain text).
* Multiple consecutive spaces are converted to a single space.
* Leading or trailing space is removed.
* If $wgCapitalLinks is enabled (the default), the first letter is capitalised,
be up to 512 bytes.
Note that Unicode Normal Form C (NFC) is enforced by MediaWiki's user interface
-input functions, and so titles will typically be in this form.
+input functions, and so titles will typically be in this form.
getArticleID() needs some explanation: for "internal" articles, it should return
the "page_id" field if the article exists, else it returns 0. For all external
// Set the fragment if one was specified in the redirect
if ( strval( $this->getTitle()->getFragment() ) != '' ) {
- $fragment = Xml::escapeJsString( $this->getTitle()->getFragmentForURL() );
- $outputPage->addInlineScript( "redirectToFragment(\"$fragment\");" );
+ $outputPage->addInlineScript( Xml::encodeJsCall(
+ 'redirectToFragment', array( $this->getTitle()->getFragmentForURL() )
+ ) );
}
// Add a <link rel="canonical"> tag
} elseif ( $this->getContext()->getRequest()->getInt( 'unhide' ) != 1 ) {
# Give explanation and add a link to view the revision...
$oldid = intval( $this->getOldID() );
- $link = $this->getTitle()->getFullUrl( "oldid={$oldid}&unhide=1" );
+ $link = $this->getTitle()->getFullURL( "oldid={$oldid}&unhide=1" );
$msg = $this->mRevision->isDeleted( Revision::DELETED_RESTRICTED ) ?
'rev-suppressed-text-unhide' : 'rev-deleted-text-unhide';
$outputPage->wrapWikiMsg( "<div class='mw-warning plainlinks'>\n$1\n</div>\n",
'LCStore_CDB' => 'includes/cache/LocalisationCache.php',
'LCStore_DB' => 'includes/cache/LocalisationCache.php',
'LCStore_Null' => 'includes/cache/LocalisationCache.php',
- 'LegacyTemplate' => 'includes/SkinLegacy.php',
'License' => 'includes/Licenses.php',
'Licenses' => 'includes/Licenses.php',
'Linker' => 'includes/Linker.php',
'SiteStatsInit' => 'includes/SiteStats.php',
'SiteStatsUpdate' => 'includes/SiteStats.php',
'Skin' => 'includes/Skin.php',
- 'SkinLegacy' => 'includes/SkinLegacy.php',
'SkinTemplate' => 'includes/SkinTemplate.php',
'SpecialCreateAccount' => 'includes/SpecialPage.php',
'SpecialListAdmins' => 'includes/SpecialPage.php',
'SpecialRedirectToSpecial' => 'includes/SpecialPage.php',
'SquidPurgeClient' => 'includes/SquidPurgeClient.php',
'SquidPurgeClientPool' => 'includes/SquidPurgeClient.php',
+ 'StatCounter' => 'includes/StatCounter.php',
'Status' => 'includes/Status.php',
'StreamFile' => 'includes/StreamFile.php',
'StringUtils' => 'includes/StringUtils.php',
# includes/json
'FormatJson' => 'includes/json/FormatJson.php',
- 'Services_JSON' => 'includes/json/Services_JSON.php',
- 'Services_JSON_Error' => 'includes/json/Services_JSON.php',
# includes/libs
'CSSJanus' => 'includes/libs/CSSJanus.php',
# includes/logging
'DatabaseLogEntry' => 'includes/logging/LogEntry.php',
- 'DeleteLogFormatter' => 'includes/logging/LogFormatter.php',
+ 'DeleteLogFormatter' => 'includes/logging/DeleteLogFormatter.php',
'LegacyLogFormatter' => 'includes/logging/LogFormatter.php',
'LogEntry' => 'includes/logging/LogEntry.php',
'LogEventsList' => 'includes/logging/LogEventsList.php',
'LogPage' => 'includes/logging/LogPage.php',
'LogPager' => 'includes/logging/LogPager.php',
'ManualLogEntry' => 'includes/logging/LogEntry.php',
- 'MoveLogFormatter' => 'includes/logging/LogFormatter.php',
- 'NewUsersLogFormatter' => 'includes/logging/LogFormatter.php',
+ 'MoveLogFormatter' => 'includes/logging/MoveLogFormatter.php',
+ 'NewUsersLogFormatter' => 'includes/logging/NewUsersLogFormatter.php',
'PatrolLog' => 'includes/logging/PatrolLog.php',
- 'PatrolLogFormatter' => 'includes/logging/LogFormatter.php',
+ 'PatrolLogFormatter' => 'includes/logging/PatrolLogFormatter.php',
'RCDatabaseLogEntry' => 'includes/logging/LogEntry.php',
- 'RightsLogFormatter' => 'includes/logging/LogFormatter.php',
+ 'RightsLogFormatter' => 'includes/logging/RightsLogFormatter.php',
# includes/media
'BitmapHandler' => 'includes/media/Bitmap.php',
'CologneBlueTemplate' => 'skins/CologneBlue.php',
'ModernTemplate' => 'skins/Modern.php',
'MonoBookTemplate' => 'skins/MonoBook.php',
- 'NostalgiaTemplate' => 'skins/Nostalgia.php',
- 'SkinChick' => 'skins/Chick.php',
'SkinCologneBlue' => 'skins/CologneBlue.php',
'SkinModern' => 'skins/Modern.php',
'SkinMonoBook' => 'skins/MonoBook.php',
- 'SkinMySkin' => 'skins/MySkin.php',
- 'SkinNostalgia' => 'skins/Nostalgia.php',
- 'SkinSimple' => 'skins/Simple.php',
- 'SkinStandard' => 'skins/Standard.php',
'SkinVector' => 'skins/Vector.php',
- 'StandardTemplate' => 'skins/Standard.php',
'VectorTemplate' => 'skins/Vector.php',
);
return null;
}
+
+ /**
+ * Get all blocks that match any IP from an array of IP addresses
+ *
+ * @param Array $ipChain list of IPs (strings), usually retrieved from the
+ * X-Forwarded-For header of the request
+ * @param Bool $isAnon Exclude anonymous-only blocks if false
+ * @param Bool $fromMaster Whether to query the master or slave database
+ * @return Array of Blocks
+ * @since 1.21
+ */
+ public static function getBlocksForIPList( array $ipChain, $isAnon, $fromMaster = false ) {
+ if ( !count( $ipChain ) ) {
+ return array();
+ }
+
+ wfProfileIn( __METHOD__ );
+ $conds = array();
+ foreach ( array_unique( $ipChain ) as $ipaddr ) {
+ # Discard invalid IP addresses. Since XFF can be spoofed and we do not
+ # necessarily trust the header given to us, make sure that we are only
+ # checking for blocks on well-formatted IP addresses (IPv4 and IPv6).
+ # Do not treat private IP spaces as special as it may be desirable for wikis
+ # to block those IP ranges in order to stop misbehaving proxies that spoof XFF.
+ if ( !IP::isValid( $ipaddr ) ) {
+ continue;
+ }
+ # Don't check trusted IPs (includes local squids which will be in every request)
+ if ( wfIsTrustedProxy( $ipaddr ) ) {
+ continue;
+ }
+ # Check both the original IP (to check against single blocks), as well as build
+ # the clause to check for rangeblocks for the given IP.
+ $conds['ipb_address'][] = $ipaddr;
+ $conds[] = self::getRangeCond( IP::toHex( $ipaddr ) );
+ }
+
+ if ( !count( $conds ) ) {
+ wfProfileOut( __METHOD__ );
+ return array();
+ }
+
+ if ( $fromMaster ) {
+ $db = wfGetDB( DB_MASTER );
+ } else {
+ $db = wfGetDB( DB_SLAVE );
+ }
+ $conds = $db->makeList( $conds, LIST_OR );
+ if ( !$isAnon ) {
+ $conds = array( $conds, 'ipb_anon_only' => 0 );
+ }
+ $selectFields = array_merge(
+ array( 'ipb_range_start', 'ipb_range_end' ),
+ Block::selectFields()
+ );
+ $rows = $db->select( 'ipblocks',
+ $selectFields,
+ $conds,
+ __METHOD__
+ );
+
+ $blocks = array();
+ foreach ( $rows as $row ) {
+ $block = self::newFromRow( $row );
+ if ( !$block->deleteIfExpired() ) {
+ $blocks[] = $block;
+ }
+ }
+
+ wfProfileOut( __METHOD__ );
+ return $blocks;
+ }
+
+ /**
+ * From a list of multiple blocks, find the most exact and strongest Block.
+ * The logic for finding the "best" block is:
+ * - Blocks that match the block's target IP are preferred over ones in a range
+ * - Hardblocks are chosen over softblocks that prevent account creation
+ * - Softblocks that prevent account creation are chosen over other softblocks
+ * - Other softblocks are chosen over autoblocks
+ * - If there are multiple exact or range blocks at the same level, the one chosen
+ * is random
+
+ * @param Array $ipChain list of IPs (strings). This is used to determine how "close"
+ * a block is to the server, and if a block matches exactly, or is in a range.
+ * The order is furthest from the server to nearest e.g., (Browser, proxy1, proxy2,
+ * local-squid, ...)
+ * @param Array $block Array of blocks
+ * @return Block|null the "best" block from the list
+ */
+ public static function chooseBlock( array $blocks, array $ipChain ) {
+ if ( !count( $blocks ) ) {
+ return null;
+ } elseif ( count( $blocks ) == 1 ) {
+ return $blocks[0];
+ }
+
+ wfProfileIn( __METHOD__ );
+
+ // Sort hard blocks before soft ones and secondarily sort blocks
+ // that disable account creation before those that don't.
+ usort( $blocks, function( Block $a, Block $b ) {
+ $aWeight = (int)$a->isHardblock() . (int)$a->prevents( 'createaccount' );
+ $bWeight = (int)$b->isHardblock() . (int)$b->prevents( 'createaccount' );
+ return strcmp( $bWeight, $aWeight ); // highest weight first
+ } );
+
+ $blocksListExact = array(
+ 'hard' => false,
+ 'disable_create' => false,
+ 'other' => false,
+ 'auto' => false
+ );
+ $blocksListRange = array(
+ 'hard' => false,
+ 'disable_create' => false,
+ 'other' => false,
+ 'auto' => false
+ );
+ $ipChain = array_reverse( $ipChain );
+
+ foreach ( $blocks as $block ) {
+ // Stop searching if we have already have a "better" block. This
+ // is why the order of the blocks matters
+ if ( !$block->isHardblock() && $blocksListExact['hard'] ) {
+ break;
+ } elseif ( !$block->prevents( 'createaccount' ) && $blocksListExact['disable_create'] ) {
+ break;
+ }
+
+ foreach ( $ipChain as $checkip ) {
+ $checkipHex = IP::toHex( $checkip );
+ if ( (string)$block->getTarget() === $checkip ) {
+ if ( $block->isHardblock() ) {
+ $blocksListExact['hard'] = $blocksListExact['hard'] ?: $block;
+ } elseif ( $block->prevents( 'createaccount' ) ) {
+ $blocksListExact['disable_create'] = $blocksListExact['disable_create'] ?: $block;
+ } elseif ( $block->mAuto ) {
+ $blocksListExact['auto'] = $blocksListExact['auto'] ?: $block;
+ } else {
+ $blocksListExact['other'] = $blocksListExact['other'] ?: $block;
+ }
+ // We found closest exact match in the ip list, so go to the next Block
+ break;
+ } elseif ( array_filter( $blocksListExact ) == array()
+ && $block->getRangeStart() <= $checkipHex
+ && $block->getRangeEnd() >= $checkipHex
+ ) {
+ if ( $block->isHardblock() ) {
+ $blocksListRange['hard'] = $blocksListRange['hard'] ?: $block;
+ } elseif ( $block->prevents( 'createaccount' ) ) {
+ $blocksListRange['disable_create'] = $blocksListRange['disable_create'] ?: $block;
+ } elseif ( $block->mAuto ) {
+ $blocksListRange['auto'] = $blocksListRange['auto'] ?: $block;
+ } else {
+ $blocksListRange['other'] = $blocksListRange['other'] ?: $block;
+ }
+ break;
+ }
+ }
+ }
+
+ if ( array_filter( $blocksListExact ) == array() ) {
+ $blocksList = &$blocksListRange;
+ } else {
+ $blocksList = &$blocksListExact;
+ }
+
+ $chosenBlock = null;
+ if ( $blocksList['hard'] ) {
+ $chosenBlock = $blocksList['hard'];
+ } elseif ( $blocksList['disable_create'] ) {
+ $chosenBlock = $blocksList['disable_create'];
+ } elseif ( $blocksList['other'] ) {
+ $chosenBlock = $blocksList['other'];
+ } elseif ( $blocksList['auto'] ) {
+ $chosenBlock = $blocksList['auto'];
+ } else {
+ throw new MWException( "Proxy block found, but couldn't be classified." );
+ }
+
+ wfProfileOut( __METHOD__ );
+ return $chosenBlock;
+ }
+
/**
* From an existing Block, get the target and the type of target.
* Note that, except for null, it is always safe to treat the target
foreach( $sorted as $obj ) {
$title = Title::makeTitle( $obj->rc_namespace, $obj->rc_title );
- $talkpage = MWNamespace::canTalk( $obj->rc_namespace ) ? $title->getTalkPage()->getFullUrl() : '';
+ $talkpage = MWNamespace::canTalk( $obj->rc_namespace ) ? $title->getTalkPage()->getFullURL() : '';
// Skip items with deleted content (avoids partially complete/inconsistent output)
if( $obj->rc_deleted ) continue;
* MediaWiki version number
* @since 1.2
*/
-$wgVersion = '1.21alpha';
+$wgVersion = '1.22alpha';
/**
* Name of the site. It must be changed in LocalSettings.php
*/
$wgScript = false;
-/**
- * The URL path to redirect.php. This is a script that is used by the Nostalgia
- * skin.
- *
- * Defaults to "{$wgScriptPath}/redirect{$wgScriptExtension}".
- */
-$wgRedirectScript = false;
-
/**
* The URL path to load.php.
*
* - true = use an icon watch/unwatch button
* - false = use watch/unwatch text link
*/
-$wgVectorUseIconWatch = false;
+$wgVectorUseIconWatch = true;
/**
* Display user edit counts in various prominent places.
*/
$wgProxyWhitelist = array();
+/**
+ * Whether to look at the X-Forwarded-For header's list of (potentially spoofed)
+ * IPs and apply IP blocks to them. This allows for IP blocks to work with correctly-configured
+ * (transparent) proxies without needing to block the proxies themselves.
+ */
+$wgApplyIpBlocksToXff = false;
+
/**
* Simple rate limiter options to brake edit floods.
*
/**
* Status: user tried to create this page, but is not allowed to do that
- * ( Title->usercan('create') == false )
+ * ( Title->userCan('create') == false )
*/
const AS_NO_CREATE_PERMISSION = 223;
// The edit page was reached via a red link.
// Redirect to the article page and let them click the edit tab if
// they really want a permission error.
- $wgOut->redirect( $this->mTitle->getFullUrl() );
+ $wgOut->redirect( $this->mTitle->getFullURL() );
return;
}
// The edit page was reached via a red link.
// Redirect to the article page and let them click the edit tab if
// they really want a permission error.
- $wgOut->redirect( $this->mTitle->getFullUrl() );
+ $wgOut->redirect( $this->mTitle->getFullURL() );
} else {
$wgOut->readOnlyPage( $source, $protected, $reasons, $action );
}
$this->msg = $msg;
$this->params = $params;
+ // Bug 44111: Messages in the log files should be in English and not
+ // customized by the local wiki. So get the default English version for
+ // passing to the parent constructor. Our overridden report() below
+ // makes sure that the page shown to the user is not forced to English.
if( $msg instanceof Message ) {
- parent::__construct( $msg );
+ $enMsg = clone( $msg );
} else {
- parent::__construct( wfMessage( $msg )->text() );
+ $enMsg = wfMessage( $msg, $params );
}
+ $enMsg->inLanguage( 'en' )->useDatabase( false );
+ parent::__construct( $enMsg->text() );
}
function report() {
* @return string
*/
function homelink() {
- return Xml::element( 'base', array(), Title::newMainPage()->getCanonicalUrl() );
+ return Xml::element( 'base', array(), Title::newMainPage()->getCanonicalURL() );
}
/**
" " . $comment . "\n" .
" " . Xml::element( 'filename', null, $file->getName() ) . "\n" .
$archiveName .
- " " . Xml::element( 'src', null, $file->getCanonicalUrl() ) . "\n" .
+ " " . Xml::element( 'src', null, $file->getCanonicalURL() ) . "\n" .
" " . Xml::element( 'size', null, $file->getSize() ) . "\n" .
" " . Xml::element( 'sha1base36', null, $file->getSha1() ) . "\n" .
" " . Xml::element( 'rel', null, $file->getRel() ) . "\n" .
$queryParameters = ($oldid == null)
? "diff={$newid}"
: "diff={$newid}&oldid={$oldid}";
- $diffUrl = $title->getFullUrl( $queryParameters );
+ $diffUrl = $title->getFullURL( $queryParameters );
$diffLink = Html::element( 'a', array( 'href' => $diffUrl ),
wfMessage( 'showdiff' )->inContentLanguage()->text() );
$q['oldimage'] = $this->oldimage;
}
- return $this->title->getLocalUrl( $q );
+ return $this->title->getLocalURL( $q );
}
/**
global $wgRequestTime, $wgDebugLogFile, $wgDebugRawPage, $wgRequest;
global $wgProfileLimit, $wgUser;
+ StatCounter::singleton()->flush();
+
$profiler = Profiler::instance();
# Profiling must actually be enabled...
* @return void
*/
function wfIncrStats( $key, $count = 1 ) {
- global $wgStatsMethod;
-
- $count = intval( $count );
- if ( $count == 0 ) {
- return;
- }
-
- if( $wgStatsMethod == 'udp' ) {
- global $wgUDPProfilerHost, $wgUDPProfilerPort, $wgAggregateStatsID;
- static $socket;
-
- $id = $wgAggregateStatsID !== false ? $wgAggregateStatsID : wfWikiID();
-
- if ( !$socket ) {
- $socket = socket_create( AF_INET, SOCK_DGRAM, SOL_UDP );
- $statline = "stats/{$id} - 1 1 1 1 1 -total\n";
- socket_sendto(
- $socket,
- $statline,
- strlen( $statline ),
- 0,
- $wgUDPProfilerHost,
- $wgUDPProfilerPort
- );
- }
- $statline = "stats/{$id} - {$count} 1 1 1 1 {$key}\n";
- wfSuppressWarnings();
- socket_sendto(
- $socket,
- $statline,
- strlen( $statline ),
- 0,
- $wgUDPProfilerHost,
- $wgUDPProfilerPort
- );
- wfRestoreWarnings();
- } elseif( $wgStatsMethod == 'cache' ) {
- global $wgMemc;
- $key = wfMemcKey( 'stats', $key );
- if ( is_null( $wgMemc->incr( $key, $count ) ) ) {
- $wgMemc->add( $key, $count );
- }
- } else {
- // Disabled
- }
+ StatCounter::singleton()->incr( $key, $count );
}
/**
# Handle redirects
$redirectTitle = RepoGroup::singleton()->checkRedirect( Title::makeTitle( NS_FILE, $name ) );
if( $redirectTitle ) {
- $name = $redirectTitle->getDbKey();
+ $name = $redirectTitle->getDBkey();
}
# Run the extension hook
class HTMLForm extends ContextSource {
// A mapping of 'type' inputs onto standard HTMLFormField subclasses
- static $typeMappings = array(
+ private static $typeMappings = array(
'api' => 'HTMLApiField',
'text' => 'HTMLTextField',
'textarea' => 'HTMLTextAreaField',
* Select dropdown field, with an additional "other" textbox.
*/
class HTMLSelectOrOtherField extends HTMLTextField {
- static $jsAdded = false;
function __construct( $params ) {
if ( !in_array( 'other', $params['options'], true ) ) {
$limit = 100;
$out = $this->getContext()->getOutput();
- $res = $this->queryImageLinks( $this->getTitle()->getDbKey(), $limit + 1 );
+ $res = $this->queryImageLinks( $this->getTitle()->getDBkey(), $limit + 1 );
$rows = array();
$redirects = array();
foreach ( $res as $row ) {
if ( $history ) $params['history'] = 1;
if ( $templates ) $params['templates'] = 1;
if ( $pageLinkDepth ) $params['pagelink-depth'] = $pageLinkDepth;
- $url = $link->getFullUrl( $params );
+ $url = $link->getFullURL( $params );
# For interwikis, use POST to avoid redirects.
return ImportStreamSource::newFromURL( $url, "POST" );
}
$hp['width'] = $file->getWidth( $page );
}
- if ( isset( $fp['thumbnail'] ) || isset( $fp['framed'] ) || isset( $fp['frameless'] ) || !$hp['width'] ) {
+ if ( isset( $fp['thumbnail'] ) || isset( $fp['manualthumb'] ) || isset( $fp['framed'] ) || isset( $fp['frameless'] ) || !$hp['width'] ) {
global $wgThumbLimits, $wgThumbUpright;
if ( $widthOption === null || !isset( $wgThumbLimits[$widthOption] ) ) {
$widthOption = User::getDefaultOption( 'thumbsize' );
}
$thumb = false;
$noscale = false;
+ $manualthumb = false;
if ( !$exists ) {
$outerWidth = $hp['width'] + 2;
$manual_img = wfFindFile( $manual_title );
if ( $manual_img ) {
$thumb = $manual_img->getUnscaledThumb( $hp );
+ $manualthumb = true;
} else {
$exists = false;
}
if ( $page ) {
$url = wfAppendQuery( $url, 'page=' . urlencode( $page ) );
}
+ if ( $manualthumb &&
+ !isset( $fp['link-title'] ) &&
+ !isset( $fp['link-url'] ) &&
+ !isset( $fp['no-link'] ) ) {
+ $fp['link-url'] = $url;
+ }
$s = "<div class=\"thumb t{$fp['align']}\"><div class=\"thumbinner\" style=\"width:{$outerWidth}px;\">";
if ( !$exists ) {
$s .= wfMessage( 'thumbnail_error', '' )->escaped();
$zoomIcon = '';
} else {
- if ( !$noscale ) {
+ if ( !$noscale && !$manualthumb ) {
self::processResponsiveImages( $file, $thumb, $hp );
}
$params = array(
*/
protected static function getUploadUrl( $destFile, $query = '' ) {
global $wgUploadMissingFileUrl, $wgUploadNavigationUrl;
- $q = 'wpDestFile=' . $destFile->getPartialUrl();
+ $q = 'wpDestFile=' . $destFile->getPartialURL();
if ( $query != '' )
$q .= '&' . $query;
return wfAppendQuery( $wgUploadNavigationUrl, $q );
} else {
$upload = SpecialPage::getTitleFor( 'Upload' );
- return $upload->getLocalUrl( $q );
+ return $upload->getLocalURL( $q );
}
}
$nodotdot = substr( $nodotdot, 3 );
}
if ( $dotdotcount > 0 ) {
- $exploded = explode( '/', $contextTitle->GetPrefixedText() );
+ $exploded = explode( '/', $contextTitle->getPrefixedText() );
if ( count( $exploded ) > $dotdotcount ) { # not allowed to go below top level page
$ret = implode( '/', array_slice( $exploded, 0, -$dotdotcount ) );
# / at the end means don't show full path
* @param $title Title
*/
protected function page( $name, $title ) {
- $this->url( $name, $title->getFullUrl() );
+ $this->url( $name, $title->getFullURL() );
}
protected function url( $name, $url ) {
*/
private $mProperties = array();
+ /**
+ * @var string|null: ResourceLoader target for load.php links. If null, will be omitted
+ */
+ private $mTarget = null;
+
/**
* Constructor for OutputPage. This should not be called directly.
* Instead a new RequestContext should be created and it will implicitly create
$module = $resourceLoader->getModule( $val );
if( $module instanceof ResourceLoaderModule
&& $module->getOrigin() <= $this->getAllowedModules( $type )
- && ( is_null( $position ) || $module->getPosition() == $position ) )
+ && ( is_null( $position ) || $module->getPosition() == $position )
+ && ( !$this->mTarget || in_array( $this->mTarget, $module->getTargets() ) ) )
{
$filteredModules[] = $val;
}
$this->mModuleMessages = array_merge( $this->mModuleMessages, (array)$modules );
}
+ /**
+ * @return null|string: ResourceLoader target
+ */
+ public function getTarget() {
+ return $this->mTarget;
+ }
+
+ /**
+ * Sets ResourceLoader target for load.php links. If null, will be omitted
+ *
+ * @param $target string|null
+ */
+ public function setTarget( $target ) {
+ $this->mTarget = $target;
+ }
+
/**
* Get an array of head items
*
$proto = PROTO_RELATIVE;
}
- $this->addLink( array( 'rel' => 'next', 'href' => $title->getFullURL( '', false, $proto ) ) );
$link = $this->msg( 'returnto' )->rawParams(
Linker::link( $title, $text, array(), $query, $options ) )->escaped();
$this->addHTML( "<p id=\"mw-returnto\">{$link}</p>\n" );
return $links;
}
}
+ if ( !is_null( $this->mTarget ) ) {
+ $extraQuery['target'] = $this->mTarget;
+ }
// Create keyed-by-group list of module objects from modules list
$groups = array();
&& $only == ResourceLoaderModule::TYPE_SCRIPTS )
|| ( $module->getOrigin() > $this->getAllowedModules( ResourceLoaderModule::TYPE_STYLES )
&& $only == ResourceLoaderModule::TYPE_STYLES )
+ || ( $this->mTarget && !in_array( $this->mTarget, $module->getTargets() ) )
)
{
continue;
* version are hardcoded here
*/
function wfPHPVersionError( $type ) {
- $mwVersion = '1.21';
+ $mwVersion = '1.22';
$minimumVersionPHP = '5.3.2';
$phpVersion = phpversion();
if( $wgRequest->wasPosted() ) {
if( $this->save() ) {
$q = $this->mArticle->isRedirect() ? 'redirect=no' : '';
- $wgOut->redirect( $this->mTitle->getFullUrl( $q ) );
+ $wgOut->redirect( $this->mTitle->getFullURL( $q ) );
}
} else {
$this->show();
if( !$this->disabled ) {
$wgOut->addModules( 'mediawiki.legacy.protect' );
$out .= Xml::openElement( 'form', array( 'method' => 'post',
- 'action' => $this->mTitle->getLocalUrl( 'action=protect' ),
+ 'action' => $this->mTitle->getLocalURL( 'action=protect' ),
'id' => 'mw-Protect-Form', 'onsubmit' => 'ProtectionForm.enableUnchainedInputs(true)' ) );
}
public function notifyRC2UDP() {
global $wgRC2UDPAddress, $wgRC2UDPOmitBots;
# Notify external application via UDP
- if ( $wgRC2UDPAddress && ( !$this->mAttribs['rc_bot'] || !$wgRC2UDPOmitBots ) ) {
+ # Omit RC_EXTERNAL changes: bots and tools can get these edits from the feed of the external wiki
+ if ( $wgRC2UDPAddress && $this->mAttribs['rc_type'] != RC_EXTERNAL &&
+ ( !$this->mAttribs['rc_bot'] || !$wgRC2UDPOmitBots ) ) {
self::sendToUDP( $this->getIRCLine() );
}
}
// Set various default paths sensibly...
if ( $wgScript === false ) $wgScript = "$wgScriptPath/index$wgScriptExtension";
-if ( $wgRedirectScript === false ) $wgRedirectScript = "$wgScriptPath/redirect$wgScriptExtension";
if ( $wgLoadScript === false ) $wgLoadScript = "$wgScriptPath/load$wgScriptExtension";
if ( $wgArticlePath === false ) {
$skinDir = dir( $wgStyleDirectory );
- # while code from www.php.net
- while ( false !== ( $file = $skinDir->read() ) ) {
- // Skip non-PHP files, hidden files, and '.dep' includes
- $matches = array();
-
- if ( preg_match( '/^([^.]*)\.php$/', $file, $matches ) ) {
- $aSkin = $matches[1];
- $wgValidSkinNames[strtolower( $aSkin )] = $aSkin;
+ if ( $skinDir !== false && $skinDir !== null ) {
+ # while code from www.php.net
+ while ( false !== ( $file = $skinDir->read() ) ) {
+ // Skip non-PHP files, hidden files, and '.dep' includes
+ $matches = array();
+
+ if ( preg_match( '/^([^.]*)\.php$/', $file, $matches ) ) {
+ $aSkin = $matches[1];
+ $wgValidSkinNames[strtolower( $aSkin )] = $aSkin;
+ }
}
+ $skinDir->close();
}
- $skinDir->close();
$skinsInitialised = true;
wfProfileOut( __METHOD__ . '-init' );
}
// in the user preferences.
$fallback = array(
0 => $wgDefaultSkin,
- 1 => 'nostalgia',
2 => 'cologneblue'
);
function __call( $fname, $args ) {
$realFunction = array( 'Linker', $fname );
if ( is_callable( $realFunction ) ) {
+ wfDeprecated( get_class( $this ) . '::' . $fname, '1.21' );
return call_user_func_array( $realFunction, $args );
} else {
$className = get_class( $this );
$s = array();
if ( !$wgOut->isPrintable() ) {
- $printurl = htmlspecialchars( $this->getSkin()->getTitle()->getLocalUrl(
+ $printurl = htmlspecialchars( $this->getSkin()->getTitle()->getLocalURL(
$wgRequest->appendQueryValue( 'printable', 'yes', true ) ) );
$s[] = "<a href=\"$printurl\" rel=\"alternate\">"
. wfMessage( 'printableversion' )->text() . '</a>';
return array(
'class' => implode( ' ', $classes ),
'text' => $text,
- 'href' => $title->getLocalUrl( $query ),
+ 'href' => $title->getLocalURL( $query ),
'primary' => true );
}
if ( $out->isArticleRelated() ) {
$nav_urls['whatlinkshere'] = array(
- 'href' => SpecialPage::getTitleFor( 'Whatlinkshere', $this->thispage )->getLocalUrl()
+ 'href' => SpecialPage::getTitleFor( 'Whatlinkshere', $this->thispage )->getLocalURL()
);
$nav_urls['info'] = array(
if ( $this->getTitle()->getArticleID() ) {
$nav_urls['recentchangeslinked'] = array(
- 'href' => SpecialPage::getTitleFor( 'Recentchangeslinked', $this->thispage )->getLocalUrl()
+ 'href' => SpecialPage::getTitleFor( 'Recentchangeslinked', $this->thispage )->getLocalURL()
);
}
}
/**
* @private
+ * @deprecated since 1.21; use Xml::encodeJsVar() or Xml::encodeJsCall() instead
*/
function jstext( $str ) {
+ wfDeprecated( __METHOD__, '1.21' );
echo Xml::escapeJsString( $this->data[$str] );
}
$query = $this->getRedirectQuery();
// Redirect to a page title with possible query parameters
if ( $redirect instanceof Title ) {
- $url = $redirect->getFullUrl( $query );
+ $url = $redirect->getFullURL( $query );
$this->getOutput()->redirect( $url );
return $redirect;
// Redirect to index.php with query parameters
$this->getOutput()->redirect( $url );
return $redirect;
} else {
- $class = __CLASS__;
+ $class = get_class( $this );
throw new MWException( "RedirectSpecialPage $class doesn't redirect!" );
}
}
unset( $query['title'] );
$query = wfArrayToCgi( $query );
$title = $page->getTitle( $par );
- $url = $title->getFullUrl( $query );
+ $url = $title->getFullURL( $query );
$context->getOutput()->redirect( $url );
wfProfileOut( __METHOD__ );
return $title;
--- /dev/null
+<?php
+/**
+ * @defgroup StatCounter StatCounter
+ *
+ * StatCounter is used to increment arbitrary keys for profiling reasons.
+ * The key/values are persisted in several possible ways (see $wgStatsMethod).
+ */
+
+/**
+ * Aggregator for wfIncrStats() that batches updates per request.
+ *
+ * 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
+ * @ingroup StatCounter
+ */
+
+/**
+ * Aggregator for wfIncrStats() that batches updates per request.
+ * This avoids spamming the collector many times for the same key.
+ *
+ * @ingroup StatCounter
+ */
+class StatCounter {
+ /** @var Array */
+ protected $deltas = array(); // (key => count)
+
+ protected function __construct() {}
+
+ public static function singleton() {
+ static $instance = null;
+ if ( !$instance ) {
+ $instance = new self();
+ }
+ return $instance;
+ }
+
+ /**
+ * Increment a key by delta $count
+ *
+ * @param string $key
+ * @param integer $count
+ * @return void
+ */
+ public function incr( $key, $count = 1 ) {
+ if ( PHP_SAPI === 'cli' ) {
+ $this->sendDelta( $key, $count );
+ } else {
+ if ( !isset( $this->deltas[$key] ) ) {
+ $this->deltas[$key] = 0;
+ }
+ $this->deltas[$key] += $count;
+ }
+ }
+
+ /**
+ * Flush all pending deltas to persistent storage
+ *
+ * @return void
+ */
+ public function flush() {
+ try {
+ foreach ( $this->deltas as $key => $count ) {
+ $this->sendDelta( $key, $count );
+ }
+ } catch ( MWException $e ) {
+ trigger_error( "Caught exception: {$e->getMessage()}");
+ }
+ $this->deltas = array();
+ }
+
+ /**
+ * @param string $key
+ * @param string $count
+ * @return void
+ */
+ protected function sendDelta( $key, $count ) {
+ global $wgStatsMethod;
+
+ $count = intval( $count );
+ if ( $count == 0 ) {
+ return;
+ }
+
+ if ( $wgStatsMethod == 'udp' ) {
+ global $wgUDPProfilerHost, $wgUDPProfilerPort, $wgAggregateStatsID;
+ static $socket;
+
+ $id = $wgAggregateStatsID !== false ? $wgAggregateStatsID : wfWikiID();
+
+ if ( !$socket ) {
+ $socket = socket_create( AF_INET, SOCK_DGRAM, SOL_UDP );
+ $statline = "stats/{$id} - 1 1 1 1 1 -total\n";
+ socket_sendto(
+ $socket,
+ $statline,
+ strlen( $statline ),
+ 0,
+ $wgUDPProfilerHost,
+ $wgUDPProfilerPort
+ );
+ }
+ $statline = "stats/{$id} - {$count} 1 1 1 1 {$key}\n";
+ wfSuppressWarnings();
+ socket_sendto(
+ $socket,
+ $statline,
+ strlen( $statline ),
+ 0,
+ $wgUDPProfilerHost,
+ $wgUDPProfilerPort
+ );
+ wfRestoreWarnings();
+ } elseif ( $wgStatsMethod == 'cache' ) {
+ global $wgMemc;
+ $key = wfMemcKey( 'stats', $key );
+ if ( is_null( $wgMemc->incr( $key, $count ) ) ) {
+ $wgMemc->add( $key, $count );
+ }
+ } else {
+ // Disabled
+ }
+ }
+}
if ( $res->numRows() > 0 ) {
foreach ( $res as $row ) {
- // $data[] = Title::newFromText($wgContLang->getNSText ( NS_CATEGORY ).':'.$row->cl_to);
- $data[$wgContLang->getNSText( NS_CATEGORY ) . ':' . $row->cl_to] = $this->getFullText();
+ // $data[] = Title::newFromText($wgContLang->getNsText ( NS_CATEGORY ).':'.$row->cl_to);
+ $data[$wgContLang->getNsText( NS_CATEGORY ) . ':' . $row->cl_to] = $this->getFullText();
}
}
return $data;
* done against master.
*/
private function getBlockedStatus( $bFromSlave = true ) {
- global $wgProxyWhitelist, $wgUser;
+ global $wgProxyWhitelist, $wgUser, $wgApplyIpBlocksToXff;
if ( -1 != $this->mBlockedby ) {
return;
}
}
+ # (bug 23343) Apply IP blocks to the contents of XFF headers, if enabled
+ if ( !$block instanceof Block
+ && $wgApplyIpBlocksToXff
+ && $ip !== null
+ && !$this->isAllowed( 'proxyunbannable' )
+ && !in_array( $ip, $wgProxyWhitelist )
+ ) {
+ $xff = $this->getRequest()->getHeader( 'X-Forwarded-For' );
+ $xff = array_map( 'trim', explode( ',', $xff ) );
+ $xff = array_diff( $xff, array( $ip ) );
+ $xffblocks = Block::getBlocksForIPList( $xff, $this->isAnon(), !$bFromSlave );
+ $block = Block::chooseBlock( $xffblocks, $xff );
+ if ( $block instanceof Block ) {
+ # Mangle the reason to alert the user that the block
+ # originated from matching the X-Forwarded-For header.
+ $block->mReason = wfMessage( 'xffblockreason', $block->mReason )->text();
+ }
+ }
+
if ( $block instanceof Block ) {
wfDebug( __METHOD__ . ": Found block.\n" );
$this->mBlock = $block;
$this->mAllowUsertalk = false;
}
- # Extensions
+ // Extensions
wfRunHooks( 'GetBlockedStatus', array( &$this ) );
wfProfileOut( __METHOD__ );
* for reload on the next hit.
*/
public function invalidateCache() {
- if( wfReadOnly() ) {
+ if ( wfReadOnly() ) {
return;
}
$this->load();
- if( $this->mId ) {
+ if ( $this->mId ) {
$this->mTouched = self::newTouchedTimestamp();
$dbw = wfGetDB( DB_MASTER );
-
- // Prevent contention slams by checking user_touched first
- $now = $dbw->timestamp( $this->mTouched );
- $needsPurge = $dbw->selectField( 'user', '1',
- array( 'user_id' => $this->mId, 'user_touched < ' . $dbw->addQuotes( $now ) )
- );
- if ( $needsPurge ) {
- $dbw->update( 'user',
- array( 'user_touched' => $now ),
- array( 'user_id' => $this->mId, 'user_touched < ' . $dbw->addQuotes( $now ) ),
- __METHOD__
- );
- }
-
+ $userid = $this->mId;
+ $touched = $this->mTouched;
+ $dbw->onTransactionIdle( function() use ( $dbw, $userid, $touched ) {
+ // Prevent contention slams by checking user_touched first
+ $encTouched = $dbw->addQuotes( $dbw->timestamp( $touched ) );
+ $needsPurge = $dbw->selectField( 'user', '1',
+ array( 'user_id' => $userid, 'user_touched < ' . $encTouched ) );
+ if ( $needsPurge ) {
+ $dbw->update( 'user',
+ array( 'user_touched' => $dbw->timestamp( $touched ) ),
+ array( 'user_id' => $userid, 'user_touched < ' . $encTouched ),
+ __METHOD__
+ );
+ }
+ } );
$this->clearSharedCache();
}
}
protected function getTokenUrl( $page, $token ) {
// Hack to bypass localization of 'Special:'
$title = Title::makeTitle( NS_MAIN, "Special:$page/$token" );
- return $title->getCanonicalUrl();
+ return $title->getCanonicalURL();
}
/**
* @return bool
*/
public function confirmEmail() {
- $this->setEmailAuthenticationTimestamp( wfTimestampNow() );
- wfRunHooks( 'ConfirmEmailComplete', array( $this ) );
+ // Check if it's already confirmed, so we don't touch the database
+ // and fire the ConfirmEmailComplete hook on redundant confirmations.
+ if ( !$this->isEmailConfirmed() ) {
+ $this->setEmailAuthenticationTimestamp( wfTimestampNow() );
+ wfRunHooks( 'ConfirmEmailComplete', array( $this ) );
+ }
return true;
}
$keys = array();
$postTransformKeys = array();
- $pageTitleUrl = $this->title->getCanonicalUrl();
+ $pageTitleUrl = $this->title->getCanonicalURL();
$pageTitle = $this->title->getPrefixedText();
if ( $this->oldid ) {
// Always show a link to the diff which triggered the mail. See bug 32210.
$keys['$NEWPAGE'] = "\n\n" . wfMessage( 'enotif_lastdiff',
- $this->title->getCanonicalUrl( 'diff=next&oldid=' . $this->oldid ) )
+ $this->title->getCanonicalURL( 'diff=next&oldid=' . $this->oldid ) )
->inContentLanguage()->text();
if ( !$wgEnotifImpersonal ) {
// For personal mail, also show a link to the diff of all changes
// since last visited.
$keys['$NEWPAGE'] .= "\n\n" . wfMessage( 'enotif_lastvisited',
- $this->title->getCanonicalUrl( 'diff=0&oldid=' . $this->oldid ) )
+ $this->title->getCanonicalURL( 'diff=0&oldid=' . $this->oldid ) )
->inContentLanguage()->text();
}
$keys['$OLDID'] = $this->oldid;
}
$keys['$PAGETITLE'] = $this->title->getPrefixedText();
- $keys['$PAGETITLE_URL'] = $this->title->getCanonicalUrl();
+ $keys['$PAGETITLE_URL'] = $this->title->getCanonicalURL();
$keys['$PAGEMINOREDIT'] = $this->minorEdit ?
wfMessage( 'minoredit' )->inContentLanguage()->text() : '';
- $keys['$UNWATCHURL'] = $this->title->getCanonicalUrl( 'action=unwatch' );
+ $keys['$UNWATCHURL'] = $this->title->getCanonicalURL( 'action=unwatch' );
if ( $this->editor->isAnon() ) {
# real anon (user:xxx.xxx.xxx.xxx)
} else {
$keys['$PAGEEDITOR'] = $wgEnotifUseRealName ? $this->editor->getRealName() : $this->editor->getName();
$emailPage = SpecialPage::getSafeTitleFor( 'Emailuser', $this->editor->getName() );
- $keys['$PAGEEDITOR_EMAIL'] = $emailPage->getCanonicalUrl();
+ $keys['$PAGEEDITOR_EMAIL'] = $emailPage->getCanonicalURL();
}
- $keys['$PAGEEDITOR_WIKI'] = $this->editor->getUserPage()->getCanonicalUrl();
+ $keys['$PAGEEDITOR_WIKI'] = $this->editor->getUserPage()->getCanonicalURL();
# Replace this after transforming the message, bug 35019
$postTransformKeys['$PAGESUMMARY'] = $this->summary == '' ? ' - ' : $this->summary;
if( $hash !== false ) {
$base = substr( $base, 0, $hash );
}
+
if( $base[0] == '/' ) {
- return $base;
+ // More than one slash will look like it is protocol relative
+ return preg_replace( '!^/+!', '/', $base );
} else {
// We may get paths with a host prepended; strip it.
- return preg_replace( '!^[^:]+://[^/]+/!', '/', $base );
+ return preg_replace( '!^[^:]+://[^/]+/+!', '/', $base );
}
}
}
/**
- * Get a URL based on $wgServer, like Title::getFullUrl() would produce
+ * Get a URL based on $wgServer, like Title::getFullURL() would produce
* when called locally on the wiki.
*
* @param string $page page name (must be normalized before calling this function!)
* for JavaScript source code.
* Illegal control characters are assumed not to be present.
*
+ * @deprecated since 1.21; use Xml::encodeJsVar() or Xml::encodeJsCall() instead
* @param string $string to escape
* @return String
*/
}
/**
- * Encode a variable of unknown type to JavaScript.
- * Arrays are converted to JS arrays, objects are converted to JS associative
- * arrays (objects). So cast your PHP associative arrays to objects before
- * passing them to here.
+ * Encode a variable of arbitrary type to JavaScript.
+ * If the value is an XmlJsCode object, pass through the object's value verbatim.
*
- * @param $value
+ * @note Only use this function for generating JavaScript code. If generating output
+ * for a proper JSON parser, just call FormatJson::encode() directly.
*
- * @return string
+ * @param mixed $value The value being encoded. Can be any type except a resource.
+ * @param bool $pretty If true, add non-significant whitespace to improve readability.
+ * @return string|bool: String if successful; false upon failure
*/
- public static function encodeJsVar( $value ) {
- if ( is_bool( $value ) ) {
- $s = $value ? 'true' : 'false';
- } elseif ( is_null( $value ) ) {
- $s = 'null';
- } elseif ( is_int( $value ) || is_float( $value ) ) {
- $s = strval( $value );
- } elseif ( is_array( $value ) && // Make sure it's not associative.
- array_keys( $value ) === range( 0, count( $value ) - 1 ) ||
- count( $value ) == 0
- ) {
- $s = '[';
- foreach ( $value as $elt ) {
- if ( $s != '[' ) {
- $s .= ',';
- }
- $s .= self::encodeJsVar( $elt );
- }
- $s .= ']';
- } elseif ( $value instanceof XmlJsCode ) {
- $s = $value->value;
- } elseif ( is_object( $value ) || is_array( $value ) ) {
- // Objects and associative arrays
- $s = '{';
- foreach ( (array)$value as $name => $elt ) {
- if ( $s != '{' ) {
- $s .= ',';
- }
-
- $s .= '"' . self::escapeJsString( $name ) . '":' .
- self::encodeJsVar( $elt );
- }
- $s .= '}';
- } else {
- $s = '"' . self::escapeJsString( $value ) . '"';
+ public static function encodeJsVar( $value, $pretty = false ) {
+ if ( $value instanceof XmlJsCode ) {
+ return $value->value;
}
- return $s;
+ return FormatJson::encode( $value, $pretty, FormatJson::UTF8_OK );
}
/**
* Create a call to a JavaScript function. The supplied arguments will be
* encoded using Xml::encodeJsVar().
*
+ * @since 1.17
* @param string $name The name of the function to call, or a JavaScript expression
* which evaluates to a function object which is called.
- * @param array $args of arguments to pass to the function.
- *
- * @since 1.17
- *
- * @return string
+ * @param array $args The arguments to pass to the function.
+ * @param bool $pretty If true, add non-significant whitespace to improve readability.
+ * @return string|bool: String if successful; false upon failure
*/
- public static function encodeJsCall( $name, $args ) {
+ public static function encodeJsCall( $name, $args, $pretty = false ) {
foreach ( $args as &$arg ) {
- $arg = Xml::encodeJsVar( $arg );
+ $arg = Xml::encodeJsVar( $arg, $pretty );
+ if ( $arg === false ) {
+ return false;
+ }
}
- return "$name(" . implode( ', ', $args ) . ");\n";
+ return "$name(" . ( $pretty
+ ? ( ' ' . implode( ', ', $args ) . ' ' )
+ : implode( ',', $args )
+ ) . ");";
}
/**
* Xml::encodeJsVar( new XmlJsCode( 'a + b' ) );
*
* Returns "a + b".
+ *
+ * @note As of 1.21, XmlJsCode objects cannot be nested inside objects or arrays. The sole
+ * exception is the $args argument to Xml::encodeJsCall() because Xml::encodeJsVar() is
+ * called for each individual element in that array.
+ *
* @since 1.17
*/
class XmlJsCode {
/**
* Get the last author with the last modification time
- * @param $article Article object
+ * @param Page $page
* @return String HTML
*/
- protected function getAuthor( Page $article ) {
- $user = User::newFromName( $article->getUserText(), false );
+ protected function getAuthor( Page $page ) {
+ $user = User::newFromName( $page->getUserText(), false );
- $timestamp = $article->getTimestamp();
+ $timestamp = $page->getTimestamp();
if ( $timestamp ) {
$lang = $this->getLanguage();
- $d = $lang->date( $article->getTimestamp(), true );
- $t = $lang->time( $article->getTimestamp(), true );
+ $d = $lang->date( $page->getTimestamp(), true );
+ $t = $lang->time( $page->getTimestamp(), true );
} else {
$d = '';
$t = '';
}
if ( $offset ) {
- $offsets = array( 'rev_timestamp $oper ' . $dbr->addQuotes( $dbr->timestamp( $offset ) ) );
+ $offsets = array( "rev_timestamp $oper " . $dbr->addQuotes( $dbr->timestamp( $offset ) ) );
} else {
$offsets = array();
}
$this->getTitle()->getPrefixedText() . ' - ' .
$this->msg( 'history-feed-title' )->inContentLanguage()->text(),
$this->msg( 'history-feed-description' )->inContentLanguage()->text(),
- $this->getTitle()->getFullUrl( 'action=history' )
+ $this->getTitle()->getFullURL( 'action=history' )
);
// Get a limit on number of feed entries. Provide a sane default
return new FeedItem(
$this->msg( 'nohistory' )->inContentLanguage()->text(),
$this->msg( 'history-feed-empty' )->inContentLanguage()->parseAsBlock(),
- $this->getTitle()->getFullUrl(),
+ $this->getTitle()->getFullURL(),
wfTimestamp( TS_MW ),
'',
- $this->getTitle()->getTalkPage()->getFullUrl()
+ $this->getTitle()->getTalkPage()->getFullURL()
);
}
return new FeedItem(
$title,
$text,
- $this->getTitle()->getFullUrl( 'diff=' . $rev->getId() . '&oldid=prev' ),
+ $this->getTitle()->getFullURL( 'diff=' . $rev->getId() . '&oldid=prev' ),
$rev->getTimestamp(),
$rev->getUserText(),
- $this->getTitle()->getTalkPage()->getFullUrl()
+ $this->getTitle()->getTalkPage()->getFullURL()
);
}
}
/**
* Creates a header that can be added to the output.
*
- * @param $header The header text.
+ * @param string $header The header text.
* @return string The HTML.
*/
protected function makeHeader( $header ) {
}
// Default sort key
- $sortKey = $title->getCategorySortKey();
+ $sortKey = $title->getCategorySortkey();
if ( !empty( $pageProperties['defaultsort'] ) ) {
$sortKey = $pageProperties['defaultsort'];
}
}
public function onSuccess() {
- $this->getOutput()->redirect( $this->getTitle()->getFullUrl( $this->redirectParams ) );
+ $this->getOutput()->redirect( $this->getTitle()->getFullURL( $this->redirectParams ) );
}
}
case 'next':
# output next revision, or nothing if there isn't one
if( $oldid ) {
- $oldid = $this->getTitle()->getNextRevisionId( $oldid );
+ $oldid = $this->getTitle()->getNextRevisionID( $oldid );
}
$oldid = $oldid ? $oldid : -1;
break;
# get the current revision so we can get the penultimate one
$oldid = $this->page->getLatest();
}
- $prev = $this->getTitle()->getPreviousRevisionId( $oldid );
+ $prev = $this->getTitle()->getPreviousRevisionID( $oldid );
$oldid = $prev ? $prev : -1;
break;
case 'cur':
class RawPage extends RawAction {
public $mOldId;
+ /**
+ * @param Page $page
+ * @param WebRequest|bool $request The WebRequest (default: false).
+ */
function __construct( Page $page, $request = false ) {
wfDeprecated( __CLASS__, '1.19' );
parent::__construct( $page );
if ( !$allowMultiple && count( $valuesList ) != 1 ) {
// Bug 33482 - Allow entries with | in them for non-multiple values
- if ( in_array( $value, $allowedValues ) ) {
+ if ( in_array( $value, $allowedValues, true ) ) {
return $value;
}
$params = $this->extractRequestParams();
- $result = array();
-
// Init session if necessary
if ( session_id() == '' ) {
wfSetupSession();
}
public function execute() {
- $prefix = $suffix = '';
-
$params = $this->extractRequestParams();
+ $json = FormatJson::encode(
+ $this->getResultData(),
+ $this->getIsHtml(),
+ $params['utf8'] ? FormatJson::ALL_OK : FormatJson::XMLMETA_OK
+ );
$callback = $params['callback'];
- if ( !is_null( $callback ) ) {
- $prefix = preg_replace( "/[^][.\\'\\\"_A-Za-z0-9]/", '', $callback ) . '(';
- $suffix = ')';
+ if ( $callback !== null ) {
+ $callback = preg_replace( "/[^][.\\'\\\"_A-Za-z0-9]/", '', $callback );
+ $this->printText( "$callback($json)" );
+ } else {
+ $this->printText( $json );
}
- $this->printText(
- $prefix .
- FormatJson::encode( $this->getResultData(), $this->getIsHtml() ) .
- $suffix
- );
}
public function getAllowedParams() {
return array(
- 'callback' => null,
+ 'callback' => null,
+ 'utf8' => false,
);
}
public function getParamDescription() {
return array(
'callback' => 'If specified, wraps the output into a given function call. For safety, all user-specific data will be restricted.',
+ 'utf8' => 'If specified, encodes most (but not all) non-ASCII characters as UTF-8 instead of replacing them with hexadecimal escape sequences.',
);
}
*/
class ApiImageRotate extends ApiBase {
-
private $mPageSet = null;
public function __construct( $main, $action ) {
}
}
-
public function execute() {
$params = $this->extractRequestParams();
$rotation = $params['rotation'];
- $user = $this->getUser();
$pageSet = $this->getPageSet();
$pageSet->execute();
- $result = array();
$result = array();
self::addValues( $result, $pageSet->getInvalidTitles(), 'invalid', 'title' );
"rotation" => $rotation
) );
if ( !$err ) {
- $comment = wfMessage( 'rotate-comment' )->numParams( $rotation )->text();
+ $comment = wfMessage(
+ 'rotate-comment'
+ )->numParams( $rotation )->inContentLanguage()->text();
$status = $file->upload( $dstPath,
$comment, $comment, 0, false, false, $this->getUser() );
if ( $status->isGood() ) {
/**
* Checks that the user has permissions to perform rotations.
- * @param $user User The user to check.
+ * @param User $user The user to check
+ * @param Title $title
* @return string|null Permission error message, or null if there is no error
*/
protected function checkPermissions( $user, $title ) {
}
public function getAllowedParams( $flags = 0 ) {
- $pageSet = $this->getPageSet();
$result = array(
'rotation' => array(
ApiBase::PARAM_TYPE => array( '90', '180', '270' ),
<?php
/**
- *
- *
* Created on Oct 13, 2006
*
* Copyright © 2006 Yuri Astrakhan "<Firstname><Lastname>@gmail.com"
*/
class ApiOpenSearch extends ApiBase {
+ /**
+ * Override built-in handling of format parameter.
+ * Only JSON is supported.
+ *
+ * @return ApiFormatBase
+ */
public function getCustomPrinter() {
- return $this->getMain()->createPrinterByName( 'json' );
+ $params = $this->extractRequestParams();
+ $format = $params['format'];
+ $allowed = array( 'json', 'jsonfm' );
+ if ( in_array( $format, $allowed ) ) {
+ return $this->getMain()->createPrinterByName( $format );
+ }
+ return $this->getMain()->createPrinterByName( $allowed[0] );
}
public function execute() {
ApiBase::PARAM_ISMULTI => true
),
'suggest' => false,
+ 'format' => array(
+ ApiBase::PARAM_DFLT => 'json',
+ ApiBase::PARAM_TYPE => array( 'json', 'jsonfm' ),
+ )
);
}
'limit' => 'Maximum amount of results to return',
'namespace' => 'Namespaces to search',
'suggest' => 'Do nothing if $wgEnableOpenSearchSuggest is false',
+ 'format' => 'The format of the output',
);
}
private $mFakePageId = -1;
private $mCacheMode = 'public';
private $mRequestedPageFields = array();
+ /**
+ * @var int
+ */
private $mDefaultNamespace = NS_MAIN;
/**
$modules = $allModules;
$tmp = $completeModules;
$wasPosted = $this->getRequest()->wasPosted();
- $main = $this->getMain();
/** @var $module ApiQueryBase */
foreach ( $allModules as $moduleName => $module ) {
ApiQueryBase::addTitleInfo( $vals, $title );
$vals['special'] = '';
if ( $title->isSpecialPage() &&
- !SpecialPageFactory::exists( $title->getDbKey() ) ) {
+ !SpecialPageFactory::exists( $title->getDBkey() ) ) {
$vals['missing'] = '';
} elseif ( $title->getNamespace() == NS_MEDIA &&
!wfFindFile( $title ) ) {
if ( trim( $key ) == '' ) {
return '';
}
- $t = Title::newFromDbKey( $key );
+ $t = Title::newFromDBkey( $key );
// This really shouldn't happen but we gotta check anyway
if ( !$t ) {
$this->dieUsageMsg( array( 'invalidtitle', $key ) );
/**
* @param $resultPageSet ApiPageSet
- * @return
*/
private function run( $resultPageSet = null ) {
if ( $this->getPageSet()->getGoodTitleCount() == 0 ) {
}
/**
- * @param $resultPageSet ApiPageSet
- * @return
+ * @param ApiPageSet $resultPageSet
*/
private function run( $resultPageSet = null ) {
$params = $this->extractRequestParams();
* Returns the descriptions for the properties provided by getPropertyNames()
*
* @param array $filter List of properties to filter out
- *
+ * @param string $modulePrefix
* @return array
*/
public static function getPropertyDescriptions( $filter = array(), $modulePrefix = '' ) {
$timestamp = $this->getDB()->addQuotes( wfTimestamp( TS_MW, $cont[0] ) );
$id = intval( $cont[1] );
- $op = $params['dir'] == 'descending' ? '<' : '>';
+ $op = $params['dir'] === 'older' ? '<' : '>';
$this->addWhere(
"rc_timestamp $op $timestamp OR " .
"(rc_timestamp = $timestamp AND " .
- "rc_id <= $id)"
+ "rc_id $op= $id)"
);
}
+ $order = $params['dir'] === 'older' ? 'DESC' : 'ASC';
+ $this->addOption( 'ORDER BY', array(
+ "rc_timestamp $order",
+ "rc_id $order",
+ ) );
$this->addWhereFld( 'rc_namespace', $params['namespace'] );
$this->addWhereFld( 'rc_deleted', 0 );
$data = array();
$mainPage = Title::newMainPage();
$data['mainpage'] = $mainPage->getPrefixedText();
- $data['base'] = wfExpandUrl( $mainPage->getFullUrl(), PROTO_CURRENT );
+ $data['base'] = wfExpandUrl( $mainPage->getFullURL(), PROTO_CURRENT );
$data['sitename'] = $GLOBALS['wgSitename'];
$data['generator'] = "MediaWiki {$GLOBALS['wgVersion']}";
$data['phpversion'] = phpversion();
$service = array( 'apis' => $this->formatRsdApiList() );
ApiResult::setContent( $service, 'MediaWiki', 'engineName' );
ApiResult::setContent( $service, 'https://www.mediawiki.org/', 'engineLink' );
- ApiResult::setContent( $service, Title::newMainPage()->getCanonicalUrl(), 'homePageLink' );
+ ApiResult::setContent( $service, Title::newMainPage()->getCanonicalURL(), 'homePageLink' );
$result->setIndexedTagName( $service['apis'], 'api' );
$verification = $this->mUpload->verifyUpload();
if ( $verification['status'] === UploadBase::OK ) {
return;
- } else {
- return $this->checkVerification( $verification );
}
+
+ $this->checkVerification( $verification );
}
/**
protected function checkVerification( array $verification ) {
global $wgFileExtensions;
- // TODO: Move them to ApiBase's message map
+ // @todo Move them to ApiBase's message map
switch( $verification['status'] ) {
// Recoverable errors
case UploadBase::MIN_LENGTH_PARTNAME:
}
/**
- * Get a message from either the content language or the user language. The fallback
- * language order is the users language fallback union the content language fallback.
- * This list is then applied to find keys in the following order
- * 1) MediaWiki:$key/$langcode (for every language except the content language where
- * we look at MediaWiki:$key)
- * 2) Built-in messages via the l10n cache which is also in fallback order
+ * Get a message from either the content language or the user language.
*
- * @param string $key the message cache key
- * @param $useDB Boolean: If true will look for the message in the DB, false only
- * get the message from the DB, false to use only the compiled l10n cache.
- * @param bool|string|object $langcode Code of the language to get the message for.
- * - If string and a valid code, will create a standard language object
- * - If string but not a valid code, will create a basic language object
- * - If boolean and false, create object from the current users language
- * - If boolean and true, create object from the wikis content language
- * - If language object, use it as given
+ * @param $key String: the message cache key
+ * @param $useDB Boolean: get the message from the DB, false to use only
+ * the localisation
+ * @param bool|string $langcode Code of the language to get the message for, if
+ * it is a valid code create a language for that language,
+ * if it is a string but not a valid code then make a basic
+ * language object, if it is a false boolean then use the
+ * current users language (as a fallback for the old
+ * parameter functionality), or if it is a true boolean
+ * then use the wikis content language (also as a
+ * fallback).
* @param $isFullKey Boolean: specifies whether $key is a two part key
* "msg/lang".
*
* @throws MWException
- * @return string|bool False if the message doesn't exist, otherwise the message
+ * @return string|bool
*/
function get( $key, $useDB = true, $langcode = true, $isFullKey = false ) {
global $wgLanguageCode, $wgContLang;
- wfProfileIn( __METHOD__ );
-
if ( is_int( $key ) ) {
// "Non-string key given" exception sometimes happens for numerical strings that become ints somewhere on their way here
$key = strval( $key );
}
if ( !is_string( $key ) ) {
- wfProfileOut( __METHOD__ );
throw new MWException( 'Non-string key given' );
}
if ( strval( $key ) === '' ) {
# Shortcut: the empty key is always missing
- wfProfileOut( __METHOD__ );
return false;
}
-
- # Obtain the initial language object
- if ( $isFullKey ) {
- $keyParts = explode( '/', $key );
- if ( count( $keyParts ) < 2 ) {
- throw new MWException( "Message key '$key' does not appear to be a full key." );
- }
-
- $langcode = array_pop( $keyParts );
- $key = implode( '/', $keyParts );
- }
-
- # Obtain a language object for the requested language from the passed language code
- # Note that the language code could in fact be a language object already but we assume
- # it's a string further below.
- $requestedLangObj = wfGetLangObj( $langcode );
- if ( !$requestedLangObj ) {
- wfProfileOut( __METHOD__ );
+ $lang = wfGetLangObj( $langcode );
+ if ( !$lang ) {
throw new MWException( "Bad lang code $langcode given" );
}
- $langcode = $requestedLangObj->getCode();
+
+ $langcode = $lang->getCode();
+
+ $message = false;
# Normalise title-case input (with some inlining)
$lckey = str_replace( ' ', '_', $key );
$uckey = $wgContLang->ucfirst( $lckey );
}
- # Loop through each language in the fallback list until we find something useful
- $message = false;
-
# Try the MediaWiki namespace
- if ( !$this->mDisable && $useDB ) {
- $fallbackChain = Language::getFallbacksIncludingSiteLanguage( $langcode );
- array_unshift( $fallbackChain, $langcode );
-
- foreach ( $fallbackChain as $langcode ) {
- if ( $langcode === $wgLanguageCode ) {
- # Messages created in the content language will not have the /lang extension
- $message = $this->getMsgFromNamespace( $uckey, $langcode );
- } else {
- $message = $this->getMsgFromNamespace( "$uckey/$langcode", $langcode );
- }
-
- if ( $message !== false ) {
- break;
- }
+ if( !$this->mDisable && $useDB ) {
+ $title = $uckey;
+ if( !$isFullKey && ( $langcode != $wgLanguageCode ) ) {
+ $title .= '/' . $langcode;
}
+ $message = $this->getMsgFromNamespace( $title, $langcode );
}
# Try the array in the language object
if ( $message === false ) {
- $message = $requestedLangObj->getMessage( $lckey );
- if ( is_null ( $message ) ) {
+ $message = $lang->getMessage( $lckey );
+ if ( is_null( $message ) ) {
$message = false;
}
}
- # If we still have no message, maybe the key was in fact a full key so try that
+ # Try the array of another language
if( $message === false ) {
$parts = explode( '/', $lckey );
# We may get calls for things that are http-urls from sidebar
}
}
+ # Is this a custom message? Try the default language in the db...
+ if( ( $message === false || $message === '-' ) &&
+ !$this->mDisable && $useDB &&
+ !$isFullKey && ( $langcode != $wgLanguageCode ) ) {
+ $message = $this->getMsgFromNamespace( $uckey, $wgLanguageCode );
+ }
+
# Final fallback
if( $message === false ) {
- wfProfileOut( __METHOD__ );
return false;
}
' ' => "\xc2\xa0",
) );
- wfProfileOut( __METHOD__ );
return $message;
}
* Get a message from the MediaWiki namespace, with caching. The key must
* first be converted to two-part lang/msg form if necessary.
*
+ * Unlike self::get(), this function doesn't resolve fallback chains, and
+ * some callers require this behavior. LanguageConverter::parseCachedTable()
+ * and self::get() are some examples in core.
+ *
* @param string $title Message cache key with initial uppercase letter.
* @param string $code code denoting the language to try.
*
: false; // user does not exist?
}
+ /**
+ * Get the name of a user or return $ip if the user ID is 0
+ *
+ * @param integer $userId
+ * @param string $ip
+ * @since 1.21
+ */
+ public function getUserName( $userId, $ip ) {
+ return $userId > 0 ? $this->getProp( $userId, 'name' ) : $ip;
+ }
+
/**
* Preloads user names for given list of users.
* @param array $userIds List of user IDs
}
/**
- * This must be called after nextSequenceVal
- * @return null
+ * Return the result of the last call to nextSequenceValue();
+ * This must be called after nextSequenceValue().
+ *
+ * @return integer|null
*/
function insertId() {
return $this->mInsertId;
}
if ( !$this->mOldRev->isDeleted( Revision::DELETED_TEXT ) && !$this->mNewRev->isDeleted( Revision::DELETED_TEXT ) ) {
$undoLink = Html::element( 'a', array(
- 'href' => $this->mNewPage->getLocalUrl( array(
+ 'href' => $this->mNewPage->getLocalURL( array(
'action' => 'edit',
'undoafter' => $this->mOldid,
'undo' => $this->mNewid ) ),
array( $msg ) );
} else {
# Give explanation and add a link to view the diff...
- $link = $this->getTitle()->getFullUrl( $this->getRequest()->appendQueryValue( 'unhide', '1', true ) );
+ $link = $this->getTitle()->getFullURL( $this->getRequest()->appendQueryValue( 'unhide', '1', true ) );
$msg = $suppressed ? 'rev-suppressed-unhide-diff' : 'rev-deleted-unhide-diff';
$out->wrapWikiMsg( "<div id='mw-$msg' class='mw-warning plainlinks'>\n$1\n</div>\n", array( $msg, $link ) );
}
* same contents, then do nothing to the destination file
* instead of giving an error. This does not compare headers.
* This option is ignored if 'overwrite' is already provided.
- * - headers : If supplied, the backend will return these headers when
- * GETs/HEADs of the destination file are made. Header values
- * should be smaller than 256 bytes, often options or numbers.
- * Content-Disposition headers can be longer, though the system
- * might ignore or truncate ones that are too long to store.
- * Existing headers will remain, but these will replace any
- * conflicting previous headers, and headers will be removed
- * if they are set to an empty string.
+ * - headers : If supplied, the result of merging these headers with any
+ * existing source file headers (replacing conflicting ones)
+ * will be set as the destination file headers. Headers are
+ * deleted if their value is set to the empty string. When a
+ * file has headers they are included in responses to GET and
+ * HEAD requests to the backing store for that file.
+ * Header values should be no larger than 255 bytes, except for
+ * Content-Disposition. The system might ignore or truncate any
+ * headers that are too long to store (exact limits will vary).
* Backends that don't support metadata ignore this. (since 1.21)
*
* $opts is an associative of boolean flags, including:
* matches the expression and the request is not for a listing.
* Setting this to '*' effectively makes a container public.
* -".rlistings:<regex>" : Grants access if the request is from a referrer host that
- * matches the expression and the request for a listing.
+ * matches the expression and the request is for a listing.
*
* $writeGrps is a list of the possible criteria for a request to have
* access to write to a container. Each item is of the following format:
// XXX: Pass in the storage path even though we are not rendering anything
// and the path is supposed to be an FS path. This is due to getScalerType()
// getting called on the path and clobbering $thumb->getUrl() if it's false.
- $thumb = $handler->getTransform(
- $this, $thumbPath, $thumbUrl, $params );
+ $thumb = $handler->getTransform( $this, $thumbPath, $thumbUrl, $params );
$thumb->setStoragePath( $thumbPath );
break;
}
*/
static function newFromTitle( Title $title, $repo ) {
$data = $repo->fetchImageQuery( array(
- 'titles' => 'File:' . $title->getDBKey(),
+ 'titles' => 'File:' . $title->getDBkey(),
'iiprop' => self::getProps(),
'prop' => 'imageinfo',
'iimetadataversion' => MediaHandler::getMetadataVersion()
* @return String
*/
function getDescriptionUrl() {
- return $this->title->getLocalUrl();
+ return $this->title->getLocalURL();
}
/**
'config-logo-help' => "MediaWiki's default skin includes space for a 135x160 pixel logo above the sidebar menu.
Upload an image of the appropriate size, and enter the URL here.
+You can use \$wgStylePath or \$wgScriptPath if your logo is relative to those paths.
+
If you do not want a logo, leave this box blank.",
'config-instantcommons' => 'Enable Instant Commons',
'config-instantcommons-help' => '[//www.mediawiki.org/wiki/InstantCommons Instant Commons] is a feature that allows wikis to use images, sounds and other media found on the [//commons.wikimedia.org/ Wikimedia Commons] site.
'config-logo-help' => 'Die Standardoberfläche von MediaWiki verfügt links oberhalb der Seitenleiste über Platz für eine Logo mit den Maßen 135x160 Pixel.
Bitte ein Logo in entsprechender Größe hochladen und die zugehörige URL an dieser Stelle angeben.
+Du kannst $wgStylePath oder $wgScriptPath verwenden, falls dein Logo relativ zu diesen Pfaden ist.
+
Sofern kein Logo benötigt wird, kann dieses Datenfeld leer bleiben.',
'config-instantcommons' => '„InstantCommons“ aktivieren',
'config-instantcommons-help' => '[//www.mediawiki.org/wiki/InstantCommons InstantCommons] ist eine Funktion, die es Wikis ermöglicht, Bild-, Klang- und andere Mediendateien zu nutzen, die auf der Website [//commons.wikimedia.org/ Wikimedia Commons] verfügbar sind.
/** Spanish (español)
* @author Armando-Martin
+ * @author Ciencia Al Poder
* @author Crazymadlover
* @author Danke7
* @author Locos epraix
Para habilitar la carga de archivos, cambie el modo en el subdirectorio <code>images</code> bajo el directorio raíz de MediaWiki para que el servidor web pueda escribir en él.
A continuación, habilite esta opción.',
- 'config-upload-deleted' => '*Directório para los archivos eliminados:',
+ 'config-upload-deleted' => '*Directorio para los archivos eliminados:',
'config-upload-deleted-help' => 'Elige un directorio en el que guardar los archivos eliminados.
Lo ideal es una carpeta no accesible desde la red.',
'config-logo' => 'URL del logo :',
'config-logo-help' => 'La apariencia por defecto de MediaWiki incluye espacio para un logotipo de 135x160 píxeles encima del menú de la barra lateral.
Cargue una imagen de tamaño adecuado e introduzca la dirección URL aquí.
-Si no desea un logotipo, deje esta casilla en blanco.',
+Si no desea un logotipo, deje esta casilla en blanco.', # Fuzzy
'config-instantcommons' => 'Habilitar Instant Commons',
'config-instantcommons-help' => '[//www.mediawiki.org/wiki/InstantCommons Instant Commons] es una característica que permite que los wikis puedan utilizar imágenes, sonidos y otros archivos multimedia que se encuentran en el sitio [//commons.wikimedia.org/ Wikimedia Commons].
Para ello, MediaWiki requiere acceso a Internet.
'config-logo-help' => 'A aparencia de MediaWiki por defecto inclúe espazo para un logo de 135x160 píxeles por riba do menú lateral.
Cargue unha imaxe do tamaño axeitado e introduza o enderezo URL aquí.
-Se non quere un logo, deixe esta caixa en branco.',
+Se non quere un logo, deixe esta caixa en branco.', # Fuzzy
'config-instantcommons' => 'Activar Instant Commons',
'config-instantcommons-help' => '[//www.mediawiki.org/wiki/InstantCommons InstantCommons] é unha característica que permite aos wikis usar imaxes, sons e outros ficheiros multimedia atopados no sitio da [//commons.wikimedia.org/wiki/Portada_galega Wikimedia Commons].
Para facer isto, MediaWiki necesita acceso á internet.
'config-upload-deleted-help' => '削除されるファイルを保存するためのディレクトリを選択してください。
これがウェブからアクセスできないことが理想です。',
'config-logo' => 'ロゴ のURL:',
- 'config-logo-help' => 'MediaWikiの既定の外装では、サイドバー上部に135x160ピクセルのロゴ用の余白があります。
-適切なサイズの画像をアップロードして、そのURLをここに入力してください。
+ 'config-logo-help' => 'MediaWiki の既定の外装では、サイドバー上部に135x160ピクセルのロゴ用の余白があります。
+適切なサイズの画像をアップロードして、その URL をここに入力してください。
+
+ロゴが相対パスの場合は、$wgStylePath や $wgScriptPath を使用できます。
-ロゴが不要の場合は、このボックスを空白のままにしてください。',
+ロゴが不要の場合は、この欄を空白のままにしてください。',
'config-instantcommons' => 'Instant Commons 機能を有効にする',
'config-instantcommons-help' => '[//www.mediawiki.org/wiki/InstantCommons Instant Commons] は、[//commons.wikimedia.org/ ウィキメディア・コモンズ]のサイトにある画像、音声、その他のメディアをウィキ上で利用できるようにする機能です。
これを使用するには、MediaWiki がインターネットに接続できる必要があります。
'config-upload-deleted-help' => 'Одберете во која папка да се архивираат избришаните податотеки.
Најдобро би било ако таа не е достапна преку интернет.',
'config-logo' => 'URL за логото:',
- 'config-logo-help' => 'Матичното руво на МедијаВики има простор за лого од 135 x 160 пиксели над страничната лента.
-Подигнете слика со соодветна големина, и тука внесете ја URL-адресата.
+ 'config-logo-help' => 'Матичното руво на МедијаВики има простор за лого од 135x160 пиксели над страничната лента.
+
+Можете да употребите $wgStylePath или $wgScriptPath ако вашето лого е релативно на тие патеки.
Ако не сакате да имате лого, тогаш оставете го ова поле празно.',
'config-instantcommons' => 'Овозможи Instant Commons',
);
/** Low German (Plattdüütsch)
+ * @author Joachim Mos
*/
$messages['nds'] = array(
+ 'config-page-name' => 'Naam',
+ 'config-ns-generic' => 'Projekt',
+ 'config-admin-name' => 'Dien Naam:',
+ 'config-admin-password' => 'Passwoord:',
+ 'config-help' => 'Hülp',
'mainpagetext' => "'''De MediaWiki-Software is mit Spood installeert worrn.'''",
'mainpagedocfooter' => 'Kiek de [//meta.wikimedia.org/wiki/MediaWiki_localisation Dokumentatschoon för dat Anpassen vun de Brukerböversiet]
-un dat [//meta.wikimedia.org/wiki/MediaWiki_User%27s_Guide Brukerhandbook] för Hülp to de Bruuk un Konfiguratschoon.',
+un dat [//meta.wikimedia.org/wiki/MediaWiki_User%27s_Guide Brukerhandbook] för Hülp to de Bruuk un Konfiguratschoon.', # Fuzzy
);
/** Nedersaksisch (Nedersaksisch)
'config-logo-help' => 'Het standaarduiterlijk van MediaWiki bevat ruimte voor een logo van 135x160 pixels boven het menu.
Upload een afbeelding met de juiste afmetingen en voer de URL hier in.
-Als u geen logo wilt gebruiken, kunt u dit veld leeg laten.',
+Als u geen logo wilt gebruiken, kunt u dit veld leeg laten.', # Fuzzy
'config-instantcommons' => 'Instant Commons inschakelen',
'config-instantcommons-help' => '[//www.mediawiki.org/wiki/InstantCommons Instant Commons] is functie die het mogelijk maakt om afbeeldingen, geluidsbestanden en andere mediabestanden te gebruiken van de website [//commons.wikimedia.org/ Wikimedia Commons].
Hiervoor heeft MediaWiki toegang nodig tot Internet.
'wgRightsText', 'wgMainCacheType', 'wgEnableUploads',
'wgMainCacheType', '_MemCachedServers', 'wgDBserver', 'wgDBuser',
'wgDBpassword', 'wgUseInstantCommons', 'wgUpgradeKey', 'wgDefaultSkin',
- 'wgMetaNamespace', 'wgResourceLoaderMaxQueryLength'
+ 'wgMetaNamespace', 'wgResourceLoaderMaxQueryLength', 'wgLogo',
),
$db->getGlobalNames()
);
- $unescaped = array( 'wgRightsIcon' );
+ $unescaped = array( 'wgRightsIcon', 'wgLogo' );
$boolItems = array(
'wgEnableEmail', 'wgEnableUserEmail', 'wgEnotifUserTalk',
'wgEnotifWatchlist', 'wgEmailAuthentication', 'wgEnableUploads', 'wgUseInstantCommons'
## The relative URL path to the logo. Make sure you change this from the default,
## or else you'll overwrite your logo when you upgrade!
-\$wgLogo = \"\$wgStylePath/common/images/wiki.png\";
+\$wgLogo = \"{$this->values['wgLogo']}\";
## UPO means: this is also a user preference option
\$wgUpgradeKey = \"{$this->values['wgUpgradeKey']}\";
## Default skin: you can change the default skin. Use the internal symbolic
-## names, ie 'standard', 'nostalgia', 'cologneblue', 'monobook', 'vector':
+## names, ie 'cologneblue', 'monobook', 'vector':
\$wgDefaultSkin = \"{$this->values['wgDefaultSkin']}\";
## For attaching licensing metadata to pages, and displaying an
array( 'modifyField', 'user_groups', 'ug_group', 'patch-ug_group-length-increase-255.sql' ),
array( 'modifyField', 'user_former_groups', 'ufg_group', 'patch-ufg_group-length-increase-255.sql' ),
array( 'addIndex', 'page_props', 'pp_propname_page', 'patch-page_props-propname-page-index.sql' ),
+ array( 'addIndex', 'image', 'img_media_mime', 'patch-img_media_mime-index.sql' ),
);
}
array( 'modifyField', 'user_groups', 'ug_group', 'patch-ug_group-length-increase-255.sql' ),
array( 'modifyField', 'user_former_groups', 'ufg_group', 'patch-ufg_group-length-increase-255.sql' ),
array( 'addIndex', 'page_props', 'pp_propname_page', 'patch-page_props-propname-page-index.sql' ),
+ array( 'addIndex', 'image', 'img_media_mime', 'patch-img_media_mime-index.sql' ),
);
}
$this->getVar( 'wgDeletedDirectory' )
)
);
+ // If we're using the default, let the user set it relative to $wgScriptPath
+ $curLogo = $this->getVar( 'wgLogo' );
+ $logoString = ( $curLogo == "/wiki/skins/common/images/wiki.png" ) ?
+ '$wgStylePath/common/images/wiki.png' : $curLogo;
$uploadwrapperStyle = $this->getVar( 'wgEnableUploads' ) ? '' : 'display: none';
$this->addHTML(
'</div>' .
$this->parent->getTextBox( array(
'var' => 'wgLogo',
+ 'value' => $logoString,
'label' => 'config-logo',
'attribs' => array( 'dir' => 'ltr' ),
'help' => $this->parent->getHelpBox( 'config-logo-help' )
* @deprecated 1.21
*/
public static function safeBatchInsert( $jobs ) {
- return JobQueueGroup::singleton()->push( $jobs, JobQueue::QoS_Atomic );
+ return JobQueueGroup::singleton()->push( $jobs, JobQueue::QOS_ATOMIC );
}
/**
'title' => $this->getTitle()->getDBkey(),
'params' => $this->getParams()
);
- // Identical jobs with different "root" jobs should count as duplicates
if ( is_array( $info['params'] ) ) {
+ // Identical jobs with different "root" jobs should count as duplicates
unset( $info['params']['rootJobSignature'] );
unset( $info['params']['rootJobTimestamp'] );
+ // Likewise for jobs with different delay times
+ unset( $info['params']['jobReleaseTimestamp'] );
}
return $info;
}
protected $maxTries; // integer; maximum number of times to try a job
protected $checkDelay; // boolean; allow delayed jobs
- const QoS_Atomic = 1; // integer; "all-or-nothing" job insertions
+ const QOS_ATOMIC = 1; // integer; "all-or-nothing" job insertions
+ const QoS_Atomic = 1; // integer; "all-or-nothing" job insertions (b/c)
const ROOTJOB_TTL = 2419200; // integer; seconds to remember root jobs (28 days)
return 0; // not implemented
}
+ /**
+ * Get the number of acquired jobs that can no longer be attempted.
+ * 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
+ */
+ final public function getAbandonedCount() {
+ wfProfileIn( __METHOD__ );
+ $res = $this->doGetAbandonedCount();
+ wfProfileOut( __METHOD__ );
+ return $res;
+ }
+
+ /**
+ * @see JobQueue::getAbandonedCount()
+ * @return integer
+ */
+ protected function doGetAbandonedCount() {
+ return 0; // not implemented
+ }
+
/**
* Push a single jobs into the queue.
* This does not require $wgJobClasses to be set for the given job type.
* Outside callers should use JobQueueGroup::push() instead of this function.
*
* @param $jobs Job|Array
- * @param $flags integer Bitfield (supports JobQueue::QoS_Atomic)
+ * @param $flags integer Bitfield (supports JobQueue::QOS_ATOMIC)
* @return bool Returns false on failure
* @throws MWException
*/
* Outside callers should use JobQueueGroup::push() instead of this function.
*
* @param array $jobs List of Jobs
- * @param $flags integer Bitfield (supports JobQueue::QoS_Atomic)
+ * @param $flags integer Bitfield (supports JobQueue::QOS_ATOMIC)
* @return bool Returns false on failure
* @throws MWException
*/
*/
abstract protected function doGetAllReadyWikiQueues();
+ /**
+ * Purge all of the aggregator information
+ *
+ * @return bool Success
+ */
+ final public function purge() {
+ wfProfileIn( __METHOD__ );
+ $res = $this->doPurge();
+ wfProfileOut( __METHOD__ );
+ return $res;
+ }
+
+ /**
+ * @see JobQueueAggregator::purge()
+ */
+ abstract protected function doPurge();
+
/**
* Get all databases that have a pending job.
* This poll all the queues and is this expensive.
: array(); // cache is both empty and locked
}
+ /**
+ * @see JobQueueAggregator::doPurge()
+ */
+ protected function doPurge() {
+ return $this->cache->delete( $this->getReadyQueueCacheKey() );
+ }
+
/**
* @return string
*/
}
}
+ /**
+ * @see JobQueueAggregator::doPurge()
+ */
+ protected function doPurge() {
+ $conn = $this->getConnection();
+ if ( !$conn ) {
+ return false;
+ }
+ try {
+ $conn->delete( $this->getReadyQueueKey() );
+ } catch ( RedisException $e ) {
+ $this->handleException( $conn, $e );
+ return false;
+ }
+ return true;
+ }
+
/**
* Get a connection to the server that handles all sub-queues for this queue
*
const MAX_JOB_RANDOM = 2147483647; // integer; 2^31 - 1, used for job_random
const MAX_OFFSET = 255; // integer; maximum number of rows to skip
+ /** @var BagOStuff */
+ protected $cache;
+
protected $cluster = false; // string; name of an external DB cluster
/**
* @param $params array
*/
protected function __construct( array $params ) {
+ global $wgMemc;
+
parent::__construct( $params );
+
$this->cluster = isset( $params['cluster'] ) ? $params['cluster'] : false;
+ // Make sure that we don't use the SQL cache, which would be harmful
+ $this->cache = ( $wgMemc instanceof SqlBagOStuff ) ? new EmptyBagOStuff() : $wgMemc;
}
protected function supportedOrders() {
* @return bool
*/
protected function doIsEmpty() {
- global $wgMemc;
-
$key = $this->getCacheKey( 'empty' );
- $isEmpty = $wgMemc->get( $key );
+ $isEmpty = $this->cache->get( $key );
if ( $isEmpty === 'true' ) {
return true;
} elseif ( $isEmpty === 'false' ) {
$found = $dbr->selectField( // unclaimed job
'job', '1', array( 'job_cmd' => $this->type, 'job_token' => '' ), __METHOD__
);
- $wgMemc->add( $key, $found ? 'false' : 'true', self::CACHE_TTL_LONG );
+ $this->cache->add( $key, $found ? 'false' : 'true', self::CACHE_TTL_LONG );
return !$found;
}
* @return integer
*/
protected function doGetSize() {
- global $wgMemc;
-
$key = $this->getCacheKey( 'size' );
- $size = $wgMemc->get( $key );
+ $size = $this->cache->get( $key );
if ( is_int( $size ) ) {
return $size;
}
array( 'job_cmd' => $this->type, 'job_token' => '' ),
__METHOD__
);
- $wgMemc->set( $key, $size, self::CACHE_TTL_SHORT );
+ $this->cache->set( $key, $size, self::CACHE_TTL_SHORT );
return $size;
}
* @return integer
*/
protected function doGetAcquiredCount() {
+ if ( $this->claimTTL <= 0 ) {
+ return 0; // no acknowledgements
+ }
+
+ $key = $this->getCacheKey( 'acquiredcount' );
+
+ $count = $this->cache->get( $key );
+ if ( is_int( $count ) ) {
+ return $count;
+ }
+
+ list( $dbr, $scope ) = $this->getSlaveDB();
+ $count = (int)$dbr->selectField( 'job', 'COUNT(*)',
+ array( 'job_cmd' => $this->type, "job_token != {$dbr->addQuotes( '' )}" ),
+ __METHOD__
+ );
+ $this->cache->set( $key, $count, self::CACHE_TTL_SHORT );
+
+ return $count;
+ }
+
+ /**
+ * @see JobQueue::doGetAbandonedCount()
+ * @return integer
+ * @throws MWException
+ */
+ protected function doGetAbandonedCount() {
global $wgMemc;
if ( $this->claimTTL <= 0 ) {
return 0; // no acknowledgements
}
- $key = $this->getCacheKey( 'acquiredcount' );
+ $key = $this->getCacheKey( 'abandonedcount' );
$count = $wgMemc->get( $key );
if ( is_int( $count ) ) {
list( $dbr, $scope ) = $this->getSlaveDB();
$count = (int)$dbr->selectField( 'job', 'COUNT(*)',
- array( 'job_cmd' => $this->type, "job_token != {$dbr->addQuotes( '' )}" ),
+ array(
+ 'job_cmd' => $this->type,
+ "job_token != {$dbr->addQuotes( '' )}",
+ "job_attempts >= " . $dbr->addQuotes( $this->maxTries )
+ ),
__METHOD__
);
$wgMemc->set( $key, $count, self::CACHE_TTL_SHORT );
}
$key = $this->getCacheKey( 'empty' );
- $atomic = ( $flags & self::QoS_Atomic );
+ $atomic = ( $flags & self::QOS_ATOMIC );
+ $cache = $this->cache;
$dbw->onTransactionIdle(
- function() use ( $dbw, $rowSet, $rowList, $atomic, $key, $scope
+ function() use ( $dbw, $cache, $rowSet, $rowList, $atomic, $key, $scope
) {
- global $wgMemc;
-
if ( $atomic ) {
$dbw->begin( __METHOD__ ); // wrap all the job additions in one transaction
}
$dbw->commit( __METHOD__ );
}
- $wgMemc->set( $key, 'false', JobQueueDB::CACHE_TTL_LONG );
+ $cache->set( $key, 'false', JobQueueDB::CACHE_TTL_LONG );
} );
}
* @return Job|bool
*/
protected function doPop() {
- global $wgMemc;
-
- if ( $wgMemc->get( $this->getCacheKey( 'empty' ) ) === 'true' ) {
+ if ( $this->cache->get( $this->getCacheKey( 'empty' ) ) === 'true' ) {
return false; // queue is empty
}
}
// Check if we found a row to reserve...
if ( !$row ) {
- $wgMemc->set( $this->getCacheKey( 'empty' ), 'true', self::CACHE_TTL_LONG );
+ $this->cache->set( $this->getCacheKey( 'empty' ), 'true', self::CACHE_TTL_LONG );
break; // nothing to do
}
wfIncrStats( 'job-pop' );
* @return Row|false
*/
protected function claimRandom( $uuid, $rand, $gte ) {
- global $wgMemc;
-
list( $dbw, $scope ) = $this->getMasterDB();
// Check cache to see if the queue has <= OFFSET items
- $tinyQueue = $wgMemc->get( $this->getCacheKey( 'small' ) );
+ $tinyQueue = $this->cache->get( $this->getCacheKey( 'small' ) );
$row = false; // the row acquired
$invertedDirection = false; // whether one job_random direction was already scanned
);
if ( !$row ) {
$tinyQueue = true; // we know the queue must have <= MAX_OFFSET rows
- $wgMemc->set( $this->getCacheKey( 'small' ), 1, 30 );
+ $this->cache->set( $this->getCacheKey( 'small' ), 1, 30 );
continue; // use job_random
}
}
* @return integer Number of jobs recycled/deleted
*/
public function recycleAndDeleteStaleJobs() {
- global $wgMemc;
-
$now = time();
list( $dbw, $scope ) = $this->getMasterDB();
$count = 0; // affected rows
);
$count += $dbw->affectedRows();
wfIncrStats( 'job-recycle', $dbw->affectedRows() );
- $wgMemc->set( $this->getCacheKey( 'empty' ), 'false', self::CACHE_TTL_LONG );
+ $this->cache->set( $this->getCacheKey( 'empty' ), 'false', self::CACHE_TTL_LONG );
}
}
// maintained. Having only the de-duplication registration succeed would cause
// jobs to become no-ops without any actual jobs that made them redundant.
list( $dbw, $scope ) = $this->getMasterDB();
- $dbw->onTransactionIdle( function() use ( $params, $key, $scope ) {
- global $wgMemc;
-
- $timestamp = $wgMemc->get( $key ); // current last timestamp of this job
+ $cache = $this->cache;
+ $dbw->onTransactionIdle( function() use ( $cache, $params, $key, $scope ) {
+ $timestamp = $cache->get( $key ); // current last timestamp of this job
if ( $timestamp && $timestamp >= $params['rootJobTimestamp'] ) {
return true; // a newer version of this root job was enqueued
}
// Update the timestamp of the last root job started at the location...
- return $wgMemc->set( $key, $params['rootJobTimestamp'], JobQueueDB::ROOTJOB_TTL );
+ return $cache->set( $key, $params['rootJobTimestamp'], JobQueueDB::ROOTJOB_TTL );
} );
return true;
* @return void
*/
protected function doFlushCaches() {
- global $wgMemc;
-
foreach ( array( 'empty', 'size', 'acquiredcount' ) as $type ) {
- $wgMemc->delete( $this->getCacheKey( $type ) );
+ $this->cache->delete( $this->getCacheKey( $type ) );
}
}
const TYPE_ANY = 2; // integer; any job
const USE_CACHE = 1; // integer; use process or persistent cache
+ const USE_PRIORITY = 2; // integer; respect deprioritization
const PROC_CACHE_TTL = 15; // integer; seconds
*/
public function pop( $qtype = self::TYPE_DEFAULT, $flags = 0 ) {
if ( is_string( $qtype ) ) { // specific job type
+ if ( ( $flags & self::USE_PRIORITY ) && $this->isQueueDeprioritized( $qtype ) ) {
+ return false; // back off
+ }
$job = $this->get( $qtype )->pop();
if ( !$job ) {
JobQueueAggregator::singleton()->notifyQueueEmpty( $this->wiki, $qtype );
shuffle( $types ); // avoid starvation
foreach ( $types as $type ) { // for each queue...
+ if ( ( $flags & self::USE_PRIORITY ) && $this->isQueueDeprioritized( $type ) ) {
+ continue; // back off
+ }
$job = $this->get( $type )->pop();
if ( $job ) { // found
return $job;
* @return bool
*/
public function isQueueDeprioritized( $type ) {
+ if ( $this->cache->has( 'isDeprioritized', $type, 5 ) ) {
+ return $this->cache->get( 'isDeprioritized', $type );
+ }
if ( $type === 'refreshLinks2' ) {
// Don't keep converting refreshLinks2 => refreshLinks jobs if the
// later jobs have not been done yet. This helps throttle queue spam.
- return !$this->get( 'refreshLinks' )->isEmpty();
+ $deprioritized = !$this->get( 'refreshLinks' )->isEmpty();
+ $this->cache->set( 'isDeprioritized', $type, $deprioritized );
+ return $deprioritized;
}
return false;
}
}
}
+ /**
+ * @see JobQueue::doGetAbandonedCount()
+ * @return integer
+ * @throws MWException
+ */
+ protected function doGetAbandonedCount() {
+ if ( $this->claimTTL <= 0 ) {
+ return 0; // no acknowledgements
+ }
+ $conn = $this->getConnection();
+ try {
+ return $conn->zSize( $this->getQueueKey( 'z-abandoned' ) );
+ } catch ( RedisException $e ) {
+ $this->throwRedisException( $this->server, $conn, $e );
+ }
+ }
+
/**
* @see JobQueue::doBatchPush()
* @param array $jobs
$conn = $this->getConnection();
try {
// Actually push the non-duplicate jobs into the queue...
- if ( $flags & self::QoS_Atomic ) {
+ if ( $flags & self::QOS_ATOMIC ) {
$batches = array( $items ); // all or nothing
} else {
$batches = array_chunk( $items, 500 ); // avoid tying up the server
local released,abandoned,pruned = 0,0,0
-- Get all non-dead jobs that have an expired claim on them.
-- The score for each item is the last claim timestamp (UNIX).
- local staleClaims = redis.call('zRangeByScore',KEYS[1],0,ARGV[1],'WITHSCORES')
- for id,timestamp in ipairs(staleClaims) do
+ local staleClaims = redis.call('zRangeByScore',KEYS[1],0,ARGV[1])
+ for k,id in ipairs(staleClaims) do
+ local timestamp = redis.call('zScore',KEYS[1],id)
local attempts = redis.call('hGet',KEYS[2],id)
if attempts < ARGV[3] then
-- Claim expired and retries left: re-enqueue the job
end
-- Get all of the dead jobs that have been marked as dead for too long.
-- The score for each item is the last claim timestamp (UNIX).
- local deadClaims = redis.call('zRangeByScore',KEYS[5],0,ARGV[2],'WITHSCORES')
- for id,timestamp in ipairs(deadClaims) do
+ local deadClaims = redis.call('zRangeByScore',KEYS[5],0,ARGV[2])
+ for k,id in ipairs(deadClaims) do
-- Stale and out of retries: remove any traces of the job
redis.call('zRem',KEYS[5],id)
redis.call('hDel',KEYS[2],id)
<?php
/**
- * Simple wrapper for json_encode and json_decode that falls back on Services_JSON class.
+ * Wrapper for json_encode and json_decode.
*
* 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
* @file
*/
-require_once __DIR__ . '/Services_JSON.php';
-
/**
* JSON formatter wrapper class
*/
class FormatJson {
+ /**
+ * Skip escaping most characters above U+007F for readability and compactness.
+ * This encoding option saves 3 to 8 bytes (uncompressed) for each such character;
+ * however, it could break compatibility with systems that incorrectly handle UTF-8.
+ *
+ * @since 1.21
+ */
+ const UTF8_OK = 1;
+
+ /**
+ * Skip escaping the characters '<', '>', and '&', which have special meanings in
+ * HTML and XML.
+ *
+ * @warning Do not use this option for JSON that could end up in inline scripts.
+ * - HTML5, §4.3.1.2 Restrictions for contents of script elements
+ * - XML 1.0 (5th Ed.), §2.4 Character Data and Markup
+ *
+ * @since 1.21
+ */
+ const XMLMETA_OK = 2;
+
+ /**
+ * Skip escaping as many characters as reasonably possible.
+ *
+ * @warning When generating inline script blocks, use FormatJson::UTF8_OK instead.
+ *
+ * @since 1.21
+ */
+ const ALL_OK = 3;
+
+ /**
+ * Characters problematic in JavaScript and their corresponding escape sequences.
+ *
+ * @note These are listed in ECMA-262 (5.1 Ed.), §7.3 Line Terminators along with U+000A (LF)
+ * and U+000D (CR). However, PHP already escapes LF and CR according to RFC 4627.
+ */
+ private static $badChars = array(
+ "\xe2\x80\xa8" => '\u2028', // LINE SEPARATOR
+ "\xe2\x80\xa9" => '\u2029', // PARAGRAPH SEPARATOR
+ );
+
/**
* Returns the JSON representation of a value.
*
- * @param $value Mixed: the value being encoded. Can be any type except a resource.
- * @param $pretty Boolean: If true, adds non-significant whitespace to improve readability.
+ * @note Empty arrays are encoded as numeric arrays, not as objects, so cast any associative
+ * array that might be empty to an object before encoding it.
*
- * @return string
+ * @note In pre-1.21 versions of MediaWiki, using this function for generating inline script
+ * blocks may result in an XSS vulnerability, and quite likely will in XML documents
+ * (cf. FormatJson::XMLMETA_OK). Use Xml::encodeJsVar() instead in such cases.
+ *
+ * @param mixed $value The value to encode. Can be any type except a resource.
+ * @param bool $pretty If true, add non-significant whitespace to improve readability.
+ * @param int $escaping Bitfield consisting of _OK class constants
+ * @return string|bool: String if successful; false upon failure
*/
- public static function encode( $value, $pretty = false ) {
- if ( !function_exists( 'json_encode' ) || ( $pretty && version_compare( PHP_VERSION, '5.4.0', '<' ) ) ) {
- $json = new Services_JSON();
- return $json->encode( $value, $pretty );
- } else {
- return json_encode( $value, $pretty ? JSON_PRETTY_PRINT : 0 );
+ public static function encode( $value, $pretty = false, $escaping = 0 ) {
+ if ( version_compare( PHP_VERSION, '5.4.0', '<' ) ) {
+ return self::encode53( $value, $pretty, $escaping );
}
+ return self::encode54( $value, $pretty, $escaping );
}
/**
* Decodes a JSON string.
*
- * @param string $value the json string being decoded.
- * @param $assoc Boolean: when true, returned objects will be converted into associative arrays.
+ * @param string $value The JSON string being decoded
+ * @param bool $assoc When true, returned objects will be converted into associative arrays.
*
- * @return Mixed: the value encoded in json in appropriate PHP type.
- * Values true, false and null (case-insensitive) are returned as true, false
- * and "&null;" respectively. "&null;" is returned if the json cannot be
+ * @return mixed: the value encoded in JSON in appropriate PHP type.
+ * Values `"true"`, `"false"`, and `"null"` (case-insensitive) are returned as `true`, `false`
+ * and `null` respectively. `null` is returned if the JSON cannot be
* decoded or if the encoded data is deeper than the recursion limit.
*/
public static function decode( $value, $assoc = false ) {
- if ( !function_exists( 'json_decode' ) ) {
- $json = $assoc ? new Services_JSON( SERVICES_JSON_LOOSE_TYPE ) :
- new Services_JSON();
- $jsonDec = $json->decode( $value );
- return $jsonDec;
- } else {
- return json_decode( $value, $assoc );
+ return json_decode( $value, $assoc );
+ }
+
+ /**
+ * JSON encoder wrapper for PHP >= 5.4, which supports useful encoding options.
+ *
+ * @param mixed $value
+ * @param bool $pretty
+ * @param int $escaping
+ * @return string|bool
+ */
+ private static function encode54( $value, $pretty, $escaping ) {
+ // PHP escapes '/' to prevent breaking out of inline script blocks using '</script>',
+ // which is hardly useful when '<' and '>' are escaped, and such escaping negatively
+ // impacts the human readability of URLs and similar strings.
+ $options = JSON_UNESCAPED_SLASHES;
+ $options |= $pretty ? JSON_PRETTY_PRINT : 0;
+ $options |= ( $escaping & self::UTF8_OK ) ? JSON_UNESCAPED_UNICODE : 0;
+ $options |= ( $escaping & self::XMLMETA_OK ) ? 0 : ( JSON_HEX_TAG | JSON_HEX_AMP );
+ $json = json_encode( $value, $options );
+ if ( $json === false ) {
+ return false;
}
+ return ( $escaping & self::UTF8_OK ) ? strtr( $json, self::$badChars ) : $json;
}
+ /**
+ * JSON encoder wrapper for PHP 5.3, which lacks native support for some encoding options.
+ * Therefore, the missing options are implemented here purely in PHP code.
+ *
+ * @param mixed $value
+ * @param bool $pretty
+ * @param int $escaping
+ * @return string|bool
+ */
+ private static function encode53( $value, $pretty, $escaping ) {
+ $options = ( $escaping & self::XMLMETA_OK ) ? 0 : ( JSON_HEX_TAG | JSON_HEX_AMP );
+ $json = json_encode( $value, $options );
+ if ( $json === false ) {
+ return false;
+ }
+ $json = str_replace( '\\/', '/', $json ); // emulate JSON_UNESCAPED_SLASHES
+ if ( $escaping & self::UTF8_OK ) {
+ // JSON hex escape sequences follow the format \uDDDD, where DDDD is four hex digits
+ // indicating the equivalent UTF-16 code unit's value. To most efficiently unescape
+ // them, we exploit the JSON extension's built-in decoder.
+ // * We escape the input a second time, so any such sequence becomes \\uDDDD.
+ // * To avoid interpreting escape sequences that were in the original input,
+ // each double-escaped backslash (\\\\) is replaced with \\\u005c.
+ // * We strip one of the backslashes from each of the escape sequences to unescape.
+ // * Then the JSON decoder can perform the actual unescaping.
+ $doubled = str_replace( "\\\\\\\\", "\\\\\\u005c", json_encode( $json ) );
+ $json = json_decode( preg_replace( "/\\\\\\\\u(?!00[0-7])/", "\\\\u", $doubled ) );
+ $json = strtr( $json, self::$badChars );
+ }
+ return $pretty ? self::prettyPrint( $json ) : $json;
+ }
+
+ /**
+ * Adds non-significant whitespace to an existing JSON representation of an object.
+ * Only needed for PHP < 5.4, which lacks the JSON_PRETTY_PRINT option.
+ *
+ * @param string $json
+ * @return string
+ */
+ private static function prettyPrint( $json ) {
+ $buf = '';
+ $indent = 0;
+ $json = strtr( $json, array( '\\\\' => '\\\\', '\"' => "\x01" ) );
+ for ( $i = 0, $n = strlen( $json ); $i < $n; $i += $skip ) {
+ $skip = 1;
+ switch ( $json[$i] ) {
+ case ':':
+ $buf .= ': ';
+ break;
+ case '[':
+ case '{':
+ $indent++; // falls through
+ case ',':
+ $buf .= $json[$i] . "\n" . str_repeat( ' ', $indent );
+ break;
+ case ']':
+ case '}':
+ $indent--;
+ $buf .= "\n" . str_repeat( ' ', $indent ) . $json[$i];
+ break;
+ case '"':
+ $skip = strcspn( $json, '"', $i + 1 ) + 2;
+ $buf .= substr( $json, $i, $skip );
+ break;
+ default:
+ $skip = strcspn( $json, ',]}"', $i + 1 ) + 1;
+ $buf .= substr( $json, $i, $skip );
+ }
+ }
+ return str_replace( "\x01", '\"', preg_replace( '/ +$/m', '', $buf ) );
+ }
}
+++ /dev/null
-<?php
-/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
-
-/**
-* Converts to and from JSON format.
-*
-* JSON (JavaScript Object Notation) is a lightweight data-interchange
-* format. It is easy for humans to read and write. It is easy for machines
-* to parse and generate. It is based on a subset of the JavaScript
-* Programming Language, Standard ECMA-262 3rd Edition - December 1999.
-* This feature can also be found in Python. JSON is a text format that is
-* completely language independent but uses conventions that are familiar
-* to programmers of the C-family of languages, including C, C++, C#, Java,
-* JavaScript, Perl, TCL, and many others. These properties make JSON an
-* ideal data-interchange language.
-*
-* This package provides a simple encoder and decoder for JSON notation. It
-* is intended for use with client-side Javascript applications that make
-* use of HTTPRequest to perform server communication functions - data can
-* be encoded into JSON notation for use in a client-side javascript, or
-* decoded from incoming Javascript requests. JSON format is native to
-* Javascript, and can be directly eval()'ed with no further parsing
-* overhead
-*
-* All strings should be in ASCII or UTF-8 format!
-*
-* LICENSE: Redistribution and use in source and binary forms, with or
-* without modification, are permitted provided that the following
-* conditions are met: Redistributions of source code must retain the
-* above copyright notice, this list of conditions and the following
-* disclaimer. Redistributions in binary form must reproduce the above
-* copyright notice, this list of conditions and the following disclaimer
-* in the documentation and/or other materials provided with the
-* distribution.
-*
-* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
-* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
-* NO EVENT SHALL CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
-* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
-* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
-* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
-* USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-* DAMAGE.
-*
-* @file
-* @ingroup API
-* @author Michal Migurski <mike-json@teczno.com>
-* @author Matt Knapp <mdknapp[at]gmail[dot]com>
-* @author Brett Stimmerman <brettstimmerman[at]gmail[dot]com>
-* @copyright 2005 Michal Migurski
-* @version CVS: $Id$
-* @license http://www.opensource.org/licenses/bsd-license.php
-* @see http://pear.php.net/pepr/pepr-proposal-show.php?id=198
-*/
-
-/**
-* Marker constant for Services_JSON::decode(), used to flag stack state
-*/
-define('SERVICES_JSON_SLICE', 1);
-
-/**
-* Marker constant for Services_JSON::decode(), used to flag stack state
-*/
-define('SERVICES_JSON_IN_STR', 2);
-
-/**
-* Marker constant for Services_JSON::decode(), used to flag stack state
-*/
-define('SERVICES_JSON_IN_ARR', 3);
-
-/**
-* Marker constant for Services_JSON::decode(), used to flag stack state
-*/
-define('SERVICES_JSON_IN_OBJ', 4);
-
-/**
-* Marker constant for Services_JSON::decode(), used to flag stack state
-*/
-define('SERVICES_JSON_IN_CMT', 5);
-
-/**
-* Behavior switch for Services_JSON::decode()
-*/
-define('SERVICES_JSON_LOOSE_TYPE', 16);
-
-/**
-* Behavior switch for Services_JSON::decode()
-*/
-define('SERVICES_JSON_SUPPRESS_ERRORS', 32);
-
-/**
- * Converts to and from JSON format.
- *
- * Brief example of use:
- *
- * <code>
- * // create a new instance of Services_JSON
- * $json = new Services_JSON();
- *
- * // convert a complex value to JSON notation, and send it to the browser
- * $value = array('foo', 'bar', array(1, 2, 'baz'), array(3, array(4)));
- * $output = $json->encode($value);
- *
- * print($output);
- * // prints: ["foo","bar",[1,2,"baz"],[3,[4]]]
- *
- * // accept incoming POST data, assumed to be in JSON notation
- * $input = file_get_contents('php://input', 1000000);
- * $value = $json->decode($input);
- * </code>
- *
- * @ingroup API
- */
-class Services_JSON
-{
- /**
- * constructs a new JSON instance
- *
- * @param $use Integer: object behavior flags; combine with boolean-OR
- *
- * possible values:
- * - SERVICES_JSON_LOOSE_TYPE: loose typing.
- * "{...}" syntax creates associative arrays
- * instead of objects in decode().
- * - SERVICES_JSON_SUPPRESS_ERRORS: error suppression.
- * Values which can't be encoded (e.g. resources)
- * appear as NULL instead of throwing errors.
- * By default, a deeply-nested resource will
- * bubble up with an error, so all return values
- * from encode() should be checked with isError()
- */
- function __construct($use = 0)
- {
- $this->use = $use;
- }
-
- private static $mHavePear = null;
- /**
- * Returns cached result of class_exists('pear'), to avoid calling AutoLoader numerous times
- * in cases when PEAR is not present.
- * @return boolean
- */
- private static function pearInstalled() {
- if ( self::$mHavePear === null ) {
- self::$mHavePear = class_exists( 'pear' );
- }
- return self::$mHavePear;
- }
-
- /**
- * convert a string from one UTF-16 char to one UTF-8 char
- *
- * Normally should be handled by mb_convert_encoding, but
- * provides a slower PHP-only method for installations
- * that lack the multibyte string extension.
- *
- * @param string $utf16 UTF-16 character
- * @return String: UTF-8 character
- * @access private
- */
- function utf162utf8($utf16)
- {
- // oh please oh please oh please oh please oh please
- if(function_exists('mb_convert_encoding')) {
- return mb_convert_encoding($utf16, 'UTF-8', 'UTF-16');
- }
-
- $bytes = (ord($utf16[0]) << 8) | ord($utf16[1]);
-
- switch(true) {
- case ((0x7F & $bytes) == $bytes):
- // this case should never be reached, because we are in ASCII range
- // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
- return chr(0x7F & $bytes);
-
- case (0x07FF & $bytes) == $bytes:
- // return a 2-byte UTF-8 character
- // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
- return chr(0xC0 | (($bytes >> 6) & 0x1F))
- . chr(0x80 | ($bytes & 0x3F));
-
- case (0xFC00 & $bytes) == 0xD800 && strlen($utf16) >= 4 && (0xFC & ord($utf16[2])) == 0xDC:
- // return a 4-byte UTF-8 character
- $char = ((($bytes & 0x03FF) << 10)
- | ((ord($utf16[2]) & 0x03) << 8)
- | ord($utf16[3]));
- $char += 0x10000;
- return chr(0xF0 | (($char >> 18) & 0x07))
- . chr(0x80 | (($char >> 12) & 0x3F))
- . chr(0x80 | (($char >> 6) & 0x3F))
- . chr(0x80 | ($char & 0x3F));
-
- case (0xFFFF & $bytes) == $bytes:
- // return a 3-byte UTF-8 character
- // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
- return chr(0xE0 | (($bytes >> 12) & 0x0F))
- . chr(0x80 | (($bytes >> 6) & 0x3F))
- . chr(0x80 | ($bytes & 0x3F));
- }
-
- // ignoring UTF-32 for now, sorry
- return '';
- }
-
- /**
- * convert a string from one UTF-8 char to one UTF-16 char
- *
- * Normally should be handled by mb_convert_encoding, but
- * provides a slower PHP-only method for installations
- * that lack the multibyte string extension.
- *
- * @param string $utf8 UTF-8 character
- * @return String: UTF-16 character
- * @access private
- */
- function utf82utf16($utf8)
- {
- // oh please oh please oh please oh please oh please
- if(function_exists('mb_convert_encoding')) {
- return mb_convert_encoding($utf8, 'UTF-16', 'UTF-8');
- }
-
- switch(strlen($utf8)) {
- case 1:
- // this case should never be reached, because we are in ASCII range
- // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
- return $utf8;
-
- case 2:
- // return a UTF-16 character from a 2-byte UTF-8 char
- // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
- return chr(0x07 & (ord($utf8[0]) >> 2))
- . chr((0xC0 & (ord($utf8[0]) << 6))
- | (0x3F & ord($utf8[1])));
-
- case 3:
- // return a UTF-16 character from a 3-byte UTF-8 char
- // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
- return chr((0xF0 & (ord($utf8[0]) << 4))
- | (0x0F & (ord($utf8[1]) >> 2)))
- . chr((0xC0 & (ord($utf8[1]) << 6))
- | (0x7F & ord($utf8[2])));
-
- case 4:
- // return a UTF-16 surrogate pair from a 4-byte UTF-8 char
- if(ord($utf8[0]) > 0xF4) return ''; # invalid
- $char = ((0x1C0000 & (ord($utf8[0]) << 18))
- | (0x03F000 & (ord($utf8[1]) << 12))
- | (0x000FC0 & (ord($utf8[2]) << 6))
- | (0x00003F & ord($utf8[3])));
- if($char > 0x10FFFF) return ''; # invalid
- $char -= 0x10000;
- return chr(0xD8 | (($char >> 18) & 0x03))
- . chr(($char >> 10) & 0xFF)
- . chr(0xDC | (($char >> 8) & 0x03))
- . chr($char & 0xFF);
- }
-
- // ignoring UTF-32 for now, sorry
- return '';
- }
-
- /**
- * encodes an arbitrary variable into JSON format
- *
- * @param $var Mixed: any number, boolean, string, array, or object to be encoded.
- * see argument 1 to Services_JSON() above for array-parsing behavior.
- * if var is a string, note that encode() always expects it
- * to be in ASCII or UTF-8 format!
- * @param $pretty Boolean: pretty-print output with indents and newlines
- *
- * @return mixed JSON string representation of input var or an error if a problem occurs
- * @access public
- */
- function encode($var, $pretty=false)
- {
- $this->indent = 0;
- $this->pretty = $pretty;
- $this->nameValSeparator = $pretty ? ': ' : ':';
- return $this->encode2($var);
- }
-
- /**
- * encodes an arbitrary variable into JSON format
- *
- * @param $var Mixed: any number, boolean, string, array, or object to be encoded.
- * see argument 1 to Services_JSON() above for array-parsing behavior.
- * if var is a string, note that encode() always expects it
- * to be in ASCII or UTF-8 format!
- *
- * @return mixed JSON string representation of input var or an error if a problem occurs
- * @access private
- */
- function encode2($var)
- {
- if ($this->pretty) {
- $close = "\n" . str_repeat("\t", $this->indent);
- $open = $close . "\t";
- $mid = ',' . $open;
- }
- else {
- $open = $close = '';
- $mid = ',';
- }
-
- switch (gettype($var)) {
- case 'boolean':
- return $var ? 'true' : 'false';
-
- case 'NULL':
- return 'null';
-
- case 'integer':
- return (int) $var;
-
- case 'double':
- case 'float':
- return (float) $var;
-
- case 'string':
- // STRINGS ARE EXPECTED TO BE IN ASCII OR UTF-8 FORMAT
- $ascii = '';
- $strlen_var = strlen($var);
-
- /*
- * Iterate over every character in the string,
- * escaping with a slash or encoding to UTF-8 where necessary
- */
- for ($c = 0; $c < $strlen_var; ++$c) {
-
- $ord_var_c = ord($var[$c]);
-
- switch (true) {
- case $ord_var_c == 0x08:
- $ascii .= '\b';
- break;
- case $ord_var_c == 0x09:
- $ascii .= '\t';
- break;
- case $ord_var_c == 0x0A:
- $ascii .= '\n';
- break;
- case $ord_var_c == 0x0C:
- $ascii .= '\f';
- break;
- case $ord_var_c == 0x0D:
- $ascii .= '\r';
- break;
-
- case $ord_var_c == 0x22:
- case $ord_var_c == 0x2F:
- case $ord_var_c == 0x5C:
- // double quote, slash, slosh
- $ascii .= '\\'.$var[$c];
- break;
-
- case (($ord_var_c >= 0x20) && ($ord_var_c <= 0x7F)):
- // characters U-00000000 - U-0000007F (same as ASCII)
- $ascii .= $var[$c];
- break;
-
- case (($ord_var_c & 0xE0) == 0xC0):
- // characters U-00000080 - U-000007FF, mask 110XXXXX
- // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
- $char = pack('C*', $ord_var_c, ord($var[$c + 1]));
- $c += 1;
- $utf16 = $this->utf82utf16($char);
- $ascii .= sprintf('\u%04s', bin2hex($utf16));
- break;
-
- case (($ord_var_c & 0xF0) == 0xE0):
- // characters U-00000800 - U-0000FFFF, mask 1110XXXX
- // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
- $char = pack('C*', $ord_var_c,
- ord($var[$c + 1]),
- ord($var[$c + 2]));
- $c += 2;
- $utf16 = $this->utf82utf16($char);
- $ascii .= sprintf('\u%04s', bin2hex($utf16));
- break;
-
- case (($ord_var_c & 0xF8) == 0xF0):
- // characters U-00010000 - U-001FFFFF, mask 11110XXX
- // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
- // These will always return a surrogate pair
- $char = pack('C*', $ord_var_c,
- ord($var[$c + 1]),
- ord($var[$c + 2]),
- ord($var[$c + 3]));
- $c += 3;
- $utf16 = $this->utf82utf16($char);
- if($utf16 == '') {
- $ascii .= '\ufffd';
- } else {
- $utf16 = str_split($utf16, 2);
- $ascii .= sprintf('\u%04s\u%04s', bin2hex($utf16[0]), bin2hex($utf16[1]));
- }
- break;
- }
- }
-
- return '"'.$ascii.'"';
-
- case 'array':
- /*
- * As per JSON spec if any array key is not an integer
- * we must treat the the whole array as an object. We
- * also try to catch a sparsely populated associative
- * array with numeric keys here because some JS engines
- * will create an array with empty indexes up to
- * max_index which can cause memory issues and because
- * the keys, which may be relevant, will be remapped
- * otherwise.
- *
- * As per the ECMA and JSON specification an object may
- * have any string as a property. Unfortunately due to
- * a hole in the ECMA specification if the key is a
- * ECMA reserved word or starts with a digit the
- * parameter is only accessible using ECMAScript's
- * bracket notation.
- */
-
- // treat as a JSON object
- if (is_array($var) && count($var) && (array_keys($var) !== range(0, count($var) - 1))) {
- $this->indent++;
- $properties = array_map(array($this, 'name_value'),
- array_keys($var),
- array_values($var));
- $this->indent--;
-
- foreach($properties as $property) {
- if($this->isError($property)) {
- return $property;
- }
- }
-
- return '{' . $open . join($mid, $properties) . $close . '}';
- }
-
- // treat it like a regular array
- $this->indent++;
- $elements = array_map(array($this, 'encode2'), $var);
- $this->indent--;
-
- foreach($elements as $element) {
- if($this->isError($element)) {
- return $element;
- }
- }
-
- return '[' . $open . join($mid, $elements) . $close . ']';
-
- case 'object':
- $vars = get_object_vars($var);
-
- $this->indent++;
- $properties = array_map(array($this, 'name_value'),
- array_keys($vars),
- array_values($vars));
- $this->indent--;
-
- foreach($properties as $property) {
- if($this->isError($property)) {
- return $property;
- }
- }
-
- return '{' . $open . join($mid, $properties) . $close . '}';
-
- default:
- return ($this->use & SERVICES_JSON_SUPPRESS_ERRORS)
- ? 'null'
- : new Services_JSON_Error(gettype($var)." can not be encoded as JSON string");
- }
- }
-
- /**
- * array-walking function for use in generating JSON-formatted name-value pairs
- *
- * @param string $name name of key to use
- * @param $value Mixed: reference to an array element to be encoded
- *
- * @return String: JSON-formatted name-value pair, like '"name":value'
- * @access private
- */
- function name_value($name, $value)
- {
- $encoded_value = $this->encode2($value);
-
- if($this->isError($encoded_value)) {
- return $encoded_value;
- }
-
- return $this->encode2(strval($name)) . $this->nameValSeparator . $encoded_value;
- }
-
- /**
- * reduce a string by removing leading and trailing comments and whitespace
- *
- * @param string $str string value to strip of comments and whitespace
- *
- * @return String: string value stripped of comments and whitespace
- * @access private
- */
- function reduce_string($str)
- {
- $str = preg_replace(array(
-
- // eliminate single line comments in '// ...' form
- '#^\s*//(.+)$#m',
-
- // eliminate multi-line comments in '/* ... */' form, at start of string
- '#^\s*/\*(.+)\*/#Us',
-
- // eliminate multi-line comments in '/* ... */' form, at end of string
- '#/\*(.+)\*/\s*$#Us'
-
- ), '', $str);
-
- // eliminate extraneous space
- return trim($str);
- }
-
- /**
- * decodes a JSON string into appropriate variable
- *
- * @param string $str JSON-formatted string
- *
- * @return mixed number, boolean, string, array, or object
- * corresponding to given JSON input string.
- * See argument 1 to Services_JSON() above for object-output behavior.
- * Note that decode() always returns strings
- * in ASCII or UTF-8 format!
- * @access public
- */
- function decode($str)
- {
- $str = $this->reduce_string($str);
-
- switch (strtolower($str)) {
- case 'true':
- return true;
-
- case 'false':
- return false;
-
- case 'null':
- return null;
-
- default:
- $m = array();
-
- if (is_numeric($str)) {
- // Lookie-loo, it's a number
-
- // This would work on its own, but I'm trying to be
- // good about returning integers where appropriate:
- // return (float)$str;
-
- // Return float or int, as appropriate
- return ((float)$str == (integer)$str)
- ? (integer)$str
- : (float)$str;
-
- } elseif (preg_match('/^("|\').*(\1)$/s', $str, $m) && $m[1] == $m[2]) {
- // STRINGS RETURNED IN UTF-8 FORMAT
- $delim = substr($str, 0, 1);
- $chrs = substr($str, 1, -1);
- $utf8 = '';
- $strlen_chrs = strlen($chrs);
-
- for ($c = 0; $c < $strlen_chrs; ++$c) {
-
- $substr_chrs_c_2 = substr($chrs, $c, 2);
- $ord_chrs_c = ord($chrs[$c]);
-
- switch (true) {
- case $substr_chrs_c_2 == '\b':
- $utf8 .= chr(0x08);
- ++$c;
- break;
- case $substr_chrs_c_2 == '\t':
- $utf8 .= chr(0x09);
- ++$c;
- break;
- case $substr_chrs_c_2 == '\n':
- $utf8 .= chr(0x0A);
- ++$c;
- break;
- case $substr_chrs_c_2 == '\f':
- $utf8 .= chr(0x0C);
- ++$c;
- break;
- case $substr_chrs_c_2 == '\r':
- $utf8 .= chr(0x0D);
- ++$c;
- break;
-
- case $substr_chrs_c_2 == '\\"':
- case $substr_chrs_c_2 == '\\\'':
- case $substr_chrs_c_2 == '\\\\':
- case $substr_chrs_c_2 == '\\/':
- if (($delim == '"' && $substr_chrs_c_2 != '\\\'') ||
- ($delim == "'" && $substr_chrs_c_2 != '\\"')) {
- $utf8 .= $chrs[++$c];
- }
- break;
-
- case preg_match('/\\\uD[89AB][0-9A-F]{2}\\\uD[C-F][0-9A-F]{2}/i', substr($chrs, $c, 12)):
- // escaped unicode surrogate pair
- $utf16 = chr(hexdec(substr($chrs, ($c + 2), 2)))
- . chr(hexdec(substr($chrs, ($c + 4), 2)))
- . chr(hexdec(substr($chrs, ($c + 8), 2)))
- . chr(hexdec(substr($chrs, ($c + 10), 2)));
- $utf8 .= $this->utf162utf8($utf16);
- $c += 11;
- break;
-
- case preg_match('/\\\u[0-9A-F]{4}/i', substr($chrs, $c, 6)):
- // single, escaped unicode character
- $utf16 = chr(hexdec(substr($chrs, ($c + 2), 2)))
- . chr(hexdec(substr($chrs, ($c + 4), 2)));
- $utf8 .= $this->utf162utf8($utf16);
- $c += 5;
- break;
-
- case ($ord_chrs_c >= 0x20) && ($ord_chrs_c <= 0x7F):
- $utf8 .= $chrs[$c];
- break;
-
- case ($ord_chrs_c & 0xE0) == 0xC0:
- // characters U-00000080 - U-000007FF, mask 110XXXXX
- //see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
- $utf8 .= substr($chrs, $c, 2);
- ++$c;
- break;
-
- case ($ord_chrs_c & 0xF0) == 0xE0:
- // characters U-00000800 - U-0000FFFF, mask 1110XXXX
- // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
- $utf8 .= substr($chrs, $c, 3);
- $c += 2;
- break;
-
- case ($ord_chrs_c & 0xF8) == 0xF0:
- // characters U-00010000 - U-001FFFFF, mask 11110XXX
- // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
- $utf8 .= substr($chrs, $c, 4);
- $c += 3;
- break;
-
- case ($ord_chrs_c & 0xFC) == 0xF8:
- // characters U-00200000 - U-03FFFFFF, mask 111110XX
- // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
- $utf8 .= substr($chrs, $c, 5);
- $c += 4;
- break;
-
- case ($ord_chrs_c & 0xFE) == 0xFC:
- // characters U-04000000 - U-7FFFFFFF, mask 1111110X
- // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
- $utf8 .= substr($chrs, $c, 6);
- $c += 5;
- break;
-
- }
-
- }
-
- return $utf8;
-
- } elseif (preg_match('/^\[.*\]$/s', $str) || preg_match('/^\{.*\}$/s', $str)) {
- // array, or object notation
-
- if ($str[0] == '[') {
- $stk = array(SERVICES_JSON_IN_ARR);
- $arr = array();
- } else {
- if ($this->use & SERVICES_JSON_LOOSE_TYPE) {
- $stk = array(SERVICES_JSON_IN_OBJ);
- $obj = array();
- } else {
- $stk = array(SERVICES_JSON_IN_OBJ);
- $obj = new stdClass();
- }
- }
-
- array_push($stk, array( 'what' => SERVICES_JSON_SLICE,
- 'where' => 0,
- 'delim' => false));
-
- $chrs = substr($str, 1, -1);
- $chrs = $this->reduce_string($chrs);
-
- if ($chrs == '') {
- if (reset($stk) == SERVICES_JSON_IN_ARR) {
- return $arr;
-
- } else {
- return $obj;
-
- }
- }
-
- //print("\nparsing {$chrs}\n");
-
- $strlen_chrs = strlen($chrs);
-
- for ($c = 0; $c <= $strlen_chrs; ++$c) {
-
- $top = end($stk);
- $substr_chrs_c_2 = substr($chrs, $c, 2);
-
- if (($c == $strlen_chrs) || (($chrs[$c] == ',') && ($top['what'] == SERVICES_JSON_SLICE))) {
- // found a comma that is not inside a string, array, etc.,
- // OR we've reached the end of the character list
- $slice = substr($chrs, $top['where'], ($c - $top['where']));
- array_push($stk, array('what' => SERVICES_JSON_SLICE, 'where' => ($c + 1), 'delim' => false));
- //print("Found split at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n");
-
- if (reset($stk) == SERVICES_JSON_IN_ARR) {
- // we are in an array, so just push an element onto the stack
- array_push($arr, $this->decode($slice));
-
- } elseif (reset($stk) == SERVICES_JSON_IN_OBJ) {
- // we are in an object, so figure
- // out the property name and set an
- // element in an associative array,
- // for now
- $parts = array();
-
- if (preg_match('/^\s*(["\'].*[^\\\]["\'])\s*:\s*(\S.*),?$/Uis', $slice, $parts)) {
- // "name":value pair
- $key = $this->decode($parts[1]);
- $val = $this->decode($parts[2]);
-
- if ($this->use & SERVICES_JSON_LOOSE_TYPE) {
- $obj[$key] = $val;
- } else {
- $obj->$key = $val;
- }
- } elseif (preg_match('/^\s*(\w+)\s*:\s*(\S.*),?$/Uis', $slice, $parts)) {
- // name:value pair, where name is unquoted
- $key = $parts[1];
- $val = $this->decode($parts[2]);
-
- if ($this->use & SERVICES_JSON_LOOSE_TYPE) {
- $obj[$key] = $val;
- } else {
- $obj->$key = $val;
- }
- }
-
- }
-
- } elseif ((($chrs[$c] == '"') || ($chrs[$c] == "'")) && ($top['what'] != SERVICES_JSON_IN_STR)) {
- // found a quote, and we are not inside a string
- array_push($stk, array('what' => SERVICES_JSON_IN_STR, 'where' => $c, 'delim' => $chrs[$c]));
- //print("Found start of string at {$c}\n");
-
- } elseif (($chrs[$c] == $top['delim']) &&
- ($top['what'] == SERVICES_JSON_IN_STR) &&
- (($chrs[$c - 1] != '\\') ||
- ($chrs[$c - 1] == '\\' && $chrs[$c - 2] == '\\'))) {
- // found a quote, we're in a string, and it's not escaped
- array_pop($stk);
- //print("Found end of string at {$c}: ".substr($chrs, $top['where'], (1 + 1 + $c - $top['where']))."\n");
-
- } elseif (($chrs[$c] == '[') &&
- in_array($top['what'], array(SERVICES_JSON_SLICE, SERVICES_JSON_IN_ARR, SERVICES_JSON_IN_OBJ))) {
- // found a left-bracket, and we are in an array, object, or slice
- array_push($stk, array('what' => SERVICES_JSON_IN_ARR, 'where' => $c, 'delim' => false));
- //print("Found start of array at {$c}\n");
-
- } elseif (($chrs[$c] == ']') && ($top['what'] == SERVICES_JSON_IN_ARR)) {
- // found a right-bracket, and we're in an array
- array_pop($stk);
- //print("Found end of array at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n");
-
- } elseif (($chrs[$c] == '{') &&
- in_array($top['what'], array(SERVICES_JSON_SLICE, SERVICES_JSON_IN_ARR, SERVICES_JSON_IN_OBJ))) {
- // found a left-brace, and we are in an array, object, or slice
- array_push($stk, array('what' => SERVICES_JSON_IN_OBJ, 'where' => $c, 'delim' => false));
- //print("Found start of object at {$c}\n");
-
- } elseif (($chrs[$c] == '}') && ($top['what'] == SERVICES_JSON_IN_OBJ)) {
- // found a right-brace, and we're in an object
- array_pop($stk);
- //print("Found end of object at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n");
-
- } elseif (($substr_chrs_c_2 == '/*') &&
- in_array($top['what'], array(SERVICES_JSON_SLICE, SERVICES_JSON_IN_ARR, SERVICES_JSON_IN_OBJ))) {
- // found a comment start, and we are in an array, object, or slice
- array_push($stk, array('what' => SERVICES_JSON_IN_CMT, 'where' => $c, 'delim' => false));
- $c++;
- //print("Found start of comment at {$c}\n");
-
- } elseif (($substr_chrs_c_2 == '*/') && ($top['what'] == SERVICES_JSON_IN_CMT)) {
- // found a comment end, and we're in one now
- array_pop($stk);
- $c++;
-
- for ($i = $top['where']; $i <= $c; ++$i)
- $chrs = substr_replace($chrs, ' ', $i, 1);
-
- //print("Found end of comment at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n");
-
- }
-
- }
-
- if (reset($stk) == SERVICES_JSON_IN_ARR) {
- return $arr;
-
- } elseif (reset($stk) == SERVICES_JSON_IN_OBJ) {
- return $obj;
-
- }
-
- }
- }
- }
-
- /**
- * @todo Ultimately, this should just call PEAR::isError()
- * @return bool
- */
- function isError($data, $code = null)
- {
- if ( self::pearInstalled() ) {
- //avoid some strict warnings on PEAR isError check (looks like http://pear.php.net/bugs/bug.php?id=9950 has been around for some time)
- return @PEAR::isError($data, $code);
- } elseif (is_object($data) && (get_class($data) == 'services_json_error' ||
- is_subclass_of($data, 'services_json_error'))) {
- return true;
- }
-
- return false;
- }
-}
-
-
-// Hide the PEAR_Error variant from Doxygen
-/// @cond
-if (class_exists('PEAR_Error')) {
-
- /**
- * @ingroup API
- */
- class Services_JSON_Error extends PEAR_Error
- {
- function Services_JSON_Error($message = 'unknown error', $code = null,
- $mode = null, $options = null, $userinfo = null)
- {
- parent::PEAR_Error($message, $code, $mode, $options, $userinfo);
- }
- }
-
-} else {
-/// @endcond
-
- /**
- * @todo Ultimately, this class shall be descended from PEAR_Error
- * @ingroup API
- */
- class Services_JSON_Error
- {
- function Services_JSON_Error($message = 'unknown error', $code = null,
- $mode = null, $options = null, $userinfo = null)
- {
- $this->message = $message;
- }
-
- function __toString()
- {
- return $this->message;
- }
- }
-}
--- /dev/null
+<?php
+/**
+ * Formatter for delete log entries.
+ *
+ * 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 Niklas Laxström
+ * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later
+ * @since 1.21
+ */
+
+/**
+ * This class formats delete log entries.
+ *
+ * @since 1.19
+ */
+class DeleteLogFormatter extends LogFormatter {
+ protected function getMessageKey() {
+ $key = parent::getMessageKey();
+ if ( in_array( $this->entry->getSubtype(), array( 'event', 'revision' ) ) ) {
+ if ( count( $this->getMessageParameters() ) < 5 ) {
+ return "$key-legacy";
+ }
+ }
+ return $key;
+ }
+
+ protected function getMessageParameters() {
+ if ( isset( $this->parsedParametersDeleteLog ) ) {
+ return $this->parsedParametersDeleteLog;
+ }
+
+ $params = parent::getMessageParameters();
+ $subtype = $this->entry->getSubtype();
+ if ( in_array( $subtype, array( 'event', 'revision' ) ) ) {
+ // $params[3] here is 'revision' for page revisions, 'oldimage' for file versions, or a comma-separated list of log_ids for log entries.
+ // $subtype here is 'revision' for page revisions and file versions, or 'event' for log entries.
+ if (
+ ( $subtype === 'event' && count( $params ) === 6 ) ||
+ ( $subtype === 'revision' && isset( $params[3] ) && ( $params[3] === 'revision' || $params[3] === 'oldimage' ) )
+ ) {
+ $paramStart = $subtype === 'revision' ? 4 : 3;
+
+ $old = $this->parseBitField( $params[$paramStart+1] );
+ $new = $this->parseBitField( $params[$paramStart+2] );
+ list( $hid, $unhid, $extra ) = RevisionDeleter::getChanges( $new, $old );
+ $changes = array();
+ foreach ( $hid as $v ) {
+ $changes[] = $this->msg( "$v-hid" )->plain();
+ }
+ foreach ( $unhid as $v ) {
+ $changes[] = $this->msg( "$v-unhid" )->plain();
+ }
+ foreach ( $extra as $v ) {
+ $changes[] = $this->msg( $v )->plain();
+ }
+ $changeText = $this->context->getLanguage()->listToText( $changes );
+
+ $newParams = array_slice( $params, 0, 3 );
+ $newParams[3] = $changeText;
+ $count = count( explode( ',', $params[$paramStart] ) );
+ $newParams[4] = $this->context->getLanguage()->formatNum( $count );
+ return $this->parsedParametersDeleteLog = $newParams;
+ } else {
+ return $this->parsedParametersDeleteLog = array_slice( $params, 0, 3 );
+ }
+ }
+
+ return $this->parsedParametersDeleteLog = $params;
+ }
+
+ protected function parseBitField( $string ) {
+ // Input is like ofield=2134 or just the number
+ if ( strpos( $string, 'field=' ) === 1 ) {
+ list( , $field ) = explode( '=', $string );
+ return (int) $field;
+ } else {
+ return (int) $string;
+ }
+ }
+
+ public function getActionLinks() {
+ $user = $this->context->getUser();
+ if ( !$user->isAllowed( 'deletedhistory' ) || $this->entry->isDeleted( LogPage::DELETED_ACTION ) ) {
+ return '';
+ }
+
+ switch ( $this->entry->getSubtype() ) {
+ case 'delete': // Show undelete link
+ if( $user->isAllowed( 'undelete' ) ) {
+ $message = 'undeletelink';
+ } else {
+ $message = 'undeleteviewlink';
+ }
+ $revert = Linker::linkKnown(
+ SpecialPage::getTitleFor( 'Undelete' ),
+ $this->msg( $message )->escaped(),
+ array(),
+ array( 'target' => $this->entry->getTarget()->getPrefixedDBkey() )
+ );
+ return $this->msg( 'parentheses' )->rawParams( $revert )->escaped();
+
+ case 'revision': // If an edit was hidden from a page give a review link to the history
+ $params = $this->extractParameters();
+ if ( !isset( $params[3] ) || !isset( $params[4] ) ) {
+ return '';
+ }
+
+ // Different revision types use different URL params...
+ $key = $params[3];
+ // This is a CSV of the IDs
+ $ids = explode( ',', $params[4] );
+
+ $links = array();
+
+ // If there's only one item, we can show a diff link
+ if ( count( $ids ) == 1 ) {
+ // Live revision diffs...
+ if ( $key == 'oldid' || $key == 'revision' ) {
+ $links[] = Linker::linkKnown(
+ $this->entry->getTarget(),
+ $this->msg( 'diff' )->escaped(),
+ array(),
+ array(
+ 'diff' => intval( $ids[0] ),
+ 'unhide' => 1
+ )
+ );
+ // Deleted revision diffs...
+ } elseif ( $key == 'artimestamp' || $key == 'archive' ) {
+ $links[] = Linker::linkKnown(
+ SpecialPage::getTitleFor( 'Undelete' ),
+ $this->msg( 'diff' )->escaped(),
+ array(),
+ array(
+ 'target' => $this->entry->getTarget()->getPrefixedDBkey(),
+ 'diff' => 'prev',
+ 'timestamp' => $ids[0]
+ )
+ );
+ }
+ }
+
+ // View/modify link...
+ $links[] = Linker::linkKnown(
+ SpecialPage::getTitleFor( 'Revisiondelete' ),
+ $this->msg( 'revdel-restore' )->escaped(),
+ array(),
+ array(
+ 'target' => $this->entry->getTarget()->getPrefixedText(),
+ 'type' => $key,
+ 'ids' => implode( ',', $ids ),
+ )
+ );
+
+ return $this->msg( 'parentheses' )->rawParams(
+ $this->context->getLanguage()->pipeList( $links ) )->escaped();
+
+ case 'event': // Hidden log items, give review link
+ $params = $this->extractParameters();
+ if ( !isset( $params[3] ) ) {
+ return '';
+ }
+ // This is a CSV of the IDs
+ $query = $params[3];
+ // Link to each hidden object ID, $params[1] is the url param
+ $revert = Linker::linkKnown(
+ SpecialPage::getTitleFor( 'Revisiondelete' ),
+ $this->msg( 'revdel-restore' )->escaped(),
+ array(),
+ array(
+ 'target' => $this->entry->getTarget()->getPrefixedText(),
+ 'type' => 'logging',
+ 'ids' => $query
+ )
+ );
+ return $this->msg( 'parentheses' )->rawParams( $revert )->escaped();
+ default:
+ return '';
+ }
+ }
+}
}
}
-/**
- * This class formats move log entries.
- * @since 1.19
- */
-class MoveLogFormatter extends LogFormatter {
- public function getPreloadTitles() {
- $params = $this->extractParameters();
- return array( Title::newFromText( $params[3] ) );
- }
-
- protected function getMessageKey() {
- $key = parent::getMessageKey();
- $params = $this->getMessageParameters();
- if ( isset( $params[4] ) && $params[4] === '1' ) {
- $key .= '-noredirect';
- }
- return $key;
- }
-
- protected function getMessageParameters() {
- $params = parent::getMessageParameters();
- $oldname = $this->makePageLink( $this->entry->getTarget(), array( 'redirect' => 'no' ) );
- $newname = $this->makePageLink( Title::newFromText( $params[3] ) );
- $params[2] = Message::rawParam( $oldname );
- $params[3] = Message::rawParam( $newname );
- return $params;
- }
-
- public function getActionLinks() {
- if ( $this->entry->isDeleted( LogPage::DELETED_ACTION ) // Action is hidden
- || $this->entry->getSubtype() !== 'move'
- || !$this->context->getUser()->isAllowed( 'move' ) )
- {
- return '';
- }
-
- $params = $this->extractParameters();
- $destTitle = Title::newFromText( $params[3] );
- if ( !$destTitle ) {
- return '';
- }
-
- $revert = Linker::linkKnown(
- SpecialPage::getTitleFor( 'Movepage' ),
- $this->msg( 'revertmove' )->escaped(),
- array(),
- array(
- 'wpOldTitle' => $destTitle->getPrefixedDBkey(),
- 'wpNewTitle' => $this->entry->getTarget()->getPrefixedDBkey(),
- 'wpReason' => $this->msg( 'revertmove' )->inContentLanguage()->text(),
- 'wpMovetalk' => 0
- )
- );
- return $this->msg( 'parentheses' )->rawParams( $revert )->escaped();
- }
-}
-
-/**
- * This class formats delete log entries.
- * @since 1.19
- */
-class DeleteLogFormatter extends LogFormatter {
- protected function getMessageKey() {
- $key = parent::getMessageKey();
- if ( in_array( $this->entry->getSubtype(), array( 'event', 'revision' ) ) ) {
- if ( count( $this->getMessageParameters() ) < 5 ) {
- return "$key-legacy";
- }
- }
- return $key;
- }
-
- protected function getMessageParameters() {
- if ( isset( $this->parsedParametersDeleteLog ) ) {
- return $this->parsedParametersDeleteLog;
- }
-
- $params = parent::getMessageParameters();
- $subtype = $this->entry->getSubtype();
- if ( in_array( $subtype, array( 'event', 'revision' ) ) ) {
- // $params[3] here is 'revision' for page revisions, 'oldimage' for file versions, or a comma-separated list of log_ids for log entries.
- // $subtype here is 'revision' for page revisions and file versions, or 'event' for log entries.
- if (
- ( $subtype === 'event' && count( $params ) === 6 ) ||
- ( $subtype === 'revision' && isset( $params[3] ) && ( $params[3] === 'revision' || $params[3] === 'oldimage' ) )
- ) {
- $paramStart = $subtype === 'revision' ? 4 : 3;
-
- $old = $this->parseBitField( $params[$paramStart+1] );
- $new = $this->parseBitField( $params[$paramStart+2] );
- list( $hid, $unhid, $extra ) = RevisionDeleter::getChanges( $new, $old );
- $changes = array();
- foreach ( $hid as $v ) {
- $changes[] = $this->msg( "$v-hid" )->plain();
- }
- foreach ( $unhid as $v ) {
- $changes[] = $this->msg( "$v-unhid" )->plain();
- }
- foreach ( $extra as $v ) {
- $changes[] = $this->msg( $v )->plain();
- }
- $changeText = $this->context->getLanguage()->listToText( $changes );
-
- $newParams = array_slice( $params, 0, 3 );
- $newParams[3] = $changeText;
- $count = count( explode( ',', $params[$paramStart] ) );
- $newParams[4] = $this->context->getLanguage()->formatNum( $count );
- return $this->parsedParametersDeleteLog = $newParams;
- } else {
- return $this->parsedParametersDeleteLog = array_slice( $params, 0, 3 );
- }
- }
-
- return $this->parsedParametersDeleteLog = $params;
- }
-
- protected function parseBitField( $string ) {
- // Input is like ofield=2134 or just the number
- if ( strpos( $string, 'field=' ) === 1 ) {
- list( , $field ) = explode( '=', $string );
- return (int) $field;
- } else {
- return (int) $string;
- }
- }
-
- public function getActionLinks() {
- $user = $this->context->getUser();
- if ( !$user->isAllowed( 'deletedhistory' ) || $this->entry->isDeleted( LogPage::DELETED_ACTION ) ) {
- return '';
- }
-
- switch ( $this->entry->getSubtype() ) {
- case 'delete': // Show undelete link
- if( $user->isAllowed( 'undelete' ) ) {
- $message = 'undeletelink';
- } else {
- $message = 'undeleteviewlink';
- }
- $revert = Linker::linkKnown(
- SpecialPage::getTitleFor( 'Undelete' ),
- $this->msg( $message )->escaped(),
- array(),
- array( 'target' => $this->entry->getTarget()->getPrefixedDBkey() )
- );
- return $this->msg( 'parentheses' )->rawParams( $revert )->escaped();
-
- case 'revision': // If an edit was hidden from a page give a review link to the history
- $params = $this->extractParameters();
- if ( !isset( $params[3] ) || !isset( $params[4] ) ) {
- return '';
- }
-
- // Different revision types use different URL params...
- $key = $params[3];
- // This is a CSV of the IDs
- $ids = explode( ',', $params[4] );
-
- $links = array();
-
- // If there's only one item, we can show a diff link
- if ( count( $ids ) == 1 ) {
- // Live revision diffs...
- if ( $key == 'oldid' || $key == 'revision' ) {
- $links[] = Linker::linkKnown(
- $this->entry->getTarget(),
- $this->msg( 'diff' )->escaped(),
- array(),
- array(
- 'diff' => intval( $ids[0] ),
- 'unhide' => 1
- )
- );
- // Deleted revision diffs...
- } elseif ( $key == 'artimestamp' || $key == 'archive' ) {
- $links[] = Linker::linkKnown(
- SpecialPage::getTitleFor( 'Undelete' ),
- $this->msg( 'diff' )->escaped(),
- array(),
- array(
- 'target' => $this->entry->getTarget()->getPrefixedDBkey(),
- 'diff' => 'prev',
- 'timestamp' => $ids[0]
- )
- );
- }
- }
-
- // View/modify link...
- $links[] = Linker::linkKnown(
- SpecialPage::getTitleFor( 'Revisiondelete' ),
- $this->msg( 'revdel-restore' )->escaped(),
- array(),
- array(
- 'target' => $this->entry->getTarget()->getPrefixedText(),
- 'type' => $key,
- 'ids' => implode( ',', $ids ),
- )
- );
-
- return $this->msg( 'parentheses' )->rawParams(
- $this->context->getLanguage()->pipeList( $links ) )->escaped();
-
- case 'event': // Hidden log items, give review link
- $params = $this->extractParameters();
- if ( !isset( $params[3] ) ) {
- return '';
- }
- // This is a CSV of the IDs
- $query = $params[3];
- // Link to each hidden object ID, $params[1] is the url param
- $revert = Linker::linkKnown(
- SpecialPage::getTitleFor( 'Revisiondelete' ),
- $this->msg( 'revdel-restore' )->escaped(),
- array(),
- array(
- 'target' => $this->entry->getTarget()->getPrefixedText(),
- 'type' => 'logging',
- 'ids' => $query
- )
- );
- return $this->msg( 'parentheses' )->rawParams( $revert )->escaped();
- default:
- return '';
- }
- }
-}
-
-/**
- * This class formats patrol log entries.
- * @since 1.19
- */
-class PatrolLogFormatter extends LogFormatter {
- protected function getMessageKey() {
- $key = parent::getMessageKey();
- $params = $this->getMessageParameters();
- if ( isset( $params[5] ) && $params[5] ) {
- $key .= '-auto';
- }
- return $key;
- }
-
- protected function getMessageParameters() {
- $params = parent::getMessageParameters();
-
- $target = $this->entry->getTarget();
- $oldid = $params[3];
- $revision = $this->context->getLanguage()->formatNum( $oldid, true );
-
- if ( $this->plaintext ) {
- $revlink = $revision;
- } elseif ( $target->exists() ) {
- $query = array(
- 'oldid' => $oldid,
- 'diff' => 'prev'
- );
- $revlink = Linker::link( $target, htmlspecialchars( $revision ), array(), $query );
- } else {
- $revlink = htmlspecialchars( $revision );
- }
-
- $params[3] = Message::rawParam( $revlink );
- return $params;
- }
-}
-
-/**
- * This class formats new user log entries.
- * @since 1.19
- */
-class NewUsersLogFormatter extends LogFormatter {
- protected function getMessageParameters() {
- $params = parent::getMessageParameters();
- $subtype = $this->entry->getSubtype();
- if ( $subtype === 'create2' || $subtype === 'byemail' ) {
- if ( isset( $params[3] ) ) {
- $target = User::newFromId( $params[3] );
- } else {
- $target = User::newFromName( $this->entry->getTarget()->getText(), false );
- }
- $params[2] = Message::rawParam( $this->makeUserLink( $target ) );
- $params[3] = $target->getName();
- }
- return $params;
- }
-
- public function getComment() {
- $timestamp = wfTimestamp( TS_MW, $this->entry->getTimestamp() );
- if ( $timestamp < '20080129000000' ) {
- # Suppress $comment from old entries (before 2008-01-29),
- # not needed and can contain incorrect links
- return '';
- }
- return parent::getComment();
- }
-
- public function getPreloadTitles() {
- $subtype = $this->entry->getSubtype();
- if ( $subtype === 'create2' || $subtype === 'byemail' ) {
- //add the user talk to LinkBatch for the userLink
- return array( Title::makeTitle( NS_USER_TALK, $this->entry->getTarget()->getText() ) );
- }
- return array();
- }
-}
-
-/**
- * This class formats rights log entries.
- * @since 1.21
- */
-class RightsLogFormatter extends LogFormatter {
- protected function makePageLink( Title $title = null, $parameters = array() ) {
- global $wgContLang, $wgUserrightsInterwikiDelimiter;
-
- if ( !$this->plaintext ) {
- $text = $wgContLang->ucfirst( $title->getText() );
- $parts = explode( $wgUserrightsInterwikiDelimiter, $text, 2 );
-
- if ( count( $parts ) === 2 ) {
- $titleLink = WikiMap::foreignUserLink( $parts[1], $parts[0],
- htmlspecialchars( $title->getPrefixedText() ) );
-
- if ( $titleLink !== false ) {
- return $titleLink;
- }
- }
- }
-
- return parent::makePageLink( $title, $parameters );
- }
-
- protected function getMessageKey() {
- $key = parent::getMessageKey();
- $params = $this->getMessageParameters();
- if ( !isset( $params[3] ) && !isset( $params[4] ) ) {
- $key .= '-legacy';
- }
- return $key;
- }
-
- protected function getMessageParameters() {
- $params = parent::getMessageParameters();
-
- // Really old entries
- if ( !isset( $params[3] ) && !isset( $params[4] ) ) {
- return $params;
- }
-
- $oldGroups = $params[3];
- $newGroups = $params[4];
-
- // Less old entries
- if ( $oldGroups === '' ) {
- $oldGroups = array();
- } elseif ( is_string( $oldGroups ) ) {
- $oldGroups = array_map( 'trim', explode( ',', $oldGroups ) );
- }
- if ( $newGroups === '' ) {
- $newGroups = array();
- } elseif ( is_string( $newGroups ) ) {
- $newGroups = array_map( 'trim', explode( ',', $newGroups ) );
- }
-
- $userName = $this->entry->getTarget()->getText();
- if ( !$this->plaintext && count( $oldGroups ) ) {
- foreach ( $oldGroups as &$group ) {
- $group = User::getGroupMember( $group, $userName );
- }
- }
- if ( !$this->plaintext && count( $newGroups ) ) {
- foreach ( $newGroups as &$group ) {
- $group = User::getGroupMember( $group, $userName );
- }
- }
-
- $lang = $this->context->getLanguage();
- if ( count( $oldGroups ) ) {
- $params[3] = $lang->listToText( $oldGroups );
- } else {
- $params[3] = $this->msg( 'rightsnone' )->text();
- }
- if ( count( $newGroups ) ) {
- // Array_values is used here because of bug 42211
- // see use of array_unique in UserrightsPage::doSaveUserGroups on $newGroups.
- $params[4] = $lang->listToText( array_values( $newGroups ) );
- } else {
- $params[4] = $this->msg( 'rightsnone' )->text();
- }
-
- return $params;
- }
-}
--- /dev/null
+<?php
+/**
+ * Formatter for move log entries.
+ *
+ * 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 Niklas Laxström
+ * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later
+ * @since 1.21
+ */
+
+/**
+ * This class formats move log entries.
+ *
+ * @since 1.19
+ */
+class MoveLogFormatter extends LogFormatter {
+ public function getPreloadTitles() {
+ $params = $this->extractParameters();
+ return array( Title::newFromText( $params[3] ) );
+ }
+
+ protected function getMessageKey() {
+ $key = parent::getMessageKey();
+ $params = $this->getMessageParameters();
+ if ( isset( $params[4] ) && $params[4] === '1' ) {
+ $key .= '-noredirect';
+ }
+ return $key;
+ }
+
+ protected function getMessageParameters() {
+ $params = parent::getMessageParameters();
+ $oldname = $this->makePageLink( $this->entry->getTarget(), array( 'redirect' => 'no' ) );
+ $newname = $this->makePageLink( Title::newFromText( $params[3] ) );
+ $params[2] = Message::rawParam( $oldname );
+ $params[3] = Message::rawParam( $newname );
+ return $params;
+ }
+
+ public function getActionLinks() {
+ if ( $this->entry->isDeleted( LogPage::DELETED_ACTION ) // Action is hidden
+ || $this->entry->getSubtype() !== 'move'
+ || !$this->context->getUser()->isAllowed( 'move' ) )
+ {
+ return '';
+ }
+
+ $params = $this->extractParameters();
+ $destTitle = Title::newFromText( $params[3] );
+ if ( !$destTitle ) {
+ return '';
+ }
+
+ $revert = Linker::linkKnown(
+ SpecialPage::getTitleFor( 'Movepage' ),
+ $this->msg( 'revertmove' )->escaped(),
+ array(),
+ array(
+ 'wpOldTitle' => $destTitle->getPrefixedDBkey(),
+ 'wpNewTitle' => $this->entry->getTarget()->getPrefixedDBkey(),
+ 'wpReason' => $this->msg( 'revertmove' )->inContentLanguage()->text(),
+ 'wpMovetalk' => 0
+ )
+ );
+ return $this->msg( 'parentheses' )->rawParams( $revert )->escaped();
+ }
+}
--- /dev/null
+<?php
+/**
+ * Formatter for new user log entries.
+ *
+ * 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 Niklas Laxström
+ * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later
+ * @since 1.21
+ */
+
+/**
+ * This class formats new user log entries.
+ *
+ * @since 1.19
+ */
+class NewUsersLogFormatter extends LogFormatter {
+ protected function getMessageParameters() {
+ $params = parent::getMessageParameters();
+ $subtype = $this->entry->getSubtype();
+ if ( $subtype === 'create2' || $subtype === 'byemail' ) {
+ if ( isset( $params[3] ) ) {
+ $target = User::newFromId( $params[3] );
+ } else {
+ $target = User::newFromName( $this->entry->getTarget()->getText(), false );
+ }
+ $params[2] = Message::rawParam( $this->makeUserLink( $target ) );
+ $params[3] = $target->getName();
+ }
+ return $params;
+ }
+
+ public function getComment() {
+ $timestamp = wfTimestamp( TS_MW, $this->entry->getTimestamp() );
+ if ( $timestamp < '20080129000000' ) {
+ # Suppress $comment from old entries (before 2008-01-29),
+ # not needed and can contain incorrect links
+ return '';
+ }
+ return parent::getComment();
+ }
+
+ public function getPreloadTitles() {
+ $subtype = $this->entry->getSubtype();
+ if ( $subtype === 'create2' || $subtype === 'byemail' ) {
+ //add the user talk to LinkBatch for the userLink
+ return array( Title::makeTitle( NS_USER_TALK, $this->entry->getTarget()->getText() ) );
+ }
+ return array();
+ }
+}
--- /dev/null
+<?php
+/**
+ * Formatter for new user log entries.
+ *
+ * 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 Niklas Laxström
+ * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later
+ * @since 1.21
+ */
+
+/**
+ * This class formats patrol log entries.
+ *
+ * @since 1.19
+ */
+class PatrolLogFormatter extends LogFormatter {
+ protected function getMessageKey() {
+ $key = parent::getMessageKey();
+ $params = $this->getMessageParameters();
+ if ( isset( $params[5] ) && $params[5] ) {
+ $key .= '-auto';
+ }
+ return $key;
+ }
+
+ protected function getMessageParameters() {
+ $params = parent::getMessageParameters();
+
+ $target = $this->entry->getTarget();
+ $oldid = $params[3];
+ $revision = $this->context->getLanguage()->formatNum( $oldid, true );
+
+ if ( $this->plaintext ) {
+ $revlink = $revision;
+ } elseif ( $target->exists() ) {
+ $query = array(
+ 'oldid' => $oldid,
+ 'diff' => 'prev'
+ );
+ $revlink = Linker::link( $target, htmlspecialchars( $revision ), array(), $query );
+ } else {
+ $revlink = htmlspecialchars( $revision );
+ }
+
+ $params[3] = Message::rawParam( $revlink );
+ return $params;
+ }
+}
--- /dev/null
+<?php
+/**
+ * Formatter for user rights log entries.
+ *
+ * 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 Alexandre Emsenhuber
+ * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later
+ * @since 1.21
+ */
+
+/**
+ * This class formats rights log entries.
+ *
+ * @since 1.21
+ */
+class RightsLogFormatter extends LogFormatter {
+ protected function makePageLink( Title $title = null, $parameters = array() ) {
+ global $wgContLang, $wgUserrightsInterwikiDelimiter;
+
+ if ( !$this->plaintext ) {
+ $text = $wgContLang->ucfirst( $title->getText() );
+ $parts = explode( $wgUserrightsInterwikiDelimiter, $text, 2 );
+
+ if ( count( $parts ) === 2 ) {
+ $titleLink = WikiMap::foreignUserLink( $parts[1], $parts[0],
+ htmlspecialchars( $title->getPrefixedText() ) );
+
+ if ( $titleLink !== false ) {
+ return $titleLink;
+ }
+ }
+ }
+
+ return parent::makePageLink( $title, $parameters );
+ }
+
+ protected function getMessageKey() {
+ $key = parent::getMessageKey();
+ $params = $this->getMessageParameters();
+ if ( !isset( $params[3] ) && !isset( $params[4] ) ) {
+ $key .= '-legacy';
+ }
+ return $key;
+ }
+
+ protected function getMessageParameters() {
+ $params = parent::getMessageParameters();
+
+ // Really old entries
+ if ( !isset( $params[3] ) && !isset( $params[4] ) ) {
+ return $params;
+ }
+
+ $oldGroups = $params[3];
+ $newGroups = $params[4];
+
+ // Less old entries
+ if ( $oldGroups === '' ) {
+ $oldGroups = array();
+ } elseif ( is_string( $oldGroups ) ) {
+ $oldGroups = array_map( 'trim', explode( ',', $oldGroups ) );
+ }
+ if ( $newGroups === '' ) {
+ $newGroups = array();
+ } elseif ( is_string( $newGroups ) ) {
+ $newGroups = array_map( 'trim', explode( ',', $newGroups ) );
+ }
+
+ $userName = $this->entry->getTarget()->getText();
+ if ( !$this->plaintext && count( $oldGroups ) ) {
+ foreach ( $oldGroups as &$group ) {
+ $group = User::getGroupMember( $group, $userName );
+ }
+ }
+ if ( !$this->plaintext && count( $newGroups ) ) {
+ foreach ( $newGroups as &$group ) {
+ $group = User::getGroupMember( $group, $userName );
+ }
+ }
+
+ $lang = $this->context->getLanguage();
+ if ( count( $oldGroups ) ) {
+ $params[3] = $lang->listToText( $oldGroups );
+ } else {
+ $params[3] = $this->msg( 'rightsnone' )->text();
+ }
+ if ( count( $newGroups ) ) {
+ // Array_values is used here because of bug 42211
+ // see use of array_unique in UserrightsPage::doSaveUserGroups on $newGroups.
+ $params[4] = $lang->listToText( array_values( $newGroups ) );
+ } else {
+ $params[4] = $this->msg( 'rightsnone' )->text();
+ }
+
+ return $params;
+ }
+}
if ( $this->isError() ) {
return false;
} elseif ( $this->path === null ) {
- return $this->file->getLocalRefPath();
+ return $this->file->getLocalRefPath(); // assume thumb was not scaled
+ } elseif ( FileBackend::isStoragePath( $this->path ) ) {
+ $be = $this->file->getRepo()->getBackend();
+ // The temp file will be process cached by FileBackend
+ $fsFile = $be->getLocalReference( array( 'src' => $this->path ) );
+ return $fsFile ? $fsFile->getPath() : false;
} else {
return $this->path; // may return false
}
$t = Title::newFromText( $title );
if ( is_null( $t ) || !$t->canTalk() )
return '';
- return wfEscapeWikiText( $t->getTalkPage()->getPrefixedUrl() );
+ return wfEscapeWikiText( $t->getTalkPage()->getPrefixedURL() );
}
static function subjectpagename( $parser, $title = null ) {
$t = Title::newFromText( $title );
$t = Title::newFromText( $title );
if ( is_null( $t ) )
return '';
- return wfEscapeWikiText( $t->getSubjectPage()->getPrefixedUrl() );
+ return wfEscapeWikiText( $t->getSubjectPage()->getPrefixedURL() );
}
/**
*/
static function anchorencode( $parser, $text ) {
$text = $parser->killMarkers( $text );
- return substr( $parser->guessSectionNameFromWikiText( $text ), 1);
+ return (string)substr( $parser->guessSectionNameFromWikiText( $text ), 1 );
}
static function special( $parser, $text ) {
));
$titleObj = SpecialPage::getTitleFor( 'Booksources', $num );
return'<a href="' .
- htmlspecialchars( $titleObj->getLocalUrl() ) .
+ htmlspecialchars( $titleObj->getLocalURL() ) .
"\" class=\"internal mw-magiclink-isbn\">ISBN $isbn</a>";
} else {
return $m[0];
case 'talkpagenamee':
if ( $this->mTitle->canTalk() ) {
$talkPage = $this->mTitle->getTalkPage();
- $value = wfEscapeWikiText( $talkPage->getPrefixedUrl() );
+ $value = wfEscapeWikiText( $talkPage->getPrefixedURL() );
} else {
$value = '';
}
break;
case 'subjectpagenamee':
$subjPage = $this->mTitle->getSubjectPage();
- $value = wfEscapeWikiText( $subjPage->getPrefixedUrl() );
+ $value = wfEscapeWikiText( $subjPage->getPrefixedURL() );
break;
case 'pageid': // requested in bug 23427
- $pageid = $this->getTitle()->getArticleId();
+ $pageid = $this->getTitle()->getArticleID();
if( $pageid == 0 ) {
# 0 means the page doesn't exist in the database,
# which means the user is previewing a new page.
if ( !$found && $title ) {
if ( !Profiler::instance()->isPersistent() ) {
# Too many unique items can kill profiling DBs/collectors
- $titleProfileIn = __METHOD__ . "-title-" . $title->getDBKey();
+ $titleProfileIn = __METHOD__ . "-title-" . $title->getDBkey();
wfProfileIn( $titleProfileIn ); // template in
}
wfProfileIn( __METHOD__ . '-loadtpl' );
return wfMessage( 'scarytranscludedisabled' )->inContentLanguage()->text();
}
- $url = $title->getFullUrl( "action=$action" );
+ $url = $title->getFullURL( "action=$action" );
if ( strlen( $url ) > 255 ) {
return wfMessage( 'scarytranscludetoolong' )->inContentLanguage()->text();
// Add the testrunner (which configures QUnit) to the dependencies.
// Since it must be ready before any of the test suites are executed.
- foreach( $testModules['qunit'] as $moduleName => $moduleProps ) {
- $testModules['qunit'][$moduleName]['dependencies'][] = 'mediawiki.tests.qunit.testrunner';
+ foreach( $testModules['qunit'] as &$module ) {
+ // Make sure all test modules are top-loading so that when QUnit starts
+ // on document-ready, it will run once and finish. If some tests arrive
+ // later (possibly after QUnit has already finished) they will be ignored.
+ $module['position'] = 'top';
+ $module['dependencies'][] = 'mediawiki.tests.qunit.testrunner';
}
foreach( $testModules as $id => $names ) {
// output javascript "[]" instead of "{}". This fixes that.
(object)$styles,
(object)$messages
- ) );
+ ),
+ ResourceLoader::inDebugMode()
+ );
}
/**
* @return string
*/
public static function makeConfigSetScript( array $configuration ) {
- return Xml::encodeJsCall( 'mw.config.set', array( $configuration ) );
+ return Xml::encodeJsCall( 'mw.config.set', array( $configuration ), ResourceLoader::inDebugMode() );
}
/**
/* Protected Members */
protected $modifiedTime = array();
+ protected $targets = array( 'desktop', 'mobile' );
/* Protected Methods */
public function getScript( ResourceLoaderContext $context ) {
global $wgUser;
return Xml::encodeJsCall( 'mw.user.options.set',
- array( $wgUser->getOptions() ) );
+ array( $wgUser->getOptions() ),
+ ResourceLoader::inDebugMode()
+ );
}
/**
*/
public function getScript( ResourceLoaderContext $context ) {
return Xml::encodeJsCall( 'mw.user.tokens.set',
- array( $this->contextUserTokens( $context ) ) );
+ array( $this->contextUserTokens( $context ) ),
+ ResourceLoader::inDebugMode()
+ );
}
/**
$this->setHeaders();
global $wgUseDatabaseMessages;
- if( !$wgUseDatabaseMessages ) {
+ if ( !$wgUseDatabaseMessages ) {
$out->addWikiMsg( 'allmessagesnotsupportedDB' );
return;
} else {
$request = $this->getRequest();
$this->filter = $request->getVal( 'filter', 'all' );
- if( $this->filter === 'all' ) {
+ if ( $this->filter === 'all' ) {
$this->custom = null; // So won't match in either case
} else {
- $this->custom = ($this->filter == 'unmodified');
+ $this->custom = ( $this->filter == 'unmodified' );
}
$prefix = $this->getLanguage()->ucfirst( $request->getVal( 'prefix', '' ) );
$prefix = $prefix != '' ? Title::makeTitleSafe( NS_MEDIAWIKI, $request->getVal( 'prefix', null ) ) : null;
- if( $prefix !== null ) {
+ if ( $prefix !== null ) {
$this->displayPrefix = $prefix->getDBkey();
$this->prefix = '/^' . preg_quote( $this->displayPrefix ) . '/i';
} else {
// The suffix that may be needed for message names if we're in a
// different language (eg [[MediaWiki:Foo/fr]]: $suffix = '/fr'
- if( $this->foreign ) {
+ if ( $this->foreign ) {
$this->suffix = '/' . $this->langcode;
} else {
$this->suffix = '';
Xml::openElement( 'table', array( 'class' => 'mw-allmessages-table' ) ) . "\n" .
'<tr>
<td class="mw-label">' .
- Xml::label( $this->msg( 'allmessages-prefix' )->text(), 'mw-allmessages-form-prefix' ) .
- "</td>\n
- <td class=\"mw-input\">" .
- Xml::input( 'prefix', 20, str_replace( '_', ' ', $this->displayPrefix ), array( 'id' => 'mw-allmessages-form-prefix' ) ) .
- "</td>\n
+ Xml::label( $this->msg( 'allmessages-prefix' )->text(), 'mw-allmessages-form-prefix' ) .
+ "</td>\n
+ <td class=\"mw-input\">" .
+ Xml::input( 'prefix', 20, str_replace( '_', ' ', $this->displayPrefix ), array( 'id' => 'mw-allmessages-form-prefix' ) ) .
+ "</td>\n
</tr>
<tr>\n
- <td class='mw-label'>" .
- $this->msg( 'allmessages-filter' )->escaped() .
- "</td>\n
+ <td class='mw-label'>" .
+ $this->msg( 'allmessages-filter' )->escaped() .
+ "</td>\n
<td class='mw-input'>" .
- Xml::radioLabel( $this->msg( 'allmessages-filter-unmodified' )->text(),
- 'filter',
- 'unmodified',
- 'mw-allmessages-form-filter-unmodified',
- ( $this->filter == 'unmodified' )
- ) .
- Xml::radioLabel( $this->msg( 'allmessages-filter-all' )->text(),
- 'filter',
- 'all',
- 'mw-allmessages-form-filter-all',
- ( $this->filter == 'all' )
- ) .
- Xml::radioLabel( $this->msg( 'allmessages-filter-modified' )->text(),
- 'filter',
- 'modified',
- 'mw-allmessages-form-filter-modified',
- ( $this->filter == 'modified' )
- ) .
- "</td>\n
+ Xml::radioLabel( $this->msg( 'allmessages-filter-unmodified' )->text(),
+ 'filter',
+ 'unmodified',
+ 'mw-allmessages-form-filter-unmodified',
+ ( $this->filter == 'unmodified' )
+ ) .
+ Xml::radioLabel( $this->msg( 'allmessages-filter-all' )->text(),
+ 'filter',
+ 'all',
+ 'mw-allmessages-form-filter-all',
+ ( $this->filter == 'all' )
+ ) .
+ Xml::radioLabel( $this->msg( 'allmessages-filter-modified' )->text(),
+ 'filter',
+ 'modified',
+ 'mw-allmessages-form-filter-modified',
+ ( $this->filter == 'modified' )
+ ) .
+ "</td>\n
</tr>
<tr>\n
<td class=\"mw-label\">" . $langSelect[0] . "</td>\n
'<tr>
<td class="mw-label">' .
- Xml::label( $this->msg( 'table_pager_limit_label' )->text(), 'mw-table_pager_limit_label' ) .
- '</td>
- <td class="mw-input">' .
- $this->getLimitSelect() .
- '</td>
+ Xml::label( $this->msg( 'table_pager_limit_label' )->text(), 'mw-table_pager_limit_label' ) .
+ '</td>
+ <td class="mw-input">' .
+ $this->getLimitSelect() .
+ '</td>
<tr>
<td></td>
<td>' .
- Xml::submitButton( $this->msg( 'allmessages-filter-submit' )->text() ) .
- "</td>\n
+ Xml::submitButton( $this->msg( 'allmessages-filter-submit' )->text() ) .
+ "</td>\n
</tr>" .
Xml::closeElement( 'table' ) .
function getAllMessages( $descending ) {
wfProfileIn( __METHOD__ );
$messageNames = Language::getLocalisationCache()->getSubitemList( 'en', 'messages' );
- if( $descending ) {
+ if ( $descending ) {
rsort( $messageNames );
} else {
asort( $messageNames );
foreach ( $res as $s ) {
$exists = false;
- if( $foreign ) {
+ if ( $foreign ) {
$title = explode( '/', $s->page_title );
- if( count( $title ) === 2 && $langcode == $title[1]
- && isset( $xNames[$title[0]] ) ) {
+ if ( count( $title ) === 2 && $langcode == $title[1]
+ && isset( $xNames[$title[0]] )
+ ) {
$exists = $title[0];
}
- } elseif( isset( $xNames[$s->page_title] ) ) {
+ } elseif ( isset( $xNames[$s->page_title] ) ) {
$exists = $s->page_title;
}
- if( $exists && $s->page_namespace == NS_MEDIAWIKI ) {
+ if ( $exists && $s->page_namespace == NS_MEDIAWIKI ) {
$pageFlags[$exists] = true;
- } elseif( $exists && $s->page_namespace == NS_MEDIAWIKI_TALK ) {
+ } elseif ( $exists && $s->page_namespace == NS_MEDIAWIKI_TALK ) {
$talkFlags[$exists] = true;
}
}
$statuses = self::getCustomisedStatuses( $messageNames, $this->langcode, $this->foreign );
$count = 0;
- foreach( $messageNames as $key ) {
+ foreach ( $messageNames as $key ) {
$customised = isset( $statuses['pages'][$key] );
- if( $customised !== $this->custom &&
+ if ( $customised !== $this->custom &&
( $descending && ( $key < $offset || !$offset ) || !$descending && $key > $offset ) &&
( ( $this->prefix && preg_match( $this->prefix, $key ) ) || $this->prefix === false )
) {
$actual = wfMessage( $key )->inLanguage( $this->langcode )->plain();
$default = wfMessage( $key )->inLanguage( $this->langcode )->useDatabase( false )->plain();
$result->result[] = array(
- 'am_title' => $key,
- 'am_actual' => $actual,
- 'am_default' => $default,
+ 'am_title' => $key,
+ 'am_actual' => $actual,
+ 'am_default' => $default,
'am_customised' => $customised,
'am_talk_exists' => isset( $statuses['talks'][$key] )
);
$count++;
}
- if( $count == $limit ) {
+
+ if ( $count == $limit ) {
break;
}
}
return Xml::openElement( 'table', array( 'class' => 'mw-datatable TablePager', 'id' => 'mw-allmessagestable' ) ) . "\n" .
"<thead><tr>
<th rowspan=\"2\">" .
- $this->msg( 'allmessagesname' )->escaped() . "
+ $this->msg( 'allmessagesname' )->escaped() . "
</th>
<th>" .
- $this->msg( 'allmessagesdefault' )->escaped() .
- "</th>
+ $this->msg( 'allmessagesdefault' )->escaped() .
+ "</th>
</tr>\n
<tr>
<th>" .
- $this->msg( 'allmessagescurrent' )->escaped() .
- "</th>
+ $this->msg( 'allmessagescurrent' )->escaped() .
+ "</th>
</tr></thead><tbody>\n";
}
function formatValue( $field, $value ) {
- switch( $field ) {
+ switch ( $field ) {
case 'am_title' :
$title = Title::makeTitle( NS_MEDIAWIKI, $value . $this->suffix );
$talk = Title::makeTitle( NS_MEDIAWIKI_TALK, $value . $this->suffix );
- if( $this->mCurrentRow->am_customised ) {
+ if ( $this->mCurrentRow->am_customised ) {
$title = Linker::linkKnown( $title, $this->getLanguage()->lcfirst( $value ) );
} else {
$title = Linker::link(
$s = parent::formatRow( $row );
// But if there's a customised message, add that too.
- if( $row->am_customised ) {
+ if ( $row->am_customised ) {
$s .= Xml::openElement( 'tr', $this->getRowAttrs( $row, true ) );
$formatted = strval( $this->formatValue( 'am_actual', $row->am_actual ) );
if ( $formatted == '' ) {
function getRowAttrs( $row, $isSecond = false ) {
$arr = array();
- if( $row->am_customised ) {
+ if ( $row->am_customised ) {
$arr['class'] = 'allmessages-customised';
}
- if( !$isSecond ) {
+ if ( !$isSecond ) {
$arr['id'] = Sanitizer::escapeId( 'msg_' . $this->getLanguage()->lcfirst( $row->am_title ) );
}
return $arr;
}
function getCellAttrs( $field, $value ) {
- if( $this->mCurrentRow->am_customised && $field == 'am_title' ) {
+ if ( $this->mCurrentRow->am_customised && $field == 'am_title' ) {
return array( 'rowspan' => '2', 'class' => $field );
- } elseif( $field == 'am_title' ) {
+ } elseif ( $field == 'am_title' ) {
return array( 'class' => $field );
} else {
return array( 'lang' => $this->langcode, 'dir' => $this->lang->getDir(), 'class' => $field );
$out->setPageTitle(
( $namespace > 0 && in_array( $namespace, array_keys( $namespaces ) ) ) ?
- $this->msg( 'allinnamespace', str_replace( '_', ' ', $namespaces[$namespace] ) ) :
- $this->msg( 'allarticles' )
+ $this->msg( 'allinnamespace', str_replace( '_', ' ', $namespaces[$namespace] ) ) :
+ $this->msg( 'allarticles' )
);
$out->addModuleStyles( 'mediawiki.special' );
- if( $par !== null ) {
+ if ( $par !== null ) {
$this->showChunk( $namespace, $par, $to, $hideredirects );
- } elseif( $from !== null && $to === null ) {
+ } elseif ( $from !== null && $to === null ) {
$this->showChunk( $namespace, $from, $to, $hideredirects );
} else {
$this->showToplevel( $namespace, $from, $to, $hideredirects );
$from = ( $from && $from->isLocal() ) ? $from->getDBkey() : null;
$to = ( $to && $to->isLocal() ) ? $to->getDBkey() : null;
- if( isset( $from ) )
+ if ( isset( $from ) ) {
$where[] = 'page_title >= ' . $dbr->addQuotes( $from );
- if( isset( $to ) )
+ }
+
+ if ( isset( $to ) ) {
$where[] = 'page_title <= ' . $dbr->addQuotes( $to );
+ }
global $wgMemc;
$key = wfMemcKey( 'allpages', 'ns', $namespace, sha1( $from ), sha1( $to ) );
$maxPerSubpage = intval( $count / $this->maxLineCount );
$maxPerSubpage = max( $maxPerSubpage, $this->maxPerPage );
- if( !is_array( $lines ) ) {
+ if ( !is_array( $lines ) ) {
$options = array( 'LIMIT' => 1 );
$options['ORDER BY'] = 'page_title ASC';
$firstTitle = $dbr->selectField( 'page', 'page_title', $where, __METHOD__, $options );
$lines = array( $firstTitle );
# If we are going to show n rows, we need n+1 queries to find the relevant titles.
$done = false;
- while( !$done ) {
+ while ( !$done ) {
// Fetch the last title of this chunk and the first of the next
$chunk = ( $lastTitle === false )
? array()
);
$s = $dbr->fetchObject( $res );
- if( $s ) {
+ if ( $s ) {
array_push( $lines, $s->page_title );
} else {
// Final chunk, but ended prematurely. Go back and find the end.
array_push( $lines, $endTitle );
$done = true;
}
+
$s = $res->fetchObject();
- if( $s ) {
+ if ( $s ) {
array_push( $lines, $s->page_title );
$lastTitle = $s->page_title;
} else {
// If there are only two or less sections, don't even display them.
// Instead, display the first section directly.
- if( count( $lines ) <= 2 ) {
- if( !empty( $lines ) ) {
+ if ( count( $lines ) <= 2 ) {
+ if ( !empty( $lines ) ) {
$this->showChunk( $namespace, $from, $to, $hideredirects );
} else {
$output->addHTML( $this->namespaceForm( $namespace, $from, $to, $hideredirects ) );
# At this point, $lines should contain an even number of elements.
$out .= Xml::openElement( 'table', array( 'class' => 'allpageslist' ) );
- while( count ( $lines ) > 0 ) {
+ while ( count( $lines ) > 0 ) {
$inpoint = array_shift( $lines );
$outpoint = array_shift( $lines );
$out .= $this->showline( $inpoint, $outpoint, $namespace, $hideredirects );
$nsForm = $this->namespaceForm( $namespace, $from, $to, $hideredirects );
# Is there more?
- if( $this->including() ) {
+ if ( $this->including() ) {
$out2 = '';
} else {
- if( isset( $from ) || isset( $to ) ) {
- $out2 = Xml::openElement( 'table', array( 'class' => 'mw-allpages-table-form' ) ).
- '<tr>
+ if ( isset( $from ) || isset( $to ) ) {
+ $out2 = Xml::openElement( 'table', array( 'class' => 'mw-allpages-table-form' ) ) .
+ '<tr>
<td>' .
- $nsForm .
- '</td>
+ $nsForm .
+ '</td>
<td class="mw-allpages-nav">' .
- Linker::link( $this->getTitle(), $this->msg( 'allpages' )->escaped(),
- array(), array(), 'known' ) .
- "</td>
+ Linker::link( $this->getTitle(), $this->msg( 'allpages' )->escaped(),
+ array(), array(), 'known' ) .
+ "</td>
</tr>" .
Xml::closeElement( 'table' );
} else {
* @param string $inpoint lower limit of pagenames
* @param string $outpoint upper limit of pagenames
* @param $namespace Integer (Default NS_MAIN)
- * @param bool $hideredirects dont show redirects (default FALSE)
+ * @param bool $hideRedirects don't show redirects. Default: false
* @return string
*/
- function showline( $inpoint, $outpoint, $namespace = NS_MAIN, $hideredirects ) {
+ function showline( $inpoint, $outpoint, $namespace = NS_MAIN, $hideRedirects = false ) {
global $wgContLang;
$inpointf = htmlspecialchars( str_replace( '_', ' ', $inpoint ) );
$outpointf = htmlspecialchars( str_replace( '_', ' ', $outpoint ) );
$inpointf = $wgContLang->truncate( $inpointf, $this->maxPageLength );
$outpointf = $wgContLang->truncate( $outpointf, $this->maxPageLength );
- $queryparams = $namespace ? "namespace=$namespace&" : '';
+ $queryParams = array (
+ 'from' => $inpoint,
+ 'to' => $outpoint,
+ );
- $queryhideredirects = array();
- if ( $hideredirects ) {
- $queryhideredirects['hideredirects'] = 1;
+ if( $namespace ) {
+ $queryParams['namespace'] = $namespace;
+ }
+ if ( $hideRedirects ) {
+ $queryParams['hideredirects'] = 1;
}
- $special = $this->getTitle();
- $link = htmlspecialchars( $special->getLocalUrl( $queryparams . 'from=' . urlencode( $inpoint ) . '&to=' . urlencode( $outpoint ), $queryhideredirects ) );
+ $link = htmlspecialchars(
+ $this->getTitle()->getLocalURL( $queryParams ) );
$out = $this->msg( 'alphaindexline' )->rawParams(
"<a href=\"$link\">$inpointf</a></td><td>",
$conds['page_is_redirect'] = 0;
}
- if( $toKey !== "" ) {
+ if ( $toKey !== "" ) {
$conds[] = 'page_title <= ' . $dbr->addQuotes( $toKey );
}
$conds,
__METHOD__,
array(
- 'ORDER BY' => 'page_title',
- 'LIMIT' => $this->maxPerPage + 1,
+ 'ORDER BY' => 'page_title',
+ 'LIMIT' => $this->maxPerPage + 1,
'USE INDEX' => 'name_title',
)
);
- if( $res->numRows() > 0 ) {
+ if ( $res->numRows() > 0 ) {
$out = Xml::openElement( 'table', array( 'class' => 'mw-allpages-table-chunk' ) );
- while( ( $n < $this->maxPerPage ) && ( $s = $res->fetchObject() ) ) {
+ while ( ( $n < $this->maxPerPage ) && ( $s = $res->fetchObject() ) ) {
$t = Title::newFromRow( $s );
- if( $t ) {
+ if ( $t ) {
$link = ( $s->page_is_redirect ? '<div class="allpagesredirect">' : '' ) .
Linker::link( $t ) .
- ($s->page_is_redirect ? '</div>' : '' );
+ ( $s->page_is_redirect ? '</div>' : '' );
} else {
$link = '[[' . htmlspecialchars( $s->page_title ) . ']]';
}
- if( $n % 3 == 0 ) {
+
+ if ( $n % 3 == 0 ) {
$out .= '<tr>';
}
+
$out .= "<td style=\"width:33%\">$link</td>";
$n++;
- if( $n % 3 == 0 ) {
+ if ( $n % 3 == 0 ) {
$out .= "</tr>\n";
}
}
- if( ($n % 3) != 0 ) {
+
+ if ( ( $n % 3 ) != 0 ) {
$out .= "</tr>\n";
}
$out .= Xml::closeElement( 'table' );
if ( $this->including() ) {
$out2 = '';
} else {
- if( $from == '' ) {
+ if ( $from == '' ) {
// First chunk; no previous link.
$prevTitle = null;
} else {
);
# Get first title of previous complete chunk
- if( $dbr->numrows( $res_prev ) >= $this->maxPerPage ) {
+ if ( $dbr->numrows( $res_prev ) >= $this->maxPerPage ) {
$pt = $dbr->fetchObject( $res_prev );
$prevTitle = Title::makeTitle( $namespace, $pt->page_title );
} else {
# The previous chunk is not complete, need to link to the very first title
# available in the database
$options = array( 'LIMIT' => 1 );
- if ( ! $dbr->implicitOrderby() ) {
+ if ( !$dbr->implicitOrderby() ) {
$options['ORDER BY'] = 'page_title';
}
$reallyFirstPage_title = $dbr->selectField( 'page', 'page_title',
array( 'page_namespace' => $namespace ), __METHOD__, $options );
# Show the previous link if it s not the current requested chunk
- if( $from != $reallyFirstPage_title ) {
+ if ( $from != $reallyFirstPage_title ) {
$prevTitle = Title::makeTitle( $namespace, $reallyFirstPage_title );
} else {
$prevTitle = null;
$self = $this->getTitle();
$nsForm = $this->namespaceForm( $namespace, $from, $to, $hideredirects );
- $out2 = Xml::openElement( 'table', array( 'class' => 'mw-allpages-table-form' ) ).
- '<tr>
+ $out2 = Xml::openElement( 'table', array( 'class' => 'mw-allpages-table-form' ) ) .
+ '<tr>
<td>' .
- $nsForm .
- '</td>
+ $nsForm .
+ '</td>
<td class="mw-allpages-nav">' .
- Linker::link( $self, $this->msg( 'allpages' )->escaped() );
+ Linker::link( $self, $this->msg( 'allpages' )->escaped() );
# Do we put a previous link ?
- if( isset( $prevTitle ) && $pt = $prevTitle->getText() ) {
+ if ( isset( $prevTitle ) && $pt = $prevTitle->getText() ) {
$query = array( 'from' => $prevTitle->getText() );
- if( $namespace )
+ if ( $namespace ) {
$query['namespace'] = $namespace;
+ }
- if( $hideredirects )
+ if ( $hideredirects ) {
$query['hideredirects'] = $hideredirects;
+ }
$prevLink = Linker::linkKnown(
$self,
$out2 = $this->getLanguage()->pipeList( array( $out2, $prevLink ) );
}
- if( $n == $this->maxPerPage && $s = $res->fetchObject() ) {
+ if ( $n == $this->maxPerPage && $s = $res->fetchObject() ) {
# $s is the first link of the next chunk
$t = Title::makeTitle( $namespace, $s->page_title );
$query = array( 'from' => $t->getText() );
- if( $namespace )
+ if ( $namespace ) {
$query['namespace'] = $namespace;
+ }
- if( $hideredirects )
+ if ( $hideredirects ) {
$query['hideredirects'] = $hideredirects;
+ }
$nextLink = Linker::linkKnown(
$self,
$output->addHTML( $out2 . $out );
$links = array();
- if ( isset( $prevLink ) ) $links[] = $prevLink;
- if ( isset( $nextLink ) ) $links[] = $nextLink;
+ if ( isset( $prevLink ) ) {
+ $links[] = $prevLink;
+ }
+
+ if ( isset( $nextLink ) ) {
+ $links[] = $nextLink;
+ }
if ( count( $links ) ) {
$output->addHTML(
Html::element( 'hr' ) .
- Html::rawElement( 'div', array( 'class' => 'mw-allpages-nav' ),
- $this->getLanguage()->pipeList( $links )
- ) );
+ Html::rawElement( 'div', array( 'class' => 'mw-allpages-nav' ),
+ $this->getLanguage()->pipeList( $links )
+ )
+ );
}
}
* @return array( int namespace, string dbkey, string pagename ) or NULL on error
*/
protected function getNamespaceKeyAndText( $ns, $text ) {
- if ( $text == '' )
- return array( $ns, '', '' ); # shortcut for common case
+ if ( $text == '' ) {
+ # shortcut for common case
+ return array( $ns, '', '' );
+ }
$t = Title::makeTitleSafe( $ns, $text );
if ( $t && $t->isLocal() ) {
function getQueryInfo() {
return array(
'tables' => array( 'page', 'revision' ),
- 'fields' => array( 'namespace' => 'page_namespace',
- 'title' => 'page_title',
- 'value' => 'rev_timestamp' ),
- 'conds' => array( 'page_namespace' => MWNamespace::getContentNamespaces(),
- 'page_is_redirect' => 0,
- 'page_latest=rev_id' )
+ 'fields' => array(
+ 'namespace' => 'page_namespace',
+ 'title' => 'page_title',
+ 'value' => 'rev_timestamp'
+ ),
+ 'conds' => array(
+ 'page_namespace' => MWNamespace::getContentNamespaces(),
+ 'page_is_redirect' => 0,
+ 'page_latest=rev_id'
+ )
);
}
public function __construct() {
parent::__construct( 'Blankpage' );
}
+
public function execute( $par ) {
$this->setHeaders();
$this->getOutput()->addWikiMsg( 'intentionallyblankpage' );
$s = HTMLForm::formatErrors( $this->preErrors );
if ( $s ) {
$form->addHeaderText( Html::rawElement(
- 'div',
- array( 'class' => 'error' ),
- $s
- ) );
+ 'div',
+ array( 'class' => 'error' ),
+ $s
+ ) );
}
}
}
if ( $block instanceof Block && !$block->mAuto # The block exists and isn't an autoblock
&& ( $this->type != Block::TYPE_RANGE # The block isn't a rangeblock
|| $block->getTarget() == $this->target ) # or if it is, the range is what we're about to block
- )
- {
+ ) {
$fields['HardBlock']['default'] = $block->isHardblock();
$fields['CreateAccount']['default'] = $block->prevents( 'createaccount' );
$fields['AutoBlock']['default'] = $block->isAutoblocking();
$i = 0;
$target = null;
- while( true ) {
- switch( $i++ ) {
+ while ( true ) {
+ switch ( $i++ ) {
case 0:
# The HTMLForm will check wpTarget first and only if it doesn't get
# a value use the default, which will be generated from the options
# but $data['target'] gets overriden by (non-normalized) request variable
# from previous request.
if ( $target === $performer->getName() &&
- ( $data['PreviousTarget'] !== $target || !$data['Confirm'] ) )
- {
+ ( $data['PreviousTarget'] !== $target || !$data['Confirm'] )
+ ) {
return array( 'ipb-blockingself' );
}
} elseif ( $type == Block::TYPE_RANGE ) {
}
if ( ( strlen( $data['Expiry'] ) == 0 ) || ( strlen( $data['Expiry'] ) > 50 )
- || !self::parseExpiryInput( $data['Expiry'] ) )
- {
+ || !self::parseExpiryInput( $data['Expiry'] )
+ ) {
return array( 'ipb_expiry_invalid' );
}
$reblockNotAllowed = ( array_key_exists( 'Reblock', $data ) && !$data['Reblock'] );
# Show form unless the user is already aware of this...
- if( $blockNotConfirmed || $reblockNotAllowed ) {
+ if ( $blockNotConfirmed || $reblockNotAllowed ) {
return array( array( 'ipb_already_blocked', $block->getTarget() ) );
- # Otherwise, try to update the block...
+ # Otherwise, try to update the block...
} else {
# This returns direct blocks before autoblocks/rangeblocks, since we should
# be sure the user is blocked by now it should work for our purposes
# User is trying to unblock themselves
if ( $performer->isAllowed( 'unblockself' ) ) {
return true;
- # User blocked themselves and is now trying to reverse it
+ # User blocked themselves and is now trying to reverse it
} elseif ( $performer->blockedBy() === $performer->getName() ) {
return true;
} else {
$action = $request->getText( 'action' );
- if( $action == 'unblock' || $action == 'submit' && $request->wasPosted() ) {
+ if ( $action == 'unblock' || $action == 'submit' && $request->wasPosted() ) {
# B/C @since 1.18: Unblock interface is now at Special:Unblock
$title = SpecialPage::getTitleFor( 'Unblock', $this->target );
- $out->redirect( $title->getFullUrl() );
+ $out->redirect( $title->getFullURL() );
return;
}
if ( $this->target !== '' ) {
list( $target, $type ) = Block::parseTarget( $this->target );
- switch( $type ) {
+ switch ( $type ) {
case Block::TYPE_ID:
case Block::TYPE_AUTO:
$conds['ipb_id'] = $target;
}
# Apply filters
- if( in_array( 'userblocks', $this->options ) ) {
+ if ( in_array( 'userblocks', $this->options ) ) {
$conds['ipb_user'] = 0;
}
- if( in_array( 'tempblocks', $this->options ) ) {
+ if ( in_array( 'tempblocks', $this->options ) ) {
$conds['ipb_expiry'] = 'infinity';
}
- if( in_array( 'addressblocks', $this->options ) ) {
+ if ( in_array( 'addressblocks', $this->options ) ) {
$conds[] = "ipb_user != 0 OR ipb_range_end > ipb_range_start";
}
- if( in_array( 'rangeblocks', $this->options ) ) {
+ if ( in_array( 'rangeblocks', $this->options ) ) {
$conds[] = "ipb_range_end = ipb_range_start";
}
# Show additional header for the local block only when other blocks exists.
# Not necessary in a standard installation without such extensions enabled
- if( count( $otherBlockLink ) ) {
+ if ( count( $otherBlockLink ) ) {
$out->addHTML(
Html::element( 'h2', array(), $this->msg( 'ipblocklist-localblock' )->text() ) . "\n"
);
if ( $pager->getNumRows() ) {
$out->addHTML(
$pager->getNavigationBar() .
- $pager->getBody().
- $pager->getNavigationBar()
+ $pager->getBody() .
+ $pager->getNavigationBar()
);
} elseif ( $this->target ) {
$out->addWikiMsg( 'ipblocklist-empty' );
}
- if( count( $otherBlockLink ) ) {
+ if ( count( $otherBlockLink ) ) {
$out->addHTML(
Html::rawElement(
'h2',
) . "\n"
);
$list = '';
- foreach( $otherBlockLink as $link ) {
+ foreach ( $otherBlockLink as $link ) {
$list .= Html::rawElement( 'li', array(), $link ) . "\n";
}
$out->addHTML( Html::rawElement( 'ul', array( 'class' => 'mw-ipblocklist-otherblocks' ), $list ) . "\n" );
'ipb_params' => 'blocklist-params',
'ipb_reason' => 'blocklist-reason',
);
- foreach( $headers as $key => $val ) {
+ foreach ( $headers as $key => $val ) {
$headers[$key] = $this->msg( $val )->text();
}
}
$formatted = '';
- switch( $name ) {
+ switch ( $name ) {
case 'ipb_timestamp':
$formatted = $this->getLanguage()->userTimeAndDate( $value, $this->getUser() );
break;
case 'ipb_target':
- if( $row->ipb_auto ) {
+ if ( $row->ipb_auto ) {
$formatted = $this->msg( 'autoblockid', $row->ipb_id )->parse();
} else {
list( $target, $type ) = Block::parseTarget( $row->ipb_address );
- switch( $type ) {
+ switch ( $type ) {
case Block::TYPE_USER:
case Block::TYPE_IP:
$formatted = Linker::userLink( $target->getId(), $target );
break;
case 'ipb_expiry':
- $formatted = $this->getLanguage()->formatExpiry( $value, /* User preference timezone */ true );
- if( $this->getUser()->isAllowed( 'block' ) ) {
- if( $row->ipb_auto ) {
+ $formatted = $this->getLanguage()->formatExpiry( $value, /* User preference timezone */true );
+ if ( $this->getUser()->isAllowed( 'block' ) ) {
+ if ( $row->ipb_auto ) {
$links[] = Linker::linkKnown(
SpecialPage::getTitleFor( 'Unblock' ),
$msg['unblocklink'],
}
$ua = UserArray::newFromIDs( $userids );
- foreach( $ua as $user ) {
+ foreach ( $ua as $user ) {
$name = str_replace( ' ', '_', $user->getName() );
$lb->add( NS_USER, $name );
$lb->add( NS_USER_TALK, $name );
$this->outputHeader();
$ip = $this->getRequest()->getIP();
- if( !$wgBlockOpenProxies || $this->getRequest()->getText( 'ip' ) != md5( $ip . $wgProxyKey ) ) {
+ if ( !$wgBlockOpenProxies || $this->getRequest()->getText( 'ip' ) != md5( $ip . $wgProxyKey ) ) {
$this->getOutput()->addWikiMsg( 'proxyblocker-disabled' );
return;
}
$this->outputHeader();
$this->isbn = self::cleanIsbn( $isbn ? $isbn : $this->getRequest()->getText( 'isbn' ) );
$this->getOutput()->addHTML( $this->makeForm() );
- if( strlen( $this->isbn ) > 0 ) {
- if( !self::isValidISBN( $this->isbn ) ) {
+ if ( strlen( $this->isbn ) > 0 ) {
+ if ( !self::isValidISBN( $this->isbn ) ) {
$this->getOutput()->wrapWikiMsg( "<div class=\"error\">\n$1\n</div>", 'booksources-invalid-isbn' );
}
$this->showList();
public static function isValidISBN( $isbn ) {
$isbn = self::cleanIsbn( $isbn );
$sum = 0;
- if( strlen( $isbn ) == 13 ) {
- for( $i = 0; $i < 12; $i++ ) {
- if( $i % 2 == 0 ) {
+ if ( strlen( $isbn ) == 13 ) {
+ for ( $i = 0; $i < 12; $i++ ) {
+ if ( $i % 2 == 0 ) {
$sum += $isbn[$i];
} else {
$sum += 3 * $isbn[$i];
}
}
- $check = (10 - ($sum % 10)) % 10;
+ $check = ( 10 - ( $sum % 10 ) ) % 10;
if ( $check == $isbn[12] ) {
return true;
}
- } elseif( strlen( $isbn ) == 10 ) {
- for( $i = 0; $i < 9; $i++ ) {
- $sum += $isbn[$i] * ($i + 1);
+ } elseif ( strlen( $isbn ) == 10 ) {
+ for ( $i = 0; $i < 9; $i++ ) {
+ $sum += $isbn[$i] * ( $i + 1 );
}
$check = $sum % 11;
- if( $check == 10 ) {
+ if ( $check == 10 ) {
$check = "X";
}
- if( $check == $isbn[9] ) {
+ if ( $check == $isbn[9] ) {
return true;
}
}
# Check for a local page such as Project:Book_sources and use that if available
$page = $this->msg( 'booksources' )->inContentLanguage()->text();
$title = Title::makeTitleSafe( NS_PROJECT, $page ); # Show list in content language
- if( is_object( $title ) && $title->exists() ) {
+ if ( is_object( $title ) && $title->exists() ) {
$rev = Revision::newFromTitle( $title, false, Revision::READ_NORMAL );
$content = $rev->getContent();
$this->getOutput()->addWikiMsg( 'booksources-text' );
$this->getOutput()->addHTML( '<ul>' );
$items = $wgContLang->getBookstoreList();
- foreach( $items as $label => $url )
+ foreach ( $items as $label => $url )
$this->getOutput()->addHTML( $this->makeListItem( $label, $url ) );
$this->getOutput()->addHTML( '</ul>' );
return true;
* @return array
*/
function getOrderFields() {
- return array ( 'rd_namespace', 'rd_title', 'rd_from' );
+ return array( 'rd_namespace', 'rd_title', 'rd_from' );
}
/**
$out = $from . $this->msg( 'word-separator' )->escaped();
- if( $this->getUser()->isAllowed( 'delete' ) ) {
+ if ( $this->getUser()->isAllowed( 'delete' ) ) {
$links[] = Linker::linkKnown(
$fromObj,
$this->msg( 'brokenredirects-delete' )->escaped(),
$this->getOutput()->addHTML(
Html::openElement( 'div', array( 'class' => 'mw-spcontent' ) ) .
- $this->msg( 'categoriespagetext', $cap->getNumRows() )->parseAsBlock() .
- $cap->getStartForm( $from ) .
- $cap->getNavigationBar() .
- '<ul>' . $cap->getBody() . '</ul>' .
- $cap->getNavigationBar() .
- Html::closeElement( 'div' )
+ $this->msg( 'categoriespagetext', $cap->getNumRows() )->parseAsBlock() .
+ $cap->getStartForm( $from ) .
+ $cap->getNavigationBar() .
+ '<ul>' . $cap->getBody() . '</ul>' .
+ $cap->getNavigationBar() .
+ Html::closeElement( 'div' )
);
}
function __construct( IContextSource $context, $from ) {
parent::__construct( $context );
$from = str_replace( ' ', '_', $from );
- if( $from !== '' ) {
+ if ( $from !== '' ) {
$from = Title::capitalize( $from, NS_CATEGORY );
$this->setOffset( $from );
$this->setIncludeOffset( true );
unset( $this->mDefaultQuery['from'] );
return $this->mDefaultQuery;
}
+
# protected function getOrderTypeMessages() {
# return array( 'abc' => 'special-categories-sort-abc',
# 'count' => 'special-categories-sort-count' );
public function getStartForm( $from ) {
global $wgScript;
- return Xml::tags( 'form', array( 'method' => 'get', 'action' => $wgScript ),
- Html::hidden( 'title', $this->getTitle()->getPrefixedText() ) .
- Xml::fieldset( $this->msg( 'categories' )->text(),
- Xml::inputLabel( $this->msg( 'categoriesfrom' )->text(),
+ return Xml::tags(
+ 'form',
+ array( 'method' => 'get', 'action' => $wgScript ),
+ Html::hidden( 'title', $this->getTitle()->getPrefixedText() ) .
+ Xml::fieldset(
+ $this->msg( 'categories' )->text(),
+ Xml::inputLabel(
+ $this->msg( 'categoriesfrom' )->text(),
'from', 'from', 20, $from ) .
- ' ' .
- Xml::submitButton( $this->msg( 'allpagessubmit' )->text() ) ) );
+ ' ' .
+ Xml::submitButton( $this->msg( 'allpagessubmit' )->text()
+ )
+ )
+ );
}
}
$this->mNewEmail = $request->getVal( 'wpNewEmail' );
if ( $request->wasPosted()
- && $user->matchEditToken( $request->getVal( 'token' ) ) )
- {
+ && $user->matchEditToken( $request->getVal( 'token' ) )
+ ) {
$info = $this->attemptChange( $user, $this->mPassword, $this->mNewEmail );
if ( $info === true ) {
$this->doReturnTo();
$this->getOutput()->addHTML(
Xml::fieldset( $this->msg( 'changeemail-header' )->text() ) .
- Xml::openElement( 'form',
- array(
- 'method' => 'post',
- 'action' => $this->getTitle()->getLocalUrl(),
- 'id' => 'mw-changeemail-form' ) ) . "\n" .
- Html::hidden( 'token', $user->getEditToken() ) . "\n" .
- Html::hidden( 'returnto', $this->getRequest()->getVal( 'returnto' ) ) . "\n" .
- $this->msg( 'changeemail-text' )->parseAsBlock() . "\n" .
- Xml::openElement( 'table', array( 'id' => 'mw-changeemail-table' ) ) . "\n"
+ Xml::openElement( 'form',
+ array(
+ 'method' => 'post',
+ 'action' => $this->getTitle()->getLocalURL(),
+ 'id' => 'mw-changeemail-form' ) ) . "\n" .
+ Html::hidden( 'token', $user->getEditToken() ) . "\n" .
+ Html::hidden( 'returnto', $this->getRequest()->getVal( 'returnto' ) ) . "\n" .
+ $this->msg( 'changeemail-text' )->parseAsBlock() . "\n" .
+ Xml::openElement( 'table', array( 'id' => 'mw-changeemail-table' ) ) . "\n"
);
$items = array(
array( 'wpName', 'username', 'text', $user->getName() ),
$this->getOutput()->addHTML(
$this->pretty( $items ) .
- "\n" .
- "<tr>\n" .
+ "\n" .
+ "<tr>\n" .
"<td></td>\n" .
'<td class="mw-input">' .
- Xml::submitButton( $this->msg( 'changeemail-submit' )->text() ) .
- Xml::submitButton( $this->msg( 'changeemail-cancel' )->text(), array( 'name' => 'wpCancel' ) ) .
+ Xml::submitButton( $this->msg( 'changeemail-submit' )->text() ) .
+ Xml::submitButton( $this->msg( 'changeemail-cancel' )->text(), array( 'name' => 'wpCancel' ) ) .
"</td>\n" .
- "</tr>\n" .
- Xml::closeElement( 'table' ) .
- Xml::closeElement( 'form' ) .
- Xml::closeElement( 'fieldset' ) . "\n"
+ "</tr>\n" .
+ Xml::closeElement( 'table' ) .
+ Xml::closeElement( 'form' ) .
+ Xml::closeElement( 'fieldset' ) . "\n"
);
}
$out = '';
foreach ( $fields as $list ) {
list( $name, $label, $type, $value ) = $list;
- if( $type == 'text' ) {
+ if ( $type == 'text' ) {
$field = htmlspecialchars( $value );
} else {
$attribs = array( 'id' => $name );
if ( !$status->isGood() ) {
$this->getOutput()->addHTML(
'<p class="error">' .
- $this->getOutput()->parseInline( $status->getWikiText( 'mailerror' ) ) .
- '</p>' );
+ $this->getOutput()->parseInline( $status->getWikiText( 'mailerror' ) ) .
+ '</p>' );
return false;
}
$this->mDomain = $request->getVal( 'wpDomain' );
$user = $this->getUser();
- if( !$request->wasPosted() && !$user->isLoggedIn() ) {
+ if ( !$request->wasPosted() && !$user->isLoggedIn() ) {
$this->error( $this->msg( 'resetpass-no-info' )->text() );
return;
}
- if( $request->wasPosted() && $request->getBool( 'wpCancel' ) ) {
+ if ( $request->wasPosted() && $request->getBool( 'wpCancel' ) ) {
$this->doReturnTo();
return;
}
$this->checkReadOnly();
- if( $request->wasPosted() && $user->matchEditToken( $request->getVal( 'token' ) ) ) {
+ if ( $request->wasPosted() && $user->matchEditToken( $request->getVal( 'token' ) ) ) {
try {
$this->mDomain = $wgAuth->getDomain();
- if( !$wgAuth->allowPasswordChange() ) {
+ if ( !$wgAuth->allowPasswordChange() ) {
$this->error( $this->msg( 'resetpass_forbidden' )->text() );
return;
}
$this->attemptReset( $this->mNewpass, $this->mRetype );
- if( $user->isLoggedIn() ) {
+ if ( $user->isLoggedIn() ) {
$this->doReturnTo();
} else {
LoginForm::setLoginToken();
$token = LoginForm::getLoginToken();
$data = array(
- 'action' => 'submitlogin',
- 'wpName' => $this->mUserName,
- 'wpDomain' => $this->mDomain,
+ 'action' => 'submitlogin',
+ 'wpName' => $this->mUserName,
+ 'wpDomain' => $this->mDomain,
'wpLoginToken' => $token,
- 'wpPassword' => $request->getVal( 'wpNewPassword' ),
+ 'wpPassword' => $request->getVal( 'wpNewPassword' ),
) + $request->getValues( 'wpRemember', 'returnto', 'returntoquery' );
$login = new LoginForm( new FauxRequest( $data, true ) );
$login->setContext( $this->getContext() );
$login->execute( null );
}
return;
- } catch( PasswordError $e ) {
+ } catch ( PasswordError $e ) {
$this->error( $e->getMessage() );
}
}
$rememberMe = '<tr>' .
'<td></td>' .
'<td class="mw-input">' .
- Xml::checkLabel(
- $this->msg( 'remembermypassword' )->numParams( ceil( $wgCookieExpiration / ( 3600 * 24 ) ) )->text(),
- 'wpRemember', 'wpRemember',
- $this->getRequest()->getCheck( 'wpRemember' ) ) .
+ Xml::checkLabel(
+ $this->msg( 'remembermypassword' )->numParams( ceil( $wgCookieExpiration / ( 3600 * 24 ) ) )->text(),
+ 'wpRemember', 'wpRemember',
+ $this->getRequest()->getCheck( 'wpRemember' ) ) .
'</td>' .
- '</tr>';
+ '</tr>';
$submitMsg = 'resetpass_submit';
$oldpassMsg = 'resetpass-temp-password';
} else {
$extraFields = array();
wfRunHooks( 'ChangePasswordForm', array( &$extraFields ) );
$prettyFields = array(
- array( 'wpName', 'username', 'text', $this->mUserName ),
- array( 'wpPassword', $oldpassMsg, 'password', $this->mOldpass ),
- array( 'wpNewPassword', 'newpassword', 'password', null ),
- array( 'wpRetype', 'retypenew', 'password', null ),
- );
+ array( 'wpName', 'username', 'text', $this->mUserName ),
+ array( 'wpPassword', $oldpassMsg, 'password', $this->mOldpass ),
+ array( 'wpNewPassword', 'newpassword', 'password', null ),
+ array( 'wpRetype', 'retypenew', 'password', null ),
+ );
$prettyFields = array_merge( $prettyFields, $extraFields );
$hiddenFields = array(
'token' => $user->getEditToken(),
'wpDomain' => $this->mDomain,
) + $this->getRequest()->getValues( 'returnto', 'returntoquery' );
$hiddenFieldsStr = '';
- foreach( $hiddenFields as $fieldname => $fieldvalue ) {
+ foreach ( $hiddenFields as $fieldname => $fieldvalue ) {
$hiddenFieldsStr .= Html::hidden( $fieldname, $fieldvalue ) . "\n";
}
$this->getOutput()->addHTML(
Xml::fieldset( $this->msg( 'resetpass_header' )->text() ) .
- Xml::openElement( 'form',
- array(
- 'method' => 'post',
- 'action' => $this->getTitle()->getLocalUrl(),
- 'id' => 'mw-resetpass-form' ) ) . "\n" .
- $hiddenFieldsStr .
- $this->msg( 'resetpass_text' )->parseAsBlock() . "\n" .
- Xml::openElement( 'table', array( 'id' => 'mw-resetpass-table' ) ) . "\n" .
- $this->pretty( $prettyFields ) . "\n" .
- $rememberMe .
- "<tr>\n" .
+ Xml::openElement( 'form',
+ array(
+ 'method' => 'post',
+ 'action' => $this->getTitle()->getLocalURL(),
+ 'id' => 'mw-resetpass-form' ) ) . "\n" .
+ $hiddenFieldsStr .
+ $this->msg( 'resetpass_text' )->parseAsBlock() . "\n" .
+ Xml::openElement( 'table', array( 'id' => 'mw-resetpass-table' ) ) . "\n" .
+ $this->pretty( $prettyFields ) . "\n" .
+ $rememberMe .
+ "<tr>\n" .
"<td></td>\n" .
'<td class="mw-input">' .
- Xml::submitButton( $this->msg( $submitMsg )->text() ) .
- Xml::submitButton( $this->msg( 'resetpass-submit-cancel' )->text(), array( 'name' => 'wpCancel' ) ) .
+ Xml::submitButton( $this->msg( $submitMsg )->text() ) .
+ Xml::submitButton( $this->msg( 'resetpass-submit-cancel' )->text(), array( 'name' => 'wpCancel' ) ) .
"</td>\n" .
- "</tr>\n" .
- Xml::closeElement( 'table' ) .
- Xml::closeElement( 'form' ) .
- Xml::closeElement( 'fieldset' ) . "\n"
+ "</tr>\n" .
+ Xml::closeElement( 'table' ) .
+ Xml::closeElement( 'form' ) .
+ Xml::closeElement( 'fieldset' ) . "\n"
);
}
$out = '';
foreach ( $fields as $list ) {
list( $name, $label, $type, $value ) = $list;
- if( $type == 'text' ) {
+ if ( $type == 'text' ) {
$field = htmlspecialchars( $value );
} else {
$attribs = array( 'id' => $name );
}
$out .= "<tr>\n";
$out .= "\t<td class='mw-label'>";
- if ( $type != 'text' )
+
+ if ( $type != 'text' ) {
$out .= Xml::label( $this->msg( $label )->text(), $name );
- else
+ } else {
$out .= $this->msg( $label )->escaped();
+ }
+
$out .= "</td>\n";
$out .= "\t<td class='mw-input'>";
$out .= $field;
$user = User::newFromName( $this->mUserName );
}
- if( !$user || $user->isAnon() ) {
+ if ( !$user || $user->isAnon() ) {
throw new PasswordError( $this->msg( 'nosuchusershort', $this->mUserName )->text() );
}
- if( $newpass !== $retype ) {
+ if ( $newpass !== $retype ) {
wfRunHooks( 'PrefsPasswordAudit', array( $user, $newpass, 'badretype' ) );
throw new PasswordError( $this->msg( 'badretype' )->text() );
}
throw new PasswordError( $this->msg( 'login-throttled' )->text() );
}
- if( !$user->checkTemporaryPassword( $this->mOldpass ) && !$user->checkPassword( $this->mOldpass ) ) {
+ if ( !$user->checkTemporaryPassword( $this->mOldpass ) && !$user->checkPassword( $this->mOldpass ) ) {
wfRunHooks( 'PrefsPasswordAudit', array( $user, $newpass, 'wrongpassword' ) );
throw new PasswordError( $this->msg( 'resetpass-wrong-oldpass' )->text() );
}
$user->setPassword( $this->mNewpass );
wfRunHooks( 'PrefsPasswordAudit', array( $user, $newpass, 'success' ) );
$this->mNewpass = $this->mOldpass = $this->mRetype = '';
- } catch( PasswordError $e ) {
+ } catch ( PasswordError $e ) {
wfRunHooks( 'PrefsPasswordAudit', array( $user, $newpass, 'error' ) );
throw new PasswordError( $e->getMessage() );
}
$rev1 = self::revOrTitle( $data['Revision1'], $data['Page1'] );
$rev2 = self::revOrTitle( $data['Revision2'], $data['Page2'] );
- if( $rev1 && $rev2 ) {
+ if ( $rev1 && $rev2 ) {
$revision = Revision::newFromId( $rev1 );
if ( $revision ) { // NOTE: $rev1 was already checked, should exist.
}
public static function revOrTitle( $revision, $title ) {
- if( $revision ) {
+ if ( $revision ) {
return $revision;
- } elseif( $title ) {
+ } elseif ( $title ) {
$title = Title::newFromText( $title );
- if( $title instanceof Title ) {
+ if ( $title instanceof Title ) {
return $title->getLatestRevID();
}
}
* @author Rob Church <robchur@gmail.com>
*/
class EmailConfirmation extends UnlistedSpecialPage {
-
- /**
- * Constructor
- */
public function __construct() {
parent::__construct( 'Confirmemail' );
}
/**
* Main execution point
*
- * @param $code Confirmation code passed to the page
+ * @param null|string $code Confirmation code passed to the page
*/
function execute( $code ) {
$this->setHeaders();
$this->checkReadOnly();
- if( $code === null || $code === '' ) {
- if( $this->getUser()->isLoggedIn() ) {
- if( Sanitizer::validateEmail( $this->getUser()->getEmail() ) ) {
+ if ( $code === null || $code === '' ) {
+ if ( $this->getUser()->isLoggedIn() ) {
+ if ( Sanitizer::validateEmail( $this->getUser()->getEmail() ) ) {
$this->showRequestForm();
} else {
$this->getOutput()->addWikiMsg( 'confirmemail_noemail' );
array(),
array( 'returnto' => $this->getTitle()->getPrefixedText() )
);
- $this->getOutput()->addHTML( $this->msg( 'confirmemail_needlogin' )->rawParams( $llink )->parse() );
+ $this->getOutput()->addHTML(
+ $this->msg( 'confirmemail_needlogin' )->rawParams( $llink )->parse()
+ );
}
} else {
$this->attemptConfirm( $code );
function showRequestForm() {
$user = $this->getUser();
$out = $this->getOutput();
- if( $this->getRequest()->wasPosted() && $user->matchEditToken( $this->getRequest()->getText( 'token' ) ) ) {
+
+ if ( $this->getRequest()->wasPosted() &&
+ $user->matchEditToken( $this->getRequest()->getText( 'token' ) )
+ ) {
$status = $user->sendConfirmationMail();
if ( $status->isGood() ) {
$out->addWikiMsg( 'confirmemail_sent' );
$out->addWikiText( $status->getWikiText( 'confirmemail_sendfailed' ) );
}
} else {
- if( $user->isEmailConfirmed() ) {
+ if ( $user->isEmailConfirmed() ) {
// date and time are separate parameters to facilitate localisation.
// $time is kept for backward compat reasons.
// 'emailauthenticated' is also used in SpecialPreferences.php
$t = $lang->userTime( $emailAuthenticated, $user );
$out->addWikiMsg( 'emailauthenticated', $time, $d, $t );
}
- if( $user->isEmailConfirmationPending() ) {
- $out->wrapWikiMsg( "<div class=\"error mw-confirmemail-pending\">\n$1\n</div>", 'confirmemail_pending' );
+
+ if ( $user->isEmailConfirmationPending() ) {
+ $out->wrapWikiMsg(
+ "<div class=\"error mw-confirmemail-pending\">\n$1\n</div>",
+ 'confirmemail_pending'
+ );
}
+
$out->addWikiMsg( 'confirmemail_text' );
- $form = Xml::openElement( 'form', array( 'method' => 'post', 'action' => $this->getTitle()->getLocalUrl() ) );
+ $form = Xml::openElement(
+ 'form',
+ array( 'method' => 'post', 'action' => $this->getTitle()->getLocalURL() )
+ );
$form .= Html::hidden( 'token', $user->getEditToken() );
$form .= Xml::submitButton( $this->msg( 'confirmemail_send' )->text() );
$form .= Xml::closeElement( 'form' );
*/
function attemptConfirm( $code ) {
$user = User::newFromConfirmationCode( $code );
- if( is_object( $user ) ) {
- $user->confirmEmail();
- $user->saveSettings();
- $message = $this->getUser()->isLoggedIn() ? 'confirmemail_loggedin' : 'confirmemail_success';
- $this->getOutput()->addWikiMsg( $message );
- if( !$this->getUser()->isLoggedIn() ) {
- $title = SpecialPage::getTitleFor( 'Userlogin' );
- $this->getOutput()->returnToMain( true, $title );
- }
- } else {
+ if ( !is_object( $user ) ) {
$this->getOutput()->addWikiMsg( 'confirmemail_invalid' );
+ return;
}
- }
+ $user->confirmEmail();
+ $user->saveSettings();
+ $message = $this->getUser()->isLoggedIn() ? 'confirmemail_loggedin' : 'confirmemail_success';
+ $this->getOutput()->addWikiMsg( $message );
+
+ if ( !$this->getUser()->isLoggedIn() ) {
+ $title = SpecialPage::getTitleFor( 'Userlogin' );
+ $this->getOutput()->returnToMain( true, $title );
+ }
+ }
}
/**
* @ingroup SpecialPage
*/
class EmailInvalidation extends UnlistedSpecialPage {
-
public function __construct() {
parent::__construct( 'Invalidateemail' );
}
function execute( $code ) {
$this->setHeaders();
-
$this->checkReadOnly();
-
$this->attemptInvalidate( $code );
}
*/
function attemptInvalidate( $code ) {
$user = User::newFromConfirmationCode( $code );
- if( is_object( $user ) ) {
- $user->invalidateEmail();
- $user->saveSettings();
- $this->getOutput()->addWikiMsg( 'confirmemail_invalidated' );
- if( !$this->getUser()->isLoggedIn() ) {
- $this->getOutput()->returnToMain();
- }
- } else {
+ if ( !is_object( $user ) ) {
$this->getOutput()->addWikiMsg( 'confirmemail_invalid' );
+ return;
+ }
+
+ $user->invalidateEmail();
+ $user->saveSettings();
+ $this->getOutput()->addWikiMsg( 'confirmemail_invalidated' );
+
+ if ( !$this->getUser()->isLoggedIn() ) {
+ $this->getOutput()->returnToMain();
}
}
}
*/
class SpecialContributions extends SpecialPage {
-
protected $opts;
public function __construct() {
if ( $this->opts['contribs'] != 'newbie' ) {
$target = $nt->getText();
$out->addSubtitle( $this->contributionsSub( $userObj ) );
- $out->setHTMLTitle( $this->msg( 'pagetitle', $this->msg( 'contributions-title', $target )->plain() ) );
+ $out->setHTMLTitle( $this->msg(
+ 'pagetitle',
+ $this->msg( 'contributions-title', $target )->plain()
+ ) );
$this->getSkin()->setRelevantUser( $userObj );
} else {
$out->addSubtitle( $this->msg( 'sp-contributions-newbies-sub' ) );
- $out->setHTMLTitle( $this->msg( 'pagetitle', $this->msg( 'sp-contributions-newbies-title' )->plain() ) );
+ $out->setHTMLTitle( $this->msg(
+ 'pagetitle',
+ $this->msg( 'sp-contributions-newbies-title' )->plain()
+ ) );
}
if ( ( $ns = $request->getVal( 'namespace', null ) ) !== null && $ns !== '' ) {
}
$this->opts['associated'] = $request->getBool( 'associated' );
-
- $this->opts['nsInvert'] = (bool) $request->getVal( 'nsInvert' );
-
- $this->opts['tagfilter'] = (string) $request->getVal( 'tagfilter' );
+ $this->opts['nsInvert'] = (bool)$request->getVal( 'nsInvert' );
+ $this->opts['tagfilter'] = (string)$request->getVal( 'tagfilter' );
// Allows reverts to have the bot flag in recent changes. It is just here to
// be passed in the form at the top of the page
$this->addFeedLinks( array( 'action' => 'feedcontributions', 'user' => $target ) );
if ( wfRunHooks( 'SpecialContributionsBeforeMainOutput', array( $id ) ) ) {
-
$out->addHTML( $this->getForm() );
$pager = new ContribsPager( $this->getContext(), array(
'nsInvert' => $this->opts['nsInvert'],
'associated' => $this->opts['associated'],
) );
+
if ( !$pager->getNumRows() ) {
$out->addWikiMsg( 'nocontribs', $target );
} else {
# Show a message about slave lag, if applicable
$lag = wfGetLB()->safeGetLag( $pager->getDatabase() );
- if ( $lag > 0 )
+ if ( $lag > 0 ) {
$out->showLagWarning( $lag );
+ }
$out->addHTML(
'<p>' . $pager->getNavigationBar() . '</p>' .
- $pager->getBody() .
- '<p>' . $pager->getNavigationBar() . '</p>'
+ $pager->getBody() .
+ '<p>' . $pager->getNavigationBar() . '</p>'
);
}
$out->preventClickjacking( $pager->getPreventClickjacking() );
# Show the appropriate "footer" message - WHOIS tools, etc.
if ( $this->opts['contribs'] == 'newbie' ) {
$message = 'sp-contributions-footer-newbies';
- } elseif( IP::isIPAddress( $target ) ) {
+ } elseif ( IP::isIPAddress( $target ) ) {
$message = 'sp-contributions-footer-anon';
- } elseif( $userObj->isAnon() ) {
+ } elseif ( $userObj->isAnon() ) {
// No message for non-existing users
$message = '';
} else {
$message = 'sp-contributions-footer';
}
- if( $message ) {
+ if ( $message ) {
if ( !$this->msg( $message, $target )->isDisabled() ) {
$out->wrapWikiMsg(
"<div class='mw-contributions-footer'>\n$1\n</div>",
if ( $oldMsg->exists() ) {
$linksWithParentheses = $this->msg( 'parentheses' )->rawParams( $links )->escaped();
return $oldMsg->rawParams( "$user $linksWithParentheses" );
- } else {
- return $this->msg( 'contribsub2' )->rawParams( $user, $links );
}
+
+ return $this->msg( 'contribsub2' )->rawParams( $user, $links );
}
/**
SpecialPage::getTitleFor( 'Log', 'block' ),
$this->msg( 'sp-contributions-blocklog' )->escaped(),
array(),
- array(
- 'page' => $userpage->getPrefixedText()
- )
+ array( 'page' => $userpage->getPrefixedText() )
);
}
# Uploads
$this->opts['topOnly'] = false;
}
- $form = Html::openElement( 'form', array( 'method' => 'get', 'action' => $wgScript, 'class' => 'mw-contributions-form' ) );
+ $form = Html::openElement(
+ 'form',
+ array(
+ 'method' => 'get',
+ 'action' => $wgScript,
+ 'class' => 'mw-contributions-form'
+ )
+ );
# Add hidden params for tracking except for parameters in $skipParameters
- $skipParameters = array( 'namespace', 'nsInvert', 'deletedOnly', 'target', 'contribs', 'year', 'month', 'topOnly', 'associated' );
+ $skipParameters = array(
+ 'namespace',
+ 'nsInvert',
+ 'deletedOnly',
+ 'target',
+ 'contribs',
+ 'year',
+ 'month',
+ 'topOnly',
+ 'associated'
+ );
+
foreach ( $this->opts as $name => $value ) {
if ( in_array( $name, $skipParameters ) ) {
continue;
$tagFilter = ChangeTags::buildTagFilterSelector( $this->opts['tagfilter'] );
if ( $tagFilter ) {
- $filterSelection =
- Html::rawElement( 'td', array( 'class' => 'mw-label' ), array_shift( $tagFilter ) ) .
- Html::rawElement( 'td', array( 'class' => 'mw-input' ), implode( ' ', $tagFilter ) );
+ $filterSelection = Html::rawElement(
+ 'td',
+ array( 'class' => 'mw-label' ),
+ array_shift( $tagFilter )
+ );
+ $filterSelection .= Html::rawElement(
+ 'td',
+ array( 'class' => 'mw-input' ),
+ implode( ' ', $tagFilter )
+ );
} else {
$filterSelection = Html::rawElement( 'td', array( 'colspan' => 2 ), '' );
}
- $targetSelection = Html::rawElement( 'td', array( 'colspan' => 2 ),
- Xml::radioLabel(
- $this->msg( 'sp-contributions-newbies' )->text(),
- 'contribs',
- 'newbie',
- 'newbie',
- $this->opts['contribs'] == 'newbie',
- array( 'class' => 'mw-input' )
- ) . '<br />' .
- Xml::radioLabel(
- $this->msg( 'sp-contributions-username' )->text(),
- 'contribs',
- 'user',
- 'user',
- $this->opts['contribs'] == 'user',
- array( 'class' => 'mw-input' )
- ) . ' ' .
- Html::input(
- 'target',
- $this->opts['target'],
- 'text',
- array( 'size' => '40', 'required' => '', 'class' => 'mw-input' ) +
- ( $this->opts['target'] ? array() : array( 'autofocus' )
+ $labelNewbies = Xml::radioLabel(
+ $this->msg( 'sp-contributions-newbies' )->text(),
+ 'contribs',
+ 'newbie',
+ 'newbie',
+ $this->opts['contribs'] == 'newbie',
+ array( 'class' => 'mw-input' )
+ );
+ $labelUsername = Xml::radioLabel(
+ $this->msg( 'sp-contributions-username' )->text(),
+ 'contribs',
+ 'user',
+ 'user',
+ $this->opts['contribs'] == 'user',
+ array( 'class' => 'mw-input' )
+ );
+ $input = Html::input(
+ 'target',
+ $this->opts['target'],
+ 'text',
+ array( 'size' => '40', 'required' => '', 'class' => 'mw-input' ) +
+ ( $this->opts['target'] ? array() : array( 'autofocus' )
)
- ) . ' '
+ );
+ $targetSelection = Html::rawElement(
+ 'td',
+ array( 'colspan' => 2 ),
+ $labelNewbies . '<br />' . $labelUsername . ' ' . $input . ' '
);
- $namespaceSelection =
- Xml::tags( 'td', array( 'class' => 'mw-label' ),
- Xml::label(
- $this->msg( 'namespace' )->text(),
- 'namespace',
- ''
- )
- ) .
- Html::rawElement( 'td', null,
- Html::namespaceSelector( array(
- 'selected' => $this->opts['namespace'],
- 'all' => '',
- ), array(
- 'name' => 'namespace',
- 'id' => 'namespace',
+ $namespaceSelection = Xml::tags(
+ 'td',
+ array( 'class' => 'mw-label' ),
+ Xml::label(
+ $this->msg( 'namespace' )->text(),
+ 'namespace',
+ ''
+ )
+ );
+ $namespaceSelection .= Html::rawElement(
+ 'td',
+ null,
+ Html::namespaceSelector(
+ array( 'selected' => $this->opts['namespace'], 'all' => '' ),
+ array(
+ 'name' => 'namespace',
+ 'id' => 'namespace',
'class' => 'namespaceselector',
- ) ) .
- ' ' .
- Html::rawElement( 'span', array( 'style' => 'white-space: nowrap' ),
- Xml::checkLabel(
- $this->msg( 'invert' )->text(),
- 'nsInvert',
- 'nsInvert',
- $this->opts['nsInvert'],
- array( 'title' => $this->msg( 'tooltip-invert' )->text(), 'class' => 'mw-input' )
- ) . ' '
- ) .
- Html::rawElement( 'span', array( 'style' => 'white-space: nowrap' ),
- Xml::checkLabel(
- $this->msg( 'namespace_association' )->text(),
- 'associated',
- 'associated',
- $this->opts['associated'],
- array( 'title' => $this->msg( 'tooltip-namespace_association' )->text(), 'class' => 'mw-input' )
- ) . ' '
)
- );
+ ) . ' ' .
+ Html::rawElement(
+ 'span',
+ array( 'style' => 'white-space: nowrap' ),
+ Xml::checkLabel(
+ $this->msg( 'invert' )->text(),
+ 'nsInvert',
+ 'nsInvert',
+ $this->opts['nsInvert'],
+ array(
+ 'title' => $this->msg( 'tooltip-invert' )->text(),
+ 'class' => 'mw-input'
+ )
+ ) . ' '
+ ) .
+ Html::rawElement( 'span', array( 'style' => 'white-space: nowrap' ),
+ Xml::checkLabel(
+ $this->msg( 'namespace_association' )->text(),
+ 'associated',
+ 'associated',
+ $this->opts['associated'],
+ array(
+ 'title' => $this->msg( 'tooltip-namespace_association' )->text(),
+ 'class' => 'mw-input'
+ )
+ ) . ' '
+ )
+ );
if ( $this->getUser()->isAllowed( 'deletedhistory' ) ) {
- $deletedOnlyCheck = Html::rawElement( 'span', array( 'style' => 'white-space: nowrap' ),
+ $deletedOnlyCheck = Html::rawElement(
+ 'span',
+ array( 'style' => 'white-space: nowrap' ),
Xml::checkLabel(
$this->msg( 'history-show-deleted' )->text(),
'deletedOnly',
$deletedOnlyCheck = '';
}
- $extraOptions = Html::rawElement( 'td', array( 'colspan' => 2 ),
- $deletedOnlyCheck .
- Html::rawElement( 'span', array( 'style' => 'white-space: nowrap' ),
- Xml::checkLabel(
- $this->msg( 'sp-contributions-toponly' )->text(),
- 'topOnly',
- 'mw-show-top-only',
- $this->opts['topOnly'],
- array( 'class' => 'mw-input' )
- )
+ $checkLabelTopOnly = Html::rawElement(
+ 'span',
+ array( 'style' => 'white-space: nowrap' ),
+ Xml::checkLabel(
+ $this->msg( 'sp-contributions-toponly' )->text(),
+ 'topOnly',
+ 'mw-show-top-only',
+ $this->opts['topOnly'],
+ array( 'class' => 'mw-input' )
)
);
+ $extraOptions = Html::rawElement(
+ 'td',
+ array( 'colspan' => 2 ),
+ $deletedOnlyCheck . $checkLabelTopOnly
+ );
$dateSelectionAndSubmit = Xml::tags( 'td', array( 'colspan' => 2 ),
Xml::dateMenu(
$this->opts['year'],
$this->opts['month']
) . ' ' .
- Xml::submitButton(
- $this->msg( 'sp-contributions-submit' )->text(),
- array( 'class' => 'mw-submit' )
- )
+ Xml::submitButton(
+ $this->msg( 'sp-contributions-submit' )->text(),
+ array( 'class' => 'mw-submit' )
+ )
);
- $form .=
- Xml::fieldset( $this->msg( 'sp-contributions-search' )->text() ) .
- Html::rawElement( 'table', array( 'class' => 'mw-contributions-table' ), "\n" .
- Html::rawElement( 'tr', array(), $targetSelection ) . "\n" .
- Html::rawElement( 'tr', array(), $namespaceSelection ) . "\n" .
- Html::rawElement( 'tr', array(), $filterSelection ) . "\n" .
- Html::rawElement( 'tr', array(), $extraOptions ) . "\n" .
- Html::rawElement( 'tr', array(), $dateSelectionAndSubmit ) . "\n"
- );
+ $form .= Xml::fieldset( $this->msg( 'sp-contributions-search' )->text() );
+ $form .= Html::rawElement( 'table', array( 'class' => 'mw-contributions-table' ), "\n" .
+ Html::rawElement( 'tr', array(), $targetSelection ) . "\n" .
+ Html::rawElement( 'tr', array(), $namespaceSelection ) . "\n" .
+ Html::rawElement( 'tr', array(), $filterSelection ) . "\n" .
+ Html::rawElement( 'tr', array(), $extraOptions ) . "\n" .
+ Html::rawElement( 'tr', array(), $dateSelectionAndSubmit ) . "\n"
+ );
$explain = $this->msg( 'sp-contributions-explain' );
if ( !$explain->isBlank() ) {
$form .= "<p id='mw-sp-contributions-explain'>{$explain->parse()}</p>";
}
- $form .= Xml::closeElement( 'fieldset' ) .
- Xml::closeElement( 'form' );
+
+ $form .= Xml::closeElement( 'fieldset' ) . Xml::closeElement( 'form' );
+
return $form;
}
function __construct( IContextSource $context, array $options ) {
parent::__construct( $context );
- $msgs = array( 'uctop', 'diff', 'newarticle', 'rollbacklink', 'diff', 'hist', 'rev-delundel', 'pipe-separator' );
+ $msgs = array(
+ 'diff',
+ 'hist',
+ 'newarticle',
+ 'pipe-separator',
+ 'rev-delundel',
+ 'rollbacklink',
+ 'uctop'
+ );
foreach ( $msgs as $msg ) {
$this->messages[$msg] = $this->msg( $msg )->escaped();
* @return ResultWrapper
*/
function reallyDoQuery( $offset, $limit, $descending ) {
- list( $tables, $fields, $conds, $fname, $options, $join_conds ) = $this->buildQueryInfo( $offset, $limit, $descending );
+ list( $tables, $fields, $conds, $fname, $options, $join_conds ) = $this->buildQueryInfo(
+ $offset,
+ $limit,
+ $descending
+ );
$pager = $this;
/*
$join_cond['user'] = Revision::userJoinCond();
$queryInfo = array(
- 'tables' => $tables,
- 'fields' => array_merge(
+ 'tables' => $tables,
+ 'fields' => array_merge(
Revision::selectFields(),
Revision::selectUserFields(),
array( 'page_namespace', 'page_title', 'page_is_new',
'page_latest', 'page_is_redirect', 'page_len' )
),
- 'conds' => $conds,
- 'options' => array( 'USE INDEX' => array( 'revision' => $index ) ),
+ 'conds' => $conds,
+ 'options' => array( 'USE INDEX' => array( 'revision' => $index ) ),
'join_conds' => $join_cond
);
# ignore local groups with the bot right
# @todo FIXME: Global groups may have 'bot' rights
$groupsWithBotPermission = User::getGroupsWithPermission( 'bot' );
- if( count( $groupsWithBotPermission ) ) {
+ if ( count( $groupsWithBotPermission ) ) {
$tables[] = 'user_groups';
$condition[] = 'ug_group IS NULL';
$join_conds['user_groups'] = array(
$index = 'usertext_timestamp';
}
}
+
if ( $this->deletedOnly ) {
$condition[] = 'rev_deleted != 0';
}
+
if ( $this->topOnly ) {
$condition[] = 'rev_id = page_latest';
}
+
return array( $tables, $index, $condition, $join_conds );
}
if ( !$this->associated ) {
return array( "page_namespace $eq_op $selectedNS" );
- } else {
- $associatedNS = $this->mDb->addQuotes(
- MWNamespace::getAssociated( $this->namespace )
- );
- return array(
- "page_namespace $eq_op $selectedNS " .
- $bool_op .
- " page_namespace $eq_op $associatedNS"
- );
}
- } else {
- return array();
+ $associatedNS = $this->mDb->addQuotes(
+ MWNamespace::getAssociated( $this->namespace )
+ );
+
+ return array(
+ "page_namespace $eq_op $selectedNS " .
+ $bool_op .
+ " page_namespace $eq_op $associatedNS"
+ );
}
+
+ return array();
}
function getIndexField() {
$batch = new LinkBatch();
# Give some pointers to make (last) links
foreach ( $this->mResult as $row ) {
- if( isset( $row->rev_parent_id ) && $row->rev_parent_id ) {
+ if ( isset( $row->rev_parent_id ) && $row->rev_parent_id ) {
$revIds[] = $row->rev_parent_id;
}
if ( isset( $row->rev_id ) ) {
*/
wfSuppressWarnings();
$rev = new Revision( $row );
- $validRevision = (bool) $rev->getId();
+ $validRevision = (bool)$rev->getId();
wfRestoreWarnings();
if ( $validRevision ) {
$topmarktext .= '<span class="mw-uctop">' . $this->messages['uctop'] . '</span>';
# Add rollback link
if ( !$row->page_is_new && $page->quickUserCan( 'rollback', $user )
- && $page->quickUserCan( 'edit', $user ) )
- {
+ && $page->quickUserCan( 'edit', $user )
+ ) {
$this->preventClickjacking();
$topmarktext .= ' ' . Linker::generateRollback( $rev, $this->getContext() );
}
// For some reason rev_parent_id isn't populated for this row.
// Its rumoured this is true on wikipedia for some revisions (bug 34922).
// Next best thing is to have the total number of bytes.
- $chardiff = ' <span class="mw-changeslist-separator">. .</span> ' . Linker::formatRevisionSize( $row->rev_len ) . ' <span class="mw-changeslist-separator">. .</span> ';
+ $chardiff = ' <span class="mw-changeslist-separator">. .</span> ';
+ $chardiff .= Linker::formatRevisionSize( $row->rev_len );
+ $chardiff .= ' <span class="mw-changeslist-separator">. .</span> ';
} else {
$parentLen = isset( $this->mParentLens[$row->rev_parent_id] ) ? $this->mParentLens[$row->rev_parent_id] : 0;
- $chardiff = ' <span class="mw-changeslist-separator">. .</span> ' . ChangesList::showCharacterDifference(
- $parentLen, $row->rev_len, $this->getContext() ) . ' <span class="mw-changeslist-separator">. .</span> ';
+ $chardiff = ' <span class="mw-changeslist-separator">. .</span> ';
+ $chardiff .= ChangesList::showCharacterDifference(
+ $parentLen,
+ $row->rev_len,
+ $this->getContext()
+ );
+ $chardiff .= ' <span class="mw-changeslist-separator">. .</span> ';
}
$lang = $this->getLanguage();
$del .= ' ';
}
- $diffHistLinks = $this->msg( 'parentheses' )->rawParams( $difftext . $this->messages['pipe-separator'] . $histlink )->escaped();
+ $diffHistLinks = $this->msg( 'parentheses' )
+ ->rawParams( $difftext . $this->messages['pipe-separator'] . $histlink )
+ ->escaped();
$ret = "{$del}{$d} {$diffHistLinks}{$chardiff}{$nflag}{$mflag} {$link}{$userlink} {$comment} {$topmarktext}";
# Denote if username is redacted for this edit
}
# Tags, if any.
- list( $tagSummary, $newClasses ) = ChangeTags::formatSummaryRow( $row->ts_tags, 'contributions' );
+ list( $tagSummary, $newClasses ) = ChangeTags::formatSummaryRow(
+ $row->ts_tags,
+ 'contributions'
+ );
$classes = array_merge( $classes, $newClasses );
$ret .= " $tagSummary";
}
*/
function getSqlComment() {
if ( $this->namespace || $this->deletedOnly ) {
- return 'contributions page filtered for namespace or RevisionDeleted edits'; // potentially slow, see CR r58153
+ // potentially slow, see CR r58153
+ return 'contributions page filtered for namespace or RevisionDeleted edits';
} else {
return 'contributions page unfiltered';
}
var $messages, $target;
var $namespace = '', $mDb;
+ /**
+ * @var string Navigation bar with paging links.
+ */
+ protected $mNavigationBar;
+
function __construct( IContextSource $context, $target, $namespace = false ) {
parent::__construct( $context );
$msgs = array( 'deletionlog', 'undeleteviewlink', 'diff' );
- foreach( $msgs as $msg ) {
+ foreach ( $msgs as $msg ) {
$this->messages[$msg] = $this->msg( $msg )->escaped();
}
$this->target = $target;
$conds = array_merge( $userCond, $this->getNamespaceCond() );
$user = $this->getUser();
// Paranoia: avoid brute force searches (bug 17792)
- if( !$user->isAllowed( 'deletedhistory' ) ) {
+ if ( !$user->isAllowed( 'deletedhistory' ) ) {
$conds[] = $this->mDb->bitAnd( 'ar_deleted', Revision::DELETED_USER ) . ' = 0';
- } elseif( !$user->isAllowed( 'suppressrevision' ) ) {
+ } elseif ( !$user->isAllowed( 'suppressrevision' ) ) {
$conds[] = $this->mDb->bitAnd( 'ar_deleted', Revision::SUPPRESSED_USER ) .
' != ' . Revision::SUPPRESSED_USER;
}
return array(
'tables' => array( 'archive' ),
'fields' => array(
- 'ar_rev_id', 'ar_namespace', 'ar_title', 'ar_timestamp', 'ar_comment', 'ar_minor_edit',
- 'ar_user', 'ar_user_text', 'ar_deleted'
+ 'ar_rev_id', 'ar_namespace', 'ar_title', 'ar_timestamp', 'ar_comment',
+ 'ar_minor_edit', 'ar_user', 'ar_user_text', 'ar_deleted'
),
'conds' => $conds,
'options' => array( 'USE INDEX' => $index )
$lang = $this->getLanguage();
$limits = $lang->pipeList( $limitLinks );
- $this->mNavigationBar = "(" . $lang->pipeList( array( $pagingLinks['first'], $pagingLinks['last'] ) ) . ") " .
- $this->msg( 'viewprevnext' )->rawParams( $pagingLinks['prev'], $pagingLinks['next'], $limits )->escaped();
+ $firstLast = $lang->pipeList( array( $pagingLinks['first'], $pagingLinks['last'] ) );
+ $firstLast = $this->msg( 'parentheses' )->rawParams( $firstLast )->escaped();
+ $prevNext = $this->msg( 'viewprevnext' )
+ ->rawParams(
+ $pagingLinks['prev'],
+ $pagingLinks['next'],
+ $limits
+ )->escaped();
+ $separator = $this->msg( 'word-separator' )->escaped();
+ $this->mNavigationBar = $firstLast . $separator . $prevNext;
+
return $this->mNavigationBar;
}
$page = Title::makeTitle( $row->ar_namespace, $row->ar_title );
$rev = new Revision( array(
- 'title' => $page,
- 'id' => $row->ar_rev_id,
- 'comment' => $row->ar_comment,
- 'user' => $row->ar_user,
- 'user_text' => $row->ar_user_text,
- 'timestamp' => $row->ar_timestamp,
- 'minor_edit' => $row->ar_minor_edit,
- 'deleted' => $row->ar_deleted,
- ) );
+ 'title' => $page,
+ 'id' => $row->ar_rev_id,
+ 'comment' => $row->ar_comment,
+ 'user' => $row->ar_user,
+ 'user_text' => $row->ar_user_text,
+ 'timestamp' => $row->ar_timestamp,
+ 'minor_edit' => $row->ar_minor_edit,
+ 'deleted' => $row->ar_deleted,
+ ) );
$undelete = SpecialPage::getTitleFor( 'Undelete' );
$user = $this->getUser();
- if( $user->isAllowed( 'deletedtext' ) ) {
+ if ( $user->isAllowed( 'deletedtext' ) ) {
$last = Linker::linkKnown(
$undelete,
$this->messages['diff'],
}
$comment = Linker::revComment( $rev );
- $date = htmlspecialchars( $this->getLanguage()->userTimeAndDate( $rev->getTimestamp(), $user ) );
+ $date = $this->getLanguage()->userTimeAndDate( $rev->getTimestamp(), $user );
+ $date = htmlspecialchars( $date );
- if( !$user->isAllowed( 'undelete' ) || !$rev->userCan( Revision::DELETED_TEXT, $user ) ) {
+ if ( !$user->isAllowed( 'undelete' ) || !$rev->userCan( Revision::DELETED_TEXT, $user ) ) {
$link = $date; // unusable link
} else {
$link = Linker::linkKnown(
);
}
// Style deleted items
- if( $rev->isDeleted( Revision::DELETED_TEXT ) ) {
+ if ( $rev->isDeleted( Revision::DELETED_TEXT ) ) {
$link = '<span class="history-deleted">' . $link . '</span>';
}
array( 'class' => 'mw-changeslist-title' )
);
- if( $rev->isMinor() ) {
+ if ( $rev->isMinor() ) {
$mflag = ChangesList::flag( 'minor' );
} else {
$mflag = '';
// Revision delete link
$del = Linker::getRevDeleteLink( $user, $rev, $page );
- if ( $del ) $del .= ' ';
+ if ( $del ) {
+ $del .= ' ';
+ }
$tools = Html::rawElement(
'span',
$ret = "{$del}{$link} {$tools} {$separator} {$mflag} {$pagelink} {$comment}";
# Denote if username is redacted for this edit
- if( $rev->isDeleted( Revision::DELETED_USER ) ) {
+ if ( $rev->isDeleted( Revision::DELETED_USER ) ) {
$ret .= " <strong>" . $this->msg( 'rev-deleted-user-contribs' )->escaped() . "</strong>";
}
class DeletedContributionsPage extends SpecialPage {
function __construct() {
parent::__construct( 'DeletedContributions', 'deletedhistory',
- /*listed*/ true, /*function*/ false, /*file*/ false );
+ /*listed*/true, /*function*/false, /*file*/false );
}
/**
*/
function execute( $par ) {
global $wgQueryPageDefaultLimit;
+
$this->setHeaders();
$this->outputHeader();
# Show a message about slave lag, if applicable
$lag = wfGetLB()->safeGetLag( $pager->getDatabase() );
- if( $lag > 0 )
+ if ( $lag > 0 ) {
$out->showLagWarning( $lag );
+ }
$out->addHTML(
'<p>' . $pager->getNavigationBar() . '</p>' .
- $pager->getBody() .
- '<p>' . $pager->getNavigationBar() . '</p>' );
+ $pager->getBody() .
+ '<p>' . $pager->getNavigationBar() . '</p>' );
# If there were contributions, and it was a valid user or IP, show
# the appropriate "footer" message - WHOIS tools, etc.
- if( $target != 'newbies' ) {
+ if ( $target != 'newbies' ) {
$message = IP::isIPAddress( $target )
? 'sp-contributions-footer-anon'
: 'sp-contributions-footer';
- if( !$this->msg( $message )->isDisabled() ) {
- $out->wrapWikiMsg( "<div class='mw-contributions-footer'>\n$1\n</div>", array( $message, $target ) );
+ if ( !$this->msg( $message )->isDisabled() ) {
+ $out->wrapWikiMsg(
+ "<div class='mw-contributions-footer'>\n$1\n</div>",
+ array( $message, $target )
+ );
}
}
}
$nt = $userObj->getUserPage();
$id = $userObj->getID();
$talk = $nt->getTalkPage();
- if( $talk ) {
+ if ( $talk ) {
# Talk page link
$tools[] = Linker::link( $talk, $this->msg( 'sp-contributions-talk' )->escaped() );
- if( ( $id !== null ) || ( $id === null && IP::isIPAddress( $nt->getText() ) ) ) {
- if( $this->getUser()->isAllowed( 'block' ) ) { # Block / Change block / Unblock links
+ if ( ( $id !== null ) || ( $id === null && IP::isIPAddress( $nt->getText() ) ) ) {
+ # Block / Change block / Unblock links
+ if ( $this->getUser()->isAllowed( 'block' ) ) {
if ( $userObj->isBlocked() ) {
$tools[] = Linker::linkKnown( # Change block link
SpecialPage::getTitleFor( 'Block', $nt->getDBkey() ),
'ip' => $nt->getDBkey()
)
);
- }
- else { # User is not blocked
+ } else {
+ # User is not blocked
$tools[] = Linker::linkKnown( # Block link
SpecialPage::getTitleFor( 'Block', $nt->getDBkey() ),
$this->msg( 'blocklink' )->escaped()
# Add a link to change user rights for privileged users
$userrightsPage = new UserrightsPage();
$userrightsPage->setContext( $this->getContext() );
- if( $userrightsPage->userCanChangeRights( $userObj ) ) {
+ if ( $userrightsPage->userCanChangeRights( $userObj ) ) {
$tools[] = Linker::linkKnown(
SpecialPage::getTitleFor( 'Userrights', $nt->getDBkey() ),
$this->msg( 'sp-contributions-userrights' )->escaped()
// Show a note if the user is blocked and display the last block log entry.
if ( $userObj->isBlocked() ) {
- $out = $this->getOutput(); // LogEventsList::showLogExtract() wants the first parameter by ref
+ // LogEventsList::showLogExtract() wants the first parameter by ref
+ $out = $this->getOutput();
LogEventsList::showLogExtract(
$out,
'block',
$oldMsg = $this->msg( 'contribsub' );
if ( $oldMsg->exists() ) {
return $oldMsg->rawParams( "$user ($links)" );
- } else {
- return $this->msg( 'contribsub2' )->rawParams( $user, $links );
}
+
+ return $this->msg( 'contribsub2' )->rawParams( $user, $links );
}
/**
$f .= "\t" . Html::hidden( $name, $value ) . "\n";
}
- $f .= Xml::openElement( 'fieldset' ) .
- Xml::element( 'legend', array(), $this->msg( 'sp-contributions-search' )->text() ) .
- Xml::tags( 'label', array( 'for' => 'target' ), $this->msg( 'sp-contributions-username' )->parse() ) . ' ' .
- Html::input( 'target', $options['target'], 'text', array(
+ $f .= Xml::openElement( 'fieldset' );
+ $f .= Xml::element( 'legend', array(), $this->msg( 'sp-contributions-search' )->text() );
+ $f .= Xml::tags(
+ 'label',
+ array( 'for' => 'target' ),
+ $this->msg( 'sp-contributions-username' )->parse()
+ ) . ' ';
+ $f .= Html::input(
+ 'target',
+ $options['target'],
+ 'text',
+ array(
'size' => '20',
'required' => ''
- ) + ( $options['target'] ? array() : array( 'autofocus' ) ) ) . ' '.
- Html::namespaceSelector(
- array(
- 'selected' => $options['namespace'],
- 'all' => '',
- 'label' => $this->msg( 'namespace' )->text()
- ), array(
- 'name' => 'namespace',
- 'id' => 'namespace',
- 'class' => 'namespaceselector',
- )
- ) . ' ' .
- Xml::submitButton( $this->msg( 'sp-contributions-submit' )->text() ) .
- Xml::closeElement( 'fieldset' ) .
- Xml::closeElement( 'form' );
+ ) + ( $options['target'] ? array() : array( 'autofocus' ) )
+ ) . ' ';
+ $f .= Html::namespaceSelector(
+ array(
+ 'selected' => $options['namespace'],
+ 'all' => '',
+ 'label' => $this->msg( 'namespace' )->text()
+ ),
+ array(
+ 'name' => 'namespace',
+ 'id' => 'namespace',
+ 'class' => 'namespaceselector',
+ )
+ ) . ' ';
+ $f .= Xml::submitButton( $this->msg( 'sp-contributions-submit' )->text() );
+ $f .= Xml::closeElement( 'fieldset' );
+ $f .= Xml::closeElement( 'form' );
+
return $f;
}
# was $wgUser
if( $mode instanceof User ) {
$args = func_get_args();
- if( count( $args >= 4 ) ) {
+ if ( count( $args ) >= 4 ) {
$mode = $args[3];
}
}
$out->addWikiMsg( 'exporttext' );
$form = Xml::openElement( 'form', array( 'method' => 'post',
- 'action' => $this->getTitle()->getLocalUrl( 'action=submit' ) ) );
+ 'action' => $this->getTitle()->getLocalURL( 'action=submit' ) ) );
$form .= Xml::inputLabel( $this->msg( 'export-addcattext' )->text(), 'catname', 'catname', 40 ) . ' ';
$form .= Xml::submitButton( $this->msg( 'export-addcat' )->text(), array( 'name' => 'addcat' ) ) . '<br />';
# Create the input form
$out->addHTML(
- Xml::openElement( 'form', array( 'id' => 'fileduplicatesearch', 'method' => 'get', 'action' => $wgScript ) ) .
- Html::hidden( 'title', $this->getTitle()->getPrefixedDBkey() ) .
- Xml::openElement( 'fieldset' ) .
- Xml::element( 'legend', null, $this->msg( 'fileduplicatesearch-legend' )->text() ) .
- Xml::inputLabel( $this->msg( 'fileduplicatesearch-filename' )->text(), 'filename', 'filename', 50, $this->filename ) . ' ' .
- Xml::submitButton( $this->msg( 'fileduplicatesearch-submit' )->text() ) .
- Xml::closeElement( 'fieldset' ) .
- Xml::closeElement( 'form' )
+ Html::openElement( 'form', array( 'id' => 'fileduplicatesearch', 'method' => 'get', 'action' => $wgScript ) ) . "\n" .
+ Html::hidden( 'title', $this->getTitle()->getPrefixedDBkey() ) . "\n" .
+ Html::openElement( 'fieldset' ) . "\n" .
+ Html::element( 'legend', null, $this->msg( 'fileduplicatesearch-legend' )->text() ) . "\n" .
+ Xml::inputLabel( $this->msg( 'fileduplicatesearch-filename' )->text(), 'filename', 'filename', 50, $this->filename ) . "\n" .
+ Xml::submitButton( $this->msg( 'fileduplicatesearch-submit' )->text() ) . "\n" .
+ Html::closeElement( 'fieldset' ) . "\n" .
+ Html::closeElement( 'form' )
);
if( $this->file ) {
private function showForm() {
global $wgImportSources, $wgExportMaxLinkDepth;
- $action = $this->getTitle()->getLocalUrl( array( 'action' => 'submit' ) );
+ $action = $this->getTitle()->getLocalURL( array( 'action' => 'submit' ) );
$user = $this->getUser();
$out = $this->getOutput();
$feed = new $wgFeedClasses[$type](
$this->feedTitle(),
$this->msg( 'tagline' )->text(),
- $this->getTitle()->getFullUrl()
+ $this->getTitle()->getFullURL()
);
$pager = new NewPagesPager( $this, $this->opts );
),
), $this->getContext() );
$form->setMethod( 'get' );
- $form->setAction( $this->getTitle()->getFullUrl() );
+ $form->setAction( $this->getTitle()->getFullURL() );
$form->setSubmitCallback( array( $this, 'onSubmit' ) );
$form->setWrapperLegend( $this->msg( 'pageswithprop-legend' ) );
$form->addHeaderText( $this->msg( 'pageswithprop-text' )->parseAsBlock() );
$username,
$passwordBlock,
count( $passwords ),
- '<' . Title::newMainPage()->getCanonicalUrl() . '>',
+ '<' . Title::newMainPage()->getCanonicalURL() . '>',
round( $wgNewPasswordExpiry / 86400 )
);
}
$title = Title::makeTitleSafe( $row->page_namespace, $row->page_title );
+ if( !$title ) {
+ return Html::rawElement( 'li', array(),
+ Html::element( 'span', array( 'class' => 'mw-invalidtitle' ),
+ Linker::getInvalidTitleDescription( $this->getContext(), $row->page_namespace, $row->page_title ) ) ) . "\n";
+ }
+
$link = Linker::link( $title );
$description_items = array ();
}
$title = Title::makeTitleSafe( $row->pt_namespace, $row->pt_title );
+ if( !$title ) {
+ return Html::rawElement( 'li', array(),
+ Html::element( 'span', array( 'class' => 'mw-invalidtitle' ),
+ Linker::getInvalidTitleDescription( $this->getContext(), $row->pt_namespace, $row->pt_title ) ) ) . "\n";
+ }
+
$link = Linker::link( $title );
$description_items = array ();
$redirectParam = $this->isRedirect() ? array( 'redirect' => 'no' ) : array();
$query = array_merge( $this->getRequest()->getValues(), $redirectParam );
unset( $query['title'] );
- $this->getOutput()->redirect( $title->getFullUrl( $query ) );
+ $this->getOutput()->redirect( $title->getFullURL( $query ) );
}
/**
/**
* Create a FormOptions object with options as specified by the user
*
- * @param $parameters array
+ * @param array $parameters
*
* @return FormOptions
*/
/**
* Get custom show/hide filters
*
- * @return Array Map of filter URL param names to properties (msg/default)
+ * @return array Map of filter URL param names to properties (msg/default)
*/
protected function getCustomFilters() {
if ( $this->customFilters === null ) {
/**
* Main execution point
*
- * @param $subpage String
+ * @param string $subpage
*/
public function execute( $subpage ) {
$this->rcSubpage = $subpage;
}
if( $feedFormat ) {
list( $changesFeed, $formatter ) = $this->getFeedObject( $feedFormat );
+ /** @var ChangesFeed $changesFeed */
$changesFeed->execute( $formatter, $rows, $lastmod, $opts );
} else {
$this->webOutput( $rows, $opts );
/**
* Return an array with a ChangesFeed object and ChannelFeed object
*
- * @return Array
+ * @param string $feedFormat Feed's format (either 'rss' or 'atom')
+ * @return array
*/
public function getFeedObject( $feedFormat ) {
$changesFeed = new ChangesFeed( $feedFormat, 'rcfeed' );
* Process $par and put options found if $opts
* Mainly used when including the page
*
- * @param $par String
- * @param $opts FormOptions
+ * @param string $par
+ * @param FormOptions $opts
*/
public function parseParameters( $par, FormOptions $opts ) {
$bits = preg_split( '/\s*,\s*/', trim( $par ) );
* Don't use this if we are using the patrol feature, patrol changes don't
* update the timestamp
*
- * @param $feedFormat String
- * @return String or false
+ * @param string $feedFormat
+ * @return string|bool
*/
public function checkLastModified( $feedFormat ) {
$dbr = wfGetDB( DB_SLAVE );
/**
* Return an array of conditions depending of options set in $opts
*
- * @param $opts FormOptions
+ * @param FormOptions $opts
* @return array
*/
public function buildMainQueryConds( FormOptions $opts ) {
/**
* Process the query
*
- * @param $conds Array
- * @param $opts FormOptions
- * @return bool|ResultWrapper result or false (for Recentchangeslinked only)
+ * @param array $conds
+ * @param FormOptions $opts
+ * @return bool|ResultWrapper Result or false (for Recentchangeslinked only)
*/
public function doMainQuery( $conds, $opts ) {
$tables = array( 'recentchanges' );
/**
* Send output to the OutputPage object, only called if not used feeds
*
- * @param array $rows of database rows
- * @param $opts FormOptions
+ * @param array $rows Database rows
+ * @param FormOptions $opts
*/
public function webOutput( $rows, $opts ) {
global $wgRCShowWatchingUsers, $wgShowUpdatedMarker, $wgAllowCategorizedRecentChanges;
/**
* Return the text to be displayed above the changes
*
- * @param $opts FormOptions
- * @return String: XHTML
+ * @param FormOptions $opts
+ * @return string XHTML
*/
public function doHeader( $opts ) {
global $wgScript;
/**
* Get options to be displayed in a form
*
- * @param $opts FormOptions
- * @return Array
+ * @param FormOptions $opts
+ * @return array
*/
function getExtraOptions( $opts ) {
$extraOpts = array();
/**
* Send the text to be displayed above the options
*
- * @param $opts FormOptions
+ * @param FormOptions $opts Unused
*/
function setTopText( FormOptions $opts ) {
global $wgContLang;
* Send the text to be displayed after the options, for use in
* Recentchangeslinked
*
- * @param $opts FormOptions
+ * @param FormOptions $opts
*/
function setBottomText( FormOptions $opts ) {}
* Creates the choose namespace selection
*
* @todo Uses radio buttons (HASHAR)
- * @param $opts FormOptions
- * @return String
+ * @param FormOptions $opts
+ * @return string
*/
protected function namespaceFilterForm( FormOptions $opts ) {
$nsSelect = Html::namespaceSelector(
/**
* Create a input to filter changes by categories
*
- * @param $opts FormOptions
- * @return Array
+ * @param FormOptions $opts
+ * @return array
*/
protected function categoryFilterForm( FormOptions $opts ) {
list( $label, $input ) = Xml::inputLabelSep( $this->msg( 'rc_categories' )->text(),
/**
* Filter $rows by categories set in $opts
*
- * @param array $rows of database rows
- * @param $opts FormOptions
+ * @param array $rows Database rows
+ * @param FormOptions $opts
*/
function filterByCategories( &$rows, FormOptions $opts ) {
$categories = array_map( 'trim', explode( '|', $opts['categories'] ) );
/**
* Makes change an option link which carries all the other options
*
- * @param $title Title
- * @param array $override options to override
- * @param array $options current options
- * @param $active Boolean: whether to show the link in bold
+ * @param string $title Title
+ * @param array $override Options to override
+ * @param array $options Current options
+ * @param bool $active Whether to show the link in bold
* @return string
*/
function makeOptionsLink( $title, $override, $options, $active = false ) {
/**
* Creates the options panel.
*
- * @param $defaults Array
- * @param $nondefaults Array
+ * @param array $defaults
+ * @param array $nondefaults
* @return string
*/
function optionsPanel( $defaults, $nondefaults ) {
$wgRCLinkDays = array_unique( $wgRCLinkDays );
// limit links
+ $cl = array();
foreach( $wgRCLinkLimits as $value ) {
$cl[] = $this->makeOptionsLink( $lang->formatNum( $value ),
array( 'limit' => $value ), $nondefaults, $value == $options['limit'] );
$cl = $lang->pipeList( $cl );
// day links, reset 'from' to none
+ $dl = array();
foreach( $wgRCLinkDays as $value ) {
$dl[] = $this->makeOptionsLink( $lang->formatNum( $value ),
array( 'days' => $value, 'from' => '' ), $nondefaults, $value == $options['days'] );
$this->msg( 'recentchangeslinked-title', $this->getTargetTitle()->getPrefixedText() )
->inContentLanguage()->text(),
$this->msg( 'recentchangeslinked-feed' )->inContentLanguage()->text(),
- $this->getTitle()->getFullUrl()
+ $this->getTitle()->getFullURL()
);
return array( $feed, $feedObj );
}
$this->getOutput()->addHTML(
Xml::openElement( 'form', array(
'method' => 'POST',
- 'action' => $this->getTitle()->getLocalUrl(
+ 'action' => $this->getTitle()->getLocalURL(
'target=' . urlencode( $this->targetObj->getPrefixedDBkey() ) .
'&file=' . urlencode( $archiveName ) .
'&token=' . urlencode( $user->getEditToken( $archiveName ) ) )
// Show form if the user can submit
if( $this->mIsAllowed ) {
$out = Xml::openElement( 'form', array( 'method' => 'post',
- 'action' => $this->getTitle()->getLocalUrl( array( 'action' => 'submit' ) ),
+ 'action' => $this->getTitle()->getLocalURL( array( 'action' => 'submit' ) ),
'id' => 'mw-revdel-form-revisions' ) ) .
Xml::fieldset( $this->msg( 'revdelete-legend' )->text() ) .
$this->buildCheckBoxes() .
'upload-type' => 'File',
'radio' => &$radio,
'help' => $this->msg( 'upload-maxfilesize',
- $this->getContext()->getLanguage()->formatSize( $this->mMaxUploadSize['file'] )
- )->parse() . ' ' . $this->msg( 'upload_source_file' )->escaped(),
+ $this->getContext()->getLanguage()->formatSize( $this->mMaxUploadSize['file'] ) )
+ ->parse() .
+ $this->msg( 'word-separator' )->escaped() .
+ $this->msg( 'upload_source_file' )->escaped(),
'checked' => $selectedSourceType == 'file',
);
+
if ( $canUploadByUrl ) {
$this->mMaxUploadSize['url'] = UploadBase::getMaxUploadSize( 'url' );
$descriptor['UploadFileURL'] = array(
'upload-type' => 'url',
'radio' => &$radio,
'help' => $this->msg( 'upload-maxfilesize',
- $this->getContext()->getLanguage()->formatSize( $this->mMaxUploadSize['url'] )
- )->parse() . ' ' . $this->msg( 'upload_source_url' )->escaped(),
+ $this->getContext()->getLanguage()->formatSize( $this->mMaxUploadSize['url'] ) )
+ ->parse() .
+ $this->msg( 'word-separator' )->escaped() .
+ $this->msg( 'upload_source_url' )->escaped(),
'checked' => $selectedSourceType == 'url',
);
}
$mode = null;
}
$title = SpecialPage::getTitleFor( 'EditWatchlist', $mode );
- $output->redirect( $title->getLocalUrl() );
+ $output->redirect( $title->getLocalURL() );
return;
}
$request->wasPosted() )
{
$user->clearAllNotifications();
- $output->redirect( $this->getTitle()->getFullUrl( $nondefaults ) );
+ $output->redirect( $this->getTitle()->getFullURL( $nondefaults ) );
return;
}
}
if( $wgShowUpdatedMarker ) {
$form .= Xml::openElement( 'form', array( 'method' => 'post',
- 'action' => $this->getTitle()->getLocalUrl(),
+ 'action' => $this->getTitle()->getLocalURL(),
'id' => 'mw-watchlist-resetbutton' ) ) . "\n" .
$this->msg( 'wlheader-showupdated' )->parse() .
Xml::submitButton( $this->msg( 'enotif_reset' )->text(), array( 'name' => 'dummy' ) ) . "\n" .
$form .= $wlInfo;
$form .= $cutofflinks;
$form .= $lang->pipeList( $links ) . "\n";
- $form .= Xml::openElement( 'form', array( 'method' => 'post', 'action' => $this->getTitle()->getLocalUrl(), 'id' => 'mw-watchlist-form-namespaceselector' ) ) . "\n";
+ $form .= Xml::openElement( 'form', array( 'method' => 'post', 'action' => $this->getTitle()->getLocalURL(), 'id' => 'mw-watchlist-form-namespaceselector' ) ) . "\n";
$form .= "<hr />\n<p>";
$form .= Html::namespaceSelector(
array(
/**
* Count the number of items on a user's watchlist
*
- * @param $dbr A database connection
+ * @param DatabaseBase $dbr A database connection
* @return Integer
*/
protected function countItems( $dbr ) {
$prefix = $this->prefix;
$t = $this->getTitle();
- return Xml::openElement( 'form', array( 'method' => 'get', 'action' => $wgScript ) ) .
- Xml::openElement( 'fieldset' ) .
- Xml::element( 'legend', null, $this->msg( 'withoutinterwiki-legend' )->text() ) .
- Html::hidden( 'title', $t->getPrefixedText() ) .
- Xml::inputLabel( $this->msg( 'allpagesprefix' )->text(), 'prefix', 'wiprefix', 20, $prefix ) . ' ' .
- Xml::submitButton( $this->msg( 'withoutinterwiki-submit' )->text() ) .
- Xml::closeElement( 'fieldset' ) .
- Xml::closeElement( 'form' );
+ return Html::openElement( 'form', array( 'method' => 'get', 'action' => $wgScript ) ) . "\n" .
+ Html::openElement( 'fieldset' ) . "\n" .
+ Html::element( 'legend', null, $this->msg( 'withoutinterwiki-legend' )->text() ) . "\n" .
+ Html::hidden( 'title', $t->getPrefixedText() ) . "\n" .
+ Xml::inputLabel( $this->msg( 'allpagesprefix' )->text(), 'prefix', 'wiprefix', 20, $prefix ) . "\n" .
+ Xml::submitButton( $this->msg( 'withoutinterwiki-submit' )->text() ) . "\n" .
+ Html::closeElement( 'fieldset' ) . "\n" .
+ Html::closeElement( 'form' );
}
function sortDescending() {
}
}
- /**
- * Get the ordered list of fallback languages, ending with the fallback
- * language chain for the site language.
- *
- * @since 1.21
- * @param $code string Language code
- * @return array
- */
- public static function getFallbacksIncludingSiteLanguage( $code ) {
- global $wgLanguageCode;
-
- // Usually, we will only store a tiny number of fallback chains, so we
- // keep them in static memory.
- static $fallbackLanguageCache = array();
- $cacheKey = "{$code}-{$wgLanguageCode}";
-
- if ( !array_key_exists( $cacheKey, $fallbackLanguageCache ) ) {
- $fallbacks = self::getFallbacksFor( $code );
-
- // Take the final 'en' off of the array before splicing
- if ( end( $fallbacks ) === 'en' ) {
- array_pop( $fallbacks );
- }
- // Append the site's fallback chain, including the site language itself
- $siteFallbacks = self::getFallbacksFor( $wgLanguageCode );
- array_unshift( $siteFallbacks, $wgLanguageCode );
-
- // Eliminate any languages already included in the chain
- $siteFallbacks = array_intersect( array_diff( $siteFallbacks, $fallbacks ), $siteFallbacks );
- if ( $siteFallbacks ) {
- $fallbacks = array_merge( $fallbacks, $siteFallbacks );
- }
- if ( end( $fallbacks ) !== 'en' ) {
- $fallbacks[] = 'en';
- }
- $fallbackLanguageCache[$cacheKey] = $fallbacks;
- }
- return $fallbackLanguageCache[$cacheKey];
- }
-
/**
* Get all messages for a given language
* WARNING: this may take a long time. If you just need all message *keys*
$parsed[$key] = true;
if ( $subpage === '' ) {
- $txt = MessageCache::singleton()->get( 'conversiontable', true, $code );
+ $txt = MessageCache::singleton()->getMsgFromNamespace( $key, $code );
} else {
$txt = false;
$title = Title::makeTitleSafe( NS_MEDIAWIKI, $key );
*/
function autoConvert( $text, $toVariant = false ) {
global $wgTitle;
- if ( is_object( $wgTitle ) && $wgTitle->getNameSpace() == NS_FILE ) {
+ if ( is_object( $wgTitle ) && $wgTitle->getNamespace() == NS_FILE ) {
$imagename = $wgTitle->getNsText();
if ( preg_match( "/^$imagename:/", $text ) ) return $text;
}
*/
function autoConvert( $text, $toVariant = false ) {
global $wgTitle;
- if ( is_object( $wgTitle ) && $wgTitle->getNameSpace() == NS_FILE ) {
+ if ( is_object( $wgTitle ) && $wgTitle->getNamespace() == NS_FILE ) {
$imagename = $wgTitle->getNsText();
if ( preg_match( "/^$imagename:/", $text ) ) return $text;
}
*/
function autoConvert( $text, $toVariant = false ) {
global $wgTitle;
- if ( is_object( $wgTitle ) && $wgTitle->getNameSpace() == NS_FILE ) {
+ if ( is_object( $wgTitle ) && $wgTitle->getNamespace() == NS_FILE ) {
$imagename = $wgTitle->getNsText();
if ( preg_match( "/^$imagename:/", $text ) ) return $text;
}
*/
function autoConvert( $text, $toVariant = false ) {
global $wgTitle;
- if ( is_object( $wgTitle ) && $wgTitle->getNameSpace() == NS_FILE ) {
+ if ( is_object( $wgTitle ) && $wgTitle->getNamespace() == NS_FILE ) {
$imagename = $wgTitle->getNsText();
if ( preg_match( "/^$imagename:/", $text ) ) return $text;
}
*/
function autoConvert( $text, $toVariant = false ) {
global $wgTitle;
- if ( is_object( $wgTitle ) && $wgTitle->getNameSpace() == NS_FILE ) {
+ if ( is_object( $wgTitle ) && $wgTitle->getNamespace() == NS_FILE ) {
$imagename = $wgTitle->getNsText();
if ( preg_match( "/^$imagename:/", $text ) ) return $text;
}
'tog-nocache' => 'Deaktiveer blaaier se bladsykas',
'tog-enotifwatchlistpages' => "Stuur my e-pos as 'n bladsye of lêer op my dophoulys verander",
'tog-enotifusertalkpages' => 'Stuur vir my e-pos as my eie besprekingsblad verander word',
-'tog-enotifminoredits' => 'Stuur my ook e-pos vir klein wysigings aan bladsye en lêers',
+'tog-enotifminoredits' => 'Stuur ook e-pos vir klein wysigings aan bladsye en lêers',
'tog-enotifrevealaddr' => 'Stel my e-posadres bloot in kennisgewingspos',
'tog-shownumberswatching' => 'Wys die aantal gebruikers wat dophou',
'tog-oldsig' => 'Bestaande handtekening:',
-'tog-fancysig' => 'Hanteer handtekening as wikiteks (sonder outomatiese skakels)',
-'tog-externaleditor' => "Gebruik outomaties 'n eksterne redigeringsprogram (net vir kundiges - benodig spesiale verstellings op u rekenaar. [//www.mediawiki.org/wiki/Manual:External_editors Meer inligting.])",
+'tog-fancysig' => 'Doodgewone handtekening (sonder outomatiese skakel)',
+'tog-externaleditor' => "Gebruik outomaties 'n eksterne redigeringsprogram (vir kundiges; [//www.mediawiki.org/wiki/Manual:External_editors benodig verdere verstellings])",
'tog-externaldiff' => "Gebruik outomaties 'n eksterne vergelykingsprogram (net vir kundiges - benodig spesiale verstellings op u rekenaar)",
'tog-showjumplinks' => 'Wys "spring na"-skakels vir toeganklikheid',
'tog-uselivepreview' => 'Gebruik lewendige voorskou (JavaScript) (eksperimenteel)',
'protect_change' => 'wysig',
'protectthispage' => 'Beskerm hierdie bladsy',
'unprotect' => 'Wysig beskerming',
-'unprotectthispage' => 'Verander beskerming vir die bladsy',
+'unprotectthispage' => 'Wysig beskerming vir die bladsy',
'newpage' => 'Nuwe bladsy',
'talkpage' => 'Bespreek hierdie bladsy',
'talkpagelinktext' => 'Besprekings',
'otherlanguages' => 'Ander tale',
'redirectedfrom' => '(Aangestuur vanaf $1)',
'redirectpagesub' => 'Aanstuurblad',
-'lastmodifiedat' => 'Laaste wysiging op $2, $1.',
+'lastmodifiedat' => 'Die bladsy is laas op $1 om $1 bygewerk.',
'viewcount' => 'Hierdie bladsy is al {{PLURAL:$1|keer|$1 kere}} aangevra.',
'protectedpage' => 'Beskermde bladsy',
'jumpto' => 'Spring na:',
'wrong_wfQuery_params' => 'Foutiewe parameters na wfQuery()<br />
Funksie: $1<br />
Navraag: $2',
-'viewsource' => 'Bekyk bronteks',
+'viewsource' => 'Wys bronteks',
'viewsource-title' => 'Wys bron van $1',
'actionthrottled' => 'Outo-rem op aksie uitgevoer',
'actionthrottledtext' => "As 'n teen-strooi aksie, word u beperk om hierdie aksie te veel keer in 'n kort tyd uit te voer, en u het hierdie limiet oorskry.
'securelogin-stick-https' => 'Bly verbind met HTTPS na aanmelding',
'yourdomainname' => 'U domein:',
'password-change-forbidden' => 'U kan nie wagwoorde op hierdie wiki verander nie.',
-'externaldberror' => "'n Databasisfout het voorgekom tydens aanmelding of u het nie toestemming om u eksterne rekening op te dateer nie.",
+'externaldberror' => "'n Databasisfout het tydens aanmelding voorgekom of u het nie toestemming om u eksterne rekening op te dateer nie.",
'login' => 'Teken in',
'nav-login-createaccount' => 'Teken in',
-'loginprompt' => 'U blaaier moet koekies toelaat om by {{SITENAME}} te kan aanteken.',
+'loginprompt' => 'U blaaier moet koekies toelaat om op {{SITENAME}} te kan aanteken.',
'userlogin' => 'Teken in / registreer',
'userloginnocreate' => 'Teken in',
'logout' => 'Teken uit',
'userlogout' => 'Teken uit',
'notloggedin' => 'Nie ingeteken nie',
-'nologin' => "Nog nie geregistreer nie? '''$1'''.",
+'nologin' => 'Nog nie geregistreer nie? $1.',
'nologinlink' => "Skep gerus 'n rekening",
'createaccount' => 'Skep nuwe rekening',
-'gotaccount' => "Het u reeds 'n rekening? '''$1'''.",
-'gotaccountlink' => 'Teken in',
+'gotaccount' => "Het u reeds 'n rekening? $1.",
+'gotaccountlink' => 'Meld aan',
'userlogin-resetlink' => 'U aanmeld besonderhede vergeet?',
'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.
+'userexists' => "Die gebruikersnaam wat u gekies het is beset.
Kies asseblief 'n ander naam.",
'loginerror' => 'Intekenfout',
'createaccounterror' => "Kon nie 'n rekening skep nie: $1",
'passwordtooshort' => 'Wagwoorde moet ten minste {{PLURAL:$1|1 karakter|$1 karakters}} lank wees.',
'password-name-match' => 'U wagwoord mag nie dieselfde as u gebruikersnaam wees nie.',
'password-login-forbidden' => 'Die gebruik van hierdie gebruikersnaam en wagwoord is geweier.',
-'mailmypassword' => "E-pos my 'n nuwe wagwoord",
+'mailmypassword' => 'E-pos nuwe wagwoord',
'passwordremindertitle' => 'Wagwoordwenk van {{SITENAME}}',
'passwordremindertext' => 'Iemand (waarskynlik u vanaf IP-adres $1) het \'n nuwe wagwoord vir {{SITENAME}} ($4) gevra. \'n Tydelike wagwoord is vir gebruiker "$2" geskep. Die nuwe wagwoord is "$3". U kan met die tydelike wagwoord aanteken en \'n nuwe wagwoord stel. Die tydelike wagwoord sal na {{PLURAL:$5|een dag|$5 dae}} verval.
Voordat ander pos na die adres gestuur word,
moet die instruksies in bogenoemde pos gevolg word om te bevestig dat die adres werklik u adres is.",
'throttled-mailpassword' => "Daar is reeds 'n wagwoordwenk in die laaste {{PLURAL:$1|uur|$1 ure}} gestuur.
-Om misbruik te voorkom, word slegs een wagwoordwenk per {{PLURAL:$1|uur|$1 ure}} gestuur.",
+Om misbruik te voorkom, word slegs een E-pos per {{PLURAL:$1|uur|$1 ure}} gestuur.",
'mailerror' => 'Fout tydens e-pos versending: $1',
'acct_creation_throttle_hit' => "Besoekers aan hierdie wiki wat u IP-adres gebruik het reeds {{PLURAL:$1|'n rekening|$1 rekeninge}} in die laaste dag geskep, wat die maksimum toelaatbaar is vir die periode. Dus kan besoekers wat hierdie IP-adres gebruik tans nie meer nuwe gebruikers registreer nie.",
'emailauthenticated' => 'U e-posadres is op $2 om $3 bevestig.',
'emailnotauthenticated' => 'U e-poasadres is <strong>nog nie bevestig nie</strong>. Geen e-pos sal gestuur word vir die volgende funksies nie.',
-'noemailprefs' => "Spesifiseer 'n eposadres vir hierdie funksies om te werk.",
+'noemailprefs' => "Spesifiseer 'n e-posadres vir hierdie funksies om te werk.",
'emailconfirmlink' => 'Bevestig u e-posadres',
'invalidemailaddress' => "Die e-posadres is nie aanvaar nie, aangesien dit 'n ongeldige formaat blyk te hê.
Voer asseblief 'n geldige e-posadres in, of laat die veld leeg.",
# Special:PasswordReset
'passwordreset' => 'Wagwoord herstel',
-'passwordreset-text' => "Voltooi hierdie vorm om 'n e-pos herinnering van jou rekening besonderhede te ontvang.",
+'passwordreset-text' => 'Voltooi hierdie vorm om u wagwoord te herstel.',
'passwordreset-legend' => 'Kry nuwe wagwoord',
'passwordreset-disabled' => 'Die herskik van U wagwoord is gedeaktiveer op hierdie wiki.',
'passwordreset-pretext' => '{{PLURAL:$1| | Voer een van die onderstaande velde in}}',
'passwordreset-emailelement' => 'Gebruikersnaam: $1
Tydelike wagwoord: $2',
'passwordreset-emailsent' => "'n E-pos is gestuur om u wagwoord te herstel.",
-'passwordreset-emailsent-capture' => "'n E-pos ter herinnering is gestuur en word hieronder vertoon.",
-'passwordreset-emailerror-capture' => "'n E-pos ter herinnering is geskep en word hieronder vertoon. Die uitstuur daarvan het egter gefaal: $1",
+'passwordreset-emailsent-capture' => "'n E-pos vir die herstel van 'n wagwoord is gestuur. Dit word hieronder vertoon.",
+'passwordreset-emailerror-capture' => "'n E-pos vir die herstel van 'n wagwoord is saamgestel. Dit word hieronder vertoon. Die uitstuur daarvan het egter gefaal: $1",
# Special:ChangeEmail
'changeemail' => 'Wysig E-posadres',
'italic_tip' => 'Skuinsdruk',
'link_sample' => 'Skakelnaam',
'link_tip' => 'Interne skakel',
-'extlink_sample' => 'http://www.example.com skakel se titel',
+'extlink_sample' => 'http://www.voorbeeld.org skakel se titel',
'extlink_tip' => 'Eksterne skakel (onthou http:// vooraan)',
'headline_sample' => 'Opskrif',
'headline_tip' => 'Vlak 2-opskrif',
'anoneditwarning' => "'''Waarskuwing:''' Aangesien u nie aangeteken is nie, sal u IP-adres in dié blad se wysigingsgeskiedenis gestoor word.",
'anonpreviewwarning' => "''U is nie aangeteken nie.''
''As u die bladsy stoor sal u IP-adres in die bladsy se geskeidenis aangeteken word.''",
-'missingsummary' => "'''Onthou:''' Geen opsomming van die wysiging is verskaf nie. As \"Stoor\" weer geklik word, word die wysiging sonder opsomming gestoor.",
+'missingsummary' => "'''Neem kennis''': Geen opsomming van die wysiging is verskaf nie. As \"Stoor\" weer gekliek word, word die wysiging sonder 'n opsomming gestoor.",
'missingcommenttext' => 'Tik die opsomming onder.',
'missingcommentheader' => "'''Let op:''' U het geen onderwerp/opskrif vir die opmerking verskaf nie. As u weer op \"{{int:savearticle}}\" klik, sal u wysiging sonder die onderwerp/opskrif gestoor word.",
'summary-preview' => 'Opsomming nakijken:',
-'subject-preview' => 'Onderwerp/ opskrif voorskou:',
+'subject-preview' => 'Onderwerp/opskrif voorskou:',
'blockedtitle' => 'Gebruiker is geblokkeer',
'blockedtext' => "'''U gebruikersnaam of IP-adres is geblokkeer.'''
'userpage-userdoesnotexist-view' => 'Die gebruiker "$1" is nie geregistreer nie.',
'blocked-notice-logextract' => 'Hierdie gebruiker is tans geblokkeer.
Die laaste inskrywing in die blokkeerlogboek word hieronder vertoon:',
-'clearyourcache' => "'''Let wel''': Na die voorkeure gestoor is, moet u blaaier se kasgeheue verfris word om die veranderinge te sien:
+'clearyourcache' => "'''Neem kennis''': Na die wysiging is dit dalk nodig om u blaaier se kasgeheue verfris voordat u die veranderinge sal sien:
* '''Firefox / Safari:''' hou ''Shift'' en kliek ''Reload'', of druk ''Ctrl-F5'' of ''Ctrl-R'' (''⌘-R'' op 'n Mac)
* '''Google Chrome:''' druk ''Ctrl-Shift-R'' (''⌘-Shift-R'' op 'n Mac)
* '''Internet Explorer:''' hou ''Ctrl'' en kliek ''Refresh'', of druk ''Ctrl-F5''
'continue-editing' => 'Wysig verder',
'previewconflict' => 'Hierdie voorskou vertoon die teks in die boonste teksarea soos dit sou lyk indien u die bladsy stoor.',
'session_fail_preview' => "'''Jammer! Weens verlies aan sessie-inligting is die wysiging nie verwerk nie.
-Probeer asseblief weer. As dit steeds nie werk nie, probeer om [[Special:UserLogout|af te teken]] en dan weer aan te teken.'''",
+Probeer asseblief weer. As dit steeds nie werk nie, probeer om [[Special:UserLogout|af te teken]] en dan weer aan te meld.'''",
'session_fail_preview_html' => "'''Jammer! U wysigings is nie verwerk nie omdat sessie-data verlore gegaan het.'''
''Omrede rou HTML hier by {{SITENAME}} ingevoer kan word, kan die voorskou nie gesien word nie ter beskerming teen aanvalle met JavaScript.''
'''MOENIE WERK WAT DEUR KOPIEREG BESKERM WORD HIER PLAAS SONDER TOESTEMMING NIE!'''",
'longpageerror' => "'''Fout: die teks wat u bygevoeg het is {{PLURAL:$1|een kilogreep|$1 kilogrepe}} groot, wat groter is as die maksimum van {{PLURAL:$2|een kilogreep|$2 kilogrepe}}.'''
Die bladsy kan nie gestoor word nie.",
-'readonlywarning' => "'''WAARSKUWING: Die databasis is gesluit vir onderhoud. Dus sal u nie nou u wysigings kan stoor nie. Dalk wil u die teks in 'n lêer plak en stoor vir later.'''
+'readonlywarning' => "'''WAARSKUWING: Die databasis is gesluit vir onderhoud. Dus sal u nie nou u wysigings kan stoor nie.'''
+Dit is miskien verstandig om die teks tydelik in 'n lêer plak en te stoor vir later wanneer die databasis weer oop is.
Die administrateur wat dit gesluit het se verduideliking: $1",
'protectedpagewarning' => "'''WAARSKUWING: Hierdie bladsy is beveilig sodat slegs administrateurs die inhoud sal kan verander.''' Die nuutste logboekinskrywing word hieronder ter verwysing vertoon:",
-'semiprotectedpagewarning' => "'''Let wel:''' Hierdie artikel is beveilig sodat slegs ingetekende gebruikers dit sal kan wysig. Die nuutste logboekinskrywing word hieronder ter verwysing vertoon:",
+'semiprotectedpagewarning' => "'''Let wel:''' Hierdie artikel is beskerm sodat slegs ingetekende gebruikers dit sal kan wysig. Die nuutste logboekinskrywing word hieronder ter verwysing vertoon:",
'cascadeprotectedwarning' => "'''Waarskuwing:''' Die bladsy was beveilig sodat dit slegs deur administrateurs gewysig kan word, omrede dit ingesluit is in die volgende {{PLURAL:$1|bladsy|bladsye}} wat kaskade-beskerming geniet:",
'titleprotectedwarning' => "'''WAARSKUWING: Hierdie bladsy is beveilig. Slegs gebruikers met [[Special:ListGroupRights|spesiale regte]] sal dit kan skep.'''
Die nuutste logboekinskrywing word hieronder ter verwysing vertoon:",
-'templatesused' => '{{PLURAL:$1|Sjabloon|Sjablone}} gebruik op hierdie blad:',
+'templatesused' => '{{PLURAL:$1|Sjabloon|Sjablone}} wat op hierdie bladsy gebruik word:',
'templatesusedpreview' => '{{PLURAL:$1|Sjabloon|Sjablone}} gebruik in hierdie voorskou:',
'templatesusedsection' => 'Die volgende {{PLURAL:$1|sjabloon|sjablone}} word in hierdie afdeling gebruik:',
'template-protected' => '(beskermd)',
U moet besluit of dit wys is om voort te gaan om aan hierdie bladsy te werk.
Die skrap- en skuiflogboeke vir die bladsy word vir u gerief hier onder vertoon:",
'moveddeleted-notice' => 'Hierdie bladsy is verwyder.
-Die skrap- en skuif-logboeke word hieronder ter inligting weergegee.',
+Die skrap- en skuiflogboeke word hieronder ter inligting weergegee.',
'log-fulllog' => 'Wys volledige logboek',
'edit-hook-aborted' => "Die wysiging is deur 'n hoek gekanselleer.
Geen verduideliking is verskaf nie.",
Details kan in die [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} skraplogboek] gevind word.",
# Search results
-'searchresults' => 'soekresultate',
+'searchresults' => 'Soekresultate',
'searchresults-title' => 'Soekresultate vir "$1"',
'searchresulttext' => 'Vir meer inligting oor {{SITENAME}} soekresultate, lees [[{{MediaWiki:Helppage}}|{{int:help}}]].',
'searchsubtitle' => 'U soek vir \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|alle bladsye wat met "$1" begin]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|alle bladsye wat aan "$1" skakel]])',
'prevn-title' => 'Vorige {{PLURAL:$1|resultaat|$1 resultate}}',
'nextn-title' => 'Volgende {{PLURAL:$1|resultaat|$1 resultate}}',
'shown-title' => '$1 {{PLURAL:$1|resultaat|resultate}} per bladsy',
-'viewprevnext' => 'Kyk na ($1 {{int:pipe-separator}} $2) ($3).',
+'viewprevnext' => 'Wys ($1 {{int:pipe-separator}} $2) ($3).',
'searchmenu-legend' => 'Soekopsies',
'searchmenu-exists' => "'''Daar is reeds 'n bladsy genaamd \"[[:\$1]]\" op die wiki'''",
'searchmenu-new' => "'''Skep die bladsy \"[[:\$1]]\" op hierdie wiki'''",
'search-redirect' => '(aanstuur $1)',
'search-section' => '(afdeling $1)',
'search-suggest' => 'Het u $1 bedoel?',
-'search-interwiki-caption' => 'Suster projekte',
+'search-interwiki-caption' => 'Susterprojekte',
'search-interwiki-default' => '$1 resultate:',
'search-interwiki-more' => '(meer)',
'search-relatedarticle' => 'Verwante',
'powersearch-ns' => 'Soek in naamruimtes:',
'powersearch-redir' => 'Wys aanstuurbladsye',
'powersearch-field' => 'Soek vir',
-'powersearch-togglelabel' => 'Kies',
-'powersearch-toggleall' => 'Alles',
+'powersearch-togglelabel' => 'Kies:',
+'powersearch-toggleall' => 'Alle',
'powersearch-togglenone' => 'Geen',
'search-external' => 'Eksterne soektog',
'searchdisabled' => '{{SITENAME}} se soekfunksie is tans afgeskakel ter wille van werkverrigting. Gebruik gerus intussen Google of Yahoo! Let daarop dat hulle indekse van die {{SITENAME}}-inhoud verouderd mag wees.',
'allowemail' => 'Laat e-pos van ander toe',
'prefs-searchoptions' => 'Soek',
'prefs-namespaces' => 'Naamruimtes',
-'defaultns' => 'Anders soek in hierdie naamruimtes:',
+'defaultns' => 'Anders, soek in hierdie naamruimtes:',
'default' => 'verstek',
'prefs-files' => 'Lêers',
'prefs-custom-css' => 'Persoonlike CSS',
* 'n Ongeselekteerde boks beteken dat die gebruiker nie 'n lid van die groep is nie.
* 'n Ster (*) beteken dat u nie die gebruiker uit 'n groep kan verwyder as hy eers daaraan behoort nie, of vice versa.",
'userrights-reason' => 'Rede:',
-'userrights-no-interwiki' => 'U het nie toestemming om gebruikersregte op ander wikis te verander nie.',
+'userrights-no-interwiki' => "U het nie toestemming om gebruikersregte op ander wiki's te verander nie.",
'userrights-nodatabase' => 'Databasis $1 bestaan nie of is nie hier beskikbaar nie.',
'userrights-nologin' => "U moet [[Special:UserLogin|aanteken]] as 'n administrateur om gebruikersregte te mag toeken.",
'userrights-notallowed' => 'U het nie magtiging om gebruikersregte by te sit of weg te neem nie.',
'recentchanges' => 'Onlangse wysigings',
'recentchanges-legend' => 'Opsies vir onlangse wysigings',
'recentchanges-summary' => 'Volg die mees onlangse wysigings aan die wiki op die bladsy.',
-'recentchanges-feed-description' => 'Spoor die mees onlangse wysigings op die wiki na in die voer.',
+'recentchanges-feed-description' => 'Hierdie voer laat u toe om die mees onlangse wysigings aan die wiki te volg.',
'recentchanges-label-newpage' => "Met die wysiging is 'n nuwe bladsy geskep",
'recentchanges-label-minor' => "Hierdie is 'n klein wysiging",
'recentchanges-label-bot' => "Hierdie wysiging was deur 'n bot uitgevoer",
'recentchanges-label-unpatrolled' => 'Die wysiging is nog nie gekontroleer nie',
-'rcnote' => "Hier volg die laaste {{PLURAL:$1|'''$1''' wysiging|'''$1''' wysigings}} vir die afgelope {{PLURAL:$2|dag|'''$2''' dae}}, soos vanaf $4, $5.",
+'rcnote' => "Hier volg die laaste {{PLURAL:$1|'''$1''' wysiging|'''$1''' wysigings}} gedurende die afgelope {{PLURAL:$2|dag|'''$2''' dae}}, soos vanaf $4 om $5.",
'rcnotefrom' => 'Hier onder is die wysigings sedert <b>$2</b> (tot by <b>$1</b> word gewys).',
'rclistfrom' => 'Vertoon wysigings vanaf $1',
'rcshowhideminor' => '$1 klein wysigings',
'rcshowhidebots' => '$1 robotte',
'rcshowhideliu' => '$1 aangetekende gebruikers',
'rcshowhideanons' => '$1 anonieme gebruikers',
-'rcshowhidepatr' => '$1 gepatrolleerde wysigings',
+'rcshowhidepatr' => '$1 gekontroleerde wysigings',
'rcshowhidemine' => '$1 my wysigings',
'rclinks' => 'Vertoon die laaste $1 wysigings in die afgelope $2 dae<br />$3',
'diff' => 'verskil',
'filedesc' => 'Opsomming',
'fileuploadsummary' => 'Opsomming:',
'filereuploadsummary' => 'Lêerwysigings:',
-'filestatus' => 'Outeursregsituasie:',
+'filestatus' => 'Outeursregstatus:',
'filesource' => 'Bron:',
'uploadedfiles' => 'Gelaaide lêers',
'ignorewarning' => 'Ignoreer waarskuwings en stoor die lêer',
'uploadwarning-text' => 'Verander die onderstaande lêerbeskrywing en probeer dan weer.',
'savefile' => 'Stoor lêer',
'uploadedimage' => 'het "[[$1]]" gelaai',
-'overwroteimage' => 'het een nuwe weergawe van "[[$1]]" gelaai',
-'uploaddisabled' => 'Laai is uitgeskakel',
+'overwroteimage' => 'het \'n nuwe weergawe van "[[$1]]" opgelaai',
+'uploaddisabled' => 'Die oplaai van lêers is afgeskakel.',
'copyuploaddisabled' => 'Die oplaai van lêers per URL is afgeskakel.',
'uploadfromurl-queued' => 'U oplaai is in die wagtou geplaas.',
'uploaddisabledtext' => 'Die oplaai van lêers is afgeskakel.',
'uploadjava' => "Die lêer is 'n ZIP wat 'n Java .class-lêer bevat.
Die oplaai van Java-lêers word nie toegelaat nie, omdat dit sekuriteit kan omseil.",
'upload-source' => 'Bronlêer',
-'sourcefilename' => 'Bronlêernaam:',
+'sourcefilename' => 'Oorspronklike lêernaam:',
'sourceurl' => 'Bron-URL:',
'destfilename' => 'Teikenlêernaam:',
'upload-maxfilesize' => 'Maksimum lêer grootte: $1',
'license' => 'Lisensiëring:',
'license-header' => 'Lisensiëring',
-'nolicense' => 'Niks gekies',
+'nolicense' => 'Niks gekies nie',
'license-nopreview' => '(Voorskou nie beskikbaar)',
'upload_source_url' => " ('n geldige, publiek toeganklike URL)",
'upload_source_file' => " ('n lêer op u rekenaar)",
'statistics-views-total-desc' => 'Die wys van nie-bestaande bladsye en spesiale bladsye is nie ingesluit nie',
'statistics-views-peredit' => 'Bladsye besigtig per wysiging',
'statistics-users' => 'Geregistreerde [[Special:ListUsers|gebruikers]]',
-'statistics-users-active' => 'Aktiewe grbruikers',
+'statistics-users-active' => 'Aktiewe gebruikers',
'statistics-users-active-desc' => "Gebruikers wat in die afgelope {{PLURAL:$1|dag|$1 dae}} 'n handeling uitgevoer het",
'statistics-mostpopular' => 'Mees bekykte bladsye',
'unusedcategories' => 'Ongebruikte kategorieë',
'unusedimages' => 'Ongebruikte lêers',
'popularpages' => 'Gewilde bladsye',
-'wantedcategories' => 'Begeerde kategorieë',
-'wantedpages' => 'Begeerde bladsye',
+'wantedcategories' => 'Gesoekte kategorieë',
+'wantedpages' => 'Gesoekte bladsye',
'wantedpages-badtitle' => 'Ongeldige bladsynaam in resultate: $1',
'wantedfiles' => 'Begeerde lêers',
'wantedfiletext-cat' => 'Die volgende lêers word gebruik, maar bestaan nie. Lêers van eksterne biblioteke kan, ondanks die feit dat hulle wel bestaan, ook hier gelys wees. Hierdie vals positiewes word as <del>deurgehaal aangedui</del>. Bladsye met lêers wat nie bestaan nie word aangegee by [[:$1]].',
# Special:Categories
'categories' => 'Kategorieë',
'categoriespagetext' => 'Die volgende {{PLURAL:$1|kategorie|kategorieë}} bevat bladsye of media.
-[[Special:UnusedCategories|Ongebruikte kategorieë]] word nie hier weergegee nie.
-Sie ook [[Special:WantedCategories|nie-bestaande kategorieë met verwysings]].',
+[[Special:UnusedCategories|Ongebruikte kategorieë]] word nie gewys nie.
+Sien ook [[Special:WantedCategories|nie-bestaande kategorieë met verwysings]].',
'categoriesfrom' => 'Wys kategorieë vanaf:',
'special-categories-sort-count' => 'sorteer volgens getal',
'special-categories-sort-abc' => 'sorteer alfabeties',
# Special:ListUsers
'listusersfrom' => 'Wys gebruikers, beginnende by:',
'listusers-submit' => 'Wys',
-'listusers-noresult' => 'Geen gebruiker gevind.',
+'listusers-noresult' => 'Geen gebruikers gevind nie.',
'listusers-blocked' => '(geblokkeer)',
-# Special:ActiveUsers
-'activeusers' => 'Aktiewe gebruikers',
-'activeusers-intro' => "Hierdie is 'n lys van gebruikers wat die laaste {{PLURAL:$1|dag|$1 dae}} enige aktiwiteit getoon het.",
-'activeusers-count' => '$1 onlangse {{PLURAL:$1|wysiging|wysigings}} in die {{PLURAL:$3|afgelope dag|laatste $3 dae}}',
-'activeusers-from' => 'Wys gebruikers, beginnende by:',
-'activeusers-hidebots' => 'Versteek bots',
-'activeusers-hidesysops' => 'Versteek administrateurs',
-'activeusers-noresult' => 'Geen gebruikers gevind nie.',
-
# Special:ListGroupRights
'listgrouprights' => 'Gebruikersgroepregte',
'listgrouprights-summary' => "Hier volg 'n lys van gebruikersgroepe met hulle ooreenstemmende regte wat op die wiki gedefinieer is.
'emailccme' => "E-pos vir my 'n kopie van my boodskap.",
'emailccsubject' => 'Kopie van u boodskap aan $1: $2',
'emailsent' => 'E-pos gestuur',
-'emailsenttext' => 'U e-pos is gestuur.',
+'emailsenttext' => 'Die e-pos is gestuur.',
'emailuserfooter' => 'Hierdie e-pos is gestuur deur $1 aan $2 met behulp van die "Stuur e-pos aan die gebruiker"-funksie van {{SITENAME}}.',
# User Messenger
'nowatchlist' => 'U het geen items in u dophoulys nie.',
'watchlistanontext' => '$1 is noodsaaklik om u dophoulys te sien of te wysig.',
'watchnologin' => 'Nie ingeteken nie',
-'watchnologintext' => 'U moet [[Special:UserLogin|ingeteken]]
-wees om u dophoulys te verander.',
+'watchnologintext' => 'U moet [[Special:UserLogin|aangemeld]] wees om u dophoulys te verander.',
'addwatch' => 'Voeg by dophoulys',
'addedwatchtext' => 'Die bladsy "[[:$1]]" is by u [[Special:Watchlist|dophoulys]] bygevoeg.
Toekomstige wysigings aan hierdie bladsy en sy bybehorende besprekingsblad sal hier gelys word.',
'wlheader-showupdated' => "* Bladsye wat verander is sedert u hulle laas besoek het word in '''vetdruk''' uitgewys",
'watchmethod-recent' => 'Kontroleer onlangse wysigings aan bladsye op dophoulys',
'watchmethod-list' => 'kontroleer bladsye op dophoulys vir wysigings',
-'watchlistcontains' => 'U dophoulys bevat $1 {{PLURAL:$1|bladsy|bladsye}}.',
+'watchlistcontains' => 'Jou dophoulys bevat $1 {{PLURAL:$1|bladsy|bladsye}}.',
'iteminvalidname' => "Probleem met item '$1', ongeldige naam...",
'wlnote' => "Hier volg die laaste {{PLURAL:$1|verandering|'''$1''' veranderings}} binne die laaste {{PLURAL:$2|uur|'''$2''' ure}}, soos vanaf $3 om $4.",
'wlshowlast' => 'Wys afgelope $1 ure, $2 dae of $3',
# Delete
'deletepage' => 'Skrap bladsy',
'confirm' => 'Bevestig',
-'excontent' => "inhoud was: '$1'",
-'excontentauthor' => "Inhoud was: '$1' ('[[Special:Contributions/$2|$2]]' was die enigste bydraer)",
+'excontent' => 'inhoud was: "$1"',
+'excontentauthor' => 'Inhoud was: "$1" (en die enigste bydraer was [[Special:Contributions/$2|$2]])',
'exbeforeblank' => "Inhoud voor uitwissing was: '$1'",
'exblank' => 'bladsy was leeg',
'delete-confirm' => 'Skrap "$1"',
'delete-legend' => 'Skrap',
'historywarning' => "'''Waarskuwing:''' Die bladsy wat u wil verwyder het 'n geskiedenis met ongeveer $1 {{PLURAL:$1|weergawe|weergawes}}:",
-'confirmdeletetext' => "U staan op die punt om 'n bladsy of prent asook al hulle geskiedenis uit die databasis te skrap.
-Bevestig asseblief dat u dit wil doen, dat u die gevolge verstaan en dat u dit doen in ooreenstemming met die [[{{MediaWiki:Policy-url}}]].",
+'confirmdeletetext' => "U staan op die punt om 'n bladsy of prent, insluitende hul geskiedenis, uit die databasis te skrap.
+Bevestig asseblief dat u dit wil doen, dat u die gevolge verstaan en dat u dit doen in ooreenstemming met die [[{{MediaWiki:Policy-url}}|beleid]].",
'actioncomplete' => 'Aksie uitgevoer',
'actionfailed' => 'Aksie het gefaal',
'deletedtext' => '"$1" is geskrap.
-Kyk na $2 vir \'n rekord van onlangse skrappings.',
+Sien die $2 vir \'n rekord van onlangse skrappings.',
'dellogpage' => 'Skraplogboek',
'dellogpagetext' => "Hier onder is 'n lys van die mees onlangse skrappings. Alle tye is bedienertyd (UGT).",
'deletionlog' => 'skraplogboek',
'protect-cascadeon' => 'Die bladsy word beskerm want dit is ingesluit by die volgende {{PLURAL:$1|blad|blaaie}} wat kaskade-beskerming geniet. U kan die veiligheidsvlak van die bladsy verander, maar dit sal nie die ander kaskade blaaie beïnvloed nie.',
'protect-default' => 'Laat alle gebruikers toe',
'protect-fallback' => 'Laat slegs gebruikers met "$1" regte toe',
-'protect-level-autoconfirmed' => 'Laat slegs "autoconfirmed" gebruikers toe',
+'protect-level-autoconfirmed' => 'Laat slegs outomaties bevestigde gebruikers toe',
'protect-level-sysop' => 'Laat slegs administrateurs toe',
'protect-summary-cascade' => 'kaskade',
'protect-expiring' => 'verval op $2 om $3 (UTC)',
'protect-expiring-local' => 'verval op $1',
'protect-expiry-indefinite' => 'verval nie',
'protect-cascade' => 'Beveilig bladsye insluitend die bladsy (kaskade effek)',
-'protect-cantedit' => 'U kan nie die veiligheidsvlak van die blad verander nie, want u het nie regte om dit te wysig nie.',
+'protect-cantedit' => 'U kan nie die veiligheidsvlak van die bladsy verander nie, want u het nie regte om dit te wysig nie.',
'protect-othertime' => 'Ander tyd:',
'protect-othertime-op' => 'ander tyd',
'protect-existing-expiry' => 'Bestaande vervaldatum: $2 om $3',
# What links here
'whatlinkshere' => 'Skakels hierheen',
-'whatlinkshere-title' => 'Bladsye wat verwys na "$1"',
+'whatlinkshere-title' => 'Bladsye wat na "$1" skakel',
'whatlinkshere-page' => 'Bladsy:',
'linkshere' => "Die volgende bladsye skakel na '''[[:$1]]''':",
'nolinkshere' => "Geen bladsye skakel na '''[[:$1]]'''.",
'tooltip-pt-watchlist' => 'Die lys bladsye wat u vir veranderinge dophou',
'tooltip-pt-mycontris' => 'Lys van my bydraes',
'tooltip-pt-login' => 'U word aangemoedig om in te teken. Dit is egter nie verpligtend nie.',
-'tooltip-pt-anonlogin' => 'U word aangemoedig om in te teken; dit is egter nie verpligtend nie.',
+'tooltip-pt-anonlogin' => 'U word aangemoedig om in te teken. Dit is egter nie verpligtend nie.',
'tooltip-pt-logout' => 'Teken uit',
-'tooltip-ca-talk' => 'Bespreking oor die inhoudsbladsy',
-'tooltip-ca-edit' => 'U kan hierdie bladsy redigeer. Gebruik asseblief die voorskouknop vóór u dit stoor.',
-'tooltip-ca-addsection' => 'Nuwe afdeling',
+'tooltip-ca-talk' => 'Bespreking oor die inhoudbladsy',
+'tooltip-ca-edit' => 'U kan hierdie bladsy wysig. Gebruik asseblief die voorskoufunksie vóór u dit stoor.',
+'tooltip-ca-addsection' => "Begin 'n nuwe bespreking",
'tooltip-ca-viewsource' => 'Hierdie bladsy is beskerm. U kan die bronteks besigtig.',
-'tooltip-ca-history' => 'Ouer weergawes van hierdie bladsy.',
+'tooltip-ca-history' => 'Ouer weergawes van hierdie bladsy',
'tooltip-ca-protect' => 'Beskerm hierdie bladsy',
'tooltip-ca-unprotect' => 'Wysig beskerming van die bladsy',
'tooltip-ca-delete' => 'Skrap hierdie bladsy',
'tooltip-p-logo' => 'Besoek die tuisblad',
'tooltip-n-mainpage' => 'Besoek die Tuisblad',
'tooltip-n-mainpage-description' => 'Gaan na die tuisblad',
-'tooltip-n-portal' => 'Meer oor die projek, wat u kan doen, nuttige skakels',
+'tooltip-n-portal' => 'Meer oor die projek, wat jy kan doen, nuttige skakels',
'tooltip-n-currentevents' => "'n Plek waar almal gesellig kan verkeer",
'tooltip-n-recentchanges' => "'n Lys van onlangse wysigings",
'tooltip-n-randompage' => "Laai 'n lukrake bladsye",
'tooltip-feed-atom' => 'Atom-voed vir hierdie bladsy',
'tooltip-t-contributions' => "Bekyk 'n lys van bydraes deur hierdie gebruiker",
'tooltip-t-emailuser' => "Stuur 'n e-pos aan hierdie gebruiker",
-'tooltip-t-upload' => 'Laai lêers op',
+'tooltip-t-upload' => 'Laai beelde of ander medialêers op',
'tooltip-t-specialpages' => "'n Lys van al die spesiale bladsye",
'tooltip-t-print' => 'Drukbare weergawe van hierdie bladsy',
'tooltip-t-permalink' => "'n Permanente skakel na hierdie weergawe van die bladsy",
'tooltip-ca-nstab-template' => 'Bekyk die sjabloon',
'tooltip-ca-nstab-help' => 'Bekyk die hulpbladsy',
'tooltip-ca-nstab-category' => 'Bekyk die kategoriebladsy',
-'tooltip-minoredit' => "Dui aan hierdie is 'n klein wysiging",
+'tooltip-minoredit' => "Dui aan dat hierdie 'n klein wysiging is",
'tooltip-save' => 'Stoor u wysigings',
-'tooltip-preview' => "Sien 'n voorskou van u wysigings, gebruik dit voor u die blad stoor!",
+'tooltip-preview' => "Sien 'n voorskou van u wysigings. Gebruik hierdie funksie vóór u die bladsy stoor!",
'tooltip-diff' => 'Wys watter veranderinge u aan die teks gemaak het.',
'tooltip-compareselectedversions' => 'Vergelyk die twee gekose weergawes van hierdie blad.',
'tooltip-watch' => 'Voeg hierdie blad by u dophoulys',
# Attribution
'anonymous' => 'Anonieme {{PLURAL:$1|gebruiker|gebruikers}} van {{SITENAME}}',
-'siteuser' => '{{SITENAME}} gebruiker $1',
+'siteuser' => '{{SITENAME}}-gebruiker $1',
'anonuser' => 'Anonieme {{SITENAME}}-gebruiker $1',
'lastmodifiedatby' => 'Hierdie bladsy is laas op $1 om $2 deur $3 gewysig.',
'othercontribs' => 'Gebaseer op werk van $1.',
'others' => 'ander',
-'siteusers' => '{{SITENAME}}-{{PLURAL:$2|gebruikers|gebruikers}} $1',
+'siteusers' => '{{SITENAME}}-{{PLURAL:$2|gebruiker|gebruikers}} $1',
'anonusers' => 'Anonieme {{SITENAME}}-{{PLURAL:$2|gebruiker|gebruikers}} $1',
'creditspage' => 'Outeursblad',
'nocredits' => 'Geen outeursinligting is vir hierdie bladsy nie beskikbaar nie.',
'pageinfo-category-files' => 'Aantal lêers',
# Skin names
-'skinname-standard' => 'Standaard',
-'skinname-nostalgia' => 'Nostalgie',
'skinname-cologneblue' => 'Keulen blou',
# Patrolling
'file-no-thumb-animation-gif' => "'''Let op: vanweë tegniese beperkinge, kan duimnaels met hoë resolusie GIF-lêers nie geanimeerd gewys word nie.'''",
# Special:NewFiles
-'newimages' => 'Gallery van nuwe beelde',
+'newimages' => 'Galery van nuwe beelde',
'imagelisttext' => "Hier onder is a lys van '''$1''' {{PLURAL:$1|lêer|lêers}}, $2 gesorteer.",
'newimages-summary' => 'Die spesiale bladsy wys die nuutste lêers wat na die wiki opgelaai is.',
'newimages-legend' => 'Filter',
'recreate' => 'Herskep',
# action=purge
-'confirm_purge_button' => 'OK',
+'confirm_purge_button' => 'Regso',
'confirm-purge-top' => 'Verwyder die kas van hierdie blad?',
'confirm-purge-bottom' => "Die opruiming van die kas sorg daarvoor dat die mees onlangse weergawe van 'n bladsy vertoon word.",
'sqlite-no-fts' => 'Weergawe $1 sonder ondersteuning vir vol-teks soektogte ("full-text search")',
# New logging system
-'logentry-delete-delete' => '$1 het bladsy $3 verwyder',
-'logentry-delete-restore' => '$1 het bladsy $3 teruggeplaas',
-'logentry-delete-event' => "$1 het die sigbaarheid van {{PLURAL:$5|'n logboekreël|$5 logboekreëls}} van $3 gewysig: $4",
-'logentry-delete-revision' => "$1 het die sigbaarheid van {{PLURAL:$5|'n weergawe|$5 weergawes}} van bladsy $3 gewysig: $4",
-'logentry-delete-event-legacy' => '$1 het die sigbaarheid van logboekreëls van $3 gewysig',
-'logentry-delete-revision-legacy' => '$1 het die sigbaarheid van weergawes van die bladsy $3 gewysig.',
-'logentry-suppress-delete' => '$1 het die bladsy $3 onderdruk',
-'logentry-suppress-event' => "$1 het in die geheim die sigbaarheid van {{PLURAL:$5|'n logboekreël|$5 logboekreëls}} van $3 gewysig: $4",
-'logentry-suppress-revision' => "$1 het in die geheim die sigbaarheid van {{PLURAL:$5|'n weergawe|$5 weergawes}} van die bladsy $3 gewysig: $4",
-'logentry-suppress-event-legacy' => '$1 het in die geheim die sigbaarheid van logboekreëls van $3 gewysig',
-'logentry-suppress-revision-legacy' => '$1 het in die geheim die sigbaarheid van weergawes van die bladsy $3 gewysig',
+'logentry-delete-delete' => '$1 {{GENDER:$2|het}} bladsy $3 verwyder',
+'logentry-delete-restore' => '$1 {{GENDER:$2|het}} bladsy $3 teruggeplaas',
+'logentry-delete-event' => "$1 {{GENDER:$2|het}} die sigbaarheid van {{PLURAL:$5|'n logboekreël|$5 logboekreëls}} van $3 gewysig: $4",
+'logentry-delete-revision' => "$1 {{GENDER:$2|het}} die sigbaarheid van {{PLURAL:$5|'n weergawe|$5 weergawes}} van bladsy $3 gewysig: $4",
+'logentry-delete-event-legacy' => '$1 {{GENDER:$2|het}} die sigbaarheid van logboekreëls van $3 gewysig',
+'logentry-delete-revision-legacy' => '$1 {{GENDER:$2|het}} die sigbaarheid van weergawes van bladsy $3 gewysig.',
+'logentry-suppress-delete' => '$1 {{GENDER:$2|het}} die bladsy $3 onderdruk',
+'logentry-suppress-event' => "$1 {{GENDER:$2|het}} in die geheim die sigbaarheid van {{PLURAL:$5|'n logboekreël|$5 logboekreëls}} van $3 gewysig: $4",
+'logentry-suppress-revision' => "$1 {{GENDER:$2|het}} in die geheim die sigbaarheid van {{PLURAL:$5|'n weergawe|$5 weergawes}} van die bladsy $3 gewysig: $4",
+'logentry-suppress-event-legacy' => '$1 {{GENDER:$2|het}} in die geheim die sigbaarheid van logboekreëls van $3 gewysig',
+'logentry-suppress-revision-legacy' => '$1 {{GENDER:$2|het}} in die geheim die sigbaarheid van weergawes van die bladsy $3 gewysig',
'revdelete-content-hid' => 'inhoud versteek',
'revdelete-summary-hid' => 'wysigingsopsomming versteek',
'revdelete-uname-hid' => 'gebruikersnaam versteek',
'revdelete-uname-unhid' => 'gebruikersnaam sigbaar gemaak',
'revdelete-restricted' => 'beperkings is aan administrateurs opgelê',
'revdelete-unrestricted' => 'beperkings vir administrateurs is opgehef',
-'logentry-move-move' => '$1 het bladsy $3 na $4 geskuif',
-'logentry-move-move-noredirect' => "$1 het bladsy $3 na $4 geskuif sonder om 'n aanstuur agter te laat",
-'logentry-move-move_redir' => "$1 het bladsy $3 na $4 oor 'n aanstuur geskuif",
-'logentry-move-move_redir-noredirect' => "$1 het bladsy $3 na $4 oor 'n bestaande aanstuur geskuif sonder om 'n aanstuur agter te laat",
-'logentry-patrol-patrol' => '$1 het weergawe $4 van bladsy $3 as gekontroleerd gemerk',
-'logentry-patrol-patrol-auto' => '$1 het weergawe $4 van bladsy $3 outomaties as gekontroleerd gemerk',
-'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',
-'logentry-rights-autopromote' => '$1 is outomaties gepromoveerd van $4 na $5',
+'logentry-move-move' => '$1 {{GENDER:$2|het}} bladsy $3 na $4 geskuif',
+'logentry-move-move-noredirect' => "$1 {{GENDER:$2|het}} bladsy $3 na $4 geskuif sonder om 'n aanstuur agter te laat",
+'logentry-move-move_redir' => "$1 {{GENDER:$2|het}} bladsy $3 na $4 oor 'n aanstuur geskuif",
+'logentry-move-move_redir-noredirect' => "$1 {{GENDER:$2|het}} bladsy $3 na $4 oor 'n bestaande aanstuur geskuif sonder om 'n aanstuur agter te laat",
+'logentry-patrol-patrol' => '$1 {{GENDER:$2|het}} weergawe $4 van bladsy $3 as gekontroleerd gemerk',
+'logentry-patrol-patrol-auto' => '$1 {{GENDER:$2|het}} weergawe $4 van bladsy $3 outomaties as gekontroleerd gemerk',
+'logentry-newusers-newusers' => 'Gebruiker $1 {{GENDER:$2|is}} geskep',
+'logentry-newusers-create' => 'Gebruiker $1 {{GENDER:$2|is}} geskep',
+'logentry-newusers-create2' => 'Gebruiker $3 {{GENDER:$2|is}} deur $1 geskep',
+'logentry-newusers-byemail' => 'Gebruiker $3 {{GENDER:$2|is}} deur $1 geskep en die wagwoord is per e-pos aangestuur',
+'logentry-newusers-autocreate' => 'Die gebruiker $1 {{GENDER:$2|is}} outomaties geskep',
+'logentry-rights-rights' => '$1 {{GENDER:$2|het}} groepslidmaatskap vir $3 van $4 na $5 gewysig',
+'logentry-rights-rights-legacy' => '$1 {{GENDER:$2|het}} groepslidmaatskap vir $3 gewysig',
+'logentry-rights-autopromote' => '$1 {{GENDER:$2|is}} outomaties van $4 na $5 gepromoveerd',
'rightsnone' => '(geen)',
# Feedback
'create-this-page' => 'أنشئ هذه الصفحة',
'delete' => 'حذف',
'deletethispage' => 'احذف هذه الصفحة',
-'undelete_short' => 'استرجاع {{PLURAL:$1|تعديل واحد|تعديلين|$1 تعديلات|$1 تعديل|$1 تعديلا}}',
-'viewdeleted_short' => 'استعرض {{PLURAL:$1|تعديل محذوف|$1 تعديلات محذوفة}}',
+'undelete_short' => 'استرجاع {{PLURAL:$1||تعديل واحد|تعديلين|$1 تعديلات|$1 تعديلاً|$1 تعديل}}',
+'viewdeleted_short' => 'استعرض {{PLURAL:$1||تعديل واحد|تعديلين|$1 تعديلات|$1 تعديلاً|$1 تعديل}}',
'protect' => 'احم',
'protect_change' => 'غير',
'protectthispage' => 'احم هذه الصفحة',
'listusers-noresult' => 'لم يتم إيجاد مستخدم.',
'listusers-blocked' => '(ممنوع)',
-# Special:ActiveUsers
-'activeusers' => 'قائمة المستخدمين النشطين',
-'activeusers-intro' => 'هذه قائمة بالمستخدمين الذين مارسوا نوعاً من النشاط خلال {{PLURAL:$1||اليوم الماضي|اليومين الماضيين|ال$1 أيام الماضية|ال$1 يوماً ماضياً|ال$1 يوم ماضي}}.',
-'activeusers-count' => '{{PLURAL:$1|لا أفعال|فعل واحد|فعلان اثنان|$1 أفعال|$1 فعلاً|$1 فعل}} منذ {{PLURAL:$3||يوم|يومين|$3 أيام|$3 يوماً|$1 يوم}}',
-'activeusers-from' => 'اعرض المستخدمين بدءاً من:',
-'activeusers-hidebots' => 'أخف البوتات',
-'activeusers-hidesysops' => 'أخف الإداريين',
-'activeusers-noresult' => 'لم يعثر على أي مستخدمين',
-
# Special:ListGroupRights
'listgrouprights' => 'صلاحيات مجموعات المستخدمين',
'listgrouprights-summary' => 'التالي قائمة بمجموعات المستخدمين المعرفة في هذا الويكي، بصلاحياتهم المصاحبة.
'rollback' => 'استرجاع التعديلات',
'rollback_short' => 'استرجع',
'rollbacklink' => 'استرجع',
-'rollbacklinkcount' => 'استرجع {{PLURAL:$1|لا تعديلات|تعديلا واحدا|تعديلين|$1 تعديلات|$1 تعديل}}',
-'rollbacklinkcount-morethan' => 'استرجاع أكثر من $1 {{PLURAL:$1|تعديل|تعديلات}}',
+'rollbacklinkcount' => 'استرجع {{PLURAL:$1|لا تعديلات|تعديلا واحدا|تعديلين|$1 تعديلات|$1 تعديلاً|تعديل}}',
+'rollbacklinkcount-morethan' => 'استرجاع أكثر من {{PLURAL:$1||تعديل|تعديلين|$1 تعديلات|$1 تعديلاً|$1 تعديل}}',
'rollbackfailed' => 'لم ينجح الاسترجاع',
'cantrollback' => 'لم يمكن استرجاع التعديل؛
آخر مساهم هو المؤلف الوحيد لهذه الصفحة.',
'undeletereset' => 'أعد الضبط',
'undeleteinvert' => 'اعكس الاختيار',
'undeletecomment' => 'السبب:',
-'undeletedrevisions' => 'تم استرجاع {{PLURAL:$1|تعديل واحد|تعديلين|$1 تعديلات|$1 تعديل|$1 تعديلا}}',
+'undeletedrevisions' => 'تم استرجاع {{PLURAL:$1||تعديل واحد|تعديلين|$1 تعديلات|$1 تعديلا|$1 تعديل}}',
'undeletedrevisions-files' => 'أسترجعت {{PLURAL:$1||مراجعة واحدة|مراجعتان|$1 مراجعات|$1 مراجعة}} و{{PLURAL:$2||ملف واحد|ملفان|$2 ملفات|$2 ملفًا|$2 ملف}}',
'undeletedfiles' => 'أسترجع {{PLURAL:$1||ملف واحد|ملفان|$1 ملفات|$1 ملفًا|$1 ملف}}',
'cannotundelete' => 'فشل الاسترجاع؛
# Stylesheets
'common.css' => '/* ستؤثر الأنماط المتراصة (CSS) المعروضة هنا على كل الواجهات */',
-'standard.css' => '/* الأنماط المتراصة CSS المعروضة هنا ستؤثر على مستخدمي واجهة ستاندرد */',
-'nostalgia.css' => '/* الأنماط المتراصة CSS المعروضة هنا ستؤثر على مستخدمي واجهة نوستالشيا */',
'cologneblue.css' => '/* الأنماط المتراصة CSS المعروضة هنا ستؤثر على مستخدمي واجهة كولون بلو */',
'monobook.css' => '/* الأنماط المتراصة CSS المعروضة هنا ستؤثر على مستخدمي واجهة مونوبوك */',
-'myskin.css' => '/* الأنماط المتراصة CSS المعروضة هنا ستؤثر على مستخدمي واجهة ماي سكين */',
-'chick.css' => '/* الأنماط المتراصة CSS المعروضة هنا ستؤثر على مستخدمي واجهة تشيك */',
-'simple.css' => '/* الأنماط المتراصة CSS المعروضة هنا ستؤثر على مستخدمي واجهة سيمبل */',
'modern.css' => '/* الأنماط المتراصة CSS المعروضة هنا ستؤثر على مستخدمي واجهة مودرن */',
'vector.css' => '/* الأنماط المتراصة CSS المعروضة هنا ستؤثر على مستخدمي واجهة فكتور */',
'print.css' => '/* الأنماط المتراصة CSS المعروضة هنا ستؤثر على ناتج الطباعة */',
# Scripts
'common.js' => '/* الجافاسكريبت الموضوع هنا سيتم تحميله لكل المستخدمين مع كل تحميل للصفحة. */',
-'standard.js' => '/* أي جافاسكريبت هنا سيتم تحميلها للمستخدمين الذين يستعملون واجهة ستاندرد */',
-'nostalgia.js' => '/* أي جافاسكريبت هنا سيتم تحميلها للمستخدمين الذين يستعملون واجهة نوستالشيا */',
'cologneblue.js' => '/* أي جافاسكريبت هنا سيتم تحميلها للمستخدمين الذين يستعملون واجهة كولون بلو */',
'monobook.js' => '/* أي جافاسكريبت هنا سيتم تحميلها للمستخدمين الذين يستعملون واجهة مونوبوك */',
-'myskin.js' => '/* أي جافاسكريبت هنا سيتم تحميلها للمستخدمين الذين يستعملون واجهة ماي سكين */',
-'chick.js' => '/* أي جافاسكريبت هنا سيتم تحميلها للمستخدمين الذين يستعملون واجهة تشيك */',
-'simple.js' => '/* أي جافاسكريبت هنا سيتم تحميلها للمستخدمين الذين يستعملون واجهة سيمبل */',
'modern.js' => '/* أي جافاسكريبت هنا سيتم تحميلها للمستخدمين الذين يستعملون واجهة مودرن */',
'vector.js' => '/* أي جافاسكريبت هنا سيتم تحميلها للمستخدمين الذين يستعملون واجهة فكتور */',
'group-autoconfirmed.js' => '/* أي جافاسكريبت هنا سيتم تحميلها للمستخدمين المؤكدين تلقائيا فقط */',
'pageinfo-category-files' => 'عدد الملفات',
# Skin names
-'skinname-standard' => 'كلاسيك',
-'skinname-nostalgia' => 'نوستالجيا',
'skinname-cologneblue' => 'كولون بلو',
'skinname-monobook' => 'مونوبوك',
-'skinname-myskin' => 'ماي سكين',
-'skinname-chick' => 'تشيك',
-'skinname-simple' => 'سيمبل',
'skinname-modern' => 'مودرن',
'skinname-vector' => 'فكتور',
ܡܨܬ ܐܦܠܚܬ {{SITENAME}} ܐܝܟ ܡܦܠܚܢܐ ܠܐ ܝܕܝܥܐ ܐܘ ܡܨܬ ܕ<span class='plainlinks'>[$1 ܬܥܘܠ]</span> ܒܚܘܫܒܢܐ ܥܝܢܗ ܐܘ ܐܝܟ ܡܦܠܚܢܐ ܐܚܪܢܐ.
ܚܕ ܟܡܐ ܡܢ ܦܐܬܬ̈ܐ ܡܬܚܙܝܢ ܐܝܟ ܕܗܘ ܐܢܬ ܥܠܝܠܐ ܐܝܬܝܟ ܥܕܡܐ ܕܐܣܦܩܬ ܠܦܐܬܬ̈ܐ ܠܒܝܟܬ̈ܐ ܕܡܦܐܬܢܐ ܕܝܠܟ.",
+'welcomeuser' => 'ܒܫܝܢܐ $1!',
'yourname' => 'ܫܡܐ ܕܡܦܠܚܢܐ:',
'yourpassword' => 'ܡܠܬܐ ܕܥܠܠܐ:',
'yourpasswordagain' => 'ܟܬܘܒ ܡܠܬܐ ܕܥܠܠܐ ܙܒܢܬܐ ܐܚܪܬܐ:',
'recentchanges-label-newpage' => 'ܫܘܚܠܦܐ ܗܢܐ ܐܬܬܣܝܡ ܦܐܬܐ ܚܕܬܐ',
'recentchanges-label-minor' => 'ܗܢܘ ܫܘܚܠܦܐ ܙܥܘܪܐ',
'recentchanges-label-bot' => 'ܒܘܬ (bot) ܥܒܕ ܗܢܐ ܫܘܚܠܦܐ',
+'recentchanges-label-unpatrolled' => 'ܫܘܚܠܦܐ ܗܢܐ ܠܐ ܗܘ ܟܪܝܟܐ ܠܗܫܐ',
'rcnotefrom' => "ܠܬܚܬ ܫܘܚܠܦ̈ܐ ܕܡܢ '''$2''' (ܥܕ '''$1''' ܡܬܚܙܝܢ̈ܐ).",
'rclistfrom' => 'ܚܘܝ ܫܘܚܠܦ̈ܐ ܚܕ̈ܬܐ ܡܢ $1',
'rcshowhideminor' => '$1 ܫܘܚܠܦ̈ܐ ܙܥܘܪ̈ܐ',
'minoreditletter' => 'ܙ',
'newpageletter' => 'ܚ',
'boteditletter' => 'ܒ',
+'rc_categories_any' => 'ܐܝܢܐ ܕܗܘ',
+'rc-change-size-new' => '$1 {{PLURAL:$1|ܒܐܝܛ|ܒܐܝܛ̈ܐ}} ܒܬܪ ܫܘܚܠܦܐ',
'newsectionsummary' => '/* $1 */ ܡܢܬܐ ܚܕܬܐ',
'rc-enhanced-expand' => 'ܚܘܝ ܐܪ̈ܝܟܬܐ (ܒܥܐ ܠܟ JavaScript)',
'rc-enhanced-hide' => 'ܛܫܝ ܐܪ̈ܝܟܬܐ',
'upload_source_file' => ' (ܠܦܦܐ ܥܠ ܚܫܘܒܬܐ ܕܝܠܟ)',
# Special:ListFiles
+'listfiles-summary' => 'ܦܐܬܐ ܕܝܠܢܝܬܐ ܗܕܐ ܬܓܠܚ ܟܠ ܠܦܦ̈ܐ ܡܣܩ̈ܐ.
+ܐܡܬܝ ܕܬܨܦܐ ܒܝܕ ܡܦܠܚܢܐ ܬܓܠܚ ܨܚܚܐ ܐܚܪܝܐ ܒܠܚܘܕ ܕܠܦܦ̈ܐ ܡܣܩ̈ܐ ܒܝܕ ܗܢܐ ܡܦܠܚܢܐ.',
'listfiles_search_for' => 'ܒܨܝ ܥܠ ܫܡܐ ܕܡܝܕܝܐ:',
'imgfile' => 'ܠܦܦܐ',
'listfiles' => 'ܡܟܬܒܘܬܐ ܕܠܦܦ̈ܐ',
'disambiguations' => 'ܦܐܬܬ̈ܐ ܐܣܝܪ̈ܬܐ ܒܦܐܬܬ̈ܐ ܕܬܘܚܡܐ ܐܚܪܢܐ',
'disambiguationspage' => 'Template:ܬܘܚܡܐ ܐܚܪܢܐ',
+'pageswithprop' => 'ܦܐܬܬ̈ܐ ܥܡ ܕܝܠܝܬܐ ܕܦܐܬܐ',
+'pageswithprop-legend' => 'ܦܐܬܬ̈ܐ ܥܡ ܕܝܠܝܬܐ ܕܦܐܬܐ',
+'pageswithprop-prop' => 'ܫܡܐ ܕܕܝܠܝܬܐ',
+'pageswithprop-submit' => 'ܙܠ',
+
'doubleredirects' => 'ܨܘܝܒ̈ܐ ܥܦܝܦ̈ܐ',
'double-redirect-fixed-move' => '[[$1]] ܐܫܬܢܝܬ.
ܗܫܐ ܐܝܬܝܗܝ ܨܘܝܒܐ ܠ [[$2]].',
'listusers-noresult' => 'ܠܐ ܐܫܬܟܚ ܡܦܠܚܢܐ ܚܕ.',
'listusers-blocked' => '(ܚܪܝܡܐ)',
-# Special:ActiveUsers
-'activeusers' => 'ܡܟܬܒܘܬܐ ܕܗܕ̈ܡܐ ܙܪ̄ܝܙܐ',
-'activeusers-count' => '$1 {{PLURAL:$1|ܥܒܕܐ|ܥܒܕ̈ܐ}} ܒ {{PLURAL:$3|ܝܘܡܐ ܐܚܪܝܐ|$3 ܝܘܡܬ̈ܐ ܐܚܪ̈ܝܐ}}',
-'activeusers-from' => 'ܚܘܝ ܡܦܠܚܢ̈ܐ ܕܫܪܐ ܥܡ:',
-'activeusers-hidebots' => 'ܛܫܝ ܒܘܬ̈ܐ (bots)',
-'activeusers-hidesysops' => 'ܛܫܝ ܡܕܒܪ̈ܢܐ',
-'activeusers-noresult' => 'ܠܐ ܐܫܬܟܚ ܡܦܠܚܢ̈ܐ ܐܢܫ̈ܝܢ.',
-
# Special:ListGroupRights
'listgrouprights' => 'ܙܕ̈ܩܐ ܕܟܢܘܫܬܐ ܕܡܦܠܚܢ̈ܐ',
'listgrouprights-group' => 'ܟܢܘܫܬܐ',
'contribslink' => 'ܫܘܬܦܘ̈ܬܐ',
'blocklogpage' => 'ܣܓܠܐ ܕܚܪܡܐ',
'blocklogentry' => 'ܚܪܡ [[$1]] ܠܡܬܚܐ ܕ $2 $3',
+'blocklogtext' => 'ܗܢܘ ܣܓܠܐ ܕܥܡܠܝܬ̈ܐ ܕܚܪܡܐ ܘܫܩܠ ܚܪܡܐ.
+ܡܘܢܥ̈ܐ ܕܐܝ ܦܝ (IP) ܚܪ̈ܝܡܐ ܝܬܐܝܬ ܠܐ ܓܠܝܚܝܢ ܐܢܘܢ.
+ܚܙܝ [[Special:BlockList|ܡܟܬܒܘܬܐ ܕܚܪܡܐ ܕܐܝ ܦܝ (IP)]]ܠܚܙܝܐ ܕܥܡܠܝܬ̈ܐ ܕܚܪܡܐ ܬܘܦܥܠ̈ܐ ܗܫܐܝܬ.',
'unblocklogentry' => 'ܫܩܠ ܚܪܡܐ ܡܢ $1',
'block-log-flags-anononly' => 'ܡܦܠܚܢ̈ܐ ܠܐ ܝܕ̈ܝܥܐ ܒܠܚܘܕ',
'block-log-flags-nocreate' => 'ܒܪܝܬܐ ܕܚܘ̈ܫܒܢܐ ܠܐ ܐܝܬܝܗ ܡܬܩܒܠܢܐ',
'tag-filter' => 'ܡܨܦܝܢܝܬܐ ܕ[[Special:Tags|ܪܘܫܡܐ]]:',
'tag-filter-submit' => 'ܡܨܦܝܢܝܬܐ',
'tags-title' => 'ܪ̈ܘܫܡܐ',
+'tags-intro' => 'ܦܐܬܐ ܗܕܐ ܬܓܠܚ ܪ̈ܘܫܡܐ ܕܬܚܪܙܬܐ ܪܒܬ ܫܘܕܥ ܫܘܚܠܦܐ ܒܗ، ܘܣܘܟܠܝܗܝܢ.',
'tags-tag' => 'ܫܡܐ ܕܪܘܫܡܐ',
+'tags-display-header' => 'ܡܬܓܠܝܢܘܬܐ ܒܡܟܬܒܘܬ̈ܐ ܕܫܘܚܠܦܐ',
+'tags-description-header' => 'ܫܘܡܗܐ ܓܡܝܪܐ ܕܣܘܟܠܐ',
+'tags-hitcount-header' => 'ܫܘܚܠܦ̈ܐ ܪ̈ܫܝܡܐ',
'tags-edit' => 'ܫܚܠܦ',
'tags-hitcount' => '$1 {{PLURAL:$1|ܫܘܚܠܦܐ|ܫܘܚܠܦ̈ܐ}}',
'htmlform-selectorother-other' => 'ܐܚܪܢܐ',
# New logging system
-'logentry-delete-delete' => '$1 ܫܦ ܦܐܬܐ ܕ $3',
-'logentry-move-move' => '$1 ܫܢܐ ܦܐܬܐ ܕ $3 ܠ $4',
-'logentry-move-move-noredirect' => '$1 ܫܢܐ ܦܐܬܐ ܕ $3 ܠ $4 ܕܠܐ ܫܒܩܐ ܦܐܬܐ ܕܨܘܝܒܐ',
-'logentry-move-move_redir' => '$1 ܫܢܐ ܦܐܬܐ ܕ $3 ܠ $4 ܕܐܝܬܘܗܝ ܦܐܬܐ ܕܨܘܝܒܐ',
-'logentry-move-move_redir-noredirect' => '$1 ܫܢܐ ܦܐܬܐ ܕ $3 ܠ $4 ܕܐܝܬܘܗܝ ܦܐܬܐ ܕܨܘܝܒܐ ܘܕܠܐ ܫܒܩܐ ܦܐܬܐ ܕܨܘܝܒܐ',
-'logentry-patrol-patrol' => '$1 ܫܘܕܥ ܬܢܝܬܐ $4 ܕܦܐܬܐ $3 ܟܪܝܟܬܐ',
-'logentry-patrol-patrol-auto' => '$1 ܝܬܐܝܬ ܫܘܕܥ ܬܢܝܬܐ $4 ܕܦܐܬܐ $3 ܟܪܝܟܬܐ',
-'logentry-newusers-newusers' => 'ܚܘܫܒܢܐ ܕܡܦܠܚܢܐ $1 ܐܬܬܟܝܢ',
-'logentry-newusers-create' => 'ܚܘܫܒܢܐ ܕܡܦܠܚܢܐ $1 ܐܬܬܟܝܢ',
-'logentry-newusers-create2' => 'ܚܘܫܒܢܐ ܕܡܦܠܚܢܐ $3 ܐܬܬܟܝܢ ܒܝܕ $1',
-'logentry-newusers-autocreate' => 'ܚܘܫܒܢܐ $1 ܐܬܒܪܝ ܝܬܐܝܬ',
+'logentry-delete-delete' => '$1 {{GENDER:$2|ܫܦ}} ܦܐܬܐ ܕ $3',
+'logentry-move-move' => '$1 {{GENDER:$2|ܫܢܐ}} ܦܐܬܐ ܕ $3 ܠ $4',
+'logentry-move-move-noredirect' => '$1 {{GENDER:$2|ܫܢܐ}} ܦܐܬܐ ܕ $3 ܠ $4 ܘܠܐ ܫܒܩ ܦܐܬܐ ܕܨܘܝܒܐ',
+'logentry-move-move_redir' => '$1 {{GENDER:$2|ܫܢܐ}} ܦܐܬܐ ܕ $3 ܠ $4 ܕܐܝܬܘܗܝ ܦܐܬܐ ܕܨܘܝܒܐ',
+'logentry-move-move_redir-noredirect' => '$1 {{GENDER:$2|ܫܢܐ}} ܦܐܬܐ ܕ $3 ܠ $4 ܕܐܝܬܘܗܝ ܦܐܬܐ ܕܨܘܝܒܐ ܘܠܐ ܫܒܩ ܦܐܬܐ ܕܨܘܝܒܐ',
+'logentry-patrol-patrol' => '$1 {{GENDER:$2|ܫܘܕܥ}} ܬܢܝܬܐ $4 ܕܦܐܬܐ $3 ܟܪܝܟܬܐ',
+'logentry-patrol-patrol-auto' => '$1 ܝܬܐܝܬ {{GENDER:$2|ܫܘܕܥ}} ܬܢܝܬܐ $4 ܕܦܐܬܐ $3 ܟܪܝܟܬܐ',
+'logentry-newusers-newusers' => 'ܚܘܫܒܢܐ ܕܡܦܠܚܢܐ $1 {{GENDER:$2|ܐܬܬܟܝܢ}}',
+'logentry-newusers-create' => 'ܚܘܫܒܢܐ ܕܡܦܠܚܢܐ $1 {{GENDER:$2|ܐܬܬܟܝܢ}}',
+'logentry-newusers-create2' => 'ܚܘܫܒܢܐ ܕܡܦܠܚܢܐ $3 {{GENDER:$2|ܐܬܬܟܝܢ}} ܒܝܕ $1',
+'logentry-newusers-autocreate' => 'ܚܘܫܒܢܐ ܕܡܦܠܚܢܐ $1 {{GENDER:$2|ܐܬܬܣܝܡ}} ܝܬܐܝܬ',
'rightsnone' => '(ܠܐ ܡܕܡ)',
# Feedback
'listusers-noresult' => "Nun s'atoparon usuarios.",
'listusers-blocked' => '(bloquiau)',
-# Special:ActiveUsers
-'activeusers' => "Llista d'usuarios activos",
-'activeusers-intro' => "Esta ye una llista d'usuarios que tuvieron alguna mena d'actividá hai menos de $1 {{PLURAL:$1|día|díes}}.",
-'activeusers-count' => '$1 {{PLURAL:$1|edición|ediciones}} {{PLURAL:$3|nel caberu día|nos caberos $3 díes}}',
-'activeusers-from' => 'Amosar usuarios principiando dende:',
-'activeusers-hidebots' => 'Anubrir bots',
-'activeusers-hidesysops' => 'Anubrir alministradores',
-'activeusers-noresult' => "Nun s'alcontraron usuarios.",
-
# Special:ListGroupRights
'listgrouprights' => "Drechos de los grupos d'usuariu",
'listgrouprights-summary' => "La siguiente ye una llista de grupos d'usuariu definíos nesta wiki, colos sos drechos d'accesu asociaos.
'proxyblocksuccess' => 'Fecho.',
'sorbsreason' => 'La to direición IP sal na llista de proxys abiertos en DNSBL usada por {{SITENAME}}.',
'sorbs_create_account_reason' => 'La to direición IP sal na llista de proxys abiertos en DNSBL usada por {{SITENAME}}. Nun pues crear una cuenta',
+'xffblockreason' => "Una direición IP presente na testera X-Forwarded-For, o suya o d'un sirvidor proxy que ta usando, ta bloquiada. El motivu orixinal del bloquéu foi: $1",
'cant-block-while-blocked' => 'Nun pues bloquiar a otros usuarios mentes tu teas bloquiáu.',
'cant-see-hidden-user' => "L'usuariu que tentes bloquiar yá ta bloquiáu y anubríu.
Como nun tienes permisos p'anubrir usuarios, nun pues ver o editar el bloquéu del usuariu.",
# Stylesheets
'common.css' => "/* Los CSS allugaos equí s'aplicarán a tolos aspeutos */",
-'standard.css' => '/* Los CSS allugaos equí afeutarán a los usuarios del aspeutu Standard */',
-'nostalgia.css' => '/* Los CSS allugaos equí afeutarán a los usuarios del aspeutu Nostalgia */',
'cologneblue.css' => '/* Los CSS allugaos equí afeutarán a los usuarios del aspeutu Cologne Blue */',
'monobook.css' => '/* Los CSS allugaos equí afeutarán a los usuarios del aspeutu Monobook */',
-'myskin.css' => '/* Los CSS allugaos equí afeutarán a los usuarios del aspeutu MySkin */',
-'chick.css' => '/* Los CSS allugaos equí afeutarán a los usuarios del aspeutu Chick */',
-'simple.css' => '/* Los CSS allugaos equí afeutarán a los usuarios del aspeutu Simple */',
'modern.css' => '/* Los CSS allugaos equí afeutarán a los usuarios del aspeutu Modern */',
'vector.css' => '/* Los CSS allugaos equí afeutarán a los usuarios del aspeutu Vector */',
'print.css' => '/* Los CSS allugaos equí afeutarán a la salida pola imprentadora */',
# Scripts
'common.js' => '/* Cualesquier JavaScript que tea equí se cargará pa tolos usuarios en cada carga de páxina. */',
-'standard.js' => '/* Cualesquier JavaScript que tea equí se cargará pa los usuarios del aspeutu Standard */',
-'nostalgia.js' => '/* Cualesquier JavaScript que tea equí se cargará pa los usuarios del aspeutu Nostalgia */',
'cologneblue.js' => '/* Cualesquier JavaScript que tea equí se cargará pa los usuarios del aspeutu Cologne Blue */',
'monobook.js' => '/* Cualesquier JavaScript que tea equí se cargará pa los usuarios del aspeutu MonoBook */',
-'myskin.js' => '/* Cualesquier JavaScript que tea equí se cargará pa los usuarios del aspeutu MySkin */',
-'chick.js' => '/* Cualesquier JavaScript que tea equí se cargará pa los usuarios del aspeutu Chick */',
-'simple.js' => '/* Cualesquier JavaScript que tea equí se cargará pa los usuarios del aspeutu Simple */',
'modern.js' => '/* Cualesquier JavaScript que tea equí se cargará pa los usuarios del aspeutu Modern */',
'vector.js' => '/* Cualesquier JavaScript que tea equí se cargará pa los usuarios del aspeutu Vector */',
'group-autoconfirmed.js' => '/* Cualesquier JavaScript que tea equí se cargará pa los usuarios autoconfirmaos namái */',
'pageinfo-category-files' => 'Númberu de ficheros',
# Skin names
-'skinname-standard' => 'Clásicu',
-'skinname-nostalgia' => 'Señardá',
'skinname-cologneblue' => 'Azul Colonia',
-'skinname-myskin' => 'MySkin',
'skinname-modern' => 'Modernu',
# Patrolling
'listusers-noresult' => 'هئچ ایستیفادهچی تاپیلمادی.',
'listusers-blocked' => '(باغلانیب)',
-# Special:ActiveUsers
-'activeusers' => 'چالیشان ایستیفادهچیلرین لیستی',
-'activeusers-intro' => 'بوردا سون {{PLURAL:$1|بیر|$1}} گونده بیر ایشلر گؤرن ایستیفادهچیلرین لیستی گؤستریلیر.',
-'activeusers-count' => 'سون {{PLURAL:$3|گون|$3 گون}}ده، {{PLURAL:$1|$1}} چالیشما',
-'activeusers-from' => 'بوندان باشلایاراق ایستیفادهچیلری گؤستر:',
-'activeusers-hidebots' => 'بوتلاری گیزلت',
-'activeusers-hidesysops' => 'ایدارهچیلری گیزلت',
-'activeusers-noresult' => 'هئچ ایستیفادهچی تاپیلمادی.',
-
# Special:ListGroupRights
'listgrouprights' => 'ایستیفادهچی قروپ حاقلاری',
'listgrouprights-summary' => 'آشاغیدا، بو ویکیده تانیلان ایستیفادهچی گروپلاری و اونلارین حاقلاری گؤستریلیر.
'pageinfo-category-subcats' => 'آلتبؤلمهلرین سایی',
'pageinfo-category-files' => 'فایللارین سایی',
-# Skin names
-'skinname-myskin' => 'منیم قابیغیم',
-
# Patrolling
'markaspatrolleddiff' => 'ایداره ائدیلمیش اولاراق ایشارهله',
'markaspatrolledtext' => 'صحیفنی پاتروللانمیش کیمی ایشارهله',
'listusers-noresult' => 'Ҡатнашыусылар табылманы',
'listusers-blocked' => '(бикләнгән)',
-# Special:ActiveUsers
-'activeusers' => 'Әүҙем ҡатнашыусылар исемлеге',
-'activeusers-intro' => 'Был — һуңғы $1 {{PLURAL:$1|көн}} эсендә ниҙер башҡарған ҡатнашыусылар исемлеге.',
-'activeusers-count' => 'һуңғы $3 {{PLURAL:$3|көн}} эсендә $1 {{PLURAL:$1|үҙгәртеү}}',
-'activeusers-from' => 'Ошондай хәрефтәрҙән башланған ҡатнашыусыларҙы күрһәтергә:',
-'activeusers-hidebots' => 'Боттарҙы йәшерергә',
-'activeusers-hidesysops' => 'Хәкимдәрҙе йәшерергә',
-'activeusers-noresult' => 'Ҡатнашыусылар табылманы',
-
# Special:ListGroupRights
'listgrouprights' => 'Ҡатнашыусылар төркөмө хоҡуҡтары',
'listgrouprights-summary' => 'Түбәндә был вики-проектта билдәләнгән ҡатнашыусы төркөмдәре килтерелгән һәм уларҙың хоҡуҡтары күрһәтелгән.
'listusers-noresult' => 'Удзельнікі ня знойдзеныя.',
'listusers-blocked' => '({{GENDER:$1|заблякаваны|заблякаваная}})',
-# Special:ActiveUsers
-'activeusers' => 'Сьпіс актыўных удзельнікаў',
-'activeusers-intro' => 'Гэта сьпіс удзельнікаў, якія былі актыўнымі на працягу $1 {{PLURAL:$1|апошняга дня|апошніх дзён|апошніх дзён}}.',
-'activeusers-count' => '$1 {{PLURAL:$1|дзеяньне|дзеяньні|дзеяньняў}} за $3 {{PLURAL:$3|апошні дзень|апошнія дні|апошніх дзён}}',
-'activeusers-from' => 'Паказваць ўдзельнікаў, пачынаючы з:',
-'activeusers-hidebots' => 'Схаваць робатаў',
-'activeusers-hidesysops' => 'Схаваць адміністратараў',
-'activeusers-noresult' => 'Удзельнікі ня знойдзеныя.',
-
# Special:ListGroupRights
'listgrouprights' => 'Правы групаў удзельнікаў',
'listgrouprights-summary' => 'Ніжэй пададзены сьпіс групаў удзельнікаў {{GRAMMAR:родны|{{SITENAME}}}}, разам зь іх правамі.
'sorbsreason' => 'Ваш IP-адрас знаходзіцца ў сьпісе адкрытых проксі ў DNSBL, якім карыстаецца {{SITENAME}}.',
'sorbs_create_account_reason' => 'Ваш IP-адрас знаходзіцца ў сьпісе адкрытых проксі ў DNSBL, якім карыстаецца {{SITENAME}}.
Вы ня зможаце стварыць рахунак',
+'xffblockreason' => 'IP-адрас, прыведзены ў загалоўку X-Forwarded-For, які належыць або вам, або проксі-сэрвэру, быў заблякаваны. Прычынай блякаваньня было: $1',
'cant-block-while-blocked' => 'Вы ня можаце блякаваць іншых удзельнікаў, пакуль Вы самі заблякаваныя.',
'cant-see-hidden-user' => 'Удзельнік, якога Вы спрабуеце заблякаваць, ужо заблякаваны і схаваны. З-за таго, што Вы ня маеце правоў хаваньня ўдзельнікаў, Вы ня можаце бачыць альбо зьмяняць блякаваньне удзельніка.',
'ipbblocked' => 'Вы ня можаце блякаваць ці раблякоўваць іншых удзельнікаў, таму што заблякаваныя самі',
'pageinfo-category-files' => 'Колькасьць файлаў',
# Skin names
-'skinname-standard' => 'Клясычнае',
-'skinname-nostalgia' => 'Настальгія',
'skinname-cologneblue' => 'Кёльнскі смутак',
'skinname-monobook' => 'Монакніга',
-'skinname-myskin' => 'MySkin',
-'skinname-chick' => 'Цыпа',
-'skinname-simple' => 'Простае',
'skinname-modern' => 'Сучаснае',
'skinname-vector' => 'Вэктар',
'listusers-noresult' => 'Няма намерени потребители.',
'listusers-blocked' => '(блокиран)',
-# Special:ActiveUsers
-'activeusers' => 'Списък на активните потребители',
-'activeusers-intro' => 'Това е списък на потребителите, които са демонстрирали някаква активност през {{PLURAL:$1|последния|последните}} $1 {{PLURAL:$1|ден|дни}}.',
-'activeusers-count' => '$1 {{PLURAL:$1|действие|действия}} за {{PLURAL:$3|последния ден|последните $3 дни}}',
-'activeusers-from' => 'Показване на потребителите, започвайки от:',
-'activeusers-hidebots' => 'Скриване на ботовете',
-'activeusers-hidesysops' => 'Скриване на администраторите',
-'activeusers-noresult' => 'Няма намерени потребители.',
-
# Special:ListGroupRights
'listgrouprights' => 'Права по потребителски групи',
'listgrouprights-summary' => 'По-долу на тази страница е показан списък на групите потребители в това уики с асоциираните им права за достъп. Допълнителна информация за отделните права може да бъде намерена [[{{MediaWiki:Listgrouprights-helppage}}|тук]].',
'enotif_mailer' => 'Известяване по пощата на {{SITENAME}}',
'enotif_reset' => 'Отбелязване на всички страници като посетени',
'enotif_impersonal_salutation' => 'Потребител на {{SITENAME}}',
+'enotif_subject_deleted' => 'Страницата „$1“ в {{SITENAME}} беше {{GENDER:$2|изтрита}} от $2',
+'enotif_subject_created' => 'Страницата „$1“ в {{SITENAME}} беше {{GENDER:$2|създадена}} от $2',
+'enotif_subject_moved' => 'Страницата „$1“ в {{SITENAME}} беше {{GENDER:$2|преместена}} от $2',
+'enotif_subject_restored' => 'Страницата „$1“ в {{SITENAME}} беше {{GENDER:$2|възстановена}} от $2',
+'enotif_subject_changed' => 'Страницата „$1“ в {{SITENAME}} беше {{GENDER:$2|променена}} от $2',
'enotif_body_intro_deleted' => 'Страницата „$1“ в {{SITENAME}} беше {{GENDER:$2|изтрита}} на $PAGEEDITDATE от $2. Вижте $3.',
'enotif_body_intro_created' => 'Страницата „$1“ в {{SITENAME}} беше {{GENDER:$2|създадена}} на $PAGEEDITDATE от $2. За текущата версия, вижте $3',
'enotif_lastvisited' => 'Преглед на всички промени след последното ви посещение: $1.',
'pageinfo-category-files' => 'Брой файлове',
# Skin names
-'skinname-standard' => 'Класика',
-'skinname-nostalgia' => 'Носталгия',
'skinname-cologneblue' => 'Кьолнско синьо',
'skinname-monobook' => 'Монобук',
-'skinname-myskin' => 'Моят облик',
-'skinname-chick' => 'Пиленце',
-'skinname-simple' => 'Семпъл',
'skinname-modern' => 'Модерен',
# Patrolling
# User preference toggles
'tog-underline' => 'Garisi di bawah tautan',
'tog-justify' => 'Ratakan paragraf',
-'tog-hideminor' => 'Sungkupakan babakan sapalih dalam parubahan tahanyar',
-'tog-hidepatrolled' => 'Sungkupakan babakan taawasi dalam parubahan tahanyar',
+'tog-hideminor' => 'Sungkupakan babakan sapalih dalam paubahan pahanyarnya',
+'tog-hidepatrolled' => 'Sungkupakan babakan taawasi dalam paubahan pahanyarnya',
'tog-newpageshidepatrolled' => 'Sungkupakan tungkaran nang diitihi matan daptar tungkaran hanyar',
-'tog-extendwatchlist' => 'Singkaiakan daptar itihan hagan manampaiakan samunyaan parubahan, kada nang hanyar haja.',
-'tog-usenewrc' => 'Purukakan panampaian parubahan tahanyar tingkat tinggi (parlu ada JavaScript)',
+'tog-extendwatchlist' => 'Singkaiakan daptar itihan hagan manampaiakan samunyaan paubahan, kada nang hanyar haja.',
+'tog-usenewrc' => 'Purukakan panampaian paubahan pahanyarnya tingkat tinggi (parlu ada JavaScript)',
'tog-numberheadings' => 'Bari numur judul utumatis',
'tog-showtoolbar' => 'Tampaiakan bilah-pakakas babak (parlu ada JavaScript)',
'tog-editondblclick' => 'Babak tutungkaran wan klik ganda (parlu ada JavaScript)',
'tog-externaldiff' => 'Puruk palainan luar sawagai default (hagan nang harat haja, musti ada setélan istimiwa pada komputer Pian. [//www.mediawiki.org/wiki/Manual:External_editors More information.])',
'tog-showjumplinks' => 'Kawa\'akan "lacung ka" tautan kakawaan-masuk',
'tog-uselivepreview' => 'Puruk titilikan langsung (parlu ada JavaScript) (cacubaan)',
-'tog-forceeditsummary' => 'Ingatakan ulun wayah babuat sabuah kasimpulan babakan kusung',
+'tog-forceeditsummary' => 'Ingatakan ulun wayah babuat sabuting kasimpulan babakan puang',
'tog-watchlisthideown' => 'Sungkupakan babakan ulun di daptar itihan',
'tog-watchlisthidebots' => 'Sungkupakan babakan bot di daptar itihan',
'tog-watchlisthideminor' => 'Sungkupakan babakan sapalih di daptar itihan',
'newwindow' => '(buka di lalungkang hanyar)',
'cancel' => 'Walangi',
'moredotdotdot' => 'Lainnya...',
+'morenotlisted' => 'Salanjutnya...',
'mypage' => 'Tungkaran ulun',
'mytalk' => 'Pamandiran ulun',
'anontalk' => 'Pamandiran hagan alamat IP ini',
'namespaces' => 'Ngarankamar',
'variants' => 'Macam',
+'navigation-heading' => 'Menu napigasi',
'errorpagetitle' => 'Kasalahan',
'returnto' => 'Bulik ka $1.',
'tagline' => 'Matan {{SITENAME}}',
'retrievedfrom' => 'Dijumput matan "$1"',
'youhavenewmessages' => 'Pian baisi $1 ($2)',
'newmessageslink' => 'pasan hanyar',
-'newmessagesdifflink' => 'parubahan tauncit',
+'newmessagesdifflink' => 'paubahan pauncitnya',
+'youhavenewmessagesfromusers' => 'Pian baisi $1 matan {{PLURAL:$3|$3 pamakai lain}} ($2).',
+'youhavenewmessagesmanyusers' => 'Pian baisi $1 matan pamakai lain ($2).',
+'newmessageslinkplural' => '{{PLURAL:$1|pasan hanyar}}',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|paubahan}} pahabisnya',
'youhavenewmessagesmulti' => 'Pian baisi pasan hanyar dalam $1',
'editsection' => 'babak',
'editold' => 'babak',
# Main script and global functions
'nosuchaction' => 'Kadada palakuan nangkaitu',
-'nosuchactiontext' => 'Palakuan nang diminta URL kada sah.
-Pian pinanya salah katik URL, atawa maumpati sabuah tautan nang kada bujur.
+'nosuchactiontext' => 'Tindakan nang diminta URL kada sah.
+Pian tagasnya salah katik URL, atawa maumpati sabuting tautan nang kada bujur.
Ngini jua bisa ai ada bug di parangkat lunak nang dipuruk {{SITENAME}}.',
'nosuchspecialpage' => 'Kadada tungkaran istimiwa nangitu',
'nospecialpagetext' => '<strong>Pian maminta tungkaran istimiwa nang kada sah.</strong>
'error' => 'Kasalahan',
'databaseerror' => 'Kasalahan Basisdata',
'dberrortext' => 'Ada kasalahan sintaks pada parmintaan basisdata.
-Kasalahan ngini pina manandai adanya sabuah bug dalam parangkat lunak.
+Kasalahan ngini pina manandai adanya sabuting bug dalam parangkat lunak.
Parmintaan basisdata yang tadudi adalah:
<blockquote><tt>$1</tt></blockquote>
matan dalam pungsi "<tt>$2</tt>".
"$1"
matan dalam pungsi "$2".
Basisdata kasalahan babulik "$3: $4".',
-'laggedslavemode' => "'''Paringatan:''' Tungkaran ngini pinanya kada baisi parubahan tahanyar.",
+'laggedslavemode' => "'''Paringatan:''' Tungkaran ngini tagasnya kada baisi paubahan pahanyarnya.",
'readonly' => 'Basisdata tasunduk',
-'enterlockreason' => 'Buati sabuah alasan manyunduk, tamasuk jua wayah apa handak dibuka pulang sundukannya.',
-'readonlytext' => 'Basisdata lagi basunduk hagan masukan hanyar wan parubahan lain, pinanya pang lagi ada jadwal paharaguan basis data, imbah ini akan babulik nangkaya biasa.
+'enterlockreason' => 'Buati sabuting alasan manyunduk, tamasuk jua wayah kapan handak dibuka pulang sundukannya.',
+'readonlytext' => 'Basisdata lagi disunduk hagan masukan hanyar wan paubahan lain, pinanya pang lagi ada jadwal paharaguan basis data, limbah ngini akan babulik nangkaya biasa.
Pambakal nang manyunduk mamadahi nangkaini: $1',
'missing-article' => 'Basisdata kada ulihan manggagai kata matan tungkaran nang saharusnya ada, bangaran "$1" $2.
-Nangkaini biasanya dimargakan tautan lawas ka sabuah tungkaran nang halamnya sudah dihapus.
+Nangkaini biasanya dimargakan tautan lawas ka sabuting tungkaran nang halamnya sudah dihapus.
Munnya lainan ngini pasalnya, Pian mungkin batamu bug dalam perangkat lunak.
Silakan lapurakan ngini ka saurang [[Special:ListUsers/sysop|pambakal]], ulah catatan URL nang ditulaki',
'badarticleerror' => 'Palakuan ngini kada kawa dicungulakan pada tungkaran ngini.',
'cannotdelete' => "Tungkaran atawa barakas ''$1'' kada kawa dihapus. Pinanya sudah dihapus urang lain badahulu.",
'cannotdelete-title' => 'Kada kawa mahapus tungkaran "$1"',
+'delete-hook-aborted' => 'Pahapusan diwalangakan ulih kait parser.
+Kadada katarangan.',
'badtitle' => 'Judul buruk',
'badtitletext' => 'Judul tungkaran nang diminta kada sah, kada baisi, atawa kada pasnya tautan judul antar-bahasa atawa antar-wiki.
Nangini bisa baisi satu atawa labih hurup nang saharusnya kadada di judul.',
'viewsource' => 'Tiringi asal mulanya',
'viewsource-title' => 'Tiringi asalmula matan $1',
'actionthrottled' => 'Kalakuan dikiripi',
-'actionthrottledtext' => 'Sawagai sabuah takaran anti-spam, Pian dibabatasi hagan balalaku kababanyakan dalam parhatan handap, wan Pian sudah limpuari batasan ngini.
+'actionthrottledtext' => 'Sawagai sabuting takaran anti-spam, Pian dibabatasi hagan balalaku kababanyakan dalam parhatan handap, wan Pian sudah limpuari batasan ngini.
Muhun cubai pulang dalam babarapa minit.',
'protectedpagetext' => 'Tungkaran ngini sudah dilindungi hagan mancagah babakan.',
'viewsourcetext' => 'Pian kawa maniringi wan manyalin asal mula tungkaran ngini:',
'viewyourtext' => "Pian kawa maniringi wan salain asalmula matan '''babakan pian''' ka tungkaran ngini:",
'protectedinterface' => 'Tungkaran ini manyadiakan naskah antarmuha gasan parangkat lunak, wan dilindungi hagan mancagah tasalah puruk.',
-'editinginterface' => "'''Paringatan:''' Pian mambabak sabuah tungkaran nang dipuruk hagan manyadiakan naskah antarmuha gasan parangkat lunak.
-Parubahan ka tungkaran ngini akan bapangaruh matan tampaian antarmuha gasan pamakai lain.
-Gasan tarjamahan, muhun puruk [//translatewiki.net/wiki/Main_Page?setlang=bjn translatewiki.net], rangka gawian palokalan MediaWiki.",
+'editinginterface' => "'''Paringatan:''' Pian mambabak sabuting tungkaran nang dipuruk hagan manyadiakan naskah antarmuha gasan parangkat lunak.
+Paubahan ka tungkaran ngini akan bapangaruh matan tampaian antarmuha gasan pamakai lain.
+Gasan tarjamahan, muhun pakai [//translatewiki.net/wiki/Main_Page?setlang=bjn translatewiki.net], rangka gawian palokalan MediaWiki.",
'sqlhidden' => '(Parmintaan SQL disungkupakan)',
'cascadeprotected' => 'Tungkaran ini sudah dilindungi matan pambabakan, marga nangini tamasuk dalam {{PLURAL:$1|tungkaran|tutungkaran}} dudi nang dilindungi "barénténg": $2',
'namespaceprotected' => "Pian kada baisi ijin hagan mambabak tutungkaran dalam ngaran kamar '''$1'''.",
'filereadonlyerror' => 'Kada kawa mamudipikasi data "$1" marga repositori data "$2" ada di modus read-only.
Administrator nang takunci nintu manawarakan panjalasan: "$3".',
+'invalidtitle-knownnamespace' => 'Judul nang kada sah lawan ruang-ngaran "$2" wan teks "$3"',
+'invalidtitle-unknownnamespace' => 'Judul nang kada sah lawan numur ruang ngaran kada dikatahui $1 wan teks "$2"',
+'exception-nologin' => 'Balum babuat log',
+'exception-nologin-text' => 'Tungkaran atawa tindakan ngini maharusakan Pian babuat log di wiki ngini.',
# Virus scanner
'virus-badscanner' => "Konpigurasi buruk: pamindai virus kada dipinandui: ''$1''",
Pian kawa manyambung hagan mangguna'akan {{SITENAME}} kada bangaran, atawa Pian kawa <span class='plainlinks'>[$1 babuat log pulang]</span> sawagai pamakai nang sama atawa sawagai pamakai balain.
Catatan bahwasa babarapa tungkaran pinanya masih ha tarus manampaiakan Pian masih babuat log, sampai Pian mahabisakan timbuluk panjalajah web Pian.",
+'welcomeuser' => 'Salamat datang, $1 !',
+'welcomecreation-msg' => '==Salamat datang, $1!==
+Akun Pian sudah diulah.
+Jangan kada ingat hagan maubah [[Special:Preferences|kakatujuan {{SITENAME}}]] Pian.',
'yourname' => 'Ngaran pamakai:',
'yourpassword' => 'Katasunduk:',
'yourpasswordagain' => 'Katik pulang katasunduk:',
'remembermypassword' => 'Ingatakan log babuat ulun dalam komputer naya (salawas $1 {{PLURAL:$1|hari|hari}})',
'securelogin-stick-https' => 'Tatap tasambung awan HTTPS imbah babuat-log',
'yourdomainname' => 'Domain Pian:',
+'password-change-forbidden' => 'Pian kada kawa ma-ubah kata sunduk pada wiki ngini.',
'externaldberror' => 'Ada kasalahan apakah kacucukan basis data atawa Pian kada bulih mamutakhirakan akun luar.',
'login' => 'Babuat',
'nav-login-createaccount' => 'Babuat log / ulah akun',
'logout' => 'Kaluar',
'userlogout' => 'Kaluar',
'notloggedin' => 'Balum babuat log',
-'nologin' => 'Kada baisi sabuah akun? $1.',
+'nologin' => "Balum baisi akun? '''$1'''.",
'nologinlink' => 'Ulah sabuting akun',
'createaccount' => 'Ulah akun',
'gotaccount' => 'Hudah baisi sabuting akun? $1.',
Amun urang lain nang maminta ngini, atawa amun Pian sudah paingatan awan katasunduk Pian, wan Pian kada handak maubahnya, Pian kawa kada mahuwal pasan ngini wan manyambung mamakai katasunduk lawas Pian.',
'noemail' => 'Kadada alamat suril tarakam gasan pamakai "$1".',
-'noemailcreate' => 'Pian parlu manyadiakan sabuah alamat suril nang sah',
+'noemailcreate' => 'Pian parlu manyadiakan sabuting alamat suril nang sah',
'passwordsent' => 'Sabuting kata sunduk hanyar sudah dikirim ka suril tadaptar gasan "$1".
Muhun babuat log pulang habis Pian manarima nangini.',
'blocked-mailpassword' => 'Alamat IP Pian diblukir hagan mambabak, wan kada dibulihakan mamakai pungsi pamulihan kata sunduk hagan mancagah salah puruk.',
# Email sending
'php-mail-error-unknown' => 'Kasalahan kada dipinandui dalam pungsi surat () PHP',
'user-mail-no-addy' => 'Mancuba mangirim suril kada baalamat suril.',
+'user-mail-no-body' => 'Manarai hagan mangirim suril puang atawa talalu handap.',
# Change password dialog
'resetpass' => 'Ubah katasunduk',
-'resetpass_announce' => 'Pian babuat log awan sabuah kudi samantara nang disurili.
-Hagan manuntungakan babuat log, Pian musti manyetel sabuah katasunduk hanyar di sia:',
+'resetpass_announce' => 'Pian babuat log awan sabuting kode samantara nang disurili.
+Hagan manuntungakan babuat log, Pian musti manyetel sabuting katasunduk hanyar di sia:',
'resetpass_header' => 'Ubah katasunduk akun',
'oldpassword' => 'Katasunduk lawas:',
'newpassword' => 'Katasunduk hanyar:',
'resetpass-submit-loggedin' => 'Ubah katasunduk',
'resetpass-submit-cancel' => 'Walangi',
'resetpass-wrong-oldpass' => 'Katasunduk samantara atawa wayah ni kada sah.
-Pian pinanya sudah bahasil maubah katasunduk Pian atawa maminta sabuah katasunduk samantara hanyar.',
+Pian pinanya sudah barhasil maubah katasunduk Pian atawa maminta sabuting katasunduk samantara hanyar.',
'resetpass-temp-password' => 'Katasunduk samantara:',
# Special:PasswordReset
'passwordreset' => 'Bulikakan setelan katasunduk',
-'passwordreset-text' => 'Tuntungakan purmulir ngini gasan manarima sabuah suril pangingat rarincian akun Pian.',
+'passwordreset-text' => 'Tuntungakan purmulir ngini gasan manarima sabuting suril pangingat rarincian akun Pian.',
'passwordreset-legend' => 'Bulikakan setelan katasunduk',
'passwordreset-disabled' => 'Mambulikakan setelan katasunduk dipajahakan hagan wiki ngini.',
'passwordreset-pretext' => '{{PLURAL:$1||Buati asa data di bawah ngini}}',
'passwordreset-capture-help' => 'Amun Pian cintang kutak ngini, suril (awan katasunduk pahadangan) akan ditampaiakan ka Pian bahwasa lagi dikirim ka pamakai.',
'passwordreset-email' => 'Alamat suril:',
'passwordreset-emailtitle' => 'Rarincian akun pada {{SITENAME}}',
-'passwordreset-emailtext-ip' => 'Ada urang (pinanya Pian, matan alamat IP $1) maminta sabuah pangingat hagan rarincian akun Pian gasan {{SITENAME}} ($4). pPamakai barikut {{PLURAL:$3|akun|akun}}
+'passwordreset-emailtext-ip' => 'Ada urang (pinanya Pian, matan alamat IP $1) maminta sabuting pangingat hagan rarincian akun Pian gasan {{SITENAME}} ($4). pPamakai barikut {{PLURAL:$3|akun|akun}}
tarait awan suril:
$2
Pian parlu babuat log wan mamilih katasunduk hanyar wayah ini jua. Amun urang lain nang maminta ngini, atawa amun Pian sudah paingatan awan katasunduk Pian, wan Pian kada handak maubahnya, Pian kawa kada mahuwal pasan ngini wan manyambung mamuruk katasunduk lawas Pian.',
'passwordreset-emailelement' => 'Ngaran pamakai: $1
Katasunduk pahadangan: $2',
-'passwordreset-emailsent' => 'Sabuah suril pangingat sudah takirim.',
-'passwordreset-emailsent-capture' => 'Sabuah suril pangingat sudah dikirim, nangkaya ditampaiakan di bawah.',
+'passwordreset-emailsent' => 'Sabuting suril pangingat sudah takirim.',
+'passwordreset-emailsent-capture' => 'Sabuting suril pangingat sudah dikirim, nangkaya ditampaiakan di bawah.',
'passwordreset-emailerror-capture' => 'Suril paugingat, nang ditampaikan di bawah, hudah dihasilakan, tagal gagal mangirimakannya ka pamakai: $1',
# Special:ChangeEmail
'changeemail' => 'Ganti alamat suril',
'changeemail-header' => 'Ganti akun alamat suril',
-'changeemail-text' => 'Manuntungakan purmulir ngini hagan mangganti alamat suril Pian. Pian akan parlu mamasukakan katasunduk Pian hagan mayakinakan parubahan ngini.',
+'changeemail-text' => 'Manuntungakan purmulir ngini hagan mangganti alamat suril Pian. Pian akan parlu mamasukakan katasunduk Pian hagan mayakinakan paubahan ngini.',
'changeemail-no-info' => 'Pian musti babuat log hagan babuat ka tungkaran ngini langsung.',
'changeemail-oldemail' => 'Alamat suril wayah ni:',
'changeemail-newemail' => 'Alamat suril puga:',
'changeemail-none' => '(kadada)',
+'changeemail-password' => 'Sandi {{SITENAME}} Pian:',
'changeemail-submit' => 'Ganti suril',
'changeemail-cancel' => 'Walangi',
'preview' => 'Tilik',
'showpreview' => 'Tampaiakan titilikan',
'showlivepreview' => 'Titilikan langsung',
-'showdiff' => 'Tampaiakan parubahan',
+'showdiff' => 'Tampaiakan paubahan',
'anoneditwarning' => "'''Paringatan:''' Pian baluman babuat log.
Alamat IP Pian akan dirakam dalam tungkaran babakan halam",
'anonpreviewwarning' => "''Pian baluman babuat log. Manyimpan akan tarakam alamat IP Pian pada sajarah bahari tungkaran ngini.''",
-'missingsummary' => "'''Pangingat:''' Pian kada manyadiakan sabuah kasimpulan babakan.
+'missingsummary' => "'''Pangingat:''' Pian kada manyadiakan sabuting kasimpulan babakan.
Amun Pian klik \"{{int:savearticle}}\" pulang, babakan Pian tasimpan kada bakasimpulan.",
-'missingcommenttext' => 'Muhun buati sabuah kumintar di bawah ngini.',
-'missingcommentheader' => "'''Pangingat:''' Pian kada manyadiakan sabuah subjek/judul gasan kumin ngini.
+'missingcommenttext' => 'Muhun buati sabuting kumintar di bawah ngini.',
+'missingcommentheader' => "'''Pangingat:''' Pian kada manyadiakan sabuting subjek/judul gasan kumin ngini.
Amun Pian klik \"{{int:savearticle}}\" pulang, babakan Pian tasimpan kada basubjek/bajudul.",
'summary-preview' => 'Tilikan kasimpulan:',
'subject-preview' => 'Titilikan subyek/judul:',
'loginreqlink' => 'Babuat log',
'loginreqpagetext' => 'Pian musti $1 hagan maniringi rungkaran-tungkaran lain.',
'accmailtitle' => 'Katasunduk takirim.',
-'accmailtext' => "Sabuah katasunduk babarang gasan [[User talk:$1|$1]] sudah dikirim ka $2.
+'accmailtext' => "Sabuting katasunduk babarang gasan [[User talk:$1|$1]] sudah dikirim ka $2.
Katasunduk gasan pamakai hanyar nangini kawa diubah pintang tungkaran ''[[Special:ChangePassword|ubah katasunduk]]'' wayah babuat log.",
'newarticle' => '(Hanyar)',
'userpage-userdoesnotexist-view' => 'Akun pamuruk "$1" kada tadaptar.',
'blocked-notice-logextract' => 'Pamuruk nangini parhatan ini diblukir.
Log blukir pahabisannya tasadia di bawah ini gasan rujukan:',
-'clearyourcache' => "'''Catatan: Habis manyimpan, Pian harus malingarakan cache panjalajah web Pian hagan malihat parubahan.'''
-*'''Firefox/Safari:''' tahan ''Shift'' parhatan klik ''Reload'', atawa picik ''Ctrl-F5'' atawa ''Ctrl-R'' (''Command-R'' pada sabuah Mac);
-* '''Google Chrome:''' picik ''Ctrl-Shift-R'' (''Command-Shift-R'' pada sabuah Mac)
+'clearyourcache' => "x'''Catatan: Habis manyimpan, Pian harus malingarakan cache panjalajah web Pian hagan malihat paubahan.'''
+*'''Firefox/Safari:''' tahan ''Shift'' parhatan klik ''Reload'', atawa picik ''Ctrl-F5'' atawa ''Ctrl-R'' (''Command-R'' pada sabuting Mac);
+* '''Google Chrome:''' picik ''Ctrl-Shift-R'' (''Command-Shift-R'' pada sabuting Mac)
*'''Internet Explorer:''' tahan ''Ctrl'' parhatan klik ''Refresh,'' atawa picik ''Ctrl-F5''
-* '''Konqueror:''' klik ''Reload'' atawa picik ''F5''
+* '''Konqueror:''' kalik ''Reload'' atawa picik ''F5''
*'''Opera:''' barasihakan cache pada ''Tools → Preferences''",
'usercssyoucanpreview' => "'''Tip:''' Puruk picikan \"{{int:showpreview}}\" hagan tis CSS hanyar Pian sabalum manyimpan.",
'userjsyoucanpreview' => "'''Tip:''' Puruk picikan \"{{int:showpreview}}\" hagan tis JavaScript hanyar Pian sabalum manyimpan.",
Inatakan bahwasa saragam tungkaran-tungkaran .css wan .js mamuruk aksara halus, cuntuh {{ns:user}}:Foo/vector.css sawagai tandingan {{ns:user}}:Foo/Vector.css.",
'updated' => '(Dihanyarakan)',
'note' => "'''Catatan:'''",
-'previewnote' => "'''Ingatakanlah bahwasa ngini titilikan haja''' Parubahan Pian nang baluman disimpan!",
+'previewnote' => "'''Ingatakanlah bahwasa ngini titilikan haja''' Paubahan Pian baluman disimpan!",
'continue-editing' => 'Lanjutakan mambabak',
'previewconflict' => 'Titilikan ini mancarminakan naskah dalam naskah wilayah atas babakan sawagai mana ini akan mancungul amun disimpan.',
'session_fail_preview' => "'''Ampun! Kami kada kawa manarusakan babakan Pian karana kahilangan sési data.'''
Cubai pang sa'asa pulang.
Amun magun kada kulihan, cubai [[Special:UserLogout|kaluar log]] wan imbah itu babuat log pulang.",
-'session_fail_preview_html' => "'''Kami kada kawa manarusakan babakan Pian karana kahilangan wayah data.'''
+'session_fail_preview_html' => "'''Kami kada kawa manarusakan babakan Pian marga kahilangan wayah data.'''
-''Marga {{SITENAME}} mangkawa'akan HTML mantah, titilikan disungkupakan sawagai pancahagahan sarangan Javascript.''
+''Marga {{SITENAME}} mangkawa'akan HTML mantah, titilikan disungkupakan sawagai pancagahan sarangan Javascript.''
-'''Amun nangini adalah sabuah parcubaan babakan nang sabujurnya, muhun cubai lagi.'''
-Amun ini masih haja kada bagawi, cubai [[Special:UserLogout|kaluar log]] wan babuat log pulang.",
-'token_suffix_mismatch' => "'''Babakan Pian sudah kada ditarima karana aplikasi Pian mahancuri tanda baca pada babakan token.'''
+'''Amun nangini adalah sabuting parcubaan babakan nang sabujurnya, muhun cubai lagi.'''
+Amun ngini masih haja kada bagawi, cubai [[Special:UserLogout|kaluar log]] wan babuat log pulang.",
+'token_suffix_mismatch' => "'''Babakan Pian sudah kada ditarima marga aplikasi Pian mahancuri tanda baca pada babakan token.'''
Babakan ini kada ditarima hagan mancagah kasalahan pada naskah tungkaran.
-Nangini ambahanu tajadi amun Pian mamuruk sabuah layanan proxy buggy bapandal web kada bangaran.",
+Nangini bahanu tajadi amun Pian mamuruk sabuting layanan proxy buggy bapandal web kada bangaran.",
'edit_form_incomplete' => "'''Babarapa hagian matan purmulir babakan kada sampai server; pariksa pulang apakah babakan Pian tatap utuh wan cubai lagi.'''",
'editing' => 'Mambabak $1',
'creating' => 'Ma-ulah $1',
'editingsection' => 'Mambabak $1 (hagian)',
'editingcomment' => 'Mambabak $1 (hagian hanyar)',
'editconflict' => 'Babakan bacakut: $1',
-'explainconflict' => "Ada urang lain nang sudah maubah tungkaran ini parhatan Pian mula mambabak ini.
-Naskah atas baisi naskah tungkaran sawagai dimapa ini ada hahanyaran ini.
-Parubahan Pian ditampaiakan pada naskah di bawah.
-Pian pinanya harus manggabungakan parubahan Pian ka dalam naskah nang ada.
-Naskah nang di atas '''haja''' nang akan tasimpan amung Pian manikin \"{{int:savearticle}}\".",
+'explainconflict' => "Ada urang lain nang sudah maubah tungkaran ini parhatan Pian bamula mambabak ngini.
+Naskah atas baisi naskah tungkaran wayah ini.
+Paubahan Pian ditampaiakan pada naskah di bawah.
+Pinanya Pian harus manggabungakan paubahan Pian ka dalam naskah nang ada.
+Naskah nang di atas '''haja''' nang akan tasimpan lamun Pian manikin \"{{int:savearticle}}\".",
'yourtext' => 'Naskah Pian',
'storedversion' => 'Ralatan tasimpan',
'nonunicodebrowser' => "'''Paringatan: Panjalajah web Pian kada manyukung unicode.'''
Sabuah pambulatan gawian di wadah ini mambulihakan Pian aman mambabak tutungkaran: karaktir non-ASCII akan cungul pada kutak babakan sawagai kudi hiksadisimal.",
'editingold' => "'''Paringatan: Pian lagi mambabak ralatan lawas matan tungkaran ini.'''
-Amun Pian manyimpan ini, babarapa paparubahan dulah imbah ralatan nangini akan tanggal.",
+Amun Pian manyimpan ini, babarapa paubahan diulah limbah ralatan nangini akan tanggal.",
'yourdiff' => 'Nang balain',
'copyrightwarning' => "Muhun dicatat bahwasanya samunyaan sumbangan ka {{SITENAME}} adalah sudah dipartimbangkan disabarakan di bawah $2 (lihati $1 gasan rincian). Amun Pian kada handak tulisan Pian dibabak wan disabarakan, kada usah mangirim ini ka sia. <br />
Pian jua bajanji ka kami amun Pian manulis ini saurangan, atawa manjumput ini matan sabuah asal mula ampun umum atawa asal mula lainnya nang samacam.
'edit-gone-missing' => 'Kada kawa mamutakhirakan tungkaran ini.
Ini cungul pinanya sudah tahapus.',
'edit-conflict' => 'Babakan bacakut.',
-'edit-no-change' => 'Babakan Pian diabaiakan, karana kadada parubahan diulah ka naskah ini.',
-'edit-already-exists' => 'Kada kawa maulah sabuah tungkaran hanyar.
+'edit-no-change' => 'Babakan Pian diabaiakan, karana kadada paubahan diulah ka naskah ngini.',
+'edit-already-exists' => 'Kada kawa maulah sabuting tungkaran hanyar.
Nangini sudah ada.',
'defaultmessagetext' => 'Naskah baku pasan',
+'content-failed-to-parse' => 'Gagal manjabarakan isi $2 gasan model $1: $3',
+'invalid-content-data' => 'Data isi kada sah',
+'content-not-allowed-here' => 'Isi "$1" kada diijinakan di tungkaran [[$2]]',
+
+# Content models
+'content-model-wikitext' => 'teks wiki',
+'content-model-text' => 'teks polos',
+'content-model-javascript' => 'JavaScript',
+'content-model-css' => 'CSS',
# Parser/template warnings
'expensive-parserfunction-warning' => "'''Paringatan:''' Tungkaran ini mangandung kabanyakan pungsi parser kiauan.
'post-expand-template-inclusion-warning' => "'''Paringatan:''' Citakan nang diumpatakan takarannya kaganalan.
Babarapa citakan akan kada taumpatakan.",
'post-expand-template-inclusion-category' => 'Tungkaran-tungkaran nang citakan baumpat limpuar',
-'post-expand-template-argument-warning' => "'''Paringatan:''' Tungkaran ini mangandung paling kada sabuah kalimat citakan wan ukuran panyingkaiannya kaganalan. Kalimat-kalimat nangitu sudah diabaiakan.",
+'post-expand-template-argument-warning' => "'''Paringatan:''' Tungkaran ngini mangandung paling kada sabuting kalimat citakan wan ukuran panyingkaiannya kaganalan. Kalimat-kalimat nangitu sudah diabaiakan.",
'post-expand-template-argument-category' => 'Tungkaran-tungkaran nang mangandung kalimat-kalimat citakan diabaiakan',
'parser-template-loop-warning' => 'Citakan baulang takantup: [[$1]]',
'parser-template-recursion-depth-warning' => 'Citakan batas kadalaman recursi limpuar ($1)',
# "Undo" feature
'undo-success' => 'Babakan kawa diwalangi.
-Muhun pariksa panandingan di bawah hagan mayakinakan ini apa nang Pian handak gawi, wan imbah itu simpan parubahan di bawah hagan manuntungakan pawalangan babakan.',
+Tulung dipariksa panandingan di bawah hagan mayakinakan ngini apa nang Pian handak gawi, wan limbah itu simpan paubahan di bawah hagan manuntungakan pawalangan babakan.',
'undo-failure' => 'Babakan ini kada kawa diwalangi karana ada cakutan di tangah babakan-babakan.',
'undo-norev' => 'Babakan kada kawa diwalangi karana ini kadada atawa tahapus.',
'undo-summary' => '←Mawalangakan ralatan $1 ulih [[Special:Contributions/$2|$2]] ([[User talk:$2|Pandir]])',
'revdel-restore-visible' => 'Ralatan-ralatan kalihatan',
'pagehist' => 'Sajarah tungkaran',
'deletedhist' => 'Halam tahapus',
-'revdelete-hide-current' => 'Tasalah manyungkupakan nang batanggal $1, $2: ini adalah ralatan tahanyar.
+'revdelete-hide-current' => 'Tasalah manyungkupakan nang batanggal $1, $2: ngini adalah ralatan pahanyarnya.
Ini kada kawa disungkupakan.',
'revdelete-show-no-access' => 'Tasalah manampaiakan nang batanggal $1, $2: nangini sudah ditandai "tabatas".
Pian kada kawa malihati ini.',
# Suppression log
'suppressionlog' => 'Log panikinan',
-'suppressionlogtext' => 'Nang di bawah adalah sabuting daptar matan pahapusan wan pamblukiran tamasuk isi tasungkup matan pambakal. Lihati [[Special:BlockList|Daptar diblukir]] gasan daptar matan uprasi tahanyar tatangatan wan blukir.',
+'suppressionlogtext' => 'Nang di bawah adalah sabuting daptar matan pahapusan wan pamblukiran tamasuk isi tasungkup matan pambakal. Lihati [[Special:BlockList|Daptar diblukir]] gasan daptar matan uprasi pahanyarnya tatangatan wan blukir.',
# History merging
'mergehistory' => 'Gabungakan hahalam tungkaran',
-'mergehistory-header' => 'Tungkaran ngini mambulihakan Pian manggabungakan raralatan matan asa tungkaran asal mula ka sabuah tungkaran tahanyar.
-Yakini bahwasa parubahan ngini masih maharagu tarus halam lawas tungkaran.',
+'mergehistory-header' => 'Tungkaran ngini mambulihakan Pian manggabungakan raralatan matan asa tungkaran asal mula ka sabuting tungkaran pahanyarnya.
+Yakini bahwasa paubahan ngini masih maharagu tarus halam lawas tungkaran.',
'mergehistory-box' => 'Gabungakan raralatan matan dua tungkaran:',
'mergehistory-from' => 'Tungkaran asal mula:',
'mergehistory-into' => 'Tungkaran tatuju:',
'prefs-datetime' => 'Tanggal wan waktu',
'prefs-labs' => 'Fitur Labs',
'prefs-personal' => 'Data awak',
-'prefs-rc' => 'Parubahan tahanyar',
+'prefs-rc' => 'Paubahan pahanyarnya',
'prefs-watchlist' => 'Paitihan',
'prefs-watchlist-days' => 'Rikinan hari-hari ditampaiakan di daptar itihan:',
'prefs-watchlist-days-max' => 'Maksimum $1 {{PLURAL:$1|hari|hahari}}',
-'prefs-watchlist-edits' => 'Rikinan paningginya matan parubahan hagan ditampaiakan pada singkaian daptar itihan:',
+'prefs-watchlist-edits' => 'Rikinan paningginya matan paubahan hagan ditampaiakan pada singkaian daptar itihan:',
'prefs-watchlist-edits-max' => 'Rikinan paningginya:1000',
'prefs-watchlist-token' => 'Token itihan:',
'prefs-misc' => 'Balalain',
'prefs-email' => 'Pipilihan suril',
'prefs-rendering' => 'Pancungulan',
'saveprefs' => 'Simpan',
-'resetprefs' => 'Kusungakan paparubahan kada tasimpan',
+'resetprefs' => 'Walangakan paubahan',
'restoreprefs' => 'Bulikakan samunyaan sesetélan default',
'prefs-editing' => 'Pambabakan',
'prefs-edit-boxsize' => 'Ukuran lalungkang babakan',
'resultsperpage' => 'Hantukan par tungkaran:',
'stub-threshold' => 'Ambang watas gasan pormat <a href="#" class="stub">taautan rintisan</a>:',
'stub-threshold-disabled' => 'Kada kawa-akan',
-'recentchangesdays' => 'Hahari nang manampaiakan parubahan tahanyar:',
+'recentchangesdays' => 'Jumlah hari nang manampaiakan paubahan pahanyarnya:',
'recentchangesdays-max' => 'Paling lawas $1 {{PLURAL:$1|hari|hahari}}',
'recentchangescount' => 'Rikinan babakan nang ditampaiakan default:',
-'prefs-help-recentchangescount' => 'Ini tamasuk parubahan tahanyar, halam-halam tungkaran, wan log-log.',
+'prefs-help-recentchangescount' => 'Ngini tamasuk paubahan pahanyarnya, sajarah halam tungkaran, wan log-log.',
'prefs-help-watchlist-token' => 'Maisi kutak ngini lawan kunci rahasia (PIN) akan mahasilakan sindikasi RSS hagan daptar pantauan Anda. Siapa gin nang tahu kunci ngini kawa mambaca daptar itihan Pian, jadi pilihi nilainya bahati-hati
Barikut ngini adalah nilai acak nang kawa Pian puruk: $1',
'savedprefs' => 'Kakatujuan Pian sudah ham disimpan.',
'right-reupload-own' => 'Manulistindih barakas nang ada unggahan ulih urang nang sama',
'right-reupload-shared' => 'Manulak babarakas pada panyimpanan media lokal basamaan',
'right-upload_by_url' => 'Hunggahakan babarakas matan sabuah URL',
-'right-purge' => 'Limpuarakan timbuluk situs gasan asa tungkaran kada pambaritahuan',
+'right-purge' => 'Limpuarakan timbuluk situs gasan asa tungkaran kada pamadahan',
'right-autoconfirmed' => 'Mambabak tutungkaran sami-dilindungi',
'right-bot' => 'Ditindak sawagai sabuah proses utumatis',
'right-nominornewtalk' => 'Kadada babakan sapalih di tutungkaran pamandiran nang mancungulakan tampaian pasan puga',
'right-writeapi' => 'Puruk panulisan API',
'right-delete' => 'Mahapus tungkaran',
'right-bigdelete' => 'Hapus tutungkaran awan hahalam ganal',
+'right-deletelogentry' => 'Hapus wan walangakan pahapusan masukan log tartantu',
'right-deleterevision' => 'Mahapus wan mawalangi hapus raralatan tatantu matan tutungkaran',
'right-deletedhistory' => 'Tiringi mamasukan halam tahapus, kada banaskah tarait',
-'right-deletedtext' => 'Tiringi naskah tahapus wan parubahan antar raralatan tahapus',
+'right-deletedtext' => 'Tiringi naskah tahapus wan paubahan antar raralatan nang tahapus',
'right-browsearchive' => 'Manggagai tungkaran nang sudah dihapus',
'right-undelete' => 'Mambulikakan sabuah tungkaran tahapus',
'right-suppressrevision' => 'Maniring pulang wan mambulikakan raralatan matan papambakal',
'right-importupload' => 'Iimpur tutungkaran matan sabuah barakas hunggahan',
'right-patrol' => "Tandai bababakan nang lain sawagai ta'awasi",
'right-autopatrol' => "Babakan ampun surang utumatis ditandai sawagai ta'awasi",
-'right-patrolmarks' => 'Tiringi tanda parubahan tahanyar',
+'right-patrolmarks' => 'Tiringi tanda paubahan pahanyarnya',
'right-unwatchedpages' => 'Tiringi sabuah daptar tutungkaran nang kada diitihi',
'right-mergehistory' => 'Gabungakan halam matan tutungkaran',
'right-userrights' => 'Babak sabarataan hak pamuruk',
'newuserlogpagetext' => 'Ngini adalah sabuah log paulahan pamuruk.',
# User rights log
-'rightslog' => 'Log parubahan hak masuk',
-'rightslogtext' => 'Nangini adalah sabuah log paparubahan ka hahak pamuruk.',
+'rightslog' => 'Log paubahan hak masuk',
+'rightslogtext' => 'Nangini sabuting log paubahan ka hak pamakai.',
# Associated actions - in the sentence "You do not have permission to X"
'action-read' => 'baca tungkaran ini',
'action-sendemail' => 'Kirim suril',
# Recent changes
-'nchanges' => '$1 {{PLURAL:$1|parubahan|parubahan}}',
+'nchanges' => '$1 {{PLURAL:$1|paubahan|paubahan}}',
'recentchanges' => 'Paubahan pahanyarnya',
'recentchanges-legend' => 'Pilihan paubahan pahanyarnya',
-'recentchanges-summary' => 'Jajak parubahan wiki pahanyarnya pada tungkaran ngini',
-'recentchanges-feed-description' => 'Susuri parubahan pahanyarnya dalam wiki di kitihan ini',
-'recentchanges-label-newpage' => 'Babakan ngini maulah sabuah tungkaran hanyar',
-'recentchanges-label-minor' => 'Ngini adalah sabuah babakan sapalih',
+'recentchanges-summary' => 'Jajak paubahan wiki pahanyarnya pada tungkaran ngini',
+'recentchanges-feed-description' => 'Susuri paubahan pahanyarnya dalam wiki di kitihan ini',
+'recentchanges-label-newpage' => 'Babakan ngini maulah sabuting tungkaran hanyar',
+'recentchanges-label-minor' => 'Ngini sabuting babakan sapalih',
'recentchanges-label-bot' => 'Babakan ngini digawi ulih saikung bot',
'recentchanges-label-unpatrolled' => "Babakan ngini baluman ta'awasi",
'rcnote' => "Di bawah ni {{PLURAL:$1|'''1'''|'''$1'''}} paubahan pahanyarnya dalam {{PLURAL:$2|'''1''' hari|'''$2''' hari}} tauncit, sampai $4 pukul $5.",
-'rcnotefrom' => "Di bawah ngini parubahan tumatan '''$2''' (ditampaiakan sampai '''$1''' parubahan)",
+'rcnotefrom' => "Di bawah ngini paubahan tumatan '''$2''' (ditampaiakan sampai '''$1''' paubahan)",
'rclistfrom' => 'Tampaiakan paubahan pahanyarnya matan $1',
'rcshowhideminor' => '$1 pambabakan sapalih',
'rcshowhidebots' => '$1 bot',
'rc-old-title' => 'aslinya diulah sawagai "$1"',
# Recent changes linked
-'recentchangeslinked' => 'Parubahan tarait',
-'recentchangeslinked-feed' => 'Parubahan tarait',
-'recentchangeslinked-toolbox' => 'Parubahan tarait',
-'recentchangeslinked-title' => 'Parubahan nang tarait lawan "$1"',
-'recentchangeslinked-noresult' => 'Kadada parubahan pada tautan tutungkaran salawas wayah ditantuakan',
-'recentchangeslinked-summary' => "Ngini adalah sabuah daptar parubahan nang diulah hahanyar ngini pada tungkaran batautan matan sabuah tungkaran tartantu (atawa ka angguta matan sabuah tumbung tartantu).
+'recentchangeslinked' => 'Paubahan tarait',
+'recentchangeslinked-feed' => 'Paubahan tarait',
+'recentchangeslinked-toolbox' => 'Paubahan tarait',
+'recentchangeslinked-title' => 'Paubahan nang tarait lawan "$1"',
+'recentchangeslinked-noresult' => 'Kadada paubahan pada tautan tutungkaran salawas wayah ditantuakan',
+'recentchangeslinked-summary' => "Ngini sabuting daptar paubahan nang diulah hahanyar ngini pada tungkaran batautan matan sabuting tungkaran tartantu (atawa ka angguta matan sabuah tumbung tartantu).
Tutungkaran dalam [[Special:Watchlist|daptar itihan Pian]] ditandai '''kandal'''.",
'recentchangeslinked-page' => 'Ngaran tungkaran:',
-'recentchangeslinked-to' => 'Tampaiakan parubahan matan tungkaran-tungkaran nang tataut lawan tungkaran nang disurungakan',
+'recentchangeslinked-to' => 'Tampaiakan paubahan matan tutungkaran nang bataut lawan tungkaran nang disurungakan',
# Upload
'upload' => 'Hunggahakan barakas',
'filename' => 'Ngaran barakas',
'filedesc' => 'Kasimpulan',
'fileuploadsummary' => 'Kasimpulan:',
-'filereuploadsummary' => 'Parubahan barakas:',
+'filereuploadsummary' => 'Paubahan barakas:',
'filestatus' => 'Status hak-rekap:',
'filesource' => 'Asal mula:',
'uploadedfiles' => 'Babarakas tahunggah',
'filename-tooshort' => 'Ngaran barakas kahandapan.',
'filetype-banned' => 'Macam barakas ini ditangati.',
'verification-error' => 'Barakas nangini kada lulus paitihan.',
-'hookaborted' => 'Parubahan nang Pian cuba ulah sudah digagalakan ulih unjun ekstensi.',
+'hookaborted' => 'Paubahan nang Pian cuba ulah sudah digagalakan ulih unjun ekstensi.',
'illegal-filename' => 'Ngaranbarakas kada dibulihakan.',
'overwrite' => 'Manindih tulis sabuah barakas nang ada kada dibulihakan.',
'unknown-error' => 'Kasalahan kada dipinandui tajadi.',
'withoutinterwiki-legend' => 'Mulaan',
'withoutinterwiki-submit' => 'Tampaiakan',
-'fewestrevisions' => 'Tutungkaran lawan parubahan paling sadikit',
+'fewestrevisions' => 'Tutungkaran lawan paubahan panyadikitnya',
# Miscellaneous special pages
'nbytes' => '$1 {{PLURAL:$1|bit|bit}}',
'ncategories' => '{{PLURAL:$1|tumbung|tutumbung}}',
+'ninterwikis' => '$1 {{PLURAL:$1|interwiki|interwiki}}',
'nlinks' => '$1 {{PLURAL:$1|tautan|tautan}}',
'nmembers' => '$1 {{PLURAL:$1|angguta|angguta}}',
'nrevisions' => '$1 {{PLURAL:$1|ralatan|raralatan}}',
'mostlinkedtemplates' => 'Cicitakan tatuju tautan pambanyaknya',
'mostcategories' => 'Tutungkaran lawan pambanyaknya tutumbung',
'mostimages' => "Barakas nang rancak diguna'akan",
-'mostrevisions' => 'Tutungkaran lawan parubahan paling banyak',
+'mostinterwikis' => 'Tutungkaran lawan interwiki pambanyaknya',
+'mostrevisions' => 'Tutungkaran lawan paubahan pambanyaknya',
'prefixindex' => 'Samunyaan tungkaran wan awalan',
'prefixindex-namespace' => 'Samunyaan tutungkaran baawalan ($1 ngaran-kamar)',
'shortpages' => 'Tutungkaran handap',
'notargettext' => 'Pian kada maajuakan sabuah tungkaran atawa pamuruk sasaran malakuakan palakuan ini.',
'nopagetitle' => 'Kadada tungkaran sasaran',
'nopagetext' => 'Tungkaran sasaran nang Pian ajuakan kadada.',
-'pager-newer-n' => '{{PLURAL:$1|tahanyar 1|tahanyar $1}}',
+'pager-newer-n' => '{{PLURAL:$1|labih hanyar 1|labih hanyar $1}}',
'pager-older-n' => '{{PLURAL:$1|talawas 1|talawas $1}}',
'suppress' => 'Pangawasan',
'querypage-disabled' => 'Tungkaran istimiwa ngini dikada-kawakan gasan alasan ginawi.',
Pian kada mawatasi tiringan lawan mamilih sabuah macam log, ngaran-pamuruk (sansitip kapital), atawa tungkaran tapangaruh (sansitip kapital jua).',
'logempty' => 'Kadada barang nang parsis pintang log.',
'log-title-wildcard' => 'Gagai judul ba-awalan awan naskah ngini',
+'showhideselectedlogentries' => 'Tampaiakan/sungkupakan masukan log tapilih',
# Special:AllPages
'allpages' => 'Samunyaan tungkaran',
'allpages-hide-redirects' => 'Sambunyiakan paalihan',
# SpecialCachedPage
-'cachedspecial-refresh-now' => 'Itihi tahanyar.',
+'cachedspecial-refresh-now' => 'Itihi ralatan pahanyarnya.',
# Special:Categories
'categories' => 'Tutumbung',
'listusers-noresult' => 'Kadada pamuruk tatamu.',
'listusers-blocked' => '(diblukir)',
-# Special:ActiveUsers
-'activeusers' => 'Daptar pamuruk aktip',
-'activeusers-intro' => 'Ngini adalah sabuah daptar papamuruk sabuah bantuk kagiatan dalam tauncit $1 {{PLURAL:$1|hari|hahari}}.',
-'activeusers-count' => '$1 {{PLURAL:$1|babak|babakan}} dalam tauncit {{PLURAL:$3|hari|$3 hahari}}',
-'activeusers-from' => 'Manampaiakan papamuruk mulai matan:',
-'activeusers-hidebots' => 'Sungkupakan bot',
-'activeusers-hidesysops' => 'Sungkupakan pambakal',
-'activeusers-noresult' => 'Kadada papamuruk tatamu.',
-
# Special:ListGroupRights
'listgrouprights' => 'Galambang hak pamuruk',
'listgrouprights-summary' => 'Barikut adalah sabuah daptar matan galambang pamuruk nang ada di wiki ngini, lawan hak ungkai masing-masing.
'watchnologin' => 'Baluman babuat log',
'watchnologintext' => 'Pian musti [[Special:UserLogin|babuat log]] amun handak magaganti daptar itihan Pian.',
'addwatch' => 'Tambahi ka daptar itihan',
-'addedwatchtext' => "Tungkaran \"[[:\$1]]\" sudah ditambahakan ke [[Special:Watchlist|daptar itihan]] Pian.
-Parubahan-parubahan salanjutnya pada tungkaran ini dan tungkaran pamandiran taraitnya akan takambit di sia, wan tungkaran itu akan ditampaiakan '''kandal''' pada [[Special:RecentChanges|daptar parubahan tahanyar]] cagar labih mudah diitihi.",
+'addedwatchtext' => "Tungkaran \"[[:\$1]]\" sudah ditambahakan ka [[Special:Watchlist|daptar itihan]] Pian.
+Paubahan-paubahan salanjutnya pada tungkaran ngini dan tungkaran pamandiran taraitnya akan takambit di sini, wan tungkaran itu akan ditampaiakan '''kandal''' pada [[Special:RecentChanges|daptar paubahan pahanyarnya]] cagar labih mudah diitihi.",
'removewatch' => 'Buang matan daptar itihan',
'removedwatchtext' => 'Tungkaran "[[:$1]]" sudah dihapus matan [[Special:Watchlist|daptar itihan]] Pian.',
'watch' => 'Itih',
'watchthispage' => 'Itihi tungkaran ini',
'unwatch' => 'walang maitihi',
'unwatchthispage' => 'Mandak maitihi',
-'notanarticle' => 'Lainan sabuah tungkaran isi',
+'notanarticle' => 'Lainan sabuting tungkaran isi',
'notvisiblerev' => 'Ralatan tauncit ulih saurang pamuruk babida sudah dihapus',
'watchnochange' => 'Kadada nang Pian itihi dibabak parhatan jangka wayah ngitu.',
'watchlist-details' => '{{PLURAL:$1|$1 tungkaran|$1 tungkaran}} dalam daptar itihan Pian, kada mahitung tungkaran pamandiran.',
'wlheader-enotif' => 'Suril pamadahan dipajahi.',
'wlheader-showupdated' => "* Tutungkaran nang ba-ubah tumatan ilangan tauncit Pian ditampaiakan dalam '''hurup kandal'''",
-'watchmethod-recent' => 'pariksa bababakan tahanyar gasan tungkaran nang diitihi.',
-'watchmethod-list' => 'pariksa tutungkaran nang diitihi gasan bababakan tahanyar',
+'watchmethod-recent' => 'pariksa bababakan pahanyarnya gasan tungkaran nang diitihi.',
+'watchmethod-list' => 'pariksa tutungkaran nang diitihi gasan bababakan pahanyarnya',
'watchlistcontains' => 'Paitihan Pian mangandung $1 {{PLURAL:$1|tungkaran|tutungkaran}}.',
'iteminvalidname' => "Masalah awan barang '$1', bangaran kada sah...",
'wlnote' => "Di bawah naya adalah {{PLURAL:$1|paubahan|'''$1''' paubahan}} tauncit dalam '''$2''' jam tauncit, par $3, $4.",
# Displayed when you click the "watch" button and it is in the process of watching
'watching' => 'Maitihi...',
'unwatching' => 'Kada jadi maitihi...',
-'watcherrortext' => 'Sabuah kasalahan tajadi parhatan setelan paitihan Pian diubah gasan "$1".',
+'watcherrortext' => 'Sabuting kasalahan tajadi parhatan setelan paitihan Pian diubah gasan "$1".',
'enotif_mailer' => 'Panyurili pamadahan {{SITENAME}}',
'enotif_reset' => 'Tandai samunyaan tutungkaran sudah diilangi',
'enotif_impersonal_salutation' => 'Pamuruk {{SITENAME}}',
-'enotif_lastvisited' => 'Janaki $1 gasan samunyaan parubahan mula Pian pauncitan tadi bailang.',
-'enotif_lastdiff' => 'Janaki $1 hagaan maniringi parubahan ngini.',
-'enotif_anon_editor' => 'pamuruk kada-bangaran $1',
+'enotif_subject_deleted' => 'Tungkaran $1 di {{SITENAME}} hudah dihapus ulih {{gender:$2|$2}}',
+'enotif_subject_created' => 'Tungkaran $1 di {{SITENAME}} hudah diulah ulih {{gender:$2|$2}}',
+'enotif_subject_moved' => 'Tungkaran $1 di {{SITENAME}} hudah dipindahakan ulih {{gender:$2|$2}}',
+'enotif_subject_restored' => 'Tungkaran $1 di {{SITENAME}} hudah dibulikakan ulih {{gender:$2|$2}}',
+'enotif_subject_changed' => 'Tungkaran $1 di {{SITENAME}} hudah diubah ulih {{gender:$2|$2}}',
+'enotif_body_intro_deleted' => 'Tungkaran $1 di {{SITENAME}} hudah dihapus pada $PAGEEDITDATE ulih {{gender:$2|$2}}, lihat $3.',
+'enotif_body_intro_created' => 'Tungkaran $1 di {{SITENAME}} hudah diulah pada $PAGEEDITDATE ulih {{gender:$2|$2}}, lihat $3 gasan ralatan damini.',
+'enotif_body_intro_moved' => 'Tungkaran $1 di {{SITENAME}} hudah dipindahakan pada $PAGEEDITDATE ulih {{gender:$2|$2}}, lihat $3 gasan ralatan damini.',
+'enotif_body_intro_restored' => 'Tungkaran $1 di {{SITENAME}} hudah dibulikakan pada $PAGEEDITDATE ulih {{gender:$2|$2}}, lihat $3 gasan ralatan damini.',
+'enotif_body_intro_changed' => 'Tungkaran $1 di {{SITENAME}} hudah diubah pada $PAGEEDITDATE ulih {{gender:$2|$2}}, lihat $3 gasan ralatan damini.',
+'enotif_lastvisited' => 'Janaki $1 gasan samunyaan paubahan mula Pian pauncitan tadi bailang.',
+'enotif_lastdiff' => 'Janaki $1 hagan maniringi paubahan ngini.',
+'enotif_anon_editor' => 'pamakai kada-bangaran $1',
'enotif_body' => 'Halo $WATCHINGUSERNAME,
suril: $PAGEEDITOR_EMAIL
wiki: $PAGEEDITOR_WIKI
-Kami kada akan mangirim pambaritahuan lain amun ada parubahan labih lanjut sampai Pian mailangi tungkaran ngini.
-Pian kawa jua manyetel-pulang bandira pambaritahuan hagan samunyaan tungkaran nang Pian itihi dalam paitihan Pian.
+Kami kada akan mangirim pamadahan lain amun ada paubahan labih lanjut sampai Pian mailangi tungkaran ngini.
+Pian kawa jua manyetel-pulang bandira pamadahan hagan samunyaan tungkaran nang Pian itihi dalam paitihan Pian.
-Sistem kakawalan pambaritahuan {{SITENAME}} Pian
+Sistem kakawalan pamadahan {{SITENAME}} Pian
--
-Hagan maubah setelan suril pambaritahuan Piann, ilangi
+Hagan maubah setelan suril pamadahan Piann, ilangi
{{canonicalurl:{{#special:Preferences}}}}
Hagan maubah setelan paitihan Pian, ilangi
'exblank' => 'tungkaran dikusungakan',
'delete-confirm' => 'Hapus "$1"',
'delete-legend' => 'Hapus',
-'historywarning' => "'''Paringatan:''' Tungkaran nang Pian pasal hagan hapus baisi sabuah halam sakitar $1 {{PLURAL:$1|ralatan|raralatan}}:",
-'confirmdeletetext' => 'Pian handak mahapus sabuah tungkaran awan samunyaan halamnya.
-Muhun mamastiakan amun Pian handak manggawi ini, bahwasa Pian paham akibatnya, wan apa nang Pian gawi ini sasuai awan [[{{MediaWiki:Policy-url}}|kabijakan {{SITENAME}}]].',
+'historywarning' => "'''Paringatan:''' Tungkaran nang akan Pian hapus baisi sabuting sajarah lawan $1 {{PLURAL:$1|ralatan|raralatan}}:",
+'confirmdeletetext' => 'Pian handak mahapus sabuting tungkaran awan samunyaan sajarahnya.
+Pastiakan amun Pian handak manggawi ngini, bahwasa Pian paham akibatnya, wan apa nang Pian gawi ini sasuai awan [[{{MediaWiki:Policy-url}}|kabijakan {{SITENAME}}]].',
'actioncomplete' => 'Pa-ulahan tuntung',
'actionfailed' => 'Palakuan luput',
-'deletedtext' => '"$1" sudah tahapus. Lihati $2 sabuah rakaman gasan nang hanyar ni tahapus.',
+'deletedtext' => '"$1" sudah dihapus. Lihati $2 gasan log pahanyarnya tungkaran nang sudah hapus.',
'dellogpage' => 'Log pahapusan',
-'dellogpagetext' => 'Di bawah ngini adalah sabuah daptar matan pahapusan hahanyar ni.',
+'dellogpagetext' => 'Di bawah ngini sabuting daptar matan pahapusan pahanyarnya.',
'deletionlog' => 'log pahapusan',
'reverted' => 'Dibulikakan ka raralatan tadamini',
'deletecomment' => 'Alasan:',
** Parumpakan hak rekap
** Vandalisma',
'delete-edit-reasonlist' => 'Babak alasan pahapusan',
-'delete-toobig' => 'Tungkaran ngini baisi sabuah halam ganal, labih pada $1 {{PLURAL:$1|ralatan|raralatan}}.
-Pahapusan tutungkaran kaini dibatasi hagan mancagah parusakan mandadak di {{SITENAME}}.',
+'delete-toobig' => 'Tungkaran ngini baisi sabuting sajarah pambabakan nang panjang, labih pada $1 {{PLURAL:$1|ralatan|raralatan}}.
+Pahapusan tutungkaran kaini dibatasi hagan mancagah parakaian bakajutan di {{SITENAME}}.',
'delete-warning-toobig' => 'Tungkaran ngini baisi halam babakan ganal, labih pada $1 {{PLURAL:$1|ralatan|raralatan}}.
Mahapus ngini kawa mangaruhi databasis oparasi {{SITENAME}};
jalanakan awan ba-a-awas.',
# Edit tokens
'sessionfailure-title' => 'Sesi luput',
-'sessionfailure' => 'Pinanya ada sabuah masalah awan sesi babuat loh Pian;
-Palakuan ngini sudah diwalangi sawagai pra-awasan malawan sesi pambajakan.
+'sessionfailure' => 'Pinanya ada sabuting masalah awan sesi babuat log Pian;
+Tindakan ngini sudah diwalangi sawagai pra-awasan malawan sesi pambajakan.
Tulak babulik ka tungkaran sabalumnya, muat-pulang tungkaran ngitu wan lalu-ai cuba pulang.',
# Protect
'protectlogpage' => 'Log palindungan',
-'protectlogtext' => 'Di bawah adalah sabuah daptar parubahan ka parlindungan tungkaran.
-Janaki [[Special:ProtectedPages|daptar tungkaran talindungi]] gasan daptar parlindungan tungkaran tadamini.',
+'protectlogtext' => 'Di bawah adalah sabuting daptar paubahan ka palindungan tungkaran.
+Janaki [[Special:ProtectedPages|daptar tungkaran talindungi]] gasan daptar palindungan tungkaran tadamini.',
'protectedarticle' => "malindungi ''[[$1]]''",
'modifiedarticleprotection' => 'maubah tingkat perlindungan "[[$1]]"',
'unprotectedarticle' => 'mahilangakan palindungan "[[$1]]"',
'prot_1movedto2' => '[[$1]] dipindahakan ka [[$2]]',
'protect-badnamespace-title' => 'Ngaran-kamar nang kada-dilindungi',
'protect-badnamespace-text' => 'Tutungkaran dalam ngaran-kamar ngini kada kawa dilindungi.',
+'protect-norestrictiontypes-text' => 'Tungkaran ngini kada kawa dilindungi marga kadada janis pambatasan nang tasadia.',
+'protect-norestrictiontypes-title' => 'Tungkaran kada-dilindungi',
'protect-legend' => 'Konpirmasi palindungan',
'protectcomment' => 'Alasan:',
'protectexpiry' => 'Kadaluwarsa:',
'protect-text' => "Pian kawa maniring atawa mangganti tingkatan palindungan gasan tungkaran '''$1''' di sia.",
'protect-locked-blocked' => "Pian kada kawa maubah tingkat parlindungan parhatan diblukir.
Di sia adalah setelan tadamini gasan tungkaran '''$1''':",
-'protect-locked-dblock' => "Tingkat parlindungan kada kawa diubah karana ada sabuah sunduk databasis aktip.
-Di sia adalah setelan tadamini gasan tungkaran '''$1''':",
+'protect-locked-dblock' => "Tingkat palindungan kada kawa diubah marga ada sabuting sunduk databasis aktip.
+Di sia adalah setelan pahanyarnya gasan tungkaran '''$1''':",
'protect-locked-access' => "Akun Pian kada baisi ijin gasan maubah tingkatan palindungan tungkaran.
Di sia adalah pangaturan wayah ini gasan tungkaran '''$1''':",
'protect-cascadeon' => 'Tungkaran ini rahatan dilindungi lantaran diumpatakan dalam {{PLURAL:$1|tungkaran|tungkaran-tungkaran}} barikut nang sudah aktip palindungan barénténgnya.
Pian kawa maubah tingkatan palindungan gasan tungkaran ini, tagal ini kada pacang mangaruhi palindungan barénténg.',
'protect-default' => 'Bulihakan samua pamuruk',
-'protect-fallback' => 'Mamarluakan ijin "$1"',
-'protect-level-autoconfirmed' => 'Blukir pamuruk hanyar wan kada tadaptar',
+'protect-fallback' => 'Hanya gasan pamakai lawan ijin "$1"',
+'protect-level-autoconfirmed' => 'Blukir pamakai hanyar wan kada tadaptar',
'protect-level-sysop' => 'Hanya pambakal',
'protect-summary-cascade' => 'barénténg',
'protect-expiring' => 'kadaluwarsa $1 (UTC)',
'undeletepage' => 'Tiringi wan bulikakan tutungkaran tahapus',
'undeletepagetitle' => "'''Barikut mangandung raralatan tahapus matan [[:$1|$1]]'''.",
'viewdeletedpage' => 'Tiringi tutungkaran tahapus',
-'undeletepagetext' => 'Barikut {{PLURAL:$1|tungkaran sudah dihapus tagal|$1 tutungkaran sudah dihapus tagal}} masih dalam arkip wan kawa disimpan-pulang.
-Arkip kawa dibarasihakan bajangka.',
+'undeletepagetext' => 'Barikut {{PLURAL:$1|tungkaran sudah dihapus tagal|$1 tutungkaran sudah dihapus tagal}} masih dalam arsip wan kawa dibulikakan.
+Arsip kawa dibarasihakan bajangka.',
'undelete-fieldset-title' => 'Mambulikakan ralatan',
-'undeleteextrahelp' => "Hagan manyimpan-pulang sabarataan halam tungkaran, tingalakan samunyaan kutak-pariksa kada-dipilih wan klik '''''{{int:undeletebtn}}'''''.
-Hagan manggawi sabuah simpan-pulang, pariksa kukutak tahubung ka raralatan nang handak disimpan-pulang, wan klik
-'''''{{int:undeletebtn}}'''''.",
+'undeleteextrahelp' => "Hagan mambulikakan sabarataan sajarah halam tungkaran, tinggalakan samunyaan kutak-pariksa kada-dipilih wan klik '''''{{int:undeletebtn}}'''''.
+Hagan manggawi sabuting pambulikan, pariksa kukutak tahubung ka raralatan nang handak dibulikakan, wan klik '''''{{int:undeletebtn}}'''''.",
'undeleterevisions' => "$1 {{PLURAL:$1|ralatan|raralatan}} ta'arsip",
-'undeletehistory' => 'Amun Pian manyimpan-pulang tungkaran ngini, samunyaan raralatan akan tasimpan-pulang ka halamnya.
-Amun sabuah tungkaran puga awan ngaran sama diulah parhatan pahapusan, raralatan nang disimpan-pulang akan cungul dalam halam sabalumnya.',
+'undeletehistory' => 'Amun Pian mambulikakan tungkaran ngini, samunyaan raralatan akan dibulikakan ka sajarah ralatannya.
+Amun sabuting tungkaran hanyar awan ngaran sama diulah parhatan pahapusan, raralatan nang dibulikakan akan cungul dalam sajarah ralatan sabalumnya.',
'undeleterevdel' => 'Lapas-hapusan kada akan digawi amun ngini akan kulihan di tungkaran atas atawa barakas ralatan sapalih tahapus.
Dalam kasus kaini, Pian musti malapas-pariksa atawa lapas-sambunyi pahapusan ralatan pahanyarnya.',
'undeletehistorynoadmin' => 'Tungkaran ngini sudah tahapus.
Naskah aktual pada raralatan pahapusan ngini ada hagan pambakal haja.',
'undelete-revision' => 'Ralatan tahapus matan $1 (pada $4, $5) ulih $3:',
'undeleterevision-missing' => 'Raralatan kada sah atawa hilang.
-Pian kalu-ai baisi tautan buruk, atawa ralatan sudah disimpan-pulang atau dibuang matan arkip.',
+Pian kalu-ai baisi tautan buruk, atawa ralatan sudah dibulikakan atau dibuang matan arsip.',
'undelete-nodiff' => 'Kadada ralatan sabalumnya tatamu.',
'undeletebtn' => 'Bulikakan',
'undeletelink' => 'tiring/bulikakan',
'undeletedfiles' => '$1 {{PLURAL:$1|barakas|babarakas}} dibulikakan',
'cannotundelete' => 'Walang mahapus gagal;
ada urang lain nang badahulu mawalangi pahapusan tungkaran ngini.',
-'undeletedpage' => "'''$1 sudah disimpan-pulang'''
-Janaki [[Special:Log/delete|log pahapusan]] gasan sabuah rakaman matan pahapusan wan panyimpanan-pulang.",
+'undeletedpage' => "'''$1 sudah dibulikakan'''
+Janaki [[Special:Log/delete|log pahapusan]] gasan sabuting rakaman matan pahapusan wan pambulikakan.",
'undelete-header' => 'Janaki [[Special:Log/delete|log pahapusan]] gasan tutungkaran hanyar tahapus.',
'undelete-search-title' => 'Gagai tutungkaran tahapus',
'undelete-search-box' => 'Gagai tutungkaran tahapus',
# Namespace form on various pages
'namespace' => 'Ngaran-kamar:',
'invert' => 'Bulikakan pilihan',
-'tooltip-invert' => 'Pariksa kutak ngini hagan manyungkupakan parubahan tutungkaran dalam ngaran-kamar tapilih (wan ngaran-kamar tarait anub dipariksa)',
+'tooltip-invert' => 'Pariksa kutak ngini hagan manyungkupakan paubahan tutungkaran dalam ruang-ngaran tapilih (wan ruang-ngaran tarait jaka dipariksa)',
'namespace_association' => 'Ngaran-kamat tarait',
'tooltip-namespace_association' => 'Pariksa kutak ngini hagan maumpatakan jua ngarn-kamar pamandiran atawa judul tarait awan ngaran-kamar tapilih',
'blanknamespace' => '(Tatambaian)',
'contributions-title' => 'Sumbangan pamakai gasan $1',
'mycontris' => 'Sumbangan ulun',
'contribsub2' => 'Gasan $1 ($2)',
-'nocontribs' => 'Kadada parubahan taugai parsis awan karitaria ngini.',
+'nocontribs' => 'Kadada paubahan nang rasuk lawan syarat itu.',
'uctop' => ' (atas)',
'month' => 'Matan bulan (wan sabalumnya):',
'year' => 'Matan tahun (wan sabalumnya):',
# Move page
'move-page' => 'Pindahakan $1',
'move-page-legend' => 'Pindahakan tungkaran',
-'movepagetext' => "Mamuruk purmulir di bawah akan mangganti ngaran sabuah tungkaran, mamindahakan samunyaan halam ka ngaran nang hanyar. Judul lawas akan jadi sabuah tungkaran paugahan ka judul hanyar. Pian kawa mahanyari bahwasanya paugahan-paugahan manuju ka judul nang samustinya langsung. Amun kada, pastiakan pariksa gasan [[Special:DoubleRedirects|ganda]] atawa [[Special:BrokenRedirects|paugahan pagat]]. Pian batanggung jawab gasan mamastiakan tautan-tautan tatarusan manuju ka mana nang samustinya.
+'movepagetext' => "Mamakai purmulir di bawah akan mangganti ngaran sabuting tungkaran, mamindahakan samunyaan halam ka ngaran nang hanyar. Judul lawas akan jadi sabuting tungkaran paugahan ka judul hanyar. Pian kawa mahanyari bahwasanya paugahan-paugahan manuju ka judul nang samustinya langsung. Amun kada, pastiakan pariksa gasan [[Special:DoubleRedirects|ganda]] atawa [[Special:BrokenRedirects|paugahan pagat]]. Pian batanggung jawab gasan mamastiakan tautan-tautan tatarusan manuju ka mana nang samustinya.
-Catatan bahwasanya tungkaran '''kada''' akan tapindah amun sudah ada tungkaran nang bangaran hanyar ngitu, kacuali amun tungkaran itu puang atawa sabuah paugahan wan kadada halam babakan.
+Catatan bahwasanya tungkaran '''kada''' akan tapindah amun sudah ada tungkaran nang bangaran hanyar ngitu, kacuali amun tungkaran itu puang atawa sabuting paugahan wan kadada halam babakan.
'''Paringatan!'''
-Ini kawa maakibatakan parubahan kada taduga wan drastis gasan sabuah tungkaran rami; muhun mamastiakan Pian paham akibatnya sabalum manarusakan.",
-'movepagetext-noredirectfixer' => "Mamuruk purmulir di bawah akan mangganti ngaran sabuah tungkaran, mamindahakan samunyaan halam ka ngaran nang hanyar.
-Judul lawas akan jadi sabuah tungkaran paugahan ka judul hanyar.
+Ini kawa maakibatakan paubahan kada taduga wan drastis gasan sabuting tungkaran rami; muhun mamastiakan Pian paham akibatnya sabalum manarusakan.",
+'movepagetext-noredirectfixer' => "Mamakai purmulir di bawah akan mangganti ngaran sabuting tungkaran, mamindahakan samunyaan halam ka ngaran nang hanyar.
+Judul lawas akan jadi sabuting tungkaran paugahan ka judul hanyar.
Pastiakan pariksa gasan [[Special:DoubleRedirects|ganda]] atawa [[Special:BrokenRedirects|paugahan pagat]].
Pian batanggung jawab gasan mamastiakan tautan-tautan tatarusan manuju ka mana nang samustinya.
Catatan bahwasanya tungkaran '''kada''' akan tapindah amun sudah ada tungkaran nang bangaran hanyar ngitu, kacuali amun tungkaran itu puang atawa sabuah paugahan wan kadada halam babakan.
'''Paringatan!'''
-Ini kawa maakibatakan parubahan kada taduga wan drastis gasan sabuah tungkaran rami;
+Ini kawa maakibatakan paubahan kada taduga wan drastis gasan sabuah tungkaran rami;
muhun mamastiakan Pian paham akibatnya sabalum manarusakan.",
'movepagetalktext' => "Tungkaran pamandiran tarait akan langsung dipindahakan baimbai wan ini '''kacuali amun:'''
*Sabuah tungkaran pamandiran nang kada puang sudah baisi awan judul hanyar, atawa
'newtitle' => 'Ka judul hanyar:',
'move-watch' => 'Itihi tungkaran asal mula wan tungkaran tujuan',
'movepagebtn' => 'Pindahakan tungkaran',
-'pagemovedsub' => 'Pamindahan ruhui',
+'pagemovedsub' => 'Sudah dipindah',
'movepage-moved' => '\'\'\'"$1" sudah dipindahakan ka "$2"\'\'\'',
'movepage-moved-redirect' => 'Tungkaran paugahan sudah diulah.',
'movepage-moved-noredirect' => 'Paulahan sabuah paugahan ditikin.',
'immobile-target-namespace-iw' => 'Tautan interwiki adalah lainan sabuah tujuan sah gasan mamindahakan tungkaran.',
'immobile-source-page' => 'Tungkaran ngini kada kawa dipindahakan.',
'immobile-target-page' => 'Kada kawa mamindahakan ka judul tujuan ngitu.',
+'bad-target-model' => "Tujuan nang dihandaki mengguna'akan model konten nang babida. Kada kawa mamindah matan $1 gasan $2 .",
'imagenocrossnamespace' => 'Kada kawa mamindahakan barakas ka ngaran-kamar lainan-barakas.',
'nonfile-cannot-move-to-file' => 'Kada kawa mamindahakan lainan-barakas ka ngaran-kamar barakas',
'imagetypemismatch' => 'Ekstensi barakas hanyar kada cucuk lawa macamnya.',
Hagan ma-ikspur tutungkaran, buati judul dalam kutak naskah di bawah, asa judul par garis, wan pilihi nang mana Pian handak ralatan tadamini nangkaitu jua samunyaan raralatan lawas, awan garis tungkaran halam, atawa ralatan tadamini awan panjalasan pasal babakan ta-uncit.
-Dalam kasus tahanyar Pian kawa jua mamuruk sabuah tautanm gasan cuntuh [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] gasan tungkaran "[[{{MediaWiki:Mainpage}}]]".',
+Dalam kasus pahanyarnya Pian kawa jua mamuruk sabuah tautanm gasan cuntuh [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] gasan tungkaran "[[{{MediaWiki:Mainpage}}]]".',
'exportall' => 'Ekspor samunyaan tungkaran.',
'exportcuronly' => 'Tamasuk ralatan tadamini haja, kada sahibakan halam',
'exportnohistory' => "----
# Special:Import
'import' => 'Pamasuk tungkaran',
'importinterwiki' => 'Impur transwiki',
-'import-interwiki-text' => 'Pilihi sabuah wiki wan judul tungkaran hagan di-impur.
+'import-interwiki-text' => 'Pilihi sabuting wiki wan judul tungkaran hagan di-impor.
Tanggal raralatan wan ngaran pambabak akan di partahanakan.
Samunyaan gawi impur transwiki akan dicatat pada [[Special:Log/import|log impur]].',
'import-interwiki-source' => 'Wiki/tungkaran asal mula:',
'import-interwiki-templates' => 'Tamasuk samunyaan cicitakan',
'import-interwiki-submit' => 'Impur',
'import-interwiki-namespace' => 'Ngaran-kamar tujuan:',
+'import-interwiki-rootpage' => 'Tungkaran turunan tujuan (opsional):',
'import-upload-filename' => 'Ngaran barakas:',
'import-comment' => 'Kumintar:',
'importtext' => 'Muhun ma-ikspur tungkaran matan asal mula wiki mamuruk [[Special:Export|sarana ikspur]].
'tooltip-pt-mytalk' => 'Tungkaran pamandiran Pian',
'tooltip-pt-anontalk' => 'Pamandiran pasal bababakan matan alamat IP ngini',
'tooltip-pt-preferences' => 'Nang Pian katuju',
-'tooltip-pt-watchlist' => 'Daptar tungkaran-tungkaran nang Pian itihi parubahannya',
+'tooltip-pt-watchlist' => 'Daptar tungkaran-tungkaran nang Pian itihi paubahannya',
'tooltip-pt-mycontris' => 'Daptar sumbangan Pian',
'tooltip-pt-login' => 'Pian sabaiknya babuat ka dalam log; tagal ngini kada kawajiban pang',
'tooltip-pt-anonlogin' => 'Pian sabaiknya babuat ka dalam log; tagal ini kada kawajiban pang',
'tooltip-ca-nstab-help' => 'Tiringi tungkaran patulung',
'tooltip-ca-nstab-category' => 'Lihati tungkaran tumbung',
'tooltip-minoredit' => 'Tandai ini sabagai sabuah pambabakan sapalih',
-'tooltip-save' => 'Simpan parubahan Pian',
-'tooltip-preview' => 'Tilik parubahan Pian, muhun pakai ngini sabalum manyimpan!',
-'tooltip-diff' => 'Tampaiakan nang apa parubahan nang Pian ulah',
+'tooltip-save' => 'Simpan paubahan Pian',
+'tooltip-preview' => 'Tilik paubahan Pian, muhun pakai ngini sabalum manyimpan!',
+'tooltip-diff' => 'Tampaiakan nang apa paubahan nang Pian ulah',
'tooltip-compareselectedversions' => 'Lihati nang balain antara dua ralatan tungkaran tapilih ngini',
'tooltip-watch' => 'Tambahakan tungkaran ini ka daptar itihan Pian',
+'tooltip-watchlistedit-normal-submit' => 'Hapus judul',
+'tooltip-watchlistedit-raw-submit' => 'Hanyari daptar itihan',
'tooltip-recreate' => 'Ulah pulang tungkaran biar gin suah dihapus',
'tooltip-upload' => 'Mulai pangunggahan',
'tooltip-rollback' => 'Bulikakan ka babakan-babakan tungkaran ngini matan panyumbang tauncit dalam sakali klik.',
'spambot_username' => 'Pambarasihan spam MediaWiki',
'spam_reverting' => 'Mambulikakan ka ralatan tauncit nang kada mangandung tatautan ka $1',
'spam_blanking' => 'Samunyaan raralatan mangandung tatautan ka $1, dikusungakan',
+'spam_deleting' => 'Samunyaan raralatan nang isinya tatautan ka $1, dipuangakan',
# Info page
'pageinfo-title' => "Panjalasan gasan ''$1''",
-'pageinfo-header-edits' => 'Babakan',
+'pageinfo-not-current' => 'Maaf, kada mungkin mambariakan maklumat ngini ka ralatan lawas.',
+'pageinfo-header-basic' => 'Maklumat pandal',
+'pageinfo-header-edits' => 'Sajarah babakan',
+'pageinfo-header-restrictions' => 'Palindungan tungkaran',
+'pageinfo-header-properties' => 'Properti tungkaran',
+'pageinfo-display-title' => 'Judul tampilan',
+'pageinfo-default-sort' => 'Kunci urut baku',
+'pageinfo-length' => 'Panjang tungkaran (dalam bita)',
+'pageinfo-article-id' => 'ID Tungkaran',
+'pageinfo-language' => 'Bahasa isi tungkaran',
+'pageinfo-robot-policy' => 'Status masin panggagai',
+'pageinfo-robot-index' => 'Kawa diindeks',
+'pageinfo-robot-noindex' => 'Kada kawa diindeks',
'pageinfo-views' => 'Rikinan titiringan',
-'pageinfo-watchers' => 'Jumlah papaitih',
+'pageinfo-watchers' => 'Jumlah pa-itih tungkaran',
+'pageinfo-few-watchers' => 'Kurang matan $1 {{PLURAL:$1|pa-ilang}}',
+'pageinfo-redirects-name' => 'Paugahan ka tungkaran ngini',
+'pageinfo-subpages-name' => 'Subtungkaran tungkaran ngini',
+'pageinfo-subpages-value' => '$1 ($2 {{PLURAL:$2|paugahan|paugahan}}; $3 {{PLURAL:$3|non-paugahan|non-paugahan}})',
+'pageinfo-firstuser' => 'Pa-ulah tungkaran',
+'pageinfo-firsttime' => 'Tanggal paulahan tungkaran',
+'pageinfo-lastuser' => 'Pambabak pauncitnya',
+'pageinfo-lasttime' => 'Tanggal babakan pauncitnya',
'pageinfo-edits' => 'Rikinan babakan',
-'pageinfo-authors' => 'Rikinan panulis balain',
+'pageinfo-authors' => 'Rikinan panulis nang balain',
+'pageinfo-recent-edits' => 'Jumlah babakan damini (dalam $1 pauncitnya)',
+'pageinfo-recent-authors' => 'Jumlah panulis nang babida damini',
+'pageinfo-magic-words' => '{{PLURAL:$1|Kata|Kata}} ajaib ($1)',
+'pageinfo-hidden-categories' => '{{PLURAL:$1|tumbung|tutumbung}}',
+'pageinfo-templates' => '{{PLURAL:$1|Citakan|Citakan}} nang ditransklusi ($1)',
+'pageinfo-transclusions' => '{{PLURAL:$1|Tungkaran|Tutungkaran}} ditransklusikan pada ( $1 )',
+'pageinfo-toolboxlink' => 'Maklumat tungkaran',
+'pageinfo-redirectsto' => 'Ba-ugah ka',
+'pageinfo-redirectsto-info' => 'Maklumat',
+'pageinfo-contentpage' => 'Dirikin sabagai tungkaran isi',
+'pageinfo-contentpage-yes' => 'Ya',
+'pageinfo-protect-cascading' => 'Palindungan baurutan matan sini',
+'pageinfo-protect-cascading-yes' => 'Ya',
+'pageinfo-protect-cascading-from' => 'Palindungan mulai matan',
+'pageinfo-category-info' => 'Tumbung maklumat',
+'pageinfo-category-pages' => 'Jumlah tungkaran',
+'pageinfo-category-subcats' => 'Jumlah subtumbung',
+'pageinfo-category-files' => 'Jumlah babarakas',
# Patrolling
'markaspatrolleddiff' => 'Ciri-i sawagai ta-awasi',
'markaspatrolledtext' => 'Ciri-i tungkaran ngini sawagai ta-awasi',
'markedaspatrolled' => 'taciri-i sawagai ta-awasi',
'markedaspatrolledtext' => 'Ralatan tapilih matan [[:$1]] sudah diciri-i sawagai ta-awasi.',
-'rcpatroldisabled' => 'Parubahan pangawasan tadamini dipajahakan.',
-'rcpatroldisabledtext' => 'Pitur parubahan pangawasan tadamini parhatan ni dipajahakan.',
+'rcpatroldisabled' => 'Pangawasan paubahan pahanyarnya dipajahakan.',
+'rcpatroldisabledtext' => 'Fitur paubahan pangawasan pahanyarnya parhatan ni dipajahakan.',
'markedaspatrollederror' => 'Kada kawa diciri-i sawagai ta-awasi',
'markedaspatrollederrortext' => 'Pian parlu manantuakan sabuah ralatan hagan diciri-i sawagai ta-awasi.',
-'markedaspatrollederror-noautopatrol' => 'Pian kada dibulihakan manyiri-i parubahan Pian surang sawagai ta-awasi.',
+'markedaspatrollederror-noautopatrol' => 'Pian kada dibulihakan manyiri-i paubahan Pian surang sawagai ta-awasi.',
+'markedaspatrollednotify' => 'Paubahan ngini gasan $1 hudah ditandai ta-itihi.',
+'markedaspatrollederrornotify' => 'Manandai sabagai paitihan nang gagal.',
# Patrol log
'patrol-log-page' => 'Log pa-awasan',
# Browsing diffs
'previousdiff' => '← Ralatan talawas',
-'nextdiff' => 'Ralatan tahanyar →',
+'nextdiff' => 'Ralatan labih hanyar →',
# Media information
'mediawarning' => "'''Paringatan''': Barakas ngini pinanya mangandung kudi babahaya.
'exif-primarychromaticities' => 'Krumatisitas matan warna primar',
'exif-ycbcrcoefficients' => 'Kuipisian kamar kelir transpurmasi matriks',
'exif-referenceblackwhite' => 'Nilai rujukan sapasang hirang wan putih',
-'exif-datetime' => 'Tanggal wan wayah parubahan barakas',
+'exif-datetime' => 'Tanggal wan wayah paubahan barakas',
'exif-imagedescription' => 'Judul gambar',
'exif-make' => 'Pabrikan kudakan',
'exif-model' => 'Mudil kudakan',
Cubai titilikan nurmal.',
# Friendlier slave lag warnings
-'lag-warn-normal' => 'Parubahan tahanyar pada $1 {{PLURAL:$1|ditik|diditik}} pinanya kada cungul di daptar ngini.',
-'lag-warn-high' => 'Karana pancaunya kalambatan sarvar databasis, parubahan tahanyar pada {{PLURAL:$1|datik|dadatik}} pina kada ditampaiakan dalam daptar ngini.',
+'lag-warn-normal' => 'Paubahan pahanyarnya pada $1 {{PLURAL:$1|ditik|diditik}} pinanya kada cungul di daptar ngini.',
+'lag-warn-high' => 'Marga pancaunya kalambatan server databasis, paubahan pahanyarnya pada {{PLURAL:$1|datik|dadatik}} pina kada ditampaiakan dalam daptar ngini.',
# Watchlist editor
'watchlistedit-numitems' => 'Daptar itihan Pian baisi {{PLURAL:$1|1 judul|$1 judul}}, kada tabuat tutungkaran pamandiran.',
'watchlistedit-raw-removed' => '{{PLURAL:$1|1 judul|$1 jujudul}} dibuangi:',
# Watchlist editing tools
-'watchlisttools-view' => 'Tampaiakan parubahan tarait',
+'watchlisttools-view' => 'Tampaiakan paubahan tarait',
'watchlisttools-edit' => 'Tiringi wan babak daptar itihan',
'watchlisttools-raw' => 'Babak daptar itihan mantah',
'version-license' => 'Lisansi',
'version-poweredby-credits' => "Wiki ngini disukung ulih '''[//www.mediawiki.org/ MediaWiki]''', hak salin © 2001-$1 $2.",
'version-poweredby-others' => 'lainnya',
-'version-license-info' => 'MediaWiki adalah parangkat lunak bibas; Pian kawa manyabarakan wan/atawa maubahi ngini di bawah syarat Lisansi Publik Umum sawagai tarbitan ulih Free Software Foundation; apakah Lisansi virsi 2, atawa (pilihan Pian) tahanyar.
+'version-credits-summary' => 'Kami ingin ma-akui urang-urang ini atas sumbangan pikiran-tanaga kapada [[Special:Version|MediaWiki]].',
+'version-license-info' => 'MediaWiki adalah parangkat lunak bibas; Pian kawa manyabarakan wan/atawa maubahi ngini di bawah syarat Lisansi Publik Umum sawagai tarbitan ulih Free Software Foundation; apakah Lisansi virsi 2, atawa (pilihan Pian) pahanyarnya.
MediaWiki disabarakan awan harapan akan baguna, tagal KADA BAJAMINAN; kada jaminan PANIAGAAN atawa KATAPATAN HAGAN TUJUAN TARTANTU. Janaki Lisansi Publik Umum GNU gasan panjalasan rinci.
-Pian saharusnya [{{SERVER}}{{SCRIPTPATH}}/COPYING sabuah salinan Lisansi Publik Umum GNU] baimbai awan prugram ngini; amun kada, tulis ka Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA atawa [//www.gnu.org/licenses/old-licenses/gpl-2.0.html baca ngini daring].',
+Pian saharusnya [{{SERVER}}{{SCRIPTPATH}}/COPYING sabuting salinan Lisansi Publik Umum GNU] baimbai awan prugram ngini; amun kada, tulis ka Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA atawa [//www.gnu.org/licenses/old-licenses/gpl-2.0.html baca ngini daring].',
'version-software' => 'Parangkat lunak tapasang',
'version-software-product' => 'Produk',
'version-software-version' => 'Virsi',
'specialpages-group-maintenance' => 'Lapuran pamaliharaan',
'specialpages-group-other' => 'Tungkaran istimiwa lainnya',
'specialpages-group-login' => 'Babuat log / mandaptar',
-'specialpages-group-changes' => 'Parubahan tahanyar wan log',
+'specialpages-group-changes' => 'Paubahan pahanyarnya wan log',
'specialpages-group-media' => 'Lapuran wan pamuatan barakas',
'specialpages-group-users' => 'Pamuruk wan hak pamuruk',
'specialpages-group-highuse' => 'Tungkaran pamakaian tinggi',
#Handak samunyaan fragmen regex di atas baris ngini. Tinggalakan baris ngini parsis kaya ngini haja </pre>',
# Special:Tags
-'tags' => 'Tag parubahan sah',
+'tags' => 'Tag paubahan sah',
'tag-filter' => 'Saringan [[Special:Tags|Tag]]:',
'tag-filter-submit' => 'Saringan',
'tags-title' => 'Gantungan',
'tags-intro' => 'Tungkaran ngini mandaptar gantungan nang diciri-i parangkat lunak sabuah babakan, wan artinya.',
'tags-tag' => 'Gantungan ngaran',
-'tags-display-header' => 'Pancungulan pada daptar parubahan.',
+'tags-display-header' => 'Pancungulan pada daptar paubahan.',
'tags-description-header' => 'Diskripsi hibak matan arti',
'tags-hitcount-header' => 'Gantungan diganti',
'tags-edit' => 'babak',
-'tags-hitcount' => '$1 {{PLURAL:$1|parubahan|paparubahan}}',
+'tags-hitcount' => '$1 {{PLURAL:$1|paubahan|paubahan}}',
# Special:ComparePages
'comparepages' => 'Bandingakan tutungkaran',
'htmlform-int-toohigh' => 'Nilai nang Pian ajuakan kapancauan pada maksimal $1',
'htmlform-required' => 'Nilai ngini nang diparluakan',
'htmlform-submit' => 'Kirim',
-'htmlform-reset' => 'Walangi parubahan',
+'htmlform-reset' => 'Walangi paubahan',
'htmlform-selectorother-other' => 'Lain-lain',
# SQLite database support
'listusers-noresult' => 'কোন ব্যবহারকারী খুঁজে পাওয়া যায়নি।',
'listusers-blocked' => '(ব্লককৃত)',
-# Special:ActiveUsers
-'activeusers' => 'সক্রিয় ব্যবহারকারী তালিকা',
-'activeusers-intro' => 'এটি ব্যবহারকারী তালিকা যাদের $1 {{PLURAL:$1|দিনে|দিনে}} যেকোন কর্মকান্ড রয়েছে।',
-'activeusers-count' => 'গত {{PLURAL:$3|দিনে|$3 দিনে}} সর্বমোট {{PLURAL:$1|কর্মকাণ্ডের|কর্মকাণ্ডের}} সংখ্যা $1',
-'activeusers-from' => 'ব্যবহারকারী দেখাও যাদের নাম এই অক্ষর দিয়ে শুরু:',
-'activeusers-hidebots' => 'বট লুকাও',
-'activeusers-hidesysops' => 'প্রশাসক লুকাও',
-'activeusers-noresult' => 'কোনো ব্যবহারকারী পাওয়া যায়নি।',
-
# Special:ListGroupRights
'listgrouprights' => 'দলগত ব্যবহারকারী অধিকার',
'listgrouprights-summary' => 'এই উইকির ব্যবহারকারীদের একটি গ্রুপগুলোর তালিকা দেখানো হচ্ছে, সাথে গ্রুপের কার্যপরিধিও উল্লেখ করা হয়েছে।
'gotaccount' => 'Ja teniu un compte? $1.',
'gotaccountlink' => 'Inicia una sessió',
'userlogin-resetlink' => "Heu oblidat les vostres dades d'accés?",
-'createaccountmail' => 'per correu electrònic',
+'createaccountmail' => "Utilitza una contrasenya aleatòria temporal i envia-la a l'adreça de correu electrònic especificat a continuació",
'createaccountreason' => 'Motiu:',
'badretype' => 'Les contrasenyes que heu introduït no coincideixen.',
'userexists' => 'El nom que heu entrat ja és en ús.
Inicieu una sessió després que la rebeu.",
'blocked-mailpassword' => 'La vostra adreça IP ha estat blocada. Se us ha desactivat la funció de recuperació de contrasenya per a prevenir abusos.',
'eauthentsent' => "S'ha enviat un correu electrònic a la direcció especificada. Abans no s'envïi cap altre correu electrònic a aquesta adreça, cal verificar que és realment vostra. Per tant, cal que seguiu les instruccions presents en el correu electrònic que se us ha enviat.",
-'throttled-mailpassword' => "Ja se us ha enviat un recordatori de contrasenya en {{PLURAL:$1|l'última hora|les últimes $1 hores}}. Per a prevenir abusos, només s'envia un recordatori de contrasenya cada {{PLURAL:$1|hora|$1 hores}}.",
+'throttled-mailpassword' => "Ja se us ha enviat un correu electrònic de reinicialització de contrasenya en {{PLURAL:$1|l'última hora|les últimes $1 hores}}.
+Per a prevenir abusos, només s'envia un correu electrònic de reinicialització de contrasenya cada {{PLURAL:$1|hora|$1 hores}}.",
'mailerror' => "S'ha produït un error en enviar el missatge: $1",
'acct_creation_throttle_hit' => "Des de la vostra adreça IP ja {{PLURAL:$1|s'ha creat un compte|s'han creat $1 comptes}} en l'últim dia i aquest és el màxim permès en aquest wiki per aquest període de temps.
Així, des d'aquesta adreça IP no es poden crear més comptes actualment.",
'emailauthenticated' => "S'ha autenticat la vostra adreça electrònica el $2 a les $3.",
'emailnotauthenticated' => 'La vostra adreça de correu electrònic <strong>encara no està autenticada</strong>. No rebrà cap missatge de correu electrònic per a cap de les següents funcionalitats.',
-'noemailprefs' => 'Especifiqueu una adreça electrònica per a activar aquestes característiques.',
+'noemailprefs' => 'Especifiqueu una adreça electrònica per activar aquestes característiques.',
'emailconfirmlink' => 'Confirmeu la vostra adreça electrònica',
'invalidemailaddress' => "No es pot acceptar l'adreça electrònica perquè sembla que té un format no vàlid.
Introduïu una adreça amb un format adequat o bé buideu el camp.",
# Special:PasswordReset
'passwordreset' => 'Restablir contrasenya',
-'passwordreset-text' => 'Completeu el següent formulari per rebre un recordatori per correu electrònic amb els detalls del vostre compte.',
+'passwordreset-text' => 'Completeu el següent formulari per reinicialitzar la vostra contrasenya',
'passwordreset-legend' => 'Restablir contrasenya',
'passwordreset-disabled' => "S'ha desactivat el restabliment de contranyes en aquest wiki.",
'passwordreset-pretext' => '{{PLURAL:$1||Introduïu un dels elements de dades següents}}',
'passwordreset-capture-help' => "Si marqueu aquesta casella, el missatge de correu electrònic (amb la contrasenya temporal) es mostrarà al mateix moment que sigui enviat a l'usuari.",
'passwordreset-email' => 'Adreça de correu electrònic:',
'passwordreset-emailtitle' => 'Detalls del compte a {{SITENAME}}',
-'passwordreset-emailtext-ip' => "Algú (vós mateix segurament, des de l'adreça IP $1) ha demanat un recordatori dels detalls dels vostres comptes al projecte {{SITENAME}} ($4). {{PLURAL:$3|El següent compte d'usuari està associat|Els següents comptes d'usuari estan associats}} amb aquesta adreça de correu electrònic:
+'passwordreset-emailtext-ip' => "Algú (vós mateix segurament, des de l'adreça IP $1) ha demanat una reinicialització de la vostra contrasenya al projecte {{SITENAME}} ($4). {{PLURAL:$3|El següent compte d'usuari està associat|Els següents comptes d'usuari estan associats}} amb aquesta adreça de correu electrònic:
$2
{{PLURAL:$3|Aquesta contrasenya temporal caducarà|Aquestes contrasenyes temporals caducaran}} en {{PLURAL:$5|un dia|$5 dies}}.
Hauríeu d'entrar al compte per a fixar-hi una nova contrasenya al més aviat possible. Si algú que no sou vós és qui ha fet aquesta petició o si heu recordat la contrasenya original i ja no la voleu canviar, podeu ignorar aquest missatge i seguir utilitzant la vostra antiga contrasenya.",
-'passwordreset-emailtext-user' => "L'usuari $1 de {{SITENAME}} ha demanat un recordatori dels detalls dels vostres comptes al projecte {{SITENAME}} <$4>. {{PLURAL:$3|El següent compte d'usuari està associat|Els següents comptes d'usuari estan associats}} amb aquesta adreça de correu electrònic:
+'passwordreset-emailtext-user' => "L'usuari $1 de {{SITENAME}} ha demanat una reinicialització de la vostra contrasenya per al projecte {{SITENAME}} ($4). {{PLURAL:$3|El següent compte d'usuari està associat|Els següents comptes d'usuari estan associats}} amb aquesta adreça de correu electrònic:
$2
{{PLURAL:$3|Aquesta contrasenya temporal caducarà|Aquestes contrasenyes temporals caducaran}} en {{PLURAL:$5|un dia|$5 dies}}.
-Hauríeu d'entrar {{PLURAL:$3|al compte per a fixar-hi una nova contrasenya|als comptes per a fixar-hi noves contrasenyes}} al més aviat possible. Si algú que no sou vós és qui ha fet aquesta petició o si heu recordat la contrasenya original i ja no la voleu canviar, podeu ignorar aquest missatge i seguir utilitzant la vostra antiga contrasenya.",
+Hauríeu d'entrar ara per fixar una nova contrasenya. Si algú que no sou vós és qui ha fet aquesta petició o si heu recordat la contrasenya original i ja no la voleu canviar, podeu ignorar aquest missatge i seguir utilitzant la vostra antiga contrasenya.",
'passwordreset-emailelement' => "Nom d'usuari: $1
Contrasenya temporal: $2",
-'passwordreset-emailsent' => "S'ha enviat un correu de recordatori.",
-'passwordreset-emailsent-capture' => "S'ha enviat un recordatori per correu electrònic, tal com es mostra a continuació.",
-'passwordreset-emailerror-capture' => "S'ha generat un missatge recordatori de correu electrònic, que es mostra a continuació, però ha fallat l'enviament a l'usuari: $1",
+'passwordreset-emailsent' => "S'ha enviat un correu de reinicialització de contrasenya.",
+'passwordreset-emailsent-capture' => "S'ha enviat un correu electrònic de reinicialització de contrasenya, tal com es mostra a continuació.",
+'passwordreset-emailerror-capture' => "S'ha generat un correu electrònic de reinicialització de contrasenya, que es mostra a continuació, però ha fallat l'enviament a l'usuari: $1",
# Special:ChangeEmail
'changeemail' => 'Canvi de correu electrònic',
És possible que hagin d'enllaçar a una altra pàgina més apropiada.<br />
Una pàgina es tracta com de desambiguació si utilitza una plantilla que està enllaçada a [[MediaWiki:Disambiguationspage]].",
+'pageswithprop' => 'Pàgines amb una propietat de pàgina',
+'pageswithprop-legend' => 'Pàgines amb una propietat de pàgina',
+'pageswithprop-text' => 'Aquesta pàgina llista les pàgines que utilitzen una propietat de pàgina en particular.',
+'pageswithprop-prop' => 'Nom de la propietat:',
+'pageswithprop-submit' => 'Vés',
+
'doubleredirects' => 'Redireccions dobles',
'doubleredirectstext' => 'Aquesta pàgina llista les pàgines que redirigeixen a altres pàgines de redirecció.
Cada fila conté enllaços a la primera i segona redireccions, així com el destí de la segona redirecció, què generalment és la pàgina destí "real", a la què hauria d\'apuntar la primera redirecció.
'listusers-noresult' => "No s'han trobat coincidències de noms d'usuaris. Si us plau, busqueu també amb variacions per majúscules i minúscules.",
'listusers-blocked' => '({{GENDER:$1|blocat|blocada}})',
-# Special:ActiveUsers
-'activeusers' => "Llista d'usuaris actius",
-'activeusers-intro' => "Aquí hi ha una llista d'usuaris que han tingut algun tipus d'activitat en {{PLURAL:$1|el darrer dia|els darrers $1 dies}}.",
-'activeusers-count' => '$1 {{PLURAL:$1|modificació|modificacions}} en {{PLURAL:$3|el darrer dia|els $3 darrers dies}}',
-'activeusers-from' => 'Mostra els usuaris començant per:',
-'activeusers-hidebots' => 'Amaga bots',
-'activeusers-hidesysops' => 'Amaga administradors',
-'activeusers-noresult' => "No s'han trobat usuaris.",
-
# Special:ListGroupRights
'listgrouprights' => "Drets dels grups d'usuaris",
'listgrouprights-summary' => "A continuació hi ha una llista dels grups d'usuaris definits en aquest wiki, així com dels seus drets d'accés associats.
'pageinfo-protect-cascading-from' => 'Proteccions en cascada des de',
# Skin names
-'skinname-standard' => 'Clàssic',
-'skinname-nostalgia' => 'Nostàlgia',
'skinname-cologneblue' => 'Colònia blava',
# Patrolling
'logentry-move-move_redir-noredirect' => '$1 ha desplaçat la pàgina $3 a $4 on hi havia una redirecció i sense crear una nova redirecció',
'logentry-patrol-patrol' => '$1 ha marcat la versió $4 de la pàgina $3 com a patrullada',
'logentry-patrol-patrol-auto' => '$1 ha marcat automàticament la versió $4 de la pàgina $3 com a patrullada',
-'logentry-newusers-newusers' => "S'ha creat el compte d'usuari $1",
-'logentry-newusers-create' => "S'ha creat el compte d'usuari $1",
-'logentry-newusers-create2' => "$1 ha creat el compte d'usuari $3",
-'logentry-newusers-autocreate' => "El compte d'usuari $1 ha estat creat de manera automàtica",
-'logentry-rights-rights' => '$1 ha canviat la pertinença de grups per $3 de $4 a $5',
-'logentry-rights-rights-legacy' => '$1 ha canviat la pertinença de grups per $3',
-'logentry-rights-autopromote' => '$1 ha estat promogut automàticament de $4 a $5',
+'logentry-newusers-newusers' => "El compte d'usuari $1 {{GENDER:$2|ha estat creat}}",
+'logentry-newusers-create' => "El compte d'usuari $1 {{GENDER:$2|ha estat creat}}",
+'logentry-newusers-create2' => "El compte d'usuari $3 {{GENDER:$2|ha estat creat}} per $1",
+'logentry-newusers-byemail' => "El compte d'usuari $3 {{GENDER:$2|ha estat creat}} per $1 i la contrasenya ha estat enviada per correu electrònic",
+'logentry-newusers-autocreate' => "El compte d'usuari $1 {{GENDER:$2|ha estat creat}} automàticament",
+'logentry-rights-rights' => '$1 {{GENDER:$2|ha canviat}} la pertinença de grup per $3 de $4 a $5',
+'logentry-rights-rights-legacy' => '$1 {{GENDER:$2|ha canviat}} la pertinença de grup per $3',
+'logentry-rights-autopromote' => '$1 ha estat {{GENDER:$2|promogut}} automàticament de $4 a $5',
'rightsnone' => '(cap)',
# Feedback
'api-error-ok-but-empty' => 'Error intern: no hi ha resposta del servidor.',
'api-error-overwrite' => 'No està permès sobreescriure un fitxer existent.',
'api-error-stashfailed' => 'Error intern: el servidor no ha pogut emmagatzemar fitxers temporals.',
+'api-error-publishfailed' => 'Error intern: el servidor no ha pogut publicar el fitxer temporal.',
'api-error-timeout' => 'El servidor no ha respost en el temps esperat.',
'api-error-unclassified' => "S'ha produït un error desconegut",
'api-error-unknown-code' => 'Error desconegut: «$1»',
'tog-previewontop' => 'پێشبینین بەرلە چوارچێوەی دەستکاری نیشان بدە',
'tog-previewonfirst' => 'لە یەکەم دەستکاری دا پێشبینین نیشان بدە',
'tog-nocache' => 'کاشکردنی پەڕەکانی وێبگەڕەکە لەکاربخە',
-'tog-enotifwatchlistpages' => 'ئÛ\8cÙ\85Û\95Û\8cÙ\84Ù\85 بÛ\86 بÙ\86Û\8eرÛ\95 کاتÛ\8eÚ© Ù¾Û\95Ú\95Û\95Û\8cÛ\95Ú© Û\8cاÙ\86 Ù¾Û\95Ú\95Ú¯Û\95Û\8cÛ\95Ú© Ù\84Û\95 Ù\84Û\8cستÛ\8c Ú\86اÙ\88دÛ\8eÚ\95Û\8cÛ\8cÛ\95کاÙ\86Ù\85دا Ú¯Û\86Ú\95درا',
-'tog-enotifusertalkpages' => 'ئÛ\95Ú¯Û\95ر Ù¾Û\95Ú\95Û\95Û\8c Ù\88تÙ\88Ù\88Û\8eÚ\98ەکەم گۆڕدرا ئیمەیلم بۆ بنێرە',
+'tog-enotifwatchlistpages' => 'ئÛ\95Ú¯Û\95ر Ù¾Û\95Ú\95Û\95 Û\8cاÙ\86 Ù¾Û\95Ú\95Ú¯Û\95Û\8cÛ\95Ú© Ù\84Û\95 Ù¾Û\8eرستÛ\8c Ú\86اÙ\88دÛ\8eÛ\8cÛ\8cÛ\8cÛ\95کاÙ\86Ù\85دا Ú¯Û\86Ú\95درا ئÛ\8cÙ\85Û\95Û\8cÙ\84Ù\85 بÛ\86 بÙ\86Û\8eرÛ\95',
+'tog-enotifusertalkpages' => 'ئÛ\95Ú¯Û\95ر Ù¾Û\95Ú\95Û\95Û\8c Ù\84Û\8eدÙ\88اÙ\86ەکەم گۆڕدرا ئیمەیلم بۆ بنێرە',
'tog-enotifminoredits' => 'بۆ گۆڕانکارییە بچووکەکانی پەڕەکان و پەڕگەکانیش ئیمەیلم بۆ بنێرە',
'tog-enotifrevealaddr' => 'ئەدرەسی ئیمەیلەکەم لە ئیمەیلە ئاگاداریدەرەکان دا نیشان بدە',
'tog-shownumberswatching' => 'ژمارەی بەکارھێنەرە چاودێڕەکان نیشان بدە',
'tog-showjumplinks' => 'ڕێگە بدە بۆ بەستەرەکانی «{{int:jumpto}}»',
'tog-uselivepreview' => 'لە پێشبینینی زیندوو کەڵک وەرگرە (جاڤاسکریپت پێویستە) (تاقیکاری)',
'tog-forceeditsummary' => 'ئەگەر پوختەی دەستکاریم نەنووسی پێم بڵێ',
-'tog-watchlisthideown' => 'دÛ\95ستکارÛ\8cÛ\8cÛ\95کاÙ\86Ù\85 بشارÛ\95Ù\88Û\95 Ù\84Û\95 Ù\84Û\8cستی چاودێری',
+'tog-watchlisthideown' => 'دÛ\95ستکارÛ\8cÛ\8cÛ\95کاÙ\86Ù\85 بشارÛ\95Ù\88Û\95 Ù\84Û\95 Ù¾Û\8eرستی چاودێری',
'tog-watchlisthidebots' => 'دەستکارییەکانی بات بشارەوە لە لیستی چاودێری',
'tog-watchlisthideminor' => 'دەستکارییە بچووکەکان لە لیستی چاودێریدا بشارەوە',
'tog-watchlisthideliu' => 'دەستکارییەکانی ئەو بەکارهێنەرانەی لە ژوورەوەن بشارەوە لە لیستی چاودێری',
'tog-watchlisthideanons' => 'دەستکارییەکانی بەکارهێنەرانی نەناسراو بشارەوە لە لیستی چاودێری',
'tog-watchlisthidepatrolled' => 'لە لیستی چاودێریەکان، دەستکاریە پارێزراوەکان داشارە',
-'tog-ccmeonemails' => 'کۆپییەکانی ئەو ئیمەیلانە کە بۆ بەکارھێنەرانی ترم ناردووە بۆ خۆشم بنێرە',
-'tog-diffonly' => 'ناوەڕۆکی پەڕە لەژێر جیاوازییەکان نیشان مەدە',
+'tog-ccmeonemails' => 'کۆپییەک لەو ئیمەیلانە کە بۆ بەکارھێنەرانی تر دەنێرم بۆ خۆشم بنێرە',
+'tog-diffonly' => 'ناوەرۆکی پەڕە لە ژێرەوەی جیاوازییەکاندا نیشان مەدە',
'tog-showhiddencats' => 'ھاوپۆلە شاراوەکان نیشان بدە',
'tog-noconvertlink' => 'لەکارخستنی ئاڵوگۆڕی سەرناوی بەستەر',
'tog-norollbackdiff' => 'لە دوای گەڕاندنەوە جیاوازی نیشان مەدە',
ئێستا دەتوانی بیبینی؛ وردەکاری سەبارەت بەوە لە [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} لۆگی سڕینەوە]دا دەست دەکەوێت.",
'rev-suppressed-diff-view' => "یەکێک لە پێداچوونەوەکانی ئەم جیاوازییە '''بەرگری لێکراوە'''.
ئێستا دەتوانی بیبینی؛ وردەکاری سەبارەت بەوە لە [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} لۆگی بەرگری]دا دەست دەکەوێت.",
-'rev-delundel' => 'نیشانبدە/بشارەوە',
+'rev-delundel' => 'نیشان بدە/بشارەوە',
'rev-showdeleted' => 'نیشان بدە',
'revisiondelete' => 'سڕینەوە/ھێنانەوەی پێداچوونەوەکان',
'revdelete-nooldid-title' => 'مەبەستی پێداچوونەوەی نادیار',
'search-interwiki-more' => '(زیاتر)',
'search-relatedarticle' => 'پەیوەست',
'mwsuggest-disable' => 'پێشنیارەکانی گەڕان ناچالاک بکە',
-'searcheverything-enable' => 'لە ھەموو بۆشاییناوەکان دا بگەڕێ',
+'searcheverything-enable' => 'لە ھەموو بۆشاییی ناوەکاندا بگەڕێ',
'searchrelated' => 'پەیوەست',
'searchall' => 'ھەموو',
'showingresults' => "لە خوارەوە {{PLURAL:$1|'''یەک''' ئەنجام|'''$1''' ئەنجام}} نیشان دراوە، بە دەست پێ کردن لە ژمارەی '''$2'''ەوە.",
'allowemail' => 'ڕێگە بدە بە بەکارھێنەرانی تر کە ئیمەیلم بۆ بنێرن',
'prefs-searchoptions' => 'گەڕان',
'prefs-namespaces' => 'بۆشاییناوەکان',
-'defaultns' => 'ئÛ\95Ú¯Û\95رÙ\86ا Ù\84Û\95Ù\85 بÛ\86شاÛ\8cÛ\8câ\80\8cناوانەدا بگەڕێ:',
+'defaultns' => 'دÛ\95Ù\86ا Ù\84Û\95Ù\85 بÛ\86شاÛ\8cÛ\8cÛ\8c ناوانەدا بگەڕێ:',
'default' => 'بنچینەیی',
'prefs-files' => 'پەڕگەکان',
'prefs-custom-css' => 'CSSی دڵخواز',
'userrights-editusergroup' => 'دەستکاریی گرووپەکانی بەکارهێنەر',
'saveusergroups' => 'گرووپەکانی بەکارھێنەر پاشەکەوت بکە',
'userrights-groupsmember' => 'ئەندامە لە:',
-'userrights-groups-help' => 'دەتوانی ئەو گرووپانەی ئەم بەکارهێنەرە تێیدایە بگۆڕیت:
-* چوارچێوەی نیشانکراو مانای ئەوەیە لەو گرووپەدا هەیە.
-* چوارچێوەی نیشاننەکراو مانای ئەوەیە لەو گرووپەدا نیە.
-* A * پێتدەڵێ ناتوانی ئەو گرووپی جارێکی دی زیادت کردووە لایبەری.',
+'userrights-groupsmember-auto' => 'ئەندامی ناڕاشکاوە لە:',
+'userrights-groups-help' => 'دەتوانی ئەو گرووپانەی ئەم بەکارهێنەرە تێیدایە ئاڵوگۆڕ بکەی:
+* چوارچێوەی نیشانکراو یانی بەکارھێنەر لەو گرووپەدا هەیە.
+* چوارچێوەی نیشاننەکراو یانی بەکارھێنەر لەو گرووپەدا نییە.
+* ئەستێرەیەک (*) نیشان دەدا ناتوانی ئەو گرووپەی جارێکی تر زیادت کردووە لایبەری، و بە پێچەوانە.',
'userrights-reason' => 'هۆکار:',
'userrights-no-interwiki' => 'دەسەڵاتی گۆڕینی مافەکانی بەکارهێنەر لە ویکییەکانی دیکەت نیە.',
'userrights-nodatabase' => 'بنکەدراوی $1 بوونی نیە یا لەم شوێنە نیە.',
'nchanges' => '$1 {{PLURAL:$1|گۆڕانکاری}}',
'recentchanges' => 'دوایین گۆڕانکارییەکان',
'recentchanges-legend' => 'ھەڵبژاردەکانی دوایین گۆڕانکارییەکان',
-'recentchanges-summary' => 'دوایین گۆڕانکارییەکانیی ویکی لەم پەڕەیەدا ببینە.',
+'recentchanges-summary' => 'لەم پەڕەیەدا شوێنی دوایین گۆڕانکارییەکانی ویکی بکەوە.',
'recentchanges-feed-description' => 'دوای دوایین گۆڕانکارییەکانی ئەم ویکیە بکەوە لەم «فید»ەوە.',
'recentchanges-label-newpage' => 'ئەم دەستکارییە لاپەڕەیەکی نوێی دروستکرد',
'recentchanges-label-minor' => 'ئەمە دەستکاریەکی بچووکە',
'rcshowhideliu' => 'بەکارھێنەرە تۆمارکراوەکان $1',
'rcshowhideanons' => 'بەکارھێنەرە نەناسراوەکان $1',
'rcshowhidepatr' => 'گۆرانکارییە چاودێریکراوەکان $1',
-'rcshowhidemine' => 'دەستکارییەکانی من $1',
+'rcshowhidemine' => 'دەستکارییەکانم $1',
'rclinks' => 'دوایین $1 گۆڕانکاریی $2 ڕۆژی ڕابردوو نیشان بدە<br />$3',
'diff' => 'جیاوازی',
'hist' => 'مێژوو',
'listusers-noresult' => 'ھیچ بەکارھێنەرێک نەدۆزرایەوە.',
'listusers-blocked' => '(بەربەست کراوە)',
-# Special:ActiveUsers
-'activeusers' => 'پێرستی بەکارھێنەرە چالاکەکان',
-'activeusers-intro' => 'ئەمە لیستێکی ئەو بەکارھێنەرانەیە کە لە $1 {{PLURAL:$1|ڕۆژ|ڕۆژ}}ی ڕابردوودا بە جۆرێک چالاکییەکیان ھەبووە.',
-'activeusers-count' => '$1 {{PLURAL:$1|کردەوە}} لە دوایین {{PLURAL:$3|ڕۆژ|$3 ڕۆژ}}دا',
-'activeusers-from' => 'نیشاندانی بەکارھێنەران بە دەستپێکردن لە:',
-'activeusers-hidebots' => 'بۆتەکان بشارەوە',
-'activeusers-hidesysops' => 'بەڕێوبەران بشارەوە',
-'activeusers-noresult' => 'هیچ بەکارهێنەرێک نەدۆزرایەوە',
-
# Special:ListGroupRights
'listgrouprights' => 'مافەکانی گرووپی بەکارھێنەر',
'listgrouprights-summary' => 'ئەمە لیستێکە لە گرووپەکانی بەکارهێنەر لەسەر ئەم ویکییە، دەگەڵ مافەکانی دەستپێگەیشتنی هاوپەیوەندیان.
لێرەدا لەوانەیە [[{{MediaWiki:Listgrouprights-helppage}}|زانیاری زیاترت]] دەستکەوێت سەبارەت بە مافە تاکەکەسیەکان.',
'listgrouprights-key' => '* <span class="listgrouprights-granted">مافی دراوە</span>
-* <span class="listgrouprights-granted">Ù\85اÙ\81Û\8c سÛ\95Ù\86دراÙ\88Û\95</span>',
+* <span class="listgrouprights-granted">مافی سەنراوە</span>',
'listgrouprights-group' => 'گرووپ',
'listgrouprights-rights' => 'مافەکان',
'listgrouprights-helppage' => 'Help:مافەکانی گرووپ',
'emailtarget' => 'ناوی بەکارھێنەریی وەرگر بنووسە',
'emailusername' => 'ناوی بهكارھێنهر:',
'emailusernamesubmit' => 'بینێرە',
-'email-legend' => 'ناردنی ئیمەیلێک بۆ بەکارهێنەرێکی دیکەی {{SITENAME}}',
+'email-legend' => 'ناردنی ئیمەیلێک بۆ بەکارھێنەرێکی تری {{SITENAME}}',
'emailfrom' => 'لە:',
'emailto' => 'بۆ:',
'emailsubject' => 'بابەت:',
'emailmessage' => 'پەیام:',
'emailsend' => 'بینێرە',
-'emailccme' => 'Ú©Û\86Ù¾Û\8cÛ\8cÛ\95Ú© Ù\84Û\95 Ù\86امەکە بنێرە بۆ ئیمەیلەکەم.',
+'emailccme' => 'Ú©Û\86Ù¾Û\8cÛ\8cÛ\95Ú© Ù\84Û\95 Ù¾Û\95Û\8cامەکە بنێرە بۆ ئیمەیلەکەم.',
'emailccsubject' => 'کۆپیی نامەکەت بۆ $1: $2',
'emailsent' => 'نامەکەت ناردرا',
'emailsenttext' => 'نامەکەت ناردرا',
'watchlistcontains' => 'لیستی چاودێڕییەکانت $1 {{PLURAL:$1|پەڕە|پەڕە}}ی تێدایە.',
'iteminvalidname' => "ھەڵە لەگەڵ بابەتی '$1'، ناوی نادروست...",
'wlnote' => "خوارەوە {{PLURAL:$1|دوایین گۆڕانکارییە|دوایین '''$1''' گۆڕانکارییە}} لە دوایین {{PLURAL:$2|کاتژمێر|'''$2''' کاتژمێر}}دا ھەتا $4 لە $3.",
-'wlshowlast' => 'دوایین $1 کاتژمێر $2 ڕۆژی $3 نیشانبدە',
+'wlshowlast' => 'دوایین $1 کاتژمێر $2 ڕۆژی $3 نیشان بدە',
'watchlist-options' => 'ھەڵبژاردەکانی لیستی چاودێری',
# Displayed when you click the "watch" button and it is in the process of watching
تکایە سەردانی [//www.mediawiki.org/wiki/Localisation ناوچەییکردنی میدیاویکی] و [//translatewiki.net translatewiki.net] بکە ئەگەر دەتەوێ لە ناوچەییکردنی میدیاویکی بە گشتی بەشداری بکەیت.',
'allmessagesnotsupportedDB' => "ئەم لاپەڕە ناتوانی بەکاربێت لەبەر ئەوەی '''\$wgUseDatabaseMessages''' لەکار خستراوە.",
'allmessages-filter-legend' => 'پاڵێو',
-'allmessages-filter-unmodified' => 'چاکسازی نەکراو',
+'allmessages-filter-unmodified' => 'نەگۆڕدراو',
'allmessages-filter-all' => 'هەموو',
-'allmessages-filter-modified' => 'Ú\86اکسازÛ\8câ\80\8cÚ©راو',
+'allmessages-filter-modified' => 'Ú¯Û\86Ú\95دراو',
'allmessages-prefix' => 'پاڵێو بە پێشگر:',
'allmessages-language' => 'زمان:',
'allmessages-filter-submit' => 'بڕۆ',
'pageinfo-robot-noindex' => 'نەشیاو بۆ پێرستکردن',
'pageinfo-views' => 'ژمارەی بینینەکان',
'pageinfo-watchers' => 'ژمارەی چاودێرانی پەڕە',
-'pageinfo-few-watchers' => 'کەمتر لە $1 {{PLURAL:$1|چاوەدێر}}',
+'pageinfo-few-watchers' => 'کەمتر لە $1 {{PLURAL:$1|چاودێر}}',
'pageinfo-redirects-name' => 'ڕەوانەکەرەکان بۆ ئەم پەڕەیە',
'pageinfo-subpages-name' => 'ژێرپەڕەکانی ئەم پەڕەیە',
'pageinfo-subpages-value' => '$1 ($2 {{PLURAL:$2|ڕەوانەکەر}}; $3 {{PLURAL:$3|ڕەوانەنەکەر}})',
'pageinfo-contentpage' => 'ھەژمارکراو وەک پەڕەی بەناوەرۆک',
'pageinfo-contentpage-yes' => 'بەڵێ',
'pageinfo-protect-cascading-yes' => 'بەڵێ',
+'pageinfo-category-pages' => 'ژمارەی پەڕەکان',
+'pageinfo-category-subcats' => 'ژمارەی ژێرپەڕەکان',
+'pageinfo-category-files' => 'ژمارەی پەڕگەکان',
# Skin names
-'skinname-standard' => 'کلاسیک',
-'skinname-nostalgia' => 'غەریبی',
'skinname-cologneblue' => 'شینی کۆلۆن',
'skinname-monobook' => 'مۆنۆ',
-'skinname-myskin' => 'پێستی خۆم',
-'skinname-chick' => 'جووچک',
-'skinname-simple' => 'ساکار',
'skinname-modern' => 'مۆدێڕن',
'skinname-vector' => 'ڤێکتۆر',
# Upload
'upload' => 'Načíst soubor',
'uploadbtn' => 'Načíst soubor',
-'reuploaddesc' => 'Vrátit se k načtení.',
+'reuploaddesc' => 'Zrušit načítání a vrátit se do formuláře.',
'upload-tryagain' => 'Uložit upravený popis souboru',
'uploadnologin' => 'Nejste přihlášen(a)',
'uploadnologintext' => 'Pro načtení souboru se musíte [[Special:UserLogin|přihlásit]].',
'listusers-noresult' => 'Nenalezen žádný uživatel.',
'listusers-blocked' => '({{GENDER:$1|zablokován|zablokována|zablokován}})',
-# Special:ActiveUsers
-'activeusers' => 'Seznam aktivních uživatelů',
-'activeusers-intro' => 'Toto je seznam uživatelů, kteří byli nějak aktivní v {{plural:$1|posledním dni|posledních $1 dnech}}.',
-'activeusers-count' => '$1 {{PLURAL:$1|akce|akce|akcí}} během {{PLURAL:$3|posledního dne|posledních $3 dnů}}',
-'activeusers-from' => 'Zobrazit uživatele počínaje od:',
-'activeusers-hidebots' => 'Skrýt roboty',
-'activeusers-hidesysops' => 'Skrýt správce',
-'activeusers-noresult' => 'Nenalezen žádný uživatel.',
-
# Special:ListGroupRights
'listgrouprights' => 'Práva skupin uživatelů',
'listgrouprights-summary' => 'Toto je seznam uživatelských skupin definovaných na této wiki a jejich přístupových práv.
'proxyblocksuccess' => 'Hotovo.',
'sorbsreason' => 'Vaše IP adresa je uvedena na seznamu DNSBL jako otevřený proxy server.',
'sorbs_create_account_reason' => 'Vaše IP adresa je uvedena na seznamu DNSBL jako otevřený proxy server. Z této adresy si nemůžete založit účet',
+'xffblockreason' => 'IP adresa uvedená v hlavičce X-Forwarded-For, ať už vaše, nebo patřící proxy serveru, který používáte, byla zablokována. Zdůvodnění tohoto zablokování: $1',
'cant-block-while-blocked' => 'Nemůžete blokovat jiné uživatele, když jste zablokován(a).',
'cant-see-hidden-user' => 'Uživatel, kterého se snažíte blokovat, už byl zablokován a skryt. Jelikož nemáte oprávnění hideuser, nemůžete si nastavení bloku tohoto uživatele prohlédnout ani ho změnit.',
'ipbblocked' => 'Nemůžete blokovat nebo odblokovávat jiné uživatele, {{GENDER:|sám|sama|sám}} jste {{GENDER:|zablokován|zablokována|zablokován}}',
# Stylesheets
'common.css' => '/* Zde uvedené CSS bude ovlivňovat všechny styly */',
-'standard.css' => '/* Zde uvedené CSS bude ovlivňovat pouze styl „Klasický“ */',
-'nostalgia.css' => '/* Zde uvedené CSS bude ovlivňovat pouze styl „Nostalgie“ */',
'cologneblue.css' => '/* Zde uvedené CSS bude ovlivňovat pouze styl „Kolínská modř“ */',
'monobook.css' => '/* Zde uvedené CSS bude ovlivňovat pouze styl „Monobook“ */',
-'myskin.css' => '/* Zde uvedené CSS bude ovlivňovat pouze styl „Můj vzhled“ */',
-'chick.css' => '/* Zde uvedené CSS bude ovlivňovat pouze styl „Kuře“ */',
-'simple.css' => '/* Zde uvedené CSS bude ovlivňovat pouze styl „Jednoduchý“ */',
'modern.css' => '/* Zde uvedené CSS bude ovlivňovat pouze styl „Moderní“ */',
'vector.css' => '/* Zde uvedené CSS bude ovlivňovat pouze styl „Vektor“ */',
'print.css' => '/* Zde uvedené CSS bude ovlivňovat tiskový výstup */',
# Scripts
'common.js' => '/* Zde uvedený JavaScript bude použit pro všechny uživatele při načtení každé stránky. */',
-'standard.js' => '/* JavaScript pro uživatele používající vzhled „Klasický“ */',
-'nostalgia.js' => '/* JavaScript pro uživatele používající vzhled „Nostalgie“ */',
'cologneblue.js' => '/* JavaScript pro uživatele používající vzhled „Kolínská modř“ */',
'monobook.js' => '/* JavaScript pro uživatele používající vzhled MonoBook */',
-'myskin.js' => '/* JavaScript pro uživatele používající vzhled „Můj vzhled“ */',
-'chick.js' => '/* JavaScript pro uživatele používající vzhled „Kuře“ */',
-'simple.js' => '/* JavaScript pro uživatele používající vzhled „Jednoduchý“ */',
'modern.js' => '/* JavaScript pro uživatele používající vzhled „Moderní“ */',
'vector.js' => '/* JavaScript pro uživatele používající vzhled „Vektor“ */',
'group-autoconfirmed.js' => '/* Zde uvedený JavaScript bude použit pouze pro automaticky schválené uživatele */',
'pageinfo-category-files' => 'Počet souborů',
# Skin names
-'skinname-standard' => 'Klasický',
-'skinname-nostalgia' => 'Nostalgie',
'skinname-cologneblue' => 'Kolínská modř',
-'skinname-myskin' => 'Můj vzhled',
-'skinname-chick' => 'Kuře',
-'skinname-simple' => 'Jednoduchý',
'skinname-modern' => 'Moderní',
'skinname-vector' => 'Vektor',
'listusers-noresult' => "Dim defnyddiwr i'w gael.",
'listusers-blocked' => '(wedi ei flocio)',
-# Special:ActiveUsers
-'activeusers' => 'Rhestr defnyddwyr gweithgar',
-'activeusers-intro' => 'Dyma restr y defnyddwyr a fuont yn weithgar o fewn y {{PLURAL:$1|diwrnod|diwrnod|deuddydd|tridiau|$1 diwrnod|$1 diwrnod}} diwethaf.',
-'activeusers-count' => '$1 {{PLURAL:$1|golygiad|golygiad|olygiad|golygiad}} yn ystod y {{PLURAL:$3|diwrnod|diwrnod|deuddydd|tridiau|$3 diwrnod}} diwethaf',
-'activeusers-from' => "Rhestru'r defnyddwyr gan ddechrau gyda:",
-'activeusers-hidebots' => 'Cuddio botiau',
-'activeusers-hidesysops' => 'Cuddio gweinyddwyr',
-'activeusers-noresult' => "Dim defnyddwyr i'w cael.",
-
# Special:ListGroupRights
'listgrouprights' => 'Galluoedd grwpiau defnyddwyr',
'listgrouprights-summary' => "Dyma restr o'r grwpiau defnyddwyr sydd i'w cael ar y wici hon, ynghyd â galluoedd aelodau'r gwahanol grwpiau. Cewch wybodaeth pellach am y gwahanol alluoedd ar y [[{{MediaWiki:Listgrouprights-helppage}}|dudalen gymorth]].",
'pageinfo-category-files' => 'Nifer y ffeiliau',
# Skin names
-'skinname-standard' => 'Safonol',
-'skinname-nostalgia' => 'Hiraeth',
'skinname-cologneblue' => 'Glas Cwlen',
# Patrolling
'logentry-delete-delete' => 'Dileodd $1 y dudalen $3',
'logentry-delete-restore' => 'Adferodd $1 y dudalen $3',
'logentry-delete-event' => 'Newidiodd $1 ymddangosiad {{PLURAL:$5||cofnod lòg|$5 gofnod lòg|$5 chofnod lòg|$5 chofnod lòg|$5 cofnod lòg}} ar $3: $4',
-'logentry-delete-revision' => "Newidiodd $1 ymddangosiad {{PLURAL:$5||diwygiad|$5 ddiwygiad|$5 diwygiad}} o'r dudalen $3: $4",
-'logentry-delete-event-legacy' => 'Newidiodd $1 welededd cofnodion lòg ar $3',
-'logentry-delete-revision-legacy' => "Newidiodd $1 welededd diwygiadau o'r dudalen $3",
-'logentry-suppress-delete' => 'Cuddiodd $1 y dudalen $3',
-'logentry-suppress-event' => 'Yn y dirgel, newidiodd $1 ymddangosiad {{PLURAL:$5||cofnod lòg|$5 gofnod lòg|$5 chofnod lòg|$5 chofnod lòg|$5 cofnod lòg}} ar $3: $4',
-'logentry-suppress-revision' => "Yn y dirgel, newidiodd $1 ymddangosiad {{PLURAL:$5||diwygiad|$5 ddiwygiad|$5 diwygiad}} o'r dudalen $3: $4",
-'logentry-suppress-event-legacy' => 'Newidiodd $1 welededd cofnodion lòg ar $3, yn y dirgel',
-'logentry-suppress-revision-legacy' => "Newidiodd $1 welededd diwygiadau o'r dudalen $3, yn y dirgel",
+'logentry-delete-revision' => "{{GENDER:$2|Newidiodd}} $1 ymddangosiad {{PLURAL:$5||diwygiad|$5 ddiwygiad|$5 diwygiad}} o'r dudalen $3: $4",
+'logentry-delete-event-legacy' => '{{GENDER:$2|Newidiodd}} $1 welededd cofnodion lòg ar $3',
+'logentry-delete-revision-legacy' => "{{GENDER:$2|Newidiodd}} $1 welededd diwygiadau o'r dudalen $3",
+'logentry-suppress-delete' => '{{GENDER:$2|Cuddiodd}} $1 y dudalen $3',
+'logentry-suppress-event' => 'Yn y dirgel, {{GENDER:$2|newidiodd}} $1 ymddangosiad {{PLURAL:$5||cofnod lòg|$5 gofnod lòg|$5 chofnod lòg|$5 chofnod lòg|$5 cofnod lòg}} ar $3: $4',
+'logentry-suppress-revision' => "Yn y dirgel, {{GENDER:$2|newidiodd}} $1 ymddangosiad {{PLURAL:$5||diwygiad|$5 ddiwygiad|$5 diwygiad}} o'r dudalen $3: $4",
+'logentry-suppress-event-legacy' => '{{GENDER:$2|Newidiodd}} $1 welededd cofnodion lòg ar $3, yn y dirgel',
+'logentry-suppress-revision-legacy' => "{{GENDER:$2|Newidiodd}} $1 welededd diwygiadau o'r dudalen $3, yn y dirgel",
'revdelete-content-hid' => 'cuddiwyd y cynnwys',
'revdelete-summary-hid' => 'cuddiwyd y crynodeb golygu',
'revdelete-uname-hid' => 'cuddiwyd yr enw defnyddiwr',
'logentry-move-move-noredirect' => 'Symudodd $1 y dudalen $3 i $4 heb adael dolen ailgyfeirio',
'logentry-move-move_redir' => '{{GENDER:$2|Symudwyd}} y dudalen $3 i $4 gan $1 dros y ddolen ailgyfeirio',
'logentry-move-move_redir-noredirect' => 'Symudwyd y dudalen $3 i $4 gan $1 dros ddolen ailgyfeirio heb adael dolen ailgyfeirio newydd',
-'logentry-patrol-patrol' => "Rhoddodd $1 nod ar ddiwygiad $4 o'r dudalen $3 yn dynodi ei fod wedi derbyn ymweliad patrôl",
-'logentry-patrol-patrol-auto' => "Rhoddodd $1 nod yn awtomatig ar ddiwygiad $4 o'r dudalen $3 yn dynodi ei fod wedi derbyn ymweliad patrôl",
-'logentry-newusers-newusers' => 'Dechreuwyd y cyfrif defnyddiwr $1',
+'logentry-patrol-patrol' => "{{GENDER:$2|Rhoddodd}} $1 nod ar ddiwygiad $4 o'r dudalen $3 yn dynodi ei fod wedi derbyn ymweliad patrôl",
+'logentry-patrol-patrol-auto' => "{{GENDER:$2|Rhoddodd}} $1 nod yn awtomatig ar ddiwygiad $4 o'r dudalen $3 yn dynodi ei fod wedi derbyn ymweliad patrôl",
+'logentry-newusers-newusers' => '{{GENDER:$2|Dechreuwyd}} y cyfrif defnyddiwr $1',
'logentry-newusers-create' => 'Dechreuwyd y cyfrif defnyddiwr $1',
'logentry-newusers-create2' => 'Dechreuwyd y cyfrif defnyddiwr $3 gan $1',
-'logentry-newusers-byemail' => 'Dechreuodd $1 y cyfrif defnyddiwr $3 ac anfonodd gyfrinair drwy e-bost',
-'logentry-newusers-autocreate' => 'Crëwyd y cyfrif $1 yn awtomatig',
-'logentry-rights-rights' => 'Newidiodd $1 y grwpiau y mae $3 yn aelod ohonynt o $4 i $5',
-'logentry-rights-rights-legacy' => 'Newidiodd $1 y grwpiau y mae $3 yn aelod ohonynt',
+'logentry-newusers-byemail' => '{{GENDER:$2|Dechreuodd}} $1 y cyfrif defnyddiwr $3 ac anfonodd gyfrinair drwy e-bost',
+'logentry-newusers-autocreate' => '{{GENDER:$2|Crëwyd}} y cyfrif $1 yn awtomatig',
+'logentry-rights-rights' => '{{GENDER:$2|Newidiodd}} $1 y grwpiau y mae $3 yn aelod ohonynt o $4 i $5',
+'logentry-rights-rights-legacy' => '{{GENDER:$2|Newidiodd}} $1 y grwpiau y mae $3 yn aelod ohonynt',
'logentry-rights-autopromote' => 'Dyrchafwyd $1 yn awtomatig o $4 i $5',
'rightsnone' => '(dim)',
* @author Froztbyte
* @author Gorbi
* @author H92
+ * @author HenrikKbh
* @author Hylle
* @author Jan Friberg
* @author Jon Harald Søby
'nstab-special' => 'speciel',
'nstab-project' => 'Projektside',
'nstab-image' => 'Fil',
-'nstab-mediawiki' => 'besked',
+'nstab-mediawiki' => 'Besked',
'nstab-template' => 'skabelon',
'nstab-help' => 'hjælp',
'nstab-category' => 'kategori',
'eauthentsent' => 'En bekræftelsesmail er sendt til den angivne e-mail-adresse.
Før en e-mail kan modtages af andre brugere af {{SITENAME}}-mailfunktionen, skal adressen og dens tilhørsforhold til denne bruger bekræftes. Følg venligst anvisningerne i denne mail.',
-'throttled-mailpassword' => 'Indenfor {{PLURAL:$1|den sidste time|de sidste $1 timer}} er der allerede sendt et nyt password. For at forhindre misbrug af funktionen, kan der kun bestilles et nyt password en gang for hver {{PLURAL:$1|time|$1 timer}}.',
+'throttled-mailpassword' => 'Indenfor {{PLURAL:$1|den sidste time|de sidste $1 timer}} er der allerede sendt en ny adgangskode. For at forhindre misbrug af funktionen, kan der kun bestilles en ny adgangskode én gang for hver {{PLURAL:$1|time|$1 timer}}.',
'mailerror' => 'Fejl ved afsendelse af e-mail: $1',
'acct_creation_throttle_hit' => 'Besøgende med samme IP-adresse som dig har oprettet {{PLURAL:$1|en konto|$1 kontoer}} det sidste døgn, og det er ikke tilladt at oprette flere.
Derfor kan besøgende ikke oprette flere kontoer fra denne IP-adresse i øjeblikket.',
# Special:PasswordReset
'passwordreset' => 'Nulstil adgangskode',
-'passwordreset-text' => 'Udfyld denne formular for at modtage en påmindelse om dine kontooplysninger som e-mail.',
+'passwordreset-text' => 'Udfyld denne formular for at nulstille din adgangskode.',
'passwordreset-legend' => 'Nulstil adgangskode',
'passwordreset-disabled' => 'Nulstilling af kodeord er slået fra på denne wiki.',
'passwordreset-pretext' => '{{PLURAL:$1||Indtast en af de nedenstående oplysninger}}',
'passwordreset-capture-help' => 'Hvis du krydser dette felt af, vil emailen (med den midlertidige adgangskode) blive vist til dig i tillæg til at blive sendt til brugeren.',
'passwordreset-email' => 'E-mail adresse:',
'passwordreset-emailtitle' => 'Kontooplysninger på {{SITENAME}}',
-'passwordreset-emailtext-ip' => 'Nogen (sandsynligvis dig, fra IP-adressen $1) har anmodet om en påmindelse om dine kontooplysninger for {{SITENAME}} ($4). Følgende {{PLURAL:$3|brugerkonto|brugerkonti}} er associerede med denne e-mail-adresse:
+'passwordreset-emailtext-ip' => 'Nogen (sandsynligvis dig, fra IP-adressen $1) har anmodet om at få nulstillet din adgangskode til {{SITENAME}} ($4). {{PLURAL:$3|Den følgende brugerkonto er associeret|De følgende brugerkonti er associerede}} med denne e-mail-adresse:
$2
{{PLURAL:$3|Denne midlertidige adgangskode|Disse midlertidige adgangskoder}} vil udløbe om {{PLURAL:$5|en dag|$5 dage}}.
-Du bør logge på og vælge en ny adgangskode nu. Hvis en anden end dig har anmodet om denne påmindelse, eller hvis du er kommet i tanke om din oprindelig adgangskode og ikke længere ønsker at ændre den, kan du ignorere denne meddelelse og fortsætte med at bruge din gamle adgangskode.',
-'passwordreset-emailtext-user' => 'Brugeren $1 har anmodet om en påmindelse om dine kontooplysninger for {{SITENAME}} ($4). Følgende {{PLURAL:$3|brugerkonto|brugerkonti}} er associerede med denne e-mail-adresse:
+Du bør logge på og vælge en ny adgangskode nu. Hvis en anden end dig har gjort denne anmodning, eller hvis du er kommet i tanke om din oprindelig adgangskode og ikke længere ønsker at ændre den, kan du ignorere denne meddelelse og fortsætte med at bruge din gamle adgangskode.',
+'passwordreset-emailtext-user' => 'Brugeren $1 på {{SITENAME}} har anmodet om at få nulstillet din adgangskode til {{SITENAME}} ($4). {{PLURAL:$3|Den følgende brugerkonto er associeret|De følgende brugerkonti er associerede}} med denne e-mail-adresse:
$2
{{PLURAL:$3|Denne midlertidige adgangskode|Disse midlertidige adgangskoder}} vil udløbe om {{PLURAL:$5|en dag|$5 dage}}.
-Du bør logge på og vælge en ny adgangskode nu. Hvis en anden end dig har anmodet om denne påmindelse, eller hvis du er kommet i tanke om din oprindelig adgangskode og ikke længere ønsker at ændre den, kan du ignorere denne meddelelse og fortsætte med at bruge din gamle adgangskode.',
+Du bør logge på og vælge en ny adgangskode nu. Hvis en anden end dig har gjort denne anmodning, eller hvis du er kommet i tanke om din oprindelig adgangskode og ikke længere ønsker at ændre den, kan du ignorere denne meddelelse og fortsætte med at bruge din gamle adgangskode.',
'passwordreset-emailelement' => 'Brugernavn: $1
Midlertidig adgangskode: $2',
-'passwordreset-emailsent' => 'En påmindelse er blevet sendt som e-mail.',
-'passwordreset-emailsent-capture' => 'En påmindelsesemail, som vist nedenfor, er blevet sendt.',
-'passwordreset-emailerror-capture' => 'En påmindelsesemail, som vist nedenfor, blev genereret, men det lykkedes ikke at sende den til brugeren: $1',
+'passwordreset-emailsent' => 'En e-mail om nulstilling af adgangskode er blevet sendt.',
+'passwordreset-emailsent-capture' => 'En e-mail om nulstilling af adgangskode, som vist nedenfor, er blevet sendt.',
+'passwordreset-emailerror-capture' => 'En e-mail om nulstilling af adgangskode, som vist nedenfor, blev genereret, men det lykkedes ikke at sende den til brugeren: $1',
# Special:ChangeEmail
'changeemail' => 'Ændr email-adresse',
'listusers-noresult' => 'Ingen bruger fundet.',
'listusers-blocked' => '(blokeret)',
-# Special:ActiveUsers
-'activeusers' => 'Liste over aktive brugere',
-'activeusers-intro' => 'Dette er en liste over brugere, som har haft en eller anden form for aktivitet inden for {{PLURAL:$1|den|de}} seneste {{PLURAL:$1|dag|$1 dage}}.',
-'activeusers-count' => '$1 {{PLURAL:$1|handling|handlinger}} i {{PLURAL:$3|det seneste døgn|de seneste $3 dage}}',
-'activeusers-from' => 'Vis brugere som starter med:',
-'activeusers-hidebots' => 'Skjul robotter',
-'activeusers-hidesysops' => 'Skjul administratorer',
-'activeusers-noresult' => 'Ingen brugere fundet.',
-
# Special:ListGroupRights
'listgrouprights' => 'Brugergrupperettigheder',
'listgrouprights-summary' => 'Denne side viser de brugergrupper der er defineret på denne wiki og de enkelte gruppers rettigheder.
'proxyblocksuccess' => 'Færdig.',
'sorbsreason' => 'IP-adressen er opført i DNSBL på {{SITENAME}} som åben PROXY.',
'sorbs_create_account_reason' => 'IP-adressen er opført i DNSBL på {{SITENAME}} som åben PROXY. Oprettelse af nye brugere er ikke mulig.',
+'xffblockreason' => 'En IP-adresse der er indeholdt i X-Fremsendt-Til hovedet, enten din egen eller en på en proxy-server, du bruger, er blevet blokeret. Den oprindelige grund til blokeringen var:$1',
'cant-block-while-blocked' => 'Du kan ikke blokkere andre brugere mens du selv er blokkeret.',
'cant-see-hidden-user' => 'Brugeren du prøver at blokerer er allerede blokeret og skjult. Siden du ikke har rettigheden til at skjule brugere, kan du ikke se eller ændre brugerens blokering.',
'ipbblocked' => 'Du kan ikke ændre blokeringer, da du selv er blokeret',
'tooltip-ca-nstab-main' => 'Se indholdet',
'tooltip-ca-nstab-user' => 'Se brugersiden',
'tooltip-ca-nstab-media' => 'Se mediasiden',
-'tooltip-ca-nstab-special' => 'Dette er en speciel side; man kan ikke redigere sådanne sider',
+'tooltip-ca-nstab-special' => 'Dette er en specialside; man kan ikke redigere sådanne sider',
'tooltip-ca-nstab-project' => 'Vis projektsiden',
'tooltip-ca-nstab-image' => 'Se filsiden',
'tooltip-ca-nstab-mediawiki' => 'Se systembeskeden',
'pageinfo-category-files' => 'Antal filer',
# Skin names
-'skinname-standard' => 'Klassik',
-'skinname-nostalgia' => 'Nostalgi',
'skinname-cologneblue' => 'Kølnerblå',
'skinname-monobook' => 'MonoBook',
-'skinname-myskin' => 'Eget udseende',
-'skinname-chick' => 'Chick',
-'skinname-simple' => 'Enkelt',
'skinname-modern' => 'Moderne',
# Patrolling
'sqlite-no-fts' => '$1 uden fuld-tekst søgnings support',
# New logging system
-'logentry-delete-delete' => '$1 slettede siden $3',
-'logentry-delete-restore' => '$1 gendannede siden $3',
-'logentry-delete-event' => '$1 ændrede synligheden af {{PLURAL:$5|en loghændelse|$5 loghændelser}} for siden $3: $4',
-'logentry-delete-revision' => '$1 ændrede synligheden af {{PLURAL:$5|en version|$5 versioner}} af siden $3: $4',
-'logentry-delete-event-legacy' => '$1 ændrede synligheden af loghændelser for siden $3',
-'logentry-delete-revision-legacy' => '$1 ændrede synligheden af versioner af siden $3',
-'logentry-suppress-delete' => '$1 skjulte hændelser for siden $3',
-'logentry-suppress-event' => '$1 ændrede hemmeligt synligheden af {{PLURAL:$5|en loghændelse|$5 loghændelser}} for siden $3: $4',
-'logentry-suppress-revision' => '$1 ændrede hemmeligt synligheden af {{PLURAL:$5|en version|$5 versioner}} af siden $3: $4',
-'logentry-suppress-event-legacy' => '$1 ændrede hemmeligt synligheden af loghændelser for siden $3',
-'logentry-suppress-revision-legacy' => '$1 ændrede hemmeligt synligheden af versioner af siden $3',
+'logentry-delete-delete' => '$1 {{GENDER:$2|slettede}} siden $3',
+'logentry-delete-restore' => '$1 {{GENDER:$2|gendannede}} siden $3',
+'logentry-delete-event' => '$1 {{GENDER:$2|ændrede}} synligheden af {{PLURAL:$5|en loghændelse|$5 loghændelser}} for siden $3: $4',
+'logentry-delete-revision' => '$1 {{GENDER:$2|ændrede}} synligheden af {{PLURAL:$5|en version|$5 versioner}} af siden $3: $4',
+'logentry-delete-event-legacy' => '$1 {{GENDER:$2|ændrede}} synligheden af loghændelser for siden $3',
+'logentry-delete-revision-legacy' => '$1 {{GENDER:$2|ændrede}} synligheden af versioner af siden $3',
+'logentry-suppress-delete' => '$1 {{GENDER:$2|skjulte}} hændelser for siden $3',
+'logentry-suppress-event' => '$1 {{GENDER:$2|ændrede}} hemmeligt synligheden af {{PLURAL:$5|en loghændelse|$5 loghændelser}} for siden $3: $4',
+'logentry-suppress-revision' => '$1 {{GENDER:$2|ændrede}} hemmeligt synligheden af {{PLURAL:$5|en version|$5 versioner}} af siden $3: $4',
+'logentry-suppress-event-legacy' => '$1 {{GENDER:$2|ændrede}} hemmeligt synligheden af loghændelser for siden $3',
+'logentry-suppress-revision-legacy' => '$1 {{GENDER:$2|ændrede}} hemmeligt synligheden af versioner af siden $3',
'revdelete-content-hid' => 'indhold skjult',
'revdelete-summary-hid' => 'redigeringsbeskrivelse skjult',
'revdelete-uname-hid' => 'brugernavnet er skjult',
'revdelete-uname-unhid' => 'brugernavnet er ikke længere skjult',
'revdelete-restricted' => 'tilføjede begrænsninger for administratorer',
'revdelete-unrestricted' => 'fjernede begrænsninger for administratorer',
-'logentry-move-move' => '$1 flyttede siden $3 til $4',
-'logentry-move-move-noredirect' => '$1 flyttede siden $3 til $4 uden at efterlade en omdirigering',
-'logentry-move-move_redir' => '$1 flyttede siden $3 til $4 hen over en omdirigering',
-'logentry-move-move_redir-noredirect' => '$1 flyttede siden $3 til $4 hen over en omdirigering og uden at efterlade en omdirigering',
-'logentry-patrol-patrol' => '$1 markerede version $4 af siden $3 som patruljeret',
-'logentry-patrol-patrol-auto' => '$1 markerede automatisk version $4 af siden $3 som patruljeret',
-'logentry-newusers-newusers' => 'Brugerkontoen $1 blev oprettet',
-'logentry-newusers-create' => 'Brugerkontoen $1 blev oprettet',
-'logentry-newusers-create2' => 'Brugerkontoen $3 blev oprettet af $1',
-'logentry-newusers-byemail' => 'Brugerkonto $3 blev oprettet af $1 og adgangskode er sendt via e-mail',
-'logentry-newusers-autocreate' => 'Kontoen $1 blev automatisk oprettet',
-'logentry-rights-rights' => '$1 ændrede gruppemedlemskabet for $3 fra $4 til $5',
-'logentry-rights-rights-legacy' => '$1 ændrede gruppemedlemskabet for $3',
-'logentry-rights-autopromote' => '$1 blev automatisk forfremmet fra $4 til $5',
+'logentry-move-move' => '$1 {{GENDER:$2|flyttede}} siden $3 til $4',
+'logentry-move-move-noredirect' => '$1 {{GENDER:$2|flyttede}} siden $3 til $4 uden at efterlade en omdirigering',
+'logentry-move-move_redir' => '$1 {{GENDER:$2|flyttede}} siden $3 til $4 hen over en omdirigering',
+'logentry-move-move_redir-noredirect' => '$1 {{GENDER:$2|flyttede}} siden $3 til $4 hen over en omdirigering og uden at efterlade en omdirigering',
+'logentry-patrol-patrol' => '$1 {{GENDER:$2|markerede}} version $4 af siden $3 som patruljeret',
+'logentry-patrol-patrol-auto' => '$1 {{GENDER:$2|markerede automatisk}} version $4 af siden $3 som patruljeret',
+'logentry-newusers-newusers' => 'Brugerkontoen $1 blev {{GENDER:$2|oprettet}}',
+'logentry-newusers-create' => 'Brugerkontoen $1 blev {{GENDER:$2|oprettet}}',
+'logentry-newusers-create2' => 'Brugerkontoen $3 blev {{GENDER:$2|oprettet}} af $1',
+'logentry-newusers-byemail' => 'Brugerkontoen $3 blev {{GENDER:$2|oprettet}} af $1, og adgangskoden er sendt via e-mail',
+'logentry-newusers-autocreate' => 'Brugerkontoen $1 blev automatisk {{GENDER:$2|oprettet}}',
+'logentry-rights-rights' => '$1 {{GENDER:$2|ændrede}} gruppemedlemskabet for $3 fra $4 til $5',
+'logentry-rights-rights-legacy' => '$1 {{GENDER:$2|ændrede}} gruppemedlemskabet for $3',
+'logentry-rights-autopromote' => '$1 blev automatisk {{GENDER:$2|forfremmet}} fra $4 til $5',
'rightsnone' => '(-)',
# Feedback
'listusers-noresult' => 'Keinen Benutzer gefunden.',
'listusers-blocked' => '(gesperrt)',
-# Special:ActiveUsers
-'activeusers' => 'Aktive Benutzer',
-'activeusers-intro' => 'Dies ist eine Liste von Benutzern, die innerhalb {{PLURAL:$1|des letzten Tages|der letzten $1 Tage}} Aktivitäten aufwiesen.',
-'activeusers-count' => '$1 {{PLURAL:$1|Aktion|Aktionen}} in den {{PLURAL:$3|letzten 24 Stunden|vergangenen $3 Tagen}}',
-'activeusers-from' => 'Zeige Benutzer ab:',
-'activeusers-hidebots' => 'Bots ausblenden',
-'activeusers-hidesysops' => 'Administratoren ausblenden',
-'activeusers-noresult' => 'Keine Benutzer gefunden.',
-
# Special:ListGroupRights
'listgrouprights' => 'Benutzergruppenrechte',
'listgrouprights-summary' => 'Dies ist eine Liste der in diesem Wiki definierten Benutzergruppen und der damit verbundenen Rechte.
'proxyblocksuccess' => 'Erledigt.',
'sorbsreason' => 'Die IP-Adresse ist in der DNSBL von {{SITENAME}} als offener PROXY gelistet.',
'sorbs_create_account_reason' => 'Die IP-Adresse ist in der DNSBL von {{SITENAME}} als offener PROXY gelistet. Das Anlegen neuer Benutzer ist nicht möglich.',
+'xffblockreason' => 'Eine IP-Adresse im X-Forwarded-For-Header wurde gesperrt, entweder deine oder die des benutzten Proxyservers. Der ursprüngliche Sperrgrund war: $1',
'cant-block-while-blocked' => 'Du kannst keine anderen Benutzer sperren, während du selbst gesperrt bist.',
'cant-see-hidden-user' => 'Der Benutzer, den du versuchst zu sperren, wurde bereits gesperrt und verborgen. Da du das „hideuser“-Recht nicht hast, kannst du die Benutzersperre nicht sehen und nicht bearbeiten.',
'ipbblocked' => 'Du kannst keine anderen Benutzer sperren oder entsperren, da du selbst gesperrt bist',
# Stylesheets
'common.css' => '/* Das folgende CSS wird für alle Benutzeroberflächen geladen. */',
-'standard.css' => '/* Das folgende CSS wird für Benutzer der Klassik-Benutzeroberfläche geladen. Für allgemeingültige Benutzeroberflächen-Anpassungen bitte [[MediaWiki:Common.css]] bearbeiten. */',
-'nostalgia.css' => '/* Das folgende CSS wird für Benutzer der Nostalgie-Benutzeroberfläche geladen. Für allgemeingültige Benutzeroberflächen-Anpassungen bitte [[MediaWiki:Common.css]] bearbeiten. */',
'cologneblue.css' => '/* Das folgende CSS wird für Benutzer der Kölnisch-Blau-Benutzeroberfläche geladen. Für allgemeingültige Benutzeroberflächen-Anpassungen bitte [[MediaWiki:Common.css]] bearbeiten. */',
'monobook.css' => '/* Das folgende CSS wird für Benutzer der MonoBook-Benutzeroberfläche geladen */',
-'myskin.css' => '/* Das folgende CSS wird für Benutzer der MySkin-Benutzeroberfläche geladen. Für allgemeingültige Benutzeroberflächen-Anpassungen bitte [[MediaWiki:Common.css]] bearbeiten. */',
-'chick.css' => '/* Das folgende CSS wird für Benutzer der Küken-Benutzeroberfläche geladen. Für allgemeingültige Benutzeroberflächen-Anpassungen bitte [[MediaWiki:Common.css]] bearbeiten. */',
-'simple.css' => '/* Das folgende CSS wird für Benutzer der Einfach-Benutzeroberfläche geladen. Für allgemeingültige Benutzeroberflächen-Anpassungen bitte [[MediaWiki:Common.css]] bearbeiten. */',
'modern.css' => '/* Das folgende CSS wird für Benutzer der Modern-Benutzeroberfläche geladen. Für allgemeingültige Benutzeroberflächen-Anpassungen bitte MediaWiki:Common.css bearbeiten. */',
'vector.css' => '/* Das folgende CSS wird für Benutzer der Vector-Benutzeroberfläche geladen. Für allgemeingültige Benutzeroberflächen-Anpassungen bitte [[MediaWiki:Common.css]] bearbeiten. */',
'print.css' => '/* Das folgende CSS wird in der Druckausgabe geladen. */',
# Scripts
'common.js' => '/* Das folgende JavaScript wird für alle Benutzer geladen. */',
-'standard.js' => '/* Das folgende JavaScript wird für Benutzer der Klassik-Benutzeroberfläche geladen. Allgemeingültiges JavaScript bitte in [[MediaWiki:Common.js]] eintragen. */',
-'nostalgia.js' => '/* Das folgende JavaScript wird für Benutzer der Nostalgie-Benutzeroberfläche geladen. Allgemeingültiges JavaScript bitte in [[MediaWiki:Common.js]] eintragen. */',
'cologneblue.js' => '/* Das folgende JavaScript wird für Benutzer der Kölnisch-Blau-Benutzeroberfläche geladen. Allgemeingültiges JavaScript bitte in [[MediaWiki:Common.js]] eintragen. */',
'monobook.js' => '/* Das folgende JavaScript wird für Benutzer der MonoBook-Benutzeroberfläche geladen */',
-'myskin.js' => '/* Das folgende JavaScript wird für Benutzer der MySkin-Benutzeroberfläche geladen. Allgemeingültiges JavaScript bitte in [[MediaWiki:Common.js]] eintragen. */',
-'chick.js' => '/* Das folgende JavaScript wird für Benutzer der Küken-Benutzeroberfläche geladen. Allgemeingültiges JavaScript bitte in [[MediaWiki:Common.js]] eintragen. */',
-'simple.js' => '/* Das folgende JavaScript wird für Benutzer der Einfach-Benutzeroberfläche geladen. Allgemeingültiges JavaScript bitte in [[MediaWiki:Common.js]] eintragen. */',
'modern.js' => '/* Das folgende JavaScript wird für Benutzer der Modern-Benutzeroberfläche geladen. Allgemeingültiges JavaScript bitte in [[MediaWiki:Common.js]] eintragen. */',
'vector.js' => '/* Das folgende JavaScript wird für Benutzer der Vector-Benutzeroberfläche geladen. Allgemeingültiges JavaScript bitte in [[MediaWiki:Common.js]] eintragen. */',
'group-autoconfirmed.js' => '/* Das folgende JavaScript wird nur für automatisch bestätigte Benutzer geladen. */',
'pageinfo-category-files' => 'Anzahl der Dateien',
# Skin names
-'skinname-standard' => 'Klassik',
-'skinname-nostalgia' => 'Nostalgie',
'skinname-cologneblue' => 'Kölnisch Blau',
'skinname-monobook' => 'MonoBook',
-'skinname-myskin' => 'MySkin',
-'skinname-chick' => 'Küken',
-'skinname-simple' => 'Einfach',
'skinname-modern' => 'Modern',
'skinname-vector' => 'Vector',
$5
Dieser Bestätigungscode ist gültig bis $4.',
-'confirmemail_invalidated' => 'E-Mail-Adressbestätigung abbrechen',
+'confirmemail_invalidated' => 'Die E-Mail-Adressbestätigung wurde abgebrochen.',
'invalidateemail' => 'E-Mail-Adressbestätigung abbrechen',
# Scary transclusion
Xızmetkarê kılitkerdışi wa bewni ro enay wa çımra ravyarno: "$3".',
'invalidtitle-knownnamespace' => 'Canemey "$2" u metnê "$3" xırabo',
'invalidtitle-unknownnamespace' => 'Sernameye nêşınasiya yana amraiya canameyo $1 u metno "$2" xırab',
-'exception-nologin' => 'Tı cı nêkewtê',
+'exception-nologin' => 'Şıma cıkewtış nêvıraşto',
'exception-nologin-text' => 'Na pele ya zi nê karkerdışi rê nê wiki de cıkewtış icab keno.',
# Virus scanner
'welcomeuser' => 'Xeyr ameyê $1',
'welcomecreation-msg' => 'Hesabê şıma abiyo.
[[Special:Preferences|{{SITENAME}} vurnayişê tercihanê xo]], xo vir ra mekere.',
-'yourname' => 'Namey karberi',
+'yourname' => 'Nameyê karberi:',
'yourpassword' => 'Parola',
'yourpasswordagain' => 'Parola reyna bınusne:',
'remembermypassword' => 'Parola mı nê cıgeyrayoği de bia xo viri (seba tewr zêde $1 {{PLURAL:$1|roce|rocan}})',
'userloginnocreate' => 'Cı kewe',
'logout' => 'Bıveciye',
'userlogout' => 'Bıveciye',
-'notloggedin' => 'Hesab akerde niyo',
+'notloggedin' => 'Şıma cıkewtış nêvıraşto',
'nologin' => "Hesabê şıma çıniyo? '''$1'''.",
'nologinlink' => 'Yew hesab ake',
'createaccount' => 'Hesab vıraze',
'passwordreset-legend' => 'Parola reset ke',
'passwordreset-disabled' => 'Parola reset kerdış ena viki sera qefılneyayo.',
'passwordreset-pretext' => '{{PLURAL:$1||Enê cerenan ra jeweri defiye de}}',
-'passwordreset-username' => 'Namey karberi:',
+'passwordreset-username' => 'Nameyê karberi:',
'passwordreset-domain' => 'Domain:',
'passwordreset-capture' => 'neticey e-postay bımocne?',
'passwordreset-capture-help' => 'Şıma na dorek morkerê se, e-posta (idareten eposta ya) şıma rê yana karbera rê rışêno.',
'prefs-emailconfirm-label' => 'Tesdiqiya E-posta:',
'prefs-textboxsize' => 'Ebatê pencerey vurnayışi',
'youremail' => 'E-Mail (mecbur niyo) *:',
-'username' => 'Namey karberi:',
+'username' => '{{GENDER:$1|Nameyê karberi}}:',
'uid' => 'Namey karberi:',
'prefs-memberingroups' => 'Ezayê {{PLURAL:$1|grube|gruban}}:',
'prefs-memberingroups-type' => '$1',
'rcshowhideminor' => 'Vurnayışanê werdiyan $1',
'rcshowhidebots' => 'Botan $1',
'rcshowhideliu' => 'Karberanê qeydınan $1',
-'rcshowhideanons' => 'Karberanê anoniman $1',
+'rcshowhideanons' => 'Karberê bênamey $1',
'rcshowhidepatr' => '$1 vurnayışê ke dewriya geyrayê',
'rcshowhidemine' => 'Vurnayışanê mı $1',
'rclinks' => 'Peyniya $2 rocan de $1 vurnayışan bımocne <br />$3',
'uploadbtn' => 'Dosya bar ke',
'reuploaddesc' => 'Barkerdışi iptal ke u peyser şo formê barkerdışi',
'upload-tryagain' => 'Deskripyonê dosyayî ke vurîya ey qeyd bike',
-'uploadnologin' => 'Nicikewte',
+'uploadnologin' => 'Şıma cıkewtış nêvıraşto',
'uploadnologintext' => 'Ti gani [[Special:UserLogin|cikewte]] biyo ke dosya bar bike.',
'upload_directory_missing' => 'Direktorê dosyayê ($1)î biyo vînî u webserver de nieşkeno viraziye.',
'upload_directory_read_only' => 'Direktorê dosyayê ($1)î webserver de nieşkeno binuse.',
'listusers-noresult' => 'karber nêdiyayo/a.',
'listusers-blocked' => '(blok biy)',
-# Special:ActiveUsers
-'activeusers' => 'Listey karberan de aktivan',
-'activeusers-intro' => 'Ena yew listeya karberê ke $1 {{PLURAL:$1|roc|rocan}} ra tepya iştiraq kerdo ênan mocneno.',
-'activeusers-count' => 'Karberi {{PLURAL:$3|roce peyni de|$3 roca peyni de}} $1 {{PLURAL:$1|vurnayış|vurnayışi}} kerdê',
-'activeusers-from' => 'Enê karberi ra tepya bımocne:',
-'activeusers-hidebots' => 'Botan bınımne',
-'activeusers-hidesysops' => 'İdarekerdoğan bınımne',
-'activeusers-noresult' => 'Karberi nêdiyayê.',
-
# Special:ListGroupRights
'listgrouprights' => 'heqê grubê karberi',
'listgrouprights-summary' => 'wikiya cêrın a ke tede grubê karberi nişane biyê, listeya heqê cıresayişê inan o.
'watchlistfor2' => 'Qandê $1 ($2)',
'nowatchlist' => 'listeya temaşa kerdıişê şıma de yew madde zi çina.',
'watchlistanontext' => 'qey vurnayişê maddeya listeya temaşakerdişi $1.',
-'watchnologin' => 'Şıma de nêkewtê',
+'watchnologin' => 'Şıma cıkewtış nêvıraşto',
'watchnologintext' => 'qey vurnayişê listeya temaşakerdışi [[Special:UserLogin|gani şıma hesab akeri]].',
'addwatch' => 'Listeyê seyri deke',
'addedwatchtext' => 'Ma pele "[[:$1]]" zerri [[Special:Watchlist|watchlist]]ê tı kerd de.
Oturse, tı gani peleyê mınaqeşeyê manually beri.",
'movearticle' => 'Pele bere:',
'moveuserpage-warning' => "'''Diqet:''' Ti eka yew pelê karberi beni. Diqet bike teyna pel beni feqat ena pele reyna nameyê newi \"nebeno''.",
-'movenologin' => 'Şıma de nêkewtê',
+'movenologin' => 'Şıma cıkewtış nêvıraşto',
'movenologintext' => 'qey vurnayişê nameyê peli şıma gani qeyd kerde u cıkewteyê [[Special:UserLogin|sistemi]] bıbiy.',
'movenotallowed' => 'desturê şıma çino, şıma pelan bıkırışi',
'movenotallowedfile' => 'desturê şıma çino, şıma pelan bıkırışi',
'tooltip-pt-watchlist' => 'Lista pelanê ke to gırewtê seyrkerdış',
'tooltip-pt-mycontris' => 'Yew lista iştıraqanê şıma',
'tooltip-pt-login' => 'Mayê şıma ronıştış akerdışi rê dawet keme; labelê ronıştış mecburi niyo',
-'tooltip-pt-anonlogin' => 'Seba cıkewtışi şıma rê dewato; labelê, no zeruri niyo',
+'tooltip-pt-anonlogin' => 'Seba cıkewtışê şıma rê dewato; labelê, no zeruri niyo',
'tooltip-pt-logout' => 'Bıveciye',
'tooltip-ca-talk' => 'Zerrey pela sero werênayış',
'tooltip-ca-edit' => 'Tı şenay na pele bıvurnê.
'pageinfo-category-files' => 'Amarê dosyeyan',
# Skin names
-'skinname-standard' => 'Klasik',
-'skinname-nostalgia' => 'Nostalciya',
'skinname-cologneblue' => 'Cologne Blue',
'skinname-monobook' => 'MonoBook',
-'skinname-myskin' => 'MySkin',
-'skinname-chick' => 'Şıq',
-'skinname-simple' => 'Rehat',
'skinname-modern' => 'Modern',
'skinname-vector' => 'Vektor',
'logentry-delete-revision' => '$1 $3: pela da $4 dı {{PLURAL:$5|jew revizyon|$5 revizyon}} asayışê cı vurna',
'logentry-delete-event-legacy' => '$1 Asayışê {{GENDER:$2|vurnayışê}} $3 dekerde de',
'logentry-delete-revision-legacy' => '$1 revizyonê pela da $3 asayışê cı vurna',
-'logentry-suppress-delete' => '$1 $3 rê {{GENDER:$2|pıloxneyê}}',
+'logentry-suppress-delete' => '$1 Pela $3 {{GENDER:$2|dewosiyayiye}}',
'logentry-suppress-event' => '$1 asayışê {{PLURAL:$5|weqey rocaka|$5 weqey rocekan}} $3: $4 miyanıki vurna',
'logentry-suppress-revision' => '$1 $3: pela da $4 dı {{PLURAL:$5|jew revizyon|$5 revizyon}} asayışê cı xısusiye vurna',
'logentry-suppress-event-legacy' => '$1 Asayışê vurnayışê ciyo xısusiyeta cı $3 dekerde de',
'revdelete-uname-unhid' => 'namey karberi ne nımteyo',
'revdelete-restricted' => 'verger (vergırewtış) ê ke qey xızmkaran biye',
'revdelete-unrestricted' => 'verger (ver gırewtış) ê ke qey xızmkaran diyê wera (wedariyê)',
-'logentry-move-move' => '$1 pera $3 {{GENDER:$2|berd}} $4',
+'logentry-move-move' => '$1 pela $3 {{GENDER:$2|berde}} $4',
'logentry-move-move-noredirect' => "$1'i pelay $3 raçarnayış neker dı u berd $4",
'logentry-move-move_redir' => 'Hetenayışi sera pela $3 ra $1 {{GENDER:$2|berd}} pela $4',
'logentry-move-move_redir-noredirect' => '$1 hetenayışê qeydê pela da $3 ahulnê $4 sero hetenayış vıraşt',
'logentry-newusers-newusers' => 'Hesabê karberê $1 {{GENDER:$2|vıraziya}}',
'logentry-newusers-create' => 'Hesabê karberi $1 vıraziya',
'logentry-newusers-create2' => 'Hesabê karberi $1 terefê $3 ra vıraziya',
-'logentry-newusers-autocreate' => 'Hesabê $1 Otomatikmen {{GENDER:$2|vıraşt}}',
+'logentry-newusers-autocreate' => 'Hesabê karberi $1 otomatikmen {{GENDER:$2|vıraşt}}',
'logentry-rights-rights' => '$1 qandê $3 rê ezayina grube $4 ra $5 vuriye',
'logentry-rights-rights-legacy' => '$1 qandê $3 rê ezayina grube vuriye',
'logentry-rights-autopromote' => '$1 otomatikmen $4 ra terfi bi ra $5',
'listusers-noresult' => 'Žeden wužywaŕ njejo se namakał.',
'listusers-blocked' => '(blokěrowany)',
-# Special:ActiveUsers
-'activeusers' => 'Lisćina aktiwnych wužywarjow',
-'activeusers-intro' => 'To jo lisćina wužywarjow, kotrež su byli aktiwne za {{PLURAL:$1|slědny źeń|slědnej $1 dnja|slědne $1 dny|slědnych $1 dnjow}}.',
-'activeusers-count' => '$1 {{PLURAL:$1|akcija|akciji|akcije|akcijow}} w {{PLURAL:$3|slědnem dnju|slědnyma $3 dnjoma|slědnych $3 dnjach}}',
-'activeusers-from' => 'Wužywarjow zwobrazniś, zachopinajucy z:',
-'activeusers-hidebots' => 'Boty schowaś',
-'activeusers-hidesysops' => 'Administratorow schowaś',
-'activeusers-noresult' => 'Žedne wužywarje namakane.',
-
# Special:ListGroupRights
'listgrouprights' => 'Pšawa wužywarskeje kupki',
'listgrouprights-summary' => 'To jo lisćina wužywarskich kupkow definěrowanych w toś tom wikiju z jich zwězanymi pśistupnymi pšawami. Móžo [[{{MediaWiki:Listgrouprights-helppage}}|pśidatne informacije]] wó jadnotliwych pšawach daś.',
'proxyblocksuccess' => 'Gótowe.',
'sorbsreason' => 'Twója IP-adresa jo w DNSBL we {{GRAMMAR:lokatiw|{{SITENAME}}}} zapisana ako wócynjony proxy.',
'sorbs_create_account_reason' => 'Twója IP-adresa jo w DNSBL {{GRAMMAR:genitiw|{{SITENAME}}}} ako wócynjony proxy zapisana. Njejo móžno, nowe wužywarske konta załožowaś.',
+'xffblockreason' => 'IP-adresa w header X-Forwarded-For, pak twója pak ta proksy-serwera, kótaryž wužywaš, jo se zablokěrowała. Spócetna pśicyna za blokěrowanje jo była: $1',
'cant-block-while-blocked' => 'Njesmějoš žednych drugich wužywarjow blokěrowaś, mjaztym až ty sy blokěrowany.',
'cant-see-hidden-user' => 'Wužywaŕ, kótaregož wopytujoš blokěrowaś, jo južo zablokěrowany a schowany. Dokulaž njamaš pšawo wužywarja schowaś, njamóžoš blokěrowanje wužywarja wiźeś abo wobźěłaś.',
'ipbblocked' => 'Njamóžoš drugich wužywarjow blokěrowaś abo wótblokěrowaś, dokulaž ty sam jo zablokěrowany',
'pageinfo-category-files' => 'Licba datajow',
# Skin names
-'skinname-standard' => 'Klasiski',
-'skinname-nostalgia' => 'Nostalgiski',
'skinname-cologneblue' => 'Kölnski Módry',
'skinname-monobook' => 'MonoBook',
-'skinname-myskin' => 'Mój šat',
-'skinname-chick' => 'Kurjetko',
-'skinname-simple' => 'Jadnorje',
'skinname-modern' => 'Moderny',
# Patrolling
[[Special:UnusedCategories|Unused categories]] are not shown here.
Also see [[Special:WantedCategories|wanted categories]].',
-# Special:ActiveUsers
-'activeusers' => 'ހަރަކާތްތެރި މެމްބަރުންގެ ލިސްޓު',
-'activeusers-hidebots' => 'ބޮޓް ފޮރުއްވާ',
-'activeusers-hidesysops' => 'އެޑްމިނިސްޓްރޭޓަރުން ފޮރުއްވާ',
-
# Special:ListGroupRights
'listgrouprights-members' => '(މެމްބަރުންގެ ލިސްޓު)',
'nolicense' => 'None selected',
'licenses' => '-', # do not translate or duplicate this message to other languages
'license-nopreview' => '(Preview not available)',
-'upload_source_url' => ' (a valid, publicly accessible URL)',
-'upload_source_file' => ' (a file on your computer)',
+'upload_source_url' => '(a valid, publicly accessible URL)',
+'upload_source_file' => '(a file on your computer)',
# Special:ListFiles
'listfiles-summary' => 'This special page shows all uploaded files.
'sorbsreason' => 'Your IP address is listed as an open proxy in the DNSBL used by {{SITENAME}}.',
'sorbs_create_account_reason' => 'Your IP address is listed as an open proxy in the DNSBL used by {{SITENAME}}.
You cannot create an account',
+'xffblockreason' => 'An IP address present in the X-Forwarded-For header, either yours or that of a proxy server you are using, has been blocked. The original block reason was: $1',
'cant-block-while-blocked' => 'You cannot block other users while you are blocked.',
'cant-see-hidden-user' => "The user you are trying to block has already been blocked and hidden.
Since you do not have the hideuser right, you cannot see or edit the user's block.",
# Stylesheets
'common.css' => '/* CSS placed here will be applied to all skins */', # only translate this message to other languages if you have to change it
-'standard.css' => '/* CSS placed here will affect users of the Standard skin */', # only translate this message to other languages if you have to change it
-'nostalgia.css' => '/* CSS placed here will affect users of the Nostalgia skin */', # only translate this message to other languages if you have to change it
'cologneblue.css' => '/* CSS placed here will affect users of the Cologne Blue skin */', # only translate this message to other languages if you have to change it
'monobook.css' => '/* CSS placed here will affect users of the MonoBook skin */', # only translate this message to other languages if you have to change it
-'myskin.css' => '/* CSS placed here will affect users of the MySkin skin */', # only translate this message to other languages if you have to change it
-'chick.css' => '/* CSS placed here will affect users of the Chick skin */', # only translate this message to other languages if you have to change it
-'simple.css' => '/* CSS placed here will affect users of the Simple skin */', # only translate this message to other languages if you have to change it
'modern.css' => '/* CSS placed here will affect users of the Modern skin */', # only translate this message to other languages if you have to change it
'vector.css' => '/* CSS placed here will affect users of the Vector skin */', # only translate this message to other languages if you have to change it
'print.css' => '/* CSS placed here will affect the print output */', # only translate this message to other languages if you have to change it
# Scripts
'common.js' => '/* Any JavaScript here will be loaded for all users on every page load. */', # only translate this message to other languages if you have to change it
-'standard.js' => '/* Any JavaScript here will be loaded for users using the Standard skin */', # only translate this message to other languages if you have to change it
-'nostalgia.js' => '/* Any JavaScript here will be loaded for users using the Nostalgia skin */', # only translate this message to other languages if you have to change it
'cologneblue.js' => '/* Any JavaScript here will be loaded for users using the Cologne Blue skin */', # only translate this message to other languages if you have to change it
'monobook.js' => '/* Any JavaScript here will be loaded for users using the MonoBook skin */', # only translate this message to other languages if you have to change it
-'myskin.js' => '/* Any JavaScript here will be loaded for users using the MySkin skin */', # only translate this message to other languages if you have to change it
-'chick.js' => '/* Any JavaScript here will be loaded for users using the Chick skin */', # only translate this message to other languages if you have to change it
-'simple.js' => '/* Any JavaScript here will be loaded for users using the Simple skin */', # only translate this message to other languages if you have to change it
'modern.js' => '/* Any JavaScript here will be loaded for users using the Modern skin */', # only translate this message to other languages if you have to change it
'vector.js' => '/* Any JavaScript here will be loaded for users using the Vector skin */', # only translate this message to other languages if you have to change it
'group-autoconfirmed.js' => '/* Any JavaScript here will be loaded for autoconfirmed users only */', # only translate this message to other languages if you have to change it
'pageinfo-category-files' => 'Number of files',
# Skin names
-'skinname-standard' => 'Classic', # only translate this message to other languages if you have to change it
-'skinname-nostalgia' => 'Nostalgia', # only translate this message to other languages if you have to change it
'skinname-cologneblue' => 'Cologne Blue', # only translate this message to other languages if you have to change it
'skinname-monobook' => 'MonoBook', # only translate this message to other languages if you have to change it
-'skinname-myskin' => 'MySkin', # only translate this message to other languages if you have to change it
-'skinname-chick' => 'Chick', # only translate this message to other languages if you have to change it
-'skinname-simple' => 'Simple', # only translate this message to other languages if you have to change it
'skinname-modern' => 'Modern', # only translate this message to other languages if you have to change it
'skinname-vector' => 'Vector', # only translate this message to other languages if you have to change it
* @author PoLuX124
* @author Ralgis
* @author Remember the dot
+ * @author Remux
* @author Richard Wolf VI
* @author Sanbec
* @author Savh
'blocked-mailpassword' => 'Tu dirección IP está bloqueada, y no se te permite el uso de la función de recuperación de contraseñas para prevenir abusos.',
'eauthentsent' => 'Se ha enviado un correo electrónico de confirmación a la dirección especificada.
Antes de que se envíe cualquier otro correo a la cuenta tienes que seguir las instrucciones enviadas en el mensaje para así confirmar que la dirección te pertenece.',
-'throttled-mailpassword' => 'Ya se ha enviado un recordatorio de password en {{PLURAL:$1|la última hora|las últimas $1 horas}}.
-Para evitar los abusos, solo se enviará un recordatorio de password cada {{PLURAL:$1|hora|$1 horas}}.',
+'throttled-mailpassword' => 'Ya se ha enviado un recordatorio de contraseña en {{PLURAL:$1|la última hora|las últimas $1 horas}}.
+Para evitar los abusos, solo se enviará un recordatorio de contraseña cada {{PLURAL:$1|hora|$1 horas}}.',
'mailerror' => 'Error al enviar correo: $1',
'acct_creation_throttle_hit' => 'Los visitantes a este wiki usando tu dirección IP han creado {{PLURAL:$1|una cuenta|$1 cuentas}} en el último día, lo cual es lo máximo permitido en este periodo de tiempo.
Como resultado, los visitantes usando esta dirección IP no pueden crear más cuentas en este momento.',
# Special:PasswordReset
'passwordreset' => 'Restablecimiento de contraseña',
-'passwordreset-text' => 'Completa este formulario para recibir un recordatorio por correo electrónico de los detalles de tu cuenta.',
+'passwordreset-text' => 'Completa este formulario para restablecer la contraseña.',
'passwordreset-legend' => 'Restablecer contraseña',
'passwordreset-disabled' => 'Se ha desactivado el restablecimiento de contraseñas en este wiki.',
'passwordreset-pretext' => '{{PLURAL:$1||Introduce uno de los elementos de datos siguientes}}',
ignorar este mensaje y continuar usando tu contraseña anterior.',
'passwordreset-emailelement' => 'Nombre de usuario: $1
Contraseña temporal: $2',
-'passwordreset-emailsent' => 'Se ha enviado un correo electrónico de recordatorio.',
-'passwordreset-emailsent-capture' => 'Un recordatorio por correo electrónico ha sido enviado, que se muestra a continuación.',
-'passwordreset-emailerror-capture' => 'Un recordatorio por correo electrónico fue generado, que se muestra a continuación, pero el envío al usuario falló: $1',
+'passwordreset-emailsent' => 'Se ha enviado un correo electrónico para el restablecimiento de tu contraseña.',
+'passwordreset-emailsent-capture' => 'Se ha enviado un correo para el restablecimiento de la contraseña, el cual se muestra a continuación.',
+'passwordreset-emailerror-capture' => 'Se generó un correo electrónico de restablecimiento de contraseña, que se muestra a continuación, pero el envío al usuario falló: $1',
# Special:ChangeEmail
'changeemail' => 'Cambiar la dirección de correo electrónico',
'listusers-noresult' => 'No se encontró al usuario.',
'listusers-blocked' => '({{GENDER:$1|bloqueado|bloqueada}})',
-# Special:ActiveUsers
-'activeusers' => 'Lista de usuarios activos',
-'activeusers-intro' => 'Esta es una lista de usuarios que han tenido alguna actividad en los últimos $1 {{PLURAL:$1|día|días}}.',
-'activeusers-count' => '$1 {{PLURAL:$1|acción|acciones}} en los últimos {{PLURAL:$3|día|$3 días}}',
-'activeusers-from' => 'Mostrando a los usuarios empezando por:',
-'activeusers-hidebots' => 'Ocultar robots',
-'activeusers-hidesysops' => 'Ocultar administradores',
-'activeusers-noresult' => 'No se encontraron usuarios.',
-
# Special:ListGroupRights
'listgrouprights' => 'Permisos del grupo de usuarios',
'listgrouprights-summary' => 'La siguiente es una lista de los grupos de usuario definidos en esta wiki y de sus privilegios de acceso asociados.
# Stylesheets
'common.css' => '/* El CSS colocado en esta página sera aplicado a todas las pieles (skins) */',
-'standard.css' => '/* El CSS colocado en esta página afectará a los usuarios que usen la piel "Standard" */',
-'nostalgia.css' => '/* El CSS colocado en esta página afectará a los usuarios que usen la piel "Nostalgia" */',
'cologneblue.css' => '/* El CSS colocado en esta página afectará a los usuarios que usen la piel "Cologne Blue" */',
'monobook.css' => '/* El CSS colocado en esta página afectará a los usuarios que usen la piel "MonoBook" */',
-'myskin.css' => '/* El CSS colocado en esta página afectará a los usuarios que usen la piel "MySkin" */',
-'chick.css' => '/* El CSS colocado en esta página afectará a los usuarios que usen la piel ""Chick" */',
-'simple.css' => '/* El CSS colocado en esta página afectará a los usuarios que usen la piel "Simple" */',
'modern.css' => '/* El CSS colocado en esta página afectará a los usuarios que usen la piel "Modern" */',
'vector.css' => '/* El CSS colocado en esta página afectará a los usuarios que usen la piel "Vector" */',
'print.css' => '/* Los estilos CSS colocados aquí afectarán la impresión */',
# Scripts
'common.js' => '/* Cualquier código JavaScript escrito aquí se cargará para todos los usuarios en cada carga de página */',
-'standard.js' => '/* Cualquier código JavaScript escrito aquí se cargará para todos los usuarios que usen la piel Estandar */',
-'nostalgia.js' => '/* Cualquier código JavaScript escrito aquí se cargará para todos los usuarios que usen la piel Nostalgia. */',
'cologneblue.js' => '/* Cualquier código JavaScript escrito aquí se cargará para todos los usuarios que usen la piel Colonia azul */',
'monobook.js' => '/* El código JavaScript que se ponga aquí será cargado por los usuarios de la piel MonoBook */',
-'myskin.js' => '/* Cualquier código JavaScript escrito aquí se cargará para todos los usuarios que usen la piel Mi piel */',
-'chick.js' => '/* Cualquier código JavaScript escrito aquí se cargará para todos los usuarios que usen la piel Pollito */',
-'simple.js' => '/* Cualquier código JavaScript escrito aquí se cargará para todos los usuarios que usen la piel Simple */',
'modern.js' => '/* Cualquier código JavaScript escrito aquí se cargará para todos los usuarios que usen la piel Moderna */',
'vector.js' => '/* Cualquier código JavaScript escrito aquí se cargará para todos los usuarios que usen la piel Vector */',
'group-autoconfirmed.js' => '/* Cualquier código JavaScript escrito aquí se cargará para todos los usuarios del grupo Usuarios autoconfirmados */',
'pageinfo-category-files' => 'Número de archivos',
# Skin names
-'skinname-standard' => 'Estándar',
-'skinname-nostalgia' => 'Nostalgia',
'skinname-cologneblue' => 'Colonia azul',
'skinname-monobook' => 'MonoBook',
-'skinname-myskin' => 'Mi piel',
-'skinname-chick' => 'Pollito',
-'skinname-simple' => 'Simple',
'skinname-modern' => 'Moderna',
'skinname-vector' => 'Vector',
'sqlite-no-fts' => '$1 sin soporte para búsqueda de texto completo',
# New logging system
-'logentry-delete-delete' => '$1 borró la página «$3»',
+'logentry-delete-delete' => '$1 {{GENDER:$2|borró}} la página «$3»',
'logentry-delete-restore' => '$1 restauró la página «$3»',
-'logentry-delete-event' => '$1 modificó la visibilidad de {{PLURAL:$5|un evento del registro|$5 eventos del registro}} en $3: $4',
+'logentry-delete-event' => '$1 {{GENDER:$2|modificó}} la visibilidad de {{PLURAL:$5|un evento|$5 eventos}} del registro en $3: $4',
'logentry-delete-revision' => '$1 modificó la visibilidad de {{PLURAL:$5|una edición|$5 ediciones}} en la página $3: $4',
'logentry-delete-event-legacy' => '$1 modificó la visibilidad de los eventos del registro en $3',
'logentry-delete-revision-legacy' => '$1 modificó la visibilidad de las ediciones en la página $3',
-'logentry-suppress-delete' => '$1 borró (restricciones para administradores aplicadas) la página $3',
+'logentry-suppress-delete' => '$1 {{GENDER:$2|borró}}, con restricciones para administradores aplicadas, la página $3',
'logentry-suppress-event' => '$1 modificó secretamente la visibilidad de {{PLURAL:$5|un evento del registro|$5 eventos del registro}} en $3: $4',
'logentry-suppress-revision' => '$1 modificó secretamente la visibilidad de {{PLURAL:$5|una edición|$5 ediciones}} en la página $3: $4',
'logentry-suppress-event-legacy' => '$1 modificó secretamente la visibilidad de los eventos del registro en $3',
'passwordreset-text' => 'Täida see vorm, et oma parool lähtestada.',
'passwordreset-legend' => 'Parooli lähtestamine',
'passwordreset-disabled' => 'Selles vikis on paroolide lähtestamine keelatud.',
-'passwordreset-pretext' => '{{PLURAL:$1||Sisesta üks järgmistest andmeüksustest}}',
+'passwordreset-pretext' => '{{PLURAL:$1||Sisesta üks järgmistest andmeüksustest.}}',
'passwordreset-username' => 'Kasutajanimi:',
'passwordreset-domain' => 'Domeen:',
'passwordreset-capture' => 'Näita lähetatavat e-kirja?',
* Sobimatu isiklik teave
*: ''kodune aadress ja telefoninumber, sotsiaalhoolekandenumber jne''",
'revdelete-legend' => 'Nähtavuse piirangute seadmine',
-'revdelete-hide-text' => 'Peida redigeerimise tekst',
+'revdelete-hide-text' => 'Peida redaktsiooni tekst',
'revdelete-hide-image' => 'Peida faili sisu',
'revdelete-hide-name' => 'Peida toiming ja sihtmärk',
'revdelete-hide-comment' => 'Peida resümee',
# User rights
'userrights' => 'Kasutaja õiguste muutmine',
'userrights-lookup-user' => 'Kasutajarühma muutmine',
-'userrights-user-editname' => 'Sisesta kasutajatunnus:',
+'userrights-user-editname' => 'Sisesta kasutajanimi:',
'editusergroup' => 'Muuda kasutajarühma',
'editinguser' => "Kasutaja '''[[User:$1|$1]]''' $2 õiguste muutmine",
'userrights-editusergroup' => 'Kasutajarühma valik',
# Rights
'right-read' => 'Lugeda lehekülgi',
-'right-edit' => 'Redigeerida lehekülje sisu',
+'right-edit' => 'Redigeerida lehekülgi',
'right-createpage' => 'Luua lehekülgi (mis pole aruteluleheküljed)',
'right-createtalk' => 'Luua arutelulehekülgi',
'right-createaccount' => 'Luua uusi kasutajakontosid',
'right-protect' => 'Muuta kaitsetasemeid ja redigeerida kaitstud lehekülgi',
'right-editprotected' => 'Muuta kaitstud lehekülgi, millel ei ole kaskaadkaitset',
'right-editinterface' => 'Muuta kasutajaliidest',
-'right-editusercssjs' => 'Redigeerida teiste kasutajate CSS ja JS faile',
-'right-editusercss' => 'Redigeerida teiste kasutajate CSS faile',
-'right-edituserjs' => 'Redigeerida teiste kasutajate JS faile',
+'right-editusercssjs' => 'Redigeerida teiste kasutajate CSS- ja JS-faile',
+'right-editusercss' => 'Redigeerida teiste kasutajate CSS-faile',
+'right-edituserjs' => 'Redigeerida teiste kasutajate JS-faile',
'right-rollback' => 'Tühistada otsekohe lehekülje viimase redigeerija muudatused',
'right-markbotedits' => 'Märkida muudatuse tühistamine robotimuudatusena',
'right-noratelimit' => 'Mööduda toimingumäära limiitidest',
'listusers-noresult' => 'Kasutajat ei leitud.',
'listusers-blocked' => '(blokeeritud)',
-# Special:ActiveUsers
-'activeusers' => 'Aktiivsete kasutajate nimekiri',
-'activeusers-intro' => 'See on loetelu kasutajatest, kes on viimase $1 {{PLURAL:$1|päev|päeva}} jooksul midagi teinud.',
-'activeusers-count' => '$1 {{PLURAL:$1|toiming|toimingut}} viimase {{PLURAL:$3|päeva|$3 päeva}} jooksul',
-'activeusers-from' => 'Näita kasutajaid alates:',
-'activeusers-hidebots' => 'Peida robotid',
-'activeusers-hidesysops' => 'Peida administraatorid',
-'activeusers-noresult' => 'Kasutajaid ei leidunud.',
-
# Special:ListGroupRights
'listgrouprights' => 'Kasutajarühma õigused',
'listgrouprights-summary' => 'Siin on loetletud selle viki kasutajarühmad ja rühmaga seotud õigused.
'email-legend' => 'Saada e-kiri {{GRAMMAR:genitive|{{SITENAME}}}} kasutajale',
'emailfrom' => 'Kellelt:',
'emailto' => 'Kellele:',
-'emailsubject' => 'Pealkiri:',
+'emailsubject' => 'Teema:',
'emailmessage' => 'Sõnum:',
'emailsend' => 'Saada',
'emailccme' => 'Saada mulle koopia.',
'emailccsubject' => 'Koopia sinu sõnumist kasutajale $1: $2',
-'emailsent' => 'E-post saadetud',
+'emailsent' => 'E-kiri saadetud',
'emailsenttext' => 'Sinu teade on e-kirjaga saadetud.',
'emailuserfooter' => 'Selle e-kirja saatis $1 {{GRAMMAR:elative|{{SITENAME}}}} kasutajale $2 toimingu "Saada sellele kasutajale e-kiri" abil.',
'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.
-Kõik toodud kellaajad järgivad serveriaega.',
+'dellogpagetext' => 'Allpool on viimaste kustutamiste loend.',
'deletionlog' => 'kustutamislogi',
'reverted' => 'Pöörduti tagasi varasemale versioonile',
'deletecomment' => 'Põhjus:',
'deletereasonotherlist' => 'Muu põhjus',
'deletereason-dropdown' => '*Harilikud kustutamise põhjused
** Autori palve
-** Autoriõiguste rikkumine
+** Autoriõiguse rikkumine
** Vandalism',
'delete-edit-reasonlist' => 'Redigeeri kustutamise põhjuseid',
'delete-toobig' => 'See lehekülg on pika redigeerimisajalooga – üle {{PLURAL:$1|ühe muudatuse|$1 muudatuse}}.
'ipadressorusername' => 'IP-aadress või kasutajanimi:',
'ipbexpiry' => 'Kehtivus:',
'ipbreason' => 'Põhjus:',
-'ipbreasonotherlist' => 'Muul põhjusel',
+'ipbreasonotherlist' => 'Muu põhjusel',
'ipbreason-dropdown' => '*Tavalised blokeerimise põhjused
** Valeandmete lisamine
** Lehekülgedelt sisu kustutamine
'movenotallowedfile' => 'Sul ei ole failide teisaldamise õigust.',
'cant-move-user-page' => 'Sul ei ole õigust teisaldada kasutajalehti (erandiks on kasutajate alamlehed).',
'cant-move-to-user-page' => 'Sul ei ole õigust teisaldada lehekülge kasutajaleheks (ei käi kasutaja alamlehe kohta).',
-'newtitle' => 'Uue pealkirja alla',
+'newtitle' => 'Uue pealkirja alla:',
'move-watch' => 'Jälgi seda lehekülge',
'movepagebtn' => 'Teisalda lehekülg',
'pagemovedsub' => 'Lehekülg on teisaldatud',
# Stylesheets
'common.css' => '/* Siin olevat CSS-i kasutavad kõik kujundused. */',
-'standard.css' => '/* Siin olev CSS puudutab Standard-kujunduse kasutajaid. */',
# Scripts
'common.js' => '/* Siinne JavaScript laaditakse igale kasutajatele igal laaditud leheküljel. */',
'pageinfo-category-files' => 'Failide arv',
# Skin names
-'skinname-standard' => 'Algeline',
-'skinname-nostalgia' => 'Nostalgia',
'skinname-cologneblue' => 'Kölni sinine',
'skinname-monobook' => 'MonoBook',
-'skinname-myskin' => 'Minu kujundus',
-'skinname-chick' => 'Tibu',
-'skinname-simple' => 'Lihtne',
'skinname-modern' => 'Uudne',
'skinname-vector' => 'Vektor',
'file-no-thumb-animation-gif' => "'''Märkus: Tehniliste piirangute tõttu on nii suure eraldusega GIF-piltide pisipildid animeerimata.'''",
# Special:NewFiles
-'newimages' => 'Uute meediafailide galerii',
+'newimages' => 'Uute failide galerii',
'imagelisttext' => "
Järgnevas loendis, mis on sorteeritud $2, on '''$1''' {{PLURAL:$1|fail|faili}}.",
'newimages-summary' => 'Sellel erilehel on viimati üles laaditud failid.',
'exif-model' => 'Kaamera mudel',
'exif-software' => 'Kasutatud tarkvara',
'exif-artist' => 'Autor',
-'exif-copyright' => 'Autoriõiguste omanik',
+'exif-copyright' => 'Autoriõiguse omanik',
'exif-exifversion' => 'Exif-versioon',
'exif-flashpixversion' => 'Toetatud Flashpixi versioon',
'exif-colorspace' => 'Värviruum',
'exif-saturation' => 'Küllastus',
'exif-sharpness' => 'Teravus',
'exif-devicesettingdescription' => 'Seadme seadistuste kirjeldus',
-'exif-imageuniqueid' => 'Üksiku pildi ID',
+'exif-imageuniqueid' => 'Pildi ainuline identifikaator',
'exif-gpsversionid' => 'GPS-tähise versioon',
'exif-gpslatituderef' => 'Põhja- või lõunalaius',
'exif-gpslatitude' => 'Laius',
'exif-gpslongituderef' => 'Ida- või läänepikkus',
'exif-gpslongitude' => 'Pikkus',
-'exif-gpsaltituderef' => 'Viide kõrgusele merepinnast',
+'exif-gpsaltituderef' => 'Kõrgusreferents',
'exif-gpsaltitude' => 'Kõrgus merepinnast',
'exif-gpstimestamp' => 'GPS aeg (aatomikell)',
'exif-gpssatellites' => 'Mõõtmiseks kasutatud satelliidid',
'version-skins' => 'Kujundused',
'version-other' => 'Muu',
'version-mediahandlers' => 'Meediatöötlejad',
-'version-hooks' => 'Redaktsioon',
+'version-hooks' => 'Haagid',
'version-extension-functions' => 'Lisafunktsioonid',
'version-parser-extensiontags' => 'Parseri lisamärgendid',
'version-parser-function-hooks' => 'Parserifunktsioonid',
-'version-hook-name' => 'Redaktsiooni nimi',
+'version-hook-name' => 'Haagi nimi',
'version-hook-subscribedby' => 'Tellijad',
'version-version' => '(Versioon $1)',
'version-license' => 'Litsents',
'hidden-category-category' => 'Kategoria ezkutuak',
'category-subcat-count' => '{{PLURAL:$2|Kategoria honek beste honako azpikategoria baino ez du.|Kategoria honek honako {{PLURAL:$1|azpikategoria du|$1 azpikategoriak ditu}}, guztira dauden $2tik.}}',
'category-subcat-count-limited' => 'Kategoria honek {{PLURAL:$1|azpikategoria hau du|$1 azpikategoria hauek ditu}}.',
-'category-article-count' => '{{PLURAL:$2|Kategoria honek ondorengo orri hau baino ez du.|Ondorengo {{PLURAL:$1|orri hau kategoria honetan dago|$1 orriak kategoria honetan daude}}. Guztira $2 orri dira kategoria honetan.}}',
+'category-article-count' => '{{PLURAL:$2|Kategoria honek ondorengo orri hau baino ez du.|Ondorengo {{PLURAL:$1|orri hau kategoria honetan dago|$1 orriak kategoria honetan daude}}, eta guztira $2 orri dira kategoria honetan.}}',
'category-article-count-limited' => 'Ondorengo {{PLURAL:$1|orri hau kategoria honetan dago.|$1 orri hauek kategoria honetan daude.}}',
-'category-file-count' => '{{PLURAL:$2|Kategoria honek ondorengo fitxategi hau baino ez du.|Ondorengo {{PLURAL:$1|fitxategi hau kategoria honetan dago|$1 fitxategiak kategoria honetan daude}}. Guztira $2 fitxategi dira kategoria honetan.}}',
+'category-file-count' => '{{PLURAL:$2|Kategoria honek ondorengo fitxategi hau baino ez du.|Ondorengo {{PLURAL:$1|fitxategi hau kategoria honetan dago|$1 fitxategiak kategoria honetan daude}}, eta guztira $2 fitxategi dira kategoria honetan.}}',
'category-file-count-limited' => 'Ondorengo {{PLURAL:$1|fitxategia kategoria honetan dago.|$1 fitxategiak kategoria honetan daude.}}',
'listingcontinuesabbrev' => 'jarr.',
'index-category' => 'Indexatutako orrialdeak',
'listusers-noresult' => 'Ez da erabiltzailerik aurkitu.',
'listusers-blocked' => '(blokeatua)',
-# Special:ActiveUsers
-'activeusers' => 'Lankide aktiboen zerrenda',
-'activeusers-count' => '{{PLURAL:$1|Ekintza berri bat|$1 ekintza berri}} azken {{PLURAL:$3|egunean|$3 egunetan}}',
-'activeusers-from' => 'Bilatu honela hasten diren lankideak:',
-'activeusers-hidebots' => 'Ezkutatu bot-ak',
-'activeusers-hidesysops' => 'Ezkutatu administratzaileak',
-'activeusers-noresult' => 'Ez da lankiderik aurkitu.',
-
# Special:ListGroupRights
'listgrouprights' => 'Erabiltzaile talde eskumenak',
'listgrouprights-summary' => 'Ondorengo zerrendak wikian dauden lankide taldeak agertzen dira, beraien eskubideekin.
'pageinfo-protect-cascading-from' => 'Serieko babesak aktibatuta. Sorburua:',
# Skin names
-'skinname-standard' => 'Lehenetsia',
-'skinname-nostalgia' => 'Nostalgia',
'skinname-cologneblue' => 'Cologne Blue',
-'skinname-simple' => 'Arrunta',
'skinname-modern' => 'Modernoa',
# Patrolling
* @author Zack90
* @author ZxxZxxZ
* @author לערי ריינהארט
+ * @author جواد
* @author محک
*/
'listusers-noresult' => 'هیچ کاربری یافت نشد.',
'listusers-blocked' => '(بسته شده)',
-# Special:ActiveUsers
-'activeusers' => 'فهرست کاربران فعال',
-'activeusers-intro' => 'در زیر فهرستی از کاربرانی را میبینید که در $1 {{PLURAL:$1|روز|روز}} گذشته فعالیتی داشتهاند.',
-'activeusers-count' => '$1 {{PLURAL:$1|فعالیت|فعالیت}} در {{PLURAL:$3|روز|$3 روز}} اخیر',
-'activeusers-from' => 'نمایش کاربران با آغاز از:',
-'activeusers-hidebots' => 'نهفتن رباتها',
-'activeusers-hidesysops' => 'نهفتن مدیران',
-'activeusers-noresult' => 'کاربری پیدا نشد.',
-
# Special:ListGroupRights
'listgrouprights' => 'اختیارات گروههای کاربری',
'listgrouprights-summary' => 'فهرست زیر شامل گروههای کاربری تعریف شده در این ویکی و اختیارات داده شده به آنها است.
'mycontris' => 'مشارکتها',
'contribsub2' => 'برای $1 ($2)',
'nocontribs' => 'هیچ تغییری با این مشخصات یافت نشد.',
-'uctop' => ' (بالا)',
+'uctop' => '(بالا)',
'month' => 'در این ماه (و پیش از آن):',
'year' => 'در این سال (و پیش از آن):',
'pageinfo-category-files' => 'تعداد پروندهها',
# Skin names
-'skinname-standard' => 'کلاسیک',
-'skinname-nostalgia' => 'نوستالژی',
'skinname-cologneblue' => 'آبی کلن',
'skinname-monobook' => 'مونوبوک',
-'skinname-myskin' => 'پوستهٔ من',
-'skinname-chick' => 'شیک',
-'skinname-simple' => 'ساده',
'skinname-modern' => 'مدرن',
'skinname-vector' => 'برداری',
'listusers-noresult' => 'Käyttäjiä ei löytynyt.',
'listusers-blocked' => '(estetty)',
-# Special:ActiveUsers
-'activeusers' => 'Aktiivisten käyttäjien lista',
-'activeusers-intro' => 'Tämä on luettelo käyttäjistä, jotka ovat tehneet jotain viimeisen $1 {{PLURAL:$1|päivän}} sisällä.',
-'activeusers-count' => '$1 {{PLURAL:$1|toiminto|toimintoa}} viimeisen {{PLURAL:$3|päivän|$3 päivän}} aikana',
-'activeusers-from' => 'Näytä käyttäjät alkaen',
-'activeusers-hidebots' => 'Piilota botit',
-'activeusers-hidesysops' => 'Piilota ylläpitäjät',
-'activeusers-noresult' => 'Käyttäjiä ei löytynyt.',
-
# Special:ListGroupRights
'listgrouprights' => 'Käyttäjäryhmien oikeudet',
'listgrouprights-summary' => 'Tämä lista sisältää tämän wikin käyttäjäryhmät sekä ryhmiin liitetyt käyttöoikeudet.
Voit palauttaa versioita valikoivasti valitsemalla vain niiden versioiden valintalaatikot, jotka haluat palauttaa.",
'undeleterevisions' => '{{PLURAL:$1|Versio|$1 versiota}} arkistoitu.',
'undeletehistory' => 'Jos palautat sivun, kaikki versiot lisätään sivun historiaan. Jos uusi sivu samalla nimellä on luotu poistamisen jälkeen, palautetut versiot lisätään sen historiaan.',
-'undeleterevdel' => "Palautusta ei tehdä, jos sen seurauksena sivun uusin versio olisi osittain piilotettu.
-Tässä tilanteessa älä valitse palautettavaksi näkyviin viimeisintä poistettua versiota tai poista version piilotus.<br />
-Tiedostoversioita, joihin sinulla ei ole katseluoikeutta (''häivytetyt versiot''), ei palauteta.",
+'undeleterevdel' => 'Palautusta ei tehdä, jos sen seurauksena sivun uusin versio olisi osittain piilotettu.
+Tässä tilanteessa älä valitse palautettavaksi näkyviin viimeisintä poistettua versiota tai poista version piilotus.',
'undeletehistorynoadmin' => 'Tämä sivu on poistettu. Syy sivun poistamiseen näkyy yhteenvedossa, jossa on myös tiedot, ketkä ovat muokanneet tätä sivua ennen poistamista. Sivujen varsinainen sisältö on vain ylläpitäjien luettavissa.',
'undelete-revision' => 'Poistettu sivu $1 hetkellä $4 kello $5. Tekijä: $3.',
'undeleterevision-missing' => 'Virheellinen tai puuttuva versio. Se on saatettu palauttaa tai poistaa arkistosta.',
# Stylesheets
'common.css' => '/* Tämä sivu sisältää koko sivustoa muuttavia tyylejä. */',
-'standard.css' => '/* Tämä sivu sisältää Perus-ulkoasua muuttavia tyylejä. */',
-'nostalgia.css' => '/* Tämä sivu sisältää Nostalgia-ulkoasua muuttavia tyylejä. */',
'cologneblue.css' => '/* Tämä sivu sisältää Kölnin sininen -ulkoasua muuttavia tyylejä. */',
'monobook.css' => '/* Tämä sivu sisältää Monobook-ulkoasua muuttavia tyylejä. */',
-'myskin.css' => '/* Tämä sivu sisältää Oma tyylisivu -ulkoasua muuttavia tyylejä. */',
-'chick.css' => '/* Tämä sivu sisältää Chick-ulkoasua muuttavia tyylejä. */',
-'simple.css' => '/* Tämä sivu sisältää Yksinkertainen-ulkoasua muuttavia tyylejä. */',
'modern.css' => '/* Tämä sivu sisältää Moderni-ulkoasua muuttavia tyylejä. */',
'vector.css' => '/* Tämä sivu sisältää Vector-ulkoasua muuttavia tyylejä. */',
'print.css' => '/* Tämä sivu sisältää tulostettua sivua muuttavia tyylejä */',
# Scripts
'common.js' => '/* Tämän sivun JavaScript-koodi liitetään jokaiseen sivulataukseen */',
-'standard.js' => '/* Tämän sivun JavaScript-koodi liitetään Perus-tyyliin */',
-'nostalgia.js' => '/* Tämän sivun JavaScript-koodi liitetään Nostalgia-tyyliin */',
'cologneblue.js' => '/* Tämän sivun JavaScript-koodi liitetään Kölnin sininen -tyyliin */',
'monobook.js' => '/* Tämän sivun JavaScript-koodi liitetään Monobook-tyyliin */',
-'myskin.js' => '/* Tämän sivun JavaScript-koodi liitetään Oma tyylisivu -tyyliin */',
-'chick.js' => '/* Tämän sivun JavaScript-koodi liitetään Chick-tyyliin */',
-'simple.js' => '/* Tämän sivun JavaScript-koodi liitetään Yksinkertaistettuun tyyliin */',
'modern.js' => '/* Tämän sivun JavaScript-koodi liitetään Moderni-tyyliin */',
'vector.js' => '/* Tämän sivun JavaScript-koodi liitetään Vector-tyyliin */',
'group-autoconfirmed.js' => '/* Tämän sivun JavaScript-koodi liitetään vain automaattisesti hyväksytyille käyttäjille */',
'pageinfo-category-files' => 'Tiedostojen määrä',
# Skin names
-'skinname-standard' => 'Perus',
-'skinname-nostalgia' => 'Nostalgia',
'skinname-cologneblue' => 'Kölnin sininen',
'skinname-monobook' => 'Monobook',
-'skinname-myskin' => 'Oma tyylisivu',
-'skinname-chick' => 'Chick',
-'skinname-simple' => 'Yksinkertainen',
'skinname-modern' => 'Moderni',
# Patrolling
'sqlite-no-fts' => '$1, jossa ei ole tukea kokotekstihaulle',
# New logging system
-'logentry-delete-delete' => '$1 poisti sivun $3',
-'logentry-delete-restore' => '$1 palautti sivun $3',
-'logentry-delete-event' => '$1 muutti {{PLURAL:$5|lokitapahtuman|$5 lokitapahtuman}} näkyvyyttä kohteessa $3: $4',
-'logentry-delete-revision' => '$1 muutti {{PLURAL:$5|version|$5 version}} näkyvyyttä sivulla $3: $4',
-'logentry-delete-event-legacy' => '$1 muutti kohteen $3 lokitapahtumien näkyvyyttä',
-'logentry-delete-revision-legacy' => '$1 muutti sivun $3 versioiden näkyvyyttä',
-'logentry-suppress-delete' => '$1 häivytti sivun $3',
-'logentry-suppress-event' => '$1 muutti salaa {{PLURAL:$5|lokitapahtuman|$5 lokitapahtuman}} näkyvyyttä kohteessa $3: $4',
-'logentry-suppress-revision' => '$1 muutti salaa {{PLURAL:$5|muutoksen|$5 muutoksen}} näkyvyyttä sivulla $3: $4',
-'logentry-suppress-event-legacy' => '$1 muutti salaa kohteen $3 lokitapahtumien näkyvyyttä',
-'logentry-suppress-revision-legacy' => '$1 muutti salaa sivun $3 versioiden näkyvyyttä',
+'logentry-delete-delete' => '$1 {{GENDER:$2|poisti}} sivun $3',
+'logentry-delete-restore' => '$1 {{GENDER:$2|palautti}} sivun $3',
+'logentry-delete-event' => '$1 {{GENDER:$2|muutti}} {{PLURAL:$5|lokitapahtuman|$5 lokitapahtuman}} näkyvyyttä kohteessa $3: $4',
+'logentry-delete-revision' => '$1 {{GENDER:$2|muutti}} {{PLURAL:$5|version|$5 version}} näkyvyyttä sivulla $3: $4',
+'logentry-delete-event-legacy' => '$1 {{GENDER:$2|muutti}} kohteen $3 lokitapahtumien näkyvyyttä',
+'logentry-delete-revision-legacy' => '$1 {{GENDER:$2|muutti}} sivun $3 versioiden näkyvyyttä',
+'logentry-suppress-delete' => '$1 {{GENDER:$2|häivytti}} sivun $3',
+'logentry-suppress-event' => '$1 {{GENDER:$2|muutti}} salaa {{PLURAL:$5|lokitapahtuman|$5 lokitapahtuman}} näkyvyyttä kohteessa $3: $4',
+'logentry-suppress-revision' => '$1 {{GENDER:$2|muutti}} salaa {{PLURAL:$5|muutoksen|$5 muutoksen}} näkyvyyttä sivulla $3: $4',
+'logentry-suppress-event-legacy' => '$1 {{GENDER:$2|muutti}} salaa kohteen $3 lokitapahtumien näkyvyyttä',
+'logentry-suppress-revision-legacy' => '$1 {{GENDER:$2|muutti}} salaa sivun $3 versioiden näkyvyyttä',
'revdelete-content-hid' => 'sisältö piilotettu',
'revdelete-summary-hid' => 'muokkausyhteenveto piilotettu',
'revdelete-uname-hid' => 'käyttäjätunnus piilotettu',
'revdelete-uname-unhid' => 'käyttäjätunnus palautettu näkyviin',
'revdelete-restricted' => 'asetti rajoitukset ylläpitäjille',
'revdelete-unrestricted' => 'poisti rajoitukset ylläpitäjiltä',
-'logentry-move-move' => '$1 siirsi sivun $3 uudelle nimelle $4',
-'logentry-move-move-noredirect' => '$1 siirsi sivun $3 uudelle nimelle $4 luomatta ohjausta',
-'logentry-move-move_redir' => '$1 siirsi sivun $3 ohjauksen $4 päälle',
-'logentry-move-move_redir-noredirect' => '$1 siirsi sivun $3 ohjauksen $4 päälle luomatta ohjausta',
-'logentry-patrol-patrol' => '$1 merkitsi sivun $3 muutoksen $4 tarkastetuksi',
-'logentry-patrol-patrol-auto' => '$1 merkitsi automaattisesti sivun $3 muutoksen $4 tarkastetuksi',
-'logentry-newusers-newusers' => 'Käyttäjätunnus $1 luotiin',
-'logentry-newusers-create' => 'Käyttäjätunnus $1 luotiin',
-'logentry-newusers-create2' => '$1 loi käyttäjätunnuksen $3',
-'logentry-newusers-byemail' => '$1 loi käyttäjätunnuksen $3 ja salasana lähetettiin sähköpostitse',
-'logentry-newusers-autocreate' => 'Käyttäjätunnus $1 luotiin automaattisesti',
-'logentry-rights-rights' => '$1 muutti käyttäjän $3 oikeudet ryhmistä $4 ryhmiin $5',
-'logentry-rights-rights-legacy' => '$1 muutti käyttäjän $3 jäsenyyttä ryhmässä',
-'logentry-rights-autopromote' => '$1 ylennettiin automaattisesti ryhmistä $4 ryhmiin $5',
+'logentry-move-move' => '$1 {{GENDER:$2|siirsi}} sivun $3 uudelle nimelle $4',
+'logentry-move-move-noredirect' => '$1 {{GENDER:$2|siirsi}} sivun $3 uudelle nimelle $4 luomatta ohjausta',
+'logentry-move-move_redir' => '$1 {{GENDER:$2|siirsi}} sivun $3 ohjauksen $4 päälle',
+'logentry-move-move_redir-noredirect' => '$1 {{GENDER:$2|siirsi}} sivun $3 ohjauksen $4 päälle luomatta ohjausta',
+'logentry-patrol-patrol' => '$1 {{GENDER:$2|merkitsi}} sivun $3 muutoksen $4 tarkastetuksi',
+'logentry-patrol-patrol-auto' => '$1 {{GENDER:$2|merkitsi}} automaattisesti sivun $3 muutoksen $4 tarkastetuksi',
+'logentry-newusers-newusers' => 'Käyttäjätunnus $1 {{GENDER:$2|luotiin}}',
+'logentry-newusers-create' => 'Käyttäjätunnus $1 {{GENDER:$2|luotiin}}',
+'logentry-newusers-create2' => '$1 {{GENDER:$2|loi}} käyttäjätunnuksen $3',
+'logentry-newusers-byemail' => '$1 {{GENDER:$2|loi}} käyttäjätunnuksen $3 ja salasana lähetettiin sähköpostitse',
+'logentry-newusers-autocreate' => 'Käyttäjätunnus $1 {{GENDER:$2|luotiin}} automaattisesti',
+'logentry-rights-rights' => '$1 {{GENDER:$2|muutti}} käyttäjän $3 oikeudet ryhmistä $4 ryhmiin $5',
+'logentry-rights-rights-legacy' => '$1 {{GENDER:$2|muutti}} käyttäjän $3 jäsenyyttä ryhmässä',
+'logentry-rights-autopromote' => '$1 {{GENDER:$2|muutettiin}} automaattisesti ryhmistä $4 ryhmiin $5',
'rightsnone' => '(ei oikeuksia)',
# Feedback
'listusers-submit' => 'Sýna',
'listusers-noresult' => 'Ongin brúkari var funnin.',
-# Special:ActiveUsers
-'activeusers-hidebots' => 'Fjal bottar',
-'activeusers-hidesysops' => 'Fjal umboðsstjórar (administratorar)',
-'activeusers-noresult' => 'Ongir brúkarar funnir.',
-
# Special:ListGroupRights
'listgrouprights' => 'Brúkara bólka rættindi',
'listgrouprights-summary' => 'Henda síða vísir ein lista av brúkarabólkum, sum eru útgreinaðir á hesi wiki og rættindini hjá teimum einstøku bólkunum.
* @author Lucyin
* @author McDutchie
* @author Meithal
+ * @author Metroitendo
* @author Moyg
* @author Nicolas NALLET
* @author Nicolas Raoul
'listusers-noresult' => 'Aucun utilisateur trouvé. Vérifiez aussi les variantes de casse.',
'listusers-blocked' => '(bloqué{{GENDER:$1||e|(e)}})',
-# Special:ActiveUsers
-'activeusers' => 'Liste des utilisateurs actifs',
-'activeusers-intro' => 'Ceci est une liste des utilisateurs qui ont exercé une quelconque activité au cours {{PLURAL:$1|de la dernière journée|des $1 derniers jours}}.',
-'activeusers-count' => '$1 {{PLURAL:$1|action|actions}} lors {{PLURAL:$3|du dernier jour|des $3 derniers jours}}',
-'activeusers-from' => 'Afficher les utilisateurs depuis :',
-'activeusers-hidebots' => 'Masquer les robots',
-'activeusers-hidesysops' => 'Masquer les administrateurs',
-'activeusers-noresult' => 'Aucun utilisateur trouvé.',
-
# Special:ListGroupRights
'listgrouprights' => "Droits des groupes d'utilisateurs",
'listgrouprights-summary' => "Cette page contient une liste des groupes définis sur ce wiki ainsi que les droits d'accès qui leur sont associés.
'sorbsreason' => 'Votre adresse IP est listée comme mandataire ouvert dans le DNSBL utilisé par {{SITENAME}}.',
'sorbs_create_account_reason' => 'Votre adresse IP est listée comme mandataire ouvert dans le DNSBL utilisé par {{SITENAME}}.
Vous ne pouvez pas créer un compte.',
+'xffblockreason' => "Une adresse IP dans l'en-tête X-Forwarded-For, soit la vôtre ou celle d'un serveur proxy que vous utilisez, a été bloquée. La raison du blocage initial est : $1",
'cant-block-while-blocked' => "Vous ne pouvez pas bloquer d'autres utilisateurs tant que vous êtes bloqué{{GENDER:||e|(e)}}.",
'cant-see-hidden-user' => "L'utilisateur que vous tentez de bloquer a déjà été bloqué et masqué. N'ayant pas le droit ''hideuser'', vous ne pouvez pas voir ou modifier le blocage de cet utilisateur.",
'ipbblocked' => "Vous ne pouvez pas bloquer ou débloquer d'autres utilisateurs, parce que vous êtes vous-même bloqué",
# Stylesheets
'common.css' => '/* Le CSS placé ici sera appliqué à tous les habillages. */',
-'standard.css' => '/* Le CSS placé ici affectera les utilisateurs de l’habillage Standard. */',
-'nostalgia.css' => '/* Le CSS placé ici affectera les utilisateurs de l’habillage Nostalgia. */',
'cologneblue.css' => '/* Le CSS placé ici affectera les utilisateurs de l’habillage Cologne Blue. */',
'monobook.css' => '/* Le CSS placé ici affectera les utilisateurs de l’habillage Monobook. */',
-'myskin.css' => '/* Le CSS placé ici affectera les utilisateurs de l’habillage MySkin. */',
-'chick.css' => '/* Le CSS placé ici affectera les utilisateurs de l’habillage Chick. */',
-'simple.css' => '/* Le CSS placé ici affectera les utilisateurs de l’habillage Simple. */',
'modern.css' => '/* Le CSS placé ici affectera les utilisateurs de l’habillage Modern. */',
'vector.css' => '/* Le CSS placé ici affectera les utilisateurs de l’habillage Vector. */',
'print.css' => '/* Le CSS placé ici affectera les impressions */',
# Scripts
'common.js' => '/* Tout JavaScript ici sera chargé avec chaque page accédée par n’importe quel utilisateur. */',
-'standard.js' => '/* Tout JavaScript ici sera chargé avec les pages accédées par les utilisateurs de l’habillage Standard uniquement */',
-'nostalgia.js' => '/* Tout JavaScript ici sera chargé avec les pages accédées par les utilisateurs de l’habillage Nostalgie uniquement */',
'cologneblue.js' => '/* Tout JavaScript ici sera chargé avec les pages accédées par les utilisateurs de l’habillage Bleu de cologne uniquement */',
'monobook.js' => '/* Tout JavaScript ici sera chargé avec les pages accédées par les utilisateurs de l’habillage MonoBook uniquement. */',
-'myskin.js' => '/* Tout JavaScript ici sera chargé avec les pages accédées par les utilisateurs de l’habillage Mon habillage uniquement */',
-'chick.js' => '/* Tout JavaScript ici sera chargé avec les pages accédées par les utilisateurs de l’habillage Poussin uniquement */',
-'simple.js' => '/* Tout JavaScript ici sera chargé avec les pages accédées par les utilisateurs de l’habillage Simple uniquement */',
'modern.js' => '/* Tout JavaScript ici sera chargé avec les pages accédées par les utilisateurs de l’habillage Moderne uniquement */',
'vector.js' => '/* Tout code JavaScript placé ici sera chargé pour les utilisateurs de l’habillage Vector */',
'group-autoconfirmed.js' => '/* Le JavaScript inclus ici n’affectera que les utilisateurs auto-confirmés */',
'pageinfo-category-files' => 'Nombre de fichiers',
# Skin names
-'skinname-standard' => 'Standard',
-'skinname-nostalgia' => 'Nostalgie',
'skinname-cologneblue' => 'Bleu de Cologne',
'skinname-monobook' => 'Monobook',
-'skinname-myskin' => 'Mon Interface',
-'skinname-chick' => 'Poussin',
-'skinname-simple' => 'Simple',
'skinname-modern' => 'Moderne',
'skinname-vector' => 'Vector',
'listusers-noresult' => 'Nion utilisator trovâ.',
'listusers-blocked' => '(blocâ{{GENDER:$1||ye|(ye)}})',
-# Special:ActiveUsers
-'activeusers' => 'Lista des utilisators actifs',
-'activeusers-intro' => 'O est na lista des utilisators qu’ant ègzèrciê un’activitât la quinta que seye pendent {{PLURAL:$1|lo jorn passâ|los $1 jorns passâs}}.',
-'activeusers-count' => '$1 accion{{PLURAL:$1||s}} pendent {{PLURAL:$3|lo jorn passâ|los $3 jorns passâs}}',
-'activeusers-from' => 'Fâre vêre los utilisators dês :',
-'activeusers-hidebots' => 'Cachiér los robots',
-'activeusers-hidesysops' => 'Cachiér los administrators',
-'activeusers-noresult' => 'Nion utilisator trovâ.',
-
# Special:ListGroupRights
'listgrouprights' => 'Drêts de les tropes d’utilisators',
'listgrouprights-summary' => 'Vê-que na lista de les tropes d’utilisators dèfenies sur ceti vouiqui et pués los sins drêts d’accès.
'mainpage' => 'Prìomh dhuilleag',
'mainpage-description' => 'Prìomh dhuilleag',
'policy-url' => 'Project:Poileasaidh',
-'portal' => 'Doras na Coimhearsnachd',
+'portal' => 'Doras na coimhearsnachd',
'portal-url' => 'Project:Doras na coimhearsnachd',
'privacy' => 'Am polasaidh prìobhaideachd',
'privacypage' => 'Project:Am polasaidh prìobhaideachd',
'blocked-mailpassword' => "Chaidh bacadh a chur air an t-seòladh IP agad 's chan eil cead deasachaidh agad agus chan urrainn dhut an gleus a chum aiseag an fhacail-fhaire a chleachdadh gus casg a chur air mì-ghnàthachadh.",
'eauthentsent' => 'Chaidh post-d dearbhaidh a chur dhan phost-d a chaidh ainmeachadh.
Mus dèid post-d sam bith eile a chur dhan chunntas, feumaidh tu leantainn ris an treòrachadh sa phost-d mar dhearbhadh gur ann agadsa a tha an cunntas.',
-'throttled-mailpassword' => 'Chaidh cuimhneachan facail-fhaire a chur mu thràth san {{PLURAL:$1|uair|$1 uair|$1 uairean|$1 uair}} a thìde.
+'throttled-mailpassword' => 'Chaidh post-d a chur airson ath-shuidheachadh facail-fhaire mu thràth {{PLURAL:$1|uair|$1 uair|$1 uairean|$1 uair}} a thìde air ais.
Gus casg a chur air mì-ghnàthachadh, cha chuir sinn ach aon chuimhneachan facail-fhaire gach {{PLURAL:$1|uair|$1 uair|$1 uairean|$1 uair}} a thìde.',
'mailerror' => "Mearachd a' cur post: $1",
'acct_creation_throttle_hit' => "Chruthaich na h-aoighean air an Uici seo {{PLURAL:$1|1 chunntas|$1 chunntas|$1 cunntasan|$1 cunntas}} fon IP agad an-dè agus sin an àireamh as motha a tha ceadaichte. Chan urrainn do dh'aoighean eile on IP seo barrachd chunntasan a chruthachadh air sgàth sin.",
# Special:PasswordReset
'passwordreset' => 'Ath-shuidhich am facal-faire',
-'passwordreset-text' => "Lìon am foirm seo gus post-d fhaighinn sa bheil mion-fhiosrachadh a' chunntais agad.",
+'passwordreset-text' => 'Lìon am foirm seo gus am facal-faire agad ath-shuidheachadh.',
'passwordreset-legend' => 'Ath-shuidhich am facal-faire',
'passwordreset-disabled' => 'Chaidh ath-shuidheachadh nam faclan-faire a chur à comas air an uicipeid seo.',
'passwordreset-pretext' => '{{PLURAL:$1||Cuir a-steach aon dhe na pìosan dàta gu h-ìosal}}',
'passwordreset-capture-help' => 'Ma chuireas tu cromag sa bhogsa seo, chì thusa am post-d (leis an fhacal-fhaire sealach) agus gheibh an cleachdaiche e cuideachd.',
'passwordreset-email' => 'Seòladh puist-d:',
'passwordreset-emailtitle' => "Dàta a' chunntais air {{SITENAME}}",
-'passwordreset-emailtext-ip' => "Dh'iarr cuideigin (thu fhèin, 's mathaid, on t-seòladh IP $1) cuimhneachan air an fhiosrachadh a tha co-cheangailte ris a' chunntas air {{SITENAME}} ($4). Tha {{PLURAL:$3|an cunntas|an dà chunntas|na $3 cunntasan|na $3 cunntas}} a leanas co-cheangailte ris a' phost-d seo:
+'passwordreset-emailtext-ip' => "Dh'iarr cuideigin (thu fhèin, 's mathaid, on t-seòladh IP $1) am facal-faire airson {{SITENAME}} ($4) ath-shuidheachadh. Tha {{PLURAL:$3|an cunntas|an dà chunntas|na $3 cunntasan|na $3 cunntas}} a leanas co-cheangailte ris a' phost-d seo:
$2
Falbhaidh an ùine air {{PLURAL:$3|an fhacal-fhaire|an $3 fhacal-faire|na $3 faclan-faire|na $3 facal-faire}} sealach seo ann an {{PLURAL:$5|latha|$5 latha|$5 làithean|$5 latha}}.
Bu chòir dhut clàradh a-steach agus facal-faire ùr a thaghadh an-dràsta. Ma dh'iarr cuideigin eile seo no ma chuimhnich thu air an fhacal-fhaire agad 's mur eil thu airson atharrachadh tuilleadh, leig seachad an teachdaireachd seo 's lean ort leis an t-seann fhacal-fhaire.",
-'passwordreset-emailtext-user' => "Dh'iarr an cleachdaiche $1 air {{SITENAME}} cuimhneachan air an fhiosrachadh a tha co-cheangailte ris a' chunntas agad air {{SITENAME}} ($4). Tha {{PLURAL:$3|an cunntas-cleachdaiche|an $3 chunntas-cleachdaiche|na $3 cunntasan-cleachdaiche|na $3 cunntas-cleachdaiche}} a leanas co-cheangailte ris a' phost-d seo:
+'passwordreset-emailtext-user' => "Dh'iarr an cleachdaiche $1 air {{SITENAME}} ath-shuidheachadh an fhacail-fhaire air {{SITENAME}} ($4). Tha {{PLURAL:$3|an cunntas-cleachdaiche|an $3 chunntas-cleachdaiche|na $3 cunntasan-cleachdaiche|na $3 cunntas-cleachdaiche}} a leanas co-cheangailte ris a' phost-d seo:
$2
Bu chòir dhut clàradh a-steach agus facal-faire ùr a thaghadh an-dràsta. Ma dh'iarr cuideigin eile seo no ma chuimhnich thu air an fhacal-fhaire agad 's mur eil thu airson atharrachadh tuilleadh, leig seachad an teachdaireachd seo 's lean ort leis an t-seann fhacal-fhaire.",
'passwordreset-emailelement' => 'Ainm-cleachdaiche: $1
Facal-faire sealach: $2',
-'passwordreset-emailsent' => "Chaidh cuimhneachan a chur air a' phost-d.",
-'passwordreset-emailsent-capture' => "Chaidh cuimhneachan a chur air a' phost-d agus chì thu sin gu h-ìosal.",
-'passwordreset-emailerror-capture' => "Chaidh cuimhneachan a chur air a' phost-d agus chì thu sin gu h-ìosal ach cha b' urrainn dhuinn a chur dhan chleachdaiche: $1",
+'passwordreset-emailsent' => 'Chaidh post-d airson ath-shuidheachadh an fhacail-fhaire a chur.',
+'passwordreset-emailsent-capture' => 'Chaidh post-d a chum ath-shuidheachadh an fhacail-fhaire a chur agus chì thu sin gu h-ìosal.',
+'passwordreset-emailerror-capture' => "Chaidh post-d a chum ath-shuidheachadh an fhacail-fhaire a ghintinn agus chì thu sin gu h-ìosal ach cha b' urrainn dhuinn a chur dhan chleachdaiche: $1",
# Special:ChangeEmail
'changeemail' => 'Atharraich am post-d',
'rev-deleted-event' => '(chaidh gnìomh an loga a thoirt air falbh)',
'rev-delundel' => 'seall/falaich',
'rev-showdeleted' => 'seall',
+'revdelete-selected' => "'''{{PLURAL:$2|Lèirmheas|Lèirmheasan}} de [[:$1]] a thagh thu:'''",
+'logdelete-selected' => "'''{{PLURAL:$1|An tachartas loga|Na tachartasan loga}} a thagh thu:'''",
'revdelete-hide-user' => 'Falaich ainm-cleachdaiche/seòladh IP an deasaiche',
+'revdelete-radio-same' => '(na atharraich)',
+'revdelete-radio-set' => 'Dèan seo',
+'revdelete-radio-unset' => 'Na dèan seo',
'revdelete-log' => 'Adhbhar:',
+'revdelete-submit' => 'Cuir air {{PLURAL:$1|an lèirmheas|na lèirmheasan}} a thagh thu',
'revdel-restore' => 'mùth follaiseachd',
'revdel-restore-deleted' => 'mùthaidhean a chaidh a sguabadh às',
'revdel-restore-visible' => 'mùthaidhean faicsinneach',
# Diffs
'history-title' => 'Eachdraidh nam mùthaidhean aig "$1"',
+'difference-multipage' => '(An diofar eadar na duilleagan)',
'lineno' => 'Loidhne $1:',
'compareselectedversions' => 'Dèan coimeas eadar na mùthaidhean a thagh thu',
+'showhideselectedversions' => 'Seall/Falaich na lèirmheasan a thagh thu',
'editundo' => 'neo-dhèan',
'diff-multi' => '({{PLURAL:$1|Aon lèirmheas eadar-mheadhanach||$1 lèirmheasan eadar-mheadhanach|$1 lèirmheas eadar-mheadhanach}} le {{PLURAL:$2|aon chleachdaiche|$2 chleachdaiche|$2 cleachdaichean|$2 cleachdaiche}} gun sealltainn)',
+'diff-multi-manyusers' => '({{PLURAL:$1|Aon lèirmheas eadar-mheadhanach||$1 lèirmheasan eadar-mheadhanach|$1 lèirmheas eadar-mheadhanach}} le {{PLURAL:$2|aon chleachdaiche|$2 chleachdaiche|$2 cleachdaichean|$2 cleachdaiche}} gun sealltainn)',
# Search results
'searchresults' => 'Toraidhean rannsachaidh',
'nextn-title' => 'An ath $1 {{PLURAL:$1|toradh|thoradh|toraidhean|toradh}}',
'shown-title' => 'Seall $1 {{PLURAL:$1|toradh|thoradh|toraidhean|toradh}} air gach duilleag',
'viewprevnext' => 'Seall ($1 {{int:pipe-separator}} $2) ($3).',
+'searchmenu-legend' => 'Roghainnean luirg',
'searchmenu-exists' => "'''Tha duilleag air a bheil \"[[:\$1]]\" air an uicipeid seo.'''",
'searchmenu-new' => "'''Cruthaich an duilleag \"[[:\$1]]\" air an uicipeid seo!'''",
'searchhelp-url' => 'Help:Cuideachadh',
+'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Rùraich duilleagan aig a bheil an ro-leasachan seo]]',
'searchprofile-articles' => 'Duilleagan susbainte',
'searchprofile-project' => "Duilleagan nan cobharach 's nam pròiseactan",
'searchprofile-images' => 'Ioma-mheadhanan',
'search-interwiki-default' => 'Toraidhean $1:',
'search-interwiki-more' => '(barrachd)',
'search-relatedarticle' => 'Co-cheangailte',
+'mwsuggest-disable' => 'Cuir na molaidhean luirg à comas',
+'searcheverything-enable' => 'Seall anns na namespaces air fad',
'searchrelated' => 'co-cheangailte',
'searchall' => 'a h-uile',
'showingresults' => "A' nochdadh suas gu $1 {{PLURAL:$1|$1 toradh|$1 thoradh|$1 toraidhean|$1 toradh}} gu h-ìosal a' tòiseachadh le #'''$2'''.",
'powersearch-ns' => 'Lorg ann an namespaces:',
'powersearch-redir' => 'Seall ath-sheòlaidhean',
'powersearch-field' => 'Lorg',
+'powersearch-togglelabel' => 'Sgrùd:',
+'powersearch-toggleall' => 'Na h-uile',
+'powersearch-togglenone' => 'Chan eil gin',
+'search-external' => 'Lorg air an taobh a-muigh',
+'searchdisabled' => "Tha lorg air {{SITENAME}} à comas.
+'S urrainn dhut lorg a dhèanamh air Google san eadar-àm.
+Faodaidh gum bi inneacsan susbaint {{SITENAME}} tuilleadh 's sean ge-tà.",
# Quickbar
+'qbsettings' => 'Grad-bhàr',
'qbsettings-none' => 'Chan eil gin',
+'qbsettings-fixedleft' => 'Socraichte air an taobh chlì',
+'qbsettings-fixedright' => 'Socraichte air an taobh deas',
+'qbsettings-floatingleft' => 'Air fleòd air an taobh chlì',
+'qbsettings-floatingright' => 'Air fleòd air an taobh deas',
+'qbsettings-directionality' => 'Socraichte a-rèir comhair sgriobt do chànain',
# Preferences page
'preferences' => 'Roghainnean',
'mypreferences' => 'Na roghainnean agam',
+'prefs-edits' => 'Co mheud deasachadh:',
+'prefsnologin' => 'Chan eil thu air clàradh a-steach',
+'prefsnologintext' => 'Feumaidh tu <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} clàradh a-steach]</span> mus urrainn dhut roghainnean cleachdaiche a chur air gleus.',
'changepassword' => 'Atharraich facal-faire',
'prefs-skin' => 'Bian',
'skin-preview' => 'Ro-shealladh',
+'datedefault' => 'Gun roghainnean',
'prefs-beta' => 'Feartan Beta',
'prefs-datetime' => 'Ceann-là is àm',
'prefs-labs' => 'Feartan nan deuchainn-lannan',
+'prefs-user-pages' => "Duilleagan a' chleachdaiche",
'prefs-personal' => "Pròifil a' chleachdaiche",
'prefs-rc' => 'Mùthaidhean ùra',
'prefs-watchlist' => 'An clàr-faire',
+'prefs-watchlist-days' => "Co mheud latha a sheallar air a' chlàr-fhaire:",
+'prefs-watchlist-days-max' => "{{PLURAL:$1|latha|latha|làithean|latha}} air a' char as motha",
'prefs-resetpass' => 'Atharraich am facal-faire',
'prefs-changeemail' => 'Atharraich am post-d',
'prefs-setemail' => 'Suidhich seòladh puist-d',
'timezoneregion-europe' => 'An Roinn-Eòrpa',
'timezoneregion-indian' => 'An Cuan Innseanach',
'timezoneregion-pacific' => 'An Cuan Sèimh',
+'prefs-namespaces' => 'Namespaces',
'default' => 'an roghainn bhunaiteach',
+'prefs-files' => 'Faidhlichean',
'prefs-custom-css' => 'CSS gnàthaichte',
+'prefs-custom-js' => 'JavaScript gnàthaichte',
+'prefs-common-css-js' => 'CSS/JavaScript ann an coitcheann do gach craiceann:',
+'prefs-reset-intro' => "'S urrainn dhut bun-roghainnean na làraich ath-shuidheachadh air an duilleag seo. Cha ghabh seo a neo-dhèanamh.",
+'prefs-emailconfirm-label' => 'Dearbhadh puist-d:',
+'prefs-textboxsize' => 'Meud na h-uinneige deasachaidh',
'youremail' => 'Post-dealain:',
'username' => '{{GENDER:$1|Ainm-cleachdaiche}}:',
+'uid' => "ID {{GENDER:$1|a' chleachdaiche}}:",
+'prefs-memberingroups' => '{{GENDER:$2|Ball}} ann an {{PLURAL:$1|bhuidheann|bhuidheann|buidhnean|buidheann}}:',
+'prefs-registration' => 'Àm clàraidh:',
'yourrealname' => "An dearbh ainm a th' ort:",
'yourlanguage' => 'Cànan:',
+'yourvariant' => 'Eug-samhail cànan na susbaint:',
+'prefs-help-variant' => 'Do roghainn eug-samhail sgrìobhaidh a thèid duilleagan na h-uicipeid seo a shealltainn innte.',
'yournick' => 'Earr-sgrìobhadh ùr:',
+'prefs-help-signature' => "Bu chòir dhut d' ainm a chur ri beachdan air duilleagan deasbaireachd le \"<nowiki>~~~~</nowiki>\" agus chithear d' ainm agus stampa ama 'na àite an uairsin.",
+'badsig' => 'Tha co-chàradh an t-soidhnidh mì-dhligheach.
+Thoir sùil air na tagaichean HTML.',
+'badsiglength' => 'Tha an t-earr-sgrìobhadh agad ro fhada.
+Chan fhaod e a bhith nas fhaide na $1 {{PLURAL:$1|charactar|charactar|caractaran|caractar}}.',
'yourgender' => 'Gnè:',
'gender-unknown' => 'Gun innse',
'gender-male' => 'Fireann',
'prefs-help-email' => "Chan leig thu leas post-dealain a chur ann ach bidh feum air ma dhìochuimhnicheas tu am facal-faire agad 's ma dh'iarras tu fear ùr.",
'prefs-help-email-others' => "'S urrainn dhut leigeil le daoine eile post-dealain a chur thugad tro cheangal air an duilleag agad.
Chan fhaicear an seòladh fhèin nuair a chuireas cuideigin post-dealain thugad.",
+'prefs-help-email-required' => 'Tha feum air seòladh puist-d.',
+'prefs-info' => 'Fiosrachadh bunasach',
+'prefs-i18n' => 'Cànan',
+'prefs-signature' => 'Earr-sgrìobhadh',
+'prefs-dateformat' => "Fòrmat a' chinn-là",
+'prefs-timeoffset' => 'Diofar ama',
'prefs-advancedediting' => 'Roghainnean adhartach',
'prefs-advancedrc' => 'Roghainnean adhartach',
'prefs-advancedrendering' => 'Roghainnean adhartach',
'prefs-advancedsearchoptions' => 'Roghainnean adhartach',
'prefs-advancedwatchlist' => 'Roghainnean adhartach',
+'prefs-displayrc' => 'Roghainnean taisbeanaidh',
+'prefs-displaysearchoptions' => 'Roghainnean taisbeanaidh',
+'prefs-displaywatchlist' => 'Roghainnean taisbeanaidh',
+'prefs-diffs' => 'Diffs',
+
+# User preference: email validation using jQuery
+'email-address-validity-valid' => 'Tha coltas gu bheil am post-d dligheach',
+'email-address-validity-invalid' => 'Cuir a-steach post-d dligheach',
# User rights
+'userrights' => "Stiùireadh ceadan a' chleachdaiche",
+'userrights-lookup-user' => 'Stiùirich na buidhnean chleachdaichean',
+'userrights-user-editname' => 'Cuir a-steach ainm-cleachdaiche:',
+'editusergroup' => 'Deasaich na buidhnean chleachdaichean',
+'editinguser' => "Ag atharrachadh ceadan a' chleachdaiche '''[[User:$1|$1]]''' $2",
+'userrights-editusergroup' => 'Deasaich na buidhnean chleachdaichean',
+'saveusergroups' => 'Sàbhail na buidhnean chleachdaichean',
+'userrights-groupsmember' => 'Ball de:',
+'userrights-groupsmember-auto' => 'Ball fèin-obrachail de:',
+'userrights-reason' => 'Adhbhar:',
+'userrights-no-interwiki' => 'Chan eil cead agad ceadan chleachdaichean a dheasachadh air uicipeidean eile.',
+'userrights-nodatabase' => 'Chan eil an stòr-dàta $1 ann no chan e fear ionadail a tha ann.',
'userrights-changeable-col' => 'Buidhnean as urrainn dhut atharrachadh',
# Groups
+'group' => 'Buidheann:',
+'group-user' => 'Cleachdaichean',
+'group-bot' => 'Bots',
'group-sysop' => 'Rianadairean',
+'group-bureaucrat' => 'Biurocratan',
+'group-all' => '(na h-uile)',
'group-user-member' => '{{GENDER:$1|cleachdaiche}}',
'group-bot-member' => '{{GENDER:$1|bot}}',
'group-bureaucrat-member' => '{{GENDER:$1|biùrocrat}}',
'grouppage-user' => '{{ns:project}}:Cleachdaichean',
+'grouppage-autoconfirmed' => '{{ns:project}}:Cleachdaichean fèin-dearbhte',
+'grouppage-bot' => '{{ns:project}}:Bots',
'grouppage-sysop' => '{{ns:project}}:Rianadairean',
+'grouppage-bureaucrat' => '{{ns:project}}:Biurocratan',
+
+# Rights
+'right-read' => 'Cead-leughaidh',
+'right-edit' => 'Cead-deasachaidh',
+'right-createpage' => "Cead-cruthachaidh (de dhuilleagan nach eil 'nan duilleagan deasbaireachd)",
+'right-createtalk' => 'Cead duilleagan deasbaireachd a chruthachadh',
+'right-createaccount' => 'Cead cunntasan ùra a chruthachadh',
+'right-move' => 'Cead duilleagan a ghluasad',
+'right-move-subpages' => 'Cead duilleagan a ghluasad leis na fo-dhuilleagan aca',
+'right-move-rootuserpages' => 'Cead duilleagan chleachdaichean root a ghluasad',
+'right-movefile' => 'Cead faidhlichean a ghluasad',
+'right-upload' => 'Cead faidhlichean a luchdadh suas',
+'right-reupload' => 'Cead sgrìobhadh thairis air duilleagan a tha ann',
+'right-upload_by_url' => 'Faidhlichean a luchdadh suas o URL',
# Special:Log/newusers
'newuserlogpage' => 'Loga cruthachaidh de chleachdaichean',
'license' => 'Ceadachadh:',
'license-header' => 'Ceadachadh',
+'nolicense' => 'Cha deach gin a thaghadh',
# Special:ListFiles
'listfiles' => 'Liosta nan ìomhaigh',
# Book sources
'booksources' => "Tùsan a tha 'nan leabhraichean",
'booksources-search-legend' => "Lorg tùsan a tha 'nan leabhraichean",
-'booksources-go' => 'Rach',
+'booksources-go' => 'Siuthad',
# Special:Log
'log' => 'Logaichean',
'all-logs-page' => 'A h-uile loga poblach',
+'logempty' => "Chan eil rud sam bith san loga a tha 'ga mhaidseadh.",
+'showhideselectedlogentries' => 'Seall/Falaich innteartan an loga a thagh thu',
# Special:AllPages
'allpages' => 'A h-uile duilleag',
Chan fhaicear [[Special:UnusedCategories|roinntean-seòrsa gun chleachdadh an-seo]].
Thoir sùil air na [[Special:WantedCategories|roinntean-seòrsa a thathar 'gan iarraidh cuideachd]].",
+# Special:DeletedContributions
+'deletedcontributions' => "Obair a' chleachdaiche a chaidh a sguabadh às",
+
# Special:LinkSearch
'linksearch' => 'Lorg sna ceanglaichean dhan taobh a-muigh',
+'linksearch-ns' => 'Namespace:',
'linksearch-line' => "Tha $1 a' ceangal an-seo o $2",
# Special:ListGroupRights
# Email user
'emailuser' => 'Cuir post-dealain dhan chleachdaiche seo',
+'emailusername' => 'Ainm-cleachdaiche:',
+'emailusernamesubmit' => 'Air adhart',
'emailfrom' => 'O:',
'emailto' => 'Gu:',
'emailsubject' => 'Cuspair:',
# Watchlist
'watchlist' => 'An clàr-faire',
'mywatchlist' => 'An clàr-faire',
-'watchlistfor2' => 'Do $1 $2',
+'watchlistfor2' => 'aig $1 $2',
'nowatchlist' => "Chan eil rud sam bith air a' chlàr-fhaire agad.",
+'addwatch' => "Cuir air a' chlàr-fhaire",
'addedwatchtext' => 'Chaidh an duilleag "[[:$1]]" a chur ri [[Special:Watchlist|do chlàr-faire]].
Nochdaidh mùthaidhean a nithear air an duilleag seo \'s air an duilleag deasbaireachd a tha co-cheangailte ris an-seo san àm ri teachd.',
+'removewatch' => 'Thoir air falbh on chlàr-fhaire',
'removedwatchtext' => 'Chaidh an duilleag "[[:$1]]" a thoirt air falbh o [[Special:Watchlist|do chlàr-faire]].',
'watch' => 'Cum sùil air',
'watchthispage' => 'Cum sùil air an duilleag seo',
'unwatch' => 'Na cum sùil tuilleadh',
+'unwatchthispage' => 'Na cum sùil tuilleadh',
+'notanarticle' => 'Chan e duilleag susbaint a tha ann',
'watchnochange' => "Cha deach na duilleagan air d' fhaire a dheasachadh anns a' chuairt ùine taisbeanta.",
'watchlist-details' => 'Tha {{PLURAL:$1|$1 duilleag|$1 dhuilleag|$1 duilleagan|$1 duilleag}} air do chlàr-faire, gun luaidh air na duilleagan deasbaireachd.',
+'wlheader-showupdated' => "* Tha clò '''trom''' air duilleagan a chaidh atharrachadh on turas mu dheireadh a thadhail thu orra.",
'watchmethod-recent' => "A' sgrùdadh deasachaidhean ùra airson duilleagan air d' fhaire",
'watchmethod-list' => "A' sgrùdadh duilleagan air d' fhaire airson deasachaidhean ùra",
'watchlistcontains' => 'Tha $1 {{PLURAL:$1|duilleag|dhuilleag|duilleagan|duilleag}} air do chlàr-faire.',
# Rollback
'rollbacklink' => 'roilig air ais',
'editcomment' => "Seo gearr-chunntas an deasachaidh: \"''\$1''\".",
-'revertpage' => 'Deasachaidhean a chaidh a thilleadh le [[Special:Contributions/$2|$2]] ([[User talk:$2|talk]]) dhan mhùthadh mu dheireadh le [[User:$1|$1]]',
+'revertpage' => 'Deasachaidhean a chaidh a thilleadh le [[Special:Contributions/$2|$2]] ([[User talk:$2|deasbaireachd]]) dhan mhùthadh mu dheireadh le [[User:$1|$1]]',
# Protect
'protectlogpage' => 'Loga an dìon',
'unprotectedarticle' => 'a neo-dhìon "[[$1]]"',
'protect-title' => 'A\' dìonadh "$1"',
'prot_1movedto2' => '[[$1]] gluaiste ri [[$2]]',
+'protect-norestrictiontypes-title' => 'Cha ghabh an duilleag seo a dhìon',
'protect-legend' => 'Daingnich dìonadh',
'protectcomment' => 'Adhbhar:',
'protectexpiry' => 'Falbhaidh an ùine air:',
'protect-level-sysop' => 'Na ceadaich ach rianadairean',
'protect-summary-cascade' => 'mar eas',
'protect-expiring' => 'falbhaidh an ùine air $1 (UTC)',
+'protect-expiring-local' => 'falbhaidh an ùine air $1',
+'protect-expiry-indefinite' => 'buan',
'protect-cascade' => "Dìon duilleagan a tha 'gan gabhail a-steach san duilleag seo (dìon mar eas)",
'protect-cantedit' => "Chan urrainn dhut ìre dìon na duilleige seo atharrachadh a chionn 's nach eil cead deasachaidh agad air.",
+'protect-othertime' => 'Àm eile:',
+'protect-othertime-op' => 'àm eile',
'restriction-type' => 'Cead:',
'restriction-level' => 'Ìre bacaidh:',
# Namespace form on various pages
'namespace' => 'Namespace:',
'invert' => 'Cuir na thagh mi bun os cionn',
+'namespace_association' => 'Namespace co-cheangailte ris',
'blanknamespace' => '(Prìomh)',
# Contributions
#Cuir gach mì regex os cionn na loidhne seo. Fàg an loidhne seo dìreach mar a tha e</pre>",
# Special:Tags
-'tag-filter' => 'Criathrag [[Special:Tags|Tag]]:',
+'tag-filter' => 'Criathrag [[Special:Tags|thagaichean]]:',
# New logging system
'rightsnone' => '(chan eil gin)',
Se segue sen funcionar, probe a [[Special:UserLogout|saír do sistema]] e volver entrar.'''",
'token_suffix_mismatch' => "'''Rexeitouse a súa edición porque o seu cliente confundiu os signos de puntuación na edición.'''
Rexeitouse a edición para evitar que se corrompa o texto do artigo.
-Isto pode acontecer porque estea a empregar un servizo de ''proxy'' anónimo defectuoso baseado na web.",
+Isto pode acontecer porque estea a empregar un servizo de proxy anónimo defectuoso baseado na web.",
'edit_form_incomplete' => "'''Algunhas partes do formulario de edición non chegaron ao servidor; comprobe que a súa modificación está intacta e inténteo de novo.'''",
'editing' => 'Editando "$1"',
'creating' => 'Creando "$1"',
'upload-disallowed-here' => 'Non pode sobrescribir este ficheiro.',
# File reversion
-'filerevert' => 'Reverter $1',
+'filerevert' => 'Reverter "$1"',
'filerevert-legend' => 'Reverter o ficheiro',
'filerevert-intro' => 'Está a piques de reverter o ficheiro "\'\'\'[[Media:$1|$1]]\'\'\'" ata a [$4 versión do $2 ás $3].',
'filerevert-comment' => 'Motivo:',
'listusers-noresult' => 'Non se atopou ningún usuario.',
'listusers-blocked' => '(bloqueado)',
-# Special:ActiveUsers
-'activeusers' => 'Lista de usuarios activos',
-'activeusers-intro' => 'Esta é unha lista cos usuarios que tiveron algún tipo de actividade {{PLURAL:$1|no último día|nos últimos $1 días}}.',
-'activeusers-count' => '$1 {{PLURAL:$1|acción|accións}} {{PLURAL:$3|no último día|nos últimos $3 días}}',
-'activeusers-from' => 'Mostrar os usuarios que comecen por:',
-'activeusers-hidebots' => 'Agochar os bots',
-'activeusers-hidesysops' => 'Agochar os administradores',
-'activeusers-noresult' => 'Non se atopou ningún usuario.',
-
# Special:ListGroupRights
'listgrouprights' => 'Dereitos dun usuario segundo o seu grupo',
'listgrouprights-summary' => 'A seguinte lista mostra os grupos de usuario definidos neste wiki, cos seus dereitos de acceso asociados.
'proxyblockreason' => 'O seu enderezo IP foi bloqueado porque é un proxy aberto.
Por favor, contacte co seu fornecedor de acceso á Internet ou co seu soporte técnico e informe deste grave problema de seguridade.',
'proxyblocksuccess' => 'Feito.',
-'sorbsreason' => "O seu enderezo IP está rexistrado como un ''proxy'' aberto na lista DNSBL usada por {{SITENAME}}.",
-'sorbs_create_account_reason' => "O seu enderezo IP está rexistrado como un ''proxy'' aberto na lista DNSBL usada por {{SITENAME}}.
-Polo tanto, non pode crear unha conta",
+'sorbsreason' => 'O seu enderezo IP está rexistrado como un proxy aberto na lista DNSBL usada por {{SITENAME}}.',
+'sorbs_create_account_reason' => 'O seu enderezo IP está rexistrado como un proxy aberto na lista DNSBL usada por {{SITENAME}}.
+Polo tanto, non pode crear unha conta',
+'xffblockreason' => 'Un enderezo IP presente na cabeceira X-Forwarded-For, ou ben seu ou ben dun servidor proxy que está utilizando, foi bloqueado. O motivo do bloqueo orixinal é: $1',
'cant-block-while-blocked' => 'Non pode bloquear outros usuarios mentres vostede estea bloqueado.',
'cant-see-hidden-user' => 'O usuario que intenta bloquear xa foi bloqueado e agochado. Dado que non ten o dereito necesario para agochar usuarios, non pode ver ou editar o bloqueo do usuario.',
'ipbblocked' => 'Non pode bloquear ou desbloquear outros usuarios porque vostede está bloqueado',
# Stylesheets
'common.css' => '/** O CSS que se coloque aquí será aplicado a todas as aparencias */',
-'standard.css' => '/* O CSS que se coloque aquí afectará a quen use a aparencia Clásica */',
-'nostalgia.css' => '/* O CSS que se coloque aquí afectará a quen use a aparencia Morriña */',
'cologneblue.css' => '/* O CSS que se coloque aquí afectará a quen use a aparencia Azul colonial */',
'monobook.css' => '/* O CSS que se coloque aquí afectará a quen use a aparencia Monobook */',
-'myskin.css' => '/* O CSS que se coloque aquí afectará a quen use a aparencia A miña aparencia */',
-'chick.css' => '/* O CSS que se coloque aquí afectará a quen use a aparencia Parrulo */',
-'simple.css' => '/* O CSS que se coloque aquí afectará a quen use a aparencia Sinxela */',
'modern.css' => '/* O CSS que se coloque aquí afectará a quen use a aparencia Moderna */',
'vector.css' => '/* O CSS que se coloque aquí afectará a quen use a aparencia Vector */',
'print.css' => '/* O CSS que se coloque aquí afectará ás impresións */',
# Scripts
'common.js' => '/* Calquera JavaScript que haxa aquí será cargado para todos os usuarios en cada páxina que vexan. */',
-'standard.js' => '/* Calquera JavaScript que haxa aquí será cargado para os usuarios que usen a aparencia Clásica */',
-'nostalgia.js' => '/* Calquera JavaScript que haxa aquí será cargado para os usuarios que usen a aparencia Morriña */',
'cologneblue.js' => '/* Calquera JavaScript que haxa aquí será cargado para os usuarios que usen a aparencia Azul colonial */',
'monobook.js' => '/* Calquera JavaScript que haxa aquí será cargado para os usuarios que usen a aparencia MonoBook */',
-'myskin.js' => '/* O JavaScript que se coloque aquí afectará a quen use a aparencia A miña aparencia */',
-'chick.js' => '/* Calquera JavaScript que haxa aquí será cargado para os usuarios que usen a aparencia Parrulo */',
-'simple.js' => '/* Calquera JavaScript que haxa aquí será cargado para os usuarios que usen a aparencia Sinxela */',
'modern.js' => '/* Calquera JavaScript que haxa aquí será cargado para os usuarios que usen a aparencia Moderna */',
'vector.js' => '/* Calquera JavaScript que haxa aquí será cargado para os usuarios que usen a aparencia Vector */',
'group-autoconfirmed.js' => '/* Calquera JavaScript que haxa aquí será cargado soamente para os usuarios autoconfirmados */',
'pageinfo-category-files' => 'Número de ficheiros',
# Skin names
-'skinname-standard' => 'Clásica',
-'skinname-nostalgia' => 'Morriña',
'skinname-cologneblue' => 'Azul colonial',
'skinname-monobook' => 'MonoBook',
-'skinname-myskin' => 'A miña aparencia',
-'skinname-chick' => 'Parrulo',
-'skinname-simple' => 'Sinxela',
'skinname-modern' => 'Moderna',
# Patrolling
'listusers-noresult' => 'לא נמצאו משתמשים.',
'listusers-blocked' => '(חסום)',
-# Special:ActiveUsers
-'activeusers' => 'רשימת משתמשים פעילים',
-'activeusers-intro' => 'זוהי רשימת המשתמשים שביצעו פעולה כלשהי {{PLURAL:$1|ביום האחרון|ביומיים האחרונים|ב־$1 הימים האחרונים}}.',
-'activeusers-count' => '{{PLURAL:$1|פעולה אחת|$1 פעולות}} ב{{PLURAL:$3|יום האחרון|יומיים האחרונים|־$3 הימים האחרונים}}',
-'activeusers-from' => 'הצגת משתמשים החל מ:',
-'activeusers-hidebots' => 'הסתרת בוטים',
-'activeusers-hidesysops' => 'הסתרת מפעילי מערכת',
-'activeusers-noresult' => 'לא נמצאו משתמשים.',
-
# Special:ListGroupRights
'listgrouprights' => 'רשימת הרשאות לקבוצה',
'listgrouprights-summary' => 'זוהי רשימה של קבוצות המשתמש המוגדרות באתר זה, עם ההרשאות של כל אחת.
'proxyblocksuccess' => 'בוצע.',
'sorbsreason' => 'כתובת ה־IP שלכם רשומה ככתובת פרוקסי פתוחה ב־DNSBL שאתר זה משתמש בו.',
'sorbs_create_account_reason' => 'כתובת ה־IP שלכם רשומה ככתובת פרוקסי פתוחה ב־DNSBL שאתר זה משתמש בו. אינכם יכולים ליצור חשבון.',
+'xffblockreason' => 'כתובת IP הנמצאת בכותרת X-Forwarded-For, בין אם שלכם או של שרת פרוקסי שאתם משתמשים בו, נחסמה. סיבת החסימה המקורית הייתה: $1',
'cant-block-while-blocked' => 'אינכם יכולים לחסום משתמשים אחרים כשאתם חסומים.',
'cant-see-hidden-user' => 'המשתמש שאתם מנסים לחסום כבר נחסם והוסתר. כיוון שאין לכם את ההרשאה לחסימת משתמש והסתרתו, אינכם רשאים לצפות בחסימת המשתמש או לערוך אותה.',
'ipbblocked' => 'אינכם יכולים לחסום או לשחרר את חסימתם של משתמשים אחרים, כיוון שאתם עצמכם חסומים',
# Stylesheets
'common.css' => '/* הסגנונות הנכתבים כאן ישפיעו על כל העיצובים */',
-'standard.css' => '/* הסגנונות הנכתבים כאן ישפיעו על העיצוב Standard בלבד */',
-'nostalgia.css' => '/* הסגנונות הנכתבים כאן ישפיעו על העיצוב Nostalgia בלבד */',
'cologneblue.css' => '/* הסגנונות הנכתבים כאן ישפיעו על העיצוב CologneBlue בלבד */',
'monobook.css' => '/* הסגנונות הנכתבים כאן ישפיעו על העיצוב MonoBook בלבד */',
-'myskin.css' => '/* הסגנונות הנכתבים כאן ישפיעו על העיצוב MySkin בלבד */',
-'chick.css' => '/* הסגנונות הנכתבים כאן ישפיעו על העיצוב Chick בלבד */',
-'simple.css' => '/* הסגנונות הנכתבים כאן ישפיעו על העיצוב Simple בלבד */',
'modern.css' => '/* הסגנונות הנכתבים כאן ישפיעו על העיצוב Modern בלבד */',
'vector.css' => '/* הסגנונות הנכתבים כאן ישפיעו על העיצוב Vector בלבד */',
'print.css' => '/* הסגנונות הנכתבים כאן ישפיעו על הפלט בהדפסה בלבד */',
# Scripts
'common.js' => '/* כל סקריפט JavaScript שנכתב כאן ירוץ עבור כל המשתמשים בכל טעינת עמוד */',
-'standard.js' => '/* כל סקריפט JavaScript שנכתב כאן ירוץ רק עבור המשתמשים בעיצוב Standard */',
-'nostalgia.js' => '/* כל סקריפט JavaScript שנכתב כאן ירוץ רק עבור המשתמשים בעיצוב Nostalgia */',
'cologneblue.js' => '/* כל סקריפט JavaScript שנכתב כאן ירוץ רק עבור המשתמשים בעיצוב CologneBlue */',
'monobook.js' => '/* כל סקריפט JavaScript שנכתב כאן ירוץ רק עבור המשתמשים בעיצוב Monobook */',
-'myskin.js' => '/* כל סקריפט JavaScript שנכתב כאן ירוץ רק עבור המשתמשים בעיצוב MySkin */',
-'chick.js' => '/* כל סקריפט JavaScript שנכתב כאן ירוץ רק עבור המשתמשים בעיצוב Chick */',
-'simple.js' => '/* כל סקריפט JavaScript שנכתב כאן ירוץ רק עבור המשתמשים בעיצוב Simple */',
'modern.js' => '/* כל סקריפט JavaScript שנכתב כאן ירוץ רק עבור המשתמשים בעיצוב Modern */',
'vector.js' => '/* כל סקריפט JavaScript שנכתב כאן ירוץ רק עבור המשתמשים בעיצוב Vector */',
'group-autoconfirmed.js' => '/* כל סקריפט JavaScript שנכתב כאן ירוץ רק עבור משתמשים ותיקים */',
'pageinfo-category-files' => 'מספר הקבצים',
# Skin names
-'skinname-standard' => 'קלאסי',
-'skinname-nostalgia' => 'נוסטלגיה',
'skinname-cologneblue' => 'מים כחולים',
'skinname-monobook' => 'מונובוק',
-'skinname-myskin' => 'העיצוב שלי',
-'skinname-chick' => "צ'יק",
-'skinname-simple' => 'פשוט',
'skinname-modern' => 'מודרני',
'skinname-vector' => 'וקטור',
'gotaccount' => "Aap ke pas pahile se account hai ki nai? '''$1'''.",
'gotaccountlink' => 'Log in',
'userlogin-resetlink' => 'Ka aap aapan login kare waala jaankari ke bhulae gaya hae?',
-'createaccountmail' => 'e-mail se',
+'createaccountmail' => 'Ek temporary password ke kaam me laao aur iske niche dekhawa gais Email pe bhej do',
'createaccountreason' => 'Kaaran:',
'badretype' => 'Jon duuno password aap likha hai uu ek rakam nai hae.',
'userexists' => 'Ii sadasya ke naam aur koi ke hae.
'passwordsent' => 'Ek nawaa password ke "$1" ke registered e-mail pe bheja gais hai. Meharbaani kar ke aap password mile ke baad login karna.',
'blocked-mailpassword' => 'Aap ke IP address ke block kar dewa gais hai, aur iske kaaran aap ke password recovery function kaam me lae ke ijajat nai hai,',
'eauthentsent' => 'Ek confirmation e-mail aap ke dewa gae e-mail address be bhej dewa gais hai. Aur mail ii account pe bheje se pahile e-mail me likha instructions ke follow karo, ii confirm kare ke khatir ki account aap ke hai.',
-'throttled-mailpassword' => 'Ek password reminder ke pichhle {{PLURAL:$1|hour|$1 hours}} me bhej dewa gais hai.
-Abuse ke roke ke khatir, khali ek password reminer har {{PLURAL:$1|hour|$1 hours}} me bheja jaai.',
+'throttled-mailpassword' => 'Ek password reset Email ke pahile bheja gais hae, pichhle {{PLURAL:$1|ghanta|$1 ghanta}} me bhej me.
+Abuse ke roke ke khatir, khali ek password reminer har {{PLURAL:$1|ghanta|$1 ghanta}} me bheja jaai.',
'mailerror' => 'Mail bheje me galti hoe gais hai: $1',
'acct_creation_throttle_hit' => 'Ii wiki me visitors log aap ke IP address ke use kar ke {{PLURAL:$1|1 account|$1 accounts}}, pichhle kuch din me, banae liin hai, jis se jaada ii time nai banawa jaae sake hai.
Ii kaaran se visitors log jon ki ii IP address use kare hai, ke aur account banae ke ijajat nai hai.',
# Email sending
'php-mail-error-unknown' => 'PHP ke mail() function me koi anjaan kharaabi hae',
'user-mail-no-addy' => 'Bina e-mail address rahe pe bhi e-mail bheje ke kosis karaa gais hae.',
+'user-mail-no-body' => 'Ek khaali, nai to kaafi chhota email bheje ke kosis kara rahaa.',
# Change password dialog
'resetpass' => 'Password ke badlo',
# Special:PasswordReset
'passwordreset' => 'Password ke badlo',
-'passwordreset-text' => 'Aapan account ke baare me jaankari ke receive kare ke khatir ii fom ke bharo.',
+'passwordreset-text' => 'Password ke reset kare ke khatir ii form ke bharo.',
'passwordreset-legend' => 'Password ke badlo',
'passwordreset-disabled' => 'II wiki me password ke badle ke ijaajat nai hae.',
'passwordreset-pretext' => '{{PLURAL:$1||Niche ke ek data ke likho}}',
'listusers-noresult' => 'Koi sadasya ke nai pawa gais hai.',
'listusers-blocked' => '(rok dewa gais hai)',
-# Special:ActiveUsers
-'activeusers' => 'Active sadasya ke list',
-'activeusers-intro' => 'Ii suchi uu sadasya ke hae jon ki pahile {{PLURAL:$1|din|din}} me kuchh karin hae.',
-'activeusers-count' => '$1 haali ke {{PLURAL:$1|badlao|badlao}} pichhle {{PLURAL:$3|din|$3 din}} me',
-'activeusers-from' => 'Sadasya jon ki hian se suruu hoe hai ke dekhao:',
-'activeusers-hidebots' => 'Bots ke lukao',
-'activeusers-hidesysops' => 'Administrator log ke lukao',
-'activeusers-noresult' => 'koi sadasya ke pawa nai gais hai.',
-
# Special:ListGroupRights
'listgrouprights' => 'Sadasya ke group adhikar',
'listgrouprights-summary' => 'Niche likha hai ek suchi hai groups ke jon ki ii wiki me defined hai, aapan associated access rights ke saathe
'pageinfo-robot-noindex' => 'Indexable nai hae',
'pageinfo-views' => 'Ketna dafe dekha gais hae',
'pageinfo-watchers' => 'Ketnaa jane panna ke dekhe hae',
+'pageinfo-few-watchers' => '$1 {{PLURAL:$1|watcher|watchers}} se kamtii log hae',
'pageinfo-redirects-name' => 'Ii panna pe redirect karo',
'pageinfo-subpages-name' => 'Ii panna ke subpage',
'pageinfo-subpages-value' => '$1 ($2 {{PLURAL:$2|redirect|redirects}}; $3 {{PLURAL:$3|non-redirect|non-redirects}})',
'listusers-noresult' => 'Nema takvih suradnika.',
'listusers-blocked' => '(blokiran)',
-# Special:ActiveUsers
-'activeusers' => 'Popis aktivnih suradnika',
-'activeusers-intro' => 'Ovo je popis suradnika koji su napravili neku aktivnost u {{PLURAL:$1|zadnji $1 dan|zadnja $1 dana|zadnjih $1 dana}}.',
-'activeusers-count' => '{{PLURAL:$1|nedavna $1 izmjena|nedavne $1 izmjene|nedavnih $1 izmjena}} u {{PLURAL:$3|posljednji $3 dan|posljednja $3 dana|posljednjih $3 dana}}',
-'activeusers-from' => 'Prikaži suradnike počevši od:',
-'activeusers-hidebots' => 'Sakrij botove',
-'activeusers-hidesysops' => 'Sakrij administratore',
-'activeusers-noresult' => 'Niti jedan suradnik nije nađen.',
-
# Special:ListGroupRights
'listgrouprights' => 'Prava suradničkih skupina',
'listgrouprights-summary' => 'Ovo je popis suradničkih skupina određenih na ovoj wiki, s njihovim pripadajućim pravima.
'listusers-noresult' => 'Njemóžno wužiwarjow namakać. Prošu wobkedźbuj, zo so mało- abo wulkopisanje na wotprašowanje wuskutkuje.',
'listusers-blocked' => '(blokowany)',
-# Special:ActiveUsers
-'activeusers' => 'Lisćina aktiwnych wužiwarjow',
-'activeusers-intro' => 'To je lisćina wužiwarjow, kotřiž běchu aktiwni za {{PLURAL:$1|posledni dźeń|poslednjej $1 dnjej|poslednje $1 dny|poslednich $1 dnjow}}:',
-'activeusers-count' => '$1 {{PLURAL:$1|akcija|akciji|akcije|akcijow}} w {{PLURAL:$3|zańdźenej dnju|zańdźenymaj $3 dnjomaj|zańdźenych $3 dnjach}}',
-'activeusers-from' => 'Wužiwarjow zwobraznić, započinajo z:',
-'activeusers-hidebots' => 'Boćiki schować',
-'activeusers-hidesysops' => 'Administratorow schować',
-'activeusers-noresult' => 'Žani wužiwarjo namakani.',
-
# Special:ListGroupRights
'listgrouprights' => 'Prawa wužiwarskeje skupiny',
'listgrouprights-summary' => 'Slěduje lisćina wužiwarskich skupinow na tutej wikiju z jich wotpowědnymi přistupnymi prawami. Tu móžeš [[{{MediaWiki:Listgrouprights-helppage}}|dalše informacije]] wo jednotliwych prawach namakać.',
'sorbs' => 'SORBS DNSbl',
'sorbsreason' => 'Twoja IP-adresa je jako wotewrjeny proksy na DNSBL {{GRAMMAR:genitiw|{{SITENAME}}}} zapisana.',
'sorbs_create_account_reason' => 'Twoja IP-adresa je jako wotewrjeny proksy na DNSBL {{GRAMMAR:genitiw|{{SITENAME}}}} zapisana. Njemóžeš konto wutworić.',
+'xffblockreason' => 'IP-adresa w header X-Forwarded-For, pak twoja pak ta proksy-serwera, kotryž wužiwaš, je so zablokowała. Prěnjotna přičina za blokowanje bě: $1',
'cant-block-while-blocked' => 'Njemóžeš druhich wužiwarjow blokować, mjeztym zo ty sy zablokowany.',
'cant-see-hidden-user' => 'Wužiwar, kotrehož pospytuješ blokować, bu hižo zablokowany a schowany. Dokelž nimaš prawo wužiwarja schować, njemóžeš blokowanje wužiwarja widźeć abo wobdźěłać.',
'ipbblocked' => 'Njemóžeš druhich wužiwarjow blokować abo wotblokować, dokelž ty sam sy zablokowany',
'pageinfo-category-files' => 'Ličba datajow',
# Skin names
-'skinname-standard' => 'Klasiski',
-'skinname-nostalgia' => 'Nostalgija',
'skinname-cologneblue' => 'Kölnjanska módrina',
'skinname-monobook' => 'MonoBook',
-'skinname-myskin' => 'MySkin',
-'skinname-chick' => 'Ćipka',
-'skinname-simple' => 'Jednory',
'skinname-modern' => 'Moderny',
# Patrolling
'listusers-noresult' => 'Nulle usator trovate.',
'listusers-blocked' => '(blocate)',
-# Special:ActiveUsers
-'activeusers' => 'Lista de usatores active',
-'activeusers-intro' => 'Isto es un lista de usatores que habeva alcun typo de activitate intra le ultime $1 {{PLURAL:$1|die|dies}}.',
-'activeusers-count' => '$1 {{PLURAL:$1|action|actiones}} in le ultime {{PLURAL:$3|die|$3 dies}}',
-'activeusers-from' => 'Presentar usatores a partir de:',
-'activeusers-hidebots' => 'Celar bots',
-'activeusers-hidesysops' => 'Celar administratores',
-'activeusers-noresult' => 'Nulle usator trovate.',
-
# Special:ListGroupRights
'listgrouprights' => 'Derectos del gruppos de usatores',
'listgrouprights-summary' => 'Lo sequente es un lista de gruppos de usatores definite in iste wiki, con lor derectos de accesso associate.
'blocked-mailpassword' => 'Alamat IP Anda diblokir dari penyuntingan dan karenanya tidak diizinkan menggunakan fungsi pengingat kata sandi untuk mencegah penyalahgunaan.',
'eauthentsent' => 'Sebuah surel untuk konfirmasi telah dikirim ke alamat surel.
Anda harus mengikuti instruksi di dalam surel tersebut untuk melakukan konfirmasi bahwa alamat tersebut adalah benar kepunyaan Anda. {{SITENAME}} tidak akan mengaktifkan fitur surel jika langkah ini belum dilakukan.',
-'throttled-mailpassword' => 'Suatu pengingat kata sandi telah dikirimkan dalam {{PLURAL:$1|jam|$1 jam}} terakhir.
-Untuk menghindari penyalahgunaan, hanya satu kata sandi yang akan dikirimkan setiap {{PLURAL:$1|jam|$1 jam}}.',
+'throttled-mailpassword' => 'Suatu pengingat kata sandi telah dikirimkan dalam {{PLURAL:$1|$1 jam}} terakhir.
+Untuk menghindari penyalahgunaan, hanya satu kata sandi yang akan dikirimkan setiap {{PLURAL:$1|$1 jam}}.',
'mailerror' => 'Kesalahan dalam mengirimkan surel: $1',
'acct_creation_throttle_hit' => 'Pengunjung wiki ini dengan alamat IP yang sama dengan Anda telah membuat {{PLURAL:$1|1 akun|$1 akun}} dalam satu hari terakhir, hingga jumlah maksimum yang diijinkan.
Karenanya, pengunjung dengan alamat IP ini tidak dapat lagi membuat akun lain untuk sementara.',
# Special:PasswordReset
'passwordreset' => 'Setel ulang sandi',
-'passwordreset-text' => 'Lengkapi formulir ini untuk menerima surel pengingat detail akun Anda.',
+'passwordreset-text' => 'Lengkapi formulir ini untuk menyetel ulang kata sandi.',
'passwordreset-legend' => 'Setel ulang sandi',
'passwordreset-disabled' => 'Penyetelan ulang sandi telah dimatikan di wiki ini.',
'passwordreset-pretext' => '{{PLURAL:$1||Masukkan salah satu data di bawah ini}}',
$2
-{{PLURAL:$3|Sandi sementara|Sandi sementara}} berikut akan kedaluwarsa dalam {{PLURAL:$5|satu hari|$5 hari}}.
+{{PLURAL:$3|Sandi sementara}} berikut akan kedaluwarsa dalam {{PLURAL:$5|$5 hari}}.
Anda harus masuk dan memilih sandi baru sekarang. Jika orang lain membuat
permintaan ini atau jika Anda ingat sandi asli dan tidak lagi
ingin mengubahnya, Anda dapat mengabaikan pesan ini dan terus menggunakan sandi lama.',
$2
-{{PLURAL:$3|Sandi sementara|Sandi sementara}} berikut akan kedaluwarsa dalam {{PLURAL:$5|satu hari|$5 hari}}.
+{{PLURAL:$3|Sandi sementara}} berikut akan kedaluwarsa dalam {{PLURAL:$5|$5 hari}}.
Anda harus masuk dan memilih sandi baru sekarang. Jika orang lain membuat
permintaan ini atau jika Anda ingat sandi asli dan tidak lagi
ingin mengubahnya, Anda dapat mengabaikan pesan ini dan terus menggunakan sandi lama.',
'passwordreset-emailelement' => 'Nama pengguna: $1
Sandi sementara: $2',
-'passwordreset-emailsent' => 'Surel pengingat telah dikirimkan.',
-'passwordreset-emailsent-capture' => 'Surel pengingat, yang ditampilkan di bawah, telah dikirim.',
-'passwordreset-emailerror-capture' => 'Surel pengingat, yang ditampilkan di bawah, telah dihasilkan, tetapi gagal mengirimkannya ke pengguna: $1',
+'passwordreset-emailsent' => 'Surel setel ulang kata sandi telah dikirimkan.',
+'passwordreset-emailsent-capture' => 'Surel setel ulang kata sandi telah dikirim, yang ditampilkan di bawah.',
+'passwordreset-emailerror-capture' => 'Surel setel ulang kata sandi telah dihasilkan, yang ditampilkan di bawah, tetapi gagal mengirimkannya ke pengguna: $1',
# Special:ChangeEmail
'changeemail' => 'Ubah alamat surel',
'listusers-noresult' => 'Pengguna tidak ditemukan.',
'listusers-blocked' => '(diblokir)',
-# Special:ActiveUsers
-'activeusers' => 'Daftar pengguna aktif',
-'activeusers-intro' => 'Berikut adalah daftar pengguna yang memiliki suatu bentuk aktivitas selama paling tidak $1 {{PLURAL:$1|hari|hari}} terakhir.',
-'activeusers-count' => '$1 {{PLURAL:$1|aktivitas|aktivitas}} dalam {{PLURAL:$3|1 hari|$3 hari}} terakhir',
-'activeusers-from' => 'Tampilkan pengguna mulai dari:',
-'activeusers-hidebots' => 'Sembunyikan bot',
-'activeusers-hidesysops' => 'Sembunyikan pengurus',
-'activeusers-noresult' => 'Pengguna tidak ditemukan.',
-
# Special:ListGroupRights
'listgrouprights' => 'Daftar kelompok pengguna',
'listgrouprights-summary' => 'Berikut adalah daftar kelompok pengguna yang terdapat di wiki ini, dengan daftar hak akses mereka masing-masing. Informasi lebih lanjut mengenai hak masing-masing dapat ditemukan di [[{{MediaWiki:Listgrouprights-helppage}}|halaman bantuan hak pengguna]].',
# Stylesheets
'common.css' => '/* CSS yang ada di sini akan diterapkan pada semua kulit. */',
-'standard.css' => '/* CSS yang ada di sini akan diterapkan pada kulit Standar. */',
-'nostalgia.css' => '/* CSS yang ada di sini akan diterapkan pada kulit Nostalgia. */',
'cologneblue.css' => '/* CSS yang ada di sini akan diterapkan pada kulit Cologne Blue. */',
'monobook.css' => '/* CSS yang ada di sini akan diterapkan pada kulit Monobook. */',
-'myskin.css' => '/* CSS yang ada di sini akan diterapkan pada kulit MySkin. */',
-'chick.css' => '/* CSS yang ada di sini akan diterapkan pada kulit Chick. */',
-'simple.css' => '/* CSS yang ada di sini akan diterapkan pada kulit Sederhana. */',
'modern.css' => '/* CSS yang ada di sini akan diterapkan pada kulit Modern. */',
'vector.css' => '/* CSS yang ada di sini akan diterapkan pada kulit Vektor. */',
'print.css' => '/* CSS yang ada di sini akan diterapkan pada tampilan cetak. */',
# Scripts
'common.js' => '/* JavaScript yang ada di sini akan diterapkan untuk semua kulit. */',
-'standard.js' => '/* Semua JavaScript di sini akan dimuatkan untuk para pengguna yang menggunakan kulit Standard */',
-'nostalgia.js' => '/* Semua JavaScript di sini akan dimuatkan untuk para pengguna yang menggunakan kulit Nostalgia */',
'cologneblue.js' => '/* Semua JavaScript di sini akan dimuatkan untuk para pengguna yang menggunakan kulit Cologne Blue */',
'monobook.js' => '/* Semua JavaScript di sini akan dimuatkan untuk para pengguna yang menggunakan kulit MonoBook */',
-'myskin.js' => '/* Semua JavaScript di sini akan dimuatkan untuk para pengguna yang menggunakan kulit MySkin */',
-'chick.js' => '/* Semua JavaScript di sini akan dimuatkan untuk para pengguna yang menggunakan kulit Chick */',
-'simple.js' => '/* Semua JavaScript di sini akan dimuatkan untuk para pengguna yang menggunakan kulit Simple */',
'modern.js' => '/* Semua JavaScript di sini akan dimuatkan untuk para pengguna yang menggunakan kulit Modern */',
'vector.js' => '/* Semua JavaScript di sini akan dimuatkan untuk para pengguna yang menggunakan kulit Vector */',
'group-autoconfirmed.js' => '/* Semua JavaScript di sini hanya dimuatkan untuk pengguna terkonfirmasi otomatis */',
'pageinfo-category-files' => 'Jumlah berkas',
# Skin names
-'skinname-standard' => 'Klasik',
-'skinname-nostalgia' => 'Nostalgia',
'skinname-cologneblue' => 'Biru Köln',
'skinname-monobook' => 'MonoBook',
-'skinname-myskin' => 'MySkin',
-'skinname-chick' => 'Chick',
-'skinname-simple' => 'Sederhana',
'skinname-modern' => 'Modern',
'skinname-vector' => 'Vektor',
'sqlite-no-fts' => '$1 tanpa dukungan pencarian teks lengkap',
# New logging system
-'logentry-delete-delete' => '$1 menghapus halaman $3',
-'logentry-delete-restore' => '$1 mengembalikan halaman $3',
-'logentry-delete-event' => '$1 mengubah ketertampilan {{PLURAL:$5||}} $5 log peristiwa di $3: $4',
-'logentry-delete-revision' => '$1 mengubah ketertampilan {{PLURAL:$5||}} $5 revisi di halaman $3: $4',
-'logentry-delete-event-legacy' => '$1 mengubah ketertampilan log peristiwa pada $3',
-'logentry-delete-revision-legacy' => '$1 mengubah ketertampilan revisi pada halaman $3',
-'logentry-suppress-delete' => '$1 mensupresi halaman $3',
-'logentry-suppress-event' => '$1 secara diam-diam mengubah ketertampilan {{PLURAL:$5||}} $5 log peristiwa di $3: $4',
-'logentry-suppress-revision' => '$1 diam-diam mengubah ketertampilan {{PLURAL:$5||}} $5 revisi di halaman $3: $4',
-'logentry-suppress-event-legacy' => '$1 diam-diam mengubah ketertampilan log peristiwa pada $3',
-'logentry-suppress-revision-legacy' => '$1 diam-diam mengubah ketertampilan revisi pada halaman $3',
+'logentry-delete-delete' => '$1 {{GENDER:$2|menghapus}} halaman $3',
+'logentry-delete-restore' => '$1 {{GENDER:$2|mengembalikan}} halaman $3',
+'logentry-delete-event' => '$1 {{GENDER:$2|mengubah}} tampilan {{PLURAL:$5|$5 log peristiwa}} di $3: $4',
+'logentry-delete-revision' => '$1 {{GENDER:$2|mengubah}} tampilan {{PLURAL:$5|$5 revisi}} di halaman $3: $4',
+'logentry-delete-event-legacy' => '$1 {{GENDER:$2|mengubah}} tampilan log peristiwa pada $3',
+'logentry-delete-revision-legacy' => '$1 {{GENDER:$2|mengubah}} tampilan revisi pada halaman $3',
+'logentry-suppress-delete' => '$1 {{GENDER:$2|menimpa}} halaman $3',
+'logentry-suppress-event' => '$1 secara diam-diam {{GENDER:$2|mengubah}} tampilan {{PLURAL:$5|$5 log peristiwa}} di $3: $4',
+'logentry-suppress-revision' => '$1 diam-diam {{GENDER:$2|mengubah}} tampilan {{PLURAL:$5|$5 revisi}} di halaman $3: $4',
+'logentry-suppress-event-legacy' => '$1 diam-diam {{GENDER:$2|mengubah}} tampilan log peristiwa pada $3',
+'logentry-suppress-revision-legacy' => '$1 diam-diam {{GENDER:$2|mengubah}} tampilan revisi pada halaman $3',
'revdelete-content-hid' => 'konten disembunyikan',
'revdelete-summary-hid' => 'ringkasan suntingan disembunyikan',
'revdelete-uname-hid' => 'nama pengguna disembunyikan',
'revdelete-uname-unhid' => 'nama pengguna tidak disembunyikan',
'revdelete-restricted' => 'akses telah dibatasi untuk opsis',
'revdelete-unrestricted' => 'pembatasan akses opsis dihapuskan',
-'logentry-move-move' => '$1 memindahkan halaman $3 ke $4',
-'logentry-move-move-noredirect' => '$1 memindahkan halaman $3 ke $4 tanpa membuat pengalihan',
-'logentry-move-move_redir' => '$1 memindahkan halaman $3 ke $4 menimpa pengalihan lama',
-'logentry-move-move_redir-noredirect' => '$1 memindahkan halaman $3 ke $4 menimpa pengalihan lama tanpa membuat pengalihan',
-'logentry-patrol-patrol' => '$1 menandai revisi $4 dari halaman $3 terpatroli',
-'logentry-patrol-patrol-auto' => '$1 secara otomatis menandai revisi $4 dari halaman $3 terpatroli',
-'logentry-newusers-newusers' => 'Akun pengguna $1 telah dibuat',
-'logentry-newusers-create' => '$1 membuat akun pengguna',
-'logentry-newusers-create2' => '$1 membuat akun pengguna $3',
-'logentry-newusers-byemail' => 'Akun pengguna $3 diciptakan oleh $1 dan password dikirim melalui surel',
-'logentry-newusers-autocreate' => 'Akun $1 dibuat secara otomatis',
-'logentry-rights-rights' => '$1 mengubah keanggotaan grup $3 dari $4 menjadi $5',
-'logentry-rights-rights-legacy' => '$1 mengubah keanggotaan grup $3',
-'logentry-rights-autopromote' => '$1 secara otomatis dipromosikan dari $4 menjadi $5',
+'logentry-move-move' => '$1 {{GENDER:$2|memindahkan}} halaman $3 ke $4',
+'logentry-move-move-noredirect' => '$1 {{GENDER:$2|memindahkan}} halaman $3 ke $4 tanpa membuat pengalihan',
+'logentry-move-move_redir' => '$1 {{GENDER:$2|memindahkan}} halaman $3 ke $4 menimpa pengalihan lama',
+'logentry-move-move_redir-noredirect' => '$1 {{GENDER:$2|memindahkan}} halaman $3 ke $4 menimpa pengalihan lama tanpa membuat pengalihan',
+'logentry-patrol-patrol' => '$1 {{GENDER:$2|menandai}} revisi $4 dari halaman $3 terpatroli',
+'logentry-patrol-patrol-auto' => '$1 otomatis {{GENDER:$2|menandai}} revisi $4 dari halaman $3 terpatroli',
+'logentry-newusers-newusers' => 'Akun pengguna $1 telah {{GENDER:$2|dibuat}}',
+'logentry-newusers-create' => '$1 {{GENDER:$2|membuat}} akun pengguna',
+'logentry-newusers-create2' => '$1 {{GENDER:$2|membuat}} akun pengguna $3',
+'logentry-newusers-byemail' => 'Akun pengguna $3 {{GENDER:$2|dibuat}} oleh $1 dan password dikirim melalui surel',
+'logentry-newusers-autocreate' => 'Akun $1 {{GENDER:$2|dibuat}} secara otomatis',
+'logentry-rights-rights' => '$1 {{GENDER:$2|mengubah}} keanggotaan grup $3 dari $4 menjadi $5',
+'logentry-rights-rights-legacy' => '$1 {{GENDER:$2|mengubah}} keanggotaan grup $3',
+'logentry-rights-autopromote' => '$1 secara otomatis {{GENDER:$2|dipromosikan}} dari $4 menjadi $5',
'rightsnone' => '(tidak ada)',
# Feedback
'invalidemailaddress' => 'Ti esurat a pagtaengam ket saan a maawat ngamin ket kasla adda ti saan a napudno a nakabuklan.
Pangngaasi nga ikkam ti nasayaat a nakabuklan a pagtaengan wenno ikkatem amin dagiti naikabil mo.',
'cannotchangeemail' => 'Dagiti pakabilangan nga esurat a pagtaengan ket saan a mabaliwan ditoy a wiki.',
-'emaildisabled' => 'Daytoy a pagsaaadan ket saan a makaipatuod kadagiti e-surat.',
+'emaildisabled' => 'Daytoy a pagsaaadan ket saan a makaipatulod kadagiti esurat.',
'accountcreated' => 'Naaramiden ti pakabilangan',
'accountcreatedtext' => 'Ti pakabilangan ti agar-aramat para iti $1 ket naaramiden.',
'createaccount-title' => 'Panagaramid iti pakabilangan para iti {{SITENAME}}',
-'createaccount-text' => 'Adda nagaramid ti pakabilangan para iti e-surat a pagtaengam idiay {{SITENAME}} ($4) nga agnagan ti "$2", iti kontrasenias a "$3".
+'createaccount-text' => 'Adda nagaramid ti pakabilangan para iti esurat a pagtaengam idiay {{SITENAME}} ($4) nga agnagan ti "$2", iti kontrasenias a "$3".
Nasken a sumrekka ken sukatam ti kontraseniasmo tattan.
Mabalinmo ti saan a mangikaskaso ti daytoy a mensahe, no biddut a naaramid daytoy a pakabilangan.',
'passwordreset-username' => 'Nagan ti agar-aramat:',
'passwordreset-domain' => 'Pagturayan:',
'passwordreset-capture' => 'Kitaem ti nagbanagan ti esurat?',
-'passwordreset-capture-help' => 'No markaam daytoy a kahon, ti e-surat (nga adda ti temporario a kontrasenias) ket maipakita kenka ken maipatulod iti agar-aramat.',
+'passwordreset-capture-help' => 'No markaam daytoy a kahon, ti esurat (nga adda ti temporario a kontrasenias) ket maipakita kenka ken maipatulod iti agar-aramat.',
'passwordreset-email' => 'Esurat a pagtaengan:',
'passwordreset-emailtitle' => 'Salaysay ti pakabilangan iti {{SITENAME}}',
'passwordreset-emailtext-ip' => 'Adda (baka sika, ti naggapuan ti IP a pagtaengan $1) a nagkiddaw ti maysa a panangidisso manen ti kontrasenias para iti {{SITNAME}} ($4) . {{PLURAL:$3|Ti |Dagiti}} sumaganad a pakabilangan ti agar-aramat ket
$2
{{PLURAL:$3|Daytoy temporario a kontrasenias|Dagitoy temporario a kontrasenias}} ket agpaso {{PLURAL:$5|iti maysa nga aldaw|kadagiti $5 nga aldaw}}.
-Sumrekka kuman ta agpili ka ti baro a kontrasenias mo tattan. No adda met sabali a nagaramid daytoy a
-panagkiddaw, wenno malagip mo ti dati a kontrasenias mo, ket saan mo a kayaten a sukatan, saan mo nga ikaskaso daytoy a mensahe ken
-agtuloy ka nga agusar ti daan a kontrasenias.',
+Sumrekka kuman ta agpilika ti baro a kontraseniasmo tattan. No adda met sabali a nagaramid daytoy a
+panagkiddaw, wenno malagipmo ti dati a kontraseniasmo, ket saanmo a kayaten a sukatan, saanmo nga ikaskaso daytoy a mensahe ken
+agtuloyka nga agusar ti daan a kontrasenias.',
'passwordreset-emailtext-user' => 'Daytoy nga agar-aramat $1 iti {{SITENAME}} ket nagkiddaw ti maysa a panangidisso manen ti bukodmo a kontrasenias para iti {{SITENAME}}
($4) . {{PLURAL:$3|Ti|Dagiti}} sumaganad a pakabilanagn ti agar-aramat ket
nakairaman iti daytoy nga esurat a pagtaengan:
Mabalinmo a kontaken ni $1 wenno sabali pay nga [[{{MediaWiki:Grouppage-sysop}}|administrador]] no kayatmo a maipalawag daytoy a panag-serra.
Dimo mabalin nga aramaten ti ramit nga esuratan daytoy nga agar-aramat malaksid no adda napudno nga esurat a pagtaengan a naipan iti [[Special:Preferences|pakabilangan ti kaykayatmo]] ken no saanka a naparitan nga agaramat iti daytoy.
-Ti agdama nga IP a pagtaengam ket $3, ti naserraan nga ID ket #$5. Pangngaasim nga iramanmo nga ited ti ania man wenno agpada kadagitoy iti ania man a panagsaludsodmo.",
+Ti agdama nga IP a pagtaengam ket $3, ti naserraan nga ID ket #$5. Pangngaasim nga iramanmo nga ited ti aniaman wenno agpada kadagitoy iti aniaman a panagsaludsodmo.",
'autoblockedtext' => 'Ti IP a pagtaengam ket na-automatiko a naserraan ngamin ket inusar ti sabali nga agar-aramat, a sinerraan ni $1.
Ti rason nga inted ket:
Mabalin a naiyalis wenno naikkat bayat idi kitkitaem ti panid.',
'loginreqtitle' => 'Masapul ti sumrek',
'loginreqlink' => 'sumrek',
-'loginreqpagetext' => 'Nasken a $1 ka tapno makakitaka kadagiti sabsabali a pampanid.',
+'loginreqpagetext' => 'Naskenka a $1 tapno makakitaka kadagiti sabsabali a pampanid.',
'accmailtitle' => 'Naipatuloden ti kontrasenias.',
'accmailtext' => "Ti kontrasenias para ken ni [[User talk:$1|$1]] ket naipatuloden ken ni $2.
wenno [{{fullurl:{{NAMESPACE}}:{{PAGENAME}}|action=edit}} urnosem daytoy a panid].',
'noarticletext-nopermission' => 'Awan ti agdama a linaon daytoy a panid.
Mabalinmo ti [[Special:Search/{{PAGENAME}}|agbiruk para iti titulo ti daytoy a panid]] kadagiti dadduma a panid, wenno <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} agbiruk kadagiti mainaig a listaan]</span>, ngem awan ti pammalubosmo a mangpartuat ti daytoy a panid.',
-'missing-revision' => 'Ti panagbalbaliw ti #$1 tipanid a nanaganan ti "{{PAGENAME}}" ket awan.
+'missing-revision' => 'Ti panagbalbaliw ti #$1 iti daytoy a panid a nanaganan ti "{{PAGENAME}}" ket awan.
-Daytoy ket kadawyan a gapuanan babaen ti samaganad a panilpo ti baak a pakasaritaan iti maysa a panid a naikkaten.
+Daytoy ket kadawyan a gapuanan babaen ti sumaganad a panilpo ti baak a pakasaritaan iti maysa a naikkaten a panid.
Dagiti salaysay ket mabalin a mabirukan idiay [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} listaan ti panagikkat].',
'userpage-userdoesnotexist' => 'Ti pakabilangan ti agar-aramat "$1" ket saan a nakarehistro.
Pangngaasi a kitaem no kayatmo ti agaramid/urnosen daytoy a panid.',
'post-expand-template-inclusion-warning' => "'''Ballaag:''' Dakkel unay ti nairaman a kadakkel ti plantilia.
Adda dagiti plantilia a saanto a mairaman.",
'post-expand-template-inclusion-category' => 'Pampanid nga ayan ti plantilia a nagsobra ti kadakkel ti rukod a nairaman',
-'post-expand-template-argument-warning' => "'''Ballaag:''' Daytoy a panid ket aglaon ti saan a basbasit ngem maysa a panagpalawag a plantilia a dakkel unay ti panagpadakkel na.
-Dagitoy a panagpalawag ket naikkaten.",
+'post-expand-template-argument-warning' => "'''Ballaag:''' Daytoy a panid ket aglaon ti saan a basbasit ngem maysa a panangipalawag ti plantilia a dakkel unay ti panagpadakkelna.
+Dagitoy a panangipalawag ket naikkaten.",
'post-expand-template-argument-category' => 'Dagiti panid a naglaon ti naikkat a plantilia kadagiti kasinnungat',
'parser-template-loop-warning' => 'Adda nasarakan a silo ti plantilia: [[$1]]',
'parser-template-recursion-depth-warning' => 'Ti kinauneg ti panagdullit ti plantilia ket nagpatingga ti napalabes ($1)',
'prefs-resetpass' => 'Sukatan ti kontrasenias',
'prefs-changeemail' => 'Sukatan ti esurat a pagtaengan',
'prefs-setemail' => 'Ikabil ti esurat a pagtaengan',
-'prefs-email' => 'Pagpilian ti e-surat',
+'prefs-email' => 'Pagpilian ti esurat',
'prefs-rendering' => 'Tabas',
'saveprefs' => 'Idulin',
'resetprefs' => 'Dalusan dagiti saan a naidulin a sinuksukatan',
'right-hideuser' => 'Serraan ti maysa a nagan ti agar-aramat, ilemmeng manipud ti publiko',
'right-ipblock-exempt' => 'Labsan dagiti IP a serra, dagiti automatiko a serra ken dagiti nasakup a serra.',
'right-proxyunbannable' => 'Labsan dagiti automatiko a serra dagiti proxie',
-'right-unblockself' => 'Ikkaten ti panaka-serra kaniada',
+'right-unblockself' => 'Ikkaten ti pannaka-serra kaniada',
'right-protect' => 'Sukatan dagiti lessaad ti salaknib ken dagiti panid a nasalakniban ti panag-urnos',
'right-editprotected' => 'Urnosen dagiti nasalakniban a panid (nga awan ti sariap a salaknib")',
'right-editinterface' => 'Urnosen ti "interface" ti agar-aramat',
'listusers-noresult' => 'Awan ti nasarakan nga agar-aramat.',
'listusers-blocked' => '(naserraan)',
-# Special:ActiveUsers
-'activeusers' => 'Listaan dagiti nasiglat nga agar-aramat',
-'activeusers-intro' => 'Daytoy ti listaan dagiti agar-aramat nga adda inararamidda kadagiti napalabas a $1 {{PLURAL:$1|nga aldaw|nga alaldaw}}.',
-'activeusers-count' => '$1 {{PLURAL:$1|a tignay|tigtignay}} idi kalpasan ti {{PLURAL:$3|nga aldaw|$3 nga alaldaw}}',
-'activeusers-from' => 'Iparang dagiti agar-aramat a mangrugi iti:',
-'activeusers-hidebots' => 'Ilemmeng dagiti bot',
-'activeusers-hidesysops' => 'Ilemmeng dagiti administrador',
-'activeusers-noresult' => 'Awan ti nasarakan nga agar-aramat.',
-
# Special:ListGroupRights
'listgrouprights' => 'Dagiti karbengan ti grupo ti agar-aramat',
'listgrouprights-summary' => 'Dagiti sumaganad a listaan ti bunggoy ti agar-aramat a naipalawag iti daytoy a wiki, a nairaman dagiti karbengan ti panagserrekda.
Vinsamlegast skráðu þig inn á ný þegar þú hefur móttekið það.',
'blocked-mailpassword' => 'Þér er ekki heimilt að gera breytingar frá þessu netfangi og því getur þú ekki fengið nýtt lykilorð í pósti. Þetta er gert til þess að koma í veg fyrir skemmdarverk.',
'eauthentsent' => 'Staðfestingarpóstur hefur verið sendur á uppgefið netfang. Þú verður að fylgja leiðbeiningunum í póstinum til þess að virkja netfangið og staðfesta að það sé örugglega þitt.',
-'throttled-mailpassword' => 'Áminning fyrir lykilorð hefur nú þegar verið send, innan við {{PLURAL:$1|síðasta klukkutímans|$1 síðustu klukkutímanna}}.
-Til að koma í veg fyrir misnotkun, er aðeins ein áminning send {{PLURAL:$1|hvern klukkutíma|hverja $1 klukkutíma}}.',
+'throttled-mailpassword' => 'Tölvupóstur til að endursetja lykilorðið hefur þegar verið sent, innan við {{PLURAL:$1|síðasta klukkutímans|$1 síðustu klukkutímanna}}.
+Til að koma í veg fyrir misnotkun, er aðeins einn tölvupóstur sendur {{PLURAL:$1|hvern klukkutíma|hverja $1 klukkutíma}}.',
'mailerror' => 'Upp kom villa við sendingu tölvupósts: $1',
'acct_creation_throttle_hit' => 'Því miður, hafa verið búnir til {{PLURAL:$1|1 aðgang|$1 aðganga}} nýr aðgangar í dag sem er hámarksfjöldi nýskráninga á einum degi.
Þú getur því miður ekki búið til nýjan aðgang frá þessari IP-tölu að svo stöddu.',
# Special:PasswordReset
'passwordreset' => 'Endurstilla lykilorð',
-'passwordreset-text' => 'Fylltu út þennan reit til að fá tölvupóst um áminningu um notendauplýsingarnar þínar.',
+'passwordreset-text' => 'Fylltu út þennan reit til að endursetja lykilorðið þitt.',
'passwordreset-legend' => 'Endurstilla lykilorð',
'passwordreset-disabled' => 'Lokað hefur verið fyrir að endurstilla lykilorð á þessum wiki.',
'passwordreset-pretext' => '{{PLURAL:$1||Sláðu inn einn hluta gagnanna hér fyrir neðan}}',
'passwordreset-capture-help' => 'Ef þú hakar við þennan reit verður tölvupósturinn (með tímabundna lykilorðinu) sýndur þér og einnig sendur notandanum.',
'passwordreset-email' => 'Netfang:',
'passwordreset-emailtitle' => 'Notendaupplýsingar á {{SITENAME}}',
-'passwordreset-emailtext-ip' => 'Einhver (líklegast þú, á vistfanginu $1) hefur beðið um notendaupplýsingar þínar fyrir {{SITENAME}} ($4). Aðgangur eftirfarandi {{PLURAL:$3|notanda er|notendum eru}} tengd þessu netfangi:
+'passwordreset-emailtext-ip' => 'Einhver (líklegast þú, á vistfanginu $1) hefur beðið um
+endursetningu lykilorðsins þíns fyrir {{SITENAME}} ($4). Aðgangur eftirfarandi {{PLURAL:$3|notanda er|notendum eru}} tengd þessu netfangi:
$2
Ef þetta er það sem þú vildir, þarftu að skrá þig inn og velja nýtt lykilorð. {{PLURAL:$3|Tímabundna lykilorð|Tímabundnu lykilorðin}} renna út eftir {{PLURAL:$5|einn dag|$5 daga}}.
Ef það varst ekki þú sem fórst fram á þetta, eða ef þú mannst lykilorðið þitt, og villt ekki lengur breyta því, skaltu hunsa þessi skilaboð og halda áfram að nota gamla lykilorðið.',
-'passwordreset-emailtext-user' => 'Notandinn $1 á {{SITENAME}} hefur beðið um notendaupplýsingar þínar fyrir {{SITENAME}} ($4). Aðgangur eftirfarandi {{PLURAL:$3|notanda er|notendum eru}} tengd þessu netfangi:
+'passwordreset-emailtext-user' => 'Notandinn $1 á {{SITENAME}} hefur beðið um endursetningu lykilorðsins þíns fyrir {{SITENAME}} ($4). Aðgangur eftirfarandi {{PLURAL:$3|notanda er|notendum eru}} tengd þessu netfangi:
$2
Ef það varst ekki þú sem fórst fram á þetta, eða ef þú mannst lykilorðið þitt, og villt ekki lengur breyta því, skaltu hunsa þessi skilaboð og halda áfram að nota gamla lykilorðið.',
'passwordreset-emailelement' => 'Notendanafn: $1
Tímabundið lykilorð: $2',
-'passwordreset-emailsent' => 'Áminning hefur verið send í tölvupósti.',
-'passwordreset-emailsent-capture' => 'Áminning hefur verið send í tölvupósti, sem er sýnd hér fyrir neðan.',
-'passwordreset-emailerror-capture' => 'Áminning var búin til, sem er sýnd hér fyrir neðan, en ekki tókst að senda hana til notandans: $1',
+'passwordreset-emailsent' => 'Töluvpóstur til að endursetja lykilorðið hefur verið sendur.',
+'passwordreset-emailsent-capture' => 'Tölvupóstur til að endursetja lykilorðið hefur verið sendur í tölvupósti, sem er sýndur hér fyrir neðan.',
+'passwordreset-emailerror-capture' => 'Tölvupóstur til að endursetja lykilorðið var búinn til, sem er sýndur hér fyrir neðan, en ekki tókst að senda hana til notandans: $1',
# Special:ChangeEmail
'changeemail' => 'Breyting netfangs',
'listusers-noresult' => 'Enginn notandi fannst.',
'listusers-blocked' => '(bannaður)',
-# Special:ActiveUsers
-'activeusers' => 'Virkir notendur',
-'activeusers-intro' => 'Þetta er listi yfir notendur sem hafa verið virkir {{PLURAL:$1|síðasta|síðustu}} $1 {{PLURAL:$1|dag|daga}}.',
-'activeusers-count' => '$1 {{PLURAL:$1|aðgerð|aðgerðir}} á {{PLURAL:$3|síðastliðnum degi|síðustu $3 dögum}}',
-'activeusers-from' => 'Sýna notendur sem byrja á:',
-'activeusers-hidebots' => 'Fela vélmenni',
-'activeusers-hidesysops' => 'Fela möppudýr',
-'activeusers-noresult' => 'Enginn notandi fannst.',
-
# Special:ListGroupRights
'listgrouprights' => 'Notandahópréttindi',
'listgrouprights-summary' => 'Hér er listi yfir notendahópa á þessum wiki, með þeirra réttindum.
'pageinfo-category-files' => 'Fjöldi skráa',
# Skin names
-'skinname-standard' => 'Sígilt',
-'skinname-nostalgia' => 'Gamaldags',
'skinname-cologneblue' => 'Kölnarblátt',
'skinname-monobook' => 'EinBók',
-'skinname-myskin' => 'Mitt þema',
-'skinname-chick' => 'Gella',
-'skinname-simple' => 'Einfalt',
'skinname-modern' => 'Nútímalegt',
# Patrolling
'sqlite-no-fts' => '$1 án fullum texta leitar stuðningi',
# New logging system
-'logentry-delete-delete' => '$1 eyddi síðunni $3',
-'logentry-delete-restore' => '$1 endurvakti $3',
-'logentry-delete-event' => '$1 breytti sýnileika {{PLURAL:$5|færslu|$5 færslna}} á $3: $4',
-'logentry-delete-revision' => '$1 breytti sýnileika {{PLURAL:$5|útgáfu|$5 útgáfna}} á $3: $4',
-'logentry-delete-event-legacy' => '$1 breytti sýnileika færslna á $3',
-'logentry-delete-revision-legacy' => '$1 breytti sýnileika útgáfna á $3',
-'logentry-suppress-delete' => '$1 bældi niður síðuna $3',
-'logentry-suppress-event' => '$1 breytti leynilega sýnileika {{PLURAL:$5|færslu|$5 færslna}} á $3: $4',
-'logentry-suppress-revision' => '$1 breytti leynilega sýnileika {{PLURAL:$5|útgáfu|$5 útgáfna}} á $3: $4',
-'logentry-suppress-event-legacy' => '$1 breytti leynilega sýnileika færslna á $3',
-'logentry-suppress-revision-legacy' => '$1 breytti leynilega sýnileika útgáfna á $3',
+'logentry-delete-delete' => '$1 {{GENDER:$2|eyddi}} síðunni $3',
+'logentry-delete-restore' => '$1 {{GENDER:$2|endurvakti}} $3',
+'logentry-delete-event' => '$1 {{GENDER:$2|breytti}} sýnileika {{PLURAL:$5|færslu|$5 færslna}} á $3: $4',
+'logentry-delete-revision' => '$1 {{GENDER:$2|breytti}} sýnileika {{PLURAL:$5|útgáfu|$5 útgáfna}} á $3: $4',
+'logentry-delete-event-legacy' => '$1 {{GENDER:$2|breytti}} sýnileika færslna á $3',
+'logentry-delete-revision-legacy' => '$1 {{GENDER:$2|breytti}} sýnileika útgáfna á $3',
+'logentry-suppress-delete' => '$1 {{GENDER:$2|bældi niður}} síðuna $3',
+'logentry-suppress-event' => '$1 {{GENDER:$2|breytti}} leynilega sýnileika {{PLURAL:$5|færslu|$5 færslna}} á $3: $4',
+'logentry-suppress-revision' => '$1 {{GENDER:$2|breytti}} leynilega sýnileika {{PLURAL:$5|útgáfu|$5 útgáfna}} á $3: $4',
+'logentry-suppress-event-legacy' => '$1 {{GENDER:$2|breytti}} leynilega sýnileika færslna á $3',
+'logentry-suppress-revision-legacy' => '$1 {{GENDER:$2|breytti}} leynilega sýnileika útgáfna á $3',
'revdelete-content-hid' => 'efni falið',
'revdelete-summary-hid' => 'breytingarágrip falið',
'revdelete-uname-hid' => 'notandanafn falið',
'revdelete-uname-unhid' => 'notandanafn birt',
'revdelete-restricted' => 'hömlur settar á stjórnendur',
'revdelete-unrestricted' => 'fjarlægja hömlur á stjórnendur',
-'logentry-move-move' => '$1 færði $3 á $4',
-'logentry-move-move-noredirect' => '$1 færði $3 á $4 án þess að skilja eftir tilvísun',
-'logentry-move-move_redir' => '$1 færði $3 á $4 yfir tilvísun',
-'logentry-move-move_redir-noredirect' => '$1 færði $3 á $4 yfir tilvísun, án þess að skilja eftir tilvísun',
-'logentry-patrol-patrol' => '$1 merkti útgáfu $3 frá $4 sem yfirfarna',
-'logentry-patrol-patrol-auto' => '$1 merkti sjálfvirkt útgáfu $3 frá $4 sem yfirfarna',
-'logentry-newusers-newusers' => 'Notandaaðgangurinn $1 var stofnaður',
-'logentry-newusers-create' => 'Notandaaðgangurinn $1 var stofnaður',
-'logentry-newusers-create2' => '$1 stofnaði notandaaðganginn $3',
-'logentry-newusers-byemail' => 'Notandaaðgangurinn $3 var búinn til af $1 og lykilorðið var sent með tölvupósti',
-'logentry-newusers-autocreate' => 'Aðgangurinn $1 var stofnaður sjálfvirkt',
-'logentry-rights-rights' => '$1 breytti réttindum $3 frá $4 í $5',
-'logentry-rights-rights-legacy' => '$1 breytti réttindum $3',
-'logentry-rights-autopromote' => '$1 fékk sjálfvirkt aukin réttindi frá $4 til $5',
+'logentry-move-move' => '$1 {{GENDER:$2|færði}} $3 á $4',
+'logentry-move-move-noredirect' => '$1 {{GENDER:$2|færði}} $3 á $4 án þess að skilja eftir tilvísun',
+'logentry-move-move_redir' => '$1 {{GENDER:$2|færði}} $3 á $4 yfir tilvísun',
+'logentry-move-move_redir-noredirect' => '$1 {{GENDER:$2|færði}} $3 á $4 yfir tilvísun, án þess að skilja eftir tilvísun',
+'logentry-patrol-patrol' => '$1 {{GENDER:$2|merkti}} útgáfu $3 frá $4 sem yfirfarna',
+'logentry-patrol-patrol-auto' => '$1 {{GENDER:$2|merkti}} sjálfvirkt útgáfu $3 frá $4 sem yfirfarna',
+'logentry-newusers-newusers' => 'Notandaaðgangurinn $1 var {{GENDER:$2|stofnaður}}',
+'logentry-newusers-create' => 'Notandaaðgangurinn $1 var {{GENDER:$2|stofnaður}}',
+'logentry-newusers-create2' => '$1 {{GENDER:$2|stofnaði}} notandaaðganginn $3',
+'logentry-newusers-byemail' => 'Notandaaðgangurinn $3 var {{GENDER:$2|búinn til}} af $1 og lykilorðið var sent með tölvupósti',
+'logentry-newusers-autocreate' => 'Aðgangurinn $1 var {{GENDER:$2|stofnaður}} sjálfvirkt',
+'logentry-rights-rights' => '$1 {{GENDER:$2|breytti}} réttindum $3 frá $4 í $5',
+'logentry-rights-rights-legacy' => '$1 {{GENDER:$2|breytti}} réttindum $3',
+'logentry-rights-autopromote' => '$1 fékk sjálfvirkt {{GENDER:$2|aukin}} réttindi frá $4 til $5',
'rightsnone' => '(engum)',
# Feedback
'duration-centuries' => '$1 {{PLURAL:$1|öld|aldir}}',
'duration-millennia' => '$1 {{PLURAL:$1|árþúsund}}',
+# Image rotation
+'rotate-comment' => 'Myndinni var snúið um $1 {{PLURAL:$1|gráðu|gráður}} réttsælis',
+
);
'listusers-noresult' => 'Nessun utente risponde ai criteri impostati.',
'listusers-blocked' => '(bloccato)',
-# Special:ActiveUsers
-'activeusers' => 'Elenco degli utenti attivi',
-'activeusers-intro' => 'Questo è un elenco di utenti che hanno avuto qualche tipo di attività da $1 {{PLURAL:$1|giorno|giorni}} a questa parte.',
-'activeusers-count' => "$1 {{PLURAL:$1|azione|azioni}} {{PLURAL:$3|nell'ultimo giorno|negli ultimi $3 giorni}}",
-'activeusers-from' => 'Mostra gli utenti a partire da:',
-'activeusers-hidebots' => 'Nascondi i bot',
-'activeusers-hidesysops' => 'Nascondi gli amministratori',
-'activeusers-noresult' => 'Nessun utente risponde ai criteri impostati.',
-
# Special:ListGroupRights
'listgrouprights' => 'Diritti del gruppo utente',
'listgrouprights-summary' => "Di seguito sono elencati i gruppi utente definiti per questo sito, con i diritti d'accesso loro associati.
'license-header' => 'ライセンス',
'nolicense' => '選択なし',
'license-nopreview' => '(プレビューはありません)',
-'upload_source_url' => '(有効かつ一般に公開されているURL)',
+'upload_source_url' => '(有効かつ一般に公開されている URL)',
'upload_source_file' => '(あなたのコンピューター上のファイル)',
# Special:ListFiles
'listusers-noresult' => '利用者が見つかりませんでした。',
'listusers-blocked' => '(ブロック中)',
-# Special:ActiveUsers
-'activeusers' => '活動中の利用者一覧',
-'activeusers-intro' => 'これは過去 $1 {{PLURAL:$1|日|日間}}に何らかの活動をした利用者の一覧です。',
-'activeusers-count' => '過去 {{PLURAL:$3|1 日|$3 日間}}に $1 {{PLURAL:$1|回の操作}}',
-'activeusers-from' => '最初に表示する利用者:',
-'activeusers-hidebots' => 'ボットを隠す',
-'activeusers-hidesysops' => '管理者を隠す',
-'activeusers-noresult' => '利用者が見つかりませんでした。',
-
# Special:ListGroupRights
'listgrouprights' => '利用者グループの権限',
'listgrouprights-summary' => '以下は、このウィキに登録されている利用者グループと、それぞれに割り当てられている権限の一覧です。
'sorbsreason' => 'ご使用中のIPアドレスが、{{SITENAME}}の使用しているDNSBLに公開プロキシとして記載されています。',
'sorbs_create_account_reason' => 'ご使用中のIPアドレスが、{{SITENAME}}の使用しているDNSBLに公開プロキシとして記載されています。
アカウント作成はできません',
+'xffblockreason' => 'X-Forwarded-For ヘッダーに含まれている IP アドレスがブロックされています。これはあなたのものか、あなたが利用しているプロキシサーバーのものです。元のブロックの理由は: $1',
'cant-block-while-blocked' => 'ブロックされている間は、他の利用者をブロックできません。',
'cant-see-hidden-user' => 'ブロックしようとしている利用者は、既にブロックされ隠されています。
あなたには hideuser 権限がないため、この利用者のブロックの閲覧/編集はできません。',
# Thumbnails
'thumbnail-more' => '拡大',
'filemissing' => 'ファイルがありません',
-'thumbnail_error' => 'サムネイルの作成中にエラーが発生しました: $1',
+'thumbnail_error' => 'サムネイルの作成エラー: $1',
'djvu_page_error' => 'DjVuページが範囲外です',
'djvu_no_xml' => 'DjVuファイルのXMLデータを取得できません',
'thumbnail-temp-create' => '一時的なサムネイルファイルを作成できません',
# Stylesheets
'common.css' => '/* ここに記述したCSSはすべての外装に反映されます */',
-'standard.css' => '/* ここに記述したCSSはスタンダード外装の利用者に影響します */',
-'nostalgia.css' => '/* ここに記述したCSSはノスタルジア外装の利用者に影響します */',
'cologneblue.css' => '/* ここに記述したCSSはケルンブルー外装の利用者に影響します */',
'monobook.css' => '/* ここに記述したCSSはモノブック外装の利用者に影響します */',
-'myskin.css' => '/* ここに記述したCSSはマイスキン外装の利用者に影響します */',
-'chick.css' => '/* ここに記述したCSSはチック外装の利用者に影響します */',
-'simple.css' => '/* ここに記述したCSSはシンプル外装の利用者に影響します */',
'modern.css' => '/* ここに記述したCSSはモダン外装の利用者に影響します */',
'vector.css' => '/* ここに記述したCSSはベクター外装の利用者に影響します */',
'print.css' => '/* ここに記述したCSSは印刷出力に影響します */',
# Scripts
'common.js' => '/* ここにあるすべてのJavaScriptは、すべてのページ読み込みですべての利用者に対して読み込まれます */',
-'standard.js' => '/* ここにあるすべてのJavaScriptは、スタンダード外装を使用している利用者に対して読み込まれます */',
-'nostalgia.js' => '/* ここにあるすべてのJavaScriptは、ノスタルジア外装を使用している利用者に対して読み込まれます */',
'cologneblue.js' => '/* ここにあるすべてのJavaScriptは、ケルンブルー外装を使用している利用者に対して読み込まれます */',
'monobook.js' => '/* ここにあるすべてのJavaScriptは、モノブック外装を使用している利用者に対して読み込まれます */',
-'myskin.js' => '/* ここにあるすべてのJavaScriptは、マイスキン外装を使用している利用者に対して読み込まれます */',
-'chick.js' => '/* ここにあるすべてのJavaScriptは、チック外装を使用している利用者に対して読み込まれます */',
-'simple.js' => '/* ここにあるすべてのJavaScriptは、シンプル外装を使用している利用者に対して読み込まれます */',
'modern.js' => '/* ここにあるすべてのJavaScriptは、モダン外装を使用している利用者に対して読み込まれます */',
'vector.js' => '/* ここにあるすべてのJavaScriptは、ベクター外装を使用している利用者に対して読み込まれます */',
'group-autoconfirmed.js' => '/* ここにあるすべてのJavaScriptは、自動承認された利用者に対して読み込まれます */',
'pageinfo-category-files' => 'ファイル数',
# Skin names
-'skinname-standard' => 'クラシック',
-'skinname-nostalgia' => 'ノスタルジア',
'skinname-cologneblue' => 'ケルンブルー',
'skinname-monobook' => 'モノブック',
-'skinname-myskin' => 'マイスキン',
-'skinname-chick' => 'チック',
-'skinname-simple' => 'シンプル',
'skinname-modern' => 'モダン',
'skinname-vector' => 'ベクター',
# Database error messages
'dberr-header' => 'このウィキには問題があります',
'dberr-problems' => '申し訳ありません!
-このウェブサイトに技術的な問題が発生しています。',
+このウェブサイトに技術的な障害が発生しています。',
'dberr-again' => '数分間待った後、もう一度読み込んでください。',
'dberr-info' => '(データベースサーバー $1 に接続できませんでした)',
'dberr-usegoogle' => '元に戻るまで、Googleを利用して検索できます。',
'passwordsent' => 'Tembung sandhi anyar wis dikirim menyang alamat layang e-mail panjenengan sing wis didaftar kanggo "$1". Mangga mlebu log manèh sawisé nampa e-mail iku.',
'blocked-mailpassword' => "Alamat IP panjenengan diblokir saka panyuntingan, mulané panjenengan ora olèh nganggo fungsi pèngetan tembung sandhi kanggo ''mencegah penyalahgunaan''.",
'eauthentsent' => 'Sawijining layang élèktronik (e-mail) kanggo ndhedhes (konfirmasi) wis dikirim menyang alamat layang élèktronik panjenengan. Panjenengan kudu nuruti instruksi sajroning layang iku kanggo ndhedhes yèn alamat iku bener kagungané panjenengan. {{SITENAME}} ora bakal ngaktifaké fitur layang élèktronik yèn langkah iki durung dilakoni.',
-'throttled-mailpassword' => 'Sawijining pènget tembung sandi wis dikirim, jroning {{PLURAL:$1|jam|$1 jam}} pungkasan iki.
-Kanggo nyegah salah-guna, mung siji pènget tembung sandi waé sing bisa dikirim saben {{PLURAL:$1|jam|$1 jam}}.',
+'throttled-mailpassword' => 'Layang kanggo mbalèkaké tembung sandhi wis dikirim sasuwené ing {{PLURAL:$1|jam|$1 jam}}.
+Kanggo nyegah ananing tumindhak culika, namung sak layang kanggo mbalèkaké tembung sandhi sing bakal dikirim sasuwéné ing {{PLURAL:$1|jam|$1 jam}}.',
'mailerror' => 'Kasalahan ing ngirimaké layang e-mail: $1',
'acct_creation_throttle_hit' => 'Tamu ing wiki iki kanthi alamat IP sing padha karo panjenengan wis gawé {{PLURAL:$1|1 akun|$1 akun}} ing sadina pungkasan, nganti cacah maksimum sing diidinaké.
Amarga saka kuwi., tamu kanthi alamat IP iki ora bisa gawé akun manèh kanggo sauntara iki.',
# Special:PasswordReset
'passwordreset' => 'Balèni setèl tembung sandhi',
-'passwordreset-text' => 'Ganepi pormulir iki kanggo nampa pangéling layang èlèktronik kanggo rincian akun Sampéyan.',
+'passwordreset-text' => 'Jangkepi pormulir iki kanggo mbalèkaké tembung sandhiné Sampéyan.',
'passwordreset-legend' => 'Balèni setèl tembung sandhi',
'passwordreset-disabled' => 'Piranti kanggo mbalèni nyetèl tembung sandhi dipatèni nèng wiki iki.',
'passwordreset-pretext' => '{{PLURAL:$1||Lebokaké siji bagéyan data ngisor iki}}',
'passwordreset-capture-help' => 'Yèn Sampéyan nyentang kothak iki, layang èlèktronik (mawa tembung sandhi sawetara) bakal ditampilaké nèng Sampéyan lan uga dikirim nèng panganggo.',
'passwordreset-email' => 'Alamat layang èlèktronik:',
'passwordreset-emailtitle' => 'Rincian akun nèng {{SITENAME}}',
-'passwordreset-emailtext-ip' => 'Seseorang (mungkin Anda, dari alamat IP $1) meminta pengingat
-detail akun untuk {{SITENAME}} ($4). {{PLURAL:$3|Akun|Akun-akun}} berikut
-terkait dengan alamat surel ini:
+'passwordreset-emailtext-ip' => 'Ana uwong (mbok menawa Sampéyan, mawa angka IP $1) njaluk ganti tembung sandhiné Sampéyan ana ing {{SITENAME}} ($4). {{PLURAL:$3|Rèkèning|Rèkèning-rèkèning}} ngisor iki magepokan karo padunungané layang èlèktronik iki:
$2
-{{PLURAL:$3|Sandi sementara|Sandi sementara}} berikut akan kedaluwarsa dalam {{PLURAL:$5|satu hari|$5 hari}}.
-Anda harus masuk dan memilih sandi baru sekarang. Jika orang lain membuat
-permintaan ini atau jika Anda ingat sandi asli dan tidak lagi
-ingin mengubahnya, Anda dapat mengabaikan pesan ini dan terus menggunakan sandi lama.',
-'passwordreset-emailtext-user' => 'Seseorang (mungkin Anda, dari alamat IP $1) meminta pengingat detail akun untuk {{SITENAME}} ($4).
-{{PLURAL:$3|Akun|Akun-akun}} berikut terkait dengan alamat surel ini:
+{{PLURAL:$3|Tembung sandhi sawetara iki}} bakal kedaluwarsa ing {{PLURAL:$5|sak dina|$5 dina}}.
+Sampéyan kudu mlebu log lan milih siji tembung sandhi anyar saiki. Yèn wong liya sing njaluk iki, utawa yèn Sampéyan jebul wis kèlingan tembung sandhiné sing lawas saéngga ora ana niyat kanggo ngganti, Sampéyan bisa ngejaraké wara-wara iki lan bacutaké nganggo tembung sandhiné lawas Sampéyan.',
+'passwordreset-emailtext-user' => 'Panganggo $1 seka {{SITENAME}} njaluk ganti tembung sandhiné Sampéyan ana ing {{SITENAME}} ($4). {{PLURAL:$3|Rèkèning|Rèkèning-rèkèning}} ngisor iki magepokan karo padunungané layang èlèktronik iki:
$2
-{{PLURAL:$3|Sandi sementara|Sandi sementara}} berikut akan kedaluwarsa dalam {{PLURAL:$5|satu hari|$5 hari}}.
-Anda harus masuk dan memilih sandi baru sekarang. Jika orang lain membuat
-permintaan ini atau jika Anda ingat sandi asli dan tidak lagi
-ingin mengubahnya, Anda dapat mengabaikan pesan ini dan terus menggunakan sandi lama.',
+{{PLURAL:$3|Tembung sandhi sawetara iki}} bakal kedaluwarsa ing {{PLURAL:$5|sak dina|$5 dina}}.
+Sampéyan kudu mlebu log lan milih siji tembung sandhi anyar saiki. Yèn wong liya sing njaluk iki, utawa yèn Sampéyan jebul wis kèlingan tembung sandhiné sing lawas saéngga ora ana niyat kanggo ngganti, Sampéyan bisa ngejaraké wara-wara iki lan bacutaké nganggo tembung sandhiné lawas Sampéyan.',
'passwordreset-emailelement' => 'Jeneng panganggo: $1
Tembung sandhi sawetara: $2',
-'passwordreset-emailsent' => 'Layang èlèktronik pangèling wis dikirim.',
-'passwordreset-emailsent-capture' => 'Layang èlèktronik pangèling wis dikirim kaya ngisor iki.',
-'passwordreset-emailerror-capture' => 'Layang èlèktronik pangèling ditampilaké nèng ngisor iki, nanging ora kasil dikirim: $1',
+'passwordreset-emailsent' => 'Layang èlèktronik kanggo mbalèkaké tembung sandhi wis dikirim.',
+'passwordreset-emailsent-capture' => 'Layang èlèktronik kanggo mbalèkaké tembung sandhi wis dikirim, bisa didelok ngisor iki.',
+'passwordreset-emailerror-capture' => 'Layang èlèktronik kanggo mbalèkaké tembung sandhi wis ditokaké, bisa didelok ngisor iki, nanging gagal nalika dikirim menyang panganggoné: $1',
# Special:ChangeEmail
'changeemail' => 'Ganti alamat layang èlèktronik',
'search-interwiki-default' => 'Pituwas $1:',
'search-interwiki-more' => '(luwih akèh)',
'search-relatedarticle' => 'Kagandhèng',
-'mwsuggest-disable' => 'Patènana sugèsti AJAX',
+'mwsuggest-disable' => 'Tutup saka panemu-panemu ing golèk',
'searcheverything-enable' => 'Golèki ing kabèh bilik-jeneng',
'searchrelated' => 'kagandhèng',
'searchall' => 'kabèh',
Mungkin kuduné diubungaké nèng kaca sing luwih pantes.<br />
Kaca kaanggep kaca disambiguasi yèn kuwi nganggo templat sing kaubung saka [[MediaWiki:Disambiguationspage]].",
+'pageswithprop' => 'Kaca-kaca mawa ubarampé',
+'pageswithprop-legend' => 'Kaca-kaca mawa ubarampé',
+'pageswithprop-text' => 'Kaca iki njlèntèhaké kaca-kaca sing nganggo ubarampé astamiwa.',
+'pageswithprop-prop' => 'Arané ubarampé:',
+'pageswithprop-submit' => 'Nuju',
+
'doubleredirects' => 'Pangalihan dobel',
'doubleredirectstext' => 'Kaca iki ngandhut daftar kaca sing ngalih ing kaca pangalihan liyané.
Saben baris ngandhut pranala menyang pangalihan kapisan lan kapindho, sarta tujuan saka pangalihan kapindho, sing biasané kaca tujuan sing "sajatiné", yakuwi pangalihan kapisan kuduné dialihaké menyang kaca tujuan iku.
'listusers-noresult' => 'Panganggo ora ditemokaké.',
'listusers-blocked' => '(diblokir)',
-# Special:ActiveUsers
-'activeusers' => 'Dhaptar panganggo aktif',
-'activeusers-intro' => 'Iki daptar panganggo sing katon lakuné ing $1 {{PLURAL:$1|dina|dina}} kapungkur.',
-'activeusers-count' => '$1 {{PLURAL:$1|suntingan|suntingan}} ing {{PLURAL:$3|dina|$3 dina}} pungkasan',
-'activeusers-from' => 'Tampilna panganggo wiwit saka:',
-'activeusers-hidebots' => 'Delikna bot',
-'activeusers-hidesysops' => 'Delikna pangurus',
-'activeusers-noresult' => 'Panganggo ora ditemokaké.',
-
# Special:ListGroupRights
'listgrouprights' => 'Hak-hak grup panganggo',
'listgrouprights-summary' => 'Ing ngisor iki kapacak dhaftar grup panganggo sing didéfinisi ing wiki iki, kanthi hak-hak aksès gandhèngané.
'pageinfo-robot-noindex' => 'Tidak dapat diindeks',
'pageinfo-views' => 'Cacahing delokan',
'pageinfo-watchers' => 'Cacahé pangawas kaca',
+'pageinfo-few-watchers' => 'Kurang seka $1 {{PLURAL:$1|wong tilik|wong tilik}}',
'pageinfo-redirects-name' => 'Pengalihan ke halaman ini',
'pageinfo-subpages-name' => 'Subhalaman halaman ini',
'pageinfo-subpages-value' => '$1 ($2 {{PLURAL:$2|pengalihan|pengalihan}}; $3 {{PLURAL:$3|non-pengalihan|non-pengalihan}})',
'sqlite-no-fts' => '$1 tanpa sengkuyungan golèkan tèks jangkep',
# New logging system
-'logentry-delete-delete' => '$1 mbusak kaca $3',
-'logentry-delete-restore' => '$1 mbalèkaké kaca $3',
-'logentry-delete-event' => '$1 ngganti patampilan {{PLURAL:$5|sak kadadéan log|$5 kadadéan log}} nèng $3: $4',
+'logentry-delete-delete' => '$1 {{GENDER:$2|mbusak}} kaca $3',
+'logentry-delete-restore' => '$1 {{GENDER:$2|mbalèkaké}} kaca $3',
+'logentry-delete-event' => '$1 {{GENDER:$2|ngganti}} parupané {{PLURAL:$5|sak prastawa log|$5 prastawa log}} ana ing $3: $4',
'logentry-delete-revision' => '$1 ngganti patampilan {{PLURAL:$5|sak pambenahan|$5 pambenahan}} nèng kaca $3: $4',
'logentry-delete-event-legacy' => '$1 ngganti patampilan saka kadadéan log nèng $3',
'logentry-delete-revision-legacy' => '$1 ngganti patampilan saka pambenahan nèng kaca $3',
'logentry-move-move-noredirect' => '$1 mindhahaké kaca $3 nèng $4 tanpa nginggalaké pangalihan',
'logentry-move-move_redir' => '$1 mindhahaké kaca $3 nèng $4 ngliwati pangalihan',
'logentry-move-move_redir-noredirect' => '$1 mindhahaké kaca $3 nèng $4 ngliwati pangalihan tanpa nginggalaké pangalihan',
-'logentry-patrol-patrol' => '$1 nandhai benahan $4 saka kaca $3 kaawasi',
+'logentry-patrol-patrol' => '$1 {{GENDER:$2|nengeri}} rèvisi $4 saka kaca $3 sing diawasi',
'logentry-patrol-patrol-auto' => '$1 otomatis nandhai benahan $4 saka kaca $3 kaawasai',
'logentry-newusers-newusers' => 'Akun panganggo $1 digawé',
'logentry-newusers-create' => 'Akun panganggo $1 digawé',
'duration-centuries' => '$1 {{PLURAL:$1|abad|abad}}',
'duration-millennia' => '$1 {{PLURAL:$1|milénium|milénium}}',
+# Image rotation
+'rotate-comment' => 'Gambar diubengaké $1 {{PLURAL:$1|drajat|drajat}} sak arah domé jam',
+
);
'mostimages' => 'ყველაზე მეტი ბმულების მქონე ფაილები',
'mostinterwikis' => 'ყველაზე მეტი ინტერვიკის მქონე სტატია',
'mostrevisions' => 'ყველაზე მეტად რედაქტირებული სტატიები',
-'prefixindex' => 'á\83§á\83\95á\83\94á\83\9aá\83\90 á\83\92á\83\95á\83\94á\83 á\83\93á\83\98 (á\83\97á\83\90á\83\95á\83¡á\83\90á\83 á\83\97ით)',
+'prefixindex' => 'á\83§á\83\95á\83\94á\83\9aá\83\90 á\83\92á\83\95á\83\94á\83 á\83\93á\83\98 (á\83\9eá\83 á\83\94á\83¤á\83\98á\83¥á\83¡ით)',
'prefixindex-namespace' => 'ყველა პრეფიქსიანი გვერდი ($1 სახელთა სივრცე)',
'shortpages' => 'მოკლე გვერდები',
'longpages' => 'გრძელი გვერდები',
'allpagesprev' => 'წინა',
'allpagesnext' => 'შემდეგი',
'allpagessubmit' => 'ჩვენება',
-'allpagesprefix' => 'á\83\90á\83¡á\83\90á\83®ე გვერდები პრეფიქსით:',
+'allpagesprefix' => 'á\83\90á\83©á\83\95á\83\94á\83\9cე გვერდები პრეფიქსით:',
'allpagesbadtitle' => 'მოცემული გვერდის სათაური არასწორია ან აქვს ინტერვიკი ან ნათშორისი პრეფიქსი. იგი შესაძლოა შეიცავდეს ერთ ან მეტ სიმბოლოს, რომელიც არ შეიძლება გამოყენებულ იქნას სათაურში.',
'allpages-bad-ns' => '{{SITENAME}} "$1" არ აქვს სახელთა სივრცე.',
'allpages-hide-redirects' => 'გადამისამართებების დამალვა',
'listusers-noresult' => 'მომხმარებელი ვერ ვიპოვეთ.',
'listusers-blocked' => '(დაბლოკილია)',
-# Special:ActiveUsers
-'activeusers' => 'აქტიურ მომხმარებელთა სია',
-'activeusers-intro' => 'ეს არის მომხმარებელთა სია, რომელთაც აქვს წვლილი უკანასკნელი $1 {{PLURAL:$1|დღის|დღის}} განმავლობაში.',
-'activeusers-count' => '$1 {{PLURAL:$1|მოქმედება|მოქმედება}} {{PLURAL:$3|დღის|$3 დღის}} განმავლობაში.',
-'activeusers-from' => 'მომხმარებელთა ჩვენება, დაწყებული:',
-'activeusers-hidebots' => 'რობოტების დამალვა',
-'activeusers-hidesysops' => 'ადმინისტრატორების დამალვა',
-'activeusers-noresult' => 'მომხმარებლები არ არიან ნაპოვნი.',
-
# Special:ListGroupRights
'listgrouprights' => 'მომხმარებელთა ჯგუფების უფლებები',
'listgrouprights-summary' => 'ქვემოთ წარმოდგენილია ამ ვიკიში გარკვეულ ჯგუფთა სია და მათი უფლებები.
'sorbs' => 'DNSBL',
'sorbsreason' => 'თქვენი IP-მისამართი მიჩნევა ღია პროქსიდ DNSBL-ის თანახმად.',
'sorbs_create_account_reason' => 'თქვენი IP-მისამართი ითვლება ღია პროქსიდ DNSBL-ის ანახმად. თქვენ ვერ შექმნით ანგარიშს.',
+'xffblockreason' => 'დაიბლოკა IP-მისამართი, რომელიც იმყოფებოდა X-Forwarded-For-ის სათაურში და რომელიც გეკუთვნით თქვენ ან თქვენ მიერ გამოყენებულ პროქსი-სერვერს. დაბლოკვის თავდაპირველი მიზეზი იყო: $1',
'cant-block-while-blocked' => 'თქვენ ვერ დაბლოკავთ სხვა მომხმარებლებს, რადგანაც თავად ხართ დაბლოკილი.',
'cant-see-hidden-user' => 'მომხმარებელი, რომლის დაბლოკვასაც ცდილოთ, უკვე დაბლოკილია და დამალულია. რადგანაც თქვენ არ გაქვთ დამალულ მომხმარებლებთან მუშაობის ნებართვა, თქვენ ვერ შეცვლით ამ ბლოკს.',
'ipbblocked' => 'თქვენ ვერ დაბლოკავთ ან მოხსნით ბლოკს სხვა მომხმარებლებს, რადგანაც თავად ხართ დაბლოკილი.',
# Stylesheets
'common.css' => '/** აქ ჩასმული CSS გამოყენებული იქნება გაფორმების ყველა გარეკანზე */',
-'standard.css' => '/* აქ ჩასმული CSS გამოყენებული იქნება სტანდარტული გაფორმების თემაში */',
-'nostalgia.css' => '/* აქ ჩასმული CSS გამოყენებული იქნება ნოსტალგიური გაფორმების თემაში */',
'cologneblue.css' => '/* აქ ჩასმული CSS გამოყენებული იქნება კელნის ლურჯი გაფორმების თემაში */',
'monobook.css' => '/* აქ ჩასმული CSS გავლენას იქონიებს Monobook ინტერფეისის მომხმარებლებზე */',
-'myskin.css' => '/* აქ ჩასმული CSS გამოყენებული იქნება ჩემი იერსახის გაფორმების თემაში */',
-'chick.css' => '/* აქ ჩასმული CSS გამოყენებული იქნება წიწილის გაფორმების თემაში */',
-'simple.css' => '/* აქ ჩასმული CSS გამოყენებული იქნება მარტივი გაფორმების თემაში */',
'modern.css' => '/* აქ ჩასმული CSS გამოყენებული იქნება თანამედროვე გაფორმების თემაში */',
'vector.css' => '/* აქ ჩასმული CSS გამოყენებული იქნება ვექტორული გაფორმების თემაში */',
'group-autoconfirmed.css' => '/* აქ განთავსებული CSS გამოყენებული იქნება მხოლოდ ავტომატურად დადასტურებული მომხმარებლებისათვის */',
'pageinfo-category-files' => 'ფაილების რაოდენობა',
# Skin names
-'skinname-standard' => 'კლასიკური',
-'skinname-nostalgia' => 'ნოსტალგია',
'skinname-cologneblue' => 'კელნის ლურჯი',
'skinname-monobook' => 'მონობუკი',
-'skinname-myskin' => 'საკუთარი',
-'skinname-chick' => 'წიწილა',
-'skinname-simple' => 'მარტივი',
'skinname-modern' => 'თანამედროვე',
'skinname-vector' => 'ვექტორული',
'listusers-noresult' => 'រកមិនឃើញអ្នកប្រើប្រាស់នេះទេ។',
'listusers-blocked' => '(ស្ថិតក្រោមការហាមឃាត់)',
-# Special:ActiveUsers
-'activeusers' => 'បញ្ជីរាយនាមអ្នកប្រើប្រាស់សកម្ម',
-'activeusers-intro' => 'នេះជាបញ្ជីរាយនាមអ្នកប្រើប្រាស់ដែលមានសកម្មភាពក្នុងរូបភាពណាមួយក្នុងរយៈពេល $1 {{PLURAL:$1|ថ្ងៃ|ថ្ងៃ}}ចុងក្រោយ។',
-'activeusers-count' => '{{PLURAL:$1|សកម្មភាព|សកម្មភាព}}ចំនួន$1 ក្នុងរយៈពេល{{PLURAL:$3|១ថ្ងៃ|$3 ថ្ងៃ}}ចុងក្រោយ',
-'activeusers-from' => 'បង្ហាញអត្តនាមផ្ដើមដោយ៖',
-'activeusers-hidebots' => 'លាក់រូបយន្ត',
-'activeusers-hidesysops' => 'លាក់អភិបាល',
-'activeusers-noresult' => 'អ្នកប្រើប្រាស់រកមិនឃើញ។',
-
# Special:ListGroupRights
'listgrouprights' => 'សិទ្ធិនិងក្រុមអ្នកប្រើប្រាស់',
'listgrouprights-summary' => 'ខាងក្រោមនេះជាបញ្ជីរាយឈ្មោះក្រុមអ្នកប្រើប្រាស់ដែលបានកំណត់ជាមួយនឹងសិទ្ធិរបស់គេនៅលើវិគីនេះ។ មាន[[{{MediaWiki:Listgrouprights-helppage}}|ព័ត៌មានបន្ថែម]] អំពីសិទ្ធិផ្ទាល់ខ្លួន។',
'listusers-submit' => 'ತೋರು',
'listusers-noresult' => 'ಯಾವ ಬಳಕೆದಾರರೂ ಸಿಗಲಿಲ್ಲ.',
-# Special:ActiveUsers
-'activeusers' => 'ಸಕ್ರಿಯ ಸದಸ್ಯರ ಪಟ್ಟಿ',
-'activeusers-noresult' => 'ಯಾವ ಬಳಕೆದಾರರೂ ಸಿಗಲಿಲ್ಲ.',
-
# Special:ListGroupRights
'listgrouprights' => 'ಬಳಕೆದಾರ ಗುಂಪು ಹಕ್ಕುಗಳು',
'listgrouprights-summary' => 'ಈ ವಿಕಿಯಲ್ಲಿ ಪ್ರಚಲಿತವಾಗಿರುವ ಬಳಕೆದಾರ ಗುಂಪುಗಳು ಮತ್ತು ಆ ಗುಂಪುಗಳಿಗೆ ಅನ್ವಯಿಸುವ ಹಕ್ಕುಗಳು ಈ ಕೆಳಗಿನಂತಿದೆ.',
# Account creation failure
'cantcreateaccounttitle' => '계정을 만들 수 없음',
-'cantcreateaccount-text' => "í\98\84ì\9e¬ ì\95\84ì\9d´í\94¼ 주ì\86\8c('''$1''')ë\8a\94 [[User:$3|$3]] ì\82¬ì\9a©ì\9e\90ì\97\90 ì\9d\98í\95´ ê³\84ì \95 ë§\8cë\93¤ê¸°ê°\80 ì°¨ë\8b¨ë\90\9c ì\83\81í\83\9cì\9e\85니다.
+'cantcreateaccount-text' => "í\98\84ì\9e¬ ì\95\84ì\9d´í\94¼ 주ì\86\8c('''$1''')ë\8a\94 [[User:$3|$3]] ì\82¬ì\9a©ì\9e\90ì\97\90 ì\9d\98í\95´ ê³\84ì \95 ë§\8cë\93¤ê¸°ê°\80 ì°¨ë\8b¨ë\90\98ì\97\88ì\8aµ니다.
차단 이유는 다음과 같습니다: $2",
'license-header' => '라이선스',
'nolicense' => '선택하지 않음',
'license-nopreview' => '(미리 보기 불가능)',
-'upload_source_url' => ' (유효하고, 모든 사람이 접근 가능한 URL)',
+'upload_source_url' => '(올바르고, 공개적으로 접근할 수 있는 URL)',
'upload_source_file' => ' (당신의 컴퓨터에 있는 파일)',
# Special:ListFiles
'listusers-noresult' => '해당 사용자가 없습니다.',
'listusers-blocked' => '(차단됨)',
-# Special:ActiveUsers
-'activeusers' => '활동적인 사용자 목록',
-'activeusers-intro' => '다음은 최근 $1{{PLURAL:$1|일}} 동안 활동한 사용자의 목록입니다.',
-'activeusers-count' => '최근 {{PLURAL:$3|$3일}} 사이의 {{PLURAL:$1|활동}} $1회',
-'activeusers-from' => '다음으로 시작하는 사용자를 보기:',
-'activeusers-hidebots' => '봇을 숨기기',
-'activeusers-hidesysops' => '관리자를 숨기기',
-'activeusers-noresult' => '사용자가 없습니다.',
-
# Special:ListGroupRights
'listgrouprights' => '사용자 권한 목록',
'listgrouprights-summary' => '다음은 이 위키에서 설정된 사용자 권한 그룹의 목록입니다.
'sorbsreason' => '당신의 IP 주소는 {{SITENAME}}에서 사용하는 DNSBL 공개 프록시 목록에 들어 있습니다.',
'sorbs_create_account_reason' => '당신의 IP 주소는 {{SITENAME}}에서 사용하는 DNSBL 공개 프록시 목록에 들어 있습니다.
계정을 만들 수 없습니다.',
+'xffblockreason' => 'X-Forwarded-For 헤더에 현재 사용하고 있는 프록시 서버 중 당신이나 해당 IP 주소가 차단되었습니다. 차단 이유는 다음과 같습니다: $1',
'cant-block-while-blocked' => '자신이 차단되어 있는 동안에는 다른 사용자를 차단할 수 없습니다.',
'cant-see-hidden-user' => '차단하려 하는 사용자는 이미 차단되었고 숨김 처리되었습니다.
사용자 숨기기 권한을 갖고 있지 않기 때문에, 이 사용자의 차단 기록을 보거나 차단 설정을 바꿀 수 없습니다.',
# Stylesheets
'common.css' => '/* 이 CSS 설정은 모든 스킨에 동일하게 적용됩니다 */',
-'standard.css' => '/* 이 CSS 설정은 스탠다드 스킨을 사용하는 사용자에게 적용됩니다 */',
-'nostalgia.css' => '/* 이 CSS 설정은 노스텔지아 스킨을 사용하는 사용자에게 적용됩니다 */',
'cologneblue.css' => '/* 이 CSS 설정은 쾰른 블루 스킨을 사용하는 사용자에게 적용됩니다 */',
'monobook.css' => '/* 이 CSS 설정은 모노북 스킨을 사용하는 사용자에게 적용됩니다 */',
-'myskin.css' => '/* 이 CSS 설정은 마이스킨 스킨을 사용하는 사용자에게 적용됩니다 */',
-'chick.css' => '/* 이 CSS 설정은 치크 스킨을 사용하는 사용자에게 적용됩니다 */',
-'simple.css' => '/* 이 CSS 설정은 심플 스킨을 사용하는 사용자에게 적용됩니다 */',
'modern.css' => '/* 이 CSS 설정은 모던 스킨을 사용하는 사용자에게 적용됩니다 */',
'vector.css' => '/* 이 CSS 설정은 벡터 스킨을 사용하는 사용자에게 적용됩니다 */',
'print.css' => '/* 이 CSS 설정은 인쇄 출력 화면에 적용됩니다 */',
# Scripts
'common.js' => '/* 이 자바스크립트 설정은 모든 문서, 모든 사용자에게 적용됩니다. */',
-'standard.js' => '/* 이 자바스크립트 설정은 스탠다드 스킨을 사용하는 사용자에게 적용됩니다 */',
-'nostalgia.js' => '/* 이 자바스크립트 설정은 노스텔지아 스킨을 사용하는 사용자에게 적용됩니다 */',
'cologneblue.js' => '/* 이 자바스크립트 설정은 쾰른 블루 스킨을 사용하는 사용자에게 적용됩니다 */',
'monobook.js' => '/* 이 자바스크립트 설정은 모노북 스킨을 사용하는 사용자에게 적용됩니다 */',
-'myskin.js' => '/* 이 자바스크립트 설정은 마이스킨 스킨을 사용하는 사용자에게 적용됩니다 */',
-'chick.js' => '/* 이 자바스크립트 설정은 치크 스킨을 사용하는 사용자에게 적용됩니다 */',
-'simple.js' => '/* 이 자바스크립트 설정은 심플 스킨을 사용하는 사용자에게 적용됩니다 */',
'modern.js' => '/* 이 자바스크립트 설정은 모던 스킨을 사용하는 사용자에게 적용됩니다 */',
'vector.js' => '/* 이 자바스크립트 설정은 벡터 스킨을 사용하는 사용자에게 적용됩니다 */',
'group-autoconfirmed.js' => '/* 이 자바스크립트 설정은 자동 인증된 사용자에만 적용됩니다 */',
'pageinfo-category-files' => '파일 수',
# Skin names
-'skinname-standard' => '클래식',
-'skinname-nostalgia' => '노스탤지아',
'skinname-cologneblue' => '쾰른 블루',
'skinname-monobook' => '모노북',
-'skinname-myskin' => '마이스킨',
-'skinname-chick' => '치크',
-'skinname-simple' => '심플',
'skinname-modern' => '모던',
'skinname-vector' => '벡터',
'listusers-noresult' => 'Къошулуучула табылмадыла.',
'listusers-blocked' => '(блокга салыныбды)',
-# Special:ActiveUsers
-'activeusers' => 'Актив къошулуучуланы тизмеси',
-'activeusers-intro' => 'Бу, ахыр $1 {{PLURAL:$1|кюнде|кюнде}} къаллайда болсун ишлетме кёргюзген къошлуучуланы тизмесиди.',
-'activeusers-count' => 'Ахыр {{PLURAL:$3|кюнде|$3 кюнде}} $1 {{PLURAL:$1|тюрлендириу|тюрлендириу}}',
-'activeusers-from' => 'Бу бла башланнган къошлуучуланы кёргюз:',
-'activeusers-hidebots' => 'Ботланы джашыр',
-'activeusers-hidesysops' => 'Администраторланы джашыр',
-'activeusers-noresult' => 'Къошлуучу табылмады.',
-
# Special:ListGroupRights
'listgrouprights' => 'Къошулуучуланы къауумуну хакълары',
'listgrouprights-summary' => 'Тюбюндеги бу викиде танылгъан къошулуучу къауумланы эмда аланы хакъларыны тизмеси.
'newwindow' => '(Mäht e neu Finster op, wann Dinge Brauser dat kann)',
'cancel' => 'Stopp! Avbreche!',
'moredotdotdot' => 'Mieh …',
+'morenotlisted' => 'Et jeiht noch wigger …',
'mypage' => 'Metmaachersigg',
'mytalk' => 'Klaafsigg',
'anontalk' => 'Klaaf för de IP-Adress',
'gotaccount' => "Do bes ald aanjemeldt {{GRAMMAR:en|{{SITENAME}}}}? Dann jangk nohm '''$1'''.",
'gotaccountlink' => 'Enlogge',
'userlogin-resetlink' => 'Häß De Ding Daate för et Enlogge verjäße?',
-'createaccountmail' => 'Scheck mer en E-Mail met Passwood',
+'createaccountmail' => 'Scheck mer en E-Mail met enem neu ußjedachte Passwood op Zick',
'createaccountreason' => 'Jrond:',
'badretype' => 'Ding zwëij ennjejovve Paßßwööter sinn nit ejaal. Do muss De Dich för ein entscheide.',
'userexists' => 'Ene Metmaacher met däm Name jidd et ald.
# Email sending
'php-mail-error-unknown' => 'Nit bekannte Fähler met dä Funxjohn <code lang="en">mail()</code> vum PHP',
'user-mail-no-addy' => 'Do häs versöhg en <i lang="en">e-mail</i> der ohne en Adräß ze verschecke',
+'user-mail-no-body' => 'En dä <i lang="en">e-mail</i> schteiht nix udder zoh winnisch dren.',
# Change password dialog
'resetpass' => 'Passwood tuusche udder neu ußjävve',
'search-interwiki-default' => '$1 hät heh di Träffer jefonge:',
'search-interwiki-more' => '(mieh)',
'search-relatedarticle' => 'Ähnlesch',
-'mwsuggest-disable' => 'Kein automatische Hölp-Liss per Ajax beim Tippe em Feld för et Söke',
+'mwsuggest-disable' => 'Donn kein automattische Leß met Sigge beim Tippe em Feld för et Söhke aanzeije.',
'searcheverything-enable' => 'En alle Appachtemangs söhke',
'searchrelated' => 'ähnlesch',
'searchall' => 'all',
Ene Atikel weed als en „(Watt ėßß datt?)“-Sigg jezallt, wann dä en Schablohn opröhf, op di ene Lenk en dä Sigg [[MediaWiki:Disambiguationspage]] dren es.',
+'pageswithprop' => 'Sigge med en beschtemmpte Eijeschaff',
+'pageswithprop-legend' => 'Sigge med en Eijeschaff',
+'pageswithprop-text' => 'Heh di Sigg zeisch Sigge, di en beschtemmpte Eijeschaf han',
+'pageswithprop-prop' => 'Dä name vun dä Eijeschaff:',
+'pageswithprop-submit' => 'Lohß Jonn!',
+
'doubleredirects' => 'Ömleitunge op Ömleitunge',
'doubleredirectstext' => 'Hee fings De en jede Reih ene Link op de iertste un de zweite Ömleitung, donoh ene Link op de Sigg, wo de
zweite Ömleitung hin jeiht. För jewöhnlich es dat dann och de richtije Sigg, wo de iertste Ömleitung ald hen jonn sullt.
'linksearch-ok' => 'Söhke',
'linksearch-text' => 'Beim Söke künnd_Er Schtäänsche aanjevve för e Schtöcksche fun ennem Naame, wo mer nit jenou weiß, wi et heiß udder wat me nit kenne deit, zem Beishpöll esu: <code>http://*.example.com</code> un ene bövverschte Name för en Domain moß aanjejovve sin, zem Beishpöll esu: <code>http://*.org</code>
-De Brauserprotokolle, di mer beim Söke aanjäjovve kann, sin: <code>$1</code>, un der Schtandatt es <code>http://</code> wann nix aanjejovve es.',
+{{PLURAL:$2|Dat Brauserprotokoll, wat|De Brauserprotokolle, di|Kein Brauserprotokolle, di}} mer beim Söhke aanjävve kann, sin: <code>$1</code>, un der Schtandatt es <code>http://</code> wann nix aanjejovve es.',
'linksearch-line' => '„$2“ hät ene Link op $1',
'linksearch-error' => 'Shternshe kam_mer nor aam Aanfang fum Domain-Name bruche.',
'listusers-noresult' => 'Keine Metmaacher jefonge.',
'listusers-blocked' => '(jespert)',
-# Special:ActiveUsers
-'activeusers' => 'Leß met de aktiive Metmaacher',
-'activeusers-intro' => 'Dat heh es en Leß met dä Metmaacher, di {{PLURAL:$1|zick jäßtere|en de läzde $1 Dääsch|hück}} ööhnsjät jemaat han.',
-'activeusers-count' => '{{PLURAL:$1|ein Änderong|$1 Änderonge|kein Änderonge}} {{PLURAL:$3|aam lezde Daach|en de lezte $3 Dääsch|hück}}',
-'activeusers-from' => 'Donn de Metmaacher zeije aff:',
-'activeusers-hidebots' => 'De Bots fott lohße',
-'activeusers-hidesysops' => 'De Wiki_Köbesse fott lohße',
-'activeusers-noresult' => 'Kein Metmaacher jefonge.',
-
# Special:ListGroupRights
'listgrouprights' => 'Metmaacher-Jruppe-Rääschte',
'listgrouprights-summary' => 'Hee kütt de Liss met dä Medmaacher-Jruppe, di dat Wiki hee kennt, un denne ier Rääschte.
'prot_1movedto2' => 'hät de Sigg vun „[[$1]]“ en „[[$2]]“ ömjenannt.',
'protect-badnamespace-title' => 'Appachtemang nit schözbaa.',
'protect-badnamespace-text' => 'En dämm Appachtemang kam_mer kein Sigge schöze.',
+'protect-norestrictiontypes-text' => 'Heh di Sigg kam_mer nit schöze, weil et jaa_kein Zoote vun Schoz em Wiki jitt.',
+'protect-norestrictiontypes-title' => 'Di Sigg es nit schözbaa.',
'protect-legend' => 'Sigg schötze',
'protectcomment' => 'Aanlaß odder Jrund:',
'protectexpiry' => 'Duur, wi lang:',
'sorbs' => '<i lang="en">DNSBL</i>',
'sorbsreason' => 'Ding IP-Adress weed en de DNSbl als ene offe Proxy jeliss. Schwaad met Dingem System-Minsch oder Netzwerk-Techniker (ISP Internet Service Provider) drüvver, un verzäll dänne vun däm Risiko för ehr Secherheit!',
'sorbs_create_account_reason' => 'Ding IP-Adress weed en de DNSbl als ene offe Proxy jeliss. Dröm kanns De Dich heh em Wiki nit als ene neue Metmaacher aanmelde. Schwaad met Dingem System-Minsch oder Netzwerk-Techniker oder (ISP Internet Service Provider) drüvver, un verzäll dänne vun däm Risiko för ehr Secherheit!',
+'xffblockreason' => 'En <i lang="en">IP-</i>Adräs en ener <code lang="en">X-Forwarded-For</i> Koppreih es jeschpächt: Et künnt de Dinge udder enem <i lang="en">proxy server</i> zweschedren sing Adräß sin. Der Jrond för et Schpärre woh orschprönglesch: $1',
'cant-block-while-blocked' => 'Do kanns ander Metmaacher nit sperre, esu lang wi De sellver jesperrt bes.',
'cant-see-hidden-user' => 'Dä Metmaacher, dä De shperre wells, es al jeshperrt un verschtoche. Weil De nit dat Rääsch häs. Metmaacher ze vershteiche (<code>hideuser</code>), kanns De däm sing Sperr och nit ändere.',
'ipbblocked' => 'Do kanns kein ander Metmaachere sperrre, weil De sellver jesperrt bes',
# Stylesheets
'common.css' => '/* CSS heh aan dä Stell hät Uswirkunge op all Ovverflääsche */',
-'standard.css' => '/* CSS heh aan dä Stell wirrek nur op de Ovverflääsch „Klassesch“ */',
-'nostalgia.css' => '/* CSS heh aan dä Stell wirrek nur op de Ovverflääsch „Nostaljesch“ */',
'cologneblue.css' => '/* CSS heh aan dä Stell wirrek nur op de Ovverflääsch „Kölsch Blau“ */',
'monobook.css' => '/* CSS heh aan dä Stell wirrek nur op de Ovverflääsch „Monobooch“ */',
-'myskin.css' => '/* CSS heh aan dä Stell wirrek nur op de Ovverflääsch „Ming Skin“ */',
-'chick.css' => '/* CSS heh aan dä Stell wirrek nur op de Ovverflääsch „Höhnsche“ */',
-'simple.css' => '/* CSS heh aan dä Stell wirrek nur op de Ovverflääsch „Eijfach“ */',
'modern.css' => '/* CSS heh aan dä Stell wirrek nur op de Ovverflääsch „Modern“ */',
'vector.css' => '/* CSS heh aan dä Stell wirrek nur op de Ovverflääsch „Vector“ */',
'print.css' => '/* CSS heh aan dä Stell wirrek nur op et Sigge Drökke */',
# Scripts
'common.js' => '/* Jedes JavaScrip hee kütt för jede Metmaacher in jede Sigg erinn */',
-'standard.js' => '/* De JavaSkrippte fun hee krijje alle Sigge met de Ovverflääsch "Klassesch" jescheck */',
-'nostalgia.js' => '/* De JavaSkrippte fun hee krijje alle Sigge met de Ovverflääsch "Nostaljesch" jescheck */',
'cologneblue.js' => '/* De JavaSkrippte fun hee krijje alle Sigge met de Ovverflääsch "Kölsch Blou" jescheck */',
'monobook.js' => '/* De JavaSkrippte fun hee krijje alle Sigge met de Ovverflääsch "Monnobooch" jescheck */',
-'myskin.js' => '/* De JavaSkrippte fun hee krijje alle Sigge met de Ovverflääsch "Ming Skin" jescheck */',
-'chick.js' => '/* De JavaSkrippte fun hee krijje alle Sigge met de Ovverflääsch "Höhnsche" jescheck */',
-'simple.js' => '/* De JavaSkrippte fun hee krijje alle Sigge met de Ovverflääsch "Eijfach" jescheck */',
'modern.js' => '/* De JavaSkrippte fun hee krijje alle Sigge met de Ovverflääsch "Modern" jescheck */',
'vector.js' => '/* De JavaSkrippte fun hee krijje alle Sigge met de Ovverflääsch "Vector" jescheck */',
'group-autoconfirmed.js' => '/* De JavaSkreppte fun hee krijje bloß de autemattesch beshtääteschte Metmaacher jescheck */',
'pageinfo-robot-noindex' => 'kammer nit opnämme',
'pageinfo-views' => 'De Aanzahl Affroofe',
'pageinfo-watchers' => 'De Aanzahl Oppaßer för di Sigg',
+'pageinfo-few-watchers' => 'Et jidd_er winnijer wi {{PLURAL:$1|eine|$1|keine}} Oppaßer.',
'pageinfo-redirects-name' => 'Ömleidong(e) op heh di Sigg',
'pageinfo-subpages-name' => 'Ongersigg(e) vun heh dä Sigg',
'pageinfo-subpages-value' => '$1 (dovun {{PLURAL:$2|ein Ömleidong|$2 Ömleidonge|kein Ömleidong}} un {{PLURAL:$3|ein nomaale Sigg|$3 nomaale Sigge|kein nomaale Sigg}})',
'pageinfo-protect-cascading' => 'Ene Siggeschoz weed vun heh verärf',
'pageinfo-protect-cascading-yes' => 'Joh',
'pageinfo-protect-cascading-from' => 'Ene Siggeschoz weed jeärf vun',
+'pageinfo-category-info' => 'Aanjaabe övver Saachjroppe',
+'pageinfo-category-pages' => 'De Aanzahl Sigge',
+'pageinfo-category-subcats' => 'De Aanzahl Ongerjroppe',
+'pageinfo-category-files' => 'De Aanzahl Dateie',
# Skin names
-'skinname-standard' => 'Klassesch',
-'skinname-nostalgia' => 'Nostaljesch',
'skinname-cologneblue' => 'Kölsch Blau',
'skinname-monobook' => 'MonoBoch',
-'skinname-myskin' => 'Ming Skin',
-'skinname-chick' => 'Höhnche',
-'skinname-simple' => 'Eifach',
'skinname-modern' => 'Modern',
'skinname-vector' => 'Vektor',
'bitrate-yottabits' => '$1&nbps;Ybps',
# Live preview
-'livepreview-loading' => 'Ben am Lade …',
+'livepreview-loading' => 'Ben aam Laade{{int:ellipsis}}',
'livepreview-ready' => 'Fädesch jelaade.',
'livepreview-failed' => 'De lebendije Vör-Ansich klapp jrad nit.
Don de nomaale Vör-Ansich nemme.',
'logentry-move-move_redir-noredirect' => '{{GENDER:$2|Dä|Dat|Dä Metmaacher|De|Dat}} $1 hätt di Sigg „$3“ en „$4“ ömjenannt un derbei en ahle Ömleidongßsigg fottjeschmeße un kein neue Ömleidongßsig aanjelaat.',
'logentry-patrol-patrol' => '{{GENDER:$2|Dä|Dat|Dä Metmaacher|De|Dat}} $1 hät di Version $4 vun dä Sigg „$3“ nohjeloort.',
'logentry-patrol-patrol-auto' => '{{GENDER:$2|Dä|Dat|Dä Metmaacher|De|Dat}} $1 hät di Version $4 vun dä Sigg „$3“ automattesch nohjeloort.',
-'logentry-newusers-newusers' => 'Dä neue Metmaacher $1 wood aanjelaat.',
-'logentry-newusers-create' => '{{GENDER:$4|Dä neue Metmaacher|De neue Metmaacherėn|Dä neue Metmaacher|De neue Metmaacherėn|Dä neue Metmaacher}} $1 wood aanjelaat.',
+'logentry-newusers-newusers' => '{{GENDER:$2
+|Dä neue Metmaacher $1 wood
+|Dat $1 wood als ene neue Metmaacherėn
+|Dä neue Metmaacher $1 wood
+|De $1 wood als en neue Metmaacherėn
+|Dat $1 wood als ene neue Metmaacher}} aanjelaat.',
+'logentry-newusers-create' => '{{GENDER:$4
+|Dä neue Metmaacher $1 wood
+|Dat $1 wood als ene neue Metmaacherėn
+|Dä neue Metmaacher $1 wood
+|De $1 wood als en neue Metmaacherėn
+|Dat $1 wood als ene neue Metmaacher}} aanjelaat.',
'logentry-newusers-create2' => '{{GENDER:$4|Dä|Dat|Dä Metmaacher|De|Dat}} $3 wood {{GENDER:$2|vum|vum|vumm Metmaacher|vun dä|vum}} $1 aanjelaat.',
'logentry-newusers-autocreate' => '{{GENDER:$4|Dä|Dat|Dä Metmaacher|De|Dat}} $1 wood automattesch {{GENDER:$4|als Metmaacher|als Metmaacher||als Metmaacher|als Metmaacher}} aanjelaat.',
'logentry-rights-rights' => '{{GENDER:$2|Dä|Dat|Dä Metmaacher|De|Dat}} „$1“ hät däm Metmaacher „$3“ sing Jroppe-Räächde vun „$4“ op „$5“ ömjestallt.',
'duration-centuries' => '{{PLURAL:$1|e Johrhondert|$1 Johrhonderte|kei Johrhondert}}',
'duration-millennia' => '{{PLURAL:$1|e Johrdousend|$1 Johrdousende|kei Johrdousend}}',
+# Image rotation
+'rotate-comment' => 'Dat Beld wood öm {{PLURAL:$1|$1 Jraad}} esu eröm jedrieht, wi der Ohrzeijer leuf.',
+
);
'userjspreview' => "'''Zanibe ku tu tenê JavaScript'a xwe diceribînî, ew hê nehatiye tomarkirin!'''",
'updated' => '(Hate rojanekirin)',
'note' => "'''Nîşe:'''",
-'previewnote' => "'''Ji bîr neke ku ev bi tenê çavdêriyek e.'''
-Ev rûpel hîn nehatiye tomarkirin!",
+'previewnote' => "'''Ji bîr neke ku ev tenê pêşdîtinek e.'''
+Guhertinên te hê nehatine tomarkirin!",
'continue-editing' => 'Guhertinê bidomîne',
'editing' => 'Biguherîne: "$1"',
'creating' => '$1 tê çêkirin',
'listusers-noresult' => 'Bikarhêner nehate dîtin.',
'listusers-blocked' => '(hate astengkirin)',
-# Special:ActiveUsers
-'activeusers' => 'Lîsteya bikarhênerên çalak',
-'activeusers-hidebots' => "Bot'an veşêre",
-'activeusers-hidesysops' => 'Rêveberan veşêre',
-'activeusers-noresult' => 'Tu bikarhêner nehate dîtin.',
-
# Special:ListGroupRights
'listgrouprights' => 'Mafên koma bikarhêner',
'listgrouprights-group' => 'Kom',
'whatlinkshere-hideredirs' => 'Beralîkirinan $1',
'whatlinkshere-hidetrans' => 'Naverokan $1',
'whatlinkshere-hidelinks' => 'Girêdanan $1',
-'whatlinkshere-hideimages' => '$1 lînkên wêneyan',
+'whatlinkshere-hideimages' => 'Girêdanên wêneyan $1',
'whatlinkshere-filters' => 'Parzûn',
# Block/unblock
'ipbreason' => 'Sedem',
'ipbreasonotherlist' => 'Sedemeke din',
'ipbreason-dropdown' => '*Sedemên astengkirinê
-** vandalîzm
-** agahiya şaş dikire gotarekê
-** naveroka rûpelekê vala kir
-** girêdanên xerab tevlî rûpelan dikir
-** tiştên tewş tevlî gotaran dikir
-** heqaretkirin
-** pir hesab bikaranîn
-** navekî ku nayê pejirandin',
+** Vandalîzm
+** Agahiya şaş dikire gotarekê
+** Naveroka rûpelekê vala kir
+** Girêdanên xerab tevlî rûpelan dikir
+** Tiştên tewş tevlî gotaran dikir
+** Heqaretkirin
+** Pir hesab bikaranîn
+** Navekî ku nayê pejirandin',
'ipbcreateaccount' => 'Çêkirina hesaban qedexe bike',
'ipbemailban' => 'Ji bo şandina e-nameyan qedexe bike.',
'ipbenableautoblock' => "Otomatîk IP'yên niha û yên nû yê vê bikarhênerê astengbike.",
'movepage-page-unmoved' => 'Rûpela $1 nikanî çûba ciha $2.',
'movelogpage' => 'guhertina nav',
'movelogpagetext' => 'Li jêr lîsteyek ji rûpelan ku navê wan hatiye guherandin heye.',
+'movenosubpage' => 'Binrûpelên vê rûpelê tune ne.',
'movereason' => 'Sedem',
'revertmove' => 'şûnde vegerîne',
'delete_and_move' => 'Jêbibe û nav biguherîne',
'pageinfo-redirectsto-info' => 'agahî',
'pageinfo-contentpage-yes' => 'Erê',
'pageinfo-protect-cascading-yes' => 'Erê',
+'pageinfo-category-pages' => 'hejmara rûpelan',
+'pageinfo-category-subcats' => 'Hejmara binkategoriyan',
# Patrolling
'markaspatrolleddiff' => 'Wek serrastkirî nîşan bide',
'specialpages-group-users' => 'Bikarhêner û maf',
'specialpages-group-pages' => 'Lîstên rûpelan',
'specialpages-group-pagetools' => 'Amûrên rûpelê',
+'specialpages-group-wiki' => 'Dane û amûr',
# Special:BlankPage
'blankpage' => 'Rûpela vala',
'tog-shownumberswatching' => 'Numerum usorum custodientium monstrare',
'tog-oldsig' => 'Subscriptio ad tempus adhibita:',
'tog-fancysig' => 'Subscriptio vicitext (sine nexu automatico)',
-'tog-externaleditor' => 'Utere editore externo semper (pro peritus solo, requirat speciales optiones in calculone. [//www.mediawiki.org/wiki/Manual:External_editors More information.])',
-'tog-externaldiff' => 'Utere editore dissimilitudine externa semper (pro peritus solo, requirat speciales optiones in calculone. [//www.mediawiki.org/wiki/Manial:External_editors More information.])',
+'tog-externaleditor' => 'Editore externo semper uti (periti tantum: necesse est organa propria in computatro habere. [//www.mediawiki.org/wiki/Manual:External_editors adiutatum (Anglice)])',
+'tog-externaldiff' => 'Editore dissimilitudinum externo semper uti (periti tantum: necesse est organa propria in computatro habere. [//www.mediawiki.org/wiki/Manual:External_editors adiutatum (Anglice)])',
'tog-showjumplinks' => 'Sinere nexus ostendi forma "salire ad" monstrata',
'tog-uselivepreview' => 'Praevisum viventem adhibere (JavaScript)',
'tog-forceeditsummary' => 'Si recensionem non summatim descripsero, me roga si continuare velim',
'category-file-count' => '{{PLURAL:$2|Huic categoriae est solum unus fasciculus.|Huic categoriae {{PLURAL:$1|est hic fasciculus|sunt hi $1 fasciculi}} ex omnino $2 fasciculis.}}',
'category-file-count-limited' => 'Huic categoriae {{PLURAL:$1|est hic fasciculus|sunt hi $1 fasciculi}}.',
'listingcontinuesabbrev' => 'cont.',
+'index-category' => 'Paginae quae in indice sunt',
+'noindex-category' => 'Paginae quae non in indice sunt',
+'broken-file-category' => 'Paginae cum nexibus ad fasciculos ruptis',
'about' => 'De hoc',
'article' => 'Pagina contenta continens',
'yourlanguage' => 'Lingua:',
'yourvariant' => 'Differentia linguae contentorum:',
'yournick' => 'Subscriptio nova:',
+'prefs-help-signature' => 'Cum in paginis disputationum scribas, "<nowiki>~~~~</nowiki>" conscribe, quod in subscriptionem tuam et indicationem temporis convertetur.',
'badsig' => 'Subscriptio cruda non est valida; scrutina affixa HTML.',
'badsiglength' => 'Subscriptio tua nimis longa est.
{{PLURAL:$1|Una littera est|$1 litterae sunt}} longitudo maxima.',
'listusers-noresult' => 'Nullus usor inventus.',
'listusers-blocked' => '(obstructus)',
-# Special:ActiveUsers
-'activeusers' => 'Index usorum activorum',
-'activeusers-count' => '{{PLURAL:$1|una recensio recens|$1 recensiones recentes}} {{PLURAL:$3|die proximo|in diebus $3 proximis}}',
-'activeusers-hidebots' => 'Celare automata',
-'activeusers-hidesysops' => 'Celare magistratus',
-'activeusers-noresult' => 'Nullus usor inventus.',
-
# Special:ListGroupRights
'listgrouprights' => 'Gregum usorum potestates',
'listgrouprights-group' => 'Grex',
'pageinfo-toolboxlink' => 'De hac pagina',
# Skin names
-'skinname-standard' => 'Norma',
'skinname-cologneblue' => 'Caerulus Colonia',
# Patrolling
'tog-editsection' => "Linke fir d'Ännere vun eenzelnen Abschnitter weisen",
'tog-editsectiononrightclick' => 'Eenzel Abschnitter mat Rietsklick änneren (JavaScript)',
'tog-showtoc' => 'Inhaltsverzeechnes weise bei Säite mat méi wéi dräi Iwwerschrëften',
-'tog-rememberpassword' => 'Meng Umeldung mat dësem Browser(fir maximal $1 {{PLURAL:$1|Dag|Deeg}}) verhalen',
+'tog-rememberpassword' => 'Meng Umeldung mat dësem Browser (fir maximal $1 {{PLURAL:$1|Dag|Deeg}}) verhalen',
'tog-watchcreations' => 'Säiten déi ech uleeën a Fichieren déi ech eroplueden op meng Iwwerwaachungslëscht derbäisetzen',
'tog-watchdefault' => 'Säiten a Fichieren déi ech änneren op meng Iwwerwaachungslëscht derbäisetzen',
'tog-watchmoves' => 'Säiten a Fichieren déi ech réckelen automatesch op meng Iwwerwaachungslëscht derbäisetzen',
'otherlanguages' => 'An anere Sproochen',
'redirectedfrom' => '(Virugeleet vu(n) $1)',
'redirectpagesub' => 'Viruleedungssäit',
-'lastmodifiedat' => "Dës Säit gouf den $1 ëm $2 Auer fir d'lescht geännert.",
+'lastmodifiedat' => "Dës Säit gouf de(n) $1 ëm $2 Auer fir d'lescht geännert.",
'viewcount' => 'Dës Säit gouf bis elo {{PLURAL:$1|emol|$1-mol}} ofgefrot.',
'protectedpage' => 'Gespaarte Säit',
'jumpto' => 'Wiesselen op:',
'listusers-noresult' => 'Kee Benotzer fonnt.',
'listusers-blocked' => '(gespaart)',
-# Special:ActiveUsers
-'activeusers' => 'Lëscht vun den aktive Benotzer',
-'activeusers-intro' => 'Dëst ass eng Lëscht vun de Benotzer déi op iergend eng Manéier an de leschten $1 {{PLURAL:$1|Dag|Deeg}} aktiv waren.',
-'activeusers-count' => '$1 {{PLURAL:$1|Aktioun|Aktiounen}} {{PLURAL:$3|gëschter|an de leschten $3 Deeg}}',
-'activeusers-from' => 'Benotzer weisen, ugefaang bäi:',
-'activeusers-hidebots' => 'Botte verstoppen',
-'activeusers-hidesysops' => 'Administrateure verstoppen',
-'activeusers-noresult' => 'Keng Benotzer fonnt.',
-
# Special:ListGroupRights
'listgrouprights' => 'Rechter vun de Benotzergruppen',
'listgrouprights-summary' => 'Dëst ass eng Lëscht vun den op dëser Wiki definéierte Benotzergruppen an den domat verbonnene Rechter.
# Stylesheets
'common.css' => "/* Dës CSS huet nëmmen Afloss op de Skin ''Chick'' */",
-'standard.css' => "/* Dës CSS huet nëmmen Afloss op de Skin ''Klassesch'' */",
-'nostalgia.css' => "/* Dës CSS huet nëmmen Afloss op de Skin ''Nostalgie'' */",
'cologneblue.css' => "/* Dës CSS huet nëmmen Afloss op de Skin ''Köln Blo'' */",
'monobook.css' => "/* Dës CSS huet nëmmen Afloss op de Skin ''Monobook'' */",
-'myskin.css' => "/* Dës CSS huet nëmmen Afloss op de Skin ''MySkin'' */",
-'chick.css' => '/* Dës CSS huet nëmmen Afloss op de Skin "Chick" */',
-'simple.css' => "/* Dës CSS huet nëmmen Afloss op de Skin ''Einfach'' */",
'modern.css' => "/* Dës CSS huet nëmmen Afloss op de Skin ''Modern'' */",
# Scripts
'pageinfo-category-files' => 'Zuel vun de Fichieren',
# Skin names
-'skinname-standard' => 'Klassesch',
-'skinname-nostalgia' => 'Nostalgie',
'skinname-cologneblue' => 'Köln Blo',
'skinname-monobook' => 'MonoBook',
-'skinname-myskin' => 'MySkin',
-'skinname-chick' => 'Chick',
-'skinname-simple' => 'Einfach',
'skinname-modern' => 'Modern',
# Patrolling
'logentry-delete-revision-legacy' => "$1 huet d'Visibilitéit vu Versioune vun der Säit $3 {{GENDER:$2|geännert}}",
'logentry-suppress-delete' => "$1 {{GENDER:$2|huet}} d'Säit $3 ewechgeholl",
'logentry-suppress-event-legacy' => "$1 {{GENDER:$2|huet}} diskret d'Visibilitéit vun Elementer am Log op $3 geännert",
-'logentry-suppress-revision-legacy' => "$1 huet diskret d'Visibilitéit vu Versioune vun der Säit $3 geännert",
+'logentry-suppress-revision-legacy' => "$1 huet diskret d'Visibilitéit vu Versioune vun der Säit $3 {{GENDER:$2|geännert}}",
'revdelete-content-hid' => 'Inhalt verstoppt',
'revdelete-summary-hid' => 'Resumé vun der Ännerung verstoppt',
'revdelete-uname-hid' => 'Benotzernumm verstoppt',
'revdelete-restricted' => 'Limitatioune fir Administrateuren ageschalt',
'revdelete-unrestricted' => 'Limitatioune fir Administrateuren opgehuewen',
'logentry-move-move' => "$1 huet d'Säit $3 op $4 {{GENDER:$2|geréckelt}}",
-'logentry-move-move-noredirect' => "$1 huet d'Säit $3 op $4 geréckelt ouni eng Viruleedung unzeleeën",
-'logentry-move-move_redir' => "$1 huet d'Säit $3 op $4 geréckelt an dobäi gouf eng Viruleedung iwwerschriwwen",
+'logentry-move-move-noredirect' => "$1 huet d'Säit $3 op $4 {{GENDER:$2|geréckelt}} ouni eng Viruleedung unzeleeën",
+'logentry-move-move_redir' => "$1 huet d'Säit $3 op $4 {{GENDER:$2|geréckelt}} an dobäi gouf eng Viruleedung iwwerschriwwen",
'logentry-move-move_redir-noredirect' => "$1 huet d'Säit $3 op $4 {{GENDER:$2|geréckelt}} an dobäi gouf eng Viruleedung iwwerschriwwen an et et gouf keng nei Viruleedung ugeluecht",
'logentry-patrol-patrol' => "$1 huet d'Versioun $4 vun der Säit $3 als nogekuckt {{GENDER:$2|markéiert}}",
'logentry-patrol-patrol-auto' => "$1 huet d'Versioun $4 vun der Säit $3 automatesch als nogekuckt {{GENDER:$2|markéiert}}",
'duration-centuries' => '$1 {{PLURAL:$1|Joerhonnert|Joerhonnerten}}',
'duration-millennia' => '$1 {{PLURAL:$1|Millenaire|Millenairen}}',
+# Image rotation
+'rotate-comment' => 'Bild ëm $1 {{PLURAL:$1|Grad}} an der Richtung vun der Auer gedréint',
+
);
# General errors
'error' => 'Гъалатl',
'databaseerror' => 'Ганайбурун базадин гъалатI',
-'missing-article' => 'Малуматрин базада, квез герек авай "$1" $2 тIвар алай ччиндин текст жагъанвач
+'missing-article' => 'Малуматрин базада, квез герек авай "$1" $2 тӀвар алай ччиндин текст жагъанвач
-Ихьтин гьал адет яз алуднавай ччинин масакIавилерин тарихдиз цlуру рекьяй элячlайла арадал къвезва.
+Ихьтин гьал адет яз алуднавай ччинин масакӀавилерин тарихдиз цӀуру рекьяй элячӀайла арадал къвезва.
-Себеб ам туштlа, виридалайни мумкин тирди куьне программада гъалатl жугъурун я
-Тавакъу ийида, URL къалурна адакай [[Special:ListUsers/sysop|администратордиз]] хабар це.',
+Себеб ам туштӀа, виридалайни мумкин тирди куьне программада гъалатӀ жугъурун я
+Тавакъу ийида, URL къалурна адакай [[Special:ListUsers/sysop|администратордиз]] хабар це.',
'missingarticle-rev' => '(жуьре#: $1)',
'internalerror' => 'КЪенепатан гъалатI',
'internalerror_info' => 'КЪенепатан гъалатI $1',
'protectedpages' => 'Хвенвай ччинар',
'listusers' => 'Уртахрин сиягь',
'usercreated' => '{{GENDER:$3|Created}} идав $1 идал $2',
-'newpages' => 'ЦIийи ччинар',
+'newpages' => 'ЦӀийи ччинар',
'newpages-username' => 'Иштиракчидин тlвар',
'ancientpages' => 'виридалайни цIуру ччинар',
'move' => 'ТIвар эхцигун',
'compare-page1' => 'Чар 1',
# New logging system
+'logentry-move-move' => '$3 макъаладин тӀвар $4 -диз масакӀа хъувуна',
+'logentry-move-move-noredirect' => '$3 макъаладин тӀвар, ракъурунин винелай $4 -диз масакӀа хъувуна',
+'logentry-move-move_redir' => '$3 макъаладин тӀвар, ракъурун тун тавуна $4 -диз масакӀа хъувуна',
+'logentry-move-move_redir-noredirect' => '$3 макъаладин тӀвар, ракъурун тун тавуна ва ракъурунин винелай $4 -диз масакӀа хъувуна',
+'logentry-newusers-autocreate' => 'Уртахдин $1 учётдин кхьин автоматиквилели туькӀуьр хьанва',
'rightsnone' => '(садни)',
# Feedback
'listusers-noresult' => 'Nerasta jokių naudotojų.',
'listusers-blocked' => '(užblokuotas)',
-# Special:ActiveUsers
-'activeusers' => 'Aktyvių naudotojų sąrašas',
-'activeusers-intro' => 'Tai naudotojų sąrašas, kurie ką nors padarė per $1 {{PLURAL:$1|paskutinę dieną|paskutines dienas|paskutinių dienų}}.',
-'activeusers-count' => '$1 {{PLURAL:$1|keitimas|keitimai|keitimų}} per $3 {{PLURAL:$3|paskutinę dieną|paskutines dienas|paskutinių dienų}}',
-'activeusers-from' => 'Rodyti naudotojus, pradedant:',
-'activeusers-hidebots' => 'Slėpti robotus',
-'activeusers-hidesysops' => 'Slėpti administratorius',
-'activeusers-noresult' => 'Nerasta jokių naudotojų.',
-
# Special:ListGroupRights
'listgrouprights' => 'Naudotojų grupių teisės',
'listgrouprights-summary' => 'Žemiau pateiktas naudotojų grupių, apibrėžtų šioje wiki, ir su jomis susijusių teisių sąrašas.
# Cologne Blue skin
'qbfind' => 'Zawng rawh',
'qbbrowse' => 'Fangvêl rawh',
-'qbedit' => 'Siamţhatna',
+'qbedit' => 'Siamṭhatna',
'qbpageoptions' => 'He phêk hi',
'qbmyoptions' => 'Ka phêkte',
'qbspecialpages' => 'Phêk vohbîkte',
'viewhelppage' => 'Ţanpuina phêk enna',
'categorypage' => 'Pawl phêk enna',
'viewtalkpage' => 'Sawinona en rawh',
-'otherlanguages' => 'Ţawng dangin',
+'otherlanguages' => 'Ṭawng dangin',
'redirectedfrom' => '($1 aṭanga hruailuh a ni)',
'redirectpagesub' => 'Hruailuhna phêk',
-'lastmodifiedat' => 'Hemi phek hi ni $1, dar $2 khan siamţhat hnuhnun ber a ni.',
+'lastmodifiedat' => 'Hemi phek hi ni $1, dar $2 khan siamṭhat hnuhnun ber a ni.',
'viewcount' => 'He phêk hi vawi {{PLURAL:$1|khat|$1}} tlawh a ni tawh.',
'protectedpage' => 'Phêk venhim',
'jumpto' => 'Tah hian kal rawh:',
'youhavenewmessages' => '($2) $1 i nei.',
'newmessageslink' => 'thudawn thar',
'newmessagesdifflink' => 'tihdanglam thar',
+'youhavenewmessagesfromusers' => 'Hmangtu dang {{PLURAL:$3|pakhat|$3}} hnên aṭang $1 i nei ($2)',
+'youhavenewmessagesmanyusers' => 'Hmangtu dang tamtak hnên aṭang $1 i nei nual ($2)',
+'newmessageslinkplural' => '{{PLURAL:$1|thudawn thar}}',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|tihdanglam}} thar',
'youhavenewmessagesmulti' => '$1-ah thu dawn thar i nei',
-'editsection' => 'siamţhatna',
-'editold' => 'siamţhatna',
+'editsection' => 'siamṭhatna',
+'editold' => 'siamṭhatna',
'viewsourceold' => 'A hnar enna',
-'editlink' => 'siamţhatna',
+'editlink' => 'siamṭhatna',
'viewsourcelink' => 'a hnar enna',
'editsectionhint' => 'Hemi thuhlawm hi siamţha rawh le: $1',
'toc' => 'A chhung thute',
Hei hi dnglm ţhing emaw phêk paih tawh zawmna hlui zui vanga awm a ni tlangpui.
Chumi a nih si loh chuan khawlthluakah hrik ţhalo i tawng tihna a ni ang. Khawngaihin [[Special:ListUsers/sysop|roreltu]] hnenah a URL chiang taka sawiin hrilh rawh.',
-'missingarticle-rev' => '(siamţhatna zât: $1)',
+'missingarticle-rev' => '(siamṭhatna zât: $1)',
'missingarticle-diff' => '(Diff: $1, $2)',
'readonly_lag' => 'Database salin a pu a umphâk laiin database amahin inkhar behtir a ni.',
'internalerror' => 'Chhunglam dik loh',
'invalidtitle-knownnamespace' => 'Hming pawm loh hminghmun "$2"-a "$3" tih thu chuang.',
'invalidtitle-unknownnamespace' => 'Hming pawm loh leh hminghmun zât hriat loh $1-a thu chuang "$2"',
'exception-nologin' => 'I la lût lo',
+'exception-nologin-text' => 'I thiltih emaw hawn tum ti thei tur hian he wiki-ah hian i luh a ngai',
# Virus scanner
'virus-badscanner' => "Inremdan dikhlel: Hrik thiantu hriat loh: ''$1''",
'logouttext' => "'''I chhuak fel ta.'''
Inziaklût kher lovin {{SITENAME}} hi i hmang chhunzawm thei ang, a nih loh vëk pawhin hmangtu hming pangngai emaw, a hming dang emawin <span class='plainlinks'>[$1 lût leh]</span> thei ang.
I fangtu cache i thenfai hma chu phêk ţhenkhat intar lang a awm reng mai thei, i la chhuak lo emaw tih mai tùrin.",
+'welcomeuser' => 'Chibai, $1!',
+'welcomecreation-msg' => 'I siangchan siam fel a ni ta.
+[[Special:Preferences|{{SITENAME}}-a i duhphung]] thlâk theihnghilh suh ang che.',
'yourname' => 'Hmangtuhming:',
'yourpassword' => 'Thurûk:',
'yourpasswordagain' => 'Thurûk ziak nawn leh rawh le:',
'remembermypassword' => 'He ka rangpuifanna hman mék (browser)-ah hian ka luhna (a rei berah ni {{PLURAL:$1||}}$1) min vawnsak rawh, thurûk ziah nawn ngai lo tùrin.',
'securelogin-stick-https' => 'Luh hnuah HTTPS-ah hian chëng reng rawh.',
'yourdomainname' => 'I ram:',
+'password-change-forbidden' => 'Hë wiki-ah hian thurûk i thlâk thei lo.',
'externaldberror' => 'Insawifiahna felfai lo a awm lo a nih loh vëk pawhin i pawnlam siangchan tihdanglam phalsak i ni lo a ni ang.',
'login' => 'Luhna',
'nav-login-createaccount' => 'Luhna / siangchan siamna',
'noemailcreate' => 'E-chenhmun dik i ziah a ngai.',
'passwordsent' => '"$1" tana i e-chenhmun pêkah thurûk thawn a ni ta.
I dawn hnuah i lût dawn nia.',
+'blocked-mailpassword' => 'Phêkte khawih danglam thei lo tùrin i IP hi danbeh a ni; hman khawlohna vèn nan i thurûk dawn lêt leh phalsak i ni tawh lo.',
'mailerror' => 'e-Lehkha thawn sual: $1',
'emailauthenticated' => 'I e-chenhmun $2, $3-ah finfiah a ni.',
'emailnotauthenticated' => 'I e-chenhmun finfiah a la ni lo.
# Special:PasswordReset
'passwordreset' => 'Thurûk ziakţha rawh',
+'passwordreset-text' => 'I thurûk thlâk turin ahnuaia lehkha khu dah khat ang che.',
'passwordreset-legend' => 'Thurûk ziakţha rawh',
'passwordreset-username' => 'Hmangtu hming:',
'passwordreset-domain' => 'Huamchin:',
'''Hei hi siamṭhat tumna dànzui pangngai a nih chuan khawngaihin dahṭhat tum nawn leh rawh.'''
I la dahṭhat theih loh cheu chuan [[Special:UserLogout|chhuah phawt ]] a, luh nawn leh hmang tein han bei vêl chhin lä.",
-'editing' => '$1 i siam(ţha) mék',
+'editing' => '$1 i siamṭha mék',
'creating' => '$1 i siam mék',
-'editingsection' => '$1 (hlawm) i siam(ţha) mék',
-'editingcomment' => '$1 (hlawm thar) i siam(ţha) mék',
+'editingsection' => '$1 (hlawm) i siamṭha mék',
+'editingcomment' => '$1 (hlawm thar) i siam mék',
'editconflict' => 'Siamţhat inchuh: $1',
'yourtext' => 'I thu tah hian:',
'storedversion' => 'Ennawnna vawnţhat',
'expansion-depth-exceeded-category' => 'Tihchiam theih chin pèl phêkte',
'expansion-depth-exceeded-warning' => 'Tihchiam theih chin phêkin a pèl',
+# Account creation failure
+'cantcreateaccounttitle' => 'Siangchan siam theih loh',
+
# History pages
'viewpagelogs' => 'He phêk chanchin hi en rawh',
'nohistory' => 'Hë phêk siamṭhatna chanchin ziak a awm lo tlat.',
'rev-delundel' => 'tilang/thup',
'rev-showdeleted' => 'tihlanna',
'revdelete-show-file-submit' => 'Aw',
+'revdelete-hide-restricted' => "Roreltute leh midangte paw'n an hmuh theih loh turin hriatna-taksa hi nuaibo rawh",
'revdelete-radio-set' => 'Aw',
'revdelete-radio-unset' => 'Aih',
'revdelete-log' => 'Chhan:',
# Preferences page
'preferences' => 'Duhdàn',
-'mypreferences' => 'Ka duhdàn',
+'mypreferences' => 'Duhthlanna',
'prefs-edits' => 'Siamţhat zât',
'prefsnologin' => 'I la lût lo',
'prefsnologintext' => 'Hmangtu duhdàn siam tùrin i <span class="plainlinks"> [{{fullurl:{{#Special:UserLogin}}|returnto=$1}} inziah luh] </span> a ngai.',
'listusers-noresult' => 'Hmangtu an awm lo.',
'listusers-blocked' => '(danbeh)',
-# Special:ActiveUsers
-'activeusers' => 'Hmangtu hlun tlarna',
-'activeusers-hidebots' => 'Khawlmi thupna',
-'activeusers-hidesysops' => 'Roreltu thupna',
-'activeusers-noresult' => 'Hmangtu awm lo.',
-
# Special:ListGroupRights
'listgrouprights' => 'Hmangtu pawl dikna-chanvote',
'listgrouprights-key' => '* <span class="listgrouprights-granted">Dikna-chanvo phalsak</span>
'usermessage-editor' => 'Thuthawntu khawl',
# Watchlist
-'watchlist' => 'Ka ralvèn',
-'mywatchlist' => 'Ka ralvèn',
+'watchlist' => 'Ralvèn',
+'mywatchlist' => 'Ralvèn',
'watchlistfor2' => '$1 tan $2',
'nowatchlist' => 'Rálvèn i nei lo',
'watchlistanontext' => 'I ralvèn en tùrin emaw siamṭha tùrin $1 rawh.',
'protect_expiry_invalid' => 'A tàwp hun i sawi kha a hman theih loh.',
'protect_expiry_old' => 'A tàwp hun i thlan kha a thleng tawh!',
'protect-unchain-permissions' => 'Vènhimna duhthlan dang chhuah zalenna',
+'protect-fallback' => '"$1" phalna nei hmangtute chauh remtihsakna',
+'protect-level-autoconfirmed' => 'Mahnia infinfiah hmangtute chauh remtihsakna',
+'protect-level-sysop' => 'Roreltute chauh remtihsakna',
+'protect-summary-cascade' => 'venhimchhàwnna',
'protect-expiring' => '$1 (UTC) thleng',
'protect-expiring-local' => '$1 thleng',
'protect-expiry-indefinite' => 'tiamchin awm lo',
'blanknamespace' => '(Phekpui)',
# Contributions
-'contributions' => 'Hmangtu kutthawhnate',
+'contributions' => '{{GENDER:$1|Hmangtu}} kutthawhnate',
'contributions-title' => '$1 kutthawhnate',
-'mycontris' => 'Ka kutthawhnate',
+'mycontris' => 'Kutthawhnate',
'contribsub2' => '$1 tan ($2) .',
'nocontribs' => 'I zawn mil tihdanglamna a awm miah lo a nih hmel.',
'uctop' => '(chung)',
'whatlinkshere-hideredirs' => 'hruailuhna $1',
'whatlinkshere-hidetrans' => 'ziahhnante $1',
'whatlinkshere-hidelinks' => 'zawmnate $1',
-'whatlinkshere-hideimages' => 'Thlalâk zawmna $1',
+'whatlinkshere-hideimages' => 'taksa zawmna $1',
'whatlinkshere-filters' => 'Thlitfimna',
# Block/unblock
'listusers-noresult' => 'Neviens lietotājs nav atrasts.',
'listusers-blocked' => '(bloķēts)',
-# Special:ActiveUsers
-'activeusers' => 'Aktīvo lietotāju saraksts',
-'activeusers-intro' => 'Šis ir lietotāju saraksts, kas veikuši kādu darbību {{PLURAL:daudzskaitlī:$1|pēdējā|pēdējās}} $1 {{PLURAL:daudzskaitlī:$1|dienā|dienās}}.',
-'activeusers-from' => 'Parādīt lietotājus sākot ar:',
-'activeusers-hidebots' => 'Paslēpt botus',
-'activeusers-hidesysops' => 'Paslēpt administratorus',
-'activeusers-noresult' => 'Neviens lietotājs nav atrasts.',
-
# Special:ListGroupRights
'listgrouprights' => 'Lietotāju grupu tiesības',
'listgrouprights-summary' => 'Šis ir šajā wiki definēto lietotāju grupu uskaitījums, kopā ar tām atbilstošajām piekļuves tiesībām.
'tmp-write-error' => 'Грешка при запис на привремената податотека.',
'large-file' => 'Се препорачува податотеките да не бидат поголеми од $1; оваа податотека е $2.',
'largefileserver' => 'Големината на оваа податотека е поголема од максимално дозволената големина од серверот.',
-'emptyfile' => 'Ð\9fодаÑ\82оÑ\82екаÑ\82а Ñ\88Ñ\82о Ñ\98а подигнавÑ\82е изгледа дека е пÑ\80азна.
-Ова може да е поради грешка во името на податотеката.
-Ð\92е молиме пÑ\80овеÑ\80еÑ\82е дали навиÑ\81Ñ\82ина Ñ\81акаÑ\82е да Ñ\98а подигнеÑ\82е оваа податотека.',
+'emptyfile' => 'Податотеката што ја подигнавте е празна.
+Ова може да се должи на грешка во нејзиното име.
+Ð\9fÑ\80овеÑ\80еÑ\82е дали навиÑ\81Ñ\82ина Ñ\81акаÑ\82е да Ñ\98а подигнеÑ\82е вакваÑ\82а податотека.',
'windows-nonascii-filename' => 'Опслужувачот не поддржува податотечни имиња со специјални знаци.',
'fileexists' => 'Податотека со ова име веќе постои, проверете <strong>[[:$1]]</strong> ако не сте сигурни дали сакате да го промените.
[[$1|thumb]]',
'listusers-noresult' => 'Не е пронајден корисник.',
'listusers-blocked' => '(блокиран)',
-# Special:ActiveUsers
-'activeusers' => 'Список на активни корисници',
-'activeusers-intro' => 'Ова е список на корисници кои биле на некој начин активни во последните $1 {{PLURAL:$1|ден|дена}}.',
-'activeusers-count' => '$1 {{PLURAL:$1|дејство|дејства}} {{PLURAL:$3|денес|во последните $3 дена}}',
-'activeusers-from' => 'Прикажи корисници почнувајќи од:',
-'activeusers-hidebots' => 'Скриј ботови',
-'activeusers-hidesysops' => 'Скриј администратори',
-'activeusers-noresult' => 'Нема пронајдено корисници.',
-
# Special:ListGroupRights
'listgrouprights' => 'Права на кориснички групи',
'listgrouprights-summary' => 'Следи список на кориснички групи утврдени на ова вики, заедно со нивните придружни права на пристап.
'historywarning' => "'''Предупредување:''' Страницата што сакате да ја избришете има историја со околу $1 {{PLURAL:$1|ревизија|ревизии}}:",
'confirmdeletetext' => 'На пат сте трајно да избришете страница заедно со нејзината историја.
Потврдете дека имате намера да го направите ова, дека ги разбирате последиците од тоа, дека го правите ова во согласност со [[{{MediaWiki:Policy-url}}|политиката]].',
-'actioncomplete' => 'Дејството е спроведено',
+'actioncomplete' => 'Дејството е извршено',
'actionfailed' => 'Неуспешно дејство',
'deletedtext' => '„$1“ е избришана. Евиденција на скорешните бришења ќе најдете на $2.',
'dellogpage' => 'Дневник на бришења',
'sorbsreason' => 'Вашата IP-адреса е запишана како отворен застапник (proxy) во DNSBL кој го користи {{SITENAME}}..',
'sorbs_create_account_reason' => 'Вашата IP-адреса е наведена како отворен застапникот (proxy) во DNSBL користена од {{SITENAME}}.
Не можете да создадете корисничка сметка.',
+'xffblockreason' => 'Блокирана е IP-адреса присутна во заглавието X-Forwarded-For, која е ваша или на застапничкиот опслужувач што го користите. Наведеното образложение гласи: $1',
'cant-block-while-blocked' => 'Не можете да блокирате други корисници додека и вие самите сте блокирани.',
'cant-see-hidden-user' => 'Корисникот кој се обидувате да го блокирате е веќе блокиран и сокриен. Бидејќи вие немате права за сокривање на корисник, не можете да ги видите или уредувате корисничките блокирања.',
'ipbblocked' => 'Не можете да блокирате или одблокирате други корисници бидејќи и самите сте блокирани',
Дали сакате да ја избришете за да ослободите место за преместувањето?',
'delete_and_move_confirm' => 'Да, избриши ја страницата',
'delete_and_move_reason' => 'Избришано за да се ослободи место за преместувањето од „[[$1]]“',
-'selfmove' => 'СÑ\82Ñ\80аниÑ\86аÑ\82а не може да биде пÑ\80емеÑ\81Ñ\82ена бидеÑ\98Ñ\9cи Ñ\86елниоÑ\82 наÑ\81лов Ñ\81е Ñ\81овпаÑ\93а Ñ\81о пÑ\80вобиÑ\82ниоÑ\82 наÑ\81лов;
-не може да Ñ\81е пÑ\80емеÑ\81Ñ\82и Ñ\81Ñ\82Ñ\80аниÑ\86а во Ñ\81амаÑ\82а Ñ\81ебе.',
+'selfmove' => 'Ð\9fоÑ\98довнаÑ\82а и Ñ\86елнаÑ\82а Ñ\81Ñ\82Ñ\80аниÑ\86а Ñ\81е иÑ\81Ñ\82овеÑ\82ни;
+не можам да пÑ\80емеÑ\81Ñ\82ам.',
'immobile-source-namespace' => 'Не може да се преместуваат страници во именскиот простор „$1“',
'immobile-target-namespace' => 'Не може да се преместуваат страници во именскиот простор „$1“',
'immobile-target-namespace-iw' => 'Меѓувики-врска не може да се користи за преименување на страници.',
# Stylesheets
'common.css' => '/* Тука поставениот CSS ќе се применува врз сите рува */',
-'standard.css' => '/* Тука поставениот CSS ќе се применува врз корисниците на рувото „Стандардно“ */',
-'nostalgia.css' => '/* Тука поставениот CSS ќе се применува врз корисниците на рувото „Носталгија“ */',
'cologneblue.css' => '/* Тука поставениот CSS ќе се применува врз корисниците што го избрале рувото „Келнско сино“ */',
'monobook.css' => '/* Тука поставениот CSS ќе се применува врз корисниците на рувото „Монобук“ */',
-'myskin.css' => '/* Тука поставениот CSS се однесува на корисниците на рувото „Мое руво“ */',
-'chick.css' => '/* Тука поставениот CSS се однесува на корисниците на рувото „Шик“ */',
-'simple.css' => '/* Тука поставениот CSS се однесува на корисниците на рувото „Просто“ */',
'modern.css' => '/* Тука поставениот CSS се однесува на корисниците на рувото „Современо“ */',
'vector.css' => '/* Тука поставениот CSS се однесува на корисниците на рувото „Векторско“ */',
'print.css' => '/* Тука поставениот CSS ќе се применува во верзијата за печатење */',
# Scripts
'common.js' => '/* Тука поставениот JavaScript ќе им се вчитува на сите корисници при отворањето на секоја страница. */',
-'standard.js' => '/* Тука поставениот JavaScript ќе им се вчитува на корисниците што го користат стандардното руво */',
-'nostalgia.js' => '/* Тука поставениот JavaScript ќе им се вчитува на корисниците што го користат рувото „Носталгија“ */',
'cologneblue.js' => '/* Тука поставениот JavaScript ќе им се вчитува на корисниците што го користат рувото „Келнско сино“ */',
'monobook.js' => '/* Тука поставениот JavaScript ќе им се вчитува на корисниците што го користат рувото „Монобук“ */',
-'myskin.js' => '/* Тука поставениот JavaScript ќе им се вчитува на корисниците што користат „Мое руво“ */',
-'chick.js' => '/* Тука поставениот JavaScript ќе им се вчитува на корисниците што го користат рувото „Шик“ */',
-'simple.js' => '/* Тука поставениот JavaScript ќе им се вчитува на корисниците што го користат рувото „Просто“ */',
'modern.js' => '/* Било која Јава скрипта поставена овде ќе биде вчитана за сите корисници што го користат рувото Современо */',
'vector.js' => '/* Тука поставениот JavaScript ќе им се вчитува на корисниците што го користат рувото „Векторско“ */',
'group-autoconfirmed.js' => '/* Тука поставениот JavaScript ќе им се вчитува само на автопотврдените корисници */',
'pageinfo-category-files' => 'Број на податотеки',
# Skin names
-'skinname-standard' => 'Класично',
-'skinname-nostalgia' => 'Носталгија',
'skinname-cologneblue' => 'Келнско сино',
'skinname-monobook' => 'Монобук',
-'skinname-myskin' => 'Мое руво',
-'skinname-chick' => 'Шик',
-'skinname-simple' => 'Просто',
'skinname-modern' => 'Современо',
'skinname-vector' => 'Векторско',
'listusers-noresult' => 'ഈ സംഘത്തിൽ ഉൾപ്പെടുന്ന ഉപയോക്താക്കൾ ആരും ഇല്ല.',
'listusers-blocked' => '(തടയപ്പെട്ടു)',
-# Special:ActiveUsers
-'activeusers' => 'സജീവ ഉപയോക്താക്കളുടെ പട്ടിക',
-'activeusers-intro' => 'ഇത് കഴിഞ്ഞ {{PLURAL:$1|ദിവസം|$1 ദിവസങ്ങളിൽ}} ഏതെങ്കിലും വിധത്തിലുള്ള പ്രവർത്തനങ്ങൾ ചെയ്ത ഉപയോക്താക്കളുടെ പട്ടികയാണ്.',
-'activeusers-count' => 'കഴിഞ്ഞ {{PLURAL:$3|ഒരു ദിവസം|$3 ദിവസങ്ങളിൽ}} {{PLURAL:$1|ഒരു പ്രവൃത്തി|$1 പ്രവൃത്തികൾ}}',
-'activeusers-from' => 'ഇങ്ങനെ തുടങ്ങുന്ന ഉപയോക്താക്കളെ കാട്ടുക:',
-'activeusers-hidebots' => 'യന്ത്രങ്ങളെ മറയ്ക്കുക',
-'activeusers-hidesysops' => 'കാര്യനിർവാഹകരെ മറയ്ക്കുക',
-'activeusers-noresult' => 'ഉപയോക്താക്കളില്ല',
-
# Special:ListGroupRights
'listgrouprights' => 'ഉപയോക്തൃവിഭാഗത്തിന്റെ അവകാശങ്ങൾ',
'listgrouprights-summary' => 'ഈ വിക്കിയിൽ നിർവ്വചിക്കപ്പെട്ടിരിക്കുന്ന ഉപയോക്തൃസംഘങ്ങളെയും, ആ സംഘങ്ങൾക്ക് പ്രാപ്തമായിട്ടുള്ള അവകാശങ്ങളേയും താഴെ കുറിച്ചിരിക്കുന്നു.
# Stylesheets
'common.css' => '/* ഇവിടെ നൽകുന്ന സി.എസ്.എസ്. എല്ലാ ദൃശ്യരൂപങ്ങൾക്കും ബാധകമായിരിക്കും */',
-'standard.css' => '/* ഇവിടെ നൽകുന്ന സി.എസ്.എസ്. സാർവത്രികം ദൃശ്യരൂപം ഉപയോഗിക്കുന്നവർക്ക് ബാധകമായിരിക്കും */',
-'nostalgia.css' => '/* ഇവിടെ നൽകുന്ന സി.എസ്.എസ്. ഗൃഹാതുരത്വം ദൃശ്യരൂപം ഉപയോഗിക്കുന്നവർക്ക് ബാധകമായിരിക്കും */',
'monobook.css' => '/* ഇവിടെ നൽകുന്ന സി.എസ്.എസ്. മോണോബുക്ക് ദൃശ്യരൂപം ഉപയോഗിക്കുന്നവർക്ക് ബാധകമായിരിക്കും */',
-'myskin.css' => '/* ഇവിടെ നൽകുന്ന സി.എസ്.എസ്. എന്റിഷ്ടം ദൃശ്യരൂപം ഉപയോഗിക്കുന്നവർക്ക് ബാധകമായിരിക്കും */',
-'chick.css' => '/* ഇവിടെ നൽകുന്ന സി.എസ്.എസ്. സുന്ദരി ദൃശ്യരൂപം ഉപയോഗിക്കുന്നവർക്ക് ബാധകമായിരിക്കും */',
'modern.css' => '/* ഇവിടെ നൽകുന്ന സി.എസ്.എസ്. നവീനം ദൃശ്യരൂപം ഉപയോഗിക്കുന്നവർക്ക് ബാധകമായിരിക്കും */',
'vector.css' => '/* ഇവിടെ നൽകുന്ന സി.എസ്.എസ്. വെക്റ്റർ ദൃശ്യരൂപത്തിനു ബാധകമായിരിക്കും*/',
'noscript.css' => '/* ഇവിടെ നൽകുന്ന സി.എസ്.എസ്., ജാവാസ്ക്രിപ്റ്റ് സജ്ജമാക്കിയിട്ടില്ലാത്ത ഉപയോക്താക്കൾക്ക് ബാധകമായിരിക്കും */',
'pageinfo-category-files' => 'പ്രമാണങ്ങളുടെ എണ്ണം',
# Skin names
-'skinname-standard' => 'സാർവത്രികം',
-'skinname-nostalgia' => 'ഗൃഹാതുരത്വം',
'skinname-cologneblue' => 'ക്ലോൺ നീല',
'skinname-monobook' => 'മോണോബുക്ക്',
-'skinname-myskin' => 'എന്റിഷ്ടം',
-'skinname-chick' => 'സുന്ദരി',
-'skinname-simple' => 'ലളിതം',
'skinname-modern' => 'നവീനം',
'skinname-vector' => 'വെക്റ്റർ',
ഈ പ്രോഗ്രാമിനൊപ്പം [{{SERVER}}{{SCRIPTPATH}}/COPYING ഗ്നു സാർവ്വജനിക അനുവാദപത്രത്തിന്റെ ഒരു പകർപ്പ്] താങ്കൾക്ക് ലഭിച്ചിരിക്കും; ഇല്ലെങ്കിൽ Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA എന്ന വിലാസത്തിലെഴുതുക അല്ലെങ്കിൽ [//www.gnu.org/licenses/old-licenses/gpl-2.0.html അനുവാദപത്രം ഓൺലൈനായി വായിക്കുക].',
'version-software' => 'ഇൻസ്റ്റോൾ ചെയ്ത സോഫ്റ്റ്വെയർ',
-'version-software-product' => 'à´¸àµ\8bà´«àµ\8dà´±àµ\8dà´±àµ\8dâ\80\8cà´µàµ\86യർ à´\89à´²àµ\8dപനàµ\8dà´¨à´\82',
+'version-software-product' => 'ഉല്പന്നം',
'version-software-version' => 'വിവരണം',
'version-entrypoints' => 'പ്രവേശനസ്ഥാന യു.ആർ.എല്ലുകൾ',
'version-entrypoints-header-entrypoint' => 'പ്രവേശനസ്ഥാനം',
'tog-usenewrc' => 'वाढीव अलीकडील बदल वापरा (जावास्क्रीप्टच्या उपलब्धतेची गरज)',
'tog-numberheadings' => 'शीर्षके स्वयंक्रमांकित करा',
'tog-showtoolbar' => 'संपादन चिन्हे दाखवा (जावास्क्रीप्ट)',
-'tog-editondblclick' => 'दà¥\8bनवà¥\87ळा à¤\95à¥\8dलà¥\80à¤\95 à¤\95रà¥\81न पान संपादित करा (जावास्क्रीप्ट)',
+'tog-editondblclick' => 'दà¥\8bनवà¥\87ळा à¤\95à¥\8dलिà¤\95 à¤\95रà¥\82न पान संपादित करा (जावास्क्रीप्ट)',
'tog-editsection' => '[संपादन] दुव्याने संपादन करणे शक्य करा',
-'tog-editsectiononrightclick' => 'विà¤à¤¾à¤\97 शà¥\80रà¥\8dषà¤\95ावर à¤\89à¤\9cवà¥\8dया à¤\95à¥\8dलà¥\80कने संपादन करा(जावास्क्रीप्ट)',
+'tog-editsectiononrightclick' => 'विà¤à¤¾à¤\97 शà¥\80रà¥\8dषà¤\95ावर à¤\89à¤\9cवà¥\8dया à¤\95à¥\8dलिकने संपादन करा(जावास्क्रीप्ट)',
'tog-showtoc' => 'पानात ३ पेक्षा जास्त शीर्षके असल्यास अनुक्रमणिका दाखवा',
'tog-rememberpassword' => 'माझा प्रवेश या संगणकावर लक्षात ठेवा (जास्तीत जास्त $1 {{PLURAL:$1|दिवसासाठी|दिवसांसाठी}})',
'tog-watchcreations' => 'मी तयार केलेली पाने माझ्या पहाऱ्याच्या सूचीमध्ये (माझी नित्य पहाण्याची सूची)टाका',
'jumpto' => 'येथे जा:',
'jumptonavigation' => 'सुचालन',
'jumptosearch' => 'शोध',
-'view-pool-error' => 'माफ à¤\95रा. यावà¥\87ळà¥\87स सरà¥\8dवà¥\8dहरवर ताण à¤\86हà¥\87. à¤\85नà¥\87à¤\95 सदसà¥\8dय हà¥\87 पान बà¤\98णà¥\8dयाà¤\9aा पà¥\8dरयतà¥\8dन à¤\95रà¥\80त आहेत. पुन्हा या पानावर पोचण्यासाठी थोडा वेळ थांबून परत प्रयत्न करा.
+'view-pool-error' => 'माफ à¤\95रा. यावà¥\87ळà¥\87स सरà¥\8dवà¥\8dहरवर ताण à¤\86हà¥\87. à¤\85नà¥\87à¤\95 सदसà¥\8dय हà¥\87 पान बà¤\98णà¥\8dयाà¤\9aा पà¥\8dरयतà¥\8dन à¤\95रित आहेत. पुन्हा या पानावर पोचण्यासाठी थोडा वेळ थांबून परत प्रयत्न करा.
$1',
'pool-timeout' => 'ताळ्यासाठी वाट पाहताना वेळ संपली',
'pool-queuefull' => 'सर्व्हरवर ताण आहे.',
'badaccess' => 'परवानगी नाकारण्यात आली आहे',
'badaccess-group0' => 'तुम्ही करत असलेल्या क्रियेचे तुम्हाला अधिकार नाहीत.',
-'badaccess-groups' => 'à¤\86पण विनà¥\80त à¤\95à¥\87लà¥\87लà¥\80 à¤\95à¥\83तà¥\80 à¤\96ालà¥\80ल {{PLURAL:$2|समà¥\82हासाठà¥\80|पà¥\88à¤\95à¥\80 à¤\8fà¤\95ा समà¥\82हासाठà¥\80}} मरà¥\8dयादà¥\80त आहे: $1.',
+'badaccess-groups' => 'à¤\86पण विनà¥\80त à¤\95à¥\87लà¥\87लà¥\80 à¤\95à¥\83तà¥\80 à¤\96ालà¥\80ल {{PLURAL:$2|समà¥\82हासाठà¥\80|पà¥\88à¤\95à¥\80 à¤\8fà¤\95ा समà¥\82हासाठà¥\80}} मरà¥\8dयादित आहे: $1.',
'versionrequired' => 'मीडियाविकीच्या $1 आवृत्तीची गरज आहे.',
'versionrequiredtext' => 'हे पान वापरण्यासाठी मीडियाविकीच्या $1 आवृत्तीची गरज आहे. पहा [[Special:Version|आवृत्ती यादी]].',
'nosuchaction' => 'अशी कृती अस्तित्वात नाही',
'nosuchactiontext' => 'URL ने सांगितलेली कृती चुकीची आहे.
तुम्ही कदाचित URL चुकीची दिली असेल, किंवा चुकीच्या दुव्यावर टिचकी दिली असेल.
-à¤\95दाà¤\9aित हà¥\80 à¤\95à¥\83तà¥\80 {{SITENAME}} मधà¥\80ल तà¥\8dरà¥\81à¤\9fà¥\80 सà¥\81दà¥\8dधा दरà¥\8dशवित असेल.',
+à¤\95दाà¤\9aित हà¥\80 à¤\95à¥\83तà¥\80 {{SITENAME}} मधà¥\80ल तà¥\8dरà¥\81à¤\9fà¥\80 सà¥\81दà¥\8dधा दरà¥\8dशवà¥\80त असेल.',
'nosuchspecialpage' => 'असे कोणतेही विशेष पृष्ठ अस्तित्वात नाही',
'nospecialpagetext' => '<strong>आपण केलेली विनंती अयोग्य विशेषपानासंबंधी आहे.</strong>
'laggedslavemode' => 'सुचना: पानावर नवीन बदल नसतील.',
'readonly' => 'विदागारास (database) ताळे आहे.',
'enterlockreason' => 'विदागारास ताळे ठोकण्याचे कारण, ताळे उघडले जाण्याच्या अदमासे कालावधीसहीत द्या.',
-'readonlytext' => 'बहà¥\81धा विदाà¤\97ार मà¥\87à¤\82à¤\9fà¥\87ननà¥\8dसà¤\95रिता नवà¥\80न à¤à¤° à¤\98ालणà¥\8dयापासà¥\82न à¤\86णि à¤\87तर बदल à¤\95रणà¥\8dयापासà¥\82न बà¤\82द ठà¥\87वणà¥\8dयात à¤\86ला à¤\86हà¥\87, मà¥\87à¤\82à¤\9fà¥\87ननà¥\8dसनà¤\82तर तà¥\8b नियमà¥\80त होईल.
+'readonlytext' => 'बहà¥\81धा विदाà¤\97ार मà¥\87à¤\82à¤\9fà¥\87ननà¥\8dसà¤\95रिता नवà¥\80न à¤à¤° à¤\98ालणà¥\8dयापासà¥\82न à¤\86णि à¤\87तर बदल à¤\95रणà¥\8dयापासà¥\82न बà¤\82द ठà¥\87वणà¥\8dयात à¤\86ला à¤\86हà¥\87, मà¥\87à¤\82à¤\9fà¥\87ननà¥\8dसनà¤\82तर तà¥\8b नियमित होईल.
-ताळà¥\87 ठà¥\8bà¤\95णाऱà¥\8dया पà¥\8dरबà¤\82धà¤\95ाà¤\82नà¥\80 à¤\96ालà¥\80ल à¤\95ारण नमà¥\81द केले आहे: $1',
+ताळà¥\87 ठà¥\8bà¤\95णाऱà¥\8dया पà¥\8dरबà¤\82धà¤\95ाà¤\82नà¥\80 à¤\96ालà¥\80ल à¤\95ारण नमà¥\82द केले आहे: $1',
'missing-article' => 'डाटाबेसला "$1" $2 नावाचे पान मिळालेले नाही, जे मिळायला हवे होते.
असे बहुदा संपुष्टात आलेल्या फरकामुळे किंवा वगळलेल्या पानाच्या इतिहास दुव्यामुळे घडते.
'badarticleerror' => 'या पानावर ही कृती करता येत नाही.',
'cannotdelete' => '$1 हे पान किंवा संचिका वगळता आलेली नाही. (आधीच इतर कुणी वगळले असण्याची शक्यता आहे.)',
'cannotdelete-title' => '$1 ला वगळू शकत नाहि',
-'delete-hook-aborted' => 'à¤\96à¥\8bडणà¥\8dयाà¤\9aà¥\80 à¤\95à¥\8dरिया मधà¥\87à¤\9a थाà¤\82बवà¥\80ण्यात येत आहे.
+'delete-hook-aborted' => 'à¤\96à¥\8bडणà¥\8dयाà¤\9aà¥\80 à¤\95à¥\8dरिया मधà¥\87à¤\9a थाà¤\82बविण्यात येत आहे.
कोणतेही कारण देण्यात आले नाही',
'badtitle' => 'चुकीचे शीर्षक',
-'badtitletext' => 'à¤\86पण माà¤\97ितलà¥\87लà¥\87 शà¥\80रà¥\8dषà¤\95 पान à¤\85यà¥\8bà¤\97à¥\8dय, रिà¤\95ामà¥\87 à¤\85थवा à¤\9aà¥\82à¤\95à¥\80ने जोडलेले आंतर-भाषिय किंवा आंतर-विकि शीर्षक आहे. त्यात एक किंवा अधिक शीर्षकअयोग्य चिन्हे आहेत.',
+'badtitletext' => 'à¤\86पण माà¤\97ितलà¥\87लà¥\87 शà¥\80रà¥\8dषà¤\95 पान à¤\85यà¥\8bà¤\97à¥\8dय, रिà¤\95ामà¥\87 à¤\85थवा à¤\9aà¥\81à¤\95िने जोडलेले आंतर-भाषिय किंवा आंतर-विकि शीर्षक आहे. त्यात एक किंवा अधिक शीर्षकअयोग्य चिन्हे आहेत.',
'perfcached' => 'खालील माहिती सयीमध्ये(कॅशे) ठेवली आहे त्यामुळे ती नवीनतम {{PLURAL:$1|one result is|$1 results }} नसावी.',
'perfcachedts' => 'खालील माहिती सयीमध्ये(कॅशे) ठेवली आहे आणि शेवटी $1 ला {{PLURAL:$4|one result is|$4 results}} बदलली होती.',
'querypage-no-updates' => 'सध्या या पाना करिता नवीसंस्करणे अनुपलब्ध केली आहेत.आत्ताच येथील विदा ताजा होणार नाही.',
'viewsource' => 'स्रोत पहा',
'viewsource-title' => '$1 चा उगम बघा',
'actionthrottled' => 'कृती अवरूद्ध (throttle) केली',
-'actionthrottledtext' => 'à¤\86à¤\82तरà¤\9cाल-à¤\9aिà¤\96लणà¥\80 विरà¥\8bधà¥\80 à¤\89पायाà¤\9aà¥\8dया दà¥\83षà¥\8dà¤\9fà¥\80नà¥\87(anti-spam measure), हà¥\80 à¤\95à¥\83तà¥\80 थà¥\8bडà¥\8dया à¤\95ालावधà¥\80त à¤\85सà¤\82à¤\96à¥\8dयवà¥\87ळा à¤\95रणà¥\8dयापासà¥\82न तà¥\81मà¥\8dहाला पà¥\8dरतिबà¤\82धà¥\80त करण्यात आले आहे, आणि आपण या मर्यादेचे उल्लंघन केले आहे. कृपया थोड्या वेळाने पुन्हा प्रयत्न करा.',
-'protectedpagetext' => 'हà¥\87 पान बदल हà¥\8bà¤\8a नयà¥\87त मà¥\8dहणà¥\81न सुरक्षित केले आहे.',
+'actionthrottledtext' => 'à¤\86à¤\82तरà¤\9cाल-à¤\9aिà¤\96लणà¥\80 विरà¥\8bधà¥\80 à¤\89पायाà¤\9aà¥\8dया दà¥\83षà¥\8dà¤\9fà¥\80नà¥\87(anti-spam measure), हà¥\80 à¤\95à¥\83तà¥\80 थà¥\8bडà¥\8dया à¤\95ालावधà¥\80त à¤\85सà¤\82à¤\96à¥\8dयवà¥\87ळा à¤\95रणà¥\8dयापासà¥\82न तà¥\81मà¥\8dहाला पà¥\8dरतिबà¤\82धित करण्यात आले आहे, आणि आपण या मर्यादेचे उल्लंघन केले आहे. कृपया थोड्या वेळाने पुन्हा प्रयत्न करा.',
+'protectedpagetext' => 'हà¥\87 पान बदल हà¥\8bà¤\8a नयà¥\87त मà¥\8dहणà¥\82न सुरक्षित केले आहे.',
'viewsourcetext' => 'तुम्ही या पानाचा स्रोत पाहू शकता व प्रत करू शकता:',
'viewyourtext' => 'तुम्ही या पानाचे स्त्रोत पाहू शकता व प्रत करू शकता',
'protectedinterface' => 'हे पान सॉफ्टवेअरला इंटरफेस लेखन पुरवते, म्हणून दुरूपयोग टाळण्यासाठी संरक्षित केलेले आहे.',
'cascadeprotected' => 'हे पान संपादनांपासून सुरक्षित केले गेलेले आहे, कारण ते खालील {{PLURAL:$1|पानात|पानांमध्ये}} अंतर्भूत केलेले आहे, की जे पान/जी पाने शिडी पर्यायाने सुरक्षित आहेत:
$2',
'namespaceprotected' => "'''$1''' नामविश्वातील पाने बदलण्याची आपणांस परवानगी नाही.",
-'customcssprotected' => 'या पानावर à¤\87तर सदसà¥\8dयाà¤\9aà¥\8dया वà¥\8dयà¤\95à¥\8dतिà¤\97त पसà¤\82तà¥\80 à¤\85सलà¥\8dयामà¥\81ळà¥\87, तà¥\81मà¥\8dहाला हà¥\87 सà¥\80à¤\8fसà¤\8fस पान सà¤\82पादà¥\80त करण्याची परवानगी नाही.',
-'customjsprotected' => 'या पानावर à¤\87तर सदसà¥\8dयाà¤\9aà¥\8dया वà¥\8dयà¤\95à¥\8dतिà¤\97त पसà¤\82तà¥\80 à¤\85सलà¥\8dयामà¥\81ळà¥\87, तà¥\81मà¥\8dहाला हà¥\87 JavaScript पान सà¤\82पादà¥\80त करण्याची परवानगी नाही.',
+'customcssprotected' => 'या पानावर à¤\87तर सदसà¥\8dयाà¤\9aà¥\8dया वà¥\8dयà¤\95à¥\8dतिà¤\97त पसà¤\82तà¥\80 à¤\85सलà¥\8dयामà¥\81ळà¥\87, तà¥\81मà¥\8dहाला हà¥\87 सà¥\80à¤\8fसà¤\8fस पान सà¤\82पादित करण्याची परवानगी नाही.',
+'customjsprotected' => 'या पानावर à¤\87तर सदसà¥\8dयाà¤\9aà¥\8dया वà¥\8dयà¤\95à¥\8dतिà¤\97त पसà¤\82तà¥\80 à¤\85सलà¥\8dयामà¥\81ळà¥\87, तà¥\81मà¥\8dहाला हà¥\87 JavaScript पान सà¤\82पादित करण्याची परवानगी नाही.',
'ns-specialprotected' => 'विशेष पाने संपादित करता येत नाहीत.',
-'titleprotected' => "या शà¥\80रà¥\8dषà¤\95ाà¤\9aà¥\87 पान सदसà¥\8dय [[User:$1|$1]]नà¥\87 निरà¥\8dमà¥\80त करण्यापासून सुरक्षित केलेले आहे.
+'titleprotected' => "या शà¥\80रà¥\8dषà¤\95ाà¤\9aà¥\87 पान सदसà¥\8dय [[User:$1|$1]]नà¥\87 निरà¥\8dमित करण्यापासून सुरक्षित केलेले आहे.
''$2'' हे कारण नमूद केलेले आहे.",
'invalidtitle-knownnamespace' => '"$2" नामविश्वात "$3" हे अयोग्य शीर्षक',
'exception-nologin' => 'प्रवेश केलेला नाही',
'externaldberror' => 'विदागार ’खातरजमा’ (प्रमाणितीकरण) त्रुटी होती अथवा तुम्हाला तुमचे बाह्य खाते अद्ययावत करण्याची परवानगी नाही.',
'login' => 'प्रवेश करा',
'nav-login-createaccount' => 'सदस्य प्रवेश',
-'loginprompt' => '{{SITENAME}}मधà¥\8dयà¥\87 दाà¤\96ल हà¥\8bणà¥\8dयाà¤\95रिता सà¥\8dमà¥\83तिशà¥\87ष à¤\8aपलब्ध (Cookie enable)असणे आवश्यक आहे.',
+'loginprompt' => '{{SITENAME}}मधà¥\8dयà¥\87 दाà¤\96ल हà¥\8bणà¥\8dयाà¤\95रिता सà¥\8dमà¥\83तिशà¥\87ष à¤\89पलब्ध (Cookie enable)असणे आवश्यक आहे.',
'userlogin' => 'दाखल व्हा /सदस्य खाते उघडा',
'userloginnocreate' => 'प्रवेश करा',
'logout' => 'बाहेर पडा',
'userexists' => 'या नावाने सदस्याची नोंदणी झालेली आहे.
कृपया दुसरे सदस्य नाव निवडा.',
'loginerror' => 'आपल्या प्रवेश नोंदणीमध्ये चूक झाली आहे',
-'createaccounterror' => 'हà¥\87 à¤\96ातà¥\87 तयार à¤\95रता यà¥\87à¤\89 शकले नाही:$1',
-'nocookiesnew' => 'सदसà¥\8dय à¤\96ातà¥\87 à¤\89à¤\98डलà¥\87 ,पण तà¥\81मà¥\8dहà¥\80 à¤\96ातà¥\87 वापरà¥\82न दाà¤\96ल à¤\9dालà¥\87लà¥\87 नाहà¥\80 à¤\86हात.{{SITENAME}} सदसà¥\8dयाà¤\82ना दाà¤\96ल à¤\95रà¥\82न à¤\98à¥\87ताना तà¥\8dयाà¤\82à¤\9aà¥\8dया सà¥\8dमà¥\83तà¥\80शà¥\87ष (cookies) वापरतà¥\87.तà¥\81मà¥\8dहà¥\80 सà¥\8dमà¥\83तà¥\80शेष सुविधा अनुपलब्ध टेवली आहे.ती कृपया उपलब्ध करा,आणि नंतर तुमच्या नवीन सदस्य नावाने आणि परवलीने दाखल व्हा.',
-'nocookieslogin' => '{{SITENAME}} सदसà¥\8dयाà¤\82ना दाà¤\96ल à¤\95रà¥\82न à¤\98à¥\87ताना तà¥\8dयाà¤\82à¤\9aà¥\8dया सà¥\8dमà¥\83तà¥\80शà¥\87ष (cookies) वापरतà¥\87.तà¥\81मà¥\8dहà¥\80 सà¥\8dमà¥\83तà¥\80शेष सुविधा अनुपलब्ध टेवली आहे.स्मृतीशेष सुविधा कृपया उपलब्ध करा,आणि दाखल होण्यासाठी पुन्हा प्रयत्न करा.',
+'createaccounterror' => 'हà¥\87 à¤\96ातà¥\87 तयार à¤\95रता यà¥\87à¤\8a शकले नाही:$1',
+'nocookiesnew' => 'सदसà¥\8dय à¤\96ातà¥\87 à¤\89à¤\98डलà¥\87 ,पण तà¥\81मà¥\8dहà¥\80 à¤\96ातà¥\87 वापरà¥\82न दाà¤\96ल à¤\9dालà¥\87लà¥\87 नाहà¥\80 à¤\86हात.{{SITENAME}} सदसà¥\8dयाà¤\82ना दाà¤\96ल à¤\95रà¥\82न à¤\98à¥\87ताना तà¥\8dयाà¤\82à¤\9aà¥\8dया सà¥\8dमà¥\83तिशà¥\87ष (cookies) वापरतà¥\87.तà¥\81मà¥\8dहà¥\80 सà¥\8dमà¥\83तिशेष सुविधा अनुपलब्ध टेवली आहे.ती कृपया उपलब्ध करा,आणि नंतर तुमच्या नवीन सदस्य नावाने आणि परवलीने दाखल व्हा.',
+'nocookieslogin' => '{{SITENAME}} सदसà¥\8dयाà¤\82ना दाà¤\96ल à¤\95रà¥\82न à¤\98à¥\87ताना तà¥\8dयाà¤\82à¤\9aà¥\8dया सà¥\8dमà¥\83तिशà¥\87ष (cookies) वापरतà¥\87.तà¥\81मà¥\8dहà¥\80 सà¥\8dमà¥\83तिशेष सुविधा अनुपलब्ध टेवली आहे.स्मृतीशेष सुविधा कृपया उपलब्ध करा,आणि दाखल होण्यासाठी पुन्हा प्रयत्न करा.',
'nocookiesfornew' => 'हे सदस्य खाते अस्तित्वात नाही, त्यामुळे आम्ही त्याच्या स्रोताची खात्री करू शकलो नाही.
तुमचे स्मृतिशेष उपलब्ध असण्याची खात्री करा, किंवा थोड्या वेळाने हे पान पुन्हा पहा.',
'noname' => 'आपण नोंदणीसाठी सदस्याचे योग्य नाव लिहिले नाही.',
-'loginsuccesstitle' => 'à¤\86पलà¥\8dया पà¥\8dरवà¥\87शाà¤\9aà¥\80 नà¥\8bà¤\82दणà¥\80 यशसà¥\8dवà¥\80रित्या पूर्ण झाली',
+'loginsuccesstitle' => 'à¤\86पलà¥\8dया पà¥\8dरवà¥\87शाà¤\9aà¥\80 नà¥\8bà¤\82दणà¥\80 यशसà¥\8dवà¥\80रà¥\80त्या पूर्ण झाली',
'loginsuccess' => "'''तुम्ही {{SITENAME}} वर \"\$1\" नावाने प्रवेश केला आहे.'''",
'nosuchuser' => '"$1" या नावाचा कोणताही सदस्य नाही.तुमचे शुद्धलेखन तपासा, किंवा [[Special:UserLogin/signup|नवीन खाते]] तयार करा.',
'nosuchusershort' => '"$1" या नावाचा सदस्य नाही. लिहीताना आपली चूक तर नाही ना झाली?',
-'nouserspecified' => 'तà¥\81मà¥\8dहाला सदसà¥\8dयनाव नमà¥\81द करावे लागेल.',
-'login-userblocked' => 'या सदसà¥\8dयाà¤\9aà¥\87 à¤\96ातà¥\87 â\80\99पà¥\8dरतिबà¤\82धितâ\80\99 à¤\86हà¥\87. तà¥\8dयास पà¥\8dरवà¥\87श à¤\95रà¥\81 देणे शक्य नाही.',
+'nouserspecified' => 'तà¥\81मà¥\8dहाला सदसà¥\8dयनाव नमà¥\82द करावे लागेल.',
+'login-userblocked' => 'या सदसà¥\8dयाà¤\9aà¥\87 à¤\96ातà¥\87 â\80\99पà¥\8dरतिबà¤\82धितâ\80\99 à¤\86हà¥\87. तà¥\8dयास पà¥\8dरवà¥\87श à¤\95रà¥\82 देणे शक्य नाही.',
'wrongpassword' => 'आपला परवलीचा शब्द चुकीचा आहे, पुन्हा एकदा प्रयत्न करा.',
'wrongpasswordempty' => 'परवलीचा शब्द रिकामा आहे; परत प्रयत्न करा.',
'passwordtooshort' => 'तुमचा परवलीचा शब्द जरूरीपेक्षा लहान आहे. यात कमीत कमी {{PLURAL:$1|१ अक्षर |$1 अक्षरे}} पाहिजेत.',
तो शब्द वापरुन पुन्हा प्रवेश करा.',
'blocked-mailpassword' => 'संपादनापासून तुमच्या अंकपत्त्यास आडविण्यात आले आहे,आणि म्हणून दुरूपयोग टाळ्ण्याच्या दृष्टीने परवलीचाशब्द परत मिळवण्यास सुद्धा मान्यता उपलब्ध नाही.',
'eauthentsent' => 'नामांकित ई-मेल पत्त्यावर एक निश्चितता स्वीकारक ई-मेल पाठविला गेला आहे.
-à¤\96ातà¥\8dयावर à¤\95à¥\8bणताहà¥\80 à¤\87तर à¤\88-मà¥\87ल पाठविणà¥\8dयापà¥\82रà¥\8dवà¥\80 - तà¥\8b à¤\88-मà¥\87ल पतà¥\8dता तà¥\81मà¤\9aाà¤\9a à¤\86हà¥\87, हà¥\87 सà¥\82निश्चित करण्यासाठी - तुम्हाला त्या ई-मेल मधील सूचनांचे पालन करावे लागेल.',
+à¤\96ातà¥\8dयावर à¤\95à¥\8bणताहà¥\80 à¤\87तर à¤\88-मà¥\87ल पाठविणà¥\8dयापà¥\82रà¥\8dवà¥\80 - तà¥\8b à¤\88-मà¥\87ल पतà¥\8dता तà¥\81मà¤\9aाà¤\9a à¤\86हà¥\87, हà¥\87 सà¥\81निश्चित करण्यासाठी - तुम्हाला त्या ई-मेल मधील सूचनांचे पालन करावे लागेल.',
'throttled-mailpassword' => 'मागील {{PLURAL:$1|एका तासामध्ये|$1 तासांमध्ये}} परवलीचा शब्द बदलण्यासाठीची सूचना पाठविलेली आहे. दुरुपयोग टाळण्यासाठी {{PLURAL:$1|एका तासामध्ये|$1 तासांमध्ये}} फक्त एकदाच सूचना दिली जाईल.',
'mailerror' => 'विपत्र पाठवण्यात त्रुटी: $1',
'acct_creation_throttle_hit' => 'माफ करा, तुम्ही आत्तापर्यंत {{PLURAL:$1|१ खाते उघडले आहे|$1 खाती उघडली आहेत}}. तुम्हाला आणखी खाती उघडता येणार नाहीत.',
'noemailprefs' => 'खालील सुविधा कार्यान्वित करण्यासाठी इ-मेल पत्ता पुरवा.',
'emailconfirmlink' => 'आपला ई-मेल पत्ता तपासून पहा.',
'invalidemailaddress' => 'तुम्ही दिलेला ई-मेल पत्ता चुकीचा आहे, कारण तो योग्यप्रकारे लिहिलेला नाही. कृपया योग्यप्रकारे ई-मेल पत्ता लिहा अथवा ती जागा मोकळी सोडा.',
-'cannotchangeemail' => 'या विà¤\95à¥\80वर खात्याचा ईमेल बदलता येत नाही',
+'cannotchangeemail' => 'या विà¤\95िवर खात्याचा ईमेल बदलता येत नाही',
'emaildisabled' => 'हे संकेतस्थळ विपत्र पाठवू शकत नाही.',
'accountcreated' => 'खाते उघडले.',
'accountcreatedtext' => '$1 चे सदस्यखाते उघडले.',
'createaccount-title' => '{{SITENAME}} साठीची सदस्य नोंदणी',
'createaccount-text' => 'तुमच्या विपत्र पत्त्याकरिता {{SITENAME}} ($4)वर "$2" नावाच्या कुणी "$3" परवलीने खाते उघडले आहे. कृपया आपण सदस्य प्रवेश करून आपला परवलीचा शब्द बदलावा.
-à¤\9cर हà¥\80 नà¥\8bà¤\82दणà¥\80 à¤\9aà¥\81à¤\95à¥\80ने झाली असेल तर तुम्ही या संदेशाकडे दुर्लक्ष करू शकता.',
+à¤\9cर हà¥\80 नà¥\8bà¤\82दणà¥\80 à¤\9aà¥\81à¤\95िने झाली असेल तर तुम्ही या संदेशाकडे दुर्लक्ष करू शकता.',
'usernamehasherror' => 'सदस्यनामात "हॅश" वर्ण असू शकत नाहीत.',
'login-throttled' => 'तुम्ही प्रवेश करण्यासाठी खूप प्रयत्न केले आहेत.
कृपया पुन्हा प्रयत्न करण्याआधी थांबा',
'newpassword' => 'नवीन परवलीचा शब्द:',
'retypenew' => 'पुन्हा एकदा परवलीचा शब्द',
'resetpass_submit' => 'परवलीचा शब्द टाका आणि प्रवेश करा',
-'resetpass_success' => 'तà¥\81मà¤\9aा परवलà¥\80à¤\9aा शबà¥\8dद बदललà¥\87ला à¤\86हà¥\87! à¤\86ता तà¥\81मà¤\9aा पà¥\8dरवà¥\87श à¤\95रà¥\80त आहोत...',
+'resetpass_success' => 'तà¥\81मà¤\9aा परवलà¥\80à¤\9aा शबà¥\8dद बदललà¥\87ला à¤\86हà¥\87! à¤\86ता तà¥\81मà¤\9aा पà¥\8dरवà¥\87श à¤\95रित आहोत...',
'resetpass_forbidden' => 'परवलीचा शब्द बदलता येत नाही.',
'resetpass-no-info' => 'या पानामध्ये थेट जाण्यासाठी तुम्हाला प्रवेश घ्यावा लागेल.',
'resetpass-submit-loggedin' => 'परवलीचा शब्द बदला',
'passwordreset' => 'परवलीचा शब्द पूर्ववत करा',
'passwordreset-text' => 'तुमच्या खात्याच्या माहितीसंदर्भात विपत्राद्वारे अनुस्मारक येण्यासाठी हा अर्ज पूर्ण भरा.',
'passwordreset-legend' => 'परवलीचा शब्द पूर्ववत करा',
-'passwordreset-disabled' => 'या विà¤\95à¥\80वर परवलीचा शब्द पुनर्स्थापित करता येत नाही.',
+'passwordreset-disabled' => 'या विà¤\95िवर परवलीचा शब्द पुनर्स्थापित करता येत नाही.',
'passwordreset-pretext' => '{{PLURAL:$1||खालील माहितीच्या भागांपैकी एक भाग लिहा}}',
'passwordreset-username' => 'सदस्यनाव:',
'passwordreset-domain' => 'डोमेन',
'passwordreset-capture' => 'ईमेल कशी असेल ते बघायचेय ?',
-'passwordreset-capture-help' => 'या à¤\9aà¥\8cà¤\95à¤\9fित खूण केली तर, ईमेल (तात्पुर्त्या परवली शब्दा सोबत) दखवण्यत व प्रयोगकर्त्त्यस पाठवण्यत येइल',
+'passwordreset-capture-help' => 'या à¤\9aà¥\8cà¤\95à¤\9fà¥\80त खूण केली तर, ईमेल (तात्पुर्त्या परवली शब्दा सोबत) दखवण्यत व प्रयोगकर्त्त्यस पाठवण्यत येइल',
'passwordreset-email' => 'विपत्र पत्ता',
'passwordreset-emailtitle' => '{{SITENAME}} वर खात्याची माहिती',
'passwordreset-emailtext-ip' => 'कुणीतरी (कदाचित तुम्ही, अंकपत्ता $1 कडून) {{SITENAME}} करिता ’नवा परवलीचा शब्दांक पाठवावा’ अशी विनंती केली आहे ($4).
'showdiff' => 'बदल दाखवा',
'anoneditwarning' => "'''इशारा:''' तुम्ही विकिपीडियाचे सदस्य म्हणून प्रवेश (लॉग-इन) केलेला नाही. या पानाच्या संपादन इतिहासात तुमचा अंक पत्ता (आयपी) नोंदला जाईल.",
'anonpreviewwarning' => "\"'''सावधान:''' तुम्ही विकिपीडियाचे सदस्य म्हणून प्रवेश (लॉग-इन) केलेला नाही. या पानाच्या संपादन इतिहासात तुमचा अंकपत्ता (आय.पी. ॲड्रेस) नोंदला जाईल.\"",
-'missingsummary' => "'''à¤\86ठवण:''' तà¥\82मà¥\8dहà¥\80 सà¤\82पादन साराà¤\82श पà¥\81रवलà¥\87ला नाहà¥\80.à¤\86पण à¤\9cतन à¤\95रा वर पà¥\81नà¥\8dहा à¤\9fà¥\80चकी मारली तर तेत्या शिवाय जतन होईल.",
-'missingcommenttext' => 'à¤\95à¥\83पया à¤\96ालà¥\80 पà¥\8dरतिà¤\95à¥\8dरà¥\80या भरा.',
+'missingsummary' => "'''à¤\86ठवण:''' तà¥\81मà¥\8dहà¥\80 सà¤\82पादन साराà¤\82श पà¥\81रवलà¥\87ला नाहà¥\80.à¤\86पण à¤\9cतन à¤\95रा वर पà¥\81नà¥\8dहा à¤\9fिचकी मारली तर तेत्या शिवाय जतन होईल.",
+'missingcommenttext' => 'à¤\95à¥\83पया à¤\96ालà¥\80 पà¥\8dरतिà¤\95à¥\8dरिया भरा.',
'missingcommentheader' => "'''आठवण:''' आपण या लेखनाकरिता विषय किंवा अधोरेषा दिलेली नाही. आपण पुन्हा जतन करा अशी सूचना केली तर, तुमचे संपादन त्याशिवायच जतन होईल.",
'summary-preview' => 'आढाव्याची झलक:',
'subject-preview' => 'विषय/मथळा झलक:',
तुम्ही $1शी संपर्क करू शकता किंवा इतर [[{{MediaWiki:Grouppage-sysop}}|प्रबंधकां पैकी]] एकाशी स्थगनाबद्दल चर्चा करू शकता.
-[[Special:Preferences|सदसà¥\8dय पसà¤\82तà¥\80त]]त शाबà¥\80त विपतà¥\8dर पतà¥\8dता नमà¥\81द à¤\85सलà¥\8dया शिवाय à¤\86णि तà¥\81मà¥\8dहाला तà¥\8b वापरणà¥\8dया पासà¥\82न पà¥\8dरतिबà¤\82धà¥\80त केले असल्यास तुम्ही "या सदस्यास विपत्र पाठवा" सुविधा वापरू शकणार नाही.
+[[Special:Preferences|सदसà¥\8dय पसà¤\82तà¥\80त]]त शाबà¥\80त विपतà¥\8dर पतà¥\8dता नमà¥\82द à¤\85सलà¥\8dया शिवाय à¤\86णि तà¥\81मà¥\8dहाला तà¥\8b वापरणà¥\8dया पासà¥\82न पà¥\8dरतिबà¤\82धित केले असल्यास तुम्ही "या सदस्यास विपत्र पाठवा" सुविधा वापरू शकणार नाही.
-तà¥\81मà¤\9aा सà¥\8dथà¤\97न à¤\95à¥\8dर $5 à¤\86हà¥\87. à¤\95à¥\83पया तà¥\82मà¤\9aà¥\8dया à¤\95à¥\8bणतà¥\8dयाहà¥\80 शà¤\82à¤\95ासमाधाना साठà¥\80 हा à¤\95à¥\8dरà¤\82माà¤\82à¤\95 नमà¥\81द करा.',
+तà¥\81मà¤\9aा सà¥\8dथà¤\97न à¤\95à¥\8dर $5 à¤\86हà¥\87. à¤\95à¥\83पया तà¥\81मà¤\9aà¥\8dया à¤\95à¥\8bणतà¥\8dयाहà¥\80 शà¤\82à¤\95ासमाधाना साठà¥\80 हा à¤\95à¥\8dरà¤\82माà¤\82à¤\95 नमà¥\82द करा.',
'blockednoreason' => 'कारण दिलेले नाही',
'whitelistedittext' => 'लेखांचे संपादन करण्यासाठी आधी $1 करा.',
-'confirmedittext' => 'तà¥\81मà¥\8dहà¥\80 सà¤\82पादनà¥\87 à¤\95रणà¥\8dयापà¥\81र्वी तुमचा विपत्र पत्ता प्रमाणित करणे आवश्यक आहे.Please set and validate तुमचा विपत्र पत्ता तुमच्या[[Special:Preferences|सदस्य पसंती]]तून लिहा व सिद्ध करा.',
+'confirmedittext' => 'तà¥\81मà¥\8dहà¥\80 सà¤\82पादनà¥\87 à¤\95रणà¥\8dयापà¥\82र्वी तुमचा विपत्र पत्ता प्रमाणित करणे आवश्यक आहे.Please set and validate तुमचा विपत्र पत्ता तुमच्या[[Special:Preferences|सदस्य पसंती]]तून लिहा व सिद्ध करा.',
'nosuchsectiontitle' => 'असा विभाग नाही.',
'nosuchsectiontext' => 'तुम्ही अस्तिवात नसलेला विभाग संपादन करण्याचा प्रयत्न केला आहे.',
'loginreqtitle' => 'प्रवेश गरजेचा आहे',
'userjspreview' => "'''तुम्ही तुमची सदस्य जावास्क्रिप्ट तपासत आहात किंवा झलक पहात आहात ,ती अजून जतन केलेली नाही हे लक्षात घ्या!'''",
'sitecsspreview' => "'''तुम्ही तुमच्या सी.एस.एस.ची केवळ झलक पहात आहात, ती अजून जतन केलेली नाही हे लक्षात घ्या.'''",
'sitejspreview' => "'''तुम्ही तुमच्या जावास्क्रिप्टची केवळ झलक पहात आहात, ती अजून जतन केलेली नाही हे लक्षात घ्या.'''",
-'userinvalidcssjstitle' => "'''सावधान:''' \"\$1\" à¤\85शà¥\80 तà¥\8dवà¤\9aा नाहà¥\80.custom .css à¤\86णि .js पानà¥\87 lowercase title वापरतात हà¥\87 लà¤\95à¥\8dषात à¤\98à¥\8dया, à¤\89दा. {{ns:user}}:Foo/vector.css या विरà¥\82द्ध {{ns:user}}:Foo/Vector.css.",
+'userinvalidcssjstitle' => "'''सावधान:''' \"\$1\" à¤\85शà¥\80 तà¥\8dवà¤\9aा नाहà¥\80.custom .css à¤\86णि .js पानà¥\87 lowercase title वापरतात हà¥\87 लà¤\95à¥\8dषात à¤\98à¥\8dया, à¤\89दा. {{ns:user}}:Foo/vector.css या विरà¥\81द्ध {{ns:user}}:Foo/Vector.css.",
'updated' => '(बदल झाला आहे.)',
'note' => "'''सूचना:'''",
'previewnote' => "'''लक्षात ठेवा की ही फक्त झलक आहे''', बदल अजून जतन करण्यात आलेले नाहीत.",
-'continue-editing' => 'सà¤\82पादन à¤\9aालà¥\81 राहुदे',
+'continue-editing' => 'सà¤\82पादन à¤\9aालà¥\82 राहुदे',
'previewconflict' => 'वरील संपादन क्षेत्रातील मजकूर जतन केल्यावर या झलकेप्रमाणे दिसेल.',
-'session_fail_preview' => "'''à¤\95à¥\8dषमसà¥\8dव! सतà¥\8dर विदà¥\87à¤\9aà¥\8dया à¤\95à¥\8dषयामà¥\81ळà¥\87 à¤\86मà¥\8dहà¥\80 तà¥\81मà¤\9aà¥\80 सà¤\82पादन पà¥\8dरà¤\95à¥\8dरà¥\80या पार पाडू शकलो नाही.कृपया पुन्हा प्रयत्न करा.जर एवढ्याने काम झाले नाही तर सदस्य खात्यातून बाहेर पडून पुन्हा प्रवेश करून पहा.'''",
-'session_fail_preview_html' => "'''à¤\95à¥\8dषमसà¥\8dव! सतà¥\8dर विदà¥\87à¤\9aà¥\8dया à¤\95à¥\8dषयामà¥\81ळà¥\87 à¤\86मà¥\8dहà¥\80 तà¥\81मà¤\9aà¥\80 सà¤\82पादन पà¥\8dरà¤\95à¥\8dरà¥\80या पार पाडू शकलो नाही.'''
+'session_fail_preview' => "'''à¤\95à¥\8dषमसà¥\8dव! सतà¥\8dर विदà¥\87à¤\9aà¥\8dया à¤\95à¥\8dषयामà¥\81ळà¥\87 à¤\86मà¥\8dहà¥\80 तà¥\81मà¤\9aà¥\80 सà¤\82पादन पà¥\8dरà¤\95à¥\8dरिया पार पाडू शकलो नाही.कृपया पुन्हा प्रयत्न करा.जर एवढ्याने काम झाले नाही तर सदस्य खात्यातून बाहेर पडून पुन्हा प्रवेश करून पहा.'''",
+'session_fail_preview_html' => "'''à¤\95à¥\8dषमसà¥\8dव! सतà¥\8dर विदà¥\87à¤\9aà¥\8dया à¤\95à¥\8dषयामà¥\81ळà¥\87 à¤\86मà¥\8dहà¥\80 तà¥\81मà¤\9aà¥\80 सà¤\82पादन पà¥\8dरà¤\95à¥\8dरिया पार पाडू शकलो नाही.'''
''कारण {{SITENAME}}चे कच्चे HTML चालू ठेवले आहे, जावास्क्रिप्ट हल्ल्यांपासून बचाव व्हावा म्हणून झलक लपवली आहे.''
असे कदाचित तुम्ही अनामिक proxy वापरत असल्याने होऊ शकते.'''",
'edit_form_incomplete' => '”’तुमच्या संपादनाचा काही भाग सर्व्हरपर्यंत पोचला नाही; तुमचे संपादन पूर्ण आहे का याची पुन्हा खात्री करा.',
'editing' => '$1 चे संपादन होत आहे.',
-'creating' => '$1 à¤\9aà¥\80 निरà¥\8dमितà¥\80 सà¥\81रà¥\81 आहे',
+'creating' => '$1 à¤\9aà¥\80 निरà¥\8dमितà¥\80 सà¥\81रà¥\82 आहे',
'editingsection' => '$1 (विभाग) संपादन',
'editingcomment' => '$1 चे संपादन (प्रतिक्रिया)',
'editconflict' => 'वादग्रस्त संपादन: $1',
'''केवळ''' वरील पाठ्यभागामध्ये असलेले पाठ्य साठविण्यात येईल जर तुम्ही \"{{int:savearticle}}\" ही कळ दाबली.",
'yourtext' => 'तुमचे पाठ्य',
'storedversion' => 'साठविलेली आवृत्ती',
-'nonunicodebrowser' => "'''सावधान: तà¥\81मà¤\9aा विà¤\9aरà¤\95 यà¥\82निà¤\95à¥\8bड à¤\86धारà¥\80त नाहà¥\80. ASCII नसलà¥\87लà¥\80 à¤\85à¤\95à¥\8dषरà¤\9aिनà¥\8dहà¥\87 सà¤\82पादन à¤\96िडà¤\95à¥\80त सà¥\8bळाà¤\85à¤\82à¤\95à¥\80 à¤\95à¥\82à¤\9fसà¤\82à¤\95à¥\87त (हà¥\87à¤\95à¥\8dà¤\9dाडà¥\87सà¥\80मल à¤\95à¥\8bड) सà¥\8dवरà¥\82पात दिसणà¥\8dयाà¤\9aà¥\80, सà¥\81रà¤\95à¥\8dषà¥\80तपणे संपादन करू देणारी, पळवाट उपलब्ध आहे.'''",
-'editingold' => "'''à¤\87शारा: तà¥\81मà¥\8dहà¥\80 मà¥\82ळ पà¥\83षà¥\8dठाà¤\9aà¥\80 à¤\8fà¤\95 à¤\95ालबाहà¥\8dय à¤\86वà¥\83तà¥\8dतà¥\80 सà¤\82पादित à¤\95रà¥\80त आहात.
+'nonunicodebrowser' => "'''सावधान: तà¥\81मà¤\9aा विà¤\9aरà¤\95 यà¥\81निà¤\95à¥\8bड à¤\86धारित नाहà¥\80. ASCII नसलà¥\87लà¥\80 à¤\85à¤\95à¥\8dषरà¤\9aिनà¥\8dहà¥\87 सà¤\82पादन à¤\96िडà¤\95à¥\80त सà¥\8bळाà¤\85à¤\82à¤\95à¥\80 à¤\95à¥\82à¤\9fसà¤\82à¤\95à¥\87त (हà¥\87à¤\95à¥\8dà¤\9dाडà¥\87सà¥\80मल à¤\95à¥\8bड) सà¥\8dवरà¥\82पात दिसणà¥\8dयाà¤\9aà¥\80, सà¥\81रà¤\95à¥\8dषितपणे संपादन करू देणारी, पळवाट उपलब्ध आहे.'''",
+'editingold' => "'''à¤\87शारा: तà¥\81मà¥\8dहà¥\80 मà¥\82ळ पà¥\83षà¥\8dठाà¤\9aà¥\80 à¤\8fà¤\95 à¤\95ालबाहà¥\8dय à¤\86वà¥\83तà¥\8dतà¥\80 सà¤\82पादित à¤\95रित आहात.
जर आपण बदल साठवून ठेवण्यात आले तर या नंतरच्या सर्व आवृत्त्यांमधील साठविण्यात आलेले बदल नष्ठ होतील.'''",
'yourdiff' => 'फरक',
-'copyrightwarning' => "{{SITENAME}} यà¥\87थà¥\87 à¤\95à¥\87लà¥\87लà¥\87 à¤\95à¥\8bणतà¥\87हà¥\80 लà¥\87à¤\96न $2 (à¤\85धिà¤\95 माहितà¥\80साठà¥\80 $1 पहा) à¤\85à¤\82तरà¥\8dà¤\97त मà¥\81à¤\95à¥\8dत à¤\89दà¥\8dà¤\98à¥\8bषित à¤\95à¥\87लà¥\87 à¤\86हà¥\87 à¤\85सà¥\87 à¤\97à¥\83हित धरले जाईल याची कृपया नोंद घ्यावी. आपणास आपल्या लेखनाचे मुक्त संपादन आणि मुक्त वितरण होणे पसंत नसेल तर येथे संपादन करू नये.<br />
-तà¥\81मà¥\8dहà¥\80 यà¥\87थà¥\87 लà¥\87à¤\96न à¤\95रताना हà¥\87 सà¥\81दà¥\8dधा à¤\97à¥\83हित धरलà¥\87लà¥\87 à¤\85सतà¥\87 à¤\95à¥\80 यà¥\87थà¥\87 à¤\95à¥\87लà¥\87लà¥\87 लà¥\87à¤\96न तà¥\81मà¤\9aà¥\87 सà¥\8dवतà¤\83à¤\9aà¥\87 à¤\86णि à¤\95à¥\87वळ सà¥\8dवतà¤\83à¤\9aà¥\8dया पà¥\8dरताधिà¤\95ार (à¤\95à¥\89पà¥\80राà¤\88à¤\9f) मालà¤\95à¥\80à¤\9aà¥\87 à¤\86हà¥\87 à¤\95िà¤\82वा पà¥\8dरताधिà¤\95ारानà¥\87 à¤\97ठà¥\80त न होणाऱ्या सार्वजनिक ज्ञानक्षेत्रातून घेतले आहे किंवा तत्सम मुक्त स्रोतातून घेतले आहे. तुम्ही संपादन करताना तसे वचन देत आहात. '''प्रताधिकारयुक्त लेखन सुयोग्य परवानगीशिवाय मुळीच चढवू/भरू नये!'''",
+'copyrightwarning' => "{{SITENAME}} यà¥\87थà¥\87 à¤\95à¥\87लà¥\87लà¥\87 à¤\95à¥\8bणतà¥\87हà¥\80 लà¥\87à¤\96न $2 (à¤\85धिà¤\95 माहितà¥\80साठà¥\80 $1 पहा) à¤\85à¤\82तरà¥\8dà¤\97त मà¥\81à¤\95à¥\8dत à¤\89दà¥\8dà¤\98à¥\8bषित à¤\95à¥\87लà¥\87 à¤\86हà¥\87 à¤\85सà¥\87 à¤\97à¥\83हà¥\80त धरले जाईल याची कृपया नोंद घ्यावी. आपणास आपल्या लेखनाचे मुक्त संपादन आणि मुक्त वितरण होणे पसंत नसेल तर येथे संपादन करू नये.<br />
+तà¥\81मà¥\8dहà¥\80 यà¥\87थà¥\87 लà¥\87à¤\96न à¤\95रताना हà¥\87 सà¥\81दà¥\8dधा à¤\97à¥\83हà¥\80त धरलà¥\87लà¥\87 à¤\85सतà¥\87 à¤\95à¥\80 यà¥\87थà¥\87 à¤\95à¥\87लà¥\87लà¥\87 लà¥\87à¤\96न तà¥\81मà¤\9aà¥\87 सà¥\8dवतà¤\83à¤\9aà¥\87 à¤\86णि à¤\95à¥\87वळ सà¥\8dवतà¤\83à¤\9aà¥\8dया पà¥\8dरताधिà¤\95ार (à¤\95à¥\89पà¥\80राà¤\88à¤\9f) मालà¤\95à¥\80à¤\9aà¥\87 à¤\86हà¥\87 à¤\95िà¤\82वा पà¥\8dरताधिà¤\95ारानà¥\87 à¤\97ठित न होणाऱ्या सार्वजनिक ज्ञानक्षेत्रातून घेतले आहे किंवा तत्सम मुक्त स्रोतातून घेतले आहे. तुम्ही संपादन करताना तसे वचन देत आहात. '''प्रताधिकारयुक्त लेखन सुयोग्य परवानगीशिवाय मुळीच चढवू/भरू नये!'''",
'copyrightwarning2' => "{{SITENAME}} येथे केलेले कोणतेही लेखन हे इतर संपादकांकरवी बदलले अथवा काढले जाऊ शकते. जर आपणास आपल्या लेखनाचे मुक्त संपादन होणे पसंत नसेल तर येथे संपादन करू नये.<br />
-तà¥\81मà¥\8dहà¥\80 यà¥\87थà¥\87 लà¥\87à¤\96न à¤\95रताना हà¥\87 सà¥\81दà¥\8dधा à¤\97à¥\83हित धरलà¥\87लà¥\87 à¤\85सतà¥\87 à¤\95à¥\80 यà¥\87थà¥\87 à¤\95à¥\87लà¥\87लà¥\87 लà¥\87à¤\96न तà¥\81मà¤\9aà¥\87 सà¥\8dवतà¤\83à¤\9aà¥\87 à¤\86णि à¤\95à¥\87वळ सà¥\8dवतà¤\83à¤\9aà¥\8dया पà¥\8dरताधिà¤\95ार (à¤\95à¥\89पà¥\80राà¤\88à¤\9f) मालà¤\95à¥\80à¤\9aà¥\87 à¤\86हà¥\87 à¤\95िà¤\82वा पà¥\8dरताधिà¤\95ारानà¥\87 à¤\97ठà¥\80त न होणाऱ्या सार्वजनिक ज्ञानक्षेत्रातून घेतले आहे किंवा तत्सम मुक्त स्रोतातून घेतले आहे. तुम्ही संपादन करताना तसे वचन देत आहात (अधिक माहितीसाठी $1 पहा). '''प्रताधिकारयुक्त लेखन सुयोग्य परवानगीशिवाय मुळीच चढवू/भरू नये!'''",
-'longpageerror' => 'तà¥\8dरà¥\82à¤\9fà¥\80:à¤\86पण दिलà¥\87ला मà¤\9cà¤\95à¥\81र जास्तीत जास्त शक्य {{PLURAL:$2|one किलोबाईट|$2 किलोबाईट}} पेक्षा अधिक लांबीचा {{PLURAL:$1|one किलोबाईट|$1 किलोबाईट}} आहे.तो जतन केला जाऊ शकत नाही',
-'readonlywarning' => "सावधान:विदाà¤\97ारास à¤à¤°à¤£-पà¥\8bषणाà¤\95रिता ताळà¥\87 ठà¥\8bà¤\95लà¥\87 à¤\86हà¥\87,तà¥\8dयामà¥\81ळà¥\87 सधà¥\8dया तà¥\81मà¥\8dहà¥\80 तà¥\81मà¤\9aà¥\87 सà¤\82पादन à¤\9cतन à¤\95रà¥\82 शà¤\95त नाहà¥\80.à¤\9cर तà¥\81मà¥\8dहाला हवà¥\87 à¤\85सà¥\87ल तर नà¤\82तर à¤\89पयà¥\8bà¤\97 à¤\95रणà¥\8dयाà¤\9aà¥\8dया दà¥\83षà¥\8dà¤\9fà¥\80नà¥\87, तà¥\81मà¥\8dहà¥\80 मà¤\9cà¤\95à¥\81र ’मजकुर संचिकेत’(टेक्स्ट फाईल मध्ये) कापून-चिटकवू शकता.'''
-विदाà¤\97ारास ताळà¥\87 ठà¥\8bà¤\95लà¥\87लà¥\8dया पà¥\8dरà¤\9aालà¤\95ाà¤\82नà¥\80 $1 à¤\85सà¥\87 सà¥\8dपषà¥\8dà¤\9fà¥\80à¤\95रणà¥\87 दà¥\80ले आहे",
-'protectedpagewarning' => "'''सà¥\82à¤\9aना: हà¥\87 सà¥\81रà¤\95à¥\8dषित पान à¤\86हà¥\87. फà¤\95à¥\8dत पà¥\8dरà¤\9aालà¤\95 याà¤\9aà¥\8dयात बदल à¤\95रà¥\81 शकतात.'''",
+तà¥\81मà¥\8dहà¥\80 यà¥\87थà¥\87 लà¥\87à¤\96न à¤\95रताना हà¥\87 सà¥\81दà¥\8dधा à¤\97à¥\83हà¥\80त धरलà¥\87लà¥\87 à¤\85सतà¥\87 à¤\95à¥\80 यà¥\87थà¥\87 à¤\95à¥\87लà¥\87लà¥\87 लà¥\87à¤\96न तà¥\81मà¤\9aà¥\87 सà¥\8dवतà¤\83à¤\9aà¥\87 à¤\86णि à¤\95à¥\87वळ सà¥\8dवतà¤\83à¤\9aà¥\8dया पà¥\8dरताधिà¤\95ार (à¤\95à¥\89पà¥\80राà¤\88à¤\9f) मालà¤\95à¥\80à¤\9aà¥\87 à¤\86हà¥\87 à¤\95िà¤\82वा पà¥\8dरताधिà¤\95ारानà¥\87 à¤\97ठित न होणाऱ्या सार्वजनिक ज्ञानक्षेत्रातून घेतले आहे किंवा तत्सम मुक्त स्रोतातून घेतले आहे. तुम्ही संपादन करताना तसे वचन देत आहात (अधिक माहितीसाठी $1 पहा). '''प्रताधिकारयुक्त लेखन सुयोग्य परवानगीशिवाय मुळीच चढवू/भरू नये!'''",
+'longpageerror' => 'तà¥\8dरà¥\82à¤\9fà¥\80:à¤\86पण दिलà¥\87ला मà¤\9cà¤\95à¥\82र जास्तीत जास्त शक्य {{PLURAL:$2|one किलोबाईट|$2 किलोबाईट}} पेक्षा अधिक लांबीचा {{PLURAL:$1|one किलोबाईट|$1 किलोबाईट}} आहे.तो जतन केला जाऊ शकत नाही',
+'readonlywarning' => "सावधान:विदाà¤\97ारास à¤à¤°à¤£-पà¥\8bषणाà¤\95रिता ताळà¥\87 ठà¥\8bà¤\95लà¥\87 à¤\86हà¥\87,तà¥\8dयामà¥\81ळà¥\87 सधà¥\8dया तà¥\81मà¥\8dहà¥\80 तà¥\81मà¤\9aà¥\87 सà¤\82पादन à¤\9cतन à¤\95रà¥\82 शà¤\95त नाहà¥\80.à¤\9cर तà¥\81मà¥\8dहाला हवà¥\87 à¤\85सà¥\87ल तर नà¤\82तर à¤\89पयà¥\8bà¤\97 à¤\95रणà¥\8dयाà¤\9aà¥\8dया दà¥\83षà¥\8dà¤\9fà¥\80नà¥\87, तà¥\81मà¥\8dहà¥\80 मà¤\9cà¤\95à¥\82र ’मजकुर संचिकेत’(टेक्स्ट फाईल मध्ये) कापून-चिटकवू शकता.'''
+विदाà¤\97ारास ताळà¥\87 ठà¥\8bà¤\95लà¥\87लà¥\8dया पà¥\8dरà¤\9aालà¤\95ाà¤\82नà¥\80 $1 à¤\85सà¥\87 सà¥\8dपषà¥\8dà¤\9fà¥\80à¤\95रणà¥\87 दिले आहे",
+'protectedpagewarning' => "'''सà¥\82à¤\9aना: हà¥\87 सà¥\81रà¤\95à¥\8dषित पान à¤\86हà¥\87. फà¤\95à¥\8dत पà¥\8dरà¤\9aालà¤\95 याà¤\9aà¥\8dयात बदल à¤\95रà¥\82 शकतात.'''",
'semiprotectedpagewarning' => "'''सूचना:''' हे पान सुरक्षित आहे. फक्त नोंदणीकृत सदस्य याच्यात बदल करू शकतात.",
'cascadeprotectedwarning' => "'''सावधान:''' हे पान निम्न-लिखीत शिडी-प्रतिबंधीत {{PLURAL:$1|पानात|पानात}} आंतरभूत असल्यामुळे,केवळ प्रचालक सुविधाप्राप्त सदस्यांनाच संपादन करता यावे असे ताळे त्यास ठोकलेले आहे :",
'titleprotectedwarning' => "”’सावधान: फक्त काही सदस्यानांच [[Special:ListGroupRights|विशेष आधिकार]] तयार करता यावे म्हणून ह्या पानास ताळे आहे.'''",
'content-model-css' => 'सीएसएस',
# Parser/template warnings
-'expensive-parserfunction-warning' => 'â\80\9dâ\80\99à¤\87शारा:â\80\9dâ\80\99 या पानावर à¤\96à¥\82प सारà¥\87 à¤\96रà¥\8dà¤\9aिक पृथक्करण क्रिया कॉल्स आहेत.
+'expensive-parserfunction-warning' => 'â\80\9dâ\80\99à¤\87शारा:â\80\9dâ\80\99 या पानावर à¤\96à¥\82प सारà¥\87 à¤\96रà¥\8dà¤\9aà¥\80क पृथक्करण क्रिया कॉल्स आहेत.
ते $2{{PLURAL:$2|कॉल|कॉल्स}} पेक्षा कमी असायला हवेत, सध्या $1{{PLURAL:$1| $1 कॉल| $1 कॉल्स}} एवढे आहेत.',
-'expensive-parserfunction-category' => 'à¤\96à¥\82प सारà¥\87 à¤\96रà¥\8dà¤\9aिक पार्सर क्रिया कॉल्स असणारी पाने',
+'expensive-parserfunction-category' => 'à¤\96à¥\82प सारà¥\87 à¤\96रà¥\8dà¤\9aà¥\80क पार्सर क्रिया कॉल्स असणारी पाने',
'post-expand-template-inclusion-warning' => 'सूचना: साचे वाढविण्याची मर्यादा संपलेली आहे.
काही साचे वगळले जातील.',
'post-expand-template-inclusion-category' => 'अशी पाने ज्यांच्यावर साचे चढविण्याची मर्यादा संपलेली आहे',
'language-converter-depth-warning' => 'भाषा रुपांतरण खोली मर्यादा ओलांडली ($1)',
# "Undo" feature
-'undo-success' => 'सà¤\82पादन परतवलà¥\87 à¤\9cाà¤\8a शà¤\95तà¥\87.à¤\95à¥\83पया, à¤\86पण नà¥\87मà¤\95à¥\87 हà¥\87à¤\9a à¤\95रà¥\82 à¤\87à¤\9aà¥\8dà¤\9bà¥\80ता हà¥\87 à¤\96ालà¥\80 दिलà¥\87लà¥\80 तà¥\81लना पाहà¥\82 निशà¥\8dà¤\9aà¥\80त à¤\95रा,à¤\86णि नà¤\82तर सà¤\82पादन परतवणà¥\8dयाà¤\9aà¥\87 à¤\95ाम पà¥\82रà¥\8dण à¤\95रणà¥\8dयाà¤\95रिता à¤\87à¤\9aà¥\8dà¤\9bà¥\80त बद्ल जतन करा.',
+'undo-success' => 'सà¤\82पादन परतवलà¥\87 à¤\9cाà¤\8a शà¤\95तà¥\87.à¤\95à¥\83पया, à¤\86पण नà¥\87मà¤\95à¥\87 हà¥\87à¤\9a à¤\95रà¥\82 à¤\87à¤\9aà¥\8dà¤\9bिता हà¥\87 à¤\96ालà¥\80 दिलà¥\87लà¥\80 तà¥\81लना पाहà¥\82 निशà¥\8dà¤\9aित à¤\95रा,à¤\86णि नà¤\82तर सà¤\82पादन परतवणà¥\8dयाà¤\9aà¥\87 à¤\95ाम पà¥\82रà¥\8dण à¤\95रणà¥\8dयाà¤\95रिता à¤\87à¤\9aà¥\8dà¤\9bित बद्ल जतन करा.',
'undo-failure' => 'दरम्यान परस्पर विरोधी संपादने झाल्यामुळे आपण हे संपादन परतवू शकत नाही.',
'undo-norev' => 'हे संपादन परतविता आलेले नाही कारण ते अगोदरच उलटविलेले किंवा वगळलेले आहे.',
'undo-summary' => '[[Special:Contributions/$2|$2]] ([[User talk:$2|चर्चा]])यांची आवृत्ती $1 परतवली.',
# Account creation failure
'cantcreateaccounttitle' => 'खाते उघडू शकत नाही',
-'cantcreateaccount-text' => "('''$1''')या à¤\86à¤\82तरà¤\9cाल à¤\85à¤\82à¤\95पतà¥\8dतà¥\8dयाà¤\95डà¥\82नà¤\9aà¥\8dया à¤\96ातà¥\87 निरà¥\8dमà¥\80तीस [[User:$3|$3]]ने अटकाव केला आहे.
+'cantcreateaccount-text' => "('''$1''')या à¤\86à¤\82तरà¤\9cाल à¤\85à¤\82à¤\95पतà¥\8dतà¥\8dयाà¤\95डà¥\82नà¤\9aà¥\8dया à¤\96ातà¥\87 निरà¥\8dमितीस [[User:$3|$3]]ने अटकाव केला आहे.
$3ने ''$2'' कारण दिले आहे.",
[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} वगळल्याच्या नोंदीत]निर्देश असण्याची शक्यता आहे",
'rev-deleted-text-unhide' => "या पानाचे संस्करण '''वगळले'''.
[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} वगळलेल्या नोंदी] येथे याची माहिती मिळेल.
-à¤\9cर à¤\86पणास पà¥\81ढà¥\87 à¤\9cावयाà¤\9aà¥\87 à¤\85सलà¥\8dयास, à¤\85à¤\9cà¥\82नहà¥\80 [$1 हà¥\87 सà¤\82सà¥\8dà¤\95रण बà¤\98à¥\81 शकता].",
+à¤\9cर à¤\86पणास पà¥\81ढà¥\87 à¤\9cावयाà¤\9aà¥\87 à¤\85सलà¥\8dयास, à¤\85à¤\9cà¥\82नहà¥\80 [$1 हà¥\87 सà¤\82सà¥\8dà¤\95रण बà¤\98à¥\82 शकता].",
'rev-suppressed-text-unhide' => "या पानाचे संस्करण '''दडपले'''.
[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} दडपलेले क्रमलेख] येथे याची माहिती मिळेल.
-à¤\9cर à¤\86पणास पà¥\81ढà¥\87 à¤\9cावयाà¤\9aà¥\87 à¤\85सलà¥\8dयास, à¤\85à¤\9cà¥\82नहà¥\80 [$1 हà¥\87 सà¤\82सà¥\8dà¤\95रण बà¤\98à¥\81 शकता].",
-'rev-deleted-text-view' => "या पानाà¤\9aि आवृत्ती '''वगळण्यात आली आहे'''.
-हà¥\87 तà¥\81मà¥\8dहि बà¤\98à¥\81 शà¤\95ता; महिति हि तुम्हाला इथे सपदेल् [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} कधुन तकले आहे].",
+à¤\9cर à¤\86पणास पà¥\81ढà¥\87 à¤\9cावयाà¤\9aà¥\87 à¤\85सलà¥\8dयास, à¤\85à¤\9cà¥\82नहà¥\80 [$1 हà¥\87 सà¤\82सà¥\8dà¤\95रण बà¤\98à¥\82 शकता].",
+'rev-deleted-text-view' => "या पानाà¤\9aà¥\80 आवृत्ती '''वगळण्यात आली आहे'''.
+हà¥\87 तà¥\81मà¥\8dहà¥\80 बà¤\98à¥\82 शà¤\95ता; महिति हà¥\80 तुम्हाला इथे सपदेल् [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} कधुन तकले आहे].",
'rev-suppressed-text-view' => "या पानाची आवृत्ती '''दडपली'''.
-à¤\86पण हà¥\87 बà¤\98à¥\81 शकता; [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} दडपलेल्यांचा क्रमलेख] येथे त्याची विस्तृत माहिती सापडेल.",
-'rev-deleted-no-diff' => "à¤\86पण यातà¥\80ल फरà¤\95 बà¤\98à¥\81 शकत नाही कारण त्यापैकी एक संस्करण '''वगळले''' आहे.
+à¤\86पण हà¥\87 बà¤\98à¥\82 शकता; [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} दडपलेल्यांचा क्रमलेख] येथे त्याची विस्तृत माहिती सापडेल.",
+'rev-deleted-no-diff' => "à¤\86पण यातà¥\80ल फरà¤\95 बà¤\98à¥\82 शकत नाही कारण त्यापैकी एक संस्करण '''वगळले''' आहे.
[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} वगळल्याचा क्रमलेख] येथे त्याची विस्तृत माहिती सापडेल.",
'rev-suppressed-no-diff' => 'तुम्ही हा फरक पाहू शकत नाही कारण या आवृत्त्यांमधील एक संस्करण ”’वगळण्यात आले आहे.”’',
'rev-deleted-unhide-diff' => "या पेज चे रिविषन '''रीक्त करन्यात आले आहे'''.
महिती एथे सुद्धा मीलु शकेल [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} रीक्क्त कर्न्यात आले आहे].
-तà¥\81मà¥\8dमà¥\8dहि à¤\86तà¥\8dता सà¥\81दà¥\8dधा [$1 फरà¤\95 बà¤\98ा] à¤\9cर तà¥\81मà¥\8dहि चलु थेउ ईच्चुक असाल तर.",
+तà¥\81मà¥\8dमà¥\8dहि à¤\86तà¥\8dता सà¥\81दà¥\8dधा [$1 फरà¤\95 बà¤\98ा] à¤\9cर तà¥\81मà¥\8dहà¥\80 चलु थेउ ईच्चुक असाल तर.",
'rev-suppressed-unhide-diff' => "या पेज चे रिविषन '''रीक्त करन्यात आले आहे'''.
महिती एथे सुद्धा मीलु शकेल [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} रीक्क्त कर्न्यात आले आहे].
-तà¥\81मà¥\8dमà¥\8dहि तरà¥\80 सà¥\81दà¥\8dधा [$1 हा फरà¤\95 à¤\93लà¤\96ा] à¤\9cर तà¥\81मà¥\8dहि चलु थेउ ईच्चुक असाल तर.",
+तà¥\81मà¥\8dमà¥\8dहि तरà¥\80 सà¥\81दà¥\8dधा [$1 हा फरà¤\95 à¤\93लà¤\96ा] à¤\9cर तà¥\81मà¥\8dहà¥\80 चलु थेउ ईच्चुक असाल तर.",
'rev-deleted-diff-view' => "या पेज चे रिविषन '''रीक्त करन्यात आले आहे'''.
-तà¥\81मà¥\8dमà¥\8dहà¥\80 हा फरà¤\95 बà¤\98à¥\81 शकता ; माहिती यात मीलु शकेल [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} रिक्क्त केलेली महिती].",
+तà¥\81मà¥\8dमà¥\8dहà¥\80 हा फरà¤\95 बà¤\98à¥\82 शकता ; माहिती यात मीलु शकेल [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} रिक्क्त केलेली महिती].",
'rev-suppressed-diff-view' => "या पेज चे रिविषन '''रीक्त करन्यात आले आहे'''.
-तà¥\81मà¥\8dमà¥\8dहà¥\80 हा फरà¤\95 बà¤\98à¥\81 शà¤\95ता ; माहितà¥\80 यात मà¥\80लà¥\81 शà¤\95à¥\87ल [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} à¤\9cर तà¥\81मà¥\8dहि चलु थेउ ईच्चुक असाल तर].",
+तà¥\81मà¥\8dमà¥\8dहà¥\80 हा फरà¤\95 बà¤\98à¥\82 शà¤\95ता ; माहितà¥\80 यात मà¥\80लà¥\81 शà¤\95à¥\87ल [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} à¤\9cर तà¥\81मà¥\8dहà¥\80 चलु थेउ ईच्चुक असाल तर].",
'rev-delundel' => 'दाखवा/लपवा',
'rev-showdeleted' => 'दाखवा',
'revisiondelete' => 'आवर्तने वगळा/पुनर्स्थापित करा',
'revdelete-nooldid-title' => 'अपेक्षीत आवृत्ती दिलेली नाही',
-'revdelete-nooldid-text' => '!!à¤\86पण हà¥\80 à¤\95à¥\83तà¥\80 à¤\95रावयाà¤\9aà¥\80 à¤\86वरà¥\8dतनà¥\87 सà¥\82à¤\9aà¥\80मधà¥\8dयà¥\87 à¤\95à¥\87लà¥\87लà¥\80 नाहà¥\80त, दिलà¥\87लà¥\87 à¤\86वरà¥\8dतन à¤\85सà¥\8dतितà¥\8dवात नाहà¥\80, à¤\95िà¤\82वा तà¥\81मà¥\8dहà¥\80 सधà¥\8dयाà¤\9aà¥\87 à¤\86वरà¥\8dतन लपविणà¥\8dयाà¤\9aा पà¥\8dरयतà¥\8dन à¤\95रà¥\80त आहात.',
+'revdelete-nooldid-text' => '!!à¤\86पण हà¥\80 à¤\95à¥\83तà¥\80 à¤\95रावयाà¤\9aà¥\80 à¤\86वरà¥\8dतनà¥\87 सà¥\82à¤\9aà¥\80मधà¥\8dयà¥\87 à¤\95à¥\87लà¥\87लà¥\80 नाहà¥\80त, दिलà¥\87लà¥\87 à¤\86वरà¥\8dतन à¤\85सà¥\8dतितà¥\8dवात नाहà¥\80, à¤\95िà¤\82वा तà¥\81मà¥\8dहà¥\80 सधà¥\8dयाà¤\9aà¥\87 à¤\86वरà¥\8dतन लपविणà¥\8dयाà¤\9aा पà¥\8dरयतà¥\8dन à¤\95रित आहात.',
'revdelete-nologtype-title' => 'कोणताही क्रमलेखप्रकार दिलेला नाही',
'revdelete-nologtype-text' => 'ही क्रिया करण्यासाठी तुम्ही यादीप्रकार निवडला नाही.',
'revdelete-nologid-title' => 'अवैध क्रमलेख प्रविष्टी',
'logdelete-selected' => "'''{{PLURAL:$1|निवडलेली नोंदीकृत घटना|निवडलेल्या नोंदीकृत घटना}}:'''",
'revdelete-text' => "'''वगळलेल्या नोंदी आणि घटना अजूनही पानाच्या इतिहासात आणि नोंदीत आढळेल,परंतु मजकुराचा भाग सार्वजनिक स्वरूपात उपलब्ध राहणार नाही.'''
-à¤\85à¤\9cà¥\82न à¤\87तर पà¥\8dरतिबà¤\82ध à¤\98ातलà¥\8dया शिवाय {{SITENAME}}à¤\9aà¥\87 à¤\87तर पà¥\8dरबà¤\82धà¤\95 à¤\9dाà¤\95लà¥\87ला मà¤\9cà¤\95à¥\81र याच दुव्याने परतवू शकतील.",
-'revdelete-confirm' => 'à¤\95à¥\83पया याà¤\9aà¥\80 à¤\96ातà¥\8dरà¥\80 à¤\95रा à¤\95à¥\80 तà¥\81मà¥\8dहà¥\80 à¤\9cà¥\87 à¤\95रà¥\80त आहात, त्याचे परिणाम जाणत आहात, आणि ते [[{{MediaWiki:Policy-url}}|मीडियाविकीच्या नीती]]नुसार आहे काय?',
+à¤\85à¤\9cà¥\82न à¤\87तर पà¥\8dरतिबà¤\82ध à¤\98ातलà¥\8dया शिवाय {{SITENAME}}à¤\9aà¥\87 à¤\87तर पà¥\8dरबà¤\82धà¤\95 à¤\9dाà¤\95लà¥\87ला मà¤\9cà¤\95à¥\82र याच दुव्याने परतवू शकतील.",
+'revdelete-confirm' => 'à¤\95à¥\83पया याà¤\9aà¥\80 à¤\96ातà¥\8dरà¥\80 à¤\95रा à¤\95à¥\80 तà¥\81मà¥\8dहà¥\80 à¤\9cà¥\87 à¤\95रित आहात, त्याचे परिणाम जाणत आहात, आणि ते [[{{MediaWiki:Policy-url}}|मीडियाविकीच्या नीती]]नुसार आहे काय?',
'revdelete-suppress-text' => "लपवण्याचा वापर '''फक्त''' पुढील बाबतीत होतो:
* अनुपयोगी माहिती
* अयोग्य व्यक्तिगत माहिती
*: ''गृहपत्ते, दूरध्वनी क्रमांक व सामाजिक सुरक्षा क्रमांक''",
'revdelete-legend' => 'दृश्य बंधने निश्चित करा',
-'revdelete-hide-text' => 'à¤\86वरà¥\8dतà¥\80त मà¤\9cà¤\95à¥\81र लपवा',
-'revdelete-hide-image' => 'सà¤\82à¤\9aिà¤\95ा मà¤\9cà¤\95à¥\81र लपवा',
+'revdelete-hide-text' => 'à¤\86वरà¥\8dतà¥\80त मà¤\9cà¤\95à¥\82र लपवा',
+'revdelete-hide-image' => 'सà¤\82à¤\9aिà¤\95ा मà¤\9cà¤\95à¥\82र लपवा',
'revdelete-hide-name' => 'कृती आणि लक्ष्य लपवा',
'revdelete-hide-comment' => 'संपादन संक्षेप लपवा',
'revdelete-hide-user' => 'संपादकाचे सदस्यनाव/आयपी अंकपत्ता लपवा',
** अनुपयोगी माहिती',
'revdelete-otherreason' => 'इतर / आणखी कारण:',
'revdelete-reasonotherlist' => 'इतर कारणे',
-'revdelete-edit-reasonlist' => 'वà¤\97ळणà¥\8dयाà¤\9aà¥\80 à¤\95ारणà¥\87 सà¤\82पादà¥\80त करा',
+'revdelete-edit-reasonlist' => 'वà¤\97ळणà¥\8dयाà¤\9aà¥\80 à¤\95ारणà¥\87 सà¤\82पादित करा',
'revdelete-offender' => 'आवर्तन निर्माता:',
# Suppression log
'suppressionlog' => 'सप्रेशन नोंद',
'suppressionlogtext' => 'खालील यादी ही रिक्क्त आनी ब्लोक त्याचे प्रकार हे आड्मिनिस्ट्रेटर्स पासून चुपे असतात.
-हà¥\87 बà¤\98ा [[Special:BlockList|IP block list]] सदà¥\8dधà¥\8dया à¤\9aालà¥\81 à¤\85सलà¥\87लà¥\87 à¤\93परà¥\87शà¥\8dनल बनà¥\8dस à¤\86णà¥\80 ब्लोच्क्स.',
+हà¥\87 बà¤\98ा [[Special:BlockList|IP block list]] सदà¥\8dधà¥\8dया à¤\9aालà¥\82 à¤\85सलà¥\87लà¥\87 à¤\93परà¥\87शà¥\8dनल बनà¥\8dस à¤\86णि ब्लोच्क्स.',
# History merging
-'mergehistory' => 'पान à¤\88तिहासाà¤\82à¤\9aà¥\87 à¤\8fà¤\95तà¥\8dरिकरण करा',
+'mergehistory' => 'पान à¤\88तिहासाà¤\82à¤\9aà¥\87 à¤\8fà¤\95तà¥\8dरà¥\80करण करा',
'mergehistory-header' => 'हे पान एका स्रोत पानाचा इतिहास एखाद्या नवीन पानात समाविष्ट करू देते.
हा बदल पानाचे ऐतिहासिक सातत्य राखेल याची दक्षता घ्या.',
'mergehistory-box' => 'दोन पानांची आवर्तने संमिलीत करा:',
'mergehistory-from' => 'स्रोत पान:',
'mergehistory-into' => 'लक्ष्य पान:',
'mergehistory-list' => 'गोळाबेरीज करण्याजोगा संपादन इतिहास',
-'mergehistory-merge' => '[[:$1]]à¤\9aà¥\80 पà¥\82ढà¥\80ल à¤\86वरà¥\8dतनà¥\87 [[:$2]]मधà¥\8dयà¥\87 à¤\8fà¤\95तà¥\8dरित à¤\95रता यà¥\87तà¥\80ल.ठराविà¤\95 वà¥\87ळà¥\80 à¤\85थवा ततà¥\8dपà¥\82रà¥\8dवà¥\80 à¤\9dालà¥\87लà¥\8dया à¤\86वरà¥\8dतनाà¤\82à¤\9aà¥\87 à¤\8fà¤\95तà¥\8dरिà¤\95रण à¤\95रणà¥\8dयाà¤\95रिता रà¥\87डà¥\80ओ कळ स्तंभ वापरा.हा स्तंभ सुचालन दुवे वापरल्यास पूर्वपदावर येईल हे लक्षात घ्या.',
+'mergehistory-merge' => '[[:$1]]à¤\9aà¥\80 पà¥\81ढà¥\80ल à¤\86वरà¥\8dतनà¥\87 [[:$2]]मधà¥\8dयà¥\87 à¤\8fà¤\95तà¥\8dरित à¤\95रता यà¥\87तà¥\80ल.ठराविà¤\95 वà¥\87ळà¥\80 à¤\85थवा ततà¥\8dपà¥\82रà¥\8dवà¥\80 à¤\9dालà¥\87लà¥\8dया à¤\86वरà¥\8dतनाà¤\82à¤\9aà¥\87 à¤\8fà¤\95तà¥\8dरà¥\80à¤\95रण à¤\95रणà¥\8dयाà¤\95रिता रà¥\87डिओ कळ स्तंभ वापरा.हा स्तंभ सुचालन दुवे वापरल्यास पूर्वपदावर येईल हे लक्षात घ्या.',
'mergehistory-go' => 'गोळाबेरीज करण्याजोगी संपादने दाखवा',
'mergehistory-submit' => 'आवर्तने एकत्रित करा.',
'mergehistory-empty' => 'कोणतेही आवर्तन एकत्रित करता येत नाही.',
-'mergehistory-success' => '[[:$1]] {{PLURAL:$3|à¤\9aà¥\87|à¤\9aà¥\80}} $3 {{PLURAL:$3|à¤\86वरà¥\8dतन|à¤\86वरà¥\8dतनà¥\87}} [[:$2]] मधà¥\8dयà¥\87 यशसà¥\8dवà¥\80रित्या एकत्रित केली.',
-'mergehistory-fail' => 'à¤\87तिहासाà¤\9aà¥\87 à¤\8fà¤\95तà¥\8dरिकरण कार्य करू शकत नाही आहे, कृपया पान आणि वेळ नियमावलीची पुर्नतपासणी करा.',
+'mergehistory-success' => '[[:$1]] {{PLURAL:$3|à¤\9aà¥\87|à¤\9aà¥\80}} $3 {{PLURAL:$3|à¤\86वरà¥\8dतन|à¤\86वरà¥\8dतनà¥\87}} [[:$2]] मधà¥\8dयà¥\87 यशसà¥\8dवà¥\80रà¥\80त्या एकत्रित केली.',
+'mergehistory-fail' => 'à¤\87तिहासाà¤\9aà¥\87 à¤\8fà¤\95तà¥\8dरà¥\80करण कार्य करू शकत नाही आहे, कृपया पान आणि वेळ नियमावलीची पुर्नतपासणी करा.',
'mergehistory-no-source' => 'स्रोत पान $1 अस्तित्वात नाही.',
'mergehistory-no-destination' => 'लक्ष्य पान $1 अस्तित्वात नाही.',
'mergehistory-invalid-source' => 'स्रोत पानाचे शीर्षक योग्य असणे आवश्यक आहे.',
'mergelog' => 'नोंदी एकत्र करा',
'pagemerge-logentry' => '[[$2]]मध्ये[[$1]] समाविष्ट केले ($3पर्यंतची आवर्तने)',
'revertmerge' => 'वेगवेगळे करा',
-'mergelogpagetext' => 'à¤\8fà¤\95ापानाà¤\9aा à¤\87तिहास à¤\87तर पानात à¤\9fाà¤\95à¥\82न à¤\85à¤\97दà¥\80 à¤\85लिकडे एकत्रित केलेली एकत्रिकरणे निम्न्दर्शीत सूचीमध्ये आहेत.',
+'mergelogpagetext' => 'à¤\8fà¤\95ापानाà¤\9aा à¤\87तिहास à¤\87तर पानात à¤\9fाà¤\95à¥\82न à¤\85à¤\97दà¥\80 à¤\85लà¥\80कडे एकत्रित केलेली एकत्रिकरणे निम्न्दर्शीत सूचीमध्ये आहेत.',
# Diffs
'history-title' => '"$1" चा संपादन इतिहास',
'toomanymatches' => 'खूप एकसारखी उत्तरे मिळाली, कृपया पृच्छा वेगळ्या तऱ्हेने करून पहा',
'titlematches' => 'पानाचे शीर्षक जुळते',
'notitlematches' => 'कोणत्याही पानाचे शीर्षक जुळत नाही',
-'textmatches' => 'पानातà¥\80ल मà¤\9cà¤\95à¥\81र जुळतो',
+'textmatches' => 'पानातà¥\80ल मà¤\9cà¤\95à¥\82र जुळतो',
'notextmatches' => 'पानातील मजकुराशी जुळत नाही',
'prevn' => 'मागील {{PLURAL:$1|$1}}',
'nextn' => 'पुढील {{PLURAL:$1|$1}}',
'shown-title' => '$1 {{PLURAL:$1|निकाल|निकाल}} निकाल प्रतिपान पहा',
'viewprevnext' => 'पहा ($1 {{int:pipe-separator}} $2) ($3).',
'searchmenu-legend' => 'विकल्प शोधा',
-'searchmenu-exists' => "'''या विà¤\95à¥\80वर \"[[:\$1]]\" या नावाचे पान आहे.'''",
-'searchmenu-new' => "'''या विà¤\95à¥\80वर \"[[:\$1]]\" हे पान तयार करा!'''",
+'searchmenu-exists' => "'''या विà¤\95िवर \"[[:\$1]]\" या नावाचे पान आहे.'''",
+'searchmenu-new' => "'''या विà¤\95िवर \"[[:\$1]]\" हे पान तयार करा!'''",
'searchhelp-url' => 'Help:साहाय्य पृष्ठ',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|या उपसर्गानिशी असलेली पाने न्याहाळा]]',
'searchprofile-articles' => 'संबंधित पाने',
'showingresults' => "#'''$2'''पासून {{PLURAL:$1|'''1'''पर्यंतचा निकाल|'''$1'''पर्यंतचे निकाल}} खाली दाखवले आहे.",
'showingresultsnum' => "खाली दिलेले #'''$2'''पासून सुरू होणारे {{PLURAL:$3|'''1''' निकाल|'''$3''' निकाल}}.",
'showingresultsheader' => "'''$4''' साठी {{PLURAL:$5|'''$3'''पैकी '''$1''' निकाल|'''$3''' पैकी '''$1 - $2''' निकाल}}",
-'nonefound' => "'''सà¥\82à¤\9aना''':à¤\95ाहà¥\80 नामविशà¥\8dवà¥\87à¤\9a नà¥\87हमà¥\80 शà¥\8bधलà¥\80 à¤\9cातात. सरà¥\8dव नामविशà¥\8dवà¥\87 शà¥\8bधणà¥\8dयाà¤\95रà¥\80ता (चर्चा पाने, साचे, इ. सकट) कॄपया शोधशब्दांच्या आधी ''all:'' लावून पहा किंवा पाहिजे असलेले नामविश्व लिहा.",
+'nonefound' => "'''सà¥\82à¤\9aना''':à¤\95ाहà¥\80 नामविशà¥\8dवà¥\87à¤\9a नà¥\87हमà¥\80 शà¥\8bधलà¥\80 à¤\9cातात. सरà¥\8dव नामविशà¥\8dवà¥\87 शà¥\8bधणà¥\8dयाà¤\95रिता (चर्चा पाने, साचे, इ. सकट) कॄपया शोधशब्दांच्या आधी ''all:'' लावून पहा किंवा पाहिजे असलेले नामविश्व लिहा.",
'search-nonefound' => 'दिलेल्या वर्णनाशी जुळणारे निकाल नाहीत.',
'powersearch' => 'वाढीव शोध',
'powersearch-legend' => 'वाढीव शोध',
'powersearch-toggleall' => 'सर्व',
'powersearch-togglenone' => 'काहीही नाही',
'search-external' => 'बाह्य शोध',
-'searchdisabled' => '{{SITENAME}} शà¥\8bध à¤\85नà¥\81पलबà¥\8dध à¤\95à¥\87ला à¤\86हà¥\87.तà¥\8b परà¥\8dयà¤\82त à¤\97à¥\82à¤\97लवरà¥\82न शà¥\8bध à¤\98à¥\8dया.{{SITENAME}}à¤\9aà¥\8dया मà¤\9cà¤\95à¥\81राà¤\9aà¥\80 तà¥\8dयाà¤\82à¤\9aà¥\80 सà¥\82à¤\9aिबदà¥\8dधता शिळà¥\80 à¤\85सणà¥\8dयाà¤\9aà¥\80 शà¤\95à¥\8dयता à¤\85सà¥\81 शकते हे लक्षात घ्या.',
+'searchdisabled' => '{{SITENAME}} शà¥\8bध à¤\85नà¥\81पलबà¥\8dध à¤\95à¥\87ला à¤\86हà¥\87.तà¥\8b परà¥\8dयà¤\82त à¤\97à¥\82à¤\97लवरà¥\82न शà¥\8bध à¤\98à¥\8dया.{{SITENAME}}à¤\9aà¥\8dया मà¤\9cà¤\95à¥\81राà¤\9aà¥\80 तà¥\8dयाà¤\82à¤\9aà¥\80 सà¥\82à¤\9aिबदà¥\8dधता शिळà¥\80 à¤\85सणà¥\8dयाà¤\9aà¥\80 शà¤\95à¥\8dयता à¤\85सà¥\82 शकते हे लक्षात घ्या.',
# Quickbar
'qbsettings' => 'शीघ्रपट',
'recentchangesdays-max' => 'जास्तीतजास्त $1 {{PLURAL:$1|दिवस|दिवस}}',
'recentchangescount' => 'अलीकडील बदल, इतिहास व नोंद पानांमध्ये दाखवायाच्या संपादनांची संख्या:',
'prefs-help-recentchangescount' => 'यात नुकतेच झालेले बदल, पानांचे इतिहास व याद्या या गोष्टी असतात.',
-'prefs-help-watchlist-token' => 'या à¤\95à¥\8dषà¥\87तà¥\8dरत à¤\97à¥\81पित à¤\95िलà¥\8dलि प्रदान केल्यस तुमच्या निरीक्षणयादीसाठी एक आरएसएस फीड उत्पन्न होईल.
-à¤\95à¥\8bणà¥\80हà¥\80 à¤\9cà¥\8dयाला या à¤\95à¥\8dषà¥\87तà¥\8dरातिल à¤\95िलà¥\8dलि माहित à¤\85सà¥\87ल तà¥\81मà¤\9aà¥\80 निरà¥\80à¤\95à¥\8dषणयादà¥\80 वाà¤\9aà¥\82 शà¤\95तà¥\8b, तà¥\8dयमà¥\81ळà¥\87 à¤\95à¥\8bणतà¥\80हà¥\80 सà¥\81रà¤\95à¥\8dषित à¤\95िलà¥\8dलि निवडा.
-यà¥\87थà¥\87 à¤\8fà¤\95 यà¤\82तà¥\8dरà¤\9cनित à¤\95िलà¥\8dलि दिलेली आहे गरज असल्यस तुम्ही ती वपरु शकता: $1',
+'prefs-help-watchlist-token' => 'या à¤\95à¥\8dषà¥\87तà¥\8dरत à¤\97à¥\81पित à¤\95िलà¥\8dलà¥\80 प्रदान केल्यस तुमच्या निरीक्षणयादीसाठी एक आरएसएस फीड उत्पन्न होईल.
+à¤\95à¥\8bणà¥\80हà¥\80 à¤\9cà¥\8dयाला या à¤\95à¥\8dषà¥\87तà¥\8dरातà¥\80ल à¤\95िलà¥\8dलà¥\80 माहà¥\80त à¤\85सà¥\87ल तà¥\81मà¤\9aà¥\80 निरà¥\80à¤\95à¥\8dषणयादà¥\80 वाà¤\9aà¥\82 शà¤\95तà¥\8b, तà¥\8dयमà¥\81ळà¥\87 à¤\95à¥\8bणतà¥\80हà¥\80 सà¥\81रà¤\95à¥\8dषित à¤\95िलà¥\8dलà¥\80 निवडा.
+यà¥\87थà¥\87 à¤\8fà¤\95 यà¤\82तà¥\8dरà¤\9cनित à¤\95िलà¥\8dलà¥\80 दिलेली आहे गरज असल्यस तुम्ही ती वपरु शकता: $1',
'savedprefs' => 'तुमच्या पसंती जतन केल्या आहेत.',
'timezonelegend' => 'वेळक्षेत्र',
'localtime' => 'स्थानिक वेळ:',
'prefs-help-variant' => 'या विकीची पाने दाखवण्यासाठी तुमच्या पसंतीचे शुद्धलेखन',
'yournick' => 'आपले उपनाव (सहीसाठी)',
'prefs-help-signature' => 'चर्चा पानावरील टिपणाखाली "<nowiki>~~~~</nowiki>" लिहावे म्हणजे त्याचे रूपांतर आपली सही व सही करण्याची वेळ यात होईल.',
-'badsig' => 'à¤\85यà¥\8bà¤\97à¥\8dय à¤\95à¤\9aà¥\8dà¤\9aà¥\80 सहà¥\80;HTML à¤\96à¥\82णा तपासा.',
+'badsig' => 'à¤\85यà¥\8bà¤\97à¥\8dय à¤\95à¤\9aà¥\8dà¤\9aà¥\80 सहà¥\80;HTML à¤\96à¥\81णा तपासा.',
'badsiglength' => 'तुमची स्वाक्षरी खूप लांब आहे.
टोपणनाव $1 {{PLURAL:$1|अक्षरापेक्षा|अक्षरांपेक्षा}} कमी लांबीचे हवे.',
'yourgender' => 'लिंग',
* एक * चा अर्थ तुम्ही एकदा समावेश केल्यानंतर तो गट बदलू शकत नाही, किंवा काढल्यानंतर समावेश करू शकत नाही.',
'userrights-reason' => 'कारण:',
'userrights-no-interwiki' => 'इतर विकींवरचे सदस्य अधिकार बदलण्याची परवानगी तुम्हाला नाही.',
-'userrights-nodatabase' => 'विदा $1 à¤\85सà¥\8dतà¥\80त्वात नाही अथवा स्थानिक नाही.',
+'userrights-nodatabase' => 'विदा $1 à¤\85सà¥\8dतित्वात नाही अथवा स्थानिक नाही.',
'userrights-nologin' => 'सदस्य अधिकार देण्यासाठी तुम्ही प्रबंधक म्हणून [[Special:UserLogin|प्रवेश केलेला]] असणे आवश्यक आहे.',
'userrights-notallowed' => 'तुमच्या सदस्य खात्यास सदस्य अधिकारांची निश्चिती करण्याची परवानगी नाही.',
'userrights-changeable-col' => 'गट जे तुम्ही बदलू शकता',
'right-writeapi' => 'लेखन एपीआय चा उपयोग',
'right-delete' => 'पृष्ठे वगळा',
'right-bigdelete' => 'जास्त इतिहास असणारी पाने वगळा',
-'right-deletelogentry' => 'थरविà¤\95à¥\8d लà¥\8bà¤\97à¥\8d पà¥\8dरवà¥\87शà¥\8d बनà¥\8dद à¤\86नि à¤\9aालà¥\81 करने',
+'right-deletelogentry' => 'थरविà¤\95à¥\8d लà¥\8bà¤\97à¥\8d पà¥\8dरवà¥\87शà¥\8d बनà¥\8dद à¤\86नि à¤\9aालà¥\82 करने',
'right-deleterevision' => 'एखाद्या पानाच्या विशिष्ट आवृत्त्या लपवा',
'right-deletedhistory' => 'वगळलेल्या इतिहास नोंदी, त्यांच्या संलग्न मजकूराशिवाय पहा',
'right-deletedtext' => 'वगळलेला मजकूर व वगळलेल्या आवर्तनांमधील बदल पहा',
'right-importupload' => 'चढविलेल्या संचिकेतून पाने आयात करा',
'right-patrol' => 'इतरांची संपादने तपासलेली म्हणून जतन करा',
'right-autopatrol' => 'संपादने आपोआप तपासलेली (patrolled) म्हणून जतन करा',
-'right-patrolmarks' => 'à¤\85लà¥\80à¤\95डà¥\80ल बदलाà¤\82मधà¥\80ल तपासलà¥\8dयाà¤\9aà¥\8dया à¤\96à¥\82णा पहा',
+'right-patrolmarks' => 'à¤\85लà¥\80à¤\95डà¥\80ल बदलाà¤\82मधà¥\80ल तपासलà¥\8dयाà¤\9aà¥\8dया à¤\96à¥\81णा पहा',
'right-unwatchedpages' => 'न पाहिलेल्या पानांची यादी पहा',
'right-mergehistory' => 'पानांचा इतिहास एकत्रित करा',
'right-userrights' => 'सर्व सदस्यांचे अधिकार संपादा',
'right-userrights-interwiki' => 'इतर विकिंवर सदस्य अधिकार बदला',
-'right-siteadmin' => 'माहितà¥\80साठà¥\8dयाला à¤\95à¥\81लà¥\81प लावा अथवा काढा',
+'right-siteadmin' => 'माहितà¥\80साठà¥\8dयाला à¤\95à¥\81लà¥\82प लावा अथवा काढा',
'right-override-export-depth' => 'पाने निर्यात करा (आंतरिक जेडलेली पाने पाचव्या पतळी पर्यंत समाविष्ट करुन).',
'right-sendemail' => 'इतर सदस्यांना विपत्रे पाठवा',
'right-passwordreset' => 'परवलीचा शब्द (पासवर्ड) पुन:स्थापित केल्याची इ मेल पहा.',
'action-mergehistory' => 'पानाचा इतिहास विलीन करा',
'action-userrights' => 'सर्व सदस्यांचे अधिकार संपादित करा',
'action-userrights-interwiki' => 'इतर विकिंवरच्या सदस्यांचे अधिकार संपादित करा',
-'action-siteadmin' => 'माहितà¥\80साठà¥\8dयाला à¤\95à¥\81लà¥\81प लावा अथवा काढा',
+'action-siteadmin' => 'माहितà¥\80साठà¥\8dयाला à¤\95à¥\81लà¥\82प लावा अथवा काढा',
'action-sendemail' => 'विपत्रे (ई-मेल्स) पाठवा.',
# Recent changes
'recentchanges' => 'अलीकडील बदल',
'recentchanges-legend' => 'अलीकडील बदल पर्याय',
'recentchanges-summary' => 'विकितील अलीकडील बदल या पानावर दिसतात.',
-'recentchanges-feed-description' => 'या रसदà¥\80मधà¥\80ल विà¤\95à¥\80वर झालेले सर्वात अलीकडील बदल पहा.',
+'recentchanges-feed-description' => 'या रसदà¥\80मधà¥\80ल विà¤\95िवर झालेले सर्वात अलीकडील बदल पहा.',
'recentchanges-label-newpage' => 'या संपादनाने नवीन पान तयार झाले',
'recentchanges-label-minor' => 'हा एक छोटा बदल आहे',
'recentchanges-label-bot' => 'हे संपादन एका सांगकाम्याकडून केले गेले आहे',
'newpageletter' => 'न',
'boteditletter' => 'सां',
'number_of_watching_users_pageview' => '[$1 {{PLURAL:$1|सदस्याने|सदस्यांनी}} पहारा दिलेला आहे]',
-'rc_categories' => 'वरà¥\8dà¤\97ाà¤\82पपà¥\81रतà¥\87 मरà¥\8dयादà¥\80त ठेवा ("|"ने वेगळे करा)',
+'rc_categories' => 'वरà¥\8dà¤\97ाà¤\82पपà¥\81रतà¥\87 मरà¥\8dयादित ठेवा ("|"ने वेगळे करा)',
'rc_categories_any' => 'कोणतेही',
'rc-change-size-new' => '$1 {{PLURAL:$1|byte|bytes}} बदला',
'newsectionsummary' => '/* $1 */ नवीन विभाग',
'upload_directory_missing' => 'अपलोड डिरेक्टरी ($1) सापडली नाही तसेच वेबसर्व्हर ती तयार करू शकलेला नाही.',
'upload_directory_read_only' => '$1 या डिरेक्टरी मध्ये सर्व्हर लिहू शकत नाही.',
'uploaderror' => 'चढवण्यात चूक',
-'upload-recreate-warning' => "'''सावधान: या नावाà¤\9aà¥\80 सà¤\82à¤\9aà¥\80à¤\95ा वà¤\97ळलà¥\80 à¤\85थवा सà¥\8dथलाà¤\82तरà¥\80त करण्यात आली आहे.'''
+'upload-recreate-warning' => "'''सावधान: या नावाà¤\9aà¥\80 सà¤\82à¤\9aà¥\80à¤\95ा वà¤\97ळलà¥\80 à¤\85थवा सà¥\8dथलाà¤\82तरित करण्यात आली आहे.'''
या पानाची वगळल्याची व स्थलांतरणाची नोंद तुमच्या सोयीसाठी येथे पुरवली आहे.:",
'uploadtext' => "खालील अर्ज नवीन संचिका चढविण्यासाठी वापरा.
पूर्वी चढविलेल्या संचिका पाहण्यासाठी अथवा शोधण्यासाठी [[Special:FileList|चढविलेल्या संचिकांची यादी]] पहा. चढविलेल्या तसेच वगळलेल्या संचिकांची यादी पहाण्यासाठी [[Special:Log/upload|चढवलेल्या संचिकांची सूची]] व [[Special:Log/delete|वगळलेल्या संचिकांची सूची]] पहा.
'filesource' => 'स्रोत:',
'uploadedfiles' => 'चढवलेल्या संचिका',
'ignorewarning' => 'सुचनेकडे दुर्लक्ष करा आणि संचिका जतन करा.',
-'ignorewarnings' => 'सरà¥\8dव सà¥\81चनांकडे दुर्लक्ष करा',
+'ignorewarnings' => 'सरà¥\8dव सà¥\82चनांकडे दुर्लक्ष करा',
'minlength1' => 'संचिकानाम किमान एक अक्षराचे हवे.',
'illegalfilename' => '"$1" या संचिकानामात शीर्षकात चालू न शकणारी अक्षरे आहेत. कृपया संचिकानाम बदलून पुन्हा चढवण्याचा प्रयत्न करा.',
-'filename-toolong' => '२४० बाà¤\88à¤\9fपà¥\87à¤\95à¥\8dषा फाà¤\88लचे नांव स्वीकारले जाणार नाही.',
+'filename-toolong' => '२४० बाà¤\88à¤\9fपà¥\87à¤\95à¥\8dषा फाà¤\87लचे नांव स्वीकारले जाणार नाही.',
'badfilename' => 'संचिकेचे नाव बदलून "$1" असे केले आहे.',
'filetype-mime-mismatch' => 'संचिका विस्तारक ".$1" ठरवलेल्या एमआयएमई संचिकाप्रकारांशी जुळत नाही ($2).',
'filetype-badmime' => 'विविधामाप(माईम) "$1" प्रकारच्या संचिका चढवण्यास परवानगी नाही.',
'filename-tooshort' => 'तुम्ही प्रस्तुत केलेली संचिका आकाराने खूप कमी होती.',
'filetype-banned' => 'याप्रकारची संचिका प्रतिबंधित आहे.',
'verification-error' => 'संचिका पडताळणीत ही संचिका अनुत्तीर्ण झाली.',
-'hookaborted' => 'तà¥\81मà¥\8dहà¥\80 à¤\95रà¥\82 à¤\87à¤\9aà¥\8dà¤\9bà¥\80णारे संपादन बाह्य हुक द्वारे थंबवण्यात आले.',
+'hookaborted' => 'तà¥\81मà¥\8dहà¥\80 à¤\95रà¥\82 à¤\87à¤\9aà¥\8dà¤\9bिणारे संपादन बाह्य हुक द्वारे थंबवण्यात आले.',
'illegal-filename' => 'हे संचिकानाम प्रतिबंधित आहे.',
'overwrite' => 'अस्तित्वात असलेल्या संचिकेवर पुनर्लेखन प्रतिबंधित आहे.',
'unknown-error' => 'एक अज्ञात चूक उद्भवली.',
'large-file' => 'संचिका $1 पेक्षा कमी आकाराची असण्याची अपेक्षा आहे, ही संचिका $2 एवढी आहे.',
'largefileserver' => 'सेवा संगणकावर (सर्वर) निर्धारित केलेल्या आकारापेक्षा या संचिकेचा आकार मोठा आहे.',
'emptyfile' => 'चढवलेली संचिका रिकामी आहे. हे संचिकानाम चुकीचे लिहिल्याने असू शकते. कृपया तुम्हाला हीच संचिका चढवायची आहे का ते तपासा.',
-'windows-nonascii-filename' => 'या विà¤\95à¥\80वर विशेष चिन्हातील फाईलनांवाचा आधार घेता येणार नाही.',
+'windows-nonascii-filename' => 'या विà¤\95िवर विशेष चिन्हातील फाईलनांवाचा आधार घेता येणार नाही.',
'fileexists' => 'या नावाची संचिका आधीच अस्तित्वात आहे, कृपया ही संचिका बदलण्याबद्दल तुम्ही साशंक असाल तर <strong>[[:$1]]</strong> तपासा.
[[$1|thumb]]',
'filepageexists' => 'या नावाचे एक माहितीपृष्ठ (संचिका नव्हे) अगोदरच अस्तित्त्वात आहे. कृपया जर आपणांस त्यात बदल करायचा नसेल तर <strong>[[:$1]]</strong> तपासा.
[[$1|thumb]]',
'fileexists-extension' => 'या नावाची संचिका अस्तित्वात आहे: [[$2|thumb]]
-* à¤\9aढवित असलेल्या संचिकेचे नाव: <strong>[[:$1]]</strong>
+* à¤\9aढवà¥\80त असलेल्या संचिकेचे नाव: <strong>[[:$1]]</strong>
* अस्तित्वात असलेल्या संचिकेचे नाव: <strong>[[:$2]]</strong>
कृपया दुसरे नाव निवडा.',
-'fileexists-thumbnail-yes' => "à¤\86पण à¤\9aढवित असलेली संचिका ही मोठ्या चित्राची इवलीशी प्रतिकृती ''(thumbnail)'' असण्याची शक्यता आहे. [[$1|इवलेसे]]
+'fileexists-thumbnail-yes' => "à¤\86पण à¤\9aढवà¥\80त असलेली संचिका ही मोठ्या चित्राची इवलीशी प्रतिकृती ''(thumbnail)'' असण्याची शक्यता आहे. [[$1|इवलेसे]]
कृपया <strong>[[:$1]]</strong> ही संचिका तपासा.
जर तपासलेली संचिका ही याच आकाराची असेल तर नवीन प्रतिकृती चढविण्याची गरज नाही.",
'file-thumbnail-no' => 'या संचिकेचे नाव <strong>$1</strong> पासून सुरू होत आहे. ही कदाचित झलक असू शकते.
'copyuploaddisabled' => 'आंतरजालपत्त्याद्वारे चढवणे प्रतिबंधित आहे.',
'uploadfromurl-queued' => 'तुमचे चढवणे नोंदवण्यात आले आहे',
'uploaddisabledtext' => '{{SITENAME}} वर संचिका चढविण्यास बंदी घालण्यात आलेली आहे.',
-'php-uploaddisabledtext' => 'PHP मधà¥\8dयà¥\87 सà¤\82à¤\9aिà¤\95ा à¤\9aढवणà¥\87 पà¥\8dरतिबà¤\82धà¥\80त केले आहे.
+'php-uploaddisabledtext' => 'PHP मधà¥\8dयà¥\87 सà¤\82à¤\9aिà¤\95ा à¤\9aढवणà¥\87 पà¥\8dरतिबà¤\82धित केले आहे.
कृपया file_uploads मांडणी (setting) तपासावी.',
-'uploadscripted' => 'या सà¤\82à¤\9aिà¤\95à¥\87त HTML à¤\95िà¤\82वा सà¥\8dà¤\95à¥\8dरिपà¥\8dà¤\9f à¤\95à¥\8bडà¤\9aा à¤\86à¤\82तरà¥\8dà¤à¤¾à¤µ à¤\86हà¥\87, तà¥\8dयाà¤\9aा à¤\8fà¤\96ादà¥\8dया विà¤\9aरà¤\95ाà¤\95डà¥\82न विà¤\9aà¥\80त्र अर्थ लावला जाऊ शकतो.',
+'uploadscripted' => 'या सà¤\82à¤\9aिà¤\95à¥\87त HTML à¤\95िà¤\82वा सà¥\8dà¤\95à¥\8dरिपà¥\8dà¤\9f à¤\95à¥\8bडà¤\9aा à¤\86à¤\82तरà¥\8dà¤à¤¾à¤µ à¤\86हà¥\87, तà¥\8dयाà¤\9aा à¤\8fà¤\96ादà¥\8dया विà¤\9aरà¤\95ाà¤\95डà¥\82न विà¤\9aित्र अर्थ लावला जाऊ शकतो.',
'uploadvirus' => 'ह्या संचिकेत व्हायरस आहे. अधिक माहिती: $1',
-'uploadjava' => 'हà¥\80 फाà¤\88ल à¤\9dà¥\80पà¥\8d हà¥\8dया पà¥\8dरà¤\95ारातिल आहे ज्यामधे जाव्हा .क्लास फाईल. आहे,
- à¤\9cावà¥\8dहा फाà¤\88ल हà¥\8dयात वापरà¥\8dता यà¥\87नार नाहित ,à¤\95ारन à¤\88थे सुरक्षेचे कारने येतात्',
+'uploadjava' => 'हà¥\80 फाà¤\88ल à¤\9dà¥\80पà¥\8d हà¥\8dया पà¥\8dरà¤\95ारातà¥\80ल आहे ज्यामधे जाव्हा .क्लास फाईल. आहे,
+ à¤\9cावà¥\8dहा फाà¤\88ल हà¥\8dयात वापरà¥\8dता यà¥\87नार नाहà¥\80त ,à¤\95ारन à¤\87थे सुरक्षेचे कारने येतात्',
'upload-source' => 'स्रोत संचिका',
'sourcefilename' => 'स्रोत-संचिकानाम:',
'sourceurl' => 'स्रोत युआरएल',
$1',
'upload-warning-subj' => 'चढवताना सूचना',
-'upload-warning-msg' => 'तà¥\81मà¤\9aà¥\8dया à¤\9aढवणà¥\8dयात [$2] यà¥\87थà¥\82न à¤\9aà¥\82à¤\95 à¤\9dालà¥\80. तà¥\81मà¥\8dहà¥\80 [[Special:Upload/stash/$1|à¤\9aढवणà¥\8dयाà¤\9aा à¤\85रà¥\8dà¤\9c]] पà¥\81नà¥\8dहा à¤à¤°à¥\81न ही चूक दूर करू शकता.',
+'upload-warning-msg' => 'तà¥\81मà¤\9aà¥\8dया à¤\9aढवणà¥\8dयात [$2] यà¥\87थà¥\82न à¤\9aà¥\82à¤\95 à¤\9dालà¥\80. तà¥\81मà¥\8dहà¥\80 [[Special:Upload/stash/$1|à¤\9aढवणà¥\8dयाà¤\9aा à¤\85रà¥\8dà¤\9c]] पà¥\81नà¥\8dहा à¤à¤°à¥\82न ही चूक दूर करू शकता.',
'upload-proto-error' => 'चूकीचा संकेत',
-'upload-proto-error-text' => 'दà¥\82रसà¥\8dथ à¤\9aढवणà¥\8dयाà¤\9aà¥\8dया à¤\95à¥\8dरियà¥\87त <code>http://</code>पासà¥\82न à¤\95िà¤\82वा <code>ftp://</code>पासà¥\82न सà¥\82रू होणारी URL लागतात.',
+'upload-proto-error-text' => 'दà¥\82रसà¥\8dथ à¤\9aढवणà¥\8dयाà¤\9aà¥\8dया à¤\95à¥\8dरियà¥\87त <code>http://</code>पासà¥\82न à¤\95िà¤\82वा <code>ftp://</code>पासà¥\82न सà¥\81रू होणारी URL लागतात.',
'upload-file-error' => 'अंतर्गत त्रूटी',
'upload-file-error-text' => 'विदादात्यावर तात्पुरती संचिका तयार करण्याच्या प्रयत्न करत असताना अंतर्गत तांत्रिक अडचण आली.कृपया [[Special:ListUsers/sysop|प्रचालकांशी]] संपर्क करा.',
-'upload-misc-error' => 'सà¤\82à¤\9aिà¤\95ा à¤\9aढविताना माहित नसलà¥\87लà¥\80 तà¥\8dरà¥\82टी आलेली आहे.',
+'upload-misc-error' => 'सà¤\82à¤\9aिà¤\95ा à¤\9aढविताना माहà¥\80त नसलà¥\87लà¥\80 तà¥\8dरà¥\81टी आलेली आहे.',
'upload-misc-error-text' => 'चढवताना अज्ञात तांत्रिक अडचण आली.कृपया आंतरजालपत्ता सुयोग्य आणि उपलब्ध आहे का ते तपासा आणि पुन्हा प्रयत्न करा. अधिक अडचणी आल्यास तर [[Special:ListUsers/sysop|प्रचालकांशी]] संपर्क करा.',
'upload-too-many-redirects' => 'या आंतरजालपत्त्यात खूप पुनर्निर्देशने आहेत',
'upload-unknown-size' => 'अज्ञात आकारमान',
'backend-fail-connect' => 'पार्श्वभौमीक साठा "$1"शी संबंध जोडू शकत नाही.',
'backend-fail-internal' => 'पार्श्वभौमीक साठा "$1" यात अज्ञात चूक झाली आहे.',
'backend-fail-contenttype' => '"$1" मध्ये ठेवलेल्या फाईलचा महितीचा प्रकार कळत नाही',
-'backend-fail-batchsize' => 'पारà¥\8dशà¥\8dवà¤à¥\8cमà¥\80à¤\95 साठयातà¥\80ल बà¥\85à¤\9a $1 फाà¤\88ल{{PLURAL:$1|operation|operations}}; मधà¥\87 मरà¥\8dयादà¥\80त कस्त $२ {{PLURAL:$2|operation|operations}} असू शकते',
+'backend-fail-batchsize' => 'पारà¥\8dशà¥\8dवà¤à¥\8cमà¥\80à¤\95 साठयातà¥\80ल बà¥\85à¤\9a $1 फाà¤\88ल{{PLURAL:$1|operation|operations}}; मधà¥\87 मरà¥\8dयादित कस्त $२ {{PLURAL:$2|operation|operations}} असू शकते',
# Lock manager
-'lockmanager-notlocked' => '"$1" ला मà¥\8bà¤\95ळà¥\87 à¤\95रता à¤\86लà¥\87 नाहà¥\80;तà¥\87 à¤\95à¥\81लà¥\81पबंद नाही.',
+'lockmanager-notlocked' => '"$1" ला मà¥\8bà¤\95ळà¥\87 à¤\95रता à¤\86लà¥\87 नाहà¥\80;तà¥\87 à¤\95à¥\81लà¥\82पबंद नाही.',
'lockmanager-fail-closelock' => '"$1" साठी लॉक फाइल बंद करू शकत नाही',
'lockmanager-fail-deletelock' => '"$1" साठी लॉक फाइल वगळू शकत नाही',
'lockmanager-fail-acquirelock' => '"$1" साठी लॉक फाइल मिळवू शकत नाही',
# Special:UploadStash
'uploadstash' => 'चढवणे लपवा',
-'uploadstash-summary' => 'या पानावर à¤\85शà¥\8dया सà¤\82à¤\9aिà¤\95ा पहावयासà¥\8d मिळतात à¤\9cà¥\8dया à¤\9aढवलà¥\8dया à¤\86हà¥\87त (à¤\85थवा à¤\9aढवलà¥\8dया à¤\9cात à¤\86हà¥\87त) परà¤\82तà¥\81 à¤\85à¤\9cà¥\81न विकी वर प्रकाशित केल्या नाहित. या संचिका फक्त त्या सदस्यास् दिसतील ज्याने त्या चढवल्या आहेत, इतर सदस्यांस् त्या दिसणार नाहीत.',
+'uploadstash-summary' => 'या पानावर à¤\85शà¥\8dया सà¤\82à¤\9aिà¤\95ा पहावयासà¥\8d मिळतात à¤\9cà¥\8dया à¤\9aढवलà¥\8dया à¤\86हà¥\87त (à¤\85थवा à¤\9aढवलà¥\8dया à¤\9cात à¤\86हà¥\87त) परà¤\82तà¥\81 à¤\85à¤\9cà¥\82न विकी वर प्रकाशित केल्या नाहित. या संचिका फक्त त्या सदस्यास् दिसतील ज्याने त्या चढवल्या आहेत, इतर सदस्यांस् त्या दिसणार नाहीत.',
'uploadstash-clear' => 'लपवलेल्या संचिका काढा',
'uploadstash-nofiles' => 'तुमच्याकडे लपवलेल्या संचिका नाहीत.',
'uploadstash-badtoken' => 'हि कृती अयशस्वी होती. कदाचित आपल्या संपादन अधिकारपत्राची (editing credentials) मुदत संपली.',
'uploadnewversion-linktext' => 'या संचिकेची नवीन आवृत्ती चढवा',
'shared-repo-from' => '$1 पासून',
'shared-repo' => 'एक मुक्त कोश',
-'upload-disallowed-here' => 'या सà¤\82à¤\9aिà¤\95à¥\87वर à¤\86पण पà¥\81नरà¥\8dलिà¤\96ाण à¤\95रà¥\81 शकत नाही.',
+'upload-disallowed-here' => 'या सà¤\82à¤\9aिà¤\95à¥\87वर à¤\86पण पà¥\81नरà¥\8dलिà¤\96ाण à¤\95रà¥\82 शकत नाही.',
# File reversion
'filerevert' => '$1 पूर्वपद',
'filedelete-reason-dropdown' => '*वगळण्याची सामान्य कारणे
** प्रताधिकार उल्लंघन
** जुळी संचिका',
-'filedelete-edit-reasonlist' => 'वà¤\97ळणà¥\8dयाà¤\9aà¥\80 à¤\95ारणà¥\87 सà¤\82पादà¥\80त करा',
+'filedelete-edit-reasonlist' => 'वà¤\97ळणà¥\8dयाà¤\9aà¥\80 à¤\95ारणà¥\87 सà¤\82पादित करा',
'filedelete-maintenance' => 'फाईल वगळने आणि पुन्:स्थापित करण्',
'filedelete-maintenance-title' => 'संचिका (फाईल) वगळू शकत नाही.',
'statistics-edits' => '{{SITENAME}} च्या सुरुवातीपासूनची पानांची संपादने',
'statistics-edits-average' => 'प्रतिपान सरासरी संपादने',
'statistics-views-total' => 'सर्व दाखवते',
-'statistics-views-total-desc' => 'à¤\9cà¥\87 पानà¥\87 यामधà¥\8dदà¥\87 नाहà¥\80त तà¥\87 पाहा à¤\86नि à¤\96ास पानà¥\87 सामिला à¤\95रà¥\81 नका.',
+'statistics-views-total-desc' => 'à¤\9cà¥\87 पानà¥\87 यामधà¥\8dदà¥\87 नाहà¥\80त तà¥\87 पाहा à¤\86नि à¤\96ास पानà¥\87 सामिला à¤\95रà¥\82 नका.',
'statistics-views-peredit' => 'प्रति संपादनामागे पाहणे',
'statistics-users' => 'नोंदणीकृत [[Special:ListUsers|सदस्य]]',
'statistics-users-active' => 'कार्यरत सदस्य',
'disambiguations-text' => "निम्नलिखीत पाने एका '''नि:संदिग्धकरण पृष्ठास'''जोडली जातात. त्याऐवजी ती सुयोग्य विषयाशी जोडली जावयास हवीत.<br /> जर जर एखादे पान [[MediaWiki:Disambiguationspage]]पासून जोडलेला साचा वापरत असेल तर ते पान '''नि:संदिग्धकरण पृष्ठ''' गृहीत धरले जाते",
'doubleredirects' => 'दुहेरी-पुनर्निर्देशने',
-'doubleredirectstext' => 'हà¥\87 पान à¤\85शा पानाà¤\82à¤\9aà¥\80 सà¥\82à¤\9aà¥\80 पà¥\81रवतà¥\87 à¤\95à¥\80 à¤\9cà¥\80 पà¥\81रà¥\8dननिरà¥\8dदà¥\87शà¥\80त पानà¥\87 दà¥\81सऱà¥\8dया पà¥\81रà¥\8dननिरà¥\8dदà¥\87शà¥\80त पानाà¤\95डà¥\87 निरà¥\8dदà¥\87शà¥\80त झाली आहेत.प्रत्येक ओळीत पहिल्या आणि दुसऱ्या पुर्ननिर्देशनास दुवा दिला आहे सोबतच दुसरे पुर्ननिर्देशन ज्या पानाकडे पोहचते ते पण दिले आहे, जे की बरोबर असण्याची शक्यता आहे ,ते वस्तुतः पहिल्या पानापासूनचेही पुर्ननिर्देशन असावयास हवे.',
+'doubleredirectstext' => 'हà¥\87 पान à¤\85शा पानाà¤\82à¤\9aà¥\80 सà¥\82à¤\9aà¥\80 पà¥\81रवतà¥\87 à¤\95à¥\80 à¤\9cà¥\80 पà¥\81रà¥\8dननिरà¥\8dदà¥\87शà¥\80त पानà¥\87 दà¥\81सऱà¥\8dया पà¥\81रà¥\8dननिरà¥\8dदà¥\87शà¥\80त पानाà¤\95डà¥\87 निरà¥\8dदà¥\87शित झाली आहेत.प्रत्येक ओळीत पहिल्या आणि दुसऱ्या पुर्ननिर्देशनास दुवा दिला आहे सोबतच दुसरे पुर्ननिर्देशन ज्या पानाकडे पोहचते ते पण दिले आहे, जे की बरोबर असण्याची शक्यता आहे ,ते वस्तुतः पहिल्या पानापासूनचेही पुर्ननिर्देशन असावयास हवे.',
'double-redirect-fixed-move' => '[[$1]] हलवले गेले आहे.
ते [[$2]] येथे निर्देशित होते.',
'double-redirect-fixed-maintenance' => '[[$1]] ते [[$2]] हे चुकीचे पुनर्निर्देशन नीट केले.',
'ntransclusions' => '$1{{PLURAL:$1|पानावर|पानांवर}} वापर',
'specialpage-empty' => 'या अहवालाकरिता(रिपोर्ट)कोणताही निकाल नाही.',
'lonelypages' => 'पोरकी पाने',
-'lonelypagestext' => 'à¤\96ालà¥\80ल पानाà¤\82ना {{SITENAME}}à¤\9aà¥\8dया à¤\87तर पानाà¤\82à¤\95डà¥\82न दà¥\82वा जोड झालेली नाही.',
+'lonelypagestext' => 'à¤\96ालà¥\80ल पानाà¤\82ना {{SITENAME}}à¤\9aà¥\8dया à¤\87तर पानाà¤\82à¤\95डà¥\82न दà¥\81वा जोड झालेली नाही.',
'uncategorizedpages' => 'अवर्गीकृत पाने',
'uncategorizedcategories' => 'अवर्गीकृत वर्ग',
'uncategorizedimages' => 'अवर्गीकृत चित्रे',
'wantedpages' => 'पाहिजे असलेले लेख',
'wantedpages-badtitle' => 'परिणामाच्या यादीत अवैध शीर्षक: $1',
'wantedfiles' => 'पाहिजे असलेल्या संचिका',
-'wantedfiletext-cat' => 'पà¥\81ढà¥\80ल फाà¤\87लà¥\8dस वापरलà¥\8dया à¤\85सतà¥\80ल पण à¤\86ता à¤\85सà¥\8dतà¥\80त्वात नाहीत. बाहेरील ठिकाणांच्या फाइल्स येथे दिसतात पण असतीलच असे नाही. अशा फाइल्स आढळल्यास वगळल्या जातील. अशी पाने [[:$1]] येथे दिसतील.',
-'wantedfiletext-nocat' => 'पà¥\81ढà¥\80ल फाà¤\87लà¥\8dस वापरलà¥\8dया à¤\85सतà¥\80ल पण à¤\86ता à¤\85सà¥\8dतà¥\80त्वात नाहीत. बाहेरील ठिकाणांच्या फाइल्स येथे दिसतात पण असतीलच असे नाही. अशा फाइल्स आढळल्यास वगळल्या जातील.',
+'wantedfiletext-cat' => 'पà¥\81ढà¥\80ल फाà¤\87लà¥\8dस वापरलà¥\8dया à¤\85सतà¥\80ल पण à¤\86ता à¤\85सà¥\8dतित्वात नाहीत. बाहेरील ठिकाणांच्या फाइल्स येथे दिसतात पण असतीलच असे नाही. अशा फाइल्स आढळल्यास वगळल्या जातील. अशी पाने [[:$1]] येथे दिसतील.',
+'wantedfiletext-nocat' => 'पà¥\81ढà¥\80ल फाà¤\87लà¥\8dस वापरलà¥\8dया à¤\85सतà¥\80ल पण à¤\86ता à¤\85सà¥\8dतित्वात नाहीत. बाहेरील ठिकाणांच्या फाइल्स येथे दिसतात पण असतीलच असे नाही. अशा फाइल्स आढळल्यास वगळल्या जातील.',
'wantedtemplates' => 'पाहिजे असलेले साचे',
'mostlinked' => 'सर्वाधिक जोडलेली पाने',
'mostlinkedcategories' => 'सर्वाधिक जोडलेले वर्ग',
'protectedpages' => 'सुरक्षित पाने',
'protectedpages-indef' => 'फक्त अनंत काळासाठी सुरक्षित केलेले',
'protectedpages-cascade' => 'केवळ एकामेकांवर अवलंबून कास्केडींग सुरक्षा (सुरक्षा शिडी)',
-'protectedpagestext' => 'à¤\96ालà¥\80ल पानà¥\87 सà¥\8dथानाà¤\82तरण à¤\95िà¤\82वा सà¤\82पादन याà¤\82पासà¥\81न सुरक्षित आहेत',
-'protectedpagesempty' => 'सधà¥\8dया या नियमावलà¥\80नà¥\87 à¤\95à¥\8bणतà¥\80हà¥\80 पानà¥\87 सà¥\81रà¤\95à¥\8dषà¥\80त केलेली नाहीत.',
+'protectedpagestext' => 'à¤\96ालà¥\80ल पानà¥\87 सà¥\8dथानाà¤\82तरण à¤\95िà¤\82वा सà¤\82पादन याà¤\82पासà¥\82न सुरक्षित आहेत',
+'protectedpagesempty' => 'सधà¥\8dया या नियमावलà¥\80नà¥\87 à¤\95à¥\8bणतà¥\80हà¥\80 पानà¥\87 सà¥\81रà¤\95à¥\8dषित केलेली नाहीत.',
'protectedtitles' => 'सुरक्षीत शीर्षके',
-'protectedtitlestext' => 'पà¥\81ढà¥\80ल शिरà¥\8dषà¤\95à¥\87 बदल à¤\98डवणà¥\8dयापासà¥\82न सà¥\81रà¤\95à¥\8dषà¥\80त आहेत.',
-'protectedtitlesempty' => 'या नियमावलà¥\80नà¥\87 सधà¥\8dया à¤\95à¥\8bणतà¥\80हà¥\80 शà¥\80रà¥\8dषà¤\95à¥\87 सà¥\81रà¤\95à¥\8dषà¥\80त केलेली नाहीत.',
+'protectedtitlestext' => 'पà¥\81ढà¥\80ल शà¥\80रà¥\8dषà¤\95à¥\87 बदल à¤\98डवणà¥\8dयापासà¥\82न सà¥\81रà¤\95à¥\8dषित आहेत.',
+'protectedtitlesempty' => 'या नियमावलà¥\80नà¥\87 सधà¥\8dया à¤\95à¥\8bणतà¥\80हà¥\80 शà¥\80रà¥\8dषà¤\95à¥\87 सà¥\81रà¤\95à¥\8dषित केलेली नाहीत.',
'listusers' => 'सदस्यांची यादी',
'listusers-editsonly' => 'फक्त संपादनांसहित सदस्य दाखवा',
'listusers-creationsort' => 'निर्मितीच्या तारखेप्रमाणे लावा',
'speciallogtitlelabel' => 'उद्दिष्ट (लक्ष):',
'log' => 'नोंदी',
'all-logs-page' => 'सर्व नोंदी',
-'alllogstext' => '{{SITENAME}}à¤\9aà¥\8dया सरà¥\8dव नà¥\8bà¤\82दà¥\80à¤\9aà¥\87 à¤\8fà¤\95तà¥\8dर दरà¥\8dशन.नà¥\8bà¤\82द पà¥\8dरà¤\95ार, सदसà¥\8dयनाव à¤\95िà¤\82वा बाधà¥\80त पान निवडà¥\82न तà¥\81मà¥\8dहà¥\80 तà¥\81मà¤\9aà¥\87 दà¥\83शà¥\8dयपान मरà¥\8dयादà¥\80त करू शकता.',
+'alllogstext' => '{{SITENAME}}à¤\9aà¥\8dया सरà¥\8dव नà¥\8bà¤\82दà¥\80à¤\9aà¥\87 à¤\8fà¤\95तà¥\8dर दरà¥\8dशन.नà¥\8bà¤\82द पà¥\8dरà¤\95ार, सदसà¥\8dयनाव à¤\95िà¤\82वा बाधित पान निवडà¥\82न तà¥\81मà¥\8dहà¥\80 तà¥\81मà¤\9aà¥\87 दà¥\83शà¥\8dयपान मरà¥\8dयादित करू शकता.',
'logempty' => 'नोंदीत अशी बाब नाही.',
-'log-title-wildcard' => 'या मà¤\9cà¤\95à¥\81रापासà¥\82न सà¥\81रà¥\82 हà¥\8bणारà¥\80 शिर्षके शोधा.',
+'log-title-wildcard' => 'या मà¤\9cà¤\95à¥\81रापासà¥\82न सà¥\81रà¥\82 हà¥\8bणारà¥\80 शà¥\80र्षके शोधा.',
'showhideselectedlogentries' => 'निवडलेले लॉग पहाणे /लपवणे',
# Special:AllPages
'linksearch-error' => 'वाईल्डकार्ड्स होस्ट नावाच्या फक्त सुरवातीलाच येऊ शकतात.',
# Special:ListUsers
-'listusersfrom' => 'पà¥\81ढà¥\80ल शबà¥\8dदापासà¥\81न सुरू होणारे सदस्य दाखवा:',
+'listusersfrom' => 'पà¥\81ढà¥\80ल शबà¥\8dदापासà¥\82न सुरू होणारे सदस्य दाखवा:',
'listusers-submit' => 'दाखवा',
'listusers-noresult' => 'एकही सदस्य सापडला नाही.',
'listusers-blocked' => '(खंडित)',
-# Special:ActiveUsers
-'activeusers' => 'कार्यरत सदस्यांची यादी',
-'activeusers-intro' => '$1 {{PLURAL:$1|day|days}} मधे शेवटी काम केलेल्या सदस्यांची यादी येथे मिळेल',
-'activeusers-count' => 'शेवटच्या {{PLURAL:$3|दिवसात|$3 दिवसांत}} $1 {{PLURAL:$1|संपादन|संपादने}}',
-'activeusers-from' => 'पुढील शब्दापासुन सुरू होणारे सदस्य दाखवा:',
-'activeusers-hidebots' => 'सांगकामे लपवा',
-'activeusers-hidesysops' => 'प्रचालक लपवा',
-'activeusers-noresult' => 'एकही सदस्य सापडला नाही.',
-
# Special:ListGroupRights
'listgrouprights' => 'सदस्य गट अधिकार',
'listgrouprights-summary' => 'खाली या विकिवर दिलेली सदस्य गटांची यादी त्यांच्या अधिकारांसकट दर्शविलेली आहे. प्रत्येकाच्या अधिकारांची अधिक माहिती [[{{MediaWiki:Listgrouprights-helppage}}|इथे]] दिलेली आहे.',
# Email user
'mailnologin' => 'पाठविण्याचा पत्ता नाही',
-'mailnologintext' => 'à¤\87तर सदसà¥\8dयाà¤\82ना विपतà¥\8dर(à¤\88-मà¥\87ल) पाठवणà¥\8dयाà¤\95रिता तà¥\81मà¥\8dहà¥\80 [[Special:UserLogin|पà¥\8dरवà¥\87श à¤\95à¥\87लà¥\87ला]] à¤\85सणà¥\87 à¤\86णि पà¥\8dरमाणित (à¤\88-मà¥\87ल) पतà¥\8dता तà¥\81मà¤\9aà¥\8dया [[Special:Preferences|पसà¤\82तà¥\80त]] नमà¥\81द असणे आवश्यक आहे.',
+'mailnologintext' => 'à¤\87तर सदसà¥\8dयाà¤\82ना विपतà¥\8dर(à¤\88-मà¥\87ल) पाठवणà¥\8dयाà¤\95रिता तà¥\81मà¥\8dहà¥\80 [[Special:UserLogin|पà¥\8dरवà¥\87श à¤\95à¥\87लà¥\87ला]] à¤\85सणà¥\87 à¤\86णि पà¥\8dरमाणित (à¤\88-मà¥\87ल) पतà¥\8dता तà¥\81मà¤\9aà¥\8dया [[Special:Preferences|पसà¤\82तà¥\80त]] नमà¥\82द असणे आवश्यक आहे.',
'emailuser' => 'या सदस्याला ई-मेल पाठवा',
'emailuser-title-target' => '{{GENDER:$1|सदस्याला}} विपत्र पाठवा',
'emailuser-title-notarget' => 'विपत्र (ईमेल) उपयोगकर्ता',
'emailpage' => 'विपत्र (ईमेल) उपयोगकर्ता',
-'emailpagetext' => 'à¤\9cर या सदसà¥\8dयानà¥\87 पà¥\8dरमाणित विपतà¥\8dर (à¤\88मà¥\87ल)पतà¥\8dता तà¥\80à¤\9aà¥\8dया à¤\85थवा तà¥\8dयाà¤\9aà¥\8dया सदसà¥\8dय पसà¤\82तà¥\80त नमà¥\81द à¤\95à¥\87ला à¤\85सà¥\87ल,तर à¤\96ालà¥\80ल सारणà¥\80 तà¥\81मà¥\8dहाला à¤\8fà¤\95(à¤\9a) सà¤\82दà¥\87श पाठवà¥\87ल.तà¥\81मà¥\8dहà¥\80 तà¥\81मà¤\9aà¥\8dया [[Special:Preferences|सदसà¥\8dय पसà¤\82तà¥\80त]] नमà¥\81द केलेला विपत्र पत्ता "कडून" पत्त्यात येईल म्हणजे प्राप्तकरता आपल्याला उत्तर देऊ शकेल.',
+'emailpagetext' => 'à¤\9cर या सदसà¥\8dयानà¥\87 पà¥\8dरमाणित विपतà¥\8dर (à¤\88मà¥\87ल)पतà¥\8dता तिà¤\9aà¥\8dया à¤\85थवा तà¥\8dयाà¤\9aà¥\8dया सदसà¥\8dय पसà¤\82तà¥\80त नमà¥\82द à¤\95à¥\87ला à¤\85सà¥\87ल,तर à¤\96ालà¥\80ल सारणà¥\80 तà¥\81मà¥\8dहाला à¤\8fà¤\95(à¤\9a) सà¤\82दà¥\87श पाठवà¥\87ल.तà¥\81मà¥\8dहà¥\80 तà¥\81मà¤\9aà¥\8dया [[Special:Preferences|सदसà¥\8dय पसà¤\82तà¥\80त]] नमà¥\82द केलेला विपत्र पत्ता "कडून" पत्त्यात येईल म्हणजे प्राप्तकरता आपल्याला उत्तर देऊ शकेल.',
'usermailererror' => 'पत्र बाब त्रुटी वापस पाठवली:',
'defemailsubject' => '{{SITENAME}} "$1" सदस्याकडून विपत्र',
-'usermaildisabled' => 'सदसà¥\8dय विपतà¥\8dर निषà¥\8dà¤\95à¥\8dरà¥\80य आहे',
+'usermaildisabled' => 'सदसà¥\8dय विपतà¥\8dर निषà¥\8dà¤\95à¥\8dरिय आहे',
'usermaildisabledtext' => 'या विकिवर तुम्हाला इतर सदस्यांना विपत्रे पाठवता येत नाहीत',
'noemailtitle' => 'विपत्र पत्ता नाही',
'noemailtext' => 'या सदस्याने वैध विपत्र पत्ता नमूद केलेला नाही.',
'nowikiemailtitle' => 'विपत्र प्रतिबंधित',
-'nowikiemailtext' => 'हा पà¥\8dरयà¥\8bà¤\95à¥\8dता à¤\85नà¥\8dय पà¥\8dरयà¥\8bà¤\95à¥\8dता à¤\95डà¥\81न à¤\88-मà¥\87ल à¤\98à¥\87à¤\8a à¤\88च्छित नाही.',
+'nowikiemailtext' => 'हा पà¥\8dरयà¥\8bà¤\95à¥\8dता à¤\85नà¥\8dय पà¥\8dरयà¥\8bà¤\95à¥\8dता à¤\95डà¥\82न à¤\88-मà¥\87ल à¤\98à¥\87à¤\8a à¤\87च्छित नाही.',
'emailnotarget' => 'प्राप्तकर्ता करीता अस्तित्वात नसलेले किंवा अवैध सदस्य',
'emailtarget' => 'प्राप्तकर्ता प्रयोक्ताचे नांव टाका.',
'emailusername' => 'सदस्यनाम:',
'watchthispage' => 'या पानावर बदलांसाठी लक्ष ठेवा.',
'unwatch' => 'पहारा काढा',
'unwatchthispage' => 'पहारा काढून टाका',
-'notanarticle' => 'मà¤\9cà¤\95à¥\81र विरहà¥\80त पान',
+'notanarticle' => 'मà¤\9cà¤\95à¥\81र विरहित पान',
'notvisiblerev' => 'आवृत्ती वगळण्यात आलेली आहे',
'watchnochange' => 'प्रदर्शित कालावधीत, तुम्ही नित्य पहाण्यासाठी ठेवलेली कोणतीही बाब संपादित झाली नाही.',
'watchlist-details' => '{{PLURAL:$1|$1 पान|$1 पाने}} पहाऱ्याच्या सूचीमध्ये, चर्चा पाने मोजलेले नाहीत.',
-'wlheader-enotif' => '* विपतà¥\8dर सà¥\82à¤\9aना सà¥\81विधा à¤\8aपलब्ध केली.',
+'wlheader-enotif' => '* विपतà¥\8dर सà¥\82à¤\9aना सà¥\81विधा à¤\89पलब्ध केली.',
'wlheader-showupdated' => "* तुम्ही पानांस दिलेल्या शेवटच्या भेटी पासून बदललेली पाने '''ठळक''' दाखवली आहेत.",
'watchmethod-recent' => 'पहाऱ्यातील पानांकरिता अलीकडील बदलांचा तपास',
'watchmethod-list' => 'अलीकडील बदलांकरिता पहाऱ्यातील पानांचा तपास',
'watcherrortext' => '$1 साठीच्या तुमच्या पहाऱ्याच्या सूचीमधील मांडणीत (watchlist settings) बदल करताना त्रुटी आली.',
'enotif_mailer' => '{{SITENAME}} सूचना विपत्र',
-'enotif_reset' => 'सरà¥\8dव पानास à¤à¥\87à¤\9f दिलà¥\8dयाà¤\9aà¥\87 नमà¥\81द करा',
+'enotif_reset' => 'सरà¥\8dव पानास à¤à¥\87à¤\9f दिलà¥\8dयाà¤\9aà¥\87 नमà¥\82द करा',
'enotif_impersonal_salutation' => '{{SITENAME}} सदस्य',
'enotif_subject_deleted' => '{{SITENAME}} पानाला $1 {{gender:$2|$2}} ने वगळले',
'enotif_subject_created' => '{{SITENAME}} पान $1 {{gender:$2|$2}} ने तयार केले',
'delete-legend' => 'वगळा',
'historywarning' => 'सूचना: तुम्ही वगळत असलेल्या पानाला $1 {{PLURAL:$1|आवर्तनाचा|आवर्तनांचा}} इतिहास आहे:',
'confirmdeletetext' => 'तुम्ही एक लेख त्याच्या सर्व इतिहासासोबत वगळण्याच्या तयारीत आहात.
-à¤\95à¥\83पया तà¥\81मà¥\8dहà¥\80 à¤\95रत à¤\85सलà¥\87लà¥\80 à¤\95à¥\83तà¥\80 हà¥\80 मà¥\80डियाविà¤\95à¥\80à¤\9aà¥\8dया [[{{MediaWiki:Policy-url}}|नà¥\80तà¥\80नà¥\81सार]] à¤\86हà¥\87 हà¥\8dयाà¤\9aà¥\80 à¤\96ातà¥\8dरà¥\80 à¤\95रा. तसà¥\87à¤\9a तà¥\81मà¥\8dहà¥\80 à¤\95रà¥\80त à¤\85सलà¥\87लà¥\8dया à¤\95à¥\83तà¥\80à¤\9aà¥\87 परà¥\80णाम कृती करण्यापूर्वी जाणून घ्या.',
+à¤\95à¥\83पया तà¥\81मà¥\8dहà¥\80 à¤\95रत à¤\85सलà¥\87लà¥\80 à¤\95à¥\83तà¥\80 हà¥\80 मà¥\80डियाविà¤\95à¥\80à¤\9aà¥\8dया [[{{MediaWiki:Policy-url}}|नà¥\80तà¥\80नà¥\81सार]] à¤\86हà¥\87 हà¥\8dयाà¤\9aà¥\80 à¤\96ातà¥\8dरà¥\80 à¤\95रा. तसà¥\87à¤\9a तà¥\81मà¥\8dहà¥\80 à¤\95रित à¤\85सलà¥\87लà¥\8dया à¤\95à¥\83तà¥\80à¤\9aà¥\87 परिणाम कृती करण्यापूर्वी जाणून घ्या.',
'actioncomplete' => 'काम पूर्ण',
'actionfailed' => 'कृती अयशस्वी झाली',
'deletedtext' => '"$1" हा लेख वगळला. अलीकडे वगळलेले लेख पाहण्यासाठी $2 पहा.',
'rollbacklinkcount-morethan' => '$1 पेक्षा अधिक उलटवा {{PLURAL:$1|संपादन|संपादने}}',
'rollbackfailed' => 'द्रूतमाघार फसली',
'cantrollback' => 'जुन्या आवृत्तीकडे परतवता येत नाही; शेवटचा संपादक या पानाचा एकमात्र लेखक आहे.',
-'alreadyrolled' => '[[User:$2|$2]] ([[User talk:$2|Talk]] [[Special:Contributions/$2|{{int:contribslink}}]])à¤\9aà¥\87 शà¥\87वà¤\9fाà¤\9aà¥\87 [[:$1]]वà¥\87 सà¤\82पादन माà¤\98ारà¥\80 परतवता यà¥\87त नाहà¥\80; पान à¤\86धà¥\80à¤\9a à¤\95à¥\81णà¥\80 माà¤\98ारà¥\80 परतवलà¥\87 à¤\86हà¥\87 à¤\95िà¤\82वा सà¤\82पादà¥\80त केले आहे.
+'alreadyrolled' => '[[User:$2|$2]] ([[User talk:$2|Talk]] [[Special:Contributions/$2|{{int:contribslink}}]])à¤\9aà¥\87 शà¥\87वà¤\9fाà¤\9aà¥\87 [[:$1]]वà¥\87 सà¤\82पादन माà¤\98ारà¥\80 परतवता यà¥\87त नाहà¥\80; पान à¤\86धà¥\80à¤\9a à¤\95à¥\81णà¥\80 माà¤\98ारà¥\80 परतवलà¥\87 à¤\86हà¥\87 à¤\95िà¤\82वा सà¤\82पादित केले आहे.
शेवटचे संपादन [[User:$3|$3]] ([[User talk:$3|Talk]] [[Special:Contributions/$3|{{int:contribslink}}]])-चे होते.',
'editcomment' => "संपादन सारांश \"''\$1''\" होता.",
'revertpage' => '[[Special:Contributions/$2|$2]] ([[User talk:$2|चर्चा]]) यांनी केलेले बदल [[User:$1|$1]] यांच्या आवृत्तीकडे पूर्वपदास नेले.',
-'revertpage-nouser' => '(सदसà¥\8dयनाम à¤\95ाढà¥\82न à¤\9fाà¤\95लà¥\87) याà¤\82à¤\9aà¥\87 बदल à¤\89लà¤\9fवà¥\81न [[User:$1|$1]] यांच्या मागील आवृत्तीस न्या.',
+'revertpage-nouser' => '(सदसà¥\8dयनाम à¤\95ाढà¥\82न à¤\9fाà¤\95लà¥\87) याà¤\82à¤\9aà¥\87 बदल à¤\89लà¤\9fवà¥\82न [[User:$1|$1]] यांच्या मागील आवृत्तीस न्या.',
'rollback-success' => '$1 ने उलटवलेली संपादने;$2 च्या आवृत्तीस परत नेली.',
# Edit tokens
# Protect
'protectlogpage' => 'सुरक्षा नोंदी',
-'protectlogtext' => 'पानाà¤\82ना लावलà¥\87लà¥\8dया ताळà¥\8dयाà¤\82à¤\9aà¥\80 à¤\86णि ताळà¥\87 à¤\89à¤\98डणà¥\8dयाबदà¥\8dदलà¤\9aà¥\8dया पानाà¤\9aà¥\80 à¤\96ालà¥\80 सà¥\82à¤\9aà¥\80 दिलà¥\80 à¤\86हà¥\87.सधà¥\8dयाà¤\9aà¥\8dया सà¥\81रà¤\95à¥\8dषà¥\80त पानांबद्दलच्या माहितीकरिता [[Special:ProtectedPages|सुरक्षीत पानांची सूची]] पहा.',
+'protectlogtext' => 'पानाà¤\82ना लावलà¥\87लà¥\8dया ताळà¥\8dयाà¤\82à¤\9aà¥\80 à¤\86णि ताळà¥\87 à¤\89à¤\98डणà¥\8dयाबदà¥\8dदलà¤\9aà¥\8dया पानाà¤\9aà¥\80 à¤\96ालà¥\80 सà¥\82à¤\9aà¥\80 दिलà¥\80 à¤\86हà¥\87.सधà¥\8dयाà¤\9aà¥\8dया सà¥\81रà¤\95à¥\8dषित पानांबद्दलच्या माहितीकरिता [[Special:ProtectedPages|सुरक्षीत पानांची सूची]] पहा.',
'protectedarticle' => '"[[$1]]" सुरक्षित केला',
'modifiedarticleprotection' => '"[[$1]]"करिता सुरक्षापातळी बदलली',
'unprotectedarticle' => '"[[$1]]" असुरक्षित केला.',
'protect-title-notallowed' => '"$1" ची सुरक्षा पातळी पहा',
'prot_1movedto2' => '"[[$1]]" हे पान "[[$2]]" मथळ्याखाली स्थानांतरित केले.',
'protect-badnamespace-title' => 'असुरक्षणीय नामविश्व',
-'protect-badnamespace-text' => 'या नामविशà¥\8dवातà¥\80ल पानà¥\87 सà¥\81रà¤\95à¥\8dषà¥\80त करता येत नाहीत',
+'protect-badnamespace-text' => 'या नामविशà¥\8dवातà¥\80ल पानà¥\87 सà¥\81रà¤\95à¥\8dषित करता येत नाहीत',
'protect-norestrictiontypes-text' => 'हे पान सुरक्षित होऊ शकत नाही कारण कोणताही सुरक्षापातळी प्रकार उपलब्ध नाही.',
'protect-norestrictiontypes-title' => 'सुरक्षापातळी नसलेले पान',
'protect-legend' => 'सुरक्षापातळीतील बदल निर्धारित करा',
'protect_expiry_old' => 'संपण्याचा कालावधी उलटून गेलेला आहे.',
'protect-unchain-permissions' => 'पुढील संरक्षित विकल्प उघडा.',
'protect-text' => "'''$1''' या पानाची सुरक्षापातळी तुम्ही इथे पाहू शकता अथवा बदलू शकता.",
-'protect-locked-blocked' => "तà¥\81मà¥\8dहà¥\80 पà¥\8dरतिबà¤\82धà¥\80त असताना सुरक्षा पातळी बदलू शकत नाही.येथे '''$1''' पानाकरिता सध्याची मांडणावळ आहे:",
+'protect-locked-blocked' => "तà¥\81मà¥\8dहà¥\80 पà¥\8dरतिबà¤\82धित असताना सुरक्षा पातळी बदलू शकत नाही.येथे '''$1''' पानाकरिता सध्याची मांडणावळ आहे:",
'protect-locked-dblock' => "विदागारास ताळे लागलेले असताना सुरक्षा पातळी बदलता येत नाही.येथे '''$1''' पानाकरिता सध्याची मांडणावळ आहे:",
'protect-locked-access' => "तुम्हाला या पानाची सुरक्षा पातळी बदलण्याचे अधिकार नाहीत.
'''$1''' या पानाची सुरक्षा पातळी पुढीलप्रमाणे:",
'protect-existing-expiry' => 'शेवट दिनांक: $3, $2',
'protect-otherreason' => 'इतर / अतिरिक्त कारण:',
'protect-otherreason-op' => 'दुसरे कारण',
-'protect-dropdown' => '* सà¥\81रà¤\95à¥\8dषà¥\80त करण्याची सामान्य कारणे
+'protect-dropdown' => '* सà¥\81रà¤\95à¥\8dषित करण्याची सामान्य कारणे
** अती उपद्रव
** अती उत्पात
** अनुत्पादक संपादन युद्ध
'undeletepage' => 'वगळलेली पाने पहा आणि पुनर्स्थापित करा',
'undeletepagetitle' => "'''खाली [[:$1]] च्या वगळलेल्या आवृत्त्या समाविष्ट केलेल्या आहेत'''.",
'viewdeletedpage' => 'काढून टाकलेले लेख पहा',
-'undeletepagetext' => 'à¤\96ालà¥\80ल {{PLURAL:$1|पान वà¤\97ळलà¥\87 à¤\86हà¥\87 तरà¥\80सà¥\81दà¥\8dधा विदाà¤\97ारात à¤\9cतन à¤\86हà¥\87 à¤\86णि पà¥\81रà¥\8dनà¥\8dसà¥\8dथापित à¤\95रणà¥\87 शà¤\95à¥\8dय à¤\86हà¥\87|$1 पानà¥\87 वà¤\97ळलà¥\80 à¤\86हà¥\87त तरà¥\80 सà¥\81दà¥\8dधा विदाà¤\97ारात à¤\9cतन à¤\86हà¥\87त à¤\86णि पà¥\81रà¥\8dनà¥\8dसà¥\8dथापित à¤\95रणà¥\87 शà¤\95à¥\8dय à¤\86हà¥\87त}}. विदाà¤\97ारातà¥\80ल साठवण ठराविक कालावधीने स्वच्छ करता येते.',
+'undeletepagetext' => 'à¤\96ालà¥\80ल {{PLURAL:$1|पान वà¤\97ळलà¥\87 à¤\86हà¥\87 तरà¥\80सà¥\81दà¥\8dधा विदाà¤\97ारात à¤\9cतन à¤\86हà¥\87 à¤\86णि पà¥\81रà¥\8dनà¥\8dसà¥\8dथापित à¤\95रणà¥\87 शà¤\95à¥\8dय à¤\86हà¥\87|$1 पानà¥\87 वà¤\97ळलà¥\80 à¤\86हà¥\87त तरà¥\80 सà¥\81दà¥\8dधा विदाà¤\97ारात à¤\9cतन à¤\86हà¥\87त à¤\86णि पà¥\81रà¥\8dनà¥\8dसà¥\8dथापित à¤\95रणà¥\87 शà¤\95à¥\8dय à¤\86हà¥\87त}}. विदाà¤\97ारातà¥\80ल साठवण ठरावà¥\80क कालावधीने स्वच्छ करता येते.',
'undelete-fieldset-title' => 'आवर्तने पुनर्स्थापित करा',
-'undeleteextrahelp' => "सà¤\82पà¥\82रà¥\8dण पान पà¥\81नरà¥\8dसà¥\8dथापित à¤\95रणà¥\8dयाà¤\95रिता,सारà¥\87 रà¤\95ानà¥\87 रिà¤\95ामà¥\87 ठà¥\87वा à¤\86णि '''''पà¥\81नरà¥\8dसà¥\8dथापन'''''वर à¤\9fिà¤\9aà¤\95à¥\80 मारा. निवडà¤\95 पà¥\81नरà¥\8dसà¥\8dथापन à¤\95रणà¥\8dयाà¤\95रिता, à¤\9cà¥\8dया à¤\86वरà¥\8dतनाà¤\82à¤\9aà¥\87 पà¥\81नरà¥\8dसà¥\8dथापन à¤\95रावयाà¤\9aà¥\87 तà¥\8dयाà¤\82à¤\9aà¥\87 रà¤\95ानà¥\87 निवडा , à¤\86णि '''''पà¥\81नरà¥\8dसà¥\8dथापन'''''वर à¤\9fिà¤\9aà¤\95à¥\80 मारा. '''''पà¥\81नरà¥\8dयà¥\8bà¤\9cन ''''' वर à¤\9fिà¤\9aà¤\95à¥\80 मारलà¥\8dयास सारà¥\87 रà¤\95ानà¥\87 à¤\86णि पà¥\8dरतिà¤\95à¥\8dरà¥\80या खिडकी रिकामी होईल.",
+'undeleteextrahelp' => "सà¤\82पà¥\82रà¥\8dण पान पà¥\81नरà¥\8dसà¥\8dथापित à¤\95रणà¥\8dयाà¤\95रिता,सारà¥\87 रà¤\95ानà¥\87 रिà¤\95ामà¥\87 ठà¥\87वा à¤\86णि '''''पà¥\81नरà¥\8dसà¥\8dथापन'''''वर à¤\9fिà¤\9aà¤\95à¥\80 मारा. निवडà¤\95 पà¥\81नरà¥\8dसà¥\8dथापन à¤\95रणà¥\8dयाà¤\95रिता, à¤\9cà¥\8dया à¤\86वरà¥\8dतनाà¤\82à¤\9aà¥\87 पà¥\81नरà¥\8dसà¥\8dथापन à¤\95रावयाà¤\9aà¥\87 तà¥\8dयाà¤\82à¤\9aà¥\87 रà¤\95ानà¥\87 निवडा , à¤\86णि '''''पà¥\81नरà¥\8dसà¥\8dथापन'''''वर à¤\9fिà¤\9aà¤\95à¥\80 मारा. '''''पà¥\81नरà¥\8dयà¥\8bà¤\9cन ''''' वर à¤\9fिà¤\9aà¤\95à¥\80 मारलà¥\8dयास सारà¥\87 रà¤\95ानà¥\87 à¤\86णि पà¥\8dरतिà¤\95à¥\8dरिया खिडकी रिकामी होईल.",
'undeleterevisions' => '$1 {{PLURAL:$1|आवर्तन|आवर्तने}}विदागारात संचीत',
'undeletehistory' => 'जर तुम्ही पान पुनर्स्थापित केले तर ,सारी आवर्तने इतिहासात पुनर्स्थापित होतील.
वगळल्या पासून त्याच नावाचे नवे पान तयार केले गेले असेले तर, पुनर्स्थापित आवर्तने पाठीमागील इतिहासात दिसतील. पुनर्स्थापना नंतर संचिकांच्या आवर्तनांवरील बंधने गळून पडतील याची नोंद घ्या.',
'undeleterevdel' => 'पृष्ठ पानाचे आवर्तन अर्धवट वगळले जाणार असेल तर पुनर्स्थापनाची कृती केली जाणार नाही.
अशा प्रसंगी, तुम्ही अगदी अलीकडील वगळलेली आवर्तने अनचेक किंवा अनहाईड केलीच पाहिजे.',
-'undeletehistorynoadmin' => 'हà¥\87 पान वà¤\97ळलà¥\87 à¤\97à¥\87लà¥\87 à¤\86हà¥\87.वà¤\97ळणà¥\8dयाà¤\9aà¥\87 à¤\95ारण à¤\96ालà¥\80ल à¤\86ढावà¥\8dयात,वà¤\97ळणà¥\8dयापà¥\82रà¥\8dवà¥\80 सà¤\82पादà¥\80त à¤\95रणाऱà¥\8dया सà¤\82पादà¤\95ाà¤\82à¤\9aà¥\8dया माहितà¥\80 सà¥\8bबत,दाà¤\96वलà¥\87 à¤\86हà¥\87. वà¤\97ळलà¥\87लà¥\8dया à¤\86वरà¥\8dतà¥\8dनाà¤\82à¤\9aा नà¥\87मà¤\95ा मà¤\9cà¤\95à¥\81र केवळ प्रचालकांना उपलब्ध असेल.',
+'undeletehistorynoadmin' => 'हà¥\87 पान वà¤\97ळलà¥\87 à¤\97à¥\87लà¥\87 à¤\86हà¥\87.वà¤\97ळणà¥\8dयाà¤\9aà¥\87 à¤\95ारण à¤\96ालà¥\80ल à¤\86ढावà¥\8dयात,वà¤\97ळणà¥\8dयापà¥\82रà¥\8dवà¥\80 सà¤\82पादित à¤\95रणाऱà¥\8dया सà¤\82पादà¤\95ाà¤\82à¤\9aà¥\8dया माहितà¥\80 सà¥\8bबत,दाà¤\96वलà¥\87 à¤\86हà¥\87. वà¤\97ळलà¥\87लà¥\8dया à¤\86वरà¥\8dतà¥\8dनाà¤\82à¤\9aा नà¥\87मà¤\95ा मà¤\9cà¤\95à¥\82र केवळ प्रचालकांना उपलब्ध असेल.',
'undelete-revision' => '$1चे($4चे, $5 येथील) आवर्तन $3 ने वगळले:',
-'undeleterevision-missing' => 'à¤\85यà¥\8bà¤\97à¥\8dय à¤\85थवा नसापडणारà¥\87 à¤\86वरà¥\8dतन. तà¥\81मà¤\9aा दà¥\81वा à¤\95दाà¤\9aित à¤\9aà¥\82कीचा असेल, किंवा आवर्तन पुनर्स्थापित केले गेले असेल किंवा विदागारातून वगळले असेल.',
+'undeleterevision-missing' => 'à¤\85यà¥\8bà¤\97à¥\8dय à¤\85थवा नसापडणारà¥\87 à¤\86वरà¥\8dतन. तà¥\81मà¤\9aा दà¥\81वा à¤\95दाà¤\9aित à¤\9aà¥\81कीचा असेल, किंवा आवर्तन पुनर्स्थापित केले गेले असेल किंवा विदागारातून वगळले असेल.',
'undelete-nodiff' => 'पूर्वीचे कोणतेही आवर्तन आढळले नाही.',
'undeletebtn' => 'वगळण्याची क्रिया रद्द करा',
'undeletelink' => 'पहा/पुनर्स्थापित करा',
'undelete-header' => 'अलीकडील वगळलेल्या पानांकरिता [[Special:Log/delete|वगळलेल्या नोंदी]] पहा.',
'undelete-search-title' => 'वगळलेली पाने शोधा',
'undelete-search-box' => 'वगळलेली पाने शोधा',
-'undelete-search-prefix' => 'पासà¥\82न सà¥\82रू होणारी पाने दाखवा:',
+'undelete-search-prefix' => 'पासà¥\82न सà¥\81रू होणारी पाने दाखवा:',
'undelete-search-submit' => 'शोध',
'undelete-no-results' => 'वगळलेल्यांच्या विदांमध्ये जुळणारी पाने सापडली नाहीत.',
'undelete-filename-mismatch' => '$1 वेळेचे, वगळलेल्या संचिकेचे आवर्तन उलटवता येत नाही: नजुळणारे संचिकानाव',
'undelete-bad-store-key' => '$1 वेळ दिलेली संचिका आवर्तन पुनर्स्थापित करता येत नाही:संचिका वगळण्यापूर्वी पासून मिळाली नव्हती.',
-'undelete-cleanup-error' => 'न वापरलà¥\87लà¥\80 विदा सà¤\82à¤\9aिà¤\95ा "$1" वà¤\97ळताना तà¥\8dरà¥\82टी दाखवते.',
+'undelete-cleanup-error' => 'न वापरलà¥\87लà¥\80 विदा सà¤\82à¤\9aिà¤\95ा "$1" वà¤\97ळताना तà¥\8dरà¥\81टी दाखवते.',
'undelete-missing-filearchive' => 'संचिका विदास्मृती ID $1 पुनर्स्थापित करू शकत नाही कारण ती विदागारात उपलब्ध नाही. ती आधीच पुनर्स्थापित केली असण्याची शक्यता सुद्धा असू शकते.',
-'undelete-error' => 'à¤\9cर पाना à¤\95ाढà¥\81न नाही टाकले तर पान शीर्षक',
+'undelete-error' => 'à¤\9cर पाना à¤\95ाढà¥\82न नाही टाकले तर पान शीर्षक',
'undelete-error-short' => 'संचिकेचे वगळणे उलटवताना त्रूटी: $1',
-'undelete-error-long' => 'सà¤\82à¤\9aिà¤\95à¥\87à¤\9aà¥\87 वà¤\97ळणà¥\87 à¤\89लà¤\9fवताना तà¥\8dरà¥\82टींचा अडथळा आला:
+'undelete-error-long' => 'सà¤\82à¤\9aिà¤\95à¥\87à¤\9aà¥\87 वà¤\97ळणà¥\87 à¤\89लà¤\9fवताना तà¥\8dरà¥\81टींचा अडथळा आला:
$1',
'undelete-show-file-confirm' => 'तुम्ही "<nowiki>$1</nowiki>" या संचिकेचे $2 येथून $3 वेळी असलेले आवर्तन नक्की पहाणार आहात?',
# Namespace form on various pages
'namespace' => 'नामविश्व:',
'invert' => 'निवडीचा क्रम उलटा करा',
-'tooltip-invert' => 'निवडलà¥\87लà¥\8dया नामविशà¥\8dवातà¥\80ल (à¤\86णि तसà¥\87 निवडलà¥\8dयास सà¤\82बà¤\82धà¥\80त नामविश्वातील) पानांचे बदल अदृष्य करण्या साटी टिचकी मारा',
+'tooltip-invert' => 'निवडलà¥\87लà¥\8dया नामविशà¥\8dवातà¥\80ल (à¤\86णि तसà¥\87 निवडलà¥\8dयास सà¤\82बà¤\82धित नामविश्वातील) पानांचे बदल अदृष्य करण्या साटी टिचकी मारा',
'namespace_association' => 'सहभागी नामविश्वे',
'tooltip-namespace_association' => 'निवडलेल्या नामविश्वासंबधीत विषय अथवा चर्चा नामविश्वसुद्धा आंतर्भूत करण्याकरिता हा बॉक्स टिचकवून चिह्नित करा',
'blanknamespace' => '(मुख्य)',
'blockip' => 'हा अंकपत्ता अडवा',
'blockip-title' => 'सदस्यास प्रतिबंध करा',
'blockip-legend' => 'सदस्यास प्रतिबंध करा',
-'blockiptext' => 'à¤\8fà¤\96ादà¥\8dया विशिषà¥\8dà¤\9f à¤\85à¤\82à¤\95पतà¥\8dतà¥\8dयाà¤\9aà¥\80 à¤\95िà¤\82वा सदसà¥\8dयाà¤\9aà¥\80 लिहिणà¥\8dयाà¤\9aà¥\80 à¤\95à¥\8dषमता पà¥\8dरतिबà¤\82धà¥\80त करण्याकरिता खालील सारणी वापरा.
+'blockiptext' => 'à¤\8fà¤\96ादà¥\8dया विशिषà¥\8dà¤\9f à¤\85à¤\82à¤\95पतà¥\8dतà¥\8dयाà¤\9aà¥\80 à¤\95िà¤\82वा सदसà¥\8dयाà¤\9aà¥\80 लिहिणà¥\8dयाà¤\9aà¥\80 à¤\95à¥\8dषमता पà¥\8dरतिबà¤\82धित करण्याकरिता खालील सारणी वापरा.
हे केवळ उच्छेद टाळण्याच्याच दृष्टीने आणि [[{{MediaWiki:Policy-url}}|निती]]स अनुसरून केले पाहिजे.
खाली विशिष्ट कारण भरा(उदाहरणार्थ,ज्या पानांवर उच्छेद माजवला गेला त्यांची उद्धरणे देऊन).',
'ipadressorusername' => 'अंकपत्ता किंवा सदस्यनाम:',
** असंख्य खात्यांचा गैरवापर
** अस्वीकार्य सदस्यनाम',
'ipb-hardblock' => 'या अंक पत्यावरुन (IP address) प्रवेश केलेल्या सदस्यांना बदल करण्यापासून प्रतिबंध करा.',
-'ipbcreateaccount' => 'à¤\96ातà¥\8dयाà¤\9aà¥\80 निरà¥\8dमितà¥\80 पà¥\8dरतिबà¤\82धà¥\80त करा',
-'ipbemailban' => 'सदसà¥\8dयाà¤\82ना विपतà¥\8dर पाठवणà¥\8dयापासà¥\82न पà¥\8dरतिबà¤\82धà¥\80त करा',
-'ipbenableautoblock' => 'या सदसà¥\8dयानà¥\87 वापरलà¥\87ला शà¥\87वà¤\9fà¤\9aा à¤\85à¤\82à¤\95पतà¥\8dता à¤\86णि à¤\9cà¥\87थà¥\82न या पà¥\81ढà¥\87 तà¥\8b सà¤\82पादनाà¤\9aा पà¥\8dरयतà¥\8dन à¤\95रà¥\87ल तà¥\87 सरà¥\8dव à¤\85à¤\82à¤\95पतà¥\8dतà¥\87 à¤\86पà¥\8bà¤\86प पà¥\8dरतिबà¤\82धà¥\80त करा.',
+'ipbcreateaccount' => 'à¤\96ातà¥\8dयाà¤\9aà¥\80 निरà¥\8dमितà¥\80 पà¥\8dरतिबà¤\82धित करा',
+'ipbemailban' => 'सदसà¥\8dयाà¤\82ना विपतà¥\8dर पाठवणà¥\8dयापासà¥\82न पà¥\8dरतिबà¤\82धित करा',
+'ipbenableautoblock' => 'या सदसà¥\8dयानà¥\87 वापरलà¥\87ला शà¥\87वà¤\9fà¤\9aा à¤\85à¤\82à¤\95पतà¥\8dता à¤\86णि à¤\9cà¥\87थà¥\82न या पà¥\81ढà¥\87 तà¥\8b सà¤\82पादनाà¤\9aा पà¥\8dरयतà¥\8dन à¤\95रà¥\87ल तà¥\87 सरà¥\8dव à¤\85à¤\82à¤\95पतà¥\8dतà¥\87 à¤\86पà¥\8bà¤\86प पà¥\8dरतिबà¤\82धित करा.',
'ipbsubmit' => 'हा पत्ता अडवा',
'ipbother' => 'इतर वेळ:',
'ipboptions' => '२ तास:2 hours,१ दिवस:1 day,३ दिवस:3 days,१ आठवडा:1 week,२ आठवडे:2 weeks,१ महिना:1 month,३ महिने:3 months,६ महिने:6 months,१ वर्ष:1 year,अनंत:infinite',
'ipbotherreason' => 'इतर/अजून कारण:',
'ipbhidename' => 'सदस्य नाम प्रतिबंधन नोंदी, प्रतिबंधनाची चालू यादी आणि सदस्य यादी इत्यादीतून लपवा',
'ipbwatchuser' => 'या सदस्याच्या सदस्य तसेच चर्चा पानावर पहारा ठेवा',
-'ipb-disableusertalk' => 'सदसà¥\8dयास सà¥\8dवत:à¤\9aà¥\87 à¤\9aरà¥\8dà¤\9aापान सà¤\82पादणà¥\8dयापासà¥\82न पà¥\8dरतिबà¤\82धà¥\80त करा',
+'ipb-disableusertalk' => 'सदसà¥\8dयास सà¥\8dवत:à¤\9aà¥\87 à¤\9aरà¥\8dà¤\9aापान सà¤\82पादणà¥\8dयापासà¥\82न पà¥\8dरतिबà¤\82धित करा',
'ipb-change-block' => 'युपयोगकर्ताला पुन्हा ब्लाक करा सोबत स्थानिक सेथिँग.',
'ipb-confirm' => 'अडथाळा सुनिश्चित करा.',
'badipaddress' => 'अंकपत्ता बरोबर नाही.',
'blockipsuccesssub' => 'अडवणूक यशस्वी झाली',
-'blockipsuccesstext' => '[[Special:Contributions/$1|$1]]ला पà¥\8dरतिबà¤\82धà¥\80त केले.<br />
+'blockipsuccesstext' => '[[Special:Contributions/$1|$1]]ला पà¥\8dरतिबà¤\82धित केले.<br />
प्रतिबंधनांचा आढावा घेण्याकरिता [[Special:BlockList|अंकपत्ता प्रतिबंधन सूची]] पहा.',
'ipb-blockingself' => 'तुम्ही स्वतःलाच प्रतिबंधित करत आहात! तुम्ही ते नक्की करणार आहात का?',
'ipb-confirmhideuser' => 'तुमच्याकडून सदस्य प्रतिबंधनासोबतच "सदस्य लपवला" जातो आहे.या कृउतीने सर्व याद्या आणि नोंदीतून सदस्य नाव लपविले जाते.असे करावयाचे आहे या बद्दल आपली खात्री आहे काय ?',
'expiringblock' => 'समाप्ति $1 $2',
'anononlyblock' => 'केवळ अनामिक',
'noautoblockblock' => 'स्व्यंचलितप्रतिबंधन स्थगित केले',
-'createaccountblock' => 'à¤\96ातà¥\8dयाà¤\9aà¥\80 निरà¥\8dमितà¥\80 पà¥\8dरतिबà¤\82धà¥\80त केली',
+'createaccountblock' => 'à¤\96ातà¥\8dयाà¤\9aà¥\80 निरà¥\8dमितà¥\80 पà¥\8dरतिबà¤\82धित केली',
'emailblock' => 'विपत्र प्रतिबंधीत',
'blocklist-nousertalk' => 'ला स्वतःचे चर्चापान संपादता येत नाही',
'ipblocklist-empty' => 'प्रतिबंधन यादी रिकामी आहे.',
-'ipblocklist-no-results' => 'विनà¤\82तà¥\80 à¤\95à¥\87लà¥\87ला à¤\85à¤\82à¤\95पतà¥\8dता à¤\85थवा सदसà¥\8dयनाव पà¥\8dरतिबà¤\82धà¥\80त केलेले नाही.',
+'ipblocklist-no-results' => 'विनà¤\82तà¥\80 à¤\95à¥\87लà¥\87ला à¤\85à¤\82à¤\95पतà¥\8dता à¤\85थवा सदसà¥\8dयनाव पà¥\8dरतिबà¤\82धित केलेले नाही.',
'blocklink' => 'अडवा',
'unblocklink' => 'सोडवा',
'change-blocklink' => 'ब्लॉक बदला',
'autoblocker' => 'स्वयंचलितप्रतिबंधन केले गेले कारण तुमचा अंकपत्ता अलीकडे "[[User:$1|$1]]"ने वापरला होता. $1 च्या प्रतिबंधनाकरिता दिलेले कारण: "$2" आहे.',
'blocklogpage' => 'ब्लॉक यादी',
'blocklog-showlog' => 'या सदस्यावर आधी बन्दी घालन्यात आली आहे. बन्दी सन्दर्भातील अधिक नोन्दी येथे आहेत',
-'blocklog-showsuppresslog' => 'हा सदसà¥\8dय पà¥\81रà¥\8dवà¥\80 पà¥\8dरतिबà¤\82धà¥\80त अथवा लपविला गेला होता.
+'blocklog-showsuppresslog' => 'हा सदसà¥\8dय पà¥\82रà¥\8dवà¥\80 पà¥\8dरतिबà¤\82धित अथवा लपविला गेला होता.
लपविलेल्या नोंदी खाली संदर्भाकरिता उपलब्ध आहेत.',
'blocklogentry' => '[[$1]] ला $2 $3 पर्यंत ब्लॉक केलेले आहे',
-'reblock-logentry' => ' $2 $3 हि à¤\85à¤\82तà¥\80म वेळ देऊन [[$1]] चे प्रतिबंधन बदलले',
+'reblock-logentry' => ' $2 $3 हà¥\80 à¤\85à¤\82तिम वेळ देऊन [[$1]] चे प्रतिबंधन बदलले',
'blocklogtext' => 'ही सदस्यांच्या प्रतिबंधनाची आणि प्रतिबंधने उठवल्याची नोंद आहे.
-à¤\86पà¥\8bà¤\86प पà¥\8dरतिबà¤\82धà¥\80त केलेले अंकपत्ते नमूद केलेले नाहीत.
+à¤\86पà¥\8bà¤\86प पà¥\8dरतिबà¤\82धित केलेले अंकपत्ते नमूद केलेले नाहीत.
सध्या लागू असलेली बंदी व प्रतिबंधनांच्या यादीकरिता [[Special:BlockList|अंकपत्ता प्रतिबंधन सूची]] पहा.',
'unblocklogentry' => 'प्रतिबंधन $1 हटवले',
'block-log-flags-anononly' => 'केवळ अनामिक सदस्य',
'block-log-flags-hiddenname' => 'सदस्यनाम लपवलेले आहे',
'range_block_disabled' => 'प्रचालकांची पल्ला बंधने घालण्याची क्षमता अनुपलब्ध केली आहे.',
'ipb_expiry_invalid' => 'अयोग्य समाप्ती काळ.',
-'ipb_expiry_temp' => 'लपविलà¥\87लà¥\87 सदसà¥\8dयनाम पà¥\8dरतिबà¤\82धन à¤\95ायमसà¥\8dवरà¥\81पी असले पाहिजे.',
+'ipb_expiry_temp' => 'लपविलà¥\87लà¥\87 सदसà¥\8dयनाम पà¥\8dरतिबà¤\82धन à¤\95ायमसà¥\8dवरà¥\82पी असले पाहिजे.',
'ipb_hide_invalid' => 'हे खात दाबन्यासाथि असमर्थ: ते सुध्दा बदल करन्याचि सकतात.',
'ipb_already_blocked' => '"$1" आधीच अवरूद्ध केलेले आहे.',
-'ipb-needreblock' => '$1 à¤\86धà¥\80à¤\9a पà¥\8dरतिबà¤\82धà¥\80त à¤\86हà¥\87 . तà¥\81मà¥\8dहाला तà¥\8dयाà¤\9aि सेटींग्स बदलण्याची इच्छा आहे का ?',
+'ipb-needreblock' => '$1 à¤\86धà¥\80à¤\9a पà¥\8dरतिबà¤\82धित à¤\86हà¥\87 . तà¥\81मà¥\8dहाला तà¥\8dयाà¤\9aà¥\80 सेटींग्स बदलण्याची इच्छा आहे का ?',
'ipb-otherblocks-header' => '{{PLURAL:$1|दुसरे प्रतिबंधन|इतर प्रतिबंधने}}',
'unblock-hideuser' => 'सदस्याचे नाव हे गोपनीय असल्यामुळे हे सदस्य खाते आपण गोठवू शकत नाही',
'ipb_cant_unblock' => 'त्रूटी: प्रतिबंधन क्र.$1 मिळाला नाही. त्यावरील प्रतिबंधन कदाचित आधीच उठवले असेल.',
-'ipb_blocked_as_range' => 'तà¥\8dरà¥\82à¤\9fà¥\80:à¤\85à¤\82à¤\95पतà¥\8dता IP $1 हा पà¥\8dरतà¥\8dयà¤\95à¥\8dषपणà¥\87 पà¥\8dरतिबà¤\82धà¥\80त à¤\95à¥\87लà¥\87ला नाहà¥\80 à¤\86णि à¤\85पà¥\8dरतिबà¤\82धà¥\80त à¤\95रता यà¥\87त नाहà¥\80.तà¥\8b,à¤\85रà¥\8dथात,$2पलà¥\8dलà¥\8dयाà¤\9aा à¤à¤¾à¤\97 मà¥\8dहाणà¥\82न तà¥\8b पà¥\8dरतिबà¤\82धà¥\80त केलेला आहे,जो की अप्रतिबंधीत करता येत नाही.',
+'ipb_blocked_as_range' => 'तà¥\8dरà¥\82à¤\9fà¥\80:à¤\85à¤\82à¤\95पतà¥\8dता IP $1 हा पà¥\8dरतà¥\8dयà¤\95à¥\8dषपणà¥\87 पà¥\8dरतिबà¤\82धित à¤\95à¥\87लà¥\87ला नाहà¥\80 à¤\86णि à¤\85पà¥\8dरतिबà¤\82धà¥\80त à¤\95रता यà¥\87त नाहà¥\80.तà¥\8b,à¤\85रà¥\8dथात,$2पलà¥\8dलà¥\8dयाà¤\9aा à¤à¤¾à¤\97 मà¥\8dहाणà¥\82न तà¥\8b पà¥\8dरतिबà¤\82धित केलेला आहे,जो की अप्रतिबंधीत करता येत नाही.',
'ip_range_invalid' => 'अंकपत्ता अयोग्य टप्प्यात.',
'ip_range_toolarge' => '/$1 पेक्षा मोठ्या Range प्रतिबंधनाची परवानगी नाह् are not allowed.',
-'blockme' => 'मला पà¥\8dरतिबà¤\82धà¥\80त करा',
+'blockme' => 'मला पà¥\8dरतिबà¤\82धित करा',
'proxyblocker' => 'प्रातिनिधी(प्रॉक्झी)प्रतिबंधक',
'proxyblocker-disabled' => 'हे कार्य अवरूद्ध केले आहे.',
-'proxyblockreason' => 'तà¥\81मà¤\9aा à¤\85à¤\82à¤\95पतà¥\8dता पà¥\8dरतिबà¤\82धà¥\80त केला आहे कारण तो उघड-उघड प्रतिनिधी आहे.कृपया तुमच्या आंतरजाल सेवा दात्यास किंवा तंत्रज्ञास पाचारण संपर्क करा आणि त्यांचे या गंभीर सुरक्षाप्रश्ना कडे लक्ष वेधा.',
+'proxyblockreason' => 'तà¥\81मà¤\9aा à¤\85à¤\82à¤\95पतà¥\8dता पà¥\8dरतिबà¤\82धित केला आहे कारण तो उघड-उघड प्रतिनिधी आहे.कृपया तुमच्या आंतरजाल सेवा दात्यास किंवा तंत्रज्ञास पाचारण संपर्क करा आणि त्यांचे या गंभीर सुरक्षाप्रश्ना कडे लक्ष वेधा.',
'proxyblocksuccess' => 'झाले.',
'sorbsreason' => '{{SITENAME}}ने वापरलेल्या DNSBL मध्ये तुमच्या अंकपत्त्याची नोंद उघड-उघड प्रतिनिधी म्हणून सूचित केली आहे.',
'sorbs_create_account_reason' => '{{SITENAME}}च्या DNSBLने तुमचा अंकपत्ता उघड-उघड प्रतिनिधी म्हणून सूचित केला आहे.तुम्ही खाते उघडू शकत नाही',
'cant-block-while-blocked' => 'तुम्ही स्वतः प्रतिबंधित असताना इतरांना प्रतिबंधित करू शकत नाही.',
-'cant-see-hidden-user' => 'तà¥\81मà¥\8dहà¥\80 पà¥\8dरतिबà¥\8dà¤\82धà¤\95रणà¥\8dयाà¤\9aा पà¥\8dरयतà¥\8dन à¤\95रत à¤\85सलà¥\87लà¥\87 सदसà¥\8dय à¤\96ातà¥\87 à¤\86धà¥\80पासà¥\82नà¤\9a पà¥\8dरतिबà¤\82धà¥\80त आणि लपविले गेले आहे.
-तà¥\81मà¤\9aà¥\8dयाà¤\95डà¥\87 सदसà¥\8dय लपविणà¥\8dयाà¤\9aà¥\87 à¤\85धिà¤\95ार नसलà¥\8dयामà¥\81ळà¥\87 , तà¥\81मà¥\8dहà¥\80 सदसà¥\8dय पà¥\8dरतिबà¤\82धन पाहà¥\82 à¤\85थवा सà¤\82पादà¥\80त करू शकत नाही',
-'ipbblocked' => 'तà¥\81मà¤\9aà¥\87 सà¥\8dवत:à¤\9aà¥\87à¤\9a à¤\96ातà¥\87 पà¥\8dरतिबà¤\82धà¥\80त à¤\85सलà¥\8dयामà¥\81ळà¥\87 तà¥\81मà¥\8dहà¥\80 à¤\87तर सदसà¥\8dयाà¤\82ना पà¥\8dरतिबà¤\82धà¥\80त किंवा अप्रतिबंधीत करू शकत नाही',
+'cant-see-hidden-user' => 'तà¥\81मà¥\8dहà¥\80 पà¥\8dरतिबà¥\8dà¤\82धà¤\95रणà¥\8dयाà¤\9aा पà¥\8dरयतà¥\8dन à¤\95रत à¤\85सलà¥\87लà¥\87 सदसà¥\8dय à¤\96ातà¥\87 à¤\86धà¥\80पासà¥\82नà¤\9a पà¥\8dरतिबà¤\82धित आणि लपविले गेले आहे.
+तà¥\81मà¤\9aà¥\8dयाà¤\95डà¥\87 सदसà¥\8dय लपविणà¥\8dयाà¤\9aà¥\87 à¤\85धिà¤\95ार नसलà¥\8dयामà¥\81ळà¥\87 , तà¥\81मà¥\8dहà¥\80 सदसà¥\8dय पà¥\8dरतिबà¤\82धन पाहà¥\82 à¤\85थवा सà¤\82पादित करू शकत नाही',
+'ipbblocked' => 'तà¥\81मà¤\9aà¥\87 सà¥\8dवत:à¤\9aà¥\87à¤\9a à¤\96ातà¥\87 पà¥\8dरतिबà¤\82धित à¤\85सलà¥\8dयामà¥\81ळà¥\87 तà¥\81मà¥\8dहà¥\80 à¤\87तर सदसà¥\8dयाà¤\82ना पà¥\8dरतिबà¤\82धित किंवा अप्रतिबंधीत करू शकत नाही',
'ipbnounblockself' => 'तुम्ही स्वतः अप्रतिबंधित करू शकत नाही',
# Developer tools
'lockdb' => 'विदागारास ताळे ठोका',
'unlockdb' => 'विदागाराचे ताळे उघडा',
-'lockdbtext' => 'विदाà¤\97ारास ताळà¥\87 ठà¥\8bà¤\95लà¥\8dयानà¥\87 सरà¥\8dव सदसà¥\8dयाà¤\82à¤\9aà¥\80 सà¤\82पादन à¤\95à¥\8dषमता, तà¥\8dयाà¤\82à¤\9aà¥\8dया सदसà¥\8dय पसà¤\82तà¥\80 बदलणà¥\87,तà¥\8dयाà¤\82à¤\9aà¥\8dया पहाऱà¥\8dयाà¤\9aà¥\8dया सà¥\82à¤\9aà¥\80 सà¤\82पादà¥\80त à¤\95रणà¥\87,à¤\86णि विदà¥\87त बदल à¤\98डवणाऱà¥\8dया à¤\87तर à¤\97à¥\8bषà¥\8dà¤\9fà¥\80 सà¤\82सà¥\8dथà¤\97à¥\80त होतील.
+'lockdbtext' => 'विदाà¤\97ारास ताळà¥\87 ठà¥\8bà¤\95लà¥\8dयानà¥\87 सरà¥\8dव सदसà¥\8dयाà¤\82à¤\9aà¥\80 सà¤\82पादन à¤\95à¥\8dषमता, तà¥\8dयाà¤\82à¤\9aà¥\8dया सदसà¥\8dय पसà¤\82तà¥\80 बदलणà¥\87,तà¥\8dयाà¤\82à¤\9aà¥\8dया पहाऱà¥\8dयाà¤\9aà¥\8dया सà¥\82à¤\9aà¥\80 सà¤\82पादित à¤\95रणà¥\87,à¤\86णि विदà¥\87त बदल à¤\98डवणाऱà¥\8dया à¤\87तर à¤\97à¥\8bषà¥\8dà¤\9fà¥\80 सà¤\82सà¥\8dथà¤\97ित होतील.
कृपया तुम्हाला हेच करावयाचे आहे आणि भरण-पोषणा नंतर विदागाराचे ताळे उघडावयाचे आहे हे निश्चित करा.',
-'unlockdbtext' => 'विदाà¤\97ाराà¤\9aà¥\87 ताळà¥\87 à¤\89à¤\98डलà¥\8dयानà¥\87 सरà¥\8dव सदसà¥\8dयाà¤\82à¤\9aà¥\80 सà¤\82पादन à¤\95à¥\8dषमता, तà¥\8dयाà¤\82à¤\9aà¥\8dया सदसà¥\8dय पसà¤\82तà¥\80 बदलणà¥\87,तà¥\8dयाà¤\82à¤\9aà¥\8dया पहाऱà¥\8dयाà¤\9aà¥\8dया सà¥\82à¤\9aà¥\80 सà¤\82पादà¥\80त करणे,आणि विदेत बदल घडवणाऱ्या इतर गोष्टीची क्षमता पुन्हा उपलब्ध होईल.
+'unlockdbtext' => 'विदाà¤\97ाराà¤\9aà¥\87 ताळà¥\87 à¤\89à¤\98डलà¥\8dयानà¥\87 सरà¥\8dव सदसà¥\8dयाà¤\82à¤\9aà¥\80 सà¤\82पादन à¤\95à¥\8dषमता, तà¥\8dयाà¤\82à¤\9aà¥\8dया सदसà¥\8dय पसà¤\82तà¥\80 बदलणà¥\87,तà¥\8dयाà¤\82à¤\9aà¥\8dया पहाऱà¥\8dयाà¤\9aà¥\8dया सà¥\82à¤\9aà¥\80 सà¤\82पादित करणे,आणि विदेत बदल घडवणाऱ्या इतर गोष्टीची क्षमता पुन्हा उपलब्ध होईल.
कृपया तुम्हाला हेच करावयाचे आहे हे निश्चित करा.',
'lockconfirm' => 'होय,मला खरेच विदागारास ताळे ठोकायच आहे.',
'unlockconfirm' => 'होय,मला खरेच विदागाराचे ताळे उघडवयाचे आहे.',
जुने शीर्षक नवीन शीर्षकाकडे पुनर्निर्देशित करेल.
[[Special:DoubleRedirects|दुहेरी]] अथवा [[Special:BrokenRedirects|मोडकी]] पुनर्निर्देशनांकरीता तपासण्याची काळजी घ्या.
-à¤\89पलबà¥\8dध दà¥\81वà¥\87 à¤\9cà¥\80थे उघडणे अभिप्रेत होते तसेच उघडतील याची तुम्ही जबाबदारी घेत आहात
+à¤\89पलबà¥\8dध दà¥\81वà¥\87 à¤\9cिथे उघडणे अभिप्रेत होते तसेच उघडतील याची तुम्ही जबाबदारी घेत आहात
जर नवीन शीर्षकाचा लेख अस्तित्वात असेल तर स्थानांतरण होणार '''नाही'''.
पण जर नवीन शीर्षकाचा लेख हा रिकामा असेल अथवा पुनर्निर्देशन असेल (म्हणजेच त्या लेखाला जर संपादन इतिहास नसेल) तर स्थानांतरण होईल. याचा अर्थ असा की जर काही चूक झाली तर तुम्ही पुन्हा जुन्या शीर्षकाकडे स्थानांतरण करू शकता.
या बाबतीत तुम्हाला स्वतःला ही पाने एकत्र करावी लागतील.",
'movearticle' => 'पृष्ठाचे स्थानांतरण',
-'moveuserpage-warning' => "'''सावधान:''' à¤\86पण à¤\8fà¤\95 सदसà¥\8dय पान सà¥\8dथलाà¤\82तरà¥\80त à¤\95रत à¤\86हात. à¤\95à¥\83पया लà¤\95à¥\8dषात à¤\98à¥\8dया à¤\95à¥\80, फà¤\95à¥\8dत हà¥\87 पान सà¥\8dथलाà¤\82तरà¥\80त होइल, सदस्य नाम बदलले जणार नाही.",
+'moveuserpage-warning' => "'''सावधान:''' à¤\86पण à¤\8fà¤\95 सदसà¥\8dय पान सà¥\8dथलाà¤\82तरित à¤\95रत à¤\86हात. à¤\95à¥\83पया लà¤\95à¥\8dषात à¤\98à¥\8dया à¤\95à¥\80, फà¤\95à¥\8dत हà¥\87 पान सà¥\8dथलाà¤\82तरित होइल, सदस्य नाम बदलले जणार नाही.",
'movenologin' => 'प्रवेश केलेला नाही',
'movenologintext' => 'पान स्थानांतरित करण्यासाठी तुम्हाला [[Special:UserLogin|प्रवेश]] करावा लागेल.',
'movenotallowed' => '{{SITENAME}}वरील पाने स्थानांतरीत करण्याची आपल्यापाशी परवानगी नाही.',
'articleexists' => 'त्या नावाचे पृष्ठ अगोदरच अस्तित्वात आहे, किंवा तुम्ही निवडलेले
नाव योग्य नाही आहे.
कृपया दुसरे नाव शोधा.',
-'cantmove-titleprotected' => 'नवà¥\87 शà¥\80रà¥\8dषà¤\95 निरà¥\8dमà¥\80त à¤\95रणà¥\8dया पासà¥\82न सà¥\81रà¤\95à¥\8dषà¥\80त केलेले असल्यामुळे,तुम्ही या जागी एखादे पान स्थानांतरीत करू शकत नाही.',
+'cantmove-titleprotected' => 'नवà¥\87 शà¥\80रà¥\8dषà¤\95 निरà¥\8dमित à¤\95रणà¥\8dया पासà¥\82न सà¥\81रà¤\95à¥\8dषित केलेले असल्यामुळे,तुम्ही या जागी एखादे पान स्थानांतरीत करू शकत नाही.',
'talkexists' => 'पृष्ठ यशस्वीरीत्या स्थानांतरीत झाले पण चर्चा पृष्ठ स्थानांतरीत होवू
शकले नाही कारण त्या नावाचे पृष्ठ आधीच अस्तित्वात होते. कृपया तुम्ही स्वतः ती पृष्ठे एकत्र करा.',
'movedto' => 'कडे स्थानांतरण केले',
'delete_and_move' => 'वगळा आणि स्थानांतरित करा',
'delete_and_move_text' => '==वगळण्याची आवशकता==
-लà¤\95à¥\8dषà¥\8dयपान "[[:$1]]" à¤\86धà¥\80à¤\9a à¤\85सà¥\8dतà¥\80त्वात आहे.स्थानांतराचा मार्ग मोकळाकरण्या करिता तुम्हाला ते वगळावयाचे आहे काय?',
+लà¤\95à¥\8dषà¥\8dयपान "[[:$1]]" à¤\86धà¥\80à¤\9a à¤\85सà¥\8dतित्वात आहे.स्थानांतराचा मार्ग मोकळाकरण्या करिता तुम्हाला ते वगळावयाचे आहे काय?',
'delete_and_move_confirm' => 'होय, पान वगळा',
'delete_and_move_reason' => '"[[$1]]" पासून वगळून स्थानांतर केले.',
'selfmove' => 'स्रोत आणि लक्ष्य पाने समान आहेत; एखादे पान स्वत:च्याच जागी स्थानांतरीत करता येत नाही.',
'immobile-source-page' => 'हे पान हलवता येत नाही',
'immobile-target-page' => 'लक्ष्य मथळा हलवता येत नाही.',
'imagenocrossnamespace' => 'ज्या नामविश्वात संचिका साठविता येत नाहीत, त्या नामविश्वात संचिकांचे स्थानांतरण करता येत नाही',
-'nonfile-cannot-move-to-file' => 'सà¤\82à¤\9aिà¤\95ा सà¥\8dवरà¥\81पाची नसलेली माहिती आपणास संचिका नामविश्वात वळती करता येणार नाही',
+'nonfile-cannot-move-to-file' => 'सà¤\82à¤\9aिà¤\95ा सà¥\8dवरà¥\82पाची नसलेली माहिती आपणास संचिका नामविश्वात वळती करता येणार नाही',
'imagetypemismatch' => 'दिलेले संचिकेचे एक्सटेंशन त्या संचिकेच्या प्रकाराशी जुळत नाही',
'imageinvalidfilename' => 'लक्ष्यसंचिका अवैध आहे',
-'fix-double-redirects' => 'मà¥\81ळ शिर्षक दर्शविणारे फेरे अद्ययावत करा',
+'fix-double-redirects' => 'मà¥\81ळ शà¥\80र्षक दर्शविणारे फेरे अद्ययावत करा',
'move-leave-redirect' => 'मागे एक पुनर्निर्देशन ठेवा',
'protectedpagemovewarning' => "'''सूचना:''' हे पान सुरक्षित आहे. फक्त प्रशासकीय अधिकार असलेले सदस्य याच्यात बदल करू शकतात.",
'semiprotectedpagemovewarning' => "'''सूचना:''' हे पान सुरक्षित आहे. फक्त नोंदणीकृत सदस्य याच्यात बदल करू शकतात.
सर्वांत ताजी यादी खाली संदर्भासाठी दिली आहे:",
'move-over-sharedrepo' => '== संचिका अस्तित्वात आहे ==
सामायिक भांडारात [[:$1]] नाव आधी पासून अस्तित्वात आहे. संचिका या नावावर स्थानांतरीत केल्यास सामायिक संचिकेवर चढेल.',
-'file-exists-sharedrepo' => 'धà¥\80रिà¤\95à¥\87साठà¥\80 तà¥\81मà¥\8dहà¥\80 निवडलà¥\87लà¥\87 नाव हà¥\87 सामà¥\81हà¥\80क संग्राहलयात आधीपासून वापरात असल्याने कृपया दुसरे नाव निवडा.',
+'file-exists-sharedrepo' => 'धà¥\80रिà¤\95à¥\87साठà¥\80 तà¥\81मà¥\8dहà¥\80 निवडलà¥\87लà¥\87 नाव हà¥\87 सामà¥\82हिक संग्राहलयात आधीपासून वापरात असल्याने कृपया दुसरे नाव निवडा.',
# Export
'export' => 'पाने निर्यात करा',
-'exporttext' => 'तà¥\81मà¥\8dहà¥\80 à¤\8fà¤\96ादà¥\8dया विशिषà¥\8dà¤\9f पानाà¤\9aा मà¤\9cà¤\95à¥\81र आणि संपादन इतिहास किंवा पानांचा संच एखाद्या XML वेष्ठणात ठेवून निर्यात करू शकता.हे तुम्हाला [[Special:Import|पान आयात करा]]वापरून मिडीयाविकि वापरणाऱ्या इतर विकित आयात करता येईल.
+'exporttext' => 'तà¥\81मà¥\8dहà¥\80 à¤\8fà¤\96ादà¥\8dया विशिषà¥\8dà¤\9f पानाà¤\9aा मà¤\9cà¤\95à¥\82र आणि संपादन इतिहास किंवा पानांचा संच एखाद्या XML वेष्ठणात ठेवून निर्यात करू शकता.हे तुम्हाला [[Special:Import|पान आयात करा]]वापरून मिडीयाविकि वापरणाऱ्या इतर विकित आयात करता येईल.
-पानà¥\87 निरà¥\8dयात à¤\95रणà¥\8dया à¤\95रिता,à¤\8fà¤\95ा à¤\93ळà¥\80त à¤\8fà¤\95 मथळा à¤\85सà¥\87, à¤\96ालà¥\80ल मà¤\9cà¤\95à¥\81र रकान्यात मथळे भरा आणि तुम्हाला ’सध्याची आवृत्ती तसेच सर्व जुन्या आवृत्ती ,पानाच्या इतिहास ओळी सोबत’, किंवा ’केवळ सध्याची आवृत्ती शेवटच्या संपादनाच्या माहिती सोबत’ हवी आहे का ते निवडा.
+पानà¥\87 निरà¥\8dयात à¤\95रणà¥\8dया à¤\95रिता,à¤\8fà¤\95ा à¤\93ळà¥\80त à¤\8fà¤\95 मथळा à¤\85सà¥\87, à¤\96ालà¥\80ल मà¤\9cà¤\95à¥\82र रकान्यात मथळे भरा आणि तुम्हाला ’सध्याची आवृत्ती तसेच सर्व जुन्या आवृत्ती ,पानाच्या इतिहास ओळी सोबत’, किंवा ’केवळ सध्याची आवृत्ती शेवटच्या संपादनाच्या माहिती सोबत’ हवी आहे का ते निवडा.
तुम्ही नंतरच्या बाबतीत एखादा दुवा सुद्धा वापरू शकता, उदाहरणार्थ "[[{{MediaWiki:Mainpage}}]]" पाना करिता [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] .',
'exportall' => 'सर्व पान एक्सपोर्ट करा',
'export-addns' => 'वाढवा',
'export-download' => 'संचिका म्हणून जतन करा',
'export-templates' => 'साचे आंतरभूत करा',
-'export-pagelinks' => 'पà¥\81ढà¥\87 à¤\89लà¥\8dलà¥\87à¤\96à¥\80त पातळी पर्यंत दुवे दिलेल्या पानांचा आंतर्भाव करा :',
+'export-pagelinks' => 'पà¥\81ढà¥\87 à¤\89लà¥\8dलà¥\87à¤\96ित पातळी पर्यंत दुवे दिलेल्या पानांचा आंतर्भाव करा :',
# Namespace 8 related
'allmessages' => 'सर्व प्रणाली-संदेश',
'djvu_page_error' => 'टप्प्याच्या बाहेरचे DjVu पान',
'djvu_no_xml' => 'DjVu संचिकेकरिता XML ओढण्यात असमर्थ',
'thumbnail-temp-create' => 'तात्पुरती इवलीशी संचिका बनविता आली नाही',
-'thumbnail-dest-create' => 'à¤\87षà¥\8dà¤\9fसà¥\8dथळà¥\80 à¤\88वलीशी संचिका जतन करता आली नाही',
+'thumbnail-dest-create' => 'à¤\87षà¥\8dà¤\9fसà¥\8dथळà¥\80 à¤\87वलीशी संचिका जतन करता आली नाही',
'thumbnail_invalid_params' => 'इवल्याशाचित्राचा अयोग्य परिचय',
'thumbnail_dest_directory' => 'लक्ष्य धारिकेच्या निर्मितीस असमर्थ',
'thumbnail_image-type' => 'चित्रप्रकार समर्थित नाही',
'importunknownsource' => 'आयात स्रोत प्रकार अज्ञात',
'importcantopen' => 'आयातीत संचिका उघडणे जमले नाही',
'importbadinterwiki' => 'अयोग्य आंतरविकि दुवा',
-'importnotext' => 'रिà¤\95ामà¥\87 à¤\85थवा मà¤\9cà¤\95à¥\81र नाही',
+'importnotext' => 'रिà¤\95ामà¥\87 à¤\85थवा मà¤\9cà¤\95à¥\82र नाही',
'importsuccess' => 'आयात पूर्ण झाली!',
'importhistoryconflict' => 'उपलब्ध इतिहास आवर्तने परस्पर विरोधी आहेत(हे पान पूर्वी आयात केले असण्याची शक्यता आहे)',
'importnosources' => 'कोणतेही आंतरविकि आयात स्रोत व्यक्त केलेले नाहीत आणि प्रत्यक्ष इतिहास चढवा अनुपलब्ध केले आहे.',
# Tooltip help for the actions
'tooltip-pt-userpage' => 'तुमचे सदस्य पान',
-'tooltip-pt-anonuserpage' => 'तà¥\81मà¥\8dहà¥\80 à¤\9cà¥\8dया à¤\85à¤\82à¤\95पतà¥\8dतà¥\8dयानà¥\8dवयà¥\87 सà¤\82पादà¥\80त करत आहात त्याकरिता हे सदस्य पान',
+'tooltip-pt-anonuserpage' => 'तà¥\81मà¥\8dहà¥\80 à¤\9cà¥\8dया à¤\85à¤\82à¤\95पतà¥\8dतà¥\8dयानà¥\8dवयà¥\87 सà¤\82पादित करत आहात त्याकरिता हे सदस्य पान',
'tooltip-pt-mytalk' => 'तुमचे चर्चा पान',
'tooltip-pt-anontalk' => 'या अंकपत्त्यापासून झालेल्या संपादनांबद्दल चर्चा',
'tooltip-pt-preferences' => 'माझ्या पसंती',
'tooltip-pt-anonlogin' => 'आपण खात्यात दाखल व्हावे या करिता प्रोत्साहन देतो, अर्थात ते अत्यावश्यक नाही.',
'tooltip-pt-logout' => 'बाहेर पडा',
'tooltip-ca-talk' => 'कंटेंट पानाबद्दलच्या चर्चा',
-'tooltip-ca-edit' => 'तà¥\81मà¥\8dहà¥\80 हà¥\87 पान बदà¥\8dलà¥\82 शà¤\95ता. à¤\95à¥\83पया à¤\9cतन à¤\95रणà¥\8dयापà¥\81र्वी झलक कळ वापरून पहा.',
+'tooltip-ca-edit' => 'तà¥\81मà¥\8dहà¥\80 हà¥\87 पान बदà¥\8dलà¥\82 शà¤\95ता. à¤\95à¥\83पया à¤\9cतन à¤\95रणà¥\8dयापà¥\82र्वी झलक कळ वापरून पहा.',
'tooltip-ca-addsection' => 'नवीन चर्चा सुरू करा',
'tooltip-ca-viewsource' => 'हे पान सुरक्षित आहे. तुम्ही याचा स्रोत पाहू शकता.',
'tooltip-ca-history' => 'या पानाच्या जुन्या आवृत्या.',
'tooltip-preview' => 'तुम्ही केलेल्या बदलांची झलक पहा, जतन करण्यापूर्वी कृपया हे वापरा!',
'tooltip-diff' => 'या पाठ्यातील तुम्ही केलेले बदल दाखवा.',
'tooltip-compareselectedversions' => 'निवडलेल्या आवृत्त्यांमधील बदल दाखवा.',
-'tooltip-watch' => 'हà¥\87 पान तà¥\81मà¤\9aà¥\8dया पहाऱà¥\8dयाà¤\9aà¥\8dया सà¥\82à¤\9aà¥\80त टाका.',
+'tooltip-watch' => 'हà¥\87 पान तà¥\81मà¤\9aà¥\8dया पहाऱà¥\8dयाà¤\9aà¥\8dया सà¥\82à¤\9aित टाका.',
'tooltip-watchlistedit-normal-submit' => 'शीर्षके काढवीत',
'tooltip-watchlistedit-raw-submit' => 'पाहण्याची सूची अद्ययावत करावी',
'tooltip-recreate' => 'हे पान मागे वगळले असले तरी नवनिर्मीत करा',
# Spam protection
'spamprotectiontitle' => 'केर(स्पॅम) सुरक्षा चाचणी',
-'spamprotectiontext' => 'तà¥\81मà¥\8dहà¥\80 à¤\9cतन à¤\95रà¥\82 à¤\87à¤\9aà¥\8dà¤\9bित à¤\85सलà¥\87लà¥\87 पान à¤\95à¥\87र-à¤\89तà¥\8dपात रà¥\8bधà¤\95 à¤\9aाळणà¥\80नà¥\87 पà¥\8dरतिबà¤\82धà¥\80त केले आहे.
+'spamprotectiontext' => 'तà¥\81मà¥\8dहà¥\80 à¤\9cतन à¤\95रà¥\82 à¤\87à¤\9aà¥\8dà¤\9bित à¤\85सलà¥\87लà¥\87 पान à¤\95à¥\87र-à¤\89तà¥\8dपात रà¥\8bधà¤\95 à¤\9aाळणà¥\80नà¥\87 पà¥\8dरतिबà¤\82धित केले आहे.
असे बाहेरच्या संकेतस्थळाचा दुवा देण्याची शक्यता असल्यामुळे घडू शकते.',
'spamprotectionmatch' => 'खालील मजकुरामुळे आमची चिखलणी रोधक चाळणी सुरू झाली: $1',
'pageinfo-category-files' => 'संचिकांची संख्या',
# Skin names
-'skinname-standard' => 'अभिजात',
-'skinname-nostalgia' => 'रम्य',
'skinname-cologneblue' => 'सुरेखनीळी',
'skinname-monobook' => 'मोनोबुक',
-'skinname-myskin' => 'माझीकांती',
-'skinname-chick' => 'मस्त',
-'skinname-simple' => 'साधी',
'skinname-modern' => 'आधुनिक',
'skinname-vector' => 'सदिश',
'rcpatroldisabled' => 'अलीकडील बदलची गस्ती अनुपलब्ध',
'rcpatroldisabledtext' => 'सध्या ’अलीकडील बदल’ ची गस्त सुविधा अनुपलब्ध केली आहे.',
'markedaspatrollederror' => 'गस्तीची खूण करता येत नाही',
-'markedaspatrollederrortext' => 'à¤\97सà¥\8dत à¤\98ातलà¥\8dयाà¤\9aà¥\80 à¤\96à¥\82ण à¤\95रणà¥\8dयाà¤\95रिता तà¥\81मà¥\8dहाला à¤\8fà¤\95 à¤\86वरà¥\8dतन नमà¥\81द करावे लागेल.',
+'markedaspatrollederrortext' => 'à¤\97सà¥\8dत à¤\98ातलà¥\8dयाà¤\9aà¥\80 à¤\96à¥\82ण à¤\95रणà¥\8dयाà¤\95रिता तà¥\81मà¥\8dहाला à¤\8fà¤\95 à¤\86वरà¥\8dतन नमà¥\82द करावे लागेल.',
'markedaspatrollederror-noautopatrol' => 'तुम्हाला स्वत:च्याच बदलांवर गस्त घातल्याची खूण करण्याची परवानगी नाही.',
# Patrol log
'patrol-log-page' => 'टेहळणीतील नोंदी',
-'patrol-log-header' => 'हà¥\80 पाहणà¥\80नà¤\82तरà¤\9aà¥\8dया निरिक्षणाची नोंद आहे.',
+'patrol-log-header' => 'हà¥\80 पाहणà¥\80नà¤\82तरà¤\9aà¥\8dया निरà¥\80क्षणाची नोंद आहे.',
'log-show-hide-patrol' => '$1 गस्तीची नोंद',
# Image deletion
'deletedrevision' => 'जुनी आवृत्ती ($1) वगळली.',
'filedeleteerror-short' => 'संचिका वगळताना त्रूटी: $1',
-'filedeleteerror-long' => 'सà¤\82à¤\9aिà¤\95ा वà¤\97ळताना तà¥\8dरà¥\82टी आढळल्या:
+'filedeleteerror-long' => 'सà¤\82à¤\9aिà¤\95ा वà¤\97ळताना तà¥\8dरà¥\81टी आढळल्या:
$1',
'filedelete-missing' => 'संचिका "$1" वगळता येत नाही, कारण ती अस्तित्वात नाही.',
'exif-yresolution' => 'उभे रिझोल्यूशन',
'exif-stripoffsets' => 'चित्रविदा स्थान',
'exif-rowsperstrip' => 'प्रत्येक पट्टीतील ओळींची संख्या',
-'exif-stripbytecounts' => 'पà¥\8dरतà¥\8dयà¥\87à¤\95 à¤\86à¤\95à¥\81à¤\82à¤\9aà¥\80त पट्टीतील बाईट्सची संख्या',
+'exif-stripbytecounts' => 'पà¥\8dरतà¥\8dयà¥\87à¤\95 à¤\86à¤\95à¥\81à¤\82à¤\9aित पट्टीतील बाईट्सची संख्या',
'exif-jpeginterchangeformat' => 'JPEG SOI करिता ऑफसेट',
'exif-jpeginterchangeformatlength' => 'JPEG विदे च्या बाईट्स',
'exif-whitepoint' => 'धवल बिंदू क्रोमॅटिसिटी',
'exif-primarychromaticities' => 'क्रोमॅटिसिटीज ऑफ प्राईमारिटीज',
'exif-ycbcrcoefficients' => 'कलर स्पेस ट्रान्स्फॉर्मेशन मॅट्रीक्स कोएफिशीयंट्स',
-'exif-referenceblackwhite' => 'à¤\95ाळà¥\8dया à¤\86णि पाà¤\82ढऱà¥\8dया सà¤\82दरà¥\8dठमà¥\81ल्यांची जोडी',
+'exif-referenceblackwhite' => 'à¤\95ाळà¥\8dया à¤\86णि पाà¤\82ढऱà¥\8dया सà¤\82दरà¥\8dठमà¥\82ल्यांची जोडी',
'exif-datetime' => 'संचिका बदल तारीख आणि वेळ',
'exif-imagedescription' => 'चित्र शीर्षक',
'exif-make' => 'कॅमेरा उत्पादक',
'exif-flashenergy' => 'लखाट उर्जा (फ्लॅश एनर्जी)',
'exif-focalplanexresolution' => 'फोकल प्लेन x रिझोल्यूशन',
'exif-focalplaneyresolution' => 'फोकल प्लेन Y रिझोल्यूशन',
-'exif-focalplaneresolutionunit' => 'फà¥\8bà¤\95ल पà¥\8dलà¥\87न रिà¤\9dà¥\8bलà¥\8dयà¥\82शन माप',
+'exif-focalplaneresolutionunit' => 'फà¥\8bà¤\95ल पà¥\8dलà¥\87न रिà¤\9dà¥\8bलà¥\8dयà¥\81शन माप',
'exif-subjectlocation' => 'लक्ष्य स्थळ',
'exif-exposureindex' => 'प्रभावन सूची',
'exif-sensingmethod' => 'सेन्सींग पद्धती',
'exif-subjectdistancerange' => 'गोष्टीपासूनचे पल्ला अंतर',
'exif-imageuniqueid' => 'विशिष्ट चित्र क्रमांक',
'exif-gpsversionid' => 'GPS खूण आवृत्ती',
-'exif-gpslatituderef' => 'à¤\89तà¥\8dतर à¤\95िà¤\82वा दà¤\95à¥\8dषà¥\80ण अक्षांश',
+'exif-gpslatituderef' => 'à¤\89तà¥\8dतर à¤\95िà¤\82वा दà¤\95à¥\8dषिण अक्षांश',
'exif-gpslatitude' => 'अक्षांश',
'exif-gpslongituderef' => 'पूर्व किंवा पश्चिम रेखांश',
'exif-gpslongitude' => 'रेखांश',
'exif-gpsdestbearing' => 'बीअरींग ऑफ डेस्टीनेशन',
'exif-gpsdestdistanceref' => 'लक्ष्यस्थळापर्यंतच्या अंतराकरिता संदर्भ',
'exif-gpsdestdistance' => 'लक्ष्यस्थळापर्यंतचे अंतर',
-'exif-gpsprocessingmethod' => 'GPS पà¥\8dरà¤\95à¥\8dरà¥\80या पद्धतीचे नाव',
+'exif-gpsprocessingmethod' => 'GPS पà¥\8dरà¤\95à¥\8dरिया पद्धतीचे नाव',
'exif-gpsareainformation' => 'GPS विभागाचे नाव',
'exif-gpsdatestamp' => 'GPSतारीख',
'exif-gpsdifferential' => 'GPS डिफरेंशीअल सुधारणा',
'exif-iimcategory' => 'वर्ग',
'exif-iimsupplementalcategory' => 'पुरवणी श्रेणी',
'exif-datetimeexpires' => 'या तारखेपश्चात वापरू नका',
-'exif-datetimereleased' => 'या वà¥\87ळà¥\80/दिवशà¥\80 पà¥\8dरसà¥\83त (पà¥\8dरसारण )à¤\95à¥\87लà¥\87/मà¥\81à¤\95à¥\8dत à¤\95à¥\87लà¥\87 / सà¥\82रू केले',
+'exif-datetimereleased' => 'या वà¥\87ळà¥\80/दिवशà¥\80 पà¥\8dरसà¥\83त (पà¥\8dरसारण )à¤\95à¥\87लà¥\87/मà¥\81à¤\95à¥\8dत à¤\95à¥\87लà¥\87 / सà¥\81रू केले',
'exif-originaltransmissionref' => 'Original transmission location code: मूळ प्रसारण केले त्या स्थानाचे कूटाक्षर(कोड)',
'exif-identifier' => 'ओळख दुवा',
'exif-lens' => 'वापरलेले भिंग',
'exif-disclaimer' => 'परवाना',
'exif-contentwarning' => 'आशय विषयी सूचना',
'exif-giffilecomment' => 'जीआयएफ संचिका टिप्पणी',
-'exif-intellectualgenre' => 'विशिषà¥\8dठवसà¥\8dतà¥\81चा प्रकार',
+'exif-intellectualgenre' => 'विशिषà¥\8dठवसà¥\8dतà¥\82चा प्रकार',
'exif-subjectnewscode' => 'विषयाचे संकेतचिन्ह',
'exif-scenecode' => 'IPTC दृश्य संकेत',
'exif-event' => 'सादर केलेला उपक्रम',
'exif-lightsource-17' => 'प्रकाश दर्जा A',
'exif-lightsource-18' => 'प्रकाश दर्जा B',
'exif-lightsource-19' => 'प्रमाण प्रकाश C',
-'exif-lightsource-24' => 'ISO सà¥\8dà¤\9fà¥\82डीयो टंगस्टन',
+'exif-lightsource-24' => 'ISO सà¥\8dà¤\9fà¥\81डीयो टंगस्टन',
'exif-lightsource-255' => 'इतर प्रकाश स्रोत',
# Flash modes
'exif-flash-return-0' => 'लखलखाट (फ्लॅश) - प्रकाश परावर्तन नोंदणीची सुविधा अनुपलब्ध',
'exif-flash-return-2' => 'लखलखाटाच्या (फ्लॅश) परावर्तन प्रकाशाची नोंद झाली नाही',
'exif-flash-return-3' => 'लखलखाटाचे (फ्लॅश) - प्रकाश परावर्तन होत असल्याचे टिपले',
-'exif-flash-mode-1' => 'à¤\85निवारà¥\8dय लà¤\96लà¤\96ाà¤\9f पà¥\8dरदà¥\80पन (फà¥\8dलà¥\85श फायरà¥\80ंग )',
+'exif-flash-mode-1' => 'à¤\85निवारà¥\8dय लà¤\96लà¤\96ाà¤\9f पà¥\8dरदà¥\80पन (फà¥\8dलà¥\85श फायरिंग )',
'exif-flash-mode-2' => 'अनिवार्य विना-लखलखाट (फ्लॅश सप्रेशन)',
'exif-flash-mode-3' => 'स्वयंचलित स्थिती',
'exif-flash-function-1' => 'लखलखाट (फ्लॅश) सुविधा अनुपलब्ध',
'exif-focalplaneresolutionunit-2' => 'इंच',
'exif-sensingmethod-1' => 'अव्यक्त',
-'exif-sensingmethod-2' => 'वन à¤\9aà¥\80प à¤\95लर à¤\8fरà¥\80या सेंसर',
-'exif-sensingmethod-3' => 'à¤\9fà¥\82 à¤\9aà¥\80प à¤\95लर à¤\8fरà¥\80या सेन्सर',
-'exif-sensingmethod-4' => 'थà¥\8dरà¥\80 à¤\9aà¥\80प à¤\95लर à¤\8fरà¥\80या सेंसर',
-'exif-sensingmethod-5' => 'à¤\95लर सिà¤\95à¥\8dवà¥\87णà¥\8dशà¥\80यल à¤\8fरà¥\80या सेंसर',
+'exif-sensingmethod-2' => 'वन à¤\9aà¥\80प à¤\95लर à¤\8fरिया सेंसर',
+'exif-sensingmethod-3' => 'à¤\9fà¥\82 à¤\9aà¥\80प à¤\95लर à¤\8fरिया सेन्सर',
+'exif-sensingmethod-4' => 'थà¥\8dरà¥\80 à¤\9aà¥\80प à¤\95लर à¤\8fरिया सेंसर',
+'exif-sensingmethod-5' => 'à¤\95लर सिà¤\95à¥\8dवà¥\87णà¥\8dशà¥\80यल à¤\8fरिया सेंसर',
'exif-sensingmethod-7' => 'ट्रायलिनीयर सेंसर',
'exif-sensingmethod-8' => 'कलर सिक्वेंशीयल लिनीयर सेंसर',
'exif-iimcategory-hth' => 'तब्येत',
'exif-iimcategory-hum' => 'मानवी अभिरुचि',
'exif-iimcategory-lab' => 'परिश्रम',
-'exif-iimcategory-lif' => 'à¤\86राम à¤\86णि à¤\9cिवन पद्धती',
+'exif-iimcategory-lif' => 'à¤\86राम à¤\86णि à¤\9cà¥\80वन पद्धती',
'exif-iimcategory-pol' => 'राजनीती',
'exif-iimcategory-rel' => 'धर्म व श्रद्धा',
'exif-iimcategory-sci' => 'विज्ञान व तंत्रज्ञान',
'confirmemail' => 'ई-मेल पत्ता पडताळून पहा',
'confirmemail_noemail' => '[[Special:Preferences|सदस्य पसंतीत]] तुम्ही प्रमाणित विपत्र (ई-मेल) पत्ता दिलेला नाही.',
'confirmemail_text' => 'विपत्र सुविधा वापरण्या पूर्वी {{SITENAME}}वर तुमचा विपत्र (ई-मेल) पत्ता प्रमाणित करणे गरजेचे आहे. तुमच्या पत्त्यावर निश्चितीकरण विपत्र (ई-मेल) पाठवण्याकरिता खालील बटण सुरू करा.विपत्रात कुटसंकेतच्(पासवर्ड) असलेला दुवा असेल;तुमचा विपत्र (ई-मेल) पत्ता प्रमाणित करण्या करिता तुमच्या विचरकात हा दिलेला दुवा चढवा.',
-'confirmemail_pending' => 'à¤\8fà¤\95 निशà¥\8dà¤\9aितà¥\80à¤\95रण à¤\95à¥\81à¤\9fसà¤\82à¤\95à¥\87त à¤\86धà¥\80à¤\9a तà¥\81मà¥\8dहाला विपतà¥\8dर à¤\95à¥\87ला à¤\86हà¥\87; à¤\9cर तà¥\81मà¥\8dहà¥\80 à¤\96ातà¥\87 à¤\85शातà¤\9a à¤\89à¤\98डलà¥\87 à¤\85सà¥\87ल तर,à¤\8fà¤\95 नवा à¤\95à¥\81ट संकेत मागण्यापूर्वी,पाठवलेला मिळण्याकरिता थोडी मिनिटे वाट पहाणे तुम्हाला आवडू शकेल.',
+'confirmemail_pending' => 'à¤\8fà¤\95 निशà¥\8dà¤\9aितà¥\80à¤\95रण à¤\95à¥\81à¤\9fसà¤\82à¤\95à¥\87त à¤\86धà¥\80à¤\9a तà¥\81मà¥\8dहाला विपतà¥\8dर à¤\95à¥\87ला à¤\86हà¥\87; à¤\9cर तà¥\81मà¥\8dहà¥\80 à¤\96ातà¥\87 à¤\85शातà¤\9a à¤\89à¤\98डलà¥\87 à¤\85सà¥\87ल तर,à¤\8fà¤\95 नवा à¤\95à¥\82ट संकेत मागण्यापूर्वी,पाठवलेला मिळण्याकरिता थोडी मिनिटे वाट पहाणे तुम्हाला आवडू शकेल.',
'confirmemail_send' => 'विपत्र निश्चितीकरण नियमावली',
'confirmemail_sent' => 'शाबितीकरण विपत्र पाठवले.',
'confirmemail_oncreate' => 'तुमच्या विपत्र पत्त्यावर निश्चितीकरण कुटसंकेत पाठवला होता .
'confirmemail_sendfailed' => 'पोच-विपत्र पाठवू शकलो नाही. अयोग्य चिन्हांकरिता पत्ता तपासा.
मेलर परत आले: $1',
-'confirmemail_invalid' => 'à¤\85यà¥\8bà¤\97à¥\8dय निशà¥\8dà¤\9aितà¥\80à¤\95रण नियमावलà¥\80.नियमावलà¥\80 à¤\95ाल समापà¥\8dत à¤\9dाला à¤\85सà¥\81 शकेल.',
+'confirmemail_invalid' => 'à¤\85यà¥\8bà¤\97à¥\8dय निशà¥\8dà¤\9aितà¥\80à¤\95रण नियमावलà¥\80.नियमावलà¥\80 à¤\95ाल समापà¥\8dत à¤\9dाला à¤\85सà¥\82 शकेल.',
'confirmemail_needlogin' => 'तुमचा विपत्रपत्ता प्रमाणित करण्यासाठी तुम्ही $1 करावयास हवे.',
'confirmemail_success' => 'तुमचा विपत्र (ई-मेल) पत्ता प्रमाणित झाला आहे.तुम्ही आता [[Special:UserLogin|दाखल]] होऊ शकता आणि विकिचा आनंद घेऊ शकता.',
'confirmemail_loggedin' => 'तुमचा विपत्र (ई-मेल) पत्ता आता प्रमाणित झाला आहे.',
'deletedwhileediting' => '”’सूचना:”’ तुम्ही संपादन सुरू केल्यानंतर हे पान वगळले गेले आहे.',
'confirmrecreate' => "तुम्ही संपादन सुरू केल्यानंतर सदस्य [[User:$1|$1]] ([[User talk:$1|चर्चा]])ने हे पान पुढील कारणाने वगळले:
: ''$2''
-à¤\95à¥\83पया हà¥\87 पान à¤\96रà¥\87à¤\9a पà¥\81नà¥\8dहा निरà¥\8dमà¥\80त करून हवे आहे का हे निश्चित करा.",
+à¤\95à¥\83पया हà¥\87 पान à¤\96रà¥\87à¤\9a पà¥\81नà¥\8dहा निरà¥\8dमित करून हवे आहे का हे निश्चित करा.",
'confirmrecreate-noreason' => 'तुम्ही संपादन सुरू केल्यानंतर सदस्य [[User:$1|$1]] ([[User talk:$1|चर्चा]])ने हे पान वगळले. तुम्हाला हे पान खरेच पुन्हा निर्मित करून हवे आहे का हे निश्चित करा.',
'recreate' => 'पुनर्निर्माण',
# Friendlier slave lag warnings
'lag-warn-normal' => '$1 {{PLURAL:$1|सेकंदाच्या|सेकंदांच्या}} आतले बदल या यादी नसण्याची शक्यता आहे.',
-'lag-warn-high' => 'विदा विदादातà¥\8dयास लाà¤\97णाऱà¥\8dया à¤\85तà¥\8dयà¥\81à¤\9aà¥\8dà¤\9a à¤\95ालावधà¥\80 मà¥\81ळà¥\87, $1 {{PLURAL:$1|सà¥\87à¤\95à¤\82दापà¥\87à¤\95à¥\8dषा|सà¥\87à¤\95à¤\82दाà¤\82पà¥\87à¤\95à¥\8dषा}} नवà¥\87 बदल या सà¥\82à¤\9aà¥\80त कदाचित दाखवले नाही जाणार.',
+'lag-warn-high' => 'विदा विदादातà¥\8dयास लाà¤\97णाऱà¥\8dया à¤\85तà¥\8dयà¥\81à¤\9aà¥\8dà¤\9a à¤\95ालावधà¥\80 मà¥\81ळà¥\87, $1 {{PLURAL:$1|सà¥\87à¤\95à¤\82दापà¥\87à¤\95à¥\8dषा|सà¥\87à¤\95à¤\82दाà¤\82पà¥\87à¤\95à¥\8dषा}} नवà¥\87 बदल या सà¥\82à¤\9aित कदाचित दाखवले नाही जाणार.',
# Watchlist editor
'watchlistedit-numitems' => 'चर्चा पाने सोडून, {{PLURAL:$1|1 शीर्षक पान|$1 शीर्षक पाने}} तुमच्या पहाऱ्याच्या सूचीमध्ये आहेत.',
-'watchlistedit-noitems' => 'नितà¥\8dय पहाणà¥\8dयाà¤\9aà¥\8dया सà¥\82à¤\9aà¥\80त कोणतेही शीर्षक पान नोंदलेले नाही.',
+'watchlistedit-noitems' => 'नितà¥\8dय पहाणà¥\8dयाà¤\9aà¥\8dया सà¥\82à¤\9aित कोणतेही शीर्षक पान नोंदलेले नाही.',
'watchlistedit-normal-title' => 'पहाऱ्याची सूचीचे संपादन करा',
'watchlistedit-normal-legend' => 'शीर्षकपाने नित्य पहाण्याच्या सूचीतून काढा',
-'watchlistedit-normal-explain' => 'तà¥\81मà¤\9aà¥\8dया पहारà¥\8dâ\80\8dयाà¤\9aà¥\8dया सà¥\82à¤\9aà¥\80तà¥\80ल à¤\85à¤\82तरà¥\8dà¤à¥\82त नामावळà¥\80 à¤\96ालà¥\80 निरà¥\8dदà¥\87शà¥\80त केली आहे. शीर्षक वगळण्याकरिता, त्या पुढील खिडकी निवडा, आणि शीर्षक वगळावर टिचकी मारा. तुम्ही [[Special:EditWatchlist/raw|कच्ची यादी सुद्धा संपादित]] करू शकता.',
+'watchlistedit-normal-explain' => 'तà¥\81मà¤\9aà¥\8dया पहारà¥\8dâ\80\8dयाà¤\9aà¥\8dया सà¥\82à¤\9aà¥\80तà¥\80ल à¤\85à¤\82तरà¥\8dà¤à¥\82त नामावळà¥\80 à¤\96ालà¥\80 निरà¥\8dदà¥\87शित केली आहे. शीर्षक वगळण्याकरिता, त्या पुढील खिडकी निवडा, आणि शीर्षक वगळावर टिचकी मारा. तुम्ही [[Special:EditWatchlist/raw|कच्ची यादी सुद्धा संपादित]] करू शकता.',
'watchlistedit-normal-submit' => 'शिर्षक वगळा',
'watchlistedit-normal-done' => 'तुमच्या नित्य पहाण्या सूचीतून वगळलेली {{PLURAL:$1|1 शीर्षक होते |$1 शीर्षके होती }}:',
'watchlistedit-raw-title' => 'कच्ची नित्य पहाण्याची सूची संपादित करा',
'watchlistedit-raw-titles' => 'शिर्षके:',
'watchlistedit-raw-submit' => 'पहाऱ्याची सूची अद्ययावत करा.',
'watchlistedit-raw-done' => 'तुमची पहाऱ्याची सूची परिष्कृत करण्यात आली आहे.',
-'watchlistedit-raw-added' => '{{PLURAL:$1|1 शिरà¥\8dषà¤\95 हà¥\8bतà¥\87 |$1 शिर्षक होती }} भर घातली:',
-'watchlistedit-raw-removed' => '{{PLURAL:$1|1 शिरà¥\8dषà¤\95 हà¥\8bतà¥\87 |$1 शिर्षक होती }} वगळले:',
+'watchlistedit-raw-added' => '{{PLURAL:$1|1 शà¥\80रà¥\8dषà¤\95 हà¥\8bतà¥\87 |$1 शà¥\80र्षक होती }} भर घातली:',
+'watchlistedit-raw-removed' => '{{PLURAL:$1|1 शà¥\80रà¥\8dषà¤\95 हà¥\8bतà¥\87 |$1 शà¥\80र्षक होती }} वगळले:',
# Watchlist editing tools
'watchlisttools-view' => 'सुयोग्य बदल पहा',
'version-poweredby-others' => 'इतर',
'version-license-info' => 'मिडियाविकि हे मुक्त संगणक प्रणाली विकि पॅकेज आहे.Free Software Foundation प्रकाशित GNU General Public परवान्याच्या अटीस अनुसरून तुम्ही त्यात बदल आणि/अथवा त्याचे पुर्नवितरण करू शकता.
-मिडियाविà¤\95ि सà¤\82à¤\97णà¤\95 पà¥\8dरणालà¥\80 à¤\89पयà¥\82à¤\95à¥\8dत ठरà¥\87ल या à¤\86शà¥\87नà¥\87 वितरà¥\80त à¤\95à¥\87लà¥\80 à¤\9cात à¤\85सलà¥\80 तरà¥\80;à¤\95à¥\8bणतà¥\8dयाहà¥\80 वितरणास à¤\85थवा विशà¥\80ष्ट उद्देशाकरिता योग्यतेची अगदी कोणतीही अप्रत्यक्ष अथवा उपलक्षित अथवा निहित अशा अथवा कोणत्याही प्रकारच्या केवळ कोणत्याही प्राश्वासनाशिवायच (WITHOUT ANY WARRANTY) उपलब्ध आहे.अधिक माहिती करिता GNU General Public License पहावे.
+मिडियाविà¤\95ि सà¤\82à¤\97णà¤\95 पà¥\8dरणालà¥\80 à¤\89पयà¥\81à¤\95à¥\8dत ठरà¥\87ल या à¤\86शà¥\87नà¥\87 वितरित à¤\95à¥\87लà¥\80 à¤\9cात à¤\85सलà¥\80 तरà¥\80;à¤\95à¥\8bणतà¥\8dयाहà¥\80 वितरणास à¤\85थवा विशिष्ट उद्देशाकरिता योग्यतेची अगदी कोणतीही अप्रत्यक्ष अथवा उपलक्षित अथवा निहित अशा अथवा कोणत्याही प्रकारच्या केवळ कोणत्याही प्राश्वासनाशिवायच (WITHOUT ANY WARRANTY) उपलब्ध आहे.अधिक माहिती करिता GNU General Public License पहावे.
तुम्हाला या प्रणाली सोबत [{{SERVER}}{{SCRIPTPATH}}/COPYING GNU General Public License परवान्याची प्रत] मिळालेली असावयास हवी, तसे नसेल तर,[//www.gnu.org/licenses/old-licenses/gpl-2.0.html येथे ऑनलाईन वाचा] किंवा the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA ला लिहा.',
'version-software' => 'स्थापित संगणक प्रणाली (Installed software)',
'filepath-page' => 'संचिका:',
'filepath-submit' => 'चला',
'filepath-summary' => 'हे विशेष पान संचिकेचा संपूर्ण मार्ग कळवते.
-à¤\9aितà¥\8dरà¥\87 सà¤\82पà¥\82रà¥\8dण रिà¤\9dà¥\8bलà¥\8dयà¥\82शन मधà¥\8dयà¥\87 दाà¤\96वलà¥\80 à¤\86हà¥\87त,à¤\87तर सà¤\82à¤\9aिà¤\95ा पà¥\8dरà¤\95ार तà¥\8dयाà¤\82à¤\9aà¥\8dया सà¤\82बधà¥\80त प्रोग्रामने प्रत्यक्ष सुरू होतात.',
+à¤\9aितà¥\8dरà¥\87 सà¤\82पà¥\82रà¥\8dण रिà¤\9dà¥\8bलà¥\8dयà¥\81शन मधà¥\8dयà¥\87 दाà¤\96वलà¥\80 à¤\86हà¥\87त,à¤\87तर सà¤\82à¤\9aिà¤\95ा पà¥\8dरà¤\95ार तà¥\8dयाà¤\82à¤\9aà¥\8dया सà¤\82बधित प्रोग्रामने प्रत्यक्ष सुरू होतात.',
# Special:FileDuplicateSearch
'fileduplicatesearch' => 'जुळ्या संचिका शोधा',
'intentionallyblankpage' => 'हे पान मुद्दाम कोरे सोडण्यात आले आहे.',
# External image whitelist
-'external_image_whitelist' => '#हà¥\87 à¤\93ल बरà¥\8bबर à¤\9cशि à¤\86हà¥\87 तशि घेने.
+'external_image_whitelist' => '#हà¥\87 à¤\93ल बरà¥\8bबर à¤\9cशà¥\80 à¤\86हà¥\87 तशà¥\80 घेने.
#नेहमि वपरले जानारे सर्व चीह्न्न् वपरने.
#बाहेरिल सर्व चित्राना ह्यासोबत जोद्दले जाइल.
-#हà¥\8dया मधिल à¤\9cà¥\81ललà¥\87लà¥\87 सरà¥\8dव à¤\9aितà¥\8dर मà¥\8dहनà¥\81न दà¤\96वलà¥\87 à¤\9cतिल,à¤\85थवा à¤\9aितà¥\8dराà¤\9aि फक़्त् लिन्क दखवलि जाइल.
-## हà¥\8dया à¤\9aिहà¥\8dना पासà¥\81न सà¥\81रà¥\81 à¤\9dलà¥\87लà¥\8dया सरà¥\8dव à¤\93लि कमेन्त म्हनुन वपरर्ल्या जातिल.
+#हà¥\8dया मधà¥\80ल à¤\9cà¥\81ललà¥\87लà¥\87 सरà¥\8dव à¤\9aितà¥\8dर मà¥\8dहनà¥\81न दà¤\96वलà¥\87 à¤\9cतिल,à¤\85थवा à¤\9aितà¥\8dराà¤\9aà¥\80 फक़्त् लिन्क दखवलि जाइल.
+## हà¥\8dया à¤\9aिहà¥\8dना पासà¥\82न सà¥\81रà¥\82 à¤\9dलà¥\87लà¥\8dया सरà¥\8dव à¤\93लà¥\80 कमेन्त म्हनुन वपरर्ल्या जातिल.
#हे केस सेन्सेतिव आहे.',
# Special:Tags
'tag-filter' => '[[Special:Tags|खूण]] गाळक:',
'tag-filter-submit' => 'गाळक',
'tags-title' => 'खुणा',
-'tags-intro' => 'पà¥\8dरणालà¥\80तà¥\82न विशिषà¥\8dà¤\9f सà¤\82पादनाà¤\82à¤\9aà¥\8dया à¤\85रà¥\8dथासहà¥\80त à¤\96à¥\82णाà¤\82à¤\9aà¥\80 यादà¥\80 नमà¥\81द करणारे पान',
+'tags-intro' => 'पà¥\8dरणालà¥\80तà¥\82न विशिषà¥\8dà¤\9f सà¤\82पादनाà¤\82à¤\9aà¥\8dया à¤\85रà¥\8dथासहित à¤\96à¥\81णाà¤\82à¤\9aà¥\80 यादà¥\80 नमà¥\82द करणारे पान',
'tags-tag' => 'खूण नाव',
'tags-display-header' => 'बदल सुचीवर कसे दिसेल',
'tags-description-header' => 'अर्थाची पूर्ण माहिती',
'compare-rev1' => 'आवर्तन १',
'compare-rev2' => 'आवर्तन २',
'compare-submit' => 'तुलना करा',
-'compare-invalid-title' => 'तà¥\81मà¥\8dहà¥\80 नमà¥\81द केलेले शीर्षक अग्राह्य आहे.',
+'compare-invalid-title' => 'तà¥\81मà¥\8dहà¥\80 नमà¥\82द केलेले शीर्षक अग्राह्य आहे.',
'compare-title-not-exists' => 'या नावाने काहीही अस्तित्वात नाही.',
-'compare-revision-not-exists' => 'à¤\86पण नमà¥\81द करत असलेली आवृत्ती अस्तित्वात नाही.',
+'compare-revision-not-exists' => 'à¤\86पण नमà¥\82द करत असलेली आवृत्ती अस्तित्वात नाही.',
# Database error messages
'dberr-header' => 'या विकीत एक चूक आहे',
'dberr-again' => 'थोडा वेळ थांबून पुन्हा पहा.',
'dberr-info' => '( विदादाताशी संपर्क साधण्यात असमर्थ : $1)',
'dberr-usegoogle' => 'तोपर्यंत गूगलवर शोधून पहा',
-'dberr-outofdate' => 'लà¤\95à¥\8dषात à¤\98à¥\8dया, à¤\86मà¤\9aà¥\8dया मà¤\9cà¤\95à¥\81राबाबत तà¥\8dयाà¤\82à¤\9aà¥\80 सà¥\81à¤\9aà¥\80 à¤\95ालबाहà¥\8dय à¤\85सà¥\81 शकते',
+'dberr-outofdate' => 'लà¤\95à¥\8dषात à¤\98à¥\8dया, à¤\86मà¤\9aà¥\8dया मà¤\9cà¤\95à¥\81राबाबत तà¥\8dयाà¤\82à¤\9aà¥\80 सà¥\82à¤\9aà¥\80 à¤\95ालबाहà¥\8dय à¤\85सà¥\82 शकते',
'dberr-cachederror' => 'ही मागवलेल्या पानाची सयीतील प्रत आहे, ती अद्ययावत नसण्याची शक्यता आहे.',
# HTML forms
'htmlform-invalid-input' => 'तुम्ही दिलेल्या माहितीत काहीतरी गडबड आहे',
-'htmlform-select-badoption' => 'à¤\86पण नमà¥\81द करत असलेली व्हॅल्यू ग्राह्य पर्याय ठरत नाही',
-'htmlform-int-invalid' => 'à¤\86पण नमà¥\81द केलेली व्हॅल्यू पूर्णांक (इंटीजर) नाही.',
+'htmlform-select-badoption' => 'à¤\86पण नमà¥\82द करत असलेली व्हॅल्यू ग्राह्य पर्याय ठरत नाही',
+'htmlform-int-invalid' => 'à¤\86पण नमà¥\82द केलेली व्हॅल्यू पूर्णांक (इंटीजर) नाही.',
'htmlform-float-invalid' => 'तुम्ही दिलेली किंमत आकडा नाही.',
'htmlform-int-toolow' => '$1 किंवा मोठा आकडा द्या.',
'htmlform-int-toohigh' => '$1 किंवा त्याहून छोटा आकडा द्या.',
'revdelete-unrestricted' => 'प्रबंधकांची बंधने काढली',
'logentry-move-move' => ' $3पान $4 कडे $1 स्थानांतरीत',
'logentry-move-move-noredirect' => '$1 ने $3 हे पान पुनर्निर्देशीत न करता $4 येथे स्थानांतरीत केले',
-'logentry-move-move_redir' => '$1 याà¤\82नà¥\80 $3 हà¥\87 पान पà¥\81नरà¥\8dनिरà¥\8dदà¥\87शन लावà¥\81न $4 येथे हलवले',
+'logentry-move-move_redir' => '$1 याà¤\82नà¥\80 $3 हà¥\87 पान पà¥\81नरà¥\8dनिरà¥\8dदà¥\87शन लावà¥\82न $4 येथे हलवले',
'logentry-move-move_redir-noredirect' => '$1 ने $3 हे पान पुनर्निर्देशीत न करता $4 येथे पुर्ननिर्देशनावर स्थानांतरीत केले',
'logentry-patrol-patrol' => ' $3 पानाच्या $1 सुचवलेल्या $4 आवृत्तीस गस्त घातली',
'logentry-patrol-patrol-auto' => ' $3 पानाच्या $1 सुचवलेल्या $4 आवृत्तीस स्वयंचलित गस्त घातली',
'searchsuggest-containing' => '.......हे असलेले',
# API errors
-'api-error-badaccess-groups' => 'à¤\86पणास हà¥\8dया विà¤\95à¥\80वर संचिका चढवण्याची परवानगी नाही',
+'api-error-badaccess-groups' => 'à¤\86पणास हà¥\8dया विà¤\95िवर संचिका चढवण्याची परवानगी नाही',
'api-error-badtoken' => 'अंतर्गत चूक: अयोग्य टोकन',
'api-error-copyuploaddisabled' => "या विदागारावर 'संकेतस्थळावरील संचिका चढविणे' अक्षम करण्यात आले आहे.",
'api-error-duplicate' => 'या संकेतस्थळावर यासारखाच आशय असलेली {{PLURAL:$1|संचिका आहे [$2 दुसरी संचिका]| [$2 दुसऱ्या संचिका]}} आहेत.',
'api-error-internal-error' => 'अंतर्गत त्रुटी:आपण विकिवर चढविलेल्या संचिकेवर प्रक्रिया करतांना काहीतरी चुकले आहे.',
'api-error-invalid-file-key' => 'अंतर्गत त्रुटी: तात्पुरत्या साठवणीत संचिका सापडली नाही.',
'api-error-missingparam' => 'अंतर्गत चूक: मागणीतील काही नोंदी राहून गेल्या आहेत',
-'api-error-missingresult' => 'à¤\86à¤\82तरिà¤\95 तà¥\8dरà¥\81à¤\9fà¥\80 : पà¥\8dरत यशसà¥\8dवà¥\80 à¤\9dालà¥\80 à¤\95ि नाही हे ठरवता येत नाही',
-'api-error-mustbeloggedin' => 'सà¤\82à¤\9aिà¤\95ा à¤\9aढविणà¥\8dयासाठà¥\80 à¤\86पण दाà¤\96ल हà¥\8bणà¥\87 à¤\9cरà¥\82री आहे.',
+'api-error-missingresult' => 'à¤\86à¤\82तरिà¤\95 तà¥\8dरà¥\81à¤\9fà¥\80 : पà¥\8dरत यशसà¥\8dवà¥\80 à¤\9dालà¥\80 à¤\95à¥\80 नाही हे ठरवता येत नाही',
+'api-error-mustbeloggedin' => 'सà¤\82à¤\9aिà¤\95ा à¤\9aढविणà¥\8dयासाठà¥\80 à¤\86पण दाà¤\96ल हà¥\8bणà¥\87 à¤\9cरà¥\81री आहे.',
'api-error-mustbeposted' => 'अंतर्गत चूक: मागणी पूर्ण करण्यासाठी HTTP POST असायला हवे',
'api-error-noimageinfo' => 'डाटा अपलोड यशस्वी झाले आहे पण सर्व्हर कडून तशी माहिती अजून मिळाली नाही',
'api-error-nomodule' => 'अंतर्गत चूक: module set चढवलेला नाही',
'api-error-ok-but-empty' => 'आंतरिक त्रुटी : विदादाता प्रतिक्रिया देत नहीं',
'api-error-overwrite' => 'अस्तित्वात असलेल्या संचिकेवर पुनर्लेखन प्रतिबंधित आहे.',
-'api-error-stashfailed' => 'à¤\87नà¥\8dतरिà¤\95 तà¥\8dरà¥\81à¤\9fà¥\80 : विदादाता तातà¥\8dपà¥\81रतà¥\8dया सà¥\8dवरà¥\81पाच्या संचिका जमा करण्यात अयशस्वी',
+'api-error-stashfailed' => 'à¤\87नà¥\8dतरिà¤\95 तà¥\8dरà¥\81à¤\9fà¥\80 : विदादाता तातà¥\8dपà¥\81रतà¥\8dया सà¥\8dवरà¥\82पाच्या संचिका जमा करण्यात अयशस्वी',
'api-error-timeout' => 'अपेक्षित वेळेत विदागार (server)ने प्रतिसाद दिला नाही.',
'api-error-unclassified' => 'एक अज्ञात चूक उद्भवली.',
'api-error-unknown-code' => 'अज्ञात त्रुटी: "$1"',
'api-error-unknown-warning' => 'अज्ञात इशारा : $1',
'api-error-unknownerror' => 'अज्ञात चूक $1',
'api-error-uploaddisabled' => 'चढवण्याचे कार्य ह्या विकिवर अवरुद्ध करण्यात आले आहे',
-'api-error-verification-error' => 'हà¥\80 सà¤\82à¤\9aिà¤\95ा à¤à¥\8dरषà¥\8dà¤\9f(à¤\95रपà¥\8dà¤\9f) à¤\9dालà¥\80 à¤\95िà¤\82वा à¤\9aà¥\81à¤\95िचा विस्तार(एक्सटेंशन) असलेली असू शकते.',
+'api-error-verification-error' => 'हà¥\80 सà¤\82à¤\9aिà¤\95ा à¤à¥\8dरषà¥\8dà¤\9f(à¤\95रपà¥\8dà¤\9f) à¤\9dालà¥\80 à¤\95िà¤\82वा à¤\9aà¥\81à¤\95à¥\80चा विस्तार(एक्सटेंशन) असलेली असू शकते.',
# Durations
'duration-seconds' => '$1 {{PLURAL:$1|सेकंदापूर्वी|सेकंदांपूर्वी}}',
'eauthentsent' => 'Sebuah e-mel pengesahan telah dikirim kepada alamat e-mel tersebut.
Sebelum e-emel lain boleh dikirim kepada alamat tersebut, anda perlu mengikuti segala arahan dalam e-mel tersebut
untuk membuktikan bahawa alamat tersebut memang milik anda.',
-'throttled-mailpassword' => 'Sebuah pengingat kata laluan telah pun
-dikirim dalam $1 jam yang lalu. Untuk mengelak penyalahgunaan, hanya satu
-pengingat kata laluan akan dikirim pada setiap $1 jam.',
+'throttled-mailpassword' => 'E-mel set semula kata laluan telah dihantar dalam tempoh $1 jam yang lalu.
+Untuk mencegah salah guna, hanya sepucuk e-mel set semula kata laluan dihantar setiap {{PLURAL:$1|jam|$1 jam}}.',
'mailerror' => 'Ralat ketika mengirim e-mel: $1',
'acct_creation_throttle_hit' => 'Pengunjung wiki ini yang menggunakan alamat IP anda telah membuka sebanyak $1 akaun semenjak sehari lepas, iaitu merupakan had maksimum yang dibenarkan dalam tempoh tersebut.
Akibatknya, pengunjung dari alamat IP ini tidak boleh membuka akaun lagi pada masa sekarang.',
# Special:PasswordReset
'passwordreset' => 'Set semula kata laluan',
-'passwordreset-text' => 'Isikan borang ini untuk menerima peringatan butiran akaun anda melalui e-mel.',
+'passwordreset-text' => 'Lengkapkan borang ini untuk mengeset semula kata laluan.',
'passwordreset-legend' => 'Set semula kata laluan',
'passwordreset-disabled' => 'Ciri set semula kata laluan telah dimatikan di wiki ini.',
'passwordreset-pretext' => '{{PLURAL:$1||Isikan data di bawah}}',
'passwordreset-capture-help' => 'Jika anda menandai ruang ini, e-mel (yang membawa kata laluan sementara) akan ditunjukkan kepada anda dan juga dihantar kepada pengguna itu.',
'passwordreset-email' => 'Alamat e-mel:',
'passwordreset-emailtitle' => 'Butiran akaun di {{SITENAME}}',
-'passwordreset-emailtext-ip' => 'Ada orang (mungkin anda, dari alamat IP $1) yang memohon peringatan butiran akaun anda untuk {{SITENAME}} ($4). {{PLURAL:$3|Akaun|Akaun-akaun}} pengguna yang berikut dikaitkan dengan alamat e-mel ini:
+'passwordreset-emailtext-ip' => 'Seseorang (mungkin anda, dari alamat IP $1) telah memohon supaya kata laluan diset semula untuk {{SITENAME}} anda ($4). {{PLURAL:$3|Akaun|Akaun-akaun}} pengguna yang berikut
+dikaitkan dengan alamat e-mel ini:
$2
-{{PLURAL:$3|Kata|Kata-kata}} laluan sementara ini akan luput dalam masa {{PLURAL:$5|sehari|$5 hari}}. Anda mesti log masuk dan buat kata laluan baru sekarang juga. Jika permohonan ini dibuat oleh orang lain, ataupun jika anda teringat balik kata laluan lama anda, dan tidak ingin lagi untuk menukarnya, anda boleh mengabaikan pesanan ini dan terus menggunakan kata laluan lama anda.',
-'passwordreset-emailtext-user' => 'Pengguna $1 di {{SITENAME}} memohon peringatan butiran akaun anda untuk {{SITENAME}} ($4). {{PLURAL:$3|Akaun|Akaun-akaun}} pengguna yang berikut dikaitkan dengan alamat e-mel ini:
+{{PLURAL:$3|Kata|Kata-kata}} laluan sementara ini akan luput dalam masa $5 hari. Anda harus log masuk dan membuat kata laluan yang baru sekarang. Jika permohonan ini dibuat oleh orang lain, atau jika anda teringat kembali kata laluan asal anda dan anda tidak lagi berhasrat untuk mengubahnya, anda boleh mengabaikan pesanan ini dan terus menggunakan kata laluan lama anda.',
+'passwordreset-emailtext-user' => 'Pengguna $1 telah memohon supaya kata laluan diset semula untuk {{SITENAME}} anda ($4). {{PLURAL:$3|Akaun|Akaun-akaun}} pengguna yang berikut
+dikaitkan dengan alamat e-mel ini:
$2
-{{PLURAL:$3|Kata|Kata-kata}} laluan sementara ini akan luput dalam masa {{PLURAL:$5|sehari|$5 hari}}. Anda mesti log masuk dan buat kata laluan baru sekarang juga. Jika permohonan ini dibuat oleh orang lain, ataupun jika anda teringat balik kata laluan lama anda, dan tidak ingin lagi untuk menukarnya, anda boleh mengabaikan pesanan ini dan terus menggunakan kata laluan lama anda.',
+{{PLURAL:$3|Kata|Kata-kata}} laluan sementara ini akan luput dalam masa $5 hari. Anda harus log masuk dan membuat kata laluan yang baru sekarang. Jika permohonan ini dibuat oleh orang lain, atau jika anda teringat kembali kata laluan asal anda dan anda tidak lagi berhasrat untuk mengubahnya, anda boleh mengabaikan pesanan ini dan terus menggunakan kata laluan lama anda.',
'passwordreset-emailelement' => 'Nama pengguna: $1
Kata laluan sementara: $2',
-'passwordreset-emailsent' => 'E-mel peringatan telah dihantar.',
-'passwordreset-emailsent-capture' => 'E-mel peringatan (seperti di bawah) telah dihantar.',
-'passwordreset-emailerror-capture' => 'E-mel peringatan (seperti di bawah) telah dihasilkan tetapi tidak dapat dihantar kepada pengguna: $1',
+'passwordreset-emailsent' => 'E-mel set semula kata laluan telah dihantar.',
+'passwordreset-emailsent-capture' => 'E-mel set semula kata laluan telah dihantar, seperti yang dipaparkan di bawah.',
+'passwordreset-emailerror-capture' => 'E-mel set semula kata laluan telah dihasilkan, seperti yang dipaparkan di bawah, tetapi tidak berjaya dihantar kepada pengguna: $1',
# Special:ChangeEmail
'changeemail' => 'Tukar alamat e-mel',
'listusers-noresult' => 'Tiada pengguna dijumpai.',
'listusers-blocked' => '(disekat)',
-# Special:ActiveUsers
-'activeusers' => 'Senarai pengguna aktif',
-'activeusers-intro' => 'Yang berikut ialah senarai pengguna yang bergiat sejak {{PLURAL:$1|semalam|$1 hari lalu}}.',
-'activeusers-count' => '$1 tindakan sejak {{PLURAL:$3|semalam|$3 hari lalu}}',
-'activeusers-from' => 'Tunjukkan pengguna bermula pada:',
-'activeusers-hidebots' => 'Sorokkan bot',
-'activeusers-hidesysops' => 'Sorokkan pentadbir',
-'activeusers-noresult' => 'Tiada pengguna dijumpai.',
-
# Special:ListGroupRights
'listgrouprights' => 'Hak kumpulan pengguna',
'listgrouprights-summary' => 'Yang berikut ialah senarai kumpulan pengguna yang ditubuhkan di wiki ini dengan hak-hak masing-masing.
'proxyblocksuccess' => 'Berjaya.',
'sorbsreason' => 'Alamat IP anda telah disenaraikan sebagai proksi terbuka dalam DNSBL yang digunakan oleh {{SITENAME}}.',
'sorbs_create_account_reason' => 'Alamat IP anda telah disenaraikan sebagai proksi terbuka dalam DNSBL yang digunakan oleh {{SITENAME}}. Oleh itu, anda tidak dibenarkan membuka akaun baru.',
+'xffblockreason' => 'Alamat IP yang terdapat dalam pengepala X-Forwarded-For, sama ada milik anda ataupun pelayan proksi yang anda gunakan, telah disekat. Sebab asal sekatan adalah: $1',
'cant-block-while-blocked' => 'Anda tidak boleh menyekat orang lain sedangkan anda disekat.',
'cant-see-hidden-user' => 'Pengguna yang anda cuba sekat telahpun disekat dan tersorok.
Memandangkan anda tidak mempunyai hak untuk menyorokkan pengguna, anda tidak boleh melihat atau menyunting sekatan pengguna tersebut.',
# Stylesheets
'common.css' => '/* CSS yang terletak di sini akan digunakan pada semua kulit */',
-'standard.css' => '/* CSS yang terletak di sini akan mempengaruhi pengguna kulit Klasik */',
-'nostalgia.css' => '/* CSS yang terletak di sini akan mempengaruhi pengguna kulit Nostalgia */',
'cologneblue.css' => '/* CSS yang terletak di sini akan mempengaruhi pengguna kulit Cologne Blue */',
'monobook.css' => '/* CSS yang terletak di sini akan mempengaruhi pengguna kulit Monobook */',
-'myskin.css' => '/* CSS yang terletak di sini akan mempengaruhi pengguna kulit MySkin */',
-'chick.css' => '/* CSS yang terletak di sini akan mempengaruhi pengguna kulit Chick */',
-'simple.css' => '/* CSS yang terletak di sini akan mempengaruhi pengguna kulit Ringkas */',
'modern.css' => '/* CSS yang terletak di sini akan mempengaruhi pengguna kulit Moden */',
'vector.css' => '/* CSS yang terletak di sini akan mempengaruhi pengguna kulit Vector */',
'pageinfo-category-files' => 'Bilangan fail',
# Skin names
-'skinname-standard' => 'Klasik',
-'skinname-nostalgia' => 'Nostalgia',
'skinname-cologneblue' => 'Cologne Blue',
'skinname-monobook' => 'MonoBook',
-'skinname-myskin' => 'MySkin',
-'skinname-chick' => 'Chick',
-'skinname-simple' => 'Ringkas',
'skinname-modern' => 'Moden',
'skinname-vector' => 'Vector',
'sqlite-no-fts' => '$1 tanpa sokongan carian teks penuh',
# New logging system
-'logentry-delete-delete' => '$1 menghapuskan laman $3',
-'logentry-delete-restore' => '$1 memulihkan laman $3',
-'logentry-delete-event' => '$1 mengubah keterlihatan {{PLURAL:$5|satu peristiwa log|$5 peristiwa log}} di $3: $4',
-'logentry-delete-revision' => '$1 mengubah keterlihatan {{PLURAL:$5|satu semakan|$5 semakan}} di $3: $4',
-'logentry-delete-event-legacy' => '$1 mengubah keterlihatan peristiwa-peristiwa log di $3',
-'logentry-delete-revision-legacy' => '$1 mengubah keterlihatan semakan-semakan di $3',
-'logentry-suppress-delete' => '$1 menyekat laman $3',
-'logentry-suppress-event' => '$1 mengubah keterlihatan {{PLURAL:$5|satu peristiwa log|$5 peristiwa log}} di $3 secara rahsia: $4',
-'logentry-suppress-revision' => '$1 mengubah keterlihatan {{PLURAL:$5|satu semakan|$5 semakan}} di $3 secara rahsia: $4',
-'logentry-suppress-event-legacy' => '$1 mengubah keterlihatan peristiwa-peristiwa log di $3 secara rahsia',
-'logentry-suppress-revision-legacy' => '$1 mengubah keterlihatan semakan-semakan di $3 secara rahsia',
+'logentry-delete-delete' => '$1 telah {{GENDER:$2|menghapuskan}} halaman $3',
+'logentry-delete-restore' => '$1 telah {{GENDER:$2|memulihkan}} halaman $3',
+'logentry-delete-event' => '$1 telah {{GENDER:$2|mengubah}} keterlihatan $5 peristiwa log di $3: $4',
+'logentry-delete-revision' => '$1 telah {{GENDER:$2|mengubah}} keterlihatan $5 semakan di halaman $3: $4',
+'logentry-delete-event-legacy' => '$1 telah {{GENDER:$2|mengubah}} keterlihatan peristiwa log di $3',
+'logentry-delete-revision-legacy' => '$1 telah {{GENDER:$2|mengubah}} keterlihatan semakan di halaman $3',
+'logentry-suppress-delete' => '$1 telah {{GENDER:$2|menyekat}} halaman $3',
+'logentry-suppress-event' => '$1 telah {{GENDER:$2|mengubah}} keterlihatan $5 peristiwa log di $3 secara senyap: $4',
+'logentry-suppress-revision' => '$1 telah {{GENDER:$2|mengubah}} keterlihatan $5 semakan di halaman $3 secara senyap: $4',
+'logentry-suppress-event-legacy' => '$1 telah {{GENDER:$2|mengubah}} keterlihatan peristiwa log di $3 secara senyap',
+'logentry-suppress-revision-legacy' => '$1 telah {{GENDER:$2|mengubah}} keterlihatan semakan di halaman $3 secara senyap',
'revdelete-content-hid' => 'kandungan tersorok',
'revdelete-summary-hid' => 'ringkasan suntingan tersorok',
'revdelete-uname-hid' => 'nama pengguna tersorok',
'revdelete-uname-unhid' => 'nama pengguna terdedah',
'revdelete-restricted' => 'mengenakan sekatan pada penyelia',
'revdelete-unrestricted' => 'menarik sekatan daripada penyelia',
-'logentry-move-move' => '$1 memindahkan laman $3 ke $4',
-'logentry-move-move-noredirect' => '$1 mengalihkan laman $3 ke $4 tanpa meninggalkan lencongan',
-'logentry-move-move_redir' => '$1 mengalihkan laman $3 ke $4 pada lencongan',
-'logentry-move-move_redir-noredirect' => '$1 mengalihkan laman $3 ke $4 pada satu lencongan tanpa meninggalkan lencongan',
-'logentry-patrol-patrol' => '$1 menandakan semakan $4 daripada laman $3 sebagai dironda',
-'logentry-patrol-patrol-auto' => '$1 menandakan semakan $4 daripada laman $3 sebagai dironda secara automatik',
-'logentry-newusers-newusers' => 'Akaun pengguna $1 dibuka',
-'logentry-newusers-create' => 'Akaun pengguna $1 dibuka',
-'logentry-newusers-create2' => 'Akaun pengguna $3 dibuka oleh $1',
-'logentry-newusers-byemail' => 'Akaun pengguna $3 dibuka oleh $1 dan kata laluannya dihantar melalui e-mel',
-'logentry-newusers-autocreate' => 'Akaun $1 dibuka secara automatik',
-'logentry-rights-rights' => '$1 menukar keahlian kumpulan untuk $3 dari $4 ke $5',
-'logentry-rights-rights-legacy' => '$1 menukar keahlian kumpulan untuk $3',
-'logentry-rights-autopromote' => '$1 dinaik pangkat secara automatik dari $4 ke $5',
+'logentry-move-move' => '$1 telah {{GENDER:$2|memindahkan}} halaman $3 ke $4',
+'logentry-move-move-noredirect' => '$1 telah {{GENDER:$2|memindahkan}} halaman $3 ke $4 tanpa meninggalkan lencongan',
+'logentry-move-move_redir' => '$1 telah {{GENDER:$2|memindahkan}} halaman $3 ke $4 melalui lencongan',
+'logentry-move-move_redir-noredirect' => '$1 telah {{GENDER:$2|memindahkan}} halaman $3 ke $4 melalui lencongan tanpa meninggalkan lencongan',
+'logentry-patrol-patrol' => '$1 telah {{GENDER:$2|menanda}} semakan $4 di halaman $3 sebagai dironda',
+'logentry-patrol-patrol-auto' => '$1 telah {{GENDER:$2|menanda}} semakan $4 di halaman $3 sebagai dironda secara automatik',
+'logentry-newusers-newusers' => 'Akaun pengguna $1 telah {{GENDER:$2|dibuka}}',
+'logentry-newusers-create' => 'Akaun pengguna $1 telah {{GENDER:$2|dibuka}}',
+'logentry-newusers-create2' => 'Akaun pengguna $3 telah {{GENDER:$2|dibuka}} oleh $1',
+'logentry-newusers-byemail' => 'Akaun pengguna $3 telah {{GENDER:$2|dibuka}} oleh $1 dan kata laluannya dihantar melalui e-mel',
+'logentry-newusers-autocreate' => 'Akaun pengguna $1 telah {{GENDER:$2|dibuka}} secara automatik',
+'logentry-rights-rights' => '$1 telah {{GENDER:$2|menukar}} keahlian kumpulan untuk $3 dari $4 ke $5',
+'logentry-rights-rights-legacy' => '$1 telah {{GENDER:$2|menukar}} keahlian kumpulan untuk $3',
+'logentry-rights-autopromote' => '$1 telah {{GENDER:$2|dinaik pangkat}} secara automatik dari $4 ke $5',
'rightsnone' => '(tiada)',
# Feedback
'page-rss-feed' => '«$1» RSS максовкс',
'page-atom-feed' => '«$1» Atom максовкс',
'red-link-title' => '$1 (истямо лопа арась)',
+'sort-descending' => 'Аравтомс лувс Я-А',
+'sort-ascending' => 'Аравтомс лувс А-Я',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'Лопа',
'gotaccount' => "Совамотаркат ули? '''$1'''.",
'gotaccountlink' => 'Совамс',
'userlogin-resetlink' => 'Совамо эрявикстнэнь стувтыть?',
-'createaccountmail' => 'е-Ñ\81Ñ\91Ñ\80маÑ\81о',
+'createaccountmail' => 'ТейÑ\82Ñ\8c кодамо понгÑ\81Ñ\8c Ñ\81алаванÑ\8c вал, кÑ\83Ñ\87ик Ñ\81онзÑ\8d ало макÑ\81озÑ\8c е-Ñ\81Ñ\91Ñ\80мапаÑ\80гонÑ\82енÑ\8c',
'createaccountreason' => 'Тувталось:',
'badretype' => 'Сёрмадыть салава валот кавксть: сынь аволь вейкеть.',
'userexists' => 'Те лемесь уш саезь.
'accountcreatedtext' => '$1-нь совицянь таркась теевсь-шкавсь.',
'loginlanguagelabel' => 'Кель: $1',
-# E-mail sending
+# Email sending
'user-mail-no-addy' => 'Терявтыть кучомс е-сёрма е-сёрмапарговтомо.',
# Change password dialog
Мусак [[Special:Search/{{PAGENAME}}|вешнемс файлань те коняксонть]] лия сёрмадовкстнэстэ эли
<span class="plainlinks">
[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} вешнемс малавикс журналтнэстэ]</span>. Ялатеке тонеть а мерить шкамс те лопанть.',
+'userpage-userdoesnotexist-view' => 'Совамотарка "$1" апак сёрмадсто.',
'updated' => '(Одолгавтозь)',
'note' => "'''Явт мель:'''",
'previewnote' => "'''Кирдтяя мельсэ, те ансяк васнянь невтевкс.'''
'history-feed-title' => 'Лиякстомтомань тевде',
'history-feed-description' => 'Викинь тевате лопанть лиякстомтомань тевдензэ',
'history-feed-item-nocomment' => '$1 $2-зэ',
+'history-feed-empty' => 'Лопа, кона вешнить, арась. Кизды нардавсь wikiстэ эли одов лемдявсь. Варчак [[Special:Search|wiki-ва вешнема]] эрявикс од лопанть муемга.',
# Revision deletion
'rev-deleted-comment' => '(витнемадо-петнемадо арсемась-мелесь нардазь)',
'search-nonefound' => 'Те вешнема лангс мезеяк эзь муеве.',
'powersearch' => 'Седеяк вешнемс',
'powersearch-legend' => 'Седе келейстэ вешнема',
-'powersearch-ns' => 'Вешнемс не лем потмотнестэ:',
-'powersearch-redir' => 'Лия таркав йутавтоматнень сёрмалема',
+'powersearch-ns' => 'Вешнемс не лемпотмотнестэ:',
+'powersearch-redir' => 'Лия таркав ютавтоматнень сёрмалема',
'powersearch-field' => 'Вешнемс',
'powersearch-toggleall' => 'Весе',
'powersearch-togglenone' => 'Арась мезе невтемс',
'qbsettings-floatingright' => 'Вить ёнга уи',
# Preferences page
-'preferences' => 'Ð\9bиÑ\8f Ñ\8eÑ\82кÑ\81Ñ\82о Ñ\8fвома',
+'preferences' => 'Ð\90Ñ\80авÑ\82омаÑ\82',
'mypreferences' => 'Аравтомат',
'prefs-edits' => 'Зяроксть витнезь-петнезь:',
'prefsnologin' => 'Эзить сова',
+'prefsnologintext' => 'Эряви <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} совамс]</span> аравтоматнень ладсемга.',
'changepassword' => 'Салавань валонь полавтома',
'prefs-skin' => 'Неемань ладсема',
'skin-preview' => 'Васнянь неевтезэ',
'datedefault' => 'Икелькс вешема арась',
'prefs-beta' => 'Бета ёнкст-мезть',
-'prefs-datetime' => 'Чи ды шка',
+'prefs-datetime' => 'Чить-шкат',
+'prefs-labs' => 'Варчамонь ёнкст-тевть',
'prefs-user-pages' => 'Теицянть лопанзо',
'prefs-personal' => 'Теицядо',
-'prefs-rc' => 'Чиень полавтнемат',
+'prefs-rc' => 'Чиень полавтнемат-лиякстомтомат',
'prefs-watchlist' => 'Ванома лемрисьме',
'prefs-watchlist-days-max' => 'Весемеде куватьс $1 {{PLURAL:$1|чис|чис}}',
'prefs-watchlist-edits-max' => 'Весемеде покш цётось: 1000',
'prefs-misc' => 'Минеть-сюнот',
-'prefs-resetpass' => 'Салава валонь полавтома',
+'prefs-resetpass' => 'Салавань валонь полавтома',
'prefs-changeemail' => 'Полавтомс е-сёрмапаргот',
'prefs-setemail' => 'Путомс е-сёрмапарго',
'prefs-email' => 'Е-сёрмат-мезть',
'restoreprefs' => 'Велявтомс мекев весе ушодкс ладсематнень',
'prefs-editing' => 'Витнема-петнема',
'prefs-edit-boxsize' => 'Витнема-петнема вальманть сэрензэ-келензэ.',
-'rows' => 'Вал чилькстнэ (строкатне):',
+'rows' => 'Валчилькстнэ (строкатне):',
'columns' => 'Палманть:',
-'searchresultshead' => 'Вешнэма',
+'searchresultshead' => 'Вешнема',
'resultsperpage' => 'Зяроксть вастневи ве лопасо:',
-'recentchangesdays-max' => '(максимумось $1 {{PLURAL:$1|чи|чить}})',
+'recentchangesdays' => 'Зяро чить невтемс чиень полавтнематнесэ-лиякстомтоматнесэ:',
+'recentchangesdays-max' => 'Весемеде куватьс $1 {{PLURAL:$1|чис|чис}}',
+'recentchangescount' => 'Васень аравтоматнень коряс зяро витнемат-петнемат невтемс:',
+'prefs-help-recentchangescount' => 'Тезэнь совавтозь чиень полавтнемат-лиякстомтомат, лопань лувт-путовкст, журналт.',
'timezonelegend' => 'Шкань зонась:',
'localtime' => 'Теицянь шкась:',
+'timezoneuseserverdefault' => 'Нолдамс тевс викинь ($1) аравтнематнень',
+'timezoneoffset' => 'Офсет¹:',
'servertime' => 'Серверэнь шкась:',
'guesstimezone' => 'Пештемс интернет икельксстэть',
'timezoneregion-africa' => 'Африка',
'prefs-dateformat' => 'Ков чинь форматозо',
'prefs-diffs' => 'Мейсэ явовить верзиятне',
-# User preference: e-mail validation using jQuery
+# User preference: email validation using jQuery
'email-address-validity-valid' => 'Е-сёрмапаргот маряви маштови',
# User rights
'listusers-noresult' => 'Совицязо а муеви',
'listusers-blocked' => '(саймас саезь)',
-# Special:ActiveUsers
-'activeusers' => 'Активной теицятнеде списка',
-'activeusers-hidebots' => 'Кекшемс ботатнень',
-'activeusers-hidesysops' => 'Кекшемс администратортнэнь',
-'activeusers-noresult' => 'Якинзэ-пакинзэ арасть',
-
# Special:ListGroupRights
'listgrouprights' => 'Теиця куронть видечинзэ',
'listgrouprights-group' => 'Куро',
'listgrouprights-addgroup-all' => 'Поладомс весе куротнень',
'listgrouprights-removegroup-all' => 'Весе куротнень нардамс',
-# E-mail user
+# Email user
'mailnologin' => 'Кучомс сёрма парго арась',
'emailuser' => 'Кучомс е-сёрма те теицянтень',
'emailpage' => 'Кучт э-сёрма теицянтень',
'pageinfo-authors' => 'Весемезэ зяро авторонзо',
# Skin names
-'skinname-standard' => 'Классикань',
-'skinname-nostalgia' => 'ОдПингеньМазы',
-'skinname-myskin' => 'ЭсьМелемКоряс',
-'skinname-simple' => 'Шожда',
'skinname-modern' => 'НееньШкань',
# Patrolling
'monthsall' => 'весе',
'limitall' => 'весе',
-# E-mail address confirmation
+# Email address confirmation
'confirmemail' => 'Кемекстамс е-почтань сёрмапаргот',
'confirmemail_send' => 'Кучомс е-сёрмасо кемекстамонь код',
'confirmemail_loggedin' => 'Е-сёрма паргот апак кемекста.',
'default' => 'ic default',
'prefs-files' => 'Tlahcuilōlli',
'youremail' => 'Maltzinteyōtl netitlanizyeyāntli:',
-'username' => 'Tlatequitiltilīltōcāitl:',
-'uid' => 'Tlatequitiltilīlli ID:',
-'prefs-memberingroups' => 'Tlācatl {{PLURAL:$1|olōlco|olōlco}}:',
+'username' => '{{GENDER:$1|Tlatequitiltilīltōcāitl}}:',
+'uid' => '{{GENDER:$|Tlatequitiltilīlli}} ID:',
+'prefs-memberingroups' => '{{GENDER:$2|Tlacotōncayōtl}} in {{PLURAL:$1|tēolōlolli|tēolōloltin}}',
'yourrealname' => 'Melāhuac motōcā:',
'yourlanguage' => 'Tlâtòlli:',
'yournick' => 'Motōcātlaliz:',
'protectexpiry' => 'Tlamiliztli:',
'protect_expiry_invalid' => 'Ahcualli tlamiliztli cāhuitl.',
'protect-default' => 'Ticmācāhuaz mochintin in tlatequitiltilīltin',
-'protect-fallback' => 'Tiquihuīquilia tlahuelītiliztli "$1"',
-'protect-level-autoconfirmed' => 'Tiquinquīxtīz yancuīc tlatequitiltilīltin īhuan in ahmo ōmocalacqueh',
-'protect-level-sysop' => 'Zan tētlamahmacanih',
+'protect-fallback' => 'Zan momācāhuazqueh tlatequitiltilīltin in tēmācāhualiztica «$1»',
+'protect-level-autoconfirmed' => 'Zan momācāhuaz moneltilīlli tlatequitiltilīltin',
+'protect-level-sysop' => 'Zan momācāhuaz tētlamahmacanimeh',
'protect-expiring' => 'motlamīz $1 (UTC)',
'protect-expiry-options' => '1 hora:1 hour,1 tōnalli:1 day,1 chicuēyilhuitl:1 week,2 chicuēyilhuitl:2 weeks,1 mētztli:1 month,3 mētztli:3 months,6 mētztli:6 months,1 xihuitl:1 year,mochipa:infinite',
'restriction-type' => 'Mācāhualiztli:',
'blanknamespace' => '(Tāchcāuh)',
# Contributions
-'contributions' => 'Ītlahcuilōl',
+'contributions' => 'In {{GENDER:$1|tlatequitiltilīlli}} ītlahcuilōl',
'contributions-title' => 'Tlatequitiltilīlli $1 ītlahcuilōl',
'mycontris' => 'Notlahcuilōl',
'contribsub2' => '$1 ($2)',
'listusers-noresult' => 'Ingen brukere funnet.',
'listusers-blocked' => '(konto blokkert)',
-# Special:ActiveUsers
-'activeusers' => 'Liste over aktive brukere',
-'activeusers-intro' => 'Dette er en liste over brukere som har hatt en eller annen form for aktivitet innenfor {{PLURAL:$1|den siste dagen|de siste dagene}}.',
-'activeusers-count' => '$1 {{PLURAL:$1|endring|endringer}} {{PLURAL:$3|det siste døgnet|de siste $3 dagene}}',
-'activeusers-from' => 'Vis brukere fra og med:',
-'activeusers-hidebots' => 'Skjul roboter',
-'activeusers-hidesysops' => 'Skjul administratorer',
-'activeusers-noresult' => 'Ingen brukere funnet.',
-
# Special:ListGroupRights
'listgrouprights' => 'Rettigheter for brukergrupper',
'listgrouprights-summary' => 'Følgende er en liste over brukergrupper som er definert på denne wikien, og hvilke rettigheter de har.
* @file
*
* @author Geitost
+ * @author Joachim Mos
* @author Kaganer
* @author Purodha
* @author Slomox
# Special:PasswordReset
'passwordreset' => 'Passwoord torüchsetten',
'passwordreset-legend' => 'Passwoord torüchsetten',
+'passwordreset-username' => 'Brukernaam:',
+'passwordreset-domain' => 'Domään',
+'passwordreset-email' => 'E-Mail-Adress:',
# Special:ChangeEmail
'changeemail' => 'E-Mail-Adress ännern',
+'changeemail-newemail' => 'Nee E-Mail-Adress:',
+'changeemail-cancel' => 'Afbreken',
# Edit page toolbar
'bold_sample' => 'Fetten Text',
'edit-no-change' => 'Dien Ännern is nich afspiekert worrn, denn dor hett sik nix an’n Text ännert.',
'edit-already-exists' => 'Kunn keen ne’e Sied opstellen, dat gifft ehr al.',
+# Content models
+'content-model-wikitext' => 'Wikitext',
+'content-model-javascript' => 'JavaScript',
+'content-model-css' => 'CSS',
+
# Parser/template warnings
'expensive-parserfunction-warning' => 'Wohrschau: Disse Sied bruukt to veel opwännige Parserfunkschonen.
'sourceurl' => 'Born-URL:',
'destfilename' => 'Dateinaam, so as dat hier spiekert warrn schall:',
'upload-maxfilesize' => 'Maximale Dateigrött: $1',
+'upload-description' => 'Dateibeschrieven',
'watchthisupload' => 'Op disse Datei oppassen',
'filewasdeleted' => 'En Datei mit dissen Naam hett dat al mal geven un is denn wegsmeten worrn. Kiek doch toeerst in dat $1 na, ehrdat du de Datei afspiekerst.',
'filename-bad-prefix' => "De Naam vun de Datei fangt mit '''„$1“''' an. Dat is normalerwies en Naam, den de Datei automaatsch vun de Digitalkamera kriggt. De Naam beschrievt de Datei nich un seggt dor ok nix över ut. Söök di doch en Naam för de Datei ut, de ok wat över den Inholt seggt.",
'statistics-header-edits' => 'Änner-Statistik',
'statistics-header-views' => 'Siedenweddergaav-Statistik',
'statistics-header-users' => 'Brukerstatistik',
+'statistics-header-hooks' => 'Annere Statistiken',
'statistics-articles' => 'Inholtssieden',
'statistics-pages' => 'Sieden',
'statistics-pages-desc' => 'All Sieden in dit Wiki, tohoop mit all Diskuschoonssieden, Redirects usw.',
'disambiguationspage' => 'Template:Mehrdüdig_Begreep',
'disambiguations-text' => 'Disse Sieden wist na Sieden för mehrdüdige Begrepen. Se schöölt lever op de Sieden wiesen, de egentlich meent sünd.<br />Ene Siet warrt as Siet för en mehrdüdigen Begreep ansehn, wenn [[MediaWiki:Disambiguationspage]] na ehr wiest.<br />Lenken ut annere Naamrüüm sünd nich mit in de List.',
+'pageswithprop-submit' => 'Los',
+
'doubleredirects' => 'Dubbelte Wiederleiden',
'doubleredirectstext' => '<b>Wohrscho:</b> Disse List kann „falsche Positive“ bargen.
Dat passeert denn, wenn en Wiederleiden blangen de Wiederleiden-Verwies noch mehr Text mit annere Verwiesen hett.
'listusers-noresult' => 'Keen Bruker funnen.',
'listusers-blocked' => '(sperrt)',
-# Special:ActiveUsers
-'activeusers' => 'Aktive Brukers',
-'activeusers-intro' => 'Dit is en List von Brukers, de {{PLURAL:$1|den verleden Dag|de verleden $1 Daag}} aktiv wesen sünd.',
-'activeusers-count' => '$1 {{PLURAL:$1|Ännern|Ännern}} {{PLURAL:$3|den verleden Dag|in de verleden $3 Daag}}',
-'activeusers-from' => 'Brukers wiesen vanaf:',
-'activeusers-hidebots' => 'Bots nich wiesen',
-'activeusers-hidesysops' => 'Administraters nich wiesen',
-'activeusers-noresult' => 'Keen Brukers funnen.',
-
# Special:ListGroupRights
'listgrouprights' => 'Brukergruppen-Rechten',
'listgrouprights-summary' => 'Dit is en List vun de Brukergruppen, de in dit Wiki defineert sünd, un de Rechten, de dor mit verbunnen sünd.
'mailnologin' => 'Du büst nich anmellt.',
'mailnologintext' => 'Du musst [[Special:UserLogin|anmellt wesen]] un in diene [[Special:Preferences|Instellungen]] en güllige E-Mail-Adress hebben, dat du annere Brukers E-Mails tostüren kannst.',
'emailuser' => 'E-Mail an dissen Bruker',
+'emailuser-title-target' => 'Email düss {{GENDER:$1|user}}',
+'emailuser-title-notarget' => 'E-Mail an Bruker',
'emailpage' => 'E-Mail an Bruker',
'emailpagetext' => 'Du kannst dissen Bruker mit dit Formular en E-Mail tostüren. As Afsenner warrt de E-Mail-Adress ut dien [[Special:Preferences|Instellen]] indragen, dat de Bruker di antern kann.',
'usermailererror' => 'Dat Mail-Objekt hett en Fehler trüchgeven:',
'noemailtext' => 'Disse Bruker hett kene güllige E-Mail-Adress angeven.',
'nowikiemailtitle' => 'E-Mails sünd nich verlöövt',
'nowikiemailtext' => 'Disse Bruker will vun annere Brukers keen E-Mails tostüürt kriegen.',
+'emailusername' => 'Brukernaam:',
+'emailusernamesubmit' => 'Wedder',
'email-legend' => 'en annern Bruker op {{SITENAME}} en E-Mail tostüren',
'emailfrom' => 'Vun:',
'emailto' => 'An:',
'whatlinkshere-filters' => 'Filters',
# Block/unblock
+'autoblockid' => 'Autoblock #$1',
+'block' => 'Bruker blocken',
+'unblock' => 'Bruker freegeven',
'blockip' => 'IP-Adress blocken',
'blockip-title' => 'Bruker sperren',
'blockip-legend' => 'Bruker blocken',
'ipusubmit' => 'Disse Sperr opheven',
'unblocked' => '[[User:$1|$1]] freegeven',
'unblocked-id' => 'Sperr $1 freegeven',
+'blocklist' => 'Sparrte Brukers',
'ipblocklist' => 'Sparrte Brukers',
'ipblocklist-legend' => 'Blockten Bruker finnen',
'ipblocklist-submit' => 'Söken',
'allmessagescurrent' => 'Text nu',
'allmessagestext' => 'Dit is de List vun de Systemnarichten, de dat in den MediaWiki-Naamruum gifft.',
'allmessagesnotsupportedDB' => '{{ns:special}}:Allmessages is nich ünnerstütt, vun wegen dat wgUseDatabaseMessages utstellt is.',
+'allmessages-filter-all' => 'All',
+'allmessages-language' => 'Spraak:',
'allmessages-filter-submit' => 'Los',
# Thumbnails
# Attribution
'anonymous' => '{{PLURAL:$1|Anonym Bruker|Anonyme Brukers}} vun {{SITENAME}}',
'siteuser' => '{{SITENAME}}-Bruker $1',
+'anonuser' => '{{SITENAME}} anonym Bruker user $1',
'lastmodifiedatby' => 'Disse Siet weer dat letzte Maal $2, $1 vun $3 ännert.',
'othercontribs' => 'Grünnt op Arbeid vun $1.',
'others' => 'annere',
'siteusers' => '{{SITENAME}}-{{PLURAL:$2|Bruker|Brukers}} $1',
+'anonusers' => '{{SITENAME}} anonym {{PLURAL:$2|user|users}} $1',
'creditspage' => 'Sieten-Autoren',
'nocredits' => 'Dor is keen Autorenlist för disse Siet verfögbor.',
'spam_reverting' => 'Trüchdreiht na de letzte Version ahn Lenken na $1.',
'spam_blanking' => 'All Versionen harrn Lenken na $1, rein maakt.',
+# Info page
+'pageinfo-title' => 'Informatschoon för "$1"',
+'pageinfo-article-id' => 'Sied-ID',
+'pageinfo-redirectsto-info' => 'Info',
+'pageinfo-contentpage-yes' => 'Jo',
+'pageinfo-protect-cascading-yes' => 'Jo',
+'pageinfo-category-info' => 'Kategorieinformatschoon',
+'pageinfo-category-pages' => 'Tall vun Sied',
+'pageinfo-category-subcats' => 'TAll vun Ünnerkategorien',
+
# Skin names
-'skinname-standard' => 'Klassik',
-'skinname-nostalgia' => 'Nostalgie',
'skinname-cologneblue' => 'Kölsch Blau',
-'skinname-chick' => 'Küken',
# Patrolling
'markaspatrolleddiff' => 'As nakeken marken',
'file-nohires' => 'Gifft dat Bild nich grötter.',
'svg-long-desc' => 'SVG-Datei, Utgangsgrött: $1 × $2 Pixel, Dateigrött: $3',
'show-big-image' => 'Dat Bild wat grötter',
+'show-big-image-size' => '$1 × $2 Pixels',
'file-info-gif-looped' => 'löppt as Slööp',
'file-info-gif-frames' => '$1 {{PLURAL:$1|Bild|Biller}}',
'file-info-png-looped' => 'löppt as Slööp',
'exif-gpsareainformation' => 'Naam vun dat GPS-Rebeet',
'exif-gpsdatestamp' => 'GPS-Datum',
'exif-gpsdifferential' => 'GPS-Differentialkorrektur',
+'exif-source' => 'Born',
+'exif-writer' => 'Schriever',
+'exif-languagecode' => 'Spraak',
+'exif-iimcategory' => 'Kategorie',
# EXIF attributes
'exif-compression-1' => 'Unkomprimeert',
'exif-gpsdirection-t' => 'Wohre Richtung',
'exif-gpsdirection-m' => 'Magneetsch Richtung',
+'exif-dc-publisher' => 'Verleger',
+
+'exif-iimcategory-clj' => 'Kriminalität un Recht',
+'exif-iimcategory-edu' => 'Uptucht',
+'exif-iimcategory-hth' => 'Gesundheit',
+'exif-iimcategory-lab' => 'Arbeit',
+'exif-iimcategory-pol' => 'Politik',
+'exif-iimcategory-rel' => 'Religion un Gloov',
+'exif-iimcategory-sci' => 'Wetenschap un Technologie',
+'exif-iimcategory-spo' => 'Sport',
+'exif-iimcategory-wea' => 'Wedder',
+
# External editor support
'edit-externally' => 'Änner disse Datei mit en extern Programm',
'edit-externally-help' => '(Lees de [//www.mediawiki.org/wiki/Manual:External_editors Installatschoonshelp] wenn du dor mehr to weten wullt)',
'confirm-purge-top' => 'Den Cache vun disse Siet leddig maken?',
'confirm-purge-bottom' => 'Maakt den Cache vun en Sied leddig un sorgt dor för dat de aktuelle Version wiest warrt.',
+# action=watch/unwatch
+'confirm-watch-button' => 'Jo',
+'confirm-watch-top' => 'Disse Siet to de Oppasslist hentofögen',
+'confirm-unwatch-button' => 'Jo',
+'confirm-unwatch-top' => 'Disse Siet vun de Oppasslist löschen',
+
# Multipage image navigation
'imgmultipageprev' => '← vörige Siet',
'imgmultipagenext' => 'nächste Siet →',
'watchlisttools-edit' => 'Oppasslist ankieken un ännern',
'watchlisttools-raw' => 'Oppasslist as Textlist ännern',
+# Signatures
+'signature' => '[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|Diskusschoon]])',
+
# Core parser functions
'unknown_extension_tag' => 'Unbekannt Extension-Tag „$1“',
'duplicate-defaultsort' => 'Wohrschau: De DEFAULTSORTKEY „$2“ överschrifft den vörher bruukten Slötel „$1“.',
'version-software' => 'Installeerte Software',
'version-software-product' => 'Produkt',
'version-software-version' => 'Version',
+'version-entrypoints-header-url' => 'URL',
# Special:FilePath
'filepath' => 'Dateipadd',
* @author Trijnstel
* @author Troefkaart
* @author Tvdm
+ * @author User555
* @author Wiki13
* @author לערי ריינהארט
*/
'listusers-noresult' => 'Geen gebruiker gevonden.',
'listusers-blocked' => '(geblokkeerd)',
-# Special:ActiveUsers
-'activeusers' => 'Aanwezige gebruikers',
-'activeusers-intro' => 'Dit is een lijst met gebruikers die enige activiteit hebben laten zien in de afgelopen {{PLURAL:$1|dag|$1 dagen}}.',
-'activeusers-count' => '$1 recente {{PLURAL:$1|handeling|handelingen}} in de {{PLURAL:$3|afgelopen dag|laatste $3 dagen}}',
-'activeusers-from' => 'Gebruikers worden weergegeven vanaf:',
-'activeusers-hidebots' => 'Bots verbergen',
-'activeusers-hidesysops' => 'Beheerders verbergen',
-'activeusers-noresult' => 'Geen actieve gebruikers gevonden.',
-
# Special:ListGroupRights
'listgrouprights' => 'Rechten van gebruikersgroepen',
'listgrouprights-summary' => 'Op deze pagina staan de gebruikersgroepen in deze wiki beschreven, met hun bijbehorende rechten.
'sorbsreason' => 'Uw IP-adres staat bekend als open proxyserver in de DNS-blacklist die {{SITENAME}} gebruikt.',
'sorbs_create_account_reason' => 'Uw IP-adres staat bekend als open proxyserver in de DNS-blacklist die {{SITENAME}} gebruikt.
U kunt geen gebruiker registreren.',
+'xffblockreason' => 'Een IP-adres dat u gebruikt is geblokkeerd. Dit staat de X-Forwarded-For van de header. De oorspronkelijke blokkadereden is: $1',
'cant-block-while-blocked' => 'U kunt andere gebruikers niet blokkeren terwijl u zelf geblokkeerd bent.',
'cant-see-hidden-user' => 'De gebruiker die u probeert te blokken is al geblokkeerd en verborgen.
Omdat u het recht "hideuser" niet hebt, kunt u de blokkade van de gebruiker niet bekijken of bewerken.',
# Stylesheets
'common.css' => '/** CSS die hier wordt geplaatst heeft invloed op alle skins */',
-'standard.css' => '/* CSS die hier wordt geplaatst heeft alleen invloed op de skin Standard */',
-'nostalgia.css' => '/* CSS die hier wordt geplaatst heeft alleen invloed op de skin Nostalgie */',
'cologneblue.css' => '/* CSS die hier wordt geplaatst heeft alleen invloed op de skin Keuls blauw */',
'monobook.css' => '/* CSS die hier wordt geplaatst heeft alleen invloed op de skin Monobook */',
-'myskin.css' => '/* CSS die hier wordt geplaatst heeft alleen invloed op de skin MijnSkin */',
-'chick.css' => '/* CSS die hier wordt geplaatst heeft alleen invloed op de skin Chick */',
-'simple.css' => '/* CSS die hier wordt geplaatst heeft alleen invloed op de skin Eenvoudig */',
'modern.css' => '/* CSS die hier wordt geplaatst heeft alleen invloed op de skin Modern */',
'vector.css' => '/* CSS die hier wordt geplaatst heeft alleen invloed op de skin Vector */',
'print.css' => '/* CSS die hier wordt geplaatst heeft alleen invloed op de printuitvoer */',
# Scripts
'common.js' => "/* JavaScript die hier wordt geplaatst heeft invloed op alle pagina's voor alle gebruikers */",
-'standard.js' => '/* JavaScript die hier wordt geplaatst heeft alleen invloed op gebruikers die de skin Standaard gebruiken */',
-'nostalgia.js' => '/* JavaScript die hier wordt geplaatst heeft alleen invloed op gebruikers die de skin Nostalgie gebruiken */',
'cologneblue.js' => '/* JavaScript die hier wordt geplaatst heeft alleen invloed op gebruikers die de skin Keuls blauw gebruiken */',
'monobook.js' => '/* JavaScript die hier wordt geplaatst heeft alleen invloed op gebruikers die de skin Monobook gebruiken */',
-'myskin.js' => '/* JavaScript die hier wordt geplaatst heeft alleen invloed op gebruikers die de skin MijnSkin gebruiken */',
-'chick.js' => '/* JavaScript die hier wordt geplaatst heeft alleen invloed op gebruikers die de skin Chick gebruiken */',
-'simple.js' => '/* JavaScript die hier wordt geplaatst heeft alleen invloed op gebruikers die de skin Eenvoudig gebruiken */',
'modern.js' => '/* JavaScript die hier wordt geplaatst heeft alleen invloed op gebruikers die de skin Modern gebruiken */',
'vector.js' => '/* JavaScript die hier wordt geplaatst heeft alleen invloed op gebruikers die de skin Vector gebruiken */',
'group-autoconfirmed.js' => '/* JavaScript die hier wordt geplaatst heeft alleen invloed op automatisch bevestigde gebruikers */',
'pageinfo-category-files' => 'Aantal bestanden',
# Skin names
-'skinname-standard' => 'Klassiek',
-'skinname-nostalgia' => 'Nostalgie',
'skinname-cologneblue' => 'Keuls blauw',
'skinname-monobook' => 'Monobook',
-'skinname-myskin' => 'MijnSkin',
-'skinname-chick' => 'Chick',
-'skinname-simple' => 'Eenvoudig',
'skinname-modern' => 'Modern',
'skinname-vector' => 'Vector',
'currentevents-url' => 'Project:Aktuelt',
'disclaimers' => 'Atterhald',
'disclaimerpage' => 'Project:Atterhald',
-'edithelp' => 'Hjelp til endring',
+'edithelp' => 'Endringshjelp',
'edithelppage' => 'Help:Endring',
'helppage' => 'Help:Innhald',
'mainpage' => 'Hovudside',
'listusers-noresult' => 'Ingen brukarnamn vart funne.',
'listusers-blocked' => '(konto blokkert)',
-# Special:ActiveUsers
-'activeusers' => 'Liste over aktive brukarar',
-'activeusers-intro' => 'Dette er ei liste over brukarar som har hatt ei eller anna form for aktivitet innanfor {{PLURAL:$1|den siste dagen|dei siste dagane}}.',
-'activeusers-count' => '{{PLURAL:$1|Éi handling|$1 handlingar}} {{PLURAL:$3|det siste døgeret|dei siste $3 døgra}}',
-'activeusers-from' => 'Vis brukarar frå og med:',
-'activeusers-hidebots' => 'Skjul botar',
-'activeusers-hidesysops' => 'Skjul administratorar',
-'activeusers-noresult' => 'Ingen brukarar funne.',
-
# Special:ListGroupRights
'listgrouprights' => 'Rettar for brukargrupper',
'listgrouprights-summary' => 'Detter ei liste som viser brukargruppene som er definerte på wikien, og kva rettar dei har. Det kan finnast [[{{MediaWiki:Listgrouprights-helppage}}|meir informasjon]] om dei ulike rettane.',
# Stylesheets
'common.css' => '/* CSS plassert i denne fila vil gjelde for alle utsjånader. */',
-'standard.css' => '/* CSS i denne fila vil gjelde alle som nyttar drakta Standard */',
-'nostalgia.css' => '/* CSS i denne fila vil gjelde alle som nyttar drakta Nostalgia */',
'cologneblue.css' => '/* CSS i denne fila vil gjelde alle som nyttar drakta Kølnerblå */',
'monobook.css' => '/* CSS-tekst som vert plassert her, endrar utsjånaden til sidedrakta Monobook */',
-'myskin.css' => '/* CSS i denne fila vil gjelde alle som nyttar drakta MySkin */',
-'chick.css' => '/* CSS i denne fila vil gjelde alle som nyttar drakta Chick */',
-'simple.css' => '/* CSS i denne fila vil gjelde alle som nyttar drakta Simple */',
'modern.css' => '/* CSS i denne fila vil gjelde alle som nyttar drakta Modern */',
'print.css' => '/* CSS i denne fila vil påverke utskriftsversjonen */',
'handheld.css' => '/* CSS i denne fila vil gjelde alle handheldte innretnigar konfigurert i $wgHandheldStyle */',
# Scripts
'common.js' => '/* Javascript i denne fila vil gjelde for alle drakter. */',
-'standard.js' => '/* Javascript i denne fila vil gjelde for brukarar av drakta Standard */',
-'nostalgia.js' => '/* Javascript i denne fila vil gjelde for brukarar av drakta Nostalgia */',
'cologneblue.js' => '/* Javascript i denne fila vil gjelde for brukarar av drakta Kølnerblå */',
'monobook.js' => '/* Javascript i denne fila vil gjelde for brukarar av drakta Monobook */',
-'myskin.js' => '* Javascript i denne fila vil gjelde for brukarar av drakta MySkin */',
-'chick.js' => '* Javascript i denne fila vil gjelde for brukarar av drakta Chick */',
-'simple.js' => '* Javascript i denne fila vil gjelde for brukarar av drakta Simple */',
'modern.js' => '* Javascript i denne fila vil gjelde for brukarar av drakta Modern */',
# Metadata
'pageinfo-category-files' => 'Tal filer',
# Skin names
-'skinname-standard' => 'Klassisk',
-'skinname-nostalgia' => 'Nostalgi',
'skinname-cologneblue' => 'Kölnerblå',
'skinname-monobook' => 'MonoBook',
-'skinname-myskin' => 'MiDrakt',
-'skinname-chick' => 'Chick',
-'skinname-simple' => 'Enkel',
'skinname-modern' => 'Moderne',
# Patrolling
# Core parser functions
'unknown_extension_tag' => 'Ukjend tilleggsmerking «$1»',
-'duplicate-defaultsort' => 'Åtvaring: Standarsorteringa «$2» tar over for den tidlegare sorteringa «$1».',
+'duplicate-defaultsort' => 'Åtvaring: Standardsorteringa «$2» tar over for den tidlegare sorteringa «$1».',
# Special:Version
'version' => 'Versjon',
'listusers-noresult' => 'ଜଣେ ବି ସଭ୍ୟ ମିଳିଲେ ନାହିଁ ।',
'listusers-blocked' => '(ଅଟକାଯାଇଥିବା)',
-# Special:ActiveUsers
-'activeusers' => 'ସଚଳ ସଭ୍ୟଙ୍କ ତାଲିକା',
-'activeusers-intro' => 'ବିଗତ $1 {{PLURAL:$1|ଦିନ|ଦିନ}} ଭିତରେ କିଛି ପ୍ରକାରର କାମ କରିଥିବା ସଭ୍ୟମାନଙ୍କର ତାଲିକା ।',
-'activeusers-count' => 'ବିଗତ {{PLURAL:$3|ଦିନ|$3 ଦିନରେ}}ରେ $1ଟି {{PLURAL:$1|ସମ୍ପାଦନା|ସମ୍ପାଦନାଗୁଡିକ}}',
-'activeusers-from' => 'ଏହି ନାମରେ ଆରମ୍ଭ ହେଉଥିବା ସଭ୍ୟମାନଙ୍କୁ ଦେଖାଇବେ:',
-'activeusers-hidebots' => 'ଆପେଆପେ ଚାଳିତ ସଭ୍ୟମାନଙ୍କୁ ଲୁଚାନ୍ତୁ',
-'activeusers-hidesysops' => 'ପରିଚାଳକମାନଙ୍କୁ ଲୁଚାଇବେ',
-'activeusers-noresult' => 'ଜଣେ ବି ସଭ୍ୟ ମିଳିଲେ ନାହିଁ ।',
-
# Special:ListGroupRights
'listgrouprights' => 'ସଭ୍ୟ ଗୋଠ ଅଧିକାରସମୂହ',
'listgrouprights-summary' => 'ତଳେ ଉଇକି ସ୍ଥିର କରାଯାଇଥିବା ଏକ ଏକ ବ୍ୟବହାରକାରୀ ଗୋଠର ତାଲିକା ଦିଆଯାଇଛି, ସେଥିରେ ସେମାନଙ୍କ ବ୍ୟବହାର ଅଧିକାର ବାବଦରେ ମଧ୍ୟ ଦିଆଯାଇଛି ।
* @author BdgwksxD
* @author Beau
* @author BeginaFelicysym
+ * @author Chrumps
* @author Cysioland
* @author Derbeth
* @author Equadus
'site-atom-feed' => 'Kanał Atom {{GRAMMAR:D.lp|$1}}',
'page-rss-feed' => 'Kanał RSS „$1”',
'page-atom-feed' => 'Kanał Atom „$1”',
+'feed-rss' => 'RSS',
'red-link-title' => '$1 (strona nie istnieje)',
'sort-descending' => 'Sortuj malejąco',
'sort-ascending' => 'Sortuj rosnąco',
'listusers-noresult' => 'Nie znaleziono żadnego użytkownika.',
'listusers-blocked' => '({{GENDER:$1|zablokowany|zablokowana|zablokowany}})',
-# Special:ActiveUsers
-'activeusers' => 'Lista aktywnych użytkowników',
-'activeusers-intro' => 'Poniżej znajduje się lista użytkowników, którzy byli aktywni w ciągu {{PLURAL:$1|ostatniego dnia|ostatnich $1 dni}}.',
-'activeusers-count' => 'w ciągu {{PLURAL:$3|ostatniego dnia|ostatnich $3 dni}} {{GENDER:$2|wykonał|wykonała|wykonał}} $1 {{PLURAL:$1|edycję|edycje|edycji}}',
-'activeusers-from' => 'Pokaż użytkowników zaczynając od',
-'activeusers-hidebots' => 'Ukryj boty',
-'activeusers-hidesysops' => 'Ukryj administratorów',
-'activeusers-noresult' => 'Nie odnaleziono żadnego użytkownika.',
-
# Special:ListGroupRights
'listgrouprights' => 'Uprawnienia grup użytkowników',
'listgrouprights-summary' => 'Poniżej znajduje się spis zdefiniowanych na tej wiki grup użytkowników, z wyszczególnieniem przydzielonych im uprawnień.
'sorbsreason' => 'Twój adres IP znajduje się na liście serwerów open proxy w DNSBL, używanej przez {{GRAMMAR:B.lp|{{SITENAME}}}}.',
'sorbs_create_account_reason' => 'Twój adres IP znajduje się na liście serwerów open proxy w DNSBL, używanej przez {{GRAMMAR:B.lp|{{SITENAME}}}}.
Nie możesz utworzyć konta',
+'xffblockreason' => 'Adres IP obecny w nagłówku X-Forwarded-For – twój lub serwera proxy, z którego korzystasz – został zablokowany. Powód blokady to: $1',
'cant-block-while-blocked' => 'Nie możesz zablokować innych użytkowników, kiedy sam jesteś zablokowany.',
'cant-see-hidden-user' => 'Konto użytkownika, które próbujesz zablokować, zostało już zablokowane oraz ukryte. Bez uprawnienia do ukrywania kont nie możesz zobaczyć oraz modyfikować blokady tego użytkownika.',
'ipbblocked' => 'Nie możesz blokować i odblokowywać innych użytkowników, ponieważ sam jesteś zablokowany',
# Stylesheets
'common.css' => '/* Umieszczony tutaj kod CSS zostanie zastosowany we wszystkich skórkach */',
-'standard.css' => '/* Umieszczony tutaj kod CSS wpłynie na wygląd skórki Standardowa */',
-'nostalgia.css' => '/* Umieszczony tutaj kod CSS wpłynie na wygląd skórki Tęsknota */',
'cologneblue.css' => '/* Umieszczony tutaj kod CSS wpłynie na wygląd skórki Błękit */',
'monobook.css' => '/* Umieszczony tutaj kod CSS wpłynie na wygląd skórki Książka */',
-'myskin.css' => '/* Umieszczony tutaj kod CSS wpłynie na wygląd skórki Moja skórka */',
-'chick.css' => '/* Umieszczony tutaj kod CSS wpłynie na wygląd skórki Kurczaczek */',
-'simple.css' => '/* Umieszczony tutaj kod CSS wpłynie na wygląd skórki Prosta */',
'modern.css' => '/* Umieszczony tutaj kod CSS wpłynie na wygląd skórki Nowoczesna */',
'vector.css' => '/* Umieszczony tutaj kod CSS wpłynie na wygląd skórki Wektor */',
'print.css' => '/* Umieszczony tutaj kod CSS wpłynie na wygląd wydruku */',
'noscript.css' => '/* Umieszczony tu arkusz stylów CSS będzie wykorzystywany dla użytkowników z wyłączoną obsługą JavaScript */',
'group-autoconfirmed.css' => '/* CSS tutaj umieszczony będzie dotyczyć tylko automatycznie zatwierdzonych użytkowników */',
'group-bot.css' => '/* CSS tutaj umieszczony będzie obowiązywał tylko dla botów */',
+'group-sysop.css' => '/* Umieszczony tutaj kod CSS dotyczyć będzie tylko administratorów */',
+'group-bureaucrat.css' => '/* Umieszczony tutaj kod CSS dotyczyć będzie tylko biurokratów */',
# Scripts
'common.js' => '/* Umieszczony tutaj kod JavaScript zostanie załadowany przez każdego użytkownika, podczas każdego ładowania strony. */',
-'standard.js' => '/* Umieszczony tutaj kod JavaScript zostanie załadowany wyłącznie przez użytkowników korzystających ze skórki Standardowa */',
-'nostalgia.js' => '/* Umieszczony tutaj kod JavaScript zostanie załadowany wyłącznie przez użytkowników korzystających ze skórki Tęsknota */',
'cologneblue.js' => '/* Umieszczony tutaj kod JavaScript zostanie załadowany wyłącznie przez użytkowników korzystających ze skórki Błękit */',
'monobook.js' => '/* Umieszczony tutaj kod JavaScript zostanie załadowany wyłącznie przez użytkowników korzystających ze skórki Książka */',
-'myskin.js' => '/* Umieszczony tutaj kod JavaScript zostanie załadowany wyłącznie przez użytkowników korzystających ze skórki Moja skórka */',
-'chick.js' => '/* Umieszczony tutaj kod JavaScript zostanie załadowany wyłącznie przez użytkowników korzystających ze skórki Kurczaczek */',
-'simple.js' => '/* Umieszczony tutaj kod JavaScript zostanie załadowany wyłącznie przez użytkowników korzystających ze skórki Prosta */',
'modern.js' => '/* Umieszczony tutaj kod JavaScript zostanie załadowany wyłącznie przez użytkowników korzystających ze skórki Nowoczesna */',
'vector.js' => '/* Umieszczony tutaj kod JavaScript zostanie załadowany wyłącznie przez użytkowników korzystających ze skórki Wektor */',
'pageinfo-category-files' => 'Liczba plików',
# Skin names
-'skinname-standard' => 'Standardowa',
-'skinname-nostalgia' => 'Tęsknota',
'skinname-cologneblue' => 'Błękit',
'skinname-monobook' => 'Książka',
-'skinname-myskin' => 'Moja skórka',
-'skinname-chick' => 'Kurczaczek',
-'skinname-simple' => 'Prosta',
'skinname-modern' => 'Nowoczesna',
'skinname-vector' => 'Wektor',
# User preference toggles
'tog-underline' => 'Anliure con la sotliniadura',
'tog-justify' => 'Paràgraf: giustificà',
-'tog-hideminor' => 'Stërma le modìfiche cite<br />ant sla pàgina "Ùltime Modìfiche"',
-'tog-hidepatrolled' => "Stërma le modìfiche verificà ant j'ùltime modìfiche",
-'tog-newpageshidepatrolled' => 'Stërma le pàgine verificà da la lista dle pàgine neuve',
-'tog-extendwatchlist' => 'Slarga la funsion "ten sot euj" an manera che a la smon-a tute le modìfiche, nen mach l\'ùltima',
-'tog-usenewrc' => "Deuvra j'ùltime modìfiche ameliorà (a-i và JavaScript)",
+'tog-hideminor' => "Stërmé le modìfiche cite ant sla pàgina dj'ùltime modìfiche",
+'tog-hidepatrolled' => "Stërmé le modìfiche dzorvejà ant j'ùltime modìfiche",
+'tog-newpageshidepatrolled' => 'Stërmé le pàgine dzorvejà da la lista dle pàgine neuve',
+'tog-extendwatchlist' => "Slarghé la lista ëd ròba che as ten sot-euj an manera che a la smon-a tute le modìfiche, nen mach j'ùltime",
+'tog-usenewrc' => "Argropré le modìfiche për pàgina ant j'ùltime modìfiche e ant la lista dla ròba ch'as ten sot-euj (a-i và JavaScript)",
'tog-numberheadings' => 'Tìtoj ëd paràgraf<br />che as nùmero daspërlor',
-'tog-showtoolbar' => "Mostra la bara dj'utiss (a-i va Javascript)",
-'tog-editondblclick' => "Dobia sgnacà për modifiché l'artìcol<br />(a-i va JavaScript)",
-'tog-editsection' => "Abìlita la modìfica dle session con j'anliure [modìfica]",
+'tog-showtoolbar' => "Smon-e la bara dj'utiss ëd modìfica (a-i va Javascript)",
+'tog-editondblclick' => "Dobia sgnacà për modifiché l'artìcol (a-i va JavaScript)",
+'tog-editsection' => "Abilité le modìfiche ëd session con j'anliure [modifiché]",
'tog-editsectiononrightclick' => 'Abilité la modìfica dle session ën sgnacand-je ansima<br /> al tìtol col tast drit dël rat (a-i va Javascript)',
'tog-showtoc' => "Buta le tàole dij contnù<br />(për j'artìcoj che l'han pì che 3 session)",
'tog-rememberpassword' => "Visesse ëd mia ciav ansima a 's navigador (për al pi $1 {{PLURAL:$1|di|di}})",
'listusers-noresult' => 'Gnun utent përparèj.',
'listusers-blocked' => '(blocà)',
-# Special:ActiveUsers
-'activeusers' => "Lista dj'utent ativ",
-'activeusers-intro' => "Costa a l'é na lista d'utent ch'a l'han avù n'atività qualsëssìa ant j'ùltim $1 {{PLURAL:$1|di|di}}.",
-'activeusers-count' => "$1 {{PLURAL:$1|modìfica neuva|modìfiche neuve}} ant {{PLURAL:$3|l'ùltim di|j'ùltim $3 di}}",
-'activeusers-from' => "Smon-me j'utent a parte da:",
-'activeusers-hidebots' => 'Stërmé ij trigomiro',
-'activeusers-hidesysops' => "Stërmé j'aministrator",
-'activeusers-noresult' => 'Pa gnun utent trovà.',
-
# Special:ListGroupRights
'listgrouprights' => "Drit dël grup d'utent",
'listgrouprights-summary' => "Ambelessì a-i é na lista dle partìe d'utent definìe ansima a costa wiki, con ij sò drit d'acess associà.
'listusers-noresult' => 'Não foram encontrados utilizadores.',
'listusers-blocked' => '(bloqueado)',
-# Special:ActiveUsers
-'activeusers' => 'Utilizadores activos',
-'activeusers-intro' => 'Esta é uma lista dos utilizadores com qualquer tipo de actividade {{PLURAL:$1|no último dia|nos últimos $1 dias}}.',
-'activeusers-count' => '$1 {{PLURAL:$1|ação|ações}} {{PLURAL:$3|no último dia|nos últimos $3 dias}}',
-'activeusers-from' => 'Mostrar utilizadores começando por:',
-'activeusers-hidebots' => 'Esconder robôs',
-'activeusers-hidesysops' => 'Esconder administradores',
-'activeusers-noresult' => 'Nenhum utilizador encontrado.',
-
# Special:ListGroupRights
'listgrouprights' => 'Privilégios dos grupos de utilizadores',
'listgrouprights-summary' => 'A seguinte lista contém os grupos de utilizadores definidos nesta wiki, com os respectivos privilégios de acesso.
See also:
* {{msg-mw|Mytalk}}
* {{msg-mw|Accesskey-pt-mytalk}}
-* {{msg-mw|Tooltip-pt-mytalk}}',
+* {{msg-mw|Tooltip-pt-mytalk}}
+{{Identical|Talk}}',
'anontalk' => 'Link to the talk page appearing in [[mw:Help:Navigation#User_Links|user links]] for each anonymous users when [[mw:Manual:$wgShowIPinHeader|$wgShowIPinHeader]] is true.
See also:
'pool-queuefull' => 'Part of {{msg-mw|view-pool-error}}
"Pool" refers to a pool of processes.',
-'pool-errorunknown' => 'Part of {{msg-mw|view-pool-error}}.',
+'pool-errorunknown' => 'Part of {{msg-mw|view-pool-error}}.
+{{Identical|Unknown error}}',
# 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' => 'Used as the label of the link that appears at the footer of every page on the wiki (in most of the skins) and leads to the page that contains the site description. The link target is {{msg-mw|aboutpage}}.
See also:
* {{msg-mw|Mimesearch|page title}}
-* {{msg-mw|Ilsubmit|Submit button text}}',
+* {{msg-mw|Ilsubmit|Submit button text}}
+{{Identical|MIME type}}',
'download' => 'Direct download link in each line returned by [[Special:MIMESearch]]. Points to the actual file, rather than the image description page.
{{Identical|Download}}',
'listusers-blocked' => 'Used on [[Special:ActiveUsers]] when a user has been blocked.
* $1 is a user name for use with GENDER (optional)',
-# Special:ActiveUsers
-'activeusers' => 'Title of [[Special:ActiveUsers]]',
-'activeusers-intro' => 'Used as introduction in [[Special:ActiveUsers]]. Parameters:
-* $1 - number of days (<code>$wgActiveUserDays</code>)',
-'activeusers-count' => "Used in [[Special:ActiveUsers]] to show the active user's recent action count in brackets ([]).
-* $1 is the number of recent actions
-* $2 is the user's name for use with GENDER (optional)
-* $3 is the maximum number of days of the RecentChangesList",
-'activeusers-from' => 'Used as label for checkbox in the form on [[Special:ActiveUsers]].
-
-identical with {{msg-mw|listusersfrom}}
-
-See also:
-* {{msg-mw|activeusers|legend for the form}}
-* {{msg-mw|activeusers-hidebots|label for checkbox}}
-* {{msg-mw|activeusers-hidesysops|label for checkbox}}',
-'activeusers-hidebots' => 'Used as label for checkbox in the form on [[Special:ActiveUsers]].
-
-See also:
-* {{msg-mw|activeusers|legend for the form}}
-* {{msg-mw|activeusers-from|label for input box}}
-* {{msg-mw|activeusers-hidesysops|label for checkbox}}',
-'activeusers-hidesysops' => 'Used as label for checkbox in the form on [[Special:ActiveUsers]].
-
-See also:
-* {{msg-mw|activeusers|legend for the form}}
-* {{msg-mw|activeusers-from|label for input box}}
-* {{msg-mw|activeusers-hidebots|label for checkbox}}',
-'activeusers-noresult' => 'identical with {{msg-mw|listusers-noresult}}',
-
# Special:ListGroupRights
'listgrouprights' => 'The name of the special page [[Special:ListGroupRights]].',
'listgrouprights-summary' => 'The description used on [[Special:ListGroupRights]].',
See also:
* {{msg-mw|Sorbsreason}}
* {{msg-mw|Sorbs create account_reason}}',
+'xffblockreason' => "This text is shown to the user as a block reason and describes that the user is being blocked because an IP in the X-Forwarded-For header (which lists the user's IP as well as all IPs of the transparent proxy servers they went through) sent when they loaded the page has been blocked:
+* $1 is the original block reason for the IP address matched in the X-Forwarded-For header",
'cant-see-hidden-user' => 'Used as (red) error message on [[Special:Block]] when you try to change (as sysop without the hideuser right) the block of a hidden user.',
'ipbblocked' => 'Error message shown when a user tries to alter block settings when they are themselves blocked.',
'ipbnounblockself' => 'Error message shown when a user without the <tt>unblockself</tt> right tries to unblock themselves.',
* {{msg-mw|Thumbnail-dest-create}}
* {{msg-mw|Thumbnail dest directory}}
* {{msg-mw|Thumbnail invalid params}}
+* {{msg-mw|Thumbnail image-missing}}
* {{msg-mw|Djvu no xml}}
* {{msg-mw|Djvu page error}}
* {{msg-mw|Svg-long-error}}
* {{msg-mw|Viewsource}}
* {{msg-mw|Accesskey-ca-viewsource}}
* {{msg-mw|Tooltip-ca-viewsource}}',
+'tooltip-ca-history' => 'Used as tooltip for {{msg-mw|Vector-view-history}}.
+
+See for example {{canonicalurl:Main_Page|useskin=vector}}Main page?useskin=vector]
+
+See also:
+* {{msg-mw|Vector-view-history}}
+* {{msg-mw|Accesskey-ca-history}}',
'tooltip-ca-protect' => 'Used as tooltip for {{msg-mw|Protect}}.
See also:
# Stylesheets
'common.css' => '{{optional}}
CSS applied to all users.',
-'standard.css' => '{{optional}}',
-'nostalgia.css' => '{{optional}}',
'cologneblue.css' => '{{optional}}',
'monobook.css' => '{{optional}}
CSS applied to users using Monobook skin.',
-'myskin.css' => '{{optional}}',
-'chick.css' => '{{optional}}',
-'simple.css' => '{{optional}}',
'modern.css' => '{{optional}}',
'vector.css' => '{{optional}}',
'print.css' => '{{optional}}',
# Scripts
'common.js' => '{{optional}}
JS for all users.',
-'standard.js' => '{{optional}}',
-'nostalgia.js' => '{{optional}}',
'cologneblue.js' => '{{optional}}',
'monobook.js' => '{{optional}}
JS for users using Monobook skin.',
-'myskin.js' => '{{optional}}',
-'chick.js' => '{{optional}}',
-'simple.js' => '{{optional}}',
'modern.js' => '{{optional}}',
'vector.js' => '{{optional}}',
'group-autoconfirmed.js' => '{{doc-group|autoconfirmed|js}}',
* {{msg-mw|Pageinfo-category-subcats}}',
# Skin names
-'skinname-standard' => '{{optional}}
-{{Identical|Classic}}',
-'skinname-nostalgia' => '{{optional}}',
'skinname-cologneblue' => '{{optional}}',
'skinname-monobook' => '{{optional}}',
-'skinname-myskin' => '{{optional}}',
-'skinname-chick' => '{{optional}}',
-'skinname-simple' => '{{optional}}',
'skinname-modern' => '{{optional}}',
'skinname-vector' => '{{optional}}',
'listusers-noresult' => 'Ruraqqa manam tarisqachu.',
'listusers-blocked' => "(hark'asqa)",
-# Special:ActiveUsers
-'activeusers' => "Llamk'achkaq ruraqkuna",
-'activeusers-intro' => "Kay qatiqpiqa ruraqkunatam rikunki, qhipaq $1 {{PLURAL:$1|p'unchawpi|p'unchawkunapi}} kay wikipi imatapas ruraq.",
-'activeusers-count' => "$1 {{PLURAL:$1|llamk'apusqa|llamk'apusqakuna}} ñaqha {{PLURAL:$3|p'unchawpi|$3 p'unchawkunapi}}",
-'activeusers-from' => 'Ruraqkunata rikuchiy, kaywan qallarispa:',
-'activeusers-hidebots' => 'Rurana antachakunata pakay',
-'activeusers-hidesysops' => 'Kamachiqkunata pakay',
-'activeusers-noresult' => 'Ruraqkunataqa manam tarinichu.',
-
# Special:ListGroupRights
'listgrouprights' => 'Ruraq huñup hayñinkuna',
'listgrouprights-summary' => "Kay qatiq sutisuyupiqa kay wikipi sut'ichasqa ruraq huñukunatam, kikinpa chayamuna hayñinkunatawan rikunki.
'listusers-noresult' => 'Nici un utilizator găsit.',
'listusers-blocked' => '(blocat{{GENDER:$1||ă|}})',
-# Special:ActiveUsers
-'activeusers' => 'Listă utilizatori activi',
-'activeusers-intro' => 'Aceasta este o listă cu utilizatorii care au avut orice fel de activitate în {{PLURAL:$1|ultima zi|ultimele $1 zile}}.',
-'activeusers-count' => '{{PLURAL:$1|o acțiune|$1 acțiuni|$1 de acțiuni}} în {{PLURAL:$3|ultima zi|ultimele $3 zile|ultimele $3 de zile}}',
-'activeusers-from' => 'Afișează utilizatori începând cu:',
-'activeusers-hidebots' => 'Ascunde roboții',
-'activeusers-hidesysops' => 'Ascunde administratorii',
-'activeusers-noresult' => 'Niciun utilizator găsit.',
-
# Special:ListGroupRights
'listgrouprights' => 'Permisiuni grupuri de utilizatori',
'listgrouprights-summary' => 'Mai jos se află o listă a grupurilor de utilizatori definite în acest wiki, împreună cu permisiunile de acces asociate.
'sorbsreason' => 'Adresa dumneavoastră IP este listată ca un proxy deschis în DNSBL.',
'sorbs_create_account_reason' => 'Adresa dumneavoastră IP este listată ca un proxy deschis în lista neagră DNS.
Nu vă puteți crea un cont',
+'xffblockreason' => 'O adresă IP prezentă în antetul X-Forwarded-For — fie a dumneavoastră, fie a serverului proxy pe care îl folosiți — a fost blocată. Motivul original al blocării a fost: $1',
'cant-block-while-blocked' => 'Nu puteți bloca alți utilizatori în timp ce sunteți dumneavoastră înșivă blocat.',
'cant-see-hidden-user' => 'Utilizatorul pe care încercați să îl blocați este deja blocat și ascuns. Atata timp cât nu aveți drept de hideuser, nu puteți vedea sau modifica blocarea acestuia.',
'ipbblocked' => 'Nu puteți bloca sau debloca alți utilizatori în timp ce sunteți dumneavoastră înșivă blocat.',
# Stylesheets
'common.css' => '/** CSS plasate aici vor fi aplicate tuturor aparițiilor */',
-'standard.css' => '/* CSS plasate aici vor afecta utilizatorii stilului Standard */',
-'nostalgia.css' => '/* CSS plasate aici vor afecta utilizatorii stilului Nostalgia */',
'cologneblue.css' => '/* CSS plasate aici vor afecta utilizatorii stilului Cologne Blue */',
'monobook.css' => '/* modificați acest fișier pentru a adapta înfățișarea monobook-ului pentru tot situl*/',
-'myskin.css' => '/* CSS plasate aici vor afecta utilizatorii stilului MySkin */',
-'chick.css' => '/* CSS plasate aici vor afecta utilizatorii stilului Chick */',
-'simple.css' => '/* CSS plasate aici vor afecta utilizatorii stilului Simple */',
'modern.css' => '/* CSS plasate aici vor afecta utilizatorii stilului Modern */',
'vector.css' => '/* CSS plasate aici vor afecta utilizatorii stilului Vector */',
'print.css' => '/* CSS plasate aici vor afecta modul în care paginile vor fi imprimate */',
'pageinfo-category-files' => 'Număr de fișiere',
# Skin names
-'skinname-standard' => 'Clasic',
-'skinname-nostalgia' => 'Nostalgie',
'skinname-cologneblue' => 'Albastru de Cologne',
'skinname-monobook' => 'Monobook',
-'skinname-myskin' => 'StilulMeu',
-'skinname-chick' => 'Șic',
-'skinname-simple' => 'Simplu',
'skinname-modern' => 'Modern',
'skinname-vector' => 'Vector',
'listusers-noresult' => 'Nisciune utende acchiete.',
'listusers-blocked' => '(bloccate)',
-# Special:ActiveUsers
-'activeusers' => "Liste de l'utinde attive",
-'activeusers-intro' => "Queste jè 'n'elenghe de utinde ca avene fatte certe tipe de attività fine a l'urteme $1 {{PLURAL:$1|sciurne|sciurne}}.",
-'activeusers-count' => "$1 {{PLURAL:$1|cangiamende|cangiaminde}} jndr'à l'urteme {{PLURAL:$3|sciurne}}",
-'activeusers-from' => "Fà vedè l'utinde partenne da:",
-'activeusers-hidebots' => 'Scunne le bot',
-'activeusers-hidesysops' => 'Scunne le amministrature',
-'activeusers-noresult' => 'Nisciune utende acchiate.',
-
# Special:ListGroupRights
'listgrouprights' => 'Deritte de le gruppe utinde',
'listgrouprights-summary' => "'A liste ca ste vide ète 'na liste de le gruppe utinde ccreiate sus a sta Uicchi, cu le lore deritte d'accesse associate.
'blocked-mailpassword' => 'Редактирование с вашего IP-адреса запрещено, поэтому заблокирована и функция восстановления пароля.',
'eauthentsent' => 'На указанный адрес электронной почты отправлено письмо.
Следуйте изложенным там инструкциям для подтверждения того, что этот адрес действительно принадлежит вам.',
-'throttled-mailpassword' => 'Функция напоминания пароля уже использовалась в течение {{PLURAL:$1|последнего $1 часа|последних $1 часов|последних $1 часов}} .
+'throttled-mailpassword' => 'Функция напоминания пароля уже использовалась в течение {{PLURAL:$1|последнего часа|последних $1 часов}}.
Для предотвращения злоупотреблений, разрешено запрашивать не более одного напоминания за $1 {{PLURAL:$1|час|часа|часов}}.',
'mailerror' => 'Ошибка при отправке почты: $1',
'acct_creation_throttle_hit' => 'За сутки с вашего IP-адреса {{PLURAL:$1|была создана $1 учётная запись участника|было создано $1 учётных записей участников|было создано $1 учётных записей участников}}, что является пределом для данного отрезка времени.
# Special:PasswordReset
'passwordreset' => 'Сброс пароля',
-'passwordreset-text' => 'Ð\97аполниÑ\82е Ñ\8dÑ\82Ñ\83 Ñ\84оÑ\80мÑ\83, Ñ\87Ñ\82обÑ\8b полÑ\83Ñ\87иÑ\82Ñ\8c в пиÑ\81Ñ\8cме напоминание о паÑ\80амеÑ\82Ñ\80аÑ\85 Ð\92аÑ\88ей Ñ\83Ñ\87Ñ\91Ñ\82ной запиÑ\81и.',
+'passwordreset-text' => 'ЧÑ\82обÑ\8b Ñ\81бÑ\80оÑ\81иÑ\82Ñ\8c Ñ\81вой паÑ\80олÑ\8c, заполниÑ\82е Ñ\8dÑ\82Ñ\83 Ñ\84оÑ\80мÑ\83.',
'passwordreset-legend' => 'Сбросить пароль',
'passwordreset-disabled' => 'Сбросы пароля отключены на этой вики.',
'passwordreset-pretext' => '{{PLURAL:$1||Введите одну из частей данных, показанных ниже}}',
'passwordreset-capture-help' => 'Если вы установите данную отметку, то вам будет показано письмо с временным паролем, отправляемое участнику.',
'passwordreset-email' => 'Адрес электронной почты:',
'passwordreset-emailtitle' => 'Сведения об учётной записи {{SITENAME}}',
-'passwordreset-emailtext-ip' => 'Кто-то (возможно, вы, с IP-адреса $1) запросил напоминание о вашей
-учётной записи в проекте {{SITENAME}} ($4).
-{{PLURAL:$3|Следующая учётная запись связана|Следующие учётные записи связаны}} с этим адресом электронной почты:
+'passwordreset-emailtext-ip' => 'Кто-то (возможно, вы, с IP-адреса $1) запросил сброс пароля к вашей учётной записи в проекте {{SITENAME}} ($4).
+С этим адресом электронной почты {{PLURAL:$3|связана следующая учётная запись|связаны следующие учётные записи}}:
$2
{{PLURAL:$3|Этот временный пароль будет|Эти временные пароли будут}} действовать {{PLURAL:$5|$5 день|$5 дня|$5 дней}}.
-Вы должны представиться системе и выбрать новый пароль.
-Если вы не делали этого запроса или вспомнили свой исходный пароль
-и не желаете его менять, то можете проигнорировать это сообщение
-и продолжить использовать свой старый пароль.',
-'passwordreset-emailtext-user' => 'Участник $1 из проекта {{SITENAME}} запросил напоминание о вашей
-учётной записи в проекте {{SITENAME}} ($4).
-{{PLURAL:$3|Следующая учётная запись связана|Следующие учётные записи связаны}} с этим адресом электронной почты:
+Вы должны представиться системе и выбрать новый пароль.
+Если вы не делали этого запроса, или вспомнили свой исходный пароль и не желаете его менять,
+то можете проигнорировать это сообщение и продолжить использовать свой старый пароль.',
+'passwordreset-emailtext-user' => 'Участник $1 из проекта {{SITENAME}} запросил сброс пароля для вашей учётной записи в проекте {{SITENAME}} ($4).
+С этим адресом электронной почты {{PLURAL:$3|связана следующая учётная запись|связаны следующие учётные записи}}:
$2
{{PLURAL:$3|Этот временный пароль будет|Эти временные пароли будут}} действовать {{PLURAL:$5|$5 день|$5 дня|$5 дней}}.
Вы должны представиться системе и выбрать новый пароль.
-Если вы не делали этого запроса или вспомнили свой исходный пароль
-и не желаете его менять, то можете проигнорировать это сообщение
-и продолжить использовать свой старый пароль.',
+Если вы не делали этого запроса или вспомнили свой исходный пароль и не желаете его менять,
+то можете проигнорировать это сообщение и продолжить использовать свой старый пароль.',
'passwordreset-emailelement' => 'Имя участника: $1
Временный пароль: $2',
-'passwordreset-emailsent' => 'Ð\9fо Ñ\8dлекÑ\82Ñ\80онной поÑ\87Ñ\82е бÑ\8bло оÑ\82пÑ\80авлено напоминание.',
-'passwordreset-emailsent-capture' => 'Ð\9dиже пÑ\80иведено оÑ\82пÑ\80авленное пиÑ\81Ñ\8cмо-напоминание.',
-'passwordreset-emailerror-capture' => 'Ð\9dиже пÑ\80иведено Ñ\81озданное пиÑ\81Ñ\8cмо-напоминание, его оÑ\82пÑ\80авка не Ñ\83далаÑ\81Ñ\8c по причине: $1',
+'passwordreset-emailsent' => 'Ð\9eÑ\82пÑ\80авлено Ñ\8dлекÑ\82Ñ\80онное пиÑ\81Ñ\8cмо Ñ\81 инÑ\84оÑ\80маÑ\86ией о Ñ\81бÑ\80оÑ\81е паÑ\80олÑ\8f.',
+'passwordreset-emailsent-capture' => 'Ð\9eÑ\82пÑ\80авлено Ñ\8dлекÑ\82Ñ\80онное пиÑ\81Ñ\8cмо Ñ\81 инÑ\84оÑ\80маÑ\86ией о Ñ\81бÑ\80оÑ\81е паÑ\80олÑ\8f, Ñ\82екÑ\81Ñ\82 коÑ\82оÑ\80ого можно Ñ\83видеÑ\82Ñ\8c ниже.',
+'passwordreset-emailerror-capture' => 'Ð\91Ñ\8bло Ñ\81оздано Ñ\8dлекÑ\82Ñ\80онное пиÑ\81Ñ\8cмо Ñ\81 инÑ\84оÑ\80маÑ\86ией о Ñ\81бÑ\80оÑ\81е паÑ\80олÑ\8f, Ñ\82екÑ\81Ñ\82 коÑ\82оÑ\80ого можно Ñ\83видеÑ\82Ñ\8c ниже. Ð\9eднако его не Ñ\83далоÑ\81Ñ\8c оÑ\82пÑ\80авиÑ\82Ñ\8c по Ñ\81ледÑ\83Ñ\8eÑ\89ей причине: $1',
# Special:ChangeEmail
'changeemail' => 'Изменить адрес электронной почты',
'listusers-noresult' => 'Не найдено участников.',
'listusers-blocked' => '(заблокирован{{GENDER:$1||а}})',
-# Special:ActiveUsers
-'activeusers' => 'Список активных участников',
-'activeusers-intro' => 'Это список участников, совершавших какие-либо действия за {{PLURAL:$1|последний $1 день|последние $1 дня|последние $1 дней}}.',
-'activeusers-count' => '$1 {{PLURAL:$1|правка|правки|правок}} за {{PLURAL:$3|$3 последний день|последние $3 дня|последние $3 дней}}',
-'activeusers-from' => 'Показать участников, начиная с:',
-'activeusers-hidebots' => 'Скрыть ботов',
-'activeusers-hidesysops' => 'Скрыть администраторов',
-'activeusers-noresult' => 'Не найдено участников.',
-
# Special:ListGroupRights
'listgrouprights' => 'Права групп участников',
'listgrouprights-summary' => 'Ниже представлен список определённых в этой вики групп участников, указаны соответствующие им права доступа.
'proxyblocksuccess' => 'Выполнено.',
'sorbsreason' => 'Ваш IP-адрес числится как открытый прокси в DNSBL.',
'sorbs_create_account_reason' => 'Ваш IP-адрес числится как открытый прокси в DNSBL. Вы не можете создать учётную запись.',
+'xffblockreason' => 'Был заблокирован IP-адрес, присутствующий в заголовке X-Forwarded-For и принадлежащий либо вам, либо используемому вами прокси-серверу. Первоначальная причина блокировки была следующей: $1',
'cant-block-while-blocked' => 'Вы не можете блокировать других участников, пока вы сами заблокированы.',
'cant-see-hidden-user' => 'Участник, которого вы пытаетесь заблокировать, уже заблокирован и скрыт. Поскольку у вас нет разрешения на работу по сокрытию участников, вы не можете просмотреть или изменить данную блокировку.',
'ipbblocked' => 'Вы не можете блокировать или разблокировать других участников, так как вы сами заблокированы',
# Stylesheets
'common.css' => '/* Размещённый здесь CSS будет применяться ко всем темам оформления */',
-'standard.css' => '/* Размещённый здесь CSS будет применяться к теме оформления Standard */',
-'nostalgia.css' => '/* Размещённый здесь CSS будет применяться к теме оформления Nostalgia */',
'cologneblue.css' => '/* Размещённый здесь CSS будет применяться к теме оформления Cologne Blue */',
'monobook.css' => '/* Размещённый здесь CSS будет применяться к теме оформления Monobook */',
-'myskin.css' => '/* Размещённый здесь CSS будет применяться к теме оформления MySkin */',
-'chick.css' => '/* Размещённый здесь CSS будет применяться к теме оформления Chick */',
-'simple.css' => '/* Размещённый здесь CSS будет применяться к теме оформления Simple */',
'modern.css' => '/* Размещённый здесь CSS будет применяться к теме оформления Modern */',
'vector.css' => '/* Размещённый здесь CSS будет применяться к векторной теме оформления */',
'print.css' => '/* Размещённый здесь CSS будет применяться к версии для печати */',
# Scripts
'common.js' => '/* Размещённый здесь код JavaScript будет загружаться пользователям при обращении к каждой странице */',
-'standard.js' => '/* Размещённый здесь код JavaScript будет загружаться пользователям, использующим тему оформления Standard */',
-'nostalgia.js' => '/* Размещённый здесь код JavaScript будет загружаться пользователям, использующим тему оформления Nostalgia */',
'cologneblue.js' => '/* Размещённый здесь код JavaScript будет загружаться пользователям, использующим тему оформления Cologne Blue */',
'monobook.js' => '/* Размещённый здесь код JavaScript будет загружаться пользователям, использующим тему оформления MonoBook */',
-'myskin.js' => '/* Размещённый здесь код JavaScript будет загружаться пользователям, использующим тему оформления MySkin */',
-'chick.js' => '/* Размещённый здесь код JavaScript будет загружаться пользователям, использующим тему оформления Chick */',
-'simple.js' => '/* Размещённый здесь код JavaScript будет загружаться пользователям, использующим тему оформления Simple */',
'modern.js' => '/* Размещённый здесь код JavaScript будет загружаться пользователям, использующим тему оформления Modern */',
'vector.js' => '/* Размещённый здесь код JavaScript будет загружаться пользователям, использующим тему оформления Vector */',
'group-autoconfirmed.js' => '/* Размещённый здесь код JavaScript будет загружаться только участникам, имеющим статус автоподтверждённых (autoconfirmed) */',
'pageinfo-category-files' => 'Количество файлов',
# Skin names
-'skinname-standard' => 'Классическое',
-'skinname-nostalgia' => 'Ностальгия',
'skinname-cologneblue' => 'Кёльнская тоска',
-'skinname-myskin' => 'Своё',
-'skinname-chick' => 'Цыпа',
-'skinname-simple' => 'Простое',
'skinname-modern' => 'Современное',
'skinname-vector' => 'Векторное',
# New logging system
'logentry-delete-delete' => '$1 {{GENDER:$2|удалил|удалила}} страницу $3',
-'logentry-delete-restore' => '$1 {{GENDER:$1|восстановил|восстановила}} страницу $3',
-'logentry-delete-event' => '$1 {{GENDER:$1|изменил|изменила}} видимость {{PLURAL:$5|$5 записи|$5 записей}} журнала на $3: $4',
-'logentry-delete-revision' => '$1 {{GENDER:$1|изменил|изменила}} видимость {{PLURAL:$5|$5 версии|$5 версий}} на странице $3: $4',
-'logentry-delete-event-legacy' => '$1 {{GENDER:$1|изменил|изменила}} видимость записей журнала $3',
-'logentry-delete-revision-legacy' => '$1 {{GENDER:$1|изменил|изменила}} видимость версий на странице $3',
-'logentry-suppress-delete' => '$1 {{GENDER:$1|подавил|подавила}} страницу $3',
-'logentry-suppress-event' => '$1 скрытно {{GENDER:$1|изменил|изменила}} видимость {{PLURAL:$5|$5 записи|$5 записей}} журнала на $3: $4',
-'logentry-suppress-revision' => '$1 скрытно {{GENDER:$1|изменил|изменила}} видимость {{PLURAL:$5|$5 версии|$5 версий}} на странице $3: $4',
-'logentry-suppress-event-legacy' => '$1 скрытно {{GENDER:$1|изменил|изменила}} видимость записей журнала $3',
-'logentry-suppress-revision-legacy' => '$1 скрытно {{GENDER:$1|изменил|изменила}} видимость версий на странице $3',
+'logentry-delete-restore' => '$1 {{GENDER:$2|восстановил|восстановила}} страницу $3',
+'logentry-delete-event' => '$1 {{GENDER:$2|изменил|изменила}} видимость {{PLURAL:$5|$5 записи|$5 записей}} журнала на $3: $4',
+'logentry-delete-revision' => '$1 {{GENDER:$2|изменил|изменила}} видимость {{PLURAL:$5|$5 версии|$5 версий}} на странице $3: $4',
+'logentry-delete-event-legacy' => '$1 {{GENDER:$2|изменил|изменила}} видимость записей журнала $3',
+'logentry-delete-revision-legacy' => '$1 {{GENDER:$2|изменил|изменила}} видимость версий на странице $3',
+'logentry-suppress-delete' => '$1 {{GENDER:$2|подавил|подавила}} страницу $3',
+'logentry-suppress-event' => '$1 скрытно {{GENDER:$2|изменил|изменила}} видимость {{PLURAL:$5|$5 записи|$5 записей}} журнала на $3: $4',
+'logentry-suppress-revision' => '$1 скрытно {{GENDER:$2|изменил|изменила}} видимость {{PLURAL:$5|$5 версии|$5 версий}} на странице $3: $4',
+'logentry-suppress-event-legacy' => '$1 скрытно {{GENDER:$2|изменил|изменила}} видимость записей журнала $3',
+'logentry-suppress-revision-legacy' => '$1 скрытно {{GENDER:$2|изменил|изменила}} видимость версий на странице $3',
'revdelete-content-hid' => 'содержание скрыто',
'revdelete-summary-hid' => 'описание правки скрыто',
'revdelete-uname-hid' => 'имя участника скрыто',
'revdelete-uname-unhid' => 'имя участника раскрыто',
'revdelete-restricted' => 'ограничения применяются к администраторам',
'revdelete-unrestricted' => 'ограничения сняты для администраторов',
-'logentry-move-move' => '$1 {{GENDER:$1|переименовал|переименовала}} страницу $3 в $4',
-'logentry-move-move-noredirect' => '$1 {{GENDER:$1|переименовал|переименовала}} страницу $3 в $4 без оставления перенаправления',
-'logentry-move-move_redir' => '$1 {{GENDER:$1|переименовал|переименовала}} страницу $3 в $4 поверх перенаправления',
-'logentry-move-move_redir-noredirect' => '$1 {{GENDER:$1|переименовал|переименовала}} страницу $3 в $4 поверх перенаправления и без оставления перенаправления',
-'logentry-patrol-patrol' => '$1 {{GENDER:$1|отпатрулировал|отпатрулировала}} версию $4 страницы $3',
-'logentry-patrol-patrol-auto' => '$1 автоматически {{GENDER:$1|отпатрулировал|отпатрулировала}} версию $4 страницы $3',
-'logentry-newusers-newusers' => 'Создана учётная запись $1',
-'logentry-newusers-create' => 'Создана учётная запись $1',
+'logentry-move-move' => '$1 {{GENDER:$2|переименовал|переименовала}} страницу $3 в $4',
+'logentry-move-move-noredirect' => '$1 {{GENDER:$2|переименовал|переименовала}} страницу $3 в $4 без оставления перенаправления',
+'logentry-move-move_redir' => '$1 {{GENDER:$2|переименовал|переименовала}} страницу $3 в $4 поверх перенаправления',
+'logentry-move-move_redir-noredirect' => '$1 {{GENDER:$2|переименовал|переименовала}} страницу $3 в $4 поверх перенаправления и без оставления перенаправления',
+'logentry-patrol-patrol' => '$1 {{GENDER:$2|отпатрулировал|отпатрулировала}} версию $4 страницы $3',
+'logentry-patrol-patrol-auto' => '$1 автоматически {{GENDER:$2|отпатрулировал|отпатрулировала}} версию $4 страницы $3',
+'logentry-newusers-newusers' => '{{GENDER:$2|Участник создал|Участница создала}} учётную запись $1',
+'logentry-newusers-create' => '{{GENDER:$2|Участник создал|Участница создала}} учётную запись $1',
'logentry-newusers-create2' => '$1 {{GENDER:$2|создал|создала}} учётную запись $3',
'logentry-newusers-byemail' => '$1 {{GENDER:$2|создал|создала}} учётную запись $3 и пароль был отправлен по электронной почте',
-'logentry-newusers-autocreate' => 'Автоматически создана учётная запись $1',
-'logentry-rights-rights' => '$1 {{GENDER:$1|изменил|изменила}} членство в группах для $3 с $4 на $5',
-'logentry-rights-rights-legacy' => '$1 {{GENDER:$1|изменил|изменила}} членство в группах для $3',
+'logentry-newusers-autocreate' => 'Автоматически создана учётная запись {{GENDER:$2|участника|участницы}} $1',
+'logentry-rights-rights' => '$1 {{GENDER:$2|изменил|изменила}} членство в группах для $3 с $4 на $5',
+'logentry-rights-rights-legacy' => '$1 {{GENDER:$2|изменил|изменила}} членство в группах для $3',
'logentry-rights-autopromote' => '$1 был{{GENDER:$2||а}} автоматически переведен{{GENDER:$2||а}} из $4 в $5',
'rightsnone' => '(нет)',
# Email sending
'php-mail-error-unknown' => 'पीएच्पी इत्येतस्य mail() फलने अज्ञाता काऽपि त्रुटिर्जाता।',
'user-mail-no-addy' => 'ईपत्रसङ्केतं विना ईपत्रप्रेषणस्य प्रयासः कृतः ।',
+'user-mail-no-body' => 'भवता खलु विद्युत्पत्रं रिक्ततया अथवा अतिलघुरूपेण प्रेषितुं चेष्टितम्।',
# Change password dialog
'resetpass' => 'कूटशब्दः परिवर्त्यताम्',
एतानि यथार्थविषैः योजनीयानि । <br />
यदि कोऽपि पुटेन प्रकृतिं प्रयोजयति यः [[MediaWiki:Disambiguationspage]] इत्यनेन अनुबद्धः ससन्दिग्धपुटम् इति उच्यते ।',
+'pageswithprop' => 'प्रगुणविशेषयुतानि पृष्ठानि',
+'pageswithprop-legend' => 'प्रगुणविशेषयुतानि पृष्ठानि',
+
'doubleredirects' => 'दुगुनी-अनुप्रेषिते',
'doubleredirectstext' => 'एतत्पुटं तेषां पुटानां सूची अस्ति यानि अन्यपुनर्निदेशितपुटानि प्रति पुनरिदेशितानि सन्ति ।
प्रत्येकं पङ्क्तिः प्रथमद्वितीयपुनर्निदेशम् अन्तर्गता । द्वितीयपुनर्निदेशः लक्ष्यं यत् वास्तवं लक्ष्यपुटं प्रथमं प्रदर्शितम् ।
'listusers-noresult' => 'योजकः न प्राप्तः ।',
'listusers-blocked' => 'अवरुद्धम् ।',
-# Special:ActiveUsers
-'activeusers' => 'सक्रिययोजकानाम् आवली ।',
-'activeusers-intro' => 'एषा तु गतेषु $1 {{PLURAL:$1|दिनेषु}} कृतकार्याणां योजकाना आवली ।',
-'activeusers-count' => '$1 {{PLURAL:$1|सम्पादनानि}} गतेषु $3 {{PLURAL:$3|दिनेषु}} कृतानि ।',
-'activeusers-from' => 'एतस्मात् आरभमाणान् योजकान् दर्शयतु ।',
-'activeusers-hidebots' => 'स्वयं चालकान् गोपयतु ।',
-'activeusers-hidesysops' => 'प्रशासकान् गोपयतु ।',
-'activeusers-noresult' => 'योजकः न प्राप्तः ।',
-
# Special:ListGroupRights
'listgrouprights' => 'योजकसमूहाधिकाराः ।',
'listgrouprights-summary' => 'अधोदत्ता विकिपरिभाषितस्य सङ्गताभिगम्यताधिकारैः सहिता योजकसमूहस्य आवली । [[{{MediaWiki:Listgrouprights-helppage}}|additional information]]',
'pageinfo-category-info' => 'वर्गविषयकसूचना',
'pageinfo-category-pages' => 'पृष्ठानां सङ्ख्या',
'pageinfo-category-subcats' => 'उपवर्गानां सङ्ख्या',
+'pageinfo-category-files' => 'सञ्चिकानां सङ्ख्या',
# Skin names
-'skinname-standard' => 'पूर्व',
-'skinname-nostalgia' => 'पुराण',
'skinname-cologneblue' => 'नील',
'skinname-monobook' => 'पुस्तक',
-'skinname-myskin' => 'मे चर्मन्',
-'skinname-chick' => 'Chick',
# Patrolling
'markaspatrolleddiff' => 'आरक्षितमिति अङ्कयतु ।',
'search-interwiki-default' => '$1 වෙතින් ප්රතිඵල:',
'search-interwiki-more' => '(තවත්)',
'search-relatedarticle' => 'සහසම්බන්ධිත',
-'mwsuggest-disable' => 'AJAX ඇඟවිලි අක්රීය කරන්න',
+'mwsuggest-disable' => 'සෙවුම් යෝජනා අක්රීය කරන්න',
'searcheverything-enable' => 'සියළු නාමඅවකාශයන්හි ගවේෂණය කරන්න',
'searchrelated' => 'ආශ්රිත',
'searchall' => 'සියල්ල',
'listusers-noresult' => 'පරිශීලකයෙකු සොයාගත නොහැකි විය.',
'listusers-blocked' => '(වාරණය කොට)',
-# Special:ActiveUsers
-'activeusers' => 'සක්රීය පරිශීලකයන් ලැයිස්තුව',
-'activeusers-intro' => 'මෙය පසුගිය $1 {{PLURAL:$1|දිනය|දින}}තුළ යම් ක්රියාකාරකමක් කළ පරිශීලකයන්ගේ ලැයිස්තුවකි.',
-'activeusers-count' => '{{PLURAL:$1|එක් සංස්කරණයක්|සංස්කරණ $1 ක්}} අවසන් {{PLURAL:$3|දිනය|දින $3}} තුළ',
-'activeusers-from' => 'මෙයින් ඇරඹෙන පරිශීලකයන් පෙන්වන්න:',
-'activeusers-hidebots' => ' bots සඟවන්න',
-'activeusers-hidesysops' => 'පරිපාලකයින් සඟවන්න',
-'activeusers-noresult' => 'කිසිදු පරිශීලකයෙකු හමුනොවිණි.',
-
# Special:ListGroupRights
'listgrouprights' => 'පරිශීලක කාණ්ඩ හිමිකම්',
'listgrouprights-summary' => 'මෙම විකියේ අර්ථදක්වා ඇති පරිශීලක කාණ්ඩ ලැයිස්තුවක් ඔවුනට අදාළ ප්රවේශ හිමිකම්ද සමගින් මෙහි පහත ලැයිස්තුගත කොට ඇත.
'usermessage-editor' => 'පද්ධති පණිවුඩ කරු',
# Watchlist
-'watchlist' => 'මà¶\9cà·\9a මà·\94ර-ලැයිස්තුව',
+'watchlist' => 'මà·\94රලැයිස්තුව',
'mywatchlist' => 'මුර-ලැයිස්තුව',
'watchlistfor2' => '$1 සඳහා ($2)',
'nowatchlist' => 'ඔබගේ මුර-ලැයිස්තුවේ කිසිදු අයිතමයක් නොමැත.',
# Stylesheets
'common.css' => '/* මෙහි CSS බහාලීම සියළු ඡවියයන් භාවිතා කරන පරිශීලකයන් හට බලපෑම් සිදු කල හැක */',
-'standard.css' => '/* මෙහි CSS බහාලීම සම්මත ඡවිය භාවිතා කරන පරිශීලකයන් හට බලපෑම් සිදු කල හැක */',
-'nostalgia.css' => '/* මෙහි CSS බහාලීම පිළිසැමරුම් ඡවිය භාවිතා කරන පරිශීලකයන් හට බලපෑම් සිදු කල හැක */',
'cologneblue.css' => '/* මෙහි CSS බහාලීම "Cologne Blue" ඡවිය භාවිතා කරන පරිශීලකයන් හට බලපෑම් සිදු කල හැක */',
'monobook.css' => '/* මෙහි CSS බහාලීම ඒකායන ඡවිය භාවිතා කරන පරිශීලකයන් හට බලපෑම් සිදු කල හැක */',
-'myskin.css' => '/* මෙහි CSS බහාලීම මගේ-ඡවිය ඡවිය භාවිතා කරන පරිශීලකයන් හට බලපෑම් සිදු කල හැක */',
-'chick.css' => '/* මෙහි CSS බහාලීම හැඩකාරී ඡවිය භාවිතා කරන පරිශීලකයන් හට බලපෑම් සිදු කල හැක */',
-'simple.css' => '/* මෙහි CSS බහාලීම සරල ඡවිය භාවිතා කරන පරිශීලකයන් හට බලපෑම් සිදු කල හැක */',
'modern.css' => '/* මෙහි CSS බහාලීම නූතන ඡවිය භාවිතා කරන පරිශීලකයන් හට බලපෑම් සිදු කල හැක */',
'print.css' => '/* මෙහි CSS බහාලීම මුද්රණ ප්රතිදානයට බලපෑම් සිදු කල හැක */',
'handheld.css' => '/* මෙහි බහාලන CSS විසින් $wgHandheldStyle හි වින්යාසකෙරෙන ජවිය මත පදනම් වූ අතේ ගෙන යා හැකි උපකරණ වලට බලපෑම් කල හැක*/',
# Scripts
'common.js' => '/* මෙහි ඕනෑම ජාවාස්ක්රිප්ට් එකක් සෑම පිටු ප්රවේශනයකදීම සියළු පරිශීලකයන්හට ප්රවේශනය කෙරේ. */',
-'standard.js' => '/* මෙහි ඕනෑම ජාවාස්ක්රිප්ට් එකක් සම්මත ඡවිය භාවිතා කරන පරිශීලකයන්හට ප්රවේශනය කෙරේ */',
-'nostalgia.js' => '/* මෙහි ඕනෑම ජාවාස්ක්රිප්ට් එකක් පිළි සැමරුම් ඡවිය භාවිතා කරන පරිශීලකයන්හට ප්රවේශනය කෙරේ */',
'cologneblue.js' => '/* මෙහි ඕනෑම ජාවාස්ක්රිප්ට් එකක් සිහිල්-සුවඳ-පැන් ඡවිය භාවිතා කරන පරිශීලකයන්හට ප්රවේශනය කෙරේ */',
'monobook.js' => '/* මෙහි ඕනෑම ජාවාස්ක්රිප්ට් එකක් ඒකායන ඡවිය භාවිතා කරන පරිශීලකයන්හට ප්රවේශනය කෙරේ */',
-'myskin.js' => '/* මෙහි ඕනෑම ජාවාස්ක්රිප්ට් එකක් මගේ-ඡවිය ඡවිය භාවිතා කරන පරිශීලකයන්හට ප්රවේශනය කෙරේ */',
-'chick.js' => '/* මෙහි ඕනෑම ජාවාස්ක්රිප්ට් එකක් හැඩකාරී ඡවිය භාවිතා කරන පරිශීලකයන්හට ප්රවේශනය කෙරේ */',
-'simple.js' => '/* මෙහි ඕනෑම ජාවාස්ක්රිප්ට් එකක් සරල ඡවිය භාවිතා කරන පරිශීලකයන්හට ප්රවේශනය කෙරේ */',
'modern.js' => '/* මෙහි ඕනෑම ජාවාස්ක්රිප්ට් එකක් නූතන ඡවිය භාවිතා කරන පරිශීලකයන්හට ප්රවේශනය කෙරේ */',
# Metadata
'listusers-noresult' => 'Ni najdenih uporabnikov.',
'listusers-blocked' => '(blokiran)',
-# Special:ActiveUsers
-'activeusers' => 'Seznam aktivnih uporabnikov',
-'activeusers-intro' => 'Seznam uporabnikov, ki so bili kakor koli aktivni v {{PLURAL:$1|zadnjem $1 dnevu|zadnjih $1 dneh}}.',
-'activeusers-count' => '$1 {{PLURAL:$1|dejanje|dejanji|dejanja|dejanj}} v {{PLURAL:$3|preteklem dnevu|preteklih $3 dneh}}',
-'activeusers-from' => 'Prikaži uporabnike začenši z:',
-'activeusers-hidebots' => 'Skrij bote',
-'activeusers-hidesysops' => 'Skrij administratorje',
-'activeusers-noresult' => 'Noben uporabnik ni bil najden.',
-
# Special:ListGroupRights
'listgrouprights' => 'Pravice uporabniških skupin',
'listgrouprights-summary' => 'Tu je na razpolago seznam uporabniških skupin na tem wikiju z navedbo dodeljenih pravic dostopa.
'sorbsreason' => 'Vaš IP-naslov je v DNSBL uvrščen med odprte posredniške strežnike.',
'sorbs_create_account_reason' => 'Vaš IP-naslov je v DNSBL, ki ga uporablja {{GRAMMAR:tožilnik|{{SITENAME}}}}, naveden kot odprti posredniški strežnik (proxy).
Računa žal ne morete ustvariti.',
+'xffblockreason' => 'IP-naslov, prisoten v glavi X-Forwarded-For, ali vaš ali od strežnika proxy, ki ga uporabljate, je blokiran. Izvirni razlog za blokado: $1',
'cant-block-while-blocked' => 'Ne morete blokirati drugih uporabnikove, medtem ko ste sami blokirani.',
'cant-see-hidden-user' => 'Uporabnik, ki ga poskušate blokirate, je že blokiran in skrit.
Ker nimate pravice hideuser, si ne morete ogledati ali urejati uporabnikove blokade.',
'''Hadii wax ka bedlkaan uu yahay mid xaq ah, fadlan markale isku day. Hadii aysan weli shaqaynin, is kuday inaad ka baxdo ee markale soo gudagal.'''",
'editing' => 'Waxaad badalaysaa $1',
'creating' => 'Sameyta $1',
-'editingsection' => 'Waxaa wax ka badaleysaa $1 (qeyb yar)',
-'editingcomment' => 'Waxaa wax ka badaleysaa $1 (qeyb yar)',
+'editingsection' => 'Waxaad wax ka bedelaysaa $1 (qeyb yar)',
+'editingcomment' => 'Waxaad wax ka bedelaysaa $1 (qeyb yar)',
'editconflict' => 'Isku dhac badalaadka: $1',
'yourtext' => 'Qoraalkaaga',
'editingold' => "'''DIGNIIN: Waxaad wax ka bedeli rabtaa boggan caddadkiisa duqoobay.
'viewsourceold' => 'shiko tekstin',
'editlink' => 'redakto',
'viewsourcelink' => 'Shiko tekstin',
-'editsectionhint' => 'Redaktoni seksionin:
-Edit section: $1',
+'editsectionhint' => 'Redaktoni seksionin: $1',
'toc' => 'Përmbajtje',
'showtoc' => 'trego',
'hidetoc' => 'fshih',
'listusers-noresult' => "Asnjë përdorues s'u gjet.",
'listusers-blocked' => '(Bllokuar)',
-# Special:ActiveUsers
-'activeusers' => 'Lista e përdoruesve aktivë',
-'activeusers-intro' => 'Kjo është një listë e përdoruesve që kanë qenë aktivë për $1 {{PLURAL:$1|ditë|ditë}}.',
-'activeusers-count' => '$1 {{PLURAL:$1|redaktim|redaktime}} në {{PLURAL:$3|ditën|$3 ditët}} e fundit',
-'activeusers-from' => 'Trego përdoruesit duke filluar prej te:',
-'activeusers-hidebots' => 'Fshih robotët',
-'activeusers-hidesysops' => 'Fshih administratorët',
-'activeusers-noresult' => 'Asnjë përdorues nuk u gjet.',
-
# Special:ListGroupRights
'listgrouprights' => 'Grupime përdoruesish me privilegje',
'listgrouprights-summary' => 'Më poshtë jepet grupimi i përdoruesve sipas privilegjeve që ju janë dhënë në këtë wiki. Më shumë informacion rreth privilegjeve në veçanti mund të gjendet [[{{MediaWiki:Listgrouprights-helppage}}|këtu]].',
'pageinfo-authors' => 'Numri i autorëve të veçantë',
# Skin names
-'skinname-standard' => 'Standarte',
-'skinname-nostalgia' => 'Nostalgjike',
'skinname-cologneblue' => 'Kolonjë Blu',
# Patrolling
'listusers-noresult' => 'Корисник није пронађен.',
'listusers-blocked' => '({{GENDER:$1|блокиран|блокирана|блокиран}})',
-# Special:ActiveUsers
-'activeusers' => 'Списак активних корисника',
-'activeusers-intro' => 'Ово је списак корисника који су били активни {{PLURAL:$1|претходни дан|у последња $1 дана|у последњих $1 дана}}.',
-'activeusers-count' => '$1 {{PLURAL:$1|измена|измене|измена}} {{PLURAL:$3|претходни дан|у последња $3 дана|у последњих $3 дана}}',
-'activeusers-from' => 'Прикажи кориснике почев од:',
-'activeusers-hidebots' => 'Сакриј ботове',
-'activeusers-hidesysops' => 'Сакриј администраторе',
-'activeusers-noresult' => 'Корисник није пронађен.',
-
# Special:ListGroupRights
'listgrouprights' => 'Права корисничких група',
'listgrouprights-summary' => 'Следи списак корисничких група на овом викију, заједно с правима приступа.
'listusers-noresult' => 'Ingen användare hittades.',
'listusers-blocked' => '(blockerad)',
-# Special:ActiveUsers
-'activeusers' => 'Lista över aktiva användare',
-'activeusers-intro' => 'Detta är en lista på användare som har haft någon form av aktivitet inom de senaste $1 {{PLURAL:$1|dygnet|dygnen}}.',
-'activeusers-count' => '$1 {{PLURAL:$1|handling|handlingar}} {{PLURAL:$3|det senaste dygnet|de senaste $3 dygnen}}',
-'activeusers-from' => 'Visa användare från och med:',
-'activeusers-hidebots' => 'Göm botar',
-'activeusers-hidesysops' => 'Dölj administratörer',
-'activeusers-noresult' => 'Inga användare funna.',
-
# Special:ListGroupRights
'listgrouprights' => 'Behörigheter för användargrupper',
'listgrouprights-summary' => 'Följande lista visar vilka användargrupper som är definierade på den här wikin och vilka behörigheter grupperna har.
'sorbsreason' => 'Din IP-adress är listad som öppen proxy i den DNSBL {{SITENAME}} använder.',
'sorbs_create_account_reason' => 'Din IP-adress är listad som en öppen proxy i den DNSBL som används av {{SITENAME}}.
Du får inte skapa ett användarkonto',
+'xffblockreason' => 'En IP-adress i sidhuvudet X-Forwarded-For, antingen din adress eller en proxyserver som du använder, har blockerats. Den ursprungliga anledningen till blockeringen var: $1',
'cant-block-while-blocked' => 'Du kan inte blockera andra användare medan du är blockerad.',
'cant-see-hidden-user' => 'Användaren du försöker blockera är redan blockerad och gömd. Eftersom du inte har hideuser-rättigheter, kan du inte se eller redigera användarens blockering.',
'ipbblocked' => 'Du kan inte blockera eller avblockera andra användare, eftersom du själv är blockerad',
# Stylesheets
'common.css' => '/* CSS som skrivs här påverkar alla skal */',
-'standard.css' => '/* CSS som skrivs här kommer att påverka alla användare av skalet Standard */',
-'nostalgia.css' => '/* CSS som skrivs här kommer att påverka alla användare av skalet Nostalgi */',
'cologneblue.css' => '/* CSS som skrivs här kommer att påverka alla användare av skalet Cologne blå */',
'monobook.css' => '/* CSS som skrivs här kommer att påverka alla användare av skalet Monobook */',
-'myskin.css' => '/* CSS som skrivs här kommer att påverka alla användare av skalet Mitt utseende */',
-'chick.css' => '/* CSS som skrivs här kommer att påverka alla användare av skalet Chick */',
-'simple.css' => '/* CSS som skrivs här kommer att påverka alla användare av skalet Enkel */',
'modern.css' => '/* CSS som skrivs här kommer att påverka alla användare av skalet Modern */',
'vector.css' => '/* CSS som skrivs här kommer att påverka alla användare av skalet Vector */',
'print.css' => '/* CSS som skrivs här kommer att påverka utskriftsversionen */',
# Scripts
'common.js' => '/* JavaScript som skrivs här körs varje gång en användare laddar en sida. */',
-'standard.js' => '/* JavaScript här kommer att laddas för dem som använder skalet Standard */',
-'nostalgia.js' => '/* JavaScript här kommer att laddas för dem som använder skalet Nostalgi */',
'cologneblue.js' => '/* JavaScript här kommer att laddas för dem som använder skalet Cologne blå */',
'monobook.js' => '/* JavaScript här kommer att laddas för dem som använder skalet Monobook */',
-'myskin.js' => '/* JavaScript här kommer att laddas för dem som använder skalet Mitt utseende */',
-'chick.js' => '/* JavaScript här kommer att laddas för dem som använder skalet Chick */',
-'simple.js' => '/* JavaScript här kommer att laddas för dem som använder skalet Enkel */',
'modern.js' => '/* JavaScript här kommer att laddas för dem som använder skalet Modern */',
'vector.js' => '/* JavaScript här kommer att laddas för dem som använder skalet Vector */',
'group-autoconfirmed.js' => '/* JavaScript här kommer att laddas för bekräftade användare */',
'pageinfo-category-files' => 'Antal filer',
# Skin names
-'skinname-standard' => 'Standard',
-'skinname-nostalgia' => 'Nostalgi',
'skinname-cologneblue' => 'Cologne blå',
'skinname-monobook' => 'Monobook',
-'skinname-myskin' => 'Mitt utseende',
-'skinname-chick' => 'Chick',
-'skinname-simple' => 'Enkel',
'skinname-modern' => 'Modern',
'skinname-vector' => 'Vector',
'listusers-noresult' => 'Mtumiaji hakupatikana.',
'listusers-blocked' => '(imezuiwa)',
-# Special:ActiveUsers
-'activeusers' => 'Orodha ya watumiaji hai',
-'activeusers-intro' => 'Hii ni orodha ya watumiaji walioshughulika jambo fulani ndani ya siku $1 {{PLURAL:$1|iliyopita|zilizopita}}.',
-'activeusers-count' => '{{PLURAL:$1|haririo|maharirio}} $1 katika siku $3 {{PLURAL:$3|iliyopita|zilizopita}}',
-'activeusers-from' => 'Onyesha watumiaji kuanzia:',
-'activeusers-hidebots' => 'Ficha boti',
-'activeusers-hidesysops' => 'Ficha wakabidhi',
-'activeusers-noresult' => 'Watumiaji hawakupatikana.',
-
# Special:ListGroupRights
'listgrouprights' => 'Wezo za kundi za watumiaji',
'listgrouprights-summary' => 'Inafuata orodha ya kundi za watumiaji wa wiki hii, pamoja na maelezo ya wezo zao za kushughulika mambo.
'listusers-noresult' => 'ஒரு பயனரும் இல்லை.',
'listusers-blocked' => '(தடை செய்யப்பட்டுள்ளது)',
-# Special:ActiveUsers
-'activeusers' => 'தொடர்பங்களிப்பாளர்களின் பட்டியல்',
-'activeusers-intro' => 'கடைசி $1 {{PLURAL:$1|நாள்|நாட்கள்}} ஏதேனும் செயலை செய்த பயனர்களின் பட்டியல் இது.',
-'activeusers-count' => '$1 {{PLURAL:$1|திருத்தம்|திருத்தங்கள்}} கடைசி {{PLURAL:$3|நாள்|$3 நாட்கள்}}',
-'activeusers-from' => 'பின்வரும் எழுத்துடன் தொடங்கும் பயனர்களைக் காட்டு:',
-'activeusers-hidebots' => 'தானியங்கிகளை மறை',
-'activeusers-hidesysops' => 'நிர்வாகிகளை மறை',
-'activeusers-noresult' => 'எந்தவொரு பயனர்களும் காணப்படவில்லை.',
-
# Special:ListGroupRights
'listgrouprights' => 'பயனர் குழு உரிமைகள்',
'listgrouprights-key' => '<span class="listgrouprights-granted">உரிமை வழங்கப்பட்டது</span>
'disambiguationspage' => 'Template:అయోమయ నివృత్తి',
'disambiguations-text' => "కింది పేజీలు '''అయోమయ నివృత్తి''' పేజీకి లింకవుతున్నాయి. కానీ అవి సంబంధిత పేజీకి నేరుగా లింకు అవాలి. <br /> [[MediaWiki:Disambiguationspage]] నుంది లింకు ఉన్న మూసను వాడే పేజీని అయోమయ నివృత్తి పేజీగా భావిస్తారు.",
+'pageswithprop-submit' => 'వెళ్ళు',
+
'doubleredirects' => 'జంట దారిమార్పులు',
'doubleredirectstext' => 'ఇతర దారిమార్పు పుటలకి తీసుకెళ్ళే దారిమార్పులని ఈ పుట చూపిస్తుంది.
ప్రతీ వరుసలో మొదటి మరియు రెండవ దారిమార్పులకు లంకెలు, ఆలానే రెండవ దారిమార్పు పుట యొక్క లక్ష్యం ఉన్నాయి. సాధారణంగా ఈ రెండవ దారిమార్పు యొక్క లక్ష్యమే "అసలైనది", అదే మొదటి దారిమార్పు యొక్క లక్ష్యంగా ఉండాలి.
'listusers-noresult' => 'వాడుకరి దొరకలేదు.',
'listusers-blocked' => '(నిరోధించారు)',
-# Special:ActiveUsers
-'activeusers' => 'క్రియాశీల వాడుకరుల జాబితా',
-'activeusers-intro' => 'ఇది గత $1 {{PLURAL:$1|రోజులో|రోజులలో}} ఏదైనా కార్యకలాపం చేసిన వాడుకరుల జాబితా.',
-'activeusers-count' => 'గడచిన {{PLURAL:$3|ఒక రోజు|$3 రోజుల}}లో $1 {{PLURAL:$1|మార్పు|మార్పులు}}',
-'activeusers-from' => 'వాడుకరులను ఇక్కడ నుండి చూపించు:',
-'activeusers-hidebots' => 'బాట్లను దాచు',
-'activeusers-hidesysops' => 'నిర్వాహకులను దాచు',
-'activeusers-noresult' => 'వాడుకరులెవరూ లేరు.',
-
# Special:ListGroupRights
'listgrouprights' => 'వాడుకరి గుంపుల హక్కులు',
'listgrouprights-summary' => 'కింది జాబితాలో ఈ వికీలో నిర్వచించిన వాడుకరి గుంపులు, వాటికి సంబంధించిన హక్కులు ఉన్నాయి.
'usermessage-editor' => 'వ్యవస్థ సందేశకులు',
# Watchlist
-'watchlist' => 'నా à°µà±\80à°\95à±\8dà°·à°£ à°\9cాబితా',
+'watchlist' => 'వీక్షణ జాబితా',
'mywatchlist' => 'వీక్షణ జాబితా',
'watchlistfor2' => '$1 కొరకు $2',
'nowatchlist' => 'మీ వీక్షణ జాబితా ఖాళీగా ఉంది.',
'pageinfo-toolboxlink' => 'పేజీ సమాచారం',
'pageinfo-contentpage-yes' => 'అవును',
'pageinfo-protect-cascading-yes' => 'అవును',
+'pageinfo-category-info' => 'వర్గపు సమాచారం',
+'pageinfo-category-pages' => 'పేజీల సంఖ్య',
# Skin names
-'skinname-standard' => 'సంప్రదాయ',
-'skinname-nostalgia' => 'నాస్టాల్జియా',
'skinname-cologneblue' => 'కలోన్ నీలం',
'skinname-monobook' => 'మోనోబుక్',
-'skinname-myskin' => 'నాఅలంకారం',
-'skinname-chick' => 'చిక్',
-'skinname-simple' => 'సరళ',
'skinname-modern' => 'ఆధునిక',
'skinname-vector' => 'వెక్టర్',
# Special:ListUsers
'listusers-submit' => 'Hatudu',
-# Special:ActiveUsers
-'activeusers-hidebots' => 'Subar bot sira',
-'activeusers-hidesysops' => 'Subar administradór sira',
-
# Special:ListGroupRights
'listgrouprights-group' => 'Grupu',
'listgrouprights-rights' => 'Priviléjiu',
# Special:PasswordReset
'passwordreset' => 'ตั้งรหัสผ่านใหม่',
-'passwordreset-text' => 'à¸\81รà¸à¸\81à¹\81à¸\9aà¸\9aà¸\99ีà¹\89à¹\80à¸\9eืà¹\88à¸à¸£à¸±à¸\9aà¸\95ัวà¹\80à¸\95ืà¸à¸\99à¸à¸µà¹\80มลรายละà¹\80à¸à¸µà¸¢à¸\94à¸\9aัà¸\8dà¸\8aีà¸\82à¸à¸\87à¸\84ุà¸\93',
+'passwordreset-text' => 'à¸\81รà¸à¸\81à¹\81à¸\9aà¸\9aà¸\99ีà¹\89à¹\80à¸\9eืà¹\88à¸à¸\95ัà¹\89à¸\87รหัสà¸\9cà¹\88าà¸\99à¹\83หมà¹\88',
'passwordreset-legend' => 'เปลี่ยนรหัสผ่าน',
'passwordreset-disabled' => 'การตั้งรหัสผ่านใหม่ปิดใช้งานบนวิกินี้',
'passwordreset-username' => 'ชื่อผู้ใช้:',
'listusers-noresult' => 'ไม่พบผู้ใช้',
'listusers-blocked' => '(ถูกบล็อก)',
-# Special:ActiveUsers
-'activeusers' => 'รายการผู้ใช้ที่มีความเคลื่อนไหว',
-'activeusers-intro' => 'นี่คือรายการผู้ใช้ที่มีกิจกรรมใด ๆ ในช่วง $1 วันที่ผ่านมา',
-'activeusers-count' => '{{PLURAL:$1|ปฏิบัติการล่าสุด|ปฏิบัติการล่าสุด $1 รายการ}} ในช่วง $3 วันที่ผ่านมา',
-'activeusers-from' => 'แสดงผู้ใช้เริ่มจาก:',
-'activeusers-hidebots' => 'ซ่อนบอต',
-'activeusers-hidesysops' => 'ซ่อนผู้ดูแลระบบ',
-'activeusers-noresult' => 'ไม่พบผู้ใช้',
-
# Special:ListGroupRights
'listgrouprights' => 'สิทธิกลุ่มผู้ใช้',
'listgrouprights-summary' => 'ด้านล่างเป็นรายการกลุ่มผู้ใช้ที่นิยามบนวิกินี้ และสิทธิการเข้าถึงที่เกี่ยวข้อง
# Stylesheets
'common.css' => '/* สไตล์ชีตในหน้านี้จะส่งผลแก่ผู้ใช้ทุกสกิน */',
-'standard.css' => '/* สไตล์ชีตในหน้านี้จะส่งผลแก่ผู้ใช้ที่ใช้สกินคลาสสิก */',
-'nostalgia.css' => '/* สไตล์ชีตในหน้านี้จะส่งผลแก่ผู้ใช้ที่ใช้สกินนอสตัลเจีย */',
'cologneblue.css' => '/* สไตล์ชีตในหน้านี้จะส่งผลแก่ผู้ใช้ที่ใช้สกินโคโลญจ์บลู */',
'monobook.css' => '/* สไตล์ชีตในหน้านี้จะส่งผลแก่ผู้ใช้ที่ใช้สกินโมโนบุ๊ก */',
-'myskin.css' => '/* สไตล์ชีตในหน้านี้จะส่งผลแก่ผู้ใช้ที่ใช้สกินมายสกิน */',
-'chick.css' => '/* สไตล์ชีตในหน้านี้จะส่งผลแก่ผู้ใช้ที่ใช้สกินชิก */',
-'simple.css' => '/* สไตล์ชีตในหน้านี้จะส่งผลแก่ผู้ใช้ที่ใช้สกินซิมเปิล */',
'modern.css' => '/* สไตล์ชีตในหน้านี้จะส่งผลแก่ผู้ใช้ที่ใช้สกินโมเดิร์น */',
'vector.css' => '/* สไตล์ชีตในหน้านี้จะส่งผลแก่ผู้ใช้ที่ใช้สกินเวกเตอร์ */',
'print.css' => '/* สไตล์ชีตในหน้านี้จะส่งผลแก่ข้อมูลส่งออกเป็นสิ่งพิมพ์ */',
# Scripts
'common.js' => '/* จาวาสคริปต์ใด ๆ ในหน้านี้จะถูกโหลดให้แก่ผู้ใช้ทุกคนในทุกหน้า */',
-'standard.js' => '/* จาวาสคริปต์ใด ๆ ในหน้านี้จะถูกโหลดให้แก่ผู้ใช้ที่ใช้สกินคลาสสิก */',
-'nostalgia.js' => '/* จาวาสคริปต์ใด ๆ ในหน้านี้จะถูกโหลดให้แก่ผู้ใช้ที่ใช้สกินนอสตัลเจีย */',
'cologneblue.js' => '/* จาวาสคริปต์ใด ๆ ในหน้านี้จะถูกโหลดให้แก่ผู้ใช้ที่ใช้สกินโคโลญจ์บลู */',
'monobook.js' => '/* จาวาสคริปต์ใด ๆ ในหน้านี้จะถูกโหลดให้แก่ผู้ใช้ที่ใช้สกินโมโนบุ๊ก */',
-'myskin.js' => '/* จาวาสคริปต์ใด ๆ ในหน้านี้จะถูกโหลดให้แก่ผู้ใช้ที่ใช้สกินมายสกิน */',
-'chick.js' => '/* จาวาสคริปต์ใด ๆ ในหน้านี้จะถูกโหลดให้แก่ผู้ใช้ที่ใช้สกินชิก */',
-'simple.js' => '/* จาวาสคริปต์ใด ๆ ในหน้านี้จะถูกโหลดให้แก่ผู้ใช้ที่ใช้สกินซิมเปิล */',
'modern.js' => '/* จาวาสคริปต์ใด ๆ ในหน้านี้จะถูกโหลดให้แก่ผู้ใช้ที่ใช้สกินโมเดิร์น */',
'vector.js' => '/* จาวาสคริปต์ใด ๆ ในหน้านี้จะถูกโหลดให้แก่ผู้ใช้ที่ใช้สกินเวกเตอร์ */',
'group-autoconfirmed.js' => '/* จาวาสคริปต์ใด ๆ ในหน้านี้จะถูกโหลดให้แก่ผู้ใช้ทั่วไปเท่านั้น */',
'pageinfo-category-files' => 'จำนวนไฟล์',
# Skin names
-'skinname-standard' => 'คลาสสิก',
-'skinname-nostalgia' => 'นอสตัลเจีย',
'skinname-cologneblue' => 'โคโลญจ์บลู',
'skinname-monobook' => 'โมโนบุ๊ก',
-'skinname-myskin' => 'มายสกิน',
-'skinname-chick' => 'ชิก',
-'skinname-simple' => 'ซิมเปิล',
'skinname-modern' => 'โมเดิร์น',
'skinname-vector' => 'เวกเตอร์',
'listusers-noresult' => 'Не знайдено користувачів.',
'listusers-blocked' => '({{GENDER:$1|заблокований|заблокована|заблокований}})',
-# Special:ActiveUsers
-'activeusers' => 'Список активних користувачів',
-'activeusers-intro' => 'Це список користувачів, які здійснювали які-небудь дії за {{PLURAL:$1|останній $1 день|останні $1 дні|останні $1 днів}}.',
-'activeusers-count' => '$1 {{PLURAL:$1|дія|дії|дій}} за {{PLURAL:$3|останній $3 день|останні $3 дні|останні $3 днів}}',
-'activeusers-from' => 'Показувати користувачів, починаючи з:',
-'activeusers-hidebots' => 'Приховати ботів',
-'activeusers-hidesysops' => 'Приховати адміністраторів',
-'activeusers-noresult' => 'Не знайдено користувачів.',
-
# Special:ListGroupRights
'listgrouprights' => 'Права груп користувачів',
'listgrouprights-summary' => 'Нижче наведений список груп користувачів у цій вікі і права для кожної групи.
'rollback' => 'Відкинути редагування',
'rollback_short' => 'Відкинути',
'rollbacklink' => 'відкинути',
-'rollbacklinkcount' => 'скасування $1 {{PLURAL:$1|редагування|редагувань|редагувань}}',
-'rollbacklinkcount-morethan' => 'скасування більш, ніж $1 {{PLURAL:$1|редагування|редагувань|редагувань}}',
+'rollbacklinkcount' => 'відкинути $1 {{PLURAL:$1|редагування|редагування|редагувань}}',
+'rollbacklinkcount-morethan' => 'відкинути понад $1 {{PLURAL:$1|редагування|редагування|редагувань}}',
'rollbackfailed' => 'Відкинути зміни не вдалося',
'cantrollback' => 'Неможливо відкинути редагування, оскільки останній дописувач сторінки є її автором.',
'alreadyrolled' => 'Неможливо відкинути останні редагування [[:$1]], зроблені [[User:$2|$2]] ([[User talk:$2|обговорення]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]), оскільки хтось інший уже змінив чи відкинув редагування цієї статті.
# Stylesheets
'common.css' => '/** Розміщений тут CSS буде застосовуватися до всіх тем оформлення */',
-'standard.css' => '/* Розміщений тут CSS-код буде використаний для користувачів з налаштованою темою оформлення Стандартне */',
-'nostalgia.css' => '/* Розміщений тут CSS-код буде використаний для користувачів з налаштованою темою оформлення Ностальгія */',
'cologneblue.css' => '/* Розміщений тут CSS-код буде використаний для користувачів з налаштованою темою оформлення Кельнське блакитне */',
'monobook.css' => '/* Розміщений тут CSS буде застосовуватися до всіх тем оформлення Monobook */
padding-right: 0em;
font-weight: bold;
}',
-'myskin.css' => '/* Розміщений тут CSS-код буде використаний в темі оформлення Власне */',
-'chick.css' => '/* Розміщений тут CSS-код буде використаний в темі оформлення Курча */',
-'simple.css' => '/* Розміщений тут CSS-код буде використаний в темі оформлення Просте */',
'modern.css' => '/* Розміщений тут CSS-код буде використаний в темі оформлення Сучасне */',
'vector.css' => '/* Розміщений тут CSS-код буде використаний в темі оформлення Векторне */',
'print.css' => '/* Розміщений тут CSS-код буде використаний для друкованої версії */',
# Scripts
'common.js' => '/* Розміщений тут код JavaScript буде завантажений всім користувачам при зверненні до будь-якої сторінки */',
-'standard.js' => '/* Розміщений тут код JavaScript буде завантажений для всіх користувачів, що використовують стандартну тему оформлення */',
-'nostalgia.js' => '/* Розміщений тут код JavaScript буде завантажений для всіх користувачів, що використовують тему оформлення Ностальгія */',
'cologneblue.js' => '/* Розміщений тут код JavaScript буде завантажений для всіх користувачів, що використовують тему оформлення Кельнське синє */',
'monobook.js' => '/* Розміщений тут код JavaScript буде завантажений для всіх користувачів, що використовують тему оформлення Моно-книга */',
-'myskin.js' => '/* Розміщений тут код JavaScript буде завантажений для всіх користувачів, що використовують власну тему оформлення */',
-'chick.js' => '/* Розміщений тут код JavaScript буде завантажений для всіх користувачів, що використовують тему оформлення Курча */',
-'simple.js' => '/* Розміщений тут код JavaScript буде завантажений для всіх користувачів, що використовують просту тему оформлення */',
'modern.js' => '/* Розміщений тут код JavaScript буде завантажений для всіх користувачів, що використовують тему оформлення Сучасне */',
'vector.js' => '/* Розміщений тут код JavaScript буде завантажений для всіх користувачів, що використовують векторну тему оформлення */',
'group-autoconfirmed.js' => '/* Розміщений тут код JavaScript буде завантажений тільки для автопідтверджених користувачів */',
'pageinfo-category-files' => 'Кількість файлів',
# Skin names
-'skinname-standard' => 'Стандартне',
-'skinname-nostalgia' => 'Ностальгія',
'skinname-cologneblue' => 'Кельнське синє',
'skinname-monobook' => 'Моно-книга',
-'skinname-myskin' => 'Своє',
-'skinname-chick' => 'Курча',
-'skinname-simple' => 'Просте',
'skinname-modern' => 'Сучасне',
'skinname-vector' => 'Векторне',
'logentry-delete-event' => '$1 змінив видимість {{PLURAL:$5 запису журнала|$5 записів журналу}} на $3: $4',
'logentry-delete-revision' => '$1 змінив видимість {{PLURAL:$5 версії|$5 версій}} на сторінці $3: $4',
'logentry-delete-event-legacy' => '$1 змінив видимість записів журналу подій $3',
-'logentry-delete-revision-legacy' => '$1 змінив видимість версійна сторінці $3',
+'logentry-delete-revision-legacy' => '$1 {{GENDER:$2|змінив|змінила}} видимість версій на сторінці $3',
'logentry-suppress-delete' => '$1 подавив сторінку $3',
'logentry-suppress-event' => '$1 приховано змінив видимість для {{PLURAL:$5|запису|$5 записів}} журналу на $3: $4',
'logentry-suppress-revision' => '$1 приховано змінив видимість для {{PLURAL:$5 версії|$5 версій}} на сторінці $3: $4',
'listusers-noresult' => 'Foydalanuvchilar topilmadi.',
'listusers-blocked' => '(chetlashtirilgan)',
-# Special:ActiveUsers
-'activeusers' => 'Faol foydalanuvchilar roʻyxati',
-'activeusers-from' => 'Quyidagidan boshlanuvchi foydalanuvchilarni koʻrsatish:',
-'activeusers-hidebots' => 'Botlarni yashirish',
-'activeusers-hidesysops' => 'Maʼmurlarni yashirish',
-'activeusers-noresult' => 'Foydalanuvchilar topilmadi.',
-
# Special:ListGroupRights
'listgrouprights' => 'Foydalanuvchilar guruhi huquqlari',
'listgrouprights-group' => 'Guruh',
'pageinfo-redirectsto' => 'Qayta yoʻnaltirish',
# Skin names
-'skinname-standard' => 'Klassik',
-'skinname-nostalgia' => "Sog'inch",
'skinname-cologneblue' => "Kyolncha sog'inch",
-'skinname-myskin' => "O'zimniki",
-'skinname-chick' => "Jo'ja",
-'skinname-simple' => 'Oddiy',
'skinname-modern' => 'Zamonaviy',
'skinname-vector' => 'Vektor',
'listusers-noresult' => 'Không thấy thành viên.',
'listusers-blocked' => '(bị cấm)',
-# Special:ActiveUsers
-'activeusers' => 'Danh sách thành viên tích cực',
-'activeusers-intro' => 'Dánh sách này liệt kê các thành viên đã hoạt động cách nào đó trong $1 ngày qua.',
-'activeusers-count' => '$1 tác vụ trong {{PLURAL:$3|ngày|$3 ngày}} qua',
-'activeusers-from' => 'Hiển thị thành viên bắt đầu từ:',
-'activeusers-hidebots' => 'Ẩn robot',
-'activeusers-hidesysops' => 'Ẩn bảo quản viên',
-'activeusers-noresult' => 'Không thấy thành viên.',
-
# Special:ListGroupRights
'listgrouprights' => 'Nhóm thành viên',
'listgrouprights-summary' => 'Dưới đây là danh sách nhóm thành viên được định nghĩa tại wiki này, với mức độ truy cập của từng nhóm.
'proxyblocksuccess' => 'Xong.',
'sorbsreason' => 'Địa chỉ IP của bạn bị liệt kê là một proxy mở trong DNSBL mà {{SITENAME}} đang sử dụng.',
'sorbs_create_account_reason' => 'Địa chỉ chỉ IP của bạn bị liệt kê là một proxy mở trong DNSBL mà {{SITENAME}} đang sử dụng. Bạn không thể mở tài khoản.',
+'xffblockreason' => 'Đầu đề X-Forwarded-For chứa một địa chỉ IP đã bị cấm, địa chỉ này hoặc của bạn hoặc của một máy chủ proxy bạn đang sử dụng. Lý do cấm ban đầu là: $1',
'cant-block-while-blocked' => 'Bạn không thể cấm thành viên khác trong khi bạn đang bị cấm.',
'cant-see-hidden-user' => 'Thành viên bạn muốn cấm đã bị cấm trước đây hoặc đã bị ẩn đi. Vì bạn không có quyền hideuser, bạn không thể xem hoặc thay đổi mức cấm của thành viên.',
'ipbblocked' => 'Bạn không thể cấm hay bỏ cấm người dùng khác vì chính bạn đang bị cấm.',
# Stylesheets
'common.css' => '/* Mã CSS đặt ở đây sẽ áp dụng cho mọi hình dạng */',
-'standard.css' => '/* Mã CSS tại đây sẽ ảnh hưởng đến những người dùng sử dụng hình dạng Cổ điển */',
-'nostalgia.css' => '/* Mã CSS tại đây sẽ ảnh hưởng đến những người dùng sử dụng hình dạng Vọng cổ */',
'cologneblue.css' => '/* Mã CSS tại đây sẽ ảnh hưởng đến những người dùng sử dụng hình dạng Xanh Cologne */',
'monobook.css' => '/* Mã CSS đặt ở đây sẽ ảnh hưởng đến thành viên sử dụng hình dạng MonoBook */',
-'myskin.css' => '/* Mã CSS tại đây sẽ ảnh hưởng đến những người dùng sử dụng hình dạng Cá nhân */',
-'chick.css' => '/* Mã CSS tại đây sẽ ảnh hưởng đến những người dùng sử dụng hình dạng Chick */',
-'simple.css' => '/* Mã CSS tại đây sẽ ảnh hưởng đến những người dùng sử dụng hình dạng Đơn giản */',
'modern.css' => '/* Mã CSS tại đây sẽ ảnh hưởng đến những người dùng sử dụng hình dạng Hiện đại */',
'vector.css' => '/* Mã CSS đặt ở đây sẽ ảnh hưởng đến thành viên sử dụng hình dạng Vectơ */',
'print.css' => '/* Mã CSS tại đây sẽ ảnh hưởng đến bản để in */',
# Scripts
'common.js' => '/* Bất kỳ mã JavaScript ở đây sẽ được tải cho tất cả các thành viên khi tải một trang nào đó lên. */',
-'standard.js' => '/* Mã JavaScript tại đây sẽ được tải khi người dùng sử dụng hình dạng Cổ điển */',
-'nostalgia.js' => '/* Mã JavaScript tại đây sẽ được tải khi người dùng sử dụng hình dạng Vọng cổ */',
'cologneblue.js' => '/* Mã JavaScript tại đây sẽ được tải khi người dùng sử dụng hình dạng Xanh Cologne */',
'monobook.js' => '/* Mã JavaScript tại đây sẽ được tải khi người dùng sử dụng bề ngoài MonoBook */',
-'myskin.js' => '/* Mã JavaScript tại đây sẽ được tải khi người dùng sử dụng bề ngoài Cá nhân */',
-'chick.js' => '/* Mã JavaScript tại đây sẽ được tải khi người dùng sử dụng bề ngoài Chick */',
-'simple.js' => '/* Mã JavaScript tại đây sẽ được tải khi người dùng sử dụng bề ngoài Đơn giản */',
'modern.js' => '/* Mã JavaScript tại đây sẽ được tải khi người dùng sử dụng bề ngoài Hiện đại */',
'vector.js' => '/* Mã JavaScript tại đây sẽ được tải khi người dùng sử dụng bề ngoài Vectơ */',
'group-autoconfirmed.js' => '/* Mã JavaScript tại đây sẽ chỉ được tải cho các thành viên tự động xác nhận */',
'pageinfo-category-files' => 'Số tập tin',
# Skin names
-'skinname-standard' => 'Cổ điển',
-'skinname-nostalgia' => 'Vọng cổ',
'skinname-cologneblue' => 'Xanh Cologne',
-'skinname-myskin' => 'Cá nhân',
-'skinname-simple' => 'Đơn giản',
'skinname-modern' => 'Hiện đại',
'skinname-vector' => 'Vectơ',
'recreate' => 'Tạo ra lại',
# action=purge
-'confirm_purge_button' => 'Làm mới',
+'confirm_purge_button' => 'Làm tươi',
'confirm-purge-top' => 'Làm sạch vùng nhớ đệm của trang này?',
'confirm-purge-bottom' => 'Làm mới một trang sẽ giúp xóa bộ đệm và buộc hiển thị phiên bản gần nhất.',
'listusers-noresult' => 'Waray gumaramit nga nahiagian.',
'listusers-blocked' => '(ginpugngan)',
-# Special:ActiveUsers
-'activeusers' => 'Taramdan hin mga gumaramit nga nanggigios',
-'activeusers-hidebots' => 'Igtago an mga bot',
-'activeusers-hidesysops' => 'Igtago an mga magdudumara',
-'activeusers-noresult' => 'Waray gumaramit nga nahiagian.',
-
# Special:ListGroupRights
'listgrouprights-group' => 'Hugpo',
'listgrouprights-rights' => 'Mga katungod',
'listusers-noresult' => 'קיין באניצער נישט געטראפֿן.',
'listusers-blocked' => '(בלאקירט)',
-# Special:ActiveUsers
-'activeusers' => 'ליסטע פֿון אַקטיווע באַניצער',
-'activeusers-intro' => 'דאָס איז א ליסטע פֿון באַניצער וואָס זענען געווען אַקטיוו אינערהאָלב $1 {{PLURAL:$1|דעם לעצטן טאָג|די לעצטע $1 טעג}}.',
-'activeusers-count' => '$1 {{PLURAL:$1|פעולה|פעולות}} אין {{PLURAL:$3|דעם לעצטן טאָג|די לעצטע $3 טעג}}',
-'activeusers-from' => 'ווײַזן באַניצער אָנהייבנדיג פון:',
-'activeusers-hidebots' => 'באַהאַלטן באטן',
-'activeusers-hidesysops' => 'באַהאַלטן סיסאפן',
-'activeusers-noresult' => 'קיין באניצער נישט געטראפֿן.',
-
# Special:ListGroupRights
'listgrouprights' => 'באַניצער גרופע רעכטן',
'listgrouprights-summary' => "פֿאלגנד איז א רשימה פֿון באַניצער גרופעס דעפֿינירט אויף דער דאָזיקער וויקי, מיט זײַערע אַסאציאירטע צוטריט רעכטן.
# Stylesheets
'common.css' => '/* CSS געשריבן דא וועט אפילירן און באיינפלוסן אלע סקינס */',
-'standard.css' => '/* CSS געשטעלט דא ווירקט אויפן סטאנדארט סקין */',
-'nostalgia.css' => '/* CSS געשטעלט דא ווירקט נאר אויפן נאסטאלגיע סקין */',
'cologneblue.css' => '/* CSS געשטעלט דא ווירקט נאר אויפן קעלנישן־בלוי סקין */',
'monobook.css' => '/* סטייל דא געלייגט וועט באאיינפלוסן דעם Monobook סקין */',
-'myskin.css' => '/* CSS געשטעלט דא ווירקט אויפן MySkin סקין */',
-'chick.css' => '/* CSS געשטעלט דא ווירקט אויפן טשיק סקין */',
-'simple.css' => '/* CSS געשטעלט דא ווירקט אויפן איינפאך סקין */',
'modern.css' => '/* CSS געשטעלט דא ווירקט אויפן מאדערנעם סקין */',
'vector.css' => '/* CSS געשטעלט דא ווירקט נאר אויפן וועקטאר סקין */',
'pageinfo-category-files' => 'צאָל טעקעס',
# Skin names
-'skinname-standard' => 'קלאסיש',
-'skinname-nostalgia' => 'נאסטאלגיע',
'skinname-cologneblue' => 'קעלניש בלוי',
'skinname-monobook' => 'מאנאבוק',
-'skinname-myskin' => 'מיין סקין',
-'skinname-chick' => 'טשיק',
-'skinname-simple' => 'איינפֿאַך',
'skinname-modern' => 'מאדערן',
'skinname-vector' => 'וועקטאר',
'qbsettings-directionality' => '根据您的语言文本方向固定位置',
# Preferences page
-'preferences' => '参数设置',
+'preferences' => '系统设置',
'mypreferences' => '系统设置',
-'prefs-edits' => '编辑数量:',
+'prefs-edits' => '编辑数:',
'prefsnologin' => '未登录',
'prefsnologintext' => '您必须先<span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} 登录]</span>才能设置个人参数。',
'changepassword' => '更改密码',
'listusers-noresult' => '找不到用户。',
'listusers-blocked' => '(已封禁)',
-# Special:ActiveUsers
-'activeusers' => '活跃用户列表',
-'activeusers-intro' => '这个列表列出了最近$1天进行过操作的用户。',
-'activeusers-count' => '最近$3天内有$1次编辑',
-'activeusers-from' => '显示用户开始于:',
-'activeusers-hidebots' => '隐藏机器人',
-'activeusers-hidesysops' => '隐藏管理员',
-'activeusers-noresult' => '找不到用户。',
-
# Special:ListGroupRights
'listgrouprights' => '用户组权限',
'listgrouprights-summary' => '以下面是一个在这个维基中所定义出来的用户权限列表,以及它们的访问权。
'proxyblocksuccess' => '完成。',
'sorbsreason' => '在{{SITENAME}}使用的DNSBL中,您的IP地址被列为公开代理。',
'sorbs_create_account_reason' => '在{{SITENAME}}使用的DNSBL中,您的IP地址被列为公开代理,因此您不能创建新账户。',
+'xffblockreason' => '您或您正在使用的代理服务器呈现在X-Forwarded-For数据包头的一个IP地址已被封禁。封禁原因为:$1',
'cant-block-while-blocked' => '您无法在封禁期内封禁其他用户。',
'cant-see-hidden-user' => '您尝试封禁的用户已被封禁并隐藏。
由于您尚无隐藏用户的权限,您无法查看或编辑此用户的封禁。',
# Stylesheets
'common.css' => '/* 此处的 CSS 将应用于所有的皮肤 */',
-'standard.css' => '/* 此处的 CSS 将影响使用标准皮肤的用户 */',
-'nostalgia.css' => '/* 此处的 CSS 将影响使用怀旧皮肤的用户 */',
'cologneblue.css' => '/* 此处的 CSS 将影响使用科隆香水蓝皮肤的用户 */',
'monobook.css' => '/* 此处的 CSS 将影响使用 Monobook 皮肤的用户 */',
-'myskin.css' => '/* 此处的 CSS 将影响使用 MySkin 皮肤的用户 */',
-'chick.css' => '/* 此处的 CSS 将影响使用 Chick 皮肤的用户 */',
-'simple.css' => '/* 此处的 CSS 将影响使用 Simple 皮肤的用户 */',
'modern.css' => '/* 此处的 CSS 将影响使用 Modern 皮肤的用户 */',
'vector.css' => '/* 此处的 CSS 将影响使用 Vector 皮肤的用户 */',
'print.css' => '/* 此处的 CSS 将影响打印输出 */',
# Scripts
'common.js' => '/* 此处的JavaScript将加载于所有用户每一个页面。 */',
-'standard.js' => '/* 此处的JavaScript将加载于使用标准皮肤的用户 */',
-'nostalgia.js' => '/* 此处的JavaScript将加载于使用怀旧皮肤的用户 */',
'cologneblue.js' => '/* 此处的JavaScript将加载于使用科隆香水蓝皮肤的用户 */',
'monobook.js' => '/* 此处的JavaScript将加载于使用Monobook皮肤的用户 */',
-'myskin.js' => '/* 此处的JavaScript将加载于使用MySkin皮肤的用户 */',
-'chick.js' => '/* 此处的JavaScript将加载于使用Chick皮肤的用户 */',
-'simple.js' => '/* 此处的JavaScript将加载于使用Simple皮肤的用户 */',
'modern.js' => '/* 此处的JavaScript将加载于使用Modern皮肤的用户 */',
'vector.js' => '/* 此处的JavaScript将加载于使用Vector皮肤的用户 */',
'group-autoconfirmed.js' => '/* 此处的JavaScript将仅加载于自动确认用户 */',
'pageinfo-category-files' => '文件数',
# Skin names
-'skinname-standard' => '标准',
-'skinname-nostalgia' => '怀旧',
'skinname-cologneblue' => '科隆香水蓝',
-'skinname-simple' => '简单',
'skinname-modern' => '现代',
# Patrolling
'watchlistedit-raw-removed' => '$1个标题被删除:',
# Watchlist editing tools
-'watchlisttools-view' => '查看监视更改',
-'watchlisttools-edit' => 'æ\9f¥ç\9c\8b并编辑监视列表',
+'watchlisttools-view' => '查看监视的更改',
+'watchlisttools-edit' => 'æ\9f¥ç\9c\8bå\92\8c编辑监视列表',
'watchlisttools-raw' => '编辑原始监视列表',
# Signatures
'listusers-noresult' => '找不到用戶。',
'listusers-blocked' => '(已封禁)',
-# Special:ActiveUsers
-'activeusers' => '活躍用戶列表',
-'activeusers-intro' => '這個是在最近$1天之內有一些動作的用戶列表。',
-'activeusers-count' => '最近$3天內有$1次編輯',
-'activeusers-from' => '顯示用戶開始於:',
-'activeusers-hidebots' => '隱藏機器人',
-'activeusers-hidesysops' => '隱藏管理員',
-'activeusers-noresult' => '找不到用戶。',
-
# Special:ListGroupRights
'listgrouprights' => '用戶群組權限',
'listgrouprights-summary' => '以下面是一個在這個wiki中定義出來的用戶權限清單,以及它們的存取權。
'proxyblocksuccess' => '完成。',
'sorbsreason' => '您的IP位址在{{SITENAME}}中被 DNSBL列為屬於開放代理服務器。',
'sorbs_create_account_reason' => '由於您的IP位址在{{SITENAME}}中被 DNSBL列為屬於開放代理服務器,所以您無法建立賬號。',
+'xffblockreason' => '您或您使用的代理伺服器X-Forwarded-For字段所包含的一個IP地址已被封禁。原始封禁理由:$1',
'cant-block-while-blocked' => '當您被封鎖時不可以封鎖其他用戶。',
'cant-see-hidden-user' => '您現正嘗試封鎖的用戶已經被封鎖或隱藏。
您現在沒有隱藏用戶的權限,您不可以檢視或者編輯這位用戶的封鎖。',
# Stylesheets
'common.css' => '/* 此處的 CSS 將應用於所有的面板 */',
-'standard.css' => '/* 此處的 CSS 將影響使用標準面板的用戶 */',
-'nostalgia.css' => '/* 此處的 CSS 將影響使用懷舊面板的用戶 */',
'cologneblue.css' => '/* 此處的 CSS 將影響使用科隆香水藍面板的用戶 */',
'monobook.css' => '/* 此處的 CSS 將影響使用 Monobook 面板的用戶 */',
-'myskin.css' => '/* 此處的 CSS 將影響使用 MySkin 面板的用戶 */',
-'chick.css' => '/* 此處的 CSS 將影響使用 Chick 面板的用戶 */',
-'simple.css' => '/* 此處的 CSS 將影響使用 Simple 面板的用戶 */',
'modern.css' => '/* 此處的 CSS 將影響使用 Modern 面板的用戶 */',
'vector.css' => '/* 此處的 CSS 將影響使用 Vector 面板的用戶 */',
'print.css' => '/* 此處的 CSS 將影響打印輸出 */',
# Scripts
'common.js' => '/* 此處的JavaScript將載入於所有用戶每一個頁面。 */',
-'standard.js' => '/* 此處的JavaScript將載入於使用標準面板的用戶 */',
-'nostalgia.js' => '/* 此處的JavaScript將載入於使用懷舊面板的用戶 */',
'cologneblue.js' => '/* 此處的JavaScript將載入於使用科隆香水藍面板的用戶 */',
'monobook.js' => '/* 此處的JavaScript將載入於使用Monobook面板的用戶 */',
-'myskin.js' => '/* 此處的JavaScript將載入於使用MySkin面板的用戶 */',
-'chick.js' => '/* 此處的JavaScript將載入於使用Chick面板的用戶 */',
-'simple.js' => '/* 此處的JavaScript將載入於使用Simple面板的用戶 */',
'modern.js' => '/* 此處的JavaScript將載入於使用Modern面板的用戶 */',
'vector.js' => '/* 此處的JavaScript將載入於使用Vector面板的用戶 */',
'pageinfo-category-files' => '編輯數量',
# Skin names
-'skinname-standard' => '標準',
-'skinname-nostalgia' => '懷舊',
'skinname-cologneblue' => '科隆香水藍',
-'skinname-simple' => '簡單',
'skinname-modern' => '現代',
# Patrolling
--- /dev/null
+-- New index on image table to allow searches for types i.e. video webm
+-- Added 2013-01-08
+
+CREATE INDEX /*i*/img_media_mime ON /*_*/image (img_media_type,img_major_mime,img_minor_mime);
$this->output( "\n" );
}
$page = Title::makeTitle( $row->page_namespace, $row->page_title );
- $this->output( $page->getPrefixedUrl() );
+ $this->output( $page->getPrefixedURL() );
$lastPage = $row->page_id;
}
$link = Title::makeTitle( $row->pl_namespace, $row->pl_title );
- $this->output( " " . $link->getPrefixedUrl() );
+ $this->output( " " . $link->getPrefixedURL() );
}
if ( isset( $lastPage ) )
$this->output( "\n" );
foreach ( $result as $row ) {
$title = Title::makeTitle( $row->page_namespace, $row->page_title );
- $url = $title->getFullUrl();
+ $url = $title->getFullURL();
$text = $title->getPrefixedText();
$this->output( "$url $text\n" );
}
# - https://github.com/senchalabs/jsduck/wiki/Custom-tags
require 'jsduck/meta_tag'
+class SourceTag < JsDuck::MetaTag
+ def initialize
+ # This defines the name of the @tag
+ @name = 'source'
+ end
+
+ # Generate HTML output for this tag.
+ # One can make use of the #format method to easily support
+ # Markdown and {@link} tags inside the contents of the tag.
+ #
+ # @param tags All matches of this tag on one class.
+ def to_html(tags)
+ '<h3 class="pa">Source</h3>' + tags.map {|tag| format(tag) }.join("\n")
+ end
+end
+
class ContextTag < JsDuck::MetaTag
def initialize
@name = 'context'
{
"name": "jQuery",
"groups": [
- {
- "name": "Core",
- "classes": ["jQuery", "jQuery.Event", "jQuery.Promise", "jQuery.Deferred", "jQuery.jqXHR"]
- },
{
"name": "Plugins",
"classes": ["jQuery.plugin.*"]
]
},
{
- "name": "Misc",
+ "name": "Upstream",
"groups": [
{
- "name": "Native",
+ "name": "jQuery",
+ "classes": ["jQuery", "jQuery.Event", "jQuery.Callbacks", "jQuery.Promise", "jQuery.Deferred", "jQuery.jqXHR", "QUnit"]
+ },
+ {
+ "name": "JavaScript",
"classes": ["Array", "Boolean", "Date", "Function", "Number", "Object", "RegExp", "String"]
}
]
/**
* @class jQuery
+ * @source <http://api.jquery.com/>
*/
/**
* @method ajax
+ * @source <http://api.jquery.com/jQuery.ajax/>
* @return {jqXHR}
*/
/**
* @class jQuery.Event
+ * @source <http://api.jquery.com/Types/#Event>
+ */
+
+/**
+ * @class jQuery.Callbacks
+ * @source <http://api.jquery.com/jQuery.Callbacks/>
*/
/**
* @class jQuery.Promise
+ * @source <http://api.jquery.com/Types/#Promise>
*/
/**
* @class jQuery.Deferred
* @mixins jQuery.Promise
+ * @source <http://api.jquery.com/jQuery.Deferred/>
*/
/**
* @class jQuery.jqXHR
+ * @source <http://api.jquery.com/Types/#jqXHR>
* @alternateClassName jqXHR
*/
+
+
+/**
+ * @class QUnit
+ * @source <http://api.qunitjs.com/>
+ */
'resetpass_text',
'image_sample',
'media_sample',
- 'skinname-standard',
- 'skinname-nostalgia',
'skinname-cologneblue',
'skinname-monobook',
- 'skinname-myskin',
- 'skinname-chick',
- 'skinname-simple',
'skinname-modern',
'skinname-vector',
'common.css',
- 'standard.css',
- 'nostalgia.css',
'cologneblue.css',
'monobook.css',
- 'myskin.css',
- 'chick.css',
- 'simple.css',
'modern.css',
'vector.css',
'print.css',
'group-sysop.css',
'group-bureaucrat.css',
'common.js',
- 'standard.js',
- 'nostalgia.js',
'cologneblue.js',
'monobook.js',
- 'myskin.js',
- 'chick.js',
- 'simple.js',
'modern.js',
'vector.js',
'group-autoconfirmed.js',
'sorbs',
'sorbsreason',
'sorbs_create_account_reason',
+ 'xffblockreason',
'cant-block-while-blocked',
'cant-see-hidden-user',
'ipbblocked',
),
'stylesheets' => array(
'common.css',
- 'standard.css',
- 'nostalgia.css',
'cologneblue.css',
'monobook.css',
- 'myskin.css',
- 'chick.css',
- 'simple.css',
'modern.css',
'vector.css',
'print.css',
),
'scripts' => array(
'common.js',
- 'standard.js',
- 'nostalgia.js',
'cologneblue.js',
'monobook.js',
- 'myskin.js',
- 'chick.js',
- 'simple.js',
'modern.js',
'vector.js',
'group-autoconfirmed.js',
'pageinfo-category-files'
),
'skin' => array(
- 'skinname-standard',
- 'skinname-nostalgia',
'skinname-cologneblue',
'skinname-monobook',
- 'skinname-myskin',
- 'skinname-chick',
- 'skinname-simple',
'skinname-modern',
'skinname-vector',
),
} elseif ( $page !== '' ) {
$title = Title::newFromText( $page );
if ( $title ) {
- $url = $title->getInternalUrl();
+ $url = $title->getInternalURL();
$this->output( "$url\n" );
$urls[] = $url;
if ( $this->getOption( 'purge' ) ) {
$conds = array( 'page_namespace' => $namespace );
}
while ( true ) {
- $res = $dbr->select( 'page',
+ $res = $dbr->select( 'page',
array( 'page_id', 'page_namespace', 'page_title' ),
$conds + array( 'page_id > ' . $dbr->addQuotes( $startId ) ),
__METHOD__,
$urls = array();
foreach ( $res as $row ) {
$title = Title::makeTitle( $row->page_namespace, $row->page_title );
- $url = $title->getInternalUrl();
+ $url = $title->getInternalURL();
$urls[] = $url;
$startId = $row->page_id;
}
$this->runJobsLog( "Executed $count periodic queue task(s)." );
}
+ $flags = JobQueueGroup::USE_CACHE | JobQueueGroup::USE_PRIORITY;
$lastTime = time();
do {
$job = ( $type === false )
- ? $group->pop( JobQueueGroup::TYPE_DEFAULT, JobQueueGroup::USE_CACHE )
+ ? $group->pop( JobQueueGroup::TYPE_DEFAULT, $flags )
: $group->pop( $type ); // job from a single queue
if ( $job ) { // found a job
++$jobsRun;
$queue = $group->get( $type );
$pending = $queue->getSize();
$claimed = $queue->getAcquiredCount();
+ $abandoned = $queue->getAbandonedCount();
+ $active = ( $claimed - $abandoned );
if ( ( $pending + $claimed ) > 0 ) {
- $this->output( "{$type}: $pending queued; $claimed acquired\n" );
+ $this->output(
+ "{$type}: $pending queued; " .
+ "$claimed claimed ($active active, $abandoned abandoned)\n"
+ );
}
}
} else {
'ss_good_articles' => 'Number of articles',
'ss_total_pages' => 'Total pages',
'ss_users' => 'Number of users',
+ 'ss_active_users' => 'Active users',
'ss_images' => 'Number of images',
);
CREATE INDEX /*i*/img_timestamp ON /*_*/image (img_timestamp);
-- Used in API and duplicate search
CREATE INDEX /*i*/img_sha1 ON /*_*/image (img_sha1(10));
+-- Used to get media of one type
+CREATE INDEX /*i*/img_media_mime ON /*_*/image (img_media_type,img_major_mime,img_minor_mime);
--
+++ /dev/null
-<?php
-/**
- * Script that redirects to the article passed in the "wpDropdown" parameter.
- * This is used by the nostalgia skin for the special pages drop-down
- *
- * 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
- */
-
-if ( isset( $_SERVER['MW_COMPILED'] ) ) {
- require ( 'phase3/includes/WebStart.php' );
-} else {
- require ( __DIR__ . '/includes/WebStart.php' );
-}
-
-global $wgArticlePath;
-
-$page = $wgRequest->getVal( 'wpDropdown' );
-
-$url = str_replace( "$1", urlencode( $page ), $wgArticlePath );
-
-header( "Location: {$url}", true, 301 );
+++ /dev/null
-<?php
-/**
- * Version of redirect.php to used in web server requiring .php5 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
- * 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
- */
-
-require './redirect.php';
+++ /dev/null
-<?php
-// stub file for compatibility with older versions
-include_once('./redirect.php');
*
* See Vector for an example.
*/
-
- 'skins.chick' => array(
- 'styles' => array( 'chick/main.css' => array( 'media' => 'screen, handheld' ) ),
- 'remoteBasePath' => $GLOBALS['wgStylePath'],
- 'localBasePath' => $GLOBALS['wgStyleDirectory'],
- ),
'skins.cologneblue' => array(
'styles' => array( 'cologneblue/screen.css' => array( 'media' => 'screen' ) ),
'remoteBasePath' => $GLOBALS['wgStylePath'],
'remoteBasePath' => $GLOBALS['wgStylePath'],
'localBasePath' => $GLOBALS['wgStyleDirectory'],
),
- 'skins.nostalgia' => array(
- 'styles' => array( 'nostalgia/screen.css' => array( 'media' => 'screen' ) ),
- 'remoteBasePath' => $GLOBALS['wgStylePath'],
- 'localBasePath' => $GLOBALS['wgStyleDirectory'],
- ),
- 'skins.simple' => array(
- 'styles' => array( 'simple/main.css' => array( 'media' => 'screen' ) ),
- 'remoteBasePath' => $GLOBALS['wgStylePath'],
- 'localBasePath' => $GLOBALS['wgStyleDirectory'],
- ),
- 'skins.standard' => array(
- 'styles' => array( 'standard/main.css' => array( 'media' => 'screen' ) ),
- 'remoteBasePath' => $GLOBALS['wgStylePath'],
- 'localBasePath' => $GLOBALS['wgStyleDirectory'],
- ),
'skins.vector' => array(
// Keep in sync with WebInstallerOutput::getCSS()
'styles' => array(
* @return {boolean} return.done.isCategory Whether the category exists.
*/
isCategory: function ( title, ok, err ) {
- var d = $.Deferred();
+ var d = $.Deferred(),
+ apiPromise;
// Backwards compatibility (< MW 1.20)
d.done( ok );
d.fail( err );
- this.get( {
+ apiPromise = this.get( {
prop: 'categoryinfo',
titles: title.toString()
} )
})
.fail( d.reject );
- return d.promise();
+ return d.promise( { abort: apiPromise.abort } );
},
/**
* @return {String[]} return.done.categories Matched categories
*/
getCategoriesByPrefix: function ( prefix, ok, err ) {
- var d = $.Deferred();
+ var d = $.Deferred(),
+ apiPromise;
// Backwards compatibility (< MW 1.20)
d.done( ok );
d.fail( err );
// Fetch with allpages to only get categories that have a corresponding description page.
- this.get( {
+ apiPromise = this.get( {
list: 'allpages',
apprefix: prefix,
apnamespace: mw.config.get('wgNamespaceIds').category
})
.fail( d.reject );
- return d.promise();
+ return d.promise( { abort: apiPromise.abort } );
},
* if title was not found.
*/
getCategories: function ( title, ok, err, async ) {
- var d = $.Deferred();
+ var d = $.Deferred(),
+ apiPromise;
// Backwards compatibility (< MW 1.20)
d.done( ok );
d.fail( err );
- this.get( {
+ apiPromise = this.get( {
prop: 'categories',
titles: title.toString()
}, {
} );
}
d.resolve( ret );
- })
+ } )
.fail( d.reject );
- return d.promise();
+ return d.promise( { abort: apiPromise.abort } );
}
} );
* @return {string} return.done.token Received token.
*/
getEditToken: function ( ok, err ) {
- var d = $.Deferred();
+ var d = $.Deferred(),
+ apiPromise;
// Backwards compatibility (< MW 1.20)
d.done( ok );
d.fail( err );
- this.get( {
+ apiPromise = this.get( {
action: 'tokens',
type: 'edit'
}, {
})
.fail( d.reject );
- return d.promise();
+ return d.promise( { abort: apiPromise.abort } );
},
/**
*/
ajax: function ( parameters, ajaxOptions ) {
var token,
- apiDeferred = $.Deferred();
+ apiDeferred = $.Deferred(),
+ xhr;
parameters = $.extend( {}, this.defaults.parameters, parameters );
ajaxOptions = $.extend( {}, this.defaults.ajax, ajaxOptions );
}
// Make the AJAX request
- $.ajax( ajaxOptions )
+ xhr = $.ajax( ajaxOptions )
// If AJAX fails, reject API call with error code 'http'
// and details in second argument.
.fail( function ( xhr, textStatus, exception ) {
} );
// Return the Promise
- return apiDeferred.promise().fail( function ( code, details ) {
+ return apiDeferred.promise( { abort: xhr.abort } ).fail( function ( code, details ) {
mw.log( 'mw.Api error: ', code, details );
- });
+ } );
}
};
* @return {string} return.done.data Parsed HTML of `wikitext`.
*/
parse: function ( wikitext, ok, err ) {
- var d = $.Deferred();
+ var d = $.Deferred(),
+ apiPromise;
// Backwards compatibility (< MW 1.20)
d.done( ok );
d.fail( err );
- this.get( {
+ apiPromise = this.get( {
action: 'parse',
text: wikitext
} )
} )
.fail( d.reject );
- return d.promise();
+ return d.promise( { abort: apiPromise.abort } );
}
} );
* @return {string} return.done.watch.message Parsed HTML of the confirmational interface message
*/
function doWatchInternal( page, ok, err, addParams ) {
- var params, d = $.Deferred();
+ var params,
+ d = $.Deferred(),
+ apiPromise;
// Backwards compatibility (< MW 1.20)
d.done( ok );
d.fail( err );
$.extend( params, addParams );
}
- this.post( params )
+ apiPromise = this.post( params )
.done( function ( data ) {
d.resolve( data.watch );
} )
.fail( d.reject );
- return d.promise();
+ return d.promise( { abort: apiPromise.abort } );
}
$.extend( mw.Api.prototype, {
// TODO: Use requestAnimationFrame in the future which will
// perform even better by not injecting styles while the browser
// is paiting.
- setTimeout( addEmbeddedCSS );
+ setTimeout( function () {
+ // Can't pass addEmbeddedCSS to setTimeout directly because Firefox
+ // (below version 13) has the non-standard behaviour of passing a
+ // numerical "lateness" value as first argument to this callback
+ // http://benalman.com/news/2009/07/the-mysterious-firefox-settime/
+ addEmbeddedCSS();
+ } );
return;
}
+++ /dev/null
-<?php
-/**
- * Chick: A lightweight Monobook skin with no sidebar, the sidebar links are
- * given at the bottom of the page instead, as in the unstyled MySkin.
- *
- * 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
- * @ingroup Skins
- */
-
-if( !defined( 'MEDIAWIKI' ) )
- die( -1 );
-
-/**
- * Inherit main code from SkinTemplate, set the CSS and template filter.
- * @ingroup Skins
- */
-class SkinChick extends SkinTemplate {
- var $skinname = 'chick', $stylename = 'chick',
- $template = 'MonoBookTemplate', $useHeadElement = true;
-
- /**
- * @param $out OutputPage
- */
- function setupSkinUserCss( OutputPage $out ) {
- parent::setupSkinUserCss( $out );
-
- $out->addModuleStyles( 'skins.chick' );
-
- // TODO: Migrate all of these to RL
- $out->addStyle( 'chick/IE60Fixes.css', 'screen,handheld', 'IE 6' );
- }
-}
+++ /dev/null
-<?php
-/**
- * MySkin: Monobook without the CSS. The idea is that you
- * customise it using user or site CSS.
- *
- * 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
- * @ingroup Skins
- */
-
-if( !defined( 'MEDIAWIKI' ) )
- die( -1 );
-
-/**
- * Inherit main code from SkinTemplate, set the CSS and template filter.
- * @ingroup Skins
- */
-class SkinMySkin extends SkinTemplate {
- var $skinname = 'myskin', $stylename = 'myskin',
- $template = 'MonoBookTemplate', $useHeadElement = true;
-}
+++ /dev/null
-<?php
-/**
- * Nostalgia: A skin which looks like Wikipedia did in its first year (2001).
- *
- * 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
- * @ingroup Skins
- */
-
-if( !defined( 'MEDIAWIKI' ) ) {
- die( -1 );
-}
-
-/**
- * @todo document
- * @ingroup Skins
- */
-class SkinNostalgia extends SkinLegacy {
- var $skinname = 'nostalgia', $stylename = 'nostalgia',
- $template = 'NostalgiaTemplate';
-
- /**
- * @param $out OutputPage
- */
- function setupSkinUserCss( OutputPage $out ) {
- parent::setupSkinUserCss( $out );
- $out->addModuleStyles( 'skins.nostalgia' );
- }
-
-}
-
-class NostalgiaTemplate extends LegacyTemplate {
-
- /**
- * @return string
- */
- function doBeforeContent() {
- $s = "\n<div id='content'>\n<div id='top'>\n";
- $s .= '<div id="logo">' . $this->getSkin()->logoText( 'right' ) . '</div>';
-
- $s .= $this->pageTitle();
- $s .= $this->pageSubtitle() . "\n";
-
- $s .= '<div id="topbar">';
- $s .= $this->topLinks() . "\n<br />";
-
- $notice = $this->getSkin()->getSiteNotice();
- if( $notice ) {
- $s .= "\n<div id='siteNotice'>$notice</div>\n";
- }
- $s .= $this->pageTitleLinks();
-
- $ol = $this->otherLanguages();
- if( $ol ) {
- $s .= '<br />' . $ol;
- }
-
- $s .= $this->getSkin()->getCategories();
-
- $s .= "<br clear='all' /></div><hr />\n</div>\n";
- $s .= "\n<div id='article'>";
-
- return $s;
- }
-
- /**
- * @return string
- */
- function topLinks() {
- $sep = " |\n";
-
- $s = $this->getSkin()->mainPageLink() . $sep
- . Linker::specialLink( 'Recentchanges' );
-
- if ( $this->data['isarticle'] ) {
- $s .= $sep . '<strong>' . $this->editThisPage() . '</strong>' . $sep . $this->talkLink() .
- $sep . $this->historyLink();
- }
-
- /* show links to different language variants */
- $s .= $this->variantLinks();
- $s .= $this->extensionTabLinks();
- if ( !$this->data['loggedin'] ) {
- $s .= $sep . Linker::specialLink( 'Userlogin' );
- } else {
- /* show user page and user talk links */
- $user = $this->getSkin()->getUser();
- $s .= $sep . Linker::link( $user->getUserPage(), wfMessage( 'mypage' )->escaped() );
- $s .= $sep . Linker::link( $user->getTalkPage(), wfMessage( 'mytalk' )->escaped() );
- if ( $user->getNewtalk() ) {
- $s .= ' *';
- }
- /* show watchlist link */
- $s .= $sep . Linker::specialLink( 'Watchlist' );
- /* show my contributions link */
- $s .= $sep . Linker::link(
- SpecialPage::getSafeTitleFor( 'Contributions', $this->data['username'] ),
- wfMessage( 'mycontris' )->escaped() );
- /* show my preferences link */
- $s .= $sep . Linker::specialLink( 'Preferences' );
- /* show upload file link */
- if( UploadBase::isEnabled() && UploadBase::isAllowed( $user ) === true ) {
- $s .= $sep . $this->getUploadLink();
- }
-
- /* show log out link */
- $s .= $sep . Linker::specialLink( 'Userlogout' );
- }
-
- $s .= $sep . $this->specialPagesList();
-
- return $s;
- }
-
- /**
- * @return string
- */
- function doAfterContent() {
- $s = "\n</div><br clear='all' />\n";
-
- $s .= "\n<div id='footer'><hr />";
-
- $s .= $this->bottomLinks();
- $s .= "\n<br />" . $this->pageStats();
- $s .= "\n<br />" . $this->getSkin()->mainPageLink()
- . ' | ' . $this->getSkin()->aboutLink()
- . ' | ' . $this->searchForm();
-
- $s .= "\n</div>\n</div>\n";
-
- return $s;
- }
-}
+++ /dev/null
-<?php
-/**
- * Simple: A lightweight skin with a simple white-background sidebar and no
- * top bar.
- *
- * 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
- * @ingroup Skins
- */
-
-if( !defined( 'MEDIAWIKI' ) )
- die( -1 );
-
-/** */
-require_once( __DIR__ . '/MonoBook.php' );
-
-/**
- * Inherit main code from SkinTemplate, set the CSS and template filter.
- * @ingroup Skins
- */
-class SkinSimple extends SkinTemplate {
- var $skinname = 'simple', $stylename = 'simple',
- $template = 'MonoBookTemplate', $useHeadElement = true;
-
- /**
- * @param $out OutputPage
- */
- function setupSkinUserCss( OutputPage $out ) {
- parent::setupSkinUserCss( $out );
-
- $out->addModuleStyles( 'skins.simple' );
-
- /* Add some userprefs specific CSS styling */
- $rules = array();
- $underline = "";
-
- if ( $this->getUser()->getOption( 'underline' ) < 2 ) {
- $underline = "text-decoration: " . $this->getUser()->getOption( 'underline' ) ? 'underline !important' : 'none' . ";";
- }
- $style = implode( "\n", $rules );
- $out->addInlineStyle( $style, 'flip' );
-
- }
-}
+++ /dev/null
-<?php
-/**
- * Standard (a.k.a. Classic) skin: old MediaWiki default skin
- *
- * 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
- * @ingroup Skins
- */
-
-if( !defined( 'MEDIAWIKI' ) ) {
- die( -1 );
-}
-
-/**
- * @todo document
- * @ingroup Skins
- */
-class SkinStandard extends SkinLegacy {
- var $skinname = 'standard', $stylename = 'standard',
- $template = 'StandardTemplate';
-
- /**
- * @param $out OutputPage
- */
- function setupSkinUserCss( OutputPage $out ) {
- parent::setupSkinUserCss( $out );
- $out->addModuleStyles( 'skins.standard' );
-
- $qb = $this->qbSetting();
- $rules = array();
-
- if ( 2 == $qb ) { # Right
- $rules[] = "/* @noflip */#quickbar { position: absolute; top: 4px; right: 4px; border-left: 2px solid #000000; }";
- $rules[] = "/* @noflip */#article, #mw-data-after-content { margin-left: 4px; margin-right: 152px; }";
- $rules[] = "/* @noflip */#topbar, #footer { margin-right: 152px; }";
- } elseif ( 1 == $qb || 3 == $qb ) {
- $rules[] = "/* @noflip */#quickbar { position: absolute; top: 4px; left: 4px; border-right: 1px solid gray; }";
- $rules[] = "/* @noflip */#article, #mw-data-after-content { margin-left: 152px; margin-right: 4px; }";
- $rules[] = "/* @noflip */#topbar, #footer { margin-left: 152px; }";
- if( 3 == $qb ) {
- $rules[] = "/* @noflip */#quickbar { position: fixed; padding: 4px; }";
- }
- } elseif ( 4 == $qb ) {
- $rules[] = "/* @noflip */#quickbar { position: fixed; right: 0; top: 0; padding: 4px; }";
- $rules[] = "/* @noflip */#quickbar { border-right: 1px solid gray; }";
- $rules[] = "/* @noflip */#article, #mw-data-after-content { margin-right: 152px; margin-left: 4px; }";
- $rules[] = "/* @noflip */#topbar, #footer { margin-right: 152px; }";
- }
- $style = implode( "\n", $rules );
- $out->addInlineStyle( $style, 'flip' );
- }
-
-}
-
-class StandardTemplate extends LegacyTemplate {
-
- /**
- * @return string
- */
- function doAfterContent() {
- wfProfileIn( __METHOD__ );
- wfProfileIn( __METHOD__ . '-1' );
-
- $s = "\n</div><br style=\"clear:both\" />\n";
- $s .= "\n<div id='footer'>";
- $s .= '<table cellspacing="0"><tr>';
-
- wfProfileOut( __METHOD__ . '-1' );
- wfProfileIn( __METHOD__ . '-2' );
- $l = $this->getSkin()->getLanguage()->alignStart();
- $s .= "<td class='bottom' style='text-align: $l; vertical-align: top;'>";
-
- $s .= $this->bottomLinks();
- $s .= "\n<br />" . $this->getSkin()->getLanguage()->pipeList( array(
- $this->getSkin()->mainPageLink(),
- $this->getSkin()->aboutLink(),
- Linker::specialLink( 'Recentchanges' ),
- $this->searchForm() ) )
- . '<br /><span id="pagestats">' . $this->pageStats() . '</span>';
-
- $s .= '</td>';
- $s .= "</tr></table>\n</div>\n</div>\n";
-
- wfProfileOut( __METHOD__ . '-2' );
- wfProfileIn( __METHOD__ . '-3' );
- if ( $this->getSkin()->qbSetting() != 0 ) {
- $s .= $this->quickBar();
- }
- wfProfileOut( __METHOD__ . '-3' );
- wfProfileOut( __METHOD__ );
- return $s;
- }
-
- /**
- * @return string
- */
- function quickBar() {
- global $wgContLang;
-
- wfProfileIn( __METHOD__ );
-
- $action = $this->getSkin()->getRequest()->getText( 'action' );
- $wpPreview = $this->getSkin()->getRequest()->getBool( 'wpPreview' );
- $title = $this->getSkin()->getTitle();
- $tns = $title->getNamespace();
-
- $s = "\n<div id='quickbar'>";
- $s .= "\n" . $this->getSkin()->logoText() . "\n<hr class='sep' />";
-
- $sep = "\n<br />";
-
- # Use the first heading from the Monobook sidebar as the "browse" section
- $bar = $this->getSkin()->buildSidebar();
- unset( $bar['SEARCH'] );
- unset( $bar['LANGUAGES'] );
- unset( $bar['TOOLBOX'] );
-
- $barnumber = 1;
- foreach ( $bar as $browseLinks ) {
- if ( is_array( $browseLinks ) ) {
- if ( $barnumber > 1 ) {
- $s .= "\n<hr class='sep' />";
- }
- foreach ( $browseLinks as $link ) {
- if ( $link['text'] != '-' ) {
- $s .= "<a href=\"{$link['href']}\">" .
- htmlspecialchars( $link['text'] ) . '</a>' . $sep;
- }
- }
- }
- if ( $barnumber == 1 ) {
- // only show watchlist link if logged in
- if( $this->data['loggedin'] ) {
- $s.= Linker::specialLink( 'Watchlist' ) ;
- $s .= $sep . Linker::linkKnown(
- SpecialPage::getTitleFor( 'Contributions' ),
- wfMessage( 'mycontris' )->escaped(),
- array(),
- array( 'target' => $this->data['username'] )
- );
- }
- }
- $barnumber = $barnumber + 1;
- }
-
- $s .= "\n<hr class='sep' />";
- $articleExists = $title->getArticleID();
- if ( $this->data['isarticle'] || $action == 'edit' || $action == 'history' || $wpPreview ) {
- if( $this->data['isarticle'] ) {
- $s .= '<strong>' . $this->editThisPage() . '</strong>';
- } else { # backlink to the article in edit or history mode
- if( $articleExists ){ # no backlink if no article
- switch( $tns ) {
- case NS_TALK:
- case NS_USER_TALK:
- case NS_PROJECT_TALK:
- case NS_FILE_TALK:
- case NS_MEDIAWIKI_TALK:
- case NS_TEMPLATE_TALK:
- case NS_HELP_TALK:
- case NS_CATEGORY_TALK:
- $text = wfMessage('viewtalkpage');
- break;
- case NS_MAIN:
- $text = wfMessage( 'articlepage' );
- break;
- case NS_USER:
- $text = wfMessage( 'userpage' );
- break;
- case NS_PROJECT:
- $text = wfMessage( 'projectpage' );
- break;
- case NS_FILE:
- $text = wfMessage( 'imagepage' );
- break;
- case NS_MEDIAWIKI:
- $text = wfMessage( 'mediawikipage' );
- break;
- case NS_TEMPLATE:
- $text = wfMessage( 'templatepage' );
- break;
- case NS_HELP:
- $text = wfMessage( 'viewhelppage' );
- break;
- case NS_CATEGORY:
- $text = wfMessage( 'categorypage' );
- break;
- default:
- $text = wfMessage( 'articlepage' );
- }
-
- $link = $title->getText();
- $nstext = $wgContLang->getNsText( $tns );
- if( $nstext ) { # add namespace if necessary
- $link = $nstext . ':' . $link;
- }
-
- $s .= Linker::link( Title::newFromText( $link ), $text->escaped() );
- } elseif( $title->getNamespace() != NS_SPECIAL ) {
- # we just throw in a "New page" text to tell the user that he's in edit mode,
- # and to avoid messing with the separator that is prepended to the next item
- $s .= '<strong>' . wfMessage( 'newpage' )->escaped() . '</strong>';
- }
- }
-
- # "Post a comment" link
- if( ( $title->isTalkPage() || $this->getSkin()->getOutput()->showNewSectionLink() ) && $action != 'edit' && !$wpPreview )
- $s .= '<br />' . Linker::link(
- $title,
- wfMessage( 'postcomment' )->escaped(),
- array(),
- array(
- 'action' => 'edit',
- 'section' => 'new'
- )
- );
-
- /**
- * Watching could cause problems in edit mode:
- * if user edits article, then loads "watch this article" in background and then saves
- * article with "Watch this article" checkbox disabled, the article is transparently
- * unwatched. Therefore we do not show the "Watch this page" link in edit mode.
- */
- if ( $this->data['loggedin'] && $articleExists ) {
- if( $action != 'edit' && $action != 'submit' ) {
- $s .= $sep . $this->watchThisPage();
- }
- if ( $title->userCan( 'edit' ) )
- $s .= $sep . $this->moveThisPage();
- }
- if ( $this->getSkin()->getUser()->isAllowed( 'delete' ) && $articleExists ) {
- $s .= $sep . $this->deleteThisPage() .
- $sep . $this->protectThisPage();
- }
- $s .= $sep . $this->talkLink();
- if( $articleExists && $action != 'history' ) {
- $s .= $sep . $this->historyLink();
- }
- $s .= $sep . $this->whatLinksHere();
-
- if( $this->getSkin()->getOutput()->isArticleRelated() ) {
- $s .= $sep . $this->watchPageLinksLink();
- }
-
- if (
- NS_USER == $title->getNamespace() ||
- $title->getNamespace() == NS_USER_TALK
- ) {
-
- $id = User::idFromName( $title->getText() );
- $ip = User::isIP( $title->getText() );
-
- if( $id || $ip ){
- $s .= $sep . $this->userContribsLink();
- }
- if( $this->getSkin()->showEmailUser( $id ) ) {
- $s .= $sep . $this->emailUserLink();
- }
- }
- $s .= "\n<br /><hr class='sep' />";
- }
-
- if( UploadBase::isEnabled() && UploadBase::isAllowed( $this->getSkin()->getUser() ) === true ) {
- $s .= $this->getUploadLink() . $sep;
- }
-
- $s .= Linker::specialLink( 'Specialpages' );
-
- global $wgSiteSupportPage;
- if( $wgSiteSupportPage ) {
- $s .= "\n<br /><a href=\"" . htmlspecialchars( $wgSiteSupportPage ) .
- '" class="internal">' . wfMessage( 'sitesupport' )->escaped() . '</a>';
- }
-
- $s .= "\n<br /></div>\n";
- wfProfileOut( __METHOD__ );
- return $s;
- }
-}
+++ /dev/null
-/* 6.0 - only fixes */
-/* content area */
-/* workaround for various ie float bugs */
-#column-content {
- float: none;
- margin-left: 0;
- height: 1%;
-}
-#column-content #content {
- margin-left: 12.2em;
- margin-top: 3em;
- height: 1%;
-}
-#column-one {
- position: absolute;
- top: 0;
- left: 0;
- z-index: 4;
-}
-#footer {
- margin-left: 13.6em;
- border-left: 1px solid #fabd23;
-}
-
-/* the tabs */
-
-#p-cactions {
- z-index: 3;
-}
-
-#p-cactions li {
- padding-bottom: 0 !important;
- border: none;
- background-color: transparent;
- cursor: default;
- float: none !important;
-}
-#p-cactions li a {
- display: inline-block !important;
- vertical-align: top;
- padding-bottom: 0;
- border: solid #aaa;
- border-width: 1px 1px 0;
-}
-#p-cactions li.selected a {
- border-color: #fabd23;
- padding-bottom: 0.17em;
-}
-#p-cactions li a:hover {
- padding-bottom: 0.17em;
-}
-#portal-personaltools {
- padding-bottom: 0.1em;
-}
-#bodyContent a.external {
- background: url(external.png) center right no-repeat;
- padding-right: 13px;
-}
-
-/* show the hand */
-#p-logo a,
-#p-logo a:hover {
- cursor: pointer;
-}
-div.visualClear {
- width:100%;
- line-height: 0;
-}
-textarea {
- width: 96%;
-}
-
-div.editsection,
-#catlinks,
-div.tright,
-div.tleft {
- position: relative;
-}
-/*{ border:1px solid Red !important;}*/
+++ /dev/null
-/*
-** MediaWiki 'chick' style sheet for PDAs or other small-screen devices.
-** Copyright Timwi
-** License: GPL (http://www.gnu.org/copyleft/gpl.html)
-**
-** Loosely based on Monobook by Gabriel Wicke
-*/
-
-body {
- font-family: sans-serif;
- color: black;
- background: white;
- margin: 0;
- padding: 0.3em;
-}
-
-a { color: #002bb8; }
-a:visited { color: #5a3696; }
-a:active { color: #ffa500; }
-a.stub { color: #772233; }
-a.new,
-#p-personal a.new { color:#ba0000; }
-a.new:visited,
-#p-personal a.new:visited { color:#a55858; }
-
-img {
- border: none;
- vertical-align: middle;
-}
-p {
- margin: 0.4em 0em 0.5em 0em;
- line-height: 1.5em;
-}
-
-p img { margin: 0; }
-
-hr {
- height: 1px;
- color: #aaaaaa;
- background-color: #aaaaaa;
- border: 0;
- margin: 0.2em 0 0.2em 0;
-}
-
-h1, h2, h3, h4, h5, h6 {
- color: black;
- background: none;
- font-weight: normal;
- margin: 0;
- overflow: hidden;
- padding-top: 0.5em;
- padding-bottom: 0.17em;
- border-bottom: 1px solid #aaaaaa;
-}
-.editsection {
- font-weight: normal;
-}
-h1 { font-size: 188%; }
-h1 .editsection { font-size: 53.2%; }
-h2 { font-size: 150%; }
-h2 .editsection { font-size: 66.7%; }
-h3, h4, h5, h6 {
- border-bottom: none;
- font-weight: bold;
-}
-h3 { font-size: 132%; }
-h3 .editsection { font-size: 75.8%; }
-h4 { font-size: 116%; }
-h4 .editsection { font-size: 86.2%; }
-h5 { font-size: 100%; }
-h6 { font-size: 80%; }
-h6 .editsection { font-size: 125%; }
-
-ul {
- line-height: 1.5em;
- margin: 0.3em 0 0 1.5em;
- padding:0;
-}
-ol {
- line-height: 1.5em;
- margin: 0.3em 0 0 3.2em;
- padding:0;
- list-style-image: none;
-}
-li { margin-bottom: 0.1em; }
-dt {
- font-weight: bold;
- margin-bottom: 0.1em;
-}
-dl{
- margin-top: 0.2em;
- margin-bottom: 0.5em;
-}
-dd {
- line-height: 1.5em;
- margin-left: 2em;
- margin-bottom: 0.1em;
-}
-
-fieldset {
- border: 1px solid #2f6fab;
- margin: 1em 0em 1em 0em;
- padding: 0em 1em 1em 1em;
- line-height: 1.5em;
-}
-legend {
- background: white;
- padding: 0.5em;
- font-size: 95%;
-}
-form {
- border: none;
- margin: 0;
-}
-
-textarea {
- border: 1px solid #2f6fab;
- color: black;
- background-color: white;
- width: 100%;
- padding: 0.1em;
- overflow: auto;
-}
-/* hide this from ie/mac and konq2.2 */
-@media All {
- head:first-child+body input {
- visibility: visible;
- border: 1px solid #2f6fab;
- color: black;
- background-color: white;
- vertical-align: middle;
- padding: 0.2em;
- }
-}
-input.historysubmit {
- padding: 0 0.3em 0.3em 0.3em !important;
- font-size: 94%;
- cursor: pointer;
- height: 1.7em !important;
- margin-left: 1.6em;
-}
-input[type="radio"],
-input[type="checkbox"] { border:none; }
-select {
- border: 1px solid #2f6fab;
- color: black;
- vertical-align: top;
-}
-q {
- font-family: Times, "Times New Roman", serif;
- font-style: italic;
-}
-code { background-color: #f9f9f9; }
-pre, .mw-code {
- padding: 1em;
- border: 1px dashed #2f6fab;
- color: black;
- background-color: #f9f9f9;
- line-height: 1.1em;
-}
-
-/*
-** the main content area
-*/
-
-span.subpages { display: block; }
-
-/* Some space under the headers in the content area */
-#bodyContent h1, #bodyContent h2 { margin-bottom:0.6em; }
-#bodyContent h3,
-#bodyContent h4,
-#bodyContent h5 {
- margin-bottom: 0.3em;
-}
-#firstHeading { margin-bottom:0.1em; }
-
-/* user notification thing */
-.usermessage {
- background-color: #ffce7b;
- border: 1px solid #ffa500;
- color: black;
- font-weight: bold;
- margin: 0.1em 0 0 0;
- padding: 2px 5px;
- vertical-align: middle;
-}
-#siteNotice {
- text-align: center;
- font-size: 95%;
- padding: 0 0.9em 0 0.9em;
-}
-#siteNotice p { margin: 0; padding: 0; }
-.error {
- color: red;
- font-size: larger;
-}
-.catlinks {
- border:1px solid #aaaaaa;
- background-color:#f9f9f9;
- padding: 2px 5px;
- margin: 0.1em 0 0 0;
- clear: both;
-}
-.catlinks { margin: 0; padding: 0; }
-
-/* emulate center */
-.center {
- width: 100%;
- text-align: center;
-}
-*.center * {
- margin-left: auto;
- margin-right: auto;
-}
-/* small for tables and similar */
-.small { font-size: 94%; }
-table.small { font-size: 100% }
-
-/*
-** content styles
-*/
-
-#toc {
- /*border:1px solid #2f6fab;*/
- border:1px solid #aaaaaa;
- background-color:#f9f9f9;
- padding:5px;
- font-size: 95%;
-}
-#toc ul { margin: 0 2em; }
-#toc .toctoggle { font-size: 94%; }
-#toc .editsection {
- margin-top: 0.7em;
- font-size: 94%;
-}
-
-/* images */
-/* @noflip */div.floatright, table.floatright {
- margin: 0;
- border: 0.5em solid white;
- border-width: 0.5em 0 0.8em 1.4em;
-}
-div.floatright p { font-style: italic; }
-/* @noflip */div.floatleft, table.floatleft {
- margin: 0.3em 0.5em 0.5em 0;
- border: 0.5em solid white;
- border-width: 0.5em 1.4em 0.8em 0;
-}
-div.floatleft p { font-style: italic; }
-/* thumbnails */
-div.thumb {
- margin-bottom: 0.5em;
- width: auto;
-}
-div.thumbinner {
- border:1px solid #cccccc;
- padding: 3px !important;
- background-color:#f9f9f9;
- font-size: 94%;
- text-align: center;
- overflow: hidden;
-}
-html .thumbimage {
- border:1px solid #cccccc;
-}
-html .thumbcaption {
- border: none;
- text-align: left;
- line-height: 1.4em;
- padding: 0.3em 0 0.1em 0;
-}
-div.magnify {
- float: right;
- border: none !important;
- background: none !important;
-}
-div.magnify a, div.magnify img {
- display: block;
- border: none !important;
- background: none !important;
-}
-/* @noflip */div.tright {
- margin: 0.5em 0 1.3em 1.4em;
-}
-/* @noflip */div.tleft {
- margin: 0.5em 1.4em 1.3em 0;
-}
-img.thumbborder {
- border: 1px solid #dddddd;
-}
-
-/*
-** classes for special content elements like town boxes
-** intended to be referenced directly from the wiki src
-*/
-
-/*
-** User styles
-*/
-/* table standards */
-table.rimage {
- float:right;
- position:relative;
- margin-left:1em;
- margin-bottom:1em;
- text-align:center;
-}
-.toccolours {
- border:1px solid #aaaaaa;
- background-color:#f9f9f9;
- padding:5px;
- font-size: 95%;
-}
-
-/*
-** edit views etc
-*/
-.special li {
- line-height: 1.4em;
- margin: 0;
- padding: 0;
-}
-
-a.external { color: #3366bb; }
-div#footer { text-align: center; }
-ul#f-list li { list-style: none; text-align: center; }
-div.portlet { margin: 0.5em 0; }
-
-.redirectText {
- font-size:150%;
- margin:5px;
-}
-
-ul.special li.not-patrolled, ol.special li.not-patrolled {
- background-color: #ffa;
-}
-div.patrollink {
- font-size: 75%;
- text-align: right;
-}
-
-span.updatedmarker {
- color:black;
- background-color:#00FF00;
-}
-
-div.gallerybox {
- width: 150px;
-}
-
-#xjump-to-nav {
- display: none;
-}
-
-.templatesUsed { margin-top: 1.5em; }
-
-#footer {
- background-color: white;
- border-top: 1px solid #fabd23;
- border-bottom: 1px solid #fabd23;
- margin: .6em 0 1em 0;
- padding: .4em 0 1.2em 0;
- text-align: center;
- font-size: 90%;
-}
-#f-poweredbyico, #f-copyrightico {
- display: inline;
-}
#content a.external.text:after,
#content a.external.autonumber:after {
/* Expand URLs for printing */
- content: " (" attr(href) ") ";
+ content: " (" attr(href) ")";
}
#globalWrapper {
}
div#content {
margin: 2.8em 0 0 12.2em;
- padding: 0 1em 1em 1em;
+ padding: 1em;
position: relative;
z-index: 2;
}
line-height: 1.1em;
}
+#firstHeading {
+ padding-top: 0;
+}
/*
** the main content area
*/
position: absolute;
left: 0;
top: 0;
- z-index: 0;
+ z-index: 3;
}
#p-personal {
width: 100%;
+++ /dev/null
-/* this file must be empty */
+++ /dev/null
-body {
- /* background color is set separately on page type */
- color: black;
-}
-
-#specialform {
- display: inline;
-}
-
-#powersearch {
- background: #DDEEFF;
- border-style: solid;
- border-width: 1px;
- padding: 2px;
-}
-
-a.new {
- color: #ba0000;
-}
-
-a.interwiki,
-a.external {
- color: #3366BB;
-}
-
-a.printable {
- text-decoration: underline;
-}
-
-a.stub {
- color: #772233;
- text-decoration: none;
-}
-
-h1.pagetitle {
- padding-top: 0;
- margin-top: 0;
- padding-bottom: 0;
- margin-bottom: 0;
-}
-
-h2, h3, h4, h5, h6 {
- margin-bottom: 0;
-}
-
-textarea {
- overflow: auto;
-}
-
-p.subtitle {
- padding-top: 0;
- margin-top: 0;
-}
-div.sitenotice {
- clear: both;
-}
+++ /dev/null
-/**
- * For clarity, explicitly state some recommendations from
- * http://www.w3.org/TR/CSS21/sample.html to make sure the editsection links scale right.
- */
-
-h1 {
- font-size: 2em;
-}
-h2 {
- font-size: 1.5em;
-}
-h3 {
- font-size: 1.17em;
-}
-h5 {
- font-size: .83em;
-}
-h6 {
- font-size: .75em;
-}
-h1, h2, h3, h4, h5, h6 {
- font-weight: bolder;
-}
-
-/* Now the custom parts */
-
-/* Make edit sections (which are inside h# tags) normal-sized */
-.editsection {
- font-weight: normal;
-}
-h1 .editsection {
- font-size: 50%;
-}
-h2 .editsection {
- font-size: 66.7%;
-}
-h3 .editsection {
- font-size: 85.5%;
-}
-h5 .editsection {
- font-size: 120%;
-}
-h6 .editsection {
- font-size: 133%;
-}
-
-#toolbar {
- display: none;
-}
-
-div.center {
- text-align: center;
-}
-
-#contentSub {
- padding-left: 2em;
-}
-
-a {
- text-decoration: none;
-}
-
-a:hover {
- text-decoration: underline;
-}
-
-#column-content {
- width: 100%;
- float: right;
- margin: 0 0 0.6em -12.2em;
- padding: 0;
-}
-
-#content {
- margin: 0em 0 0 12.2em;
- padding: 0em 1em 1.5em 1em;
- border-left: 1px solid #959595;
- line-height: 1.5em;
-}
-
-#column-one {
- position: absolute;
- top: 0;
- left: 0;
-}
-
-/* Hide, but keep accessible for screen-readers */
-#column-one h2 {
- position: absolute;
- top: -9999px;
-}
-
-body {
- margin: 0;
- padding: 0;
-}
-
-#globalWrapper {
- width: 100%;
- height: 100%;
- margin: 0;
- padding: 0;
-}
-.visualClear {
- clear: both;
-}
-
-img {
- border: none;
-}
-p {
- margin: 0.4em 0em 0.5em 0em;
- line-height: 1.5em;
-}
-p img {
- margin: 0;
-}
-
-h1, h2, h3, h4, h5, h6 {
- margin: 0;
- padding-top: 0.5em;
- padding-bottom: 0.17em;
-}
-fieldset {
- margin: 1em 0em 1em 0em;
- padding: 0em 1em 1em 1em;
-}
-.usermessage {
- background-color: #ffce7b;
- border: 1px solid #ffa500;
- color: black;
- font-weight: bold;
- margin: 2em 0em 1em 0em;
- padding: 0.5em 1em;
- vertical-align: middle;
-}
-.error {
- color: red;
- font-size: larger;
-}
-
-table.rimage {
- float: right;
- position: relative;
- margin-left: 1em;
- margin-bottom: 1em;
- text-align: center;
-}
-
-.portlet {
- border: none;
- float: none;
- padding: 0;
- width: 11.8em;
- overflow: hidden;
-}
-.portlet h4 {
- font-weight: normal;
- white-space: nowrap;
-}
-.portlet h5 {
- padding: 0em 1em 0em 0.5em;
- display: inline;
- height: 1em;
- font-weight: normal;
- white-space: nowrap;
-}
-.portlet h6 {
- padding: 0em 1em 0em 1em;
- display: block;
- height: 1.2em;
- font-weight: normal;
- white-space: nowrap;
-}
-.pBody {
- border-collapse: collapse;
- padding: 0 0.8em 0.3em 0.5em;
-}
-.portlet h1,
-.portlet h2,
-.portlet h3,
-.portlet h4 {
- margin: 0;
- padding: 0;
- font-size: small;
-}
-
-#p-search .pBody {
- text-align: center;
-}
-
-#searchInput {
- width: 100%;
- clear: both;
- margin: 0 0 0 0;
-}
-
-input.searchButton {
- margin-top: 1px;
- padding: 0 0.4em;
- cursor: pointer;
-}
-
-#p-search .pBody {
- padding: 0.5em 0.4em 0.4em 0.4em;
-}
-
-/* feed links */
-a.feedlink {
- background: url(../common/images/feed-icon.png) center left no-repeat;
- padding-left: 16px;
-}
-
-textarea {
- width: 100%;
-}
-
-.pBody li,
-.pBody ul {
- padding-left: 0em;
- margin-left: 0.5em;
-}
-
-pre, .mw-code {
- margin: 2em;
- border: solid 1px black;
-}
-
-h1.firstHeading,
-h2 {
- border-bottom: solid 1px black;
-}
-#bodyContent a.external,
-#bodyContent a.external[href ^="gopher://"] {
- background: url(external.png) center right no-repeat;
- padding-right: 13px;
-}
-#bodyContent a.external[href ^="https://"],
-.link-https {
- background: url(lock_icon.gif) center right no-repeat;
- padding-right: 16px;
-}
-#bodyContent a.external[href ^="mailto:"],
-.link-mailto {
- background: url(mail_icon.gif) center right no-repeat;
- padding-right: 18px;
-}
-#bodyContent a.external[href ^="news:"] {
- background: url(news_icon.png) center right no-repeat;
- padding-right: 18px;
-}
-#bodyContent a.external[href ^="ftp://"],
-.link-ftp {
- background: url(file_icon.gif) center right no-repeat;
- padding-right: 18px;
-}
-#bodyContent a.external[href ^="irc://"],
-#bodyContent a.external[href ^="ircs://"],
-.link-irc {
- background: url(discussionitem_icon.gif) center right no-repeat;
- padding-right: 18px;
-}
-
-#bodyContent a.extiw,
-#bodyContent a.extiw:active {
- color: #5E7CFF;
-}
-
-td.diff-addedline {
- background-color: #B9FFB0;
-}
-
-td.diff-deletedline {
- background-color: #f8ffaa;
-}
-
-.diffchange {
- background-color: #FFCDF3;
- text-decoration: none;
-}
-
-#pagehistory li {
- border: none;
-}
-
-div.tocindent {
- margin-left: 2em;
-}
-#toc {
- text-align: left;
- border-top: solid 1px black;
- border-bottom: solid 1px black;
-}
-
-/* @noflip */div.floatright, table.floatright {
- margin: 0;
- border-width: 0.5em 0 0.8em 1.4em;
-}
-div.floatright p {
- font-style: italic;
-}
-/* @noflip */div.floatleft, table.floatleft {
- margin: 0.3em 0.5em 0.5em 0;
- border-width: 0.5em 1.4em 0.8em 0;
-}
-div.floatleft p {
- font-style: italic;
-}
-
-/* thumbnails */
-div.thumb {
- margin-bottom: 0.5em;
- width: auto;
-}
-div.thumbinner {
- padding: 3px !important;
- text-align: center;
- overflow: hidden;
-}
-
-html .thumbcaption {
- border: none;
- text-align: left;
- line-height: 1.4;
- padding: 0.3em 0 0.1em 0;
-}
-div.magnify {
- float: right;
- border: none !important;
- background: none !important;
-}
-div.magnify a,
-div.magnify img {
- display: block;
- border: none !important;
- background: none !important;
-}
-/* @noflip */div.tright {
- border-width: 0.5em 0 0.8em 1.4em;
-}
-/* @noflip */div.tleft {
- margin-right: 0.5em;
- border-width: 0.5em 1.4em 0.8em 0;
-}
-img.thumbborder {
- border: 1px solid #dddddd;
-}
-
-a.stub {
- color: #772233;
-}
-a.new,
-#p-personal a.new {
- color: #BA0000;
- text-decoration: line-through;
-}
-li.new {
- text-decoration: line-through;
-}
-/**
- * Overrides text justification (user preference)
- * See bug 31990
- */
-#catlinks {
- text-align: center;
-}
-.catlinks {
- text-align: center;
- width: 80%;
- margin-left: auto;
- margin-right: auto;
- padding: 3px;
-}
-
-#mytabs {
- background-color: inherit;
-}
-#p-cactions {
- background-color: inherit;
-}
-
-#footer {
- padding-left: 11.8em;
-}
-
-#n-portal,
-#n-currentevents,
-#n-help,
-#n-sitesupport {
- display: none;
-}
-
-#preftoc {
- float: left;
- margin: 1em;
- width: 13em;
-}
-#preftoc li {
-}
-#preftoc li.selected {
- border: 1px dashed #aaa;
-}
-#preftoc a,
-#preftoc a:active {
- display: block;
-}
-div.htmlform-tip {
- font-size: 95%;
- margin-top: 1em;
-}
-
-#mw_trackbacks {
- border-style: groove;
-}
-
-#jump-to-nav {
- display: none;
-}
-
-table.collapsed tr.collapsable {
- display: none;
-}
-
-.templatesUsed {
- margin-top: 1.5em;
-}
-
+++ /dev/null
-/**
- * This style sheet is used by the classic (aka standard) skin
- */
-
-#article {
- padding: 4px;
-}
-
-#content {
- margin: 0;
- padding: 0;
-}
-
-#footer {
- padding: 4px;
- font-size: 95%;
- clear: both;
-}
-
-#pagestats {
- font-size: 9pt;
-}
-
-#powersearch {
- background: #DDEEFF;
- border-style: solid;
- border-width: 1px;
- padding: 2px;
-}
-
-#quickbar {
- width: 140px;
- height: 100%;
- padding: 4px;
- visibility: visible;
- z-index: 99;
- font-size: 95%;
-}
-
-#topbar {
- padding: 4px;
- font-size: 95%;
-}
-
-/* Table of contents */
-.toctoggle,
-.editsection {
- font-size: smaller;
-}
-
-/* ... */
-#toolbar {
- padding: 0;
-}
-
-#infobox {
- background: #eeeeff;
- color: black;
-}
-
-#editform {
- margin-top: 1px;
-}
-
-a.interwiki,
-a.external {
- color: #3366BB;
-}
-
-a.printable {
- text-decoration: underline;
-}
-
-a.new {
- color: #ba0000;
-}
-
-a.stub {
- color: #772233;
- text-decoration: none;
-}
-
-a:visited {
- color: #5A3696;
-}
-
-body {
- margin: 0;
- padding: 4px;
- color: black;
-}
-
-form.inline {
- display: inline;
-}
-
-textarea {
- overflow: auto;
-}
-
-h1.pagetitle {
- padding-top: 0;
- margin-top: 0;
- padding-bottom: 0;
- margin-bottom: 0;
- font-size: 150%;
-}
-
-h1.pagetitle .editsection {
- font-size: 66.7%;
-}
-
-h2 {
- font-size: 120%;
-}
-
-h2 .editsection {
- font-size: 83.3%;
-}
-
-h2, h3, h4, h5, h6 {
- margin-bottom: 0;
-}
-
-h3 {
- font-size: 106.25%;
-}
-
-h3 .editsection {
- font-size: 94.1%;
-}
-
-h4 {
- font-size: 103.125%;
-}
-
-h4 .editsection {
- font-size: 97.0%;
-}
-
-h5 {
- font-size: 100%;
-}
-
-h5 .editsection {
- font-size: 100%;
-}
-
-h6 {
- font-size: 95%;
-}
-
-h6 .editsection {
- font-size: 105.3%;
-}
-
-hr.sep {
- color: gray;
- height: 1px;
- background-color: gray;
-}
-
-p.subpages {
- font-size: small;
-}
-
-p.subtitle {
- padding-top: 0;
- margin-top: 0;
-}
-
-.catlinks {
- font-size: small;
- margin-top: 0;
- text-align:right;
-}
-
-td {
- empty-cells: show;
-}
-
-td.bottom {
- border-top: 1px solid gray;
-}
-
-td.top {
- border-bottom: 1px solid gray;
-}
#firstHeading {
padding-top: 0;
margin-top: 0;
- padding-top: 0;
font-size: 1.6em;
}
div#content a.external,
$this->uploadDir = $this->setupUploadDir();
$user = User::createNew( 'WikiSysop' );
$image = wfLocalFile( Title::makeTitle( NS_FILE, 'Foobar.jpg' ) );
+ # note that the size/width/height/bits/etc of the file
+ # are actually set by inspecting the file itself; the arguments
+ # to recordUpload2 have no effect. That said, we try to make things
+ # match up so it is less confusing to readers of the code & tests.
$image->recordUpload2( '', 'Upload of some lame file', 'Some lame file', array(
- 'size' => 12345,
+ 'size' => 7881,
'width' => 1941,
'height' => 220,
- 'bits' => 24,
+ 'bits' => 8,
'media_type' => MEDIATYPE_BITMAP,
'mime' => 'image/jpeg',
'metadata' => serialize( array() ),
- 'sha1' => wfBaseConvert( '', 16, 36, 31 ),
+ 'sha1' => wfBaseConvert( '1', 16, 36, 31 ),
'fileExists' => true
), $this->db->timestamp( '20010115123500' ), $user );
+ $image = wfLocalFile( Title::makeTitle( NS_FILE, 'Thumb.png' ) );
+ # again, note that size/width/height below are ignored; see above.
+ $image->recordUpload2( '', 'Upload of some lame thumbnail', 'Some lame thumbnail', array(
+ 'size' => 22589,
+ 'width' => 135,
+ 'height' => 135,
+ 'bits' => 8,
+ 'media_type' => MEDIATYPE_BITMAP,
+ 'mime' => 'image/png',
+ 'metadata' => serialize( array() ),
+ 'sha1' => wfBaseConvert( '2', 16, 36, 31 ),
+ 'fileExists' => true
+ ), $this->db->timestamp( '20130225203040' ), $user );
+
# This image will be blacklisted in [[MediaWiki:Bad image list]]
$image = wfLocalFile( Title::makeTitle( NS_FILE, 'Bad.jpg' ) );
$image->recordUpload2( '', 'zomgnotcensored', 'Borderline image', array(
'media_type' => MEDIATYPE_BITMAP,
'mime' => 'image/jpeg',
'metadata' => serialize( array() ),
- 'sha1' => wfBaseConvert( '', 16, 36, 31 ),
+ 'sha1' => wfBaseConvert( '3', 16, 36, 31 ),
'fileExists' => true
), $this->db->timestamp( '20010115123500' ), $user );
}
wfMkdirParents( $dir . '/3/3a', null, __METHOD__ );
copy( "$IP/skins/monobook/headbg.jpg", "$dir/3/3a/Foobar.jpg" );
+ wfMkdirParents( $dir . '/e/ea', null, __METHOD__ );
+ copy( "$IP/skins/monobook/wiki.png", "$dir/e/ea/Thumb.png" );
wfMkdirParents( $dir . '/0/09', null, __METHOD__ );
copy( "$IP/skins/monobook/headbg.jpg", "$dir/0/09/Bad.jpg" );
"$dir/thumb/3/3a/Foobar.jpg/70px-Foobar.jpg",
"$dir/thumb/3/3a/Foobar.jpg/960px-Foobar.jpg",
+ "$dir/e/ea/Thumb.png",
+
"$dir/0/09/Bad.jpg",
"$dir/math/f/a/5/fa50b8b616463173474302ca3e63586b.png",
"$dir/thumb/3/3a",
"$dir/thumb/3",
+ "$dir/e/ea",
+ "$dir/e",
+
"$dir/0/09/",
"$dir/0/",
"$dir/thumb",
!! end
+!! test
+Table cell with a single comment
+!! input
+{|
+| <!-- c1 -->
+| a
+|}
+!! result
+<table>
+<tr>
+<td>
+</td>
+<td> a
+</td></tr></table>
+
+!! end
+
# The expected HTML structure in this test is debatable. The PHP parser does
# not parse this kind of table at all. The main focus for Parsoid is on
# round-tripping, so this output is ok for now. TODO: revisit!
!!end
+!!test
+Single-comment whitespace lines dont break lists, but multi-comment whitespace lines do
+!!input
+*a
+<!--This line will NOT split the list-->
+*b
+ <!--This line will NOT split the list either-->
+*c
+ <!--foo--> <!--This line with more than 1 comment will split the list-->
+*d
+!!result
+<ul><li>a
+</li><li>b
+</li><li>c
+</li></ul>
+<ul><li>d
+</li></ul>
+
+!!end
+
###
### Magic Words
###
!! input
{{NUMBEROFFILES}}
!! result
-<p>2
+<p>3
</p>
!! end
!!end
+!!test
+Templates: HTML Tag: 7. Generation of partial attribute key string
+!!input
+<div st{{echo|yle}}="color:red;">foo</div>
+!!result
+<div style="color:red;">foo</div>
+
+!!end
+
!!test
Templates: HTML Tables: 1. Generating start of a HTML table
!!input
!! test
Thumbnail image with link parameter
+!! options
+php
!! input
[[Image:foobar.jpg|thumb|link=http://example.com/|Title]]
!! result
!! end
+!! test
+Manually-specified thumbnail image
+!! options
+php
+!! input
+[[Image:Foobar.jpg|thumb=Thumb.png|Title]]
+!! result
+<div class="thumb tright"><div class="thumbinner" style="width:137px;"><a href="/wiki/File:Foobar.jpg"><img alt="" src="http://example.com/images/e/ea/Thumb.png" width="135" height="135" class="thumbimage" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>Title</div></div></div>
+
+!! end
+
+!! test
+Manually-specified thumbnail image with explicit link to wiki page
+!! options
+php
+!! input
+[[Image:Foobar.jpg|thumb=Thumb.png|link=Main Page|Title]]
+!! result
+<div class="thumb tright"><div class="thumbinner" style="width:137px;"><a href="/wiki/Main_Page" title="Main Page"><img alt="" src="http://example.com/images/e/ea/Thumb.png" width="135" height="135" class="thumbimage" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>Title</div></div></div>
+
+!! end
+
+!! test
+Manually-specified thumbnail image with explicit link to url
+!! options
+php
+!! input
+[[Image:Foobar.jpg|thumb=Thumb.png|link=http://example.com|Title]]
+!! result
+<div class="thumb tright"><div class="thumbinner" style="width:137px;"><a href="http://example.com"><img alt="" src="http://example.com/images/e/ea/Thumb.png" width="135" height="135" class="thumbimage" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>Title</div></div></div>
+
+!! end
+
+!! test
+Manually-specified thumbnail image with explicit no link
+!! options
+php
+!! input
+[[Image:Foobar.jpg|thumb=Thumb.png|link=|Title]]
+!! result
+<div class="thumb tright"><div class="thumbinner" style="width:137px;"><img alt="" src="http://example.com/images/e/ea/Thumb.png" width="135" height="135" class="thumbimage" /> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>Title</div></div></div>
+
+!! end
+
+!! test
+Manually-specified thumbnail image with explicit link and alt text
+!! options
+php
+!! input
+[[Image:Foobar.jpg|thumb=Thumb.png|link=Main Page|alt=alttext|Title]]
+!! result
+<div class="thumb tright"><div class="thumbinner" style="width:137px;"><a href="/wiki/Main_Page" title="Main Page"><img alt="alttext" src="http://example.com/images/e/ea/Thumb.png" width="135" height="135" class="thumbimage" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>Title</div></div></div>
+
+!! end
+
!! test
Image with frame and link
!! input
!!input
[[Image:foobar.jpg|thumbnail= ]]
!!result
-<div class="thumb tright"><div class="thumbinner" style="width:1943px;">Error creating thumbnail: <div class="thumbcaption"></div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:182px;">Error creating thumbnail: <div class="thumbcaption"></div></div></div>
!!end
!! end
+!! test
+Parsoid-only: Don't wrap broken template tags in <nowiki> on wt2wt (Bug 42353)
+!! options
+parsoid
+!! input
+{{}}
+!! result
+{{}}
+!! end
+
+!! test
+Parsoid-only: Don't wrap broken template tags in <nowiki> on wt2wt (Bug 42353)
+!! options
+parsoid
+!! input
+}}{{
+!! result
+}}{{
+!! end
+
!!test
Accept empty td cell attribute
!!input
!! end
+###
+### Parsoid-centric tests for testing RTing of inter-element separators
+### Edge cases not tested by existing parser tests and specific to
+### Parsoid-specific serialization strategies.
+###
+
+!!test
+RT-ed inter-element separators should be valid separators
+!!input
+{|
+|- [[foo]]
+|}
+!!result
+<table>
+
+</table>
+
+!!end
+
+!!test
+Trailing newlines in a deep dom-subtree that ends a wikitext line should be migrated out
+(Parsoid-only since PHP parser relies on Tidy for correct output)
+!!options
+disabled parsoid
+!!input
+{|
+|<small>foo
+bar
+|}
+
+{|
+|<small>foo<small>
+|}
+!!result
+!!end
+
+!!test
+Empty TD followed by TD with tpl-generated attribute
+!!input
+{|
+|-
+|
+|{{echo|style='color:red'}}|foo
+|}
+!!result
+<table>
+
+<tr>
+<td>
+</td>
+<td>foo
+</td></tr></table>
+
+!!end
+
+!!test
+Empty TR followed by a template-generated TR
+(Parsoid-specific since PHP parser doesn't handle this mixed tbl-wikitext)
+!!options
+disabled parsoid
+!!input
+{|
+|-
+{{echo|<tr><td>foo</td></tr>}}
+|}
+!!result
+<table>
+<tbody>
+<tr>
+<td></td></tr>
+<tr>
+<td>foo</td></tr></tbody></table>
+!!end
+
+!!test
+Multi-line image caption generated by templates with/without trailing newlines
+!!options
+parsoid
+!!input
+[[File:foo.jpg|thumb|300px|foo\n{{echo|A}}\n{{echo|B}}\n{{echo|C}}]]
+[[File:foo.jpg|thumb|300px|foo\n{{echo|A}}\n{{echo|B}}\n{{echo|C}}\n\n]]
+!!result
+<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/index.php?title=Special:Upload&wpDestFile=Foo.jpg" class="new" title="File:Foo.jpg">File:Foo.jpg</a> <div class="thumbcaption">foo\nA\nB\nC</div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/index.php?title=Special:Upload&wpDestFile=Foo.jpg" class="new" title="File:Foo.jpg">File:Foo.jpg</a> <div class="thumbcaption">foo\nA\nB\nC\n\n</div></div></div>
+
+!!end
+
TODO:
more images
more tables
* even if using different parameters.
*
* @param DatabaseBase $db The database connection
- * @param String $prefix The prefix to use for the new table set (aka schema).
+ * @param String $prefix The prefix to use for the new table set (aka schema).
*
* @throws MWException if the database table prefix is already $prefix
*/
$this->assertEquals( 'MetaWikiUser', $block->getByName(), 'Correct blocker name' );
$this->assertEquals( 0, $block->getBy(), 'Correct blocker id' );
}
+
+ function testBlocksOnXff() {
+
+ $blockList = array(
+ array( 'target' => '70.2.0.0/16',
+ 'type' => Block::TYPE_RANGE,
+ 'desc' => 'Range Hardblock',
+ 'ACDisable' => false,
+ 'isHardblock' => true,
+ 'isAutoBlocking' => false,
+ ),
+ array( 'target' => '2001:4860:4001::/48',
+ 'type' => Block::TYPE_RANGE,
+ 'desc' => 'Range6 Hardblock',
+ 'ACDisable' => false,
+ 'isHardblock' => true,
+ 'isAutoBlocking' => false,
+ ),
+ array( 'target' => '60.2.0.0/16',
+ 'type' => Block::TYPE_RANGE,
+ 'desc' => 'Range Softblock with AC Disabled',
+ 'ACDisable' => true,
+ 'isHardblock' => false,
+ 'isAutoBlocking' => false,
+ ),
+ array( 'target' => '50.2.0.0/16',
+ 'type' => Block::TYPE_RANGE,
+ 'desc' => 'Range Softblock',
+ 'ACDisable' => false,
+ 'isHardblock' => false,
+ 'isAutoBlocking' => false,
+ ),
+ array( 'target' => '50.1.1.1',
+ 'type' => Block::TYPE_IP,
+ 'desc' => 'Exact Softblock',
+ 'ACDisable' => false,
+ 'isHardblock' => false,
+ 'isAutoBlocking' => false,
+ ),
+ );
+
+ foreach ( $blockList as $insBlock ) {
+ $target = $insBlock['target'];
+
+ if ( $insBlock['type'] === Block::TYPE_IP ) {
+ $target = User::newFromName( IP::sanitizeIP( $target ), false )->getName();
+ } elseif ( $insBlock['type'] === Block::TYPE_RANGE ) {
+ $target = IP::sanitizeRange( $target );
+ }
+
+ $block = new Block();
+ $block->setTarget( $target );
+ $block->setBlocker( 'testblocker@global' );
+ $block->mReason = $insBlock['desc'];
+ $block->mExpiry = 'infinity';
+ $block->prevents( 'createaccount', $insBlock['ACDisable'] );
+ $block->isHardblock( $insBlock['isHardblock'] );
+ $block->isAutoblocking( $insBlock['isAutoBlocking'] );
+ $block->insert();
+ }
+
+ $xffHeaders = array(
+ array( 'xff' => '1.2.3.4, 70.2.1.1, 60.2.1.1, 2.3.4.5',
+ 'count' => 2,
+ 'result' => 'Range Hardblock'
+ ),
+ array( 'xff' => '1.2.3.4, 50.2.1.1, 60.2.1.1, 2.3.4.5',
+ 'count' => 2,
+ 'result' => 'Range Softblock with AC Disabled'
+ ),
+ array( 'xff' => '1.2.3.4, 70.2.1.1, 50.1.1.1, 2.3.4.5',
+ 'count' => 2,
+ 'result' => 'Exact Softblock'
+ ),
+ array( 'xff' => '1.2.3.4, 70.2.1.1, 50.2.1.1, 50.1.1.1, 2.3.4.5',
+ 'count' => 3,
+ 'result' => 'Exact Softblock'
+ ),
+ array( 'xff' => '1.2.3.4, 70.2.1.1, 50.2.1.1, 2.3.4.5',
+ 'count' => 2,
+ 'result' => 'Range Hardblock'
+ ),
+ array( 'xff' => '1.2.3.4, 70.2.1.1, 60.2.1.1, 2.3.4.5',
+ 'count' => 2,
+ 'result' => 'Range Hardblock'
+ ),
+ array( 'xff' => '50.2.1.1, 60.2.1.1, 2.3.4.5',
+ 'count' => 2,
+ 'result' => 'Range Softblock with AC Disabled'
+ ),
+ array( 'xff' => '1.2.3.4, 50.1.1.1, 60.2.1.1, 2.3.4.5',
+ 'count' => 2,
+ 'result' => 'Exact Softblock'
+ ),
+ array( 'xff' => '1.2.3.4, <$A_BUNCH-OF{INVALID}TEXT\>, 60.2.1.1, 2.3.4.5',
+ 'count' => 1,
+ 'result' => 'Range Softblock with AC Disabled'
+ ),
+ array( 'xff' => '1.2.3.4, 50.2.1.1, 2001:4860:4001:802::1003, 2.3.4.5',
+ 'count' => 2,
+ 'result' => 'Range6 Hardblock'
+ ),
+ );
+
+ foreach ( $xffHeaders as $test ) {
+ $list = array_map( 'trim', explode( ',', $test['xff'] ) );
+ $xffblocks = Block::getBlocksForIPList( $list, true );
+ $this->assertEquals( $test['count'], count( $xffblocks ), 'Number of blocks for ' . $test['xff'] );
+ $block = Block::chooseBlock( $xffblocks, $list );
+ $this->assertEquals( $test['result'], $block->mReason, 'Correct block type for XFF header ' . $test['xff'] );
+ }
+
+ }
}
+++ /dev/null
-<?php
-
-class JsonTest extends MediaWikiTestCase {
-
- function testPhpBug46944Test() {
- $this->assertNotEquals(
- '\ud840\udc00',
- strtolower( FormatJson::encode( "\xf0\xa0\x80\x80" ) ),
- 'Test encoding an broken json_encode character (U+20000)'
- );
-
- }
-
- function testDecodeVarTypes() {
- $this->assertInternalType(
- 'object',
- FormatJson::decode( '{"Name": "Cheeso", "Rank": 7}' ),
- 'Default to object'
- );
-
- $this->assertInternalType(
- 'array',
- FormatJson::decode( '{"Name": "Cheeso", "Rank": 7}', true ),
- 'Optional array'
- );
- }
-}
$wgUser->mFrom = 'defaults';
$wgUser->mOptionsLoaded = true;
// The user's data is ignored because the variant is set in the URL.
- $wgUser->setOption( 'variant', 'tg-latn' );
+ $wgUser->setOption( 'variant', 'tg-latn' );
$this->assertEquals( 'tg', $this->lc->getPreferredVariant() );
}
$router->add( array( 'qwerty' => "/qwerty/$1" ), array( 'qwerty' => '$key' ) );
$router->add( "/$2/$1", array( 'restricted-to-y' => '$2' ), array( '$2' => 'y' ) );
- foreach ( array(
- '/Foo' => array( 'title' => 'Foo' ),
- '/Bar' => array( 'ping' => 'pong' ),
- '/Baz' => array( 'marco' => 'polo' ),
- '/asdf-foo' => array( 'title' => 'qwerty-foo' ),
- '/qwerty-bar' => array( 'title' => 'asdf-bar' ),
- '/a/Foo' => array( 'title' => 'Foo' ),
- '/asdf/Foo' => array( 'title' => 'Foo' ),
- '/qwerty/Foo' => array( 'title' => 'Foo', 'qwerty' => 'qwerty' ),
- '/baz/Foo' => array( 'title' => 'Foo', 'unrestricted' => 'baz' ),
- '/y/Foo' => array( 'title' => 'Foo', 'restricted-to-y' => 'y' ),
- ) as $path => $result ) {
+ foreach (
+ array(
+ '/Foo' => array( 'title' => 'Foo' ),
+ '/Bar' => array( 'ping' => 'pong' ),
+ '/Baz' => array( 'marco' => 'polo' ),
+ '/asdf-foo' => array( 'title' => 'qwerty-foo' ),
+ '/qwerty-bar' => array( 'title' => 'asdf-bar' ),
+ '/a/Foo' => array( 'title' => 'Foo' ),
+ '/asdf/Foo' => array( 'title' => 'Foo' ),
+ '/qwerty/Foo' => array( 'title' => 'Foo', 'qwerty' => 'qwerty' ),
+ '/baz/Foo' => array( 'title' => 'Foo', 'unrestricted' => 'baz' ),
+ '/y/Foo' => array( 'title' => 'Foo', 'restricted-to-y' => 'y' ),
+ ) as $path => $result
+ ) {
$this->assertEquals( $router->parse( $path ), $result );
}
}
*/
function testIsUtf8WithPhpFallbackImplementation( $expected, $string ) {
$this->assertEquals( $expected,
- StringUtils::isUtf8( $string, /** disable mbstring: */ true ),
+ StringUtils::isUtf8( $string, /** disable mbstring: */true ),
'Testing string "' . $this->escaped( $string ) . '" with pure PHP implementation'
);
}
array( $FAIL, "\xff" ),
array( $FAIL, "\xfe\xfe\xff\xff" ),
- /**
+ /*
# The PHP implementation does not handle characters
# being represented in a form which is too long :(
array( $FAIL, "\xf0\x8F\xbf\xbf" ),
array( $FAIL, "\xf8\x87\xbf\xbf" ),
array( $FAIL, "\xfc\x83\xbf\xbf\xbf\xbf" ),
- **/
+ */
# non characters
array( $PASS, "\xef\xbf\xbe" ),
function testBug31100FixSpecialName( $text, $expectedParam ) {
$title = Title::newFromText( $text );
$fixed = $title->fixSpecialName();
- $stuff = explode( '/', $fixed->getDbKey(), 2 );
+ $stuff = explode( '/', $fixed->getDBkey(), 2 );
if ( count( $stuff ) == 2 ) {
$par = $stuff[1];
} else {
'action' => 'login',
'lgname' => 'Apitestnew',
'lgpassword' => $password,
- )
- );
+ ) );
$result = $ret[0];
$this->assertNotInternalType( 'bool', $result );
$this->assertEquals( 'NeedToken', $a );
$token = $result['login']['token'];
- $ret = $this->doApiRequest( array(
- 'action' => 'login',
- 'lgtoken' => $token,
- 'lgname' => 'Apitestnew',
- 'lgpassword' => $password,
- ), $ret[2]
+ $ret = $this->doApiRequest(
+ array(
+ 'action' => 'login',
+ 'lgtoken' => $token,
+ 'lgname' => 'Apitestnew',
+ 'lgpassword' => $password,
+ ),
+ $ret[2]
);
$result = $ret[0];
$this->assertEquals( 'Success', $a );
// log out to destroy the session
- $ret = $this->doApiRequest( array(
- 'action' => 'logout',
- ), $ret[2]
+ $ret = $this->doApiRequest(
+ array(
+ 'action' => 'logout',
+ ),
+ $ret[2]
);
$this->assertEquals( array(), $ret[0] );
}
"action" => "login",
"lgname" => $user->username,
"lgpassword" => "bad",
- )
- );
+ ) );
$result = $ret[0];
$token = $result["login"]["token"];
$ret = $this->doApiRequest(
- array(
+ array(
"action" => "login",
"lgtoken" => $token,
"lgname" => $user->username,
'title' => 'AQBT-All',
'links' => array(
array( 'ns' => 0, 'title' => 'AQBT-Links' ),
- ) ) ) ) );
+ )
+ )
+ ) )
+ );
private static $templates = array(
array( 'prop' => 'templates', 'titles' => 'AQBT-All' ),
'title' => 'AQBT-All',
'templates' => array(
array( 'ns' => 10, 'title' => 'Template:AQBT-T' ),
- ) ) ) ) );
+ )
+ )
+ ) )
+ );
private static $categories = array(
array( 'prop' => 'categories', 'titles' => 'AQBT-All' ),
'title' => 'AQBT-All',
'categories' => array(
array( 'ns' => 14, 'title' => 'Category:AQBT-Cat' ),
- ) ) ) ) );
+ )
+ )
+ ) )
+ );
private static $allpages = array(
array( 'list' => 'allpages', 'apprefix' => 'AQBT-' ),
array( 'pageid' => 2, 'ns' => 0, 'title' => 'AQBT-Categories' ),
array( 'pageid' => 3, 'ns' => 0, 'title' => 'AQBT-Links' ),
array( 'pageid' => 4, 'ns' => 0, 'title' => 'AQBT-Templates' ),
- ) ) );
+ ) )
+ );
private static $alllinks = array(
array( 'list' => 'alllinks', 'alprefix' => 'AQBT-' ),
array( 'ns' => 0, 'title' => 'AQBT-Categories' ),
array( 'ns' => 0, 'title' => 'AQBT-Links' ),
array( 'ns' => 0, 'title' => 'AQBT-Templates' ),
- ) ) );
+ ) )
+ );
private static $alltransclusions = array(
array( 'list' => 'alltransclusions', 'atprefix' => 'AQBT-' ),
array( 'alltransclusions' => array(
array( 'ns' => 10, 'title' => 'Template:AQBT-T' ),
array( 'ns' => 10, 'title' => 'Template:AQBT-T' ),
- ) ) );
+ ) )
+ );
private static $allcategories = array(
array( 'list' => 'allcategories', 'acprefix' => 'AQBT-' ),
array( 'allcategories' => array(
array( '*' => 'AQBT-Cat' ),
- ) ) );
+ ) )
+ );
private static $backlinks = array(
array( 'list' => 'backlinks', 'bltitle' => 'AQBT-Links' ),
array( 'backlinks' => array(
array( 'pageid' => 1, 'ns' => 0, 'title' => 'AQBT-All' ),
- ) ) );
+ ) )
+ );
private static $embeddedin = array(
array( 'list' => 'embeddedin', 'eititle' => 'Template:AQBT-T' ),
array( 'embeddedin' => array(
array( 'pageid' => 1, 'ns' => 0, 'title' => 'AQBT-All' ),
array( 'pageid' => 4, 'ns' => 0, 'title' => 'AQBT-Templates' ),
- ) ) );
+ ) )
+ );
private static $categorymembers = array(
array( 'list' => 'categorymembers', 'cmtitle' => 'Category:AQBT-Cat' ),
array( 'categorymembers' => array(
array( 'pageid' => 1, 'ns' => 0, 'title' => 'AQBT-All' ),
array( 'pageid' => 2, 'ns' => 0, 'title' => 'AQBT-Categories' ),
- ) ) );
+ ) )
+ );
private static $generatorAllpages = array(
array( 'generator' => 'allpages', 'gapprefix' => 'AQBT-' ),
'pageid' => 4,
'ns' => 0,
'title' => 'AQBT-Templates' ),
- ) ) );
+ ) )
+ );
private static $generatorLinks = array(
array( 'generator' => 'links', 'titles' => 'AQBT-Links' ),
'pageid' => 4,
'ns' => 0,
'title' => 'AQBT-Templates' ),
- ) ) );
+ ) )
+ );
private static $generatorLinksPropLinks = array(
array( 'prop' => 'links' ),
array( 'pages' => array(
'1' => array( 'links' => array(
array( 'ns' => 0, 'title' => 'AQBT-Links' ),
- ) ) ) ) );
+ ) )
+ ) )
+ );
private static $generatorLinksPropTemplates = array(
array( 'prop' => 'templates' ),
array( 'ns' => 10, 'title' => 'Template:AQBT-T' ) ) ),
'4' => array( 'templates' => array(
array( 'ns' => 10, 'title' => 'Template:AQBT-T' ) ) ),
- ) ) );
+ ) )
+ );
/**
* Test basic props
*/
public function testA() {
$this->mVerbose = false;
- $mk = function( $g, $p, $gDir ) {
+ $mk = function ( $g, $p, $gDir ) {
return array(
'generator' => 'allpages',
'gapprefix' => 'AQCT73462-',
);
};
// generator + 1 prop + 1 list
- $data = $this->query( $mk(99,99,true), 1, 'g1p', false );
- $this->checkC( $data, $mk(1,1,true), 6, 'g1p-11t' );
- $this->checkC( $data, $mk(2,2,true), 3, 'g1p-22t' );
- $this->checkC( $data, $mk(1,1,false), 6, 'g1p-11f' );
- $this->checkC( $data, $mk(2,2,false), 3, 'g1p-22f' );
+ $data = $this->query( $mk( 99, 99, true ), 1, 'g1p', false );
+ $this->checkC( $data, $mk( 1, 1, true ), 6, 'g1p-11t' );
+ $this->checkC( $data, $mk( 2, 2, true ), 3, 'g1p-22t' );
+ $this->checkC( $data, $mk( 1, 1, false ), 6, 'g1p-11f' );
+ $this->checkC( $data, $mk( 2, 2, false ), 3, 'g1p-22f' );
}
}
*/
public function test1List() {
$this->mVerbose = false;
- $mk = function( $l ) {
+ $mk = function ( $l ) {
return array(
'list' => 'allpages',
'apprefix' => 'AQCT-',
'aplimit' => "$l",
);
};
- $data = $this->query( $mk(99), 1, '1L', false );
+ $data = $this->query( $mk( 99 ), 1, '1L', false );
// 1 list
- $this->checkC( $data, $mk(1), 5, '1L-1' );
- $this->checkC( $data, $mk(2), 3, '1L-2' );
- $this->checkC( $data, $mk(3), 2, '1L-3' );
- $this->checkC( $data, $mk(4), 2, '1L-4' );
- $this->checkC( $data, $mk(5), 1, '1L-5' );
+ $this->checkC( $data, $mk( 1 ), 5, '1L-1' );
+ $this->checkC( $data, $mk( 2 ), 3, '1L-2' );
+ $this->checkC( $data, $mk( 3 ), 2, '1L-3' );
+ $this->checkC( $data, $mk( 4 ), 2, '1L-4' );
+ $this->checkC( $data, $mk( 5 ), 1, '1L-5' );
}
/**
*/
public function test2Lists() {
$this->mVerbose = false;
- $mk = function( $l1, $l2 ) {
+ $mk = function ( $l1, $l2 ) {
return array(
'list' => 'allpages|alltransclusions',
'apprefix' => 'AQCT-',
);
};
// 2 lists
- $data = $this->query( $mk(99,99), 1, '2L', false );
- $this->checkC( $data, $mk(1,1), 5, '2L-11' );
- $this->checkC( $data, $mk(2,2), 3, '2L-22' );
- $this->checkC( $data, $mk(3,3), 2, '2L-33' );
- $this->checkC( $data, $mk(4,4), 2, '2L-44' );
- $this->checkC( $data, $mk(5,5), 1, '2L-55' );
+ $data = $this->query( $mk( 99, 99 ), 1, '2L', false );
+ $this->checkC( $data, $mk( 1, 1 ), 5, '2L-11' );
+ $this->checkC( $data, $mk( 2, 2 ), 3, '2L-22' );
+ $this->checkC( $data, $mk( 3, 3 ), 2, '2L-33' );
+ $this->checkC( $data, $mk( 4, 4 ), 2, '2L-44' );
+ $this->checkC( $data, $mk( 5, 5 ), 1, '2L-55' );
}
/**
*/
public function testGen1Prop() {
$this->mVerbose = false;
- $mk = function( $g, $p ) {
+ $mk = function ( $g, $p ) {
return array(
'generator' => 'allpages',
'gapprefix' => 'AQCT-',
);
};
// generator + 1 prop
- $data = $this->query( $mk(99,99), 1, 'G1P', false );
- $this->checkC( $data, $mk(1,1), 11, 'G1P-11' );
- $this->checkC( $data, $mk(2,2), 6, 'G1P-22' );
- $this->checkC( $data, $mk(3,3), 4, 'G1P-33' );
- $this->checkC( $data, $mk(4,4), 3, 'G1P-44' );
- $this->checkC( $data, $mk(5,5), 2, 'G1P-55' );
+ $data = $this->query( $mk( 99, 99 ), 1, 'G1P', false );
+ $this->checkC( $data, $mk( 1, 1 ), 11, 'G1P-11' );
+ $this->checkC( $data, $mk( 2, 2 ), 6, 'G1P-22' );
+ $this->checkC( $data, $mk( 3, 3 ), 4, 'G1P-33' );
+ $this->checkC( $data, $mk( 4, 4 ), 3, 'G1P-44' );
+ $this->checkC( $data, $mk( 5, 5 ), 2, 'G1P-55' );
}
/**
*/
public function testGen2Prop() {
$this->mVerbose = false;
- $mk = function( $g, $p1, $p2 ) {
+ $mk = function ( $g, $p1, $p2 ) {
return array(
'generator' => 'allpages',
'gapprefix' => 'AQCT-',
);
};
// generator + 2 props
- $data = $this->query( $mk(99,99,99), 1, 'G2P', false );
- $this->checkC( $data, $mk(1,1,1), 16, 'G2P-111' );
- $this->checkC( $data, $mk(2,2,2), 9, 'G2P-222' );
- $this->checkC( $data, $mk(3,3,3), 6, 'G2P-333' );
- $this->checkC( $data, $mk(4,4,4), 4, 'G2P-444' );
- $this->checkC( $data, $mk(5,5,5), 2, 'G2P-555' );
- $this->checkC( $data, $mk(5,1,1), 10, 'G2P-511' );
- $this->checkC( $data, $mk(4,2,2), 7, 'G2P-422' );
- $this->checkC( $data, $mk(2,3,3), 7, 'G2P-233' );
- $this->checkC( $data, $mk(2,4,4), 5, 'G2P-244' );
- $this->checkC( $data, $mk(1,5,5), 5, 'G2P-155' );
+ $data = $this->query( $mk( 99, 99, 99 ), 1, 'G2P', false );
+ $this->checkC( $data, $mk( 1, 1, 1 ), 16, 'G2P-111' );
+ $this->checkC( $data, $mk( 2, 2, 2 ), 9, 'G2P-222' );
+ $this->checkC( $data, $mk( 3, 3, 3 ), 6, 'G2P-333' );
+ $this->checkC( $data, $mk( 4, 4, 4 ), 4, 'G2P-444' );
+ $this->checkC( $data, $mk( 5, 5, 5 ), 2, 'G2P-555' );
+ $this->checkC( $data, $mk( 5, 1, 1 ), 10, 'G2P-511' );
+ $this->checkC( $data, $mk( 4, 2, 2 ), 7, 'G2P-422' );
+ $this->checkC( $data, $mk( 2, 3, 3 ), 7, 'G2P-233' );
+ $this->checkC( $data, $mk( 2, 4, 4 ), 5, 'G2P-244' );
+ $this->checkC( $data, $mk( 1, 5, 5 ), 5, 'G2P-155' );
}
/**
*/
public function testGen1Prop1List() {
$this->mVerbose = false;
- $mk = function( $g, $p, $l ) {
+ $mk = function ( $g, $p, $l ) {
return array(
'generator' => 'allpages',
'gapprefix' => 'AQCT-',
);
};
// generator + 1 prop + 1 list
- $data = $this->query( $mk(99,99,99), 1, 'G1P1L', false );
- $this->checkC( $data, $mk(1,1,1), 11, 'G1P1L-111' );
- $this->checkC( $data, $mk(2,2,2), 6, 'G1P1L-222' );
- $this->checkC( $data, $mk(3,3,3), 4, 'G1P1L-333' );
- $this->checkC( $data, $mk(4,4,4), 3, 'G1P1L-444' );
- $this->checkC( $data, $mk(5,5,5), 2, 'G1P1L-555' );
- $this->checkC( $data, $mk(5,5,1), 4, 'G1P1L-551' );
- $this->checkC( $data, $mk(5,5,2), 2, 'G1P1L-552' );
+ $data = $this->query( $mk( 99, 99, 99 ), 1, 'G1P1L', false );
+ $this->checkC( $data, $mk( 1, 1, 1 ), 11, 'G1P1L-111' );
+ $this->checkC( $data, $mk( 2, 2, 2 ), 6, 'G1P1L-222' );
+ $this->checkC( $data, $mk( 3, 3, 3 ), 4, 'G1P1L-333' );
+ $this->checkC( $data, $mk( 4, 4, 4 ), 3, 'G1P1L-444' );
+ $this->checkC( $data, $mk( 5, 5, 5 ), 2, 'G1P1L-555' );
+ $this->checkC( $data, $mk( 5, 5, 1 ), 4, 'G1P1L-551' );
+ $this->checkC( $data, $mk( 5, 5, 2 ), 2, 'G1P1L-552' );
}
/**
* Test smart continue - generator=allpages, prop=links|templates,
- * list=alllinks|alltransclusions, meta=siteinfo
+ * list=alllinks|alltransclusions, meta=siteinfo
* @medium
*/
public function testGen2Prop2List1Meta() {
$this->mVerbose = false;
- $mk = function( $g, $p1, $p2, $l1, $l2 ) {
+ $mk = function ( $g, $p1, $p2, $l1, $l2 ) {
return array(
'generator' => 'allpages',
'gapprefix' => 'AQCT-',
);
};
// generator + 1 prop + 1 list
- $data = $this->query( $mk(99,99,99,99,99), 1, 'G2P2L1M', false );
- $this->checkC( $data, $mk(1,1,1,1,1), 16, 'G2P2L1M-11111' );
- $this->checkC( $data, $mk(2,2,2,2,2), 9, 'G2P2L1M-22222' );
- $this->checkC( $data, $mk(3,3,3,3,3), 6, 'G2P2L1M-33333' );
- $this->checkC( $data, $mk(4,4,4,4,4), 4, 'G2P2L1M-44444' );
- $this->checkC( $data, $mk(5,5,5,5,5), 2, 'G2P2L1M-55555' );
- $this->checkC( $data, $mk(5,5,5,1,1), 4, 'G2P2L1M-55511' );
- $this->checkC( $data, $mk(5,5,5,2,2), 2, 'G2P2L1M-55522' );
- $this->checkC( $data, $mk(5,1,1,5,5), 10, 'G2P2L1M-51155' );
- $this->checkC( $data, $mk(5,2,2,5,5), 5, 'G2P2L1M-52255' );
+ $data = $this->query( $mk( 99, 99, 99, 99, 99 ), 1, 'G2P2L1M', false );
+ $this->checkC( $data, $mk( 1, 1, 1, 1, 1 ), 16, 'G2P2L1M-11111' );
+ $this->checkC( $data, $mk( 2, 2, 2, 2, 2 ), 9, 'G2P2L1M-22222' );
+ $this->checkC( $data, $mk( 3, 3, 3, 3, 3 ), 6, 'G2P2L1M-33333' );
+ $this->checkC( $data, $mk( 4, 4, 4, 4, 4 ), 4, 'G2P2L1M-44444' );
+ $this->checkC( $data, $mk( 5, 5, 5, 5, 5 ), 2, 'G2P2L1M-55555' );
+ $this->checkC( $data, $mk( 5, 5, 5, 1, 1 ), 4, 'G2P2L1M-55511' );
+ $this->checkC( $data, $mk( 5, 5, 5, 2, 2 ), 2, 'G2P2L1M-55522' );
+ $this->checkC( $data, $mk( 5, 1, 1, 5, 5 ), 10, 'G2P2L1M-51155' );
+ $this->checkC( $data, $mk( 5, 2, 2, 5, 5 ), 5, 'G2P2L1M-52255' );
}
/**
*/
public function testSameGenAndProp() {
$this->mVerbose = false;
- $mk = function( $g, $gDir, $p, $pDir ) {
+ $mk = function ( $g, $gDir, $p, $pDir ) {
return array(
'titles' => 'AQCT-1',
'generator' => 'templates',
);
};
// generator + 1 prop
- $data = $this->query( $mk(99,true,99,true), 1, 'G=P', false );
+ $data = $this->query( $mk( 99, true, 99, true ), 1, 'G=P', false );
- $this->checkC( $data, $mk(1,true,1,true), 4, 'G=P-1t1t' );
- $this->checkC( $data, $mk(2,true,2,true), 2, 'G=P-2t2t' );
- $this->checkC( $data, $mk(3,true,3,true), 2, 'G=P-3t3t' );
- $this->checkC( $data, $mk(1,true,3,true), 4, 'G=P-1t3t' );
- $this->checkC( $data, $mk(3,true,1,true), 2, 'G=P-3t1t' );
+ $this->checkC( $data, $mk( 1, true, 1, true ), 4, 'G=P-1t1t' );
+ $this->checkC( $data, $mk( 2, true, 2, true ), 2, 'G=P-2t2t' );
+ $this->checkC( $data, $mk( 3, true, 3, true ), 2, 'G=P-3t3t' );
+ $this->checkC( $data, $mk( 1, true, 3, true ), 4, 'G=P-1t3t' );
+ $this->checkC( $data, $mk( 3, true, 1, true ), 2, 'G=P-3t1t' );
- $this->checkC( $data, $mk(1,true,1,false), 4, 'G=P-1t1f' );
- $this->checkC( $data, $mk(2,true,2,false), 2, 'G=P-2t2f' );
- $this->checkC( $data, $mk(3,true,3,false), 2, 'G=P-3t3f' );
- $this->checkC( $data, $mk(1,true,3,false), 4, 'G=P-1t3f' );
- $this->checkC( $data, $mk(3,true,1,false), 2, 'G=P-3t1f' );
+ $this->checkC( $data, $mk( 1, true, 1, false ), 4, 'G=P-1t1f' );
+ $this->checkC( $data, $mk( 2, true, 2, false ), 2, 'G=P-2t2f' );
+ $this->checkC( $data, $mk( 3, true, 3, false ), 2, 'G=P-3t3f' );
+ $this->checkC( $data, $mk( 1, true, 3, false ), 4, 'G=P-1t3f' );
+ $this->checkC( $data, $mk( 3, true, 1, false ), 2, 'G=P-3t1f' );
- $this->checkC( $data, $mk(1,false,1,true), 4, 'G=P-1f1t' );
- $this->checkC( $data, $mk(2,false,2,true), 2, 'G=P-2f2t' );
- $this->checkC( $data, $mk(3,false,3,true), 2, 'G=P-3f3t' );
- $this->checkC( $data, $mk(1,false,3,true), 4, 'G=P-1f3t' );
- $this->checkC( $data, $mk(3,false,1,true), 2, 'G=P-3f1t' );
+ $this->checkC( $data, $mk( 1, false, 1, true ), 4, 'G=P-1f1t' );
+ $this->checkC( $data, $mk( 2, false, 2, true ), 2, 'G=P-2f2t' );
+ $this->checkC( $data, $mk( 3, false, 3, true ), 2, 'G=P-3f3t' );
+ $this->checkC( $data, $mk( 1, false, 3, true ), 4, 'G=P-1f3t' );
+ $this->checkC( $data, $mk( 3, false, 1, true ), 2, 'G=P-3f1t' );
- $this->checkC( $data, $mk(1,false,1,false), 4, 'G=P-1f1f' );
- $this->checkC( $data, $mk(2,false,2,false), 2, 'G=P-2f2f' );
- $this->checkC( $data, $mk(3,false,3,false), 2, 'G=P-3f3f' );
- $this->checkC( $data, $mk(1,false,3,false), 4, 'G=P-1f3f' );
- $this->checkC( $data, $mk(3,false,1,false), 2, 'G=P-3f1f' );
+ $this->checkC( $data, $mk( 1, false, 1, false ), 4, 'G=P-1f1f' );
+ $this->checkC( $data, $mk( 2, false, 2, false ), 2, 'G=P-2f2f' );
+ $this->checkC( $data, $mk( 3, false, 3, false ), 2, 'G=P-3f3f' );
+ $this->checkC( $data, $mk( 1, false, 3, false ), 4, 'G=P-1f3f' );
+ $this->checkC( $data, $mk( 3, false, 1, false ), 2, 'G=P-3f1f' );
}
/**
*/
public function testSameGenList() {
$this->mVerbose = false;
- $mk = function( $g, $gDir, $l, $pDir ) {
+ $mk = function ( $g, $gDir, $l, $pDir ) {
return array(
'generator' => 'allpages',
'gapprefix' => 'AQCT-',
);
};
// generator + 1 list
- $data = $this->query( $mk(99,true,99,true), 1, 'G=L', false );
+ $data = $this->query( $mk( 99, true, 99, true ), 1, 'G=L', false );
- $this->checkC( $data, $mk(1,true,1,true), 5, 'G=L-1t1t' );
- $this->checkC( $data, $mk(2,true,2,true), 3, 'G=L-2t2t' );
- $this->checkC( $data, $mk(3,true,3,true), 2, 'G=L-3t3t' );
- $this->checkC( $data, $mk(1,true,3,true), 5, 'G=L-1t3t' );
- $this->checkC( $data, $mk(3,true,1,true), 5, 'G=L-3t1t' );
- $this->checkC( $data, $mk(1,true,1,false), 5, 'G=L-1t1f' );
- $this->checkC( $data, $mk(2,true,2,false), 3, 'G=L-2t2f' );
- $this->checkC( $data, $mk(3,true,3,false), 2, 'G=L-3t3f' );
- $this->checkC( $data, $mk(1,true,3,false), 5, 'G=L-1t3f' );
- $this->checkC( $data, $mk(3,true,1,false), 5, 'G=L-3t1f' );
- $this->checkC( $data, $mk(1,false,1,true), 5, 'G=L-1f1t' );
- $this->checkC( $data, $mk(2,false,2,true), 3, 'G=L-2f2t' );
- $this->checkC( $data, $mk(3,false,3,true), 2, 'G=L-3f3t' );
- $this->checkC( $data, $mk(1,false,3,true), 5, 'G=L-1f3t' );
- $this->checkC( $data, $mk(3,false,1,true), 5, 'G=L-3f1t' );
- $this->checkC( $data, $mk(1,false,1,false), 5, 'G=L-1f1f' );
- $this->checkC( $data, $mk(2,false,2,false), 3, 'G=L-2f2f' );
- $this->checkC( $data, $mk(3,false,3,false), 2, 'G=L-3f3f' );
- $this->checkC( $data, $mk(1,false,3,false), 5, 'G=L-1f3f' );
- $this->checkC( $data, $mk(3,false,1,false), 5, 'G=L-3f1f' );
+ $this->checkC( $data, $mk( 1, true, 1, true ), 5, 'G=L-1t1t' );
+ $this->checkC( $data, $mk( 2, true, 2, true ), 3, 'G=L-2t2t' );
+ $this->checkC( $data, $mk( 3, true, 3, true ), 2, 'G=L-3t3t' );
+ $this->checkC( $data, $mk( 1, true, 3, true ), 5, 'G=L-1t3t' );
+ $this->checkC( $data, $mk( 3, true, 1, true ), 5, 'G=L-3t1t' );
+ $this->checkC( $data, $mk( 1, true, 1, false ), 5, 'G=L-1t1f' );
+ $this->checkC( $data, $mk( 2, true, 2, false ), 3, 'G=L-2t2f' );
+ $this->checkC( $data, $mk( 3, true, 3, false ), 2, 'G=L-3t3f' );
+ $this->checkC( $data, $mk( 1, true, 3, false ), 5, 'G=L-1t3f' );
+ $this->checkC( $data, $mk( 3, true, 1, false ), 5, 'G=L-3t1f' );
+ $this->checkC( $data, $mk( 1, false, 1, true ), 5, 'G=L-1f1t' );
+ $this->checkC( $data, $mk( 2, false, 2, true ), 3, 'G=L-2f2t' );
+ $this->checkC( $data, $mk( 3, false, 3, true ), 2, 'G=L-3f3t' );
+ $this->checkC( $data, $mk( 1, false, 3, true ), 5, 'G=L-1f3t' );
+ $this->checkC( $data, $mk( 3, false, 1, true ), 5, 'G=L-3f1t' );
+ $this->checkC( $data, $mk( 1, false, 1, false ), 5, 'G=L-1f1f' );
+ $this->checkC( $data, $mk( 2, false, 2, false ), 3, 'G=L-2f2f' );
+ $this->checkC( $data, $mk( 3, false, 3, false ), 2, 'G=L-3f3f' );
+ $this->checkC( $data, $mk( 1, false, 3, false ), 5, 'G=L-1f3f' );
+ $this->checkC( $data, $mk( 3, false, 1, false ), 5, 'G=L-3f1f' );
}
}
/**
* Run query() and compare against expected values
*/
- protected function checkC( $expected, $params, $expectedCount, $id, $continue = true ) {
+ protected function checkC( $expected, $params, $expectedCount, $id, $continue = true ) {
$result = $this->query( $params, $expectedCount, $id, $continue );
$this->assertResult( $expected, $result, $id );
}
*/
protected function query( $params, $expectedCount, $id, $useContinue = true ) {
if ( isset( $params['action'] ) ) {
- $this->assertEquals( 'query', $params['action'], 'Invalid query action');
+ $this->assertEquals( 'query', $params['action'], 'Invalid query action' );
} else {
$params['action'] = 'query';
}
$continue = array();
do {
$request = array_merge( $params, $continue );
- uksort( $request, function( $a, $b ) {
+ uksort( $request, function ( $a, $b ) {
// put 'continue' params at the end - lazy method
$a = strpos( $a, 'continue' ) !== false ? 'zzz ' . $a : $a;
$b = strpos( $b, 'continue' ) !== false ? 'zzz ' . $b : $b;
//$reqStr = str_replace( '&', ' & ', $reqStr );
$this->assertLessThan( $expectedCount, $count, "$id more data: $reqStr" );
if ( $this->mVerbose ) {
- print ("$id (#$count): $reqStr\n");
+ print ( "$id (#$count): $reqStr\n" );
}
try {
$data = $this->doApiRequest( $request );
} elseif ( !$useContinue ) {
$this->assertFalse( 'Non-smart query must be requested all at once' );
}
- } while( true );
+ } while ( true );
}
private function printResult( $data ) {
$q = $data['query'];
$print = array();
- if (isset($q['pages'])) {
- foreach ($q['pages'] as $p) {
+ if ( isset( $q['pages'] ) ) {
+ foreach ( $q['pages'] as $p ) {
$m = $p['title'];
- if (isset($p['links'])) {
- $m .= '/[' . implode(',', array_map(
- function ($v) {
+ if ( isset( $p['links'] ) ) {
+ $m .= '/[' . implode( ',', array_map(
+ function ( $v ) {
return $v['title'];
},
- $p['links'])) . ']';
+ $p['links'] ) ) . ']';
}
- if (isset($p['categories'])) {
- $m .= '/(' . implode(',', array_map(
- function ($v) {
- return str_replace('Category:', '', $v['title']);
+ if ( isset( $p['categories'] ) ) {
+ $m .= '/(' . implode( ',', array_map(
+ function ( $v ) {
+ return str_replace( 'Category:', '', $v['title'] );
},
- $p['categories'])) . ')';
+ $p['categories'] ) ) . ')';
}
$print[] = $m;
}
}
- if (isset($q['allcategories'])) {
- $print[] = '*Cats/(' . implode(',', array_map(
- function ($v) { return $v['*']; },
- $q['allcategories'])) . ')';
+ if ( isset( $q['allcategories'] ) ) {
+ $print[] = '*Cats/(' . implode( ',', array_map(
+ function ( $v ) {
+ return $v['*'];
+ },
+ $q['allcategories'] ) ) . ')';
}
self::GetItems( $q, 'allpages', 'Pages', $print );
self::GetItems( $q, 'alllinks', 'Links', $print );
self::GetItems( $q, 'alltransclusions', 'Trnscl', $print );
- print(' ' . implode(' ', $print) . "\n");
+ print( ' ' . implode( ' ', $print ) . "\n" );
}
private static function GetItems( $q, $moduleName, $name, &$print ) {
- if (isset($q[$moduleName])) {
- $print[] = "*$name/[" . implode(',',
- array_map( function ($v) { return $v['title']; },
- $q[$moduleName])) . ']';
+ if ( isset( $q[$moduleName] ) ) {
+ $print[] = "*$name/[" . implode( ',',
+ array_map( function ( $v ) {
+ return $v['title'];
+ },
+ $q[$moduleName] ) ) . ']';
}
}
$this->assertEquals( $results, $newResult, 'Repeated result must be the same as before' );
} else {
$sort = null;
- foreach( $newResult as $key => $value ) {
+ foreach ( $newResult as $key => $value ) {
if ( !$numericIds && $sort === null ) {
if ( !is_array( $value ) ) {
$sort = false;
} elseif ( array_key_exists( 'title', $value ) ) {
- $sort = function( $a, $b ) {
+ $sort = function ( $a, $b ) {
return strcmp( $a['title'], $b['title'] );
};
} else {
protected function merge( /*...*/ ) {
$request = array();
$expected = array();
- foreach ( func_get_args() as $v ) {
+ foreach ( func_get_args() as $v ) {
list( $req, $exp ) = $this->validateRequestExpectedPair( $v );
$request = array_merge_recursive( $request, $req );
$this->mergeExpected( $expected, $exp );
*/
private function validateRequestExpectedPair( $v ) {
$this->assertType( 'array', $v, self::PARAM_ASSERT );
- $this->assertEquals( 2, count($v), self::PARAM_ASSERT );
+ $this->assertEquals( 2, count( $v ), self::PARAM_ASSERT );
$this->assertArrayHasKey( 0, $v, self::PARAM_ASSERT );
$this->assertArrayHasKey( 1, $v, self::PARAM_ASSERT );
$this->assertType( 'array', $v[0], self::PARAM_ASSERT );
private function mergeExpected( &$all, $item ) {
foreach ( $item as $k => $v ) {
if ( array_key_exists( $k, $all ) ) {
- if ( is_array ( $all[$k] ) ) {
+ if ( is_array( $all[$k] ) ) {
$this->mergeExpected( $all[$k], $v );
} else {
$this->assertEquals( $all[$k], $v );
+++ /dev/null
-<?php
-
-/**
- * @group Database
- * @group Cache
- */
-class MessageCacheTest extends MediaWikiLangTestCase {
-
- protected function setUp() {
- parent::setUp();
- $this->configureLanguages();
- MessageCache::singleton()->enable();
- }
-
- /**
- * Helper function -- setup site language for testing
- */
- protected function configureLanguages() {
- // for the test, we need the content language to be anything but English,
- // let's choose e.g. German (de)
- $langCode = 'de';
- $langObj = Language::factory( $langCode );
-
- $this->setMwGlobals( array(
- 'wgLanguageCode' => $langCode,
- 'wgLang' => $langObj,
- 'wgContLang' => $langObj,
- ) );
- }
-
- function addDBData() {
- $this->configureLanguages();
-
- // Set up messages and fallbacks ab -> ru -> de -> en
- $this->makePage( 'FallbackLanguageTest-Full', 'ab' );
- $this->makePage( 'FallbackLanguageTest-Full', 'ru' );
- $this->makePage( 'FallbackLanguageTest-Full', 'de' );
- $this->makePage( 'FallbackLanguageTest-Full', 'en' );
-
- // Fallbacks where ab does not exist
- $this->makePage( 'FallbackLanguageTest-Partial', 'ru' );
- $this->makePage( 'FallbackLanguageTest-Partial', 'de' );
- $this->makePage( 'FallbackLanguageTest-Partial', 'en' );
-
- // Fallback to the content language
- $this->makePage( 'FallbackLanguageTest-ContLang', 'de' );
- $this->makePage( 'FallbackLanguageTest-ContLang', 'en' );
-
- // Fallback to english
- $this->makePage( 'FallbackLanguageTest-English', 'en' );
-
- // Full key tests -- always want russian
- $this->makePage( 'MessageCacheTest-FullKeyTest', 'ab' );
- $this->makePage( 'MessageCacheTest-FullKeyTest', 'ru' );
- }
-
- /**
- * Helper function for addDBData -- adds a simple page to the database
- *
- * @param string $title Title of page to be created
- * @param string $lang Language and content of the created page
- */
- protected function makePage( $title, $lang ) {
- global $wgContLang;
-
- $title = Title::newFromText(
- ($lang == $wgContLang->getCode()) ? $title : "$title/$lang",
- NS_MEDIAWIKI
- );
- $wikiPage = new WikiPage( $title );
- $content = ContentHandler::makeContent( $lang, $title );
- $wikiPage->doEditContent( $content, "$lang translation test case" );
- }
-
- /**
- * Test message fallbacks, bug #1495
- *
- * @dataProvider provideMessagesForFallback
- */
- function testMessageFallbacks( $message, $lang, $expectedContent ) {
- $result = MessageCache::singleton()->get( $message, true, $lang );
- $this->assertEquals( $expectedContent, $result, "Message fallback failed." );
- }
-
- public static function provideMessagesForFallback() {
- return array(
- array( 'FallbackLanguageTest-Full', 'ab', 'ab' ),
- array( 'FallbackLanguageTest-Partial', 'ab', 'ru' ),
- array( 'FallbackLanguageTest-ContLang', 'ab', 'de' ),
- array( 'FallbackLanguageTest-English', 'ab', 'en' ),
- array( 'FallbackLanguageTest-None', 'ab', false ),
- );
- }
-
- /**
- * There's a fallback case where the message key is given as fully qualified -- this
- * should ignore the passed $lang and use the language from the key
- *
- * @dataProvider provideMessagesForFullKeys
- */
- function testFullKeyBehaviour( $message, $lang, $expectedContent ) {
- $result = MessageCache::singleton()->get( $message, true, $lang, true );
- $this->assertEquals( $expectedContent, $result, "Full key message fallback failed." );
- }
-
- public static function provideMessagesForFullKeys() {
- return array(
- array( 'MessageCacheTest-FullKeyTest/ru', 'ru', 'ru' ),
- array( 'MessageCacheTest-FullKeyTest/ru', 'ab', 'ru' ),
- array( 'MessageCacheTest-FullKeyTest/ru/foo', 'ru', false ),
- );
- }
-
-}
} catch ( MWException $ex ) {
if ( !$shouldFail ) {
$this->fail( "ContentHandler::makeContent failed unexpectedly: " . $ex->getMessage() );
- }
- else {
+ } else {
// dummy, so we don't get the "test did not perform any assertions" message.
$this->assertTrue( true );
}
}
} else {
$this->singleBackend = new FSFileBackend( array(
- 'name' => 'localtesting',
+ 'name' => 'localtesting',
'lockManager' => 'fsLockManager',
#'parallelize' => 'implicit',
'containerPaths' => array(
) );
}
$this->multiBackend = new FileBackendMultiWrite( array(
- 'name' => 'localtesting',
+ 'name' => 'localtesting',
'lockManager' => 'fsLockManager',
'parallelize' => 'implicit',
- 'backends' => array(
+ 'backends' => array(
array(
- 'name' => 'localmultitesting1',
- 'class' => 'FSFileBackend',
- 'lockManager' => 'nullLockManager',
+ 'name' => 'localmultitesting1',
+ 'class' => 'FSFileBackend',
+ 'lockManager' => 'nullLockManager',
'containerPaths' => array(
'unittest-cont1' => "{$tmpPrefix}-localtestingmulti1-cont1",
'unittest-cont2' => "{$tmpPrefix}-localtestingmulti1-cont2" ),
'isMultiMaster' => false
),
array(
- 'name' => 'localmultitesting2',
- 'class' => 'FSFileBackend',
- 'lockManager' => 'nullLockManager',
+ 'name' => 'localmultitesting2',
+ 'class' => 'FSFileBackend',
+ 'lockManager' => 'nullLockManager',
'containerPaths' => array(
'unittest-cont1' => "{$tmpPrefix}-localtestingmulti2-cont1",
'unittest-cont2' => "{$tmpPrefix}-localtestingmulti2-cont2" ),
$status = $this->prepare( array( 'dir' => dirname( $path ) ) );
$this->assertGoodStatus( $status,
"Preparing $path succeeded without warnings ($backendName)." );
- $createOps[] = array( 'op' => 'create', 'dst' => $path, 'content' => mt_rand(0, 50000) );
+ $createOps[] = array( 'op' => 'create', 'dst' => $path, 'content' => mt_rand( 0, 50000 ) );
$copyOps[] = array( 'op' => 'copy', 'src' => $path, 'dst' => "$path-2" );
$moveOps[] = array( 'op' => 'move', 'src' => "$path-2", 'dst' => "$path-3" );
$purgeOps[] = array( 'op' => 'delete', 'src' => $path );
foreach ( $srcs as $i => $source ) {
$this->prepare( array( 'dir' => dirname( $source ) ) );
$ops[] = array(
- 'op' => 'create', // operation
- 'dst' => $source, // source
+ 'op' => 'create', // operation
+ 'dst' => $source, // source
'content' => $srcsContent[$i]
);
$expContent .= $srcsContent[$i];
}
$iter = $this->backend->getFileList( array( 'dir' => "$base/unittest-cont1/not/exists" ) );
- foreach ( $iter as $iter ) {} // no errors
+ foreach ( $iter as $iter ) {
+ // no errors
+ }
}
public function testGetDirectoryList() {
}
$iter = $this->backend->getDirectoryList( array( 'dir' => "$base/unittest-cont1/not/exists" ) );
- foreach ( $iter as $file ) {} // no errors
+ foreach ( $iter as $file ) {
+ // no errors
+ }
+
$items = is_array( $iter ) ? $iter : iterator_to_array( $iter );
$this->assertEquals( array(), $items, "Directory listing is empty." );
"subdir2/subdir/sub/120-px-file.txt",
);
- for ( $i=0; $i<25; $i++ ) {
+ for ( $i = 0; $i < 25; $i++ ) {
$status = $this->backend->lockFiles( $paths, LockManager::LOCK_EX );
$this->assertEquals( print_r( array(), true ), print_r( $status->errors, true ),
"Locking of files succeeded ($backendName) ($i)." );
foreach ( $variants as $q => $settings ) {
try {
$this->$q = JobQueue::factory( $settings + $baseConfig );
- if ( ! ( $this->$q instanceof JobQueueDB ) ) {
+ if ( !( $this->$q instanceof JobQueueDB ) ) {
$this->$q->setTestingPrefix( 'unittests-' . wfRandomString( 32 ) );
}
} catch ( MWException $e ) {}; // unsupported? (@TODO: what if it was another error?)
protected function tearDown() {
parent::tearDown();
- foreach ( array(
- 'queueRand', 'queueRandTTL', 'queueTimestamp', 'queueTimestampTTL',
- 'queueFifo', 'queueFifoTTL'
- ) as $q ) {
+ foreach (
+ array(
+ 'queueRand', 'queueRandTTL', 'queueTimestamp', 'queueTimestampTTL',
+ 'queueFifo', 'queueFifoTTL'
+ ) as $q
+ ) {
if ( $this->$q ) {
do {
$job = $this->$q->pop();
$this->markTestSkipped( $desc );
}
-
$this->assertTrue( $queue->isEmpty(), "Queue is empty ($desc)" );
$queue->flushCaches();
$this->assertEquals( 0, $queue->getSize(), "Queue is empty ($desc)" );
$this->assertEquals( 0, $queue->getAcquiredCount(), "Queue is empty ($desc)" );
- $this->assertTrue( $queue->batchPush(
- array( $this->newDedupedJob(), $this->newDedupedJob(), $this->newDedupedJob() ) ),
+ $this->assertTrue(
+ $queue->batchPush(
+ array( $this->newDedupedJob(), $this->newDedupedJob(), $this->newDedupedJob() )
+ ),
"Push worked ($desc)" );
$this->assertFalse( $queue->isEmpty(), "Queue is not empty ($desc)" );
$this->assertEquals( 1, $queue->getSize(), "Queue size is correct ($desc)" );
$this->assertEquals( 0, $queue->getAcquiredCount(), "No jobs active ($desc)" );
- $this->assertTrue( $queue->batchPush(
- array( $this->newDedupedJob(), $this->newDedupedJob(), $this->newDedupedJob() ) ),
- "Push worked ($desc)" );
+ $this->assertTrue(
+ $queue->batchPush(
+ array( $this->newDedupedJob(), $this->newDedupedJob(), $this->newDedupedJob() )
+ ),
+ "Push worked ($desc)"
+ );
$this->assertFalse( $queue->isEmpty(), "Queue is not empty ($desc)" );
$this->markTestSkipped( $desc );
}
-
$this->assertTrue( $queue->isEmpty(), "Queue is empty ($desc)" );
$queue->flushCaches();
$this->markTestSkipped( $desc );
}
-
$this->assertTrue( $queue->isEmpty(), "Queue is empty ($desc)" );
$queue->flushCaches();
--- /dev/null
+<?php
+
+class FormatJsonTest extends MediaWikiTestCase {
+
+ public function testEncoderPrettyPrinting() {
+ $obj = array(
+ 'emptyObject' => new stdClass,
+ 'emptyArray' => array(),
+ 'string' => 'foobar\\',
+ 'filledArray' => array(
+ array(
+ 123,
+ 456,
+ ),
+ '"7":["8",{"9":"10"}]',
+ ),
+ );
+
+ // 4 space indent, no trailing whitespace, no trailing linefeed
+ $json = '{
+ "emptyObject": {
+
+ },
+ "emptyArray": [
+
+ ],
+ "string": "foobar\\\\",
+ "filledArray": [
+ [
+ 123,
+ 456
+ ],
+ "\"7\":[\"8\",{\"9\":\"10\"}]"
+ ]
+}';
+
+ $json = str_replace( "\r", '', $json ); // Windows compat
+ $this->assertSame( $json, FormatJson::encode( $obj, true ) );
+ }
+
+ public static function provideEncodeDefault() {
+ return self::getEncodeTestCases( array() );
+ }
+
+ /**
+ * @dataProvider provideEncodeDefault
+ */
+ public function testEncodeDefault( $from, $to ) {
+ $this->assertSame( $to, FormatJson::encode( $from ) );
+ }
+
+ public static function provideEncodeUtf8() {
+ return self::getEncodeTestCases( array( 'unicode' ) );
+ }
+
+ /**
+ * @dataProvider provideEncodeUtf8
+ */
+ public function testEncodeUtf8( $from, $to ) {
+ $this->assertSame( $to, FormatJson::encode( $from, false, FormatJson::UTF8_OK ) );
+ }
+
+ public static function provideEncodeXmlMeta() {
+ return self::getEncodeTestCases( array( 'xmlmeta' ) );
+ }
+
+ /**
+ * @dataProvider provideEncodeXmlMeta
+ */
+ public function testEncodeXmlMeta( $from, $to ) {
+ $this->assertSame( $to, FormatJson::encode( $from, false, FormatJson::XMLMETA_OK ) );
+ }
+
+ public static function provideEncodeAllOk() {
+ return self::getEncodeTestCases( array( 'unicode', 'xmlmeta' ) );
+ }
+
+ /**
+ * @dataProvider provideEncodeAllOk
+ */
+ public function testEncodeAllOk( $from, $to ) {
+ $this->assertSame( $to, FormatJson::encode( $from, false, FormatJson::ALL_OK ) );
+ }
+
+ public function testEncodePhpBug46944() {
+ $this->assertNotEquals(
+ '\ud840\udc00',
+ strtolower( FormatJson::encode( "\xf0\xa0\x80\x80" ) ),
+ 'Test encoding an broken json_encode character (U+20000)'
+ );
+
+ }
+
+ public function testDecodeReturnType() {
+ $this->assertInternalType(
+ 'object',
+ FormatJson::decode( '{"Name": "Cheeso", "Rank": 7}' ),
+ 'Default to object'
+ );
+
+ $this->assertInternalType(
+ 'array',
+ FormatJson::decode( '{"Name": "Cheeso", "Rank": 7}', true ),
+ 'Optional array'
+ );
+ }
+
+ /**
+ * Generate a set of test cases for a particular combination of encoder options.
+ *
+ * @param array $unescapedGroups List of character groups to leave unescaped
+ * @return array: Arrays of unencoded strings and corresponding encoded strings
+ */
+ private static function getEncodeTestCases( array $unescapedGroups ) {
+ $groups = array(
+ 'always' => array(
+ // Forward slash (always unescaped)
+ '/' => '/',
+
+ // Control characters
+ "\0" => '\u0000',
+ "\x08" => '\b',
+ "\t" => '\t',
+ "\n" => '\n',
+ "\r" => '\r',
+ "\f" => '\f',
+ "\x1f" => '\u001f', // representative example
+
+ // Double quotes
+ '"' => '\"',
+
+ // Backslashes
+ '\\' => '\\\\',
+ '\\\\' => '\\\\\\\\',
+ '\\u00e9' => '\\\u00e9', // security check for Unicode unescaping
+
+ // Line terminators
+ "\xe2\x80\xa8" => '\u2028',
+ "\xe2\x80\xa9" => '\u2029',
+ ),
+ 'unicode' => array(
+ "\xc3\xa9" => '\u00e9',
+ "\xf0\x9d\x92\x9e" => '\ud835\udc9e', // U+1D49E, outside the BMP
+ ),
+ 'xmlmeta' => array(
+ '<' => '\u003C', // JSON_HEX_TAG uses uppercase hex digits
+ '>' => '\u003E',
+ '&' => '\u0026',
+ ),
+ );
+
+ $cases = array();
+ foreach ( $groups as $name => $rules ) {
+ $leaveUnescaped = in_array( $name, $unescapedGroups );
+ foreach ( $rules as $from => $to ) {
+ $cases[] = array( $from, '"' . ( $leaveUnescaped ? $from : $to ) . '"' );
+ }
+ }
+ return $cases;
+ }
+}
+++ /dev/null
-<?php
-/*
- * Test cases for our Services_Json library. Requires PHP json support as well,
- * so we can compare output
- */
-class ServicesJsonTest extends MediaWikiTestCase {
- /**
- * Test to make sure core json_encode() and our Services_Json()->encode()
- * produce the same output
- *
- * @dataProvider provideValuesToEncode
- */
- public function testJsonEncode( $input, $desc ) {
- if ( !function_exists( 'json_encode' ) ) {
- $this->markTestIncomplete( 'No PHP json support, unable to test' );
- return;
- } elseif ( strtolower( json_encode( "\xf0\xa0\x80\x80" ) ) != '"\ud840\udc00"' ) {
- $this->markTestIncomplete( 'Have buggy PHP json support, unable to test' );
- return;
- } else {
- $jsonObj = new Services_JSON();
- $this->assertEquals(
- $jsonObj->encode( $input ),
- json_encode( $input ),
- $desc
- );
- }
- }
-
- /**
- * Test to make sure core json_decode() and our Services_Json()->decode()
- * produce the same output
- *
- * @dataProvider provideValuesToDecode
- */
- public function testJsonDecode( $input, $desc ) {
- if ( !function_exists( 'json_decode' ) ) {
- $this->markTestIncomplete( 'No PHP json support, unable to test' );
- return;
- } else {
- $jsonObj = new Services_JSON();
- $this->assertEquals(
- $jsonObj->decode( $input ),
- json_decode( $input ),
- $desc
- );
- }
- }
-
- public static function provideValuesToEncode() {
- $obj = new stdClass();
- $obj->property = 'value';
- $obj->property2 = null;
- $obj->property3 = 1.234;
- return array(
- array( 1, 'basic integer' ),
- array( -1, 'negative integer' ),
- array( 1.1, 'basic float' ),
- array( true, 'basic bool true' ),
- array( false, 'basic bool false' ),
- array( 'some string', 'basic string test' ),
- array( "some string\nwith newline", 'newline string test' ),
- array( '♥ü', 'unicode string test' ),
- array( array( 'some', 'string', 'values' ), 'basic array of strings' ),
- array( array( 'key1' => 'val1', 'key2' => 'val2' ), 'array with string keys' ),
- array( array( 1 => 'val1', 3 => 'val2', '2' => 'val3' ), 'out of order numbered array test' ),
- array( array(), 'empty array test' ),
- array( $obj, 'basic object test' ),
- array( new stdClass, 'empty object test' ),
- array( null, 'null test' ),
- );
- }
-
- public static function provideValuesToDecode() {
- return array(
- array( '1', 'basic integer' ),
- array( '-1', 'negative integer' ),
- array( '1.1', 'basic float' ),
- array( '1.1e1', 'scientific float' ),
- array( 'true', 'basic bool true' ),
- array( 'false', 'basic bool false' ),
- array( '"some string"', 'basic string test' ),
- array( '"some string\nwith newline"', 'newline string test' ),
- array( '"♥ü"', 'unicode character string test' ),
- array( '"\u2665"', 'unicode \\u string test' ),
- array( '["some","string","values"]', 'basic array of strings' ),
- array( '[]', 'empty array test' ),
- array( '{"key":"value"}', 'Basic key => value test' ),
- array( '{}', 'empty object test' ),
- array( 'null', 'null test' ),
- );
- }
-}
*
* @ingroup UtfNormal
* @group Large
+ *
+ * We ignore code coverage for this test suite until they are rewritten
+ * to use data providers (bug 46561).
+ * @codeCoverageIgnore
*/
class CleanUpTest extends MediaWikiTestCase {
/** @todo document */
# We will upload the actual files later. Note that if anything causes LocalFile::load()
# to be triggered before then, it will break via maybeUpgrade() setting the fileExists
# member to false and storing it in cache.
+ # note that the size/width/height/bits/etc of the file
+ # are actually set by inspecting the file itself; the arguments
+ # to recordUpload2 have no effect. That said, we try to make things
+ # match up so it is less confusing to readers of the code & tests.
$image = wfLocalFile( Title::makeTitle( NS_FILE, 'Foobar.jpg' ) );
if ( !$this->db->selectField( 'image', '1', array( 'img_name' => $image->getName() ) ) ) {
$image->recordUpload2(
'Upload of some lame file',
'Some lame file',
array(
- 'size' => 12345,
+ 'size' => 7881,
'width' => 1941,
'height' => 220,
- 'bits' => 24,
+ 'bits' => 8,
'media_type' => MEDIATYPE_BITMAP,
'mime' => 'image/jpeg',
'metadata' => serialize( array() ),
- 'sha1' => wfBaseConvert( '', 16, 36, 31 ),
+ 'sha1' => wfBaseConvert( '1', 16, 36, 31 ),
'fileExists' => true ),
$this->db->timestamp( '20010115123500' ), $user
);
}
+ $image = wfLocalFile( Title::makeTitle( NS_FILE, 'Thumb.png' ) );
+ if ( !$this->db->selectField( 'image', '1', array( 'img_name' => $image->getName() ) ) ) {
+ $image->recordUpload2(
+ '', // archive name
+ 'Upload of some lame thumbnail',
+ 'Some lame thumbnail',
+ array(
+ 'size' => 22589,
+ 'width' => 135,
+ 'height' => 135,
+ 'bits' => 8,
+ 'media_type' => MEDIATYPE_BITMAP,
+ 'mime' => 'image/png',
+ 'metadata' => serialize( array() ),
+ 'sha1' => wfBaseConvert( '2', 16, 36, 31 ),
+ 'fileExists' => true ),
+ $this->db->timestamp( '20130225203040' ), $user
+ );
+ }
+
# This image will be blacklisted in [[MediaWiki:Bad image list]]
$image = wfLocalFile( Title::makeTitle( NS_FILE, 'Bad.jpg' ) );
if ( !$this->db->selectField( 'image', '1', array( 'img_name' => $image->getName() ) ) ) {
'media_type' => MEDIATYPE_BITMAP,
'mime' => 'image/jpeg',
'metadata' => serialize( array() ),
- 'sha1' => wfBaseConvert( '', 16, 36, 31 ),
+ 'sha1' => wfBaseConvert( '3', 16, 36, 31 ),
'fileExists' => true ),
$this->db->timestamp( '20010115123500' ), $user
);
$backend->store( array(
'src' => "$IP/skins/monobook/headbg.jpg", 'dst' => "$base/local-public/3/3a/Foobar.jpg"
) );
+ $backend->prepare( array( 'dir' => "$base/local-public/e/ea" ) );
+ $backend->store( array(
+ 'src' => "$IP/skins/monobook/wiki.png", 'dst' => "$base/local-public/e/ea/Thumb.png"
+ ) );
$backend->prepare( array( 'dir' => "$base/local-public/0/09" ) );
$backend->store( array(
'src' => "$IP/skins/monobook/headbg.jpg", 'dst' => "$base/local-public/0/09/Bad.jpg"
"$base/local-thumb/3/3a/Foobar.jpg/70px-Foobar.jpg",
"$base/local-thumb/3/3a/Foobar.jpg/960px-Foobar.jpg",
+ "$base/local-public/e/ea/Thumb.png",
+
"$base/local-public/0/09/Bad.jpg",
- "$base/local-thumb/0/09/Bad.jpg",
"$base/local-public/math/f/a/5/fa50b8b616463173474302ca3e63586b.png",
)
/** @dataProvider providePlural */
function testPlural( $result, $value ) {
- $forms = array( 'one', 'few', 'many', 'other' );
+ $forms = array( 'one', 'few', 'many', 'other' );
$this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
}
}
public static function providePlural() {
- return array (
+ return array(
array( 'one', 1 ),
array( 'many', 11 ),
array( 'one', 91 ),
/** @dataProvider providePluralTwoForms */
function testPluralTwoForms( $result, $value ) {
- $forms = array( 'one', 'other' );
+ $forms = array( 'one', 'other' );
$this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
}
}
public static function providePlural() {
- return array (
+ return array(
array( 'other', 0 ),
array( 'one', 1 ),
array( 'few', 2 ),
class LanguageCuTest extends LanguageClassesTestCase {
/** @dataProvider providePlural */
function testPlural( $result, $value ) {
- $forms = array( 'one', 'two', 'few', 'other' );
+ $forms = array( 'one', 'two', 'few', 'other' );
$this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
}
}
public static function providePlural() {
- return array (
+ return array(
array( 'other', 0 ),
array( 'one', 1 ),
array( 'two', 2 ),
}
public static function providePlural() {
- return array (
+ return array(
array( 'zero', 0 ),
array( 'one', 1 ),
array( 'two', 2 ),
}
public static function providePlural() {
- return array (
+ return array(
array( 'other', 0 ),
array( 'one', 1 ),
array( 'two', 2 ),
}
public static function providerPlural() {
- return array (
+ return array(
array( 'other', 0 ),
array( 'one', 1 ),
array( 'two', 2 ),
}
public static function providerPluralExplicit() {
- return array (
- array( 'other', 0 ),
- array( 'one', 1 ),
- array( 'two', 2 ),
- array( 'Form11', 11 ),
- array( 'Form12', 12 ),
- array( 'few', 3 ),
- array( 'few', 19 ),
- array( 'other', 200 ),
+ return array(
+ array( 'other', 0 ),
+ array( 'one', 1 ),
+ array( 'two', 2 ),
+ array( 'Form11', 11 ),
+ array( 'Form12', 12 ),
+ array( 'few', 3 ),
+ array( 'few', 19 ),
+ array( 'other', 200 ),
);
}
}
function testPlural( $result, $value ) {
// This is not compatible with CLDR plural rules http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html#gv
// What does this mean? Is there a hard-coded override for gv somewhere? -Ryan Kaldari 2013-01-28
- $forms = array( 'Form 1', 'Form 2', 'Form 3', 'Form 4' );
+ $forms = array( 'Form 1', 'Form 2', 'Form 3', 'Form 4' );
$this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
}
}
public static function providePlural() {
- return array (
+ return array(
array( 'Form 4', 0 ),
array( 'Form 2', 1 ),
array( 'Form 3', 2 ),
}
public static function provideTwoPluralForms() {
- return array (
+ return array(
array( 'other', 0 ), // Zero - plural
array( 'one', 1 ), // Singular
array( 'other', 2 ), // No third form provided, use it as plural
}
public static function provideThreePluralForms() {
- return array (
+ return array(
array( 'other', 0 ), // Zero - plural
array( 'one', 1 ), // Singular
array( 'two', 2 ), // Dual
}
public static function provideFourPluralForms() {
- return array (
+ return array(
array( 'other', 0 ), // Zero - plural
array( 'one', 1 ), // Singular
array( 'two', 2 ), // Dual
// The comments in the beginning of the line help avoid RTL problems
// with text editors.
public static function provideGrammar() {
- return array (
+ return array(
array(
- /* result */ 'וויקיפדיה',
- /* word */ 'ויקיפדיה',
- /* case */ 'תחילית',
+ /* result */'וויקיפדיה',
+ /* word */'ויקיפדיה',
+ /* case */'תחילית',
),
array(
- /* result */ 'וולפגנג',
- /* word */ 'וולפגנג',
- /* case */ 'prefixed',
+ /* result */'וולפגנג',
+ /* word */'וולפגנג',
+ /* case */'prefixed',
),
array(
- /* result */ 'קובץ',
- /* word */ 'הקובץ',
- /* case */ 'תחילית',
+ /* result */'קובץ',
+ /* word */'הקובץ',
+ /* case */'תחילית',
),
array(
- /* result */ '־Wikipedia',
- /* word */ 'Wikipedia',
- /* case */ 'תחילית',
+ /* result */'־Wikipedia',
+ /* word */'Wikipedia',
+ /* case */'תחילית',
),
array(
- /* result */ '־1995',
- /* word */ '1995',
- /* case */ 'תחילית',
+ /* result */'־1995',
+ /* word */'1995',
+ /* case */'תחילית',
),
);
}
}
public static function providePlural() {
- return array (
+ return array(
array( 'many', 0 ),
array( 'one', 1 ),
array( 'few', 2 ),
}
public static function providePlural() {
- return array (
+ return array(
array( 'other', 0 ),
array( 'one', 1 ),
array( 'other', 2 ),
}
public static function providePlural() {
- return array (
+ return array(
array( 'zero', 0 ),
array( 'one', 1 ),
array( 'other', 2 ),
class LanguageLtTest extends LanguageClassesTestCase {
/** @dataProvider providePlural */
function testPlural( $result, $value ) {
- $forms = array( 'one', 'few', 'other' );
+ $forms = array( 'one', 'few', 'other' );
$this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
}
}
public static function providePlural() {
- return array (
+ return array(
array( 'other', 0 ),
array( 'one', 1 ),
array( 'few', 2 ),
/** @dataProvider providePluralTwoForms */
function testOneFewPlural( $result, $value ) {
- $forms = array( 'one', 'other' );
+ $forms = array( 'one', 'other' );
// This fails for 21, but not sure why.
$this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
}
public static function providePluralTwoForms() {
- return array (
+ return array(
array( 'one', 1 ),
array( 'other', 2 ),
array( 'other', 15 ),
}
public static function providePlural() {
- return array (
+ return array(
array( 'zero', 0 ),
array( 'one', 1 ),
array( 'other', 11 ),
}
public static function providePlural() {
- return array (
+ return array(
array( 'other', 0 ),
array( 'one', 1 ),
array( 'other', 11 ),
}
public static function providePlural() {
- return array (
- array( 'few', 0 ),
- array( 'one', 1 ),
- array( 'few', 2 ),
- array( 'few', 19 ),
+ return array(
+ array( 'few', 0 ),
+ array( 'one', 1 ),
+ array( 'few', 2 ),
+ array( 'few', 19 ),
array( 'other', 20 ),
array( 'other', 99 ),
array( 'other', 100 ),
}
public static function providePlural() {
- return array (
- array( 'few', 0 ),
- array( 'one', 1 ),
- array( 'few', 2 ),
- array( 'few', 10 ),
- array( 'many', 11 ),
- array( 'many', 19 ),
+ return array(
+ array( 'few', 0 ),
+ array( 'one', 1 ),
+ array( 'few', 2 ),
+ array( 'few', 10 ),
+ array( 'many', 11 ),
+ array( 'many', 19 ),
array( 'other', 20 ),
array( 'other', 99 ),
array( 'other', 100 ),
}
public static function providerPluralTwoForms() {
- return array (
- array( 'other', 0 ),
- array( 'one', 1 ),
- array( 'other', 2 ),
- array( 'other', 10 ),
- array( 'other', 11 ),
- array( 'other', 19 ),
- array( 'other', 20 ),
- array( 'other', 99 ),
- array( 'other', 100 ),
- array( 'other', 101 ),
- array( 'other', 102 ),
- array( 'other', 110 ),
- array( 'other', 111 ),
- array( 'other', 119 ),
- array( 'other', 120 ),
- array( 'other', 201 ),
+ return array(
+ array( 'other', 0 ),
+ array( 'one', 1 ),
+ array( 'other', 2 ),
+ array( 'other', 10 ),
+ array( 'other', 11 ),
+ array( 'other', 19 ),
+ array( 'other', 20 ),
+ array( 'other', 99 ),
+ array( 'other', 100 ),
+ array( 'other', 101 ),
+ array( 'other', 102 ),
+ array( 'other', 110 ),
+ array( 'other', 111 ),
+ array( 'other', 119 ),
+ array( 'other', 120 ),
+ array( 'other', 201 ),
);
}
}
}
public static function providePlural() {
- return array (
- array( 'one', 0 ),
- array( 'one', 1 ),
+ return array(
+ array( 'one', 0 ),
+ array( 'one', 1 ),
array( 'other', 2 ),
);
}
}
public static function providePlural() {
- return array (
- array( 'many', 0 ),
- array( 'one', 1 ),
- array( 'few', 2 ),
- array( 'few', 3 ),
- array( 'few', 4 ),
- array( 'many', 5 ),
- array( 'many', 9 ),
- array( 'many', 10 ),
- array( 'many', 11 ),
- array( 'many', 21 ),
- array( 'few', 22 ),
- array( 'few', 23 ),
- array( 'few', 24 ),
- array( 'many', 25 ),
- array( 'many', 200 ),
- array( 'many', 201 ),
+ return array(
+ array( 'many', 0 ),
+ array( 'one', 1 ),
+ array( 'few', 2 ),
+ array( 'few', 3 ),
+ array( 'few', 4 ),
+ array( 'many', 5 ),
+ array( 'many', 9 ),
+ array( 'many', 10 ),
+ array( 'many', 11 ),
+ array( 'many', 21 ),
+ array( 'few', 22 ),
+ array( 'few', 23 ),
+ array( 'few', 24 ),
+ array( 'many', 25 ),
+ array( 'many', 200 ),
+ array( 'many', 201 ),
);
}
}
public static function providerPluralTwoForms() {
- return array (
- array( 'other', 0 ),
- array( 'one', 1 ),
- array( 'other', 2 ),
- array( 'other', 3 ),
- array( 'other', 4 ),
- array( 'other', 5 ),
- array( 'other', 9 ),
- array( 'other', 10 ),
- array( 'other', 11 ),
- array( 'other', 21 ),
- array( 'other', 22 ),
- array( 'other', 23 ),
- array( 'other', 24 ),
- array( 'other', 25 ),
- array( 'other', 200 ),
- array( 'other', 201 ),
+ return array(
+ array( 'other', 0 ),
+ array( 'one', 1 ),
+ array( 'other', 2 ),
+ array( 'other', 3 ),
+ array( 'other', 4 ),
+ array( 'other', 5 ),
+ array( 'other', 9 ),
+ array( 'other', 10 ),
+ array( 'other', 11 ),
+ array( 'other', 21 ),
+ array( 'other', 22 ),
+ array( 'other', 23 ),
+ array( 'other', 24 ),
+ array( 'other', 25 ),
+ array( 'other', 200 ),
+ array( 'other', 201 ),
);
}
}
}
public static function providePlural() {
- return array (
- array( 'few', 0 ),
- array( 'one', 1 ),
- array( 'few', 2 ),
- array( 'few', 19 ),
+ return array(
+ array( 'few', 0 ),
+ array( 'one', 1 ),
+ array( 'few', 2 ),
+ array( 'few', 19 ),
array( 'other', 20 ),
array( 'other', 99 ),
array( 'other', 100 ),
}
public static function providePlural() {
- return array (
+ return array(
array( 'one', 1 ),
array( 'many', 11 ),
array( 'one', 91 ),
/** @dataProvider providePluralTwoForms */
function testPluralTwoForms( $result, $value ) {
- $forms = array( 'one', 'other' );
+ $forms = array( 'one', 'other' );
$this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
}
}
public static function providePlural() {
- return array (
+ return array(
array( 'other', 0 ),
array( 'one', 1 ),
array( 'two', 2 ),
}
public static function providerPluralTwoForms() {
- return array (
+ return array(
array( 'other', 0 ),
array( 'one', 1 ),
array( 'other', 2 ),
}
public static function providePlural() {
- return array (
+ return array(
array( 'many', 0 ),
- array( 'one', 1 ),
+ array( 'one', 1 ),
array( 'few', 2 ),
array( 'few', 4 ),
array( 'many', 5 ),
}
public static function providePlural() {
- return array (
+ return array(
array( 'other', 0 ),
array( 'one', 1 ),
array( 'few', 2 ),
}
public static function providerPlural() {
- return array (
- array( 'other', 0 ),
- array( 'one', 1 ),
- array( 'two', 2 ),
- array( 'few', 3 ),
- array( 'few', 4 ),
+ return array(
+ array( 'other', 0 ),
+ array( 'one', 1 ),
+ array( 'two', 2 ),
+ array( 'few', 3 ),
+ array( 'few', 4 ),
array( 'other', 5 ),
array( 'other', 99 ),
array( 'other', 100 ),
}
public static function providePlural() {
- return array (
+ return array(
array( 'other', 0 ),
array( 'one', 1 ),
array( 'two', 2 ),
}
public static function providerPluralTwoForms() {
- return array (
+ return array(
array( 'other', 0 ),
array( 'one', 1 ),
array( 'other', 2 ),
}
public static function providePlural() {
- return array (
+ return array(
array( 'one', 1 ),
array( 'many', 11 ),
array( 'one', 91 ),
return $this->getLang()
->mConverter
->convertTo(
- $text, $variant
- );
+ $text, $variant
+ );
}
function convertToCyrillic( $text ) {
}
public static function providePlural() {
- return array (
- array( 'one', 0 ),
- array( 'one', 1 ),
+ return array(
+ array( 'one', 0 ),
+ array( 'one', 1 ),
array( 'other', 2 ),
);
}
}
public static function providePlural() {
- return array (
- array( 'one', 0 ),
- array( 'one', 1 ),
+ return array(
+ array( 'one', 0 ),
+ array( 'one', 1 ),
array( 'other', 2 ),
);
}
}
public static function providePlural() {
- return array (
+ return array(
array( 'one', 1 ),
array( 'many', 11 ),
array( 'one', 91 ),
}
public static function providePlural() {
- return array (
- array( 'one', 0 ),
- array( 'one', 1 ),
+ return array(
+ array( 'one', 0 ),
+ array( 'one', 1 ),
array( 'other', 2 ),
);
}
// Bug 44192 Do not attempt to send a real e-mail
Hooks::clear( 'AlternateUserMailer' );
- Hooks::register( 'AlternateUserMailer',
- function() { return false; }
+ Hooks::register(
+ 'AlternateUserMailer',
+ function () {
+ return false;
+ }
);
}
# ** Baz|Fred
array(
'text' => 'Fred',
- 'href' => Title::newFromText( 'Baz' )->getLocalUrl(),
+ 'href' => Title::newFromText( 'Baz' )->getLocalURL(),
'id' => 'n-Fred',
'active' => null,
),
array(
'text' => 'title-to-display',
- 'href' => Title::newFromText( 'page-to-go-to' )->getLocalUrl(),
+ 'href' => Title::newFromText( 'page-to-go-to' )->getLocalURL(),
'id' => 'n-title-to-display',
'active' => null,
),
}
protected function setUp() {
- global $wgParser, $wgParserConf, $IP, $messageMemc, $wgMemc,
- $wgUser, $wgLang, $wgOut, $wgRequest, $wgStyleDirectory, $wgEnableParserCache,
- $wgNamespaceAliases, $wgNamespaceProtection, $parserMemc;
+ global $wgParser, $wgParserConf, $IP, $messageMemc, $wgMemc, $wgUser,
+ $wgLang, $wgOut, $wgRequest, $wgStyleDirectory,
+ $wgEnableParserCache, $wgNamespaceAliases, $wgNamespaceProtection,
+ $parserMemc;
$tmpGlobals = array();
'mediawiki.language',
'mediawiki.cldr',
),
- 'position' => 'top',
)
);
*/
header( 'Content-Type: text/javascript; charset=utf-8' );
+require_once __DIR__ . '/../../../includes/json/FormatJson.php';
require_once __DIR__ . '/../../../includes/Xml.php';
$moduleImplementations = array(
if ( isset( $moduleImplementations[$module] ) ) {
$response .= $moduleImplementations[$module];
} else {
- $response .= Xml::encodeJsCall( 'mw.loader.state', array( $module, 'missing' ) );
+ $response .= Xml::encodeJsCall( 'mw.loader.state', array( $module, 'missing' ), true );
}
}
}
/**
* CompletenessTest
+ *
+ * Adds toggle checkbox to header
*/
- // Adds toggle checkbox to header
QUnit.config.urlConfig.push( {
id: 'completenesstest',
label: 'Run CompletenessTest',
/**
* Test environment recommended for all QUnit test modules
+ *
+ * Whether to log environment changes to the console
*/
- // Whether to log environment changes to the console
QUnit.config.urlConfig.push( 'mwlogenv' );
/**
var start = opt.before.start,
end = opt.before.end;
- if ( window.opera ) {
- // Compensate for Opera's craziness converting \n to \r\n and counting that as two chars
- var newLinesBefore = opt.before.text.substring( 0, start ).split( '\n' ).length - 1,
- newLinesInside = opt.before.text.substring( start, end ).split( '\n' ).length - 1;
- start += newLinesBefore;
- end += newLinesBefore + newLinesInside;
- }
var options = $.extend( {}, opt.replace ); // Clone opt.replace
options.selectionStart = start;