+{{int:version-credits-summary}}
+<!--
MediaWiki 1.23 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.
-
+-->
<!-- Please notice that the following can be found parsed under Special:Version/Credits -->
+
== Developers ==
* Aaron Schulz
* Alex Z.
* Salvatore Ingala
* Santhosh Thottingal
* Scott Colcord
+* se4598
* Sébastien Santoro
* Simon Walker
* Solitarius
Change notes from older releases. For current info see RELEASE-NOTES-1.23.
-== MediaWiki 1.21 ==
+== MediaWiki 1.22 ==
+
+=== Configuration changes in 1.22 ===
+* $wgRedirectScript was removed. It was unused.
+* Removed $wgLocalMessageCacheSerialized, it is now always true.
+* $wgVectorUseIconWatch is now enabled by default.
+* $wgCascadingRestrictionLevels was added.
+* ftps, ssh, sftp, xmpp, sip, sips, tel, sms, bitcoin, magnet, urn, and geo
+ have been whitelisted inside of $wgUrlProtocols.
+* $wgDocType and $wgDTD have been removed and are no longer used for the DOCTYPE.
+* $wgHtml5 is no longer used by core. Setting it to false will no longer disable HTML5.
+ It is still set to true for extension compatibility but doing so in extensions is deprecated.
+* $wgXhtmlDefaultNamespace is no longer used by core. Setting it will no longer change the
+ xmlns used by MediaWiki. Reliance on this variable by extensions is deprecated.
+* $wgHandheldStyle was removed.
+* $wgHandheldForIPhone was removed.
+* $wgJsMimeType is no longer used by core. Most usage has been removed since
+ HTML output is now exclusively HTML5.
+* $wgDBOracleDRCP added. True enables persistent connection with DRCP on Oracle.
+* $wgLogAutopatrol added to allow disabling logging of autopatrol edits in the logging table.
+ default for $wgLogAutopatrol is true.
+* The 'edit' right no longer allows for editing a user's own CSS and JS.
+* New rights 'editmyusercss', 'editmyuserjs', 'viewmywatchlist',
+ 'editmywatchlist', 'viewmyprivateinfo', 'editmyprivateinfo', and
+ 'editmyoptions' restrict actions that were formerly allowed by default. They
+ have been added to the default for $wgGroupPermissions['*'].
+* The 'editprotected' right no longer allows bypassing of all page protection
+ restrictions. Any group using it for this purpose will now need to have all
+ the individual rights listed in $wgRestrictionTypes for the same effect.
+* The 'protect' and 'autoconfirmed' rights are no longer used for the default
+ page protection levels. The rights 'editprotected' and 'editsemiprotected'
+ are now used for this purpose instead.
+* (bug 40866) wgOldChangeTagsIndex removed.
+* $wgNoFollowDomainExceptions now only matches entire domains. For example,
+ an entry for 'bar.com' will still match 'foo.bar.com' but not 'foobar.com'.
+* $wgCopyUploadTimeout and $wgCopyUploadAsyncTimeout added to change the timeout times for
+ fetching the file during upload by url.
+* New key added to $wgGalleryOptions - $wgGalleryOptions['mode'] to set
+ default gallery mode.
+* New hook 'GalleryGetModes' to allow extensions to make new gallery modes.
+* The checkbox for staying in HTTPS displayed on the login form when $wgSecureLogin is
+ enabled has been removed. Instead, whether the user stays in HTTPS will be determined
+ based on the user's preferences, and whether they came from HTTPS or not.
+* $wgRC2UDPAddress, $wgRC2UDPInterwikiPrefix, $wgRC2UDPOmitBots, $wgRC2UDPPort,
+ and $wgRC2UDPPrefix configuration options have been deprecated in favor of a
+ $wgRCFeeds configuration array. $wgRCFeeds makes both the format and
+ destination of recent change notifications customizable, and allows for
+ multiple destinations to be specified.
+* (bug 53862) portal-url, currentevents-url and helppage have been removed from the
+ default Sidebar.
+* The 'vector-simplesearch' preference is now enabled by default. Previously
+ it was only enabled if the Vector extension was installed.
+* The precise format of metric datagrams produced by the UDP profiler and stats counter
+ may now be specified as $wgUDPProfilerFormatString and $wgStatsFormatString,
+ respectively.
+* (bug 54597) $wgBlockOpenProxies, $wgProxyPorts, $wgProxyScriptPath, and
+ $wgProxyMemcExpiry have been removed, along with the open proxy scanner
+ script they were added for.
+* Default value of $wgMaxShellMemory has been tripled (it's now 300 MB).
+
+=== New features in 1.22 ===
+* You can now install extensions using Composer.
+ See https://www.mediawiki.org/wiki/Composer
+* (bug 44525) mediawiki.jqueryMsg can now parse (whitelisted) HTML elements and attributes.
+* (bug 33454) Language::sprintfDate now has a timezone parameter, and supports
+ the "eIOPTZ" formatting characters.
+* EditWarning: A warning is shown when an editor leaves the edit form without
+ saving (enabled by default, users can opt-out via the 'useeditwarning'
+ preference). This feature was moved from the Vector extension, and is now part
+ of core for all skins. Take care when upgrading that you don't use an older
+ version of the Vector extension as this feature may conflict.
+* New 'mediawiki.ui' CSS module providing mw-ui-* styles for buttons and a
+ compact vertical form layout.
+* HTMLForm supports a new display format 'vform' which applies this compact vertical
+ layout and button styling. Special:PasswordReset uses this format.
+* New versions of login (Special:UserLogin) and create account
+ (Special:UserLogin/signup) forms using the "vform" compact vertical form layout.
+ These forms use new messages that assume a "Help logging in" link, see
+ https://www.mediawiki.org/wiki/Manual:Page_customizations;
+ https://www.mediawiki.org/wiki/Account_creation_user_experience/Strings lists the
+ message key changes.
+* (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).
+* The new hook 'APIGetPossibleErrors' to modify the list of possible errors was
+ added.
+* (bug 25592) LogEventsList::showLogExtract() will now ignore various
+ Pager-related WebRequest parameters by default, as this is overwhelmingly
+ likely to be what was intended by users of the method. If any caller wishes
+ to use these parameters, the new param 'useRequestParams' may be set to true.
+* mw.util.addPortletLink: Tooltip is no longer required to be plain (without
+ an accesskey in it already). As such it now rountrips. Creating a link with a
+ message as tooltip, grabbing the title attribute and using it to create
+ another portlet will work as expected.
+* (bug 6747) {{ROOTPAGENAME}} introduced, contains the name of the topmost
+ page without namespace.
+* BREAKING CHANGE: (bug 41729) Display editsection links next to headings. Also
+ change their class name from .editsection to .mw-editsection and place them at
+ the end of the heading element instead of the beginning. Client-side code and
+ screen-scrapers will have to be adjusted to handle both cases (old HTML will
+ still be visible on cached page renders until they are purged); extensions
+ using the DoEditSectionLink or EditSectionLink hooks might need adjustments as
+ well.
+* (bug 45535) introduced the new 'LanguageLinks' hook for manipulating the
+ language links associated with a page before display.
+* Chosen (http://harvesthq.github.io/chosen/) was added as module 'jquery.chosen'
+* HTMLForm will turn multiselect checkboxes into a Chosen interface when setting cssclass 'mw-chosen'
+* rebuildLocalisationCache learned --lang option. Let you rebuild l10n caches
+ of the specified languages instead of all of them.
+* New GetNewMessagesAlert hook allowing extensions to disable or modify the new
+ messages alert
+* New wgUserNewMsgRevisionId JS global for logged in users. This will be null
+ if the user has no new talk page messages. Otherwise it will be set to the
+ revision ID of the oldest new talk page message. This will allow gadgets and
+ extensions to create their own new message alerts on the client side.
+* mediawiki.log: Added log.warn wrapper (uses console.warn and console.trace).
+* mediawiki.log: Implemented log.deprecate. This method defines a property and
+ uses ES5 getter/setter to emit a warning when they are used.
+* $wgCascadingRestrictionLevels was added, allowing one to specify restriction levels
+ which can be cascading (previously 'sysop' was hard-coded as the only one).
+* XHTML5 support has been improved. If you set $wgMimeType = 'application/xhtml+xml'
+ MediaWiki will try outputting markup acording to XHTML5 rules.
+* Altered hook 'ProtectionForm::save', adding the reason page protection is
+ changed as third parameter.
+* New hook 'TitleSquidURLs' for manipulating the list of URLs to be purged from
+ HTTP caches when a page is changed.
+* Changed the patrolling system to always show the link for patrolling in case the
+ current revision is patrollable. This also removed the usage of the rcid URI parameters.
+* Oracle DB backend now supports Database Resident Connection Pooling (DRCP).
+ Can be enabled by setting $wgDBOracleDRCP=true.
+ Requires Oracle DB 11gR1 or above, enabled DRCP inside the DB itself and a
+ propper connect string.
+ More about DRCP can be found at:
+ http://www.oracle-base.com/articles/11g/database-resident-connection-pool-11gr1.php
+* Add a new parameter $patrolFooterShown to hook ArticleViewFooter so the hook
+ handlers can take further action based on the status of the patrol footer
+* A new hook TitleQuickPermissions was added to allow overriding of quick
+ permissions in the Title class.
+* LinkCache singleton can now be altered or cleared, letting one to specify
+ another instance that does not rely on a database backend.
+* MediaWiki's PHPUnit tests can now use PHPUnit installed using composer --dev.
+* (bug 43689) The lists of templates used on the page and hidden categories it
+ is a member of, shown below the edit form, are now collapsible (and collapsed
+ by default).
+* Parser profiling data, formerly only available in the "NewPP limit report"
+ HTML comment, is now also displayed at the bottom of page previews.
+* Added ParserLimitReportPrepare and ParserLimitReportFormat hooks, deprecated
+ ParserLimitReport hook.
+* New user rights have been added to increase granularity in rights management
+ for extensions such as OAuth:
+** editmyusercss controls whether a user may edit their own CSS subpages.
+** editmyuserjs controls whether a user may edit their own JS subpages.
+** viewmywatchlist controls whether a user may view their watchlist.
+** editmywatchlist controls whether a user may edit their watchlist.
+** viewmyprivateinfo controls whether a user may access their private
+ information (e.g. registered email address, real name).
+** editmyprivateinfo controls whether a user may change their private
+ information.
+** editmyoptions controls whether a user may change their preferences.
+* Add new hook AbortTalkPageEmailNotification, this will be used to determine
+ whether to send the regular talk page email notification
+* Action classes registered in $wgActions are now also supported in the form of
+ a callback (which returns an instance of Action) instead of providing the name
+ of a subclass of Action.
+* (bug 46513) Vector: Add the collapsibleTabs script from the Vector extension.
+* Added $wgRecentChangesFlags for defining new flags for RecentChanges and
+ watchlists.
+* (bug 40518) mw.toolbar: Implemented mw.toolbar.addButtons for adding multiple
+ button objects in one call.
+* Rights used for the default protection levels ('sysop' and 'autoconfirmed')
+ are now used just for that purpose, instead of overloading other rights. This
+ allows easy granting of the ability to edit sysop-protected pages without
+ also granting the ability to protect and unprotect.
+* (bug 48256) Make brackets in section edit links accessible to CSS.
+ They are now wrapped in <span class="mw-editsection-bracket" />.
+* (bug 8480) Allow handler specific parameters in galleries (like page number)
+* jquery.client: Add detection for Opera 15 and Internet Explorer 11.
+* Change tags (used by the AbuseFilter extension) are now shown on diff pages.
+* Change tag lists (shown on recent changes, watchlist, user contributions,
+ history pages, diff pages) now include a link to Special:Tags to distinguish
+ them from edit summaries.
+* Added a new method and hook, User::isEveryoneAllowed() and
+ UserIsEveryoneAllowed, for use in situations where a "does everyone have this
+ right?" check is used to avoid more expensive checks.
+* (bug 14431) Display "(No difference)" instead of an empty diff (when comparing
+ revisions in the history or when previewing changes while editing).
+* New hook 'IsUploadAllowedFromUrl' is added which can be used to intercept uploads by
+ URL, useful for blacklisting specific URLs
+* (bug 21912) Watchlist token implementation has been refactored and
+ Special:ResetTokens was added to allow users to reset their tokens
+ instead of presenting them in Preferences.
+* Special:PrefixIndex now lets you strip the searched prefix from the displayed
+ titles. Given a list of articles named Bug1, Bug2, you can now transclude the
+ list of bug numbers using: {{Special:PrefixIndex/Bug|stripprefix=1}}.
+ The special page form received a new checkbox matching that option.
+* (bug 23580) Implement javascript callback interface "mw.hook".
+* (bug 30713) New mw.hook "wikipage.content".
+* (bug 40430) jquery.placeholder gets a new parameter to set the attribute value
+ to be used.
+* $wgHTCPMulticastRouting renamed $wgHTCPRouting since it accepts unicast.
+* $wgHTCPRouting rules can now be passed an array of hosts/ports to send purge
+ too. Can be used whenever several multicast group could be interested by a
+ specific purge.
+* (bug 25931) Add Special:RandomInCategory.
+* mediawiki.util: addPortletLink now supports passing a jQuery object as nextnode.
+* <wbr> can now be used inside WikiText.
+* WebResponse::setcookie is much more featureful. Callers using PHP's
+ setcookie() or setrawcookie() should begin using this instead.
+* New hook WebResponseSetCookie, called from WebResponse::setcookie().
+* New hook ResetSessionID, called when the session id is reset.
+* Add a mode parameter to <gallery> tag with potential options of "traditional",
+ "nolines", "packed", "packed-overlay", or "packed-hover".
+* (bug 47399) A success message is now displayed after changing the password.
+* Make thumb.php give HTTP redirects for file redirects
+* (bug 30607) Special:ListFiles can now show old versions of files. Additionally
+ Special:AllMyUploads was introduced so the user can get a list of all things
+ they have ever uploaded, even if it was subsequently overriden.
+* Introduced Special:MyFiles and Special:AllMyFiles as an alias for Special:MyUploads
+ and Special:AllMyUploads respectively.
+* IPv6 addresses in X-Forwarded-For headers are now normalised before checking
+ against allowed proxy lists.
+* Add deferrable update support for callback/closure.
+* Add TitleMove hook before page renames.
+* Revision deletion backend code is moved out of SpecialRevisiondelete
+* Added {{REVISIONSIZE}} variable to get the current size of a revision.
+* Add support for the LESS stylesheet language to ResourceLoader. LESS is a
+ stylesheet language that compiles into CSS. ResourceLoader file modules may
+ include LESS style files; ResourceLoader will compile these files into CSS
+ before sending them to the client.
+** The $wgResourceLoaderLESSVars configuration variable is an associative array
+ mapping variable names to string CSS values. These variables are considered
+ declared for all LESS files. Additional variables may be registered by
+ adding keys to the array.
+** $wgResourceLoaderLESSFunctions is an associative array of custom LESS
+ function names to PHP callables. See <http://leafo.net/lessphp/docs/#custom_functions>
+ for more details regarding custom functions.
+** $wgResourceLoaderLESSImportPaths is an array of file system paths. Files
+ referenced in LESS '@import' statements are looked up here first.
+* ResourceLoader supports hashes as module cache invalidation trigger (instead
+ of or in addition to timestamps).
+* Added $wgExtensionEntryPointListFiles for use in mergeMessageFileList.php.
+* Added a hook, APIQuerySiteInfoStatisticsInfo, to allow extensions to modify
+ the output of the API query meta=siteinfo&siprop=statistics
+* Primary keys have been added to both the archive table and the externallinks
+ tables.
+* Added $wgEnableParserLimitReporting to control whether the NewPP limit report is
+ output in a HTML comment.
+* The 'UnwatchArticle' and 'WatchArticle' hooks now support a Status object
+ instead of just a boolean return value to abort the hook.
+* Added a hook, SpecialWatchlistGetNonRevisionTypes, to allow extensions
+ with custom recentchanges entries to hook into the Watchlist without
+ clobbering each other.
+* A hidden, empty input field was added to the edit form, and any edit that fills
+ it in will be rejected. This prevents against the simplest form of spambots.
+ Previously in the "SimpleAntiSpam" extension by Ryan Schmidt.
+* populateRevisionLength.php maintenance script updated to also populate
+ archive.ar_len field.
+* (bug 43571) DatabaseMySQLBase learned to list views, optionally filtered by a
+ prefix. Also fixed PHPUnit test suite when using a MySQL backend containing
+ views.
+
+=== Bug fixes in 1.22 ===
+* (bug 47271) $wgContentHandlerUseDB should be set to false during the upgrade
+* Disable Special:PasswordReset when $wgEnableEmail is false. Previously one
+ could still navigate to the page by entering the URL directly.
+* (bug 47138) Fixed a fatal error when a blocked user tries to automatically
+ create an account on login due external authentication in some circumstances.
+* (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 47218) Special:BlockList now handles correctly user names with spaces
+ when passed as subpage.
+* Pager's properly validate which fields are allowed to be sorted on.
+* mw.util.tooltipAccessKeyRegexp: The regex now matches "option-" as well.
+ Support for Mac "option" was added in 1.16, but the regex was never updated.
+* (bug 46768) Usernames of blocking users now display correctly, even if numeric.
+* (bug 39590) Self-transclusions now show the most up to date result always
+ after save instead of being a revision behind.
+* A bias in wfRandomString() toward digits 1-7 has been corrected. Generated
+ strings will now start with digits 0 and 8-f as often as they should.
+* (bug 45371) Removed Parser_LinkHooks and CoreLinkFunctions classes.
+* (bug 41545) Allow <kbd>, <samp>, and <var> to be nested like allowed in html.
+* PLURAL magic word no longer causes a PHP notice when no matching form exists.
+* (bug 36641) Patrol page links no longer show on non-existent revisions.
+* (bug 35810) Pages not linked from Special:RecentChanges or Special:NewPages
+ are patrollable now.
+* (bug 30213) JavaScript for search suggestions is now disabled when the API
+ is disabled, and AJAX patrolling and watching are now disabled when use of
+ the write API is not allowed.
+* (bug 48294) API: Fix chunk upload async mode.
+* (bug 46749) Broken files tracking category removed from pages if an image
+ with that name is uploaded.
+* (bug 14176) System messages that are empty were previously incorrectly treated
+ as non-existent, causing a fallback to the default. This stopped users from
+ overriding system messages to make them blank.
+* (bug 48319) action=parse no longer returns an error if passed none of 'oldid',
+ 'pageid', 'page', 'title', and 'text' (e.g. if only passed 'summary'). A
+ warning will instead be issued if 'title' is non-default, unless no props are
+ requested.
+* Special:Recentchangeslinked will now include upload log entries
+* (bug 41281) Fixed ugly output if file size could not be extracted for multi-page media.
+* (bug 50315) list=logevents API module will now output log entries by anonymous users.
+* (bug 38911) Handle headers with rowspan in jquery.tablesorter
+* (bug 658) Converted the table of contents on wiki pages from <table> to <div>
+ and adjusted skin CSS accordingly. The CSS was carefully crafted to be
+ backwards-compatible in all reasonable cases (uses of the __TOC__ magic word,
+ the #toc CSS id and the .toc CSS class). However, particularly bad abuse of
+ the id or the class can possibly break.
+* CSSJanus now supports rgb, hsl, rgba, and hsla color syntaxes.
+* Special:Listfiles can no longer be sorted by image name when filtering
+ by user in miser mode.
+* (bug 49074) CSSJanus: Handle values of border-radius correctly.
+* Handle relative inclusions ({{../name}}) in main namespace with subpages
+ enabled correctly (previously MediaWiki tried to include Template:Parent/name
+ instead of just Parent/name).
+* Added $wgAPIUselessQueryPages to allow extensions to flag their query pages
+ for non-inclusion in ApiQueryQueryPages.
+* (bug 50870) mediawiki.notification: Notification area should remain visible
+ when scrolled down.
+* (bug 13438) Special:MIMESearch no longer an expensive special page.
+* (bug 48342) Fixed a fatal error when $wgValidateAllHtml is set to true and
+ the function apache_request_headers() function is not available.
+* (bug 33399) LivePreview: Re-run wikipage content handlers
+ (jquery.makeCollapsible, jquery.tablesorter) after preview content is loaded.
+* (bug 51891) Fixed PHP notice on Special:PagesWithProp when no properties
+ are defined.
+* (bug 52006) Corrected documentation of $wgTranscludeCacheExpiry.
+* (bug 52077) The APIEditBeforeSave hook is giving the content of the whole
+ revision as second argument now, rather than just the current section.
+* (bug 49694) $wgSpamRegex is now also applied on the new section headline text
+ adding a new topic on a page
+* (bug 41756) Improve treatment of multiple comments on a blank line.
+* (bug 51064) Purge upstream caches when deleting file assets.
+* (bug 39012) File types with a mime that we do not know the extension for
+ can no longer be uploaded as an extension that we do know the mime type
+ for.
+* (bug 51742) Add data-sort-value for better sorting of hitcounts Special:Tags
+* (bug 26811) On DB error pages, server hostnames are now hidden when both
+ $wgShowHostnames and $wgShowSQLErrors are false.
+* (bug 6200) line breaks in <blockquote> are handled like they are in <div>
+* (bug 14931) Default character set now set to 'utf8' when a new MySQL
+ database is created.
+* (bug 47191) Fixed "Column 'si_title' cannot be part of FULLTEXT index"
+ MySQL error when installing using the binary character set option.
+* (bug 45288) Support mysqli PHP extension
+* (bug 55818) BREAKING CHANGE: Removed undocumented 'Debug' hook in wfDebug.
+ This resolves an infinite loop when using $wgDebugFunctionEntry = true.
+* (bug 56707) Correct tooltip of "Next n results" on query special pages.
+* (bug 56770) mw.util.addPortletLink: Check length before access array index.
+
+=== API changes in 1.22 ===
+* (bug 25553) 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.
+* (bug 46626) xmldoublequote parameter was removed. Because of a bug, the
+ parameter has had no effect since MediaWiki 1.16, and so its removal is
+ unlikely to impact existing clients.
+* (bug 47216) action=query&meta=siteinfo&siprop=skins will now indicate which
+ skin is the default and which are unusable (e.g. listed in $wgSkipSkins).
+* (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.
+* action=opensearch no longer silently ignores the format parameter.
+* action=opensearch now supports format=jsonfm.
+* list=usercontribs&ucprop=ids will now include the parent revision id.
+* BREAKING CHANGE: action=parse no longer returns all langlinks for the page
+ with prop=langlinks by default. The new effectivelanglinks parameter will
+ request that the LanguageLinks hook be called to determine the effective
+ language links.
+* BREAKING CHANGE: list=allpages, list=langbacklinks, and prop=langlinks do not
+ apply the new LanguageLinks hook, and thus only consider language links
+ stored in the database.
+* (bug 47219) Allow specifying change type of Wikipedia feed items
+* prop=imageinfo now allows setting iiurlheight without setting iiurlwidth
+* prop=info now adds the content model and page language of the title.
+* New upload log entries will now contain information on the relevant
+ image (sha1 and timestamp).
+* (bug 49239) action=parse now can parse in preview and section preview modes.
+* (bug 49259) action=patrol now accepts revision ids.
+* (bug 48129) list=blocks&bkip= now correctly handles IPv6 CIDR ranges and
+ honors $wgBlockCIDRLimit. Note any clients passing invalid values to bkip
+ will now receive an error, rather than the previous behavior listing all
+ user blocks.
+* (bug 48201) action=parse&text=foo now assumes wikitext if no title is given,
+ rather than using the content model of the page "API".
+* action=watch no longer silently ignores hook abort.
+* (bug 50785) action=purge with forcelinkupdate=1 no longer queues refreshLinks
+ jobs in the job queue for link table updates of pages that use the given page
+ as a template. Instead, forcerecursivelinkupdate=1 is introduced and should
+ be used if that behaviour is desirable.
+* The 'debugLog' property (enabled by $wgDebugToolbar) no longer sets the log
+ entry values through ApiResult::content but directly. This changes the JSON
+ output from an array of objects with content in '*' to an array of strings
+ with the content.
+* (bug 51342) prop=imageinfo iicontinue now contains the dbkey, not the text
+ version of the title.
+* (bug 52538) action=edit will now use empty text instead of the contents
+ of section 0 when passed prependtext or appendtext with section=new.
+* Support for the 'gettoken' parameter to action=block and action=unblock,
+ deprecated since 1.20, has been removed.
+* (bug 49090) Token-getting functions will fail when using jsonp callbacks.
+* (bug 52699) action=upload returns normalized file name on warning
+ "exists-normalized" instead of filename to be uploaded to.
+* (bug 53884) action=edit will now return an error when the specified section
+ does not exist in the page.
+* Added meta=filerepoinfo API module for getting information about foreign
+ file repositories, and related ForeignAPIRepo methods getInfo and getApiUrl.
+* The new query module list=allfileusages to enumerate file usages was added.
+
+=== 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.
+
+* Batak Toba (bbc-latn) added.
+* (bug 46751) Made Buryat (Russia) (буряад) (bxr) fallback to Russian.
+
+=== Other changes in 1.22 ===
+* 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).
+* redirect.php was removed. It was unused.
+* ClickTracking integration was dropped from the mediaWiki.user.bucket
+ JavaScript function. The 'tracked' option is now ignored.
+* BREAKING CHANGE: Legacy skins Simple, MySkin, Chick, Standard and Nostalgia
+ were all removed. (Nostalgia was moved to an extension.) The SkinLegacy and
+ LegacyTemplate classes that supported them were removed as well and are now a
+ part of the Nostalgia extension.
+* Event namespace used by jquery.makeCollapsible has been changed from
+ 'mw-collapse' to 'mw-collapsible' for consistency with the module name.
+* BREAKING CHANGE: The "ExternalAuth" authentication subsystem was removed, along
+ with its associated globals of $wgExternalAuthType, $wgExternalAuthConf,
+ $wgAutocreatePolicy and $wgAllowPrefChange. Affected users are encouraged to
+ use AuthPlugin for external authentication/authorization needs.
+* The Quickbar feature of the legacy skin model and the last remnants of it
+ throughout the code base have been removed.
+* Externaledit/externaldiff preference was removed. Very few users used this
+ feature, and improper configuration can actually prevent a user from editing
+* Calling Linker methods using a skin will now output deprecation warnings.
+* (bug 46680) "Return to" links are no longer tagged with rel="next".
+* BREAKING CHANGE: mw.util.tooltipAccessKeyRegexp: The match group for the
+ accesskey character is now $6 instead of $5.
+* HipHop compiler (hphpc) support was removed. HipHop VM support (hhvm) was
+ added.
+* A new Special:Redirect page was added, providing lookup by revision ID,
+ user ID, or file name. The old Special:Filepath page was reimplemented
+ to redirect through Special:Redirect.
+* Monobook: Removed the old conditional stylesheets for Opera 6, 7 and 9.
+* Support for XHTML 1.0 has been removed. MediaWiki now only outputs (X)HTML5.
+* wikibits: User-agent related globals have been deprecated. The following
+ properties now default to false and emit mw.log.warn: is_gecko, is_chrome_mac,
+ is_chrome, webkit_version, is_safari_win, is_safari, webkit_match, is_ff2,
+ ff2_bugs, is_ff2_win, is_ff2_x11, opera95_bugs, opera7_bugs, opera6_bugs,
+ is_opera_95, is_opera_preseven, is_opera, and ie6_bugs.
+* (bug 48276) MediaWiki will now flash a confirmation message upon successfully
+ editing a page.
+* (bug 40785) mediawiki.legacy.ajax has been marked as deprecated. The following
+ properties now emit mw.log.warn when accessed: sajax_debug, sajax_init_object,
+ sajax_do_call and wfSupportsAjax.
+* BREAKING CHANGE: meta keywords are no longer supported. A <meta name="keywords"
+ will no longer be output and OutputPage::addKeyword no longer exists.
+* Methods Title::userCanEditCssSubpage and Title::userCanEditJsSubpage,
+ deprecated since 1.19, have been removed.
+* (bug 50134) Hook functions are no longer required to return a value. When a
+ hook function does not return a value (or when it returns an explicit null),
+ processing continues. To abort the hook, a hook function must return an
+ explicit, boolean false or a string error message. Other falsey values are
+ tantamount to a 'return true' in earlier versions of MediaWiki.
+* BREAKING CHANGE: The EditSectionLink hook was removed after being
+ deprecated since MediaWiki 1.14. Use DoEditSectionLink instead.
+* (bug 48256) The 'editsection-brackets' optional message was removed.
+ Section edit links' brackets can now be customized using CSS by
+ styling span.mw-editsection-bracket.
+* The usePatrol function in ChangesList has been marked as deprecated.
+* (bug 50785) A "null edit", that is, a save action in which no changes to the
+ page text are made and no revision recorded, will no longer send refreshLinks
+ jobs to the job table to update pages which use the edited page as a template.
+* The LivePreviewPrepare and LivePreviewDone events triggered on "jQuery( mw )"
+ have been deprecated in favour of using mw.hook.
+* The 'showjumplinks' user preference has been removed, jump links are now
+ always included.
+* Methods RecentChange::notifyRC2UDP, RecentChange::sendToUDP, and
+ RecentChange::cleanupForIRC have been deprecated, as it is now the
+ responsibility of classes implementing the RCFeedFormatter and RCFeedEngine
+ interfaces to implement the formatting and delivery for recent change
+ notifications.
+* SpecialPrefixindex methods namespacePrefixForm() and showPrefixChunk() have
+ been made protected. They were accepting form variance arguments, this is now
+ using properties in the SpecialPrefixindex class.
+* (bug 50310) BREAKING CHANGE: wikibits: Drop support for mwCustomEditButtons.
+ It defaults to an empty array and emits mw.log.warn when accessed.
+* BREAKING CHANGE: Special:Disambiguations has been removed from MediaWiki core.
+ Functions related to disambiguation pages are now handled by the Disambiguator
+ extension (https://www.mediawiki.org/wiki/Extension:Disambiguator) (bug
+ 35981).
+* BREAKING CHANGE: The 'mediawiki.legacy.wikiprintable' module has been removed.
+ The skins/common/wikiprintable.css file no longer exists. Return value of
+ Skin#commonPrintStylesheet is ignored. Please use the 'mediawiki.legacy.commonPrint'
+ module instead or base your skin on SkinTemplate.
+* (bug 49629) The hook ExtractThumbParamaters has been deprecated in favour
+ of media handler overriding MediaHandler::parseParamString.
+* (bug 46512) The collapsibleNav feature from the Vector extension has been moved
+ to the Vector skin in core.
+* SpecialRecentChanges::addRecentChangesJS() function has been renamed
+ to addModules() and made protected.
+* Methods WatchAction::doWatch and WatchAction::doUnwatch now return a Status
+ object instead of a boolean.
+* Information boxes (CSS classes errorbox, warningbox, successbox) have been
+ made more subtle.
+* BREAKING CHANGE: The module 'mediawiki.legacy.IEFixes' has been removed as it was
+ unused. The file skins/common/IEFixes.js remains but is only used by wikibits.
+ The file never contained any re-usable components. To use it in a skin, load
+ 'mediawiki.legacy.wikibits' (which IEFixes depends on) and that will import
+ IEFixes automatically if user agent conditions are met.
+* Code specific to the Math extension was marked as deprecated.
+* mediawiki.util: mw.util.wikiGetlink has been renamed to getUrl. (The old name
+ still works, but is deprecated.)
-MediaWiki 1.21 is an alpha-quality branch and is not recommended for use in
-production.
+== MediaWiki 1.21 ==
=== Configuration changes in 1.21 ===
* (bug 29374) $wgVectorUseSimpleSearch is now enabled by default.
* (bug 26253) $wgPostCommitUpdateList has been removed
* The PHPUnit test suite has been removed from this release due to serious issues
which should be resolved by the 1.18 release.
-* Oracle DB now uses the __destruct fuction to commit/close connection as it
+* Oracle DB now uses the __destruct function to commit/close connection as it
doesn't commit on close if transation is triggered in OCI.
== MediaWiki 1.16 ==
+++ /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.
-* Removed $wgLocalMessageCacheSerialized, it is now always true.
-* $wgVectorUseIconWatch is now enabled by default.
-* $wgCascadingRestrictionLevels was added.
-* ftps, ssh, sftp, xmpp, sip, sips, tel, sms, bitcoin, magnet, urn, and geo
- have been whitelisted inside of $wgUrlProtocols.
-* $wgDocType and $wgDTD have been removed and are no longer used for the DOCTYPE.
-* $wgHtml5 is no longer used by core. Setting it to false will no longer disable HTML5.
- It is still set to true for extension compatibility but doing so in extensions is deprecated.
-* $wgXhtmlDefaultNamespace is no longer used by core. Setting it will no longer change the
- xmlns used by MediaWiki. Reliance on this variable by extensions is deprecated.
-* $wgHandheldStyle was removed.
-* $wgHandheldForIPhone was removed.
-* $wgJsMimeType is no longer used by core. Most usage has been removed since
- HTML output is now exclusively HTML5.
-* $wgDBOracleDRCP added. True enables persistent connection with DRCP on Oracle.
-* $wgLogAutopatrol added to allow disabling logging of autopatrol edits in the logging table.
- default for $wgLogAutopatrol is true.
-* The 'edit' right no longer allows for editing a user's own CSS and JS.
-* New rights 'editmyusercss', 'editmyuserjs', 'viewmywatchlist',
- 'editmywatchlist', 'viewmyprivateinfo', 'editmyprivateinfo', and
- 'editmyoptions' restrict actions that were formerly allowed by default. They
- have been added to the default for $wgGroupPermissions['*'].
-* The 'editprotected' right no longer allows bypassing of all page protection
- restrictions. Any group using it for this purpose will now need to have all
- the individual rights listed in $wgRestrictionTypes for the same effect.
-* The 'protect' and 'autoconfirmed' rights are no longer used for the default
- page protection levels. The rights 'editprotected' and 'editsemiprotected'
- are now used for this purpose instead.
-* (bug 40866) wgOldChangeTagsIndex removed.
-* $wgNoFollowDomainExceptions now only matches entire domains. For example,
- an entry for 'bar.com' will still match 'foo.bar.com' but not 'foobar.com'.
-* $wgCopyUploadTimeout and $wgCopyUploadAsyncTimeout added to change the timeout times for
- fetching the file during upload by url.
-* New key added to $wgGalleryOptions - $wgGalleryOptions['mode'] to set
- default gallery mode.
-* New hook 'GalleryGetModes' to allow extensions to make new gallery modes.
-* The checkbox for staying in HTTPS displayed on the login form when $wgSecureLogin is
- enabled has been removed. Instead, whether the user stays in HTTPS will be determined
- based on the user's preferences, and whether they came from HTTPS or not.
-* $wgRC2UDPAddress, $wgRC2UDPInterwikiPrefix, $wgRC2UDPOmitBots, $wgRC2UDPPort,
- and $wgRC2UDPPrefix configuration options have been deprecated in favor of a
- $wgRCFeeds configuration array. $wgRCFeeds makes both the format and
- destination of recent change notifications customizable, and allows for
- multiple destinations to be specified.
-* (bug 53862) portal-url, currentevents-url and helppage have been removed from the
- default Sidebar.
-* The 'vector-simplesearch' preference is now enabled by default. Previously
- it was only enabled if the Vector extension was installed.
-* The precise format of metric datagrams produced by the UDP profiler and stats counter
- may now be specified as $wgUDPProfilerFormatString and $wgStatsFormatString,
- respectively.
-* (bug 54597) $wgBlockOpenProxies, $wgProxyPorts, $wgProxyScriptPath, and
- $wgProxyMemcExpiry have been removed, along with the open proxy scanner
- script they were added for.
-* Default value of $wgMaxShellMemory has been tripled (it's now 300 MB).
-
-=== New features in 1.22 ===
-* You can now install extensions using Composer.
- See https://www.mediawiki.org/wiki/Composer
-* (bug 44525) mediawiki.jqueryMsg can now parse (whitelisted) HTML elements and attributes.
-* (bug 33454) Language::sprintfDate now has a timezone parameter, and supports
- the "eIOPTZ" formatting characters.
-* EditWarning: A warning is shown when an editor leaves the edit form without
- saving (enabled by default, users can opt-out via the 'useeditwarning'
- preference). This feature was moved from the Vector extension, and is now part
- of core for all skins. Take care when upgrading that you don't use an older
- version of the Vector extension as this feature may conflict.
-* New 'mediawiki.ui' CSS module providing mw-ui-* styles for buttons and a
- compact vertical form layout.
-* HTMLForm supports a new display format 'vform' which applies this compact vertical
- layout and button styling. Special:PasswordReset uses this format.
-* New versions of login (Special:UserLogin) and create account
- (Special:UserLogin/signup) forms using the "vform" compact vertical form layout.
- These forms use new messages that assume a "Help logging in" link, see
- https://www.mediawiki.org/wiki/Manual:Page_customizations;
- https://www.mediawiki.org/wiki/Account_creation_user_experience/Strings lists the
- message key changes.
-* (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).
-* The new hook 'APIGetPossibleErrors' to modify the list of possible errors was
- added.
-* (bug 25592) LogEventsList::showLogExtract() will now ignore various
- Pager-related WebRequest parameters by default, as this is overwhelmingly
- likely to be what was intended by users of the method. If any caller wishes
- to use these parameters, the new param 'useRequestParams' may be set to true.
-* mw.util.addPortletLink: Tooltip is no longer required to be plain (without
- an accesskey in it already). As such it now rountrips. Creating a link with a
- message as tooltip, grabbing the title attribute and using it to create
- another portlet will work as expected.
-* (bug 6747) {{ROOTPAGENAME}} introduced, contains the name of the topmost
- page without namespace.
-* BREAKING CHANGE: (bug 41729) Display editsection links next to headings. Also
- change their class name from .editsection to .mw-editsection and place them at
- the end of the heading element instead of the beginning. Client-side code and
- screen-scrapers will have to be adjusted to handle both cases (old HTML will
- still be visible on cached page renders until they are purged); extensions
- using the DoEditSectionLink or EditSectionLink hooks might need adjustments as
- well.
-* (bug 45535) introduced the new 'LanguageLinks' hook for manipulating the
- language links associated with a page before display.
-* Chosen (http://harvesthq.github.io/chosen/) was added as module 'jquery.chosen'
-* HTMLForm will turn multiselect checkboxes into a Chosen interface when setting cssclass 'mw-chosen'
-* rebuildLocalisationCache learned --lang option. Let you rebuild l10n caches
- of the specified languages instead of all of them.
-* New GetNewMessagesAlert hook allowing extensions to disable or modify the new
- messages alert
-* New wgUserNewMsgRevisionId JS global for logged in users. This will be null
- if the user has no new talk page messages. Otherwise it will be set to the
- revision ID of the oldest new talk page message. This will allow gadgets and
- extensions to create their own new message alerts on the client side.
-* mediawiki.log: Added log.warn wrapper (uses console.warn and console.trace).
-* mediawiki.log: Implemented log.deprecate. This method defines a property and
- uses ES5 getter/setter to emit a warning when they are used.
-* $wgCascadingRestrictionLevels was added, allowing one to specify restriction levels
- which can be cascading (previously 'sysop' was hard-coded as the only one).
-* XHTML5 support has been improved. If you set $wgMimeType = 'application/xhtml+xml'
- MediaWiki will try outputting markup acording to XHTML5 rules.
-* Altered hook 'ProtectionForm::save', adding the reason page protection is
- changed as third parameter.
-* New hook 'TitleSquidURLs' for manipulating the list of URLs to be purged from
- HTTP caches when a page is changed.
-* Changed the patrolling system to always show the link for patrolling in case the
- current revision is patrollable. This also removed the usage of the rcid URI parameters.
-* Oracle DB backend now supports Database Resident Connection Pooling (DRCP).
- Can be enabled by setting $wgDBOracleDRCP=true.
- Requires Oracle DB 11gR1 or above, enabled DRCP inside the DB itself and a
- propper connect string.
- More about DRCP can be found at:
- http://www.oracle-base.com/articles/11g/database-resident-connection-pool-11gr1.php
-* Add a new parameter $patrolFooterShown to hook ArticleViewFooter so the hook
- handlers can take further action based on the status of the patrol footer
-* A new hook TitleQuickPermissions was added to allow overriding of quick
- permissions in the Title class.
-* LinkCache singleton can now be altered or cleared, letting one to specify
- another instance that does not rely on a database backend.
-* MediaWiki's PHPUnit tests can now use PHPUnit installed using composer --dev.
-* (bug 43689) The lists of templates used on the page and hidden categories it
- is a member of, shown below the edit form, are now collapsible (and collapsed
- by default).
-* Parser profiling data, formerly only available in the "NewPP limit report"
- HTML comment, is now also displayed at the bottom of page previews.
-* Added ParserLimitReportPrepare and ParserLimitReportFormat hooks, deprecated
- ParserLimitReport hook.
-* New user rights have been added to increase granularity in rights management
- for extensions such as OAuth:
-** editmyusercss controls whether a user may edit their own CSS subpages.
-** editmyuserjs controls whether a user may edit their own JS subpages.
-** viewmywatchlist controls whether a user may view their watchlist.
-** editmywatchlist controls whether a user may edit their watchlist.
-** viewmyprivateinfo controls whether a user may access their private
- information (e.g. registered email address, real name).
-** editmyprivateinfo controls whether a user may change their private
- information.
-** editmyoptions controls whether a user may change their preferences.
-* Add new hook AbortTalkPageEmailNotification, this will be used to determine
- whether to send the regular talk page email notification
-* Action classes registered in $wgActions are now also supported in the form of
- a callback (which returns an instance of Action) instead of providing the name
- of a subclass of Action.
-* (bug 46513) Vector: Add the collapsibleTabs script from the Vector extension.
-* Added $wgRecentChangesFlags for defining new flags for RecentChanges and
- watchlists.
-* (bug 40518) mw.toolbar: Implemented mw.toolbar.addButtons for adding multiple
- button objects in one call.
-* Rights used for the default protection levels ('sysop' and 'autoconfirmed')
- are now used just for that purpose, instead of overloading other rights. This
- allows easy granting of the ability to edit sysop-protected pages without
- also granting the ability to protect and unprotect.
-* (bug 48256) Make brackets in section edit links accessible to CSS.
- They are now wrapped in <span class="mw-editsection-bracket" />.
-* (bug 8480) Allow handler specific parameters in galleries (like page number)
-* jquery.client: Add detection for Opera 15 and Internet Explorer 11.
-* Change tags (used by the AbuseFilter extension) are now shown on diff pages.
-* Change tag lists (shown on recent changes, watchlist, user contributions,
- history pages, diff pages) now include a link to Special:Tags to distinguish
- them from edit summaries.
-* Added a new method and hook, User::isEveryoneAllowed() and
- UserIsEveryoneAllowed, for use in situations where a "does everyone have this
- right?" check is used to avoid more expensive checks.
-* (bug 14431) Display "(No difference)" instead of an empty diff (when comparing
- revisions in the history or when previewing changes while editing).
-* New hook 'IsUploadAllowedFromUrl' is added which can be used to intercept uploads by
- URL, useful for blacklisting specific URLs
-* (bug 21912) Watchlist token implementation has been refactored and
- Special:ResetTokens was added to allow users to reset their tokens
- instead of presenting them in Preferences.
-* Special:PrefixIndex now lets you strip the searched prefix from the displayed
- titles. Given a list of articles named Bug1, Bug2, you can now transclude the
- list of bug numbers using: {{Special:PrefixIndex/Bug|stripprefix=1}}.
- The special page form received a new checkbox matching that option.
-* (bug 23580) Implement javascript callback interface "mw.hook".
-* (bug 30713) New mw.hook "wikipage.content".
-* (bug 40430) jquery.placeholder gets a new parameter to set the attribute value
- to be used.
-* $wgHTCPMulticastRouting renamed $wgHTCPRouting since it accepts unicast.
-* $wgHTCPRouting rules can now be passed an array of hosts/ports to send purge
- too. Can be used whenever several multicast group could be interested by a
- specific purge.
-* (bug 25931) Add Special:RandomInCategory.
-* mediawiki.util: addPortletLink now supports passing a jQuery object as nextnode.
-* <wbr> can now be used inside WikiText.
-* WebResponse::setcookie is much more featureful. Callers using PHP's
- setcookie() or setrawcookie() should begin using this instead.
-* New hook WebResponseSetCookie, called from WebResponse::setcookie().
-* New hook ResetSessionID, called when the session id is reset.
-* Add a mode parameter to <gallery> tag with potential options of "traditional",
- "nolines", "packed", "packed-overlay", or "packed-hover".
-* (bug 47399) A success message is now displayed after changing the password.
-* Make thumb.php give HTTP redirects for file redirects
-* (bug 30607) Special:ListFiles can now show old versions of files. Additionally
- Special:AllMyUploads was introduced so the user can get a list of all things
- they have ever uploaded, even if it was subsequently overriden.
-* Introduced Special:MyFiles and Special:AllMyFiles as an alias for Special:MyUploads
- and Special:AllMyUploads respectively.
-* IPv6 addresses in X-Forwarded-For headers are now normalised before checking
- against allowed proxy lists.
-* Add deferrable update support for callback/closure.
-* Add TitleMove hook before page renames.
-* Revision deletion backend code is moved out of SpecialRevisiondelete
-* Added {{REVISIONSIZE}} variable to get the current size of a revision.
-* Add support for the LESS stylesheet language to ResourceLoader. LESS is a
- stylesheet language that compiles into CSS. ResourceLoader file modules may
- include LESS style files; ResourceLoader will compile these files into CSS
- before sending them to the client.
-** The $wgResourceLoaderLESSVars configuration variable is an associative array
- mapping variable names to string CSS values. These variables are considered
- declared for all LESS files. Additional variables may be registered by
- adding keys to the array.
-** $wgResourceLoaderLESSFunctions is an associative array of custom LESS
- function names to PHP callables. See <http://leafo.net/lessphp/docs/#custom_functions>
- for more details regarding custom functions.
-** $wgResourceLoaderLESSImportPaths is an array of file system paths. Files
- referenced in LESS '@import' statements are looked up here first.
-* ResourceLoader supports hashes as module cache invalidation trigger (instead
- of or in addition to timestamps).
-* Added $wgExtensionEntryPointListFiles for use in mergeMessageFileList.php.
-* Added a hook, APIQuerySiteInfoStatisticsInfo, to allow extensions to modify
- the output of the API query meta=siteinfo&siprop=statistics
-* Primary keys have been added to both the archive table and the externallinks
- tables.
-* Added $wgEnableParserLimitReporting to control whether the NewPP limit report is
- output in a HTML comment.
-* The 'UnwatchArticle' and 'WatchArticle' hooks now support a Status object
- instead of just a boolean return value to abort the hook.
-* Added a hook, SpecialWatchlistGetNonRevisionTypes, to allow extensions
- with custom recentchanges entries to hook into the Watchlist without
- clobbering each other.
-* A hidden, empty input field was added to the edit form, and any edit that fills
- it in will be rejected. This prevents against the simplest form of spambots.
- Previously in the "SimpleAntiSpam" extension by Ryan Schmidt.
-* populateRevisionLength.php maintenance script updated to also populate
- archive.ar_len field.
-* (bug 43571) DatabaseMySQLBase learned to list views, optionally filtered by a
- prefix. Also fixed PHPUnit test suite when using a MySQL backend containing
- views.
-
-=== Bug fixes in 1.22 ===
-* (bug 47271) $wgContentHandlerUseDB should be set to false during the upgrade
-* Disable Special:PasswordReset when $wgEnableEmail is false. Previously one
- could still navigate to the page by entering the URL directly.
-* (bug 47138) Fixed a fatal error when a blocked user tries to automatically
- create an account on login due external authentication in some circumstances.
-* (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 47218) Special:BlockList now handles correctly user names with spaces
- when passed as subpage.
-* Pager's properly validate which fields are allowed to be sorted on.
-* mw.util.tooltipAccessKeyRegexp: The regex now matches "option-" as well.
- Support for Mac "option" was added in 1.16, but the regex was never updated.
-* (bug 46768) Usernames of blocking users now display correctly, even if numeric.
-* (bug 39590) Self-transclusions now show the most up to date result always
- after save instead of being a revision behind.
-* A bias in wfRandomString() toward digits 1-7 has been corrected. Generated
- strings will now start with digits 0 and 8-f as often as they should.
-* (bug 45371) Removed Parser_LinkHooks and CoreLinkFunctions classes.
-* (bug 41545) Allow <kbd>, <samp>, and <var> to be nested like allowed in html.
-* PLURAL magic word no longer causes a PHP notice when no matching form exists.
-* (bug 36641) Patrol page links no longer show on non-existent revisions.
-* (bug 35810) Pages not linked from Special:RecentChanges or Special:NewPages
- are patrollable now.
-* (bug 30213) JavaScript for search suggestions is now disabled when the API
- is disabled, and AJAX patrolling and watching are now disabled when use of
- the write API is not allowed.
-* (bug 48294) API: Fix chunk upload async mode.
-* (bug 46749) Broken files tracking category removed from pages if an image
- with that name is uploaded.
-* (bug 14176) System messages that are empty were previously incorrectly treated
- as non-existent, causing a fallback to the default. This stopped users from
- overriding system messages to make them blank.
-* (bug 48319) action=parse no longer returns an error if passed none of 'oldid',
- 'pageid', 'page', 'title', and 'text' (e.g. if only passed 'summary'). A
- warning will instead be issued if 'title' is non-default, unless no props are
- requested.
-* Special:Recentchangeslinked will now include upload log entries
-* (bug 41281) Fixed ugly output if file size could not be extracted for multi-page media.
-* (bug 50315) list=logevents API module will now output log entries by anonymous users.
-* (bug 38911) Handle headers with rowspan in jquery.tablesorter
-* (bug 658) Converted the table of contents on wiki pages from <table> to <div>
- and adjusted skin CSS accordingly. The CSS was carefully crafted to be
- backwards-compatible in all reasonable cases (uses of the __TOC__ magic word,
- the #toc CSS id and the .toc CSS class). However, particularly bad abuse of
- the id or the class can possibly break.
-* CSSJanus now supports rgb, hsl, rgba, and hsla color syntaxes.
-* Special:Listfiles can no longer be sorted by image name when filtering
- by user in miser mode.
-* (bug 49074) CSSJanus: Handle values of border-radius correctly.
-* Handle relative inclusions ({{../name}}) in main namespace with subpages
- enabled correctly (previously MediaWiki tried to include Template:Parent/name
- instead of just Parent/name).
-* Added $wgAPIUselessQueryPages to allow extensions to flag their query pages
- for non-inclusion in ApiQueryQueryPages.
-* (bug 50870) mediawiki.notification: Notification area should remain visible
- when scrolled down.
-* (bug 13438) Special:MIMESearch no longer an expensive special page.
-* (bug 48342) Fixed a fatal error when $wgValidateAllHtml is set to true and
- the function apache_request_headers() function is not available.
-* (bug 33399) LivePreview: Re-run wikipage content handlers
- (jquery.makeCollapsible, jquery.tablesorter) after preview content is loaded.
-* (bug 51891) Fixed PHP notice on Special:PagesWithProp when no properties
- are defined.
-* (bug 52006) Corrected documentation of $wgTranscludeCacheExpiry.
-* (bug 52077) The APIEditBeforeSave hook is giving the content of the whole
- revision as second argument now, rather than just the current section.
-* (bug 49694) $wgSpamRegex is now also applied on the new section headline text
- adding a new topic on a page
-* (bug 41756) Improve treatment of multiple comments on a blank line.
-* (bug 51064) Purge upstream caches when deleting file assets.
-* (bug 39012) File types with a mime that we do not know the extension for
- can no longer be uploaded as an extension that we do know the mime type
- for.
-* (bug 51742) Add data-sort-value for better sorting of hitcounts Special:Tags
-* (bug 26811) On DB error pages, server hostnames are now hidden when both
- $wgShowHostnames and $wgShowSQLErrors are false.
-* (bug 6200) line breaks in <blockquote> are handled like they are in <div>
-* (bug 14931) Default character set now set to 'utf8' when a new MySQL
- database is created.
-* (bug 47191) Fixed "Column 'si_title' cannot be part of FULLTEXT index"
- MySQL error when installing using the binary character set option.
-* (bug 45288) Support mysqli PHP extension
-* (bug 55818) BREAKING CHANGE: Removed undocumented 'Debug' hook in wfDebug.
- This resolves an infinite loop when using $wgDebugFunctionEntry = true.
-* (bug 56707) Correct tooltip of "Next n results" on query special pages.
-* (bug 56770) mw.util.addPortletLink: Check length before access array index.
-
-=== API changes in 1.22 ===
-* (bug 25553) 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.
-* (bug 46626) xmldoublequote parameter was removed. Because of a bug, the
- parameter has had no effect since MediaWiki 1.16, and so its removal is
- unlikely to impact existing clients.
-* (bug 47216) action=query&meta=siteinfo&siprop=skins will now indicate which
- skin is the default and which are unusable (e.g. listed in $wgSkipSkins).
-* (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.
-* action=opensearch no longer silently ignores the format parameter.
-* action=opensearch now supports format=jsonfm.
-* list=usercontribs&ucprop=ids will now include the parent revision id.
-* BREAKING CHANGE: action=parse no longer returns all langlinks for the page
- with prop=langlinks by default. The new effectivelanglinks parameter will
- request that the LanguageLinks hook be called to determine the effective
- language links.
-* BREAKING CHANGE: list=allpages, list=langbacklinks, and prop=langlinks do not
- apply the new LanguageLinks hook, and thus only consider language links
- stored in the database.
-* (bug 47219) Allow specifying change type of Wikipedia feed items
-* prop=imageinfo now allows setting iiurlheight without setting iiurlwidth
-* prop=info now adds the content model and page language of the title.
-* New upload log entries will now contain information on the relevant
- image (sha1 and timestamp).
-* (bug 49239) action=parse now can parse in preview and section preview modes.
-* (bug 49259) action=patrol now accepts revision ids.
-* (bug 48129) list=blocks&bkip= now correctly handles IPv6 CIDR ranges and
- honors $wgBlockCIDRLimit. Note any clients passing invalid values to bkip
- will now receive an error, rather than the previous behavior listing all
- user blocks.
-* (bug 48201) action=parse&text=foo now assumes wikitext if no title is given,
- rather than using the content model of the page "API".
-* action=watch no longer silently ignores hook abort.
-* (bug 50785) action=purge with forcelinkupdate=1 no longer queues refreshLinks
- jobs in the job queue for link table updates of pages that use the given page
- as a template. Instead, forcerecursivelinkupdate=1 is introduced and should
- be used if that behaviour is desirable.
-* The 'debugLog' property (enabled by $wgDebugToolbar) no longer sets the log
- entry values through ApiResult::content but directly. This changes the JSON
- output from an array of objects with content in '*' to an array of strings
- with the content.
-* (bug 51342) prop=imageinfo iicontinue now contains the dbkey, not the text
- version of the title.
-* (bug 52538) action=edit will now use empty text instead of the contents
- of section 0 when passed prependtext or appendtext with section=new.
-* Support for the 'gettoken' parameter to action=block and action=unblock,
- deprecated since 1.20, has been removed.
-* (bug 49090) Token-getting functions will fail when using jsonp callbacks.
-* (bug 52699) action=upload returns normalized file name on warning
- "exists-normalized" instead of filename to be uploaded to.
-* (bug 53884) action=edit will now return an error when the specified section
- does not exist in the page.
-* Added meta=filerepoinfo API module for getting information about foreign
- file repositories, and related ForeignAPIRepo methods getInfo and getApiUrl.
-* The new query module list=allfileusages to enumerate file usages was added.
-
-=== 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.
-
-* Batak Toba (bbc-latn) added.
-* (bug 46751) Made Buryat (Russia) (буряад) (bxr) fallback to Russian.
-
-=== Other changes in 1.22 ===
-* 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).
-* redirect.php was removed. It was unused.
-* ClickTracking integration was dropped from the mediaWiki.user.bucket
- JavaScript function. The 'tracked' option is now ignored.
-* BREAKING CHANGE: Legacy skins Simple, MySkin, Chick, Standard and Nostalgia
- were all removed. (Nostalgia was moved to an extension.) The SkinLegacy and
- LegacyTemplate classes that supported them were removed as well and are now a
- part of the Nostalgia extension.
-* Event namespace used by jquery.makeCollapsible has been changed from
- 'mw-collapse' to 'mw-collapsible' for consistency with the module name.
-* BREAKING CHANGE: The "ExternalAuth" authentication subsystem was removed, along
- with its associated globals of $wgExternalAuthType, $wgExternalAuthConf,
- $wgAutocreatePolicy and $wgAllowPrefChange. Affected users are encouraged to
- use AuthPlugin for external authentication/authorization needs.
-* The Quickbar feature of the legacy skin model and the last remnants of it
- throughout the code base have been removed.
-* Externaledit/externaldiff preference was removed. Very few users used this
- feature, and improper configuration can actually prevent a user from editing
-* Calling Linker methods using a skin will now output deprecation warnings.
-* (bug 46680) "Return to" links are no longer tagged with rel="next".
-* BREAKING CHANGE: mw.util.tooltipAccessKeyRegexp: The match group for the
- accesskey character is now $6 instead of $5.
-* HipHop compiler (hphpc) support was removed. HipHop VM support (hhvm) was
- added.
-* A new Special:Redirect page was added, providing lookup by revision ID,
- user ID, or file name. The old Special:Filepath page was reimplemented
- to redirect through Special:Redirect.
-* Monobook: Removed the old conditional stylesheets for Opera 6, 7 and 9.
-* Support for XHTML 1.0 has been removed. MediaWiki now only outputs (X)HTML5.
-* wikibits: User-agent related globals have been deprecated. The following
- properties now default to false and emit mw.log.warn: is_gecko, is_chrome_mac,
- is_chrome, webkit_version, is_safari_win, is_safari, webkit_match, is_ff2,
- ff2_bugs, is_ff2_win, is_ff2_x11, opera95_bugs, opera7_bugs, opera6_bugs,
- is_opera_95, is_opera_preseven, is_opera, and ie6_bugs.
-* (bug 48276) MediaWiki will now flash a confirmation message upon successfully
- editing a page.
-* (bug 40785) mediawiki.legacy.ajax has been marked as deprecated. The following
- properties now emit mw.log.warn when accessed: sajax_debug, sajax_init_object,
- sajax_do_call and wfSupportsAjax.
-* BREAKING CHANGE: meta keywords are no longer supported. A <meta name="keywords"
- will no longer be output and OutputPage::addKeyword no longer exists.
-* Methods Title::userCanEditCssSubpage and Title::userCanEditJsSubpage,
- deprecated since 1.19, have been removed.
-* (bug 50134) Hook functions are no longer required to return a value. When a
- hook function does not return a value (or when it returns an explicit null),
- processing continues. To abort the hook, a hook function must return an
- explicit, boolean false or a string error message. Other falsey values are
- tantamount to a 'return true' in earlier versions of MediaWiki.
-* BREAKING CHANGE: The EditSectionLink hook was removed after being
- deprecated since MediaWiki 1.14. Use DoEditSectionLink instead.
-* (bug 48256) The 'editsection-brackets' optional message was removed.
- Section edit links' brackets can now be customized using CSS by
- styling span.mw-editsection-bracket.
-* The usePatrol function in ChangesList has been marked as deprecated.
-* (bug 50785) A "null edit", that is, a save action in which no changes to the
- page text are made and no revision recorded, will no longer send refreshLinks
- jobs to the job table to update pages which use the edited page as a template.
-* The LivePreviewPrepare and LivePreviewDone events triggered on "jQuery( mw )"
- have been deprecated in favour of using mw.hook.
-* The 'showjumplinks' user preference has been removed, jump links are now
- always included.
-* Methods RecentChange::notifyRC2UDP, RecentChange::sendToUDP, and
- RecentChange::cleanupForIRC have been deprecated, as it is now the
- responsibility of classes implementing the RCFeedFormatter and RCFeedEngine
- interfaces to implement the formatting and delivery for recent change
- notifications.
-* SpecialPrefixindex methods namespacePrefixForm() and showPrefixChunk() have
- been made protected. They were accepting form variance arguments, this is now
- using properties in the SpecialPrefixindex class.
-* (bug 50310) BREAKING CHANGE: wikibits: Drop support for mwCustomEditButtons.
- It defaults to an empty array and emits mw.log.warn when accessed.
-* BREAKING CHANGE: Special:Disambiguations has been removed from MediaWiki core.
- Functions related to disambiguation pages are now handled by the Disambiguator
- extension (https://www.mediawiki.org/wiki/Extension:Disambiguator) (bug
- 35981).
-* BREAKING CHANGE: The 'mediawiki.legacy.wikiprintable' module has been removed.
- The skins/common/wikiprintable.css file no longer exists. Return value of
- Skin#commonPrintStylesheet is ignored. Please use the 'mediawiki.legacy.commonPrint'
- module instead or base your skin on SkinTemplate.
-* (bug 49629) The hook ExtractThumbParamaters has been deprecated in favour
- of media handler overriding MediaHandler::parseParamString.
-* (bug 46512) The collapsibleNav feature from the Vector extension has been moved
- to the Vector skin in core.
-* SpecialRecentChanges::addRecentChangesJS() function has been renamed
- to addModules() and made protected.
-* Methods WatchAction::doWatch and WatchAction::doUnwatch now return a Status
- object instead of a boolean.
-* Information boxes (CSS classes errorbox, warningbox, successbox) have been
- made more subtle.
-* BREAKING CHANGE: The module 'mediawiki.legacy.IEFixes' has been removed as it was
- unused. The file skins/common/IEFixes.js remains but is only used by wikibits.
- The file never contained any re-usable components. To use it in a skin, load
- 'mediawiki.legacy.wikibits' (which IEFixes depends on) and that will import
- IEFixes automatically if user agent conditions are met.
-* Code specific to the Math extension was marked as deprecated.
-* mediawiki.util: mw.util.wikiGetlink has been renamed to getUrl. (The old name
- still works, but is deprecated.)
-
-== 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.
* $wgSquidServersNoPurge now supports the use of Classless Inter-Domain
Routing (CIDR) notation to specify contiguous blocks of IPv4 and/or IPv6
addresses that should be trusted to provide X-Forwarded-For headers.
-* Preferences 'watchcreations' and 'watchdefault' ("Add pages I create and files
- I upload to my watchlist", "Add pages and files I edit to my watchlist") are
- now enabled by default.
+* Preferences 'watchcreations', 'watchdefault', 'enotifwatchlistpages' ("Add
+ pages I create and files I upload to my watchlist", "Add pages and files I
+ edit to my watchlist", "Email me when a page or file on my watchlist is
+ changed") are now enabled by default. In addition new user accounts' personal
+ and talk pages are now watched by them by default.
* $wgLBFactoryConf: Class names have had underscores removed. The configuration
should be updated if LBFactory_Simple or LBFactory_Multi is configured.
+* $wgPasswordSenderName has been deprecated. To set a custom mailer name,
+ the system message 'emailsender' should be modified (default: "{{SITENAME}}").
+* $wgDBAhandler was removed as the only class using it was also removed
+* The 'max threads' setting was removed from $wgDBservers.
+* Support for AdminSettings.php has been completely removed. All configuration
+ belongs in LocalSettings.php.
=== New features in 1.23 ===
* ResourceLoader can utilize the Web Storage API to cache modules client-side.
* (bug 56033) Add content model to the page information.
* Added Article::MissingArticleConditions hook to give extensions a chance to
hide their (unrelated) log entries.
+* Added LonelyPagesQuery hook to let extensions modify the query used to
+ generate Special:LonelyPages.
* Added $wgOpenSearchDefaultLimit defining the default number of entries to show
on action=opensearch API call.
* For namespaces with $wgNamespaceProtection (including the MediaWiki
* Added ApiBeforeMain hook, roughly equivalent to the BeforeInitialize hook:
it's called after everything is set up but before any major processing
happens.
+* The jquery.client module now performs a component-wise version comparison in
+ its #test method when strings are used in the browser map: version '1.10' is
+ now correctly considered larger than '1.2'. Using numbers in the version map
+ is not affected.
+* All API modules now support an assert parameter, which can either be
+ 'user' or 'bot'. The API will throw an error if the user is not logged
+ in (user) or does not have the 'bot' userright (bot). Based off of the
+ AssertEdit extension by Steve Sanbeg.
+* WikitextContent will now render redirects with the expected "redirect"
+ header, rather than as an ordered list. Code calling Article::viewRedirect
+ can probably be changed to no longer special-case redirects.
+* [[Special:Diff]] was added, allowing users to create internal links to
+ revision comparison pages using syntax such as [[Special:Diff/12345]],
+ [[Special:Diff/12345/prev]] or [[Special:Diff/12345/98765]].
+* New user accounts' personal and talk pages are now watched by them by default.
=== Bug fixes in 1.23 ===
* (bug 41759) The "updated since last visit" markers (on history pages, recent
* (bug 37812) ResourceLoader will notice when a module's definition changes and
recompile it accordingly.
* (bug 57201) SpecialRecentChangesFilters hook is now executed for feeds.
-
-=== API changes in 1.23 ===
+* (bug 58640) Fixed a compatibility issue with PCRE 8.34 that caused pages
+ to appear blank or with missing text.
+* (bug 56931) Updated the plural rules to CLDR 24. They are in new format
+ which is detailed in UTS 35 Rev 33. The PHP parser and evaluator as well as
+ the JavaScript evaluator were updated to support the new format. Plural rules
+ for some languages have changed, most notably Russian. Affected software
+ messages have been updated and marked for review at translatewiki.net.
+* (bug 14323) Redirect pages, when viewed with redirect=no, no longer hide the
+ remaining page content.
+* (bug 23542) imagelinks now stores both the redirect and target (as
+ templatelinks does).
+* (bug 58167) The web installer no longer throws an exception when PHP is
+ compiled without support for MySQL yet with support for another DBMS.
+* (bug 56199) Raw option of parser functions must now match complete word,
+ to take effect.
+* (bug 60543) Special:PrefixIndex forgot stripprefix=1 for "Next page" link
+
+=== Web API changes in 1.23 ===
* (bug 54884) action=parse&prop=categories now indicates hidden and missing
categories.
* action=query&meta=filerepoinfo now returns additional information for each
repo.
-* EditPage::spamPage() was deprecated since 1.17 and has been removed.
* action=parse&prop=languageshtml was deprecated in 1.18 and will be removed in
MediaWiki 1.24.
* action=parse now has disabletoc flag to disable table of contents in output.
-* SpecialRecentChanges::feedSetup() was removed.
* (bug 25702) list=allcategories, list=allimages, list=alllinks, list=allpages,
list=deletedrevs and list=filearchive did not handle case-sensitivity
properly for all parameters.
* ApiQueryBase::titlePartToKey allows an extra parameter that indicates the
namespace in order to properly capitalize the title part.
-* Renamed classes:
- - LBFactory_Fake to LBFactoryFake
- - LBFactory_Multi to LBFactoryMulti
- - LBFactory_Simple to LBFactorySimple
- - LBFactory_Single to LBFactorySingle
- - LoadBalancer_Single to LoadBalancerSingle
- - LoadMonitor_MySQL to LoadMonitorMySQL
- - LoadMonitor_Null to LoadMonitorNull
-* Removed methods:
- - Exif::getFormattedData() (deprecated in 1.18)
- - Exif::makeFormattedData() (deprecated in 1.18)
- - Linker::makeBrokenLink() (deprecated in 1.16)
- - Linker::makeBrokenLinkObj() (deprecated in 1.16)
- - Linker::makeColouredLinkObj() (deprecated in 1.16)
- - Linker::makeSizeLinkObj() (deprecated in 1.17)
+* (bug 57874) action=feedcontributions no longer has one item more than limit.
+* All API modules now support an assert parameter. See the new features section
+ for more details.
+* Added prop=contributors to fetch the list of contributors to the page.
+* The following API modules will now return entries where fields have been
+ revision-deleted: list=deletedrevs, list=filearchive, list=recentchanges,
+ list=watchlist. "hidden" indicators will be included, in the same style as is
+ already done for prop=revisions.
+* The following API modules will now return the content of revision-deleted
+ fields, in addition to the "hidden" indicators, if the querying user has the
+ necessary rights: list=logevents, list=usercontribs, prop=imageinfo,
+ prop=revisions.
+* The above modules, where applicable, will now return entries filtered by
+ revision-deleted fields if the querying user has the necessary rights. For
+ example, prop=revisions with rvuser or rvexcludeuser will no longer skip
+ revisions where the user was revision-deleted if the current user has the
+ deletedhistory right.
+* The 'hideuser' right, used when blocking, is no longer necessary or
+ sufficient for seeing contributions with revision-deleted in
+ list=usercontribs.
+* list=watchlist now uses the querying user's rights rather than the wlowner's
+ rights when checking whether wlprop=patrol is allowed.
=== Languages updated in 1.23 ===
regularly. Below only new and removed languages are listed, as well as
changes to languages because of Bugzilla reports.
-* Support was added for Northern Luri (lrc)
+* Support was added for Northern Luri (lrc).
=== Other changes in 1.23 ===
* The rc_type field in the recentchanges table has been superseded by a new
* The global variable $wgArticle has been removed after a lengthy deprecation.
* The global functions addButton and insertTags (for mw.toolbar.addButton and
mw.toolbar.insertTags) now emits mw.log.warn when accessed.
-* User::getPageRenderingHash() was deprecated since 1.17 and has been removed.
* The ExpandTemplates extension has been moved into MediaWiki core.
* (bug 52812) Removed "Disable search suggestions" from Preference.
* (bug 52809) Removed "Disable browser page caching" from Preference.
* A page_links_updated field has been added to the page table.
* SpecialPage::getTitle has been deprecated in favor of
SpecialPage::getPageTitle.
+* BREAKING CHANGE: Two potentially backwards-incompatible changes have been made
+ to the 'SpecialWatchlistQuery' hook's last parameter (array $values) to make
+ the hook more consistent with the 'SpecialRecentChangesQuery' one:
+** Several array keys have been renamed: hideMinor → hideminor,
+ hideBots → hidebots, hideAnons → hideanons, hideLiu → hideliu,
+ hidePatrolled → hidepatrolled, hideOwn → hidemyself.
+** The parameter value is now a FormOptions object, not a plain array (array
+ access operators should continue to work, as it implements the ArrayAccess
+ interface).
+* Option to mark hooks as deprecated has been added.
+* (bug 52811) Preference "Enable section editing via [edit] links" was removed.
+* (bug 52813) Preference "Show table of contents (for pages with more than
+ 3 headings)" was removed.
+* (bug 52810) Preference "Justify paragraphs" was removed.
+* OutputPage::showErrorPage raises a notice if arguments are incoherent.
+
+==== Removed classes ====
+* FakeMemCachedClient (deprecated in 1.18)
+* RdfMetaData (unused)
+* TitleDependency (unused)
+* TitleListDependency (unused)
+* WikiError (deprecated in 1.17)
+* WikiXmlError (deprecated in 1.17)
+* WikiErrorMsg (deprecated in 1.17)
+
+==== Renamed classes ====
+* CdbReader_DBA to CdbReaderDBA
+* CdbReader_PHP to CdbReaderPHP
+* CdbWriter_DBA to CdbWriterDBA
+* CdbWriter_PHP to CdbWriterPHP
+* DiffOp_Add to DiffOpAdd
+* DiffOp_Change to DiffOpChange
+* DiffOp_Copy to DiffOpCopy
+* DiffOp_Delete to DiffOpDelete
+* HWLDF_WordAccumulator to HWLDFWordAccumulator
+* LBFactory_Fake to LBFactoryFake
+* LBFactory_Multi to LBFactoryMulti
+* LBFactory_Simple to LBFactorySimple
+* LBFactory_Single to LBFactorySingle
+* LCStore_Accel to LCStoreAccel
+* LCStore_CDB to LCStoreCDB
+* LCStore_DB to LCStoreDB
+* LCStore_Null to LCStoreNull
+* LoadBalancer_Single to LoadBalancerSingle
+* LoadMonitor_MySQL to LoadMonitorMySQL
+* LoadMonitor_Null to LoadMonitorNull
+* LocalisationCache_BulkLoad to LocalisationCacheBulkLoad
+* csvStatsOutput to CsvStatsOutput
+* extensionLanguages to ExtensionLanguages
+* languages to Languages
+* statsOutput to StatsOutput
+* textStatsOutput to TextStatsOutput
+* wikiStatsOutput to WikiStatsOutput
+
+==== Removed methods ====
+* ApiBase::getValidNamespaces() (deprecated in 1.17)
+* ApiMain::setCachePrivate() (deprecated in 1.17)
+* ApiMain::setVaryCookie (deprecated in 1.17)
+* Article::doRedirect() (deprecated in 1.18)
+* Article::doUnwatch() (deprecated in 1.18)
+* Article::doWatch() (deprecated in 1.18)
+* Article::forUpdate() (deprecated in 1.18)
+* Article::markpatrolled() (deprecated in 1.18)
+* Article::unwatch() (deprecated in 1.18)
+* Article::watch() (deprecated in 1.18)
+* Block::clear() (deprecated in 1.18)
+* Block::decodeExpiry() (deprecated in 1.18)
+* Block::encodeExpiry() (deprecated in 1.18)
+* Block::forUpdate() (deprecated in 1.18)
+* Block::infinity() (deprecated in 1.18)
+* Block::load() (deprecated in 1.18)
+* Block::newFromDB() (deprecated in 1.18)
+* Block::normaliseRange() (deprecated in 1.18)
+* Block::parseExpiryInput() (deprecated in 1.18)
+* CategoryViewer::addSubcategory() (deprecated in 1.17)
+* EditPage::spamPage() (deprecated since 1.17)
+* Exif::getFormattedData() (deprecated in 1.18)
+* Exif::makeFormattedData() (deprecated in 1.18)
+* in_string (deprecated in 1.21)
+* Language::convertLinkToAllVariants() (deprecated in 1.17)
+* LanguageConverter::convertLinkToAllVariants() (deprecated in 1.17)
+* Linker::makeBrokenLink() (deprecated in 1.16)
+* Linker::makeBrokenLinkObj() (deprecated in 1.16)
+* Linker::makeColouredLinkObj() (deprecated in 1.16)
+* Linker::makeSizeLinkObj() (deprecated in 1.17)
+* MediaWiki::articleFromTitle() (deprecated in 1.18)
+* ParserOptions::getkin() (deprecated 1.18)
+* ProfilerSimple::getCpuTime (deprecated in 1.20)
+* Revision::revText() (deprecated in 1.17)
+* SkinTemplate::jstext() (deprecated in 1.21)
+* SpecialPage::__call() (deprecated in 1.17)
+* SpecialPage::executePath() (deprecated in 1.18)
+* SpecialPage::exists() (deprecated in 1.18)
+* SpecialPage::file() (deprecated in 1.18)
+* SpecialPage::func() (deprecated in 1.18)
+* SpecialPage::getGroup() (deprecated in 1.18)
+* SpecialPage::getPage() (deprecated in 1.18)
+* SpecialPage::getPageByAlias() (deprecated in 1.18)
+* SpecialPage::getLocalNameFor() (deprecated in 1.18)
+* SpecialPage::getRegularPages() (deprecated in 1.18)
+* SpecialPage::getRestrictedPages() (deprecated in 1.18)
+* SpecialPage::getTitleForAlias() (deprecated in 1.18)
+* SpecialPage::getUsablePages() (deprecated in 1.18)
+* SpecialPage::includable() (deprecated in 1.18)
+* SpecialPage::init()
+* SpecialPage::initAliasList() (deprecated in 1.18)
+* SpecialPage::initList() (deprecated in 1.18)
+* SpecialPage::name() (deprecated in 1.18)
+* SpecialPage::removePage() (deprecated in 1.18)
+* SpecialPage::resolveAlias() (deprecated in 1.18)
+* SpecialPage::resolveAliasWithSubpage() (deprecated in 1.18)
+* SpecialPage::restriction() (deprecated in 1.18)
+* SpecialPage::setGroup() (deprecated in 1.18)
+* SpecialRecentChanges::feedSetup()
+* SpecialRevisionDelete::extractBitField() (deprecated in 1.22)
+* User::getPageRenderingHash() (deprecated in 1.17)
+* WebRequest::getFileSize() (deprecated in 1.17)
+* WebRequest::isPathInfoBad() (deprecated in 1.17)
+* wfGenerateToken (deprecated in 1.20)
+* wfStreamFile (deprecated in 1.19)
+* wfUILang (deprecated in 1.18)
+* WikiPage::createUpdates() (deprecated in 1.18)
+* WikiPage::quickEdit() (deprecated in 1.18)
+* WikiPage::useParserCache() (deprecated in 1.18)
+* WikiPage::viewUpdates() (deprecated in 1.18)
+
+==== Removed globals ====
+* $wgBetterDirectionality (deprecated in 1.18)
== Compatibility ==
// Process data & print results
$processor->execute();
+if ( function_exists( 'fastcgi_finish_request' ) ) {
+ fastcgi_finish_request();
+}
+
// Execute any deferred updates
DeferredUpdates::doUpdates();
// Log what the user did, for book-keeping purposes.
$endtime = microtime( true );
wfProfileOut( 'api.php' );
+
wfLogProfilingData();
// Log the request
"php": ">=5.3.2"
},
"suggest": {
- "ext-fileinfo": "*",
- "ext-mbstring": "*",
- "ext-wikidiff2": "*",
- "ext-apc": "*"
+ "ext-fileinfo": "More accurate file type detection for uploaded files",
+ "ext-mbstring": "Faster unicode handling",
+ "ext-wikidiff2": "Faster diff generation",
+ "ext-apc": "Speed up MediaWiki with opcode caching (before PHP 5.5)"
}
}
'AbortNewAccount': Return false to cancel explicit account creation.
$user: the User object about to be created (read-only, incomplete)
&$msg: out parameter: HTML to display on abort
+&$status: out parameter: Status object to return, replaces the older $msg param (added in 1.23)
+ Create the object with Status::newFatal() to ensure proper API error messages
+ are returned when creating account through API clients.
'AbortTalkPageEmailNotification': Return false to cancel talk page email notification
$targetUser: the user whom to send talk page email notification
$user: the User object that was created. (Parameter added in 1.7)
$byEmail: true when account was created "by email" (added in 1.12)
+'AddNewAccountApiForm': Allow modifying internal login form when creating an account via API.
+$apiModule: the ApiCreateAccount module calling
+$loginForm: the LoginForm used
+
+'AddNewAccountApiResult': Modify API output when creating a new account via API.
+$apiModule: the ApiCreateAccount module calling
+$loginForm: the LoginForm used
+&$result: associative array for API result data
+
'AfterFinalPageOutput': At the end of OutputPage::output() but before final
ob_end_flush() which will send the buffered output to the client. This allows
for last-minute modification of the output within the buffer by using
Wiki::articleFromTitle().
$title: Title (object) used to create the article object
$article: Article (object) that will be returned
+$context: IContextSource (object)
'ArticleInsertComplete': After a new article is created. DEPRECATED, use
PageContentInsertComplete.
'BlockIp': Before an IP address or user is blocked.
$block: the Block object about to be saved
$user: the user _doing_ the block (not the one being blocked)
+&$reason: if the hook is aborted, the error message to be returned in an array
'BlockIpComplete': After an IP address or user is blocked.
$block: the Block object that was saved
$modeName: the requested content model name
&$handler: set this to a ContentHandler object, if desired.
+'ContentModelCanBeUsedOn': Called to determine whether that content model can
+be used on a given page. This is especially useful to prevent some content models
+to be used in some special location.
+$contentModel: ID of the content model in question
+$title: the Title in question.
+&$ok: Output parameter, whether it is OK to use $contentModel on $title.
+Handler functions that modify $ok should generally return false to prevent further
+hooks from further modifying $ok.
+
'ConvertContent': Called by AbstractContent::convert when a conversion to another
content model is requested.
$content: The Content object to be converted.
'DiffRevisionTools': Override or extend the revision tools available from the
diff view, i.e. undo, etc.
-$rev: Revision object
+$newRev: Revision object of the "new" revision
&$links: Array of HTML links
+$oldRev: Revision object of the "old" revision (may be null)
'DiffViewHeader': Called before diff display
$diff: DifferenceEngine object that's calling
$cache: The LocalisationCache object
$code: language code
&$alldata: The localisation data from core and extensions
+&purgeBlobs: whether to purge/update the message blobs via MessageBlobStore::clear()
'LocalisationChecksBlacklist': When fetching the blacklist of
localisation checks.
&$revert: string that is displayed in the UI, similar to $comment.
$time: timestamp of the log entry (added in 1.12)
+'LonelyPagesQuery': Allow extensions to modify the query used by
+Special:LonelyPages.
+&$tables: tables to join in the query
+&$conds: conditions for the query
+&$joinConds: join conditions for the query
+
'MaintenanceRefreshLinksInit': before executing the refreshLinks.php maintenance
script.
$refreshLinks: RefreshLinks object
'PageRenderingHash': Alter the parser cache option hash key. A parser extension
which depends on user options should install this hook and append its values to
the key.
-$hash: reference to a hash key string which can be modified
+&$confstr: reference to a hash key string which can be modified
+$user: User (object) requesting the page
'ParserAfterParse': Called from Parser::parse() just after the call to
Parser::internalParse() returns.
$key: the section name
&$legend: the legend text. Defaults to wfMessage( "prefs-$key" )->text() but may be overridden
+'PreferencesFormPreSave': Override preferences being saved
+ $formData: array of user submitted data
+ $form: PreferencesForm object, also a ContextSource
+ $user: User object with preferences to be saved set
+ &$result: boolean indicating success
+
'PrefixSearchBackend': Override the title prefix search used for OpenSearch and
AJAX search suggestions. Put results into &$results outparam and return false.
$ns : array of int namespace keys to search in
&$tables: array of tables to be queried
&$join_conds: join conditions for the tables
&$fields: array of query fields
-$values: array of variables with watchlist options
+$opts: A FormOptions object with watchlist options for the current request
'SpecialWatchlistGetNonRevisionTypes': Called when building sql query for
SpecialWatchlist. Allows extensions to register custom values they have
if ( strpos( $path, $prefix ) === 0 ) {
$be = FileBackendGroup::singleton()->backendFromPath( $storageDir );
$filename = $storageDir . substr( $path, strlen( $prefix ) ); // strip prefix
+ // Check basic user authorization
+ if ( !RequestContext::getMain()->getUser()->isAllowed( 'read' ) ) {
+ wfForbidden( 'img-auth-accessdenied', 'img-auth-noread', $path );
+ return;
+ }
if ( $be->fileExists( array( 'src' => $filename ) ) ) {
wfDebugLog( 'img_auth', "Streaming `" . $filename . "`." );
$be->streamFile( array( 'src' => $filename ),
array( 'Cache-Control: private', 'Vary: Cookie' ) );
} else {
- wfForbidden( 'img-auth-accessdenied', 'img-auth-nofile', $filename );
+ wfForbidden( 'img-auth-accessdenied', 'img-auth-nofile', $path );
}
return;
}
}
$page = null;
- wfRunHooks( 'ArticleFromTitle', array( &$title, &$page ) );
+ wfRunHooks( 'ArticleFromTitle', array( &$title, &$page, $context ) );
if ( !$page ) {
switch ( $title->getNamespace() ) {
case NS_FILE:
return $this->mContentObject;
}
- /**
- * No-op
- * @deprecated since 1.18
- */
- public function forUpdate() {
- wfDeprecated( __METHOD__, '1.18' );
- }
-
/**
* Returns true if the currently-referenced revision is the current edit
* to this page (and it exists).
# Allow extensions do their own custom view for certain pages
$outputDone = true;
- } else {
- $content = $this->getContentObject();
- $rt = $content ? $content->getRedirectChain() : null;
- if ( $rt ) {
- wfDebug( __METHOD__ . ": showing redirect=no page\n" );
- # Viewing a redirect page (e.g. with parameter redirect=no)
- $outputPage->addHTML( $this->viewRedirect( $rt ) );
- # Parse just to get categories, displaytitle, etc.
- $this->mParserOutput = $content->getParserOutput( $this->getTitle(), $oldid, $parserOptions, false );
- $outputPage->addParserOutputNoText( $this->mParserOutput );
- $outputDone = true;
- }
}
break;
case 4:
# Run the parse, protected by a pool counter
wfDebug( __METHOD__ . ": doing uncached parse\n" );
+ $content = $this->getContentObject();
$poolArticleView = new PoolWorkArticleView( $this->getPage(), $parserOptions,
- $this->getRevIdFetched(), $useParserCache, $this->getContentObject() );
+ $this->getRevIdFetched(), $useParserCache, $content );
if ( !$poolArticleView->execute() ) {
$error = $poolArticleView->getError();
$this->mParserOutput = $poolArticleView->getParserOutput();
$outputPage->addParserOutput( $this->mParserOutput );
+ if ( $content->getRedirectTarget() ) {
+ $outputPage->addSubtitle( wfMessage( 'redirectpagesub' )->parse() );
+ }
# Don't cache a dirty ParserOutput object
if ( $poolArticleView->getIsDirty() ) {
$outputPage->addSubtitle( wfMessage( 'redirectedfrom' )->rawParams( $redir ) );
// Set the fragment if one was specified in the redirect
- if ( strval( $this->getTitle()->getFragment() ) != '' ) {
- $outputPage->addInlineScript( Xml::encodeJsCall(
- 'redirectToFragment', array( $this->getTitle()->getFragmentForURL() )
- ) );
+ if ( $this->getTitle()->hasFragment() ) {
+ $outputPage->addJsConfigVars( 'wgRedirectToFragment', $this->getTitle()->getFragmentForURL() );
+ $outputPage->addModules( 'mediawiki.action.view.redirectToFragment' );
}
// Add a <link rel="canonical"> tag
}
/**
- * View redirect
+ * Return the HTML for the top of a redirect page
+ *
+ * Chances are you should just be using the ParserOutput from
+ * WikitextContent::getParserOutput instead of calling this for redirects.
*
* @param $target Title|Array of destination(s) to redirect
* @param $appendSubtitle Boolean [optional]
* @return string containing HMTL with redirect link
*/
public function viewRedirect( $target, $appendSubtitle = true, $forceKnown = false ) {
+ $lang = $this->getTitle()->getPageLanguage();
+ if ( $appendSubtitle ) {
+ $out = $this->getContext()->getOutput();
+ $out->addSubtitle( wfMessage( 'redirectpagesub' )->parse() );
+ }
+ return static::getRedirectHeaderHtml( $lang, $target, $forceKnown );
+ }
+
+ /**
+ * Return the HTML for the top of a redirect page
+ *
+ * Chances are you should just be using the ParserOutput from
+ * WikitextContent::getParserOutput instead of calling this for redirects.
+ *
+ * @since 1.23
+ * @param Language $lang
+ * @param Title|array $target destination(s) to redirect
+ * @param bool $forceKnown Should the image be shown as a bluelink regardless of existence?
+ * @return string containing HMTL with redirect link
+ */
+ public static function getRedirectHeaderHtml( Language $lang, $target, $forceKnown = false ) {
global $wgStylePath;
if ( !is_array( $target ) ) {
$target = array( $target );
}
- $lang = $this->getTitle()->getPageLanguage();
$imageDir = $lang->getDir();
- if ( $appendSubtitle ) {
- $out = $this->getContext()->getOutput();
- $out->addSubtitle( wfMessage( 'redirectpagesub' )->escaped() );
- }
-
// the loop prepends the arrow image before the link, so the first case needs to be outside
/**
$outputPage->setPageTitle( wfMessage( 'delete-confirm', $this->getTitle()->getPrefixedText() ) );
$outputPage->addBacklinkSubtitle( $this->getTitle() );
$outputPage->setRobotPolicy( 'noindex,nofollow' );
+ $backlinkCache = $this->getTitle()->getBacklinkCache();
+ if ( $backlinkCache->hasLinks( 'pagelinks' ) || $backlinkCache->hasLinks( 'templatelinks' ) ) {
+ $outputPage->wrapWikiMsg( "<div class='mw-warning plainlinks'>\n$1\n</div>\n",
+ 'deleting-backlinks-warning' );
+ }
$outputPage->addWikiMsg( 'confirmdeletetext' );
wfRunHooks( 'ArticleConfirmDelete', array( $this, $outputPage, &$reason ) );
Action::factory( 'info', $this )->show();
}
- /**
- * Mark this particular edit/page as patrolled
- * @deprecated since 1.18
- */
- public function markpatrolled() {
- wfDeprecated( __METHOD__, '1.18' );
- Action::factory( 'markpatrolled', $this )->show();
- }
-
/**
* Handle action=purge
* @deprecated since 1.19
Action::factory( 'rollback', $this )->show();
}
- /**
- * User-interface handler for the "watch" action.
- * Requires Request to pass a token as of 1.18.
- * @deprecated since 1.18
- */
- public function watch() {
- wfDeprecated( __METHOD__, '1.18' );
- Action::factory( 'watch', $this )->show();
- }
-
- /**
- * Add this page to the current user's watchlist
- *
- * This is safe to be called multiple times
- *
- * @return bool true on successful watch operation
- * @deprecated since 1.18
- */
- public function doWatch() {
- wfDeprecated( __METHOD__, '1.18' );
- return WatchAction::doWatch( $this->getTitle(), $this->getContext()->getUser() );
- }
-
- /**
- * User interface handler for the "unwatch" action.
- * Requires Request to pass a token as of 1.18.
- * @deprecated since 1.18
- */
- public function unwatch() {
- wfDeprecated( __METHOD__, '1.18' );
- Action::factory( 'unwatch', $this )->show();
- }
-
- /**
- * Stop watching a page
- * @return bool true on successful unwatch
- * @deprecated since 1.18
- */
- public function doUnwatch() {
- wfDeprecated( __METHOD__, '1.18' );
- return WatchAction::doUnwatch( $this->getTitle(), $this->getContext()->getUser() );
- }
-
- /**
- * Output a redirect back to the article.
- * This is typically used after an edit.
- *
- * @deprecated in 1.18; call OutputPage::redirect() directly
- * @param $noRedir Boolean: add redirect=no
- * @param string $sectionAnchor section to redirect to, including "#"
- * @param string $extraQuery extra query params
- */
- public function doRedirect( $noRedir = false, $sectionAnchor = '', $extraQuery = '' ) {
- wfDeprecated( __METHOD__, '1.18' );
- if ( $noRedir ) {
- $query = 'redirect=no';
- if ( $extraQuery ) {
- $query .= "&$extraQuery";
- }
- } else {
- $query = $extraQuery;
- }
-
- $this->getContext()->getOutput()->redirect( $this->getTitle()->getFullURL( $query ) . $sectionAnchor );
- }
-
/**
* Use PHP's magic __get handler to handle accessing of
* raw WikiPage fields for backwards compatibility.
'CategoryPage' => 'includes/CategoryPage.php',
'CategoryViewer' => 'includes/CategoryViewer.php',
'ChangesFeed' => 'includes/ChangesFeed.php',
+ 'ChangesListSpecialPage' => 'includes/specialpage/ChangesListSpecialPage.php',
'ChangeTags' => 'includes/ChangeTags.php',
'ChannelFeed' => 'includes/Feed.php',
'Collation' => 'includes/Collation.php',
'QueryPage' => 'includes/QueryPage.php',
'QuickTemplate' => 'includes/SkinTemplate.php',
'RawMessage' => 'includes/Message.php',
- 'RdfMetaData' => 'includes/Metadata.php',
'ReadOnlyError' => 'includes/Exception.php',
'RedirectSpecialArticle' => 'includes/specialpage/RedirectSpecialPage.php',
'RedirectSpecialPage' => 'includes/specialpage/RedirectSpecialPage.php',
'SpecialMyuploads' => 'includes/specials/SpecialMyRedirectPages.php',
'SpecialAllMyUploads' => 'includes/specials/SpecialMyRedirectPages.php',
'SpecialPage' => 'includes/specialpage/SpecialPage.php',
- 'SpecialPageFactory' => 'includes/SpecialPageFactory.php',
+ 'SpecialPageFactory' => 'includes/specialpage/SpecialPageFactory.php',
'SpecialRedirectToSpecial' => 'includes/specialpage/RedirectSpecialPage.php',
'SquidPurgeClient' => 'includes/SquidPurgeClient.php',
'SquidPurgeClientPool' => 'includes/SquidPurgeClient.php',
'StubObject' => 'includes/StubObject.php',
'StubUserLang' => 'includes/StubObject.php',
'TablePager' => 'includes/Pager.php',
- 'MWTimestamp' => 'includes/Timestamp.php',
- 'TimestampException' => 'includes/Timestamp.php',
+ 'MWTimestamp' => 'includes/MWTimestamp.php',
+ 'TimestampException' => 'includes/TimestampException.php',
'Title' => 'includes/Title.php',
'TitleArray' => 'includes/TitleArray.php',
- 'TitleArrayFromResult' => 'includes/TitleArray.php',
+ 'TitleArrayFromResult' => 'includes/TitleArrayFromResult.php',
'ThrottledError' => 'includes/Exception.php',
'UnlistedSpecialPage' => 'includes/specialpage/UnlistedSpecialPage.php',
'UploadSourceAdapter' => 'includes/Import.php',
'UppercaseCollation' => 'includes/Collation.php',
'User' => 'includes/User.php',
'UserArray' => 'includes/UserArray.php',
- 'UserArrayFromResult' => 'includes/UserArray.php',
+ 'UserArrayFromResult' => 'includes/UserArrayFromResult.php',
'UserBlockedError' => 'includes/Exception.php',
'UserNotLoggedIn' => 'includes/Exception.php',
'UserCache' => 'includes/cache/UserCache.php',
'WebRequestUpload' => 'includes/WebRequest.php',
'WebResponse' => 'includes/WebResponse.php',
'WikiCategoryPage' => 'includes/WikiCategoryPage.php',
- 'WikiError' => 'includes/WikiError.php',
- 'WikiErrorMsg' => 'includes/WikiError.php',
'WikiExporter' => 'includes/Export.php',
'WikiFilePage' => 'includes/WikiFilePage.php',
'WikiImporter' => 'includes/Import.php',
'WikiRevision' => 'includes/Import.php',
'WikiMap' => 'includes/WikiMap.php',
'WikiReference' => 'includes/WikiMap.php',
- 'WikiXmlError' => 'includes/WikiError.php',
'Xml' => 'includes/Xml.php',
'XmlDumpWriter' => 'includes/Export.php',
'XmlJsCode' => 'includes/Xml.php',
'XMLReader2' => 'includes/Import.php',
'XmlSelect' => 'includes/Xml.php',
- 'ZhClient' => 'includes/ZhClient.php',
# includes/actions
'CachedAction' => 'includes/actions/CachedAction.php',
'ApiQueryCategoryInfo' => 'includes/api/ApiQueryCategoryInfo.php',
'ApiQueryCategoryMembers' => 'includes/api/ApiQueryCategoryMembers.php',
'ApiQueryContributions' => 'includes/api/ApiQueryUserContributions.php',
+ 'ApiQueryContributors' => 'includes/api/ApiQueryContributors.php',
'ApiQueryDeletedrevs' => 'includes/api/ApiQueryDeletedrevs.php',
'ApiQueryDisabled' => 'includes/api/ApiQueryDisabled.php',
'ApiQueryDuplicateFiles' => 'includes/api/ApiQueryDuplicateFiles.php',
'RedisConnectionPool' => 'includes/clientpool/RedisConnectionPool.php',
'RedisConnRef' => 'includes/clientpool/RedisConnectionPool.php',
+ # includes/config
+ 'Config' => 'includes/config/Config.php',
+ 'GlobalConfig' => 'includes/config/GlobalConfig.php',
+
# includes/content
'AbstractContent' => 'includes/content/AbstractContent.php',
'ContentHandler' => 'includes/content/ContentHandler.php',
'ScopedLock' => 'includes/filebackend/lockmanager/ScopedLock.php',
'FSLockManager' => 'includes/filebackend/lockmanager/FSLockManager.php',
'DBLockManager' => 'includes/filebackend/lockmanager/DBLockManager.php',
- 'LSLockManager' => 'includes/filebackend/lockmanager/LSLockManager.php',
'MemcLockManager' => 'includes/filebackend/lockmanager/MemcLockManager.php',
'QuorumLockManager' => 'includes/filebackend/lockmanager/QuorumLockManager.php',
'MySqlLockManager' => 'includes/filebackend/lockmanager/DBLockManager.php',
'MysqlUpdater' => 'includes/installer/MysqlUpdater.php',
'OracleInstaller' => 'includes/installer/OracleInstaller.php',
'OracleUpdater' => 'includes/installer/OracleUpdater.php',
- 'PhpRefCallBugTester' => 'includes/installer/PhpBugTests.php',
'PhpXmlBugTester' => 'includes/installer/PhpBugTests.php',
'PostgresInstaller' => 'includes/installer/PostgresInstaller.php',
'PostgresUpdater' => 'includes/installer/PostgresUpdater.php',
'WebInstallerPage' => 'includes/installer/WebInstallerPage.php',
# includes/job
+ 'IJobSpecification' => 'includes/job/JobSpecification.php',
'Job' => 'includes/job/Job.php',
'JobQueue' => 'includes/job/JobQueue.php',
'JobQueueAggregator' => 'includes/job/aggregator/JobQueueAggregator.php',
'JobQueueGroup' => 'includes/job/JobQueueGroup.php',
'JobQueueFederated' => 'includes/job/JobQueueFederated.php',
'JobQueueRedis' => 'includes/job/JobQueueRedis.php',
+ 'JobSpecification' => 'includes/job/JobSpecification.php',
# includes/job/jobs
'DoubleRedirectJob' => 'includes/job/jobs/DoubleRedirectJob.php',
'CSSJanus_Tokenizer' => 'includes/libs/CSSJanus.php',
'CSSMin' => 'includes/libs/CSSMin.php',
'GenericArrayObject' => 'includes/libs/GenericArrayObject.php',
+ 'HashRing' => 'includes/libs/HashRing.php',
'HttpStatus' => 'includes/libs/HttpStatus.php',
'IEContentAnalyzer' => 'includes/libs/IEContentAnalyzer.php',
'IEUrlExtension' => 'includes/libs/IEUrlExtension.php',
+ 'MappedIterator' => 'includes/libs/MappedIterator.php',
'JavaScriptMinifier' => 'includes/libs/JavaScriptMinifier.php',
'JSCompilerContext' => 'includes/libs/jsminplus.php',
'JSMinPlus' => 'includes/libs/jsminplus.php',
'JSParser' => 'includes/libs/jsminplus.php',
'JSToken' => 'includes/libs/jsminplus.php',
'JSTokenizer' => 'includes/libs/jsminplus.php',
+ 'MultiHttpClient' => 'includes/libs/MultiHttpClient.php',
+ 'MWMessagePack' => 'includes/libs/MWMessagePack.php',
+ 'RunningStat' => 'includes/libs/RunningStat.php',
'ScopedCallback' => 'includes/libs/ScopedCallback.php',
'ScopedPHPTimeout' => 'includes/libs/ScopedPHPTimeout.php',
'XmlTypeCheck' => 'includes/libs/XmlTypeCheck.php',
# includes/objectcache
'APCBagOStuff' => 'includes/objectcache/APCBagOStuff.php',
'BagOStuff' => 'includes/objectcache/BagOStuff.php',
- 'DBABagOStuff' => 'includes/objectcache/DBABagOStuff.php',
- 'EhcacheBagOStuff' => 'includes/objectcache/EhcacheBagOStuff.php',
'EmptyBagOStuff' => 'includes/objectcache/EmptyBagOStuff.php',
- 'FakeMemCachedClient' => 'includes/objectcache/EmptyBagOStuff.php',
'HashBagOStuff' => 'includes/objectcache/HashBagOStuff.php',
'MediaWikiBagOStuff' => 'includes/objectcache/SqlBagOStuff.php',
'MemCachedClientforWiki' => 'includes/objectcache/MemcachedClient.php',
# includes/profiler
'Profiler' => 'includes/profiler/Profiler.php',
+ 'ProfilerMwprof' => 'includes/profiler/ProfilerMwprof.php',
'ProfilerSimple' => 'includes/profiler/ProfilerSimple.php',
'ProfilerSimpleText' => 'includes/profiler/ProfilerSimpleText.php',
'ProfilerSimpleTrace' => 'includes/profiler/ProfilerSimpleTrace.php',
'RCFeedFormatter' => 'includes/rcfeed/RCFeedFormatter.php',
'IRCColourfulRCFeedFormatter' => 'includes/rcfeed/IRCColourfulRCFeedFormatter.php',
'JSONRCFeedFormatter' => 'includes/rcfeed/JSONRCFeedFormatter.php',
+ 'XMLRCFeedFormatter' => 'includes/rcfeed/XMLRCFeedFormatter.php',
+ 'MachineReadableRCFeedFormatter' => 'includes/rcfeed/MachineReadableRCFeedFormatter.php',
# includes/resourceloader
'ResourceLoader' => 'includes/resourceloader/ResourceLoader.php',
'MySQLSearchResultSet' => 'includes/search/SearchMySQL.php',
'PostgresSearchResult' => 'includes/search/SearchPostgres.php',
'PostgresSearchResultSet' => 'includes/search/SearchPostgres.php',
+ 'SearchDatabase' => 'includes/search/SearchDatabase.php',
'SearchEngine' => 'includes/search/SearchEngine.php',
'SearchEngineDummy' => 'includes/search/SearchEngine.php',
'SearchHighlighter' => 'includes/search/SearchEngine.php',
'SpecialChangePassword' => 'includes/specials/SpecialChangePassword.php',
'SpecialComparePages' => 'includes/specials/SpecialComparePages.php',
'SpecialContributions' => 'includes/specials/SpecialContributions.php',
+ 'SpecialDiff' => 'includes/specials/SpecialDiff.php',
'SpecialEditWatchlist' => 'includes/specials/SpecialEditWatchlist.php',
'SpecialEmailUser' => 'includes/specials/SpecialEmailuser.php',
'SpecialExpandTemplates' => 'includes/specials/SpecialExpandTemplates.php',
'ConfEditorToken' => 'includes/utils/ConfEditor.php',
'DoubleReplacer' => 'includes/utils/StringUtils.php',
'ExplodeIterator' => 'includes/utils/StringUtils.php',
- 'HashRing' => 'includes/utils/HashRing.php',
'HashtableReplacer' => 'includes/utils/StringUtils.php',
'IP' => 'includes/utils/IP.php',
'MWCryptRand' => 'includes/utils/MWCryptRand.php',
'MWFunction' => 'includes/utils/MWFunction.php',
- 'MappedIterator' => 'includes/utils/MappedIterator.php',
'RegexlikeReplacer' => 'includes/utils/StringUtils.php',
'ReplacementArray' => 'includes/utils/StringUtils.php',
'Replacer' => 'includes/utils/StringUtils.php',
* autoload - take a class name and attempt to load it
*
* @param string $className name of class we're looking for.
- * @return bool Returning false is important on failure as
- * it allows Zend to try and look in other registered autoloaders
- * as well.
*/
static function autoload( $className ) {
global $wgAutoloadClasses, $wgAutoloadLocalClasses,
}
# Give up
- return false;
+ return;
}
# Make an absolute path, this improves performance by avoiding some stat calls
}
require $filename;
-
- return true;
}
/**
$this->mFromMaster = false;
}
- /**
- * Load a block from the database, using either the IP address or
- * user ID. Tries the user ID first, and if that doesn't work, tries
- * the address.
- *
- * @param string $address IP address of user/anon
- * @param $user Integer: user id of user
- * @return Block Object
- * @deprecated since 1.18
- */
- public static function newFromDB( $address, $user = 0 ) {
- wfDeprecated( __METHOD__, '1.18' );
- return self::newFromTarget( User::whoIs( $user ), $address );
- }
-
/**
* Load a blocked user from their block id.
*
);
}
- /**
- * Clear all member variables in the current object. Does not clear
- * the block from the DB.
- * @deprecated since 1.18
- */
- public function clear() {
- wfDeprecated( __METHOD__, '1.18' );
- # Noop
- }
-
- /**
- * Get a block from the DB, with either the given address or the given username
- *
- * @param string $address The IP address of the user, or blank to skip IP blocks
- * @param int $user The user ID, or zero for anonymous users
- * @return Boolean: the user is blocked from editing
- * @deprecated since 1.18
- */
- public function load( $address = '', $user = 0 ) {
- wfDeprecated( __METHOD__, '1.18' );
- if ( $user ) {
- $username = User::whoIs( $user );
- $block = self::newFromTarget( $username, $address );
- } else {
- $block = self::newFromTarget( null, $address );
- }
-
- if ( $block instanceof Block ) {
- # This is mildly evil, but hey, it's B/C :D
- foreach ( $block as $variable => $value ) {
- $this->$variable = $value;
- }
- return true;
- } else {
- return false;
- }
- }
-
/**
* Load a block from the database which affects the already-set $this->target:
* 1) A block directly on the given user or IP
* Update a block in the DB with new parameters.
* The ID field needs to be loaded first.
*
- * @return Int number of affected rows, which should probably be 1 or something has
- * gone slightly awry
+ * @return bool|array False on failure, array on success: ('id' => block ID, 'autoIds' => array of autoblock IDs)
*/
public function update() {
wfDebug( "Block::update; timestamp {$this->mTimestamp}\n" );
$dbw = wfGetDB( DB_MASTER );
+ $dbw->startAtomic( __METHOD__ );
+
$dbw->update(
'ipblocks',
$this->getDatabaseArray( $dbw ),
__METHOD__
);
- return $dbw->affectedRows();
+ $affected = $dbw->affectedRows();
+
+ $dbw->update(
+ 'ipblocks',
+ $this->getAutoblockUpdateArray(),
+ array( 'ipb_parent_block_id' => $this->getId() ),
+ __METHOD__
+ );
+
+ $dbw->endAtomic( __METHOD__ );
+
+ if ( $affected ) {
+ $auto_ipd_ids = $this->doRetroactiveAutoblock();
+ return array( 'id' => $this->mId, 'autoIds' => $auto_ipd_ids );
+ }
+
+ return false;
}
/**
return $a;
}
+ /**
+ * @return Array
+ */
+ protected function getAutoblockUpdateArray() {
+ return array(
+ 'ipb_by' => $this->getBy(),
+ 'ipb_by_text' => $this->getByName(),
+ 'ipb_reason' => $this->mReason,
+ 'ipb_create_account' => $this->prevents( 'createaccount' ),
+ 'ipb_deleted' => (int)$this->mHideName, // typecast required for SQLite
+ 'ipb_allow_usertalk' => !$this->prevents( 'editownusertalk' ),
+ );
+ }
+
/**
* Retroactively autoblocks the last IP used by the user (if it is a user)
* blocked by this Block.
return $this->mId;
}
- /**
- * Get/set the SELECT ... FOR UPDATE flag
- * @deprecated since 1.18
- *
- * @param $x Bool
- */
- public function forUpdate( $x = null ) {
- wfDeprecated( __METHOD__, '1.18' );
- # noop
- }
-
/**
* Get/set a flag determining whether the master is used for reads
*
}
}
- /**
- * Encode expiry for DB
- *
- * @param string $expiry timestamp for expiry, or
- * @param $db DatabaseBase object
- * @return String
- * @deprecated since 1.18; use $dbw->encodeExpiry() instead
- */
- public static function encodeExpiry( $expiry, $db ) {
- wfDeprecated( __METHOD__, '1.18' );
- return $db->encodeExpiry( $expiry );
- }
-
- /**
- * Decode expiry which has come from the DB
- *
- * @param string $expiry Database expiry format
- * @param int $timestampType Requested timestamp format
- * @return String
- * @deprecated since 1.18; use $wgLang->formatExpiry() instead
- */
- public static function decodeExpiry( $expiry, $timestampType = TS_MW ) {
- wfDeprecated( __METHOD__, '1.18' );
- global $wgContLang;
- return $wgContLang->formatExpiry( $expiry, $timestampType );
- }
-
/**
* Get a timestamp of the expiry for autoblocks
*
return wfTimestamp( TS_MW, wfTimestamp( TS_UNIX, $timestamp ) + $wgAutoblockExpiry );
}
- /**
- * Gets rid of unneeded numbers in quad-dotted/octet IP strings
- * For example, 127.111.113.151/24 -> 127.111.113.0/24
- * @param string $range IP address to normalize
- * @return string
- * @deprecated since 1.18, call IP::sanitizeRange() directly
- */
- public static function normaliseRange( $range ) {
- wfDeprecated( __METHOD__, '1.18' );
- return IP::sanitizeRange( $range );
- }
-
/**
* Purge expired blocks from the ipblocks table
*/
} );
}
- /**
- * Get a value to insert into expiry field of the database when infinite expiry
- * is desired
- * @deprecated since 1.18, call $dbr->getInfinity() directly
- * @return String
- */
- public static function infinity() {
- wfDeprecated( __METHOD__, '1.18' );
- return wfGetDB( DB_SLAVE )->getInfinity();
- }
-
- /**
- * Convert a submitted expiry time, which may be relative ("2 weeks", etc) or absolute
- * ("24 May 2034"), into an absolute timestamp we can put into the database.
- * @param string $expiry whatever was typed into the form
- * @return String: timestamp or "infinity" string for th DB implementation
- * @deprecated since 1.18 moved to SpecialBlock::parseExpiryInput()
- */
- public static function parseExpiryInput( $expiry ) {
- wfDeprecated( __METHOD__, '1.18' );
- return SpecialBlock::parseExpiryInput( $expiry );
- }
-
/**
* Given a target and the target's type, get an existing Block object if possible.
* @param $specificTarget String|User|Int a block target, which may be one of several types:
$this->getSubcategorySortChar( $cat->getTitle(), $sortkey );
}
- /**
- * Add a subcategory to the internal lists, using a title object
- * @deprecated since 1.17 kept for compatibility, use addSubcategoryObject instead
- */
- function addSubcategory( Title $title, $sortkey, $pageLength ) {
- wfDeprecated( __METHOD__, '1.17' );
- $this->addSubcategoryObject( Category::newFromTitle( $title ), $sortkey, $pageLength );
- }
-
/**
* Get the character to be used for sorting subcategories.
* If there's a link from Category:A to Category:B, the sortkey of the resulting
$sortKey = $this->getPrimarySortKey( $string );
// Do a binary search to find the correct letter to sort under
- $min = $this->findLowerBound(
+ $min = ArrayUtils::findLowerBound(
array( $this, 'getSortKeyByLetterIndex' ),
$this->getFirstLetterCount(),
'strcmp',
* Do a binary search, and return the index of the largest item that sorts
* less than or equal to the target value.
*
+ * @deprecated in 1.23; use ArrayUtils::findLowerBound() instead
+ *
* @param array $valueCallback A function to call to get the value with
* a given array index.
* @param int $valueCount The number of items accessible via $valueCallback,
* sorts before all items.
*/
function findLowerBound( $valueCallback, $valueCount, $comparisonCallback, $target ) {
- if ( $valueCount === 0 ) {
- return false;
- }
-
- $min = 0;
- $max = $valueCount;
- do {
- $mid = $min + ( ( $max - $min ) >> 1 );
- $item = call_user_func( $valueCallback, $mid );
- $comparison = call_user_func( $comparisonCallback, $target, $item );
- if ( $comparison > 0 ) {
- $min = $mid;
- } elseif ( $comparison == 0 ) {
- $min = $mid;
- break;
- } else {
- $max = $mid;
- }
- } while ( $min < $max - 1 );
-
- if ( $min == 0 ) {
- $item = call_user_func( $valueCallback, $min );
- $comparison = call_user_func( $comparisonCallback, $target, $item );
- if ( $comparison < 0 ) {
- // Before the first item
- return false;
- }
- }
- return $min;
+ wfDeprecated( __METHOD__, '1.23' );
+ return ArrayUtils::findLowerBound( $valueCallback, $valueCount, $comparisonCallback, $target );
}
static function isCjk( $codepoint ) {
*/
$wgConf = new SiteConfiguration;
+/**
+ * Class name to use for accessing Config.
+ * Currently only 'GlobalConfig' is available
+ * @since 1.23
+ */
+$wgConfigClass = 'GlobalConfig';
+
/**
* MediaWiki version number
* @since 1.2
/**
* Password reminder name
+ *
+ * @deprecated since 1.23; use the system message 'emailsender' instead.
*/
$wgPasswordSenderName = 'MediaWiki Mail';
* if available
*
* - max lag: (optional) Maximum replication lag before a slave will taken out of rotation
- * - max threads: (optional) Maximum number of running threads
*
* These and any other user-defined properties will be assigned to the mLBInfo member
* variable of the Database object.
* - CACHE_DB: Store cache objects in the DB
* - CACHE_MEMCACHED: MemCached, must specify servers in $wgMemCachedServers
* - CACHE_ACCEL: APC, XCache or WinCache
- * - CACHE_DBA: Use PHP's DBA extension to store in a DBM-style
- * database. This is slow, and is not recommended for
- * anything other than debugging.
* - (other): A string may be used which identifies a cache
* configuration in $wgObjectCaches.
*
* the value is an associative array of parameters. The "class" parameter is the
* class name which will be used. Alternatively, a "factory" parameter may be
* given, giving a callable function which will generate a suitable cache object.
- *
- * The other parameters are dependent on the class used.
- * - CACHE_DBA uses $wgTmpDirectory by default. The 'dir' parameter let you
- * overrides that.
*/
$wgObjectCaches = array(
CACHE_NONE => array( 'class' => 'EmptyBagOStuff' ),
CACHE_DB => array( 'class' => 'SqlBagOStuff', 'table' => 'objectcache' ),
- CACHE_DBA => array( 'class' => 'DBABagOStuff' ),
CACHE_ANYTHING => array( 'factory' => 'ObjectCache::newAnything' ),
CACHE_ACCEL => array( 'factory' => 'ObjectCache::newAccelerator' ),
*/
$wgParserCacheExpireTime = 86400;
-/**
- * Select which DBA handler <http://www.php.net/manual/en/dba.requirements.php>
- * to use as CACHE_DBA backend.
- */
-$wgDBAhandler = 'db3';
-
/**
* Deprecated alias for $wgSessionsInObjectCache.
*
*/
$wgEdititis = false;
-/**
- * Better directionality support (bug 6100 and related).
- * Removed in 1.18, still kept here for LiquidThreads backwards compatibility.
- *
- * @deprecated since 1.18
- */
-$wgBetterDirectionality = true;
-
/**
* Some web hosts attempt to rewrite all responses with a 404 (not found)
* status code, mangling or hiding MediaWiki's output. If you are using such a
/**
* Settings added to this array will override the default globals for the user
* preferences used by anonymous visitors and newly created accounts.
- * For instance, to disable section editing links:
- * $wgDefaultUserOptions ['editsection'] = 0;
+ * For instance, to disable editing on double clicks:
+ * $wgDefaultUserOptions ['editondblclick'] = 0;
*/
$wgDefaultUserOptions = array(
'ccmeonemails' => 0,
'disablemail' => 0,
'editfont' => 'default',
'editondblclick' => 0,
- 'editsection' => 1,
'editsectiononrightclick' => 0,
'enotifminoredits' => 0,
'enotifrevealaddr' => 0,
'enotifusertalkpages' => 1,
- 'enotifwatchlistpages' => 0,
+ 'enotifwatchlistpages' => 1,
'extendwatchlist' => 0,
'fancysig' => 0,
'forceeditsummary' => 0,
'hideminor' => 0,
'hidepatrolled' => 0,
'imagesize' => 2,
- 'justify' => 0,
'math' => 1,
'minordefault' => 0,
'newpageshidepatrolled' => 0,
'rclimit' => 50,
'rememberpassword' => 0,
'rows' => 25,
- 'searchlimit' => 20,
'showhiddencats' => 0,
'shownumberswatching' => 1,
- 'showtoc' => 1,
'showtoolbar' => 1,
'skin' => false,
'stubthreshold' => 0,
*/
$wgDeleteRevisionsLimit = 0;
+/**
+ * The maximum number of edits a user can have and
+ * can still be hidden by users with the hideuser permission.
+ * This is limited for performance reason.
+ * Set to false to disable the limit.
+ * @since 1.23
+ */
+$wgHideUserContribLimit = 1000;
+
/**
* Number of accounts each IP address may create, 0 to disable.
*
* @since 1.20
*/
$wgGitRepositoryViewers = array(
- 'https://gerrit.wikimedia.org/r/p/(.*)' => 'https://git.wikimedia.org/commit/%r/%H',
+ 'https://(?:[a-z0-9_]+@)?gerrit.wikimedia.org/r/(?:p/)?(.*)' => 'https://git.wikimedia.org/commit/%r/%H',
'ssh://(?:[a-z0-9_]+@)?gerrit.wikimedia.org:29418/(.*)'
=> 'https://git.wikimedia.org/commit/%r/%H',
);
$wgRCFilterByAge = false;
/**
- * List of Days and Limits options to list in the Special:Recentchanges and
+ * List of Limits options to list in the Special:Recentchanges and
* Special:Recentchangeslinked pages.
*/
$wgRCLinkLimits = array( 50, 100, 250, 500 );
+
+/**
+ * List of Days options to list in the Special:Recentchanges and
+ * Special:Recentchangeslinked pages.
+ */
$wgRCLinkDays = array( 1, 3, 7, 14, 30 );
/**
* API module extensions.
* Associative array mapping module name to class name.
* Extension modules may override the core modules.
- * @todo Describe each of the variables, group them and add examples
+ *
+ * See ApiMain::$Modules for a list of the core modules.
*/
$wgAPIModules = array();
+
+/**
+ * API format module extensions.
+ * Associative array mapping format module name to class name.
+ * Extension modules may override the core modules.
+ *
+ * See ApiMain::$Formats for a list of the core format modules.
+ */
$wgAPIFormatModules = array();
+
+/**
+ * API Query meta module extensions.
+ * Associative array mapping meta module name to class name.
+ * Extension modules may override the core modules.
+ *
+ * See ApiQuery::$QueryMetaModules for a list of the core meta modules.
+ */
$wgAPIMetaModules = array();
+
+/**
+ * API Query prop module extensions.
+ * Associative array mapping properties module name to class name.
+ * Extension modules may override the core modules.
+ *
+ * See ApiQuery::$QueryPropModules for a list of the core prop modules.
+ */
$wgAPIPropModules = array();
+
+/**
+ * API Query list module extensions.
+ * Associative array mapping list module name to class name.
+ * Extension modules may override the core modules.
+ *
+ * See ApiQuery::$QueryListModules for a list of the core list modules.
+ */
$wgAPIListModules = array();
/**
define( 'CACHE_DB', 1 ); // Store cache objects in the DB
define( 'CACHE_MEMCACHED', 2 ); // MemCached, must specify servers in $wgMemCacheServers
define( 'CACHE_ACCEL', 3 ); // APC, XCache or WinCache
-define( 'CACHE_DBA', 4 ); // Use PHP's DBA extension to store in a DBM-style database
/**@}*/
/**@{
* Date format selectors; used in user preference storage and by
* Language::date() and co.
*/
-/*define( 'MW_DATE_DEFAULT', '0' );
-define( 'MW_DATE_MDY', '1' );
-define( 'MW_DATE_DMY', '2' );
-define( 'MW_DATE_YMD', '3' );
-define( 'MW_DATE_ISO', 'ISO 8601' );*/
define( 'MW_DATE_DEFAULT', 'default' );
define( 'MW_DATE_MDY', 'mdy' );
define( 'MW_DATE_DMY', 'dmy' );
}
}
+ /**
+ * Returns if the given content model is editable.
+ *
+ * @param string $modelId The ID of the content model to test. Use CONTENT_MODEL_XXX constants.
+ * @return bool
+ * @throws MWException if $modelId has no known handler
+ */
+ public function isSupportedContentModel( $modelId ) {
+ return $this->allowNonTextContent ||
+ ContentHandler::getForModelID( $modelId ) instanceof TextContentHandler;
+ }
+
function submit() {
$this->edit();
}
/**
* This function collects the form data and uses it to populate various member variables.
* @param $request WebRequest
+ * @throws ErrorPageError
*/
function importFormData( &$request ) {
global $wgContLang, $wgUser;
$this->bot = $request->getBool( 'bot', true );
$this->nosummary = $request->getBool( 'nosummary' );
- $content_handler = ContentHandler::getForTitle( $this->mTitle );
- $this->contentModel = $request->getText( 'model', $content_handler->getModelID() ); #may be overridden by revision
- $this->contentFormat = $request->getText( 'format', $content_handler->getDefaultFormat() ); #may be overridden by revision
+ $this->contentModel = $request->getText( 'model', $this->contentModel ); #may be overridden by revision
+ $this->contentFormat = $request->getText( 'format', $this->contentFormat ); #may be overridden by revision
+ if ( !ContentHandler::getForModelID( $this->contentModel )->isSupportedFormat( $this->contentFormat ) ) {
+ throw new ErrorPageError(
+ 'editpage-notsupportedcontentformat-title',
+ 'editpage-notsupportedcontentformat-text',
+ array( $this->contentFormat, ContentHandler::getLocalizedName( $this->contentModel ) )
+ );
+ }
#TODO: check if the desired model is allowed in this namespace, and if a transition from the page's current model to the new model is allowed
- #TODO: check if the desired content model supports the given content format!
$this->live = $request->getCheck( 'live' );
$this->editintro = $request->getText( 'editintro',
$undo = $wgRequest->getInt( 'undo' );
if ( $undo > 0 && $undoafter > 0 ) {
- if ( $undo < $undoafter ) {
- # If they got undoafter and undo round the wrong way, switch them
- list( $undo, $undoafter ) = array( $undoafter, $undo );
- }
$undorev = Revision::newFromId( $undo );
$oldrev = Revision::newFromId( $undoafter );
# the revisions exist and they were not deleted.
# Otherwise, $content will be left as-is.
if ( !is_null( $undorev ) && !is_null( $oldrev ) &&
- $undorev->getPage() == $oldrev->getPage() &&
- $undorev->getPage() == $this->mTitle->getArticleID() &&
!$undorev->isDeleted( Revision::DELETED_TEXT ) &&
!$oldrev->isDeleted( Revision::DELETED_TEXT ) ) {
function getBaseRevision() {
if ( !$this->mBaseRevision ) {
$db = wfGetDB( DB_MASTER );
- $baseRevision = Revision::loadFromTimestamp(
+ $this->mBaseRevision = Revision::loadFromTimestamp(
$db, $this->mTitle, $this->edittime );
- return $this->mBaseRevision = $baseRevision;
- } else {
- return $this->mBaseRevision;
}
+ return $this->mBaseRevision;
}
/**
$wgOut->addModules( 'mediawiki.action.edit.editWarning' );
}
- // Bug #19334: textarea jumps when editing articles in IE8
- $wgOut->addStyle( 'common/IE80Fixes.css', 'screen', 'IE 8' );
-
$wgOut->setRobotPolicy( 'noindex,nofollow' );
# Enabled article-related sidebar, toplinks, etc.
return $content;
}
- if ( !$this->allowNonTextContent && !( $content instanceof TextContent ) ) {
- throw new MWException( "This content model can not be edited as text: "
- . ContentHandler::getLocalizedName( $content->getModel() ) );
+ if ( !$this->isSupportedContentModel( $content->getModel() ) ) {
+ throw new MWException( 'This content model is not supported: '
+ . ContentHandler::getLocalizedName( $content->getModel() ) );
}
return $content->serialize( $this->contentFormat );
$content = ContentHandler::makeContent( $text, $this->getTitle(),
$this->contentModel, $this->contentFormat );
- if ( !$this->allowNonTextContent && !( $content instanceof TextContent ) ) {
- throw new MWException( "This content model can not be edited as text: "
+ if ( !$this->isSupportedContentModel( $content->getModel() ) ) {
+ throw new MWException( 'This content model is not supported: '
. ContentHandler::getLocalizedName( $content->getModel() ) );
}
}
}
- $rt = $content->getRedirectChain();
- if ( $rt ) {
- $previewHTML = $this->mArticle->viewRedirect( $rt, false );
- } else {
-
- # If we're adding a comment, we need to show the
- # summary as the headline
- if ( $this->section === "new" && $this->summary !== "" ) {
- $content = $content->addSectionHeader( $this->summary );
- }
+ # If we're adding a comment, we need to show the
+ # summary as the headline
+ if ( $this->section === "new" && $this->summary !== "" ) {
+ $content = $content->addSectionHeader( $this->summary );
+ }
- $hook_args = array( $this, &$content );
- ContentHandler::runLegacyHooks( 'EditPageGetPreviewText', $hook_args );
- wfRunHooks( 'EditPageGetPreviewContent', $hook_args );
+ $hook_args = array( $this, &$content );
+ ContentHandler::runLegacyHooks( 'EditPageGetPreviewText', $hook_args );
+ wfRunHooks( 'EditPageGetPreviewContent', $hook_args );
- $parserOptions->enableLimitReport();
+ $parserOptions->enableLimitReport();
- # For CSS/JS pages, we should have called the ShowRawCssJs hook here.
- # But it's now deprecated, so never mind
+ # For CSS/JS pages, we should have called the ShowRawCssJs hook here.
+ # But it's now deprecated, so never mind
- $content = $content->preSaveTransform( $this->mTitle, $wgUser, $parserOptions );
- $parserOutput = $content->getParserOutput( $this->getArticle()->getTitle(), null, $parserOptions );
+ $content = $content->preSaveTransform( $this->mTitle, $wgUser, $parserOptions );
+ $parserOutput = $content->getParserOutput( $this->getArticle()->getTitle(), null, $parserOptions );
- $previewHTML = $parserOutput->getText();
- $this->mParserOutput = $parserOutput;
- $wgOut->addParserOutputNoText( $parserOutput );
+ $previewHTML = $parserOutput->getText();
+ $this->mParserOutput = $parserOutput;
+ $wgOut->addParserOutputNoText( $parserOutput );
- if ( count( $parserOutput->getWarnings() ) ) {
- $note .= "\n\n" . implode( "\n\n", $parserOutput->getWarnings() );
- }
+ if ( count( $parserOutput->getWarnings() ) ) {
+ $note .= "\n\n" . implode( "\n\n", $parserOutput->getWarnings() );
}
} catch ( MWContentSerializationException $ex ) {
$m = wfMessage( 'content-failed-to-parse', $this->contentModel, $this->contentFormat, $ex->getMessage() );
*/
static function getEditToolbar() {
global $wgStylePath, $wgContLang, $wgLang, $wgOut;
- global $wgUseTeX, $wgEnableUploads, $wgForeignFileRepos;
+ global $wgEnableUploads, $wgForeignFileRepos;
$imagesAvailable = $wgEnableUploads || count( $wgForeignFileRepos );
'tip' => wfMessage( 'media_tip' )->text(),
'key' => 'M'
) : false,
- $wgUseTeX ? array(
+ class_exists( 'MathRenderer' ) ? array(
'image' => $wgLang->getImageFile( 'button-math' ),
'id' => 'mw-editbutton-math',
'open' => "<math>",
function useOutputPage() {
return $this->useMessageCache() &&
!empty( $GLOBALS['wgFullyInitialised'] ) &&
- !empty( $GLOBALS['wgOut'] ) &&
- !empty( $GLOBALS['wgTitle'] );
+ !empty( $GLOBALS['wgOut'] );
}
/**
* @param string|Message $msg Message key (string) for error text, or a Message object
* @param array $params with parameters to wfMessage()
*/
- function __construct( $title, $msg, $params = null ) {
+ function __construct( $title, $msg, $params = array() ) {
$this->title = $title;
$this->msg = $msg;
$this->params = $params;
* @param string|Message $msg A message key (default: 'badtitletext')
* @param array $params parameter to wfMessage()
*/
- function __construct( $msg = 'badtitletext', $params = null ) {
+ function __construct( $msg = 'badtitletext', $params = array() ) {
parent::__construct( 'badtitle', $msg, $params );
}
parent::__construct(
'readonly',
'readonlytext',
- wfReadOnlyReason()
+ wfReadOnlyReason() ?: array()
);
}
}
* @param string $titleMsg A message key to set the page title.
* Optional, default: 'exception-nologin'
* @param array $params Parameters to wfMessage().
- * Optional, default: null
+ * Optional, default: array()
*/
public function __construct(
$reasonMsg = 'exception-nologin-text',
$titleMsg = 'exception-nologin',
- $params = null
+ $params = array()
) {
parent::__construct( $titleMsg, $reasonMsg, $params );
}
* @since 1.18
*/
public static function canonicalTitle( Title $title ) {
- if ( $title->getInterwiki() ) {
+ if ( $title->isExternal() ) {
return $title->getPrefixedText();
}
function canTalk() { $this->error(); }
function getInterwiki() { $this->error(); }
function getFragment() { $this->error(); }
+ function hasFragment() { $this->error(); }
function getFragmentForURL() { $this->error(); }
function getDefaultNamespace() { $this->error(); }
function getIndexTitle() { $this->error(); }
* @ingroup Maintenance
*/
class ForkController {
- var $children = array();
- var $termReceived = false;
- var $flags = 0, $procsToStart = 0;
+ protected $children = array(), $childNumber = 0;
+ protected $termReceived = false;
+ protected $flags = 0, $procsToStart = 0;
- static $restartableSignals = array(
+ protected static $restartableSignals = array(
SIGFPE,
SIGILL,
SIGSEGV,
return 'done';
}
+ /**
+ * Get the number of the child currently running. Note, this
+ * is not the pid, but rather which of the total number of children
+ * we are
+ * @return int
+ */
+ public function getChildNumber() {
+ return $this->childNumber;
+ }
+
protected function prepareEnvironment() {
global $wgMemc;
// Don't share DB, storage, or memcached connections
if ( !$pid ) {
$this->initChild();
+ $this->childNumber = $i;
return 'child';
} else {
// This is the parent process
return $wgContLang;
}
-/**
- * Old function when $wgBetterDirectionality existed
- * All usage removed, wfUILang can be removed in near future
- *
- * @deprecated since 1.18
- * @return Language
- */
-function wfUILang() {
- wfDeprecated( __METHOD__, '1.18' );
- global $wgLang;
- return $wgLang;
-}
-
/**
* This is the function for getting translated interface messages.
*
* @deprecated since 1.18
*
* @param string $key key of the message
- * @param array $options processing rules. Can take the following options:
- * <i>parse</i>: parses wikitext to HTML
- * <i>parseinline</i>: parses wikitext to HTML and removes the surrounding
+ * @param array $options processing rules.
+ * Can take the following options:
+ * parse: parses wikitext to HTML
+ * parseinline: parses wikitext to HTML and removes the surrounding
* p's added by parser or tidy
- * <i>escape</i>: filters message through htmlspecialchars
- * <i>escapenoentities</i>: same, but allows entity references like   through
- * <i>replaceafter</i>: parameters are substituted after parsing or escaping
- * <i>parsemag</i>: transform the message using magic phrases
- * <i>content</i>: fetch message for content language instead of interface
- * Also can accept a single associative argument, of the form 'language' => 'xx':
- * <i>language</i>: Language object or language code to fetch message for
- * (overridden by <i>content</i>).
+ * escape: filters message through htmlspecialchars
+ * escapenoentities: same, but allows entity references like   through
+ * replaceafter: parameters are substituted after parsing or escaping
+ * parsemag: transform the message using magic phrases
+ * content: fetch message for content language instead of interface
+ * Also can accept a single associative argument, of the form 'language' => 'xx':
+ * language: Language object or language code to fetch message for
+ * (overridden by content).
* Behavior for conflicting options (e.g., parse+parseinline) is undefined.
*
* @return String
return $round ? round( $ret, $acc ) . '%' : "$ret%";
}
-/**
- * Find out whether or not a mixed variable exists in a string
- *
- * @deprecated Just use str(i)pos
- * @param $needle String
- * @param $str String
- * @param $insensitive Boolean
- * @return Boolean
- */
-function in_string( $needle, $str, $insensitive = false ) {
- wfDeprecated( __METHOD__, '1.21' );
- $func = 'strpos';
- if ( $insensitive ) {
- $func = 'stripos';
- }
-
- return $func( $str, $needle ) !== false;
-}
-
/**
* Safety wrapper around ini_get() for boolean settings.
* The values returned from ini_get() are pre-normalized for settings
* with releases
*
* Note: Due to the behavior of PHP's version_compare() which is used in this
- * fuction, if you want to allow the 'wmf' development versions add a 'c' (or
+ * function, if you want to allow the 'wmf' development versions add a 'c' (or
* any single letter other than 'a', 'b' or 'p') as a post-fix to your
* targeted version number. For example if you wanted to allow any variation
* of 1.22 use `wfUseMW( '1.22c' )`. Using an 'a' or 'b' instead of 'c' will
return RepoGroup::singleton()->getLocalRepo()->newFile( $title );
}
-/**
- * Stream a file to the browser. Back-compat alias for StreamFile::stream()
- * @deprecated since 1.19
- */
-function wfStreamFile( $fname, $headers = array() ) {
- wfDeprecated( __FUNCTION__, '1.19' );
- StreamFile::stream( $fname, $headers );
-}
-
/**
* Should low-performance queries be disabled?
*
echo "\n";
}
-/**
- * Generate a random 32-character hexadecimal token.
- * @param $salt Mixed: some sort of salt, if necessary, to add to random
- * characters before hashing.
- * @return string
- * @codeCoverageIgnore
- * @deprecated since 1.20; Please use MWCryptRand for security purposes and
- * wfRandomString for pseudo-random strings
- * @warning This method is NOT secure. Additionally it has many callers that
- * use it for pseudo-random purposes.
- */
-function wfGenerateToken( $salt = '' ) {
- wfDeprecated( __METHOD__, '1.20' );
- $salt = serialize( $salt );
- return md5( mt_rand( 0, 0x7fffffff ) . $salt );
-}
-
/**
* Replace all invalid characters with -
* Additional characters can be defined in $wgIllegalFileChars (see bug 20489)
*
* @param string $event event name
* @param array $args parameters passed to hook functions
+ * @param string|null $deprecatedVersion optionally mark hook as deprecated with version number
+ *
* @return Boolean True if no handler aborted the hook
*/
-function wfRunHooks( $event, array $args = array() ) {
- return Hooks::run( $event, $args );
+function wfRunHooks( $event, array $args = array(), $deprecatedVersion = null ) {
+ return Hooks::run( $event, $args, $deprecatedVersion );
}
/**
*
* @param string $event Event name
* @param array $args Array of parameters passed to hook functions
+ * @param string|null $deprecatedVersion Optionally, mark hook as deprecated with version number
* @return bool True if no handler aborted the hook
*
* @since 1.22 A hook function is not required to return a value for
* @throws MWException
* @throws FatalError
*/
- public static function run( $event, array $args = array() ) {
+ public static function run( $event, array $args = array(), $deprecatedVersion = null ) {
wfProfileIn( 'hook: ' . $event );
foreach ( self::getHandlers( $event ) as $hook ) {
// Turn non-array values into an array. (Can't use casting because of objects.)
// Profile first in case the Profiler causes errors.
wfProfileIn( $func );
set_error_handler( 'Hooks::hookErrorHandler' );
+
+ // mark hook as deprecated, if deprecation version is specified
+ if ( $deprecatedVersion !== null ) {
+ wfDeprecated( "$event hook (used in $func)", $deprecatedVersion );
+ }
+
try {
$retval = call_user_func_array( $callback, $hook_args );
} catch ( MWHookException $e ) {
}
}
- /**
- * Set the referrer header
- */
- public function setReferer( $url ) {
- $this->setHeader( 'Referer', $url );
- }
-
/**
* Set the user agent
* @param $UA string
* @return Status
*/
public function execute() {
- global $wgTitle;
-
wfProfileIn( __METHOD__ );
$this->content = "";
$this->headersOnly = true;
}
- if ( is_object( $wgTitle ) && !isset( $this->reqHeaders['Referer'] ) ) {
- $this->setReferer( wfExpandUrl( $wgTitle->getFullURL(), PROTO_CURRENT ) );
- }
-
$this->proxySetup(); // set up any proxy as needed
if ( !$this->callback ) {
$this->curlOptions[CURLOPT_MAXREDIRS] = $this->maxRedirects;
$this->curlOptions[CURLOPT_ENCODING] = ""; # Enable compression
- /* not sure these two are actually necessary */
- if ( isset( $this->reqHeaders['Referer'] ) ) {
- $this->curlOptions[CURLOPT_REFERER] = $this->reqHeaders['Referer'];
- }
$this->curlOptions[CURLOPT_USERAGENT] = $this->reqHeaders['User-Agent'];
$this->curlOptions[CURLOPT_SSL_VERIFYHOST] = $this->sslVerifyHost ? 2 : 0;
}
$this->reqHeaders['Accept'] = "*/*";
+ $this->reqHeaders['Connection'] = 'Close';
if ( $this->method == 'POST' ) {
// Required for HTTP 1.0 POSTs
$this->reqHeaders['Content-Length'] = strlen( $this->postData );
}
}
- $options = array();
- if ( $this->proxy ) {
- $options['proxy'] = $this->urlToTCP( $this->proxy );
- $options['request_fulluri'] = true;
- }
+ // Set up PHP stream context
+ $options = array(
+ 'http' => array(
+ 'method' => $this->method,
+ 'header' => implode( "\r\n", $this->getHeaderList() ),
+ 'protocol_version' => '1.1',
+ 'max_redirects' => $this->followRedirects ? $this->maxRedirects : 0,
+ 'ignore_errors' => true,
+ 'timeout' => $this->timeout,
+ // Curl options in case curlwrappers are installed
+ 'curl_verify_ssl_host' => $this->sslVerifyHost ? 2 : 0,
+ 'curl_verify_ssl_peer' => $this->sslVerifyCert,
+ ),
+ 'ssl' => array(
+ 'verify_peer' => $this->sslVerifyCert,
+ 'SNI_enabled' => true,
+ ),
+ );
- if ( !$this->followRedirects ) {
- $options['max_redirects'] = 0;
- } else {
- $options['max_redirects'] = $this->maxRedirects;
+ if ( $this->proxy ) {
+ $options['http']['proxy'] = $this->urlToTCP( $this->proxy );
+ $options['http']['request_fulluri'] = true;
}
- $options['method'] = $this->method;
- $options['header'] = implode( "\r\n", $this->getHeaderList() );
- // Note that at some future point we may want to support
- // HTTP/1.1, but we'd have to write support for chunking
- // in version of PHP < 5.3.1
- $options['protocol_version'] = "1.0";
-
- // This is how we tell PHP we want to deal with 404s (for example) ourselves.
- // Only works on 5.2.10+
- $options['ignore_errors'] = true;
-
if ( $this->postData ) {
- $options['content'] = $this->postData;
+ $options['http']['content'] = $this->postData;
}
- $options['timeout'] = $this->timeout;
-
if ( $this->sslVerifyHost ) {
- $options['CN_match'] = $this->parsedUrl['host'];
- }
- if ( $this->sslVerifyCert ) {
- $options['verify_peer'] = true;
+ $options['ssl']['CN_match'] = $this->parsedUrl['host'];
}
if ( is_dir( $this->caInfo ) ) {
- $options['capath'] = $this->caInfo;
+ $options['ssl']['capath'] = $this->caInfo;
} elseif ( is_file( $this->caInfo ) ) {
- $options['cafile'] = $this->caInfo;
+ $options['ssl']['cafile'] = $this->caInfo;
} elseif ( $this->caInfo ) {
throw new MWException( "Invalid CA info passed: {$this->caInfo}" );
}
- $scheme = $this->parsedUrl['scheme'];
- $context = stream_context_create( array( "$scheme" => $options ) );
+ $context = stream_context_create( $options );
$this->headerList = array();
$reqCount = 0;
return $dbr->select(
array( 'imagelinks', 'page' ),
- array( 'page_namespace', 'page_title', 'page_is_redirect', 'il_to' ),
+ array( 'page_namespace', 'page_title', 'il_to' ),
array( 'il_to' => $target, 'il_from = page_id' ),
__METHOD__,
array( 'LIMIT' => $limit + 1, 'ORDER BY' => 'il_from', )
$limit = 100;
$out = $this->getContext()->getOutput();
- $res = $this->queryImageLinks( $this->getTitle()->getDBkey(), $limit + 1 );
+
$rows = array();
$redirects = array();
+ foreach ( $this->getTitle()->getRedirectsHere( NS_FILE ) as $redir ) {
+ $redirects[$redir->getDBkey()] = array();
+ $rows[] = (object)array(
+ 'page_namespace' => NS_FILE,
+ 'page_title' => $redir->getDBkey(),
+ );
+ }
+
+ $res = $this->queryImageLinks( $this->getTitle()->getDBkey(), $limit + 1 );
foreach ( $res as $row ) {
- if ( $row->page_is_redirect ) {
- $redirects[$row->page_title] = array();
- }
$rows[] = $row;
}
$count = count( $rows );
* @return bool
*/
public function importRevision( $revision ) {
+ if ( !$revision->getContent()->getContentHandler()->canBeUsedOn( $revision->getTitle() ) ) {
+ $this->notice( 'import-error-bad-location',
+ $revision->getTitle()->getPrefixedText(),
+ $revision->getID(),
+ $revision->getModel(),
+ $revision->getFormat() );
+
+ return false;
+ }
+
try {
$dbw = wfGetDB( DB_MASTER );
return $dbw->deadlockLoop( array( $revision, 'importOldRevision' ) );
$revision->getModel(),
$revision->getFormat() );
}
+
+ return false;
}
/**
return Status::newFatal( 'import-noarticle' );
}
$link = Title::newFromText( "$interwiki:Special:Export/$page" );
- if ( is_null( $link ) || $link->getInterwiki() == '' ) {
+ if ( is_null( $link ) || !$link->isExternal() ) {
return Status::newFatal( 'importbadinterwiki' );
} else {
$params = array();
* link() replaces the old functions in the makeLink() family.
*
* @since 1.18 Method exists since 1.16 as non-static, made static in 1.18.
- * You can call it using this if you want to keep compat with these:
- * $linker = class_exists( 'DummyLinker' ) ? new DummyLinker() : new Linker();
- * $linker->link( ... );
*
* @param $target Title Can currently only be a Title, but this may
* change to support Images, literal URLs, etc.
wfProfileIn( __METHOD__ );
# We don't want to include fragments for broken links, because they
# generally make no sense.
- if ( in_array( 'broken', $options ) && $target->mFragment !== '' ) {
+ if ( in_array( 'broken', $options ) && $target->hasFragment() ) {
$target = clone $target;
- $target->mFragment = '';
+ $target->setFragment( '' );
}
# If it's a broken link, add the appropriate query pieces, unless
// If the target is just a fragment, with no title, we return the fragment
// text. Otherwise, we return the title text itself.
- if ( $target->getPrefixedText() === '' && $target->getFragment() !== '' ) {
+ if ( $target->getPrefixedText() === '' && $target->hasFragment() ) {
return htmlspecialchars( $target->getFragment() );
}
return htmlspecialchars( $target->getPrefixedText() );
if ( !$name ) {
return $title;
}
- $ret = SpecialPage::getTitleFor( $name, $subpage );
- $ret->mFragment = $title->getFragment();
+ $ret = SpecialPage::getTitleFor( $name, $subpage, $title->getFragment() );
return $ret;
} else {
return $title;
$target = Title::newFromText( $linkTarget );
if ( $target ) {
- if ( $target->getText() == '' && $target->getInterwiki() === ''
+ if ( $target->getText() == '' && !$target->isExternal()
&& !self::$commentLocal && self::$commentContextTitle
) {
$newTarget = clone ( self::$commentContextTitle );
}
wfProfileOut( __METHOD__ );
- return self::$accesskeycache[$name] = $accesskey;
+ self::$accesskeycache[$name] = $accesskey;
+ return self::$accesskeycache[$name];
}
/**
--- /dev/null
+<?php
+/**
+ * Creation and parsing of MW-style timestamps.
+ *
+ * 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
+ * @since 1.20
+ * @author Tyler Romeo, 2012
+ */
+
+/**
+ * Library for creating and parsing MW-style timestamps. Based on the JS
+ * library that does the same thing.
+ *
+ * @since 1.20
+ */
+class MWTimestamp {
+ /**
+ * Standard gmdate() formats for the different timestamp types.
+ */
+ private static $formats = array(
+ TS_UNIX => 'U',
+ TS_MW => 'YmdHis',
+ TS_DB => 'Y-m-d H:i:s',
+ TS_ISO_8601 => 'Y-m-d\TH:i:s\Z',
+ TS_ISO_8601_BASIC => 'Ymd\THis\Z',
+ TS_EXIF => 'Y:m:d H:i:s', // This shouldn't ever be used, but is included for completeness
+ TS_RFC2822 => 'D, d M Y H:i:s',
+ TS_ORACLE => 'd-m-Y H:i:s.000000', // Was 'd-M-y h.i.s A' . ' +00:00' before r51500
+ TS_POSTGRES => 'Y-m-d H:i:s',
+ );
+
+ /**
+ * The actual timestamp being wrapped (DateTime object).
+ * @var DateTime
+ */
+ public $timestamp;
+
+ /**
+ * Make a new timestamp and set it to the specified time,
+ * or the current time if unspecified.
+ *
+ * @since 1.20
+ *
+ * @param bool|string $timestamp Timestamp to set, or false for current time
+ */
+ public function __construct( $timestamp = false ) {
+ $this->setTimestamp( $timestamp );
+ }
+
+ /**
+ * Set the timestamp to the specified time, or the current time if unspecified.
+ *
+ * Parse the given timestamp into either a DateTime object or a Unix timestamp,
+ * and then store it.
+ *
+ * @since 1.20
+ *
+ * @param string|bool $ts Timestamp to store, or false for now
+ * @throws TimestampException
+ */
+ public function setTimestamp( $ts = false ) {
+ $da = array();
+ $strtime = '';
+
+ if ( !$ts || $ts === "\0\0\0\0\0\0\0\0\0\0\0\0\0\0" ) { // We want to catch 0, '', null... but not date strings starting with a letter.
+ $uts = time();
+ $strtime = "@$uts";
+ } elseif ( preg_match( '/^(\d{4})\-(\d\d)\-(\d\d) (\d\d):(\d\d):(\d\d)$/D', $ts, $da ) ) {
+ # TS_DB
+ } elseif ( preg_match( '/^(\d{4}):(\d\d):(\d\d) (\d\d):(\d\d):(\d\d)$/D', $ts, $da ) ) {
+ # TS_EXIF
+ } elseif ( preg_match( '/^(\d{4})(\d\d)(\d\d)(\d\d)(\d\d)(\d\d)$/D', $ts, $da ) ) {
+ # TS_MW
+ } elseif ( preg_match( '/^-?\d{1,13}$/D', $ts ) ) {
+ # TS_UNIX
+ $strtime = "@$ts"; // http://php.net/manual/en/datetime.formats.compound.php
+ } elseif ( preg_match( '/^\d{2}-\d{2}-\d{4} \d{2}:\d{2}:\d{2}.\d{6}$/', $ts ) ) {
+ # TS_ORACLE // session altered to DD-MM-YYYY HH24:MI:SS.FF6
+ $strtime = preg_replace( '/(\d\d)\.(\d\d)\.(\d\d)(\.(\d+))?/', "$1:$2:$3",
+ str_replace( '+00:00', 'UTC', $ts ) );
+ } elseif ( preg_match( '/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})(?:\.*\d*)?Z?$/', $ts, $da ) ) {
+ # TS_ISO_8601
+ } elseif ( preg_match( '/^(\d{4})(\d{2})(\d{2})T(\d{2})(\d{2})(\d{2})(?:\.*\d*)?Z?$/', $ts, $da ) ) {
+ #TS_ISO_8601_BASIC
+ } elseif ( preg_match( '/^(\d{4})\-(\d\d)\-(\d\d) (\d\d):(\d\d):(\d\d)\.*\d*[\+\- ](\d\d)$/', $ts, $da ) ) {
+ # TS_POSTGRES
+ } elseif ( preg_match( '/^(\d{4})\-(\d\d)\-(\d\d) (\d\d):(\d\d):(\d\d)\.*\d* GMT$/', $ts, $da ) ) {
+ # TS_POSTGRES
+ } elseif ( preg_match( '/^[ \t\r\n]*([A-Z][a-z]{2},[ \t\r\n]*)?' . # Day of week
+ '\d\d?[ \t\r\n]*[A-Z][a-z]{2}[ \t\r\n]*\d{2}(?:\d{2})?' . # dd Mon yyyy
+ '[ \t\r\n]*\d\d[ \t\r\n]*:[ \t\r\n]*\d\d[ \t\r\n]*:[ \t\r\n]*\d\d/S', $ts ) ) { # hh:mm:ss
+ # TS_RFC2822, accepting a trailing comment. See http://www.squid-cache.org/mail-archive/squid-users/200307/0122.html / r77171
+ # The regex is a superset of rfc2822 for readability
+ $strtime = strtok( $ts, ';' );
+ } elseif ( preg_match( '/^[A-Z][a-z]{5,8}, \d\d-[A-Z][a-z]{2}-\d{2} \d\d:\d\d:\d\d/', $ts ) ) {
+ # TS_RFC850
+ $strtime = $ts;
+ } elseif ( preg_match( '/^[A-Z][a-z]{2} [A-Z][a-z]{2} +\d{1,2} \d\d:\d\d:\d\d \d{4}/', $ts ) ) {
+ # asctime
+ $strtime = $ts;
+ } else {
+ throw new TimestampException( __METHOD__ . ": Invalid timestamp - $ts" );
+ }
+
+ if ( !$strtime ) {
+ $da = array_map( 'intval', $da );
+ $da[0] = "%04d-%02d-%02dT%02d:%02d:%02d.00+00:00";
+ $strtime = call_user_func_array( "sprintf", $da );
+ }
+
+ try {
+ $final = new DateTime( $strtime, new DateTimeZone( 'GMT' ) );
+ } catch ( Exception $e ) {
+ throw new TimestampException( __METHOD__ . ': Invalid timestamp format.', $e->getCode(), $e );
+ }
+
+ if ( $final === false ) {
+ throw new TimestampException( __METHOD__ . ': Invalid timestamp format.' );
+ }
+ $this->timestamp = $final;
+ }
+
+ /**
+ * Get the timestamp represented by this object in a certain form.
+ *
+ * Convert the internal timestamp to the specified format and then
+ * return it.
+ *
+ * @since 1.20
+ *
+ * @param int $style Constant Output format for timestamp
+ * @throws TimestampException
+ * @return string The formatted timestamp
+ */
+ public function getTimestamp( $style = TS_UNIX ) {
+ if ( !isset( self::$formats[$style] ) ) {
+ throw new TimestampException( __METHOD__ . ': Illegal timestamp output type.' );
+ }
+
+ $output = $this->timestamp->format( self::$formats[$style] );
+
+ if ( ( $style == TS_RFC2822 ) || ( $style == TS_POSTGRES ) ) {
+ $output .= ' GMT';
+ }
+
+ return $output;
+ }
+
+ /**
+ * Get the timestamp in a human-friendly relative format, e.g., "3 days ago".
+ *
+ * Determine the difference between the timestamp and the current time, and
+ * generate a readable timestamp by returning "<N> <units> ago", where the
+ * largest possible unit is used.
+ *
+ * @since 1.20
+ * @since 1.22 Uses Language::getHumanTimestamp to produce the timestamp
+ *
+ * @param MWTimestamp|null $relativeTo The base timestamp to compare to (defaults to now)
+ * @param User|null $user User the timestamp is being generated for (or null to use main context's user)
+ * @param Language|null $lang Language to use to make the human timestamp (or null to use main context's language)
+ * @return string Formatted timestamp
+ */
+ public function getHumanTimestamp( MWTimestamp $relativeTo = null, User $user = null, Language $lang = null ) {
+ if ( $relativeTo === null ) {
+ $relativeTo = new self();
+ }
+ if ( $user === null ) {
+ $user = RequestContext::getMain()->getUser();
+ }
+ if ( $lang === null ) {
+ $lang = RequestContext::getMain()->getLanguage();
+ }
+
+ // Adjust for the user's timezone.
+ $offsetThis = $this->offsetForUser( $user );
+ $offsetRel = $relativeTo->offsetForUser( $user );
+
+ $ts = '';
+ if ( wfRunHooks( 'GetHumanTimestamp', array( &$ts, $this, $relativeTo, $user, $lang ) ) ) {
+ $ts = $lang->getHumanTimestamp( $this, $relativeTo, $user );
+ }
+
+ // Reset the timezone on the objects.
+ $this->timestamp->sub( $offsetThis );
+ $relativeTo->timestamp->sub( $offsetRel );
+
+ return $ts;
+ }
+
+ /**
+ * Adjust the timestamp depending on the given user's preferences.
+ *
+ * @since 1.22
+ *
+ * @param User $user User to take preferences from
+ * @param[out] MWTimestamp $ts Timestamp to adjust
+ * @return DateInterval Offset that was applied to the timestamp
+ */
+ public function offsetForUser( User $user ) {
+ global $wgLocalTZoffset;
+
+ $option = $user->getOption( 'timecorrection' );
+ $data = explode( '|', $option, 3 );
+
+ // First handle the case of an actual timezone being specified.
+ if ( $data[0] == 'ZoneInfo' ) {
+ try {
+ $tz = new DateTimeZone( $data[2] );
+ } catch ( Exception $e ) {
+ $tz = false;
+ }
+
+ if ( $tz ) {
+ $this->timestamp->setTimezone( $tz );
+ return new DateInterval( 'P0Y' );
+ } else {
+ $data[0] = 'Offset';
+ }
+ }
+
+ $diff = 0;
+ // If $option is in fact a pipe-separated value, check the
+ // first value.
+ if ( $data[0] == 'System' ) {
+ // First value is System, so use the system offset.
+ if ( isset( $wgLocalTZoffset ) ) {
+ $diff = $wgLocalTZoffset;
+ }
+ } elseif ( $data[0] == 'Offset' ) {
+ // First value is Offset, so use the specified offset
+ $diff = (int)$data[1];
+ } else {
+ // $option actually isn't a pipe separated value, but instead
+ // a comma separated value. Isn't MediaWiki fun?
+ $data = explode( ':', $option );
+ if ( count( $data ) >= 2 ) {
+ // Combination hours and minutes.
+ $diff = abs( (int)$data[0] ) * 60 + (int)$data[1];
+ if ( (int)$data[0] < 0 ) {
+ $diff *= -1;
+ }
+ } else {
+ // Just hours.
+ $diff = (int)$data[0] * 60;
+ }
+ }
+
+ $interval = new DateInterval( 'PT' . abs( $diff ) . 'M' );
+ if ( $diff < 1 ) {
+ $interval->invert = 1;
+ }
+
+ $this->timestamp->add( $interval );
+ return $interval;
+ }
+
+ /**
+ * Generate a purely relative timestamp, i.e., represent the time elapsed between
+ * the given base timestamp and this object.
+ *
+ * @param MWTimestamp $relativeTo Relative base timestamp (defaults to now)
+ * @param User $user Use to use offset for
+ * @param Language $lang Language to use
+ * @param array $chosenIntervals Intervals to use to represent it
+ * @return string Relative timestamp
+ */
+ public function getRelativeTimestamp(
+ MWTimestamp $relativeTo = null,
+ User $user = null,
+ Language $lang = null,
+ array $chosenIntervals = array()
+ ) {
+ if ( $relativeTo === null ) {
+ $relativeTo = new self;
+ }
+ if ( $user === null ) {
+ $user = RequestContext::getMain()->getUser();
+ }
+ if ( $lang === null ) {
+ $lang = RequestContext::getMain()->getLanguage();
+ }
+
+ $ts = '';
+ $diff = $this->diff( $relativeTo );
+ if ( wfRunHooks( 'GetRelativeTimestamp', array( &$ts, &$diff, $this, $relativeTo, $user, $lang ) ) ) {
+ $seconds = ( ( ( $diff->days * 24 + $diff->h ) * 60 + $diff->i ) * 60 + $diff->s );
+ $ts = wfMessage( 'ago', $lang->formatDuration( $seconds, $chosenIntervals ) )
+ ->inLanguage( $lang )
+ ->text();
+ }
+
+ return $ts;
+ }
+
+ /**
+ * @since 1.20
+ *
+ * @return string
+ */
+ public function __toString() {
+ return $this->getTimestamp();
+ }
+
+ /**
+ * Calculate the difference between two MWTimestamp objects.
+ *
+ * @since 1.22
+ * @param MWTimestamp $relativeTo Base time to calculate difference from
+ * @return DateInterval|bool The DateInterval object representing the difference between the two dates or false on failure
+ */
+ public function diff( MWTimestamp $relativeTo ) {
+ return $this->timestamp->diff( $relativeTo->timestamp );
+ }
+
+ /**
+ * Set the timezone of this timestamp to the specified timezone.
+ *
+ * @since 1.22
+ * @param String $timezone Timezone to set
+ * @throws TimestampException
+ */
+ public function setTimezone( $timezone ) {
+ try {
+ $this->timestamp->setTimezone( new DateTimeZone( $timezone ) );
+ } catch ( Exception $e ) {
+ throw new TimestampException( __METHOD__ . ': Invalid timezone.', $e->getCode(), $e );
+ }
+ }
+
+ /**
+ * Get the timezone of this timestamp.
+ *
+ * @since 1.22
+ * @return DateTimeZone The timezone
+ */
+ public function getTimezone() {
+ return $this->timestamp->getTimezone();
+ }
+
+ /**
+ * Format the timestamp in a given format.
+ *
+ * @since 1.22
+ * @param string $format Pattern to format in
+ * @return string The formatted timestamp
+ */
+ public function format( $format ) {
+ return $this->timestamp->format( $format );
+ }
+
+ /**
+ * Get a timestamp instance in the server local timezone ($wgLocaltimezone)
+ *
+ * @since 1.22
+ * @param bool|string $ts Timestamp to set, or false for current time
+ * @return MWTimestamp the local instance
+ */
+ public static function getLocalInstance( $ts = false ) {
+ global $wgLocaltimezone;
+ $timestamp = new self( $ts );
+ $timestamp->setTimezone( $wgLocaltimezone );
+ return $timestamp;
+ }
+
+ /**
+ * Get a timestamp instance in GMT
+ *
+ * @since 1.22
+ * @param bool|string $ts Timestamp to set, or false for current time
+ * @return MWTimestamp the instance
+ */
+ public static function getInstance( $ts = false ) {
+ return new self( $ts );
+ }
+}
var $mId, $mSynonyms, $mCaseSensitive;
var $mRegex = '';
var $mRegexStart = '';
+ var $mRegexStartToEnd = '';
var $mBaseRegex = '';
var $mVariableRegex = '';
var $mVariableStartToEndRegex = '';
'contentlanguage',
'numberofadmins',
'numberofviews',
+ 'cascadingsources',
);
/* Array of caching hints for ParserCache */
$case = $this->mCaseSensitive ? '' : 'iu';
$this->mRegex = "/{$this->mBaseRegex}/{$case}";
$this->mRegexStart = "/^(?:{$this->mBaseRegex})/{$case}";
+ $this->mRegexStartToEnd = "/^(?:{$this->mBaseRegex})$/{$case}";
$this->mVariableRegex = str_replace( "\\$1", "(.*?)", $this->mRegex );
$this->mVariableStartToEndRegex = str_replace( "\\$1", "(.*?)",
"/^(?:{$this->mBaseRegex})$/{$case}" );
return $this->mRegexStart;
}
+ /**
+ * Gets a regex matching the word from start to end of a string
+ *
+ * @return string
+ * @since 1.23
+ */
+ function getRegexStartToEnd() {
+ if ( $this->mRegexStartToEnd == '' ) {
+ $this->initRegex();
+ }
+ return $this->mRegexStartToEnd;
+ }
+
/**
* regex without the slashes and what not
*
return (bool)preg_match( $this->getRegexStart(), $text );
}
+ /**
+ * Returns true if the text matched the word
+ *
+ * @param $text string
+ *
+ * @return bool
+ * @since 1.23
+ */
+ function matchStartToEnd( $text ) {
+ return (bool)preg_match( $this->getRegexStartToEnd(), $text );
+ }
+
/**
* Returns NULL if there's no match, the value of $1 otherwise
* The return code is the matched string, if there's no variable
$magic = MagicWord::get( $name );
$case = intval( $magic->isCaseSensitive() );
foreach ( $magic->getSynonyms() as $i => $syn ) {
- $group = "(?P<{$i}_{$name}>" . preg_quote( $syn, '/' ) . ')';
+ // Group name must start with a non-digit in PCRE 8.34+
+ $it = strtr( $i, '0123456789', 'abcdefghij' );
+ $group = "(?P<{$it}_{$name}>" . preg_quote( $syn, '/' ) . ')';
if ( $this->baseRegex[$case] === '' ) {
$this->baseRegex[$case] = $group;
} else {
public static function clear() {
// TODO: Give this some more thought
- // TODO: Is TRUNCATE better?
try {
+ // Not using TRUNCATE, because that needs extra permissions,
+ // which maybe not granted to the database user.
$dbw = wfGetDB( DB_MASTER );
$dbw->delete( 'msg_resource', '*', __METHOD__ );
$dbw->delete( 'msg_resource_links', '*', __METHOD__ );
+++ /dev/null
-<?php
-/**
- * Base code to format metadata.
- *
- * Copyright 2004, Evan Prodromou <evan@wikitravel.org>.
- *
- * 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
- *
- * @author Evan Prodromou <evan@wikitravel.org>
- * @file
- */
-
-abstract class RdfMetaData {
- const RDF_TYPE_PREFS = 'application/rdf+xml,text/xml;q=0.7,application/xml;q=0.5,text/rdf;q=0.1';
-
- /**
- * Constructor
- * @param Page $page
- */
- public function __construct( Page $page ) {
- $this->mArticle = $page;
- }
-
- abstract public function show();
-
- protected function setup() {
- global $wgOut, $wgRequest;
-
- $httpaccept = isset( $_SERVER['HTTP_ACCEPT'] ) ? $_SERVER['HTTP_ACCEPT'] : null;
- $rdftype = wfNegotiateType(
- wfAcceptToPrefs( $httpaccept ),
- wfAcceptToPrefs( self::RDF_TYPE_PREFS )
- );
-
- if ( !$rdftype ) {
- throw new HttpError( 406, wfMessage( 'notacceptable' ) );
- }
-
- $wgOut->disable();
- $wgRequest->response()->header( "Content-type: {$rdftype}; charset=utf-8" );
- $wgOut->sendCacheControl();
- return true;
- }
-
- protected function reallyFullUrl() {
- return $this->mArticle->getTitle()->getFullURL();
- }
-
- protected function basics() {
- global $wgLanguageCode, $wgSitename;
-
- $this->element( 'title', $this->mArticle->getTitle()->getText() );
- $this->pageOrString( 'publisher', wfMessage( 'aboutpage' )->text(), $wgSitename );
- $this->element( 'language', $wgLanguageCode );
- $this->element( 'type', 'Text' );
- $this->element( 'format', 'text/html' );
- $this->element( 'identifier', $this->reallyFullUrl() );
- $this->element( 'date', $this->date( $this->mArticle->getTimestamp() ) );
-
- $lastEditor = User::newFromId( $this->mArticle->getUser() );
- $this->person( 'creator', $lastEditor );
-
- foreach ( $this->mArticle->getContributors() as $user ) {
- $this->person( 'contributor', $user );
- }
-
- $this->rights();
- }
-
- protected function element( $name, $value ) {
- $value = htmlspecialchars( $value );
- print "\t\t<dc:{$name}>{$value}</dc:{$name}>\n";
- }
-
- protected function date( $timestamp ) {
- return substr( $timestamp, 0, 4 ) . '-'
- . substr( $timestamp, 4, 2 ) . '-'
- . substr( $timestamp, 6, 2 );
- }
-
- protected function pageOrString( $name, $page, $str ) {
- if ( $page instanceof Title ) {
- $nt = $page;
- } else {
- $nt = Title::newFromText( $page );
- }
-
- if ( !$nt || $nt->getArticleID() == 0 ) {
- $this->element( $name, $str );
- } else {
- $this->page( $name, $nt );
- }
- }
-
- /**
- * @param string $name
- * @param Title $title
- */
- protected function page( $name, $title ) {
- $this->url( $name, $title->getFullURL() );
- }
-
- protected function url( $name, $url ) {
- $url = htmlspecialchars( $url );
- print "\t\t<dc:{$name} rdf:resource=\"{$url}\" />\n";
- }
-
- protected function person( $name, User $user ) {
- global $wgHiddenPrefs;
-
- if ( $user->isAnon() ) {
- $this->element( $name, wfMessage( 'anonymous' )->numParams( 1 )->text() );
- } else {
- $real = $user->getRealName();
- if ( $real && !in_array( 'realname', $wgHiddenPrefs ) ) {
- $this->element( $name, $real );
- } else {
- $userName = $user->getName();
- $this->pageOrString(
- $name,
- $user->getUserPage(),
- wfMessage( 'siteuser', $userName, $userName )->text()
- );
- }
- }
- }
-
- /**
- * Takes an arg, for future enhancement with different rights for
- * different pages.
- */
- protected function rights() {
- global $wgRightsPage, $wgRightsUrl, $wgRightsText;
-
- if ( $wgRightsPage && ( $nt = Title::newFromText( $wgRightsPage ) )
- && ( $nt->getArticleID() != 0 ) ) {
- $this->page( 'rights', $nt );
- } elseif ( $wgRightsUrl ) {
- $this->url( 'rights', $wgRightsUrl );
- } elseif ( $wgRightsText ) {
- $this->element( 'rights', $wgRightsText );
- }
- }
-
- protected function getTerms( $url ) {
- global $wgLicenseTerms;
-
- if ( $wgLicenseTerms ) {
- return $wgLicenseTerms;
- } else {
- $known = $this->getKnownLicenses();
- if ( isset( $known[$url] ) ) {
- return $known[$url];
- } else {
- return array();
- }
- }
- }
-
- protected function getKnownLicenses() {
- $ccLicenses = array( 'by', 'by-nd', 'by-nd-nc', 'by-nc',
- 'by-nc-sa', 'by-sa' );
- $ccVersions = array( '1.0', '2.0' );
- $knownLicenses = array();
-
- foreach ( $ccVersions as $version ) {
- foreach ( $ccLicenses as $license ) {
- if ( $version == '2.0' && substr( $license, 0, 2 ) != 'by' ) {
- # 2.0 dropped the non-attribs licenses
- continue;
- }
- $lurl = "http://creativecommons.org/licenses/{$license}/{$version}/";
- $knownLicenses[$lurl] = explode( '-', $license );
- $knownLicenses[$lurl][] = 're';
- $knownLicenses[$lurl][] = 'di';
- $knownLicenses[$lurl][] = 'no';
- if ( !in_array( 'nd', $knownLicenses[$lurl] ) ) {
- $knownLicenses[$lurl][] = 'de';
- }
- }
- }
-
- /* Handle the GPL and LGPL, too. */
-
- $knownLicenses['http://creativecommons.org/licenses/GPL/2.0/'] =
- array( 'de', 're', 'di', 'no', 'sa', 'sc' );
- $knownLicenses['http://creativecommons.org/licenses/LGPL/2.1/'] =
- array( 'de', 're', 'di', 'no', 'sa', 'sc' );
- $knownLicenses['http://www.gnu.org/copyleft/fdl.html'] =
- array( 'de', 're', 'di', 'no', 'sa', 'sc' );
-
- return $knownLicenses;
- }
-}
);
/**
- * @EasterEgg I just love the name for this self documenting variable.
- * @todo document
+ * Whether output is disabled. If this is true, the 'output' method will do nothing.
+ *
+ * @var bool $mDoNothing
*/
var $mDoNothing = false;
/**
* Output a standard error page
*
+ * showErrorPage( 'titlemsg', 'pagetextmsg' );
* showErrorPage( 'titlemsg', 'pagetextmsg', array( 'param1', 'param2' ) );
* showErrorPage( 'titlemsg', $messageObject );
- * showErrorPage( $titleMessageObj, $messageObject );
+ * showErrorPage( $titleMessageObject, $messageObject );
*
* @param $title Mixed: message key (string) for page title, or a Message object
* @param $msg Mixed: message key (string) for page text, or a Message object
$this->prepareErrorPage( $title );
if ( $msg instanceof Message ) {
+ if ( $params !== array() ) {
+ trigger_error( 'Argument ignored: $params. The message parameters argument is discarded when the $msg argument is a Message object instead of a string.', E_USER_NOTICE );
+ }
$this->addHTML( $msg->parseAsBlock() );
} else {
$this->addWikiMsgArray( $msg, $params );
$ret .= Html::element( 'title', null, $this->getHTMLTitle() ) . "\n";
+ // Avoid Internet Explorer "compatibility view", so that
+ // jQuery can work correctly.
+ $ret .= Html::element( 'meta', array( 'http-equiv' => 'X-UA-Compatible', 'content' => 'IE=EDGE' ) );
+
$ret .= implode( "\n", array(
$this->getHeadLinks(),
$this->buildCssLinks(),
* representing the result row $row. Rows will be concatenated and
* returned by getBody()
*
- * @param array $row Database row
+ * @param array|stdClass $row Database row
* @return string
*/
abstract function formatRow( $row );
}
$defaultPreferences['stubthreshold'] = array(
- 'type' => 'selectorother',
+ 'type' => 'select',
'section' => 'rendering/advancedrendering',
'options' => $stubThresholdOptions,
'size' => 20,
'label-raw' => $context->msg( 'stub-threshold' )->text(), // Raw HTML message. Yay?
);
- if ( $wgAllowUserCssPrefs ) {
- $defaultPreferences['showtoc'] = array(
- 'type' => 'toggle',
- 'section' => 'rendering/advancedrendering',
- 'label-message' => 'tog-showtoc',
- );
- }
$defaultPreferences['showhiddencats'] = array(
'type' => 'toggle',
'section' => 'rendering/advancedrendering',
'label-message' => 'tog-showhiddencats'
);
- if ( $wgAllowUserCssPrefs ) {
- $defaultPreferences['justify'] = array(
- 'type' => 'toggle',
- 'section' => 'rendering/advancedrendering',
- 'label-message' => 'tog-justify',
- );
- }
-
$defaultPreferences['numberheadings'] = array(
'type' => 'toggle',
'section' => 'rendering/advancedrendering',
global $wgAllowUserCssPrefs;
## Editing #####################################
- if ( $wgAllowUserCssPrefs ) {
- $defaultPreferences['editsection'] = array(
- 'type' => 'toggle',
- 'section' => 'editing/advancedediting',
- 'label-message' => 'tog-editsection',
- );
- }
$defaultPreferences['editsectiononrightclick'] = array(
'type' => 'toggle',
'section' => 'editing/advancedediting',
static function searchPreferences( $user, IContextSource $context, &$defaultPreferences ) {
global $wgContLang, $wgVectorUseSimpleSearch;
- ## Search #####################################
- $defaultPreferences['searchlimit'] = array(
- 'type' => 'int',
- 'label-message' => 'resultsperpage',
- 'section' => 'searchoptions/displaysearchoptions',
- 'min' => 0,
- );
-
if ( $wgVectorUseSimpleSearch ) {
$defaultPreferences['vector-simplesearch'] = array(
'type' => 'toggle',
# If users have saved a value for a preference which has subsequently been disabled
# via $wgHiddenPrefs, we don't want to destroy that setting in case the preference
# is subsequently re-enabled
- # TODO: maintenance script to actually delete these
foreach ( $wgHiddenPrefs as $pref ) {
# If the user has not set a non-default value here, the default will be returned
# and subsequently discarded
$user->setOption( $key, $value );
}
+ wfRunHooks( 'PreferencesFormPreSave', array( $formData, $form, $user, &$result ) );
$user->saveSettings();
}
// Find a Title which is not an interwiki and is in NS_MAIN
$title = Title::newFromText( $search );
- if ( $title && $title->getInterwiki() == '' ) {
+ if ( $title && !$title->isExternal() ) {
$ns = array( $title->getNamespace() );
if ( $ns[0] == NS_MAIN ) {
$ns = $namespaces; // no explicit prefix, use default namespaces
$title = Title::newFromText( $search . 'Dummy' );
if ( $title && $title->getText() == 'Dummy'
&& $title->getNamespace() != NS_MAIN
- && $title->getInterwiki() == '' ) {
+ && !$title->isExternal() ) {
return self::searchBackend(
array( $title->getNamespace() ), '', $limit );
}
/**
* Somewhat deprecated, you probably want to be using execute()
* @param int|bool $offset
- * @oaram int|bool $limit
+ * @param int|bool $limit
* @return ResultWrapper
*/
function doQuery( $offset = false, $limit = false ) {
/**
* This is the actual workhorse. It does everything needed to make a
* real, honest-to-gosh query page.
- * @para $par
+ * @param string $par
* @return int
*/
function execute( $par ) {
}
}
- /**
- * Alias for getText(Revision::FOR_THIS_USER)
- *
- * @deprecated since 1.17
- * @return String
- */
- public function revText() {
- wfDeprecated( __METHOD__, '1.17' );
- return $this->getText( self::FOR_THIS_USER );
- }
-
/**
* Fetch revision text without regard for view restrictions
*
/**
* Get revision text associated with an old or archive row
* $row is usually an object from wfFetchRow(), both the flags and the text
- * field must be included
+ * field must be included.
*
- * @param $row Object: the text data
- * @param string $prefix table prefix (default 'old_')
- * @param string|false $wiki the name of the wiki to load the revision text from
- * (same as the the wiki $row was loaded from) or false to indicate the local
- * wiki (this is the default). Otherwise, it must be a symbolic wiki database
- * identifier as understood by the LoadBalancer class.
- * @return String: text the text requested or false on failure
+ * @param stdClass $row The text data
+ * @param string $prefix Table prefix (default 'old_')
+ * @param string|bool $wiki The name of the wiki to load the revision text from
+ * (same as the the wiki $row was loaded from) or false to indicate the local
+ * wiki (this is the default). Otherwise, it must be a symbolic wiki database
+ * identifier as understood by the LoadBalancer class.
+ * @return string Text the text requested or false on failure
*/
public static function getRevisionText( $row, $prefix = 'old_', $wiki = false ) {
wfProfileIn( __METHOD__ );
* Cleans up HTML, removes dangerous tags and attributes, and
* removes HTML comments
* @private
- * @param $text String
- * @param $processCallback Callback to do any variable or parameter
- * replacements in HTML attribute values
- * @param array $args for the processing callback
- * @param array $extratags for any extra tags to include
- * @param array $removetags for any tags (default or extra) to exclude
+ * @param string $text
+ * @param callable $processCallback Callback to do any variable or parameter
+ * replacements in HTML attribute values
+ * @param array $args Arguments for the processing callback
+ * @param array $extratags For any extra tags to include
+ * @param array $removetags For any tags (default or extra) to exclude
* @return string
*/
static function removeHTMLtags( $text, $processCallback = null,
* trailing spaces and one of the newlines.
*
* @private
- * @param $text String
+ * @param string $text
* @return string
*/
static function removeHTMLcomments( $text ) {
* where we may want to allow a tag within content but ONLY when it has
* specific attributes set.
*
- * @param $params
- * @param $element
+ * @param string $params
+ * @param string $element
* @return bool
*/
static function validateTag( $params, $element ) {
* - Unsafe style attributes are discarded
* - Invalid id attributes are re-encoded
*
- * @param $attribs Array
- * @param $element String
- * @return Array
+ * @param array $attribs
+ * @param string $element
+ * @return array
*
* @todo Check for legal values where the DTD limits things.
* @todo Check for unique id attribute :P
* - Unsafe style attributes are discarded
* - Invalid id attributes are re-encoded
*
- * @param $attribs Array
+ * @param array $attribs
* @param array $whitelist list of allowed attribute names
- * @return Array
+ * @return array
*
* @todo Check for legal values where the DTD limits things.
* @todo Check for unique id attribute :P
* will be combined (if they're both strings).
*
* @todo implement merging for other attributes such as style
- * @param $a Array
- * @param $b Array
+ * @param array $a
+ * @param array $b
* @return array
*/
static function mergeAttributes( $a, $b ) {
* clever input strings. These character references must
* be escaped before the return value is embedded in HTML.
*
- * @param $value String
- * @return String
+ * @param string $value
+ * @return string
*/
static function checkCss( $value ) {
// Decode character references like {
// Normalize Halfwidth and Fullwidth Unicode block that IE6 might treat as ascii
$value = preg_replace_callback(
- '/[ï¼\81-ï½\9a]/u', // U+FF01 to U+FF5A
+ '/[ï¼\81-[]-ï½\9a]/u', // U+FF01 to U+FF5A, excluding U+FF3C (bug 58088)
function ( $matches ) {
$cp = utf8ToCodepoint( $matches[0] );
if ( $cp === false ) {
// Reject problematic keywords and control characters
if ( preg_match( '/[\000-\010\013\016-\037\177]/', $value ) ) {
return '/* invalid control char */';
- } elseif ( preg_match( '! expression | filter\s*: | accelerator\s*: | url\s*\( | image\s*\( | image-set\s*\( !ix', $value ) ) {
+ } elseif ( preg_match(
+ '! expression
+ | filter\s*:
+ | accelerator\s*:
+ | -o-link\s*:
+ | -o-link-source\s*:
+ | -o-replace\s*:
+ | url\s*\(
+ | image\s*\(
+ | image-set\s*\(
+ !ix', $value ) ) {
return '/* insecure input */';
}
return $value;
}
/**
- * @param $matches array
- * @return String
+ * @param array $matches
+ * @return string
*/
static function cssDecodeCallback( $matches ) {
if ( $matches[1] !== '' ) {
* - Unsafe style attributes are discarded
* - Prepends space if there are attributes.
*
- * @param $text String
- * @param $element String
- * @return String
+ * @param string $text
+ * @param string $element
+ * @return string
*/
static function fixTagAttributes( $text, $element ) {
if ( trim( $text ) == '' ) {
/**
* Encode an attribute value for HTML output.
- * @param $text String
- * @return HTML-encoded text fragment
+ * @param string $text
+ * @return string HTML-encoded text fragment
*/
static function encodeAttribute( $text ) {
$encValue = htmlspecialchars( $text, ENT_QUOTES );
/**
* Encode an attribute value for HTML tags, with extra armoring
* against further wiki processing.
- * @param $text String
- * @return HTML-encoded text fragment
+ * @param string $text
+ * @return string HTML-encoded text fragment
*/
static function safeEncodeAttribute( $text ) {
$encValue = Sanitizer::encodeAttribute( $text );
* (which don't work reliably in fragments cross-browser).
*
* @see http://www.w3.org/TR/html401/types.html#type-name Valid characters
- * in the id and
- * name attributes
- * @see http://www.w3.org/TR/html401/struct/links.html#h-12.2.3 Anchors with the id attribute
+ * in the id and name attributes
+ * @see http://www.w3.org/TR/html401/struct/links.html#h-12.2.3 Anchors with
+ * the id attribute
* @see http://www.whatwg.org/html/elements.html#the-id-attribute
* HTML5 definition of id attribute
*
* 'legacy': Behave the way the old HTML 4-based ID escaping worked even
* if $wgExperimentalHtmlIds is used, so we can generate extra
* anchors and links won't break.
- * @return String
+ * @return string
*/
static function escapeId( $id, $options = array() ) {
global $wgExperimentalHtmlIds;
*
* @see http://www.w3.org/TR/CSS21/syndata.html Valid characters/format
*
- * @param $class String
- * @return String
+ * @param string $class
+ * @return string
*/
static function escapeClass( $class ) {
// Convert ugly stuff to underscores and kill underscores in ugly places
* Given HTML input, escape with htmlspecialchars but un-escape entities.
* This allows (generally harmless) entities like   to survive.
*
- * @param string $html to escape
- * @return String: escaped input
+ * @param string $html HTML to escape
+ * @return string: escaped input
*/
static function escapeHtmlAllowEntities( $html ) {
$html = Sanitizer::decodeCharReferences( $html );
/**
* Regex replace callback for armoring links against further processing.
- * @param $matches Array
+ * @param array $matches
* @return string
*/
private static function armorLinksCallback( $matches ) {
* a partial tag string. Attribute names are forces to lowercase,
* character references are decoded to UTF-8 text.
*
- * @param $text String
- * @return Array
+ * @param string $text
+ * @return array
*/
public static function decodeTagAttributes( $text ) {
if ( trim( $text ) == '' ) {
* Build a partial tag string from an associative array of attribute
* names and values as returned by decodeTagAttributes.
*
- * @param $assoc_array Array
- * @return String
+ * @param array $assoc_array
+ * @return string
*/
public static function safeEncodeTagAttributes( $assoc_array ) {
$attribs = array();
* Pick the appropriate attribute value from a match set from the
* attribs regex matches.
*
- * @param $set Array
- * @throws MWException
- * @return String
+ * @param array $set
+ * @throws MWException when tag conditions are not met.
+ * @return string
*/
private static function getTagAttributeCallback( $set ) {
if ( isset( $set[6] ) ) {
* but note that we're not returning the value, but are returning
* XML source fragments that will be slapped into output.
*
- * @param $text String
- * @return String
+ * @param string $text
+ * @return string
+ * @todo Remove, unused?
*/
private static function normalizeAttributeValue( $text ) {
return str_replace( '"', '"',
}
/**
- * @param $text string
- * @return mixed
+ * @param string $text
+ * @return string
*/
private static function normalizeWhitespace( $text ) {
return preg_replace(
* by Parser::stripSectionName(), for use in the id's that are used for
* section links.
*
- * @param $section String
- * @return String
+ * @param string $section
+ * @return string
*/
static function normalizeSectionNameWhitespace( $section ) {
return trim( preg_replace( '/[ _]+/', ' ', $section ) );
* c. use lower cased "&#x", not "&#X"
* d. fix or reject non-valid attributes
*
- * @param $text String
- * @return String
+ * @param string $text
+ * @return string
* @private
*/
static function normalizeCharReferences( $text ) {
$text );
}
/**
- * @param $matches String
- * @return String
+ * @param string $matches
+ * @return string
*/
static function normalizeCharReferencesCallback( $matches ) {
$ret = null;
* the HTML equivalent. Otherwise, returns HTML-escaped text of
* pseudo-entity source (eg &foo;)
*
- * @param $name String
- * @return String
+ * @param string $name
+ * @return string
*/
static function normalizeEntity( $name ) {
if ( isset( self::$htmlEntityAliases[$name] ) ) {
}
/**
- * @param $codepoint
+ * @param int $codepoint
* @return null|string
*/
static function decCharReference( $codepoint ) {
}
/**
- * @param $codepoint
+ * @param int $codepoint
* @return null|string
*/
static function hexCharReference( $codepoint ) {
/**
* Returns true if a given Unicode codepoint is a valid character in XML.
- * @param $codepoint Integer
- * @return Boolean
+ * @param int $codepoint
+ * @return bool
*/
private static function validateCodepoint( $codepoint ) {
return $codepoint == 0x09
* Decode any character references, numeric or named entities,
* in the text and return a UTF-8 string.
*
- * @param $text String
- * @return String
+ * @param string $text
+ * @return string
*/
public static function decodeCharReferences( $text ) {
return preg_replace_callback(
* This is useful for page titles, not for text to be displayed,
* MediaWiki allows HTML entities to escape normalization as a feature.
*
- * @param string $text (already normalized, containing entities)
- * @return String (still normalized, without entities)
+ * @param string $text Already normalized, containing entities
+ * @return string Still normalized, without entities
*/
public static function decodeCharReferencesAndNormalize( $text ) {
global $wgContLang;
}
/**
- * @param $matches String
- * @return String
+ * @param string $matches
+ * @return string
*/
static function decodeCharReferencesCallback( $matches ) {
if ( $matches[1] != '' ) {
/**
* Return UTF-8 string for a codepoint if that is a valid
* character reference, otherwise U+FFFD REPLACEMENT CHARACTER.
- * @param $codepoint Integer
- * @return String
+ * @param int $codepoint
+ * @return string
* @private
*/
static function decodeChar( $codepoint ) {
* return the UTF-8 encoding of that character. Otherwise, returns
* pseudo-entity source (eg "&foo;")
*
- * @param $name String
- * @return String
+ * @param string $name
+ * @return string
*/
static function decodeEntity( $name ) {
if ( isset( self::$htmlEntityAliases[$name] ) ) {
/**
* Fetch the whitelist of acceptable attributes for a given element name.
*
- * @param $element String
- * @return Array
+ * @param string $element
+ * @return array
*/
static function attributeWhitelist( $element ) {
$list = Sanitizer::setupAttributeWhitelist();
/**
* Foreach array key (an allowed HTML element), return an array
* of allowed attributes
- * @return Array
+ * @return array
*/
static function setupAttributeWhitelist() {
global $wgAllowRdfaAttributes, $wgAllowMicrodataAttributes;
* inclusion in HTML output as of 1.10!
*
* @param string $text HTML fragment
- * @return String
+ * @return string
*/
static function stripAllTags( $text ) {
# Actual <tags>
*
* Use for passing XHTML fragments to PHP's XML parsing functions
*
- * @return String
+ * @return string
*/
static function hackDocType() {
$out = "<!DOCTYPE html [\n";
}
/**
- * @param $url string
+ * @param string $url
* @return mixed|string
*/
static function cleanUrl( $url ) {
}
/**
- * @param $matches array
+ * @param array $matches
* @return string
*/
static function cleanUrlCallback( $matches ) {
* @since 1.18
*
* @param string $addr E-mail address
- * @return Bool
+ * @return bool
*/
public static function validateEmail( $addr ) {
$result = null;
wfProfileOut( $fname . '-exception' );
wfProfileIn( $fname . '-includes' );
-require_once "$IP/includes/normal/UtfNormalUtil.php";
require_once "$IP/includes/GlobalFunctions.php";
+require_once "$IP/includes/normal/UtfNormalUtil.php";
require_once "$IP/includes/normal/UtfNormalDefines.php";
wfProfileOut( $fname . '-includes' );
);
}
+$wgDeferredUpdateList = array(); // b/c
+
wfProfileOut( $fname . '-defaults2' );
wfProfileIn( $fname . '-misc1' );
}
wfProfileOut( $fname . '-misc1' );
-wfProfileIn( $fname . '-memcached' );
-
-$wgMemc = wfGetMainCache();
-$messageMemc = wfGetMessageCacheStorage();
-$parserMemc = wfGetParserCacheStorage();
-$wgLangConvMemc = wfGetLangConverterCacheStorage();
+if ( !defined( 'MW_SETUP_NO_CACHE' ) ) {
+ wfProfileIn( $fname . '-memcached' );
-wfDebug( 'CACHES: ' . get_class( $wgMemc ) . '[main] ' .
- get_class( $messageMemc ) . '[message] ' .
- get_class( $parserMemc ) . "[parser]\n" );
+ $wgMemc = wfGetMainCache();
+ $messageMemc = wfGetMessageCacheStorage();
+ $parserMemc = wfGetParserCacheStorage();
+ $wgLangConvMemc = wfGetLangConverterCacheStorage();
-wfProfileOut( $fname . '-memcached' );
+ wfDebug( 'CACHES: ' . get_class( $wgMemc ) . '[main] ' .
+ get_class( $messageMemc ) . '[message] ' .
+ get_class( $parserMemc ) . "[parser]\n" );
-# # Most of the config is out, some might want to run hooks here.
-wfRunHooks( 'SetupAfterCache' );
+ wfProfileOut( $fname . '-memcached' );
+ # # Most of the config is out, some might want to run hooks here.
+ wfRunHooks( 'SetupAfterCache' );
+}
wfProfileIn( $fname . '-session' );
}
wfProfileOut( $fname . '-session' );
-wfProfileIn( $fname . '-globals' );
-$wgContLang = Language::factory( $wgLanguageCode );
-$wgContLang->initEncoding();
-$wgContLang->initContLang();
+if ( !defined( 'MW_SETUP_NO_CONTEXT' ) ) {
+ wfProfileIn( $fname . '-globals' );
-// Now that variant lists may be available...
-$wgRequest->interpolateTitle();
-$wgUser = RequestContext::getMain()->getUser(); # BackCompat
+ $wgContLang = Language::factory( $wgLanguageCode );
+ $wgContLang->initEncoding();
+ $wgContLang->initContLang();
-/**
- * @var $wgLang Language
- */
-$wgLang = new StubUserLang;
+ // Now that variant lists may be available...
+ $wgRequest->interpolateTitle();
+ $wgUser = RequestContext::getMain()->getUser(); # BackCompat
-/**
- * @var OutputPage
- */
-$wgOut = RequestContext::getMain()->getOutput(); # BackCompat
+ /**
+ * @var $wgLang Language
+ */
+ $wgLang = new StubUserLang;
-/**
- * @var $wgParser Parser
- */
-$wgParser = new StubObject( 'wgParser', $wgParserConf['class'], array( $wgParserConf ) );
+ /**
+ * @var OutputPage
+ */
+ $wgOut = RequestContext::getMain()->getOutput(); # BackCompat
-if ( !is_object( $wgAuth ) ) {
- $wgAuth = new StubObject( 'wgAuth', 'AuthPlugin' );
- wfRunHooks( 'AuthPluginSetup', array( &$wgAuth ) );
-}
+ /**
+ * @var $wgParser Parser
+ */
+ $wgParser = new StubObject( 'wgParser', $wgParserConf['class'], array( $wgParserConf ) );
-# Placeholders in case of DB error
-$wgTitle = null;
+ if ( !is_object( $wgAuth ) ) {
+ $wgAuth = new StubObject( 'wgAuth', 'AuthPlugin' );
+ wfRunHooks( 'AuthPluginSetup', array( &$wgAuth ) );
+ }
+
+ # Placeholders in case of DB error
+ $wgTitle = null;
-$wgDeferredUpdateList = array();
+ wfProfileOut( $fname . '-globals' );
+}
-wfProfileOut( $fname . '-globals' );
wfProfileIn( $fname . '-extensions' );
# Extension setup functions for extensions other than skins
: 'login';
$is_signup = $request->getText( 'type' ) == 'signup';
- $login_id = $this->showIPinHeader() ? 'anonlogin' : 'login';
$login_url = array(
'text' => $this->msg( $loginlink )->text(),
'href' => self::makeSpecialUrl( 'Userlogin', $returnto ),
$personal_urls['createaccount'] = $createaccount_url;
}
- $personal_urls[$login_id] = $login_url;
+ $personal_urls['login'] = $login_url;
}
wfRunHooks( 'PersonalUrls', array( &$personal_urls, &$title, $this ) );
echo htmlspecialchars( $this->data[$str] );
}
- /**
- * @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] );
- }
-
/**
* @private
*/
+++ /dev/null
-<?php
-/**
- * Factory for handling the special page list and generating SpecialPage objects.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- * http://www.gnu.org/copyleft/gpl.html
- *
- * @file
- * @ingroup SpecialPage
- * @defgroup SpecialPage SpecialPage
- */
-
-/**
- * Factory for handling the special page list and generating SpecialPage objects.
- *
- * To add a special page in an extension, add to $wgSpecialPages either
- * an object instance or an array containing the name and constructor
- * parameters. The latter is preferred for performance reasons.
- *
- * The object instantiated must be either an instance of SpecialPage or a
- * sub-class thereof. It must have an execute() method, which sends the HTML
- * for the special page to $wgOut. The parent class has an execute() method
- * which distributes the call to the historical global functions. Additionally,
- * execute() also checks if the user has the necessary access privileges
- * and bails out if not.
- *
- * To add a core special page, use the similar static list in
- * SpecialPageFactory::$list. To remove a core static special page at runtime, use
- * a SpecialPage_initList hook.
- *
- * @ingroup SpecialPage
- * @since 1.17
- */
-class SpecialPageFactory {
-
- /**
- * List of special page names to the subclass of SpecialPage which handles them.
- */
- private static $list = array(
- // Maintenance Reports
- 'BrokenRedirects' => 'BrokenRedirectsPage',
- 'Deadendpages' => 'DeadendpagesPage',
- 'DoubleRedirects' => 'DoubleRedirectsPage',
- 'Longpages' => 'LongpagesPage',
- 'Ancientpages' => 'AncientpagesPage',
- 'Lonelypages' => 'LonelypagesPage',
- 'Fewestrevisions' => 'FewestrevisionsPage',
- 'Withoutinterwiki' => 'WithoutinterwikiPage',
- 'Protectedpages' => 'SpecialProtectedpages',
- 'Protectedtitles' => 'SpecialProtectedtitles',
- 'Shortpages' => 'ShortpagesPage',
- 'Uncategorizedcategories' => 'UncategorizedcategoriesPage',
- 'Uncategorizedimages' => 'UncategorizedimagesPage',
- 'Uncategorizedpages' => 'UncategorizedpagesPage',
- 'Uncategorizedtemplates' => 'UncategorizedtemplatesPage',
- 'Unusedcategories' => 'UnusedcategoriesPage',
- 'Unusedimages' => 'UnusedimagesPage',
- 'Unusedtemplates' => 'UnusedtemplatesPage',
- 'Unwatchedpages' => 'UnwatchedpagesPage',
- 'Wantedcategories' => 'WantedcategoriesPage',
- 'Wantedfiles' => 'WantedfilesPage',
- 'Wantedpages' => 'WantedpagesPage',
- 'Wantedtemplates' => 'WantedtemplatesPage',
-
- // List of pages
- 'Allpages' => 'SpecialAllpages',
- 'Prefixindex' => 'SpecialPrefixindex',
- 'Categories' => 'SpecialCategories',
- 'Listredirects' => 'ListredirectsPage',
- 'PagesWithProp' => 'SpecialPagesWithProp',
-
- // Login/create account
- 'Userlogin' => 'LoginForm',
- 'CreateAccount' => 'SpecialCreateAccount',
-
- // Users and rights
- 'Block' => 'SpecialBlock',
- 'Unblock' => 'SpecialUnblock',
- 'BlockList' => 'SpecialBlockList',
- 'ChangePassword' => 'SpecialChangePassword',
- 'PasswordReset' => 'SpecialPasswordReset',
- 'DeletedContributions' => 'DeletedContributionsPage',
- 'Preferences' => 'SpecialPreferences',
- 'ResetTokens' => 'SpecialResetTokens',
- 'Contributions' => 'SpecialContributions',
- 'Listgrouprights' => 'SpecialListGroupRights',
- 'Listusers' => 'SpecialListUsers',
- 'Listadmins' => 'SpecialListAdmins',
- 'Listbots' => 'SpecialListBots',
- 'Activeusers' => 'SpecialActiveUsers',
- 'Userrights' => 'UserrightsPage',
- 'EditWatchlist' => 'SpecialEditWatchlist',
-
- // Recent changes and logs
- 'Newimages' => 'SpecialNewFiles',
- 'Log' => 'SpecialLog',
- 'Watchlist' => 'SpecialWatchlist',
- 'Newpages' => 'SpecialNewpages',
- 'Recentchanges' => 'SpecialRecentChanges',
- 'Recentchangeslinked' => 'SpecialRecentChangesLinked',
- 'Tags' => 'SpecialTags',
-
- // Media reports and uploads
- 'Listfiles' => 'SpecialListFiles',
- 'Filepath' => 'SpecialFilepath',
- 'MIMEsearch' => 'MIMEsearchPage',
- 'FileDuplicateSearch' => 'FileDuplicateSearchPage',
- 'Upload' => 'SpecialUpload',
- 'UploadStash' => 'SpecialUploadStash',
-
- // Data and tools
- 'Statistics' => 'SpecialStatistics',
- 'Allmessages' => 'SpecialAllmessages',
- 'Version' => 'SpecialVersion',
- 'Lockdb' => 'SpecialLockdb',
- 'Unlockdb' => 'SpecialUnlockdb',
-
- // Redirecting special pages
- 'LinkSearch' => 'LinkSearchPage',
- 'Randompage' => 'Randompage',
- 'RandomInCategory' => 'SpecialRandomInCategory',
- 'Randomredirect' => 'SpecialRandomredirect',
-
- // High use pages
- 'Mostlinkedcategories' => 'MostlinkedCategoriesPage',
- 'Mostimages' => 'MostimagesPage',
- 'Mostinterwikis' => 'MostinterwikisPage',
- 'Mostlinked' => 'MostlinkedPage',
- 'Mostlinkedtemplates' => 'MostlinkedTemplatesPage',
- 'Mostcategories' => 'MostcategoriesPage',
- 'Mostrevisions' => 'MostrevisionsPage',
-
- // Page tools
- 'ComparePages' => 'SpecialComparePages',
- 'Export' => 'SpecialExport',
- 'Import' => 'SpecialImport',
- 'Undelete' => 'SpecialUndelete',
- 'Whatlinkshere' => 'SpecialWhatlinkshere',
- 'MergeHistory' => 'SpecialMergeHistory',
- 'ExpandTemplates' => 'SpecialExpandTemplates',
-
- // Other
- 'Booksources' => 'SpecialBookSources',
-
- // Unlisted / redirects
- 'Blankpage' => 'SpecialBlankpage',
- 'Emailuser' => 'SpecialEmailUser',
- 'Movepage' => 'MovePageForm',
- 'Mycontributions' => 'SpecialMycontributions',
- 'Mypage' => 'SpecialMypage',
- 'Mytalk' => 'SpecialMytalk',
- 'Myuploads' => 'SpecialMyuploads',
- 'AllMyUploads' => 'SpecialAllMyUploads',
- 'PermanentLink' => 'SpecialPermanentLink',
- 'Redirect' => 'SpecialRedirect',
- 'Revisiondelete' => 'SpecialRevisionDelete',
- 'Specialpages' => 'SpecialSpecialpages',
- 'Userlogout' => 'SpecialUserlogout',
- );
-
- private static $aliases;
-
- /**
- * Get the special page list
- *
- * @return array
- */
- static function getList() {
- global $wgSpecialPages;
- global $wgDisableCounters, $wgDisableInternalSearch, $wgEmailAuthentication;
- global $wgEnableEmail, $wgEnableJavaScriptTest;
-
- if ( !is_object( self::$list ) ) {
- wfProfileIn( __METHOD__ );
-
- if ( !$wgDisableCounters ) {
- self::$list['Popularpages'] = 'PopularpagesPage';
- }
-
- if ( !$wgDisableInternalSearch ) {
- self::$list['Search'] = 'SpecialSearch';
- }
-
- if ( $wgEmailAuthentication ) {
- self::$list['Confirmemail'] = 'EmailConfirmation';
- self::$list['Invalidateemail'] = 'EmailInvalidation';
- }
-
- if ( $wgEnableEmail ) {
- self::$list['ChangeEmail'] = 'SpecialChangeEmail';
- }
-
- if ( $wgEnableJavaScriptTest ) {
- self::$list['JavaScriptTest'] = 'SpecialJavaScriptTest';
- }
-
- // Add extension special pages
- self::$list = array_merge( self::$list, $wgSpecialPages );
-
- // Run hooks
- // This hook can be used to remove undesired built-in special pages
- wfRunHooks( 'SpecialPage_initList', array( &self::$list ) );
-
- // Cast to object: func()[$key] doesn't work, but func()->$key does
- settype( self::$list, 'object' );
-
- wfProfileOut( __METHOD__ );
- }
- return self::$list;
- }
-
- /**
- * Initialise and return the list of special page aliases. Returns an object with
- * properties which can be accessed $obj->pagename - each property is an array of
- * aliases; the first in the array is the canonical alias. All registered special
- * pages are guaranteed to have a property entry, and for that property array to
- * contain at least one entry (English fallbacks will be added if necessary).
- * @return Object
- */
- static function getAliasList() {
- if ( !is_object( self::$aliases ) ) {
- global $wgContLang;
- $aliases = $wgContLang->getSpecialPageAliases();
-
- // Objects are passed by reference by default, need to create a copy
- $missingPages = clone self::getList();
-
- self::$aliases = array();
- foreach ( $aliases as $realName => $aliasList ) {
- foreach ( $aliasList as $alias ) {
- self::$aliases[$wgContLang->caseFold( $alias )] = $realName;
- }
- unset( $missingPages->$realName );
- }
- foreach ( $missingPages as $name => $stuff ) {
- self::$aliases[$wgContLang->caseFold( $name )] = $name;
- }
-
- // Cast to object: func()[$key] doesn't work, but func()->$key does
- self::$aliases = (object)self::$aliases;
- }
- return self::$aliases;
- }
-
- /**
- * Given a special page name with a possible subpage, return an array
- * where the first element is the special page name and the second is the
- * subpage.
- *
- * @param $alias String
- * @return Array( String, String|null ), or array( null, null ) if the page is invalid
- */
- public static function resolveAlias( $alias ) {
- global $wgContLang;
- $bits = explode( '/', $alias, 2 );
-
- $caseFoldedAlias = $wgContLang->caseFold( $bits[0] );
- $caseFoldedAlias = str_replace( ' ', '_', $caseFoldedAlias );
- if ( isset( self::getAliasList()->$caseFoldedAlias ) ) {
- $name = self::getAliasList()->$caseFoldedAlias;
- } else {
- return array( null, null );
- }
-
- if ( !isset( $bits[1] ) ) { // bug 2087
- $par = null;
- } else {
- $par = $bits[1];
- }
-
- return array( $name, $par );
- }
-
- /**
- * Add a page to a certain display group for Special:SpecialPages
- *
- * @param $page Mixed: SpecialPage or string
- * @param $group String
- * @deprecated since 1.21 Override SpecialPage::getGroupName
- */
- public static function setGroup( $page, $group ) {
- wfDeprecated( __METHOD__, '1.21' );
-
- global $wgSpecialPageGroups;
- $name = is_object( $page ) ? $page->getName() : $page;
- $wgSpecialPageGroups[$name] = $group;
- }
-
- /**
- * Get the group that the special page belongs in on Special:SpecialPage
- *
- * @param $page SpecialPage
- * @return String
- * @deprecated since 1.21 Use SpecialPage::getFinalGroupName
- */
- public static function getGroup( &$page ) {
- wfDeprecated( __METHOD__, '1.21' );
-
- return $page->getFinalGroupName();
- }
-
- /**
- * Check if a given name exist as a special page or as a special page alias
- *
- * @param string $name name of a special page
- * @return Boolean: true if a special page exists with this name
- */
- public static function exists( $name ) {
- list( $title, /*...*/ ) = self::resolveAlias( $name );
- return property_exists( self::getList(), $title );
- }
-
- /**
- * Find the object with a given name and return it (or NULL)
- *
- * @param string $name Special page name, may be localised and/or an alias
- * @return SpecialPage|null SpecialPage object or null if the page doesn't exist
- */
- public static function getPage( $name ) {
- list( $realName, /*...*/ ) = self::resolveAlias( $name );
- if ( property_exists( self::getList(), $realName ) ) {
- $rec = self::getList()->$realName;
- if ( is_string( $rec ) ) {
- $className = $rec;
- return new $className;
- } elseif ( is_array( $rec ) ) {
- // @deprecated, officially since 1.18, unofficially since forever
- wfDebug( "Array syntax for \$wgSpecialPages is deprecated, define a subclass of SpecialPage instead." );
- $className = array_shift( $rec );
- self::getList()->$realName = MWFunction::newObj( $className, $rec );
- }
- return self::getList()->$realName;
- } else {
- return null;
- }
- }
-
- /**
- * Return categorised listable special pages which are available
- * for the current user, and everyone.
- *
- * @param $user User object to check permissions, $wgUser will be used
- * if not provided
- * @return Array( String => Specialpage )
- */
- public static function getUsablePages( User $user = null ) {
- $pages = array();
- if ( $user === null ) {
- global $wgUser;
- $user = $wgUser;
- }
- foreach ( self::getList() as $name => $rec ) {
- $page = self::getPage( $name );
- if ( $page ) { // not null
- $page->setContext( RequestContext::getMain() );
- if ( $page->isListed()
- && ( !$page->isRestricted() || $page->userCanExecute( $user ) )
- ) {
- $pages[$name] = $page;
- }
- }
- }
- return $pages;
- }
-
- /**
- * Return categorised listable special pages for all users
- *
- * @return Array( String => Specialpage )
- */
- public static function getRegularPages() {
- $pages = array();
- foreach ( self::getList() as $name => $rec ) {
- $page = self::getPage( $name );
- if ( $page->isListed() && !$page->isRestricted() ) {
- $pages[$name] = $page;
- }
- }
- return $pages;
- }
-
- /**
- * Return categorised listable special pages which are available
- * for the current user, but not for everyone
- *
- * @return Array( String => Specialpage )
- */
- public static function getRestrictedPages() {
- global $wgUser;
- $pages = array();
- foreach ( self::getList() as $name => $rec ) {
- $page = self::getPage( $name );
- if (
- $page->isListed()
- && $page->isRestricted()
- && $page->userCanExecute( $wgUser )
- ) {
- $pages[$name] = $page;
- }
- }
- return $pages;
- }
-
- /**
- * Execute a special page path.
- * The path may contain parameters, e.g. Special:Name/Params
- * Extracts the special page name and call the execute method, passing the parameters
- *
- * Returns a title object if the page is redirected, false if there was no such special
- * page, and true if it was successful.
- *
- * @param $title Title object
- * @param $context IContextSource
- * @param $including Bool output is being captured for use in {{special:whatever}}
- *
- * @return bool
- */
- public static function executePath( Title &$title, IContextSource &$context, $including = false ) {
- wfProfileIn( __METHOD__ );
-
- // @todo FIXME: Redirects broken due to this call
- $bits = explode( '/', $title->getDBkey(), 2 );
- $name = $bits[0];
- if ( !isset( $bits[1] ) ) { // bug 2087
- $par = null;
- } else {
- $par = $bits[1];
- }
- $page = self::getPage( $name );
- // Nonexistent?
- if ( !$page ) {
- $context->getOutput()->setArticleRelated( false );
- $context->getOutput()->setRobotPolicy( 'noindex,nofollow' );
-
- global $wgSend404Code;
- if ( $wgSend404Code ) {
- $context->getOutput()->setStatusCode( 404 );
- }
-
- $context->getOutput()->showErrorPage( 'nosuchspecialpage', 'nospecialpagetext' );
- wfProfileOut( __METHOD__ );
- return false;
- }
-
- // Page exists, set the context
- $page->setContext( $context );
-
- if ( !$including ) {
- // Redirect to canonical alias for GET commands
- // Not for POST, we'd lose the post data, so it's best to just distribute
- // the request. Such POST requests are possible for old extensions that
- // generate self-links without being aware that their default name has
- // changed.
- if ( $name != $page->getLocalName() && !$context->getRequest()->wasPosted() ) {
- $query = $context->getRequest()->getQueryValues();
- unset( $query['title'] );
- $title = $page->getPageTitle( $par );
- $url = $title->getFullURL( $query );
- $context->getOutput()->redirect( $url );
- wfProfileOut( __METHOD__ );
- return $title;
- } else {
- $context->setTitle( $page->getPageTitle( $par ) );
- }
-
- } elseif ( !$page->isIncludable() ) {
- wfProfileOut( __METHOD__ );
- return false;
- }
-
- $page->including( $including );
-
- // Execute special page
- $profName = 'Special:' . $page->getName();
- wfProfileIn( $profName );
- $page->run( $par );
- wfProfileOut( $profName );
- wfProfileOut( __METHOD__ );
- return true;
- }
-
- /**
- * Just like executePath() but will override global variables and execute
- * the page in "inclusion" mode. Returns true if the execution was
- * successful or false if there was no such special page, or a title object
- * if it was a redirect.
- *
- * Also saves the current $wgTitle, $wgOut, $wgRequest, $wgUser and $wgLang
- * variables so that the special page will get the context it'd expect on a
- * normal request, and then restores them to their previous values after.
- *
- * @param $title Title
- * @param $context IContextSource
- *
- * @return String: HTML fragment
- */
- static function capturePath( Title $title, IContextSource $context ) {
- global $wgOut, $wgTitle, $wgRequest, $wgUser, $wgLang;
-
- // Save current globals
- $oldTitle = $wgTitle;
- $oldOut = $wgOut;
- $oldRequest = $wgRequest;
- $oldUser = $wgUser;
- $oldLang = $wgLang;
-
- // Set the globals to the current context
- $wgTitle = $title;
- $wgOut = $context->getOutput();
- $wgRequest = $context->getRequest();
- $wgUser = $context->getUser();
- $wgLang = $context->getLanguage();
-
- // The useful part
- $ret = self::executePath( $title, $context, true );
-
- // And restore the old globals
- $wgTitle = $oldTitle;
- $wgOut = $oldOut;
- $wgRequest = $oldRequest;
- $wgUser = $oldUser;
- $wgLang = $oldLang;
-
- return $ret;
- }
-
- /**
- * Get the local name for a specified canonical name
- *
- * @param $name String
- * @param $subpage String|Bool
- *
- * @return String
- */
- static function getLocalNameFor( $name, $subpage = false ) {
- global $wgContLang;
- $aliases = $wgContLang->getSpecialPageAliases();
-
- if ( isset( $aliases[$name][0] ) ) {
- $name = $aliases[$name][0];
- } else {
- // Try harder in case someone misspelled the correct casing
- $found = false;
- foreach ( $aliases as $n => $values ) {
- if ( strcasecmp( $name, $n ) === 0 ) {
- wfWarn( "Found alias defined for $n when searching for " .
- "special page aliases for $name. Case mismatch?" );
- $name = $values[0];
- $found = true;
- break;
- }
- }
- if ( !$found ) {
- wfWarn( "Did not find alias for special page '$name'. " .
- "Perhaps no aliases are defined for it?" );
- }
- }
- if ( $subpage !== false && !is_null( $subpage ) ) {
- $name = "$name/$subpage";
- }
- return $wgContLang->ucfirst( $name );
- }
-
- /**
- * Get a title for a given alias
- *
- * @param $alias String
- *
- * @return Title or null if there is no such alias
- */
- static function getTitleForAlias( $alias ) {
- $name = self::resolveAlias( $alias );
- if ( $name ) {
- return SpecialPage::getTitleFor( $name );
- } else {
- return null;
- }
- }
-}
+++ /dev/null
-<?php
-/**
- * Creation and parsing of MW-style timestamps.
- *
- * 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
- * @since 1.20
- * @author Tyler Romeo, 2012
- */
-
-/**
- * Library for creating and parsing MW-style timestamps. Based on the JS
- * library that does the same thing.
- *
- * @since 1.20
- */
-class MWTimestamp {
- /**
- * Standard gmdate() formats for the different timestamp types.
- */
- private static $formats = array(
- TS_UNIX => 'U',
- TS_MW => 'YmdHis',
- TS_DB => 'Y-m-d H:i:s',
- TS_ISO_8601 => 'Y-m-d\TH:i:s\Z',
- TS_ISO_8601_BASIC => 'Ymd\THis\Z',
- TS_EXIF => 'Y:m:d H:i:s', // This shouldn't ever be used, but is included for completeness
- TS_RFC2822 => 'D, d M Y H:i:s',
- TS_ORACLE => 'd-m-Y H:i:s.000000', // Was 'd-M-y h.i.s A' . ' +00:00' before r51500
- TS_POSTGRES => 'Y-m-d H:i:s',
- );
-
- /**
- * The actual timestamp being wrapped (DateTime object).
- * @var DateTime
- */
- public $timestamp;
-
- /**
- * Make a new timestamp and set it to the specified time,
- * or the current time if unspecified.
- *
- * @since 1.20
- *
- * @param bool|string $timestamp Timestamp to set, or false for current time
- */
- public function __construct( $timestamp = false ) {
- $this->setTimestamp( $timestamp );
- }
-
- /**
- * Set the timestamp to the specified time, or the current time if unspecified.
- *
- * Parse the given timestamp into either a DateTime object or a Unix timestamp,
- * and then store it.
- *
- * @since 1.20
- *
- * @param string|bool $ts Timestamp to store, or false for now
- * @throws TimestampException
- */
- public function setTimestamp( $ts = false ) {
- $da = array();
- $strtime = '';
-
- if ( !$ts || $ts === "\0\0\0\0\0\0\0\0\0\0\0\0\0\0" ) { // We want to catch 0, '', null... but not date strings starting with a letter.
- $uts = time();
- $strtime = "@$uts";
- } elseif ( preg_match( '/^(\d{4})\-(\d\d)\-(\d\d) (\d\d):(\d\d):(\d\d)$/D', $ts, $da ) ) {
- # TS_DB
- } elseif ( preg_match( '/^(\d{4}):(\d\d):(\d\d) (\d\d):(\d\d):(\d\d)$/D', $ts, $da ) ) {
- # TS_EXIF
- } elseif ( preg_match( '/^(\d{4})(\d\d)(\d\d)(\d\d)(\d\d)(\d\d)$/D', $ts, $da ) ) {
- # TS_MW
- } elseif ( preg_match( '/^-?\d{1,13}$/D', $ts ) ) {
- # TS_UNIX
- $strtime = "@$ts"; // http://php.net/manual/en/datetime.formats.compound.php
- } elseif ( preg_match( '/^\d{2}-\d{2}-\d{4} \d{2}:\d{2}:\d{2}.\d{6}$/', $ts ) ) {
- # TS_ORACLE // session altered to DD-MM-YYYY HH24:MI:SS.FF6
- $strtime = preg_replace( '/(\d\d)\.(\d\d)\.(\d\d)(\.(\d+))?/', "$1:$2:$3",
- str_replace( '+00:00', 'UTC', $ts ) );
- } elseif ( preg_match( '/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})(?:\.*\d*)?Z?$/', $ts, $da ) ) {
- # TS_ISO_8601
- } elseif ( preg_match( '/^(\d{4})(\d{2})(\d{2})T(\d{2})(\d{2})(\d{2})(?:\.*\d*)?Z?$/', $ts, $da ) ) {
- #TS_ISO_8601_BASIC
- } elseif ( preg_match( '/^(\d{4})\-(\d\d)\-(\d\d) (\d\d):(\d\d):(\d\d)\.*\d*[\+\- ](\d\d)$/', $ts, $da ) ) {
- # TS_POSTGRES
- } elseif ( preg_match( '/^(\d{4})\-(\d\d)\-(\d\d) (\d\d):(\d\d):(\d\d)\.*\d* GMT$/', $ts, $da ) ) {
- # TS_POSTGRES
- } elseif ( preg_match( '/^[ \t\r\n]*([A-Z][a-z]{2},[ \t\r\n]*)?' . # Day of week
- '\d\d?[ \t\r\n]*[A-Z][a-z]{2}[ \t\r\n]*\d{2}(?:\d{2})?' . # dd Mon yyyy
- '[ \t\r\n]*\d\d[ \t\r\n]*:[ \t\r\n]*\d\d[ \t\r\n]*:[ \t\r\n]*\d\d/S', $ts ) ) { # hh:mm:ss
- # TS_RFC2822, accepting a trailing comment. See http://www.squid-cache.org/mail-archive/squid-users/200307/0122.html / r77171
- # The regex is a superset of rfc2822 for readability
- $strtime = strtok( $ts, ';' );
- } elseif ( preg_match( '/^[A-Z][a-z]{5,8}, \d\d-[A-Z][a-z]{2}-\d{2} \d\d:\d\d:\d\d/', $ts ) ) {
- # TS_RFC850
- $strtime = $ts;
- } elseif ( preg_match( '/^[A-Z][a-z]{2} [A-Z][a-z]{2} +\d{1,2} \d\d:\d\d:\d\d \d{4}/', $ts ) ) {
- # asctime
- $strtime = $ts;
- } else {
- throw new TimestampException( __METHOD__ . ": Invalid timestamp - $ts" );
- }
-
- if ( !$strtime ) {
- $da = array_map( 'intval', $da );
- $da[0] = "%04d-%02d-%02dT%02d:%02d:%02d.00+00:00";
- $strtime = call_user_func_array( "sprintf", $da );
- }
-
- try {
- $final = new DateTime( $strtime, new DateTimeZone( 'GMT' ) );
- } catch ( Exception $e ) {
- throw new TimestampException( __METHOD__ . ': Invalid timestamp format.', $e->getCode(), $e );
- }
-
- if ( $final === false ) {
- throw new TimestampException( __METHOD__ . ': Invalid timestamp format.' );
- }
- $this->timestamp = $final;
- }
-
- /**
- * Get the timestamp represented by this object in a certain form.
- *
- * Convert the internal timestamp to the specified format and then
- * return it.
- *
- * @since 1.20
- *
- * @param int $style Constant Output format for timestamp
- * @throws TimestampException
- * @return string The formatted timestamp
- */
- public function getTimestamp( $style = TS_UNIX ) {
- if ( !isset( self::$formats[$style] ) ) {
- throw new TimestampException( __METHOD__ . ': Illegal timestamp output type.' );
- }
-
- $output = $this->timestamp->format( self::$formats[$style] );
-
- if ( ( $style == TS_RFC2822 ) || ( $style == TS_POSTGRES ) ) {
- $output .= ' GMT';
- }
-
- return $output;
- }
-
- /**
- * Get the timestamp in a human-friendly relative format, e.g., "3 days ago".
- *
- * Determine the difference between the timestamp and the current time, and
- * generate a readable timestamp by returning "<N> <units> ago", where the
- * largest possible unit is used.
- *
- * @since 1.20
- * @since 1.22 Uses Language::getHumanTimestamp to produce the timestamp
- *
- * @param MWTimestamp|null $relativeTo The base timestamp to compare to (defaults to now)
- * @param User|null $user User the timestamp is being generated for (or null to use main context's user)
- * @param Language|null $lang Language to use to make the human timestamp (or null to use main context's language)
- * @return string Formatted timestamp
- */
- public function getHumanTimestamp( MWTimestamp $relativeTo = null, User $user = null, Language $lang = null ) {
- if ( $relativeTo === null ) {
- $relativeTo = new self();
- }
- if ( $user === null ) {
- $user = RequestContext::getMain()->getUser();
- }
- if ( $lang === null ) {
- $lang = RequestContext::getMain()->getLanguage();
- }
-
- // Adjust for the user's timezone.
- $offsetThis = $this->offsetForUser( $user );
- $offsetRel = $relativeTo->offsetForUser( $user );
-
- $ts = '';
- if ( wfRunHooks( 'GetHumanTimestamp', array( &$ts, $this, $relativeTo, $user, $lang ) ) ) {
- $ts = $lang->getHumanTimestamp( $this, $relativeTo, $user );
- }
-
- // Reset the timezone on the objects.
- $this->timestamp->sub( $offsetThis );
- $relativeTo->timestamp->sub( $offsetRel );
-
- return $ts;
- }
-
- /**
- * Adjust the timestamp depending on the given user's preferences.
- *
- * @since 1.22
- *
- * @param User $user User to take preferences from
- * @param[out] MWTimestamp $ts Timestamp to adjust
- * @return DateInterval Offset that was applied to the timestamp
- */
- public function offsetForUser( User $user ) {
- global $wgLocalTZoffset;
-
- $option = $user->getOption( 'timecorrection' );
- $data = explode( '|', $option, 3 );
-
- // First handle the case of an actual timezone being specified.
- if ( $data[0] == 'ZoneInfo' ) {
- try {
- $tz = new DateTimeZone( $data[2] );
- } catch ( Exception $e ) {
- $tz = false;
- }
-
- if ( $tz ) {
- $this->timestamp->setTimezone( $tz );
- return new DateInterval( 'P0Y' );
- } else {
- $data[0] = 'Offset';
- }
- }
-
- $diff = 0;
- // If $option is in fact a pipe-separated value, check the
- // first value.
- if ( $data[0] == 'System' ) {
- // First value is System, so use the system offset.
- if ( isset( $wgLocalTZoffset ) ) {
- $diff = $wgLocalTZoffset;
- }
- } elseif ( $data[0] == 'Offset' ) {
- // First value is Offset, so use the specified offset
- $diff = (int)$data[1];
- } else {
- // $option actually isn't a pipe separated value, but instead
- // a comma separated value. Isn't MediaWiki fun?
- $data = explode( ':', $option );
- if ( count( $data ) >= 2 ) {
- // Combination hours and minutes.
- $diff = abs( (int)$data[0] ) * 60 + (int)$data[1];
- if ( (int)$data[0] < 0 ) {
- $diff *= -1;
- }
- } else {
- // Just hours.
- $diff = (int)$data[0] * 60;
- }
- }
-
- $interval = new DateInterval( 'PT' . abs( $diff ) . 'M' );
- if ( $diff < 1 ) {
- $interval->invert = 1;
- }
-
- $this->timestamp->add( $interval );
- return $interval;
- }
-
- /**
- * Generate a purely relative timestamp, i.e., represent the time elapsed between
- * the given base timestamp and this object.
- *
- * @param MWTimestamp $relativeTo Relative base timestamp (defaults to now)
- * @param User $user Use to use offset for
- * @param Language $lang Language to use
- * @param array $chosenIntervals Intervals to use to represent it
- * @return string Relative timestamp
- */
- public function getRelativeTimestamp(
- MWTimestamp $relativeTo = null,
- User $user = null,
- Language $lang = null,
- array $chosenIntervals = array()
- ) {
- if ( $relativeTo === null ) {
- $relativeTo = new self;
- }
- if ( $user === null ) {
- $user = RequestContext::getMain()->getUser();
- }
- if ( $lang === null ) {
- $lang = RequestContext::getMain()->getLanguage();
- }
-
- $ts = '';
- $diff = $this->diff( $relativeTo );
- if ( wfRunHooks( 'GetRelativeTimestamp', array( &$ts, &$diff, $this, $relativeTo, $user, $lang ) ) ) {
- $seconds = ( ( ( $diff->days * 24 + $diff->h ) * 60 + $diff->i ) * 60 + $diff->s );
- $ts = wfMessage( 'ago', $lang->formatDuration( $seconds, $chosenIntervals ) )
- ->inLanguage( $lang )
- ->text();
- }
-
- return $ts;
- }
-
- /**
- * @since 1.20
- *
- * @return string
- */
- public function __toString() {
- return $this->getTimestamp();
- }
-
- /**
- * Calculate the difference between two MWTimestamp objects.
- *
- * @since 1.22
- * @param MWTimestamp $relativeTo Base time to calculate difference from
- * @return DateInterval|bool The DateInterval object representing the difference between the two dates or false on failure
- */
- public function diff( MWTimestamp $relativeTo ) {
- return $this->timestamp->diff( $relativeTo->timestamp );
- }
-
- /**
- * Set the timezone of this timestamp to the specified timezone.
- *
- * @since 1.22
- * @param String $timezone Timezone to set
- * @throws TimestampException
- */
- public function setTimezone( $timezone ) {
- try {
- $this->timestamp->setTimezone( new DateTimeZone( $timezone ) );
- } catch ( Exception $e ) {
- throw new TimestampException( __METHOD__ . ': Invalid timezone.', $e->getCode(), $e );
- }
- }
-
- /**
- * Get the timezone of this timestamp.
- *
- * @since 1.22
- * @return DateTimeZone The timezone
- */
- public function getTimezone() {
- return $this->timestamp->getTimezone();
- }
-
- /**
- * Format the timestamp in a given format.
- *
- * @since 1.22
- * @param string $format Pattern to format in
- * @return string The formatted timestamp
- */
- public function format( $format ) {
- return $this->timestamp->format( $format );
- }
-
- /**
- * Get a timestamp instance in the server local timezone ($wgLocaltimezone)
- *
- * @since 1.22
- * @param bool|string $ts Timestamp to set, or false for current time
- * @return MWTimestamp the local instance
- */
- public static function getLocalInstance( $ts = false ) {
- global $wgLocaltimezone;
- $timestamp = new self( $ts );
- $timestamp->setTimezone( $wgLocaltimezone );
- return $timestamp;
- }
-
- /**
- * Get a timestamp instance in GMT
- *
- * @since 1.22
- * @param bool|string $ts Timestamp to set, or false for current time
- * @return MWTimestamp the instance
- */
- public static function getInstance( $ts = false ) {
- return new self( $ts );
- }
-}
-
-/**
- * @since 1.20
- */
-class TimestampException extends MWException {}
--- /dev/null
+<?php
+
+/**
+ * @since 1.20
+ */
+class TimestampException extends MWException {}
\ No newline at end of file
var $mDbkeyform = ''; // /< Main part with underscores
var $mUserCaseDBKey; // /< DB key with the initial letter in the case specified by the user
var $mNamespace = NS_MAIN; // /< Namespace index, i.e. one of the NS_xxxx constants
- var $mInterwiki = ''; // /< Interwiki prefix (or null string)
- var $mFragment; // /< Title fragment (i.e. the bit after the #)
+ var $mInterwiki = ''; // /< Interwiki prefix
+ var $mFragment = ''; // /< Title fragment (i.e. the bit after the #)
var $mArticleID = -1; // /< Article ID, fetched from the link cache on demand
var $mLatestID = false; // /< ID of most recent revision
var $mContentModel = false; // /< ID of the page's content model, i.e. one of the CONTENT_MODEL_XXX constants
var $mHasCascadingRestrictions; ///< Are cascading restrictions in effect on this page?
var $mCascadeSources; ///< Where are the cascading restrictions coming from on this page?
var $mRestrictionsLoaded = false; ///< Boolean for initialisation on demand
- var $mPrefixedText; ///< Text form including namespace/interwiki, initialised on demand
+ var $mPrefixedText = null; ///< Text form including namespace/interwiki, initialised on demand
var $mTitleProtection; ///< Cached value for getTitleProtection (create protection)
# Don't change the following default, NS_MAIN is hardcoded in several
# places. See bug 696.
* @return Bool TRUE if this is an in-project interwiki link or a wikilink, FALSE otherwise
*/
public function isLocal() {
- if ( $this->mInterwiki != '' ) {
+ if ( $this->isExternal() ) {
$iw = Interwiki::fetch( $this->mInterwiki );
if ( $iw ) {
return $iw->isLocal();
* @return Bool
*/
public function isExternal() {
- return ( $this->mInterwiki != '' );
+ return $this->mInterwiki !== '';
}
/**
- * Get the interwiki prefix (or null string)
+ * Get the interwiki prefix
+ *
+ * Use Title::isExternal to check if a interwiki is set
*
* @return String Interwiki prefix
*/
* @return Bool TRUE if this is transcludable
*/
public function isTrans() {
- if ( $this->mInterwiki == '' ) {
+ if ( !$this->isExternal() ) {
return false;
}
* @return String the DB name
*/
public function getTransWikiID() {
- if ( $this->mInterwiki == '' ) {
+ if ( !$this->isExternal() ) {
return false;
}
public function getNsText() {
global $wgContLang;
- if ( $this->mInterwiki != '' ) {
+ if ( $this->isExternal() ) {
// This probably shouldn't even happen. ohh man, oh yuck.
// But for interwiki transclusion it sometimes does.
// Shit. Shit shit shit.
* @return Bool TRUE or FALSE
*/
public function isMovable() {
- if ( !MWNamespace::isMovable( $this->getNamespace() ) || $this->getInterwiki() != '' ) {
+ if ( !MWNamespace::isMovable( $this->getNamespace() ) || $this->isExternal() ) {
// Interwiki title or immovable namespace. Hooks don't get to override here
return false;
}
/**
* Get the Title fragment (i.e.\ the bit after the #) in text form
*
+ * Use Title::hasFragment to check for a fragment
+ *
* @return String Title fragment
*/
public function getFragment() {
return $this->mFragment;
}
+ /**
+ * Check if a Title fragment is set
+ *
+ * @return bool
+ * @since 1.23
+ */
+ public function hasFragment() {
+ return $this->mFragment !== '';
+ }
+
/**
* Get the fragment in URL form, including the "#" character if there is one
* @return String Fragment in URL form
*/
public function getFragmentForURL() {
- if ( $this->mFragment == '' ) {
+ if ( !$this->hasFragment() ) {
return '';
} else {
- return '#' . Title::escapeFragmentForURL( $this->mFragment );
+ return '#' . Title::escapeFragmentForURL( $this->getFragment() );
}
}
*/
private function prefix( $name ) {
$p = '';
- if ( $this->mInterwiki != '' ) {
+ if ( $this->isExternal() ) {
$p = $this->mInterwiki . ':';
}
* @return String the prefixed title, with spaces
*/
public function getPrefixedText() {
- // @todo FIXME: Bad usage of empty() ?
- if ( empty( $this->mPrefixedText ) ) {
+ if ( $this->mPrefixedText === null ) {
$s = $this->prefix( $this->mTextform );
$s = str_replace( '_', ' ', $s );
$this->mPrefixedText = $s;
*/
public function getFullText() {
$text = $this->getPrefixedText();
- if ( $this->mFragment != '' ) {
- $text .= '#' . $this->mFragment;
+ if ( $this->hasFragment() ) {
+ $text .= '#' . $this->getFragment();
}
return $text;
}
wfProfileIn( __METHOD__ );
if ( $this->isExternal() || $proto !== PROTO_RELATIVE ) {
$ret = $this->getFullURL( $query, $query2, $proto );
- } elseif ( $this->getPrefixedText() === '' && $this->getFragment() !== '' ) {
+ } elseif ( $this->getPrefixedText() === '' && $this->hasFragment() ) {
$ret = $this->getFragmentForURL();
} else {
$ret = $this->getLocalURL( $query, $query2 ) . $this->getFragmentForURL();
* interwiki link
*/
public function getEditURL() {
- if ( $this->mInterwiki != '' ) {
+ if ( $this->isExternal() ) {
return '';
}
$s = $this->getLocalURL( 'action=edit' );
return ( $sources > 0 );
}
+ /**
+ * Determines whether cascading protection sources have already been loaded from
+ * the database.
+ *
+ * @param bool $getPages True to check if the pages are loaded, or false to check
+ * if the status is loaded.
+ * @return bool Whether or not the specified information has been loaded
+ * @since 1.23
+ */
+ public function areCascadeProtectionSourcesLoaded( $getPages = true ) {
+ return $getPages ? isset( $this->mCascadeSources ) : isset( $this->mHasCascadingRestrictions );
+ }
+
/**
* Cascading protection: Get the source of any cascading restrictions on this page.
*
return array( $sources, $pagerestrictions );
}
+ /**
+ * Accessor for mRestrictionsLoaded
+ *
+ * @return bool Whether or not the page's restrictions have already been
+ * loaded from the database
+ * @since 1.23
+ */
+ public function areRestrictionsLoaded() {
+ return $this->mRestrictionsLoaded;
+ }
+
/**
* Accessor/initialisation for mRestrictions
*
: array();
}
+ /**
+ * Accessor/initialisation for mRestrictions
+ *
+ * @return Array of Arrays of Strings the first level indexed by
+ * action, the second level containing the names of the groups
+ * allowed to perform each action
+ * @since 1.23
+ */
+ public function getAllRestrictions() {
+ if ( !$this->mRestrictionsLoaded ) {
+ $this->loadRestrictions();
+ }
+ return $this->mRestrictions;
+ }
+
/**
* Get the expiry time for the restriction against a given action
*
# alone to cache the result. There's no point in having it hanging
# around uninitialized in every Title object; therefore we only add it
# if needed and don't declare it statically.
- if ( isset( $this->mHasSubpages ) ) {
- return $this->mHasSubpages;
+ if ( !isset( $this->mHasSubpages ) ) {
+ $this->mHasSubpages = false;
+ $subpages = $this->getSubpages( 1 );
+ if ( $subpages instanceof TitleArray ) {
+ $this->mHasSubpages = (bool)$subpages->count();
+ }
}
- $subpages = $this->getSubpages( 1 );
- if ( $subpages instanceof TitleArray ) {
- return $this->mHasSubpages = (bool)$subpages->count();
- }
- return $this->mHasSubpages = false;
+ return $this->mHasSubpages;
}
/**
if ( $limit > -1 ) {
$options['LIMIT'] = $limit;
}
- return $this->mSubpages = TitleArray::newFromResult(
+ $this->mSubpages = TitleArray::newFromResult(
$dbr->select( 'page',
array( 'page_id', 'page_namespace', 'page_title', 'page_is_redirect' ),
$conds,
$options
)
);
+ return $this->mSubpages;
}
/**
*/
public function getArticleID( $flags = 0 ) {
if ( $this->getNamespace() < 0 ) {
- return $this->mArticleID = 0;
+ $this->mArticleID = 0;
+ return $this->mArticleID;
}
$linkCache = LinkCache::singleton();
if ( $flags & self::GAID_FOR_UPDATE ) {
}
# Calling getArticleID() loads the field from cache as needed
if ( !$this->getArticleID( $flags ) ) {
- return $this->mRedirect = false;
+ $this->mRedirect = false;
+ return $this->mRedirect;
}
$linkCache = LinkCache::singleton();
# LinkCache as appropriate, or use $flags = Title::GAID_FOR_UPDATE. If that flag is
# set, then LinkCache will definitely be up to date here, since getArticleID() forces
# LinkCache to refresh its data from the master.
- return $this->mRedirect = false;
+ $this->mRedirect = false;
+ return $this->mRedirect;
}
$this->mRedirect = (bool)$cached;
}
# Calling getArticleID() loads the field from cache as needed
if ( !$this->getArticleID( $flags ) ) {
- return $this->mLength = 0;
+ $this->mLength = 0;
+ return $this->mLength;
}
$linkCache = LinkCache::singleton();
$cached = $linkCache->getGoodLinkFieldObj( $this, 'length' );
if ( $cached === null ) {
# Trust LinkCache's state over our own, as for isRedirect()
- return $this->mLength = 0;
+ $this->mLength = 0;
+ return $this->mLength;
}
$this->mLength = intval( $cached );
}
# Calling getArticleID() loads the field from cache as needed
if ( !$this->getArticleID( $flags ) ) {
- return $this->mLatestID = 0;
+ $this->mLatestID = 0;
+ return $this->mLatestID;
}
$linkCache = LinkCache::singleton();
$linkCache->addLinkObj( $this );
$cached = $linkCache->getGoodLinkFieldObj( $this, 'revision' );
if ( $cached === null ) {
# Trust LinkCache's state over our own, as for isRedirect()
- return $this->mLatestID = 0;
+ $this->mLatestID = 0;
+ return $this->mLatestID;
}
$this->mLatestID = intval( $cached );
global $wgContLang, $wgLocalInterwiki;
# Initialisation
- $this->mInterwiki = $this->mFragment = '';
+ $this->mInterwiki = '';
+ $this->mFragment = '';
$this->mNamespace = $this->mDefaultNamespace; # Usually NS_MAIN
$dbkey = $this->mDbkeyform;
break;
} while ( true );
- # We already know that some pages won't be in the database!
- if ( $this->mInterwiki != '' || NS_SPECIAL == $this->mNamespace ) {
- $this->mArticleID = 0;
- }
$fragment = strstr( $dbkey, '#' );
if ( false !== $fragment ) {
$this->setFragment( $fragment );
# and [[Foo]] point to the same place. Don't force it for interwikis, since the
# other site might be case-sensitive.
$this->mUserCaseDBKey = $dbkey;
- if ( $this->mInterwiki == '' ) {
+ if ( !$this->isExternal() ) {
$dbkey = self::capitalize( $dbkey, $this->mNamespace );
}
# Can't make a link to a namespace alone... "empty" local links can only be
# self-links with a fragment identifier.
- if ( $dbkey == '' && $this->mInterwiki == '' && $this->mNamespace != NS_MAIN ) {
+ if ( $dbkey == '' && !$this->isExternal() && $this->mNamespace != NS_MAIN ) {
return false;
}
// there are numerous ways to present the same IP. Having sp:contribs scan
// them all is silly and having some show the edits and others not is
// inconsistent. Same for talk/userpages. Keep them normalized instead.
- $dbkey = ( $this->mNamespace == NS_USER || $this->mNamespace == NS_USER_TALK )
- ? IP::sanitizeIP( $dbkey )
- : $dbkey;
+ if ( $this->mNamespace == NS_USER || $this->mNamespace == NS_USER_TALK ) {
+ $dbkey = IP::sanitizeIP( $dbkey );
+ }
// Any remaining initial :s are illegal.
if ( $dbkey !== '' && ':' == $dbkey[0] ) {
$this->mTextform = str_replace( '_', ' ', $dbkey );
+ # We already know that some pages won't be in the database!
+ if ( $this->isExternal() || $this->mNamespace == NS_SPECIAL ) {
+ $this->mArticleID = 0;
+ }
+
return true;
}
}
}
+ // If we are looking at a css/js user subpage, purge the action=raw.
+ if ( $this->isJsSubpage() ) {
+ $urls[] = $this->getInternalUrl( 'action=raw&ctype=text/javascript' );
+ } elseif ( $this->isCssSubpage() ) {
+ $urls[] = $this->getInternalUrl( 'action=raw&ctype=text/css' );
+ }
+
wfRunHooks( 'TitleSquidURLs', array( $this, &$urls ) );
return $urls;
}
if ( !$this->isMovable() ) {
$errors[] = array( 'immobile-source-namespace', $this->getNsText() );
}
- if ( $nt->getInterwiki() != '' ) {
+ if ( $nt->isExternal() ) {
$errors[] = array( 'immobile-target-namespace-iw' );
}
if ( !$nt->isMovable() ) {
if ( $moveOverRedirect ) {
$newid = $nt->getArticleID();
+ $newcontent = $newpage->getContent();
# Delete the old redirect. We don't save it to history since
# by definition if we've got here it's rather uninteresting.
# a conflict on the unique namespace+title index...
$dbw->delete( 'page', array( 'page_id' => $newid ), __METHOD__ );
- $newpage->doDeleteUpdates( $newid );
+ $newpage->doDeleteUpdates( $newid, $newcontent );
}
# Save a null revision in the page's history notifying of the move
foreach ( $subpages as $oldSubpage ) {
$count++;
if ( $count > $wgMaximumMovedPages ) {
- $retval[$oldSubpage->getPrefixedTitle()] =
+ $retval[$oldSubpage->getPrefixedText()] =
array( 'movepage-max-pages',
$wgMaximumMovedPages );
break;
}
/**
- * Get the number of authors between the given revisions or revision IDs.
+ * Get the authors between the given revisions or revision IDs.
* Used for diffs and other things that really need it.
*
+ * @since 1.23
+ *
* @param int|Revision $old Old revision or rev ID (first before range by default)
* @param int|Revision $new New revision or rev ID (first after range by default)
* @param int $limit Maximum number of authors
* 'include_new' Include $new in the range; $old is excluded.
* 'include_both' Include both $old and $new in the range.
* Unknown option values are ignored.
- * @return int Number of revision authors in the range; zero if not both revisions exist
+ * @return array|null Names of revision authors in the range; null if not both revisions exist
*/
- public function countAuthorsBetween( $old, $new, $limit, $options = array() ) {
+ public function getAuthorsBetween( $old, $new, $limit, $options = array() ) {
if ( !( $old instanceof Revision ) ) {
$old = Revision::newFromTitle( $this, (int)$old );
}
// Add $old->getPage() != $new->getPage() || $old->getPage() != $this->getArticleID()
// in the sanity check below?
if ( !$old || !$new ) {
- return 0; // nothing to compare
+ return null; // nothing to compare
}
+ $authors = array();
$old_cmp = '>';
$new_cmp = '<';
$options = (array)$options;
}
// No DB query needed if $old and $new are the same or successive revisions:
if ( $old->getId() === $new->getId() ) {
- return ( $old_cmp === '>' && $new_cmp === '<' ) ? 0 : 1;
+ return ( $old_cmp === '>' && $new_cmp === '<' ) ? array() : array( $old->getRawUserText() );
} elseif ( $old->getId() === $new->getParentId() ) {
- if ( $old_cmp === '>' || $new_cmp === '<' ) {
- return ( $old_cmp === '>' && $new_cmp === '<' ) ? 0 : 1;
+ if ( $old_cmp === '>=' && $new_cmp === '<=' ) {
+ $authors[] = $old->getRawUserText();
+ if ( $old->getRawUserText() != $new->getRawUserText() ) {
+ $authors[] = $new->getRawUserText();
+ }
+ } elseif ( $old_cmp === '>=' ) {
+ $authors[] = $old->getRawUserText();
+ } elseif ( $new_cmp === '<=' ) {
+ $authors[] = $new->getRawUserText();
}
- return ( $old->getRawUserText() === $new->getRawUserText() ) ? 1 : 2;
+ return $authors;
}
$dbr = wfGetDB( DB_SLAVE );
$res = $dbr->select( 'revision', 'DISTINCT rev_user_text',
), __METHOD__,
array( 'LIMIT' => $limit + 1 ) // add one so caller knows it was truncated
);
- return (int)$dbr->numRows( $res );
+ foreach ( $res as $row ) {
+ $authors[] = $row->rev_user_text;
+ }
+ return $authors;
+ }
+
+ /**
+ * Get the number of authors between the given revisions or revision IDs.
+ * Used for diffs and other things that really need it.
+ *
+ * @param int|Revision $old Old revision or rev ID (first before range by default)
+ * @param int|Revision $new New revision or rev ID (first after range by default)
+ * @param int $limit Maximum number of authors
+ * @param string|array $options (Optional): Single option, or an array of options:
+ * 'include_old' Include $old in the range; $new is excluded.
+ * 'include_new' Include $new in the range; $old is excluded.
+ * 'include_both' Include both $old and $new in the range.
+ * Unknown option values are ignored.
+ * @return int Number of revision authors in the range; zero if not both revisions exist
+ */
+ public function countAuthorsBetween( $old, $new, $limit, $options = array() ) {
+ $authors = $this->getAuthorsBetween( $old, $new, $limit, $options );
+ return $authors ? count( $authors ) : 0;
}
/**
return $isKnown;
}
- if ( $this->mInterwiki != '' ) {
+ if ( $this->isExternal() ) {
return true; // any interwiki link might be viewable, for all we know
}
return $this->mNotificationTimestamp[$uid];
}
if ( !$uid || !$wgShowUpdatedMarker || !$user->isAllowed( 'viewmywatchlist' ) ) {
- return $this->mNotificationTimestamp[$uid] = false;
+ $this->mNotificationTimestamp[$uid] = false;
+ return $this->mNotificationTimestamp[$uid];
}
// Don't cache too much!
if ( count( $this->mNotificationTimestamp ) >= self::CACHE_MAX ) {
<?php
/**
- * Classes to walk into a list of Title objects.
+ * Class to walk into a list of Title objects.
*
* Note: this entire file is a byte-for-byte copy of UserArray.php with
* s/User/Title/. If anyone can figure out how to do this nicely with
return $array;
}
}
-
-class TitleArrayFromResult extends TitleArray implements Countable {
-
- /**
- * @var ResultWrapper
- */
- var $res;
- var $key, $current;
-
- function __construct( $res ) {
- $this->res = $res;
- $this->key = 0;
- $this->setCurrent( $this->res->current() );
- }
-
- /**
- * @param $row ResultWrapper
- * @return void
- */
- protected function setCurrent( $row ) {
- if ( $row === false ) {
- $this->current = false;
- } else {
- $this->current = Title::newFromRow( $row );
- }
- }
-
- /**
- * @return int
- */
- public function count() {
- return $this->res->numRows();
- }
-
- function current() {
- return $this->current;
- }
-
- function key() {
- return $this->key;
- }
-
- function next() {
- $row = $this->res->next();
- $this->setCurrent( $row );
- $this->key++;
- }
-
- function rewind() {
- $this->res->rewind();
- $this->key = 0;
- $this->setCurrent( $this->res->current() );
- }
-
- /**
- * @return bool
- */
- function valid() {
- return $this->current !== false;
- }
-}
--- /dev/null
+<?php
+/**
+ * Class to walk into a list of Title objects.
+ *
+ * Note: this entire file is a byte-for-byte copy of UserArrayFromResult.php
+ * with s/User/Title/. If anyone can figure out how to do this nicely
+ * with inheritance or something, please do so.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ */
+
+class TitleArrayFromResult extends TitleArray implements Countable {
+
+ /**
+ * @var ResultWrapper
+ */
+ var $res;
+ var $key, $current;
+
+ function __construct( $res ) {
+ $this->res = $res;
+ $this->key = 0;
+ $this->setCurrent( $this->res->current() );
+ }
+
+ /**
+ * @param $row ResultWrapper
+ * @return void
+ */
+ protected function setCurrent( $row ) {
+ if ( $row === false ) {
+ $this->current = false;
+ } else {
+ $this->current = Title::newFromRow( $row );
+ }
+ }
+
+ /**
+ * @return int
+ */
+ public function count() {
+ return $this->res->numRows();
+ }
+
+ function current() {
+ return $this->current;
+ }
+
+ function key() {
+ return $this->key;
+ }
+
+ function next() {
+ $row = $this->res->next();
+ $this->setCurrent( $row );
+ $this->key++;
+ }
+
+ function rewind() {
+ $this->res->rewind();
+ $this->key = 0;
+ $this->setCurrent( $this->res->current() );
+ }
+
+ /**
+ * @return bool
+ */
+ function valid() {
+ return $this->current !== false;
+ }
+}
\ No newline at end of file
* user_name and user_real_name are not provided because the whole row
* will be loaded once more from the database when accessing them.
*
- * @param array $row A row from the user table
+ * @param stdClass $row A row from the user table
* @param array $data Further data to load into the object (see User::loadFromRow for valid keys)
* @return User
*/
*/
public function sendMail( $subject, $body, $from = null, $replyto = null ) {
if ( is_null( $from ) ) {
- global $wgPasswordSender, $wgPasswordSenderName;
- $sender = new MailAddress( $wgPasswordSender, $wgPasswordSenderName );
+ global $wgPasswordSender;
+ $sender = new MailAddress( $wgPasswordSender,
+ wfMessage( 'emailsender' )->inContentLanguage()->text() );
} else {
$sender = new MailAddress( $from );
}
<?php
/**
- * Classes to walk into a list of User objects.
+ * Class to walk into a list of User objects.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
protected static function newFromResult_internal( $res ) {
return new UserArrayFromResult( $res );
}
-}
-
-class UserArrayFromResult extends UserArray implements Countable {
-
- /**
- * @var ResultWrapper
- */
- var $res;
- var $key, $current;
-
- /**
- * @param $res ResultWrapper
- */
- function __construct( $res ) {
- $this->res = $res;
- $this->key = 0;
- $this->setCurrent( $this->res->current() );
- }
-
- /**
- * @param $row
- * @return void
- */
- protected function setCurrent( $row ) {
- if ( $row === false ) {
- $this->current = false;
- } else {
- $this->current = User::newFromRow( $row );
- }
- }
-
- /**
- * @return int
- */
- public function count() {
- return $this->res->numRows();
- }
-
- /**
- * @return User
- */
- function current() {
- return $this->current;
- }
-
- function key() {
- return $this->key;
- }
-
- function next() {
- $row = $this->res->next();
- $this->setCurrent( $row );
- $this->key++;
- }
-
- function rewind() {
- $this->res->rewind();
- $this->key = 0;
- $this->setCurrent( $this->res->current() );
- }
-
- /**
- * @return bool
- */
- function valid() {
- return $this->current !== false;
- }
-}
+}
\ No newline at end of file
--- /dev/null
+<?php
+/**
+ * Class to walk into a list of User objects.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ */
+
+class UserArrayFromResult extends UserArray implements Countable {
+
+ /**
+ * @var ResultWrapper
+ */
+ var $res;
+ var $key, $current;
+
+ /**
+ * @param $res ResultWrapper
+ */
+ function __construct( $res ) {
+ $this->res = $res;
+ $this->key = 0;
+ $this->setCurrent( $this->res->current() );
+ }
+
+ /**
+ * @param $row
+ * @return void
+ */
+ protected function setCurrent( $row ) {
+ if ( $row === false ) {
+ $this->current = false;
+ } else {
+ $this->current = User::newFromRow( $row );
+ }
+ }
+
+ /**
+ * @return int
+ */
+ public function count() {
+ return $this->res->numRows();
+ }
+
+ /**
+ * @return User
+ */
+ function current() {
+ return $this->current;
+ }
+
+ function key() {
+ return $this->key;
+ }
+
+ function next() {
+ $row = $this->res->next();
+ $this->setCurrent( $row );
+ $this->key++;
+ }
+
+ function rewind() {
+ $this->res->rewind();
+ $this->key = 0;
+ $this->setCurrent( $this->res->current() );
+ }
+
+ /**
+ * @return bool
+ */
+ function valid() {
+ return $this->current !== false;
+ }
+}
static function arrayToHeaderString( $headers, $endl = "\n" ) {
$strings = array();
foreach ( $headers as $name => $value ) {
+ // Prevent header injection by stripping newlines from value
+ $value = self::sanitizeHeaderValue( $value );
$strings[] = "$name: $value";
}
return implode( $endl, $strings );
self::$mErrorString = preg_replace( '/^mail\(\)(\s*\[.*?\])?: /', '', $string );
}
+ /**
+ * Strips bad characters from a header value to prevent PHP mail header injection attacks
+ * @param string $val String to be santizied
+ * @return string
+ */
+ public static function sanitizeHeaderValue( $val ) {
+ return strtr( $val, array( "\r" => '', "\n" => '' ) );
+ }
+
/**
* Converts a string into a valid RFC 822 "phrase", such as is used for the sender name
* @param $phrase string
* @return string
*/
public static function rfc822Phrase( $phrase ) {
- $phrase = strtr( $phrase, array( "\r" => '', "\n" => '', '"' => '' ) );
+ // Remove line breaks
+ $phrase = self::sanitizeHeaderValue( $phrase );
+ // Remove quotes
+ $phrase = str_replace( '"', '', $phrase );
return '"' . $phrase . '"';
}
* Generate the generic "this page has been changed" e-mail text.
*/
private function composeCommonMailtext() {
- global $wgPasswordSender, $wgPasswordSenderName, $wgNoReplyAddress;
+ global $wgPasswordSender, $wgNoReplyAddress;
global $wgEnotifFromEditor, $wgEnotifRevealEditorAddress;
global $wgEnotifImpersonal, $wgEnotifUseRealName;
# Reveal the page editor's address as REPLY-TO address only if
# the user has not opted-out and the option is enabled at the
# global configuration level.
- $adminAddress = new MailAddress( $wgPasswordSender, $wgPasswordSenderName );
+ $adminAddress = new MailAddress( $wgPasswordSender,
+ wfMessage( 'emailsender' )->inContentLanguage()->text() );
if ( $wgEnotifRevealEditorAddress
&& ( $this->editor->getEmail() != '' )
&& $this->editor->getOption( 'enotifrevealaddr' )
return;
}
+ // some pages cannot be watched
+ if ( !$this->getTitle()->isWatchable() ) {
+ $this->watched = false;
+ return;
+ }
+
# Pages and their talk pages are considered equivalent for watching;
# remember that talk namespaces are numbered as page namespace+1.
* defaults if not given. The limit must be positive and is capped at 5000.
* Offset must be positive but is not capped.
*
- * @param $deflimit Integer: limit to use if no input and the user hasn't set the option.
+ * @param int $deflimit limit to use if no input and the user hasn't set the option.
* @param string $optionname to specify an option other than rclimit to pull from.
+ * @param int $hardlimit the maximum upper limit to allow, usually 5000
* @return array first element is limit, second is offset
*/
- public function getLimitOffset( $deflimit = 50, $optionname = 'rclimit' ) {
+ public function getLimitOffset( $deflimit = 50, $optionname = 'rclimit', $hardlimit = 5000 ) {
global $wgUser;
$limit = $this->getInt( 'limit', 0 );
if ( $limit <= 0 ) {
$limit = $deflimit;
}
- if ( $limit > 5000 ) {
- $limit = 5000; # We have *some* limits...
+ if ( $limit > $hardlimit ) {
+ $limit = $hardlimit; # We have *some* limits...
}
$offset = $this->getInt( 'offset', 0 );
return $file->getTempName();
}
- /**
- * Return the size of the upload, or 0.
- *
- * @deprecated since 1.17
- * @param $key String:
- * @return integer
- */
- public function getFileSize( $key ) {
- wfDeprecated( __METHOD__, '1.17' );
- $file = new WebRequestUpload( $this, $key );
- return $file->getSize();
- }
-
/**
* Return the upload error or 0
*
return true;
}
- /**
- * Returns true if the PATH_INFO ends with an extension other than a script
- * extension. This could confuse IE for scripts that send arbitrary data which
- * is not HTML but may be detected as such.
- *
- * Various past attempts to use the URL to make this check have generally
- * run up against the fact that CGI does not provide a standard method to
- * determine the URL. PATH_INFO may be mangled (e.g. if cgi.fix_pathinfo=0),
- * but only by prefixing it with the script name and maybe some other stuff,
- * the extension is not mangled. So this should be a reasonably portable
- * way to perform this security check.
- *
- * Also checks for anything that looks like a file extension at the end of
- * QUERY_STRING, since IE 6 and earlier will use this to get the file type
- * if there was no dot before the question mark (bug 28235).
- *
- * @deprecated Use checkUrlExtension().
- *
- * @param $extWhitelist array
- *
- * @return bool
- */
- public function isPathInfoBad( $extWhitelist = array() ) {
- wfDeprecated( __METHOD__, '1.17' );
- global $wgScriptExtension;
- $extWhitelist[] = ltrim( $wgScriptExtension, '.' );
- return IEUrlExtension::areServerVarsBad( $_SERVER, $extWhitelist );
- }
-
/**
* Parse the Accept-Language header sent by the client into an array
* @return array array( languageCode => q-value ) sorted by q-value in descending order then
# unless the address is not sensible (e.g. private). However, prefer private
# IP addresses over proxy servers controlled by this site (more sensible).
foreach ( $ipchain as $i => $curIP ) {
+ // ignore 'unknown' value from Squid when 'forwarded_for off' and try next
+ if ( $curIP === 'unknown' ) {
+ continue;
+ }
$curIP = IP::sanitizeIP( IP::canonicalize( $curIP ) );
if ( wfIsTrustedProxy( $curIP ) && isset( $ipchain[$i + 1] ) ) {
if ( wfIsConfiguredProxy( $curIP ) || // bug 48919; treat IP as sane
return $this->session;
}
- /**
- * @param array $extWhitelist
- * @return bool
- */
- public function isPathInfoBad( $extWhitelist = array() ) {
- return false;
- }
-
/**
* FauxRequests shouldn't depend on raw request data (but that could be implemented here)
* @return String
}
// Use the main page as default title if nothing else has been provided
- if ( $ret === null && strval( $title ) === '' && $action !== 'delete' ) {
+ if ( $ret === null && strval( $title ) === '' && !$request->getCheck( 'curid' ) && $action !== 'delete' ) {
$ret = Title::newMainPage();
}
- if ( $ret === null || ( $ret->getDBkey() == '' && $ret->getInterwiki() == '' ) ) {
+ if ( $ret === null || ( $ret->getDBkey() == '' && !$ret->isExternal() ) ) {
$ret = SpecialPage::getTitleFor( 'Badtitle' );
}
return $action;
}
- /**
- * Create an Article object of the appropriate class for the given page.
- *
- * @deprecated in 1.18; use Article::newFromTitle() instead
- * @param $title Title
- * @param $context IContextSource
- * @return Article object
- */
- public static function articleFromTitle( $title, IContextSource $context ) {
- wfDeprecated( __METHOD__, '1.18' );
- return Article::newFromTitle( $title, $context );
- }
-
/**
* Performs the request.
* - bad titles
wfRunHooks( 'BeforeInitialize', array( &$title, &$unused, &$output, &$user, $request, $this ) );
// Invalid titles. Bug 21776: The interwikis must redirect even if the page name is empty.
- if ( is_null( $title ) || ( $title->getDBkey() == '' && $title->getInterwiki() == '' )
+ if ( is_null( $title ) || ( $title->getDBkey() == '' && !$title->isExternal() )
|| $title->isSpecial( 'Badtitle' )
) {
$this->context->setTitle( SpecialPage::getTitleFor( 'Badtitle' ) );
$pageView = false; // was an article or special page viewed?
// Interwiki redirects
- if ( $title->getInterwiki() != '' ) {
+ if ( $title->isExternal() ) {
$rdfrom = $request->getVal( 'rdfrom' );
if ( $rdfrom ) {
$url = $title->getFullURL( array( 'rdfrom' => $rdfrom ) );
try {
$this->checkMaxLag();
$this->main();
+ if ( function_exists( 'fastcgi_finish_request' ) ) {
+ fastcgi_finish_request();
+ }
$this->restInPeace();
} catch ( Exception $e ) {
MWExceptionHandler::handle( $e );
}
if ( !wfShellExecDisabled() && is_executable( $wgPhpCli ) ) {
- // Start a background process to run some of the jobs.
- // This will be asynchronous on *nix though not on Windows.
+ // Start a background process to run some of the jobs
wfProfileIn( __METHOD__ . '-exec' );
$retVal = 1;
$cmd = wfShellWikiCmd( "$IP/maintenance/runJobs.php", array( '--maxjobs', $n ) );
- wfShellExec( "$cmd &", $retVal );
+ $cmd .= " >" . wfGetNull() . " 2>&1"; // don't hang PHP on pipes
+ if ( wfIsWindows() ) {
+ // Using START makes this async and also works around a bug where using
+ // wfShellExec() with a quoted script name causes a filename syntax error.
+ $cmd = "START /B \"bg\" $cmd";
+ } else {
+ $cmd = "$cmd &";
+ }
+ wfShellExec( $cmd, $retVal );
wfProfileOut( __METHOD__ . '-exec' );
} else {
try {
+++ /dev/null
-<?php
-/**
- * MediaWiki error classes
- *
- * Copyright © 2005 Brion Vibber <brion@pobox.com>
- * http://www.mediawiki.org/
- *
- * 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
- */
-
-/**
- * Since PHP4 doesn't have exceptions, here's some error objects
- * loosely modeled on the standard PEAR_Error model...
- * @ingroup Exception
- */
-class WikiError {
- /**
- * @param $message string
- *
- * @deprecated since 1.17
- */
- function __construct( $message ) {
- wfDeprecated( __METHOD__, '1.17' );
- $this->mMessage = $message;
- }
-
- /**
- * @return string Plaintext error message to display
- */
- function getMessage() {
- return $this->mMessage;
- }
-
- /**
- * In following PEAR_Error model this could be formatted differently,
- * but so far it's not.
- * @return string
- */
- function toString() {
- return $this->getMessage();
- }
-
- /**
- * Returns true if the given object is a WikiError-descended
- * error object, false otherwise.
- *
- * @param $object mixed
- * @return bool
- *
- * @deprecated since 1.17
- */
- public static function isError( $object ) {
- wfDeprecated( __METHOD__, '1.17' );
- if ( $object instanceof WikiError ) {
- return true;
- } elseif ( $object instanceof Status ) {
- return !$object->isOK();
- } else {
- return false;
- }
- }
-}
-
-/**
- * Localized error message object
- * @ingroup Exception
- */
-class WikiErrorMsg extends WikiError {
- /**
- * @param string $message wiki message name
- * @param ... parameters to pass to wfMsg()
- *
- * @deprecated since 1.17
- */
- function __construct( $message/*, ... */ ) {
- wfDeprecated( __METHOD__, '1.17' );
- $args = func_get_args();
- array_shift( $args );
- $this->mMessage = wfMessage( $message )->rawParams( $args )->text();
- $this->mMsgKey = $message;
- $this->mMsgArgs = $args;
- }
-
- function getMessageKey() {
- return $this->mMsgKey;
- }
-
- function getMessageArgs() {
- return $this->mMsgArgs;
- }
-}
-
-/**
- * Error class designed to handle errors involved with
- * XML parsing
- * @ingroup Exception
- */
-class WikiXmlError extends WikiError {
- /**
- * @param $parser resource
- * @param $message string
- * @param $context
- * @param $offset Int
- *
- * @deprecated since 1.17
- */
- function __construct( $parser, $message = 'XML parsing error', $context = null, $offset = 0 ) {
- wfDeprecated( __METHOD__, '1.17' );
- $this->mXmlError = xml_get_error_code( $parser );
- $this->mColumn = xml_get_current_column_number( $parser );
- $this->mLine = xml_get_current_line_number( $parser );
- $this->mByte = xml_get_current_byte_index( $parser );
- $this->mContext = $this->_extractContext( $context, $offset );
- $this->mMessage = $message;
- xml_parser_free( $parser );
- wfDebug( "WikiXmlError: " . $this->getMessage() . "\n" );
- }
-
- /** @return string */
- function getMessage() {
- // '$1 at line $2, col $3 (byte $4): $5',
- return wfMessage( 'xml-error-string',
- $this->mMessage,
- $this->mLine,
- $this->mColumn,
- $this->mByte . $this->mContext,
- xml_error_string( $this->mXmlError ) )->escaped();
- }
-
- function _extractContext( $context, $offset ) {
- if ( is_null( $context ) ) {
- return null;
- } else {
- // Hopefully integer overflow will be handled transparently here
- $inlineOffset = $this->mByte - $offset;
- return '; "' . substr( $context, $inlineOffset, 16 ) . '"';
- }
- }
-}
if ( $from == $to ) {
return null;
}
- return $this->mRedirectTarget = Title::makeTitle( NS_FILE, $to );
+ $this->mRedirectTarget = Title::makeTitle( NS_FILE, $to );
+ return $this->mRedirectTarget;
}
/**
}
$hash = $this->mFile->getSha1();
if ( !( $hash ) ) {
- return $this->mDupes = array();
+ $this->mDupes = array();
+ return $this->mDupes;
}
$dupes = RepoGroup::singleton()->findBySha1( $hash );
// Remove duplicates with self and non matching file sizes
/**@}}*/
/** @var stdclass Map of cache fields (text, parser output, ect) for a proposed/new edit */
- protected $mPreparedEdit = false;
+ public $mPreparedEdit = false;
/**
* @var int
// rd_fragment and rd_interwiki were added later, populate them if empty
if ( $row && !is_null( $row->rd_fragment ) && !is_null( $row->rd_interwiki ) ) {
- return $this->mRedirectTarget = Title::makeTitle(
+ $this->mRedirectTarget = Title::makeTitle(
$row->rd_namespace, $row->rd_title,
$row->rd_fragment, $row->rd_interwiki );
+ return $this->mRedirectTarget;
}
// This page doesn't have an entry in the redirect table
- return $this->mRedirectTarget = $this->insertRedirect();
+ $this->mRedirectTarget = $this->insertRedirect();
+ return $this->mRedirectTarget;
}
/**
// Reparse any pages transcluding this page
LinksUpdate::queueRecursiveJobsForTable( $this->mTitle, 'templatelinks' );
+ // Reparse any pages including this image
+ if ( $this->mTitle->getNamespace() == NS_FILE ) {
+ LinksUpdate::queueRecursiveJobsForTable( $this->mTitle, 'imagelinks' );
+ }
+
// Clear caches
WikiPage::onArticleDelete( $this->mTitle );
return array( array( 'notvisiblerev' ) );
}
- $set = array();
- if ( $bot && $guser->isAllowed( 'markbotedits' ) ) {
- // Mark all reverted edits as bot
- $set['rc_bot'] = 1;
- }
-
- if ( $wgUseRCPatrol ) {
- // Mark all reverted edits as patrolled
- $set['rc_patrolled'] = 1;
- }
-
- if ( count( $set ) ) {
- $dbw->update( 'recentchanges', $set,
- array( /* WHERE */
- 'rc_cur_id' => $current->getPage(),
- 'rc_user_text' => $current->getUserText(),
- 'rc_timestamp > ' . $dbw->addQuotes( $s->rev_timestamp ),
- ), __METHOD__
- );
- }
-
// Generate the edit summary if necessary
$target = Revision::newFromId( $s->rev_id );
if ( empty( $summary ) ) {
return $status->getErrorsArray();
}
+ $set = array();
+ if ( $bot && $guser->isAllowed( 'markbotedits' ) ) {
+ // Mark all reverted edits as bot
+ $set['rc_bot'] = 1;
+ }
+
+ if ( $wgUseRCPatrol ) {
+ // Mark all reverted edits as patrolled
+ $set['rc_patrolled'] = 1;
+ }
+
+ if ( count( $set ) ) {
+ $dbw->update( 'recentchanges', $set,
+ array( /* WHERE */
+ 'rc_cur_id' => $current->getPage(),
+ 'rc_user_text' => $current->getUserText(),
+ 'rc_timestamp > ' . $dbw->addQuotes( $s->rev_timestamp ),
+ ), __METHOD__
+ );
+ }
+
if ( !empty( $status->value['revision'] ) ) {
$revId = $status->value['revision']->getId();
} else {
return;
}
- // templatelinks table may have become out of sync,
+ // templatelinks or imagelinks tables may have become out of sync,
// especially if using variable-based transclusions.
// For paranoia, check if things have changed and if
// so apply updates to the database. This will ensure
// that cascaded protections apply as soon as the changes
// are visible.
- // Get templates from templatelinks
+ // Get templates from templatelinks and images from imagelinks
$id = $this->getId();
- $tlTemplates = array();
+ $dbLinks = array();
$dbr = wfGetDB( DB_SLAVE );
$res = $dbr->select( array( 'templatelinks' ),
);
foreach ( $res as $row ) {
- $tlTemplates["{$row->tl_namespace}:{$row->tl_title}"] = true;
+ $dbLinks["{$row->tl_namespace}:{$row->tl_title}"] = true;
}
- // Get templates from parser output.
- $poTemplates = array();
+ $dbr = wfGetDB( DB_SLAVE );
+ $res = $dbr->select( array( 'imagelinks' ),
+ array( 'il_to' ),
+ array( 'il_from' => $id ),
+ __METHOD__
+ );
+
+ foreach ( $res as $row ) {
+ $dbLinks[NS_FILE . ":{$row->il_to}"] = true;
+ }
+
+ // Get templates and images from parser output.
+ $poLinks = array();
foreach ( $parserOutput->getTemplates() as $ns => $templates ) {
foreach ( $templates as $dbk => $id ) {
- $poTemplates["$ns:$dbk"] = true;
+ $poLinks["$ns:$dbk"] = true;
}
}
+ foreach ( $parserOutput->getImages() as $dbk => $id ) {
+ $poLinks[NS_FILE . ":$dbk"] = true;
+ }
// Get the diff
- $templates_diff = array_diff_key( $poTemplates, $tlTemplates );
+ $links_diff = array_diff_key( $poLinks, $dbLinks );
- if ( count( $templates_diff ) > 0 ) {
+ if ( count( $links_diff ) > 0 ) {
// Whee, link updates time.
// Note: we are only interested in links here. We don't need to get other DataUpdate items from the parser output.
$u = new LinksUpdate( $this->mTitle, $parserOutput, false );
return $this->mTitle->getTemplateLinksFrom();
}
- /**
- * Perform article updates on a special page creation.
- *
- * @param $rev Revision object
- *
- * @todo This is a shitty interface function. Kill it and replace the
- * other shitty functions like doEditUpdates and such so it's not needed
- * anymore.
- * @deprecated since 1.18, use doEditUpdates()
- */
- public function createUpdates( $rev ) {
- wfDeprecated( __METHOD__, '1.18' );
- global $wgUser;
- $this->doEditUpdates( $rev, $wgUser, array( 'created' => true ) );
- }
-
/**
* This function is called right before saving the wikitext,
* so we can do things like signatures and links-in-context.
return $this->doUpdateRestrictions( $limit, $expiry, $cascade, $reason, $user )->isOK();
}
- /**
- * @deprecated since 1.18
- */
- public function quickEdit( $text, $comment = '', $minor = 0 ) {
- wfDeprecated( __METHOD__, '1.18' );
- global $wgUser;
- $this->doQuickEdit( $text, $wgUser, $comment, $minor );
- }
-
- /**
- * @deprecated since 1.18
- */
- public function viewUpdates() {
- wfDeprecated( __METHOD__, '1.18' );
- global $wgUser;
- $this->doViewUpdates( $wgUser );
- }
-
- /**
- * @deprecated since 1.18
- * @param $oldid int
- * @return bool
- */
- public function useParserCache( $oldid ) {
- wfDeprecated( __METHOD__, '1.18' );
- global $wgUser;
- return $this->isParserCacheUsed( ParserOptions::newFromUser( $wgUser ), $oldid );
- }
-
/**
* Returns a list of updates to be performed when this page is deleted. The updates should remove any information
* about this page from secondary data stores such as links tables.
+++ /dev/null
-<?php
-/**
- * Client for querying zhdaemon.
- *
- * 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
- */
-
-/**
- * Client for querying zhdaemon
- */
-class ZhClient {
- var $mHost, $mPort, $mFP, $mConnected;
-
- /**
- * Constructor
- *
- * @param $host
- * @param $port
- *
- * @return ZhClient
- */
- function __construct( $host, $port ) {
- $this->mHost = $host;
- $this->mPort = $port;
- $this->mConnected = $this->connect();
- }
-
- /**
- * Check if connection to zhdaemon is successful
- *
- * @return bool
- */
- function isconnected() {
- return $this->mConnected;
- }
-
- /**
- * Establish connection
- *
- * @access private
- *
- * @return bool
- */
- function connect() {
- wfSuppressWarnings();
- $errno = $errstr = '';
- $this->mFP = fsockopen( $this->mHost, $this->mPort, $errno, $errstr, 30 );
- wfRestoreWarnings();
- return !$this->mFP;
- }
-
- /**
- * Query the daemon and return the result
- *
- * @access private
- *
- * @return string
- */
- function query( $request ) {
- if ( !$this->mConnected ) {
- return false;
- }
-
- fwrite( $this->mFP, $request );
-
- $result = fgets( $this->mFP, 1024 );
-
- list( $status, $len ) = explode( ' ', $result );
- if ( $status == 'ERROR' ) {
- // $len is actually the error code...
- print "zhdaemon error $len<br />\n";
- return false;
- }
- $bytesread = 0;
- $data = '';
- while ( !feof( $this->mFP ) && $bytesread < $len ) {
- $str = fread( $this->mFP, $len - $bytesread );
- $bytesread += strlen( $str );
- $data .= $str;
- }
- // data should be of length $len. otherwise something is wrong
- return strlen( $data ) == $len;
- }
-
- /**
- * Convert the input to a different language variant
- *
- * @param string $text input text
- * @param string $tolang language variant
- * @return string the converted text
- */
- function convert( $text, $tolang ) {
- $len = strlen( $text );
- $q = "CONV $tolang $len\n$text";
- $result = $this->query( $q );
- if ( !$result ) {
- $result = $text;
- }
- return $result;
- }
-
- /**
- * Convert the input to all possible variants
- *
- * @param string $text input text
- * @return array langcode => converted_string
- */
- function convertToAllVariants( $text ) {
- $len = strlen( $text );
- $q = "CONV ALL $len\n$text";
- $result = $this->query( $q );
- if ( !$result ) {
- return false;
- }
- list( $infoline, $data ) = explode( '|', $result, 2 );
- $info = explode( ';', $infoline );
- $ret = array();
- $i = 0;
- foreach ( $info as $variant ) {
- list( $code, $len ) = explode( ' ', $variant );
- $ret[strtolower( $code )] = substr( $data, $i, $len );
- $i += $len;
- }
- return $ret;
- }
-
- /**
- * Perform word segmentation
- *
- * @param string $text input text
- * @return string segmented text
- */
- function segment( $text ) {
- $len = strlen( $text );
- $q = "SEG $len\n$text";
- $result = $this->query( $q );
- if ( !$result ) { // fallback to character based segmentation
- $result = $this->segment( $text );
- }
- return $result;
- }
-
- /**
- * Close the connection
- */
- function close() {
- fclose( $this->mFP );
- }
-}
'不干她' => '不干她',
'不干它' => '不干它',
'不干我' => '不干我',
-'不干擾' => '不干擾',
'不干扰' => '不干擾',
+'不干擾' => '不干擾',
'不干涉' => '不干涉',
'不干牠' => '不干牠',
'不干犯' => '不干犯',
'不负所托' => '不負所托',
'不通吊庆' => '不通弔慶',
'不丑' => '不醜',
-'不采声' => '不采聲',
'不采聲' => '不采聲',
+'不采声' => '不采聲',
'不锈钢' => '不鏽鋼',
'不食干腊' => '不食乾腊',
'不斗' => '不鬥',
'丑三' => '丑三',
-'丑婆子' => '丑婆子',
'丑年' => '丑年',
'丑日' => '丑日',
'丑旦' => '丑旦',
'中签' => '中籤',
'中美发表' => '中美發表',
'中药' => '中藥',
-'中西合并' => '中西合併',
'中风后' => '中風後',
-'丰儀' => '丰儀',
'丰仪' => '丰儀',
+'丰儀' => '丰儀',
'丰南' => '丰南',
'丰台' => '丰台',
'丰姿' => '丰姿',
'丰容' => '丰容',
-'丰度' => '丰度',
'丰情' => '丰情',
'丰标' => '丰標',
-'丰標不凡' => '丰標不凡',
'丰标不凡' => '丰標不凡',
+'丰標不凡' => '丰標不凡',
'丰神' => '丰神',
'丰茸' => '丰茸',
'丰采' => '丰采',
-'丰é\9fµ' => '丰é\9f»',
+'丰é\9fµ' => '丰é\9fµ',
'丰韻' => '丰韻',
'丸药' => '丸藥',
'丹药' => '丹藥',
'九扎' => '九紮',
'九只' => '九隻',
'九余' => '九餘',
-'九龙表行' => '九龍表行',
'九龍表行' => '九龍表行',
+'九龙表行' => '九龍表行',
'也克制' => '也剋制',
'也斗了胆' => '也斗了膽',
+'干上' => '乾上',
'干干' => '乾乾',
'干干儿的' => '乾乾兒的',
'干干净净' => '乾乾淨淨',
+'干了' => '乾了',
'干井' => '乾井',
-'干个够' => '乾個夠',
+'干个' => '乾個',
'干儿' => '乾兒',
'干冰' => '乾冰',
'干冷' => '乾冷',
'干巴' => '乾巴',
'干式' => '乾式',
'干弟' => '乾弟',
+'干得' => '乾得',
'干急' => '乾急',
'干性' => '乾性',
'干打雷' => '乾打雷',
'干折' => '乾折',
+'干掉' => '乾掉',
'干撂台' => '乾撂台',
'干撇下' => '乾撇下',
'干擦' => '乾擦',
'干衣' => '乾衣',
'干裂' => '乾裂',
'干亲' => '乾親',
-'乾象历' => '乾象曆',
'乾象曆' => '乾象曆',
+'乾象历' => '乾象曆',
'干贝' => '乾貝',
'干货' => '乾貨',
'干躁' => '乾躁',
'二缶钟惑' => '二缶鐘惑',
'二老板' => '二老板',
'二虎相斗' => '二虎相鬥',
-'二里头' => '二里頭',
'二里頭' => '二里頭',
+'二里头' => '二里頭',
'二只' => '二隻',
'二余' => '二餘',
'于丹' => '于丹',
'于伟国' => '于偉國',
'于偉國' => '于偉國',
'于光新' => '于光新',
-'于光遠' => '于光遠',
'于光远' => '于光遠',
-'äº\8eå\85\8b-è\98å¤\9a縣' => 'äº\8eå\85\8b-è\98å¤\9a縣',
+'äº\8eå\85\89é\81 ' => 'äº\8eå\85\89é\81 ',
'于克-兰多县' => '于克-蘭多縣',
+'于克-蘭多縣' => '于克-蘭多縣',
'于克勒' => '于克勒',
'于再清' => '于再清',
'于冕' => '于冕',
'于吉' => '于吉',
'于和伟' => '于和偉',
'于品海' => '于品海',
-'于国桢' => '于國楨',
'于國楨' => '于國楨',
+'于国桢' => '于國楨',
'于国治' => '于國治',
'于國治' => '于國治',
'于坚' => '于堅',
'于大宝' => '于大寶',
'于天仁' => '于天仁',
'于天龙' => '于天龍',
-'于奇库杜克' => '于奇庫杜克',
'于奇庫杜克' => '于奇庫杜克',
+'于奇库杜克' => '于奇庫杜克',
'于姓' => '于姓',
'于娜' => '于娜',
'于娟' => '于娟',
'于子千' => '于子千',
'于孔兼' => '于孔兼',
-'于學忠' => '于學忠',
'于学忠' => '于學忠',
+'于學忠' => '于學忠',
'于家堡' => '于家堡',
'于寘' => '于寘',
'于小伟' => '于小偉',
'于山' => '于山',
'于山国' => '于山國',
'于山國' => '于山國',
-'于帥' => '于帥',
'于帅' => '于帥',
+'于帥' => '于帥',
'于幼軍' => '于幼軍',
'于幼军' => '于幼軍',
'于康震' => '于康震',
-'于廣洲' => '于廣洲',
'于广洲' => '于廣洲',
+'于廣洲' => '于廣洲',
'于式枚' => '于式枚',
-'于從濂' => '于從濂',
'于从濂' => '于從濂',
+'于從濂' => '于從濂',
'于德海' => '于德海',
'于志宁' => '于志寧',
'于志寧' => '于志寧',
'于思' => '于思',
'于慎行' => '于慎行',
'于慧' => '于慧',
-'于成龙' => '于成龍',
'于成龍' => '于成龍',
+'于成龙' => '于成龍',
'于振' => '于振',
'于振武' => '于振武',
'于敏' => '于敏',
'于斯納爾斯貝里' => '于斯納爾斯貝里',
'于斯达尔' => '于斯達爾',
'于斯達爾' => '于斯達爾',
-'于明涛' => '于明濤',
'于明濤' => '于明濤',
+'于明涛' => '于明濤',
'于是之' => '于是之',
'于晨楠' => '于晨楠',
'于晴' => '于晴',
-'于會泳' => '于會泳',
'于会泳' => '于會泳',
+'于會泳' => '于會泳',
'于根伟' => '于根偉',
'于根偉' => '于根偉',
'于格' => '于格',
'于枫' => '于楓',
'于荣光' => '于榮光',
'于樂' => '于樂',
-'于树洁' => '于樹潔',
'于樹潔' => '于樹潔',
+'于树洁' => '于樹潔',
'于欣' => '于欣',
'于欣源' => '于欣源',
'于正升' => '于正昇',
'于浩威' => '于浩威',
'于海' => '于海',
'于海洋' => '于海洋',
-'于湘兰' => '于湘蘭',
'于湘蘭' => '于湘蘭',
-'äº\8eæ¼¢è¶\85' => 'äº\8eæ¼¢è¶\85',
+'äº\8eæ¹\98å\85°' => 'äº\8eæ¹\98è\98',
'于汉超' => '于漢超',
+'于漢超' => '于漢超',
'于澄' => '于澄',
'于泽尔' => '于澤爾',
'于澤爾' => '于澤爾',
'于熙珍' => '于熙珍',
'于爾岑' => '于爾岑',
'于尔岑' => '于爾岑',
-'于爾根' => '于爾根',
'于尔根' => '于爾根',
+'于爾根' => '于爾根',
'于尔里克' => '于爾里克',
'于爾里克' => '于爾里克',
'于特森' => '于特森',
'于美人' => '于美人',
'于耘婕' => '于耘婕',
'于若木' => '于若木',
-'于蔭霖' => '于蔭霖',
'于荫霖' => '于蔭霖',
+'于蔭霖' => '于蔭霖',
'于衡' => '于衡',
'于西翰' => '于西翰',
'于謙' => '于謙',
'于谨' => '于謹',
'于貝爾' => '于貝爾',
'于贝尔' => '于貝爾',
-'于赠' => '于贈',
'于贈' => '于贈',
+'于赠' => '于贈',
'于越' => '于越',
'于军' => '于軍',
'于軍' => '于軍',
'于道泉' => '于道泉',
-'于远伟' => '于遠偉',
'于遠偉' => '于遠偉',
-'于都縣' => '于都縣',
+'于远伟' => '于遠偉',
'于都县' => '于都縣',
+'于都縣' => '于都縣',
'于里察' => '于里察',
'于阗' => '于闐',
-'于雙戈' => '于雙戈',
'于双戈' => '于雙戈',
+'于雙戈' => '于雙戈',
'于云鹤' => '于雲鶴',
'于震' => '于震',
'于震寰' => '于震寰',
'于风政' => '于風政',
'于風政' => '于風政',
'于飞' => '于飛',
-'于飞岛' => '于飛島',
'于飛島' => '于飛島',
+'于飞岛' => '于飛島',
'于余曲折' => '于餘曲折',
'于鬯' => '于鬯',
'于魁智' => '于魁智',
-'于凤桐' => '于鳳桐',
'于鳳桐' => '于鳳桐',
+'于凤桐' => '于鳳桐',
'于凤至' => '于鳳至',
'于鳳至' => '于鳳至',
-'于默奥' => '于默奧',
'于默奧' => '于默奧',
+'于默奥' => '于默奧',
'云乎' => '云乎',
'云云' => '云云',
'云何' => '云何',
'件钟' => '件鐘',
'任何表演' => '任何表演',
'任何表示' => '任何表示',
-'任何表達' => '任何表達',
'任何表达' => '任何表達',
+'任何表達' => '任何表達',
'任何表' => '任何錶',
'任何钟' => '任何鐘',
'任何钟表' => '任何鐘錶',
'占过' => '佔過',
'占道' => '佔道',
'占零' => '佔零',
-'占領' => '佔領',
'占领' => '佔領',
+'占領' => '佔領',
'占头' => '佔頭',
'占头筹' => '佔頭籌',
'占饭' => '佔飯',
'占y' => '佔y',
'占z' => '佔z',
'何杰' => '何杰',
-'余三胜' => '余三勝',
'余三勝' => '余三勝',
+'余三胜' => '余三勝',
'余光中' => '余光中',
'余光生' => '余光生',
'余力為' => '余力為',
'并到' => '併到',
'并合' => '併合',
'并名' => '併名',
-'并吞下' => '併吞下',
+'并吞' => '併吞',
'并拢' => '併攏',
'并案' => '併案',
'并流' => '併流',
'凶横' => '兇橫',
'凶殘' => '兇殘',
'凶残' => '兇殘',
-'凶殺' => '兇殺',
'凶杀' => '兇殺',
+'凶殺' => '兇殺',
'凶犯' => '兇犯',
'凶狠' => '兇狠',
'凶猛' => '兇猛',
'党太尉' => '党太尉',
'党怀英' => '党懷英',
'党进' => '党進',
-'党項' => '党項',
'党项' => '党項',
+'党項' => '党項',
'内制' => '內製',
'内面包' => '內面包',
'内面包的' => '內面包的',
'准不准我' => '准不准我',
'准不准许' => '准不准許',
'准不准谁' => '准不准誰',
-'准保護' => '准保護',
'准保护' => '准保護',
+'准保護' => '准保護',
'准保释' => '准保釋',
'准保釋' => '准保釋',
'凌蒙初' => '凌濛初',
'划子' => '划子',
'划得来' => '划得來',
'划拳' => '划拳',
-'划桨' => '划槳',
'划槳' => '划槳',
+'划桨' => '划槳',
'划水' => '划水',
'划算' => '划算',
'划船' => '划船',
'利于' => '利於',
'利欲熏心' => '利欲熏心',
'刮来刮去' => '刮來刮去',
-'刮着' => '刮著',
'刮起来' => '刮起來',
'刮风下雪倒便宜' => '刮風下雪倒便宜',
'刮胡' => '刮鬍',
'划入' => '劃入',
'划为' => '劃為',
'剧药' => '劇藥',
-'刘佳怜' => '劉佳怜',
'劉佳怜' => '劉佳怜',
+'刘佳怜' => '劉佳怜',
'刘克庄' => '劉克莊',
'刘芸后' => '劉芸后',
'力克制' => '力剋制',
'十出' => '十齣',
'千个' => '千個',
'千只可' => '千只可',
-'千只夠' => '千只夠',
'千只够' => '千只夠',
+'千只夠' => '千只夠',
'千只怕' => '千只怕',
'千只能' => '千只能',
-'千只足够' => '千只足夠',
'千只足夠' => '千只足夠',
+'千只足够' => '千只足夠',
'千周后' => '千周後',
'千多只' => '千多隻',
'千天后' => '千天後',
'口里' => '口裡',
'口试' => '口試',
'口钟' => '口鐘',
-'古书云' => '古書云',
'古書云' => '古書云',
+'古书云' => '古書云',
'古柯咸' => '古柯鹹',
'古柯碱' => '古柯鹼',
'古朴' => '古樸',
'只要功夫深,铁杵磨成锈花针' => '只要功夫深,鐵杵磨成鏽花針',
'只身上已' => '只身上已',
'只身上有' => '只身上有',
-'只身上沒' => '只身上沒',
'只身上没' => '只身上沒',
-'只身上無' => '只身上無',
+'只身上沒' => '只身上沒',
'只身上无' => '只身上無',
+'只身上無' => '只身上無',
'只身上的' => '只身上的',
'只身世' => '只身世',
'只身份' => '只身份',
'只身旁' => '只身旁',
'只身材' => '只身材',
'只身段' => '只身段',
-'只身为' => '只身為',
'只身為' => '只身為',
+'只身为' => '只身為',
'只身边' => '只身邊',
'只身邊' => '只身邊',
'只身首' => '只身首',
'各辟' => '各闢',
'各类钟' => '各類鐘',
'合伙人' => '合伙人',
+'合并' => '合併',
'合伙' => '合夥',
-'合并' => '合并',
'合府上' => '合府上',
'合采' => '合採',
'合历' => '合曆',
'后丰' => '后豐',
'后豐' => '后豐',
'后里' => '后里',
-'后发FK型星' => '后髮FK型星',
'后髮FK型星' => '后髮FK型星',
-'后髮座' => '后髮座',
+'后发FK型星' => '后髮FK型星',
'后发座' => '后髮座',
+'后髮座' => '后髮座',
'后发星系团' => '后髮星系團',
'后髮星系團' => '后髮星系團',
'吐哺捉发' => '吐哺捉髮',
'吹发' => '吹髮',
'吹胡' => '吹鬍',
'吾为之范我驰驱' => '吾爲之範我馳驅',
-'吕后' => '呂后',
'呂后' => '呂后',
+'吕后' => '呂后',
'呆呆傻傻' => '呆呆傻傻',
'呆呆挣挣' => '呆呆掙掙',
'呆呆獸' => '呆呆獸',
'周后' => '周后',
'周四' => '周四',
'周历' => '周曆',
-'周杰伦' => '周杰倫',
'周杰倫' => '周杰倫',
+'周杰伦' => '周杰倫',
'周历史' => '周歷史',
'周庄王' => '周莊王',
'周游' => '周遊',
'回历史' => '回歷史',
'回丝' => '回絲',
'回着' => '回著',
-'回荡' => '回蕩',
'回游' => '回遊',
'回阳荡气' => '回陽蕩氣',
'因于' => '因於',
'埋头寻钟' => '埋頭尋鐘',
'埋头寻钟表' => '埋頭尋鐘錶',
'城里' => '城裡',
-'埔裡社撫墾局' => '埔裏社撫墾局',
-'埔裏社撫墾局' => '埔裏社撫墾局',
'埔里社抚垦局' => '埔裏社撫墾局',
+'埔裏社撫墾局' => '埔裏社撫墾局',
+'埔裡社撫墾局' => '埔裏社撫墾局',
'基干' => '基幹',
'基于' => '基於',
'基准' => '基準',
'壶里' => '壺裡',
'壸范' => '壼範',
'寿面' => '壽麵',
-'夏于乔' => '夏于喬',
'夏于喬' => '夏于喬',
+'夏于乔' => '夏于喬',
'夏天里' => '夏天裡',
'夏日里' => '夏日裡',
'夏历' => '夏曆',
'伙同' => '夥同',
'伙众' => '夥眾',
'伙计' => '夥計',
-'大丑' => '大丑',
'大伙儿' => '大伙兒',
'大只可' => '大只可',
'大只在' => '大只在',
'大言非夸' => '大言非夸',
'大赞' => '大讚',
'大周折' => '大週摺',
+'大丑' => '大醜',
'大金发苔' => '大金髮苔',
'大钟' => '大鐘',
'大只' => '大隻',
'宽松' => '寬鬆',
'寮采' => '寮寀',
'宝山庄' => '寶山庄',
-'寶曆' => '寶曆',
'宝历' => '寶曆',
+'寶曆' => '寶曆',
'宝历史' => '寶歷史',
'宝庄' => '寶莊',
'宝里宝气' => '寶裡寶氣',
'年谷' => '年穀',
'年里' => '年裡',
'并力' => '并力',
-'并吞' => '并吞',
'并州' => '并州',
'并日而食' => '并日而食',
'并迭' => '并迭',
'幸免于难' => '幸免於難',
'幸于' => '幸於',
'幸运胡' => '幸運鬍',
-'干上' => '幹上',
'干下去' => '幹下去',
'干不了' => '幹不了',
'干不成' => '幹不成',
-'干了' => '幹了',
'干事' => '幹事',
'干些' => '幹些',
'干人' => '幹人',
'干什么' => '幹什麼',
-'干个' => '幹個',
+'干个够' => '幹個夠',
'干劲' => '幹勁',
'干劲冲天' => '幹勁沖天',
'干吏' => '幹吏',
'干完' => '幹完',
'干家' => '幹家',
'干将' => '幹將',
-'干得' => '幹得',
+'干得了' => '幹得了',
'干性油' => '幹性油',
'干才' => '幹才',
-'干掉' => '幹掉',
'干探' => '幹探',
'干校' => '幹校',
'干活' => '幹活',
'干略' => '幹略',
'干当' => '幹當',
'干的停当' => '幹的停當',
-'干细胞' => '幹細胞',
'干細胞' => '幹細胞',
+'干细胞' => '幹細胞',
'干线' => '幹線',
'干练' => '幹練',
'干缺' => '幹缺',
'府干政' => '府干政',
'府干涉' => '府干涉',
'府干犯' => '府干犯',
-'府干預' => '府干預',
'府干预' => '府干預',
+'府干預' => '府干預',
'府干' => '府幹',
'座钟' => '座鐘',
'康庄大道' => '康庄大道',
'忠人之托' => '忠人之托',
'忠仆' => '忠僕',
'忠于' => '忠於',
-'快干' => '快乾',
'快克制' => '快剋制',
+'快干' => '快幹',
'快快当当' => '快快當當',
'快冲' => '快衝',
'怎么' => '怎麼',
'所占算' => '所占算',
'所托' => '所託',
'扁拟谷盗虫' => '扁擬穀盜蟲',
-'手塚治虫' => '手塚治虫',
'手冢治虫' => '手塚治虫',
+'手塚治虫' => '手塚治虫',
'手折' => '手摺',
'手表态' => '手表態',
'手表明' => '手表明',
'手表达' => '手表達',
'手表露' => '手表露',
'手表面' => '手表面',
+'手里' => '手裏',
'手里剑' => '手裏劍',
-'手里' => '手裡',
'手表' => '手錶',
'手松' => '手鬆',
'才克制' => '才剋制',
'于国' => '於國',
'于坏' => '於坏',
'于垂' => '於垂',
+'於夫羅' => '於夫羅',
'于夫罗' => '於夫羅',
'於夫罗' => '於夫羅',
-'於夫羅' => '於夫羅',
'于她' => '於她',
'于好' => '於好',
'于始' => '於始',
'会上签订' => '會上簽訂',
'会占' => '會佔',
'会占卜' => '會占卜',
-'会干扰' => '會干擾',
'會干擾' => '會干擾',
+'会干扰' => '會干擾',
'会干' => '會幹',
'会吊' => '會弔',
'会里' => '會裡',
'棺材里' => '棺材裡',
'植发' => '植髮',
'椰枣干' => '椰棗乾',
-'楊雅筑' => '楊雅筑',
'杨雅筑' => '楊雅筑',
+'楊雅筑' => '楊雅筑',
'楚庄问鼎' => '楚莊問鼎',
'楚庄王' => '楚莊王',
'楚庄绝缨' => '楚莊絕纓',
'模范14棒' => '模范14棒',
'模范21棒' => '模范21棒',
'模范七棒' => '模范七棒',
-'模范三军' => '模范三軍',
'模范三軍' => '模范三軍',
+'模范三军' => '模范三軍',
'模范棒棒堂' => '模范棒棒堂',
'模制' => '模製',
'样范' => '樣範',
'洒濯' => '洒濯',
'洒然' => '洒然',
'洒脱' => '洒脫',
-'洗炼' => '洗鍊',
'洗练' => '洗鍊',
+'洗炼' => '洗鍊',
'洗发' => '洗髮',
'洛钟东应' => '洛鐘東應',
'泄欲' => '洩慾',
'涂序瑄' => '涂序瑄',
'涂敏恒' => '涂敏恆',
'涂敏恆' => '涂敏恆',
-'涂澤民' => '涂澤民',
'涂泽民' => '涂澤民',
+'涂澤民' => '涂澤民',
'涂绍煃' => '涂紹煃',
'涂羽卿' => '涂羽卿',
-'涂謹申' => '涂謹申',
'涂谨申' => '涂謹申',
+'涂謹申' => '涂謹申',
'涂逢年' => '涂逢年',
'涂醒哲' => '涂醒哲',
'涂長望' => '涂長望',
'涂长望' => '涂長望',
-'涂鸿钦' => '涂鴻欽',
'涂鴻欽' => '涂鴻欽',
+'涂鸿钦' => '涂鴻欽',
'消炎药' => '消炎藥',
'消肿药' => '消腫藥',
'液晶表' => '液晶錶',
'渠冲' => '渠衝',
'测试' => '測試',
'港制' => '港製',
+'游荡' => '游蕩',
'游离' => '游離',
'浑朴' => '渾樸',
'浑个' => '渾箇',
'蒙汜' => '濛汜',
'蒙蒙细雨' => '濛濛細雨',
'蒙雾' => '濛霧',
-'蒙松雨' => '濛鬆雨',
'蒙鸿' => '濛鴻',
'滨田里佳子' => '濱田里佳子',
'泻药' => '瀉藥',
'发签' => '發籤',
'发庄' => '發莊',
'发着' => '發著',
-'发表' => '發表',
'發表' => '發表',
+'发表' => '發表',
'发松' => '發鬆',
'发面' => '發麵',
'白干' => '白乾',
'白霉' => '白黴',
'百个' => '百個',
'百只可' => '百只可',
-'百只夠' => '百只夠',
'百只够' => '百只夠',
+'百只夠' => '百只夠',
'百只怕' => '百只怕',
'百只足够' => '百只足夠',
'百只足夠' => '百只足夠',
'瞳蒙' => '瞳矇',
'蒙事' => '矇事',
'蒙昧无知' => '矇昧無知',
+'蒙松雨' => '矇松雨',
'蒙混' => '矇混',
'蒙瞍' => '矇瞍',
'蒙眬' => '矇矓',
'筑前' => '筑前',
'筑北' => '筑北',
'筑州' => '筑州',
-'筑後' => '筑後',
'筑后' => '筑後',
+'筑後' => '筑後',
'筑波' => '筑波',
'筑紫' => '筑紫',
'筑肥' => '筑肥',
'筑西' => '筑西',
'筑邦' => '筑邦',
-'筑陽' => '筑陽',
'筑阳' => '筑陽',
+'筑陽' => '筑陽',
'答复' => '答覆',
'答覆' => '答覆',
'筵几' => '筵几',
'丝发' => '絲髮',
'绑扎' => '綁紮',
'綑扎' => '綑紮',
-'经有云' => '經有云',
'經有云' => '經有云',
+'经有云' => '經有云',
'绿发' => '綠髮',
'绸缎庄' => '綢緞莊',
'维系' => '維繫',
'舰只' => '艦隻',
'良药' => '良藥',
'色欲' => '色慾',
-'艷后' => '艷后',
'艳后' => '艷后',
+'艷后' => '艷后',
'艸木丰丰' => '艸木丰丰',
'芍药' => '芍藥',
'芒果干' => '芒果乾',
'茂都淀' => '茂都澱',
'范文同' => '范文同',
'范文正公' => '范文正公',
-'范文瀾' => '范文瀾',
'范文澜' => '范文瀾',
+'范文瀾' => '范文瀾',
'范文照' => '范文照',
'范文程' => '范文程',
'范文芳' => '范文芳',
'范文藤' => '范文藤',
'范文虎' => '范文虎',
'范登堡' => '范登堡',
-'范贤惠' => '范賢惠',
'范賢惠' => '范賢惠',
+'范贤惠' => '范賢惠',
'茶几' => '茶几',
'茶庄' => '茶莊',
'茶余' => '茶餘',
'华严钟' => '華嚴鐘',
'华发' => '華髮',
'菸碱' => '菸鹼',
-'萬一只' => '萬一只',
'万一只' => '萬一只',
+'萬一只' => '萬一只',
'万个' => '萬個',
'万周后' => '萬周後',
'万多只' => '萬多隻',
'诱奸' => '誘姦',
'语云' => '語云',
'语汇' => '語彙',
-'语有云' => '語有云',
'語有云' => '語有云',
+'语有云' => '語有云',
'诚征' => '誠徵',
'诚朴' => '誠樸',
'诬蔑' => '誣衊',
'豆腐干' => '豆腐乾',
'竖着' => '豎著',
'竖起脊梁' => '豎起脊梁',
+'丰度' => '豐度',
'丰滨' => '豐濱',
'丰滨乡' => '豐濱鄉',
'象征' => '象徵',
'贵价' => '貴价',
'贵干' => '貴幹',
'贵征' => '貴徵',
-'買凶' => '買兇',
'买凶' => '買兇',
+'買凶' => '買兇',
'买断发' => '買斷發',
'费占' => '費佔',
'贻范' => '貽範',
'资金占用' => '資金占用',
-'贾后' => '賈后',
'賈后' => '賈后',
+'贾后' => '賈后',
'赏赞' => '賞讚',
-'贤后' => '賢后',
'賢后' => '賢后',
+'贤后' => '賢后',
'卖断发' => '賣斷發',
'卖呆' => '賣獃',
'质朴' => '質樸',
'较于' => '較於',
'挽曲' => '輓曲',
'挽歌' => '輓歌',
-'挽聯' => '輓聯',
'挽联' => '輓聯',
-'æ\8c½è©\9e' => 'è¼\93è©\9e',
+'æ\8c½è\81¯' => 'è¼\93è\81¯',
'挽词' => '輓詞',
+'挽詞' => '輓詞',
'挽诗' => '輓詩',
'挽詩' => '輓詩',
'轻于' => '輕於',
'回绕' => '迴繞',
'回翔' => '迴翔',
'回肠' => '迴腸',
+'回荡' => '迴蕩',
'回诵' => '迴誦',
'回路' => '迴路',
'回转' => '迴轉',
'游河' => '遊河',
'游猎' => '遊獵',
'游玩' => '遊玩',
-'游荡' => '遊盪',
'游目骋怀' => '遊目騁懷',
'游程' => '遊程',
'游丝' => '遊絲',
'部落发' => '部落發',
'郭后' => '郭后',
'都于' => '都於',
-'鄉愿' => '鄉愿',
'乡愿' => '鄉愿',
-'é\84å\87±äº\91' => 'é\84å\87±äº\91',
+'é\84\89æ\84¿' => 'é\84\89æ\84¿',
'郑凯云' => '鄭凱云',
+'鄭凱云' => '鄭凱云',
'郑庄公' => '鄭莊公',
'配制饲料' => '配制飼料',
'配合着' => '配合著',
'丑女' => '醜女',
'丑女效颦' => '醜女效顰',
'丑奴儿' => '醜奴兒',
+'丑婆子' => '醜婆子',
'丑妇' => '醜婦',
'丑媳' => '醜媳',
'丑媳妇' => '醜媳婦',
'酿制' => '釀製',
'衅钟' => '釁鐘',
'采石之役' => '采石之役',
-'采石之战' => '采石之戰',
'采石之戰' => '采石之戰',
+'采石之战' => '采石之戰',
'采石磯' => '采石磯',
'采石矶' => '采石磯',
'釉药' => '釉藥',
'音声如钟' => '音聲如鐘',
'韶山冲' => '韶山沖',
'响钟' => '響鐘',
-'頁面' => '頁面',
'页面' => '頁面',
-'é \82å¤\9a' => 'é \82å¤\9a',
+'é \81é\9d¢' => 'é \81é\9d¢',
'顶多' => '頂多',
+'頂多' => '頂多',
'项庄' => '項莊',
'顺于' => '順於',
'顺钟向' => '順鐘向',
'颜范' => '顏範',
'颠干倒坤' => '顛乾倒坤',
'颠覆' => '顛覆',
-'颠颠仆仆' => '顛顛仆仆',
'顛顛仆仆' => '顛顛仆仆',
+'颠颠仆仆' => '顛顛仆仆',
'颤栗' => '顫慄',
'显示表' => '顯示錶',
'显示钟' => '顯示鐘',
'风范' => '風範',
'风里' => '風裡',
'风起云涌' => '風起雲湧',
-'风采' => '風采',
'風采' => '風采',
+'风采' => '風采',
'台风' => '颱風',
'台风后' => '颱風後',
'刮了' => '颳了',
'刮倒' => '颳倒',
'刮去' => '颳去',
'刮得' => '颳得',
+'刮着' => '颳著',
'刮走' => '颳走',
'刮起' => '颳起',
'刮雪' => '颳雪',
'香干' => '香乾',
'香山庄' => '香山庄',
'马干' => '馬乾',
-'马占山' => '馬占山',
'馬占山' => '馬占山',
+'马占山' => '馬占山',
'马杆' => '馬杆',
-'馬格里布' => '馬格里布',
'马格里布' => '馬格里布',
+'馬格里布' => '馬格里布',
'马表' => '馬錶',
'驻扎' => '駐紮',
'骀荡' => '駘蕩',
-'腾格里' => '騰格里',
'騰格里' => '騰格里',
+'腾格里' => '騰格里',
'腾冲' => '騰衝',
'惊赞' => '驚讚',
'惊钟' => '驚鐘',
'斗而铸锥' => '鬥而鑄錐',
'斗脚' => '鬥腳',
'斗舰' => '鬥艦',
+'斗艳' => '鬥艷',
'斗茶' => '鬥茶',
'斗草' => '鬥草',
'斗叶儿' => '鬥葉兒',
'斗着' => '鬥著',
'斗蟋蟀' => '鬥蟋蟀',
'斗话' => '鬥話',
-'斗艳' => '鬥豔',
'斗起' => '鬥起',
'斗趣' => '鬥趣',
'斗闲气' => '鬥閑氣',
'黄历' => '黃曆',
'黄曲霉' => '黃曲霉',
'黄历史' => '黃歷史',
-'黃詩杰' => '黃詩杰',
'黄诗杰' => '黃詩杰',
+'黃詩杰' => '黃詩杰',
'黄金表' => '黃金表',
-'黃鈺筑' => '黃鈺筑',
'黄钰筑' => '黃鈺筑',
+'黃鈺筑' => '黃鈺筑',
'黄钟' => '黃鐘',
'黄发' => '黃髮',
'黄曲毒素' => '黃麴毒素',
'乘著述' => '乘著述',
'乾一坛' => '乾一坛',
'乾一壇' => '乾一坛',
-'乾一组' => '乾一组',
'乾一組' => '乾一组',
+'乾一组' => '乾一组',
'乾上乾下' => '乾上乾下',
'乾為天' => '乾为天',
'乾為陽' => '乾为阳',
'乾岡' => '乾冈',
'乾劉' => '乾刘',
'乾刘' => '乾刘',
-'乾剛' => '乾刚',
'乾刚' => '乾刚',
-'ä¹¾å\8b\99' => 'ä¹¾å\8a¡',
+'ä¹¾å\89\9b' => 'ä¹¾å\88\9a',
'乾务' => '乾务',
+'乾務' => '乾务',
'乾化' => '乾化',
'乾卦' => '乾卦',
'乾县' => '乾县',
'乾景' => '乾景',
'乾晷' => '乾晷',
'乾曜' => '乾曜',
-'乾构' => '乾构',
'乾構' => '乾构',
-'ä¹¾æ¨\9e' => 'ä¹¾æ\9e¢',
+'ä¹¾æ\9e\84' => 'ä¹¾æ\9e\84',
'乾枢' => '乾枢',
-'ä¹¾æ \8b' => 'ä¹¾æ \8b',
+'ä¹¾æ¨\9e' => 'ä¹¾æ\9e¢',
'乾棟' => '乾栋',
+'乾栋' => '乾栋',
'乾步' => '乾步',
'乾氏' => '乾氏',
'乾沓和' => '乾沓和',
'乾清宮' => '乾清宫',
'乾清宫' => '乾清宫',
'乾渥' => '乾渥',
-'乾靈' => '乾灵',
'乾灵' => '乾灵',
+'乾靈' => '乾灵',
'乾男' => '乾男',
'乾皋' => '乾皋',
'乾盛世' => '乾盛世',
'乾红' => '乾红',
'乾綱' => '乾纲',
'乾纲' => '乾纲',
-'乾纽' => '乾纽',
'乾紐' => '乾纽',
+'乾纽' => '乾纽',
'乾絡' => '乾络',
'乾络' => '乾络',
'乾統' => '乾统',
'乾统' => '乾统',
'乾維' => '乾维',
'乾维' => '乾维',
-'乾羅' => '乾罗',
'乾罗' => '乾罗',
+'乾羅' => '乾罗',
'乾花' => '乾花',
-'乾蔭' => '乾荫',
'乾荫' => '乾荫',
+'乾蔭' => '乾荫',
'乾行' => '乾行',
'乾衡' => '乾衡',
'乾覆' => '乾覆',
'乾象历' => '乾象历',
'乾贞' => '乾贞',
'乾貞' => '乾贞',
-'乾貺' => '乾贶',
'乾贶' => '乾贶',
+'乾貺' => '乾贶',
'乾车' => '乾车',
'乾車' => '乾车',
-'乾軸' => '乾轴',
'乾轴' => '乾轴',
+'乾軸' => '乾轴',
'乾通' => '乾通',
'乾造' => '乾造',
'乾道' => '乾道',
'乾鑒' => '乾鉴',
'乾鉴' => '乾鉴',
-'乾钧' => '乾钧',
'乾鈞' => '乾钧',
+'乾钧' => '乾钧',
'乾闼' => '乾闼',
'乾闥' => '乾闼',
'乾陀' => '乾陀',
'乾音' => '乾音',
'乾顾' => '乾顾',
'乾顧' => '乾顾',
-'乾风' => '乾风',
'乾風' => '乾风',
+'乾风' => '乾风',
'乾首' => '乾首',
'乾馬' => '乾马',
'乾马' => '乾马',
'乾鹄' => '乾鹄',
'乾鵲' => '乾鹊',
'乾鹊' => '乾鹊',
-'乾龍' => '乾龙',
'乾龙' => '乾龙',
+'乾龍' => '乾龙',
'乾,健也' => '乾,健也',
'乾,天也' => '乾,天也',
'爭著' => '争着',
'爭著述' => '争著述',
'五箇山' => '五箇山',
'亮著' => '亮着',
-'亮著书' => '亮著书',
'亮著書' => '亮著书',
+'亮著书' => '亮著书',
'亮著作' => '亮著作',
'亮著名' => '亮著名',
'亮著錄' => '亮著录',
'亮著录' => '亮著录',
-'亮著称' => '亮著称',
'亮著稱' => '亮著称',
+'亮著称' => '亮著称',
'亮著者' => '亮著者',
'亮著述' => '亮著述',
'仗著' => '仗着',
'仗著者' => '仗著者',
'仗著述' => '仗著述',
'代表著' => '代表着',
-'代表著書' => '代表著书',
'代表著书' => '代表著书',
+'代表著書' => '代表著书',
'代表著作' => '代表著作',
'代表著名' => '代表著名',
-'代表著錄' => '代表著录',
'代表著录' => '代表著录',
+'代表著錄' => '代表著录',
'代表著称' => '代表著称',
'代表著稱' => '代表著称',
'代表著者' => '代表著者',
'伴著名' => '伴著名',
'伴著录' => '伴著录',
'伴著錄' => '伴著录',
-'伴著稱' => '伴著称',
'伴著称' => '伴著称',
+'伴著稱' => '伴著称',
'伴著者' => '伴著者',
'伴著述' => '伴著述',
'低著' => '低着',
-'低著書' => '低著书',
'低著书' => '低著书',
+'低著書' => '低著书',
'低著作' => '低著作',
'低著名' => '低著名',
'低著录' => '低著录',
'住著名' => '住著名',
'住著錄' => '住著录',
'住著录' => '住著录',
-'住著称' => '住著称',
'住著稱' => '住著称',
+'住著称' => '住著称',
'住著者' => '住著者',
'住著述' => '住著述',
'佛頭著糞' => '佛头著粪',
'保障著名' => '保障著名',
'保障著錄' => '保障著录',
'保障著录' => '保障著录',
-'保障著稱' => '保障著称',
'保障著称' => '保障著称',
+'保障著稱' => '保障著称',
'保障著者' => '保障著者',
'保障著述' => '保障著述',
'信著' => '信着',
'信著名' => '信著名',
'信著录' => '信著录',
'信著錄' => '信著录',
-'信著称' => '信著称',
'信著稱' => '信著称',
+'信著称' => '信著称',
'信著者' => '信著者',
'信著述' => '信著述',
'修鍊' => '修炼',
'候著书' => '候著书',
'候著作' => '候著作',
'候著名' => '候著名',
-'候著录' => '候著录',
'候著錄' => '候著录',
-'候著稱' => '候著称',
+'候著录' => '候著录',
'候著称' => '候著称',
+'候著稱' => '候著称',
'候著者' => '候著者',
'候著述' => '候著述',
'藉助' => '借助',
'藉機' => '借机',
'藉此' => '借此',
'藉由' => '借由',
+'藉著' => '借着',
'借著' => '借着',
'藉着' => '借着',
-'藉著' => '借着',
'藉端' => '借端',
-'借著書' => '借著书',
'借著书' => '借著书',
+'借著書' => '借著书',
'借著作' => '借著作',
'借著名' => '借著名',
'借著录' => '借著录',
'借著錄' => '借著录',
-'借著称' => '借著称',
'借著稱' => '借著称',
+'借著称' => '借著称',
'借著者' => '借著者',
'借著述' => '借著述',
'藉詞' => '借词',
'做著' => '做着',
-'做著書' => '做著书',
'做著书' => '做著书',
+'做著書' => '做著书',
'做著作' => '做著作',
'做著名' => '做著名',
-'做著錄' => '做著录',
'做著录' => '做著录',
+'做著錄' => '做著录',
'做著稱' => '做著称',
'做著称' => '做著称',
'做著者' => '做著者',
'偷著名' => '偷著名',
'偷著錄' => '偷著录',
'偷著录' => '偷著录',
-'偷著稱' => '偷著称',
'偷著称' => '偷著称',
+'偷著稱' => '偷著称',
'偷著者' => '偷著者',
'偷著述' => '偷著述',
'傢俬' => '傢俬',
'關著者' => '关著者',
'關著述' => '关著述',
'冀著' => '冀着',
-'冀著書' => '冀著书',
'冀著书' => '冀著书',
+'冀著書' => '冀著书',
'冀著作' => '冀著作',
'冀著名' => '冀著名',
-'冀著錄' => '冀著录',
'冀著录' => '冀著录',
+'冀著錄' => '冀著录',
'冀著稱' => '冀著称',
'冀著称' => '冀著称',
'冀著者' => '冀著者',
'冀著述' => '冀著述',
'冒著' => '冒着',
-'冒著书' => '冒著书',
'冒著書' => '冒著书',
+'冒著书' => '冒著书',
'冒著作' => '冒著作',
'冒著名' => '冒著名',
'冒著录' => '冒著录',
'冒著錄' => '冒著录',
-'冒著稱' => '冒著称',
'冒著称' => '冒著称',
+'冒著稱' => '冒著称',
'冒著者' => '冒著者',
'冒著述' => '冒著述',
'寫著' => '写着',
'制著書' => '制著书',
'制著作' => '制著作',
'制著名' => '制著名',
-'制著錄' => '制著录',
'制著录' => '制著录',
-'制著称' => '制著称',
+'制著錄' => '制著录',
'制著稱' => '制著称',
+'制著称' => '制著称',
'制著者' => '制著者',
'制著述' => '制著述',
'刻著' => '刻着',
'動著者' => '动著者',
'動著述' => '动著述',
'努力著' => '努力着',
-'努力著書' => '努力著书',
'努力著书' => '努力著书',
+'努力著書' => '努力著书',
'努力著作' => '努力著作',
'努力著名' => '努力著名',
-'努力著錄' => '努力著录',
'努力著录' => '努力著录',
-'努力著称' => '努力著称',
+'努力著錄' => '努力著录',
'努力著稱' => '努力著称',
+'努力著称' => '努力著称',
'努力著者' => '努力著者',
'努力著述' => '努力著述',
'努著' => '努着',
'努著述' => '努著述',
'卓著' => '卓著',
'印著' => '印着',
-'印著书' => '印著书',
'印著書' => '印著书',
+'印著书' => '印著书',
'印著作' => '印著作',
'印著名' => '印著名',
-'印著录' => '印著录',
'印著錄' => '印著录',
-'印著称' => '印著称',
+'印著录' => '印著录',
'印著稱' => '印著称',
+'印著称' => '印著称',
'印著者' => '印著者',
'印著述' => '印著述',
'卷舌' => '卷舌',
'壓著述' => '压著述',
'原著' => '原著',
'去著' => '去着',
-'去著书' => '去著书',
'去著書' => '去著书',
+'去著书' => '去著书',
'去著作' => '去著作',
'去著名' => '去著名',
-'去著录' => '去著录',
'去著錄' => '去著录',
+'去著录' => '去著录',
'去著稱' => '去著称',
'去著称' => '去著称',
'去著者' => '去著者',
'反反覆覆' => '反反复复',
'反覆' => '反复',
'受著' => '受着',
-'受著書' => '受著书',
'受著书' => '受著书',
+'受著書' => '受著书',
'受著作' => '受著作',
'受著名' => '受著名',
-'受著錄' => '受著录',
'受著录' => '受著录',
+'受著錄' => '受著录',
'受著稱' => '受著称',
'受著称' => '受著称',
'受著者' => '受著者',
'變著者' => '变著者',
'變著述' => '变著述',
'叫著' => '叫着',
-'叫著书' => '叫著书',
'叫著書' => '叫著书',
+'叫著书' => '叫著书',
'叫著作' => '叫著作',
'叫著名' => '叫著名',
-'叫著录' => '叫著录',
'叫著錄' => '叫著录',
+'叫著录' => '叫著录',
'叫著称' => '叫著称',
'叫著稱' => '叫著称',
'叫著者' => '叫著者',
'向著者' => '向著者',
'向著述' => '向著述',
'含著' => '含着',
-'含著書' => '含著书',
'含著书' => '含著书',
+'含著書' => '含著书',
'含著作' => '含著作',
'含著名' => '含著名',
'含著錄' => '含著录',
'聽著稱' => '听著称',
'聽著者' => '听著者',
'聽著述' => '听著述',
-'吴其濬' => '吴其濬',
'吳其濬' => '吴其濬',
+'吴其濬' => '吴其濬',
'吹著' => '吹着',
'吹著書' => '吹著书',
'吹著书' => '吹著书',
'吹著述' => '吹著述',
'周易乾' => '周易乾',
'味著' => '味着',
-'味著书' => '味著书',
'味著書' => '味著书',
+'味著书' => '味著书',
'味著作' => '味著作',
'味著名' => '味著名',
-'味著录' => '味著录',
'味著錄' => '味著录',
+'味著录' => '味著录',
'味著称' => '味著称',
'味著稱' => '味著称',
'味著者' => '味著者',
'響著述' => '响著述',
'哪吒' => '哪吒',
'哭著' => '哭着',
-'哭著書' => '哭著书',
'哭著书' => '哭著书',
+'哭著書' => '哭著书',
'哭著作' => '哭著作',
'哭著名' => '哭著名',
-'哭著錄' => '哭著录',
'哭著录' => '哭著录',
+'哭著錄' => '哭著录',
'哭著稱' => '哭著称',
'哭著称' => '哭著称',
'哭著者' => '哭著者',
'唱著名' => '唱著名',
'唱著录' => '唱著录',
'唱著錄' => '唱著录',
-'唱著称' => '唱著称',
'唱著稱' => '唱著称',
+'唱著称' => '唱著称',
'唱著者' => '唱著者',
'唱著述' => '唱著述',
'喝著' => '喝着',
-'喝著书' => '喝著书',
'喝著書' => '喝著书',
+'喝著书' => '喝著书',
'喝著作' => '喝著作',
'喝著名' => '喝著名',
-'喝著录' => '喝著录',
'喝著錄' => '喝著录',
+'喝著录' => '喝著录',
'喝著稱' => '喝著称',
'喝著称' => '喝著称',
'喝著者' => '喝著者',
'嗅得著' => '嗅得着',
'嗅著' => '嗅着',
'嚷著' => '嚷着',
-'嚷著書' => '嚷著书',
'嚷著书' => '嚷著书',
+'嚷著書' => '嚷著书',
'嚷著作' => '嚷著作',
'嚷著名' => '嚷著名',
-'嚷著錄' => '嚷著录',
'嚷著录' => '嚷著录',
+'嚷著錄' => '嚷著录',
'嚷著称' => '嚷著称',
'嚷著稱' => '嚷著称',
'嚷著者' => '嚷著者',
'因著' => '因着',
'因著〈' => '因著〈',
'因著《' => '因著《',
-'因著書' => '因著书',
'因著书' => '因著书',
+'因著書' => '因著书',
'因著作' => '因著作',
'因著名' => '因著名',
-'因著錄' => '因著录',
'因著录' => '因著录',
-'因著稱' => '因著称',
+'因著錄' => '因著录',
'因著称' => '因著称',
+'因著稱' => '因著称',
'因著者' => '因著者',
'因著述' => '因著述',
'困著' => '困着',
-'困著書' => '困著书',
'困著书' => '困著书',
+'困著書' => '困著书',
'困著作' => '困著作',
'困著名' => '困著名',
'困著錄' => '困著录',
'圍著述' => '围著述',
'土著' => '土著',
'在著' => '在着',
-'在著書' => '在著书',
'在著书' => '在著书',
+'在著書' => '在著书',
'在著作' => '在著作',
'在著名' => '在著名',
'在著錄' => '在著录',
'在著者' => '在著者',
'在著述' => '在著述',
'坐著' => '坐着',
-'坐著书' => '坐著书',
'坐著書' => '坐著书',
+'坐著书' => '坐著书',
'坐著作' => '坐著作',
'坐著名' => '坐著名',
-'坐著录' => '坐著录',
'坐著錄' => '坐著录',
+'坐著录' => '坐著录',
'坐著称' => '坐著称',
'坐著稱' => '坐著称',
'坐著者' => '坐著者',
'備著述' => '备著述',
'覆查' => '复查',
'覆核' => '复核',
-'天道为乾' => '天道为乾',
'天道為乾' => '天道为乾',
+'天道为乾' => '天道为乾',
'太閤' => '太阁',
'夾著' => '夹着',
'夾著書' => '夹著书',
'字乾生' => '字乾生',
'存摺' => '存摺',
'孤著' => '孤着',
-'孤著书' => '孤著书',
'孤著書' => '孤著书',
+'孤著书' => '孤著书',
'孤著作' => '孤著作',
'孤著名' => '孤著名',
'孤著錄' => '孤著录',
'學著者' => '学著者',
'學著述' => '学著述',
'守著' => '守着',
-'守著書' => '守著书',
'守著书' => '守著书',
+'守著書' => '守著书',
'守著作' => '守著作',
'守著名' => '守著名',
'守著录' => '守著录',
'將軍抽車' => '将军抽車',
'尼乾陀' => '尼乾陀',
'展著' => '展着',
-'展著書' => '展著书',
'展著书' => '展著书',
+'展著書' => '展著书',
'展著作' => '展著作',
'展著名' => '展著名',
-'展著錄' => '展著录',
'展著录' => '展著录',
+'展著錄' => '展著录',
'展著稱' => '展著称',
'展著称' => '展著称',
'展著者' => '展著者',
'乾乾脆脆' => '干干脆脆',
'乾泉水' => '干泉水',
'幹著' => '干着',
-'么二三' => '幺二三',
'幺二三' => '幺二三',
-'么元' => '幺元',
+'么二三' => '幺二三',
'幺元' => '幺元',
+'么元' => '幺元',
'幺鳳' => '幺凤',
'么鳳' => '幺凤',
-'么半群' => '幺半群',
'幺半群' => '幺半群',
-'幺廝' => '幺厮',
+'么半群' => '幺半群',
'幺厮' => '幺厮',
+'幺廝' => '幺厮',
'幺叔' => '幺叔',
'么叔' => '幺叔',
-'么媽' => '幺妈',
'幺媽' => '幺妈',
+'么媽' => '幺妈',
'么妹' => '幺妹',
'幺妹' => '幺妹',
'么姓' => '幺姓',
'幺姓' => '幺姓',
-'么姨' => '幺姨',
'幺姨' => '幺姨',
-'么娘' => '幺娘',
-'么孃' => '幺娘',
+'么姨' => '幺姨',
'幺娘' => '幺娘',
'幺孃' => '幺娘',
+'么孃' => '幺娘',
+'么娘' => '幺娘',
'幺小' => '幺小',
'么小' => '幺小',
-'幺氏' => '幺氏',
'么氏' => '幺氏',
-'么爸' => '幺爸',
+'幺氏' => '幺氏',
'幺爸' => '幺爸',
-'幺爹' => '幺爹',
+'么爸' => '幺爸',
'么爹' => '幺爹',
-'么篇' => '幺篇',
+'幺爹' => '幺爹',
'幺篇' => '幺篇',
+'么篇' => '幺篇',
'么舅' => '幺舅',
'幺舅' => '幺舅',
'么蛾子' => '幺蛾子',
'幺蛾子' => '幺蛾子',
-'么謙' => '幺谦',
'幺謙' => '幺谦',
+'么謙' => '幺谦',
'幺麽' => '幺麽',
'么麼' => '幺麽',
-'幺麽小丑' => '幺麽小丑',
'么麼小丑' => '幺麽小丑',
+'幺麽小丑' => '幺麽小丑',
'庇護著' => '庇护着',
'應著' => '应着',
'應著書' => '应著书',
'應著述' => '应著述',
'康乾' => '康乾',
'康著' => '康着',
-'康著书' => '康著书',
'康著書' => '康著书',
+'康著书' => '康著书',
'康著作' => '康著作',
'康著名' => '康著名',
-'康著录' => '康著录',
'康著錄' => '康著录',
+'康著录' => '康著录',
'康著称' => '康著称',
'康著稱' => '康著称',
'康著者' => '康著者',
'開著稱' => '开著称',
'開著者' => '开著者',
'開著述' => '开著述',
-'張法乾' => '张法乾',
'张法乾' => '张法乾',
+'張法乾' => '张法乾',
'當著' => '当着',
'當著書' => '当著书',
'當著作' => '当著作',
'待著述' => '待著述',
'後姓' => '後姓',
'得著' => '得着',
-'得著書' => '得著书',
'得著书' => '得著书',
+'得著書' => '得著书',
'得著作' => '得著作',
'得著名' => '得著名',
'得著錄' => '得著录',
'得著者' => '得著者',
'得著述' => '得著述',
'循著' => '循着',
-'循著书' => '循著书',
'循著書' => '循著书',
+'循著书' => '循著书',
'循著作' => '循著作',
'循著名' => '循著名',
-'循著录' => '循著录',
'循著錄' => '循著录',
+'循著录' => '循著录',
'循著称' => '循著称',
'循著稱' => '循著称',
'循著者' => '循著者',
'心著名' => '心著名',
'心著录' => '心著录',
'心著錄' => '心著录',
-'心著稱' => '心著称',
'心著称' => '心著称',
+'心著稱' => '心著称',
'心著者' => '心著者',
'心著述' => '心著述',
'忍著' => '忍着',
-'忍著书' => '忍著书',
'忍著書' => '忍著书',
+'忍著书' => '忍著书',
'忍著作' => '忍著作',
'忍著名' => '忍著名',
'忍著录' => '忍著录',
'忍著者' => '忍著者',
'忍著述' => '忍著述',
'志著' => '志着',
-'志著書' => '志著书',
'志著书' => '志著书',
+'志著書' => '志著书',
'志著作' => '志著作',
'志著名' => '志著名',
-'志著錄' => '志著录',
'志著录' => '志著录',
-'志著称' => '志著称',
+'志著錄' => '志著录',
'志著稱' => '志著称',
+'志著称' => '志著称',
'志著者' => '志著者',
'志著述' => '志著述',
'忙著' => '忙着',
-'忙著书' => '忙著书',
'忙著書' => '忙著书',
+'忙著书' => '忙著书',
'忙著作' => '忙著作',
'忙著名' => '忙著名',
-'忙著录' => '忙著录',
'忙著錄' => '忙著录',
+'忙著录' => '忙著录',
'忙著称' => '忙著称',
'忙著稱' => '忙著称',
'忙著者' => '忙著者',
'懷著者' => '怀著者',
'懷著述' => '怀著述',
'急著' => '急着',
-'急著书' => '急著书',
'急著書' => '急著书',
+'急著书' => '急著书',
'急著作' => '急著作',
'急著名' => '急著名',
-'急著录' => '急著录',
'急著錄' => '急著录',
+'急著录' => '急著录',
'急著称' => '急著称',
'急著稱' => '急著称',
'急著者' => '急著者',
'急著述' => '急著述',
'性著' => '性着',
-'性著书' => '性著书',
'性著書' => '性著书',
+'性著书' => '性著书',
'性著作' => '性著作',
'性著名' => '性著名',
-'性著录' => '性著录',
'性著錄' => '性著录',
-'性著称' => '性著称',
+'性著录' => '性著录',
'性著稱' => '性著称',
+'性著称' => '性著称',
'性著者' => '性著者',
'性著述' => '性著述',
'戀著' => '恋着',
'悠著名' => '悠著名',
'悠著錄' => '悠著录',
'悠著录' => '悠著录',
-'悠著称' => '悠著称',
'悠著稱' => '悠著称',
+'悠著称' => '悠著称',
'悠著者' => '悠著者',
'悠著述' => '悠著述',
'慣著' => '惯着',
'慣著者' => '惯著者',
'慣著述' => '惯著述',
'想著' => '想着',
-'想著書' => '想著书',
'想著书' => '想著书',
+'想著書' => '想著书',
'想著作' => '想著作',
'想著名' => '想著名',
-'想著錄' => '想著录',
'想著录' => '想著录',
-'想著称' => '想著称',
+'想著錄' => '想著录',
'想著稱' => '想著称',
+'想著称' => '想著称',
'想著者' => '想著者',
'想著述' => '想著述',
'戰著' => '战着',
'戰著者' => '战著者',
'戰著述' => '战著述',
'戴著' => '戴着',
-'戴著書' => '戴著书',
'戴著书' => '戴著书',
+'戴著書' => '戴著书',
'戴著作' => '戴著作',
'戴著名' => '戴著名',
-'戴著錄' => '戴著录',
'戴著录' => '戴著录',
+'戴著錄' => '戴著录',
'戴著稱' => '戴著称',
'戴著称' => '戴著称',
'戴著者' => '戴著者',
'扎著名' => '扎著名',
'扎著錄' => '扎著录',
'扎著录' => '扎著录',
-'扎著称' => '扎著称',
'扎著稱' => '扎著称',
+'扎著称' => '扎著称',
'扎著者' => '扎著者',
'扎著述' => '扎著述',
'打著' => '打着',
-'打著書' => '打著书',
'打著书' => '打著书',
+'打著書' => '打著书',
'打著作' => '打著作',
'打著名' => '打著名',
-'打著錄' => '打著录',
'打著录' => '打著录',
+'打著錄' => '打著录',
'打著称' => '打著称',
'打著稱' => '打著称',
'打著者' => '打著者',
'抓著名' => '抓著名',
'抓著录' => '抓著录',
'抓著錄' => '抓著录',
-'抓著称' => '抓著称',
'抓著稱' => '抓著称',
+'抓著称' => '抓著称',
'抓著者' => '抓著者',
'抓著述' => '抓著述',
'護著' => '护着',
'披著書' => '披著书',
'披著作' => '披著作',
'披著名' => '披著名',
-'披著录' => '披著录',
'披著錄' => '披著录',
-'披著稱' => '披著称',
+'披著录' => '披著录',
'披著称' => '披著称',
+'披著稱' => '披著称',
'披著者' => '披著者',
'披著述' => '披著述',
'抬著' => '抬着',
'抬著作' => '抬著作',
'抬著名' => '抬著名',
-'抬著录' => '抬著录',
'抬著錄' => '抬著录',
+'抬著录' => '抬著录',
'抬著稱' => '抬著称',
'抬著称' => '抬著称',
'抬著者' => '抬著者',
'抱著名' => '抱著名',
'抱著录' => '抱著录',
'抱著錄' => '抱著录',
-'抱著稱' => '抱著称',
'抱著称' => '抱著称',
+'抱著稱' => '抱著称',
'抱著者' => '抱著者',
'抱著述' => '抱著述',
'拉著' => '拉着',
'拉著名' => '拉著名',
'拉著录' => '拉著录',
'拉著錄' => '拉著录',
-'拉著称' => '拉著称',
'拉著稱' => '拉著称',
+'拉著称' => '拉著称',
'拉著者' => '拉著者',
'拉著述' => '拉著述',
'拉鍊' => '拉链',
'拼著' => '拼着',
'拼著作' => '拼著作',
'拼著名' => '拼著名',
-'拼著录' => '拼著录',
'拼著錄' => '拼著录',
+'拼著录' => '拼著录',
'拼著稱' => '拼著称',
'拼著称' => '拼著称',
'拼著者' => '拼著者',
'拿著' => '拿着',
'拿著作' => '拿著作',
'拿著名' => '拿著名',
-'拿著录' => '拿著录',
'拿著錄' => '拿著录',
-'拿著称' => '拿著称',
+'拿著录' => '拿著录',
'拿著稱' => '拿著称',
+'拿著称' => '拿著称',
'拿著者' => '拿著者',
'拿著述' => '拿著述',
'持著' => '持着',
'挑著名' => '挑著名',
'挑著錄' => '挑著录',
'挑著录' => '挑著录',
-'挑著称' => '挑著称',
'挑著稱' => '挑著称',
+'挑著称' => '挑著称',
'挑著者' => '挑著者',
'挑著述' => '挑著述',
'擋著' => '挡着',
'捆著' => '捆着',
'捆著作' => '捆著作',
'捆著名' => '捆著名',
-'捆著錄' => '捆著录',
'捆著录' => '捆著录',
-'捆著称' => '捆著称',
+'捆著錄' => '捆著录',
'捆著稱' => '捆著称',
+'捆著称' => '捆著称',
'捆著者' => '捆著者',
'捆著述' => '捆著述',
'據著' => '据着',
'掖著' => '掖着',
'掖著作' => '掖著作',
'掖著名' => '掖著名',
-'掖著錄' => '掖著录',
'掖著录' => '掖著录',
-'掖著稱' => '掖著称',
+'掖著錄' => '掖著录',
'掖著称' => '掖著称',
+'掖著稱' => '掖著称',
'掖著者' => '掖著者',
'掖著述' => '掖著述',
'接著' => '接着',
'接著者' => '接著者',
'接著述' => '接著述',
'揉著' => '揉着',
-'揉著书' => '揉著书',
'揉著書' => '揉著书',
+'揉著书' => '揉著书',
'揉著作' => '揉著作',
'揉著名' => '揉著名',
-'揉著录' => '揉著录',
'揉著錄' => '揉著录',
-'揉著称' => '揉著称',
+'揉著录' => '揉著录',
'揉著稱' => '揉著称',
+'揉著称' => '揉著称',
'揉著者' => '揉著者',
'揉著述' => '揉著述',
'提著' => '提着',
'擺著述' => '摆著述',
'撰著' => '撰著',
'撼著' => '撼着',
-'撼著書' => '撼著书',
'撼著书' => '撼著书',
+'撼著書' => '撼著书',
'撼著作' => '撼著作',
'撼著名' => '撼著名',
-'撼著錄' => '撼著录',
'撼著录' => '撼著录',
-'撼著称' => '撼著称',
+'撼著錄' => '撼著录',
'撼著稱' => '撼著称',
+'撼著称' => '撼著称',
'撼著者' => '撼著者',
'撼著述' => '撼著述',
'敞著' => '敞着',
'敞著名' => '敞著名',
'敞著錄' => '敞著录',
'敞著录' => '敞著录',
-'敞著稱' => '敞著称',
'敞著称' => '敞著称',
+'敞著稱' => '敞著称',
'敞著者' => '敞著者',
'敞著述' => '敞著述',
'數著' => '数着',
'斥著书' => '斥著书',
'斥著作' => '斥著作',
'斥著名' => '斥著名',
-'斥著錄' => '斥著录',
'斥著录' => '斥著录',
-'斥著稱' => '斥著称',
+'斥著錄' => '斥著录',
'斥著称' => '斥著称',
+'斥著稱' => '斥著称',
'斥著者' => '斥著者',
'斥著述' => '斥著述',
'新著' => '新著',
'於志賀' => '於志贺',
'於志贺' => '於志贺',
'於戲' => '於戏',
-'於梨華' => '於梨华',
'於梨华' => '於梨华',
+'於梨華' => '於梨华',
'於氏' => '於氏',
'於潛縣' => '於潜县',
'於潜县' => '於潜县',
'於菟' => '於菟',
'於賢德' => '於贤德',
'於除鞬' => '於除鞬',
-'旋乾转坤' => '旋乾转坤',
'旋乾轉坤' => '旋乾转坤',
+'旋乾转坤' => '旋乾转坤',
'曠若發矇' => '旷若发矇',
'昂著' => '昂着',
'昂著书' => '昂著书',
'昂著書' => '昂著书',
'昂著作' => '昂著作',
'昂著名' => '昂著名',
-'昂著錄' => '昂著录',
'昂著录' => '昂著录',
+'昂著錄' => '昂著录',
'昂著稱' => '昂著称',
'昂著称' => '昂著称',
'昂著者' => '昂著者',
'昂著述' => '昂著述',
'易·乾' => '易·乾',
-'易經·乾' => '易经·乾',
'易经·乾' => '易经·乾',
+'易經·乾' => '易经·乾',
'易經乾' => '易经乾',
'易经乾' => '易经乾',
'映著' => '映着',
-'映著書' => '映著书',
'映著书' => '映著书',
+'映著書' => '映著书',
'映著作' => '映著作',
'映著名' => '映著名',
-'映著錄' => '映著录',
'映著录' => '映著录',
-'映著稱' => '映著称',
+'映著錄' => '映著录',
'映著称' => '映著称',
+'映著稱' => '映著称',
'映著者' => '映著者',
'映著述' => '映著述',
'昭著' => '昭著',
'晃著' => '晃着',
'晃著作' => '晃著作',
'晃著名' => '晃著名',
-'晃著錄' => '晃著录',
'晃著录' => '晃著录',
-'晃著称' => '晃著称',
+'晃著錄' => '晃著录',
'晃著稱' => '晃著称',
+'晃著称' => '晃著称',
'晃著者' => '晃著者',
'晃著述' => '晃著述',
'暗著' => '暗着',
-'暗著书' => '暗著书',
'暗著書' => '暗著书',
+'暗著书' => '暗著书',
'暗著作' => '暗著作',
'暗著名' => '暗著名',
'暗著錄' => '暗著录',
'有著书' => '有著书',
'有著作' => '有著作',
'有著名' => '有著名',
-'有著錄' => '有著录',
'有著录' => '有著录',
-'有著称' => '有著称',
+'有著錄' => '有著录',
'有著稱' => '有著称',
+'有著称' => '有著称',
'有著者' => '有著者',
'有著述' => '有著述',
'望著' => '望着',
'望著作' => '望著作',
'望著名' => '望著名',
-'望著录' => '望著录',
'望著錄' => '望著录',
+'望著录' => '望著录',
'望著稱' => '望著称',
'望著称' => '望著称',
'望著者' => '望著者',
'朝著' => '朝着',
'朝著作' => '朝著作',
'朝著名' => '朝著名',
-'朝著录' => '朝著录',
'朝著錄' => '朝著录',
-'朝著稱' => '朝著称',
+'朝著录' => '朝著录',
'朝著称' => '朝著称',
+'朝著稱' => '朝著称',
'朝著者' => '朝著者',
'朝著述' => '朝著述',
'本著' => '本着',
-'本著书' => '本著书',
'本著書' => '本著书',
+'本著书' => '本著书',
'本著作' => '本著作',
'本著名' => '本著名',
-'本著录' => '本著录',
'本著錄' => '本著录',
-'本著稱' => '本著称',
+'本著录' => '本著录',
'本著称' => '本著称',
+'本著稱' => '本著称',
'本著者' => '本著者',
'本著述' => '本著述',
'朴於宇同' => '朴於宇同',
'雜著者' => '杂著者',
'雜著述' => '杂著述',
'李乾德' => '李乾德',
-'李乾順' => '李乾顺',
'李乾顺' => '李乾顺',
+'李乾順' => '李乾顺',
'李澤鉅' => '李泽钜',
'來著' => '来着',
'來著書' => '来著书',
'枕著名' => '枕著名',
'枕著錄' => '枕著录',
'枕著录' => '枕著录',
-'枕著稱' => '枕著称',
'枕著称' => '枕著称',
+'枕著稱' => '枕著称',
'枕著者' => '枕著者',
'枕著述' => '枕著述',
'柳詒徵' => '柳诒徵',
'活著名' => '活著名',
'活著录' => '活著录',
'活著錄' => '活著录',
-'活著稱' => '活著称',
'活著称' => '活著称',
+'活著稱' => '活著称',
'活著者' => '活著者',
'活著述' => '活著述',
'流著' => '流着',
-'流著书' => '流著书',
'流著書' => '流著书',
+'流著书' => '流著书',
'流著作' => '流著作',
'流著名' => '流著名',
-'流著录' => '流著录',
'流著錄' => '流著录',
+'流著录' => '流著录',
'流著稱' => '流著称',
'流著称' => '流著称',
'流著者' => '流著者',
'浮著名' => '浮著名',
'浮著录' => '浮著录',
'浮著錄' => '浮著录',
-'浮著稱' => '浮著称',
'浮著称' => '浮著称',
+'浮著稱' => '浮著称',
'浮著者' => '浮著者',
'浮著述' => '浮著述',
'潤著' => '润着',
'涵著書' => '涵著书',
'涵著作' => '涵著作',
'涵著名' => '涵著名',
-'涵著录' => '涵著录',
'涵著錄' => '涵著录',
-'涵著稱' => '涵著称',
+'涵著录' => '涵著录',
'涵著称' => '涵著称',
+'涵著稱' => '涵著称',
'涵著者' => '涵著者',
'涵著述' => '涵著述',
'渴著' => '渴着',
'渴著名' => '渴著名',
'渴著录' => '渴著录',
'渴著錄' => '渴著录',
-'渴著称' => '渴著称',
'渴著稱' => '渴著称',
+'渴著称' => '渴著称',
'渴著者' => '渴著者',
'渴著述' => '渴著述',
'溢著' => '溢着',
'演著名' => '演著名',
'演著录' => '演著录',
'演著錄' => '演著录',
-'演著稱' => '演著称',
'演著称' => '演著称',
+'演著稱' => '演著称',
'演著者' => '演著者',
'演著述' => '演著述',
'漫著' => '漫着',
'漫著书' => '漫著书',
'漫著作' => '漫著作',
'漫著名' => '漫著名',
-'漫著录' => '漫著录',
'漫著錄' => '漫著录',
+'漫著录' => '漫著录',
'漫著称' => '漫著称',
'漫著稱' => '漫著称',
'漫著者' => '漫著者',
'燒著者' => '烧著者',
'燒著述' => '烧著述',
'照著' => '照着',
-'照著书' => '照著书',
'照著書' => '照著书',
+'照著书' => '照著书',
'照著作' => '照著作',
'照著名' => '照著名',
-'照著录' => '照著录',
'照著錄' => '照著录',
-'照著称' => '照著称',
+'照著录' => '照著录',
'照著稱' => '照著称',
+'照著称' => '照著称',
'照著者' => '照著者',
'照著述' => '照著述',
'愛護著' => '爱护着',
'猜著書' => '猜着书',
'猜著作' => '猜著作',
'猜著名' => '猜著名',
-'猜著錄' => '猜著录',
'猜著录' => '猜著录',
+'猜著錄' => '猜著录',
'猜著称' => '猜著称',
'猜著稱' => '猜著称',
'猜著者' => '猜著者',
'甜著书' => '甜著书',
'甜著作' => '甜著作',
'甜著名' => '甜著名',
-'甜著录' => '甜著录',
'甜著錄' => '甜著录',
+'甜著录' => '甜著录',
'甜著稱' => '甜著称',
'甜著称' => '甜著称',
'甜著者' => '甜著者',
'用著稱' => '用著称',
'用著者' => '用著者',
'用著述' => '用著述',
-'男为乾' => '男为乾',
-'男爲乾' => '男为乾',
'男為乾' => '男为乾',
+'男爲乾' => '男为乾',
+'男为乾' => '男为乾',
'男性為乾' => '男性为乾',
-'男性爲乾' => '男性为乾',
'男性为乾' => '男性为乾',
+'男性爲乾' => '男性为乾',
'留著' => '留着',
'留著書' => '留着书',
'留著作' => '留著作',
'皺著者' => '皱著者',
'皺著述' => '皱著述',
'盛著' => '盛着',
-'盛著书' => '盛著书',
'盛著書' => '盛著书',
+'盛著书' => '盛著书',
'盛著作' => '盛著作',
'盛著名' => '盛著名',
-'盛著錄' => '盛著录',
'盛著录' => '盛著录',
+'盛著錄' => '盛著录',
'盛著稱' => '盛著称',
'盛著称' => '盛著称',
'盛著者' => '盛著者',
'盯著者' => '盯著者',
'盯著述' => '盯著述',
'盾著' => '盾着',
-'盾著書' => '盾著书',
'盾著书' => '盾著书',
+'盾著書' => '盾著书',
'盾著作' => '盾著作',
'盾著名' => '盾著名',
-'盾著錄' => '盾著录',
'盾著录' => '盾著录',
-'盾著稱' => '盾著称',
+'盾著錄' => '盾著录',
'盾著称' => '盾著称',
+'盾著稱' => '盾著称',
'盾著者' => '盾著者',
'盾著述' => '盾著述',
'看不著' => '看不着',
'看著名' => '看著名',
'看著录' => '看著录',
'看著錄' => '看著录',
-'看著稱' => '看著称',
'看著称' => '看著称',
+'看著稱' => '看著称',
'看著者' => '看著者',
'看著述' => '看著述',
'著業' => '着业',
'睡不著' => '睡不着',
'睡得著' => '睡得着',
'睡著' => '睡着',
-'睡著書' => '睡著书',
'睡著书' => '睡著书',
+'睡著書' => '睡著书',
'睡著作' => '睡著作',
'睡著名' => '睡著名',
-'睡著錄' => '睡著录',
'睡著录' => '睡著录',
-'睡著称' => '睡著称',
+'睡著錄' => '睡著录',
'睡著稱' => '睡著称',
+'睡著称' => '睡著称',
'睡著者' => '睡著者',
'睡著述' => '睡著述',
'睹微知著' => '睹微知著',
'瞪著书' => '瞪著书',
'瞪著作' => '瞪著作',
'瞪著名' => '瞪著名',
-'瞪著錄' => '瞪著录',
'瞪著录' => '瞪著录',
+'瞪著錄' => '瞪著录',
'瞪著称' => '瞪著称',
'瞪著稱' => '瞪著称',
'瞪著者' => '瞪著者',
'福著書' => '福著书',
'福著作' => '福著作',
'福著名' => '福著名',
-'福著錄' => '福著录',
'福著录' => '福著录',
-'福著稱' => '福著称',
+'福著錄' => '福著录',
'福著称' => '福著称',
+'福著稱' => '福著称',
'福著者' => '福著者',
'福著述' => '福著述',
'穀梁' => '穀梁',
'空著名' => '空著名',
'空著录' => '空著录',
'空著錄' => '空著录',
-'空著称' => '空著称',
'空著稱' => '空著称',
+'空著称' => '空著称',
'空著者' => '空著者',
'空著述' => '空著述',
'穿著' => '穿着',
-'穿著书' => '穿著书',
'穿著書' => '穿著书',
+'穿著书' => '穿著书',
'穿著作' => '穿著作',
'穿著名' => '穿著名',
-'穿著录' => '穿著录',
'穿著錄' => '穿著录',
+'穿著录' => '穿著录',
'穿著称' => '穿著称',
'穿著稱' => '穿著称',
'穿著者' => '穿著者',
'豎著者' => '竖著者',
'豎著述' => '竖著述',
'站著' => '站着',
-'站著书' => '站著书',
'站著書' => '站著书',
+'站著书' => '站著书',
'站著作' => '站著作',
'站著名' => '站著名',
-'站著錄' => '站著录',
'站著录' => '站著录',
-'站著称' => '站著称',
+'站著錄' => '站著录',
'站著稱' => '站著称',
+'站著称' => '站著称',
'站著者' => '站著者',
'站著述' => '站著述',
'笑著' => '笑着',
'笑著名' => '笑著名',
'笑著录' => '笑著录',
'笑著錄' => '笑著录',
-'笑著称' => '笑著称',
'笑著稱' => '笑著称',
+'笑著称' => '笑著称',
'笑著者' => '笑著者',
'笑著述' => '笑著述',
'答覆' => '答复',
'管著名' => '管著名',
'管著录' => '管著录',
'管著錄' => '管著录',
-'管著稱' => '管著称',
'管著称' => '管著称',
+'管著稱' => '管著称',
'管著者' => '管著者',
'管著述' => '管著述',
'米澤瑠美' => '米泽瑠美',
'纏著者' => '缠著者',
'纏著述' => '缠著述',
'罩著' => '罩着',
-'罩著书' => '罩著书',
'罩著書' => '罩著书',
+'罩著书' => '罩著书',
'罩著作' => '罩著作',
'罩著名' => '罩著名',
-'罩著錄' => '罩著录',
'罩著录' => '罩著录',
-'罩著称' => '罩著称',
+'罩著錄' => '罩著录',
'罩著稱' => '罩著称',
+'罩著称' => '罩著称',
'罩著者' => '罩著者',
'罩著述' => '罩著述',
'美著' => '美着',
-'美著书' => '美著书',
'美著書' => '美著书',
+'美著书' => '美著书',
'美著作' => '美著作',
'美著名' => '美著名',
-'美著录' => '美著录',
'美著錄' => '美著录',
+'美著录' => '美著录',
'美著稱' => '美著称',
'美著称' => '美著称',
'美著者' => '美著者',
'美著述' => '美著述',
'耀著' => '耀着',
-'耀著書' => '耀著书',
'耀著书' => '耀著书',
+'耀著書' => '耀著书',
'耀著作' => '耀著作',
'耀著名' => '耀著名',
-'耀著錄' => '耀著录',
'耀著录' => '耀著录',
+'耀著錄' => '耀著录',
'耀著称' => '耀著称',
'耀著稱' => '耀著称',
'耀著者' => '耀著者',
'背著名' => '背著名',
'背著录' => '背著录',
'背著錄' => '背著录',
-'背著称' => '背著称',
'背著稱' => '背著称',
+'背著称' => '背著称',
'背著者' => '背著者',
'背著述' => '背著述',
'膠著' => '胶着',
'藝著者' => '艺著者',
'藝著述' => '艺著述',
'苦著' => '苦着',
-'苦著书' => '苦著书',
'苦著書' => '苦著书',
+'苦著书' => '苦著书',
'苦著作' => '苦著作',
'苦著名' => '苦著名',
-'苦著录' => '苦著录',
'苦著錄' => '苦著录',
-'苦著稱' => '苦著称',
+'苦著录' => '苦著录',
'苦著称' => '苦著称',
+'苦著稱' => '苦著称',
'苦著者' => '苦著者',
'苦著述' => '苦著述',
-'苧烯' => '苧烯',
'薴烯' => '苧烯',
+'苧烯' => '苧烯',
'獲著' => '获着',
'獲著書' => '获著书',
'獲著作' => '获著作',
'落著名' => '落著名',
'落著录' => '落著录',
'落著錄' => '落著录',
-'落著稱' => '落著称',
'落著称' => '落著称',
+'落著稱' => '落著称',
'落著者' => '落著者',
'落著述' => '落著述',
'著書' => '著书',
'蒙汗葯' => '蒙汗药',
'蒙著' => '蒙着',
'蒙葯' => '蒙药',
-'蒙著書' => '蒙著书',
'蒙著书' => '蒙著书',
+'蒙著書' => '蒙著书',
'蒙著作' => '蒙著作',
'蒙著名' => '蒙著名',
'蒙著录' => '蒙著录',
'蒙著錄' => '蒙著录',
-'蒙著稱' => '蒙著称',
'蒙著称' => '蒙著称',
+'蒙著稱' => '蒙著称',
'蒙著者' => '蒙著者',
'蒙著述' => '蒙著述',
'藏著' => '藏着',
'藏著名' => '藏著名',
'藏著錄' => '藏著录',
'藏著录' => '藏著录',
-'藏著称' => '藏著称',
'藏著稱' => '藏著称',
+'藏著称' => '藏著称',
'藏著者' => '藏著者',
'藏著述' => '藏著述',
'蘸著' => '蘸着',
-'蘸著書' => '蘸著书',
'蘸著书' => '蘸著书',
+'蘸著書' => '蘸著书',
'蘸著作' => '蘸著作',
'蘸著名' => '蘸著名',
'蘸著录' => '蘸著录',
'蘸著錄' => '蘸著录',
-'蘸著稱' => '蘸著称',
'蘸著称' => '蘸著称',
+'蘸著稱' => '蘸著称',
'蘸著者' => '蘸著者',
'蘸著述' => '蘸著述',
'行著' => '行着',
'行著書' => '行著书',
'行著作' => '行著作',
'行著名' => '行著名',
-'行著录' => '行著录',
'行著錄' => '行著录',
-'行著稱' => '行著称',
+'行著录' => '行著录',
'行著称' => '行著称',
+'行著稱' => '行著称',
'行著者' => '行著者',
'行著述' => '行著述',
'衣著' => '衣着',
-'衣著书' => '衣著书',
'衣著書' => '衣著书',
+'衣著书' => '衣著书',
'衣著作' => '衣著作',
'衣著名' => '衣著名',
-'衣著录' => '衣著录',
'衣著錄' => '衣著录',
+'衣著录' => '衣著录',
'衣著稱' => '衣著称',
'衣著称' => '衣著称',
'衣著者' => '衣著者',
'裝著者' => '装著者',
'裝著述' => '装著述',
'裹著' => '裹着',
-'裹著書' => '裹著书',
'裹著书' => '裹著书',
+'裹著書' => '裹著书',
'裹著作' => '裹著作',
'裹著名' => '裹著名',
'裹著录' => '裹著录',
'裹著錄' => '裹著录',
-'裹著称' => '裹著称',
'裹著稱' => '裹著称',
+'裹著称' => '裹著称',
'裹著者' => '裹著者',
'裹著述' => '裹著述',
'覆蓋' => '覆蓋',
'豫著名' => '豫著名',
'豫著录' => '豫著录',
'豫著錄' => '豫著录',
-'豫著称' => '豫著称',
'豫著稱' => '豫著称',
+'豫著称' => '豫著称',
'豫著者' => '豫著者',
'豫著述' => '豫著述',
'貞著' => '贞着',
'貞著者' => '贞著者',
'貞著述' => '贞著述',
'走著' => '走着',
-'走著書' => '走著书',
'走著书' => '走著书',
+'走著書' => '走著书',
'走著作' => '走著作',
'走著名' => '走著名',
-'走著錄' => '走著录',
'走著录' => '走著录',
-'走著稱' => '走著称',
+'走著錄' => '走著录',
'走著称' => '走著称',
+'走著稱' => '走著称',
'走著者' => '走著者',
'走著述' => '走著述',
'趕著' => '赶着',
'趴著书' => '趴著书',
'趴著作' => '趴著作',
'趴著名' => '趴著名',
-'趴著录' => '趴著录',
'趴著錄' => '趴著录',
+'趴著录' => '趴著录',
'趴著称' => '趴著称',
'趴著稱' => '趴著称',
'趴著者' => '趴著者',
'跑著书' => '跑著书',
'跑著作' => '跑著作',
'跑著名' => '跑著名',
-'跑著录' => '跑著录',
'跑著錄' => '跑著录',
+'跑著录' => '跑著录',
'跑著稱' => '跑著称',
'跑著称' => '跑著称',
'跑著者' => '跑著者',
'跟著名' => '跟著名',
'跟著录' => '跟著录',
'跟著錄' => '跟著录',
-'跟著称' => '跟著称',
'跟著稱' => '跟著称',
+'跟著称' => '跟著称',
'跟著者' => '跟著者',
'跟著述' => '跟著述',
'跪著' => '跪着',
-'跪著書' => '跪著书',
'跪著书' => '跪著书',
+'跪著書' => '跪著书',
'跪著作' => '跪著作',
'跪著名' => '跪著名',
-'跪著錄' => '跪著录',
'跪著录' => '跪著录',
+'跪著錄' => '跪著录',
'跪著稱' => '跪著称',
'跪著称' => '跪著称',
'跪著者' => '跪著者',
'跪著述' => '跪著述',
'跳著' => '跳着',
-'跳著书' => '跳著书',
'跳著書' => '跳著书',
+'跳著书' => '跳著书',
'跳著作' => '跳著作',
'跳著名' => '跳著名',
-'跳著录' => '跳著录',
'跳著錄' => '跳著录',
+'跳著录' => '跳著录',
'跳著称' => '跳著称',
'跳著稱' => '跳著称',
'跳著者' => '跳著者',
'踏著名' => '踏著名',
'踏著錄' => '踏著录',
'踏著录' => '踏著录',
-'踏著称' => '踏著称',
'踏著稱' => '踏著称',
+'踏著称' => '踏著称',
'踏著者' => '踏著者',
'踏著述' => '踏著述',
'踩著' => '踩着',
-'踩著书' => '踩著书',
'踩著書' => '踩著书',
+'踩著书' => '踩著书',
'踩著作' => '踩著作',
'踩著名' => '踩著名',
'踩著录' => '踩著录',
'踩著者' => '踩著者',
'踩著述' => '踩著述',
'身著' => '身着',
-'身著书' => '身著书',
'身著書' => '身著书',
+'身著书' => '身著书',
'身著作' => '身著作',
'身著名' => '身著名',
-'身著录' => '身著录',
'身著錄' => '身著录',
+'身著录' => '身著录',
'身著稱' => '身著称',
'身著称' => '身著称',
'身著者' => '身著者',
'躺著名' => '躺著名',
'躺著錄' => '躺著录',
'躺著录' => '躺著录',
-'躺著称' => '躺著称',
'躺著稱' => '躺著称',
+'躺著称' => '躺著称',
'躺著者' => '躺著者',
'躺著述' => '躺著述',
'轉著' => '转着',
'連著述' => '连著述',
'迫著' => '迫着',
'追著' => '追着',
-'追著書' => '追著书',
'追著书' => '追著书',
+'追著書' => '追著书',
'追著作' => '追著作',
'追著名' => '追著名',
-'追著錄' => '追著录',
'追著录' => '追著录',
+'追著錄' => '追著录',
'追著称' => '追著称',
'追著稱' => '追著称',
'追著者' => '追著者',
'追著述' => '追著述',
'逆著' => '逆着',
-'逆著書' => '逆著书',
'逆著书' => '逆著书',
+'逆著書' => '逆著书',
'逆著作' => '逆著作',
'逆著名' => '逆著名',
-'逆著錄' => '逆著录',
'逆著录' => '逆著录',
-'逆著称' => '逆著称',
+'逆著錄' => '逆著录',
'逆著稱' => '逆著称',
+'逆著称' => '逆著称',
'逆著者' => '逆著者',
'逆著述' => '逆著述',
'逼著' => '逼着',
-'逼著書' => '逼著书',
'逼著书' => '逼著书',
+'逼著書' => '逼著书',
'逼著作' => '逼著作',
'逼著名' => '逼著名',
-'逼著錄' => '逼著录',
'逼著录' => '逼著录',
+'逼著錄' => '逼著录',
'逼著称' => '逼著称',
'逼著稱' => '逼著称',
'逼著者' => '逼著者',
'配著名' => '配著名',
'配著錄' => '配著录',
'配著录' => '配著录',
-'配著稱' => '配著称',
'配著称' => '配著称',
+'配著稱' => '配著称',
'配著者' => '配著者',
'配著述' => '配著述',
'釀著' => '酿着',
'釀著稱' => '酿著称',
'釀著者' => '酿著者',
'釀著述' => '酿著述',
-'醯壺' => '醯壶',
'醯壶' => '醯壶',
+'醯壺' => '醯壶',
'醯醬' => '醯酱',
'醯酱' => '醯酱',
'醯醋' => '醯醋',
'醯醢' => '醯醢',
-'醯鸡' => '醯鸡',
'醯雞' => '醯鸡',
+'醯鸡' => '醯鸡',
'重覆' => '重复',
'金鍊' => '金链',
'鐵鍊' => '铁链',
'聞得著' => '闻得着',
'聞著' => '闻着',
'阳为乾' => '阳为乾',
-'陽爲乾' => '阳为乾',
'陽為乾' => '阳为乾',
+'陽爲乾' => '阳为乾',
'阿部正瞭' => '阿部正瞭',
'附著' => '附着',
'附睪' => '附睾',
'附著書' => '附著书',
'附著作' => '附著作',
'附著名' => '附著名',
-'附著錄' => '附著录',
'附著录' => '附著录',
+'附著錄' => '附著录',
'附著称' => '附著称',
'附著稱' => '附著称',
'附著者' => '附著者',
'附著述' => '附著述',
-'陈乾生' => '陈乾生',
'陳乾生' => '陈乾生',
-'陈公乾生' => '陈公乾生',
+'陈乾生' => '陈乾生',
'陳公乾生' => '陈公乾生',
+'陈公乾生' => '陈公乾生',
'陋著' => '陋着',
-'陋著書' => '陋著书',
'陋著书' => '陋著书',
+'陋著書' => '陋著书',
'陋著作' => '陋著作',
'陋著名' => '陋著名',
-'陋著錄' => '陋著录',
'陋著录' => '陋著录',
-'陋著称' => '陋著称',
+'陋著錄' => '陋著录',
'陋著稱' => '陋著称',
+'陋著称' => '陋著称',
'陋著者' => '陋著者',
'陋著述' => '陋著述',
'陪著' => '陪着',
-'陪著书' => '陪著书',
'陪著書' => '陪著书',
+'陪著书' => '陪著书',
'陪著作' => '陪著作',
'陪著名' => '陪著名',
-'陪著录' => '陪著录',
'陪著錄' => '陪著录',
-'陪著称' => '陪著称',
+'陪著录' => '陪著录',
'陪著稱' => '陪著称',
+'陪著称' => '陪著称',
'陪著者' => '陪著者',
'陪著述' => '陪著述',
'陳堵' => '陳堵',
'隨著者' => '随著者',
'隨著述' => '随著述',
'隔著' => '隔着',
-'隔著书' => '隔著书',
'隔著書' => '隔著书',
+'隔著书' => '隔著书',
'隔著作' => '隔著作',
'隔著名' => '隔著名',
-'隔著录' => '隔著录',
'隔著錄' => '隔著录',
+'隔著录' => '隔著录',
'隔著称' => '隔著称',
'隔著稱' => '隔著称',
'隔著者' => '隔著者',
'隔著述' => '隔著述',
'隱睪' => '隱睾',
'雅著' => '雅着',
-'雅著书' => '雅著书',
'雅著書' => '雅著书',
+'雅著书' => '雅著书',
'雅著作' => '雅著作',
'雅著名' => '雅著名',
-'雅著录' => '雅著录',
'雅著錄' => '雅著录',
-'雅著称' => '雅著称',
+'雅著录' => '雅著录',
'雅著稱' => '雅著称',
+'雅著称' => '雅著称',
'雅著者' => '雅著者',
'雅著述' => '雅著述',
'雍乾' => '雍乾',
'靠著名' => '靠著名',
'靠著錄' => '靠著录',
'靠著录' => '靠著录',
-'靠著稱' => '靠著称',
'靠著称' => '靠著称',
+'靠著稱' => '靠著称',
'靠著者' => '靠著者',
'靠著述' => '靠著述',
'頂著' => '顶着',
'高著者' => '高著者',
'高著述' => '高著述',
'髭著' => '髭着',
-'髭著书' => '髭著书',
'髭著書' => '髭著书',
+'髭著书' => '髭著书',
'髭著作' => '髭著作',
'髭著名' => '髭著名',
'髭著錄' => '髭著录',
'魏徵' => '魏徵',
'魚乾乾' => '鱼干干',
'麯崇裕' => '麯崇裕',
-'麴義' => '麴义',
'麴义' => '麴义',
+'麴義' => '麴义',
'麴英' => '麴英',
'麽氏' => '麽氏',
-'麽麽' => '麽麽',
'麼麼' => '麽麽',
+'麽麽' => '麽麽',
'黄润乾' => '黄润乾',
'黃潤乾' => '黄润乾',
'黏著' => '黏着',
-'黏著书' => '黏著书',
'黏著書' => '黏著书',
+'黏著书' => '黏著书',
'黏著作' => '黏著作',
'黏著名' => '黏著名',
'黏著录' => '黏著录',
'”' => '」',
'‘' => '『',
'’' => '』',
-'三極管' => '三極體',
'三极管' => '三極體',
+'三極管' => '三極體',
'世界裏' => '世界裡',
'中文裏' => '中文裡',
'串行' => '串列',
'串列加速器' => '串列加速器',
'以太网' => '乙太網',
'奶酪' => '乳酪',
-'二極管' => '二極體',
'二极管' => '二極體',
+'二極管' => '二極體',
'交互式' => '互動式',
'阿塞拜疆' => '亞塞拜然',
'人工智能' => '人工智慧',
'接口' => '介面',
'服务器' => '伺服器',
-'字節' => '位元組',
'字节' => '位元組',
+'字節' => '位元組',
'作品裏' => '作品裡',
'信道' => '信道',
'优先级' => '優先順序',
'冬日裏' => '冬日裡',
'凉菜' => '冷盤',
'冷菜' => '冷盤',
-'凶器' => '凶器',
'兇器' => '凶器',
-'å\87¶å¾\92' => 'å\87¶å¾\92',
+'å\87¶å\99¨' => 'å\87¶å\99¨',
'兇徒' => '凶徒',
+'凶徒' => '凶徒',
'兇手' => '凶手',
'凶手' => '凶手',
-'兇案' => '凶案',
'凶案' => '凶案',
-'å\87¶æ®\98' => 'å\87¶æ®\98',
+'å\85\87æ¡\88' => 'å\87¶æ¡\88',
'兇殘' => '凶殘',
+'凶殘' => '凶殘',
'凶残' => '凶殘',
'兇殺' => '凶殺',
-'凶杀' => '凶殺',
'凶殺' => '凶殺',
+'凶杀' => '凶殺',
'打印' => '列印',
'列支敦士登' => '列支敦斯登',
'剪彩' => '剪綵',
'特立尼達和多巴哥' => '千里達托貝哥',
'特立尼达和托巴哥' => '千里達托貝哥',
'半角' => '半形',
-'卡塔爾' => '卡達',
'卡塔尔' => '卡達',
-'打印機' => '印表機',
+'卡塔爾' => '卡達',
'打印机' => '印表機',
+'打印機' => '印表機',
'厄立特里亚' => '厄利垂亞',
'厄立特里亞' => '厄利垂亞',
'厄瓜多尔' => '厄瓜多',
'哈萨克斯坦' => '哈薩克',
'哥斯達黎加' => '哥斯大黎加',
'哥斯达黎加' => '哥斯大黎加',
-'格魯吉亞' => '喬治亞',
'格鲁吉亚' => '喬治亞',
-'佐治亚' => '喬治亞',
+'格魯吉亞' => '喬治亞',
'佐治亞' => '喬治亞',
+'佐治亚' => '喬治亞',
'嘴裏' => '嘴裡',
'土库曼斯坦' => '土庫曼',
'薯仔' => '土豆',
'土豆網' => '土豆網',
'土豆网' => '土豆網',
-'坦桑尼亚' => '坦尚尼亞',
'坦桑尼亞' => '坦尚尼亞',
+'坦桑尼亚' => '坦尚尼亞',
'端口' => '埠',
'塔吉克斯坦' => '塔吉克',
'塞舌尔' => '塞席爾',
'多明尼加國' => '多米尼克',
'穿梭機' => '太空梭',
'航天飞机' => '太空梭',
-'尼日利亚' => '奈及利亞',
'尼日利亞' => '奈及利亞',
+'尼日利亚' => '奈及利亞',
'字符' => '字元',
'字号' => '字型大小',
'字库' => '字型檔',
'字符集' => '字符集',
'存盘' => '存檔',
'學裏' => '學裡',
-'安提瓜和巴布達' => '安地卡及巴布達',
'安提瓜和巴布达' => '安地卡及巴布達',
+'安提瓜和巴布達' => '安地卡及巴布達',
'宋元' => '宋元',
'洪都拉斯' => '宏都拉斯',
'寻址' => '定址',
'寒假裏' => '寒假裡',
'宽带' => '寬頻',
-'老撾' => '寮國',
'老挝' => '寮國',
+'老撾' => '寮國',
'打门' => '射門',
'專輯裏' => '專輯裡',
-'贊比亞' => '尚比亞',
'赞比亚' => '尚比亞',
-'尼日爾' => '尼日',
+'贊比亞' => '尚比亞',
'尼日尔' => '尼日',
+'尼日爾' => '尼日',
'山洞裏' => '山洞裡',
'巴布亞新畿內亞' => '巴布亞紐幾內亞',
'巴布亚新几内亚' => '巴布亞紐幾內亞',
'巴巴多斯' => '巴貝多',
'布基纳法索' => '布吉納法索',
'布基納法索' => '布吉納法索',
-'布什' => '布希',
'布殊' => '布希',
+'布什' => '布希',
'帕劳' => '帛琉',
'例程' => '常式',
-'平治之乱' => '平治之亂',
'平治之亂' => '平治之亂',
+'平治之乱' => '平治之亂',
'年代裏' => '年代裡',
-'几内亚比绍' => '幾內亞比索',
'幾內亞比紹' => '幾內亞比索',
+'几内亚比绍' => '幾內亞比索',
'彩带' => '彩帶',
'彩排' => '彩排',
'彩楼' => '彩樓',
'彩牌楼' => '彩牌樓',
-'復蘇' => '復甦',
'复苏' => '復甦',
+'復蘇' => '復甦',
'心裏' => '心裡',
-'快闪存储器' => '快閃記憶體',
'闪存' => '快閃記憶體',
+'快闪存储器' => '快閃記憶體',
'想象' => '想像',
'传感' => '感測',
'习用' => '慣用',
'戏彩娱亲' => '戲綵娛親',
'戲裏' => '戲裡',
-'手电筒' => '手電筒',
'手电' => '手電筒',
+'手电筒' => '手電筒',
'括号' => '括弧',
-'拿破侖' => '拿破崙',
'拿破仑' => '拿破崙',
+'拿破侖' => '拿破崙',
'積架' => '捷豹',
'扫瞄仪' => '掃瞄器',
'挂钩' => '掛鉤',
'桌球' => '撞球',
'便携式' => '攜帶型',
'故事裏' => '故事裡',
-'调制解调器' => '數據機',
'調制解調器' => '數據機',
-'斯洛文尼亞' => '斯洛維尼亞',
+'调制解调器' => '數據機',
'斯洛文尼亚' => '斯洛維尼亞',
-'æ\96°çºªå\85\83' => 'æ\96°ç´\80å\85\83',
+'æ\96¯æ´\9bæ\96\87å°¼äº\9e' => 'æ\96¯æ´\9bç¶å°¼äº\9e',
'新紀元' => '新紀元',
+'新纪元' => '新紀元',
'日子裏' => '日子裡',
'春假裏' => '春假裡',
'春天裏' => '春天裡',
'乍得' => '查德',
'克林頓' => '柯林頓',
'克林顿' => '柯林頓',
-'格林納達' => '格瑞那達',
'格林纳达' => '格瑞那達',
+'格林納達' => '格瑞那達',
'凡高' => '梵谷',
'森林裏' => '森林裡',
'棺材裏' => '棺材裡',
-'榴蓮' => '榴槤',
'榴莲' => '榴槤',
+'榴蓮' => '榴槤',
'仿真' => '模擬',
'毛里裘斯' => '模里西斯',
'毛里求斯' => '模里西斯',
'元音' => '母音',
'永历' => '永曆',
'文莱' => '汶萊',
-'沙特阿拉伯' => '沙烏地阿拉伯',
'沙地阿拉伯' => '沙烏地阿拉伯',
-'æ³¢æ\96¯å°¼äº\9eé»\91å¡\9eå\93¥ç¶é\82£' => '波士尼äº\9e赫å¡\9eå\93¥ç¶ç´\8d',
+'æ²\99ç\89¹é\98¿æ\8b\89伯' => 'æ²\99ç\83\8få\9c°é\98¿æ\8b\89伯',
'波斯尼亚和黑塞哥维那' => '波士尼亞赫塞哥維納',
-'博茨瓦纳' => '波札那',
+'波斯尼亞黑塞哥維那' => '波士尼亞赫塞哥維納',
'博茨瓦納' => '波札那',
+'博茨瓦纳' => '波札那',
'流程控制' => '流程控制',
-'侯赛因' => '海珊',
'侯賽因' => '海珊',
+'侯赛因' => '海珊',
'深淵裏' => '深淵裡',
'光标' => '游標',
'鼠标' => '滑鼠',
'词组' => '片語',
'獄裏' => '獄裡',
'塞拉利昂' => '獅子山',
-'危地马拉' => '瓜地馬拉',
'危地馬拉' => '瓜地馬拉',
+'危地马拉' => '瓜地馬拉',
'冈比亚' => '甘比亞',
'岡比亞' => '甘比亞',
'疑兇' => '疑凶',
'疑凶' => '疑凶',
'百科裏' => '百科裡',
'皮裏陽秋' => '皮裡陽秋',
-'盧旺達' => '盧安達',
'卢旺达' => '盧安達',
-'ç\9c\9få\87¶' => 'ç\9c\9få\87¶',
+'ç\9b§æ\97ºé\81\94' => 'ç\9b§å®\89é\81\94',
'真兇' => '真凶',
+'真凶' => '真凶',
'眼睛裏' => '眼睛裡',
'硅片' => '矽片',
'硅谷' => '矽谷',
'蹦极跳' => '笨豬跳',
'绑紧跳' => '笨豬跳',
'等于' => '等於',
-'短訊' => '簡訊',
'短信' => '簡訊',
+'短訊' => '簡訊',
'系列裏' => '系列裡',
'新西蘭' => '紐西蘭',
'新西兰' => '紐西蘭',
-'所罗门群岛' => '索羅門群島',
'所羅門群島' => '索羅門群島',
-'索馬里' => '索馬利亞',
+'所罗门群岛' => '索羅門群島',
'索马里' => '索馬利亞',
+'索馬里' => '索馬利亞',
'结彩' => '結綵',
'佛得角' => '維德角',
'網絡' => '網路',
'网络' => '網路',
-'互聯網' => '網際網路',
'因特网' => '網際網路',
+'互聯網' => '網際網路',
'彩球' => '綵球',
'彩绸' => '綵綢',
'彩线' => '綵線',
'彩船' => '綵船',
'彩衣' => '綵衣',
'綫' => '線',
-'缉凶' => '緝凶',
'緝兇' => '緝凶',
+'缉凶' => '緝凶',
'緝凶' => '緝凶',
'意大利' => '義大利',
'老字号' => '老字號',
'圣基茨和尼维斯' => '聖克里斯多福及尼維斯',
'聖吉斯納域斯' => '聖克里斯多福及尼維斯',
-'聖文森特和格林納丁斯' => '聖文森及格瑞那丁',
'圣文森特和格林纳丁斯' => '聖文森及格瑞那丁',
+'聖文森特和格林納丁斯' => '聖文森及格瑞那丁',
'圣卢西亚' => '聖露西亞',
'聖盧西亞' => '聖露西亞',
'圣马力诺' => '聖馬利諾',
'聖馬力諾' => '聖馬利諾',
'肚裏' => '肚裡',
-'肯尼亚' => '肯亞',
'肯雅' => '肯亞',
+'肯尼亚' => '肯亞',
'航天大学' => '航天大學',
'苦裏' => '苦裡',
'毛里塔尼亚' => '茅利塔尼亞',
'万历' => '萬曆',
'瓦努阿图' => '萬那杜',
'瓦努阿圖' => '萬那杜',
-'也门' => '葉門',
'也門' => '葉門',
+'也门' => '葉門',
'着' => '著',
'科摩羅' => '葛摩',
'科摩罗' => '葛摩',
'圭亚那' => '蓋亞那',
'火锅盖帽' => '蓋火鍋',
'苏里南' => '蘇利南',
-'行凶' => '行凶',
'行兇' => '行凶',
-'行凶后' => '行凶後',
+'行凶' => '行凶',
'行兇後' => '行凶後',
'行凶後' => '行凶後',
-'流動電話' => '行動電話',
+'行凶后' => '行凶後',
'移动电话' => '行動電話',
+'流動電話' => '行動電話',
'行程控制' => '行程控制',
'衞' => '衛',
'卫生' => '衛生',
'衞生' => '衛生',
-'埃塞俄比亚' => '衣索比亞',
'埃塞俄比亞' => '衣索比亞',
+'埃塞俄比亚' => '衣索比亞',
'裏勾外連' => '裡勾外連',
'裏面' => '裡面',
'分辨率' => '解析度',
'瑙魯' => '諾魯',
'变量' => '變數',
'科特迪瓦' => '象牙海岸',
-'貝寧' => '貝南',
'贝宁' => '貝南',
+'貝寧' => '貝南',
'伯利茲' => '貝里斯',
'伯利兹' => '貝里斯',
'買兇' => '買凶',
-'买凶' => '買凶',
'買凶' => '買凶',
+'买凶' => '買凶',
'数据库' => '資料庫',
'信息论' => '資訊理論',
'奔驰' => '賓士',
'平治' => '賓士',
'利比里亚' => '賴比瑞亞',
'利比里亞' => '賴比瑞亞',
-'萊索托' => '賴索托',
'莱索托' => '賴索托',
+'萊索托' => '賴索托',
'软驱' => '軟碟機',
-'軟件' => '軟體',
'软件' => '軟體',
+'軟件' => '軟體',
'加载' => '載入',
-'津巴布韦' => '辛巴威',
'津巴布韋' => '辛巴威',
+'津巴布韦' => '辛巴威',
'词汇' => '辭彙',
-'加纳' => '迦納',
'加納' => '迦納',
-'追凶' => '追凶',
+'加纳' => '迦納',
'追兇' => '追凶',
+'追凶' => '追凶',
'這裏' => '這裡',
-'逞凶鬥狠' => '逞凶鬥狠',
'逞兇鬥狠' => '逞凶鬥狠',
'逞凶斗狠' => '逞凶鬥狠',
+'逞凶鬥狠' => '逞凶鬥狠',
'即食麵' => '速食麵',
-'方便面' => '速食麵',
'快速面' => '速食麵',
+'方便面' => '速食麵',
'连字号' => '連字號',
'进制' => '進位',
'入球' => '進球',
'鈎心鬥角' => '鉤心鬥角',
'锎' => '鉲',
'写保护' => '防寫',
-'阿拉伯联合酋长国' => '阿拉伯聯合大公國',
'阿拉伯聯合酋長國' => '阿拉伯聯合大公國',
+'阿拉伯联合酋长国' => '阿拉伯聯合大公國',
'噪声' => '雜訊',
'脱机' => '離線',
'雪裏紅' => '雪裡紅',
'异步' => '非同步',
'声卡' => '音效卡',
'缺省' => '預設',
-'颁布' => '頒布',
'頒佈' => '頒布',
+'颁布' => '頒布',
'領域裏' => '領域裡',
'头球' => '頭槌',
'粒入球' => '顆進球',
);
$zh2HK = array(
-'505線' => '505綫',
'505线' => '505綫',
-'507線' => '507綫',
+'505線' => '505綫',
'507线' => '507綫',
-'610線' => '610綫',
+'507線' => '507綫',
'610线' => '610綫',
+'610線' => '610綫',
'614P線' => '614P綫',
'614P线' => '614P綫',
-'614线' => '614綫',
'614線' => '614綫',
+'614线' => '614綫',
'615P線' => '615P綫',
'615P线' => '615P綫',
'615线' => '615綫',
'615線' => '615綫',
-'705线' => '705綫',
'705線' => '705綫',
-'706线' => '706綫',
+'705线' => '705綫',
'706線' => '706綫',
+'706线' => '706綫',
'751P線' => '751P綫',
'751P线' => '751P綫',
-'751線' => '751綫',
'751线' => '751綫',
-'761P线' => '761P綫',
+'751線' => '751綫',
'761P線' => '761P綫',
+'761P线' => '761P綫',
'“' => '「',
'”' => '」',
'‘' => '『',
'乘著錄' => '乘著錄',
'葉門' => '也門',
'二極體' => '二極管',
-'網際網路' => '互聯網',
'因特网' => '互聯網',
+'網際網路' => '互聯網',
'亮著' => '亮着',
'亮著作' => '亮著作',
'亮著名' => '亮著名',
'住著述' => '住著述',
'住著錄' => '住著錄',
'維德角' => '佛得角',
-'作品裡' => '作品裏',
'作品里' => '作品裏',
+'作品裡' => '作品裏',
'來著' => '來着',
'來著作' => '來著作',
'來著名' => '來著名',
'動著者' => '動著者',
'動著述' => '動著述',
'動著錄' => '動著錄',
-'北环线' => '北環綫',
'北環線' => '北環綫',
+'北环线' => '北環綫',
'医院里' => '医院裏',
'波札那' => '博茨瓦納',
'珍妮弗·卡普里亚蒂' => '卡佩雅蒂',
'印著述' => '印著述',
'印著錄' => '印著錄',
'瓜地馬拉' => '危地馬拉',
-'泡麵' => '即食麵',
'方便面' => '即食麵',
-'快速面' => '即食麵',
'速食麵' => '即食麵',
+'快速面' => '即食麵',
+'泡麵' => '即食麵',
'厄瓜多' => '厄瓜多爾',
-'厄瓜多爾' => '厄瓜多爾',
'厄瓜多尔' => '厄瓜多爾',
+'厄瓜多爾' => '厄瓜多爾',
'厄利垂亞' => '厄立特里亞',
'去著' => '去着',
'去著作' => '去著作',
'坐著述' => '坐著述',
'坐著錄' => '坐著錄',
'坦尚尼亞' => '坦桑尼亞',
-'衣索匹亞' => '埃塞俄比亞',
'衣索比亞' => '埃塞俄比亞',
+'衣索匹亞' => '埃塞俄比亞',
'吉里巴斯' => '基里巴斯',
'塞普勒斯' => '塞浦路斯',
'塞席爾' => '塞舌爾',
'壓著者' => '壓著者',
'壓著述' => '壓著述',
'壓著錄' => '壓著錄',
-'夏天里' => '夏天裏',
'夏天裡' => '夏天裏',
-'夏日里' => '夏日裏',
+'夏天里' => '夏天裏',
'夏日裡' => '夏日裏',
+'夏日里' => '夏日裏',
'夢著' => '夢着',
'夢著作' => '夢著作',
'夢著名' => '夢著名',
'定著述' => '定著述',
'定著錄' => '定著錄',
'沃尓沃' => '富豪',
-'寒假裡' => '寒假裏',
'寒假里' => '寒假裏',
+'寒假裡' => '寒假裏',
'寫著' => '寫着',
'寫著作' => '寫著作',
'寫著名' => '寫著名',
'寫著者' => '寫著者',
'寫著述' => '寫著述',
'寫著錄' => '寫著錄',
-'将军澳线' => '將軍澳綫',
'將軍澳線' => '將軍澳綫',
-'专辑里' => '專輯裏',
+'将军澳线' => '將軍澳綫',
'專輯裡' => '專輯裏',
+'专辑里' => '專輯裏',
'尋著' => '尋着',
'尋著作' => '尋著作',
'尋著名' => '尋著名',
'對著者' => '對著者',
'對著述' => '對著述',
'對著錄' => '對著錄',
-'奈及利亞' => '尼日利亞',
-'尼日利亚' => '尼日利亞',
'尼日利亞' => '尼日利亞',
-'å°¼æ\97¥å°\94' => 'å°¼æ\97¥ç\88¾',
-'å°¼æ\97¥ç\88¾' => 'å°¼æ\97¥ç\88¾',
+'å°¼æ\97¥å\88©äº\9a' => 'å°¼æ\97¥å\88©äº\9e',
+'å¥\88å\8f\8aå\88©äº\9e' => 'å°¼æ\97¥å\88©äº\9e',
'尼日' => '尼日爾',
+'尼日爾' => '尼日爾',
+'尼日尔' => '尼日爾',
'展著' => '展着',
'展著作' => '展著作',
'展著名' => '展著名',
'賓士' => '平治',
'年代里' => '年代裏',
'年代裡' => '年代裏',
-'幹著' => '幹着',
'干着' => '幹着',
+'幹著' => '幹着',
'幾內亞比索' => '幾內亞比紹',
'康著' => '康着',
'康著作' => '康著作',
'心著者' => '心著者',
'心著述' => '心著述',
'心著錄' => '心著錄',
-'心裡' => '心裏',
'心里' => '心裏',
+'心裡' => '心裏',
'忍著' => '忍着',
'忍著作' => '忍著作',
'忍著名' => '忍著名',
'戰著者' => '戰著者',
'戰著述' => '戰著述',
'戰著錄' => '戰著錄',
-'戲裡' => '戲裏',
'戏里' => '戲裏',
-'黛安娜' => '戴安娜',
+'戲裡' => '戲裏',
'狄安娜' => '戴安娜',
+'黛安娜' => '戴安娜',
'戴著' => '戴着',
'戴著作' => '戴著作',
'戴著名' => '戴著名',
'斯洛維尼亞' => '斯洛文尼亞',
'新著龍虎門' => '新著龍虎門',
'紐西蘭' => '新西蘭',
-'日子里' => '日子裏',
'日子裡' => '日子裏',
+'日子里' => '日子裏',
'昂著' => '昂着',
'昂著作' => '昂著作',
'昂著名' => '昂著名',
'映著者' => '映著者',
'映著述' => '映著述',
'映著錄' => '映著錄',
-'春假里' => '春假裏',
'春假裡' => '春假裏',
-'æ\98¥å¤©è£¡' => 'æ\98¥å¤©裏',
+'æ\98¥å\81\87é\87\8c' => 'æ\98¥å\81\87裏',
'春天里' => '春天裏',
-'春日裡' => '春日裏',
+'春天裡' => '春天裏',
'春日里' => '春日裏',
+'春日裡' => '春日裏',
'时间里' => '時間裏',
'時間裡' => '時間裏',
'晃著' => '晃着',
'晃著者' => '晃著者',
'晃著述' => '晃著述',
'晃著錄' => '晃著錄',
-'暑假里' => '暑假裏',
'暑假裡' => '暑假裏',
+'暑假里' => '暑假裏',
'暗著' => '暗着',
'暗著作' => '暗著作',
'暗著名' => '暗著名',
'村子裡' => '村子裏',
'东涌线' => '東涌綫',
'東涌線' => '東涌綫',
-'東鐵線' => '東鐵綫',
'东铁线' => '東鐵綫',
+'東鐵線' => '東鐵綫',
'枕著' => '枕着',
'枕著作' => '枕著作',
'枕著名' => '枕著名',
'梳著者' => '梳著者',
'梳著述' => '梳著述',
'梳著錄' => '梳著錄',
-'森林裡' => '森林裏',
'森林里' => '森林裏',
+'森林裡' => '森林裏',
'棺材裡' => '棺材裏',
'棺材里' => '棺材裏',
'榴蓮' => '榴槤',
'樂著錄' => '樂著錄',
'寶獅' => '標致',
'標誌著' => '標誌着',
-'機場快線' => '機場快綫',
'机场快线' => '機場快綫',
+'機場快線' => '機場快綫',
'機器人' => '機械人',
'机器人' => '機械人',
'历史里' => '歷史裏',
'沉著者' => '沉著者',
'沉著述' => '沉著述',
'沉著錄' => '沉著錄',
-'沙中线' => '沙中綫',
'沙中線' => '沙中綫',
+'沙中线' => '沙中綫',
'沙地阿拉伯' => '沙特阿拉伯',
'沙烏地阿拉伯' => '沙特阿拉伯',
-'沙田至中環線' => '沙田至中環綫',
'沙田至中环线' => '沙田至中環綫',
+'沙田至中環線' => '沙田至中環綫',
'马拉特·萨芬' => '沙芬',
'沿著' => '沿着',
'沿著作' => '沿著作',
'活著者' => '活著者',
'活著述' => '活著述',
'活著錄' => '活著錄',
-'行動電話' => '流動電話',
'移动电话' => '流動電話',
+'行動電話' => '流動電話',
'流著' => '流着',
'流著作' => '流著作',
'流著名' => '流著名',
'无线剧集' => '無綫劇集',
'無線收費' => '無綫收費',
'无线收费' => '無綫收費',
-'无线节目' => '無綫節目',
'無線節目' => '無綫節目',
-'无线电视' => '無綫電視',
+'无线节目' => '無綫節目',
'無線電視' => '無綫電視',
+'无线电视' => '無綫電視',
'菸' => '煙',
'照著' => '照着',
'照著作' => '照著作',
'猜著者' => '猜著者',
'猜著述' => '猜著述',
'猜著錄' => '猜著錄',
-'狱里' => '獄裏',
'獄裡' => '獄裏',
+'狱里' => '獄裏',
'獨著' => '獨着',
'獨著作' => '獨著作',
'獨著名' => '獨著名',
'疑著錄' => '疑著錄',
'发布' => '發佈',
'發布' => '發佈',
-'百科裡' => '百科裏',
'百科里' => '百科裏',
+'百科裡' => '百科裏',
'計程車' => '的士',
'出租车' => '的士',
-'皮里阳秋' => '皮裏陽秋',
'皮裡陽秋' => '皮裏陽秋',
+'皮里阳秋' => '皮裏陽秋',
'皺著' => '皺着',
'皺著作' => '皺著作',
'皺著名' => '皺著名',
'瞪著錄' => '瞪著錄',
'簡訊' => '短訊',
'短信' => '短訊',
-'硬件' => '硬件',
'硬體' => '硬件',
+'硬件' => '硬件',
'福斯' => '福士',
'福著' => '福着',
'福著作' => '福著作',
'福著者' => '福著者',
'福著述' => '福著述',
'福著錄' => '福著錄',
-'秋假裡' => '秋假裏',
'秋假里' => '秋假裏',
-'ç§\8b天裡' => 'ç§\8b天裏',
+'ç§\8bå\81\87裡' => 'ç§\8bå\81\87裏',
'秋天里' => '秋天裏',
-'秋日里' => '秋日裏',
+'秋天裡' => '秋天裏',
'秋日裡' => '秋日裏',
+'秋日里' => '秋日裏',
'葛摩' => '科摩羅',
'捷豹' => '積架',
'空著' => '空着',
'空著者' => '空著者',
'空著述' => '空著述',
'空著錄' => '空著錄',
-'太空梭' => '穿梭機',
'航天飞机' => '穿梭機',
+'太空梭' => '穿梭機',
'穿著' => '穿着',
'穿著作' => '穿著作',
'穿著名' => '穿著名',
'考著者' => '考著者',
'考著述' => '考著述',
'考著錄' => '考著錄',
-'圣基茨和尼维斯' => '聖吉斯納域斯',
'聖克里斯多福及尼維斯' => '聖吉斯納域斯',
+'圣基茨和尼维斯' => '聖吉斯納域斯',
'聖文森及格瑞那丁' => '聖文森特和格林納丁斯',
'聖露西亞' => '聖盧西亞',
'聖馬利諾' => '聖馬力諾',
'聽著錄' => '聽著錄',
'肚里' => '肚裏',
'肚裡' => '肚裏',
-'肯尼亚' => '肯雅',
'肯亞' => '肯雅',
+'肯尼亚' => '肯雅',
'背著' => '背着',
'背著作' => '背著作',
'背著名' => '背著名',
'苦著錄' => '苦著錄',
'苦里' => '苦裏',
'苦裡' => '苦裏',
-'荃湾线' => '荃灣綫',
'荃灣線' => '荃灣綫',
+'荃湾线' => '荃灣綫',
'莫三比克' => '莫桑比克',
'賴索托' => '萊索托',
'馬自達' => '萬事得',
'衣著錄' => '衣著錄',
'裡勾外連' => '裏勾外連',
'里勾外连' => '裏勾外連',
-'里面' => '裏面',
'裡面' => '裏面',
+'里面' => '裏面',
'裝著' => '裝着',
'裝著作' => '裝著作',
'裝著名' => '裝著名',
'裹著者' => '裹著者',
'裹著述' => '裹著述',
'裹著錄' => '裹著錄',
-'西铁线' => '西鐵綫',
'西鐵線' => '西鐵綫',
+'西铁线' => '西鐵綫',
'見著' => '見着',
'見著作' => '見著作',
'見著名' => '見著名',
'辦著錄' => '辦著錄',
'近角聪信' => '近角聰信',
'近角聰信' => '近角聰信',
-'迪士尼线' => '迪士尼綫',
'迪士尼線' => '迪士尼綫',
+'迪士尼线' => '迪士尼綫',
'迫著' => '迫着',
'追著' => '追着',
'追著作' => '追著作',
'醯醢' => '醯醢',
'醯醬' => '醯醬',
'醯酱' => '醯醬',
-'醯鸡' => '醯雞',
'醯雞' => '醯雞',
+'醯鸡' => '醯雞',
'釀著' => '釀着',
'釀著作' => '釀著作',
'釀著名' => '釀著名',
'雜著述' => '雜著述',
'雜著錄' => '雜著錄',
'冰淇淋' => '雪糕',
-'雪里红' => '雪裏紅',
'雪裡紅' => '雪裏紅',
+'雪里红' => '雪裏紅',
'雪裡蕻' => '雪裏蕻',
'雪里蕻' => '雪裏蕻',
'靠著' => '靠着',
'靠著作' => '靠著作',
'靠著名' => '靠著名',
-'靠著稱' => '靠著稱',
'靠著称' => '靠著稱',
+'靠著稱' => '靠著稱',
'靠著者' => '靠著者',
'靠著述' => '靠著述',
'靠著錄' => '靠著錄',
'順著者' => '順著者',
'順著述' => '順著述',
'順著錄' => '順著錄',
-'頒布' => '頒佈',
'颁布' => '頒佈',
-'é \98å\9f\9f裡' => 'é \98å\9f\9fè£\8f',
+'é \92å¸\83' => 'é \92ä½\88',
'领域里' => '領域裏',
+'領域裡' => '領域裏',
'領著' => '領着',
'領著作' => '領著作',
'領著名' => '領著名',
'飄著者' => '飄著者',
'飄著述' => '飄著述',
'飄著錄' => '飄著錄',
-'館裡' => '館裏',
'馆里' => '館裏',
+'館裡' => '館裏',
'馬爾地夫' => '馬爾代夫',
'馬利共和國' => '馬里共和國',
'土豆' => '馬鈴薯',
'點著者' => '點著者',
'點著述' => '點著述',
'點著錄' => '點著錄',
-'點裡' => '點裏',
'点里' => '點裏',
+'點裡' => '點裏',
);
$zh2CN = array(
'互聯網' => '互联网',
'互動式' => '交互式',
'人工智慧' => '人工智能',
-'甚麽' => '什么',
'甚麼' => '什么',
+'甚麽' => '什么',
'乙太網' => '以太网',
'優先順序' => '优先级',
'感測' => '传感',
'华乐街' => '华乐街',
'波札那' => '博茨瓦纳',
'盧安達' => '卢旺达',
-'衞生' => '卫生',
'衛生' => '卫生',
+'衞生' => '卫生',
'瓜地馬拉' => '危地马拉',
'厄瓜多' => '厄瓜多尔',
-'厄瓜多爾' => '厄瓜多尔',
'厄瓜多尔' => '厄瓜多尔',
+'厄瓜多爾' => '厄瓜多尔',
'厄利垂亞' => '厄立特里亚',
'變數' => '变量',
-'撞球' => '台球',
'桌球' => '台球',
+'撞球' => '台球',
'吉布地' => '吉布提',
'哈薩克' => '哈萨克斯坦',
'哥斯大黎加' => '哥斯达黎加',
'吐瓦魯' => '图瓦卢',
'土庫曼' => '土库曼斯坦',
'聖露西亞' => '圣卢西亚',
-'聖吉斯納域斯' => '圣基茨和尼维斯',
'聖克里斯多福及尼維斯' => '圣基茨和尼维斯',
+'聖吉斯納域斯' => '圣基茨和尼维斯',
'聖文森及格瑞那丁' => '圣文森特和格林纳丁斯',
'聖馬利諾' => '圣马力诺',
'蓋亞那' => '圭亚那',
'福斯' => '大众',
'大衛碧咸' => '大卫·贝克汉姆',
'頭槌' => '头球',
-'賓士' => '奔驰',
'平治' => '奔驰',
+'賓士' => '奔驰',
'忌廉' => '奶油',
-'字元会' => '字元会',
'字元會' => '字元会',
+'字元会' => '字元会',
'字元濟' => '字元济',
'字元济' => '字元济',
'字型大小' => '字号',
'欄位' => '字段',
'字母' => '字母',
'字元' => '字符',
-'字節' => '字节',
'位元組' => '字节',
+'字節' => '字节',
'存檔' => '存盘',
'安地卡及巴布達' => '安提瓜和巴布达',
'巨集' => '宏',
'寬頻' => '宽带',
'定址' => '寻址',
-'奈及利亞' => '尼日利亚',
'尼日利亞' => '尼日利亚',
'尼日利亚' => '尼日利亚',
-'å°¼æ\97¥ç\88¾' => 'å°¼æ\97¥å°\94',
+'å¥\88å\8f\8aå\88©äº\9e' => 'å°¼æ\97¥å\88©äº\9a',
'尼日尔' => '尼日尔',
+'尼日爾' => '尼日尔',
'章節附註' => '尾注',
'區域網' => '局域网',
'巴貝多' => '巴巴多斯',
'蒲隆地' => '布隆迪',
'希特拉' => '希特勒',
'帛琉' => '帕劳',
-'平治之乱' => '平治之乱',
'平治之亂' => '平治之乱',
+'平治之乱' => '平治之乱',
'非同步' => '异步',
'迴圈' => '循环',
'快閃記憶體' => '快闪存储器',
'索羅門群島' => '所罗门群岛',
'打印' => '打印',
'列印' => '打印',
-'印表機' => '打印机',
'打印機' => '打印机',
+'印表機' => '打印机',
'射門' => '打门',
'掃瞄器' => '扫瞄仪',
'括弧' => '括号',
'斯洛維尼亞' => '斯洛文尼亚',
'紐西蘭' => '新西兰',
'即食麵' => '方便面',
+'速食麵' => '方便面',
'快速面' => '方便面',
'泡麵' => '方便面',
-'速食麵' => '方便面',
'伺服器' => '服务器',
-'機械人' => '机器人',
'機器人' => '机器人',
+'機械人' => '机器人',
'許可權' => '权限',
'寶獅' => '标志',
'格瑞那達' => '格林纳达',
'狗隻' => '犬只',
'卡佩雅蒂' => '珍妮弗·卡普里亚蒂',
'諾魯' => '瑙鲁',
-'萬那杜' => '瓦努阿图',
'溫納圖' => '瓦努阿图',
+'萬那杜' => '瓦努阿图',
'碟片' => '盘片',
-'短訊' => '短信',
'簡訊' => '短信',
-'ç\9f½å°\98' => 'ç\9f½å°\98',
+'ç\9fè¨\8a' => 'ç\9fä¿¡',
'矽塵' => '矽尘',
+'矽尘' => '矽尘',
'矽肺' => '矽肺',
-'矽钢' => '矽钢',
'矽鋼' => '矽钢',
+'矽钢' => '矽钢',
'矽' => '硅',
'矽片' => '硅片',
'矽谷' => '硅谷',
'磁軌' => '磁道',
'葛摩' => '科摩罗',
'象牙海岸' => '科特迪瓦',
-'行動電話' => '移动电话',
'流動電話' => '移动电话',
+'行動電話' => '移动电话',
'程式控制' => '程控',
'突尼西亞' => '突尼斯',
'谐星' => '笑星',
'網路' => '网络',
'網絡' => '网络',
'寮國' => '老挝',
-'肯雅' => '肯尼亚',
'肯亞' => '肯尼亚',
+'肯雅' => '肯尼亚',
'單車' => '自行车',
-'太空梭' => '航天飞机',
'穿梭機' => '航天飞机',
+'太空梭' => '航天飞机',
'節慶' => '节日',
'晶元' => '芯片',
'晶片' => '芯片',
'尚比亞' => '赞比亚',
'绑紧跳' => '蹦极跳',
'笨豬跳' => '蹦极跳',
-'軟體' => '软件',
'軟件' => '软件',
+'軟體' => '软件',
'軟碟機' => '软驱',
'米高奧雲' => '迈克尔·欧文',
'舒麥加' => '迈克尔·舒马赫',
'民乐' => '华乐',
'夜校' => '夜学',
'房价' => '屋价',
-'即食麵' => '快速面',
-'速食麵' => '快速面',
'泡麵' => '快速面',
+'速食麵' => '快速面',
'方便面' => '快速面',
-'零钱' => '散钱',
+'即食麵' => '快速面',
'散紙' => '散钱',
+'零钱' => '散钱',
'榴莲' => '榴梿',
'榴蓮' => '榴梿',
-'笨豬跳' => '绑紧跳',
'蹦极跳' => '绑紧跳',
+'笨豬跳' => '绑紧跳',
'笑星' => '谐星',
);
}
$request = $this->getRequest();
+ /** @var RSSFeed|AtomFeed $feed */
$feed = new $wgFeedClasses[$type](
$this->getTitle()->getPrefixedText() . ' - ' .
$this->msg( 'history-feed-title' )->inContentLanguage()->text(),
* @return array
*/
protected function pageInfo() {
- global $wgContLang, $wgRCMaxAge, $wgMemc,
+ global $wgContLang, $wgRCMaxAge, $wgMemc, $wgMiserMode,
$wgUnwatchedPageThreshold, $wgPageInfoTransclusionLimit;
$user = $this->getUser();
) {
$options = array( 'LIMIT' => $wgPageInfoTransclusionLimit );
$transcludedTemplates = $title->getTemplateLinksFrom( $options );
- $transcludedTargets = $title->getTemplateLinksTo( $options );
+ if ( $wgMiserMode ) {
+ $transcludedTargets = array();
+ } else {
+ $transcludedTargets = $title->getTemplateLinksTo( $options );
+ }
// Page properties
$pageInfo['header-properties'] = array();
);
}
- if ( $pageCounts['transclusion']['to'] > 0 ) {
+ if ( !$wgMiserMode && $pageCounts['transclusion']['to'] > 0 ) {
if ( $pageCounts['transclusion']['to'] > count( $transcludedTargets ) ) {
$more = Linker::link(
$whatLinksHere,
* @return array
*/
protected static function pageCounts( Title $title ) {
- global $wgRCMaxAge, $wgDisableCounters;
+ global $wgRCMaxAge, $wgDisableCounters, $wgMiserMode;
wfProfileIn( __METHOD__ );
$id = $title->getArticleID();
}
// Counts for the number of transclusion links (to/from)
- $result['transclusion']['to'] = (int)$dbr->selectField(
- 'templatelinks',
- 'COUNT(tl_from)',
- array(
- 'tl_namespace' => $title->getNamespace(),
- 'tl_title' => $title->getDBkey()
- ),
- __METHOD__
- );
+ if ( $wgMiserMode ) {
+ $result['transclusion']['to'] = 0;
+ } else {
+ $result['transclusion']['to'] = (int)$dbr->selectField(
+ 'templatelinks',
+ 'COUNT(tl_from)',
+ array(
+ 'tl_namespace' => $title->getNamespace(),
+ 'tl_title' => $title->getDBkey()
+ ),
+ __METHOD__
+ );
+ }
$result['transclusion']['from'] = (int)$dbr->selectField(
'templatelinks',
$contentType = $this->getContentType();
- # Force caching for CSS and JS raw content, default: 5 minutes
+ # Force caching for CSS and JS raw content, default: 5 minutes.
+ # Note: If using a canonical url for userpage css/js, we send an HTCP purge.
if ( $smaxage === null ) {
if ( $contentType == 'text/css' || $contentType == 'text/javascript' ) {
$smaxage = intval( $wgForcedRawSMaxage );
$this->getOutput()->addWikiMsgArray( $errMsg, $errArray );
if ( isset( $details['current'] ) ) {
+ /** @var Revision $current */
$current = $details['current'];
if ( $current->getComment() != '' ) {
throw new ErrorPageError( 'rollbackfailed', $error[0], array_slice( $error, 1 ) );
}
+ /** @var Revision $current */
$current = $details['current'];
$target = $details['target'];
$newId = $details['newid'];
);
}
+ /**
+ * Die if none of a certain set of parameters is set and not false.
+ *
+ * @since 1.23
+ * @param array $params User provided set of parameters
+ * @param string ... List of parameter names to check
+ */
+ public function requireAtLeastOneParameter( $params ) {
+ $required = func_get_args();
+ array_shift( $required );
+ $p = $this->getModulePrefix();
+
+ $intersection = array_intersect(
+ array_keys( array_filter( $params, array( $this, "parameterNotEmpty" ) ) ),
+ $required
+ );
+
+ if ( count( $intersection ) == 0 ) {
+ $this->dieUsage( "At least one of the parameters {$p}" .
+ implode( ", {$p}", $required ) . ' is required', "{$p}missingparam" );
+ }
+ }
+
+ /**
+ * Generates the possible errors requireAtLeastOneParameter() can die with
+ *
+ * @since 1.23
+ * @param $params array Array of parameter key names
+ * @return array
+ */
+ public function getRequireAtLeastOneParameterErrorMessages( $params ) {
+ $p = $this->getModulePrefix();
+ $params = implode( ", {$p}", $params );
+
+ return array(
+ array(
+ 'code' => "{$p}missingparam",
+ 'info' => "At least one of the parameters {$p}{$params} is required",
+ ),
+ );
+ }
+
/**
* @param $params array
* @param bool|string $load Whether load the object's state from the database:
return !is_null( $x ) && $x !== false;
}
- /**
- * @deprecated since 1.17 use MWNamespace::getValidNamespaces()
- *
- * @return array
- */
- public static function getValidNamespaces() {
- wfDeprecated( __METHOD__, '1.17' );
-
- return MWNamespace::getValidNamespaces();
- }
-
/**
* Return true if we're to watch the page, false if not, null if no change.
* @param string $watchlist Valid values: 'watch', 'unwatch', 'preferences', 'nochange'
$loginForm = new LoginForm();
$loginForm->setContext( $context );
+ wfRunHooks( 'AddNewAccountApiForm', array( $this, $loginForm ) );
$loginForm->load();
$status = $loginForm->addNewaccountInternal();
$result['result'] = 'success';
}
+ // Give extensions a chance to modify the API result data
+ wfRunHooks( 'AddNewAccountApiResult', array( $this, $loginForm, &$result ) );
+
$apiResult->addValue( null, 'createaccount', $result );
}
$feedItems = array();
if ( $pager->getNumRows() > 0 ) {
+ $count = 0;
+ $limit = $pager->getLimit();
foreach ( $pager->mResult as $row ) {
+ // ContribsPager selects one more row for navigation, skip that row
+ if ( ++$count > $limit ) {
+ break;
+ }
$feedItems[] = $this->feedItem( $row );
}
}
* @ingroup API
*/
class ApiFileRevert extends ApiBase {
-
- /**
- * @var File
- */
+ /** @var LocalFile */
protected $file;
+
+ /** @var string */
protected $archiveName;
+ /** @var array */
protected $params;
public function execute() {
} elseif ( is_array( $subElemValue ) ) {
$subElements[$subElemId] = $subElemValue;
unset( $elemValue[$subElemId] );
+ } elseif ( is_bool( $subElemValue ) ) {
+ // treat true as empty string, skip false in xml format
+ if ( $subElemValue === true ) {
+ $subElemValue = '';
+ } else {
+ unset( $elemValue[$subElemId] );
+ }
}
}
$this->mCacheMode = $mode;
}
- /**
- * @deprecated since 1.17 Private caching is now the default, so there is usually no
- * need to call this function. If there is a need, you can use
- * $this->setCacheMode('private')
- */
- public function setCachePrivate() {
- wfDeprecated( __METHOD__, '1.17' );
- $this->setCacheMode( 'private' );
- }
-
/**
* Set directives (key/value pairs) for the Cache-Control header.
* Boolean values will be formatted as such, by including or omitting
$this->mCacheControl = $directives + $this->mCacheControl;
}
- /**
- * Make sure Vary: Cookie and friends are set. Use this when the output of a request
- * may be cached for anons but may not be cached for logged-in users.
- *
- * WARNING: This function must be called CONSISTENTLY for a given URL. This means that a
- * given URL must either always or never call this function; if it sometimes does and
- * sometimes doesn't, stuff will break.
- *
- * @deprecated since 1.17 Use setCacheMode( 'anon-public-user-private' )
- */
- public function setVaryCookie() {
- wfDeprecated( __METHOD__, '1.17' );
- $this->setCacheMode( 'anon-public-user-private' );
- }
-
/**
* Create an instance of an output formatter by its name
*
}
}
+ /**
+ * Check asserts of the user's rights
+ * @param $params array
+ */
+ protected function checkAsserts( $params ) {
+ if ( isset( $params['assert'] ) ) {
+ $user = $this->getUser();
+ switch ( $params['assert'] ) {
+ case 'user':
+ if ( $user->isAnon() ) {
+ $this->dieUsage( 'Assertion that the user is logged in failed', 'assertuserfailed' );
+ }
+ break;
+ case 'bot':
+ if ( !$user->isAllowed( 'bot' ) ) {
+ $this->dieUsage( 'Assertion that the user has the bot right failed', 'assertbotfailed' );
+ }
+ break;
+ }
+ }
+ }
+
/**
* Check POST for external response and setup result printer
* @param $module ApiBase An Api module
$this->setupExternalResponse( $module, $params );
}
+ $this->checkAsserts( $params );
+
// Execute
$module->profileIn();
$module->execute();
ApiBase::PARAM_TYPE => 'integer',
ApiBase::PARAM_DFLT => 0
),
+ 'assert' => array(
+ ApiBase::PARAM_TYPE => array( 'user', 'bot' )
+ ),
'requestid' => null,
'servedby' => false,
'origin' => null,
),
'smaxage' => 'Set the s-maxage header to this many seconds. Errors are never cached',
'maxage' => 'Set the max-age header to this many seconds. Errors are never cached',
+ 'assert' => 'Verify the user is logged in if set to "user", or has the bot userright if "bot"',
'requestid' => 'Request ID to distinguish requests. This will just be output back to you',
'servedby' => 'Include the hostname that served the request in the ' .
'results. Unconditionally shown on error',
array( 'code' => 'unknown_action', 'info' => 'The API requires a valid action parameter' ),
array( 'code' => 'maxlag', 'info' => 'Waiting for host: x seconds lagged' ),
array( 'code' => 'maxlag', 'info' => 'Waiting for a database server: x seconds lagged' ),
+ array( 'code' => 'assertuserfailed', 'info' => 'Assertion that the user is logged in failed' ),
+ array( 'code' => 'assertbotfailed', 'info' => 'Assertion that the user has the bot right failed' ),
) );
}
/**
* All Title objects provided.
- * @return array of Title objects
+ * @return Title[]
*/
public function getTitles() {
return $this->mTitles;
/**
* Title objects that were found in the database.
- * @return array page_id (int) => Title (obj)
+ * @return Title[] Array page_id (int) => Title (obj)
*/
public function getGoodTitles() {
return $this->mGoodTitles;
/**
* Title objects that were NOT found in the database.
* The array's index will be negative for each item
- * @return array of Title objects
+ * @return Title[]
*/
public function getMissingTitles() {
return $this->mMissingTitles;
/**
* Titles that were deemed invalid by Title::newFromText()
* The array's index will be unique and negative for each item
- * @return array of strings (not Title objects)
+ * @return string[] Array of strings (not Title objects)
*/
public function getInvalidTitles() {
return $this->mInvalidTitles;
'from' => strval( $titleStrFrom ),
'to' => $titleTo->getPrefixedText(),
);
- if ( $titleTo->getFragment() !== '' ) {
+ if ( $titleTo->hasFragment() ) {
$r['tofragment'] = $titleTo->getFragment();
}
$values[] = $r;
if ( !$titleObj || $titleObj->isExternal() ) {
$this->dieUsageMsg( array( 'invalidtitle', $title ) );
}
- if ( !$titleObj->canExist() ) {
- $this->dieUsage( "Namespace doesn't allow actual pages", 'pagecannotexist' );
- }
$wgTitle = $titleObj;
- $pageObj = WikiPage::factory( $titleObj );
+ if ( $titleObj->canExist() ) {
+ $pageObj = WikiPage::factory( $titleObj );
+ } else {
+ // Do like MediaWiki::initializeArticle()
+ $article = Article::newFromTitle( $titleObj, $this->getContext() );
+ $pageObj = $article->getPage();
+ }
$popts = $this->makeParserOptions( $pageObj, $params );
'code' => 'notwikitext',
'info' => 'The requested operation is only supported on wikitext content.'
),
- array( 'code' => 'pagecannotexist', 'info' => "Namespace doesn't allow actual pages" ),
) );
}
private static $QueryPropModules = array(
'categories' => 'ApiQueryCategories',
'categoryinfo' => 'ApiQueryCategoryInfo',
+ 'contributors' => 'ApiQueryContributors',
'duplicatefiles' => 'ApiQueryDuplicateFiles',
'extlinks' => 'ApiQueryExternalLinks',
'images' => 'ApiQueryImages',
if ( !$t ) {
$this->dieUsageMsg( array( 'invalidtitle', $titlePart ) );
}
- if ( $defaultNamespace != $t->getNamespace() || $t->getInterwiki() !== '' ) {
+ if ( $defaultNamespace != $t->getNamespace() || $t->isExternal() ) {
// This can happen in two cases. First, if you call titlePartToKey with a title part
// that looks like a namespace, but with $defaultNamespace = NS_MAIN. It would be very
// difficult to handle such a case. Such cases cannot exist and are therefore treated
return $errors;
}
+
+ /**
+ * Check whether the current user has permission to view revision-deleted
+ * fields.
+ * @return bool
+ */
+ public function userCanSeeRevDel() {
+ return $this->getUser()->isAllowedAny( 'deletedhistory', 'deletedtext', 'suppressrevision' );
+ }
}
/**
global $wgMiserMode;
$p = $this->getModulePrefix();
$desc = array(
- 'title' => "Which category to enumerate (required). Must include ' .
- 'Category: prefix. Cannot be used together with {$p}pageid",
+ 'title' => "Which category to enumerate (required). Must include " .
+ "'Category:' prefix. Cannot be used together with {$p}pageid",
'pageid' => "Page ID of the category to enumerate. Cannot be used together with {$p}title",
'prop' => array(
'What pieces of information to include',
'dir' => 'In which direction to sort',
'start' => "Timestamp to start listing from. Can only be used with {$p}sort=timestamp",
'end' => "Timestamp to end listing at. Can only be used with {$p}sort=timestamp",
- 'startsortkey' => "Sortkey to start listing from. Must be given in ' .
- 'binary format. Can only be used with {$p}sort=sortkey",
- 'endsortkey' => "Sortkey to end listing at. Must be given in binary ' .
- 'format. Can only be used with {$p}sort=sortkey",
- 'startsortkeyprefix' => "Sortkey prefix to start listing from. Can ' .
- 'only be used with {$p}sort=sortkey. Overrides {$p}startsortkey",
- 'endsortkeyprefix' => "Sortkey prefix to end listing BEFORE (not at, ' .
- 'if this value occurs it will not be included!). Can only be used with ' .
- '{$p}sort=sortkey. Overrides {$p}endsortkey",
+ 'startsortkey' => "Sortkey to start listing from. Must be given in " .
+ "binary format. Can only be used with {$p}sort=sortkey",
+ 'endsortkey' => "Sortkey to end listing at. Must be given in binary " .
+ "format. Can only be used with {$p}sort=sortkey",
+ 'startsortkeyprefix' => "Sortkey prefix to start listing from. Can " .
+ "only be used with {$p}sort=sortkey. Overrides {$p}startsortkey",
+ 'endsortkeyprefix' => "Sortkey prefix to end listing BEFORE (not at, " .
+ "if this value occurs it will not be included!). Can only be used with " .
+ "{$p}sort=sortkey. Overrides {$p}endsortkey",
'continue' => 'For large categories, give the value returned from previous query',
'limit' => 'The maximum number of pages to return.',
);
--- /dev/null
+<?php
+/**
+ * Query the list of contributors to a page
+ *
+ * Created on Nov 14, 2013
+ *
+ * Copyright © 2013 Brad Jorsch
+ *
+ * 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
+ * @since 1.23
+ */
+
+/**
+ * A query module to show contributors to a page
+ *
+ * @ingroup API
+ * @since 1.23
+ */
+class ApiQueryContributors extends ApiQueryBase {
+ /** We don't want to process too many pages at once (it hits cold
+ * database pages too heavily), so only do the first MAX_PAGES input pages
+ * in each API call (leaving the rest for continuation).
+ */
+ const MAX_PAGES = 100;
+
+ public function __construct( $query, $moduleName ) {
+ // "pc" is short for "page contributors", "co" was already taken by the
+ // GeoData extension's prop=coordinates.
+ parent::__construct( $query, $moduleName, 'pc' );
+ }
+
+ public function execute() {
+ $db = $this->getDB();
+ $params = $this->extractRequestParams();
+ $this->requireMaxOneParameter( $params, 'group', 'excludegroup', 'rights', 'excluderights' );
+
+ // Only operate on existing pages
+ $pages = array_keys( $this->getPageSet()->getGoodTitles() );
+
+ // Filter out already-processed pages
+ if ( $params['continue'] !== null ) {
+ $cont = explode( '|', $params['continue'] );
+ $this->dieContinueUsageIf( count( $cont ) != 2 );
+ $cont_page = (int)$cont[0];
+ $pages = array_filter( $pages, function ( $v ) use ( $cont_page ) {
+ return $v >= $cont_page;
+ } );
+ }
+ if ( !count( $pages ) ) {
+ // Nothing to do
+ return;
+ }
+
+ // Apply MAX_PAGES, leaving any over the limit for a continue.
+ sort( $pages );
+ $continuePages = null;
+ if ( count( $pages ) > self::MAX_PAGES ) {
+ $continuePages = $pages[self::MAX_PAGES] . '|0';
+ $pages = array_slice( $pages, 0, self::MAX_PAGES );
+ }
+
+ $result = $this->getResult();
+
+ // First, count anons
+ $this->addTables( 'revision' );
+ $this->addFields( array(
+ 'page' => 'rev_page',
+ 'anons' => 'COUNT(DISTINCT rev_user_text)',
+ ) );
+ $this->addWhereFld( 'rev_page', $pages );
+ $this->addWhere( 'rev_user = 0' );
+ $this->addWhere( $db->bitAnd( 'rev_deleted', Revision::DELETED_USER ) . ' = 0' );
+ $this->addOption( 'GROUP BY', 'rev_page' );
+ $res = $this->select( __METHOD__ );
+ foreach ( $res as $row ) {
+ $fit = $result->addValue( array( 'query', 'pages', $row->page ),
+ 'anoncontributors', $row->anons
+ );
+ if ( !$fit ) {
+ // This not fitting isn't reasonable, so it probably means that
+ // some other module used up all the space. Just set a dummy
+ // continue and hope it works next time.
+ $this->setContinueEnumParameter( 'continue',
+ $params['continue'] !== null ? $params['continue'] : '0|0'
+ );
+ return;
+ }
+ }
+
+ // Next, add logged-in users
+ $this->resetQueryParams();
+ $this->addTables( 'revision' );
+ $this->addFields( array(
+ 'page' => 'rev_page',
+ 'user' => 'rev_user',
+ 'username' => 'MAX(rev_user_text)', // Non-MySQL databases don't like partial group-by
+ ) );
+ $this->addWhereFld( 'rev_page', $pages );
+ $this->addWhere( 'rev_user != 0' );
+ $this->addWhere( $db->bitAnd( 'rev_deleted', Revision::DELETED_USER ) . ' = 0' );
+ $this->addOption( 'GROUP BY', 'rev_page, rev_user' );
+ $this->addOption( 'LIMIT', $params['limit'] + 1 );
+
+ // Force a sort order to ensure that properties are grouped by page
+ // But only if pp_page is not constant in the WHERE clause.
+ if ( count( $pages ) > 1 ) {
+ $this->addOption( 'ORDER BY', 'rev_page, rev_user' );
+ } else {
+ $this->addOption( 'ORDER BY', 'rev_user' );
+ }
+
+ $limitGroups = array();
+ if ( $params['group'] ) {
+ $excludeGroups = false;
+ $limitGroups = $params['group'];
+ } elseif ( $params['excludegroup'] ) {
+ $excludeGroups = true;
+ $limitGroups = $params['excludegroup'];
+ } elseif ( $params['rights'] ) {
+ $excludeGroups = false;
+ foreach ( $params['rights'] as $r ) {
+ $limitGroups = array_merge( $limitGroups, User::getGroupsWithPermission( $r ) );
+ }
+
+ // If no group has the rights requested, no need to query
+ if ( !$limitGroups ) {
+ if ( $continuePages !== null ) {
+ // But we still need to continue for the next page's worth
+ // of anoncontributors
+ $this->setContinueEnumParameter( 'continue', $continuePages );
+ }
+ return;
+ }
+ } elseif ( $params['excluderights'] ) {
+ $excludeGroups = true;
+ foreach ( $params['excluderights'] as $r ) {
+ $limitGroups = array_merge( $limitGroups, User::getGroupsWithPermission( $r ) );
+ }
+ }
+
+ if ( $limitGroups ) {
+ $limitGroups = array_unique( $limitGroups );
+ $this->addTables( 'user_groups' );
+ $this->addJoinConds( array( 'user_groups' => array(
+ $excludeGroups ? 'LEFT OUTER JOIN' : 'INNER JOIN',
+ array( 'ug_user=rev_user', 'ug_group' => $limitGroups )
+ ) ) );
+ $this->addWhereIf( 'ug_user IS NULL', $excludeGroups );
+ }
+
+ if ( $params['continue'] !== null ) {
+ $cont = explode( '|', $params['continue'] );
+ $this->dieContinueUsageIf( count( $cont ) != 2 );
+ $cont_page = (int)$cont[0];
+ $cont_user = (int)$cont[1];
+ $this->addWhere(
+ "rev_page > $cont_page OR " .
+ "(rev_page = $cont_page AND " .
+ "rev_user >= $cont_user)"
+ );
+ }
+
+ $res = $this->select( __METHOD__ );
+ $count = 0;
+ foreach ( $res as $row ) {
+ if ( ++$count > $params['limit'] ) {
+ // We've reached the one extra which shows that
+ // there are additional pages to be had. Stop here...
+ $this->setContinueEnumParameter( 'continue', $row->page . '|' . $row->user );
+ return;
+ }
+
+ $fit = $this->addPageSubItem( $row->page,
+ array( 'userid' => $row->user, 'name' => $row->username ),
+ 'user'
+ );
+ if ( !$fit ) {
+ $this->setContinueEnumParameter( 'continue', $row->page . '|' . $row->user );
+ return;
+ }
+ }
+
+ if ( $continuePages !== null ) {
+ $this->setContinueEnumParameter( 'continue', $continuePages );
+ }
+ }
+
+ public function getCacheMode( $params ) {
+ return 'public';
+ }
+
+ public function getAllowedParams() {
+ $userGroups = User::getAllGroups();
+ $userRights = User::getAllRights();
+
+ return array(
+ 'group' => array(
+ ApiBase::PARAM_TYPE => $userGroups,
+ ApiBase::PARAM_ISMULTI => true,
+ ),
+ 'excludegroup' => array(
+ ApiBase::PARAM_TYPE => $userGroups,
+ ApiBase::PARAM_ISMULTI => true,
+ ),
+ 'rights' => array(
+ ApiBase::PARAM_TYPE => $userRights,
+ ApiBase::PARAM_ISMULTI => true,
+ ),
+ 'excluderights' => array(
+ ApiBase::PARAM_TYPE => $userRights,
+ ApiBase::PARAM_ISMULTI => true,
+ ),
+ 'limit' => array(
+ ApiBase::PARAM_DFLT => 10,
+ ApiBase::PARAM_TYPE => 'limit',
+ ApiBase::PARAM_MIN => 1,
+ ApiBase::PARAM_MAX => ApiBase::LIMIT_BIG1,
+ ApiBase::PARAM_MAX2 => ApiBase::LIMIT_BIG2
+ ),
+ 'continue' => null,
+ );
+ }
+
+ public function getParamDescription() {
+ return array(
+ 'group' => array(
+ 'Limit users to given group name(s)',
+ 'Does not include implicit or auto-promoted groups like *, user, or autoconfirmed'
+ ),
+ 'excludegroup' => array(
+ 'Exclude users in given group name(s)',
+ 'Does not include implicit or auto-promoted groups like *, user, or autoconfirmed'
+ ),
+ 'rights' => array(
+ 'Limit users to those having given right(s)',
+ 'Does not include rights granted by implicit or auto-promoted groups ' .
+ 'like *, user, or autoconfirmed'
+ ),
+ 'excluderights' => array(
+ 'Limit users to those not having given right(s)',
+ 'Does not include rights granted by implicit or auto-promoted groups ' .
+ 'like *, user, or autoconfirmed'
+ ),
+ 'limit' => 'How many contributors to return',
+ 'continue' => 'When more results are available, use this to continue',
+ );
+ }
+
+ public function getPossibleErrors() {
+ return array_merge( parent::getPossibleErrors(),
+ $this->getRequireMaxOneParameterErrorMessages(
+ array( 'group', 'excludegroup', 'rights', 'excluderights' )
+ )
+ );
+ }
+
+
+ public function getDescription() {
+ return 'Get the list of logged-in contributors and ' .
+ 'the count of anonymous contributors to a page';
+ }
+
+ public function getExamples() {
+ return array(
+ 'api.php?action=query&prop=contributors&titles=Main_Page',
+ );
+ }
+
+ public function getHelpUrls() {
+ return 'https://www.mediawiki.org/wiki/API:Properties#contributors_.2F_pc';
+ }
+}
$fld_token = false;
}
+ // If user can't undelete, no tokens
+ if ( !$user->isAllowed( 'undelete' ) ) {
+ $fld_token = false;
+ }
+
$result = $this->getResult();
$pageSet = $this->getPageSet();
$titles = $pageSet->getTitles();
}
$this->addTables( 'archive' );
- $this->addWhere( 'ar_deleted = 0' );
- $this->addFields( array( 'ar_title', 'ar_namespace', 'ar_timestamp' ) );
+ $this->addFields( array( 'ar_title', 'ar_namespace', 'ar_timestamp', 'ar_deleted' ) );
$this->addFieldsIf( 'ar_parent_id', $fld_parentid );
$this->addFieldsIf( 'ar_rev_id', $fld_revid );
if ( $fld_content ) {
$this->addTables( 'text' );
+ $this->addJoinConds(
+ array( 'text' => array( 'INNER JOIN', array( 'ar_text_id=old_id' ) ) )
+ );
$this->addFields( array( 'ar_text', 'ar_text_id', 'old_text', 'old_flags' ) );
- $this->addWhere( 'ar_text_id = old_id' );
// This also means stricter restrictions
- if ( !$user->isAllowed( 'undelete' ) ) {
+ if ( !$user->isAllowedAny( 'undelete', 'deletedtext' ) ) {
$this->dieUsage(
'You don\'t have permission to view deleted revision content',
'permissiondenied'
$db->addQuotes( $params['excludeuser'] ) );
}
+ if ( !is_null( $params['user'] ) || !is_null( $params['excludeuser'] ) ) {
+ // Paranoia: avoid brute force searches (bug 17342)
+ // (shouldn't be able to get here without 'deletedhistory', but
+ // check it again just in case)
+ if ( !$user->isAllowed( 'deletedhistory' ) ) {
+ $bitmask = Revision::DELETED_USER;
+ } elseif ( !$user->isAllowed( 'suppressrevision' ) ) {
+ $bitmask = Revision::DELETED_USER | Revision::DELETED_RESTRICTED;
+ } else {
+ $bitmask = 0;
+ }
+ if ( $bitmask ) {
+ $this->addWhere( $db->bitAnd( 'ar_deleted', $bitmask ) . " != $bitmask" );
+ }
+ }
+
if ( !is_null( $params['continue'] ) && ( $mode == 'all' || $mode == 'revs' ) ) {
$cont = explode( '|', $params['continue'] );
$this->dieContinueUsageIf( count( $cont ) != 3 );
}
$rev = array();
+ $anyHidden = false;
+
$rev['timestamp'] = wfTimestamp( TS_ISO_8601, $row->ar_timestamp );
if ( $fld_revid ) {
$rev['revid'] = intval( $row->ar_rev_id );
if ( $fld_parentid && !is_null( $row->ar_parent_id ) ) {
$rev['parentid'] = intval( $row->ar_parent_id );
}
- if ( $fld_user ) {
- $rev['user'] = $row->ar_user_text;
- }
- if ( $fld_userid ) {
- $rev['userid'] = $row->ar_user;
- }
- if ( $fld_comment ) {
- $rev['comment'] = $row->ar_comment;
+ if ( $fld_user || $fld_userid ) {
+ if ( $row->ar_deleted & Revision::DELETED_USER ) {
+ $rev['userhidden'] = '';
+ $anyHidden = true;
+ }
+ if ( Revision::userCanBitfield( $row->ar_deleted, Revision::DELETED_USER, $user ) ) {
+ if ( $fld_user ) {
+ $rev['user'] = $row->ar_user_text;
+ }
+ if ( $fld_userid ) {
+ $rev['userid'] = $row->ar_user;
+ }
+ }
}
- $title = Title::makeTitle( $row->ar_namespace, $row->ar_title );
-
- if ( $fld_parsedcomment ) {
- $rev['parsedcomment'] = Linker::formatComment( $row->ar_comment, $title );
+ if ( $fld_comment || $fld_parsedcomment ) {
+ if ( $row->ar_deleted & Revision::DELETED_COMMENT ) {
+ $rev['commenthidden'] = '';
+ $anyHidden = true;
+ }
+ if ( Revision::userCanBitfield( $row->ar_deleted, Revision::DELETED_COMMENT, $user ) ) {
+ if ( $fld_comment ) {
+ $rev['comment'] = $row->ar_comment;
+ }
+ if ( $fld_parsedcomment ) {
+ $title = Title::makeTitle( $row->ar_namespace, $row->ar_title );
+ $rev['parsedcomment'] = Linker::formatComment( $row->ar_comment, $title );
+ }
+ }
}
+
if ( $fld_minor && $row->ar_minor_edit == 1 ) {
$rev['minor'] = '';
}
$rev['len'] = $row->ar_len;
}
if ( $fld_sha1 ) {
- if ( $row->ar_sha1 != '' ) {
- $rev['sha1'] = wfBaseConvert( $row->ar_sha1, 36, 16, 40 );
- } else {
- $rev['sha1'] = '';
+ if ( $row->ar_deleted & Revision::DELETED_TEXT ) {
+ $rev['sha1hidden'] = '';
+ $anyHidden = true;
+ }
+ if ( Revision::userCanBitfield( $row->ar_deleted, Revision::DELETED_TEXT, $user ) ) {
+ if ( $row->ar_sha1 != '' ) {
+ $rev['sha1'] = wfBaseConvert( $row->ar_sha1, 36, 16, 40 );
+ } else {
+ $rev['sha1'] = '';
+ }
}
}
if ( $fld_content ) {
- ApiResult::setContent( $rev, Revision::getRevisionText( $row ) );
+ if ( $row->ar_deleted & Revision::DELETED_TEXT ) {
+ $rev['texthidden'] = '';
+ $anyHidden = true;
+ }
+ if ( Revision::userCanBitfield( $row->ar_deleted, Revision::DELETED_TEXT, $user ) ) {
+ ApiResult::setContent( $rev, Revision::getRevisionText( $row ) );
+ }
}
if ( $fld_tags ) {
}
}
+ if ( $anyHidden && ( $row->ar_deleted & Revision::DELETED_RESTRICTED ) ) {
+ $rev['suppressed'] = '';
+ }
+
if ( !isset( $pageMap[$row->ar_namespace][$row->ar_title] ) ) {
$pageID = $newPageID++;
$pageMap[$row->ar_namespace][$row->ar_title] = $pageID;
$a['revisions'] = array( $rev );
$result->setIndexedTagName( $a['revisions'], 'rev' );
+ $title = Title::makeTitle( $row->ar_namespace, $row->ar_title );
ApiQueryBase::addTitleInfo( $a, $title );
if ( $fld_token ) {
$a['token'] = $token;
$this->addTables( 'filearchive' );
+ $this->addFields( ArchivedFile::selectFields() );
$this->addFields( array( 'fa_name', 'fa_deleted' ) );
$this->addFieldsIf( 'fa_sha1', $fld_sha1 );
$this->addFieldsIf( 'fa_timestamp', $fld_timestamp );
}
}
- if ( !$user->isAllowed( 'suppressrevision' ) ) {
- // Filter out revisions that the user is not allowed to see. There
- // is no way to indicate that we have skipped stuff because the
- // continuation parameter is fa_name
-
- // Note that this field is unindexed. This should however not be
- // a big problem as files with fa_deleted are rare
- $this->addWhereFld( 'fa_deleted', 0 );
+ // Exclude files this user can't view.
+ if ( !$user->isAllowed( 'deletedtext' ) ) {
+ $bitmask = File::DELETED_FILE;
+ } elseif ( !$user->isAllowed( 'suppressrevision' ) ) {
+ $bitmask = File::DELETED_FILE | File::DELETED_RESTRICTED;
+ } else {
+ $bitmask = 0;
+ }
+ if ( $bitmask ) {
+ $this->addWhere( $this->getDB()->bitAnd( 'fa_deleted', $bitmask ) . " != $bitmask" );
}
$limit = $params['limit'];
$title = Title::makeTitle( NS_FILE, $row->fa_name );
self::addTitleInfo( $file, $title );
+ if ( $fld_description &&
+ Revision::userCanBitfield( $row->fa_deleted, File::DELETED_COMMENT, $user )
+ ) {
+ $file['description'] = $row->fa_description;
+ if ( isset( $prop['parseddescription'] ) ) {
+ $file['parseddescription'] = Linker::formatComment(
+ $row->fa_description, $title );
+ }
+ }
+ if ( $fld_user &&
+ Revision::userCanBitfield( $row->fa_deleted, File::DELETED_USER, $user )
+ ) {
+ $file['userid'] = $row->fa_user;
+ $file['user'] = $row->fa_user_text;
+ }
if ( $fld_sha1 ) {
$file['sha1'] = wfBaseConvert( $row->fa_sha1, 36, 16, 40 );
}
if ( $fld_timestamp ) {
$file['timestamp'] = wfTimestamp( TS_ISO_8601, $row->fa_timestamp );
}
- if ( $fld_user ) {
- $file['userid'] = $row->fa_user;
- $file['user'] = $row->fa_user_text;
- }
if ( $fld_size || $fld_dimensions ) {
$file['size'] = $row->fa_size;
$file['height'] = $row->fa_height;
$file['width'] = $row->fa_width;
}
- if ( $fld_description ) {
- $file['description'] = $row->fa_description;
- if ( isset( $prop['parseddescription'] ) ) {
- $file['parseddescription'] = Linker::formatComment(
- $row->fa_description, $title );
- }
- }
if ( $fld_mediatype ) {
$file['mediatype'] = $row->fa_media_type;
}
$scale = $this->getScale( $params );
- $metadataOpts = array(
+ $opts = array(
'version' => $params['metadataversion'],
'language' => $params['extmetadatalanguage'],
'multilang' => $params['extmetadatamultilang'],
'extmetadatafilter' => $params['extmetadatafilter'],
+ 'revdelUser' => $this->getUser(),
);
$pageIds = $this->getPageSet()->getAllTitlesByNamespace();
}
}
- $result = $this->getResult();
- //search only inside the local repo
+ $user = $this->getUser();
+ $findTitles = array_map( function ( $title ) use ( $user ) {
+ return array(
+ 'title' => $title,
+ 'private' => $user,
+ );
+ }, $titles );
+
if ( $params['localonly'] ) {
- $images = RepoGroup::singleton()->getLocalRepo()->findFiles( $titles );
+ $images = RepoGroup::singleton()->getLocalRepo()->findFiles( $findTitles );
} else {
- $images = RepoGroup::singleton()->findFiles( $titles );
+ $images = RepoGroup::singleton()->findFiles( $findTitles );
}
+
+ $result = $this->getResult();
foreach ( $titles as $title ) {
$pageId = $pageIds[NS_FILE][$title];
$start = $title === $fromTitle ? $fromTimestamp : $params['start'];
$fit = $this->addPageSubItem( $pageId,
self::getInfo( $img, $prop, $result,
- $finalThumbParams, $metadataOpts
+ $finalThumbParams, $opts
)
);
if ( !$fit ) {
$fit = self::getTransformCount() < self::TRANSFORM_LIMIT &&
$this->addPageSubItem( $pageId,
self::getInfo( $oldie, $prop, $result,
- $finalThumbParams, $metadataOpts
+ $finalThumbParams, $opts
)
);
if ( !$fit ) {
* @param array $prop of properties to get (in the keys)
* @param $result ApiResult object
* @param array $thumbParams containing 'width' and 'height' items, or null
- * @param array|bool|string $metadataOpts Options for metadata fetching.
+ * @param array|bool|string $opts Options for data fetching.
* This is an array consisting of the keys:
* 'version': The metadata version for the metadata option
* 'language': The language for extmetadata property
* 'multilang': Return all translations in extmetadata property
+ * 'revdelUser': User to use when checking whether to show revision-deleted fields.
* @return Array: result array
*/
- static function getInfo( $file, $prop, $result, $thumbParams = null, $metadataOpts = false ) {
+ static function getInfo( $file, $prop, $result, $thumbParams = null, $opts = false ) {
global $wgContLang;
- if ( !$metadataOpts || is_string( $metadataOpts ) ) {
- $metadataOpts = array(
- 'version' => $metadataOpts ?: 'latest',
+ $anyHidden = false;
+
+ if ( !$opts || is_string( $opts ) ) {
+ $opts = array(
+ 'version' => $opts ?: 'latest',
'language' => $wgContLang,
'multilang' => false,
'extmetadatafilter' => array(),
+ 'revdelUser' => null,
);
}
- $version = $metadataOpts['version'];
+ $version = $opts['version'];
$vals = array();
// Timestamp is shown even if the file is revdelete'd in interface
// so do same here.
$vals['timestamp'] = wfTimestamp( TS_ISO_8601, $file->getTimestamp() );
}
+ // Handle external callers who don't pass revdelUser
+ if ( isset( $opts['revdelUser'] ) && $opts['revdelUser'] ) {
+ $revdelUser = $opts['revdelUser'];
+ $canShowField = function ( $field ) use ( $file, $revdelUser ) {
+ return $file->userCan( $field, $revdelUser );
+ };
+ } else {
+ $canShowField = function ( $field ) use ( $file ) {
+ return !$file->isDeleted( $field );
+ };
+ }
+
$user = isset( $prop['user'] );
$userid = isset( $prop['userid'] );
if ( $user || $userid ) {
if ( $file->isDeleted( File::DELETED_USER ) ) {
$vals['userhidden'] = '';
- } else {
+ $anyHidden = true;
+ }
+ if ( $canShowField( File::DELETED_USER ) ) {
if ( $user ) {
$vals['user'] = $file->getUser();
}
if ( $pcomment || $comment ) {
if ( $file->isDeleted( File::DELETED_COMMENT ) ) {
$vals['commenthidden'] = '';
- } else {
+ $anyHidden = true;
+ }
+ if ( $canShowField( File::DELETED_COMMENT ) ) {
if ( $pcomment ) {
$vals['parsedcomment'] = Linker::formatComment(
- $file->getDescription(), $file->getTitle() );
+ $file->getDescription( File::RAW ), $file->getTitle() );
}
if ( $comment ) {
- $vals['comment'] = $file->getDescription();
+ $vals['comment'] = $file->getDescription( File::RAW );
}
}
}
$sha1 = isset( $prop['sha1'] );
$meta = isset( $prop['metadata'] );
$extmetadata = isset( $prop['extmetadata'] );
+ $commonmeta = isset( $prop['commonmetadata'] );
$mime = isset( $prop['mime'] );
$mediatype = isset( $prop['mediatype'] );
$archive = isset( $prop['archivename'] );
$bitdepth = isset( $prop['bitdepth'] );
$uploadwarning = isset( $prop['uploadwarning'] );
- if ( ( $canonicaltitle || $url || $sha1 || $meta || $mime || $mediatype || $archive || $bitdepth )
- && $file->isDeleted( File::DELETED_FILE )
- ) {
+ if ( $uploadwarning ) {
+ $vals['html'] = SpecialUpload::getExistsWarning( UploadBase::getExistsWarning( $file ) );
+ }
+
+ if ( $file->isDeleted( File::DELETED_FILE ) ) {
$vals['filehidden'] = '';
+ $anyHidden = true;
+ }
+ if ( $anyHidden && $file->isDeleted( File::DELETED_RESTRICTED ) ) {
+ $vals['suppressed'] = true;
+ }
+
+ if ( !$canShowField( File::DELETED_FILE ) ) {
//Early return, tidier than indenting all following things one level
return $vals;
}
}
$vals['metadata'] = $metadata ? self::processMetaData( $metadata, $result ) : null;
}
+ if ( $commonmeta ) {
+ $metaArray = $file->getCommonMetaArray();
+ $vals['commonmetadata'] = $metaArray ? self::processMetaData( $metaArray, $result ) : array();
+ }
if ( $extmetadata ) {
// Note, this should return an array where all the keys
// start with a letter, and all the values are strings.
// Thus there should be no issue with format=xml.
$format = new FormatMetadata;
- $format->setSingleLanguage( !$metadataOpts['multilang'] );
- $format->getContext()->setLanguage( $metadataOpts['language'] );
+ $format->setSingleLanguage( !$opts['multilang'] );
+ $format->getContext()->setLanguage( $opts['language'] );
$extmetaArray = $format->fetchExtendedMetadata( $file );
- if ( $metadataOpts['extmetadatafilter'] ) {
+ if ( $opts['extmetadatafilter'] ) {
$extmetaArray = array_intersect_key(
- $extmetaArray, array_flip( $metadataOpts['extmetadatafilter'] )
+ $extmetaArray, array_flip( $opts['extmetadatafilter'] )
);
}
$vals['extmetadata'] = $extmetaArray;
$vals['bitdepth'] = $file->getBitDepth();
}
- if ( $uploadwarning ) {
- $vals['html'] = SpecialUpload::getExistsWarning( UploadBase::getExistsWarning( $file ) );
- }
-
return $vals;
}
}
public function getCacheMode( $params ) {
+ if ( $this->userCanSeeRevDel() ) {
+ return 'private';
+ }
+
return 'public';
}
' (requires url and param ' . $modulePrefix . 'urlwidth)',
'mediatype' => ' mediatype - Adds the media type of the image',
'metadata' => ' metadata - Lists Exif metadata for the version of the image',
+ 'commonmetadata' => ' commonmetadata - Lists file format generic metadata for the version of the image',
'extmetadata' => ' extmetadata - Lists formatted metadata combined ' .
'from multiple sources. Results are HTML formatted.',
'archivename' => ' archivename - Adds the file name of the archive ' .
}
// Paranoia: avoid brute force searches (bug 17342)
- if ( !is_null( $title ) ) {
- $this->addWhere( $db->bitAnd( 'log_deleted', LogPage::DELETED_ACTION ) . ' = 0' );
- }
- if ( !is_null( $user ) ) {
- $this->addWhere( $db->bitAnd( 'log_deleted', LogPage::DELETED_USER ) . ' = 0' );
+ if ( !is_null( $title ) || !is_null( $user ) ) {
+ if ( !$this->getUser()->isAllowed( 'deletedhistory' ) ) {
+ $titleBits = LogPage::DELETED_ACTION;
+ $userBits = LogPage::DELETED_USER;
+ } elseif ( !$this->getUser()->isAllowed( 'suppressrevision' ) ) {
+ $titleBits = LogPage::DELETED_ACTION | LogPage::DELETED_RESTRICTED;
+ $userBits = LogPage::DELETED_USER | LogPage::DELETED_RESTRICTED;
+ } else {
+ $titleBits = 0;
+ $userBits = 0;
+ }
+ if ( !is_null( $title ) && $titleBits ) {
+ $this->addWhere( $db->bitAnd( 'log_deleted', $titleBits ) . " != $titleBits" );
+ }
+ if ( !is_null( $user ) && $userBits ) {
+ $this->addWhere( $db->bitAnd( 'log_deleted', $userBits ) . " != $userBits" );
+ }
}
$count = 0;
private function extractRowInfo( $row ) {
$logEntry = DatabaseLogEntry::newFromRow( $row );
$vals = array();
+ $anyHidden = false;
+ $user = $this->getUser();
if ( $this->fld_ids ) {
$vals['logid'] = intval( $row->log_id );
- $vals['pageid'] = intval( $row->page_id );
}
if ( $this->fld_title || $this->fld_parsedcomment ) {
$title = Title::makeTitle( $row->log_namespace, $row->log_title );
}
- if ( $this->fld_title ) {
+ if ( $this->fld_title || $this->fld_ids || $this->fld_details && $row->log_params !== '' ) {
if ( LogEventsList::isDeleted( $row, LogPage::DELETED_ACTION ) ) {
$vals['actionhidden'] = '';
- } else {
- ApiQueryBase::addTitleInfo( $vals, $title );
+ $anyHidden = true;
+ }
+ if ( LogEventsList::userCan( $row, LogPage::DELETED_ACTION, $user ) ) {
+ if ( $this->fld_title ) {
+ ApiQueryBase::addTitleInfo( $vals, $title );
+ }
+ if ( $this->fld_ids ) {
+ $vals['pageid'] = intval( $row->page_id );
+ }
+ if ( $this->fld_details && $row->log_params !== '' ) {
+ self::addLogParams(
+ $this->getResult(),
+ $vals,
+ $logEntry->getParameters(),
+ $logEntry->getType(),
+ $logEntry->getSubtype(),
+ $logEntry->getTimestamp(),
+ $logEntry->isLegacy()
+ );
+ }
}
}
$vals['action'] = $row->log_action;
}
- if ( $this->fld_details && $row->log_params !== '' ) {
- if ( LogEventsList::isDeleted( $row, LogPage::DELETED_ACTION ) ) {
- $vals['actionhidden'] = '';
- } else {
- self::addLogParams(
- $this->getResult(),
- $vals,
- $logEntry->getParameters(),
- $logEntry->getType(),
- $logEntry->getSubtype(),
- $logEntry->getTimestamp(),
- $logEntry->isLegacy()
- );
- }
- }
-
if ( $this->fld_user || $this->fld_userid ) {
if ( LogEventsList::isDeleted( $row, LogPage::DELETED_USER ) ) {
$vals['userhidden'] = '';
- } else {
+ $anyHidden = true;
+ }
+ if ( LogEventsList::userCan( $row, LogPage::DELETED_USER, $user ) ) {
if ( $this->fld_user ) {
$vals['user'] = $row->user_name === null ? $row->log_user_text : $row->user_name;
}
if ( ( $this->fld_comment || $this->fld_parsedcomment ) && isset( $row->log_comment ) ) {
if ( LogEventsList::isDeleted( $row, LogPage::DELETED_COMMENT ) ) {
$vals['commenthidden'] = '';
- } else {
+ $anyHidden = true;
+ }
+ if ( LogEventsList::userCan( $row, LogPage::DELETED_COMMENT, $user ) ) {
if ( $this->fld_comment ) {
$vals['comment'] = $row->log_comment;
}
}
}
+ if ( $anyHidden && LogEventsList::isDeleted( $row, LogPage::DELETED_RESTRICTED ) ) {
+ $vals['suppressed'] = '';
+ }
+
return $vals;
}
public function getCacheMode( $params ) {
+ if ( $this->userCanSeeRevDel() ) {
+ return 'private';
+ }
if ( !is_null( $params['prop'] ) && in_array( 'parsedcomment', $params['prop'] ) ) {
// formatComment() calls wfMessage() among other things
return 'anon-public-user-private';
/* Build our basic query. Namely, something along the lines of:
* SELECT * FROM recentchanges WHERE rc_timestamp > $start
* AND rc_timestamp < $end AND rc_namespace = $namespace
- * AND rc_deleted = 0
*/
$this->addTables( 'recentchanges' );
$index = array( 'recentchanges' => 'rc_timestamp' ); // May change
) );
$this->addWhereFld( 'rc_namespace', $params['namespace'] );
- $this->addWhereFld( 'rc_deleted', 0 );
if ( !is_null( $params['type'] ) ) {
$this->addWhereFld( 'rc_type', $this->parseRCType( $params['type'] ) );
$this->addWhereFld( 'ct_tag', $params['tag'] );
}
+ // Paranoia: avoid brute force searches (bug 17342)
+ if ( !is_null( $params['user'] ) || !is_null( $params['excludeuser'] ) ) {
+ if ( !$user->isAllowed( 'deletedhistory' ) ) {
+ $bitmask = Revision::DELETED_USER;
+ } elseif ( !$user->isAllowed( 'suppressrevision' ) ) {
+ $bitmask = Revision::DELETED_USER | Revision::DELETED_RESTRICTED;
+ } else {
+ $bitmask = 0;
+ }
+ if ( $bitmask ) {
+ $this->addWhere( $this->getDB()->bitAnd( 'rc_deleted', $bitmask ) . " != $bitmask" );
+ }
+ }
+ if ( $this->getRequest()->getCheck( 'namespace' ) ) {
+ // LogPage::DELETED_ACTION hides the affected page, too.
+ if ( !$user->isAllowed( 'deletedhistory' ) ) {
+ $bitmask = LogPage::DELETED_ACTION;
+ } elseif ( !$user->isAllowed( 'suppressrevision' ) ) {
+ $bitmask = LogPage::DELETED_ACTION | LogPage::DELETED_RESTRICTED;
+ } else {
+ $bitmask = 0;
+ }
+ if ( $bitmask ) {
+ $this->addWhere( $this->getDB()->makeList( array(
+ 'rc_type != ' . RC_LOG,
+ $this->getDB()->bitAnd( 'rc_deleted', $bitmask ) . " != $bitmask",
+ ), LIST_OR ) );
+ }
+ }
+
$this->token = $params['token'];
$this->addOption( 'LIMIT', $params['limit'] + 1 );
$this->addOption( 'USE INDEX', $index );
public function extractRowInfo( $row ) {
/* Determine the title of the page that has been changed. */
$title = Title::makeTitle( $row->rc_namespace, $row->rc_title );
+ $user = $this->getUser();
/* Our output data. */
$vals = array();
$vals['type'] = $type;
}
+ $anyHidden = false;
+
/* Create a new entry in the result for the title. */
- if ( $this->fld_title ) {
- ApiQueryBase::addTitleInfo( $vals, $title );
+ if ( $this->fld_title || $this->fld_ids ) {
+ if ( $type === RC_LOG && ( $row->rc_deleted & LogPage::DELETED_ACTION ) ) {
+ $vals['actionhidden'] = '';
+ $anyHidden = true;
+ }
+ if ( $type !== RC_LOG ||
+ LogEventsList::userCanBitfield( $row->rc_deleted, LogPage::DELETED_ACTION, $user )
+ ) {
+ if ( $this->fld_title ) {
+ ApiQueryBase::addTitleInfo( $vals, $title );
+ }
+ if ( $this->fld_ids ) {
+ $vals['pageid'] = intval( $row->rc_cur_id );
+ $vals['revid'] = intval( $row->rc_this_oldid );
+ $vals['old_revid'] = intval( $row->rc_last_oldid );
+ }
+ }
}
- /* Add ids, such as rcid, pageid, revid, and oldid to the change's info. */
if ( $this->fld_ids ) {
$vals['rcid'] = intval( $row->rc_id );
- $vals['pageid'] = intval( $row->rc_cur_id );
- $vals['revid'] = intval( $row->rc_this_oldid );
- $vals['old_revid'] = intval( $row->rc_last_oldid );
}
- /* Add user data and 'anon' flag, if use is anonymous. */
+ /* Add user data and 'anon' flag, if user is anonymous. */
if ( $this->fld_user || $this->fld_userid ) {
-
- if ( $this->fld_user ) {
- $vals['user'] = $row->rc_user_text;
+ if ( $row->rc_deleted & Revision::DELETED_USER ) {
+ $vals['userhidden'] = '';
+ $anyHidden = true;
}
+ if ( Revision::userCanBitfield( $row->rc_deleted, Revision::DELETED_USER, $user ) ) {
+ if ( $this->fld_user ) {
+ $vals['user'] = $row->rc_user_text;
+ }
- if ( $this->fld_userid ) {
- $vals['userid'] = $row->rc_user;
- }
+ if ( $this->fld_userid ) {
+ $vals['userid'] = $row->rc_user;
+ }
- if ( !$row->rc_user ) {
- $vals['anon'] = '';
+ if ( !$row->rc_user ) {
+ $vals['anon'] = '';
+ }
}
}
}
/* Add edit summary / log summary. */
- if ( $this->fld_comment && isset( $row->rc_comment ) ) {
- $vals['comment'] = $row->rc_comment;
- }
+ if ( $this->fld_comment || $this->fld_parsedcomment ) {
+ if ( $row->rc_deleted & Revision::DELETED_COMMENT ) {
+ $vals['commenthidden'] = '';
+ $anyHidden = true;
+ }
+ if ( Revision::userCanBitfield( $row->rc_deleted, Revision::DELETED_COMMENT, $user ) ) {
+ if ( $this->fld_comment && isset( $row->rc_comment ) ) {
+ $vals['comment'] = $row->rc_comment;
+ }
- if ( $this->fld_parsedcomment && isset( $row->rc_comment ) ) {
- $vals['parsedcomment'] = Linker::formatComment( $row->rc_comment, $title );
+ if ( $this->fld_parsedcomment && isset( $row->rc_comment ) ) {
+ $vals['parsedcomment'] = Linker::formatComment( $row->rc_comment, $title );
+ }
+ }
}
if ( $this->fld_redirect ) {
$vals['patrolled'] = '';
}
- if ( $this->fld_patrolled && ChangesList::isUnpatrolled( $row, $this->getUser() ) ) {
+ if ( $this->fld_patrolled && ChangesList::isUnpatrolled( $row, $user ) ) {
$vals['unpatrolled'] = '';
}
if ( $this->fld_loginfo && $row->rc_type == RC_LOG ) {
- $vals['logid'] = intval( $row->rc_logid );
- $vals['logtype'] = $row->rc_log_type;
- $vals['logaction'] = $row->rc_log_action;
- $logEntry = DatabaseLogEntry::newFromRow( (array)$row );
- ApiQueryLogEvents::addLogParams(
- $this->getResult(),
- $vals,
- $logEntry->getParameters(),
- $logEntry->getType(),
- $logEntry->getSubtype(),
- $logEntry->getTimestamp()
- );
+ if ( $row->rc_deleted & LogPage::DELETED_ACTION ) {
+ $vals['actionhidden'] = '';
+ $anyHidden = true;
+ }
+ if ( LogEventsList::userCanBitfield( $row->rc_deleted, LogPage::DELETED_ACTION, $user ) ) {
+ $vals['logid'] = intval( $row->rc_logid );
+ $vals['logtype'] = $row->rc_log_type;
+ $vals['logaction'] = $row->rc_log_action;
+ $logEntry = DatabaseLogEntry::newFromRow( (array)$row );
+ ApiQueryLogEvents::addLogParams(
+ $this->getResult(),
+ $vals,
+ $logEntry->getParameters(),
+ $logEntry->getType(),
+ $logEntry->getSubtype(),
+ $logEntry->getTimestamp()
+ );
+ }
}
if ( $this->fld_tags ) {
}
if ( $this->fld_sha1 && $row->rev_sha1 !== null ) {
- // The RevDel check should currently never pass due to the
- // rc_deleted = 0 condition in the WHERE clause, but in case that
- // ever changes we check it here too.
if ( $row->rev_deleted & Revision::DELETED_TEXT ) {
$vals['sha1hidden'] = '';
- } elseif ( $row->rev_sha1 !== '' ) {
- $vals['sha1'] = wfBaseConvert( $row->rev_sha1, 36, 16, 40 );
- } else {
- $vals['sha1'] = '';
+ $anyHidden = true;
+ }
+ if ( Revision::userCanBitfield( $row->rev_deleted, Revision::DELETED_TEXT, $user ) ) {
+ if ( $row->rev_sha1 !== '' ) {
+ $vals['sha1'] = wfBaseConvert( $row->rev_sha1, 36, 16, 40 );
+ } else {
+ $vals['sha1'] = '';
+ }
}
}
}
}
+ if ( $anyHidden && ( $row->rc_deleted & Revision::DELETED_RESTRICTED ) ) {
+ $vals['suppressed'] = '';
+ }
+
return $vals;
}
return $retval;
}
+
switch ( $type ) {
case 'edit':
return RC_EDIT;
return RC_LOG;
case 'external':
return RC_EXTERNAL;
+ default:
+ ApiBase::dieDebug( __METHOD__, "Unknown type '$type'" );
}
}
if ( isset( $params['token'] ) ) {
return 'private';
}
+ if ( $this->userCanSeeRevDel() ) {
+ return 'private';
+ }
if ( !is_null( $params['prop'] ) && in_array( 'parsedcomment', $params['prop'] ) ) {
// formatComment() calls wfMessage() among other things
return 'anon-public-user-private';
if ( !$difftoRev ) {
$this->dieUsageMsg( array( 'nosuchrevid', $params['diffto'] ) );
}
- if ( $difftoRev->isDeleted( Revision::DELETED_TEXT ) ) {
+ if ( !$difftoRev->userCan( Revision::DELETED_TEXT, $this->getUser() ) ) {
$this->setWarning( "Couldn't diff to r{$difftoRev->getID()}: content is hidden" );
$params['diffto'] = null;
}
}
if ( !is_null( $params['user'] ) || !is_null( $params['excludeuser'] ) ) {
// Paranoia: avoid brute force searches (bug 17342)
- $this->addWhere( $db->bitAnd( 'rev_deleted', Revision::DELETED_USER ) . ' = 0' );
+ if ( !$this->getUser()->isAllowed( 'deletedhistory' ) ) {
+ $bitmask = Revision::DELETED_USER;
+ } elseif ( !$this->getUser()->isAllowed( 'suppressrevision' ) ) {
+ $bitmask = Revision::DELETED_USER | Revision::DELETED_RESTRICTED;
+ } else {
+ $bitmask = 0;
+ }
+ if ( $bitmask ) {
+ $this->addWhere( $db->bitAnd( 'rev_deleted', $bitmask ) . " != $bitmask" );
+ }
}
} elseif ( $revCount > 0 ) {
$max = $this->getMain()->canApiHighLimits() ? $botMax : $userMax;
private function extractRowInfo( $row ) {
$revision = new Revision( $row );
$title = $revision->getTitle();
+ $user = $this->getUser();
$vals = array();
+ $anyHidden = false;
if ( $this->fld_ids ) {
$vals['revid'] = intval( $revision->getId() );
if ( $this->fld_user || $this->fld_userid ) {
if ( $revision->isDeleted( Revision::DELETED_USER ) ) {
$vals['userhidden'] = '';
- } else {
+ $anyHidden = true;
+ }
+ if ( $revision->userCan( Revision::DELETED_USER, $user ) ) {
if ( $this->fld_user ) {
- $vals['user'] = $revision->getUserText();
+ $vals['user'] = $revision->getRawUserText();
}
- $userid = $revision->getUser();
+ $userid = $revision->getRawUser();
if ( !$userid ) {
$vals['anon'] = '';
}
}
}
- if ( $this->fld_sha1 && !$revision->isDeleted( Revision::DELETED_TEXT ) ) {
- if ( $revision->getSha1() != '' ) {
- $vals['sha1'] = wfBaseConvert( $revision->getSha1(), 36, 16, 40 );
- } else {
- $vals['sha1'] = '';
+ if ( $this->fld_sha1 ) {
+ if ( $revision->isDeleted( Revision::DELETED_TEXT ) ) {
+ $vals['sha1hidden'] = '';
+ $anyHidden = true;
+ }
+ if ( $revision->userCan( Revision::DELETED_TEXT, $user ) ) {
+ if ( $revision->getSha1() != '' ) {
+ $vals['sha1'] = wfBaseConvert( $revision->getSha1(), 36, 16, 40 );
+ } else {
+ $vals['sha1'] = '';
+ }
}
- } elseif ( $this->fld_sha1 ) {
- $vals['sha1hidden'] = '';
}
if ( $this->fld_contentmodel ) {
if ( $this->fld_comment || $this->fld_parsedcomment ) {
if ( $revision->isDeleted( Revision::DELETED_COMMENT ) ) {
$vals['commenthidden'] = '';
- } else {
- $comment = $revision->getComment();
+ $anyHidden = true;
+ }
+ if ( $revision->userCan( Revision::DELETED_COMMENT, $user ) ) {
+ $comment = $revision->getRawComment();
if ( $this->fld_comment ) {
$vals['comment'] = $comment;
$content = null;
global $wgParser;
if ( $this->fld_content || !is_null( $this->diffto ) || !is_null( $this->difftotext ) ) {
- $content = $revision->getContent();
+ $content = $revision->getContent( Revision::FOR_THIS_USER, $this->getUser() );
// Expand templates after getting section content because
// template-added sections don't count and Parser::preprocess()
// will have less input
);
}
}
+ if ( $revision->isDeleted( Revision::DELETED_TEXT ) ) {
+ $vals['texthidden'] = '';
+ $anyHidden = true;
+ } elseif ( !$content ) {
+ $vals['textmissing'] = '';
+ }
}
- if ( $this->fld_content && $content && !$revision->isDeleted( Revision::DELETED_TEXT ) ) {
+ if ( $this->fld_content && $content ) {
$text = null;
if ( $this->generateXML ) {
if ( $text !== false ) {
ApiResult::setContent( $vals, $text );
}
- } elseif ( $this->fld_content ) {
- if ( $revision->isDeleted( Revision::DELETED_TEXT ) ) {
- $vals['texthidden'] = '';
- } else {
- $vals['textmissing'] = '';
- }
}
- if ( !is_null( $this->diffto ) || !is_null( $this->difftotext ) ) {
+ if ( $content && ( !is_null( $this->diffto ) || !is_null( $this->difftotext ) ) ) {
global $wgAPIMaxUncachedDiffs;
static $n = 0; // Number of uncached diffs we've had
- if ( is_null( $content ) ) {
- $vals['textmissing'] = '';
- } elseif ( $n < $wgAPIMaxUncachedDiffs ) {
+ if ( $n < $wgAPIMaxUncachedDiffs ) {
$vals['diff'] = array();
$context = new DerivativeContext( $this->getContext() );
$context->setTitle( $title );
}
}
+ if ( $anyHidden && $revision->isDeleted( Revision::DELETED_RESTRICTED ) ) {
+ $vals['suppressed'] = '';
+ }
+
return $vals;
}
if ( isset( $params['token'] ) ) {
return 'private';
}
+ if ( $this->userCanSeeRevDel() ) {
+ return 'private';
+ }
if ( !is_null( $params['prop'] ) && in_array( 'parsedcomment', $params['prop'] ) ) {
// formatComment() calls wfMessage() among other things
return 'anon-public-user-private';
$data['mainpage'] = $mainPage->getPrefixedText();
$data['base'] = wfExpandUrl( $mainPage->getFullURL(), PROTO_CURRENT );
$data['sitename'] = $GLOBALS['wgSitename'];
- $data['logo'] = $GLOBALS['wgLogo'];
+
+ // wgLogo can either be a relative or an absolute path
+ // make sure we always return an absolute path
+ $data['logo'] = wfExpandUrl( $GLOBALS['wgLogo'], PROTO_RELATIVE );
+
$data['generator'] = "MediaWiki {$GLOBALS['wgVersion']}";
$data['phpversion'] = phpversion();
$data['phpsapi'] = PHP_SAPI;
// 'case-insensitive' option is reserved for future
$data['case'] = $GLOBALS['wgCapitalLinks'] ? 'first-letter' : 'case-sensitive';
- if ( isset( $GLOBALS['wgRightsCode'] ) ) {
- $data['rightscode'] = $GLOBALS['wgRightsCode'];
- }
- $data['rights'] = $GLOBALS['wgRightsText'];
$data['lang'] = $GLOBALS['wgLanguageCode'];
$fallbacks = array();
if ( $wgContLang->hasVariants() ) {
$variants = array();
foreach ( $wgContLang->getVariants() as $code ) {
- $variants[] = array( 'code' => $code );
+ $variants[] = array(
+ 'code' => $code,
+ 'name' => $wgContLang->getVariantname( $code ),
+ );
}
$data['variants'] = $variants;
$this->getResult()->setIndexedTagName( $data['variants'], 'lang' );
$data['imagelimits'][$k] = array( 'width' => $limit[0], 'height' => $limit[1] );
}
+ if ( !empty( $GLOBALS['wgFavicon'] ) ) {
+ // wgFavicon can either be a relative or an absolute path
+ // make sure we always return an absolute path
+ $data['favicon'] = wfExpandUrl( $GLOBALS['wgFavicon'], PROTO_RELATIVE );
+ }
+
wfRunHooks( 'APIQuerySiteInfoGeneralInfo', array( $this, &$data ) );
return $this->getResult()->addValue( 'query', $property, $data );
) {
$ret['version'] = 'r' . $m[1];
}
+ if ( isset( $ext['path'] ) ) {
+ $extensionPath = dirname( $ext['path'] );
+ $gitInfo = new GitInfo( $extensionPath );
+ $vcsVersion = $gitInfo->getHeadSHA1();
+ if ( $vcsVersion !== false ) {
+ $ret['vcs-system'] = 'git';
+ $ret['vcs-version'] = $vcsVersion;
+ $ret['vcs-url'] = $gitInfo->getHeadViewUrl();
+ $ret['vcs-date'] = wfTimestamp( TS_ISO_8601, $gitInfo->getHeadCommitDate() );
+ } else {
+ $svnInfo = SpecialVersion::getSvnInfo( $extensionPath );
+ if ( $svnInfo !== false ) {
+ $ret['vcs-system'] = 'svn';
+ $ret['vcs-version'] = $svnInfo['checkout-rev'];
+ $ret['vcs-url'] = isset( $svnInfo['viewvc-url'] ) ? $svnInfo['viewvc-url'] : '';
+ }
+ }
+ if ( SpecialVersion::getExtLicenseFileName( $extensionPath ) ) {
+ $ret['license-name'] = isset( $ext['license-name'] ) ? $ext['license-name'] : '';
+ $ret['license'] = SpecialPage::getTitleFor( 'Version', "License/{$ext['name']}" )->getLinkURL();
+ }
+ if ( SpecialVersion::getExtAuthorsFileName( $extensionPath ) ) {
+ $ret['credits'] = SpecialPage::getTitleFor( 'Version', "Credits/{$ext['name']}" )->getLinkURL();
+ }
+ }
$data[] = $ret;
}
}
);
}
- if ( !$user->isAllowed( 'hideuser' ) ) {
- $this->addWhere( $this->getDB()->bitAnd( 'rev_deleted', Revision::DELETED_USER ) . ' = 0' );
+ // Don't include any revisions where we're not supposed to be able to
+ // see the username.
+ if ( !$user->isAllowed( 'deletedhistory' ) ) {
+ $bitmask = Revision::DELETED_USER;
+ } elseif ( !$user->isAllowed( 'suppressrevision' ) ) {
+ $bitmask = Revision::DELETED_USER | Revision::DELETED_RESTRICTED;
+ } else {
+ $bitmask = 0;
+ }
+ if ( $bitmask ) {
+ $this->addWhere( $this->getDB()->bitAnd( 'rev_deleted', $bitmask ) . " != $bitmask" );
}
+
// We only want pages by the specified users.
if ( $this->prefixMode ) {
$this->addWhere( 'rev_user_text' .
*/
private function extractRowInfo( $row ) {
$vals = array();
+ $anyHidden = false;
+
+ if ( $row->rev_deleted & Revision::DELETED_TEXT ) {
+ $vals['texthidden'] = '';
+ $anyHidden = true;
+ }
+ // Any rows where we can't view the user were filtered out in the query.
$vals['userid'] = $row->rev_user;
$vals['user'] = $row->rev_user_text;
if ( $row->rev_deleted & Revision::DELETED_USER ) {
$vals['userhidden'] = '';
+ $anyHidden = true;
}
if ( $this->fld_ids ) {
$vals['pageid'] = intval( $row->rev_page );
if ( ( $this->fld_comment || $this->fld_parsedcomment ) && isset( $row->rev_comment ) ) {
if ( $row->rev_deleted & Revision::DELETED_COMMENT ) {
$vals['commenthidden'] = '';
- } else {
+ $anyHidden = true;
+ }
+ if ( Revision::userCanBitfield( $row->rev_deleted, Revision::DELETED_COMMENT, $this->getUser() ) ) {
if ( $this->fld_comment ) {
$vals['comment'] = $row->rev_comment;
}
}
}
+ if ( $anyHidden && $row->rev_deleted & Revision::DELETED_RESTRICTED ) {
+ $vals['suppressed'] = '';
+ }
+
return $vals;
}
$params = $this->extractRequestParams();
- $user = $this->getWatchlistUser( $params );
+ $user = $this->getUser();
+ $wlowner = $this->getWatchlistUser( $params );
if ( !is_null( $params['prop'] ) && is_null( $resultPageSet ) ) {
$prop = array_flip( $params['prop'] );
'rc_title',
'rc_timestamp',
'rc_type',
+ 'rc_deleted',
) );
if ( is_null( $resultPageSet ) ) {
'watchlist',
) );
- $userId = $user->getId();
+ $userId = $wlowner->getId();
$this->addJoinConds( array( 'watchlist' => array( 'INNER JOIN',
array(
'wl_user' => $userId,
)
) ) );
- $this->addWhere( array(
- 'rc_deleted' => 0,
- ) );
-
$db = $this->getDB();
$this->addTimestampWhereRange( 'rc_timestamp', $params['dir'],
// Check permissions.
if ( isset( $show['patrolled'] ) || isset( $show['!patrolled'] ) ) {
- $user = $this->getUser();
if ( !$user->useRCPatrol() && !$user->useNPPatrol() ) {
$this->dieUsage(
'You need the patrol right to request the patrolled flag',
!isset( $params['start'] ) && !isset( $params['end'] ) && $db->getType() == 'mysql'
);
+ // Paranoia: avoid brute force searches (bug 17342)
+ if ( !is_null( $params['user'] ) || !is_null( $params['excludeuser'] ) ) {
+ if ( !$user->isAllowed( 'deletedhistory' ) ) {
+ $bitmask = Revision::DELETED_USER;
+ } elseif ( !$user->isAllowed( 'suppressrevision' ) ) {
+ $bitmask = Revision::DELETED_USER | Revision::DELETED_RESTRICTED;
+ } else {
+ $bitmask = 0;
+ }
+ if ( $bitmask ) {
+ $this->addWhere( $this->getDB()->bitAnd( 'rc_deleted', $bitmask ) . " != $bitmask" );
+ }
+ }
+
+ // LogPage::DELETED_ACTION hides the affected page, too. So hide those
+ // entirely from the watchlist, or someone could guess the title.
+ if ( !$user->isAllowed( 'deletedhistory' ) ) {
+ $bitmask = LogPage::DELETED_ACTION;
+ } elseif ( !$user->isAllowed( 'suppressrevision' ) ) {
+ $bitmask = LogPage::DELETED_ACTION | LogPage::DELETED_RESTRICTED;
+ } else {
+ $bitmask = 0;
+ }
+ if ( $bitmask ) {
+ $this->addWhere( $this->getDB()->makeList( array(
+ 'rc_type != ' . RC_LOG,
+ $this->getDB()->bitAnd( 'rc_deleted', $bitmask ) . " != $bitmask",
+ ), LIST_OR ) );
+ }
+
$this->addOption( 'LIMIT', $params['limit'] + 1 );
$ids = array();
}
private function extractRowInfo( $row ) {
+ /* Determine the title of the page that has been changed. */
+ $title = Title::makeTitle( $row->rc_namespace, $row->rc_title );
+ $user = $this->getUser();
+
+ /* Our output data. */
$vals = array();
$type = intval( $row->rc_type );
$vals['type'] = $type;
}
- if ( $this->fld_ids ) {
- $vals['pageid'] = intval( $row->rc_cur_id );
- $vals['revid'] = intval( $row->rc_this_oldid );
- $vals['old_revid'] = intval( $row->rc_last_oldid );
- }
-
- $title = Title::makeTitle( $row->rc_namespace, $row->rc_title );
+ $anyHidden = false;
- if ( $this->fld_title ) {
- ApiQueryBase::addTitleInfo( $vals, $title );
+ /* Create a new entry in the result for the title. */
+ if ( $this->fld_title || $this->fld_ids ) {
+ // These should already have been filtered out of the query, but just in case.
+ if ( $type === RC_LOG && ( $row->rc_deleted & LogPage::DELETED_ACTION ) ) {
+ $vals['actionhidden'] = '';
+ $anyHidden = true;
+ }
+ if ( $type !== RC_LOG ||
+ LogEventsList::userCanBitfield( $row->rc_deleted, LogPage::DELETED_ACTION, $user )
+ ) {
+ if ( $this->fld_title ) {
+ ApiQueryBase::addTitleInfo( $vals, $title );
+ }
+ if ( $this->fld_ids ) {
+ $vals['pageid'] = intval( $row->rc_cur_id );
+ $vals['revid'] = intval( $row->rc_this_oldid );
+ $vals['old_revid'] = intval( $row->rc_last_oldid );
+ }
+ }
}
+ /* Add user data and 'anon' flag, if user is anonymous. */
if ( $this->fld_user || $this->fld_userid ) {
-
- if ( $this->fld_userid ) {
- $vals['userid'] = $row->rc_user;
- // for backwards compatibility
- $vals['user'] = $row->rc_user;
+ if ( $row->rc_deleted & Revision::DELETED_USER ) {
+ $vals['userhidden'] = '';
+ $anyHidden = true;
}
+ if ( Revision::userCanBitfield( $row->rc_deleted, Revision::DELETED_USER, $user ) ) {
+ if ( $this->fld_userid ) {
+ $vals['userid'] = $row->rc_user;
+ // for backwards compatibility
+ $vals['user'] = $row->rc_user;
+ }
- if ( $this->fld_user ) {
- $vals['user'] = $row->rc_user_text;
- }
+ if ( $this->fld_user ) {
+ $vals['user'] = $row->rc_user_text;
+ }
- if ( !$row->rc_user ) {
- $vals['anon'] = '';
+ if ( !$row->rc_user ) {
+ $vals['anon'] = '';
+ }
}
}
+ /* Add flags, such as new, minor, bot. */
if ( $this->fld_flags ) {
+ if ( $row->rc_bot ) {
+ $vals['bot'] = '';
+ }
if ( $row->rc_type == RC_NEW ) {
$vals['new'] = '';
}
if ( $row->rc_minor ) {
$vals['minor'] = '';
}
- if ( $row->rc_bot ) {
- $vals['bot'] = '';
- }
}
- if ( $this->fld_patrol && isset( $row->rc_patrolled ) ) {
- $vals['patrolled'] = '';
+ /* Add sizes of each revision. (Only available on 1.10+) */
+ if ( $this->fld_sizes ) {
+ $vals['oldlen'] = intval( $row->rc_old_len );
+ $vals['newlen'] = intval( $row->rc_new_len );
}
+ /* Add the timestamp. */
if ( $this->fld_timestamp ) {
$vals['timestamp'] = wfTimestamp( TS_ISO_8601, $row->rc_timestamp );
}
- if ( $this->fld_sizes ) {
- $vals['oldlen'] = intval( $row->rc_old_len );
- $vals['newlen'] = intval( $row->rc_new_len );
- }
-
if ( $this->fld_notificationtimestamp ) {
$vals['notificationtimestamp'] = ( $row->wl_notificationtimestamp == null )
? ''
: wfTimestamp( TS_ISO_8601, $row->wl_notificationtimestamp );
}
- if ( $this->fld_comment && isset( $row->rc_comment ) ) {
- $vals['comment'] = $row->rc_comment;
+ /* Add edit summary / log summary. */
+ if ( $this->fld_comment || $this->fld_parsedcomment ) {
+ if ( $row->rc_deleted & Revision::DELETED_COMMENT ) {
+ $vals['commenthidden'] = '';
+ $anyHidden = true;
+ }
+ if ( Revision::userCanBitfield( $row->rc_deleted, Revision::DELETED_COMMENT, $user ) ) {
+ if ( $this->fld_comment && isset( $row->rc_comment ) ) {
+ $vals['comment'] = $row->rc_comment;
+ }
+
+ if ( $this->fld_parsedcomment && isset( $row->rc_comment ) ) {
+ $vals['parsedcomment'] = Linker::formatComment( $row->rc_comment, $title );
+ }
+ }
+ }
+
+ /* Add the patrolled flag */
+ if ( $this->fld_patrol && $row->rc_patrolled == 1 ) {
+ $vals['patrolled'] = '';
}
- if ( $this->fld_parsedcomment && isset( $row->rc_comment ) ) {
- $vals['parsedcomment'] = Linker::formatComment( $row->rc_comment, $title );
+ if ( $this->fld_patrol && ChangesList::isUnpatrolled( $row, $user ) ) {
+ $vals['unpatrolled'] = '';
}
if ( $this->fld_loginfo && $row->rc_type == RC_LOG ) {
- $vals['logid'] = intval( $row->rc_logid );
- $vals['logtype'] = $row->rc_log_type;
- $vals['logaction'] = $row->rc_log_action;
- $logEntry = DatabaseLogEntry::newFromRow( (array)$row );
- ApiQueryLogEvents::addLogParams(
- $this->getResult(),
- $vals,
- $logEntry->getParameters(),
- $logEntry->getType(),
- $logEntry->getSubtype(),
- $logEntry->getTimestamp()
- );
+ if ( $row->rc_deleted & LogPage::DELETED_ACTION ) {
+ $vals['actionhidden'] = '';
+ $anyHidden = true;
+ }
+ if ( LogEventsList::userCanBitfield( $row->rc_deleted, LogPage::DELETED_ACTION, $user ) ) {
+ $vals['logid'] = intval( $row->rc_logid );
+ $vals['logtype'] = $row->rc_log_type;
+ $vals['logaction'] = $row->rc_log_action;
+ $logEntry = DatabaseLogEntry::newFromRow( (array)$row );
+ ApiQueryLogEvents::addLogParams(
+ $this->getResult(),
+ $vals,
+ $logEntry->getParameters(),
+ $logEntry->getType(),
+ $logEntry->getSubtype(),
+ $logEntry->getTimestamp()
+ );
+ }
+ }
+
+ if ( $anyHidden && ( $row->rc_deleted & Revision::DELETED_RESTRICTED ) ) {
+ $vals['suppressed'] = '';
}
return $vals;
}
- /* Copied from ApiQueryRecentChanges. */
+ /** Copied from ApiQueryRecentChanges.
+ *
+ * @param string $type
+ * @return string
+ */
private function parseRCType( $type ) {
if ( is_array( $type ) ) {
$retval = array();
return $retval;
}
+
switch ( $type ) {
case 'edit':
return RC_EDIT;
return RC_LOG;
case 'external':
return RC_EXTERNAL;
+ default:
+ ApiBase::dieDebug( __METHOD__, "Unknown type '$type'" );
}
}
),
'token' => array(
ApiBase::PARAM_TYPE => 'string'
- )
+ ),
);
}
),
'owner' => 'The name of the user whose watchlist you\'d like to access',
'token' => 'Give a security token (settable in preferences) to ' .
- 'allow access to another user\'s watchlist'
+ 'allow access to another user\'s watchlist',
);
}
$p = $this->getModulePrefix();
return array(
- 'id' => "ID of the block you want to unblock (obtained through list=blocks). ' .
- 'Cannot be used together with {$p}user",
- 'user' => "Username, IP address or IP range you want to unblock. ' .
- 'Cannot be used together with {$p}id",
+ 'id' => "ID of the block you want to unblock (obtained through list=blocks). " .
+ "Cannot be used together with {$p}user",
+ 'user' => "Username, IP address or IP range you want to unblock. " .
+ "Cannot be used together with {$p}id",
'token' => "An unblock token previously obtained through prop=info",
'reason' => 'Reason for unblock',
);
* @ingroup API
*/
class ApiUpload extends ApiBase {
-
- /**
- * @var UploadBase
- */
+ /** @var UploadBase */
protected $mUpload = null;
protected $mParams;
$params = $this->extractRequestParams();
$title = Title::newFromText( $params['title'] );
- if ( !$title || $title->isExternal() || !$title->canExist() ) {
+ if ( !$title || !$title->isWatchable() ) {
$this->dieUsageMsg( array( 'invalidtitle', $params['title'] ) );
}
*/
class DependencyWrapper {
private $value;
+ /** @var CacheDependency[] */
private $deps;
/**
* Create an instance.
* @param $value Mixed: the user-supplied value
- * @param $deps Mixed: a dependency or dependency array. All dependencies
- * must be objects implementing CacheDependency.
+ * @param CacheDependency|CacheDependency[] $deps A dependency or dependency
+ * array. All dependencies must be objects implementing CacheDependency.
*/
function __construct( $value = false, $deps = array() ) {
$this->value = $value;
protected function readPHPFile( $_fileName, $_fileType ) {
wfProfileIn( __METHOD__ );
// Disable APC caching
+ wfSuppressWarnings();
$_apcEnabled = ini_set( 'apc.cache_by_default', '0' );
+ wfRestoreWarnings();
+
include $_fileName;
+
+ wfSuppressWarnings();
ini_set( 'apc.cache_by_default', $_apcEnabled );
+ wfRestoreWarnings();
if ( $_fileType == 'core' || $_fileType == 'extension' ) {
$data = compact( self::$allKeys );
$allData['list'][$key] = array_keys( $allData[$key] );
}
# Run hooks
- wfRunHooks( 'LocalisationCacheRecache', array( $this, $code, &$allData ) );
+ $purgeBlobs = true;
+ wfRunHooks( 'LocalisationCacheRecache', array( $this, $code, &$allData, &$purgeBlobs ) );
if ( is_null( $allData['namespaceNames'] ) ) {
wfProfileOut( __METHOD__ );
# Clear out the MessageBlobStore
# HACK: If using a null (i.e. disabled) storage backend, we
# can't write to the MessageBlobStore either
- if ( !$this->store instanceof LCStoreNull ) {
+ if ( $purgeBlobs && !$this->store instanceof LCStoreNull ) {
MessageBlobStore::clear();
}
* See Cdb.php and http://cr.yp.to/cdb.html
*/
class LCStoreCDB implements LCStore {
+ /** @var CdbReader[] */
private $readers;
+
+ /** @var CdbWriter */
private $writer;
+
+ /** @var string Current language code */
private $currentLang;
+
+ /** @var bool|string Cache directory. False if not set */
private $directory;
function __construct( $conf = array() ) {
}
/**
- * @param ObjectCache $memCached A cache instance. If none, fall back to CACHE_NONE.
+ * @param BagOStuff $memCached A cache instance. If none, fall back to CACHE_NONE.
* @param bool $useDB
* @param int $expiry Lifetime for cache. @see $mExpiry.
*/
$this->lastdate = '';
$this->rclistOpen = false;
$this->getOutput()->addModuleStyles( 'mediawiki.special.changeslist' );
- $this->getOutput()->addModules( 'mediawiki.special.changeslist.js' );
return '<div class="mw-changeslist">';
}
*/
class EnhancedChangesList extends ChangesList {
-
+ /** @var array Array of array of RCCacheEntry */
protected $rc_cache;
/**
* Add the JavaScript file for enhanced changeslist
- * @return String
+ * @return string
*/
public function beginRecentChangesList() {
$this->rc_cache = array();
$this->getOutput()->addModules( array(
'jquery.makeCollapsible',
'mediawiki.icon',
- 'mediawiki.special.changeslist.js',
) );
return '<div class="mw-changeslist">';
/**
* Format a line for enhanced recentchange (aka with javascript and block of lines).
*
- * @param $baseRC RecentChange
- * @param $watched bool
+ * @param RecentChange $baseRC
+ * @param bool $watched
*
* @return string
*/
// Page moves, very old style, not supported anymore
if ( $type == RC_MOVE || $type == RC_MOVE_OVER_REDIRECT ) {
+ $clink = '';
// New unpatrolled pages
} elseif ( $cacheEntry->unpatrolled && $type == RC_NEW ) {
$clink = Linker::linkKnown( $cacheEntry->getTitle() );
/**
* Enhanced RC group
+ * @param RCCacheEntry[] $block
* @return string
*/
protected function recentChangesBlockGroup( $block ) {
if ( $block[0]->mAttribs['rc_log_type'] ) {
# Log entry
$classes[] = Sanitizer::escapeClass( 'mw-changeslist-log-'
- . $block[0]->mAttribs['rc_log_type'] . '-' . $block[0]->mAttribs['rc_title'] );
+ . $block[0]->mAttribs['rc_log_type'] );
} else {
$classes[] = Sanitizer::escapeClass( 'mw-changeslist-ns'
. $block[0]->mAttribs['rc_namespace'] . '-' . $block[0]->mAttribs['rc_title'] );
# Some catalyst variables...
$namehidden = true;
$allLogs = true;
+ $oldid = '';
foreach ( $block as $rcObj ) {
$oldid = $rcObj->mAttribs['rc_last_oldid'];
if ( $rcObj->mAttribs['rc_type'] == RC_NEW ) {
$sinceLast = 0;
$unvisitedOldid = null;
+ /** @var $rcObj RCCacheEntry */
foreach ( $block as $rcObj ) {
// Same logic as below inside main foreach
if ( $rcObj->watched && $rcObj->mAttribs['rc_timestamp'] >= $rcObj->watched ) {
# Total change link
$r .= ' ';
$logtext = '';
+ /** @var $block0 RecentChange */
+ $block0 = $block[0];
if ( !$allLogs ) {
if ( !ChangesList::userCan( $rcObj, Revision::DELETED_TEXT, $this->getUser() ) ) {
$logtext .= $nchanges[$n];
$logtext .= $nchanges[$n];
} else {
$logtext .= Linker::link(
- $block[0]->getTitle(),
+ $block0->getTitle(),
$nchanges[$n],
array(),
$queryParams + array(
);
if ( $sinceLast > 0 && $sinceLast < $n ) {
$logtext .= $this->message['pipe-separator'] . Linker::link(
- $block[0]->getTitle(),
+ $block0->getTitle(),
$sinceLastVisitMsg[$sinceLast],
array(),
$queryParams + array(
# History
if ( $allLogs ) {
// don't show history link for logs
- } elseif ( $namehidden || !$block[0]->getTitle()->exists() ) {
+ } elseif ( $namehidden || !$block0->getTitle()->exists() ) {
$logtext .= $this->message['pipe-separator'] . $this->message['enhancedrc-history'];
} else {
$params = $queryParams;
$logtext .= $this->message['pipe-separator'] .
Linker::linkKnown(
- $block[0]->getTitle(),
+ $block0->getTitle(),
$this->message['enhancedrc-history'],
array(),
$params
}
$r .= $users;
- $r .= $this->numberofWatchingusers( $block[0]->numberofWatchingusers );
+ $r .= $this->numberofWatchingusers( $block0->numberofWatchingusers );
$r .= '</td></tr>';
# Sub-entries
/**
* Generate HTML for an arrow or placeholder graphic
- * @param string $dir one of '', 'd', 'l', 'r'
- * @param string $alt text
- * @param string $title text
- * @return String: HTML "<img>" tag
+ * @param string $dir One of '', 'd', 'l', 'r'
+ * @param string $alt
+ * @param string $title
+ * @return string HTML "<img>" tag
*/
protected function arrow( $dir, $alt = '', $title = '' ) {
global $wgStylePath;
/**
* Generate HTML for a right- or left-facing arrow,
* depending on language direction.
- * @return String: HTML "<img>" tag
+ * @return string HTML "<img>" tag
*/
protected function sideArrow() {
$dir = $this->getLanguage()->isRTL() ? 'l' : 'r';
/**
* Generate HTML for a down-facing arrow
* depending on language direction.
- * @return String: HTML "<img>" tag
+ * @return string HTML "<img>" tag
*/
protected function downArrow() {
return $this->arrow( 'd', '-', $this->msg( 'rc-enhanced-hide' )->text() );
/**
* Generate HTML for a spacer image
- * @return String: HTML "<img>" tag
+ * @return string HTML "<img>" tag
*/
protected function spacerArrow() {
return $this->arrow( '', codepointToUtf8( 0xa0 ) ); // non-breaking space
/**
* Enhanced RC ungrouped line.
*
- * @param $rcObj RecentChange
- * @return String: a HTML formatted line (generated using $r)
+ * @param RecentChange|RCCacheEntry $rcObj
+ * @return string A HTML formatted line (generated using $r)
*/
protected function recentChangesBlockLine( $rcObj ) {
global $wgRCShowChangedSize;
$classes = array( 'mw-enhanced-rc' );
if ( $logType ) {
# Log entry
- $classes[] = Sanitizer::escapeClass( 'mw-changeslist-log-'
- . $logType . '-' . $rcObj->mAttribs['rc_title'] );
+ $classes[] = Sanitizer::escapeClass( 'mw-changeslist-log-' . $logType );
} else {
$classes[] = Sanitizer::escapeClass( 'mw-changeslist-ns' .
$rcObj->mAttribs['rc_namespace'] . '-' . $rcObj->mAttribs['rc_title'] );
* temporary: not stored in the database
* notificationtimestamp
* numberofWatchingusers
- *
- * @todo document functions and variables
*/
class RecentChange {
// Constants for the rc_source field. Extensions may also have
global $wgRCFeeds;
foreach ( $wgRCFeeds as $feed ) {
- $engine = self::getEngine( $feed['uri'] );
-
- if ( isset( $this->mExtra['actionCommentIRC'] ) ) {
- $actionComment = $this->mExtra['actionCommentIRC'];
- } else {
- $actionComment = null;
- }
-
$omitBots = isset( $feed['omit_bots'] ) ? $feed['omit_bots'] : false;
if (
continue;
}
+ $engine = self::getEngine( $feed['uri'] );
+
+ if ( isset( $this->mExtra['actionCommentIRC'] ) ) {
+ $actionComment = $this->mExtra['actionCommentIRC'];
+ } else {
+ $actionComment = null;
+ }
+
/** @var $formatter RCFeedFormatter */
$formatter = new $feed['formatter']();
$line = $formatter->getLine( $feed, $this, $actionComment );
*
* @param string $uri URI to get the engine object for
* @throws MWException
- * @return object The engine object
+ * @return RCFeedEngine The engine object
*/
- private static function getEngine( $uri ) {
+ public static function getEngine( $uri ) {
global $wgRCEngines;
$scheme = parse_url( $uri, PHP_URL_SCHEME );
/**
* Makes an entry in the database corresponding to page creation
* Note: the title object must be loaded with the new id using resetArticleID()
- * @todo Document parameters and return
*
* @param $timestamp
* @param $title Title
--- /dev/null
+<?php
+/**
+ * Copyright 2014
+ *
+ * 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
+ */
+
+/**
+ * Abstract class for get settings for
+ *
+ * @since 1.23
+ */
+
+abstract class Config {
+
+ /**
+ * @param string $name configuration variable name without prefix
+ * @param string $prefix of the variable name
+ * @return mixed
+ */
+ abstract public function get( $name, $prefix = 'wg' );
+
+ /**
+ * @param string $name configuration variable name without prefix
+ * @param mixed $value to set
+ * @param string $prefix of the variable name
+ * @return Status object indicating success or failure
+ */
+ abstract public function set( $name, $value, $prefix = 'wg' );
+
+ /**
+ * @param string|null $type class name for Config object,
+ * uses $wgConfigClass if not provided
+ * @return Config
+ */
+ public static function factory( $type = null ) {
+ if ( !$type ) {
+ global $wgConfigClass;
+ $type = $wgConfigClass;
+ }
+
+ return new $type;
+ }
+}
--- /dev/null
+<?php
+/**
+ * Copyright 2014
+ *
+ * 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
+ */
+
+/**
+ * Accesses configuration settings from $GLOBALS
+ *
+ * @since 1.23
+ */
+class GlobalConfig extends Config {
+
+ /**
+ * @see Config::get
+ */
+ public function get( $name, $prefix = 'wg' ) {
+ return $GLOBALS[$prefix . $name];
+ }
+
+ /**
+ * @see Config::set
+ */
+ public function set( $name, $value, $prefix = 'wg' ) {
+ $GLOBALS[$prefix . $name] = $value;
+ return Status::newGood();
+ }
+}
* typically based on the namespace or some other aspect of the title, such as a special suffix
* (e.g. ".svg" for SVG content).
*
+ * @note: this calls the ContentHandlerCanBeUsedOn hook which may be used to override which
+ * content model can be used where.
+ *
* @param Title $title the page's title.
*
* @return bool true if content of this kind can be used on the given page, false otherwise.
*/
public function canBeUsedOn( Title $title ) {
- return true;
+ $ok = true;
+
+ wfRunHooks( 'ContentModelCanBeUsedOn', array( $this->getModelID(), $title, &$ok ) );
+
+ return $ok;
}
/**
}
/**
- * Get parser options suitable for rendering the primary article wikitext
+ * Get parser options suitable for rendering and caching the article
*
* @param IContextSource|User|string $context One of the following:
* - IContextSource: Use the User and the Language of the provided
* - 'canonical': Canonical options (anonymous user with default
* preferences and content language).
*
- * @param IContextSource|User|string $context
- *
* @throws MWException
* @return ParserOptions
*/
}
/**
- * Implement redirect extraction for wikitext.
- *
- * @return null|Title
+ * Extract the redirect target and the remaining text on the page.
*
* @note: migrated here from Title::newFromRedirectInternal()
*
- * @see Content::getRedirectTarget
- * @see AbstractContent::getRedirectTarget
+ * @since 1.23
+ * @return array 2 elements: Title|null and string
*/
- public function getRedirectTarget() {
+ protected function getRedirectTargetAndText() {
global $wgMaxRedirects;
if ( $wgMaxRedirects < 1 ) {
// redirects are disabled, so quit early
- return null;
+ return array( null, $this->getNativeData() );
}
$redir = MagicWord::get( 'redirect' );
- $text = trim( $this->getNativeData() );
+ $text = ltrim( $this->getNativeData() );
if ( $redir->matchStartAndRemove( $text ) ) {
// Extract the first link and see if it's usable
// Ensure that it really does come directly after #REDIRECT
// Some older redirects included a colon, so don't freak about that!
$m = array();
- if ( preg_match( '!^\s*:?\s*\[{2}(.*?)(?:\|.*?)?\]{2}!', $text, $m ) ) {
+ if ( preg_match( '!^\s*:?\s*\[{2}(.*?)(?:\|.*?)?\]{2}\s*!', $text, $m ) ) {
// Strip preceding colon used to "escape" categories, etc.
// and URL-decode links
if ( strpos( $m[1], '%' ) !== false ) {
$title = Title::newFromText( $m[1] );
// If the title is a redirect to bad special pages or is invalid, return null
if ( !$title instanceof Title || !$title->isValidRedirectTarget() ) {
- return null;
+ return array( null, $this->getNativeData() );
}
- return $title;
+ return array( $title, substr( $text, strlen( $m[0] ) ) );
}
}
- return null;
+ return array( null, $this->getNativeData() );
+ }
+
+ /**
+ * Implement redirect extraction for wikitext.
+ *
+ * @return null|Title
+ *
+ * @see Content::getRedirectTarget
+ * @see AbstractContent::getRedirectTarget
+ */
+ public function getRedirectTarget() {
+ list( $title, ) = $this->getRedirectTargetAndText();
+ return $title;
}
/**
$options = $this->getContentHandler()->makeParserOptions( 'canonical' );
}
- $po = $wgParser->parse( $this->getNativeData(), $title, $options, true, true, $revId );
+ list( $redir, $text ) = $this->getRedirectTargetAndText();
+ $po = $wgParser->parse( $text, $title, $options, true, true, $revId );
+
+ // Add redirect indicator at the top
+ if ( $redir ) {
+ // Make sure to include the redirect link in pagelinks
+ $po->addLink( $redir );
+ if ( $generateHtml ) {
+ $chain = $this->getRedirectChain();
+ $po->setText(
+ Article::getRedirectHeaderHtml( $title->getPageLanguage(), $chain, false ) .
+ $po->getText()
+ );
+ }
+ }
return $po;
}
}
/**
- * Get the SiteConfiguration object
+ * Get the Config object
*
* @since 1.23
- * @return SiteConfiguration
+ * @return Config
*/
public function getConfig() {
return $this->getContext()->getConfig();
}
/**
- * Get the SiteConfiguration object
+ * Get the Config object
*
- * @return SiteConfiguration
+ * @return Config
*/
public function getConfig() {
if ( !is_null( $this->config ) ) {
* Get the site configuration
*
* @since 1.23
- * @return SiteConfiguration
+ * @return Config
*/
public function getConfig();
private $skin;
/**
- * @var SiteConfiguration
+ * @var Config
*/
private $config;
/**
- * Set the SiteConfiguration object
+ * Set the Config object
*
- * @param SiteConfiguration $c
+ * @param Config $c
*/
- public function setConfig( SiteConfiguration $c ) {
+ public function setConfig( Config $c ) {
$this->config = $c;
}
/**
- * Get the SiteConfiguration object
+ * Get the Config object
*
- * @return SiteConfiguration
+ * @return Config
*/
public function getConfig() {
if ( $this->config === null ) {
- global $wgConf;
- $this->config = $wgConf;
+ $this->config = Config::factory();
}
return $this->config;
}
* Kind of like Hawking's [[Chronology Protection Agency]].
*/
class ChronologyProtector {
- /** @var Array (DB master name => position) */
+ /** @var array (DB master name => position) */
protected $startupPositions = array();
- /** @var Array (DB master name => position) */
+
+ /** @var array (DB master name => position) */
protected $shutdownPositions = array();
- protected $initialized = false; // bool; whether the session data was loaded
+ /** @var bool Whether the session data was loaded */
+ protected $initialized = false;
/**
* Initialise a LoadBalancer to give it appropriate chronology protection.
* to that position by delaying execution. The delay may timeout and allow stale
* data if no non-lagged slaves are available.
*
- * @param $lb LoadBalancer
+ * @param LoadBalancer $lb
* @return void
*/
public function initLB( LoadBalancer $lb ) {
* Notify the ChronologyProtector that the LoadBalancer is about to shut
* down. Saves replication positions.
*
- * @param $lb LoadBalancer
+ * @param LoadBalancer $lb
* @return void
*/
public function shutdownLB( LoadBalancer $lb ) {
*/
class CloneDatabase {
- /**
- * Table prefix for cloning
- * @var String
- */
+ /** @var string Table prefix for cloning */
private $newTablePrefix = '';
- /**
- * Current table prefix
- * @var String
- */
+ /** @var string Current table prefix */
private $oldTablePrefix = '';
- /**
- * List of tables to be cloned
- * @var Array
- */
+ /** @var array List of tables to be cloned */
private $tablesToClone = array();
- /**
- * Should we DROP tables containing the new names?
- * @var Bool
- */
+ /** @var bool Should we DROP tables containing the new names? */
private $dropCurrentTables = true;
- /**
- * Whether to use temporary tables or not
- * @var Bool
- */
+ /** @var bool Whether to use temporary tables or not */
private $useTemporaryTables = true;
/**
* Constructor
*
- * @param $db DatabaseBase A database subclass
+ * @param DatabaseBase $db A database subclass
* @param array $tablesToClone An array of tables to clone, unprefixed
* @param string $newTablePrefix Prefix to assign to the tables
* @param string $oldTablePrefix Prefix on current tables, if not $wgDBprefix
- * @param $dropCurrentTables bool
+ * @param bool $dropCurrentTables
*/
public function __construct( DatabaseBase $db, array $tablesToClone,
$newTablePrefix, $oldTablePrefix = '', $dropCurrentTables = true
/**
* Change the table prefix on all open DB connections/
*
- * @param $prefix
+ * @param string $prefix
* @return void
*/
public static function changePrefix( $prefix ) {
}
/**
- * @param $lb LoadBalancer
- * @param $prefix
+ * @param LoadBalancer $lb
+ * @param string $prefix
* @return void
*/
public static function changeLBPrefix( $lb, $prefix ) {
}
/**
- * @param $db DatabaseBase
- * @param $prefix
+ * @param DatabaseBase $db
+ * @param string $prefix
* @return void
*/
public static function changeDBPrefix( $db, $prefix ) {
* member variables.
* If no more rows are available, false is returned.
*
- * @param $res ResultWrapper|object as returned from DatabaseBase::query(), etc.
- * @return object|bool
+ * @param ResultWrapper|stdClass $res Object as returned from DatabaseBase::query(), etc.
+ * @return stdClass|bool
* @throws DBUnexpectedError Thrown if the database returns an error
*/
function fetchObject( $res );
/**
* Fetch the next row from the given result object, in associative array
- * form. Fields are retrieved with $row['fieldname'].
+ * form. Fields are retrieved with $row['fieldname'].
* If no more rows are available, false is returned.
*
- * @param $res ResultWrapper result object as returned from DatabaseBase::query(), etc.
+ * @param ResultWrapper $res Result object as returned from DatabaseBase::query(), etc.
* @return array|bool
* @throws DBUnexpectedError Thrown if the database returns an error
*/
/**
* Get the number of rows in a result object
*
- * @param $res Mixed: A SQL result
+ * @param mixed $res A SQL result
* @return int
*/
function numRows( $res );
* Get the number of fields in a result object
* @see http://www.php.net/mysql_num_fields
*
- * @param $res Mixed: A SQL result
+ * @param mixed $res A SQL result
* @return int
*/
function numFields( $res );
* Get a field name in a result object
* @see http://www.php.net/mysql_field_name
*
- * @param $res Mixed: A SQL result
- * @param $n Integer
+ * @param mixed $res A SQL result
+ * @param int $n
* @return string
*/
function fieldName( $res, $n );
* Change the position of the cursor in a result object
* @see http://www.php.net/mysql_data_seek
*
- * @param $res Mixed: A SQL result
- * @param $row Mixed: Either MySQL row or ResultWrapper
+ * @param mixed $res A SQL result
+ * @param int $row
*/
function dataSeek( $res, $row );
* mysql_fetch_field() wrapper
* Returns false if the field doesn't exist
*
- * @param string $table table name
- * @param string $field field name
+ * @param string $table Table name
+ * @param string $field Field name
*
* @return Field
*/
* @param string $table Table name
* @param string $index Index name
* @param string $fname Calling function name
- * @return Mixed: Database-specific index description class or false if the index does not exist
+ * @return mixed Database-specific index description class or false if the index does not exist
*/
function indexInfo( $table, $index, $fname = __METHOD__ );
/**
* Wrapper for addslashes()
*
- * @param string $s to be slashed.
- * @return string: slashed string.
+ * @param string $s String to be slashed.
+ * @return string Slashed string.
*/
function strencode( $s );
/**
* Returns a wikitext link to the DB's website, e.g.,
- * return "[http://www.mysql.com/ MySQL]";
+ * return "[http://www.mysql.com/ MySQL]";
* Should at least contain plain text, if for some reason
* your database has no website.
*
- * @return string: wikitext of a link to the server software's web site
+ * @return string Wikitext of a link to the server software's web site
*/
function getSoftwareLink();
* A string describing the current software version, like from
* mysql_get_server_info().
*
- * @return string: Version information from the database server.
+ * @return string Version information from the database server.
*/
function getServerVersion();
/**
* A string describing the current software version, and possibly
- * other details in a user-friendly way. Will be listed on Special:Version, etc.
+ * other details in a user-friendly way. Will be listed on Special:Version, etc.
* Use getServerVersion() to get machine-friendly information.
*
- * @return string: Version information from the database server
+ * @return string Version information from the database server
*/
function getServerInfo();
}
abstract class DatabaseBase implements IDatabase, DatabaseType {
/** Number of times to re-try an operation in case of deadlock */
const DEADLOCK_TRIES = 4;
+
/** Minimum time to wait before retry, in microseconds */
const DEADLOCK_DELAY_MIN = 500000;
+
/** Maximum time to wait before retry */
const DEADLOCK_DELAY_MAX = 1500000;
protected $mServer, $mUser, $mPassword, $mDBname;
+ /** @var resource Database connection */
protected $mConn = null;
protected $mOpened = false;
protected $mForeign;
protected $mErrorCount = 0;
protected $mLBInfo = array();
- protected $mFakeSlaveLag = null, $mFakeMaster = false;
protected $mDefaultBigSelects = null;
protected $mSchemaVars = false;
* Remembers the function name given for starting the most recent transaction via begin().
* Used to provide additional context for error reporting.
*
- * @var String
+ * @var string
* @see DatabaseBase::mTrxLevel
*/
private $mTrxFname = null;
/**
* Record if possible write queries were done in the last transaction started
*
- * @var Bool
+ * @var bool
* @see DatabaseBase::mTrxLevel
*/
private $mTrxDoneWrites = false;
/**
* Record if the current transaction was started implicitly due to DBO_TRX being set.
*
- * @var Bool
+ * @var bool
* @see DatabaseBase::mTrxLevel
*/
private $mTrxAutomatic = false;
/**
* Record if the current transaction was started implicitly by DatabaseBase::startAtomic
*
- * @var Bool
+ * @var bool
*/
private $mTrxAutomaticAtomic = false;
/**
* @since 1.21
- * @var file handle for upgrade
+ * @var resource File handle for upgrade
*/
protected $fileHandle = null;
/**
* @since 1.22
- * @var Process cache of VIEWs names in the database
+ * @var string[] Process cache of VIEWs names in the database
*/
protected $allViews = null;
/**
* A string describing the current software version, and possibly
- * other details in a user-friendly way. Will be listed on Special:Version, etc.
+ * other details in a user-friendly way. Will be listed on Special:Version, etc.
* Use getServerVersion() to get machine-friendly information.
*
- * @return string: Version information from the database server
+ * @return string Version information from the database server
*/
public function getServerInfo() {
return $this->getServerVersion();
}
/**
- * @return string: command delimiter used by this database engine
+ * @return string command delimiter used by this database engine
*/
public function getDelimiter() {
return $this->delimiter;
/**
* Boolean, controls output of large amounts of debug information.
- * @param $debug bool|null
+ * @param bool|null $debug
* - true to enable debugging
* - false to disable debugging
* - omitted or null to do nothing
* split up queries into batches using a LIMIT clause than to switch off
* buffering.
*
- * @param $buffer null|bool
- *
+ * @param null|bool $buffer
* @return null|bool The previous value of the flag
*/
public function bufferResults( $buffer = null ) {
*
* Do not use this function outside of the Database classes.
*
- * @param $ignoreErrors bool|null
- *
+ * @param null|bool $ignoreErrors
* @return bool The previous value of the flag.
*/
public function ignoreErrors( $ignoreErrors = null ) {
/**
* Set the filehandle to copy write statements to.
*
- * @param $fh filehandle
+ * @param resource $fh File handle
*/
public function setFileHandle( $fh ) {
$this->fileHandle = $fh;
* @param string $name The entry of the info array to get, or null to get the
* whole array
*
- * @return LoadBalancer|null
+ * @return array|mixed|null
*/
public function getLBInfo( $name = null ) {
if ( is_null( $name ) ) {
* the LB info array is set to that parameter. If it is called with two
* parameters, the member with the given name is set to the given value.
*
- * @param $name
+ * @param string $name
* @param $value
*/
public function setLBInfo( $name, $value = null ) {
/**
* Set lag time in seconds for a fake slave
*
- * @param $lag int
+ * @param mixed $lag Valid values for this parameter are determined by the
+ * subclass, but should be a PHP scalar or array that would be sensible
+ * as part of $wgLBFactoryConf.
*/
public function setFakeSlaveLag( $lag ) {
- $this->mFakeSlaveLag = $lag;
}
/**
* Make this connection a fake master
*
- * @param $enabled bool
+ * @param bool $enabled
*/
public function setFakeMaster( $enabled = true ) {
- $this->mFakeMaster = $enabled;
}
/**
/**
* Return the last query that went through DatabaseBase::query()
- * @return String
+ * @return string
*/
public function lastQuery() {
return $this->mLastQuery;
/**
* Is a connection to the database open?
- * @return Boolean
+ * @return bool
*/
public function isOpen() {
return $this->mOpened;
/**
* Set a flag for this connection
*
- * @param $flag Integer: DBO_* constants from Defines.php:
+ * @param int $flag DBO_* constants from Defines.php:
* - DBO_DEBUG: output some debug info (same as debug())
* - DBO_NOBUFFER: don't buffer results (inverse of bufferResults())
* - DBO_TRX: automatically start transactions
global $wgDebugDBTransactions;
$this->mFlags |= $flag;
if ( ( $flag & DBO_TRX ) & $wgDebugDBTransactions ) {
- wfDebug( "Implicit transactions are now disabled.\n" );
+ wfDebug( "Implicit transactions are now disabled.\n" );
}
}
/**
* Clear a flag for this connection
*
- * @param $flag : same as setFlag()'s $flag param
+ * @param int $flag DBO_* constants from Defines.php:
+ * - DBO_DEBUG: output some debug info (same as debug())
+ * - DBO_NOBUFFER: don't buffer results (inverse of bufferResults())
+ * - DBO_TRX: automatically start transactions
+ * - DBO_DEFAULT: automatically sets DBO_TRX if not in command line mode
+ * and removes it in command line mode
+ * - DBO_PERSISTENT: use persistant database connection
*/
public function clearFlag( $flag ) {
global $wgDebugDBTransactions;
/**
* Returns a boolean whether the flag $flag is set for this connection
*
- * @param $flag : same as setFlag()'s $flag param
- * @return Boolean
+ * @param int $flag DBO_* constants from Defines.php:
+ * - DBO_DEBUG: output some debug info (same as debug())
+ * - DBO_NOBUFFER: don't buffer results (inverse of bufferResults())
+ * - DBO_TRX: automatically start transactions
+ * - DBO_DEFAULT: automatically sets DBO_TRX if not in command line mode
+ * and removes it in command line mode
+ * - DBO_PERSISTENT: use persistant database connection
+ * @return bool
*/
public function getFlag( $flag ) {
return !!( $this->mFlags & $flag );
/**
* General read-only accessor
*
- * @param $name string
- *
+ * @param string $name
* @return string
*/
public function getProperty( $name ) {
* DatabaseBase subclasses should not be constructed directly in external
* code. DatabaseBase::factory() should be used instead.
*
- * @param array Parameters passed from DatabaseBase::factory()
+ * @param array $params Parameters passed from DatabaseBase::factory()
*/
function __construct( $params = null ) {
global $wgDBprefix, $wgCommandLineMode, $wgDebugDBTransactions;
* @param string $dbType A possible DB type
* @param array $p An array of options to pass to the constructor.
* Valid options are: host, user, password, dbname, flags, tablePrefix, driver
- * @return DatabaseBase subclass or null
+ * @throws MWException If the database driver or extension cannot be found
+ * @return DatabaseBase|null DatabaseBase subclass or null
*/
final public static function factory( $dbType, $p = array() ) {
$canonicalDBTypes = array(
/**
* @param $errno
- * @param $errstr
- * @access private
+ * @param string $errstr
*/
public function connectionErrorHandler( $errno, $errstr ) {
$this->mPHPError = $errstr;
* if it is open : commits any open transactions
*
* @throws MWException
- * @return Bool operation success. true if already closed.
+ * @return bool Operation success. true if already closed.
*/
public function close() {
if ( count( $this->mTrxIdleCallbacks ) ) { // sanity
/**
* Closes underlying database connection
* @since 1.20
- * @return bool: Whether connection was closed successfully
+ * @return bool Whether connection was closed successfully
*/
abstract protected function closeConnection();
/**
- * @param string $error fallback error message, used if none is given by DB
+ * @param string $error Fallback error message, used if none is given by DB
* @throws DBConnectionError
*/
function reportConnectionError( $error = 'Unknown error' ) {
/**
* The DBMS-dependent part of query()
*
- * @param $sql String: SQL query.
- * @return ResultWrapper Result object to feed to fetchObject, fetchRow, ...; or false on failure
+ * @param string $sql SQL query.
+ * @return ResultWrapper|bool Result object to feed to fetchObject,
+ * fetchRow, ...; or false on failure
*/
abstract protected function doQuery( $sql );
* Determine whether a query writes to the DB.
* Should return true if unsure.
*
- * @param $sql string
- *
+ * @param string $sql
* @return bool
*/
public function isWriteQuery( $sql ) {
*
* However, the query wrappers themselves should call this function.
*
- * @param $sql String: SQL query
- * @param $fname String: Name of the calling function, for profiling/SHOW PROCESSLIST
+ * @param string $sql SQL query
+ * @param string $fname Name of the calling function, for profiling/SHOW PROCESSLIST
* comment (you can use __METHOD__ or add some extra info)
- * @param $tempIgnore Boolean: Whether to avoid throwing an exception on errors...
+ * @param bool $tempIgnore Whether to avoid throwing an exception on errors...
* maybe best to catch the exception instead?
* @throws MWException
- * @return boolean|ResultWrapper. true for a successful write query, ResultWrapper object
+ * @return bool|ResultWrapper True for a successful write query, ResultWrapper object
* for a successful read query, or false on failure if $tempIgnore set
*/
public function query( $sql, $fname = __METHOD__, $tempIgnore = false ) {
Profiler::instance()->transactionWritingIn( $this->mServer, $this->mDBname );
}
+ $queryProf = '';
+ $totalProf = '';
$isMaster = !is_null( $this->getLBInfo( 'master' ) );
+
if ( !Profiler::instance()->isStub() ) {
# generalizeSQL will probably cut down the query to reasonable
# logging size most of the time. The substr is really just a sanity check.
* Report a query error. Log the error, and if neither the object ignore
* flag nor the $tempIgnore flag is set, throw a DBQueryError.
*
- * @param $error String
- * @param $errno Integer
- * @param $sql String
- * @param $fname String
- * @param $tempIgnore Boolean
+ * @param string $error
+ * @param int $errno
+ * @param string $sql
+ * @param string $fname
+ * @param bool $tempIgnore
* @throws DBQueryError
*/
public function reportQueryError( $error, $errno, $sql, $fname, $tempIgnore = false ) {
* & = filename; reads the file and inserts as a blob
* (we don't use this though...)
*
- * @param $sql string
- * @param $func string
+ * @param string $sql
+ * @param string $func
*
* @return array
*/
protected function prepare( $sql, $func = 'DatabaseBase::prepare' ) {
/* MySQL doesn't support prepared statements (yet), so just
- pack up the query for reference. We'll manually replace
- the bits later. */
+ * pack up the query for reference. We'll manually replace
+ * the bits later.
+ */
return array( 'query' => $sql, 'func' => $func );
}
/**
* Free a prepared query, generated by prepare().
- * @param $prepared
+ * @param string $prepared
*/
protected function freePrepared( $prepared ) {
/* No-op by default */
/**
* Execute a prepared query with the various arguments
* @param string $prepared the prepared sql
- * @param $args Mixed: Either an array here, or put scalars as varargs
+ * @param mixed $args Either an array here, or put scalars as varargs
*
* @return ResultWrapper
*/
/**
* For faking prepared SQL statements on DBs that don't support it directly.
*
- * @param string $preparedQuery a 'preparable' SQL statement
- * @param array $args of arguments to fill it with
- * @return string executable SQL
+ * @param string $preparedQuery A 'preparable' SQL statement
+ * @param array $args of Arguments to fill it with
+ * @return string Executable SQL
*/
public function fillPrepared( $preparedQuery, $args ) {
reset( $args );
* The arguments should be in $this->preparedArgs and must not be touched
* while we're doing this.
*
- * @param $matches Array
+ * @param array $matches
* @throws DBUnexpectedError
- * @return String
+ * @return string
*/
protected function fillPreparedArg( $matches ) {
switch ( $matches[1] ) {
* necessary to call this, just use unset() or let the variable holding
* the result object go out of scope.
*
- * @param $res Mixed: A SQL result
+ * @param mixed $res A SQL result
*/
public function freeResult( $res ) {
}
* Returns an optional USE INDEX clause to go after the table, and a
* string to go at the end of the query.
*
- * @param array $options associative array of options to be turned into
- * an SQL query, valid keys are listed in the function.
- * @return Array
+ * @param array $options Associative array of options to be turned into
+ * an SQL query, valid keys are listed in the function.
+ * @return array
* @see DatabaseBase::select()
*/
public function makeSelectOptions( $options ) {
/**
* Returns an optional GROUP BY with an optional HAVING
*
- * @param array $options associative array of options
+ * @param array $options Associative array of options
* @return string
* @see DatabaseBase::select()
* @since 1.21
/**
* Returns an optional ORDER BY
*
- * @param array $options associative array of options
+ * @param array $options Associative array of options
* @return string
* @see DatabaseBase::select()
* @since 1.21
* @param string|array $conds Conditions
* @param string $fname Caller function name
* @param array $options Query options
- * @param $join_conds Array Join conditions
+ * @param array $join_conds Join conditions
*
- * @param $table string|array
+ * @param string|array $table
*
* May be either an array of table names, or a single string holding a table
* name. If an array is given, table aliases can be specified, for example:
* added, and various other table name mappings to be performed.
*
*
- * @param $vars string|array
+ * @param string|array $vars
*
* May be either a field name or an array of field names. The field names
* can be complete fragments of SQL, for direct inclusion into the SELECT
* DBMS-independent.
*
*
- * @param $conds string|array
+ * @param string|array $conds
*
* May be either a string containing a single condition, or an array of
* conditions. If an array is given, the conditions constructed from each
* - DatabaseBase::conditional()
*
*
- * @param $options string|array
+ * @param string|array $options
*
* Optional: Array of query options. Boolean options are specified by
* including them in the array as a string value with a numeric key, for
* - SQL_NO_CACHE
*
*
- * @param $join_conds string|array
+ * @param string|array $join_conds
*
* Optional associative array of table-specific join conditions. In the
* most common case, this is unnecessary, since the join condition can be
*
* array( 'page' => array( 'LEFT JOIN', 'page_latest=rev_id' ) )
*
- * @return ResultWrapper. If the query returned no rows, a ResultWrapper
+ * @return ResultWrapper|bool If the query returned no rows, a ResultWrapper
* with no rows in it will be returned. If there was a query error, a
* DBQueryError exception will be thrown, except if the "ignore errors"
* option was set, in which case false will be returned.
* @param string|array $conds Conditions
* @param string $fname Caller function name
* @param string|array $options Query options
- * @param $join_conds string|array Join conditions
+ * @param string|array $join_conds Join conditions
*
* @return string SQL query string.
* @see DatabaseBase::select()
* @param array $conds Conditions
* @param string $fname Caller function name
* @param string|array $options Query options
- * @param $join_conds array|string Join conditions
+ * @param array|string $join_conds Join conditions
*
* @return stdClass|bool
*/
*
* Takes the same arguments as DatabaseBase::select().
*
- * @param string $table table name
- * @param array|string $vars : unused
- * @param array|string $conds : filters on the table
- * @param string $fname function name for profiling
- * @param array $options options for select
- * @return Integer: row count
+ * @param string $table Table name
+ * @param string $vars Unused
+ * @param array|string $conds Filters on the table
+ * @param string $fname Function name for profiling
+ * @param array $options Options for select
+ * @return int Row count
*/
public function estimateRowCount( $table, $vars = '*', $conds = '',
$fname = __METHOD__, $options = array()
/**
* Determines whether a field exists in a table
*
- * @param string $table table name
- * @param string $field filed to check on that table
- * @param string $fname calling function name (optional)
- * @return Boolean: whether $table has filed $field
+ * @param string $table Table name
+ * @param string $field Filed to check on that table
+ * @param string $fname Calling function name (optional)
+ * @return bool Whether $table has filed $field
*/
public function fieldExists( $table, $field, $fname = __METHOD__ ) {
$info = $this->fieldInfo( $table, $field );
* Usually throws a DBQueryError on failure
* If errors are explicitly ignored, returns NULL on failure
*
- * @param $table
- * @param $index
- * @param $fname string
- *
+ * @param string $table
+ * @param string $index
+ * @param string $fname
* @return bool|null
*/
public function indexExists( $table, $index, $fname = __METHOD__ ) {
/**
* Query whether a given table exists
*
- * @param $table string
- * @param $fname string
- *
+ * @param string $table
+ * @param string $fname
* @return bool
*/
public function tableExists( $table, $fname = __METHOD__ ) {
/**
* Determines if a given index is unique
*
- * @param $table string
- * @param $index string
+ * @param string $table
+ * @param string $index
*
* @return bool
*/
/**
* Helper for DatabaseBase::insert().
*
- * @param $options array
+ * @param array $options
* @return string
*/
protected function makeInsertOptions( $options ) {
* possible to determine how many rows were successfully inserted using
* DatabaseBase::affectedRows().
*
- * @param $table String Table name. This will be passed through
- * DatabaseBase::tableName().
- * @param $a Array of rows to insert
- * @param $fname String Calling function name (use __METHOD__) for logs/profiling
+ * @param string $table Table name. This will be passed through
+ * DatabaseBase::tableName().
+ * @param array $a Array of rows to insert
+ * @param string $fname Calling function name (use __METHOD__) for logs/profiling
* @param array $options of options
*
* @return bool
/**
* UPDATE wrapper. Takes a condition array and a SET array.
*
- * @param $table String name of the table to UPDATE. This will be passed through
- * DatabaseBase::tableName().
- *
+ * @param string $table Name of the table to UPDATE. This will be passed through
+ * DatabaseBase::tableName().
* @param array $values An array of values to SET. For each array element,
- * the key gives the field name, and the value gives the data
- * to set that field to. The data will be quoted by
- * DatabaseBase::addQuotes().
- *
- * @param $conds Array: An array of conditions (WHERE). See
- * DatabaseBase::select() for the details of the format of
- * condition arrays. Use '*' to update all rows.
- *
- * @param $fname String: The function name of the caller (from __METHOD__),
- * for logging and profiling.
- *
+ * the key gives the field name, and the value gives the data to set
+ * that field to. The data will be quoted by DatabaseBase::addQuotes().
+ * @param array $conds An array of conditions (WHERE). See
+ * DatabaseBase::select() for the details of the format of condition
+ * arrays. Use '*' to update all rows.
+ * @param string $fname The function name of the caller (from __METHOD__),
+ * for logging and profiling.
* @param array $options An array of UPDATE options, can be:
- * - IGNORE: Ignore unique key conflicts
- * - LOW_PRIORITY: MySQL-specific, see MySQL manual.
- * @return Boolean
+ * - IGNORE: Ignore unique key conflicts
+ * - LOW_PRIORITY: MySQL-specific, see MySQL manual.
+ * @return bool
*/
function update( $table, $values, $conds, $fname = __METHOD__, $options = array() ) {
$table = $this->tableName( $table );
/**
* Makes an encoded list of strings from an array
- * @param array $a containing the data
- * @param int $mode Constant
- * - LIST_COMMA: comma separated, no field names
- * - LIST_AND: ANDed WHERE clause (without the WHERE). See
- * the documentation for $conds in DatabaseBase::select().
- * - LIST_OR: ORed WHERE clause (without the WHERE)
- * - LIST_SET: comma separated with field names, like a SET clause
- * - LIST_NAMES: comma separated field names
*
+ * @param array $a Containing the data
+ * @param int $mode Constant
+ * - LIST_COMMA: Comma separated, no field names
+ * - LIST_AND: ANDed WHERE clause (without the WHERE). See the
+ * documentation for $conds in DatabaseBase::select().
+ * - LIST_OR: ORed WHERE clause (without the WHERE)
+ * - LIST_SET: Comma separated with field names, like a SET clause
+ * - LIST_NAMES: Comma separated field names
* @throws MWException|DBUnexpectedError
* @return string
*/
* The keys on each level may be either integers or strings.
*
* @param array $data organized as 2-d
- * array(baseKeyVal => array(subKeyVal => [ignored], ...), ...)
- * @param string $baseKey field name to match the base-level keys to (eg 'pl_namespace')
- * @param string $subKey field name to match the sub-level keys to (eg 'pl_title')
+ * array(baseKeyVal => array(subKeyVal => [ignored], ...), ...)
+ * @param string $baseKey Field name to match the base-level keys to (eg 'pl_namespace')
+ * @param string $subKey Field name to match the sub-level keys to (eg 'pl_title')
* @return Mixed: string SQL fragment, or false if no items in array.
*/
public function makeWhereFrom2d( $data, $baseKey, $subKey ) {
* Return aggregated value alias
*
* @param $valuedata
- * @param $valuename string
+ * @param string $valuename
*
* @return string
*/
}
/**
- * @param $field
+ * @param string $field
* @return string
*/
public function bitNot( $field ) {
}
/**
- * @param $fieldLeft
- * @param $fieldRight
+ * @param string $fieldLeft
+ * @param string $fieldRight
* @return string
*/
public function bitAnd( $fieldLeft, $fieldRight ) {
}
/**
- * @param $fieldLeft
- * @param $fieldRight
+ * @param string $fieldLeft
+ * @param string $fieldRight
* @return string
*/
public function bitOr( $fieldLeft, $fieldRight ) {
/**
* Build a concatenation list to feed into a SQL query
- * @param array $stringList list of raw SQL expressions; caller is responsible for any quoting
- * @return String
+ * @param array $stringList List of raw SQL expressions; caller is
+ * responsible for any quoting
+ * @return string
*/
public function buildConcat( $stringList ) {
return 'CONCAT(' . implode( ',', $stringList ) . ')';
* @param string $field Field name
* @param string|array $conds Conditions
* @param string|array $join_conds Join conditions
- * @return String SQL text
+ * @return string SQL text
* @since 1.23
*/
public function buildGroupConcatField(
* @return bool Success or failure
*/
public function selectDB( $db ) {
- # Stub. Shouldn't cause serious problems if it's not overridden, but
+ # Stub. Shouldn't cause serious problems if it's not overridden, but
# if your database engine supports a concept similar to MySQL's
# databases you may as well.
$this->mDBname = $db;
* themselves. Pass the canonical name to such functions. This is only needed
* when calling query() directly.
*
- * @param string $name database table name
+ * @param string $name Database table name
* @param string $format One of:
* quoted - Automatically pass the table name through addIdentifierQuotes()
* so that it can be used in a query.
* raw - Do not add identifier quotes to the table name
- * @return String: full database name
+ * @return string Full database name
*/
public function tableName( $name, $format = 'quoted' ) {
global $wgSharedDB, $wgSharedPrefix, $wgSharedTables;
/**
* Gets an array of aliased table names
*
- * @param $tables array( [alias] => table )
- * @return array of strings, see tableNameWithAlias()
+ * @param array $tables array( [alias] => table )
+ * @return string[] See tableNameWithAlias()
*/
public function tableNamesWithAlias( $tables ) {
$retval = array();
/**
* Gets an array of aliased field names
*
- * @param $fields array( [alias] => field )
- * @return array of strings, see fieldNameWithAlias()
+ * @param array $fields array( [alias] => field )
+ * @return string[] See fieldNameWithAlias()
*/
public function fieldNamesWithAlias( $fields ) {
$retval = array();
* which might have a JOIN and/or USE INDEX clause
*
* @param array $tables ( [alias] => table )
- * @param $use_index array Same as for select()
- * @param $join_conds array Same as for select()
+ * @param array $use_index Same as for select()
+ * @param array $join_conds Same as for select()
* @return string
*/
protected function tableNamesWithUseIndexOrJOIN(
/**
* Get the name of an index in a given table
*
- * @param $index
- *
+ * @param string $index
* @return string
*/
protected function indexName( $index ) {
/**
* Adds quotes and backslashes.
*
- * @param $s string
- *
+ * @param string $s
* @return string
*/
public function addQuotes( $s ) {
* Since MySQL is the odd one out here the double quotes are our generic
* and we implement backticks in DatabaseMysql.
*
- * @param $s string
- *
+ * @param string $s
* @return string
*/
public function addIdentifierQuotes( $s ) {
* Returns if the given identifier looks quoted or not according to
* the database convention for quoting identifiers .
*
- * @param $name string
- *
- * @return boolean
+ * @param string $name
+ * @return bool
*/
public function isQuotedIdentifier( $name ) {
return $name[0] == '"' && substr( $name, -1, 1 ) == '"';
}
/**
- * @param $s string
+ * @param string $s
* @return string
*/
protected function escapeLikeInternal( $s ) {
* $query .= $dbr->buildLike( $pattern );
*
* @since 1.16
- * @return String: fully built LIKE statement
+ * @return string Fully built LIKE statement
*/
public function buildLike() {
$params = func_get_args();
* Any implementation of this function should *not* involve reusing
* sequence numbers created for rolled-back transactions.
* See http://bugs.mysql.com/bug.php?id=30767 for details.
- * @param $seqName string
- * @return null
+ * @param string $seqName
+ * @return null|int
*/
public function nextSequenceValue( $seqName ) {
return null;
}
/**
- * USE INDEX clause. Unlikely to be useful for anything but MySQL. This
+ * USE INDEX clause. Unlikely to be useful for anything but MySQL. This
* is only needed because a) MySQL must be as efficient as possible due to
* its use on Wikipedia, and b) MySQL 4.0 is kind of dumb sometimes about
- * which index to pick. Anyway, other databases might have different
- * indexes on a given table. So don't bother overriding this unless you're
+ * which index to pick. Anyway, other databases might have different
+ * indexes on a given table. So don't bother overriding this unless you're
* MySQL.
- * @param $index
+ * @param string $index
* @return string
*/
public function useIndexClause( $index ) {
* errors which wouldn't have occurred in MySQL.
*
* @param string $table The table to replace the row(s) in.
+ * @param array $uniqueIndexes Is an array of indexes. Each element may be either
+ * a field name or an array of field names
* @param array $rows Can be either a single row to insert, or multiple rows,
* in the same format as for DatabaseBase::insert()
- * @param array $uniqueIndexes is an array of indexes. Each element may be either
- * a field name or an array of field names
* @param string $fname Calling function name (use __METHOD__) for logs/profiling
*/
public function replace( $table, $uniqueIndexes, $rows, $fname = __METHOD__ ) {
* statement.
*
* @param string $table Table name
- * @param array $rows Rows to insert
+ * @param array|string $rows Row(s) to insert
* @param string $fname Caller function name
*
* @return ResultWrapper
* Usually throws a DBQueryError on failure. If errors are explicitly ignored,
* returns success.
*
+ * @since 1.22
+ *
* @param string $table Table name. This will be passed through DatabaseBase::tableName().
* @param array $rows A single row or list of rows to insert
* @param array $uniqueIndexes List of single field names or field name tuples
- * @param array $set An array of values to SET. For each array element,
- * the key gives the field name, and the value gives the data
- * to set that field to. The data will be quoted by
- * DatabaseBase::addQuotes().
+ * @param array $set An array of values to SET. For each array element, the
+ * key gives the field name, and the value gives the data to set that
+ * field to. The data will be quoted by DatabaseBase::addQuotes().
* @param string $fname Calling function name (use __METHOD__) for logs/profiling
- * @param array $options of options
- *
+ * @throws Exception
* @return bool
- * @since 1.22
*/
- public function upsert(
- $table, array $rows, array $uniqueIndexes, array $set, $fname = __METHOD__
+ public function upsert( $table, array $rows, array $uniqueIndexes, array $set,
+ $fname = __METHOD__
) {
if ( !count( $rows ) ) {
return true; // nothing to do
}
- $rows = is_array( reset( $rows ) ) ? $rows : array( $rows );
+
+ if ( !is_array( reset( $rows ) ) ) {
+ $rows = array( $rows );
+ }
if ( count( $uniqueIndexes ) ) {
$clauses = array(); // list WHERE clauses that each identify a single row
*
* DO NOT put the join condition in $conds.
*
- * @param $delTable String: The table to delete from.
- * @param $joinTable String: The other table.
- * @param $delVar String: The variable to join on, in the first table.
- * @param $joinVar String: The variable to join on, in the second table.
- * @param $conds Array: Condition array of field names mapped to variables,
- * ANDed together in the WHERE clause
- * @param $fname String: Calling function name (use __METHOD__) for
- * logs/profiling
+ * @param string $delTable The table to delete from.
+ * @param string $joinTable The other table.
+ * @param string $delVar The variable to join on, in the first table.
+ * @param string$joinVar The variable to join on, in the second table.
+ * @param array $conds Condition array of field names mapped to variables,
+ * ANDed together in the WHERE clause
+ * @param string $fname Calling function name (use __METHOD__) for logs/profiling
* @throws DBUnexpectedError
*/
public function deleteJoin( $delTable, $joinTable, $delVar, $joinVar, $conds,
/**
* Returns the size of a text field, or -1 for "unlimited"
*
- * @param $table string
- * @param $field string
- *
+ * @param string $table
+ * @param string $field
* @return int
*/
public function textFieldSize( $table, $field ) {
/**
* A string to insert into queries to show that they're low-priority, like
- * MySQL's LOW_PRIORITY. If no such feature exists, return an empty
+ * MySQL's LOW_PRIORITY. If no such feature exists, return an empty
* string and nothing bad should happen.
*
* @return string Returns the text of the low priority option if it is
* DELETE query wrapper.
*
* @param array $table Table name
- * @param string|array $conds of conditions. See $conds in DatabaseBase::select() for
- * the format. Use $conds == "*" to delete all rows
+ * @param string|array $conds of conditions. See $conds in DatabaseBase::select()
+ * for the format. Use $conds == "*" to delete all rows
* @param string $fname name of the calling function
- *
* @throws DBUnexpectedError
* @return bool|ResultWrapper
*/
* @param string|array $srcTable May be either a table name, or an array of table names
* to include in a join.
*
- * @param array $varMap must be an associative array of the form
+ * @param array $varMap Must be an associative array of the form
* array( 'dest1' => 'source1', ...). Source items may be literals
* rather than field names, but strings should be quoted with
* DatabaseBase::addQuotes()
) {
$destTable = $this->tableName( $destTable );
- if ( is_array( $insertOptions ) ) {
- $insertOptions = implode( ' ', $insertOptions );
+ if ( !is_array( $insertOptions ) ) {
+ $insertOptions = array( $insertOptions );
}
+ $insertOptions = $this->makeInsertOptions( $insertOptions );
+
if ( !is_array( $selectOptions ) ) {
$selectOptions = array( $selectOptions );
}
}
/**
- * Construct a LIMIT query with optional offset. This is used for query
- * pages. The SQL should be adjusted so that only the first $limit rows
- * are returned. If $offset is provided as well, then the first $offset
+ * Construct a LIMIT query with optional offset. This is used for query
+ * pages. The SQL should be adjusted so that only the first $limit rows
+ * are returned. If $offset is provided as well, then the first $offset
* rows should be discarded, and the next $limit rows should be returned.
* If the result of the query is not ordered, then the rows to be returned
* are theoretically arbitrary.
*
* $sql is expected to be a SELECT, if that makes a difference.
*
- * The version provided by default works in MySQL and SQLite. It will very
+ * The version provided by default works in MySQL and SQLite. It will very
* likely need to be overridden for most other DBMSes.
*
* @param string $sql SQL query we will append the limit too
- * @param $limit Integer the SQL limit
- * @param $offset Integer|bool the SQL offset (default false)
- *
+ * @param int $limit The SQL limit
+ * @param int|bool $offset The SQL offset (default false)
* @throws DBUnexpectedError
* @return string
*/
* This is used for providing overload point for other DB abstractions
* not compatible with the MySQL syntax.
* @param array $sqls SQL statements to combine
- * @param $all Boolean: use UNION ALL
- * @return String: SQL fragment
+ * @param bool $all Use UNION ALL
+ * @return string SQL fragment
*/
public function unionQueries( $sqls, $all ) {
$glue = $all ? ') UNION ALL (' : ') UNION (';
}
/**
- * Returns an SQL expression for a simple conditional. This doesn't need
+ * Returns an SQL expression for a simple conditional. This doesn't need
* to be overridden unless CASE isn't supported in your DBMS.
*
* @param string|array $cond SQL expression which will result in a boolean value
* @param string $trueVal SQL expression to return if true
* @param string $falseVal SQL expression to return if false
- * @return String: SQL fragment
+ * @return string SQL fragment
*/
public function conditional( $cond, $trueVal, $falseVal ) {
if ( is_array( $cond ) ) {
* Returns a comand for str_replace function in SQL query.
* Uses REPLACE() in MySQL
*
- * @param string $orig column to modify
- * @param string $old column to seek
- * @param string $new column to replace with
+ * @param string $orig Column to modify
+ * @param string $old Column to seek
+ * @param string $new Column to replace with
*
* @return string
*/
/**
* Wait for the slave to catch up to a given master position.
*
- * @param $pos DBMasterPos object
- * @param $timeout Integer: the maximum number of seconds to wait for
+ * @param DBMasterPos $pos
+ * @param int $timeout The maximum number of seconds to wait for
* synchronisation
- *
- * @return integer: zero if the slave was past that position already,
+ * @return int Zzero if the slave was past that position already,
* greater than zero if we waited for some period of time, less than
* zero if we timed out.
*/
public function masterPosWait( DBMasterPos $pos, $timeout ) {
- wfProfileIn( __METHOD__ );
-
- if ( !is_null( $this->mFakeSlaveLag ) ) {
- $wait = intval( ( $pos->pos - microtime( true ) + $this->mFakeSlaveLag ) * 1e6 );
-
- if ( $wait > $timeout * 1e6 ) {
- wfDebug( "Fake slave timed out waiting for $pos ($wait us)\n" );
- wfProfileOut( __METHOD__ );
-
- return -1;
- } elseif ( $wait > 0 ) {
- wfDebug( "Fake slave waiting $wait us\n" );
- usleep( $wait );
- wfProfileOut( __METHOD__ );
-
- return 1;
- } else {
- wfDebug( "Fake slave up to date ($wait us)\n" );
- wfProfileOut( __METHOD__ );
-
- return 0;
- }
- }
-
- wfProfileOut( __METHOD__ );
-
# Real waits are implemented in the subclass.
return 0;
}
/**
* Get the replication position of this slave
*
- * @return DBMasterPos, or false if this is not a slave.
+ * @return DBMasterPos|bool False if this is not a slave.
*/
public function getSlavePos() {
- if ( !is_null( $this->mFakeSlaveLag ) ) {
- $pos = new MySQLMasterPos( 'fake', microtime( true ) - $this->mFakeSlaveLag );
- wfDebug( __METHOD__ . ": fake slave pos = $pos\n" );
-
- return $pos;
- } else {
- # Stub
- return false;
- }
+ # Stub
+ return false;
}
/**
* Get the position of this master
*
- * @return DBMasterPos, or false if this is not a master
+ * @return DBMasterPos|bool False if this is not a master
*/
public function getMasterPos() {
- if ( $this->mFakeMaster ) {
- return new MySQLMasterPos( 'fake', microtime( true ) );
- } else {
- return false;
- }
+ # Stub
+ return false;
}
/**
* will cause a warning, unless the current transaction was started
* automatically because of the DBO_TRX flag.
*
- * @param $fname string
+ * @param string $fname
* @throws DBError
*/
final public function begin( $fname = __METHOD__ ) {
* Issues the BEGIN command to the database server.
*
* @see DatabaseBase::begin()
- * @param type $fname
+ * @param string $fname
*/
protected function doBegin( $fname ) {
$this->query( 'BEGIN', $fname );
*
* Nesting of transactions is not supported.
*
- * @param $fname string
+ * @param string $fname
* @param string $flush Flush flag, set to 'flush' to disable warnings about
* explicitly committing implicit transactions, or calling commit when no
* transaction is in progress. This will silently break any ongoing
* explicit transaction. Only set the flush flag if you are sure that it
* is safe to ignore these warnings in your context.
+ * @throws DBUnexpectedError
*/
final public function commit( $fname = __METHOD__, $flush = '' ) {
if ( !$this->mTrxAtomicLevels->isEmpty() ) {
* Issues the COMMIT command to the database server.
*
* @see DatabaseBase::commit()
- * @param type $fname
+ * @param string $fname
*/
protected function doCommit( $fname ) {
if ( $this->mTrxLevel ) {
*
* No-op on non-transactional databases.
*
- * @param $fname string
+ * @param string $fname
*/
final public function rollback( $fname = __METHOD__ ) {
if ( !$this->mTrxLevel ) {
* Issues the ROLLBACK command to the database server.
*
* @see DatabaseBase::rollback()
- * @param type $fname
+ * @param string $fname
*/
protected function doRollback( $fname ) {
if ( $this->mTrxLevel ) {
* The table names passed to this function shall not be quoted (this
* function calls addIdentifierQuotes when needed).
*
- * @param string $oldName name of table whose structure should be copied
- * @param string $newName name of table to be created
- * @param $temporary Boolean: whether the new table should be temporary
- * @param string $fname calling function name
+ * @param string $oldName Name of table whose structure should be copied
+ * @param string $newName Name of table to be created
+ * @param bool $temporary Whether the new table should be temporary
+ * @param string $fname Calling function name
* @throws MWException
- * @return Boolean: true if operation was successful
+ * @return bool True if operation was successful
*/
public function duplicateTableStructure( $oldName, $newName, $temporary = false,
$fname = __METHOD__
* List all tables on the database
*
* @param string $prefix Only show tables with this prefix, e.g. mw_
- * @param string $fname calling function name
+ * @param string $fname Calling function name
* @throws MWException
*/
function listTables( $prefix = null, $fname = __METHOD__ ) {
/**
* Differentiates between a TABLE and a VIEW
*
- * @param $name string: Name of the database-structure to test.
+ * @param string $name Name of the database-structure to test.
* @throws MWException
* @since 1.22
*/
* The result is unquoted, and needs to be passed through addQuotes()
* before it can be included in raw SQL.
*
- * @param $ts string|int
+ * @param string|int $ts
*
* @return string
*/
* The result is unquoted, and needs to be passed through addQuotes()
* before it can be included in raw SQL.
*
- * @param $ts string|int
+ * @param string|int $ts
*
* @return string
*/
* callers, so this is unnecessary in external code. For compatibility with
* old code, ResultWrapper objects are passed through unaltered.
*
- * @param $result bool|ResultWrapper
- *
+ * @param bool|ResultWrapper|resource $result
* @return bool|ResultWrapper
*/
public function resultObject( $result ) {
* @return bool Success or failure
*/
public function ping() {
- # Stub. Not essential to override.
+ # Stub. Not essential to override.
return true;
}
* @return int Database replication lag in seconds
*/
public function getLag() {
- return intval( $this->mFakeSlaveLag );
+ return 0;
}
/**
* don't allow simple quoted strings to be inserted. To insert into such
* a field, pass the data through this function before passing it to
* DatabaseBase::insert().
- * @param $b string
+ *
+ * @param string $b
* @return string
*/
public function encodeBlob( $b ) {
* Some DBMSs return a special placeholder object representing blob fields
* in result objects. Pass the object through this function to return the
* original string.
- * @param $b string
+ *
+ * @param string $b
* @return string
*/
public function decodeBlob( $b ) {
* full-wiki dumps, where a single query reads out over
* hours or days.
*
- * @param $options Array
+ * @param array $options
* @return void
*/
public function setSessionOptions( array $options ) {
* @param bool|callable $resultCallback Optional function called for each MySQL result
* @param bool|string $fname Calling function name or false if name should be
* generated dynamically using $filename
- * @param bool|callable $inputCallback Callback: Optional function called
- * for each complete line sent
- * @throws MWException
+ * @param bool|callable $inputCallback Optional function called for each
+ * complete line sent
* @throws Exception|MWException
* @return bool|string
*/
* it fails back to MySQL if no DB-specific patch can be found
*
* @param string $patch The name of the patch, like patch-something.sql
- * @return String Full path to patch file
+ * @return string Full path to patch file
*/
public function patchPath( $patch ) {
global $IP;
* ones in $GLOBALS. If an array is set here, $GLOBALS will not be used at
* all. If it's set to false, $GLOBALS will be used.
*
- * @param bool|array $vars mapping variable name to value.
+ * @param bool|array $vars Mapping variable name to value.
*/
public function setSchemaVars( $vars ) {
$this->mSchemaVars = $vars;
* Returns true on success, error string or exception on failure (depending
* on object's error ignore settings).
*
- * @param $fp Resource: File handle
- * @param $lineCallback Callback: Optional function called before reading each query
- * @param $resultCallback Callback: Optional function called for each MySQL result
+ * @param resource $fp File handle
+ * @param bool|callable $lineCallback Optional function called before reading each query
+ * @param bool|callable $resultCallback Optional function called for each MySQL result
* @param string $fname Calling function name
- * @param $inputCallback Callback: Optional function called for each complete query sent
+ * @param bool|callable $inputCallback Optional function called for each complete query sent
* @return bool|string
*/
public function sourceStream( $fp, $lineCallback = false, $resultCallback = false,
*
* @param string $sql SQL assembled so far
* @param string $newLine New line about to be added to $sql
- * @return Bool Whether $newLine contains end of the statement
+ * @return bool Whether $newLine contains end of the statement
*/
public function streamStatementEnd( &$sql, &$newLine ) {
if ( $this->delimiter ) {
* table options its use should be avoided.
*
* @param string $ins SQL statement to replace variables in
- * @return String The new SQL statement with variables replaced
+ * @return string The new SQL statement with variables replaced
*/
protected function replaceSchemaVars( $ins ) {
$vars = $this->getSchemaVars();
/**
* Replace variables in sourced SQL
*
- * @param $ins string
- *
+ * @param string $ins
* @return string
*/
protected function replaceVars( $ins ) {
/**
* Table name callback
*
- * @param $matches array
- *
+ * @param array $matches
* @return string
*/
protected function tableNameCallback( $matches ) {
/**
* Index name callback
*
- * @param $matches array
- *
+ * @param array $matches
* @return string
*/
protected function indexNameCallback( $matches ) {
/**
* Check to see if a named lock is available. This is non-blocking.
*
- * @param string $lockName name of lock to poll
- * @param string $method name of method calling us
- * @return Boolean
+ * @param string $lockName Name of lock to poll
+ * @param string $method Name of method calling us
+ * @return bool
* @since 1.20
*/
public function lockIsFree( $lockName, $method ) {
* Abstracted from Filestore::lock() so child classes can implement for
* their own needs.
*
- * @param string $lockName name of lock to aquire
- * @param string $method name of method calling us
- * @param $timeout Integer: timeout
- * @return Boolean
+ * @param string $lockName Name of lock to aquire
+ * @param string $method Name of method calling us
+ * @param int $timeout
+ * @return bool
*/
public function lock( $lockName, $method, $timeout = 5 ) {
return true;
/**
* Lock specific tables
*
- * @param array $read of tables to lock for read access
- * @param array $write of tables to lock for write access
- * @param string $method name of caller
+ * @param array $read Array of tables to lock for read access
+ * @param array $write Array of tables to lock for write access
+ * @param string $method Name of caller
* @param bool $lowPriority Whether to indicate writes to be LOW PRIORITY
- *
* @return bool
*/
public function lockTables( $read, $write, $method, $lowPriority = true ) {
/**
* Unlock specific tables
*
- * @param string $method the caller
- *
+ * @param string $method The caller
* @return bool
*/
public function unlockTables( $method ) {
/**
* Delete a table
- * @param $tableName string
- * @param $fName string
+ * @param string $tableName
+ * @param string $fName
* @return bool|ResultWrapper
* @since 1.18
*/
* Get search engine class. All subclasses of this need to implement this
* if they wish to use searching.
*
- * @return String
+ * @return string
*/
public function getSearchEngine() {
return 'SearchEngineDummy';
* keyword for timestamps in PostgreSQL, and works with CHAR(14) as well
* because "i" sorts after all numbers.
*
- * @return String
+ * @return string
*/
public function getInfinity() {
return 'infinity';
* Encode an expiry time into the DBMS dependent format
*
* @param string $expiry timestamp for expiry, or the 'infinity' string
- * @return String
+ * @return string
*/
public function encodeExpiry( $expiry ) {
return ( $expiry == '' || $expiry == 'infinity' || $expiry == $this->getInfinity() )
* Decode an expiry time into a DBMS independent format
*
* @param string $expiry DB timestamp field value for expiry
- * @param $format integer: TS_* constant, defaults to TS_MW
- * @return String
+ * @param int $format TS_* constant, defaults to TS_MW
+ * @return string
*/
public function decodeExpiry( $expiry, $format = TS_MW ) {
return ( $expiry == '' || $expiry == $this->getInfinity() )
*
* This is a MySQL-specific feature.
*
- * @param $value Mixed: true for allow, false for deny, or "default" to
+ * @param bool|string $value True for allow, false for deny, or "default" to
* restore the initial value
*/
public function setBigSelects( $value = true ) {
* @ingroup Database
*/
class DBError extends MWException {
- /**
- * @var DatabaseBase
- */
+ /** @var DatabaseBase */
public $db;
/**
* Construct a database error
- * @param $db DatabaseBase object which threw the error
+ * @param DatabaseBase $db Object which threw the error
* @param string $error A simple error message to be used for debugging
*/
function __construct( DatabaseBase $db = null, $error ) {
* @ingroup Database
*/
class DBConnectionError extends DBError {
+ /** @var string Error text */
public $error;
+ /**
+ * @param DatabaseBase $db Object throwing the error
+ * @param string $error Error text
+ */
function __construct( DatabaseBase $db = null, $error = 'unknown error' ) {
$msg = 'DB connection error';
}
/**
- * @param $key
- * @param $fallback
- * @return string
+ * @param string $key
+ * @param string $fallback Unescaped alternative error text in case the
+ * message cache cannot be used. Can contain parameters as in regular
+ * messages, that should be passed as additional parameters.
+ * @return string Unprocessed plain error text with parameters replaced
*/
function msg( $key, $fallback /*[, params...] */ ) {
global $wgLang;
}
/**
- * @return string
+ * @return string Safe HTML
*/
function getHTML() {
global $wgShowDBErrorBacktrace, $wgShowHostnames, $wgShowSQLErrors;
}
}
+ /**
+ * Output the exception report using HTML.
+ *
+ * @return void
+ */
public function reportHTML() {
global $wgUseFileCache;
* @return string
*/
private function fileCachedPage() {
- global $wgTitle, $wgOut, $wgRequest;
+ $context = RequestContext::getMain();
- if ( $wgOut->isDisabled() ) {
+ if ( $context->getOutput()->isDisabled() ) {
// Done already?
return '';
}
- if ( $wgTitle ) {
- // use $wgTitle if we managed to set it
- $t = $wgTitle->getPrefixedDBkey();
+ if ( $context->getTitle() ) {
+ // Use the main context's title if we managed to set it
+ $t = $context->getTitle()->getPrefixedDBkey();
} else {
// Fallback to the raw title URL param. We can't use the Title
// class is it may hit the interwiki table and give a DB error.
// We may get a cache miss due to not sanitizing the title though.
- $t = str_replace( ' ', '_', $wgRequest->getVal( 'title' ) );
+ $t = str_replace( ' ', '_', $context->getRequest()->getVal( 'title' ) );
if ( $t == '' ) { // fallback to main page
$t = Title::newFromText(
$this->msg( 'mainpage', 'Main Page' ) )->getPrefixedDBkey();
public $error, $errno, $sql, $fname;
/**
- * @param $db DatabaseBase
- * @param $error string
- * @param $errno int|string
- * @param $sql string
- * @param $fname string
+ * @param DatabaseBase $db
+ * @param string $error
+ * @param int|string $errno
+ * @param string $sql
+ * @param string $fname
*/
function __construct( DatabaseBase $db, $error, $errno, $sql, $fname ) {
$message = "A database error has occurred. Did you forget to run " .
}
/**
- * @return boolean
+ * @return bool
*/
function isLoggable() {
// Don't send to the exception log, already in dberror log
* sites using this option probably don't care much about "security by obscurity". Of course,
* if $wgShowSQLErrors is true, the SQL query *is* shown.
*
- * @return array: Keys are message keys; values are arrays of arguments for Html::element().
+ * @return array Keys are message keys; values are arrays of arguments for Html::element().
* Array will be empty if users are not allowed to see any of these details at all.
*/
protected function getTechnicalDetails() {
/**
* @param string $key Message key
- * @return string: English message text
+ * @return string English message text
*/
private function getFallbackMessage( $key ) {
$messages = array(
* @ingroup Database
*/
class DatabaseMssql extends DatabaseBase {
- var $mInsertId = null;
- var $mLastResult = null;
- var $mAffectedRows = null;
+ /** @var resource */
+ protected $mLastResult = null;
- var $mPort;
+ /** @var int The number of rows affected as an integer */
+ protected $mAffectedRows = null;
+
+ /**
+ * @var int Post number for database
+ * @todo Unused and can be removed?
+ */
+ protected $mPort;
+
+ /** @var int */
+ private $mInsertId = null;
function cascadingDeletes() {
return true;
# e.g. the class is being loaded
if ( !strlen( $user ) ) {
- return;
+ return null;
}
$this->close();
return sqlsrv_close( $this->mConn );
}
+ /**
+ * @param string $sql
+ * @return bool|MssqlResult
+ * @throws DBUnexpectedError
+ */
protected function doQuery( $sql ) {
wfDebug( "SQL: [$sql]\n" );
- $this->offset = 0;
// several extensions seem to think that all databases support limits
// via LIMIT N after the WHERE clause well, MSSQL uses SELECT TOP N,
return $res;
}
+ /**
+ * @param mixed|ResultWrapper $res
+ */
function freeResult( $res ) {
if ( $res instanceof ResultWrapper ) {
$res = $res->result;
$res->free();
}
+ /**
+ * @param ResultWrapper|stdClass $res
+ * @return stdClass
+ */
function fetchObject( $res ) {
if ( $res instanceof ResultWrapper ) {
$res = $res->result;
return $row;
}
+ /**
+ * @return string
+ */
function getErrors() {
$strRet = '';
$retErrors = sqlsrv_errors( SQLSRV_ERR_ALL );
return $strRet;
}
+ /**
+ * @param resource $res
+ * @return Blob
+ */
function fetchRow( $res ) {
if ( $res instanceof ResultWrapper ) {
$res = $res->result;
return $row;
}
+ /**
+ * @param mixed $res
+ * @return int
+ */
function numRows( $res ) {
if ( $res instanceof ResultWrapper ) {
$res = $res->result;
/**
* This must be called after nextSequenceVal
- * @return null
+ * @return int|null
*/
function insertId() {
return $this->mInsertId;
}
+ /**
+ * @param mixed $res
+ * @param int $row
+ * @return bool
+ */
function dataSeek( $res, $row ) {
if ( $res instanceof ResultWrapper ) {
$res = $res->result;
/**
* SELECT wrapper
*
- * @param $table Mixed: array or string, table name(s) (prefix auto-added)
- * @param $vars Mixed: array or string, field name(s) to be retrieved
- * @param $conds Mixed: array or string, condition(s) for WHERE
- * @param $fname String: calling function name (use __METHOD__) for logs/profiling
- * @param array $options associative array of options (e.g.
+ * @param mixed $table Array or string, table name(s) (prefix auto-added)
+ * @param mixed $vars Array or string, field name(s) to be retrieved
+ * @param mixed $conds Array or string, condition(s) for WHERE
+ * @param string $fname Calling function name (use __METHOD__) for logs/profiling
+ * @param array $options Associative array of options (e.g.
* array('GROUP BY' => 'page_title')), see Database::makeSelectOptions
* code for list of supported stuff
- * @param $join_conds Array: Associative array of table join conditions
+ * @param array $join_conds Associative array of table join conditions
* (optional) (e.g. array( 'page' => array('LEFT JOIN','page_latest=rev_id') )
- * @return Mixed: database result resource (feed to Database::fetchObject
+ * @return mixed Database result resource (feed to Database::fetchObject
* or whatever), or false on failure
*/
function select( $table, $vars, $conds = '', $fname = __METHOD__,
/**
* SELECT wrapper
*
- * @param $table Mixed: Array or string, table name(s) (prefix auto-added)
- * @param $vars Mixed: Array or string, field name(s) to be retrieved
- * @param $conds Mixed: Array or string, condition(s) for WHERE
- * @param $fname String: Calling function name (use __METHOD__) for logs/profiling
+ * @param mixed $table Array or string, table name(s) (prefix auto-added)
+ * @param mixed $vars Array or string, field name(s) to be retrieved
+ * @param mixed $conds Array or string, condition(s) for WHERE
+ * @param string $fname Calling function name (use __METHOD__) for logs/profiling
* @param array $options Associative array of options (e.g. array('GROUP BY' => 'page_title')),
- * see Database::makeSelectOptions code for list of supported stuff
- * @param $join_conds Array: Associative array of table join conditions (optional)
- * (e.g. array( 'page' => array('LEFT JOIN','page_latest=rev_id') )
- * @return string, the SQL text
+ * see Database::makeSelectOptions code for list of supported stuff
+ * @param array $join_conds Associative array of table join conditions (optional)
+ * (e.g. array( 'page' => array('LEFT JOIN','page_latest=rev_id') )
+ * @return string The SQL text
*/
function selectSQLText( $table, $vars, $conds = '', $fname = __METHOD__,
$options = array(), $join_conds = array()
* This is not necessarily an accurate estimate, so use sparingly
* Returns -1 if count cannot be found
* Takes same arguments as Database::select()
+ * @param string $table
+ * @param string $vars
+ * @param string $conds
+ * @param string $fname
+ * @param array $options
* @return int
*/
function estimateRowCount( $table, $vars = '*', $conds = '',
/**
* Returns information about an index
* If errors are explicitly ignored, returns NULL on failure
+ * @param string $table
+ * @param string $index
+ * @param string $fname
* @return array|bool|null
*/
function indexInfo( $table, $index, $fname = __METHOD__ ) {
throw new DBQueryError( $this, $this->getErrors(), $this->lastErrno(), /*$sql*/ '', $fname );
} elseif ( $ret != null ) {
// remember number of rows affected
+ // @todo FIXME: $ret type does not appear to be a resource
$this->mAffectedRows = sqlsrv_rows_affected( $ret );
return $ret;
/**
* Return the next in a sequence, save the value for retrieval via insertId()
- * @return
+ * @param string $seqName
+ * @return int|null
*/
function nextSequenceValue( $seqName ) {
if ( !$this->tableExists( 'sequence_' . $seqName ) ) {
/**
* Return the current value of a sequence. Assumes it has ben nextval'ed in this session.
- * @return
+ * @param string $seqName
+ * @return int|null
*/
function currentSequenceValue( $seqName ) {
$ret = sqlsrv_query( $this->mConn, "SELECT TOP 1 id FROM [sequence_$seqName] ORDER BY id DESC" );
}
}
- # Returns the size of a text field, or -1 for "unlimited"
+ /**
+ * @param string $table
+ * @param string $field
+ * @return int Returns the size of a text field, or -1 for "unlimited"
+ */
function textFieldSize( $table, $field ) {
$table = $this->tableName( $table );
$sql = "SELECT CHARACTER_MAXIMUM_LENGTH,DATA_TYPE FROM INFORMATION_SCHEMA.Columns
/**
* Construct a LIMIT query with optional offset
* This is used for query pages
- * $sql string SQL query we will append the limit too
- * $limit integer the SQL limit
- * $offset integer the SQL offset (default false)
- * @return mixed|string
+ *
+ * @param string $sql SQL query we will append the limit too
+ * @param int $limit The SQL limit
+ * @param bool|int $offset The SQL offset (default false)
+ * @return array|string
*/
function limitResult( $sql, $limit, $offset = false ) {
if ( $offset === false || $offset == 0 ) {
}
}
- // If there is a limit clause, parse it, strip it, and pass the remaining
- // SQL through limitResult() with the appropriate parameters. Not the
- // prettiest solution, but better than building a whole new parser. This
- // exists becase there are still too many extensions that don't use dynamic
- // sql generation.
+ /**
+ * If there is a limit clause, parse it, strip it, and pass the remaining
+ * SQL through limitResult() with the appropriate parameters. Not the
+ * prettiest solution, but better than building a whole new parser. This
+ * exists becase there are still too many extensions that don't use dynamic
+ * sql generation.
+ *
+ * @param string $sql
+ * @return array|mixed|string
+ */
function LimitToTopN( $sql ) {
// Matches: LIMIT {[offset,] row_count | row_count OFFSET offset}
$pattern = '/\bLIMIT\s+((([0-9]+)\s*,\s*)?([0-9]+)(\s+OFFSET\s+([0-9]+))?)/i';
return $sql;
}
+ /**
+ * Timestamp in ISO 8601 format with no timezone: 1986-02-09T20:00:00Z
+ *
+ * @param int $ts Timestamp
+ * @return bool|string The same date in ISO 8601 format with no timezone or false
+ */
function timestamp( $ts = 0 ) {
return wfTimestamp( TS_ISO_8601, $ts );
}
/**
- * @return string wikitext of a link to the server software's web site
+ * @return string Wikitext of a link to the server software's web site
*/
public function getSoftwareLink() {
- return "[http://www.microsoft.com/sql/ MS SQL Server]";
+ return "[{{int:version-db-mssql-url}} MS SQL Server]";
}
/**
return $version;
}
+ /**
+ * @param string $table
+ * @param string $fname
+ * @param bool $schema
+ * @return bool
+ */
function tableExists( $table, $fname = __METHOD__, $schema = false ) {
$res = sqlsrv_query( $this->mConn, "SELECT * FROM information_schema.tables
WHERE table_type='BASE TABLE' AND table_name = '$table'" );
/**
* Query whether a given column exists in the mediawiki schema
+ * @param string $table
+ * @param string $field
+ * @param string $fname
* @return bool
*/
function fieldExists( $table, $field, $fname = __METHOD__ ) {
* Escapes a identifier for use inm SQL.
* Throws an exception if it is invalid.
* Reference: http://msdn.microsoft.com/en-us/library/aa224033%28v=SQL.80%29.aspx
- * @param $identifier
+ * @param string $identifier
* @throws MWException
* @return string
*/
}
/**
- * @private
+ * @param array $tables
+ * @param array $use_index
+ * @param array $join_conds
* @return string
*/
- function tableNamesWithUseIndexOrJOIN( $tables, $use_index = array(), $join_conds = array() ) {
+ protected function tableNamesWithUseIndexOrJOIN( $tables, $use_index = array(), $join_conds = array() ) {
$ret = array();
$retJOIN = array();
$use_index_safe = is_array( $use_index ) ? $use_index : array();
}
/**
- * @private
- *
* @param array $options an associative array of options to be turned into
- * an SQL query, valid keys are listed in the function.
- * @return Array
+ * an SQL query, valid keys are listed in the function.
+ * @return array
*/
function makeSelectOptions( $options ) {
$tailOpts = '';
* @ingroup Database
*/
class MssqlField implements Field {
- private $name, $tablename, $default, $max_length, $nullable, $type;
+ private $name, $tableName, $default, $max_length, $nullable, $type;
function __construct( $info ) {
$this->name = $info['COLUMN_NAME'];
- $this->tablename = $info['TABLE_NAME'];
+ $this->tableName = $info['TABLE_NAME'];
$this->default = $info['COLUMN_DEFAULT'];
$this->max_length = $info['CHARACTER_MAXIMUM_LENGTH'];
$this->nullable = !( strtolower( $info['IS_NULLABLE'] ) == 'no' );
* @ingroup Database
*/
class MssqlResult {
+ /** @var int */
+ private $mCursor;
+
+ /** @var array */
+ private $mRows;
+ /** @var bool|int */
+ private $mNumFields;
+
+ /** @var array|bool */
+ private $mFieldMeta;
+
+ /**
+ * @param bool|resource $queryresult
+ */
public function __construct( $queryresult = false ) {
$this->mCursor = 0;
$this->mRows = array();
sqlsrv_free_stmt( $queryresult );
}
+ /**
+ * @param array $array
+ * @param stdClass $obj
+ * @return stdClass
+ */
private function array_to_obj( $array, &$obj ) {
foreach ( $array as $key => $value ) {
if ( is_array( $value ) ) {
*/
class DatabaseMysql extends DatabaseMysqlBase {
/**
- * @param $sql string
- * @return resource
+ * @param string $sql
+ * @return resource False on error
*/
protected function doQuery( $sql ) {
if ( $this->bufferResults() ) {
return $ret;
}
+ /**
+ * @param string $realServer
+ * @return bool|resource MySQL Database connection or false on failure to connect
+ * @throws DBConnectionError
+ */
protected function mysqlConnect( $realServer ) {
# Fail now
# Otherwise we get a suppressed fatal error, which is very hard to track down
}
/**
+ * @param string $charset
* @return bool
*/
protected function mysqlSetCharset( $charset ) {
}
/**
- * @param $db
+ * @param string $db
* @return bool
*/
function selectDB( $db ) {
/** @var MysqlMasterPos */
protected $lastKnownSlavePos;
+ /** @var null|int */
+ protected $mFakeSlaveLag = null;
+
+ protected $mFakeMaster = false;
+
/**
* @return string
*/
}
/**
- * @param $server string
- * @param $user string
- * @param $password string
- * @param $dbName string
+ * @param string $server
+ * @param string $user
+ * @param string $password
+ * @param string $dbName
+ * @throws Exception|DBConnectionError
* @return bool
- * @throws DBConnectionError
*/
function open( $server, $user, $password, $dbName ) {
- global $wgAllDBsAreLocalhost, $wgDBmysql5, $wgSQLMode;
+ global $wgAllDBsAreLocalhost, $wgSQLMode;
wfProfileIn( __METHOD__ );
# Debugging hack -- fake cluster
wfProfileOut( __METHOD__ );
- return $this->reportConnectionError( $error );
+ $this->reportConnectionError( $error );
}
if ( $dbName != '' ) {
wfProfileOut( __METHOD__ );
- return $this->reportConnectionError( "Error selecting database $dbName" );
+ $this->reportConnectionError( "Error selecting database $dbName" );
}
}
- // Tell the server we're communicating with it in UTF-8.
- // This may engage various charset conversions.
- if ( $wgDBmysql5 ) {
- $this->mysqlSetCharset( 'utf8' );
- } else {
- $this->mysqlSetCharset( 'binary' );
+ // Tell the server what we're communicating with
+ if ( !$this->connectInitCharset() ) {
+ $this->reportConnectionError( "Error setting character set" );
}
+
// Set SQL mode, default is turning them all off, can be overridden or skipped with null
if ( is_string( $wgSQLMode ) ) {
$mode = $this->addQuotes( $wgSQLMode );
if ( !$success ) {
wfLogDBError( "Error setting sql_mode to $mode on server {$this->mServer}" );
wfProfileOut( __METHOD__ );
- return $this->reportConnectionError( "Error setting sql_mode to $mode" );
+ $this->reportConnectionError( "Error setting sql_mode to $mode" );
}
}
return true;
}
+ /**
+ * Set the character set information right after connection
+ * @return bool
+ */
+ protected function connectInitCharset() {
+ global $wgDBmysql5;
+
+ if ( $wgDBmysql5 ) {
+ // Tell the server we're communicating with it in UTF-8.
+ // This may engage various charset conversions.
+ return $this->mysqlSetCharset( 'utf8' );
+ } else {
+ return $this->mysqlSetCharset( 'binary' );
+ }
+ }
+
/**
* Open a connection to a MySQL server
*
- * @param $realServer string
+ * @param string $realServer
* @return mixed Raw connection
* @throws DBConnectionError
*/
abstract protected function mysqlSetCharset( $charset );
/**
- * @param $res ResultWrapper
+ * @param ResultWrapper|resource $res
* @throws DBUnexpectedError
*/
function freeResult( $res ) {
/**
* Free result memory
*
- * @param $res Raw result
+ * @param resource $res Raw result
* @return bool
*/
abstract protected function mysqlFreeResult( $res );
/**
- * @param $res ResultWrapper
- * @return object|bool
+ * @param ResultWrapper|resource $res
+ * @return stdClass|bool
* @throws DBUnexpectedError
*/
function fetchObject( $res ) {
/**
* Fetch a result row as an object
*
- * @param $res Raw result
+ * @param resource $res Raw result
* @return stdClass
*/
abstract protected function mysqlFetchObject( $res );
/**
- * @param $res ResultWrapper
+ * @param ResultWrapper|resource $res
* @return array|bool
* @throws DBUnexpectedError
*/
/**
* Fetch a result row as an associative and numeric array
*
- * @param $res Raw result
+ * @param resource $res Raw result
* @return array
*/
abstract protected function mysqlFetchArray( $res );
/**
* @throws DBUnexpectedError
- * @param $res ResultWrapper
+ * @param ResultWrapper|resource $res
* @return int
*/
function numRows( $res ) {
/**
* Get number of rows in result
*
- * @param $res Raw result
+ * @param resource $res Raw result
* @return int
*/
abstract protected function mysqlNumRows( $res );
/**
- * @param $res ResultWrapper
+ * @param ResultWrapper|resource $res
* @return int
*/
function numFields( $res ) {
/**
* Get number of fields in result
*
- * @param $res Raw result
+ * @param resource $res Raw result
* @return int
*/
abstract protected function mysqlNumFields( $res );
/**
- * @param $res ResultWrapper
+ * @param ResultWrapper|resource $res
* @param $n int
* @return string
*/
/**
* Get the name of the specified field in a result
*
- * @param $res Raw result
+ * @param ResultWrapper|resource $res
* @param $n int
* @return string
*/
/**
* mysql_field_type() wrapper
- * @param $res
+ * @param ResultWrapper|resource $res
* @param $n int
* @return string
*/
/**
* Get the type of the specified field in a result
*
- * @param $res Raw result
- * @param $n int
+ * @param ResultWrapper|resource $res
+ * @param int $n
* @return string
*/
abstract protected function mysqlFieldType( $res, $n );
/**
- * @param $res ResultWrapper
- * @param $row
+ * @param ResultWrapper|resource $res
+ * @param int $row
* @return bool
*/
function dataSeek( $res, $row ) {
/**
* Move internal result pointer
*
- * @param $res Raw result
- * @param $row int
+ * @param ResultWrapper|resource $res
+ * @param int $row
* @return bool
*/
abstract protected function mysqlDataSeek( $res, $row );
/**
* Returns the text of the error message from previous MySQL operation
*
- * @param $conn Raw connection
+ * @param resource $conn Raw connection
* @return string
*/
abstract protected function mysqlError( $conn = null );
/**
- * @param $table string
- * @param $uniqueIndexes
- * @param $rows array
- * @param $fname string
+ * @param string $table
+ * @param array $uniqueIndexes
+ * @param array $rows
+ * @param string $fname
* @return ResultWrapper
*/
function replace( $table, $uniqueIndexes, $rows, $fname = __METHOD__ ) {
* Returns estimated count, based on EXPLAIN output
* Takes same arguments as Database::select()
*
- * @param $table string|array
- * @param $vars string|array
- * @param $conds string|array
- * @param $fname string
- * @param $options string|array
- * @return int
+ * @param string|array $table
+ * @param string|array $vars
+ * @param string|array $conds
+ * @param string $fname
+ * @param string|array $options
+ * @return bool|int
*/
public function estimateRowCount( $table, $vars = '*', $conds = '',
$fname = __METHOD__, $options = array()
}
/**
- * @param $table string
- * @param $field string
+ * @param string $table
+ * @param string $field
* @return bool|MySQLField
*/
function fieldInfo( $table, $field ) {
/**
* Get column information from a result
*
- * @param $res Raw result
- * @param $n int
+ * @param resource $res Raw result
+ * @param int $n
* @return stdClass
*/
abstract protected function mysqlFetchField( $res, $n );
* Get information about an index into an object
* Returns false if the index does not exist
*
- * @param $table string
- * @param $index string
- * @param $fname string
+ * @param string $table
+ * @param string $index
+ * @param string $fname
* @return bool|array|null False or null on failure
*/
function indexInfo( $table, $index, $fname = __METHOD__ ) {
}
/**
- * @param $s string
- *
+ * @param string $s
* @return string
*/
function strencode( $s ) {
/**
* MySQL uses `backticks` for identifier quoting instead of the sql standard "double quotes".
*
- * @param $s string
- *
+ * @param string $s
* @return string
*/
public function addIdentifierQuotes( $s ) {
}
/**
- * @param $name string
+ * @param string $name
* @return bool
*/
public function isQuotedIdentifier( $name ) {
*/
abstract protected function mysqlPing();
+ /**
+ * Set lag time in seconds for a fake slave
+ *
+ * @param int $lag
+ */
+ public function setFakeSlaveLag( $lag ) {
+ $this->mFakeSlaveLag = $lag;
+ }
+
+ /**
+ * Make this connection a fake master
+ *
+ * @param bool $enabled
+ */
+ public function setFakeMaster( $enabled = true ) {
+ $this->mFakeMaster = $enabled;
+ }
+
/**
* Returns slave lag.
*
/**
* Wait for the slave to catch up to a given master position.
- * @TODO: return values for this and base class are rubbish
+ * @todo Return values for this and base class are rubbish
*
- * @param $pos DBMasterPos object
- * @param $timeout Integer: the maximum number of seconds to wait for synchronisation
- * @return bool|string
+ * @param DBMasterPos|MySQLMasterPos $pos
+ * @param int $timeout The maximum number of seconds to wait for synchronisation
+ * @return int Zero if the slave was past that position already,
+ * greater than zero if we waited for some period of time, less than
+ * zero if we timed out.
*/
function masterPosWait( DBMasterPos $pos, $timeout ) {
if ( $this->lastKnownSlavePos && $this->lastKnownSlavePos->hasReached( $pos ) ) {
$this->commit( __METHOD__, 'flush' );
if ( !is_null( $this->mFakeSlaveLag ) ) {
- $status = parent::masterPosWait( $pos, $timeout );
- wfProfileOut( __METHOD__ );
+ $wait = intval( ( $pos->pos - microtime( true ) + $this->mFakeSlaveLag ) * 1e6 );
- return $status;
+ if ( $wait > $timeout * 1e6 ) {
+ wfDebug( "Fake slave timed out waiting for $pos ($wait us)\n" );
+ wfProfileOut( __METHOD__ );
+
+ return -1;
+ } elseif ( $wait > 0 ) {
+ wfDebug( "Fake slave waiting $wait us\n" );
+ usleep( $wait );
+ wfProfileOut( __METHOD__ );
+
+ return 1;
+ } else {
+ wfDebug( "Fake slave up to date ($wait us)\n" );
+ wfProfileOut( __METHOD__ );
+
+ return 0;
+ }
}
# Call doQuery() directly, to avoid opening a transaction if DBO_TRX is set
*/
function getSlavePos() {
if ( !is_null( $this->mFakeSlaveLag ) ) {
- return parent::getSlavePos();
+ $pos = new MySQLMasterPos( 'fake', microtime( true ) - $this->mFakeSlaveLag );
+ wfDebug( __METHOD__ . ": fake slave pos = $pos\n" );
+
+ return $pos;
}
$res = $this->query( 'SHOW SLAVE STATUS', 'DatabaseBase::getSlavePos' );
*/
function getMasterPos() {
if ( $this->mFakeMaster ) {
- return parent::getMasterPos();
+ return new MySQLMasterPos( 'fake', microtime( true ) );
}
$res = $this->query( 'SHOW MASTER STATUS', 'DatabaseBase::getMasterPos' );
}
/**
- * @param $index
+ * @param string $index
* @return string
*/
function useIndexClause( $index ) {
* @return string
*/
public function getSoftwareLink() {
- return '[http://www.mysql.com/ MySQL]';
+ $version = $this->getServerVersion();
+ if ( strpos( $version, 'MariaDB' ) !== false ) {
+ return '[{{int:version-db-mariadb-url}} MariaDB]';
+ } elseif ( strpos( $version, 'percona' ) !== false ) {
+ return '[{{int:version-db-percona-url}} Percona Server]';
+ } else {
+ return '[{{int:version-db-mysql-url}} MySQL]';
+ }
}
/**
- * @param $options array
+ * @param array $options
*/
public function setSessionOptions( array $options ) {
if ( isset( $options['connTimeout'] ) ) {
}
}
+ /**
+ * @param string $sql
+ * @param string $newLine
+ * @return bool
+ */
public function streamStatementEnd( &$sql, &$newLine ) {
if ( strtoupper( substr( $newLine, 0, 9 ) ) == 'DELIMITER' ) {
preg_match( '/^DELIMITER\s+(\S+)/', $newLine, $m );
*
* @param string $lockName name of lock to poll
* @param string $method name of method calling us
- * @return Boolean
+ * @return bool
* @since 1.20
*/
public function lockIsFree( $lockName, $method ) {
}
/**
- * @param $lockName string
- * @param $method string
- * @param $timeout int
+ * @param string $lockName
+ * @param string $method
+ * @param int $timeout
* @return bool
*/
public function lock( $lockName, $method, $timeout = 5 ) {
/**
* FROM MYSQL DOCS:
* http://dev.mysql.com/doc/refman/5.0/en/miscellaneous-functions.html#function_release-lock
- * @param $lockName string
- * @param $method string
+ * @param string $lockName
+ * @param string $method
* @return bool
*/
public function unlock( $lockName, $method ) {
}
/**
- * @param $read array
- * @param $write array
- * @param $method string
- * @param $lowPriority bool
+ * @param array $read
+ * @param array $write
+ * @param string $method
+ * @param bool $lowPriority
* @return bool
*/
public function lockTables( $read, $write, $method, $lowPriority = true ) {
}
/**
- * @param $method string
+ * @param string $method
* @return bool
*/
public function unlockTables( $method ) {
* Get search engine class. All subclasses of this
* need to implement this if they wish to use searching.
*
- * @return String
+ * @return string
*/
public function getSearchEngine() {
return 'SearchMySQL';
/**
* @param bool $value
- * @return mixed
+ * @return mixed null|bool|ResultWrapper
*/
public function setBigSelects( $value = true ) {
if ( $value === 'default' ) {
* @param array $uniqueIndexes
* @param array $set
* @param string $fname
- * @param array $options
* @return bool
*/
- public function upsert(
- $table, array $rows, array $uniqueIndexes, array $set, $fname = __METHOD__
+ public function upsert( $table, array $rows, array $uniqueIndexes,
+ array $set, $fname = __METHOD__
) {
if ( !count( $rows ) ) {
return true; // nothing to do
}
- $rows = is_array( reset( $rows ) ) ? $rows : array( $rows );
+
+ if ( !is_array( reset( $rows ) ) ) {
+ $rows = array( $rows );
+ }
$table = $this->tableName( $table );
$columns = array_keys( $rows[0] );
}
/**
- * @param $oldName
- * @param $newName
- * @param $temporary bool
- * @param $fname string
+ * @param string $oldName
+ * @param string $newName
+ * @param bool $temporary
+ * @param string $fname
+ * @return bool
*/
function duplicateTableStructure( $oldName, $newName, $temporary = false, $fname = __METHOD__ ) {
$tmp = $temporary ? 'TEMPORARY ' : '';
$newName = $this->addIdentifierQuotes( $newName );
$oldName = $this->addIdentifierQuotes( $oldName );
$query = "CREATE $tmp TABLE $newName (LIKE $oldName)";
- $this->query( $query, $fname );
+
+ return $this->query( $query, $fname );
}
/**
* List all tables on the database
*
* @param string $prefix Only show tables with this prefix, e.g. mw_
- * @param string $fname calling function name
+ * @param string $fname Calling function name
* @return array
*/
function listTables( $prefix = null, $fname = __METHOD__ ) {
/**
* Get status information from SHOW STATUS in an associative array
*
- * @param $which string
+ * @param string $which
* @return array
*/
function getMysqlStatus( $which = "%" ) {
/**
* Differentiates between a TABLE and a VIEW.
*
- * @param $name string: Name of the TABLE/VIEW to test
+ * @param string $name Name of the TABLE/VIEW to test
+ * @param string $prefix
* @return bool
* @since 1.22
*/
}
class MySQLMasterPos implements DBMasterPos {
- var $file, $pos;
+ /** @var string */
+ public $file;
+
+ /** @var int timestamp */
+ public $pos;
function __construct( $file, $pos ) {
$this->file = $file;
*/
class DatabaseMysqli extends DatabaseMysqlBase {
/**
- * @param $sql string
+ * @param string $sql
* @return resource
*/
protected function doQuery( $sql ) {
return $ret;
}
+ /**
+ * @param string $realServer
+ * @return bool|mysqli
+ * @throws DBConnectionError
+ */
protected function mysqlConnect( $realServer ) {
+ global $wgDBmysql5;
# Fail now
# Otherwise we get a suppressed fatal error, which is very hard to track down
if ( !function_exists( 'mysqli_init' ) ) {
}
$mysqli = mysqli_init();
- $numAttempts = 2;
+ if ( $wgDBmysql5 ) {
+ // Tell the server we're communicating with it in UTF-8.
+ // This may engage various charset conversions.
+ $mysqli->options( MYSQLI_SET_CHARSET_NAME, 'utf8' );
+ } else {
+ $mysqli->options( MYSQLI_SET_CHARSET_NAME, 'binary' );
+ }
+ $numAttempts = 2;
for ( $i = 0; $i < $numAttempts; $i++ ) {
if ( $i > 1 ) {
usleep( 1000 );
return false;
}
+ protected function connectInitCharset() {
+ // already done in mysqlConnect()
+ return true;
+ }
+
/**
+ * @param string $charset
* @return bool
*/
protected function mysqlSetCharset( $charset ) {
}
/**
- * @param $db
+ * @param string $db
* @return bool
*/
function selectDB( $db ) {
return $this->mConn->server_info;
}
+ /**
+ * @param mysqli $res
+ * @return bool
+ */
protected function mysqlFreeResult( $res ) {
$res->free_result();
return true;
}
+ /**
+ * @param mysqli $res
+ * @return bool
+ */
protected function mysqlFetchObject( $res ) {
$object = $res->fetch_object();
if ( $object === null ) {
return $object;
}
+ /**
+ * @param mysqli $res
+ * @return bool
+ */
protected function mysqlFetchArray( $res ) {
$array = $res->fetch_array();
if ( $array === null ) {
return $array;
}
+ /**
+ * @param mysqli $res
+ * @return mixed
+ */
protected function mysqlNumRows( $res ) {
return $res->num_rows;
}
+ /**
+ * @param mysqli $res
+ * @return mixed
+ */
protected function mysqlNumFields( $res ) {
return $res->field_count;
}
+ /**
+ * @param mysqli $res
+ * @param int $n
+ * @return mixed
+ */
protected function mysqlFetchField( $res, $n ) {
$field = $res->fetch_field_direct( $n );
$field->not_null = $field->flags & MYSQLI_NOT_NULL_FLAG;
return $field;
}
+ /**
+ * @param resource|ResultWrapper $res
+ * @param int $n
+ * @return mixed
+ */
protected function mysqlFieldName( $res, $n ) {
$field = $res->fetch_field_direct( $n );
return $field->name;
}
+ /**
+ * @param resource|ResultWrapper $res
+ * @param int $n
+ * @return mixed
+ */
protected function mysqlFieldType( $res, $n ) {
$field = $res->fetch_field_direct( $n );
return $field->type;
}
+ /**
+ * @param resource|ResultWrapper $res
+ * @param int $row
+ * @return mixed
+ */
protected function mysqlDataSeek( $res, $row ) {
return $res->data_seek( $row );
}
+ /**
+ * @param mysqli $conn Optional connection object
+ * @return string
+ */
protected function mysqlError( $conn = null ) {
if ( $conn === null ) {
return mysqli_connect_error();
}
}
+ /**
+ * Escapes special characters in a string for use in an SQL statement
+ * @param string $s
+ * @return string
+ */
protected function mysqlRealEscapeString( $s ) {
return $this->mConn->real_escape_string( $s );
}
}
/**
- * @param $db DatabaseBase
- * @param $stmt
+ * @param DatabaseBase $db
+ * @param resource $stmt A valid OCI statement identifier
* @param bool $unique
*/
function __construct( &$db, $stmt, $unique = false ) {
* @ingroup Database
*/
class DatabaseOracle extends DatabaseBase {
- var $mInsertId = null;
- var $mLastResult = null;
- var $lastResult = null;
- var $cursor = 0;
- var $mAffectedRows;
+ /** @var resource */
+ protected $mLastResult = null;
- var $ignore_DUP_VAL_ON_INDEX = false;
- var $sequenceData = null;
+ /** @var int The number of rows affected as an integer */
+ protected $mAffectedRows;
- var $defaultCharset = 'AL32UTF8';
+ /** @var int */
+ private $mInsertId = null;
- var $mFieldInfoCache = array();
+ /** @var bool */
+ private $ignoreDupValOnIndex = false;
+
+ /** @var bool|array */
+ private $sequenceData = null;
+
+ /** @var string Character set for Oracle database */
+ private $defaultCharset = 'AL32UTF8';
+
+ /** @var array */
+ private $mFieldInfoCache = array();
function __construct( $p = null ) {
global $wgDBprefix;
}
if ( !strlen( $user ) ) { # e.g. the class is being loaded
- return;
+ return null;
}
if ( $wgDBOracleDRCP ) {
if ( !oci_execute( $stmt, $this->execFlags() ) ) {
$e = oci_error( $stmt );
- if ( !$this->ignore_DUP_VAL_ON_INDEX || $e['code'] != '1' ) {
+ if ( !$this->ignoreDupValOnIndex || $e['code'] != '1' ) {
$this->reportQueryError( $e['message'], $e['code'], $sql, __METHOD__ );
return false;
return $this->query( $sql, $fname, true );
}
+ /**
+ * Frees resources associated with the LOB descriptor
+ * @param ResultWrapper|resource $res
+ */
function freeResult( $res ) {
if ( $res instanceof ResultWrapper ) {
$res = $res->result;
$res->free();
}
+ /**
+ * @param ResultWrapper|stdClass $res
+ * @return mixed
+ */
function fetchObject( $res ) {
if ( $res instanceof ResultWrapper ) {
$res = $res->result;
/**
* This must be called after nextSequenceVal
- * @return null
+ * @return null|int
*/
function insertId() {
return $this->mInsertId;
}
+ /**
+ * @param mixed $res
+ * @param int $row
+ */
function dataSeek( $res, $row ) {
if ( $res instanceof ORAResult ) {
$res->seek( $row );
/**
* Returns information about an index
* If errors are explicitly ignored, returns NULL on failure
+ * @param string $table
+ * @param string $index
+ * @param string $fname
* @return bool
*/
function indexInfo( $table, $index, $fname = __METHOD__ ) {
}
if ( in_array( 'IGNORE', $options ) ) {
- $this->ignore_DUP_VAL_ON_INDEX = true;
+ $this->ignoreDupValOnIndex = true;
}
if ( !is_array( reset( $a ) ) ) {
$retVal = true;
if ( in_array( 'IGNORE', $options ) ) {
- $this->ignore_DUP_VAL_ON_INDEX = false;
+ $this->ignoreDupValOnIndex = false;
}
return $retVal;
return $bind;
}
+ /**
+ * @param string $table
+ * @param $row
+ * @param string $fname
+ * @return bool
+ * @throws DBUnexpectedError
+ */
private function insertOneRow( $table, $row, $fname ) {
global $wgContLang;
return false;
}
} else {
+ /** @var OCI_Lob[] $lob */
if ( ( $lob[$col] = oci_new_descriptor( $this->mConn, OCI_D_LOB ) ) === false ) {
$e = oci_error( $stmt );
throw new DBUnexpectedError( $this, "Cannot create LOB descriptor: " . $e['message'] );
if ( oci_execute( $stmt, $this->execFlags() ) === false ) {
$e = oci_error( $stmt );
- if ( !$this->ignore_DUP_VAL_ON_INDEX || $e['code'] != '1' ) {
+ if ( !$this->ignoreDupValOnIndex || $e['code'] != '1' ) {
$this->reportQueryError( $e['message'], $e['code'], $sql, __METHOD__ );
return false;
oci_commit( $this->mConn );
}
- oci_free_statement( $stmt );
+ return oci_free_statement( $stmt );
}
function insertSelect( $destTable, $srcTable, $varMap, $conds, $fname = __METHOD__,
$sql .= " $tailOpts";
if ( in_array( 'IGNORE', $insertOptions ) ) {
- $this->ignore_DUP_VAL_ON_INDEX = true;
+ $this->ignoreDupValOnIndex = true;
}
$retval = $this->query( $sql, $fname );
if ( in_array( 'IGNORE', $insertOptions ) ) {
- $this->ignore_DUP_VAL_ON_INDEX = false;
+ $this->ignoreDupValOnIndex = false;
}
return $retval;
/**
* Return the next in a sequence, save the value for retrieval via insertId()
- * @return null
+ *
+ * @param string $seqName
+ * @return null|int
*/
function nextSequenceValue( $seqName ) {
$res = $this->query( "SELECT $seqName.nextval FROM dual" );
/**
* Return sequence_name if table has a sequence
+ *
+ * @param string $table
* @return bool
*/
private function getSequenceData( $table ) {
return ( isset( $this->sequenceData[$table] ) ) ? $this->sequenceData[$table] : false;
}
- # Returns the size of a text field, or -1 for "unlimited"
+ /**
+ * Returns the size of a text field, or -1 for "unlimited"
+ *
+ * @param string $table
+ * @param string $field
+ * @return mixed
+ */
function textFieldSize( $table, $field ) {
$fieldInfoData = $this->fieldInfo( $table, $field );
/**
* Return aggregated value function call
+ *
+ * @param $valuedata
+ * @param string $valuename
+ * @return mixed
*/
public function aggregateValue( $valuedata, $valuename = 'value' ) {
return $valuedata;
* @return string wikitext of a link to the server software's web site
*/
public function getSoftwareLink() {
- return '[http://www.oracle.com/ Oracle]';
+ return '[{{int:version-db-oracle-url}} Oracle]';
}
/**
/**
* Query whether a given index exists
+ * @param string $table
+ * @param string $index
+ * @param string $fname
* @return bool
*/
function indexExists( $table, $index, $fname = __METHOD__ ) {
/**
* Query whether a given table exists (in the given schema, or the default mw one if not given)
+ * @param string $table
+ * @param string $fname
* @return bool
*/
function tableExists( $table, $fname = __METHOD__ ) {
* For internal calls. Use fieldInfo for normal usage.
* Returns false if the field doesn't exist
*
- * @param $table Array
- * @param $field String
+ * @param array|string $table
+ * @param string $field
* @return ORAField|ORAResult
*/
private function fieldInfoMulti( $table, $field ) {
/**
* @throws DBUnexpectedError
- * @param $table
- * @param $field
+ * @param string $table
+ * @param string $field
* @return ORAField
*/
function fieldInfo( $table, $field ) {
}
}
- /* defines must comply with ^define\s*([^\s=]*)\s*=\s?'\{\$([^\}]*)\}'; */
+ /**
+ * defines must comply with ^define\s*([^\s=]*)\s*=\s?'\{\$([^\}]*)\}';
+ *
+ * @param resource $fp
+ * @param bool|string $lineCallback
+ * @param bool|callable $resultCallback
+ * @param string $fname
+ * @param bool|callable $inputCallback
+ * @return bool|string
+ */
function sourceStream( $fp, $lineCallback = false, $resultCallback = false,
$fname = __METHOD__, $inputCallback = false ) {
$cmd = '';
* Returns an optional USE INDEX clause to go after the table, and a
* string to go at the end of the query
*
- * @private
- *
- * @param array $options an associative array of options to be turned into
- * an SQL query, valid keys are listed in the function.
+ * @param array $options An associative array of options to be turned into
+ * an SQL query, valid keys are listed in the function.
* @return array
*/
function makeSelectOptions( $options ) {
return parent::delete( $table, $conds, $fname );
}
+ /**
+ * @param string $table
+ * @param array $values
+ * @param array $conds
+ * @param string $fname
+ * @param array $options
+ * @return bool
+ * @throws DBUnexpectedError
+ */
function update( $table, $values, $conds, $fname = __METHOD__, $options = array() ) {
global $wgContLang;
return false;
}
} else {
+ /** @var OCI_Lob[] $lob */
if ( ( $lob[$col] = oci_new_descriptor( $this->mConn, OCI_D_LOB ) ) === false ) {
$e = oci_error( $stmt );
throw new DBUnexpectedError( $this, "Cannot create LOB descriptor: " . $e['message'] );
if ( oci_execute( $stmt, $this->execFlags() ) === false ) {
$e = oci_error( $stmt );
- if ( !$this->ignore_DUP_VAL_ON_INDEX || $e['code'] != '1' ) {
+ if ( !$this->ignoreDupValOnIndex || $e['code'] != '1' ) {
$this->reportQueryError( $e['message'], $e['code'], $sql, __METHOD__ );
return false;
oci_commit( $this->mConn );
}
- oci_free_statement( $stmt );
+ return oci_free_statement( $stmt );
}
function bitNot( $field ) {
return 'BITOR(' . $fieldLeft . ', ' . $fieldRight . ')';
}
- function setFakeMaster( $enabled = true ) {
- }
-
function getDBname() {
return $this->mDBname;
}
public function getInfinity() {
return '31-12-2030 12:00:00.000000';
}
-} // end DatabaseOracle class
+}
$has_default, $default;
/**
- * @param $db DatabaseBase
- * @param $table
- * @param $field
+ * @param DatabaseBase $db
+ * @param string $table
+ * @param string $field
* @return null|PostgresField
*/
static function fromText( $db, $table, $field ) {
* @ingroup Database
*/
class PostgresTransactionState {
-
- static $WATCHED = array(
+ private static $WATCHED = array(
array(
"desc" => "%s: Connection state changed from %s -> %s\n",
"states" => array(
)
);
+ /** @var array */
+ private $mNewState;
+
+ /** @var array */
+ private $mCurrentState;
+
public function __construct( $conn ) {
$this->mConn = $conn;
$this->update();
* @since 1.19
*/
class SavepointPostgres {
- /**
- * Establish a savepoint within a transaction
- */
+ /** @var DatabaseBase Establish a savepoint within a transaction */
protected $dbw;
protected $id;
protected $didbegin;
+ /**
+ * @param DatabaseBase $dbw
+ * @param $id
+ */
public function __construct( $dbw, $id ) {
$this->dbw = $dbw;
$this->id = $id;
* @ingroup Database
*/
class DatabasePostgres extends DatabaseBase {
- var $mInsertId = null;
- var $mLastResult = null;
- var $numeric_version = null;
- var $mAffectedRows = null;
+ /** @var resource */
+ protected $mLastResult = null;
+
+ /** @var int The number of rows affected as an integer */
+ protected $mAffectedRows = null;
+
+ /** @var int */
+ private $mInsertId = null;
+
+ /** @var float|string */
+ private $numericVersion = null;
+
+ /** @var string Connect string to open a PostgreSQL connection */
+ private $connectString;
+
+ /** @var PostgresTransactionState */
+ private $mTransactionState;
+
+ /** @var string */
+ private $mCoreSchema;
function getType() {
return 'postgres';
* @param string $user
* @param string $password
* @param string $dbName
- * @throws DBConnectionError
+ * @throws DBConnectionError|Exception
* @return DatabaseBase|null
*/
function open( $server, $user, $password, $dbName ) {
global $wgDBport;
if ( !strlen( $user ) ) { # e.g. the class is being loaded
- return;
+ return null;
}
$this->mServer = $server;
/**
* Postgres doesn't support selectDB in the same way MySQL does. So if the
* DB name doesn't match the open connection, open a new one
- * @return
+ * @param string $db
+ * @return bool
*/
function selectDB( $db ) {
if ( $this->mDBname !== $db ) {
return $this->query( $sql, $fname, true );
}
+ /**
+ * @param stdClass|ResultWrapper $res
+ * @throws DBUnexpectedError
+ */
function freeResult( $res ) {
if ( $res instanceof ResultWrapper ) {
$res = $res->result;
}
}
+ /**
+ * @param ResultWrapper|stdClass $res
+ * @return stdClass
+ * @throws DBUnexpectedError
+ */
function fetchObject( $res ) {
if ( $res instanceof ResultWrapper ) {
$res = $res->result;
* Return the result of the last call to nextSequenceValue();
* This must be called after nextSequenceValue().
*
- * @return integer|null
+ * @return int|null
*/
function insertId() {
return $this->mInsertId;
}
+ /**
+ * @param mixed $res
+ * @param int $row
+ * @return bool
+ */
function dataSeek( $res, $row ) {
if ( $res instanceof ResultWrapper ) {
$res = $res->result;
* This is not necessarily an accurate estimate, so use sparingly
* Returns -1 if count cannot be found
* Takes same arguments as Database::select()
+ *
+ * @param string $table
+ * @param string $vars
+ * @param string $conds
+ * @param string $fname
+ * @param array $options
* @return int
*/
function estimateRowCount( $table, $vars = '*', $conds = '',
/**
* Returns information about an index
* If errors are explicitly ignored, returns NULL on failure
+ *
+ * @param string $table
+ * @param string $index
+ * @param string $fname
* @return bool|null
*/
function indexInfo( $table, $index, $fname = __METHOD__ ) {
* Returns is of attributes used in index
*
* @since 1.19
- * @return Array
+ * @param string $index
+ * @param bool|string $schema
+ * @return array
*/
function indexAttributes( $index, $schema = false ) {
if ( $schema === false ) {
if ( !$res ) {
return null;
}
- foreach ( $res as $row ) {
- return true;
+
+ return $res->numRows() > 0;
+ }
+
+ /**
+ * Change the FOR UPDATE option as necessary based on the join conditions. Then pass
+ * to the parent function to get the actual SQL text.
+ *
+ * In Postgres when using FOR UPDATE, only the main table and tables that are inner joined
+ * can be locked. That means tables in an outer join cannot be FOR UPDATE locked. Trying to do
+ * so causes a DB error. This wrapper checks which tables can be locked and adjusts it accordingly.
+ */
+ function selectSQLText( $table, $vars, $conds = '', $fname = __METHOD__, $options = array(), $join_conds = array() ) {
+ if ( is_array( $options ) ) {
+ $forUpdateKey = array_search( 'FOR UPDATE', $options );
+ if ( $forUpdateKey !== false && $join_conds ) {
+ unset( $options[$forUpdateKey] );
+
+ foreach ( $join_conds as $table_cond => $join_cond ) {
+ if ( 0 === preg_match( '/^(?:LEFT|RIGHT|FULL)(?: OUTER)? JOIN$/i', $join_cond[0] ) ) {
+ $options['FOR UPDATE'][] = $table_cond;
+ }
+ }
+ }
}
- return false;
+ return parent::selectSQLText( $table, $vars, $conds, $fname, $options, $join_conds );
}
/**
* $args may be a single associative array, or an array of these with numeric keys,
* for multi-row insert (Postgres version 8.2 and above only).
*
- * @param $table String: Name of the table to insert to.
- * @param $args Array: Items to insert into the table.
- * @param $fname String: Name of the function, for profiling
- * @param string $options or Array. Valid options: IGNORE
- *
+ * @param string $table Name of the table to insert to.
+ * @param array $args Items to insert into the table.
+ * @param string $fname Name of the function, for profiling
+ * @param array|string $options String or array. Valid options: IGNORE
* @return bool Success of insert operation. IGNORE always returns true.
*/
function insert( $table, $args, $fname = __METHOD__, $options = array() ) {
}
$table = $this->tableName( $table );
- if ( !isset( $this->numeric_version ) ) {
+ if ( !isset( $this->numericVersion ) ) {
$this->getServerVersion();
}
$sql = "INSERT INTO $table (" . implode( ',', $keys ) . ') VALUES ';
if ( $multi ) {
- if ( $this->numeric_version >= 8.2 && !$savepoint ) {
+ if ( $this->numericVersion >= 8.2 && !$savepoint ) {
$first = true;
foreach ( $args as $row ) {
if ( $first ) {
}
}
if ( $savepoint ) {
- $olde = error_reporting( $olde );
+ error_reporting( $olde );
$savepoint->commit();
// Set the affected row count for the whole operation
* $conds may be "*" to copy the whole table
* srcTable may be an array of tables.
* @todo FIXME: Implement this a little better (seperate select/insert)?
+ *
+ * @param string $destTable
+ * @param array|string $srcTable
+ * @param array $varMap
+ * @param array $conds
+ * @param string $fname
+ * @param array $insertOptions
+ * @param array $selectOptions
* @return bool
*/
function insertSelect( $destTable, $srcTable, $varMap, $conds, $fname = __METHOD__,
$savepoint->release();
$numrowsinserted++;
}
- $olde = error_reporting( $olde );
+ error_reporting( $olde );
$savepoint->commit();
// Set the affected row count for the whole operation
/**
* Return the next in a sequence, save the value for retrieval via insertId()
- * @return null
+ *
+ * @param string $seqName
+ * @return int|null
*/
function nextSequenceValue( $seqName ) {
$safeseq = str_replace( "'", "''", $seqName );
/**
* Return the current value of a sequence. Assumes it has been nextval'ed in this session.
- * @return
+ *
+ * @param string $seqName
+ * @return int
*/
function currentSequenceValue( $seqName ) {
$safeseq = str_replace( "'", "''", $seqName );
* This should really be handled by PHP PostgreSQL module
*
* @since 1.19
- * @param $text string: postgreql array returned in a text form like {a,b}
- * @param $output string
- * @param $limit int
- * @param $offset int
+ * @param string $text Postgreql array returned in a text form like {a,b}
+ * @param string $output
+ * @param int $limit
+ * @param int $offset
* @return string
*/
function pg_array_parse( $text, &$output, $limit = false, $offset = 1 ) {
}
/**
- * @return string wikitext of a link to the server software's web site
+ * @return string Wikitext of a link to the server software's web site
*/
public function getSoftwareLink() {
- return '[http://www.postgresql.org/ PostgreSQL]';
+ return '[{{int:version-db-postgres-url}} PostgreSQL]';
}
/**
* Needs transaction
*
* @since 1.19
- * @return string return default schema for the current session
+ * @return string Default schema for the current session
*/
function getCurrentSchema() {
$res = $this->query( "SELECT current_schema()", __METHOD__ );
* Needs transaction
*
* @since 1.19
- * @return array how to search for table names schemas for the current user
+ * @return array How to search for table names schemas for the current user
*/
function getSearchPath() {
$res = $this->query( "SHOW search_path", __METHOD__ );
* This will be also called by the installer after the schema is created
*
* @since 1.19
- * @param $desired_schema string
+ *
+ * @param string $desiredSchema
*/
- function determineCoreSchema( $desired_schema ) {
+ function determineCoreSchema( $desiredSchema ) {
$this->begin( __METHOD__ );
- if ( $this->schemaExists( $desired_schema ) ) {
- if ( in_array( $desired_schema, $this->getSchemas() ) ) {
- $this->mCoreSchema = $desired_schema;
- wfDebug( "Schema \"" . $desired_schema . "\" already in the search path\n" );
+ if ( $this->schemaExists( $desiredSchema ) ) {
+ if ( in_array( $desiredSchema, $this->getSchemas() ) ) {
+ $this->mCoreSchema = $desiredSchema;
+ wfDebug( "Schema \"" . $desiredSchema . "\" already in the search path\n" );
} else {
/**
* Prepend our schema (e.g. 'mediawiki') in front
*/
$search_path = $this->getSearchPath();
array_unshift( $search_path,
- $this->addIdentifierQuotes( $desired_schema ) );
+ $this->addIdentifierQuotes( $desiredSchema ) );
$this->setSearchPath( $search_path );
- $this->mCoreSchema = $desired_schema;
- wfDebug( "Schema \"" . $desired_schema . "\" added to the search path\n" );
+ $this->mCoreSchema = $desiredSchema;
+ wfDebug( "Schema \"" . $desiredSchema . "\" added to the search path\n" );
}
} else {
$this->mCoreSchema = $this->getCurrentSchema();
- wfDebug( "Schema \"" . $desired_schema . "\" not found, using current \"" .
+ wfDebug( "Schema \"" . $desiredSchema . "\" not found, using current \"" .
$this->mCoreSchema . "\"\n" );
}
/* Commit SET otherwise it will be rollbacked on error or IGNORE SELECT */
* @return string Version information from the database
*/
function getServerVersion() {
- if ( !isset( $this->numeric_version ) ) {
+ if ( !isset( $this->numericVersion ) ) {
$versionInfo = pg_version( $this->mConn );
if ( version_compare( $versionInfo['client'], '7.4.0', 'lt' ) ) {
// Old client, abort install
- $this->numeric_version = '7.3 or earlier';
+ $this->numericVersion = '7.3 or earlier';
} elseif ( isset( $versionInfo['server'] ) ) {
// Normal client
- $this->numeric_version = $versionInfo['server'];
+ $this->numericVersion = $versionInfo['server'];
} else {
// Bug 16937: broken pgsql extension from PHP<5.3
- $this->numeric_version = pg_parameter_status( $this->mConn, 'server_version' );
+ $this->numericVersion = pg_parameter_status( $this->mConn, 'server_version' );
}
}
- return $this->numeric_version;
+ return $this->numericVersion;
}
/**
* Query whether a given relation exists (in the given schema, or the
* default mw one if not given)
+ * @param string $table
+ * @param array|string $types
+ * @param bool|string $schema
* @return bool
*/
function relationExists( $table, $types, $schema = false ) {
/**
* For backward compatibility, this function checks both tables and
* views.
+ * @param string $table
+ * @param string $fname
+ * @param bool|string $schema
* @return bool
*/
function tableExists( $table, $fname = __METHOD__, $schema = false ) {
/**
* Query whether a given schema exists. Returns true if it does, false if it doesn't.
+ * @param string $schema
* @return bool
*/
function schemaExists( $schema ) {
/**
* Returns true if a given role (i.e. user) exists, false otherwise.
+ * @param string $roleName
* @return bool
*/
function roleExists( $roleName ) {
/**
* pg_field_type() wrapper
+ * @param ResultWrapper|resource $res ResultWrapper or PostgreSQL query result resource
+ * @param int $index Field number, starting from 0
* @return string
*/
function fieldType( $res, $index ) {
}
/**
- * @param $b
+ * @param string $b
* @return Blob
*/
function encodeBlob( $b ) {
}
/**
- * @param $s null|bool|Blob
+ * @param null|bool|Blob $s
* @return int|string
*/
function addQuotes( $s ) {
* Postgres specific version of replaceVars.
* Calls the parent version in Database.php
*
- * @private
- *
* @param string $ins SQL string, read from a stream (usually tables.sql)
- *
* @return string SQL string
*/
protected function replaceVars( $ins ) {
$ins = parent::replaceVars( $ins );
- if ( $this->numeric_version >= 8.3 ) {
+ if ( $this->numericVersion >= 8.3 ) {
// Thanks for not providing backwards-compatibility, 8.3
$ins = preg_replace( "/to_tsvector\s*\(\s*'default'\s*,/", 'to_tsvector(', $ins );
}
- if ( $this->numeric_version <= 8.1 ) { // Our minimum version
+ if ( $this->numericVersion <= 8.1 ) { // Our minimum version
$ins = str_replace( 'USING gin', 'USING gist', $ins );
}
/**
* Various select options
*
- * @private
- *
* @param array $options an associative array of options to be turned into
- * an SQL query, valid keys are listed in the function.
+ * an SQL query, valid keys are listed in the function.
* @return array
*/
function makeSelectOptions( $options ) {
// : false );
//}
- if ( isset( $noKeyOptions['FOR UPDATE'] ) ) {
+ if ( isset( $options['FOR UPDATE'] ) ) {
+ $postLimitTail .= ' FOR UPDATE OF ' . implode( ', ', $options['FOR UPDATE'] );
+ } else if ( isset( $noKeyOptions['FOR UPDATE'] ) ) {
$postLimitTail .= ' FOR UPDATE';
}
+
if ( isset( $noKeyOptions['DISTINCT'] ) || isset( $noKeyOptions['DISTINCTROW'] ) ) {
$startOpts .= 'DISTINCT';
}
return array( $startOpts, $useIndex, $preLimitTail, $postLimitTail );
}
- function setFakeMaster( $enabled = true ) {
- }
-
function getDBname() {
return $this->mDBname;
}
* Check to see if a named lock is available. This is non-blocking.
* See http://www.postgresql.org/docs/8.2/static/functions-admin.html#FUNCTIONS-ADVISORY-LOCKS
*
- * @param string $lockName name of lock to poll
- * @param string $method name of method calling us
- * @return Boolean
+ * @param string $lockName Name of lock to poll
+ * @param string $method Name of method calling us
+ * @return bool
* @since 1.20
*/
public function lockIsFree( $lockName, $method ) {
/**
* See http://www.postgresql.org/docs/8.2/static/functions-admin.html#FUNCTIONS-ADVISORY-LOCKS
- * @param $lockName string
- * @param $method string
- * @param $timeout int
+ * @param string $lockName
+ * @param string $method
+ * @param int $timeout
* @return bool
*/
public function lock( $lockName, $method, $timeout = 5 ) {
/**
* See http://www.postgresql.org/docs/8.2/static/functions-admin.html#FUNCTIONS-ADVISORY-LOCKSFROM
* PG DOCS: http://www.postgresql.org/docs/8.2/static/functions-admin.html#FUNCTIONS-ADVISORY-LOCKS
- * @param $lockName string
- * @param $method string
+ * @param string $lockName
+ * @param string $method
* @return bool
*/
public function unlock( $lockName, $method ) {
* @ingroup Database
*/
class DatabaseSqlite extends DatabaseBase {
+ /** @var bool Whether full text is enabled */
private static $fulltextEnabled = null;
- var $mAffectedRows;
- var $mLastResult;
- var $mDatabaseFile;
- var $mName;
+ /** @var string File name for SQLite database file */
+ public $mDatabaseFile;
- /**
- * @var PDO
- */
+ /** @var int The number of rows affected as an integer */
+ protected $mAffectedRows;
+
+ /** @var resource */
+ protected $mLastResult;
+
+ /** @var PDO */
protected $mConn;
function __construct( $p = null ) {
'foreign' => isset( $args[6] ) ? $args[6] : false
);
}
- $this->mName = $p['dbname'];
+ $this->mDBname = $p['dbname'];
parent::__construct( $p );
// parent doesn't open when $user is false, but we can work with $dbName
if ( $p['dbname'] && !$this->isOpen() ) {
/**
* Opens a database file
*
- * @param $fileName string
- *
+ * @param string $fileName
* @throws DBConnectionError
* @return PDO|bool SQL connection or false if failed
*/
function openFile( $fileName ) {
+ $err = false;
+
$this->mDatabaseFile = $fileName;
try {
if ( $this->mFlags & DBO_PERSISTENT ) {
} catch ( PDOException $e ) {
$err = $e->getMessage();
}
+
if ( !$this->mConn ) {
wfDebug( "DB connection error: $err\n" );
throw new DBConnectionError( $this, $err );
}
+
$this->mOpened = !!$this->mConn;
# set error codes only, don't raise exceptions
if ( $this->mOpened ) {
# Enforce LIKE to be case sensitive, just like MySQL
$this->query( 'PRAGMA case_sensitive_like = 1' );
- return true;
+ return $this->mConn;
}
+
+ return false;
}
/**
* Generates a database file name. Explicitly public for installer.
* @param string $dir Directory where database resides
* @param string $dbName Database name
- * @return String
+ * @return string
*/
public static function generateFileName( $dir, $dbName ) {
return "$dir/$dbName.sqlite";
/**
* Returns version of currently supported SQLite fulltext search module or false if none present.
- * @return String
+ * @return string
*/
static function getFulltextSearchModule() {
static $cachedResult = null;
* Attaches external database to our connection, see http://sqlite.org/lang_attach.html
* for details.
*
- * @param string $name database name to be used in queries like
+ * @param string $name Database name to be used in queries like
* SELECT foo FROM dbname.table
- * @param string $file database file name. If omitted, will be generated
+ * @param bool|string $file Database file name. If omitted, will be generated
* using $name and $wgSQLiteDataDir
- * @param string $fname calling function name
- *
+ * @param string $fname Calling function name
* @return ResultWrapper
*/
function attachDatabase( $name, $file = false, $fname = __METHOD__ ) {
* @see DatabaseBase::isWriteQuery()
*
* @param $sql string
- *
* @return bool
*/
function isWriteQuery( $sql ) {
/**
* SQLite doesn't allow buffered results or data seeking etc, so we'll use fetchAll as the result
*
- * @param $sql string
- *
- * @return ResultWrapper
+ * @param string $sql
+ * @return bool|ResultWrapper
*/
protected function doQuery( $sql ) {
$res = $this->mConn->query( $sql );
}
/**
- * @param $res ResultWrapper
+ * @param ResultWrapper|mixed $res
*/
function freeResult( $res ) {
if ( $res instanceof ResultWrapper ) {
}
/**
- * @param $res ResultWrapper
- * @return object|bool
+ * @param ResultWrapper|array $res
+ * @return stdClass|bool
*/
function fetchObject( $res ) {
if ( $res instanceof ResultWrapper ) {
}
/**
- * @param $res ResultWrapper
+ * @param ResultWrapper|mixed $res
* @return array|bool
*/
function fetchRow( $res ) {
/**
* The PDO::Statement class implements the array interface so count() will work
*
- * @param $res ResultWrapper
- *
+ * @param ResultWrapper|array $res
* @return int
*/
function numRows( $res ) {
}
/**
- * @param $res ResultWrapper
+ * @param ResultWrapper $res
* @return int
*/
function numFields( $res ) {
}
/**
- * @param $res ResultWrapper
+ * @param ResultWrapper $res
* @param $n
* @return bool
*/
/**
* Use MySQL's naming (accounts for prefix etc) but remove surrounding backticks
*
- * @param $name
- * @param $format String
+ * @param string $name
+ * @param string $format
* @return string
*/
function tableName( $name, $format = 'quoted' ) {
/**
* Index names have DB scope
*
- * @param $index string
- *
+ * @param string $index
* @return string
*/
function indexName( $index ) {
}
/**
- * @param $res ResultWrapper
- * @param $row
+ * @param ResultWrapper|array $res
+ * @param int $row
*/
function dataSeek( $res, $row ) {
if ( $res instanceof ResultWrapper ) {
* Returns false if the index does not exist
* - if errors are explicitly ignored, returns NULL on failure
*
+ * @param string $table
+ * @param string $index
+ * @param string $fname
* @return array
*/
function indexInfo( $table, $index, $fname = __METHOD__ ) {
}
/**
- * @param $table
- * @param $index
- * @param $fname string
+ * @param string $table
+ * @param string $index
+ * @param string $fname
* @return bool|null
*/
function indexUnique( $table, $index, $fname = __METHOD__ ) {
/**
* Filter the options used in SELECT statements
*
- * @param $options array
- *
+ * @param array $options
* @return array
*/
function makeSelectOptions( $options ) {
}
/**
- * @param $options array
+ * @param array $options
* @return string
*/
- function makeUpdateOptions( $options ) {
+ protected function makeUpdateOptions( $options ) {
$options = self::fixIgnore( $options );
return parent::makeUpdateOptions( $options );
}
/**
- * @param $options array
+ * @param array $options
* @return array
*/
static function fixIgnore( $options ) {
}
/**
- * @param $options array
+ * @param array $options
* @return string
*/
function makeInsertOptions( $options ) {
/**
* Based on generic method (parent) with some prior SQLite-sepcific adjustments
+ * @param string $table
+ * @param array $a
+ * @param string $fname
+ * @param array $options
* @return bool
*/
function insert( $table, $a, $fname = __METHOD__, $options = array() ) {
}
/**
- * @param $table
- * @param $uniqueIndexes
- * @param $rows
- * @param $fname string
+ * @param string $table
+ * @param array $uniqueIndexes Unused
+ * @param string|array $rows
+ * @param string $fname
* @return bool|ResultWrapper
*/
function replace( $table, $uniqueIndexes, $rows, $fname = __METHOD__ ) {
* Returns the size of a text field, or -1 for "unlimited"
* In SQLite this is SQLITE_MAX_LENGTH, by default 1GB. No way to query it though.
*
+ * @param string $table
+ * @param string $field
* @return int
*/
function textFieldSize( $table, $field ) {
}
/**
- * @param $sqls
- * @param $all
+ * @param string $sqls
+ * @param bool $all Whether to "UNION ALL" or not
* @return string
*/
function unionQueries( $sqls, $all ) {
* @return string wikitext of a link to the server software's web site
*/
public function getSoftwareLink() {
- return "[http://sqlite.org/ SQLite]";
+ return "[{{int:version-db-sqlite-url}} SQLite]";
}
/**
* Get information about a given field
* Returns false if the field does not exist.
*
- * @param $table string
- * @param $field string
+ * @param string $table
+ * @param string $field
* @return SQLiteField|bool False on failure
*/
function fieldInfo( $table, $field ) {
}
/**
- * @param $s string
+ * @param string $s
* @return string
*/
function strencode( $s ) {
}
/**
- * @param $s Blob|string
+ * @param Blob|string $s
* @return string
*/
function addQuotes( $s ) {
/**
* No-op version of deadlockLoop
+ *
* @return mixed
*/
public function deadlockLoop( /*...*/ ) {
}
/**
- * @param $s string
+ * @param string $s
* @return string
*/
protected function replaceVars( $s ) {
/**
* Build a concatenation list to feed into a SQL query
*
- * @param $stringList array
- *
+ * @param string[] $stringList
* @return string
*/
function buildConcat( $stringList ) {
/**
* @throws MWException
- * @param $oldName
- * @param $newName
- * @param $temporary bool
- * @param $fname string
+ * @param string $oldName
+ * @param string $newName
+ * @param bool $temporary
+ * @param string $fname
* @return bool|ResultWrapper
*/
function duplicateTableStructure( $oldName, $newName, $temporary = false, $fname = __METHOD__ ) {
* List all tables on the database
*
* @param string $prefix Only show tables with this prefix, e.g. mw_
- * @param string $fname calling function name
+ * @param string $fname Calling function name
*
* @return array
*/
* This allows us to distinguish a blob from a normal string and an array of strings
*/
class Blob {
+ /** @var string */
private $mData;
function __construct( $data ) {
* @ingroup Database
*/
class ResultWrapper implements Iterator {
- var $db, $result, $pos = 0, $currentRow = null;
+ /** @var resource */
+ public $result;
+
+ /** @var DatabaseBase */
+ protected $db;
+
+ /** @var int */
+ protected $pos = 0;
+
+ /** @var */
+ protected $currentRow = null;
/**
* Create a new result object from a result resource and a Database object
*
* @param DatabaseBase $database
- * @param resource $result
+ * @param resource|ResultWrapper $result
*/
function __construct( $database, $result ) {
$this->db = $database;
/**
* Get the number of rows in a result object
*
- * @return integer
+ * @return int
*/
function numRows() {
return $this->db->numRows( $this );
* Fetch the next row from the given result object, in associative array
* form. Fields are retrieved with $row['fieldname'].
*
- * @return Array
+ * @return array
* @throws DBUnexpectedError Thrown if the database returns an error
*/
function fetchRow() {
* Change the position of the cursor in a result object.
* See mysql_data_seek()
*
- * @param $row integer
+ * @param int $row
*/
function seek( $row ) {
$this->db->dataSeek( $this, $row );
* doesn't go anywhere near an actual database.
*/
class FakeResultWrapper extends ResultWrapper {
- var $result = array();
- var $db = null; // And it's going to stay that way :D
- var $pos = 0;
- var $currentRow = null;
+ /** @var array */
+ public $result = array();
+
+ /** @var null And it's going to stay that way :D */
+ protected $db = null;
+
+ /** @var int */
+ protected $pos = 0;
+
+ /** @var array|stdClass|bool */
+ protected $currentRow = null;
function __construct( $array ) {
$this->result = $array;
* manually, use DatabaseBase::anyChar() and anyString() instead.
*/
class LikeMatch {
+ /** @var string */
private $str;
/**
/**
* Return the original stored string.
*
- * @return String
+ * @return string
*/
public function toString() {
return $this->str;
/**
* An object representing a master or slave position in a replicated setup.
+ *
+ * The implementation details of this opaque type are up to the database subclass.
*/
interface DBMasterPos {
}
* @ingroup Database
*/
abstract class LBFactory {
- /**
- * @var LBFactory
- */
- static $instance;
+ /** @var LBFactory */
+ protected static $instance;
/**
* Disables all access to the load balancer, will cause all database access
* @return LBFactory
*/
static function &singleton() {
+ global $wgLBFactoryConf;
+
if ( is_null( self::$instance ) ) {
- $LBFactoryConf = self::getLBFactoryClass();
+ $class = self::getLBFactoryClass( $wgLBFactoryConf );
- self::$instance = new $LBFactoryConf[0]( $LBFactoryConf[1] );
+ self::$instance = new $class( $wgLBFactoryConf );
}
return self::$instance;
/**
* Returns the LBFactory class to use and the load balancer configuration.
*
- * @return array ( factory class, $wgLBFactoryConf )
+ * @param array $config (e.g. $wgLBFactoryConf)
+ * @return string class name
*/
- static function getLBFactoryClass() {
- global $wgLBFactoryConf;
-
+ public static function getLBFactoryClass( array $config ) {
// For configuration backward compatibility after removing
// underscores from class names in MediaWiki 1.23.
$bcClasses = array(
'LBFactory_Fake' => 'LBFactoryFake',
);
- $class = $wgLBFactoryConf['class'];
+ $class = $config['class'];
- if ( in_array( $class, array_keys( $bcClasses ) ) ) {
+ if ( isset( $bcClasses[$class] ) ) {
$class = $bcClasses[$class];
wfDeprecated(
'$wgLBFactoryConf must be updated. See RELEASE-NOTES for details',
);
}
- return array( $class, $wgLBFactoryConf );
+ return $class;
}
/**
/**
* Set the instance to be the given object
*
- * @param $instance LBFactory
+ * @param LBFactory $instance
*/
static function setInstance( $instance ) {
self::destroyInstance();
/**
* Construct a factory based on a configuration array (typically from $wgLBFactoryConf)
- * @param $conf
+ * @param array $conf
*/
abstract function __construct( $conf );
* Create a new load balancer object. The resulting object will be untracked,
* not chronology-protected, and the caller is responsible for cleaning it up.
*
- * @param string $wiki wiki ID, or false for the current wiki
+ * @param bool|string $wiki Wiki ID, or false for the current wiki
* @return LoadBalancer
*/
abstract function newMainLB( $wiki = false );
/**
* Get a cached (tracked) load balancer object.
*
- * @param string $wiki wiki ID, or false for the current wiki
+ * @param bool|string $wiki Wiki ID, or false for the current wiki
* @return LoadBalancer
*/
abstract function getMainLB( $wiki = false );
* untracked, not chronology-protected, and the caller is responsible for
* cleaning it up.
*
- * @param string $cluster external storage cluster, or false for core
- * @param string $wiki wiki ID, or false for the current wiki
- *
+ * @param string $cluster External storage cluster, or false for core
+ * @param bool|string $wiki Wiki ID, or false for the current wiki
* @return LoadBalancer
*/
abstract function newExternalLB( $cluster, $wiki = false );
* Get a cached (tracked) load balancer for external storage
*
* @param string $cluster external storage cluster, or false for core
- * @param string $wiki wiki ID, or false for the current wiki
- *
+ * @param bool|string $wiki Wiki ID, or false for the current wiki
* @return LoadBalancer
*/
abstract function &getExternalLB( $cluster, $wiki = false );
* Execute a function for each tracked load balancer
* The callback is called with the load balancer as the first parameter,
* and $params passed as the subsequent parameters.
- * @param $callback string|array
+ *
+ * @param callable $callback
* @param array $params
*/
abstract function forEachLB( $callback, $params = array() );
/**
* Call a method of each tracked load balancer
- * @param $methodName string
- * @param $args array
+ *
+ * @param string $methodName
+ * @param array $args
*/
function forEachLBCallMethod( $methodName, $args = array() ) {
$this->forEachLB( array( $this, 'callMethod' ), array( $methodName, $args ) );
/**
* Private helper for forEachLBCallMethod
- * @param $loadBalancer
- * @param $methodName string
+ * @param LoadBalancer $loadBalancer
+ * @param string $methodName
* @param $args
*/
function callMethod( $loadBalancer, $methodName, $args ) {
* A simple single-master LBFactory that gets its configuration from the b/c globals
*/
class LBFactorySimple extends LBFactory {
+ /** @var LoadBalancer */
+ protected $mainLB;
- /**
- * @var LoadBalancer
- */
- var $mainLB;
- var $extLBs = array();
+ /** @var LoadBalancer[] */
+ protected $extLBs = array();
- # Chronology protector
- var $chronProt;
+ /** @var ChronologyProtector */
+ protected $chronProt;
function __construct( $conf ) {
$this->chronProt = new ChronologyProtector;
}
/**
- * @param $wiki
+ * @param bool|string $wiki
* @return LoadBalancer
*/
function newMainLB( $wiki = false ) {
}
/**
- * @param $wiki
+ * @param bool|string $wiki
* @return LoadBalancer
*/
function getMainLB( $wiki = false ) {
/**
* @throws MWException
- * @param $cluster
- * @param $wiki
+ * @param string $cluster
+ * @param bool|string $wiki
* @return LoadBalancer
*/
function newExternalLB( $cluster, $wiki = false ) {
}
/**
- * @param $cluster
- * @param $wiki
+ * @param string $cluster
+ * @param bool|string $wiki
* @return array
*/
function &getExternalLB( $cluster, $wiki = false ) {
* Execute a function for each tracked load balancer
* The callback is called with the load balancer as the first parameter,
* and $params passed as the subsequent parameters.
- * @param $callback
- * @param $params array
+ *
+ * @param callable $callback
+ * @param array $params
*/
function forEachLB( $callback, $params = array() ) {
if ( isset( $this->mainLB ) ) {
* Ignores the old configuration globals
*
* Configuration:
- * sectionsByDB A map of database names to section names
+ * sectionsByDB A map of database names to section names.
*
* sectionLoads A 2-d map. For each section, gives a map of server names to
* load ratios. For example:
*
* hostsByName A map of hostname to IP address.
*
- * externalLoads A map of external storage cluster name to server load map
+ * externalLoads A map of external storage cluster name to server load map.
*
* externalTemplateOverrides A set of server info keys overriding serverTemplate for external
- * storage
+ * storage.
*
* templateOverridesByServer A 2-d map overriding serverTemplate and
* externalTemplateOverrides on a server-by-server basis. Applies
* to both core and external storage.
*
- * templateOverridesByCluster A 2-d map overriding the server info by external storage cluster
+ * templateOverridesByCluster A 2-d map overriding the server info by external storage cluster.
*
* masterTemplateOverrides An override array for all master servers.
*
*/
class LBFactoryMulti extends LBFactory {
// Required settings
- var $sectionsByDB, $sectionLoads, $serverTemplate;
+
+ /** @var array A map of database names to section names */
+ protected $sectionsByDB;
+
+ /**
+ * @var array A 2-d map. For each section, gives a map of server names to
+ * load ratios
+ */
+ protected $sectionLoads;
+
+ /**
+ * @var array A server info associative array as documented for
+ * $wgDBservers. The host, hostName and load entries will be
+ * overridden
+ */
+ protected $serverTemplate;
+
// Optional settings
- var $groupLoadsBySection = array(), $groupLoadsByDB = array(), $hostsByName = array();
- var $externalLoads = array(), $externalTemplateOverrides, $templateOverridesByServer;
- var $templateOverridesByCluster, $masterTemplateOverrides, $readOnlyBySection = array();
+
+ /** @var array A 3-d map giving server load ratios for each section and group */
+ protected $groupLoadsBySection = array();
+
+ /** @var array A 3-d map giving server load ratios by DB name */
+ protected $groupLoadsByDB = array();
+
+ /** @var array A map of hostname to IP address */
+ protected $hostsByName = array();
+
+ /** @var array A map of external storage cluster name to server load map */
+ protected $externalLoads = array();
+
+ /**
+ * @var array A set of server info keys overriding serverTemplate for
+ * external storage
+ */
+ protected $externalTemplateOverrides;
+
+ /**
+ * @var array A 2-d map overriding serverTemplate and
+ * externalTemplateOverrides on a server-by-server basis. Applies to both
+ * core and external storage
+ */
+ protected $templateOverridesByServer;
+
+ /** @var array A 2-d map overriding the server info by external storage cluster */
+ protected $templateOverridesByCluster;
+
+ /** @var array An override array for all master servers */
+ protected $masterTemplateOverrides;
+
+ /**
+ * @var array|bool A map of section name to read-only message. Missing or
+ * false for read/write
+ */
+ protected $readOnlyBySection = array();
+
// Other stuff
- var $conf, $mainLBs = array(), $extLBs = array();
- var $lastWiki, $lastSection;
+
+ /** @var array Load balancer factory configuration */
+ protected $conf;
+
+ /** @var LoadBalancer[] */
+ protected $mainLBs = array();
+
+ /** @var LoadBalancer[] */
+ protected $extLBs = array();
+
+ /** @var string */
+ protected $lastWiki;
+
+ /** @var string */
+ protected $lastSection;
/**
- * @param $conf array
+ * @param array $conf
* @throws MWException
*/
function __construct( $conf ) {
}
/**
- * @param $wiki bool|string
+ * @param bool|string $wiki
* @return string
*/
function getSectionForWiki( $wiki = false ) {
}
/**
- * @param $wiki bool|string
+ * @param bool|string $wiki
* @return LoadBalancer
*/
function newMainLB( $wiki = false ) {
}
/**
- * @param $wiki bool|string
+ * @param bool|string $wiki
* @return LoadBalancer
*/
function getMainLB( $wiki = false ) {
/**
* @param string $cluster
- * @param bool $wiki
+ * @param bool|string $wiki
* @throws MWException
* @return LoadBalancer
*/
}
/**
- * @param $cluster
- * @param $wiki
+ * @param string $cluster external storage cluster, or false for core
+ * @param bool|string $wiki Wiki ID, or false for the current wiki
* @return LoadBalancer
*/
function &getExternalLB( $cluster, $wiki = false ) {
/**
* Make a new load balancer object based on template and load array
*
- * @param $template
- * @param $loads array
- * @param $groupLoads
+ * @param array $template
+ * @param array $loads
+ * @param array $groupLoads
* @return LoadBalancer
*/
function newLoadBalancer( $template, $loads, $groupLoads ) {
/**
* Make a server array as expected by LoadBalancer::__construct, using a template and load array
*
- * @param $template
- * @param $loads array
- * @param $groupLoads
+ * @param array $template
+ * @param array $loads
+ * @param array $groupLoads
* @return array
*/
function makeServerArray( $template, $loads, $groupLoads ) {
/**
* Take a group load array indexed by group then server, and reindex it by server then group
- * @param $groupLoads
+ * @param array $groupLoads
* @return array
*/
function reindexGroupLoads( $groupLoads ) {
/**
* Get the database name and prefix based on the wiki ID
- * @param $wiki bool
+ * @param bool|string $wiki
* @return array
*/
function getDBNameAndPrefix( $wiki = false ) {
* Execute a function for each tracked load balancer
* The callback is called with the load balancer as the first parameter,
* and $params passed as the subsequent parameters.
- * @param $callback
- * @param $params array
+ * @param callable $callback
+ * @param array $params
*/
function forEachLB( $callback, $params = array() ) {
foreach ( $this->mainLBs as $lb ) {
* An LBFactory class that always returns a single database object.
*/
class LBFactorySingle extends LBFactory {
+ /** @var LoadBalancerSingle */
protected $lb;
/**
}
/**
- * @param $wiki bool|string
- *
+ * @param bool|string $wiki
* @return LoadBalancerSingle
*/
function newMainLB( $wiki = false ) {
}
/**
- * @param $wiki bool|string
- *
+ * @param bool|string $wiki
* @return LoadBalancerSingle
*/
function getMainLB( $wiki = false ) {
}
/**
- * @param $cluster
- * @param $wiki bool|string
- *
+ * @param string $cluster External storage cluster, or false for core
+ * @param bool|string $wiki Wiki ID, or false for the current wiki
* @return LoadBalancerSingle
*/
function newExternalLB( $cluster, $wiki = false ) {
}
/**
- * @param $cluster
- * @param $wiki bool|string
- *
+ * @param string $cluster external storage cluster, or false for core
+ * @param bool|string $wiki Wiki ID, or false for the current wiki
* @return LoadBalancerSingle
*/
function &getExternalLB( $cluster, $wiki = false ) {
}
/**
- * @param $callback string|array
- * @param $params array
+ * @param string|array $callback
+ * @param array $params
*/
function forEachLB( $callback, $params = array() ) {
call_user_func_array( $callback, array_merge( array( $this->lb ), $params ) );
/**
*
- * @param $server string
- * @param $dbNameOverride bool
+ * @param string $server
+ * @param bool $dbNameOverride
*
* @return DatabaseBase
*/
*/
class LoadBalancer {
private $mServers, $mConns, $mLoads, $mGroupLoads;
+
+ /** @var bool|DatabaseBase Database connection that caused a problem */
private $mErrorConnection;
private $mReadIndex, $mAllowLagged;
- private $mWaitForPos, $mWaitTimeout;
+
+ /** @var bool|DBMasterPos False if not set */
+ private $mWaitForPos;
+
+ private $mWaitTimeout;
private $mLaggedSlaveMode, $mLastError = 'Unknown error';
private $mParentInfo, $mLagTimes;
private $mLoadMonitorClass, $mLoadMonitor;
/**
* @param array $params with keys:
- * servers Required. Array of server info structures.
- * masterWaitTimeout Replication lag wait timeout
- * loadMonitor Name of a class used to fetch server lag and load.
+ * servers Required. Array of server info structures.
+ * masterWaitTimeout Replication lag wait timeout
+ * loadMonitor Name of a class used to fetch server lag and load.
* @throws MWException
*/
function __construct( $params ) {
/**
* Get or set arbitrary data used by the parent object, usually an LBFactory
* @param $x
- * @return Mixed
+ * @return mixed
*/
function parentInfo( $x = null ) {
return wfSetVar( $this->mParentInfo, $x );
*
* @deprecated since 1.21, use ArrayUtils::pickRandom()
*
- * @param $weights array
- *
+ * @param array $weights
* @return bool|int|string
*/
function pickRandom( $weights ) {
}
/**
- * @param $loads array
- * @param $wiki bool
+ * @param array $loads
+ * @param bool|string $wiki Wiki to get non-lagged for
* @return bool|int|string
*/
function getRandomNonLagged( $loads, $wiki = false ) {
* always return a consistent index during a given invocation
*
* Side effect: opens connections to databases
- * @param $group bool
- * @param $wiki bool
+ * @param bool|string $group
+ * @param bool|string $wiki
* @throws MWException
* @return bool|int|string
*/
function getReaderIndex( $group = false, $wiki = false ) {
- global $wgReadOnly, $wgDBClusterTimeout, $wgDBAvgStatusPoll, $wgDBtype;
+ global $wgReadOnly, $wgDBtype;
# @todo FIXME: For now, only go through all this for mysql databases
if ( $wgDBtype != 'mysql' ) {
if ( count( $this->mServers ) == 1 ) {
# Skip the load balancing if there's only one server
return 0;
- } elseif ( $group === false and $this->mReadIndex >= 0 ) {
+ } elseif ( $group === false && $this->mReadIndex >= 0 ) {
# Shortcut if generic reader exists already
return $this->mReadIndex;
}
- wfProfileIn( __METHOD__ );
-
- $totalElapsed = 0;
-
- # convert from seconds to microseconds
- $timeout = $wgDBClusterTimeout * 1e6;
+ $section = new ProfileSection( __METHOD__ );
# Find the relevant load array
if ( $group !== false ) {
} else {
# No loads for this group, return false and the caller can use some other group
wfDebug( __METHOD__ . ": no loads for group $group\n" );
- wfProfileOut( __METHOD__ );
return false;
}
$nonErrorLoads = $this->mLoads;
}
- if ( !$nonErrorLoads ) {
- wfProfileOut( __METHOD__ );
+ if ( !count( $nonErrorLoads ) ) {
throw new MWException( "Empty server array given to LoadBalancer" );
}
$laggedSlaveMode = false;
+ # No server found yet
+ $i = false;
# First try quickly looking through the available servers for a server that
# meets our criteria
- do {
- $totalThreadsConnected = 0;
- $overloadedServers = 0;
- $currentLoads = $nonErrorLoads;
- while ( count( $currentLoads ) ) {
- if ( $wgReadOnly || $this->mAllowLagged || $laggedSlaveMode ) {
+ $currentLoads = $nonErrorLoads;
+ while ( count( $currentLoads ) ) {
+ if ( $wgReadOnly || $this->mAllowLagged || $laggedSlaveMode ) {
+ $i = ArrayUtils::pickRandom( $currentLoads );
+ } else {
+ $i = $this->getRandomNonLagged( $currentLoads, $wiki );
+ if ( $i === false && count( $currentLoads ) != 0 ) {
+ # All slaves lagged. Switch to read-only mode
+ wfDebugLog( 'replication', "All slaves lagged. Switch to read-only mode\n" );
+ $wgReadOnly = 'The database has been automatically locked ' .
+ 'while the slave database servers catch up to the master';
$i = ArrayUtils::pickRandom( $currentLoads );
- } else {
- $i = $this->getRandomNonLagged( $currentLoads, $wiki );
- if ( $i === false && count( $currentLoads ) != 0 ) {
- # All slaves lagged. Switch to read-only mode
- wfDebugLog( 'replication', "All slaves lagged. Switch to read-only mode\n" );
- $wgReadOnly = 'The database has been automatically locked ' .
- 'while the slave database servers catch up to the master';
- $i = ArrayUtils::pickRandom( $currentLoads );
- $laggedSlaveMode = true;
- }
- }
-
- if ( $i === false ) {
- # pickRandom() returned false
- # This is permanent and means the configuration or the load monitor
- # wants us to return false.
- wfDebugLog( 'connect', __METHOD__ . ": pickRandom() returned false\n" );
- wfProfileOut( __METHOD__ );
-
- return false;
+ $laggedSlaveMode = true;
}
+ }
- wfDebugLog( 'connect', __METHOD__ . ": Using reader #$i: {$this->mServers[$i]['host']}...\n" );
- $conn = $this->openConnection( $i, $wiki );
-
- if ( !$conn ) {
- wfDebugLog( 'connect', __METHOD__ . ": Failed connecting to $i/$wiki\n" );
- unset( $nonErrorLoads[$i] );
- unset( $currentLoads[$i] );
- continue;
- }
-
- // Perform post-connection backoff
- $threshold = isset( $this->mServers[$i]['max threads'] )
- ? $this->mServers[$i]['max threads'] : false;
- $backoff = $this->getLoadMonitor()->postConnectionBackoff( $conn, $threshold );
-
- // Decrement reference counter, we are finished with this connection.
- // It will be incremented for the caller later.
- if ( $wiki !== false ) {
- $this->reuseConnection( $conn );
- }
+ if ( $i === false ) {
+ # pickRandom() returned false
+ # This is permanent and means the configuration or the load monitor
+ # wants us to return false.
+ wfDebugLog( 'connect', __METHOD__ . ": pickRandom() returned false\n" );
- if ( $backoff ) {
- # Post-connection overload, don't use this server for now
- $totalThreadsConnected += $backoff;
- $overloadedServers++;
- unset( $currentLoads[$i] );
- } else {
- # Return this server
- break 2;
- }
+ return false;
}
- # No server found yet
- $i = false;
+ wfDebugLog( 'connect', __METHOD__ .
+ ": Using reader #$i: {$this->mServers[$i]['host']}...\n" );
- # If all servers were down, quit now
- if ( !count( $nonErrorLoads ) ) {
- wfDebugLog( 'connect', "All servers down\n" );
- break;
+ $conn = $this->openConnection( $i, $wiki );
+ if ( !$conn ) {
+ wfDebugLog( 'connect', __METHOD__ . ": Failed connecting to $i/$wiki\n" );
+ unset( $nonErrorLoads[$i] );
+ unset( $currentLoads[$i] );
+ continue;
}
- # Some servers must have been overloaded
- if ( $overloadedServers == 0 ) {
- throw new MWException( __METHOD__ . ": unexpectedly found no overloaded servers" );
+ // Decrement reference counter, we are finished with this connection.
+ // It will be incremented for the caller later.
+ if ( $wiki !== false ) {
+ $this->reuseConnection( $conn );
}
- # Back off for a while
- # Scale the sleep time by the number of connected threads, to produce a
- # roughly constant global poll rate
- $avgThreads = $totalThreadsConnected / $overloadedServers;
- $totalElapsed += $this->sleep( $wgDBAvgStatusPoll * $avgThreads );
- } while ( $totalElapsed < $timeout );
-
- if ( $totalElapsed >= $timeout ) {
- wfDebugLog( 'connect', "All servers busy\n" );
- $this->mErrorConnection = false;
- $this->mLastError = 'All servers busy';
+
+ # Return this server
+ break;
+ }
+
+ # If all servers were down, quit now
+ if ( !count( $nonErrorLoads ) ) {
+ wfDebugLog( 'connect', "All servers down\n" );
}
if ( $i !== false ) {
$this->mServers[$i]['slave pos'] = $conn->getSlavePos();
}
}
- if ( $this->mReadIndex <= 0 && $this->mLoads[$i] > 0 && $i !== false ) {
+ if ( $this->mReadIndex <= 0 && $this->mLoads[$i] > 0 && $group !== false ) {
$this->mReadIndex = $i;
}
}
- wfProfileOut( __METHOD__ );
return $i;
}
/**
* Wait for a specified number of microseconds, and return the period waited
- * @param $t int
+ * @param int $t
* @return int
*/
function sleep( $t ) {
* Set the master wait position
* If a DB_SLAVE connection has been opened already, waits
* Otherwise sets a variable telling it to wait if such a connection is opened
- * @param $pos DBMasterPos
+ * @param DBMasterPos $pos
*/
public function waitFor( $pos ) {
wfProfileIn( __METHOD__ );
/**
* Set the master wait position and wait for ALL slaves to catch up to it
- * @param $pos DBMasterPos
+ * @param DBMasterPos $pos
*/
public function waitForAll( $pos ) {
wfProfileIn( __METHOD__ );
* Get any open connection to a given server index, local or foreign
* Returns false if there is no connection open
*
- * @param $i int
+ * @param int $i
* @return DatabaseBase|bool False on failure
*/
function getAnyOpenConnection( $i ) {
*
* @param integer $db
* @param mixed $groups
- * @param string $wiki
+ * @param bool|string $wiki
* @return DBConnRef
*/
public function getConnectionRef( $db, $groups = array(), $wiki = false ) {
*
* @param integer $db
* @param mixed $groups
- * @param string $wiki
+ * @param bool|string $wiki
* @return DBConnRef
*/
public function getLazyConnectionRef( $db, $groups = array(), $wiki = false ) {
* error will be available via $this->mErrorConnection.
*
* @param $i Integer server index
- * @param string $wiki wiki ID to open
+ * @param bool|string $wiki wiki ID to open
* @return DatabaseBase
*
* @access private
/**
* Returns true if the specified index is a valid server index
*
- * @param $i
+ * @param string $i
* @return bool
*/
function haveIndex( $i ) {
/**
* Returns true if the specified index is valid and has non-zero load
*
- * @param $i
+ * @param string $i
* @return bool
*/
function isNonZeroLoad( $i ) {
/**
* Get the host name or IP address of the server with the specified index
* Prefer a readable name if available.
- * @param $i
+ * @param string $i
* @return string
*/
function getServerName( $i ) {
function closeAll() {
foreach ( $this->mConns as $conns2 ) {
foreach ( $conns2 as $conns3 ) {
+ /** @var DatabaseBase $conn */
foreach ( $conns3 as $conn ) {
$conn->close();
}
* Deprecated function, typo in function name
*
* @deprecated in 1.18
- * @param $conn
+ * @param DatabaseBase $conn
*/
function closeConnecton( $conn ) {
wfDeprecated( __METHOD__, '1.18' );
* Close a connection
* Using this function makes sure the LoadBalancer knows the connection is closed.
* If you use $conn->close() directly, the load balancer won't update its state.
- * @param $conn DatabaseBase
+ * @param DatabaseBase $conn
*/
function closeConnection( $conn ) {
$done = false;
function commitAll() {
foreach ( $this->mConns as $conns2 ) {
foreach ( $conns2 as $conns3 ) {
+ /** @var DatabaseBase[] $conns3 */
foreach ( $conns3 as $conn ) {
if ( $conn->trxLevel() ) {
$conn->commit( __METHOD__, 'flush' );
if ( empty( $conns2[$masterIndex] ) ) {
continue;
}
+ /** @var DatabaseBase $conn */
foreach ( $conns2[$masterIndex] as $conn ) {
if ( $conn->trxLevel() && $conn->writesOrCallbacksPending() ) {
$conn->commit( __METHOD__, 'flush' );
/**
* Disables/enables lag checks
- * @param $mode null
+ * @param null|bool $mode
* @return bool
*/
function allowLagged( $mode = null ) {
$success = true;
foreach ( $this->mConns as $conns2 ) {
foreach ( $conns2 as $conns3 ) {
+ /** @var DatabaseBase[] $conns3 */
foreach ( $conns3 as $conn ) {
if ( !$conn->ping() ) {
$success = false;
/**
* Call a function with each open connection object
- * @param $callback
+ * @param callable $callback
* @param array $params
*/
function forEachOpenConnection( $callback, $params = array() ) {
* May attempt to open connections to slaves on the default DB. If there is
* no lag, the maximum lag will be reported as -1.
*
- * @param string $wiki Wiki ID, or false for the default database
- *
+ * @param bool|string $wiki Wiki ID, or false for the default database
* @return array ( host, max lag, index of max lagged host )
*/
function getMaxLag( $wiki = false ) {
* Get lag time for each server
* Results are cached for a short time in memcached, and indefinitely in the process cache
*
- * @param $wiki
- *
+ * @param string|bool $wiki
* @return array
*/
function getLagTimes( $wiki = false ) {
* function instead of Database::getLag() avoids a fatal error in this
* case on many installations.
*
- * @param $conn DatabaseBase
- *
+ * @param DatabaseBase $conn
* @return int
*/
function safeGetLag( $conn ) {
class DBConnRef implements IDatabase {
/** @var LoadBalancer */
protected $lb;
+
/** @var DatabaseBase|null */
protected $conn;
- /** @var Array|null */
+
+ /** @var array|null */
protected $params;
/**
- * @param $lb LoadBalancer
- * @param $conn DatabaseBase|array Connection or (server index, group, wiki ID) array
+ * @param LoadBalancer $lb
+ * @param DatabaseBase|array $conn Connection or (server index, group, wiki ID) array
*/
public function __construct( LoadBalancer $lb, $conn ) {
$this->lb = $lb;
/**
* Perform pre-connection load ratio adjustment.
* @param array $loads
- * @param string|bool $group the selected query group. Default: false
+ * @param string|bool $group The selected query group. Default: false
* @param string|bool $wiki Default: false
*/
function scaleLoads( &$loads, $group = false, $wiki = false );
- /**
- * Perform post-connection backoff.
- *
- * If the connection is in overload, this should return a backoff factor
- * which will be used to control polling time. The number of threads
- * connected is a good measure.
- *
- * If there is no overload, zero can be returned.
- *
- * A threshold thread count is given, the concrete class may compare this
- * to the running thread count. The threshold may be false, which indicates
- * that the sysadmin has not configured this feature.
- *
- * @param $conn DatabaseBase
- * @param $threshold Float
- */
- function postConnectionBackoff( $conn, $threshold );
-
/**
* Return an estimate of replication lag for each server
*
- * @param $serverIndexes
- * @param $wiki
+ * @param array $serverIndexes
+ * @param string $wiki
*
* @return array
*/
function scaleLoads( &$loads, $group = false, $wiki = false ) {
}
- function postConnectionBackoff( $conn, $threshold ) {
- }
-
/**
- * @param $serverIndexes
- * @param $wiki
+ * @param array $serverIndexes
+ * @param string $wiki
* @return array
*/
function getLagTimes( $serverIndexes, $wiki ) {
* @ingroup Database
*/
class LoadMonitorMySQL implements LoadMonitor {
- /**
- * @var LoadBalancer
- */
+ /** @var LoadBalancer */
public $parent;
/**
}
/**
- * @param $loads
- * @param $group bool
- * @param $wiki bool
+ * @param array $loads
+ * @param bool $group
+ * @param bool $wiki
*/
function scaleLoads( &$loads, $group = false, $wiki = false ) {
}
/**
- * @param $serverIndexes
- * @param $wiki
+ * @param array $serverIndexes
+ * @param string $wiki
* @return array
*/
function getLagTimes( $serverIndexes, $wiki ) {
return $times;
}
-
- /**
- * @param $conn DatabaseBase
- * @param $threshold
- * @return int
- */
- function postConnectionBackoff( $conn, $threshold ) {
- if ( !$threshold ) {
- return 0;
- }
- $status = $conn->getMysqlStatus( "Thread%" );
- if ( $status['Threads_running'] > $threshold ) {
- $server = $conn->getProperty( 'mServer' );
- wfLogDBError( "LB backoff from $server - Threads_running = {$status['Threads_running']}\n" );
-
- return $status['Threads_connected'];
- } else {
- return 0;
- }
- }
}
* @param array $conditions
* @param array $options
* @param null|string $functionName
- *
* @return ResultWrapper
- * @throws DBQueryError if the quey failed (even if the database was in ignoreErrors mode).
+ * @throws DBQueryError if the query failed (even if the database was in
+ * ignoreErrors mode).
*/
public function rawSelect( $fields = null, array $conditions = array(),
array $options = array(), $functionName = null
* @param array $options
* @param string|null $functionName
*
- * @return ResultWrapper
+ * @return stdClass
*/
public function rawSelectRow( array $fields, array $conditions = array(),
array $options = array(), $functionName = null
* @since 1.20
*
* @param stdClass $result
- *
+ * @throws MWException
* @return array
*/
public function getFieldsFromDBResult( stdClass $result ) {
/**
* Queue recursive jobs for this page
*
- * Which means do LinksUpdate on all templates
- * that include the current page, using the job queue.
+ * Which means do LinksUpdate on all pages that include the current page,
+ * using the job queue.
*/
function queueRecursiveJobs() {
self::queueRecursiveJobsForTable( $this->mTitle, 'templatelinks' );
+ if ( $this->mTitle->getNamespace() == NS_FILE ) {
+ // Process imagelinks in case the title is or was a redirect
+ self::queueRecursiveJobsForTable( $this->mTitle, 'imagelinks' );
+ }
}
/**
foreach ( $diffs as $url => $dummy ) {
foreach ( wfMakeUrlIndexes( $url ) as $index ) {
$arr[] = array(
+ 'el_id' => $this->mDb->nextSequenceValue( 'externallinks_el_id_seq' ),
'el_from' => $this->mId,
'el_to' => $url,
'el_index' => $index,
*/
protected function updateLinksTimestamp() {
if ( $this->mId ) {
+ // The link updates made here only reflect the freshness of the parser output
+ $timestamp = $this->mParserOutput->getCacheTime();
$this->mDb->update( 'page',
- array( 'page_links_updated' => $this->mDb->timestamp() ),
+ array( 'page_links_updated' => $this->mDb->timestamp( $timestamp ) ),
array( 'page_id' => $this->mId ),
__METHOD__
);
// Remove duplicate URLs from collection
$urlArr = array_unique( $urlArr );
+ // Get sequential trx IDs for packet loss counting
+ $ids = UIDGenerator::newSequentialPerNodeIDs(
+ 'squidhtcppurge', 32, count( $urlArr ), UIDGenerator::QUICK_VOLATILE
+ );
+
foreach ( $urlArr as $url ) {
if ( !is_string( $url ) ) {
wfProfileOut( __METHOD__ );
// Construct a minimal HTCP request diagram
// as per RFC 2756
// Opcode 'CLR', no response desired, no auth
- $htcpTransID = rand();
+ $htcpTransID = current( $ids );
+ next( $ids );
$htcpSpecifier = pack( 'na4na*na8n',
4, 'HEAD', strlen( $url ), $url,
$rdel = $this->revisionDeleteLink( $this->mNewRev );
# Allow extensions to define their own revision tools
- wfRunHooks( 'DiffRevisionTools', array( $this->mNewRev, &$revisionTools ) );
+ wfRunHooks( 'DiffRevisionTools', array( $this->mNewRev, &$revisionTools, $this->mOldRev ) );
$formattedRevisionTools = array();
// Put each one in parentheses (poor man's button)
foreach ( $revisionTools as $tool ) {
$parserOutput = $this->getParserOutput( $wikiPage, $this->mNewRev );
- # Also try to load it as a redirect
- $rt = $this->mNewContent ? $this->mNewContent->getRedirectTarget() : null;
-
- if ( $rt ) {
- $article = Article::newFromTitle( $this->mNewPage, $this->getContext() );
- $out->addHTML( $article->viewRedirect( $rt ) );
-
- # WikiPage::getParserOutput() should not return false, but just in case
- if ( $parserOutput ) {
- # Show categories etc.
- $out->addParserOutputNoText( $parserOutput );
- }
- } elseif ( $parserOutput ) {
+ # WikiPage::getParserOutput() should not return false, but just in case
+ if ( $parserOutput ) {
$out->addParserOutput( $parserOutput );
}
}
$nEdits = $this->mNewPage->countRevisionsBetween( $oldRev, $newRev );
if ( $nEdits > 0 ) {
$limit = 100; // use diff-multi-manyusers if too many users
- $numUsers = $this->mNewPage->countAuthorsBetween( $oldRev, $newRev, $limit );
+ $users = $this->mNewPage->getAuthorsBetween( $oldRev, $newRev, $limit );
+ $numUsers = count( $users );
+ if( $numUsers == 1 && $users[0] == $newRev->getRawUserText() ) {
+ $numUsers = 0; // special case to say "by the same user" instead of "by one other user"
+ }
return self::intermediateEditsMsg( $nEdits, $numUsers, $limit );
}
* @return string
*/
public static function intermediateEditsMsg( $numEdits, $numUsers, $limit ) {
- if ( $numUsers > $limit ) {
+ if ( $numUsers === 0 ) {
+ $msg = 'diff-multi-sameuser';
+ } elseif ( $numUsers > $limit ) {
$msg = 'diff-multi-manyusers';
$numUsers = $limit;
} else {
- $msg = 'diff-multi';
+ $msg = 'diff-multi-otherusers';
}
return wfMessage( $msg )->numParams( $numEdits, $numUsers )->parse();
/** @var FileJournal */
protected $fileJournal;
+ /** Flags for supported features */
+ const ATTR_HEADERS = 1;
+ const ATTR_METADATA = 2;
+
/**
* Create a new backend instance from configuration.
* This should only be called from within FileBackendGroup.
return ( $this->readOnly != '' ) ? $this->readOnly : false;
}
+ /**
+ * Get the a bitfield of extra features supported by the backend medium
+ *
+ * @return integer Bitfield of FileBackend::ATTR_* flags
+ * @since 1.23
+ */
+ public function getFeatures() {
+ return 0;
+ }
+
+ /**
+ * Check if the backend medium supports a field of extra features
+ *
+ * @return integer Bitfield of FileBackend::ATTR_* flags
+ * @return bool
+ * @since 1.23
+ */
+ final public function hasFeatures( $bitfield ) {
+ return ( $this->getFeatures() & $bitfield ) === $bitfield;
+ }
+
/**
* This is the main entry point into the backend for write operations.
* Callers supply an ordered list of operations to perform as a transaction.
*/
abstract public function getFileContentsMulti( array $params );
+ /**
+ * Get metadata about a file at a storage path in the backend.
+ * If the file does not exist, then this returns false.
+ * Otherwise, the result is an associative array that includes:
+ * - headers : map of HTTP headers used for GET/HEAD requests (name => value)
+ * - metadata : map of file metadata (name => value)
+ * Metadata keys and headers names will be returned in all lower-case.
+ * Additional values may be included for internal use only.
+ *
+ * Use FileBackend::hasFeatures() to check how well this is supported.
+ *
+ * @param array $params
+ * $params include:
+ * - src : source storage path
+ * - latest : use the latest available data
+ * @return Array|bool Returns false on failure
+ * @since 1.23
+ */
+ abstract public function getFileXAttributes( array $params );
+
/**
* Get the size (bytes) of a file at a storage path in the backend.
*
return $this->backends[$this->masterIndex]->getFileStat( $realParams );
}
+ public function getFileXAttributes( array $params ) {
+ $realParams = $this->substOpPaths( $params, $this->backends[$this->masterIndex] );
+ return $this->backends[$this->masterIndex]->getFileXAttributes( $realParams );
+ }
+
public function getFileContentsMulti( array $params ) {
$realParams = $this->substOpPaths( $params, $this->backends[$this->masterIndex] );
$contentsM = $this->backends[$this->masterIndex]->getFileContentsMulti( $realParams );
return $this->backends[$this->masterIndex]->getFileList( $realParams );
}
+ public function getFeatures() {
+ return $this->backends[$this->masterIndex]->getFeatures();
+ }
+
public function clearCache( array $paths = null ) {
foreach ( $this->backends as $backend ) {
$realPaths = is_array( $paths ) ? $this->substPaths( $paths, $backend ) : null;
$this->cheapCache->set( $path, 'sha1',
array( 'hash' => $stat['sha1'], 'latest' => $latest ) );
}
+ if ( isset( $stat['xattr'] ) ) { // some backends store headers/metadata
+ $stat['xattr'] = self::normalizeXAttributes( $stat['xattr'] );
+ $this->cheapCache->set( $path, 'xattr',
+ array( 'map' => $stat['xattr'], 'latest' => $latest ) );
+ }
} elseif ( $stat === false ) { // file does not exist
$this->cheapCache->set( $path, 'stat', $latest ? 'NOT_EXIST_LATEST' : 'NOT_EXIST' );
- $this->cheapCache->set( $path, 'sha1', // the SHA-1 must be false too
- array( 'hash' => false, 'latest' => $latest ) );
+ $this->cheapCache->set( $path, 'xattr', array( 'map' => false, 'latest' => $latest ) );
+ $this->cheapCache->set( $path, 'sha1', array( 'hash' => false, 'latest' => $latest ) );
wfDebug( __METHOD__ . ": File $path does not exist.\n" );
} else { // an error occurred
wfDebug( __METHOD__ . ": Could not stat file $path.\n" );
return $contents;
}
+ final public function getFileXAttributes( array $params ) {
+ $path = self::normalizeStoragePath( $params['src'] );
+ if ( $path === null ) {
+ return false; // invalid storage path
+ }
+ $section = new ProfileSection( __METHOD__ . "-{$this->name}" );
+ $latest = !empty( $params['latest'] ); // use latest data?
+ if ( $this->cheapCache->has( $path, 'xattr', self::CACHE_TTL ) ) {
+ $stat = $this->cheapCache->get( $path, 'xattr' );
+ // If we want the latest data, check that this cached
+ // value was in fact fetched with the latest available data.
+ if ( !$latest || $stat['latest'] ) {
+ return $stat['map'];
+ }
+ }
+ wfProfileIn( __METHOD__ . '-miss' );
+ wfProfileIn( __METHOD__ . '-miss-' . $this->name );
+ $fields = $this->doGetFileXAttributes( $params );
+ $fields = is_array( $fields ) ? self::normalizeXAttributes( $fields ) : false;
+ wfProfileOut( __METHOD__ . '-miss-' . $this->name );
+ wfProfileOut( __METHOD__ . '-miss' );
+ $this->cheapCache->set( $path, 'xattr', array( 'map' => $fields, 'latest' => $latest ) );
+ return $fields;
+ }
+
+ /**
+ * @see FileBackendStore::getFileXAttributes()
+ * @return bool|string
+ */
+ protected function doGetFileXAttributes( array $params ) {
+ return array( 'headers' => array(), 'metadata' => array() ); // not supported
+ }
+
final public function getFileSha1Base36( array $params ) {
$path = self::normalizeStoragePath( $params['src'] );
if ( $path === null ) {
$this->cheapCache->set( $path, 'sha1',
array( 'hash' => $val['sha1'], 'latest' => $val['latest'] ) );
}
+ if ( isset( $val['xattr'] ) ) { // some backends store headers/metadata
+ $val['xattr'] = self::normalizeXAttributes( $val['xattr'] );
+ $this->cheapCache->set( $path, 'xattr',
+ array( 'map' => $val['xattr'], 'latest' => $val['latest'] ) );
+ }
}
}
}
+ /**
+ * Normalize file headers/metadata to the FileBackend::getFileXAttributes() format
+ *
+ * @param array $xattr
+ * @return array
+ * @since 1.22
+ */
+ final protected static function normalizeXAttributes( array $xattr ) {
+ $newXAttr = array( 'headers' => array(), 'metadata' => array() );
+ foreach ( $xattr['headers'] as $name => $value ) {
+ $newXAttr['headers'][strtolower( $name )] = $value;
+ }
+ foreach ( $xattr['metadata'] as $name => $value ) {
+ $newXAttr['metadata'][strtolower( $name )] = $value;
+ }
+ return $newXAttr;
+ }
+
/**
* Set the 'concurrency' option from a list of operation options
*
* @return Status
*/
public static function attempt( array $performOps, array $opts, FileJournal $journal ) {
- wfProfileIn( __METHOD__ );
+ $section = new ProfileSection( __METHOD__ );
$status = Status::newGood();
$n = count( $performOps );
if ( $n > self::MAX_BATCH_SIZE ) {
$status->fatal( 'backend-fail-batchsize', $n, self::MAX_BATCH_SIZE );
- wfProfileOut( __METHOD__ );
-
return $status;
}
$status->success[$index] = false;
++$status->failCount;
if ( !$ignoreErrors ) {
- wfProfileOut( __METHOD__ );
-
return $status; // abort
}
}
if ( count( $entries ) ) {
$subStatus = $journal->logChangeBatch( $entries, $batchId );
if ( !$subStatus->isOK() ) {
- wfProfileOut( __METHOD__ );
-
return $subStatus; // abort
}
}
// Attempt each operation (in parallel if allowed and possible)...
self::runParallelBatches( $pPerformOps, $status );
- wfProfileOut( __METHOD__ );
-
return $status;
}
* within any given sub-batch do not depend on each other.
* This will abort remaining ops on failure.
*
- * @param array $pPerformOps
+ * @param array $pPerformOps Batches of file ops (batches use original indexes)
* @param Status $status
- * @return bool Success
*/
protected static function runParallelBatches( array $pPerformOps, Status $status ) {
$aborted = false; // set to true on unexpected errors
// If attemptAsync() returns a Status, it was either due to an error
// or the backend does not support async ops and did it synchronously.
foreach ( $performOpsBatch as $i => $fileOp ) {
- if ( !$fileOp->failed() ) { // failed => already has Status
- // If the batch is just one operation, it's faster to avoid
- // pipelining as that can involve creating new TCP connections.
- $subStatus = ( count( $performOpsBatch ) > 1 )
- ? $fileOp->attemptAsync()
- : $fileOp->attempt();
+ if ( !isset( $status->success[$i] ) ) { // didn't already fail in precheck()
+ $subStatus = $fileOp->attemptAsync();
if ( $subStatus->value instanceof FileBackendStoreOpHandle ) {
$opHandles[$i] = $subStatus->value; // deferred
} else {
$statuses = $statuses + $backend->executeOpHandlesInternal( $opHandles );
// Marshall and merge all the responses (blocking)...
foreach ( $performOpsBatch as $i => $fileOp ) {
- if ( !$fileOp->failed() ) { // failed => already has Status
+ if ( !isset( $status->success[$i] ) ) { // didn't already fail in precheck()
$subStatus = $statuses[$i];
$status->merge( $subStatus );
if ( $subStatus->isOK() ) {
}
}
}
-
- return $status;
}
}
if ( $src === null || !isset( $this->files[$src] ) ) {
$fsFile = null;
} else {
- $fsFile = TempFSFile::factory( 'localcopy_' );
+ // Create a new temporary file with the same extension...
+ $ext = FileBackend::extensionFromPath( $src );
+ $fsFile = TempFSFile::factory( 'localcopy_', $ext );
if ( $fsFile ) {
$bytes = file_put_contents( $fsFile->getPath(), $this->files[$src]['data'] );
if ( $bytes !== strlen( $this->files[$src]['data'] ) ) {
/**
* @brief Class for an OpenStack Swift (or Ceph RGW) based file backend.
*
- * This requires the SwiftCloudFiles MediaWiki extension, which includes
- * the php-cloudfiles library (https://github.com/rackspace/php-cloudfiles).
- * php-cloudfiles requires the curl, fileinfo, and mb_string PHP extensions.
- *
* Status messages should avoid mentioning the Swift account name.
* Likewise, error suppression should be used to avoid path disclosure.
*
* @since 1.19
*/
class SwiftFileBackend extends FileBackendStore {
- /** @var CF_Authentication Swift authentication handler */
- protected $auth;
+ /** @var MultiHttpClient */
+ protected $http;
/** @var int TTL in seconds */
protected $authTTL;
- /** @var string Shared secret value for making temp URLs */
- protected $swiftTempUrlKey;
-
- /** @var string Username to handle unauthenticated requests */
- protected $swiftAnonUser;
+ /** @var string Authentication base URL (without version) */
+ protected $swiftAuthUrl;
- /** @var bool Whether CloudFiles CDN is enabled */
- protected $swiftUseCDN;
+ /** @var string Swift user (account:user) to authenticate as */
+ protected $swiftUser;
- /** @var int How long to cache things in the CDN */
- protected $swiftCDNExpiry;
+ /** @var string Secret key for user */
+ protected $swiftKey;
- /** @var bool Whether object CDN purging is enabled */
- protected $swiftCDNPurgable;
+ /** @var string Shared secret value for making temp URLs */
+ protected $swiftTempUrlKey;
- // Rados Gateway specific options
- /** @var string S3 access key */
+ /** @var string S3 access key (RADOS Gateway) */
protected $rgwS3AccessKey;
- /** @var string S3 authentication key */
+ /** @var string S3 authentication key (RADOS Gateway) */
protected $rgwS3SecretKey;
- /** @var CF_Connection Swift connection handle*/
- protected $conn;
+ /** @var BagOStuff */
+ protected $srvCache;
- /** @var int UNIX timestamp */
- protected $sessionStarted = 0;
+ /** @var ProcessCacheLRU Container stat cache */
+ protected $containerStatCache;
- /** @var CloudFilesException */
- protected $connException;
+ /** @var array */
+ protected $authCreds;
/** @var int UNIX timestamp */
- protected $connErrorTime = 0;
+ protected $authSessionTimestamp = 0;
- /** @var BagOStuff */
- protected $srvCache;
-
- /** @var ProcessCacheLRU */
- protected $connContainerCache; // container object cache
+ /** @var int UNIX timestamp */
+ protected $authErrorTimestamp = null;
/**
* @see FileBackendStore::__construct()
* - swiftAuthTTL : Swift authentication TTL (seconds)
* - swiftTempUrlKey : Swift "X-Account-Meta-Temp-URL-Key" value on the account.
* Do not set this until it has been set in the backend.
- * - swiftAnonUser : Swift user used for end-user requests (account:username).
- * If set, then views of public containers are assumed to go
- * through this user. If not set, then public containers are
- * accessible to unauthenticated requests via ".r:*" in the ACL.
- * - swiftUseCDN : Whether a Cloud Files Content Delivery Network is set up
- * - swiftCDNExpiry : How long (in seconds) to store content in the CDN.
- * If files may likely change, this should probably not exceed
- * a few days. For example, deletions may take this long to apply.
- * If object purging is enabled, however, this is not an issue.
- * - swiftCDNPurgable : Whether object purge requests are allowed by the CDN.
* - shardViaHashLevels : Map of container names to sharding config with:
* - base : base of hash characters, 16 or 36
* - levels : the number of hash levels (and digits)
* - cacheAuthInfo : Whether to cache authentication tokens in APC, XCache, ect.
* If those are not available, then the main cache will be used.
* This is probably insecure in shared hosting environments.
- * - rgwS3AccessKey : Ragos Gateway S3 "access key" value on the account.
+ * - rgwS3AccessKey : Rados Gateway S3 "access key" value on the account.
* Do not set this until it has been set in the backend.
* This is used for generating expiring pre-authenticated URLs.
* Only use this when using rgw and to work around
* http://tracker.newdream.net/issues/3454.
- * - rgwS3SecretKey : Ragos Gateway S3 "secret key" value on the account.
+ * - rgwS3SecretKey : Rados Gateway S3 "secret key" value on the account.
* Do not set this until it has been set in the backend.
* This is used for generating expiring pre-authenticated URLs.
* Only use this when using rgw and to work around
*/
public function __construct( array $config ) {
parent::__construct( $config );
- if ( !class_exists( 'CF_Constants' ) ) {
- throw new FileBackendException( 'SwiftCloudFiles extension not installed.' );
- }
// Required settings
- $this->auth = new CF_Authentication(
- $config['swiftUser'],
- $config['swiftKey'],
- null, // account; unused
- $config['swiftAuthUrl']
- );
+ $this->swiftAuthUrl = $config['swiftAuthUrl'];
+ $this->swiftUser = $config['swiftUser'];
+ $this->swiftKey = $config['swiftKey'];
// Optional settings
$this->authTTL = isset( $config['swiftAuthTTL'] )
? $config['swiftAuthTTL']
: 5 * 60; // some sane number
- $this->swiftAnonUser = isset( $config['swiftAnonUser'] )
- ? $config['swiftAnonUser']
- : '';
$this->swiftTempUrlKey = isset( $config['swiftTempUrlKey'] )
? $config['swiftTempUrlKey']
: '';
$this->shardViaHashLevels = isset( $config['shardViaHashLevels'] )
? $config['shardViaHashLevels']
: '';
- $this->swiftUseCDN = isset( $config['swiftUseCDN'] )
- ? $config['swiftUseCDN']
- : false;
- $this->swiftCDNExpiry = isset( $config['swiftCDNExpiry'] )
- ? $config['swiftCDNExpiry']
- : 12 * 3600; // 12 hours is safe (tokens last 24 hours per http://docs.openstack.org)
- $this->swiftCDNPurgable = isset( $config['swiftCDNPurgable'] )
- ? $config['swiftCDNPurgable']
- : true;
$this->rgwS3AccessKey = isset( $config['rgwS3AccessKey'] )
? $config['rgwS3AccessKey']
: '';
$this->rgwS3SecretKey = isset( $config['rgwS3SecretKey'] )
? $config['rgwS3SecretKey']
: '';
+ // HTTP helper client
+ $this->http = new MultiHttpClient( array() );
// Cache container information to mask latency
$this->memCache = wfGetMainCache();
// Process cache for container info
- $this->connContainerCache = new ProcessCacheLRU( 300 );
+ $this->containerStatCache = new ProcessCacheLRU( 300 );
// Cache auth token information to avoid RTTs
if ( !empty( $config['cacheAuthInfo'] ) ) {
if ( PHP_SAPI === 'cli' ) {
}
}
}
- $this->srvCache = $this->srvCache ? $this->srvCache : new EmptyBagOStuff();
+ $this->srvCache = $this->srvCache ?: new EmptyBagOStuff();
+ }
+
+ public function getFeatures() {
+ return ( FileBackend::ATTR_HEADERS | FileBackend::ATTR_METADATA );
}
- /**
- * @see FileBackendStore::resolveContainerPath()
- * @param string $container
- * @param string $relStoragePath
- * @return string|null Returns null when the URL encoded storage path is
- * longer than 1024 characters or not UTF-8 encoded.
- */
protected function resolveContainerPath( $container, $relStoragePath ) {
if ( !mb_check_encoding( $relStoragePath, 'UTF-8' ) ) { // mb_string required by CF
return null; // not UTF-8, makes it hard to use CF and the swift HTTP API
return false; // invalid
}
- try {
- $this->getContainer( $container );
-
- return true; // container exists
- } catch ( NoSuchContainerException $e ) {
- } catch ( CloudFilesException $e ) { // some other exception?
- $this->handleException( $e, null, __METHOD__, array( 'path' => $storagePath ) );
- }
-
- return false;
+ return is_array( $this->getContainerStat( $container ) );
}
/**
+ * Sanitize and filter the custom headers from a $params array.
+ * We only allow certain Content- and X-Content- headers.
+ *
* @param array $headers
- * @return array
+ * @return array Sanitized value of 'headers' field in $params
*/
- protected function sanitizeHdrs( array $headers ) {
- // By default, Swift has annoyingly low maximum header value limits
- if ( isset( $headers['Content-Disposition'] ) ) {
- $headers['Content-Disposition'] = $this->truncDisp( $headers['Content-Disposition'] );
+ protected function sanitizeHdrs( array $params ) {
+ $headers = array();
+
+ // Normalize casing, and strip out illegal headers
+ if ( isset( $params['headers'] ) ) {
+ foreach ( $params['headers'] as $name => $value ) {
+ $name = strtolower( $name );
+ if ( preg_match( '/^content-(type|length)$/', $name ) ) {
+ continue; // blacklisted
+ } elseif ( preg_match( '/^(x-)?content-/', $name ) ) {
+ $headers[$name] = $value; // allowed
+ } elseif ( preg_match( '/^content-(disposition)/', $name ) ) {
+ $headers[$name] = $value; // allowed
+ }
+ }
}
-
- return $headers;
- }
-
- /**
- * @param string $disposition Content-Disposition header value
- * @return string Truncated Content-Disposition header value to meet Swift limits
- */
- protected function truncDisp( $disposition ) {
- $res = '';
- foreach ( explode( ';', $disposition ) as $part ) {
- $part = trim( $part );
- $new = ( $res === '' ) ? $part : "{$res};{$part}";
- if ( strlen( $new ) <= 255 ) {
- $res = $new;
- } else {
- break; // too long; sigh
+ // By default, Swift has annoyingly low maximum header value limits
+ if ( isset( $headers['content-disposition'] ) ) {
+ $disposition = '';
+ foreach ( explode( ';', $headers['content-disposition'] ) as $part ) {
+ $part = trim( $part );
+ $new = ( $disposition === '' ) ? $part : "{$disposition};{$part}";
+ if ( strlen( $new ) <= 255 ) {
+ $disposition = $new;
+ } else {
+ break; // too long; sigh
+ }
}
+ $headers['content-disposition'] = $disposition;
}
- return $res;
+ return $headers;
}
protected function doCreateInternal( array $params ) {
return $status;
}
- // (a) Check the destination container and object
- try {
- $dContObj = $this->getContainer( $dstCont );
- } catch ( NoSuchContainerException $e ) {
- $status->fatal( 'backend-fail-create', $params['dst'] );
-
- return $status;
- } catch ( CloudFilesException $e ) { // some other exception?
- $this->handleException( $e, $status, __METHOD__, $params );
-
- return $status;
- }
-
- // (b) Get a SHA-1 hash of the object
$sha1Hash = wfBaseConvert( sha1( $params['content'] ), 16, 36, 31 );
-
- // (c) Actually create the object
- try {
- // Create a fresh CF_Object with no fields preloaded.
- // We don't want to preserve headers, metadata, and such.
- $obj = new CF_Object( $dContObj, $dstRel, false, false ); // skip HEAD
- $obj->setMetadataValues( array( 'Sha1base36' => $sha1Hash ) );
- // Manually set the ETag (https://github.com/rackspace/php-cloudfiles/issues/59).
- // The MD5 here will be checked within Swift against its own MD5.
- $obj->set_etag( md5( $params['content'] ) );
- // Use the same content type as StreamFile for security
- $obj->content_type = $this->getContentType( $params['dst'], $params['content'], null );
- // Set any other custom headers if requested
- if ( isset( $params['headers'] ) ) {
- $obj->headers += $this->sanitizeHdrs( $params['headers'] );
- }
- if ( !empty( $params['async'] ) ) { // deferred
- $op = $obj->write_async( $params['content'] );
- $status->value = new SwiftFileOpHandle( $this, $params, 'Create', $op );
- $status->value->affectedObjects[] = $obj;
- } else { // actually write the object in Swift
- $obj->write( $params['content'] );
- $this->purgeCDNCache( array( $obj ) );
+ $contentType = $this->getContentType( $params['dst'], $params['content'], null );
+
+ $reqs = array( array(
+ 'method' => 'PUT',
+ 'url' => array( $dstCont, $dstRel ),
+ 'headers' => array(
+ 'content-length' => strlen( $params['content'] ),
+ 'etag' => md5( $params['content'] ),
+ 'content-type' => $contentType,
+ 'x-object-meta-sha1base36' => $sha1Hash
+ ) + $this->sanitizeHdrs( $params ),
+ 'body' => $params['content']
+ ) );
+
+ $be = $this;
+ $method = __METHOD__;
+ $handler = function( array $request, Status $status ) use ( $be, $method, $params ) {
+ list( $rcode, $rdesc, $rhdrs, $rbody, $rerr ) = $request['response'];
+ if ( $rcode === 201 ) {
+ // good
+ } elseif ( $rcode === 412 ) {
+ $status->fatal( 'backend-fail-contenttype', $params['dst'] );
+ } else {
+ $be->onError( $status, $method, $params, $rerr, $rcode, $rdesc );
}
- } catch ( CDNNotEnabledException $e ) {
- // CDN not enabled; nothing to see here
- } catch ( BadContentTypeException $e ) {
- $status->fatal( 'backend-fail-contenttype', $params['dst'] );
- } catch ( CloudFilesException $e ) { // some other exception?
- $this->handleException( $e, $status, __METHOD__, $params );
+ };
+
+ $opHandle = new SwiftFileOpHandle( $this, $handler, $reqs );
+ if ( !empty( $params['async'] ) ) { // deferred
+ $status->value = $opHandle;
+ } else { // actually write the object in Swift
+ $status->merge( current( $this->doExecuteOpHandlesInternal( array( $opHandle ) ) ) );
}
return $status;
}
- /**
- * @see SwiftFileBackend::doExecuteOpHandlesInternal()
- */
- protected function getResponseCreate( CF_Async_Op $cfOp, Status $status, array $params ) {
- try {
- $cfOp->getLastResponse();
- } catch ( BadContentTypeException $e ) {
- $status->fatal( 'backend-fail-contenttype', $params['dst'] );
- }
- }
-
protected function doStoreInternal( array $params ) {
$status = Status::newGood();
return $status;
}
- // (a) Check the destination container and object
- try {
- $dContObj = $this->getContainer( $dstCont );
- } catch ( NoSuchContainerException $e ) {
- $status->fatal( 'backend-fail-copy', $params['src'], $params['dst'] );
-
- return $status;
- } catch ( CloudFilesException $e ) { // some other exception?
- $this->handleException( $e, $status, __METHOD__, $params );
-
- return $status;
- }
-
- // (b) Get a SHA-1 hash of the object
wfSuppressWarnings();
$sha1Hash = sha1_file( $params['src'] );
wfRestoreWarnings();
if ( $sha1Hash === false ) { // source doesn't exist?
- $status->fatal( 'backend-fail-copy', $params['src'], $params['dst'] );
+ $status->fatal( 'backend-fail-store', $params['src'], $params['dst'] );
return $status;
}
$sha1Hash = wfBaseConvert( $sha1Hash, 16, 36, 31 );
+ $contentType = $this->getContentType( $params['dst'], null, $params['src'] );
- // (c) Actually store the object
- try {
- // Create a fresh CF_Object with no fields preloaded.
- // We don't want to preserve headers, metadata, and such.
- $obj = new CF_Object( $dContObj, $dstRel, false, false ); // skip HEAD
- $obj->setMetadataValues( array( 'Sha1base36' => $sha1Hash ) );
- // The MD5 here will be checked within Swift against its own MD5.
- $obj->set_etag( md5_file( $params['src'] ) );
- // Use the same content type as StreamFile for security
- $obj->content_type = $this->getContentType( $params['dst'], null, $params['src'] );
- // Set any other custom headers if requested
- if ( isset( $params['headers'] ) ) {
- $obj->headers += $this->sanitizeHdrs( $params['headers'] );
- }
- if ( !empty( $params['async'] ) ) { // deferred
- wfSuppressWarnings();
- $fp = fopen( $params['src'], 'rb' );
- wfRestoreWarnings();
- if ( !$fp ) {
- $status->fatal( 'backend-fail-copy', $params['src'], $params['dst'] );
- } else {
- $op = $obj->write_async( $fp, filesize( $params['src'] ), true );
- $status->value = new SwiftFileOpHandle( $this, $params, 'Store', $op );
- $status->value->resourcesToClose[] = $fp;
- $status->value->affectedObjects[] = $obj;
- }
- } else { // actually write the object in Swift
- $obj->load_from_filename( $params['src'], true ); // calls $obj->write()
- $this->purgeCDNCache( array( $obj ) );
- }
- } catch ( CDNNotEnabledException $e ) {
- // CDN not enabled; nothing to see here
- } catch ( BadContentTypeException $e ) {
- $status->fatal( 'backend-fail-contenttype', $params['dst'] );
- } catch ( IOException $e ) {
- $status->fatal( 'backend-fail-copy', $params['src'], $params['dst'] );
- } catch ( CloudFilesException $e ) { // some other exception?
- $this->handleException( $e, $status, __METHOD__, $params );
+ $handle = fopen( $params['src'], 'rb' );
+ if ( $handle === false ) { // source doesn't exist?
+ $status->fatal( 'backend-fail-store', $params['src'], $params['dst'] );
+
+ return $status;
}
- return $status;
- }
+ $reqs = array( array(
+ 'method' => 'PUT',
+ 'url' => array( $dstCont, $dstRel ),
+ 'headers' => array(
+ 'content-length' => filesize( $params['src'] ),
+ 'etag' => md5_file( $params['src'] ),
+ 'content-type' => $contentType,
+ 'x-object-meta-sha1base36' => $sha1Hash
+ ) + $this->sanitizeHdrs( $params ),
+ 'body' => $handle // resource
+ ) );
+
+ $be = $this;
+ $method = __METHOD__;
+ $handler = function( array $request, Status $status ) use ( $be, $method, $params ) {
+ list( $rcode, $rdesc, $rhdrs, $rbody, $rerr ) = $request['response'];
+ if ( $rcode === 201 ) {
+ // good
+ } elseif ( $rcode === 412 ) {
+ $status->fatal( 'backend-fail-contenttype', $params['dst'] );
+ } else {
+ $be->onError( $status, $method, $params, $rerr, $rcode, $rdesc );
+ }
+ };
- /**
- * @see SwiftFileBackend::doExecuteOpHandlesInternal()
- */
- protected function getResponseStore( CF_Async_Op $cfOp, Status $status, array $params ) {
- try {
- $cfOp->getLastResponse();
- } catch ( BadContentTypeException $e ) {
- $status->fatal( 'backend-fail-contenttype', $params['dst'] );
- } catch ( IOException $e ) {
- $status->fatal( 'backend-fail-copy', $params['src'], $params['dst'] );
+ $opHandle = new SwiftFileOpHandle( $this, $handler, $reqs );
+ if ( !empty( $params['async'] ) ) { // deferred
+ $status->value = $opHandle;
+ } else { // actually write the object in Swift
+ $status->merge( current( $this->doExecuteOpHandlesInternal( array( $opHandle ) ) ) );
}
+
+ return $status;
}
protected function doCopyInternal( array $params ) {
return $status;
}
- // (a) Check the source/destination containers and destination object
- try {
- $sContObj = $this->getContainer( $srcCont );
- $dContObj = $this->getContainer( $dstCont );
- } catch ( NoSuchContainerException $e ) {
- if ( empty( $params['ignoreMissingSource'] ) || isset( $sContObj ) ) {
+ $reqs = array( array(
+ 'method' => 'PUT',
+ 'url' => array( $dstCont, $dstRel ),
+ 'headers' => array(
+ 'x-copy-from' => '/' . rawurlencode( $srcCont ) .
+ '/' . str_replace( "%2F", "/", rawurlencode( $srcRel ) )
+ ) + $this->sanitizeHdrs( $params ), // extra headers merged into object
+ ) );
+
+ $be = $this;
+ $method = __METHOD__;
+ $handler = function( array $request, Status $status ) use ( $be, $method, $params ) {
+ list( $rcode, $rdesc, $rhdrs, $rbody, $rerr ) = $request['response'];
+ if ( $rcode === 201 ) {
+ // good
+ } elseif ( $rcode === 404 ) {
$status->fatal( 'backend-fail-copy', $params['src'], $params['dst'] );
+ } else {
+ $be->onError( $status, $method, $params, $rerr, $rcode, $rdesc );
}
+ };
- return $status;
- } catch ( CloudFilesException $e ) { // some other exception?
- $this->handleException( $e, $status, __METHOD__, $params );
-
- return $status;
- }
-
- // (b) Actually copy the file to the destination
- try {
- $dstObj = new CF_Object( $dContObj, $dstRel, false, false ); // skip HEAD
- $hdrs = array(); // source file headers to override with new values
- // Set any other custom headers if requested
- if ( isset( $params['headers'] ) ) {
- $hdrs += $this->sanitizeHdrs( $params['headers'] );
- }
- if ( !empty( $params['async'] ) ) { // deferred
- $op = $sContObj->copy_object_to_async( $srcRel, $dContObj, $dstRel, null, $hdrs );
- $status->value = new SwiftFileOpHandle( $this, $params, 'Copy', $op );
- $status->value->affectedObjects[] = $dstObj;
- } else { // actually write the object in Swift
- $sContObj->copy_object_to( $srcRel, $dContObj, $dstRel, null, $hdrs );
- $this->purgeCDNCache( array( $dstObj ) );
- }
- } catch ( CDNNotEnabledException $e ) {
- // CDN not enabled; nothing to see here
- } catch ( NoSuchObjectException $e ) { // source object does not exist
- if ( empty( $params['ignoreMissingSource'] ) ) {
- $status->fatal( 'backend-fail-copy', $params['src'], $params['dst'] );
- }
- } catch ( CloudFilesException $e ) { // some other exception?
- $this->handleException( $e, $status, __METHOD__, $params );
+ $opHandle = new SwiftFileOpHandle( $this, $handler, $reqs );
+ if ( !empty( $params['async'] ) ) { // deferred
+ $status->value = $opHandle;
+ } else { // actually write the object in Swift
+ $status->merge( current( $this->doExecuteOpHandlesInternal( array( $opHandle ) ) ) );
}
return $status;
}
- /**
- * @see SwiftFileBackend::doExecuteOpHandlesInternal()
- */
- protected function getResponseCopy( CF_Async_Op $cfOp, Status $status, array $params ) {
- try {
- $cfOp->getLastResponse();
- } catch ( NoSuchObjectException $e ) { // source object does not exist
- $status->fatal( 'backend-fail-copy', $params['src'], $params['dst'] );
- }
- }
-
protected function doMoveInternal( array $params ) {
$status = Status::newGood();
return $status;
}
- // (a) Check the source/destination containers and destination object
- try {
- $sContObj = $this->getContainer( $srcCont );
- $dContObj = $this->getContainer( $dstCont );
- } catch ( NoSuchContainerException $e ) {
- if ( empty( $params['ignoreMissingSource'] ) || isset( $sContObj ) ) {
- $status->fatal( 'backend-fail-move', $params['src'], $params['dst'] );
- }
-
- return $status;
- } catch ( CloudFilesException $e ) { // some other exception?
- $this->handleException( $e, $status, __METHOD__, $params );
-
- return $status;
+ $reqs = array(
+ array(
+ 'method' => 'PUT',
+ 'url' => array( $dstCont, $dstRel ),
+ 'headers' => array(
+ 'x-copy-from' => '/' . rawurlencode( $srcCont ) .
+ '/' . str_replace( "%2F", "/", rawurlencode( $srcRel ) )
+ ) + $this->sanitizeHdrs( $params ) // extra headers merged into object
+ )
+ );
+ if ( "{$srcCont}/{$srcRel}" !== "{$dstCont}/{$dstRel}" ) {
+ $reqs[] = array(
+ 'method' => 'DELETE',
+ 'url' => array( $srcCont, $srcRel ),
+ 'headers' => array()
+ );
}
- // (b) Actually move the file to the destination
- try {
- $srcObj = new CF_Object( $sContObj, $srcRel, false, false ); // skip HEAD
- $dstObj = new CF_Object( $dContObj, $dstRel, false, false ); // skip HEAD
- $hdrs = array(); // source file headers to override with new values
- // Set any other custom headers if requested
- if ( isset( $params['headers'] ) ) {
- $hdrs += $this->sanitizeHdrs( $params['headers'] );
- }
- if ( !empty( $params['async'] ) ) { // deferred
- $op = $sContObj->move_object_to_async( $srcRel, $dContObj, $dstRel, null, $hdrs );
- $status->value = new SwiftFileOpHandle( $this, $params, 'Move', $op );
- $status->value->affectedObjects[] = $srcObj;
- $status->value->affectedObjects[] = $dstObj;
- } else { // actually write the object in Swift
- $sContObj->move_object_to( $srcRel, $dContObj, $dstRel, null, $hdrs );
- $this->purgeCDNCache( array( $srcObj ) );
- $this->purgeCDNCache( array( $dstObj ) );
- }
- } catch ( CDNNotEnabledException $e ) {
- // CDN not enabled; nothing to see here
- } catch ( NoSuchObjectException $e ) { // source object does not exist
- if ( empty( $params['ignoreMissingSource'] ) ) {
+ $be = $this;
+ $method = __METHOD__;
+ $handler = function( array $request, Status $status ) use ( $be, $method, $params ) {
+ list( $rcode, $rdesc, $rhdrs, $rbody, $rerr ) = $request['response'];
+ if ( $request['method'] === 'PUT' && $rcode === 201 ) {
+ // good
+ } elseif ( $request['method'] === 'DELETE' && $rcode === 204 ) {
+ // good
+ } elseif ( $rcode === 404 ) {
$status->fatal( 'backend-fail-move', $params['src'], $params['dst'] );
+ } else {
+ $be->onError( $status, $method, $params, $rerr, $rcode, $rdesc );
}
- } catch ( CloudFilesException $e ) { // some other exception?
- $this->handleException( $e, $status, __METHOD__, $params );
+ };
+
+ $opHandle = new SwiftFileOpHandle( $this, $handler, $reqs );
+ if ( !empty( $params['async'] ) ) { // deferred
+ $status->value = $opHandle;
+ } else { // actually move the object in Swift
+ $status->merge( current( $this->doExecuteOpHandlesInternal( array( $opHandle ) ) ) );
}
return $status;
}
- /**
- * @see SwiftFileBackend::doExecuteOpHandlesInternal()
- */
- protected function getResponseMove( CF_Async_Op $cfOp, Status $status, array $params ) {
- try {
- $cfOp->getLastResponse();
- } catch ( NoSuchObjectException $e ) { // source object does not exist
- $status->fatal( 'backend-fail-move', $params['src'], $params['dst'] );
- }
- }
-
protected function doDeleteInternal( array $params ) {
$status = Status::newGood();
return $status;
}
- try {
- $sContObj = $this->getContainer( $srcCont );
- $srcObj = new CF_Object( $sContObj, $srcRel, false, false ); // skip HEAD
- if ( !empty( $params['async'] ) ) { // deferred
- $op = $sContObj->delete_object_async( $srcRel );
- $status->value = new SwiftFileOpHandle( $this, $params, 'Delete', $op );
- $status->value->affectedObjects[] = $srcObj;
- } else { // actually write the object in Swift
- $sContObj->delete_object( $srcRel );
- $this->purgeCDNCache( array( $srcObj ) );
- }
- } catch ( CDNNotEnabledException $e ) {
- // CDN not enabled; nothing to see here
- } catch ( NoSuchContainerException $e ) {
- if ( empty( $params['ignoreMissingSource'] ) ) {
- $status->fatal( 'backend-fail-delete', $params['src'] );
- }
- } catch ( NoSuchObjectException $e ) {
- if ( empty( $params['ignoreMissingSource'] ) ) {
- $status->fatal( 'backend-fail-delete', $params['src'] );
+ $reqs = array(
+ array(
+ 'method' => 'DELETE',
+ 'url' => array( $srcCont, $srcRel ),
+ 'headers' => array()
+ ) );
+
+ $be = $this;
+ $method = __METHOD__;
+ $handler = function( array $request, Status $status ) use ( $be, $method, $params ) {
+ list( $rcode, $rdesc, $rhdrs, $rbody, $rerr ) = $request['response'];
+ if ( $rcode === 204 ) {
+ // good
+ } elseif ( $rcode === 404 ) {
+ if ( empty( $params['ignoreMissingSource'] ) ) {
+ $status->fatal( 'backend-fail-delete', $params['src'] );
+ }
+ } else {
+ $be->onError( $status, $method, $params, $rerr, $rcode, $rdesc );
}
- } catch ( CloudFilesException $e ) { // some other exception?
- $this->handleException( $e, $status, __METHOD__, $params );
+ };
+
+ $opHandle = new SwiftFileOpHandle( $this, $handler, $reqs );
+ if ( !empty( $params['async'] ) ) { // deferred
+ $status->value = $opHandle;
+ } else { // actually delete the object in Swift
+ $status->merge( current( $this->doExecuteOpHandlesInternal( array( $opHandle ) ) ) );
}
return $status;
}
- /**
- * @see SwiftFileBackend::doExecuteOpHandlesInternal()
- */
- protected function getResponseDelete( CF_Async_Op $cfOp, Status $status, array $params ) {
- try {
- $cfOp->getLastResponse();
- } catch ( NoSuchContainerException $e ) {
- $status->fatal( 'backend-fail-delete', $params['src'] );
- } catch ( NoSuchObjectException $e ) {
- if ( empty( $params['ignoreMissingSource'] ) ) {
- $status->fatal( 'backend-fail-delete', $params['src'] );
- }
- }
- }
-
protected function doDescribeInternal( array $params ) {
$status = Status::newGood();
return $status;
}
- try {
- $sContObj = $this->getContainer( $srcCont );
- // Get the latest version of the current metadata
- $srcObj = $sContObj->get_object( $srcRel,
- $this->headersFromParams( array( 'latest' => true ) ) );
- // Merge in the metadata updates...
- if ( isset( $params['headers'] ) ) {
- $srcObj->headers = $this->sanitizeHdrs( $params['headers'] ) + $srcObj->headers;
- }
- $srcObj->sync_metadata(); // save to Swift
- $this->purgeCDNCache( array( $srcObj ) );
- } catch ( CDNNotEnabledException $e ) {
- // CDN not enabled; nothing to see here
- } catch ( NoSuchContainerException $e ) {
- $status->fatal( 'backend-fail-describe', $params['src'] );
- } catch ( NoSuchObjectException $e ) {
+ // Fetch the old object headers/metadata...this should be in stat cache by now
+ $stat = $this->getFileStat( array( 'src' => $params['src'], 'latest' => 1 ) );
+ if ( $stat && !isset( $stat['xattr'] ) ) { // older cache entry
+ $stat = $this->doGetFileStat( array( 'src' => $params['src'], 'latest' => 1 ) );
+ }
+ if ( !$stat ) {
$status->fatal( 'backend-fail-describe', $params['src'] );
- } catch ( CloudFilesException $e ) { // some other exception?
- $this->handleException( $e, $status, __METHOD__, $params );
+
+ return $status;
+ }
+
+ // POST clears prior headers, so we need to merge the changes in to the old ones
+ $metaHdrs = array();
+ foreach ( $stat['xattr']['metadata'] as $name => $value ) {
+ $metaHdrs["x-object-meta-$name"] = $value;
+ }
+ $customHdrs = $this->sanitizeHdrs( $params ) + $stat['xattr']['headers'];
+
+ $reqs = array( array(
+ 'method' => 'POST',
+ 'url' => array( $srcCont, $srcRel ),
+ 'headers' => $metaHdrs + $customHdrs
+ ) );
+
+ $be = $this;
+ $method = __METHOD__;
+ $handler = function( array $request, Status $status ) use ( $be, $method, $params ) {
+ list( $rcode, $rdesc, $rhdrs, $rbody, $rerr ) = $request['response'];
+ if ( $rcode === 202 ) {
+ // good
+ } elseif ( $rcode === 404 ) {
+ $status->fatal( 'backend-fail-describe', $params['src'] );
+ } else {
+ $be->onError( $status, $method, $params, $rerr, $rcode, $rdesc );
+ }
+ };
+
+ $opHandle = new SwiftFileOpHandle( $this, $handler, $reqs );
+ if ( !empty( $params['async'] ) ) { // deferred
+ $status->value = $opHandle;
+ } else { // actually change the object in Swift
+ $status->merge( current( $this->doExecuteOpHandlesInternal( array( $opHandle ) ) ) );
}
return $status;
$status = Status::newGood();
// (a) Check if container already exists
- try {
- $this->getContainer( $fullCont );
-
- // NoSuchContainerException not thrown: container must exist
- return $status; // already exists
- } catch ( NoSuchContainerException $e ) {
- // NoSuchContainerException thrown: container does not exist
- } catch ( CloudFilesException $e ) { // some other exception?
- $this->handleException( $e, $status, __METHOD__, $params );
-
+ $stat = $this->getContainerStat( $fullCont );
+ if ( is_array( $stat ) ) {
+ return $status; // already there
+ } elseif ( $stat === null ) {
+ $status->fatal( 'backend-fail-internal', $this->name );
return $status;
}
- // (b) Create container as needed
- try {
- $contObj = $this->createContainer( $fullCont );
- if ( !empty( $params['noAccess'] ) ) {
- // Make container private to end-users...
- $status->merge( $this->doSecureInternal( $fullCont, $dir, $params ) );
- } else {
- // Make container public to end-users...
- $status->merge( $this->doPublishInternal( $fullCont, $dir, $params ) );
- }
- if ( $this->swiftUseCDN ) { // Rackspace style CDN
- $contObj->make_public( $this->swiftCDNExpiry );
- }
- } catch ( CDNNotEnabledException $e ) {
- // CDN not enabled; nothing to see here
- } catch ( CloudFilesException $e ) { // some other exception?
- $this->handleException( $e, $status, __METHOD__, $params );
-
- return $status;
+ // (b) Create container as needed with proper ACLs
+ if ( $stat === false ) {
+ $params['op'] = 'prepare';
+ $status->merge( $this->createContainer( $fullCont, $params ) );
}
return $status;
}
- /**
- * @see FileBackendStore::doSecureInternal()
- * @param string $fullCont
- * @param string $dir
- * @param array $params
- * @return Status
- */
protected function doSecureInternal( $fullCont, $dir, array $params ) {
$status = Status::newGood();
if ( empty( $params['noAccess'] ) ) {
return $status; // nothing to do
}
- // Restrict container from end-users...
- try {
- // doPrepareInternal() should have been called,
- // so the Swift container should already exist...
- $contObj = $this->getContainer( $fullCont ); // normally a cache hit
- // NoSuchContainerException not thrown: container must exist
-
+ $stat = $this->getContainerStat( $fullCont );
+ if ( is_array( $stat ) ) {
// Make container private to end-users...
$status->merge( $this->setContainerAccess(
- $contObj,
- array( $this->auth->username ), // read
- array( $this->auth->username ) // write
+ $fullCont,
+ array( $this->swiftUser ), // read
+ array( $this->swiftUser ) // write
) );
- if ( $this->swiftUseCDN && $contObj->is_public() ) { // Rackspace style CDN
- $contObj->make_private();
- }
- } catch ( CDNNotEnabledException $e ) {
- // CDN not enabled; nothing to see here
- } catch ( CloudFilesException $e ) { // some other exception?
- $this->handleException( $e, $status, __METHOD__, $params );
+ } elseif ( $stat === false ) {
+ $status->fatal( 'backend-fail-usable', $params['dir'] );
+ } else {
+ $status->fatal( 'backend-fail-internal', $this->name );
}
return $status;
}
- /**
- * @see FileBackendStore::doPublishInternal()
- * @param string $fullCont
- * @param string $dir
- * @param array $params
- * @return Status
- */
protected function doPublishInternal( $fullCont, $dir, array $params ) {
$status = Status::newGood();
- // Unrestrict container from end-users...
- try {
- // doPrepareInternal() should have been called,
- // so the Swift container should already exist...
- $contObj = $this->getContainer( $fullCont ); // normally a cache hit
- // NoSuchContainerException not thrown: container must exist
-
+ $stat = $this->getContainerStat( $fullCont );
+ if ( is_array( $stat ) ) {
// Make container public to end-users...
- if ( $this->swiftAnonUser != '' ) {
- $status->merge( $this->setContainerAccess(
- $contObj,
- array( $this->auth->username, $this->swiftAnonUser ), // read
- array( $this->auth->username, $this->swiftAnonUser ) // write
- ) );
- } else {
- $status->merge( $this->setContainerAccess(
- $contObj,
- array( $this->auth->username, '.r:*' ), // read
- array( $this->auth->username ) // write
- ) );
- }
- if ( $this->swiftUseCDN && !$contObj->is_public() ) { // Rackspace style CDN
- $contObj->make_public();
- }
- } catch ( CDNNotEnabledException $e ) {
- // CDN not enabled; nothing to see here
- } catch ( CloudFilesException $e ) { // some other exception?
- $this->handleException( $e, $status, __METHOD__, $params );
+ $status->merge( $this->setContainerAccess(
+ $fullCont,
+ array( $this->swiftUser, '.r:*' ), // read
+ array( $this->swiftUser ) // write
+ ) );
+ } elseif ( $stat === false ) {
+ $status->fatal( 'backend-fail-usable', $params['dir'] );
+ } else {
+ $status->fatal( 'backend-fail-internal', $this->name );
}
return $status;
}
// (a) Check the container
- try {
- $contObj = $this->getContainer( $fullCont, true );
- } catch ( NoSuchContainerException $e ) {
+ $stat = $this->getContainerStat( $fullCont, true );
+ if ( $stat === false ) {
return $status; // ok, nothing to do
- } catch ( CloudFilesException $e ) { // some other exception?
- $this->handleException( $e, $status, __METHOD__, $params );
-
+ } elseif ( !is_array( $stat ) ) {
+ $status->fatal( 'backend-fail-internal', $this->name );
return $status;
}
// (b) Delete the container if empty
- if ( $contObj->object_count == 0 ) {
- try {
- $this->deleteContainer( $fullCont );
- } catch ( NoSuchContainerException $e ) {
- return $status; // race?
- } catch ( NonEmptyContainerException $e ) {
- return $status; // race? consistency delay?
- } catch ( CloudFilesException $e ) { // some other exception?
- $this->handleException( $e, $status, __METHOD__, $params );
-
- return $status;
- }
+ if ( $stat['count'] == 0 ) {
+ $params['op'] = 'clean';
+ $status->merge( $this->deleteContainer( $fullCont, $params ) );
}
return $status;
return false; // invalid storage path
}
- $stat = false;
- try {
- $contObj = $this->getContainer( $srcCont );
- $srcObj = $contObj->get_object( $srcRel, $this->headersFromParams( $params ) );
- $this->addMissingMetadata( $srcObj, $params['src'] );
+ $auth = $this->getAuthentication();
+ if ( !$auth ) {
+ return null;
+ }
+
+ // (a) Check the container
+ $cstat = $this->getContainerStat( $srcCont, true );
+ if ( $cstat === false ) {
+ return false; // ok, nothing to do
+ } elseif ( !is_array( $cstat ) ) {
+ return null;
+ }
+
+ // (b) Check the file
+ list( $rcode, $rdesc, $rhdrs, $rbody, $rerr ) = $this->http->run( array(
+ 'method' => 'HEAD',
+ 'url' => $this->storageUrl( $auth, $srcCont, $srcRel ),
+ 'headers' => $this->authTokenHeaders( $auth ) + $this->headersFromParams( $params )
+ ) );
+ if ( $rcode === 200 || $rcode === 204 ) {
+ // Update the object if it is missing some headers
+ $rhdrs = $this->addMissingMetadata( $rhdrs, $params['src'] );
+ // Fetch all of the custom metadata headers
+ $metadata = array();
+ foreach ( $rhdrs as $name => $value ) {
+ if ( strpos( $name, 'x-object-meta-' ) === 0 ) {
+ $metadata[substr( $name, strlen( 'x-object-meta-' ) )] = $value;
+ }
+ }
+ // Fetch all of the custom raw HTTP headers
+ $headers = $this->sanitizeHdrs( array( 'headers' => $rhdrs ) );
$stat = array(
// Convert various random Swift dates to TS_MW
- 'mtime' => $this->convertSwiftDate( $srcObj->last_modified, TS_MW ),
- 'size' => (int)$srcObj->content_length,
- 'sha1' => $srcObj->getMetadataValue( 'Sha1base36' )
+ 'mtime' => $this->convertSwiftDate( $rhdrs['last-modified'], TS_MW ),
+ // Empty objects actually return no content-length header in Ceph
+ 'size' => isset( $rhdrs['content-length'] ) ? (int)$rhdrs['content-length'] : 0,
+ 'sha1' => $rhdrs[ 'x-object-meta-sha1base36'],
+ 'md5' => ctype_xdigit( $rhdrs['etag'] ) ? $rhdrs['etag'] : null,
+ 'xattr' => array( 'metadata' => $metadata, 'headers' => $headers )
);
- } catch ( NoSuchContainerException $e ) {
- } catch ( NoSuchObjectException $e ) {
- } catch ( CloudFilesException $e ) { // some other exception?
+ } elseif ( $rcode === 404 ) {
+ $stat = false;
+ } else {
$stat = null;
- $this->handleException( $e, null, __METHOD__, $params );
+ $this->onError( null, __METHOD__, $params, $rerr, $rcode, $rdesc );
}
return $stat;
/**
* Fill in any missing object metadata and save it to Swift
*
- * @param CF_Object $obj
+ * @param array $objHdrs Object response headers
* @param string $path Storage path to object
- * @return bool Success
- * @throws Exception cloudfiles exceptions
+ * @return array New headers
*/
- protected function addMissingMetadata( CF_Object $obj, $path ) {
- if ( $obj->getMetadataValue( 'Sha1base36' ) !== null ) {
- return true; // nothing to do
+ protected function addMissingMetadata( array $objHdrs, $path ) {
+ if ( isset( $objHdrs['x-object-meta-sha1base36'] ) ) {
+ return $objHdrs; // nothing to do
}
- wfProfileIn( __METHOD__ );
+
+ $section = new ProfileSection( __METHOD__ );
trigger_error( "$path was not stored with SHA-1 metadata.", E_USER_WARNING );
+
+ $auth = $this->getAuthentication();
+ if ( !$auth ) {
+ $objHdrs['x-object-meta-sha1base36'] = false;
+ return $objHdrs; // failed
+ }
+
$status = Status::newGood();
$scopeLockS = $this->getScopedFileLocks( array( $path ), LockManager::LOCK_UW, $status );
if ( $status->isOK() ) {
if ( $tmpFile ) {
$hash = $tmpFile->getSha1Base36();
if ( $hash !== false ) {
- $obj->setMetadataValues( array( 'Sha1base36' => $hash ) );
- $obj->sync_metadata(); // save to Swift
- wfProfileOut( __METHOD__ );
-
- return true; // success
+ $objHdrs['x-object-meta-sha1base36'] = $hash;
+ list( $srcCont, $srcRel ) = $this->resolveStoragePathReal( $path );
+ list( $rcode, $rdesc, $rhdrs, $rbody, $rerr ) = $this->http->run( array(
+ 'method' => 'POST',
+ 'url' => $this->storageUrl( $auth, $srcCont, $srcRel ),
+ 'headers' => $this->authTokenHeaders( $auth ) + $objHdrs
+ ) );
+ if ( $rcode >= 200 && $rcode <= 299 ) {
+ return $objHdrs; // success
+ }
}
}
}
trigger_error( "Unable to set SHA-1 metadata for $path", E_USER_WARNING );
- $obj->setMetadataValues( array( 'Sha1base36' => false ) );
- wfProfileOut( __METHOD__ );
+ $objHdrs['x-object-meta-sha1base36'] = false;
- return false; // failed
+ return $objHdrs; // failed
}
protected function doGetFileContentsMulti( array $params ) {
$contents = array();
+ $auth = $this->getAuthentication();
+
$ep = array_diff_key( $params, array( 'srcs' => 1 ) ); // for error logging
// Blindly create tmp files and stream to them, catching any exception if the file does
// not exist. Doing stats here is useless and will loop infinitely in addMissingMetadata().
foreach ( array_chunk( $params['srcs'], $params['concurrency'] ) as $pathBatch ) {
- $cfOps = array(); // (path => CF_Async_Op)
+ $reqs = array(); // (path => op)
foreach ( $pathBatch as $path ) { // each path in this concurrent batch
list( $srcCont, $srcRel ) = $this->resolveStoragePathReal( $path );
- if ( $srcRel === null ) {
+ if ( $srcRel === null || !$auth ) {
$contents[$path] = false;
continue;
}
$data = false;
- try {
- $sContObj = $this->getContainer( $srcCont );
- $obj = new CF_Object( $sContObj, $srcRel, false, false ); // skip HEAD
- // Create a new temporary memory file...
- $handle = fopen( 'php://temp', 'wb' );
- if ( $handle ) {
- $headers = $this->headersFromParams( $params );
- if ( count( $pathBatch ) > 1 ) {
- $cfOps[$path] = $obj->stream_async( $handle, $headers );
- $cfOps[$path]->_file_handle = $handle; // close this later
- } else {
- $obj->stream( $handle, $headers );
- rewind( $handle ); // start from the beginning
- $data = stream_get_contents( $handle );
- fclose( $handle );
- }
- } else {
- $data = false;
- }
- } catch ( NoSuchContainerException $e ) {
- $data = false;
- } catch ( NoSuchObjectException $e ) {
- $data = false;
- } catch ( CloudFilesException $e ) { // some other exception?
+ // Create a new temporary memory file...
+ $handle = fopen( 'php://temp', 'wb' );
+ if ( $handle ) {
+ $reqs[$path] = array(
+ 'method' => 'GET',
+ 'url' => $this->storageUrl( $auth, $srcCont, $srcRel ),
+ 'headers' => $this->authTokenHeaders( $auth )
+ + $this->headersFromParams( $params ),
+ 'stream' => $handle,
+ );
+ } else {
$data = false;
- $this->handleException( $e, null, __METHOD__, array( 'src' => $path ) + $ep );
}
$contents[$path] = $data;
}
- $batch = new CF_Async_Op_Batch( $cfOps );
- $cfOps = $batch->execute();
- foreach ( $cfOps as $path => $cfOp ) {
- try {
- $cfOp->getLastResponse();
- rewind( $cfOp->_file_handle ); // start from the beginning
- $contents[$path] = stream_get_contents( $cfOp->_file_handle );
- } catch ( NoSuchContainerException $e ) {
- $contents[$path] = false;
- } catch ( NoSuchObjectException $e ) {
+ $reqs = $this->http->runMulti( $reqs );
+ foreach ( $reqs as $path => $op ) {
+ list( $rcode, $rdesc, $rhdrs, $rbody, $rerr ) = $op['response'];
+ if ( $rcode >= 200 && $rcode <= 299 ) {
+ rewind( $op['stream'] ); // start from the beginning
+ $contents[$path] = stream_get_contents( $op['stream'] );
+ } elseif ( $rcode === 404 ) {
$contents[$path] = false;
- } catch ( CloudFilesException $e ) { // some other exception?
- $contents[$path] = false;
- $this->handleException( $e, null, __METHOD__, array( 'src' => $path ) + $ep );
+ } else {
+ $this->onError( null, __METHOD__,
+ array( 'src' => $path ) + $ep, $rerr, $rcode, $rdesc );
}
- fclose( $cfOp->_file_handle ); // close open handle
+ fclose( $op['stream'] ); // close open handle
}
}
return $contents;
}
- /**
- * @see FileBackendStore::doDirectoryExists()
- * @param string $fullCont
- * @param string $dir
- * @param array $params
- * @return bool|null
- */
protected function doDirectoryExists( $fullCont, $dir, array $params ) {
- try {
- $container = $this->getContainer( $fullCont );
- $prefix = ( $dir == '' ) ? null : "{$dir}/";
-
- return ( count( $container->list_objects( 1, null, $prefix ) ) > 0 );
- } catch ( NoSuchContainerException $e ) {
- return false;
- } catch ( CloudFilesException $e ) { // some other exception?
- $this->handleException( $e, null, __METHOD__,
- array( 'cont' => $fullCont, 'dir' => $dir ) );
+ $prefix = ( $dir == '' ) ? null : "{$dir}/";
+ $status = $this->objectListing( $fullCont, 'names', 1, null, $prefix );
+ if ( $status->isOk() ) {
+ return ( count( $status->value ) );
}
-
return null; // error
}
}
$section = new ProfileSection( __METHOD__ . '-' . $this->name );
- try {
- $container = $this->getContainer( $fullCont );
- $prefix = ( $dir == '' ) ? null : "{$dir}/";
- // Non-recursive: only list dirs right under $dir
- if ( !empty( $params['topOnly'] ) ) {
- $objects = $container->list_objects( $limit, $after, $prefix, null, '/' );
- foreach ( $objects as $object ) { // files and directories
- if ( substr( $object, -1 ) === '/' ) {
- $dirs[] = $object; // directories end in '/'
- }
+
+ $prefix = ( $dir == '' ) ? null : "{$dir}/";
+ // Non-recursive: only list dirs right under $dir
+ if ( !empty( $params['topOnly'] ) ) {
+ $status = $this->objectListing( $fullCont, 'names', $limit, $after, $prefix, '/' );
+ if ( !$status->isOk() ) {
+ return $dirs; // error
+ }
+ $objects = $status->value;
+ foreach ( $objects as $object ) { // files and directories
+ if ( substr( $object, -1 ) === '/' ) {
+ $dirs[] = $object; // directories end in '/'
}
- // Recursive: list all dirs under $dir and its subdirs
- } else {
- // Get directory from last item of prior page
- $lastDir = $this->getParentDir( $after ); // must be first page
- $objects = $container->list_objects( $limit, $after, $prefix );
- foreach ( $objects as $object ) { // files
- $objectDir = $this->getParentDir( $object ); // directory of object
- if ( $objectDir !== false && $objectDir !== $dir ) {
- // Swift stores paths in UTF-8, using binary sorting.
- // See function "create_container_table" in common/db.py.
- // If a directory is not "greater" than the last one,
- // then it was already listed by the calling iterator.
- if ( strcmp( $objectDir, $lastDir ) > 0 ) {
- $pDir = $objectDir;
- do { // add dir and all its parent dirs
- $dirs[] = "{$pDir}/";
- $pDir = $this->getParentDir( $pDir );
- } while ( $pDir !== false // sanity
- && strcmp( $pDir, $lastDir ) > 0 // not done already
- && strlen( $pDir ) > strlen( $dir ) // within $dir
- );
- }
- $lastDir = $objectDir;
+ }
+ // Recursive: list all dirs under $dir and its subdirs
+ } else {
+ $getParentDir = function( $path ) {
+ return ( strpos( $path, '/' ) !== false ) ? dirname( $path ) : false;
+ };
+ // Get directory from last item of prior page
+ $lastDir = $getParentDir( $after ); // must be first page
+ $status = $this->objectListing( $fullCont, 'names', $limit, $after, $prefix );
+ if ( !$status->isOk() ) {
+ return $dirs; // error
+ }
+ $objects = $status->value;
+ foreach ( $objects as $object ) { // files
+ $objectDir = $getParentDir( $object ); // directory of object
+ if ( $objectDir !== false && $objectDir !== $dir ) {
+ // Swift stores paths in UTF-8, using binary sorting.
+ // See function "create_container_table" in common/db.py.
+ // If a directory is not "greater" than the last one,
+ // then it was already listed by the calling iterator.
+ if ( strcmp( $objectDir, $lastDir ) > 0 ) {
+ $pDir = $objectDir;
+ do { // add dir and all its parent dirs
+ $dirs[] = "{$pDir}/";
+ $pDir = $getParentDir( $pDir );
+ } while ( $pDir !== false // sanity
+ && strcmp( $pDir, $lastDir ) > 0 // not done already
+ && strlen( $pDir ) > strlen( $dir ) // within $dir
+ );
}
+ $lastDir = $objectDir;
}
}
- // Page on the unfiltered directory listing (what is returned may be filtered)
- if ( count( $objects ) < $limit ) {
- $after = INF; // avoid a second RTT
- } else {
- $after = end( $objects ); // update last item
- }
- } catch ( NoSuchContainerException $e ) {
- } catch ( CloudFilesException $e ) { // some other exception?
- $this->handleException( $e, null, __METHOD__,
- array( 'cont' => $fullCont, 'dir' => $dir ) );
- throw new FileBackendError( "Got " . get_class( $e ) . " exception." );
+ }
+ // Page on the unfiltered directory listing (what is returned may be filtered)
+ if ( count( $objects ) < $limit ) {
+ $after = INF; // avoid a second RTT
+ } else {
+ $after = end( $objects ); // update last item
}
return $dirs;
}
- protected function getParentDir( $path ) {
- return ( strpos( $path, '/' ) !== false ) ? dirname( $path ) : false;
- }
-
/**
* Do not call this function outside of SwiftFileBackendFileList
*
}
$section = new ProfileSection( __METHOD__ . '-' . $this->name );
- try {
- $container = $this->getContainer( $fullCont );
- $prefix = ( $dir == '' ) ? null : "{$dir}/";
-
- // $objects will contain a list of unfiltered names or CF_Object items
- // Non-recursive: only list files right under $dir
- if ( !empty( $params['topOnly'] ) ) {
- if ( !empty( $params['adviseStat'] ) ) {
- // Note: get_objects() does not include directories
- $objects = $container->get_objects( $limit, $after, $prefix, null, '/' );
- } else {
- // Note: list_objects() includes directories here
- $objects = $container->list_objects( $limit, $after, $prefix, null, '/' );
- }
- $files = $this->buildFileObjectListing( $params, $dir, $objects );
- // Recursive: list all files under $dir and its subdirs
+
+ $prefix = ( $dir == '' ) ? null : "{$dir}/";
+ // $objects will contain a list of unfiltered names or CF_Object items
+ // Non-recursive: only list files right under $dir
+ if ( !empty( $params['topOnly'] ) ) {
+ if ( !empty( $params['adviseStat'] ) ) {
+ $status = $this->objectListing( $fullCont, 'info', $limit, $after, $prefix, '/' );
} else {
- // Note: get_objects()/list_objects() here only return file objects
- if ( !empty( $params['adviseStat'] ) ) {
- $objects = $container->get_objects( $limit, $after, $prefix );
- } else {
- $objects = $container->list_objects( $limit, $after, $prefix );
- }
- $files = $this->buildFileObjectListing( $params, $dir, $objects );
+ $status = $this->objectListing( $fullCont, 'names', $limit, $after, $prefix, '/' );
}
- // Page on the unfiltered object listing (what is returned may be filtered)
- if ( count( $objects ) < $limit ) {
- $after = INF; // avoid a second RTT
+ // Recursive: list all files under $dir and its subdirs
+ } else {
+ if ( !empty( $params['adviseStat'] ) ) {
+ $status = $this->objectListing( $fullCont, 'info', $limit, $after, $prefix );
} else {
- $after = end( $objects ); // update last item
- $after = is_object( $after ) ? $after->name : $after;
+ $status = $this->objectListing( $fullCont, 'names', $limit, $after, $prefix );
}
- } catch ( NoSuchContainerException $e ) {
- } catch ( CloudFilesException $e ) { // some other exception?
- $this->handleException( $e, null, __METHOD__,
- array( 'cont' => $fullCont, 'dir' => $dir ) );
- throw new FileBackendError( "Got " . get_class( $e ) . " exception." );
+ }
+ // Reformat this list into a list of (name, stat array or null) entries
+ if ( !$status->isOk() ) {
+ return $files; // error
+ }
+ $objects = $status->value;
+ $files = $this->buildFileObjectListing( $params, $dir, $objects );
+ // Page on the unfiltered object listing (what is returned may be filtered)
+ if ( count( $objects ) < $limit ) {
+ $after = INF; // avoid a second RTT
+ } else {
+ $after = end( $objects ); // update last item
+ $after = is_object( $after ) ? $after->name : $after;
}
return $files;
$names = array();
foreach ( $objects as $object ) {
if ( is_object( $object ) ) {
+ if ( isset( $object->subdir ) || !isset( $object->name ) ) {
+ continue; // virtual directory entry; ignore
+ }
$stat = array(
// Convert various random Swift dates to TS_MW
- 'mtime' => $this->convertSwiftDate( $object->last_modified, TS_MW ),
- 'size' => (int)$object->content_length,
+ 'mtime' => $this->convertSwiftDate( $object->last_modified, TS_MW ),
+ 'size' => (int)$object->bytes,
+ 'md5' => ctype_xdigit( $object->hash ) ? $object->hash : null,
'latest' => false // eventually consistent
);
$names[] = array( $object->name, $stat );
$this->cheapCache->set( $path, 'stat', $val );
}
+ protected function doGetFileXAttributes( array $params ) {
+ $stat = $this->getFileStat( $params );
+ if ( $stat ) {
+ if ( !isset( $stat['xattr'] ) ) {
+ // Stat entries filled by file listings don't include metadata/headers
+ $this->clearCache( array( $params['src'] ) );
+ $stat = $this->getFileStat( $params );
+ }
+ return $stat['xattr'];
+ } else {
+ return false;
+ }
+ }
+
protected function doGetFileSha1base36( array $params ) {
$stat = $this->getFileStat( $params );
if ( $stat ) {
$status->fatal( 'backend-fail-invalidpath', $params['src'] );
}
- try {
- $cont = $this->getContainer( $srcCont );
- } catch ( NoSuchContainerException $e ) {
+ $auth = $this->getAuthentication();
+ if ( !$auth || !is_array( $this->getContainerStat( $srcCont ) ) ) {
$status->fatal( 'backend-fail-stream', $params['src'] );
-
- return $status;
- } catch ( CloudFilesException $e ) { // some other exception?
- $this->handleException( $e, $status, __METHOD__, $params );
-
return $status;
}
- try {
- $output = fopen( 'php://output', 'wb' );
- $obj = new CF_Object( $cont, $srcRel, false, false ); // skip HEAD
- $obj->stream( $output, $this->headersFromParams( $params ) );
- } catch ( NoSuchObjectException $e ) {
+ $handle = fopen( 'php://output', 'wb' );
+
+ list( $rcode, $rdesc, $rhdrs, $rbody, $rerr ) = $this->http->run( array(
+ 'method' => 'GET',
+ 'url' => $this->storageUrl( $auth, $srcCont, $srcRel ),
+ 'headers' => $this->authTokenHeaders( $auth )
+ + $this->headersFromParams( $params ),
+ 'stream' => $handle,
+ ) );
+
+ if ( $rcode >= 200 && $rcode <= 299 ) {
+ // good
+ } elseif ( $rcode === 404 ) {
$status->fatal( 'backend-fail-stream', $params['src'] );
- } catch ( CloudFilesException $e ) { // some other exception?
- $this->handleException( $e, $status, __METHOD__, $params );
+ } else {
+ $this->onError( $status, __METHOD__, $params, $rerr, $rcode, $rdesc );
}
return $status;
protected function doGetLocalCopyMulti( array $params ) {
$tmpFiles = array();
+ $auth = $this->getAuthentication();
+
$ep = array_diff_key( $params, array( 'srcs' => 1 ) ); // for error logging
// Blindly create tmp files and stream to them, catching any exception if the file does
// not exist. Doing a stat here is useless causes infinite loops in addMissingMetadata().
foreach ( array_chunk( $params['srcs'], $params['concurrency'] ) as $pathBatch ) {
- $cfOps = array(); // (path => CF_Async_Op)
+ $reqs = array(); // (path => op)
foreach ( $pathBatch as $path ) { // each path in this concurrent batch
list( $srcCont, $srcRel ) = $this->resolveStoragePathReal( $path );
- if ( $srcRel === null ) {
+ if ( $srcRel === null || !$auth ) {
$tmpFiles[$path] = null;
continue;
}
$tmpFile = null;
- try {
- $sContObj = $this->getContainer( $srcCont );
- $obj = new CF_Object( $sContObj, $srcRel, false, false ); // skip HEAD
- // Get source file extension
- $ext = FileBackend::extensionFromPath( $path );
- // Create a new temporary file...
- $tmpFile = TempFSFile::factory( 'localcopy_', $ext );
- if ( $tmpFile ) {
- $handle = fopen( $tmpFile->getPath(), 'wb' );
- if ( $handle ) {
- $headers = $this->headersFromParams( $params );
- if ( count( $pathBatch ) > 1 ) {
- $cfOps[$path] = $obj->stream_async( $handle, $headers );
- $cfOps[$path]->_file_handle = $handle; // close this later
- } else {
- $obj->stream( $handle, $headers );
- fclose( $handle );
- }
- } else {
- $tmpFile = null;
- }
+ // Get source file extension
+ $ext = FileBackend::extensionFromPath( $path );
+ // Create a new temporary file...
+ $tmpFile = TempFSFile::factory( 'localcopy_', $ext );
+ if ( $tmpFile ) {
+ $handle = fopen( $tmpFile->getPath(), 'wb' );
+ if ( $handle ) {
+ $reqs[$path] = array(
+ 'method' => 'GET',
+ 'url' => $this->storageUrl( $auth, $srcCont, $srcRel ),
+ 'headers' => $this->authTokenHeaders( $auth )
+ + $this->headersFromParams( $params ),
+ 'stream' => $handle,
+ );
+ } else {
+ $tmpFile = null;
}
- } catch ( NoSuchContainerException $e ) {
- $tmpFile = null;
- } catch ( NoSuchObjectException $e ) {
- $tmpFile = null;
- } catch ( CloudFilesException $e ) { // some other exception?
- $tmpFile = null;
- $this->handleException( $e, null, __METHOD__, array( 'src' => $path ) + $ep );
}
$tmpFiles[$path] = $tmpFile;
}
- $batch = new CF_Async_Op_Batch( $cfOps );
- $cfOps = $batch->execute();
- foreach ( $cfOps as $path => $cfOp ) {
- try {
- $cfOp->getLastResponse();
- } catch ( NoSuchContainerException $e ) {
- $tmpFiles[$path] = null;
- } catch ( NoSuchObjectException $e ) {
- $tmpFiles[$path] = null;
- } catch ( CloudFilesException $e ) { // some other exception?
+ $reqs = $this->http->runMulti( $reqs );
+ foreach ( $reqs as $path => $op ) {
+ list( $rcode, $rdesc, $rhdrs, $rbody, $rerr ) = $op['response'];
+ fclose( $op['stream'] ); // close open handle
+ if ( $rcode >= 200 && $rcode <= 299
+ // double check that the disk is not full/broken
+ && $tmpFiles[$path]->getSize() == $rhdrs['content-length']
+ ) {
+ // good
+ } elseif ( $rcode === 404 ) {
+ $tmpFiles[$path] = false;
+ } else {
$tmpFiles[$path] = null;
- $this->handleException( $e, null, __METHOD__, array( 'src' => $path ) + $ep );
+ $this->onError( null, __METHOD__,
+ array( 'src' => $path ) + $ep, $rerr, $rcode, $rdesc );
}
- fclose( $cfOp->_file_handle ); // close open handle
}
}
if ( $srcRel === null ) {
return null; // invalid path
}
- try {
- $ttl = isset( $params['ttl'] ) ? $params['ttl'] : 86400;
- $sContObj = $this->getContainer( $srcCont );
- $obj = new CF_Object( $sContObj, $srcRel, false, false ); // skip HEAD
- if ( $this->swiftTempUrlKey != '' ) {
- return $obj->get_temp_url( $this->swiftTempUrlKey, $ttl, "GET" );
- } else { // give S3 API URL for rgw
- $expires = time() + $ttl;
- // Path for signature starts with the bucket
- $spath = '/' . rawurlencode( $srcCont ) . '/' .
- str_replace( '%2F', '/', rawurlencode( $srcRel ) );
- // Calculate the hash
- $signature = base64_encode( hash_hmac(
- 'sha1',
- "GET\n\n\n{$expires}\n{$spath}",
- $this->rgwS3SecretKey,
- true // raw
- ) );
- // See http://s3.amazonaws.com/doc/s3-developer-guide/RESTAuthentication.html.
- // Note: adding a newline for empty CanonicalizedAmzHeaders does not work.
- return wfAppendQuery(
- str_replace( '/swift/v1', '', // S3 API is the rgw default
- $sContObj->cfs_http->getStorageUrl() . $spath ),
- array(
- 'Signature' => $signature,
- 'Expires' => $expires,
- 'AWSAccessKeyId' => $this->rgwS3AccessKey )
- );
- }
- } catch ( NoSuchContainerException $e ) {
- } catch ( CloudFilesException $e ) { // some other exception?
- $this->handleException( $e, null, __METHOD__, $params );
+ $auth = $this->getAuthentication();
+ if ( !$auth ) {
+ return null;
+ }
+
+ $ttl = isset( $params['ttl'] ) ? $params['ttl'] : 86400;
+ $expires = time() + $ttl;
+
+ if ( $this->swiftTempUrlKey != '' ) {
+ $url = $this->storageUrl( $auth, $srcCont, $srcRel );
+ // Swift wants the signature based on the unencoded object name
+ $contPath = parse_url( $this->storageUrl( $auth, $srcCont ), PHP_URL_PATH );
+ $signature = hash_hmac( 'sha1',
+ "GET\n{$expires}\n{$contPath}/{$srcRel}",
+ $this->swiftTempUrlKey
+ );
+ return "{$url}?temp_url_sig={$signature}&temp_url_expires={$expires}";
+ } else { // give S3 API URL for rgw
+ // Path for signature starts with the bucket
+ $spath = '/' . rawurlencode( $srcCont ) . '/' .
+ str_replace( '%2F', '/', rawurlencode( $srcRel ) );
+ // Calculate the hash
+ $signature = base64_encode( hash_hmac(
+ 'sha1',
+ "GET\n\n\n{$expires}\n{$spath}",
+ $this->rgwS3SecretKey,
+ true // raw
+ ) );
+ // See http://s3.amazonaws.com/doc/s3-developer-guide/RESTAuthentication.html.
+ // Note: adding a newline for empty CanonicalizedAmzHeaders does not work.
+ return wfAppendQuery(
+ str_replace( '/swift/v1', '', // S3 API is the rgw default
+ $this->storageUrl( $auth ) . $spath ),
+ array(
+ 'Signature' => $signature,
+ 'Expires' => $expires,
+ 'AWSAccessKeyId' => $this->rgwS3AccessKey )
+ );
}
}
protected function headersFromParams( array $params ) {
$hdrs = array();
if ( !empty( $params['latest'] ) ) {
- $hdrs[] = 'X-Newest: true';
+ $hdrs['x-newest'] = 'true';
}
return $hdrs;
protected function doExecuteOpHandlesInternal( array $fileOpHandles ) {
$statuses = array();
- $cfOps = array(); // list of CF_Async_Op objects
+ $auth = $this->getAuthentication();
+ if ( !$auth ) {
+ foreach ( $fileOpHandles as $index => $fileOpHandle ) {
+ $statuses[$index] = Status::newFatal( 'backend-fail-connect', $this->name );
+ }
+ return $statuses;
+ }
+
+ // Split the HTTP requests into stages that can be done concurrently
+ $httpReqsByStage = array(); // map of (stage => index => HTTP request)
foreach ( $fileOpHandles as $index => $fileOpHandle ) {
- $cfOps[$index] = $fileOpHandle->cfOp;
- }
- $batch = new CF_Async_Op_Batch( $cfOps );
-
- $cfOps = $batch->execute();
- foreach ( $cfOps as $index => $cfOp ) {
- $status = Status::newGood();
- $function = 'getResponse' . $fileOpHandles[$index]->call;
- try { // catch exceptions; update status
- $this->$function( $cfOp, $status, $fileOpHandles[$index]->params );
- $this->purgeCDNCache( $fileOpHandles[$index]->affectedObjects );
- } catch ( CloudFilesException $e ) { // some other exception?
- $this->handleException( $e, $status,
- __CLASS__ . ":$function", $fileOpHandles[$index]->params );
+ $reqs = $fileOpHandle->httpOp;
+ // Convert the 'url' parameter to an actual URL using $auth
+ foreach ( $reqs as $stage => &$req ) {
+ list( $container, $relPath ) = $req['url'];
+ $req['url'] = $this->storageUrl( $auth, $container, $relPath );
+ $req['headers'] = isset( $req['headers'] ) ? $req['headers'] : array();
+ $req['headers'] = $this->authTokenHeaders( $auth ) + $req['headers'];
+ $httpReqsByStage[$stage][$index] = $req;
+ }
+ $statuses[$index] = Status::newGood();
+ }
+
+ // Run all requests for the first stage, then the next, and so on
+ for ( $stage = 0; $stage < count( $httpReqsByStage ); ++$stage ) {
+ $httpReqs = $this->http->runMulti( $httpReqsByStage[$stage] );
+ foreach ( $httpReqs as $index => $httpReq ) {
+ // Run the callback for each request of this operation
+ $callback = $fileOpHandles[$index]->callback;
+ call_user_func_array( $callback, array( $httpReq, $statuses[$index] ) );
+ // On failure, abort all remaining requests for this operation
+ // (e.g. abort the DELETE request if the COPY request fails for a move)
+ if ( !$statuses[$index]->isOK() ) {
+ $stages = count( $fileOpHandles[$index]->httpOp );
+ for ( $s = ( $stage + 1 ); $s < $stages; ++$s ) {
+ unset( $httpReqsByStage[$s][$index] );
+ }
+ }
}
- $statuses[$index] = $status;
}
return $statuses;
* In general, we don't allow listings to end-users. It's not useful, isn't well-defined
* (lists are truncated to 10000 item with no way to page), and is just a performance risk.
*
- * @param CF_Container $contObj Swift container
+ * @param string $container Resolved Swift container
* @param array $readGrps List of the possible criteria for a request to have
* access to read a container. Each item is one of the following formats:
* - account:user : Grants access if the request is by the given user
* - account:user : Grants access if the request is by the given user
* @return Status
*/
- protected function setContainerAccess(
- CF_Container $contObj, array $readGrps, array $writeGrps
- ) {
- $creds = $contObj->cfs_auth->export_credentials();
+ protected function setContainerAccess( $container, array $readGrps, array $writeGrps ) {
+ $status = Status::newGood();
- $url = $creds['storage_url'] . '/' . rawurlencode( $contObj->name );
+ $auth = $this->getAuthentication();
+ if ( !$auth ) {
+ $status->fatal( 'backend-fail-connect', $this->name );
+ return $status;
+ }
- // Note: 10 second timeout consistent with php-cloudfiles
- $req = MWHttpRequest::factory( $url, array( 'method' => 'POST', 'timeout' => 10 ) );
- $req->setHeader( 'X-Auth-Token', $creds['auth_token'] );
- $req->setHeader( 'X-Container-Read', implode( ',', $readGrps ) );
- $req->setHeader( 'X-Container-Write', implode( ',', $writeGrps ) );
+ list( $rcode, $rdesc, $rhdrs, $rbody, $rerr ) = $this->http->run( array(
+ 'method' => 'POST',
+ 'url' => $this->storageUrl( $auth, $container ),
+ 'headers' => $this->authTokenHeaders( $auth ) + array(
+ 'x-container-read' => implode( ',', $readGrps ),
+ 'x-container-write' => implode( ',', $writeGrps )
+ )
+ ) );
- return $req->execute(); // should return 204
+ if ( $rcode != 204 && $rcode !== 202 ) {
+ $status->fatal( 'backend-fail-internal', $this->name );
+ }
+
+ return $status;
}
/**
- * Purge the CDN cache of affected objects if CDN caching is enabled.
- * This is for Rackspace/Akamai CDNs.
+ * Get a Swift container stat array, possibly from process cache.
+ * Use $reCache if the file count or byte count is needed.
*
- * @param array $objects List of CF_Object items
+ * @param string $container Container name
+ * @param bool $bypassCache Bypass all caches and load from Swift
+ * @return array|bool|null False on 404, null on failure
*/
- public function purgeCDNCache( array $objects ) {
- if ( $this->swiftUseCDN && $this->swiftCDNPurgable ) {
- foreach ( $objects as $object ) {
- try {
- $object->purge_from_cdn();
- } catch ( CDNNotEnabledException $e ) {
- // CDN not enabled; nothing to see here
- } catch ( CloudFilesException $e ) {
- $this->handleException( $e, null, __METHOD__,
- array( 'cont' => $object->container->name, 'obj' => $object->name ) );
+ protected function getContainerStat( $container, $bypassCache = false ) {
+ if ( $bypassCache ) { // purge cache
+ $this->containerStatCache->clear( $container );
+ } elseif ( !$this->containerStatCache->has( $container, 'stat' ) ) {
+ $this->primeContainerCache( array( $container ) ); // check persistent cache
+ }
+ if ( !$this->containerStatCache->has( $container, 'stat' ) ) {
+ $auth = $this->getAuthentication();
+ if ( !$auth ) {
+ return null;
+ }
+
+ list( $rcode, $rdesc, $rhdrs, $rbody, $rerr ) = $this->http->run( array(
+ 'method' => 'HEAD',
+ 'url' => $this->storageUrl( $auth, $container ),
+ 'headers' => $this->authTokenHeaders( $auth )
+ ) );
+
+ if ( $rcode === 204 ) {
+ $stat = array(
+ 'count' => $rhdrs['x-container-object-count'],
+ 'bytes' => $rhdrs['x-container-bytes-used']
+ );
+ if ( $bypassCache ) {
+ return $stat;
+ } else {
+ $this->containerStatCache->set( $container, 'stat', $stat ); // cache it
}
+ } elseif ( $rcode === 404 ) {
+ return false;
+ } else {
+ $this->onError( null, __METHOD__,
+ array( 'cont' => $container ), $rerr, $rcode, $rdesc );
+ return null;
}
}
+
+ return $this->containerStatCache->get( $container, 'stat' );
}
/**
- * Get an authenticated connection handle to the Swift proxy
+ * Create a Swift container
*
- * @throws CloudFilesException
- * @throws CloudFilesException|Exception
- * @return CF_Connection|bool False on failure
+ * @param string $container Container name
+ * @param array $params
+ * @return Status
*/
- protected function getConnection() {
- if ( $this->connException instanceof CloudFilesException ) {
- if ( ( time() - $this->connErrorTime ) < 60 ) {
- throw $this->connException; // failed last attempt; don't bother
- } else { // actually retry this time
- $this->connException = null;
- $this->connErrorTime = 0;
- }
+ protected function createContainer( $container, array $params ) {
+ $status = Status::newGood();
+
+ $auth = $this->getAuthentication();
+ if ( !$auth ) {
+ $status->fatal( 'backend-fail-connect', $this->name );
+ return $status;
}
- // Session keys expire after a while, so we renew them periodically
- $reAuth = ( ( time() - $this->sessionStarted ) > $this->authTTL );
- // Authenticate with proxy and get a session key...
- if ( !$this->conn || $reAuth ) {
- $this->sessionStarted = 0;
- $this->connContainerCache->clear();
- $cacheKey = $this->getCredsCacheKey( $this->auth->username );
- $creds = $this->srvCache->get( $cacheKey ); // credentials
- if ( is_array( $creds ) ) { // cache hit
- $this->auth->load_cached_credentials(
- $creds['auth_token'], $creds['storage_url'], $creds['cdnm_url'] );
- $this->sessionStarted = time() - ceil( $this->authTTL / 2 ); // skew for worst case
- } else { // cache miss
- try {
- $this->auth->authenticate();
- $creds = $this->auth->export_credentials();
- $this->srvCache->add( $cacheKey, $creds, ceil( $this->authTTL / 2 ) ); // cache
- $this->sessionStarted = time();
- } catch ( CloudFilesException $e ) {
- $this->connException = $e; // don't keep re-trying
- $this->connErrorTime = time();
- throw $e; // throw it back
- }
- }
- if ( $this->conn ) { // re-authorizing?
- $this->conn->close(); // close active cURL handles in CF_Http object
- }
- $this->conn = new CF_Connection( $this->auth );
+
+ // @see SwiftFileBackend::setContainerAccess()
+ if ( empty( $params['noAccess'] ) ) {
+ $readGrps = array( '.r:*', $this->swiftUser ); // public
+ } else {
+ $readGrps = array( $this->swiftUser ); // private
+ }
+ $writeGrps = array( $this->swiftUser ); // sanity
+
+ list( $rcode, $rdesc, $rhdrs, $rbody, $rerr ) = $this->http->run( array(
+ 'method' => 'PUT',
+ 'url' => $this->storageUrl( $auth, $container ),
+ 'headers' => $this->authTokenHeaders( $auth ) + array(
+ 'x-container-read' => implode( ',', $readGrps ),
+ 'x-container-write' => implode( ',', $writeGrps )
+ )
+ ) );
+
+ if ( $rcode === 201 ) { // new
+ // good
+ } elseif ( $rcode === 202 ) { // already there
+ // this shouldn't really happen, but is OK
+ } else {
+ $this->onError( $status, __METHOD__, $params, $rerr, $rcode, $rdesc );
}
- return $this->conn;
+ return $status;
}
/**
- * Close the connection to the Swift proxy
+ * Delete a Swift container
+ *
+ * @param string $container Container name
+ * @param array $params
+ * @return Status
*/
- protected function closeConnection() {
- if ( $this->conn ) {
- $this->conn->close(); // close active cURL handles in CF_Http object
- $this->conn = null;
- $this->sessionStarted = 0;
- $this->connContainerCache->clear();
+ protected function deleteContainer( $container, array $params ) {
+ $status = Status::newGood();
+
+ $auth = $this->getAuthentication();
+ if ( !$auth ) {
+ $status->fatal( 'backend-fail-connect', $this->name );
+ return $status;
+ }
+
+ list( $rcode, $rdesc, $rhdrs, $rbody, $rerr ) = $this->http->run( array(
+ 'method' => 'DELETE',
+ 'url' => $this->storageUrl( $auth, $container ),
+ 'headers' => $this->authTokenHeaders( $auth )
+ ) );
+
+ if ( $rcode >= 200 && $rcode <= 299 ) { // deleted
+ $this->containerStatCache->clear( $container ); // purge
+ } elseif ( $rcode === 404 ) { // not there
+ // this shouldn't really happen, but is OK
+ } elseif ( $rcode === 409 ) { // not empty
+ $this->onError( $status, __METHOD__, $params, $rerr, $rcode, $rdesc ); // race?
+ } else {
+ $this->onError( $status, __METHOD__, $params, $rerr, $rcode, $rdesc );
}
+
+ return $status;
}
/**
- * Get the cache key for a container
+ * Get a list of objects under a container.
+ * Either just the names or a list of stdClass objects with details can be returned.
*
- * @param string $username
- * @return string
+ * @param string $fullCont
+ * @param string $type ('info' for a list of object detail maps, 'names' for names only)
+ * @param integer $limit
+ * @param string|null $after
+ * @param string|null $prefix
+ * @param string|null $delim
+ * @return Status With the list as value
*/
- private function getCredsCacheKey( $username ) {
- return wfMemcKey( 'backend', $this->getName(), 'usercreds', $username );
+ private function objectListing(
+ $fullCont, $type, $limit, $after = null, $prefix = null, $delim = null
+ ) {
+ $status = Status::newGood();
+
+ $auth = $this->getAuthentication();
+ if ( !$auth ) {
+ $status->fatal( 'backend-fail-connect', $this->name );
+ return $status;
+ }
+
+ $query = array( 'limit' => $limit );
+ if ( $type === 'info' ) {
+ $query['format'] = 'json';
+ }
+ if ( $after !== null ) {
+ $query['marker'] = $after;
+ }
+ if ( $prefix !== null ) {
+ $query['prefix'] = $prefix;
+ }
+ if ( $delim !== null ) {
+ $query['delimiter'] = $delim;
+ }
+
+ list( $rcode, $rdesc, $rhdrs, $rbody, $rerr ) = $this->http->run( array(
+ 'method' => 'GET',
+ 'url' => $this->storageUrl( $auth, $fullCont ),
+ 'query' => $query,
+ 'headers' => $this->authTokenHeaders( $auth )
+ ) );
+
+ $params = array( 'cont' => $fullCont, 'prefix' => $prefix, 'delim' => $delim );
+ if ( $rcode === 200 ) { // good
+ if ( $type === 'info' ) {
+ $status->value = FormatJson::decode( trim( $rbody ) );
+ } else {
+ $status->value = explode( "\n", trim( $rbody ) );
+ }
+ } elseif ( $rcode === 204 ) {
+ $status->value = array(); // empty container
+ } elseif ( $rcode === 404 ) {
+ $status->value = array(); // no container
+ } else {
+ $this->onError( $status, __METHOD__, $params, $rerr, $rcode, $rdesc );
+ }
+
+ return $status;
+ }
+
+ protected function doPrimeContainerCache( array $containerInfo ) {
+ foreach ( $containerInfo as $container => $info ) {
+ $this->containerStatCache->set( $container, 'stat', $info );
+ }
}
/**
- * Get a Swift container object, possibly from process cache.
- * Use $reCache if the file count or byte count is needed.
- *
- * @param string $container Container name
- * @param bool $bypassCache Bypass all caches and load from Swift
- * @return CF_Container
- * @throws CloudFilesException
+ * @return array|null Credential map
*/
- protected function getContainer( $container, $bypassCache = false ) {
- $conn = $this->getConnection(); // Swift proxy connection
- if ( $bypassCache ) { // purge cache
- $this->connContainerCache->clear( $container );
- } elseif ( !$this->connContainerCache->has( $container, 'obj' ) ) {
- $this->primeContainerCache( array( $container ) ); // check persistent cache
- }
- if ( !$this->connContainerCache->has( $container, 'obj' ) ) {
- $contObj = $conn->get_container( $container );
- // NoSuchContainerException not thrown: container must exist
- $this->connContainerCache->set( $container, 'obj', $contObj ); // cache it
- if ( !$bypassCache ) {
- $this->setContainerCache( $container, // update persistent cache
- array( 'bytes' => $contObj->bytes_used, 'count' => $contObj->object_count )
- );
+ protected function getAuthentication() {
+ if ( $this->authErrorTimestamp !== null ) {
+ if ( ( time() - $this->authErrorTimestamp ) < 60 ) {
+ return null; // failed last attempt; don't bother
+ } else { // actually retry this time
+ $this->authErrorTimestamp = null;
}
}
+ // Session keys expire after a while, so we renew them periodically
+ $reAuth = ( ( time() - $this->authSessionTimestamp ) > $this->authTTL );
+ // Authenticate with proxy and get a session key...
+ if ( !$this->authCreds || $reAuth ) {
+ $this->authSessionTimestamp = 0;
+ $cacheKey = $this->getCredsCacheKey( $this->swiftUser );
+ $creds = $this->srvCache->get( $cacheKey ); // credentials
+ // Try to use the credential cache
+ if ( isset( $creds['auth_token'] ) && isset( $creds['storage_url'] ) ) {
+ $this->authCreds = $creds;
+ // Skew the timestamp for worst case to avoid using stale credentials
+ $this->authSessionTimestamp = time() - ceil( $this->authTTL / 2 );
+ } else { // cache miss
+ list( $rcode, $rdesc, $rhdrs, $rbody, $rerr ) = $this->http->run( array(
+ 'method' => 'GET',
+ 'url' => "{$this->swiftAuthUrl}/v1.0",
+ 'headers' => array(
+ 'x-auth-user' => $this->swiftUser, 'x-auth-key' => $this->swiftKey )
+ ) );
- return $this->connContainerCache->get( $container, 'obj' );
+ if ( $rcode >= 200 && $rcode <= 299 ) { // OK
+ $this->authCreds = array(
+ 'auth_token' => $rhdrs['x-auth-token'],
+ 'storage_url' => $rhdrs['x-storage-url']
+ );
+ $this->authSessionTimestamp = time();
+ } elseif ( $rcode === 401 ) {
+ $this->onError( null, __METHOD__, array(), "Authentication failed.", $rcode );
+ $this->authErrorTimestamp = time();
+ return null;
+ } else {
+ $this->onError( null, __METHOD__, array(), "HTTP return code: $rcode", $rcode );
+ $this->authErrorTimestamp = time();
+ return null;
+ }
+ }
+ }
+ return $this->authCreds;
}
/**
- * Create a Swift container
- *
- * @param string $container Container name
- * @return CF_Container
- * @throws CloudFilesException
+ * @param array $creds From getAuthentication()
+ * @param string $container
+ * @param string $object
+ * @return array
*/
- protected function createContainer( $container ) {
- $conn = $this->getConnection(); // Swift proxy connection
- $contObj = $conn->create_container( $container );
- $this->connContainerCache->set( $container, 'obj', $contObj ); // cache
- return $contObj;
+ protected function storageUrl( array $creds, $container = null, $object = null ) {
+ $parts = array( $creds['storage_url'] );
+ if ( strlen( $container ) ) {
+ $parts[] = rawurlencode( $container );
+ }
+ if ( strlen( $object ) ) {
+ $parts[] = str_replace( "%2F", "/", rawurlencode( $object ) );
+ }
+ return implode( '/', $parts );
}
/**
- * Delete a Swift container
- *
- * @param string $container Container name
- * @throws CloudFilesException
+ * @param array $creds From getAuthentication()
+ * @return array
*/
- protected function deleteContainer( $container ) {
- $conn = $this->getConnection(); // Swift proxy connection
- $this->connContainerCache->clear( $container ); // purge
- $conn->delete_container( $container );
+ protected function authTokenHeaders( array $creds ) {
+ return array( 'x-auth-token' => $creds['auth_token'] );
}
- protected function doPrimeContainerCache( array $containerInfo ) {
- try {
- $conn = $this->getConnection(); // Swift proxy connection
- foreach ( $containerInfo as $container => $info ) {
- $contObj = new CF_Container( $conn->cfs_auth, $conn->cfs_http,
- $container, $info['count'], $info['bytes'] );
- $this->connContainerCache->set( $container, 'obj', $contObj );
- }
- } catch ( CloudFilesException $e ) { // some other exception?
- $this->handleException( $e, null, __METHOD__, array() );
- }
+ /**
+ * Get the cache key for a container
+ *
+ * @param string $username
+ * @return string
+ */
+ private function getCredsCacheKey( $username ) {
+ return wfMemcKey( 'backend', $this->getName(), 'usercreds', $username );
}
/**
* Log an unexpected exception for this backend.
* This also sets the Status object to have a fatal error.
*
- * @param Exception $e
- * @param Status $status null
+ * @param Status|null $status
* @param string $func
* @param array $params
+ * @param string $err Error string
+ * @param integer $code HTTP status
+ * @param string $desc HTTP status description
*/
- protected function handleException( Exception $e, $status, $func, array $params ) {
+ public function onError( $status, $func, array $params, $err = '', $code = 0, $desc = '' ) {
if ( $status instanceof Status ) {
- if ( $e instanceof AuthenticationException ) {
- $status->fatal( 'backend-fail-connect', $this->name );
- } else {
- $status->fatal( 'backend-fail-internal', $this->name );
- }
+ $status->fatal( 'backend-fail-internal', $this->name );
}
- if ( $e->getMessage() ) {
- trigger_error( "$func: " . $e->getMessage(), E_USER_WARNING );
- }
- if ( $e instanceof InvalidResponseException ) { // possibly a stale token
- $this->srvCache->delete( $this->getCredsCacheKey( $this->auth->username ) );
- $this->closeConnection(); // force a re-connect and re-auth next time
+ if ( $code == 401 ) { // possibly a stale token
+ $this->srvCache->delete( $this->getCredsCacheKey( $this->swiftUser ) );
}
wfDebugLog( 'SwiftBackend',
- get_class( $e ) . " in '{$func}' (given '" . FormatJson::encode( $params ) . "')" .
- ( $e->getMessage() ? ": {$e->getMessage()}" : "" )
+ "HTTP $code ($desc) in '{$func}' (given '" . FormatJson::encode( $params ) . "')" .
+ ( $err ? ": $err" : "" )
);
}
}
* @see FileBackendStoreOpHandle
*/
class SwiftFileOpHandle extends FileBackendStoreOpHandle {
- /** @var CF_Async_Op */
- public $cfOp;
-
- /** @var array */
- public $affectedObjects = array();
+ /** @var array List of Requests for MultiHttpClient */
+ public $httpOp;
+ /** @var Closure */
+ public $callback;
/**
* @param SwiftFileBackend $backend
- * @param array $params
- * @param string $call
- * @param CF_Async_Op $cfOp
+ * @param Closure $callback Function that takes (HTTP request array, status)
+ * @param array $httpOp MultiHttpClient op
*/
- public function __construct(
- SwiftFileBackend $backend, array $params, $call, CF_Async_Op $cfOp
- ) {
+ public function __construct( SwiftFileBackend $backend, Closure $callback, array $httpOp ) {
$this->backend = $backend;
- $this->params = $params;
- $this->call = $call;
- $this->cfOp = $cfOp;
+ $this->callback = $callback;
+ $this->httpOp = $httpOp;
}
}
return substr( current( $this->bufferIter ), $this->suffixStart, -1 );
}
- /**
- * @see SwiftFileBackendList::pageFromList()
- * @param string $container
- * @param string $dir
- * @param string $after
- * @param int $limit
- * @param array $params
- * @return array
- */
protected function pageFromList( $container, $dir, &$after, $limit, array $params ) {
return $this->backend->getDirListPageInternal( $container, $dir, $after, $limit, $params );
}
return $relPath;
}
- /**
- * @see SwiftFileBackendList::pageFromList()
- * @param string $container
- * @param string $dir
- * @param string $after
- * @param int $limit
- * @param array $params
- * @return array
- */
protected function pageFromList( $container, $dir, &$after, $limit, array $params ) {
return $this->backend->getFileListPageInternal( $container, $dir, $after, $limit, $params );
}
+++ /dev/null
-<?php
-/**
- * Version of LockManager based on using lock daemon servers.
- *
- * 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 LockManager
- */
-
-/**
- * Manage locks using a lock daemon server.
- *
- * Version of LockManager based on using lock daemon servers.
- * This is meant for multi-wiki systems that may share files.
- * All locks are non-blocking, which avoids deadlocks.
- *
- * All lock requests for a resource, identified by a hash string, will map
- * to one bucket. Each bucket maps to one or several peer servers, each
- * running LockServerDaemon.php, listening on a designated TCP port.
- * A majority of peers must agree for a lock to be acquired.
- *
- * @ingroup LockManager
- * @since 1.19
- */
-class LSLockManager extends QuorumLockManager {
- /** @var array Mapping of lock types to the type actually used */
- protected $lockTypeMap = array(
- self::LOCK_SH => self::LOCK_SH,
- self::LOCK_UW => self::LOCK_SH,
- self::LOCK_EX => self::LOCK_EX
- );
-
- /** @var array Map of server names to server config */
- protected $lockServers; // (server name => server config array)
-
- /** @var array Map Server connections (server name => resource) */
- protected $conns = array();
-
- protected $connTimeout; // float number of seconds
- protected $session = ''; // random SHA-1 string
-
- /**
- * Construct a new instance from configuration.
- *
- * @param array $config Paramaters include:
- * - lockServers : Associative array of server names to configuration.
- * Configuration is an associative array that includes:
- * - host : IP address/hostname
- * - port : TCP port
- * - authKey : Secret string the lock server uses
- * - srvsByBucket : Array of 1-16 consecutive integer keys, starting from 0,
- * each having an odd-numbered list of server names (peers) as values.
- * - connTimeout : Lock server connection attempt timeout. [optional]
- */
- public function __construct( array $config ) {
- parent::__construct( $config );
-
- $this->lockServers = $config['lockServers'];
- // Sanitize srvsByBucket config to prevent PHP errors
- $this->srvsByBucket = array_filter( $config['srvsByBucket'], 'is_array' );
- $this->srvsByBucket = array_values( $this->srvsByBucket ); // consecutive
-
- if ( isset( $config['connTimeout'] ) ) {
- $this->connTimeout = $config['connTimeout'];
- } else {
- $this->connTimeout = 3; // use some sane amount
- }
-
- $this->session = wfRandomString( 32 ); // 128 bits
- }
-
- /**
- * @see QuorumLockManager::getLocksOnServer()
- * @param string $lockSrv
- * @param array $paths
- * @param int $type
- * @return Status
- */
- protected function getLocksOnServer( $lockSrv, array $paths, $type ) {
- $status = Status::newGood();
-
- // Send out the command and get the response...
- $type = ( $type == self::LOCK_SH ) ? 'SH' : 'EX';
- $keys = array_unique( array_map( array( $this, 'sha1Base36Absolute' ), $paths ) );
- $response = $this->sendCommand( $lockSrv, 'ACQUIRE', $type, $keys );
-
- if ( $response !== 'ACQUIRED' ) {
- foreach ( $paths as $path ) {
- $status->fatal( 'lockmanager-fail-acquirelock', $path );
- }
- }
-
- return $status;
- }
-
- /**
- * @see QuorumLockManager::freeLocksOnServer()
- * @param string $lockSrv
- * @param array $paths
- * @param int $type
- * @return Status
- */
- protected function freeLocksOnServer( $lockSrv, array $paths, $type ) {
- $status = Status::newGood();
-
- // Send out the command and get the response...
- $type = ( $type == self::LOCK_SH ) ? 'SH' : 'EX';
- $keys = array_unique( array_map( array( $this, 'sha1Base36Absolute' ), $paths ) );
- $response = $this->sendCommand( $lockSrv, 'RELEASE', $type, $keys );
-
- if ( $response !== 'RELEASED' ) {
- foreach ( $paths as $path ) {
- $status->fatal( 'lockmanager-fail-releaselock', $path );
- }
- }
-
- return $status;
- }
-
- /**
- * @see QuorumLockManager::releaseAllLocks()
- * @return Status
- */
- protected function releaseAllLocks() {
- $status = Status::newGood();
-
- foreach ( $this->conns as $lockSrv => $conn ) {
- $response = $this->sendCommand( $lockSrv, 'RELEASE_ALL', '', array() );
- if ( $response !== 'RELEASED_ALL' ) {
- $status->fatal( 'lockmanager-fail-svr-release', $lockSrv );
- }
- }
-
- return $status;
- }
-
- /**
- * @see QuorumLockManager::isServerUp()
- * @param string $lockSrv
- * @return bool
- */
- protected function isServerUp( $lockSrv ) {
- return (bool)$this->getConnection( $lockSrv );
- }
-
- /**
- * Send a command and get back the response
- *
- * @param string $lockSrv
- * @param string $action
- * @param string $type
- * @param array $values
- * @return string|bool
- */
- protected function sendCommand( $lockSrv, $action, $type, $values ) {
- $conn = $this->getConnection( $lockSrv );
- if ( !$conn ) {
- return false; // no connection
- }
- $authKey = $this->lockServers[$lockSrv]['authKey'];
- // Build of the command as a flat string...
- $values = implode( '|', $values );
- $key = hash_hmac( 'sha1', "{$this->session}\n{$action}\n{$type}\n{$values}", $authKey );
- // Send out the command...
- if ( fwrite( $conn, "{$this->session}:$key:$action:$type:$values\n" ) === false ) {
- return false;
- }
- // Get the response...
- $response = fgets( $conn );
- if ( $response === false ) {
- return false;
- }
-
- return trim( $response );
- }
-
- /**
- * Get (or reuse) a connection to a lock server
- *
- * @param string $lockSrv
- * @return resource
- */
- protected function getConnection( $lockSrv ) {
- if ( !isset( $this->conns[$lockSrv] ) ) {
- $cfg = $this->lockServers[$lockSrv];
- wfSuppressWarnings();
- $errno = $errstr = '';
- $conn = fsockopen( $cfg['host'], $cfg['port'], $errno, $errstr, $this->connTimeout );
- wfRestoreWarnings();
- if ( $conn === false ) {
- return null;
- }
- $sec = floor( $this->connTimeout );
- $usec = floor( ( $this->connTimeout - floor( $this->connTimeout ) ) * 1e6 );
- stream_set_timeout( $conn, $sec, $usec );
- $this->conns[$lockSrv] = $conn;
- }
-
- return $this->conns[$lockSrv];
- }
-
- /**
- * Make sure remaining locks get cleared for sanity
- */
- function __destruct() {
- $this->releaseAllLocks();
- foreach ( $this->conns as $conn ) {
- fclose( $conn );
- }
- }
-}
*/
protected $abbrvThreshold;
+ /** @var string The URL of the repo's favicon, if any */
+ protected $favicon;
+
/**
* Factory functions for creating new files
* Override these in the base class
$optionalSettings = array(
'descBaseUrl', 'scriptDirUrl', 'articleUrl', 'fetchDescription',
'thumbScriptUrl', 'pathDisclosureProtection', 'descriptionCacheExpiry',
- 'scriptExtension'
+ 'scriptExtension', 'favicon'
);
foreach ( $optionalSettings as $var ) {
if ( isset( $info[$var] ) ) {
* ignoreRedirect: If true, do not follow file redirects
* private: If true, return restricted (deleted) files if the current
* user is allowed to view them. Otherwise, such files will not
- * be found.
+ * be found. If a User object, use that user instead of the current.
* @return File|bool False on failure
*/
public function findFile( $title, $options = array() ) {
if ( $img && $img->exists() ) {
if ( !$img->isDeleted( File::DELETED_FILE ) ) {
return $img; // always OK
- } elseif ( !empty( $options['private'] ) && $img->userCan( File::DELETED_FILE ) ) {
+ } elseif ( !empty( $options['private'] ) &&
+ $img->userCan( File::DELETED_FILE,
+ $options['private'] instanceof User ? $options['private'] : null
+ )
+ ) {
return $img;
}
}
if ( $img && $img->exists() ) {
if ( !$img->isDeleted( File::DELETED_FILE ) ) {
return $img; // always OK
- } elseif ( !empty( $options['private'] ) && $img->userCan( File::DELETED_FILE ) ) {
+ } elseif ( !empty( $options['private'] ) &&
+ $img->userCan( File::DELETED_FILE,
+ $options['private'] instanceof User ? $options['private'] : null
+ )
+ ) {
return $img;
}
}
$optionalSettings = array(
'url', 'thumbUrl', 'initialCapital', 'descBaseUrl', 'scriptDirUrl', 'articleUrl',
- 'fetchDescription', 'descriptionCacheExpiry', 'scriptExtension'
+ 'fetchDescription', 'descriptionCacheExpiry', 'scriptExtension', 'favicon'
);
foreach ( $optionalSettings as $k ) {
if ( isset( $this->$k ) ) {
$info['articlepath'] = $general['articlepath'];
$info['server'] = $general['server'];
+
+ if ( isset( $general['favicon'] ) ) {
+ $info['favicon'] = $general['favicon'];
+ }
}
return $info;
protected function assertWritableRepo() {
throw new MWException( get_class( $this ) . ': write operations are not supported.' );
}
+
+ /**
+ * Return information about the repository.
+ *
+ * @return array
+ * @since 1.22
+ */
+ function getInfo() {
+ return FileRepo::getInfo();
+ }
}
$fileMatchesSearch = function( File $file, array $search ) {
// Note: file name comparison done elsewhere (to handle redirects)
+ $user = ( !empty( $search['private'] ) && $search['private'] instanceof User )
+ ? $search['private']
+ : null;
return (
$file->exists() &&
(
( !empty( $search['time'] ) && $search['time'] === $file->getTimestamp() )
) &&
( !empty( $search['private'] ) || !$file->isDeleted( File::DELETED_FILE ) ) &&
- $file->userCan( File::DELETED_FILE )
+ $file->userCan( File::DELETED_FILE, $user )
);
};
// Query old image table
$oiConds = array(); // WHERE clause array for each file
foreach ( $searchSet as $dbKey => $search ) {
- if ( isset( $search['params']['time'] ) ) {
+ if ( isset( $search['time'] ) ) {
$oiConds[] = $dbr->makeList(
array(
'oi_name' => $this->getNameFromTitle( File::normalizeTitle( $dbKey ) ),
- 'oi_timestamp' => $dbr->timestamp( $search['params']['time'] )
+ 'oi_timestamp' => $dbr->timestamp( $search['time'] )
),
LIST_AND
);
$wgMemc->set( $memcKey, ' PURGED', 12 );
}
}
+
+ /**
+ * Return information about the repository.
+ *
+ * @return array
+ * @since 1.22
+ */
+ function getInfo() {
+ global $wgFavicon;
+ return array_merge( parent::getInfo(), array(
+ 'favicon' => wfExpandUrl( $wgFavicon ),
+ ) );
+ }
}
* the rest of the file classes.
* @param string $type 'text' or 'id'
* @return int|string
+ * @throws MWException
*/
public function getUser( $type = 'text' ) {
$this->load();
} elseif ( $type == 'id' ) {
return $this->user;
}
+
+ throw new MWException( "Unknown type '$type'." );
+
}
/**
public function getCommonMetaArray() {
$handler = $this->getHandler();
+ if ( !$handler ) {
+ return false;
+ }
return $handler->getCommonMetaArray( $this );
}
LinksUpdate::queueRecursiveJobsForTable( $this->getTitle(), 'imagelinks' );
}
- # Invalidate cache for all pages that redirects on this page
- $redirs = $this->getTitle()->getRedirectsHere();
-
- foreach ( $redirs as $redir ) {
- if ( !$reupload && $redir->getNamespace() === NS_FILE ) {
- LinksUpdate::queueRecursiveJobsForTable( $redir, 'imagelinks' );
- }
- $update = new HTMLCacheUpdate( $redir, 'imagelinks' );
- $update->doUpdate();
- }
-
wfProfileOut( __METHOD__ );
return true;
$attr = array(
'class' => 'mw-htmlform-submit ' . $this->mClass,
'id' => $this->mID,
- );
-
- if ( !empty( $this->mParams['disabled'] ) ) {
- $attr['disabled'] = 'disabled';
- }
+ ) + $this->getAttributes( array( 'disabled', 'tabindex' ) );
return Html::input( $this->mName, $value, $this->buttonType, $attr );
}
$attr = $this->getTooltipAndAccessKey();
$attr['id'] = $this->mID;
- if ( !empty( $this->mParams['disabled'] ) ) {
- $attr['disabled'] = 'disabled';
- }
+ $attr += $this->getAttributes( array( 'disabled', 'tabindex' ) );
if ( $this->mClass !== '' ) {
$attr['class'] = $this->mClass;
function getInputHTML( $value ) {
$html = '';
$tableContents = '';
- $attribs = array();
$rows = $this->mParams['rows'];
$columns = $this->mParams['columns'];
- // If the disabled param is set, disable all the options
- if ( !empty( $this->mParams['disabled'] ) ) {
- $attribs['disabled'] = 'disabled';
- }
+ $attribs = $this->getAttributes( array( 'disabled', 'tabindex' ) );
// Build the column headers
$headerContents = Html::rawElement( 'td', array(), ' ' );
if ( $this->isVForm() ) {
// mw-ui-block is necessary because the buttons aren't necessarily in an
// immediate child div of the vform.
- array_push( $attribs['class'], 'mw-ui-button', 'mw-ui-big', 'mw-ui-primary', 'mw-ui-block' );
+ // TODO Let client specify if the primary submit button is progressive or destructive
+ array_push( $attribs['class'], 'mw-ui-button', 'mw-ui-big', 'mw-ui-constructive', 'mw-ui-block' );
}
$html .= Xml::submitButton( $this->getSubmitText(), $attribs ) . "\n";
return Linker::tooltipAndAccesskeyAttribs( $this->mParams['tooltip'] );
}
+ /**
+ * Returns the given attributes from the parameters
+ *
+ * @param array $list List of attributes to get
+ * @return array Attributes
+ */
+ public function getAttributes( array $list ) {
+ static $boolAttribs = array( 'disabled', 'required', 'autofocus', 'multiple', 'readonly' );
+
+ $ret = array();
+
+ foreach( $list as $key ) {
+ if ( in_array( $key, $boolAttribs ) ) {
+ if ( !empty( $this->mParams[$key] ) ) {
+ $ret[$key] = '';
+ }
+ } elseif ( isset( $this->mParams[$key] ) ) {
+ $ret[$key] = $this->mParams[$key];
+ }
+ }
+
+ return $ret;
+ }
+
/**
* flatten an array of options to a single array, for instance,
* a set of "<options>" inside "<optgroups>".
function formatOptions( $options, $value ) {
$html = '';
- $attribs = array();
-
- if ( !empty( $this->mParams['disabled'] ) ) {
- $attribs['disabled'] = 'disabled';
- }
+ $attribs = $this->getAttributes( array( 'disabled', 'tabindex' ) );
foreach ( $options as $label => $info ) {
if ( is_array( $info ) ) {
function formatOptions( $options, $value ) {
$html = '';
- $attribs = array();
- if ( !empty( $this->mParams['disabled'] ) ) {
- $attribs['disabled'] = 'disabled';
- }
+ $attribs = $this->getAttributes( array( 'disabled', 'tabindex' ) );
# @todo Should this produce an unordered list perhaps?
foreach ( $options as $label => $info ) {
$textAttribs['class'] = $this->mClass;
}
- foreach ( array( 'required', 'autofocus', 'multiple', 'disabled' ) as $param ) {
- if ( isset( $this->mParams[$param] ) ) {
- $textAttribs[$param] = '';
- }
- }
+ $allowedParams = array(
+ 'required',
+ 'autofocus',
+ 'multiple',
+ 'disabled',
+ 'tabindex'
+ );
+
+ $textAttribs += $this->getAttributes( $allowedParams );
$textbox = Html::input( $this->mName . '-other', $value[2], 'text', $textAttribs );
$select->setAttribute( 'disabled', 'disabled' );
}
+ if ( isset( $this->mParams['tabindex'] ) ) {
+ $select->setAttribute( 'tabindex', $this->mParams['tabindex'] );
+ }
+
if ( $this->mClass !== '' ) {
$select->setAttribute( 'class', $this->mClass );
}
$tbAttribs['disabled'] = 'disabled';
}
+ if ( isset( $this->mParams['tabindex'] ) ) {
+ $select->setAttribute( 'tabindex', $this->mParams['tabindex'] );
+ $tbAttribs['tabindex'] = $this->mParams['tabindex'];
+ }
+
$select = $select->getHTML();
if ( isset( $this->mParams['maxlength'] ) ) {
$attribs['class'] = $this->mClass;
}
- if ( !empty( $this->mParams['disabled'] ) ) {
- $attribs['disabled'] = 'disabled';
- }
-
- if ( !empty( $this->mParams['readonly'] ) ) {
- $attribs['readonly'] = 'readonly';
- }
-
- if ( isset( $this->mParams['placeholder'] ) ) {
- $attribs['placeholder'] = $this->mParams['placeholder'];
- }
-
- foreach ( array( 'required', 'autofocus' ) as $param ) {
- if ( isset( $this->mParams[$param] ) ) {
- $attribs[$param] = '';
- }
- }
+ $allowedParams = array(
+ 'placeholder',
+ 'tabindex',
+ 'disabled',
+ 'readonly',
+ 'required',
+ 'autofocus'
+ );
+
+ $attribs += $this->getAttributes( $allowedParams );
return Html::element( 'textarea', $attribs, $value );
}
$attribs['class'] = $this->mClass;
}
- if ( !empty( $this->mParams['disabled'] ) ) {
- $attribs['disabled'] = 'disabled';
- }
-
# @todo Enforce pattern, step, required, readonly on the server side as
# well
$allowedParams = array(
'step',
'placeholder',
'list',
- 'maxlength'
+ 'maxlength',
+ 'tabindex',
+ 'disabled',
+ 'required',
+ 'autofocus',
+ 'multiple',
+ 'readonly'
);
- foreach ( $allowedParams as $param ) {
- if ( isset( $this->mParams[$param] ) ) {
- $attribs[$param] = $this->mParams[$param];
- }
- }
- foreach ( array( 'required', 'autofocus', 'multiple', 'readonly' ) as $param ) {
- if ( isset( $this->mParams[$param] ) ) {
- $attribs[$param] = '';
- }
- }
+ $attribs += $this->getAttributes( $allowedParams );
# Implement tiny differences between some field variants
# here, rather than creating a new class for each one which
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'''.
+This program is distributed in the hope that it will be useful, but <strong>without any warranty</strong>; without even the implied warranty of <strong>merchantability</strong> or <strong>fitness for a particular purpose</strong>.
See the GNU General Public License for more details.
You should have received <doclink href=Copying>a copy of the GNU General Public License</doclink> along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA, or [http://www.gnu.org/copyleft/gpl.html read it online].",
However, MediaWiki requires PHP $2 or higher.',
'config-unicode-using-utf8' => 'Using Brion Vibber\'s utf8_normalize.so for Unicode normalization.',
'config-unicode-using-intl' => 'Using the [http://pecl.php.net/intl intl PECL extension] for Unicode normalization.',
- 'config-unicode-pure-php-warning' => "'''Warning:''' The [http://pecl.php.net/intl intl PECL extension] is not available to handle Unicode normalization, falling back to slow pure-PHP implementation.
+ 'config-unicode-pure-php-warning' => "<strong>Warning:</strong> The [http://pecl.php.net/intl intl PECL extension] is not available to handle Unicode normalization, falling back to slow pure-PHP implementation.
If you run a high-traffic site, you should read a little on [//www.mediawiki.org/wiki/Unicode_normalization_considerations Unicode normalization].",
- 'config-unicode-update-warning' => "'''Warning:''' The installed version of the Unicode normalization wrapper uses an older version of [http://site.icu-project.org/ the ICU project's] library.
+ 'config-unicode-update-warning' => "<strong>Warning:</strong> The installed version of the Unicode normalization wrapper uses an older version of [http://site.icu-project.org/ the ICU project's] library.
You should [//www.mediawiki.org/wiki/Unicode_normalization_considerations upgrade] if you are at all concerned about using Unicode.",
'config-no-db' => 'Could not find a suitable database driver! You need to install a database driver for PHP.
The following database types are supported: $1.
-If you are on shared hosting, ask your hosting provider to install a suitable database driver.
-If you compiled PHP yourself, reconfigure it with a database client enabled, for example using <code>./configure --with-mysql</code>.
-If you installed PHP from a Debian or Ubuntu package, then you also need install the php5-mysql module.',
- 'config-outdated-sqlite' => "'''Warning:''' you have SQLite $1, which is lower than minimum required version $2. SQLite will be unavailable.",
- 'config-no-fts3' => "'''Warning:''' SQLite is compiled without the [//sqlite.org/fts3.html FTS3 module], search features will be unavailable on this backend.",
- 'config-register-globals' => "'''Warning: PHP's <code>[http://php.net/register_globals register_globals]</code> option is enabled.'''
-'''Disable it if you can.'''
+If you compiled PHP yourself, reconfigure it with a database client enabled, for example, using <code>./configure --with-mysqli</code>.
+If you installed PHP from a Debian or Ubuntu package, then you also need to install, for example, the <code>php5-mysql</code> package.',
+ 'config-outdated-sqlite' => "<strong>Warning:</strong> you have SQLite $1, which is lower than minimum required version $2. SQLite will be unavailable.",
+ 'config-no-fts3' => "<strong>Warning:</strong> SQLite is compiled without the [//sqlite.org/fts3.html FTS3 module], search features will be unavailable on this backend.",
+ 'config-register-globals' => "<strong>Warning: PHP's <code>[http://php.net/register_globals register_globals]</code> option is enabled.
+Disable it if you can.</strong>
MediaWiki will work, but your server is exposed to potential security vulnerabilities.",
- 'config-magic-quotes-runtime' => "'''Fatal: [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-runtime magic_quotes_runtime] is active!'''
+ 'config-magic-quotes-runtime' => "<strong>Fatal: [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-runtime magic_quotes_runtime] is active!'</strong>
This option corrupts data input unpredictably.
You cannot install or use MediaWiki unless this option is disabled.",
- 'config-magic-quotes-sybase' => "'''Fatal: [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-sybase magic_quotes_sybase] is active!'''
+ 'config-magic-quotes-sybase' => "<strong>Fatal: [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-sybase magic_quotes_sybase] is active!</strong>
This option corrupts data input unpredictably.
You cannot install or use MediaWiki unless this option is disabled.",
- 'config-mbstring' => "'''Fatal: [http://www.php.net/manual/en/ref.mbstring.php#mbstring.overload mbstring.func_overload] is active!'''
+ 'config-mbstring' => "<strong>Fatal: [http://www.php.net/manual/en/ref.mbstring.php#mbstring.overload mbstring.func_overload] is active!</strong>
This option causes errors and may corrupt data unpredictably.
You cannot install or use MediaWiki unless this option is disabled.",
- 'config-ze1' => "'''Fatal: [http://www.php.net/manual/en/ini.core.php zend.ze1_compatibility_mode] is active!'''
-This option causes horrible bugs with MediaWiki.
-You cannot install or use MediaWiki unless this option is disabled.",
- 'config-safe-mode' => "'''Warning:''' PHP's [http://www.php.net/features.safe-mode safe mode] is active.
+ 'config-safe-mode' => "<strong>Warning:</strong> PHP's [http://www.php.net/features.safe-mode safe mode] is active.
It may cause problems, particularly if using file uploads and <code>math</code> support.",
'config-xml-bad' => "PHP's XML module is missing.
MediaWiki requires functions in this module and will not work in this configuration.
If you're running Mandrake, install the php-xml package.",
- 'config-pcre' => 'The PCRE support module appears to be missing.
-MediaWiki requires the Perl-compatible regular expression functions to work.',
- 'config-pcre-no-utf8' => "'''Fatal:''' PHP's PCRE module seems to be compiled without PCRE_UTF8 support.
+ 'config-pcre-old' => "<strong>Fatal:</strong> PCRE $1 or later is required.
+Your PHP binary is linked with PCRE $2.
+[https://www.mediawiki.org/wiki/Manual:Errors_and_symptoms/PCRE More information].",
+ 'config-pcre-no-utf8' => "<strong>Fatal:</strong> PHP's PCRE module seems to be compiled without PCRE_UTF8 support.
MediaWiki requires UTF-8 support to function correctly.",
'config-memory-raised' => "PHP's <code>memory_limit</code> is $1, raised to $2.",
- 'config-memory-bad' => "'''Warning:''' PHP's <code>memory_limit</code> is $1.
+ 'config-memory-bad' => "<strong>Warning:</strong> PHP's <code>memory_limit</code> is $1.
This is probably too low.
The installation may fail!",
- 'config-ctype' => "'''Fatal:''' PHP must be compiled with support for the [http://www.php.net/manual/en/ctype.installation.php Ctype extension].",
- 'config-json' => "'''Fatal:''' PHP was compiled without JSON support.
+ 'config-ctype' => "<strong>Fatal:</strong> PHP must be compiled with support for the [http://www.php.net/manual/en/ctype.installation.php Ctype extension].",
+ 'config-json' => "<strong>Fatal:</strong> PHP was compiled without JSON support.
You must install either the PHP JSON extension or the [http://pecl.php.net/package/jsonc PECL jsonc] extension before installing MediaWiki.
* The PHP extension is included in Red Hat Enterprise Linux (CentOS) 5 and 6, though must be enabled in <code>/etc/php.ini</code> or <code>/etc/php.d/json.ini</code>.
* Some Linux distributions released after May 2013 omit the PHP extension, instead packaging the PECL extension as <code>php5-json</code> or <code>php-pecl-jsonc</code>.",
'config-xcache' => '[http://xcache.lighttpd.net/ XCache] is installed',
'config-apc' => '[http://www.php.net/apc APC] is installed',
'config-wincache' => '[http://www.iis.net/download/WinCacheForPhp WinCache] is installed',
- 'config-no-cache' => "'''Warning:''' Could not find [http://www.php.net/apc APC], [http://xcache.lighttpd.net/ XCache] or [http://www.iis.net/download/WinCacheForPhp WinCache].
+ 'config-no-cache' => "<strong>Warning:</strong> Could not find [http://www.php.net/apc APC], [http://xcache.lighttpd.net/ XCache] or [http://www.iis.net/download/WinCacheForPhp WinCache].
Object caching is not enabled.",
- 'config-mod-security' => "'''Warning:''' Your web server has [http://modsecurity.org/ mod_security] enabled. If misconfigured, it can cause problems for MediaWiki or other software that allows users to post arbitrary content.
+ 'config-mod-security' => "<strong>Warning:</strong> Your web server has [http://modsecurity.org/ mod_security] enabled. If misconfigured, it can cause problems for MediaWiki or other software that allows users to post arbitrary content.
Refer to [http://modsecurity.org/documentation/ mod_security documentation] or contact your host's support if you encounter random errors.",
'config-diff3-bad' => 'GNU diff3 not found.',
'config-git' => 'Found the Git version control software: <code>$1</code>.',
Image thumbnailing will be enabled if you enable uploads.',
'config-no-scaling' => 'Could not find GD library or ImageMagick.
Image thumbnailing will be disabled.',
- 'config-no-uri' => "'''Error:''' Could not determine the current URI.
+ 'config-no-uri' => "<strong>Error:</strong> Could not determine the current URI.
Installation aborted.",
- 'config-no-cli-uri' => "'''Warning:''' No --scriptpath specified, using default: <code>$1</code>.",
+ 'config-no-cli-uri' => "<strong>Warning:</strong> No --scriptpath specified, using default: <code>$1</code>.",
'config-using-server' => 'Using server name "<nowiki>$1</nowiki>".',
'config-using-uri' => 'Using server URL "<nowiki>$1$2</nowiki>".',
- 'config-uploads-not-safe' => "'''Warning:''' Your default directory for uploads <code>$1</code> is vulnerable to arbitrary scripts execution.
+ 'config-uploads-not-safe' => "<strong>Warning:</strong> Your default directory for uploads <code>$1</code> is vulnerable to arbitrary scripts execution.
Although MediaWiki checks all uploaded files for security threats, it is highly recommended to [//www.mediawiki.org/wiki/Manual:Security#Upload_security close this security vulnerability] before enabling uploads.",
- 'config-no-cli-uploads-check' => "'''Warning:''' Your default directory for uploads (<code>$1</code>) is not checked for vulnerability
+ 'config-no-cli-uploads-check' => "<strong>Warning:</strong> Your default directory for uploads (<code>$1</code>) is not checked for vulnerability
to arbitrary script execution during the CLI install.",
- 'config-brokenlibxml' => 'Your system has a combination of PHP and libxml2 versions which is buggy and can cause hidden data corruption in MediaWiki and other web applications.
-Upgrade to PHP 5.2.9 or later and libxml2 2.7.3 or later ([//bugs.php.net/bug.php?id=45996 bug filed with PHP]).
-Installation aborted.',
- 'config-using531' => 'MediaWiki cannot be used with PHP $1 due to a bug involving reference parameters to <code>__call()</code>.
-Upgrade to PHP 5.3.2 or higher, or downgrade to PHP 5.3.0 to resolve this.
+ 'config-brokenlibxml' => 'Your system has a combination of PHP and libxml2 versions that is buggy and can cause hidden data corruption in MediaWiki and other web applications.
+Upgrade to libxml2 2.7.3 or later ([https://bugs.php.net/bug.php?id=45996 bug filed with PHP]).
Installation aborted.',
'config-suhosin-max-value-length' => "Suhosin is installed and limits the GET parameter <code>length</code> to $1 bytes.
MediaWiki's ResourceLoader component will work around this limit, but that will degrade performance.
'config-charset-mysql5-binary' => 'MySQL 4.1/5.0 binary',
'config-charset-mysql5' => 'MySQL 4.1/5.0 UTF-8',
'config-charset-mysql4' => 'MySQL 4.0 backwards-compatible UTF-8',
- 'config-charset-help' => "'''Warning:''' If you use '''backwards-compatible UTF-8''' on MySQL 4.1+, and subsequently back up the database with <code>mysqldump</code>, it may destroy all non-ASCII characters, irreversibly corrupting your backups!
+ 'config-charset-help' => "<strong>Warning:</strong> If you use <strong>backwards-compatible UTF-8</strong> on MySQL 4.1+, and subsequently back up the database with <code>mysqldump</code>, it may destroy all non-ASCII characters, irreversibly corrupting your backups!
-In '''binary mode''', MediaWiki stores UTF-8 text to the database in binary fields.
+In <strong>binary mode</strong>, MediaWiki stores UTF-8 text to the database in binary fields.
This is more efficient than MySQL's UTF-8 mode, and allows you to use the full range of Unicode characters.
-In '''UTF-8 mode''', MySQL will know what character set your data is in, and can present and convert it appropriately,
+In <strong>UTF-8 mode</strong>, MySQL will know what character set your data is in, and can present and convert it appropriately,
but it will not let you store characters above the [//en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes Basic Multilingual Plane].",
'config-mysql-old' => 'MySQL $1 or later is required. You have $2.',
'config-db-port' => 'Database port:',
'config-db-schema' => 'Schema for MediaWiki:',
'config-db-schema-help' => 'This schema will usually be fine.
Only change it if you know you need to.',
- 'config-pg-test-error' => "Cannot connect to database '''$1''': $2",
+ 'config-pg-test-error' => "Cannot connect to database <strong>$1</strong>: $2",
'config-sqlite-dir' => 'SQLite data directory:',
'config-sqlite-dir-help' => "SQLite stores all data in a single file.
The directory you provide must be writable by the webserver during installation.
-It should '''not''' be accessible via the web, this is why we're not putting it where your PHP files are.
+It should <strong>not</strong> be accessible via the web, this is why we're not putting it where your PHP files are.
The installer will write a <code>.htaccess</code> file along with it, but if that fails someone can gain access to your raw database.
That includes raw user data (email addresses, hashed passwords) as well as deleted revisions and other restricted data on the wiki.
Consider putting the database somewhere else altogether, for example in <code>/var/lib/mediawiki/yourwiki</code>.",
'config-oracle-def-ts' => 'Default tablespace:',
'config-oracle-temp-ts' => 'Temporary tablespace:',
- 'config-type-mysql' => 'MySQL',
+ 'config-type-mysql' => 'MySQL (or compatible)',
'config-type-postgres' => 'PostgreSQL',
'config-type-sqlite' => 'SQLite',
'config-type-oracle' => 'Oracle',
$1
If you do not see the database system you are trying to use listed below, then follow the instructions linked above to enable support.',
- 'config-support-mysql' => '* $1 is the primary target for MediaWiki and is best supported ([http://www.php.net/manual/en/mysql.installation.php how to compile PHP with MySQL support])',
- 'config-support-postgres' => '* $1 is a popular open source database system as an alternative to MySQL ([http://www.php.net/manual/en/pgsql.installation.php how to compile PHP with PostgreSQL support]). There may be some minor outstanding bugs, and it is not recommended for use in a production environment.',
- 'config-support-sqlite' => '* $1 is a lightweight database system which is very well supported. ([http://www.php.net/manual/en/pdo.installation.php How to compile PHP with SQLite support], uses PDO)',
- 'config-support-oracle' => '* $1 is a commercial enterprise database. ([http://www.php.net/manual/en/oci8.installation.php How to compile PHP with OCI8 support])',
+ 'config-dbsupport-mysql' => '* [{{int:version-db-mysql-url}} MySQL] is the primary target for MediaWiki and is best supported. MediaWiki also works with [{{int:version-db-mariadb-url}} MariaDB] and [{{int:version-db-percona-url}} Percona Server], which are MySQL compatible. ([http://www.php.net/manual/en/mysqli.installation.php How to compile PHP with MySQL support])',
+ 'config-dbsupport-postgres' => '* [{{int:version-db-postgres-url}} PostgreSQL] is a popular open source database system as an alternative to MySQL. There may be some minor outstanding bugs, and it is not recommended for use in a production environment. ([http://www.php.net/manual/en/pgsql.installation.php How to compile PHP with PostgreSQL support])',
+ 'config-dbsupport-sqlite' => '* [{{int:version-db-sqlite-url}} SQLite] is a lightweight database system that is very well supported. ([http://www.php.net/manual/en/pdo.installation.php How to compile PHP with SQLite support], uses PDO)',
+ 'config-dbsupport-oracle' => '* [{{int:version-db-oracle-url}} Oracle] is a commercial enterprise database. ([http://www.php.net/manual/en/oci8.installation.php How to compile PHP with OCI8 support])',
'config-header-mysql' => 'MySQL settings',
'config-header-postgres' => 'PostgreSQL settings',
'config-header-sqlite' => 'SQLite settings',
'config-sqlite-cant-create-db' => 'Could not create database file <code>$1</code>.',
'config-sqlite-fts3-downgrade' => 'PHP is missing FTS3 support, downgrading tables',
'config-can-upgrade' => "There are MediaWiki tables in this database.
-To upgrade them to MediaWiki $1, click '''Continue'''.",
+To upgrade them to MediaWiki $1, click <strong>Continue</strong>.",
'config-upgrade-done' => "Upgrade complete.
You can now [$1 start using your wiki].
If you want to regenerate your <code>LocalSettings.php</code> file, click the button below.
-This is '''not recommended''' unless you are having problems with your wiki.",
+This is <strong>not recommended</strong> unless you are having problems with your wiki.",
'config-upgrade-done-no-regenerate' => "Upgrade complete.
You can now [$1 start using your wiki].",
'config-regenerate' => 'Regenerate LocalSettings.php →',
'config-show-table-status' => '<code>SHOW TABLE STATUS</code> query failed!',
- 'config-unknown-collation' => "'''Warning:''' Database is using unrecognized collation.",
+ 'config-unknown-collation' => "<strong>Warning:</strong> Database is using unrecognized collation.",
'config-db-web-account' => 'Database account for web access',
'config-db-web-help' => 'Select the username and password that the web server will use to connect to the database server, during ordinary operation of the wiki.',
'config-db-web-account-same' => 'Use the same account as for installation',
'config-mysql-engine' => 'Storage engine:',
'config-mysql-innodb' => 'InnoDB',
'config-mysql-myisam' => 'MyISAM',
- 'config-mysql-myisam-dep' => "'''Warning:''' You have selected MyISAM as storage engine for MySQL, which is not recommended for use with MediaWiki, because:
+ 'config-mysql-myisam-dep' => "<strong>Warning:</strong> You have selected MyISAM as storage engine for MySQL, which is not recommended for use with MediaWiki, because:
* it barely supports concurrency due to table locking
* it is more prone to corruption than other engines
* the MediaWiki codebase does not always handle MyISAM as it should
If your MySQL installation supports InnoDB, it is highly recommended that you choose that instead.
If your MySQL installation does not support InnoDB, maybe it's time for an upgrade.",
- 'config-mysql-only-myisam-dep' => "'''Warning:''' MyISAM is the only available storage engine for MySQL on this machine, and this is not recommended for use with MediaWiki, because:
+ 'config-mysql-only-myisam-dep' => "<strong>Warning:</strong> MyISAM is the only available storage engine for MySQL on this machine, and this is not recommended for use with MediaWiki, because:
* it barely supports concurrency due to table locking
* it is more prone to corruption than other engines
* the MediaWiki codebase does not always handle MyISAM as it should
Your MySQL installation does not support InnoDB, maybe it's time for an upgrade.",
- 'config-mysql-engine-help' => "'''InnoDB''' is almost always the best option, since it has good concurrency support.
+ 'config-mysql-engine-help' => "<strong>InnoDB</strong> is almost always the best option, since it has good concurrency support.
-'''MyISAM''' may be faster in single-user or read-only installations.
+<strong>MyISAM</strong> may be faster in single-user or read-only installations.
MyISAM databases tend to get corrupted more often than InnoDB databases.",
'config-mysql-charset' => 'Database character set:',
'config-mysql-binary' => 'Binary',
'config-mysql-utf8' => 'UTF-8',
- 'config-mysql-charset-help' => "In '''binary mode''', MediaWiki stores UTF-8 text to the database in binary fields.
+ 'config-mysql-charset-help' => "In <strong>binary mode</strong>, MediaWiki stores UTF-8 text to the database in binary fields.
This is more efficient than MySQL's UTF-8 mode, and allows you to use the full range of Unicode characters.
-In '''UTF-8 mode''', MySQL will know what character set your data is in, and can present and convert it appropriately, but it will not let you store characters above the [//en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes Basic Multilingual Plane].",
+In <strong>UTF-8 mode</strong>, MySQL will know what character set your data is in, and can present and convert it appropriately, but it will not let you store characters above the [//en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes Basic Multilingual Plane].",
'config-site-name' => 'Name of wiki:',
'config-site-name-help' => "This will appear in the title bar of the browser and in various other places.",
However, many have found MediaWiki to be useful in a wide variety of roles, and sometimes it is not easy to convince everyone of the benefits of the wiki way.
So you have the choice.
-The '''{{int:config-profile-wiki}}''' model allows anyone to edit, without even logging in.
-A wiki with '''{{int:config-profile-no-anon}}''' provides extra accountability, but may deter casual contributors.
+The <strong>{{int:config-profile-wiki}}</strong> model allows anyone to edit, without even logging in.
+A wiki with <strong>{{int:config-profile-no-anon}}</strong> provides extra accountability, but may deter casual contributors.
-The '''{{int:config-profile-fishbowl}}''' scenario allows approved users to edit, but the public can view the pages, including history.
-A '''{{int:config-profile-private}}''' only allows approved users to view pages, with the same group allowed to edit.
+The <strong>{{int:config-profile-fishbowl}}</strong> scenario allows approved users to edit, but the public can view the pages, including history.
+A <strong>{{int:config-profile-private}}</strong> only allows approved users to view pages, with the same group allowed to edit.
More complex user rights configurations are available after installation, see the [//www.mediawiki.org/wiki/Manual:User_rights relevant manual entry].",
'config-license' => 'Copyright and license:',
This helps to create a sense of community ownership and encourages long-term contribution.
It is not generally necessary for a private or corporate wiki.
-If you want to be able to use text from Wikipedia, and you want Wikipedia to be able to accept text copied from your wiki, you should choose '''Creative Commons Attribution Share Alike'''.
+If you want to be able to use text from Wikipedia, and you want Wikipedia to be able to accept text copied from your wiki, you should choose <strong>Creative Commons Attribution Share Alike</strong>.
Wikipedia previously used the GNU Free Documentation License.
The GFDL is a valid license, but it is difficult to understand.
'config-email-auth' => 'Enable email authentication',
'config-email-auth-help' => "If this option is enabled, users have to confirm their email address using a link sent to them whenever they set or change it.
Only authenticated email addresses can receive emails from other users or change notification emails.
-Setting this option is '''recommended''' for public wikis because of potential abuse of the email features.",
+Setting this option is <strong>recommended</strong> for public wikis because of potential abuse of the email features.",
'config-email-sender' => 'Return email address:',
'config-email-sender-help' => 'Enter the email address to use as the return address on outbound email.
This is where bounces will be sent.
'config-extensions-help' => 'The extensions listed above were detected in your <code>./extensions</code> directory.
They may require additional configuration, but you can enable them now.',
- 'config-install-alreadydone' => "'''Warning:''' You seem to have already installed MediaWiki and are trying to install it again.
+ 'config-install-alreadydone' => "<strong>Warning:</strong> You seem to have already installed MediaWiki and are trying to install it again.
Please proceed to the next page.",
'config-install-begin' => 'By pressing "{{int:config-continue}}", you will begin the installation of MediaWiki.
If you still want to make changes, press "{{int:config-back}}".',
'config-install-user-missing-create' => 'The specified user "$1" does not exist.
Please click the "create account" checkbox below if you want to create it.',
'config-install-tables' => 'Creating tables',
- 'config-install-tables-exist' => "'''Warning:''' MediaWiki tables seem to already exist.
+ 'config-install-tables-exist' => "<strong>Warning:</strong> MediaWiki tables seem to already exist.
Skipping creation.",
- 'config-install-tables-failed' => "'''Error:''' Table creation failed with the following error: $1",
+ 'config-install-tables-failed' => "<strong>Error:</strong> Table creation failed with the following error: $1",
'config-install-interwiki' => 'Populating default interwiki table',
'config-install-interwiki-list' => 'Could not read file <code>interwiki.list</code>.',
- 'config-install-interwiki-exists' => "'''Warning:''' The interwiki table seems to already have entries.
+ 'config-install-interwiki-exists' => "<strong>Warning:</strong> The interwiki table seems to already have entries.
Skipping default list.",
'config-install-stats' => 'Initializing statistics',
'config-install-keys' => 'Generating secret keys',
- 'config-insecure-keys' => "'''Warning:''' {{PLURAL:$2|A secure key|Secure keys}} ($1) generated during installation {{PLURAL:$2|is|are}} not completely safe. Consider changing {{PLURAL:$2|it|them}} manually.",
+ 'config-insecure-keys' => "<strong>Warning:</strong> {{PLURAL:$2|A secure key|Secure keys}} ($1) generated during installation {{PLURAL:$2|is|are}} not completely safe. Consider changing {{PLURAL:$2|it|them}} manually.",
'config-install-sysop' => 'Creating administrator user account',
'config-install-subscribe-fail' => 'Unable to subscribe to mediawiki-announce: $1',
'config-install-subscribe-notpossible' => 'cURL is not installed and allow_url_fopen is not available.',
'config-install-mainpage' => 'Creating main page with default content',
'config-install-extension-tables' => 'Creating tables for enabled extensions',
'config-install-mainpage-failed' => 'Could not insert main page: $1',
- 'config-install-done' => "'''Congratulations!'''
+ 'config-install-done' => "<strong>Congratulations!</strong>
You have successfully installed MediaWiki.
The installer has generated a <code>LocalSettings.php</code> file.
$3
-'''Note:''' If you do not do this now, this generated configuration file will not be available to you later if you exit the installation without downloading it.
+<strong>Note:</strong> If you do not do this now, this generated configuration file will not be available to you later if you exit the installation without downloading it.
-When that has been done, you can '''[$2 enter your wiki]'''.",
+When that has been done, you can <strong>[$2 enter your wiki]</strong>.",
'config-download-localsettings' => 'Download <code>LocalSettings.php</code>',
'config-help' => 'help',
'config-nofile' => 'File "$1" could not be found. Has it been deleted?',
'config-extension-link' => 'Did you know that your wiki supports [//www.mediawiki.org/wiki/Manual:Extensions extensions]?
You can browse [//www.mediawiki.org/wiki/Category:Extensions_by_category extensions by category] or the [//www.mediawiki.org/wiki/Extension_Matrix Extension Matrix] to see the full list of extensions.',
- 'mainpagetext' => "'''MediaWiki has been successfully installed.'''",
+ 'mainpagetext' => "<strong>MediaWiki has been successfully installed.</strong>",
'mainpagedocfooter' => "Consult the [//meta.wikimedia.org/wiki/Help:Contents User's Guide] for information on using the wiki software.
== Getting started ==
* {{msg-mw|config-env-php}}',
'config-unicode-pure-php-warning' => 'PECL is the name of a group producing standard pieces of software for PHP, and intl is the name of their library handling some aspects of internationalization.',
'config-unicode-update-warning' => "ICU is a body producing standard software tools for support of Unicode and other internationalization aspects. This message warns the system administrator installing MediaWiki that the server's software is not up-to-date and MediaWiki will have problems handling some characters.",
- 'config-no-db' => '{{doc-important|Do not translate "<code>./configure --with-mysql</code>" and "<code>php5-mysql</code>".}}
+ 'config-no-db' => '{{doc-important|Do not translate "<code>./configure --with-mysqli</code>" and "<code>php5-mysql</code>".}}
Parameters:
* $1 is comma separated list of database types supported by MediaWiki.',
'config-outdated-sqlite' => 'Used as warning. Parameters:
'config-mbstring' => '{{Related|Config-fatal}}',
'config-ze1' => '{{Related|Config-fatal}}',
'config-pcre' => 'PCRE is an initialism for "Perl-compatible regular expression". Perl is programming language whose [[:w:regular expression|regular expression]] syntax is popular and used in other languages using a library called PCRE.',
+ 'config-pcre-old' => 'Parameters:
+* $1 - minimum PCRE version number
+* $2 - the installed version of [[wikipedia:PCRE|PCRE]]
+{{Related|Config-fatal}}',
'config-pcre-no-utf8' => "PCRE is a name of a programmers' library for supporting regular expressions. It can probably be translated without change.
{{Related|Config-fatal}}",
'config-memory-raised' => 'Parameters:
* $2 - error message',
'config-sqlite-dir-help' => '{{doc-important|Do not translate <code>.htaccess</code> and <code>/var/lib/mediawiki/yourwiki</code>.}}
Used in help box.',
- 'config-type-mysql' => '{{optional}}',
+ 'config-type-mysql' => '"Or compatible" refers to several database systems that are compatible with MySQL, as explained in {{msg-mw|config-dbsupport-mysql}}, and thus also work with this choice of database type.',
'config-type-postgres' => '{{optional}}',
'config-type-sqlite' => '{{optional}}',
'config-type-oracle' => '{{optional}}',
'config-support-info' => 'Parameters:
-* $1 - a list of DBMSs that MediaWiki supports, composed with other config-type-* and config-support-* messages.',
+* $1 - a list of DBMSs that MediaWiki supports, composed with config-dbsupport-* messages.',
'config-support-mysql' => 'Parameters:
* $1 - a link to the MySQL home page having the anchor text "MySQL".',
'config-support-postgres' => 'Parameters:
* $1 - a link to the SQLite home page having the anchor text "SQLite".',
'config-support-oracle' => 'Parameters:
* $1 - a link to the Oracle home page, the anchor text of which is "Oracle".',
+ 'config-dbsupport-mysql' => 'Used in {{msg-mw|config-support-info}}.',
+ 'config-dbsupport-postgres' => 'Used in {{msg-mw|config-support-info}}.',
+ 'config-dbsupport-sqlite' => 'Used in {{msg-mw|config-support-info}}.',
+ 'config-dbsupport-oracle' => 'Used in {{msg-mw|config-support-info}}.',
'config-invalid-db-server-oracle' => 'Used as error message. Parameters:
* $1 - database server name
See also:
// This is the absolute minimum PHP version we can support
const MINIMUM_PHP_VERSION = '5.3.2';
+ /**
+ * The oldest version of PCRE we can support.
+ *
+ * Defining this is necessary because PHP may be linked with a system version
+ * of PCRE, which may be older than that bundled with the minimum PHP version.
+ */
+ const MINIMUM_PCRE_VERSION = '7.2';
+
/**
* @var array
*/
'envCheckDB',
'envCheckRegisterGlobals',
'envCheckBrokenXML',
- 'envCheckPHP531',
'envCheckMagicQuotes',
'envCheckMagicSybase',
'envCheckMbstring',
- 'envCheckZE1',
'envCheckSafeMode',
'envCheckXML',
'envCheckPCRE',
$good = false;
}
+ // Must go here because an old version of PCRE can prevent other checks from completing
+ if ( $good ) {
+ list( $pcreVersion ) = explode( ' ', PCRE_VERSION, 2 );
+ if ( version_compare( $pcreVersion, self::MINIMUM_PCRE_VERSION, '<' ) ) {
+ $this->showError( 'config-pcre-old', self::MINIMUM_PCRE_VERSION, $pcreVersion );
+ $good = false;
+ }
+ }
+
if ( $good ) {
foreach ( $this->envChecks as $check ) {
$status = $this->$check();
}
/**
- * Determine if LocalSettings.php exists. If it does, return its variables,
- * merged with those from AdminSettings.php, as an array.
+ * Determine if LocalSettings.php exists. If it does, return its variables.
*
* @return Array
*/
require "$IP/includes/DefaultSettings.php";
require "$IP/LocalSettings.php";
- if ( file_exists( "$IP/AdminSettings.php" ) ) {
- require "$IP/AdminSettings.php";
- }
return get_defined_vars();
}
return true;
}
- /**
- * Test PHP (probably 5.3.1, but it could regress again) to make sure that
- * reference parameters to __call() are not converted to null
- * @return bool
- */
- protected function envCheckPHP531() {
- $test = new PhpRefCallBugTester;
- $test->execute();
- if ( !$test->ok ) {
- $this->showError( 'config-using531', phpversion() );
-
- return false;
- }
-
- return true;
- }
-
/**
* Environment check for magic_quotes_runtime.
* @return bool
return true;
}
- /**
- * Environment check for zend.ze1_compatibility_mode.
- * @return bool
- */
- protected function envCheckZE1() {
- if ( wfIniGetBool( 'zend.ze1_compatibility_mode' ) ) {
- $this->showError( 'config-ze1' );
-
- return false;
- }
-
- return true;
- }
-
/**
* Environment check for safe_mode.
* @return bool
* @return bool
*/
protected function envCheckPCRE() {
- if ( !function_exists( 'preg_match' ) ) {
- $this->showError( 'config-pcre' );
-
- return false;
- }
wfSuppressWarnings();
$regexd = preg_replace( '/[\x{0430}-\x{04FF}]/iu', '', '-АБВГД-' );
// Need to check for \p support too, as PCRE can be compiled
public function submitConnectForm() {
// Get variables from the request
- $newValues = $this->setVarsFromRequest(
+ $newValues = $this->setVarsFromRequest( array(
'wgDBserver',
'wgDBprefix',
'wgDBuser',
'wgDBpassword'
- );
+ ) );
$this->parent->setVar( 'wgDBname', $this->getVar( 'wgDBuser' ) );
// Validate them
$this->parsedData .= $data;
}
}
-
-/**
- * Test for PHP bug #50394 (PHP 5.3.x conversion to null only, not 5.2.x)
- * @see http://bugs.php.net/bug.php?id=50394
- * @ingroup PHPBugTests
- */
-class PhpRefCallBugTester {
- public $ok = false;
-
- function __call( $name, $args ) {
- $old = error_reporting( E_ALL & ~E_WARNING );
- call_user_func_array( array( $this, 'checkForBrokenRef' ), $args );
- error_reporting( $old );
- }
-
- function checkForBrokenRef( &$var ) {
- if ( $var ) {
- $this->ok = true;
- }
- }
-
- function execute() {
- $var = true;
- call_user_func_array( array( $this, 'foo' ), array( &$var ) );
- }
-}
"INTEGER NOT NULL PRIMARY KEY DEFAULT nextval('archive_ar_id_seq')" ),
array( 'addPgField', 'externallinks', 'el_id',
"INTEGER NOT NULL PRIMARY KEY DEFAULT nextval('externallinks_el_id_seq')" ),
+ array( 'addPgField', 'uploadstash', 'us_props', "BYTEA" ),
# type changes
array( 'changeField', 'archive', 'ar_deleted', 'smallint', '' ),
/**
* Initiate an upgrade of the existing database
- * @param array $vars Variables from LocalSettings.php and AdminSettings.php
+ * @param array $vars Variables from LocalSettings.php
* @return Status
*/
protected function handleExistingUpgrade( $vars ) {
}
class WebInstaller_DBConnect extends WebInstallerPage {
-
+ /**
+ * @return string|void When string, "skip" or "continue"
+ */
public function execute() {
if ( $this->getVar( '_ExistingDBSettings' ) ) {
return 'skip';
$settings = '';
$defaultType = $this->getVar( 'wgDBtype' );
- // Messages: config-support-mysql, config-support-postgres, config-support-oracle,
- // config-support-sqlite
+ // Messages: config-dbsupport-mysql, config-dbsupport-postgres, config-dbsupport-oracle,
+ // config-dbsupport-sqlite
$dbSupport = '';
- foreach ( $this->parent->getDBTypes() as $type ) {
- $link = DatabaseBase::factory( $type )->getSoftwareLink();
- $dbSupport .= wfMessage( "config-support-$type", $link )->plain() . "\n";
+ foreach ( Installer::getDBTypes() as $type ) {
+ $dbSupport .= wfMessage( "config-dbsupport-$type" )->plain() . "\n";
}
$this->addHTML( $this->parent->getInfoBox(
wfMessage( 'config-support-info', trim( $dbSupport ) )->text() ) );
<?php
/**
- * Job queue base code.
+ * Job queue task base code.
*
* 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
/**
* Class to both describe a background job and handle jobs.
* The queue aspects of this class are now deprecated.
+ * Using the class to push jobs onto queues is deprecated (use JobSpecification).
*
* @ingroup JobQueue
*/
-abstract class Job {
+abstract class Job implements IJobSpecification {
/** @var string */
public $command;
}
/**
- * Push a single jobs into the queue.
+ * Push one or more 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.
*
// Instead, this uses job_random to pick a row (possibly checking both directions).
$ineq = $gte ? '>=' : '<=';
$dir = $gte ? 'ASC' : 'DESC';
- $row = $dbw->selectRow( 'job', '*', // find a random job
+ $row = $dbw->selectRow( 'job', self::selectFields(), // find a random job
array(
'job_cmd' => $this->type,
'job_token' => '', // unclaimed
// Bug 42614: "ORDER BY job_random" with a job_random inequality causes high CPU
// in MySQL if there are many rows for some reason. This uses a small OFFSET
// instead of job_random for reducing excess claim retries.
- $row = $dbw->selectRow( 'job', '*', // find a random job
+ $row = $dbw->selectRow( 'job', self::selectFields(), // find a random job
array(
'job_cmd' => $this->type,
'job_token' => '', // unclaimed
}
// Fetch any row that we just reserved...
if ( $dbw->affectedRows() ) {
- $row = $dbw->selectRow( 'job', '*',
+ $row = $dbw->selectRow( 'job', self::selectFields(),
array( 'job_cmd' => $this->type, 'job_token' => $uuid ), __METHOD__
);
if ( !$row ) { // raced out by duplicate job removal
$dbr = $this->getSlaveDB();
try {
return new MappedIterator(
- $dbr->select( 'job', '*',
+ $dbr->select( 'job', self::selectFields(),
array( 'job_cmd' => $this->getType(), 'job_token' => '' ) ),
function ( $row ) use ( $dbr ) {
$job = Job::factory(
}
/**
- * @param Job $job
+ * @param IJobSpecification $job
* @return array
*/
- protected function insertFields( Job $job ) {
+ protected function insertFields( IJobSpecification $job ) {
$dbw = $this->getMasterDB();
return array(
protected function throwDBException( DBError $e ) {
throw new JobQueueError( get_class( $e ) . ": " . $e->getMessage() );
}
+
+ /**
+ * Return the list of job fields that should be selected.
+ * @since 1.23
+ * @return array
+ */
+ public static function selectFields() {
+ return array(
+ 'job_id',
+ 'job_cmd',
+ 'job_namespace',
+ 'job_title',
+ 'job_timestamp',
+ 'job_params',
+ 'job_random',
+ 'job_attempts',
+ 'job_token',
+ 'job_token_timestamp',
+ 'job_sha1',
+ );
+ }
}
$this->throwErrorIfAllPartitionsDown( $failed );
$this->cache->add( $key, $empty ? 'true' : 'false', self::CACHE_TTL_LONG );
- return !$empty;
+ return $empty;
}
protected function doGetSize() {
$jobsByType = array(); // (job type => list of jobs)
foreach ( $jobs as $job ) {
- if ( $job instanceof Job ) {
+ if ( $job instanceof IJobSpecification ) {
$jobsByType[$job->getType()][] = $job;
} else {
throw new MWException( "Attempted to push a non-Job object into a queue." );
}
/**
- * @param Job $job
+ * @param IJobSpecification $job
* @return array
*/
- protected function getNewJobFields( Job $job ) {
+ protected function getNewJobFields( IJobSpecification $job ) {
return array(
// Fields that describe the nature of the job
'type' => $job->getType(),
// Additional job metadata
'uuid' => UIDGenerator::newRawUUIDv4( UIDGenerator::QUICK_RAND ),
'sha1' => $job->ignoreDuplicates()
- ? wfBaseConvert( sha1( serialize( $job->getDeduplicationInfo() ) ), 16, 36, 31 )
- : '',
+ ? wfBaseConvert( sha1( serialize( $job->getDeduplicationInfo() ) ), 16, 36, 31 )
+ : '',
'timestamp' => time() // UNIX timestamp
);
}
--- /dev/null
+<?php
+/**
+ * Job queue task description base code.
+ *
+ * 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 JobQueue
+ */
+
+/**
+ * Job queue task description interface
+ *
+ * @ingroup JobQueue
+ * @since 1.23
+ */
+interface IJobSpecification {
+ /**
+ * @return string Job type
+ */
+ public function getType();
+
+ /**
+ * @return array
+ */
+ public function getParams();
+
+ /**
+ * @return int|null UNIX timestamp to delay running this job until, otherwise null
+ */
+ public function getReleaseTimestamp();
+
+ /**
+ * @return bool Whether only one of each identical set of jobs should be run
+ */
+ public function ignoreDuplicates();
+
+ /**
+ * Subclasses may need to override this to make duplication detection work.
+ * The resulting map conveys everything that makes the job unique. This is
+ * only checked if ignoreDuplicates() returns true, meaning that duplicate
+ * jobs are supposed to be ignored.
+ *
+ * @return array Map of key/values
+ */
+ public function getDeduplicationInfo();
+
+ /**
+ * @return Title Descriptive title (this can simply be informative)
+ */
+ public function getTitle();
+}
+
+/**
+ * Job queue task description base code
+ *
+ * Example usage:
+ * <code>
+ * $job = new JobSpecification(
+ * 'null',
+ * array( 'lives' => 1, 'usleep' => 100, 'pi' => 3.141569 ),
+ * array( 'removeDuplicates' => 1 ),
+ * Title::makeTitle( NS_SPECIAL, 'nullity' )
+ * );
+ * JobQueueGroup::singleton()->push( $job )
+ * </code>
+ *
+ * @ingroup JobQueue
+ * @since 1.23
+ */
+class JobSpecification implements IJobSpecification {
+ /** @var string */
+ protected $type;
+
+ /** @var array Array of job parameters or false if none */
+ protected $params;
+
+ /** @var Title */
+ protected $title;
+
+ /** @var bool Expensive jobs may set this to true */
+ protected $ignoreDuplicates;
+
+ /**
+ * @param string $type
+ * @param array $params Map of key/values
+ * @param array $opts Map of key/values
+ * @param Title $title Optional descriptive title
+ */
+ public function __construct(
+ $type, array $params, array $opts = array(), Title $title = null
+ ) {
+ $this->validateParams( $params );
+
+ $this->type = $type;
+ $this->params = $params;
+ $this->title = $title ?: Title::newMainPage();
+ $this->ignoreDuplicates = !empty( $opts['removeDuplicates'] );
+ }
+
+ /**
+ * @param array $params
+ */
+ protected function validateParams( array $params ) {
+ foreach ( $params as $p => $v ) {
+ if ( is_array( $v ) ) {
+ $this->validateParams( $v );
+ } elseif ( !is_scalar( $v ) && $v !== null ) {
+ throw new UnexpectedValueException( 'Job parameters are not JSON serializable.' );
+ }
+ }
+ }
+
+ /**
+ * @return string
+ */
+ public function getType() {
+ return $this->type;
+ }
+
+ /**
+ * @return Title
+ */
+ public function getTitle() {
+ return $this->title;
+ }
+
+ /**
+ * @return array
+ */
+ public function getParams() {
+ return $this->params;
+ }
+
+ /**
+ * @return int|null UNIX timestamp to delay running this job until, otherwise null
+ */
+ public function getReleaseTimestamp() {
+ return isset( $this->params['jobReleaseTimestamp'] )
+ ? wfTimestampOrNull( TS_UNIX, $this->params['jobReleaseTimestamp'] )
+ : null;
+ }
+
+ /**
+ * @return bool Whether only one of each identical set of jobs should be run
+ */
+ public function ignoreDuplicates() {
+ return $this->ignoreDuplicates;
+ }
+
+ /**
+ * Subclasses may need to override this to make duplication detection work.
+ * The resulting map conveys everything that makes the job unique. This is
+ * only checked if ignoreDuplicates() returns true, meaning that duplicate
+ * jobs are supposed to be ignored.
+ *
+ * @return array Map of key/values
+ */
+ public function getDeduplicationInfo() {
+ $info = array(
+ 'type' => $this->getType(),
+ 'namespace' => $this->getTitle()->getNamespace(),
+ 'title' => $this->getTitle()->getDBkey(),
+ 'params' => $this->getParams()
+ );
+ 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;
+ }
+}
}
} else { // cache miss
// Avoid duplicated effort
+ $rand = wfRandomString( 32 );
$conn->multi( Redis::MULTI );
- $conn->setnx( $this->getReadyQueueKey() . ":lock", 1 );
- $conn->expire( $this->getReadyQueueKey() . ":lock", 3600 );
+ $conn->setex( "{$rand}:lock", 3600, 1 );
+ $conn->renamenx( "{$rand}:lock", $this->getReadyQueueKey() . ":lock" );
if ( $conn->exec() !== array( true, true ) ) { // lock
+ $conn->delete( "{$rand}:lock" );
return array(); // already in progress
}
}
$seenTitles[$titleText] = true;
- if ( $title->getInterwiki() ) {
+ if ( $title->isExternal() ) {
// If the target is interwiki, we have to break early (bug 40352).
// Otherwise it will look up a row in the local page table
// with the namespace/page of the interwiki target which can cause
}
$dbw = wfGetDB( DB_MASTER );
- $timestamp = $dbw->timestamp();
- // Don't invalidated pages that were already invalidated
- $touchedCond = isset( $this->params['rootJobTimestamp'] )
- ? array( "page_touched < " .
- $dbw->addQuotes( $dbw->timestamp( $this->params['rootJobTimestamp'] ) ) )
- : array();
+ // The page_touched field will need to be bumped for these pages.
+ // Only bump it to the present time if no "rootJobTimestamp" was known.
+ // If it is known, it can be used instead, which avoids invalidating output
+ // that was in fact generated *after* the relevant dependency change time
+ // (e.g. template edit). This is particularily useful since refreshLinks jobs
+ // save back parser output and usually run along side htmlCacheUpdate jobs;
+ // their saved output would be invalidated by using the current timestamp.
+ if ( isset( $this->params['rootJobTimestamp'] ) ) {
+ $touchTimestamp = $this->params['rootJobTimestamp'];
+ } else {
+ $touchTimestamp = wfTimestampNow();
+ }
// Update page_touched (skipping pages already touched since the root job).
// Check $wgUpdateRowsPerQuery for sanity; batch jobs are sized by that already.
foreach ( array_chunk( $pageIds, $wgUpdateRowsPerQuery ) as $batch ) {
$dbw->update( 'page',
- array( 'page_touched' => $timestamp ),
- array( 'page_id' => $batch ) + $touchedCond,
+ array( 'page_touched' => $dbw->timestamp( $touchTimestamp ) ),
+ array( 'page_id' => $batch,
+ // don't invalidated pages that were already invalidated
+ "page_touched < " . $dbw->addQuotes( $dbw->timestamp( $touchTimestamp ) )
+ ),
__METHOD__
);
}
$titleArray = TitleArray::newFromResult( $dbw->select(
'page',
array( 'page_namespace', 'page_title' ),
- array( 'page_id' => $pageIds, 'page_touched' => $timestamp ),
+ array( 'page_id' => $pageIds, 'page_touched' => $dbw->timestamp( $touchTimestamp ) ),
__METHOD__
) );
* @ingroup JobQueue
*/
class RefreshLinksJob extends Job {
+ const PARSE_THRESHOLD_SEC = 1.0;
+
function __construct( $title, $params = '' ) {
parent::__construct( 'refreshLinks', $title, $params );
// Base backlink update jobs and per-title update jobs can be de-duplicated.
wfGetLB()->waitFor( $this->params['masterPos'] );
}
+ $page = WikiPage::factory( $title );
+
// Fetch the current revision...
$revision = Revision::newFromTitle( $title, false, Revision::READ_NORMAL );
if ( !$revision ) {
}
$parserOutput = false;
+ $parserOptions = $page->makeParserOptions( 'canonical' );
// If page_touched changed after this root job (with a good slave lag skew factor),
// then it is likely that any views of the pages already resulted in re-parses which
// are now in cache. This can be reused to avoid expensive parsing in some cases.
if ( isset( $this->params['rootJobTimestamp'] ) ) {
- $page = WikiPage::factory( $title );
$skewedTimestamp = wfTimestamp( TS_UNIX, $this->params['rootJobTimestamp'] ) + 5;
if ( $page->getLinksTimestamp() > wfTimestamp( TS_MW, $skewedTimestamp ) ) {
// Something already updated the backlinks since this job was made
return true;
}
if ( $page->getTouched() > wfTimestamp( TS_MW, $skewedTimestamp ) ) {
- $parserOptions = $page->makeParserOptions( 'canonical' );
$parserOutput = ParserCache::singleton()->getDirty( $page, $parserOptions );
if ( $parserOutput && $parserOutput->getCacheTime() <= $skewedTimestamp ) {
$parserOutput = false; // too stale
}
// Fetch the current revision and parse it if necessary...
if ( $parserOutput == false ) {
+ $start = microtime( true );
// Revision ID must be passed to the parser output to get revision variables correct
- $parserOutput = $content->getParserOutput( $title, $revision->getId(), null, false );
+ $parserOutput = $content->getParserOutput(
+ $title, $revision->getId(), $parserOptions, false );
+ $ellapsed = microtime( true ) - $start;
+ // If it took a long time to render, then save this back to the cache to avoid
+ // wasted CPU by other apaches or job runners. We don't want to always save to
+ // cache as this cause cause high cache I/O and LRU churn when a template changes.
+ if ( $ellapsed >= self::PARSE_THRESHOLD_SEC
+ && $page->isParserCacheUsed( $parserOptions, $revision->getId() )
+ && $parserOutput->isCacheable()
+ ) {
+ $ctime = wfTimestamp( TS_MW, (int)$start ); // cache time
+ ParserCache::singleton()->save( $parserOutput, $page, $parserOptions, $ctime );
+ }
}
$updates = $content->getSecondaryDataUpdates( $title, null, false, $parserOutput );
* @param int $bSize BacklinkCache partition size; usually $wgUpdateRowsPerJob
* @param int $cSize Max titles per leaf job; Usually 1 or a modest value
* @param array $opts Optional parameter map
- * @return array List of Job objects
+ * @return Job[] List of Job objects
*/
public static function partitionBacklinkJob( Job $job, $bSize, $cSize, $opts = array() ) {
$class = get_class( $job );
'tif' => 'image/tiff',
'tiff' => 'image/tiff',
'xbm' => 'image/x-xbitmap',
+ 'svg' => 'image/svg+xml',
);
/* Static Methods */
return $ruleWithRemapped;
}
}, $source );
-
- return $source;
}
/**
--- /dev/null
+<?php
+/**
+ * Convenience class for weighted consistent hash rings.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @author Aaron Schulz
+ */
+
+/**
+ * Convenience class for weighted consistent hash rings
+ *
+ * @since 1.22
+ */
+class HashRing {
+ /** @var Array (location => weight) */
+ protected $sourceMap = array();
+ /** @var Array (location => (start, end)) */
+ protected $ring = array();
+
+ const RING_SIZE = 268435456; // 2^28
+
+ /**
+ * @param array $map (location => weight)
+ */
+ public function __construct( array $map ) {
+ $map = array_filter( $map, function ( $w ) {
+ return $w > 0;
+ } );
+ if ( !count( $map ) ) {
+ throw new UnexpectedValueException( "Ring is empty or all weights are zero." );
+ }
+ $this->sourceMap = $map;
+ // Sort the locations based on the hash of their names
+ $hashes = array();
+ foreach ( $map as $location => $weight ) {
+ $hashes[$location] = sha1( $location );
+ }
+ uksort( $map, function ( $a, $b ) use ( $hashes ) {
+ return strcmp( $hashes[$a], $hashes[$b] );
+ } );
+ // Fit the map to weight-proportionate one with a space of size RING_SIZE
+ $sum = array_sum( $map );
+ $standardMap = array();
+ foreach ( $map as $location => $weight ) {
+ $standardMap[$location] = (int)floor( $weight / $sum * self::RING_SIZE );
+ }
+ // Build a ring of RING_SIZE spots, with each location at a spot in location hash order
+ $index = 0;
+ foreach ( $standardMap as $location => $weight ) {
+ // Location covers half-closed interval [$index,$index + $weight)
+ $this->ring[$location] = array( $index, $index + $weight );
+ $index += $weight;
+ }
+ // Make sure the last location covers what is left
+ end( $this->ring );
+ $this->ring[key( $this->ring )][1] = self::RING_SIZE;
+ }
+
+ /**
+ * Get the location of an item on the ring
+ *
+ * @param string $item
+ * @return string Location
+ */
+ public function getLocation( $item ) {
+ $locations = $this->getLocations( $item, 1 );
+
+ return $locations[0];
+ }
+
+ /**
+ * Get the location of an item on the ring, as well as the next clockwise locations
+ *
+ * @param string $item
+ * @param integer $limit Maximum number of locations to return
+ * @return array List of locations
+ */
+ public function getLocations( $item, $limit ) {
+ $locations = array();
+ $primaryLocation = null;
+ $spot = hexdec( substr( sha1( $item ), 0, 7 ) ); // first 28 bits
+ foreach ( $this->ring as $location => $range ) {
+ if ( count( $locations ) >= $limit ) {
+ break;
+ }
+ // The $primaryLocation is the location the item spot is in.
+ // After that is reached, keep appending the next locations.
+ if ( ( $range[0] <= $spot && $spot < $range[1] ) || $primaryLocation !== null ) {
+ if ( $primaryLocation === null ) {
+ $primaryLocation = $location;
+ }
+ $locations[] = $location;
+ }
+ }
+ // If more locations are requested, wrap-around and keep adding them
+ reset( $this->ring );
+ while ( count( $locations ) < $limit ) {
+ list( $location, ) = each( $this->ring );
+ if ( $location === $primaryLocation ) {
+ break; // don't go in circles
+ }
+ $locations[] = $location;
+ }
+
+ return $locations;
+ }
+
+ /**
+ * Get the map of locations to weight (ignores 0-weight items)
+ *
+ * @return array
+ */
+ public function getLocationWeights() {
+ return $this->sourceMap;
+ }
+
+ /**
+ * Get a new hash ring with a location removed from the ring
+ *
+ * @param string $location
+ * @return HashRing|bool Returns false if no non-zero weighted spots are left
+ */
+ public function newWithoutLocation( $location ) {
+ $map = $this->sourceMap;
+ unset( $map[$location] );
+ if ( count( $map ) ) {
+ return new self( $map );
+ }
+
+ return false;
+ }
+}
--- /dev/null
+<?php
+/**
+ * MessagePack serializer
+ *
+ * MessagePack is a space-efficient binary data interchange format. This
+ * class provides a pack() method that encodes native PHP values as MessagePack
+ * binary strings. The implementation is derived from msgpack-php.
+ *
+ * Copyright (c) 2013 Ori Livneh <ori@wikimedia.org>
+ * Copyright (c) 2011 OnlineCity <https://github.com/onlinecity/msgpack-php>.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to
+ * deal in the Software without restriction, including without limitation the
+ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+ * sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+ * IN THE SOFTWARE.
+ *
+ * @see <http://msgpack.org/>
+ * @see <http://wiki.msgpack.org/display/MSGPACK/Format+specification>
+ *
+ * @since 1.23
+ * @file
+ */
+class MWMessagePack {
+
+ /** @var boolean|null Whether current system is bigendian. **/
+ public static $bigendian = null;
+
+ /**
+ * Encode a value using MessagePack
+ *
+ * This method supports null, boolean, integer, float, string and array
+ * (both indexed and associative) types. Object serialization is not
+ * supported.
+ *
+ * @param mixed $value
+ * @return string
+ * @throws InvalidArgumentException if $value is an unsupported type or too long a string
+ */
+ public static function pack( $value ) {
+ if ( self::$bigendian === null ) {
+ self::$bigendian = pack( 'S', 1 ) === pack( 'n', 1 );
+ }
+
+ switch ( gettype( $value ) ) {
+ case 'NULL':
+ return "\xC0";
+
+ case 'boolean':
+ return $value ? "\xC3" : "\xC2";
+
+ case 'double':
+ case 'float':
+ return self::$bigendian
+ ? "\xCB" . pack( 'd', $value )
+ : "\xCB" . strrev( pack( 'd', $value ) );
+
+ case 'string':
+ $length = strlen( $value );
+ if ( $length < 32 ) {
+ return pack( 'Ca*', 0xA0 | $length, $value );
+ } elseif ( $length <= 0xFFFF ) {
+ return pack( 'Cna*', 0xDA, $length, $value );
+ } elseif ( $length <= 0xFFFFFFFF ) {
+ return pack( 'CNa*', 0xDB, $length, $value );
+ }
+ throw new InvalidArgumentException( __METHOD__ . ": string too long (length: $length; max: 4294967295)" );
+
+ case 'integer':
+ if ( $value >= 0 ) {
+ if ( $value <= 0x7F ) {
+ // positive fixnum
+ return chr( $value );
+ }
+ if ( $value <= 0xFF ) {
+ // uint8
+ return pack( 'CC', 0xCC, $value );
+ }
+ if ( $value <= 0xFFFF ) {
+ // uint16
+ return pack( 'Cn', 0xCD, $value );
+ }
+ if ( $value <= 0xFFFFFFFF ) {
+ // uint32
+ return pack( 'CN', 0xCE, $value );
+ }
+ if ( $value <= 0xFFFFFFFFFFFFFFFF ) {
+ // uint64
+ $hi = ( $value & 0xFFFFFFFF00000000 ) >> 32;
+ $lo = $value & 0xFFFFFFFF;
+ return self::$bigendian
+ ? pack( 'CNN', 0xCF, $lo, $hi )
+ : pack( 'CNN', 0xCF, $hi, $lo );
+ }
+ } else {
+ if ( $value >= -32 ) {
+ // negative fixnum
+ return pack( 'c', $value );
+ }
+ if ( $value >= -0x80 ) {
+ // int8
+ return pack( 'Cc', 0xD0, $value );
+ }
+ if ( $value >= -0x8000 ) {
+ // int16
+ $p = pack( 's', $value );
+ return self::$bigendian
+ ? pack( 'Ca2', 0xD1, $p )
+ : pack( 'Ca2', 0xD1, strrev( $p ) );
+ }
+ if ( $value >= -0x80000000 ) {
+ // int32
+ $p = pack( 'l', $value );
+ return self::$bigendian
+ ? pack( 'Ca4', 0xD2, $p )
+ : pack( 'Ca4', 0xD2, strrev( $p ) );
+ }
+ if ( $value >= -0x8000000000000000 ) {
+ // int64
+ // pack() does not support 64-bit ints either so pack into two 32-bits
+ $p1 = pack( 'l', $value & 0xFFFFFFFF );
+ $p2 = pack( 'l', ( $value >> 32 ) & 0xFFFFFFFF );
+ return self::$bigendian
+ ? pack( 'Ca4a4', 0xD3, $p1, $p2 )
+ : pack( 'Ca4a4', 0xD3, strrev( $p2 ), strrev( $p1 ) );
+ }
+ }
+ throw new InvalidArgumentException( __METHOD__ . ": invalid integer '$value'" );
+
+ case 'array':
+ $buffer = '';
+ $length = count( $value );
+ if ( $length > 0xFFFFFFFF ) {
+ throw new InvalidArgumentException( __METHOD__ . ": array too long (length: $length, max: 4294967295)" );
+ }
+
+ $index = 0;
+ foreach ( $value as $k => $v ) {
+ if ( $index !== $k || $index === $length ) {
+ break;
+ } else {
+ $index++;
+ }
+ }
+ $associative = $index !== $length;
+
+ if ( $associative ) {
+ if ( $length < 16 ) {
+ $buffer .= pack( 'C', 0x80 | $length );
+ } elseif ( $length <= 0xFFFF ) {
+ $buffer .= pack( 'Cn', 0xDE, $length );
+ } else {
+ $buffer .= pack( 'CN', 0xDF, $length );
+ }
+ foreach ( $value as $k => $v ) {
+ $buffer .= self::pack( $k );
+ $buffer .= self::pack( $v );
+ }
+ } else {
+ if ( $length < 16 ) {
+ $buffer .= pack( 'C', 0x90 | $length );
+ } elseif ( $length <= 0xFFFF ) {
+ $buffer .= pack( 'Cn', 0xDC, $length );
+ } else {
+ $buffer .= pack( 'CN', 0xDD, $length );
+ }
+ foreach ( $value as $v ) {
+ $buffer .= self::pack( $v );
+ }
+ }
+ return $buffer;
+
+ default:
+ throw new InvalidArgumentException( __METHOD__ . ': unsupported type ' . gettype( $value ) );
+ }
+ }
+}
--- /dev/null
+<?php
+/**
+ * Convenience class for generating iterators from iterators.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @author Aaron Schulz
+ */
+
+/**
+ * Convenience class for generating iterators from iterators.
+ *
+ * @since 1.21
+ */
+class MappedIterator extends FilterIterator {
+ /** @var callable */
+ protected $vCallback;
+ /** @var callable */
+ protected $aCallback;
+ /** @var array */
+ protected $cache = array();
+
+ protected $rewound = false; // boolean; whether rewind() has been called
+
+ /**
+ * Build an new iterator from a base iterator by having the former wrap the
+ * later, returning the result of "value" callback for each current() invocation.
+ * The callback takes the result of current() on the base iterator as an argument.
+ * The keys of the base iterator are reused verbatim.
+ *
+ * An "accept" callback can also be provided which will be called for each value in
+ * the base iterator (post-callback) and will return true if that value should be
+ * included in iteration of the MappedIterator (otherwise it will be filtered out).
+ *
+ * @param Iterator|Array $iter
+ * @param callable $vCallback Value transformation callback
+ * @param array $options Options map (includes "accept") (since 1.22)
+ * @throws UnexpectedValueException
+ */
+ public function __construct( $iter, $vCallback, array $options = array() ) {
+ if ( is_array( $iter ) ) {
+ $baseIterator = new ArrayIterator( $iter );
+ } elseif ( $iter instanceof Iterator ) {
+ $baseIterator = $iter;
+ } else {
+ throw new UnexpectedValueException( "Invalid base iterator provided." );
+ }
+ parent::__construct( $baseIterator );
+ $this->vCallback = $vCallback;
+ $this->aCallback = isset( $options['accept'] ) ? $options['accept'] : null;
+ }
+
+ public function next() {
+ $this->cache = array();
+ parent::next();
+ }
+
+ public function rewind() {
+ $this->rewound = true;
+ $this->cache = array();
+ parent::rewind();
+ }
+
+ public function accept() {
+ $value = call_user_func( $this->vCallback, $this->getInnerIterator()->current() );
+ $ok = ( $this->aCallback ) ? call_user_func( $this->aCallback, $value ) : true;
+ if ( $ok ) {
+ $this->cache['current'] = $value;
+ }
+
+ return $ok;
+ }
+
+ public function key() {
+ $this->init();
+
+ return parent::key();
+ }
+
+ public function valid() {
+ $this->init();
+
+ return parent::valid();
+ }
+
+ public function current() {
+ $this->init();
+ if ( parent::valid() ) {
+ return $this->cache['current'];
+ } else {
+ return null; // out of range
+ }
+ }
+
+ /**
+ * Obviate the usual need for rewind() before using a FilterIterator in a manual loop
+ */
+ protected function init() {
+ if ( !$this->rewound ) {
+ $this->rewind();
+ }
+ }
+}
--- /dev/null
+<?php
+
+/**
+ * Class to handle concurrent HTTP requests
+ *
+ * HTTP request maps use the following format:
+ * - method : GET/HEAD/PUT/POST/DELETE
+ * - url : HTTP/HTTPS URL
+ * - query : <query parameter field/value associative array> (uses RFC 3986)
+ * - headers : <header name/value associative array>
+ * - body : source to get the HTTP request body from;
+ * this can simply be a string (always), a resource for
+ * PUT requests, and a field/value array for POST request;
+ * array bodies are encoded as multipart/form-data and strings
+ * use application/x-www-form-urlencoded (headers sent automatically)
+ * - stream : resource to stream the HTTP response body to
+ *
+ * @author Aaron Schulz
+ * @since 1.23
+ */
+class MultiHttpClient {
+ /** @var resource */
+ protected $multiHandle = null; // curl_multi handle
+ /** @var string|null SSL certificates path */
+ protected $caBundlePath;
+ /** @var integer */
+ protected $connTimeout;
+ /** @var integer */
+ protected $reqTimeout;
+
+ /**
+ * @param array $options
+ */
+ public function __construct( array $options ) {
+ if ( isset( $options['caBundlePath'] ) ) {
+ $this->caBundlePath = $options['caBundlePath'];
+ if ( !file_exists( $this->caBundlePath ) ) {
+ throw new Exception( "Cannot find CA bundle: " . $this->caBundlePath );
+ }
+ }
+ static $defaults = array( 'connTimeout' => 10, 'reqTimeout' => 300 );
+ foreach ( $defaults as $key => $default ) {
+ $this->$key = isset( $options[$key] ) ? $options[$key] : $default;
+ }
+ }
+
+ /**
+ * Execute an HTTP(S) request
+ *
+ * This method returns a response map of:
+ * - code : HTTP response code or 0 if there was a serious cURL error
+ * - reason : HTTP response reason (empty if there was a serious cURL error)
+ * - headers : <header name/value associative array>
+ * - body : HTTP response body or resource (if "stream" was set)
+ * - err : Any cURL error string
+ * The map also stores integer-indexed copies of these values. This lets callers do:
+ * <code>
+ * list( $rcode, $rdesc, $rhdrs, $rbody, $rerr ) = $req;
+ * </code>
+ * @param array $req HTTP request array
+ * @return array Response array for request
+ */
+ public function run( array $req ) {
+ $req = $this->runMulti( array( $req ) );
+ return $req[0]['response'];
+ }
+
+ /**
+ * Execute a set of HTTP(S) request concurrently
+ *
+ * The maps are returned by this method with the 'response' field set to a map of:
+ * - code : HTTP response code or 0 if there was a serious cURL error
+ * - reason : HTTP response reason (empty if there was a serious cURL error)
+ * - headers : <header name/value associative array>
+ * - body : HTTP response body or resource (if "stream" was set)
+ * - err : Any cURL error string
+ * The map also stores integer-indexed copies of these values. This lets callers do:
+ * <code>
+ * list( $rcode, $rdesc, $rhdrs, $rbody, $rerr ) = $req;
+ * </code>
+ * All headers in the 'headers' field are normalized to use lower case names.
+ * This is true for the request headers and the response headers.
+ *
+ * @param array $req Map of HTTP request arrays
+ * @return array $reqs With response array populated for each
+ */
+ public function runMulti( array $reqs ) {
+ $multiHandle = $this->getCurlMulti();
+
+ // Normalize $reqs and add all of the required cURL handles...
+ $handles = array();
+ foreach ( $reqs as $index => &$req ) {
+ $req['response'] = array(
+ 'code' => 0,
+ 'reason' => '',
+ 'headers' => array(),
+ 'body' => '',
+ 'error' => ''
+ );
+ if ( !isset( $req['method'] ) ) {
+ throw new Exception( "Request has no 'method' field set." );
+ } elseif ( !isset( $req['url'] ) ) {
+ throw new Exception( "Request has no 'url' field set." );
+ }
+ $req['query'] = isset( $req['query'] ) ? $req['query'] : array();
+ $headers = array(); // normalized headers
+ if ( isset( $req['headers'] ) ) {
+ foreach ( $req['headers'] as $name => $value ) {
+ $headers[strtolower( $name )] = $value;
+ }
+ }
+ $req['headers'] = $headers;
+ if ( !isset( $req['body'] ) ) {
+ $req['body'] = '';
+ $req['headers']['content-length'] = 0;
+ }
+ $handles[$index] = $this->getCurlHandle( $req );
+ if ( count( $reqs ) > 1 ) {
+ // https://github.com/guzzle/guzzle/issues/349
+ curl_setopt( $handles[$index], CURLOPT_FORBID_REUSE, true );
+ }
+ curl_multi_add_handle( $multiHandle, $handles[$index] );
+ }
+
+ // Execute the cURL handles concurrently...
+ $active = null; // handles still being processed
+ do {
+ // Do any available work...
+ do {
+ $mrc = curl_multi_exec( $multiHandle, $active );
+ } while ( $mrc == CURLM_CALL_MULTI_PERFORM );
+ // Wait (if possible) for available work...
+ if ( $active > 0 && $mrc == CURLM_OK ) {
+ if ( curl_multi_select( $multiHandle, 10 ) == -1 ) {
+ // PHP bug 63411; http://curl.haxx.se/libcurl/c/curl_multi_fdset.html
+ usleep( 5000 ); // 5ms
+ }
+ }
+ } while ( $active > 0 && $mrc == CURLM_OK );
+
+ // Remove all of the added cURL handles and check for errors...
+ foreach ( $reqs as $index => &$req ) {
+ $ch = $handles[$index];
+ curl_multi_remove_handle( $multiHandle, $ch );
+ if ( curl_errno( $ch ) !== 0 ) {
+ $req['error'] = "(curl error: " . curl_errno( $ch ) . ") " . curl_error( $ch );
+ }
+ // For convenience with the list() operator
+ $req['response'][0] = $req['response']['code'];
+ $req['response'][1] = $req['response']['reason'];
+ $req['response'][2] = $req['response']['headers'];
+ $req['response'][3] = $req['response']['body'];
+ $req['response'][4] = $req['response']['error'];
+ curl_close( $ch );
+ // Close any string wrapper file handles
+ if ( isset( $req['_closeHandle'] ) ) {
+ fclose( $req['_closeHandle'] );
+ unset( $req['_closeHandle'] );
+ }
+ }
+
+ return $reqs;
+ }
+
+ /**
+ * @param array $req HTTP request map
+ * @return resource
+ */
+ protected function getCurlHandle( array &$req ) {
+ $ch = curl_init();
+
+ curl_setopt( $ch, CURLOPT_CONNECTTIMEOUT, $this->connTimeout );
+ curl_setopt( $ch, CURLOPT_TIMEOUT, $this->reqTimeout );
+ curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, 1 );
+ curl_setopt( $ch, CURLOPT_MAXREDIRS, 4 );
+ curl_setopt( $ch, CURLOPT_HEADER, 0 );
+ if ( !is_null( $this->caBundlePath ) ) {
+ curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, true );
+ curl_setopt( $ch, CURLOPT_CAINFO, $this->caBundlePath );
+ }
+ curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
+
+ $url = $req['url'];
+ // PHP_QUERY_RFC3986 is PHP 5.4+ only
+ $query = str_replace(
+ array( '+', '%7E' ),
+ array( '%20', '~' ),
+ http_build_query( $req['query'], '', '&' )
+ );
+ if ( $query != '' ) {
+ $url .= strpos( $req['url'], '?' ) === false ? "?$query" : "&$query";
+ }
+ curl_setopt( $ch, CURLOPT_URL, $url );
+
+ curl_setopt( $ch, CURLOPT_CUSTOMREQUEST, $req['method'] );
+ if ( $req['method'] === 'HEAD' ) {
+ curl_setopt( $ch, CURLOPT_NOBODY, 1 );
+ }
+
+ if ( $req['method'] === 'PUT' ) {
+ curl_setopt( $ch, CURLOPT_PUT, 1 );
+ if ( is_resource( $req['body'] ) ) {
+ curl_setopt( $ch, CURLOPT_INFILE, $req['body'] );
+ if ( isset( $req['headers']['content-length'] ) ) {
+ curl_setopt( $ch, CURLOPT_INFILESIZE, $req['headers']['content-length'] );
+ } elseif ( isset( $req['headers']['transfer-encoding'] ) &&
+ $req['headers']['transfer-encoding'] === 'chunks'
+ ) {
+ curl_setopt( $ch, CURLOPT_UPLOAD, true );
+ } else {
+ throw new Exception( "Missing 'Content-Length' or 'Transfer-Encoding' header." );
+ }
+ } elseif ( $req['body'] !== '' ) {
+ $fp = fopen( "php://temp", "wb+" );
+ fwrite( $fp, $req['body'], strlen( $req['body'] ) );
+ rewind( $fp );
+ curl_setopt( $ch, CURLOPT_INFILE, $fp );
+ curl_setopt( $ch, CURLOPT_INFILESIZE, strlen( $req['body'] ) );
+ $req['_closeHandle'] = $fp; // remember to close this later
+ } else {
+ curl_setopt( $ch, CURLOPT_INFILESIZE, 0 );
+ }
+ curl_setopt( $ch, CURLOPT_READFUNCTION,
+ function ( $ch, $fd, $length ) {
+ $data = fread( $fd, $length );
+ $len = strlen( $data );
+ return $data;
+ }
+ );
+ } elseif ( $req['method'] === 'POST' ) {
+ curl_setopt( $ch, CURLOPT_POST, 1 );
+ curl_setopt( $ch, CURLOPT_POSTFIELDS, $req['body'] );
+ } else {
+ if ( is_resource( $req['body'] ) || $req['body'] !== '' ) {
+ throw new Exception( "HTTP body specified for a non PUT/POST request." );
+ }
+ $req['headers']['content-length'] = 0;
+ }
+
+ $headers = array();
+ foreach ( $req['headers'] as $name => $value ) {
+ if ( strpos( $name, ': ' ) ) {
+ throw new Exception( "Headers cannot have ':' in the name." );
+ }
+ $headers[] = $name . ': ' . trim( $value );
+ }
+ curl_setopt( $ch, CURLOPT_HTTPHEADER, $headers );
+
+ curl_setopt( $ch, CURLOPT_HEADERFUNCTION,
+ function ( $ch, $header ) use ( &$req ) {
+ $length = strlen( $header );
+ $matches = array();
+ if ( preg_match( "/^(HTTP\/1\.[01]) (\d{3}) (.*)/", $header, $matches ) ) {
+ $req['response']['code'] = (int)$matches[2];
+ $req['response']['reason'] = trim( $matches[3] );
+ return $length;
+ }
+ if ( strpos( $header, ":" ) === false ) {
+ return $length;
+ }
+ list( $name, $value ) = explode( ":", $header, 2 );
+ $req['response']['headers'][strtolower( $name )] = trim( $value );
+ return $length;
+ }
+ );
+
+ if ( isset( $req['stream'] ) ) {
+ // Don't just use CURLOPT_FILE as that might give:
+ // curl_setopt(): cannot represent a stream of type Output as a STDIO FILE*
+ // The callback here handles both normal files and php://temp handles.
+ curl_setopt( $ch, CURLOPT_WRITEFUNCTION,
+ function ( $ch, $data ) use ( &$req ) {
+ return fwrite( $req['stream'], $data );
+ }
+ );
+ } else {
+ curl_setopt( $ch, CURLOPT_WRITEFUNCTION,
+ function ( $ch, $data ) use ( &$req ) {
+ $req['response']['body'] .= $data;
+ return strlen( $data );
+ }
+ );
+ }
+
+ return $ch;
+ }
+
+ /**
+ * @return resource
+ */
+ protected function getCurlMulti() {
+ if ( !$this->multiHandle ) {
+ $this->multiHandle = curl_multi_init();
+ }
+ return $this->multiHandle;
+ }
+
+ function __destruct() {
+ if ( $this->multiHandle ) {
+ curl_multi_close( $this->multiHandle );
+ }
+ }
+}
--- /dev/null
+<?php
+/**
+ * Compute running mean, variance, and extrema of a stream of numbers.
+ *
+ * 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 Profiler
+ */
+
+// Needed due to PHP non-bug <https://bugs.php.net/bug.php?id=49828>.
+define( 'NEGATIVE_INF', -INF );
+
+/**
+ * Represents a running summary of a stream of numbers.
+ *
+ * RunningStat instances are accumulator-like objects that provide a set of
+ * continuously-updated summary statistics for a stream of numbers, without
+ * requiring that each value be stored. The measures it provides are the
+ * arithmetic mean, variance, standard deviation, and extrema (min and max);
+ * together they describe the central tendency and statistical dispersion of a
+ * set of values.
+ *
+ * One RunningStat instance can be merged into another; the resultant
+ * RunningStat has the state it would have had if it had accumulated each
+ * individual point. This allows data to be summarized in parallel and in
+ * stages without loss of fidelity.
+ *
+ * Based on a C++ implementation by John D. Cook:
+ * <http://www.johndcook.com/standard_deviation.html>
+ * <http://www.johndcook.com/skewness_kurtosis.html>
+ *
+ * The in-line documentation for this class incorporates content from the
+ * English Wikipedia articles "Variance", "Algorithms for calculating
+ * variance", and "Standard deviation".
+ *
+ * @since 1.23
+ */
+class RunningStat implements Countable {
+
+ /** @var int Number of samples. **/
+ public $n = 0;
+
+ /** @var float The first moment (or mean, or expected value). **/
+ public $m1 = 0.0;
+
+ /** @var float The second central moment (or variance). **/
+ public $m2 = 0.0;
+
+ /** @var float The least value in the the set. **/
+ public $min = INF;
+
+ /** @var float The most value in the set. **/
+ public $max = NEGATIVE_INF;
+
+ /**
+ * Count the number of accumulated values.
+ * @return int Number of values
+ */
+ public function count() {
+ return $this->n;
+ }
+
+ /**
+ * Add a number to the data set.
+ * @param int|float $x Value to add
+ */
+ public function push( $x ) {
+ $x = (float) $x;
+
+ $this->min = min( $this->min, $x );
+ $this->max = max( $this->max, $x );
+
+ $n1 = $this->n;
+ $this->n += 1;
+ $delta = $x - $this->m1;
+ $delta_n = $delta / $this->n;
+ $this->m1 += $delta_n;
+ $this->m2 += $delta * $delta_n * $n1;
+ }
+
+ /**
+ * Get the mean, or expected value.
+ *
+ * The arithmetic mean is the sum of all measurements divided by the number
+ * of observations in the data set.
+ *
+ * @return float Mean
+ */
+ public function getMean() {
+ return $this->m1;
+ }
+
+ /**
+ * Get the estimated variance.
+ *
+ * Variance measures how far a set of numbers is spread out. A small
+ * variance indicates that the data points tend to be very close to the
+ * mean (and hence to each other), while a high variance indicates that the
+ * data points are very spread out from the mean and from each other.
+ *
+ * @return float Estimated variance
+ */
+ public function getVariance() {
+ if ( $this->n === 0 ) {
+ // The variance of the empty set is undefined.
+ return NAN;
+ } elseif ( $this->n === 1 ) {
+ return 0.0;
+ } else {
+ return $this->m2 / ( $this->n - 1.0 );
+ }
+ }
+
+ /**
+ * Get the estimated stanard deviation.
+ *
+ * The standard deviation of a statistical population is the square root of
+ * its variance. It shows shows how much variation from the mean exists. In
+ * addition to expressing the variability of a population, the standard
+ * deviation is commonly used to measure confidence in statistical conclusions.
+ *
+ * @return float Estimated standard deviation
+ */
+ public function getStdDev() {
+ return sqrt( $this->getVariance() );
+ }
+
+ /**
+ * Merge another RunningStat instance into this instance.
+ *
+ * This instance then has the state it would have had if all the data had
+ * been accumulated by it alone.
+ *
+ * @param RunningStat RunningStat instance to merge into this one
+ */
+ public function merge( RunningStat $other ) {
+ // If the other RunningStat is empty, there's nothing to do.
+ if ( $other->n === 0 ) {
+ return;
+ }
+
+ // If this RunningStat is empty, copy values from other RunningStat.
+ if ( $this->n === 0 ) {
+ $this->n = $other->n;
+ $this->m1 = $other->m1;
+ $this->m2 = $other->m2;
+ $this->min = $other->min;
+ $this->max = $other->max;
+ return;
+ }
+
+ $n = $this->n + $other->n;
+ $delta = $other->m1 - $this->m1;
+ $delta2 = $delta * $delta;
+
+ $this->m1 = ( ( $this->n * $this->m1 ) + ( $other->n * $other->m1 ) ) / $n;
+ $this->m2 = $this->m2 + $other->m2 + ( $delta2 * $this->n * $other->n / $n );
+ $this->min = min( $this->min, $other->min );
+ $this->max = max( $this->max, $other->max );
+ $this->n = $n;
+ }
+}
*/
public $rootElement = '';
+ /**
+ * Additional parsing options
+ */
+ private $parserOptions = array(
+ 'processing_instruction_handler' => '',
+ );
+
/**
* @param string $input a filename or string containing the XML element
* @param callable $filterCallback (optional)
* Filter should return 'true' to toggle on $this->filterMatch
* @param boolean $isFile (optional) indicates if the first parameter is a
* filename (default, true) or if it is a string (false)
+ * @param array $options list of additional parsing options:
+ * processing_instruction_handler: Callback for xml_set_processing_instruction_handler
*/
- function __construct( $input, $filterCallback = null, $isFile = true ) {
+ function __construct( $input, $filterCallback = null, $isFile = true, $options = array() ) {
$this->filterCallback = $filterCallback;
+ $this->parserOptions = array_merge( $this->parserOptions, $options );
+
if ( $isFile ) {
$this->validateFromFile( $input );
} else {
// case folding violates XML standard, turn it off
xml_parser_set_option( $parser, XML_OPTION_CASE_FOLDING, false );
xml_set_element_handler( $parser, array( $this, 'rootElementOpen' ), false );
+ if ( $this->parserOptions['processing_instruction_handler'] ) {
+ xml_set_processing_instruction_handler(
+ $parser,
+ array( $this, 'processingInstructionHandler' )
+ );
+ }
return $parser;
}
$this->filterMatch = true;
}
}
+
+ /**
+ * @param $parser
+ * @param $target
+ * @param $data
+ */
+ private function processingInstructionHandler( $parser, $target, $data ) {
+ if ( call_user_func( $this->parserOptions['processing_instruction_handler'], $target, $data ) ) {
+ // Filter hit!
+ $this->filterMatch = true;
+ }
+ }
}
$count = count( explode( ',', $params[$paramStart] ) );
$newParams[4] = $this->context->getLanguage()->formatNum( $count );
- return $this->parsedParametersDeleteLog = $newParams;
+ $this->parsedParametersDeleteLog = $newParams;
+ return $this->parsedParametersDeleteLog;
} else {
- return $this->parsedParametersDeleteLog = array_slice( $params, 0, 3 );
+ $this->parsedParametersDeleteLog = array_slice( $params, 0, 3 );
+ return $this->parsedParametersDeleteLog;
}
}
- return $this->parsedParametersDeleteLog = $params;
+ $this->parsedParametersDeleteLog = $params;
+ return $this->parsedParametersDeleteLog;
}
protected function parseBitField( $string ) {
/**
* Constructs new LogEntry from database result row.
* Supports rows from both logging and recentchanges table.
- * @param $row
+ * @param stdClass|array $row
* @return DatabaseLogEntry
*/
public static function newFromRow( $row ) {
- if ( is_array( $row ) && isset( $row['rc_logid'] ) ) {
- return new RCDatabaseLogEntry( (object)$row );
+ $row = (object)$row;
+ if ( isset( $row->rc_logid ) ) {
+ return new RCDatabaseLogEntry( $row );
} else {
return new self( $row );
}
* - wrap String Wrap the message in html (usually something like "<div ...>$1</div>").
* - flags Integer display flags (NO_ACTION_LINK,NO_EXTRA_USER_LINKS)
* - useRequestParams boolean Set true to use Pager-related parameters in the WebRequest
+ * - useMaster boolean Use master DB
* @return int Number of total log items (not limited by $lim)
*/
public static function showLogExtract(
'wrap' => "$1",
'flags' => 0,
'useRequestParams' => false,
+ 'useMaster' => false,
);
# The + operator appends elements of remaining keys from the right
# handed array to the left handed, whereas duplicated keys are NOT overwritten.
$pager->mIsBackwards = false;
}
+ if ( $param['useMaster'] ) {
+ $pager->mDb = wfGetDB( DB_MASTER );
+ }
if ( isset( $param['offset'] ) ) { # Tell pager to ignore WebRequest offset
$pager->setOffset( $param['offset'] );
}
// Bad things happens if the numbers are not in correct order
ksort( $params );
- return $this->parsedParameters = $params;
+ $this->parsedParameters = $params;
+ return $this->parsedParameters;
}
/**
}
if ( $this->entry->isDeleted( LogPage::DELETED_ACTION ) ) {
- return $this->revert = '';
+ $this->revert = '';
+ return $this->revert;
}
$title = $this->entry->getTarget();
* Set the log reader to return only entries by the given user.
*
* @param string $name (In)valid user name
- * @return bool
+ * @return void
*/
private function limitPerformer( $name ) {
if ( $name == '' ) {
- return false;
+ return;
}
$usertitle = Title::makeTitleSafe( NS_USER, $name );
if ( is_null( $usertitle ) ) {
- return false;
+ return;
}
/* Fetch userid at first, if known, provides awesome query plan afterwards */
$userid = User::idFromName( $name );
$this->mConds[] = $this->mDb->bitAnd( 'log_deleted', LogPage::SUPPRESSED_USER ) .
' != ' . LogPage::SUPPRESSED_USER;
}
+
$this->performer = $usertitle->getText();
}
*
* @param string|Title $page Title name
* @param string $pattern
- * @return bool
+ * @return void
*/
private function limitTitle( $page, $pattern ) {
global $wgMiserMode;
} else {
$title = Title::newFromText( $page );
if ( strlen( $page ) == 0 || !$title instanceof Title ) {
- return false;
+ return;
}
}
wfHostname(), $image->getName() ) );
return new MediaTransformError( 'thumbnail_error',
- $scalerParams['clientWidth'], $scalerParams['clientHeight'] );
+ $scalerParams['clientWidth'], $scalerParams['clientHeight'],
+ wfMessage( 'filemissing' )->text()
+ );
}
# Try a hook
} elseif ( $removed ) {
# Thumbnail was zero-byte and had to be removed
return new MediaTransformError( 'thumbnail_error',
- $scalerParams['clientWidth'], $scalerParams['clientHeight'] );
+ $scalerParams['clientWidth'], $scalerParams['clientHeight'],
+ wfMessage( 'unknown-error' )->text()
+ );
} elseif ( $mto ) {
return $mto;
} else {
global $wgSharpenReductionThreshold, $wgSharpenParameter, $wgMaxAnimatedGifArea,
$wgImageMagickTempDir, $wgImageMagickConvertCommand;
- $quality = '';
- $sharpen = '';
+ $quality = array();
+ $sharpen = array();
$scene = false;
- $animation_pre = '';
- $animation_post = '';
- $decoderHint = '';
+ $animation_pre = array();
+ $animation_post = array();
+ $decoderHint = array();
if ( $params['mimeType'] == 'image/jpeg' ) {
- $quality = "-quality 80"; // 80%
+ $quality = array( '-quality', '80' ); // 80%
# Sharpening, see bug 6193
if ( ( $params['physicalWidth'] + $params['physicalHeight'] )
/ ( $params['srcWidth'] + $params['srcHeight'] )
< $wgSharpenReductionThreshold
) {
- $sharpen = "-sharpen " . wfEscapeShellArg( $wgSharpenParameter );
+ $sharpen = array( '-sharpen', $wgSharpenParameter );
}
if ( version_compare( $this->getMagickVersion(), "6.5.6" ) >= 0 ) {
// JPEG decoder hint to reduce memory, available since IM 6.5.6-2
- $decoderHint = "-define jpeg:size={$params['physicalDimensions']}";
+ $decoderHint = array( '-define', "jpeg:size={$params['physicalDimensions']}" );
}
} elseif ( $params['mimeType'] == 'image/png' ) {
- $quality = "-quality 95"; // zlib 9, adaptive filtering
+ $quality = array( '-quality', '95' ); // zlib 9, adaptive filtering
} elseif ( $params['mimeType'] == 'image/gif' ) {
if ( $this->getImageArea( $image ) > $wgMaxAnimatedGifArea ) {
$scene = 0;
} elseif ( $this->isAnimatedImage( $image ) ) {
// Coalesce is needed to scale animated GIFs properly (bug 1017).
- $animation_pre = '-coalesce';
+ $animation_pre = array( '-coalesce' );
// We optimize the output, but -optimize is broken,
// use optimizeTransparency instead (bug 11822)
if ( version_compare( $this->getMagickVersion(), "6.3.5" ) >= 0 ) {
- $animation_post = '-fuzz 5% -layers optimizeTransparency';
+ $animation_post = array( '-fuzz', '5%', '-layers', 'optimizeTransparency' );
}
}
} elseif ( $params['mimeType'] == 'image/x-xcf' ) {
- $animation_post = '-layers merge';
+ $animation_post = array( '-layers', 'merge' );
}
// Use one thread only, to avoid deadlock bugs on OOM
$rotation = $this->getRotation( $image );
list( $width, $height ) = $this->extractPreRotationDimensions( $params, $rotation );
- $cmd =
- wfEscapeShellArg( $wgImageMagickConvertCommand ) .
+ $cmd = call_user_func_array( 'wfEscapeShellArg', array_merge(
+ array( $wgImageMagickConvertCommand ),
+ $quality,
// Specify white background color, will be used for transparent images
// in Internet Explorer/Windows instead of default black.
- " {$quality} -background white" .
- " {$decoderHint} " .
- wfEscapeShellArg( $this->escapeMagickInput( $params['srcPath'], $scene ) ) .
- " {$animation_pre}" .
+ array( '-background', 'white' ),
+ $decoderHint,
+ array( $this->escapeMagickInput( $params['srcPath'], $scene ) ),
+ $animation_pre,
// For the -thumbnail option a "!" is needed to force exact size,
// or ImageMagick may decide your ratio is wrong and slice off
// a pixel.
- " -thumbnail " . wfEscapeShellArg( "{$width}x{$height}!" ) .
+ array( '-thumbnail', "{$width}x{$height}!" ),
// Add the source url as a comment to the thumb, but don't add the flag if there's no comment
( $params['comment'] !== ''
- ? " -set comment " . wfEscapeShellArg( $this->escapeMagickProperty( $params['comment'] ) )
- : '' ) .
- " -depth 8 $sharpen " .
- " -rotate -$rotation " .
- " {$animation_post} " .
- wfEscapeShellArg( $this->escapeMagickOutput( $params['dstPath'] ) );
+ ? array( '-set', 'comment', $this->escapeMagickProperty( $params['comment'] ) )
+ : array() ),
+ array( '-depth', 8 ),
+ $sharpen,
+ array( '-rotate', "-$rotation" ),
+ $animation_post,
+ array( $this->escapeMagickOutput( $params['dstPath'] ) ) ) );
wfDebug( __METHOD__ . ": running ImageMagick: $cmd\n" );
wfProfileIn( 'convert' );
$dst = wfEscapeShellArg( $params['dstPath'] );
$cmd = $wgCustomConvertCommand;
$cmd = str_replace( '%s', $src, str_replace( '%d', $dst, $cmd ) ); # Filenames
- $cmd = str_replace( '%h', $params['physicalHeight'],
- str_replace( '%w', $params['physicalWidth'], $cmd ) ); # Size
+ $cmd = str_replace( '%h', wfEscapeShellArg( $params['physicalHeight'] ),
+ str_replace( '%w', wfEscapeShellArg( $params['physicalWidth'] ), $cmd ) ); # Size
wfDebug( __METHOD__ . ": Running custom convert command $cmd\n" );
wfProfileIn( 'convert' );
$retval = 0;
case 'im':
$cmd = wfEscapeShellArg( $wgImageMagickConvertCommand ) . " " .
wfEscapeShellArg( $this->escapeMagickInput( $params['srcPath'], $scene ) ) .
- " -rotate -$rotation " .
+ " -rotate " . wfEscapeShellArg( "-$rotation" ) . " " .
wfEscapeShellArg( $this->escapeMagickOutput( $params['dstPath'] ) );
wfDebug( __METHOD__ . ": running ImageMagick: $cmd\n" );
wfProfileIn( 'convert' );
$srcPath = $image->getLocalRefPath();
# Use a subshell (brackets) to aggregate stderr from both pipeline commands
# before redirecting it to the overall stdout. This works in both Linux and Windows XP.
- $cmd = '(' . wfEscapeShellArg( $wgDjvuRenderer ) . " -format=ppm -page={$page}" .
- " -size={$params['physicalWidth']}x{$params['physicalHeight']} " .
- wfEscapeShellArg( $srcPath );
+ $cmd = '(' . wfEscapeShellArg(
+ $wgDjvuRenderer,
+ "-format=ppm",
+ "-page={$page}",
+ "-size={$params['physicalWidth']}x{$params['physicalHeight']}",
+ $srcPath );
if ( $wgDjvuPostProcessor ) {
$cmd .= " | {$wgDjvuPostProcessor}";
}
if ( !isset( $params['page'] ) ) {
$params['page'] = 1;
} else {
+ $params['page'] = intval( $params['page'] );
if ( $params['page'] > $image->pageCount() ) {
$params['page'] = $image->pageCount();
}
--- /dev/null
+/CompositionExclusions.txt
+/DerivedNormalizationProps.txt
+/NormalizationCorrections.txt
+/NormalizationTest.txt
+/UTF-8-test.txt
+/UnicodeData.txt
+/testdata
FETCH=wget
#FETCH=fetch
-all : UtfNormalData.inc Utf8Case.php
+all : UtfNormalData.inc
UtfNormalData.inc : UtfNormalGenerate.php UtfNormalUtil.php UnicodeData.txt CompositionExclusions.txt NormalizationCorrections.txt DerivedNormalizationProps.txt
$(PHP) UtfNormalGenerate.php
-Utf8Case.php : Utf8CaseGenerate.php UtfNormalUtil.php UnicodeData.txt
- $(PHP) Utf8CaseGenerate.php
-
test : testutf8 UtfNormalTest.php UtfNormalData.inc NormalizationTest.txt
$(PHP) UtfNormalTest.php
+++ /dev/null
-<?php
-/**
- * Simple 1:1 upper/lowercase switching arrays for utf-8 text.
- * Won't get context-sensitive things yet.
- *
- * Hack for bugs in ucfirst() and company
- *
- * These are pulled from memcached if possible, as this is faster than filling
- * up a big array manually.
- *
- * @file
- * @ingroup Language
- */
-
-/**
- * Translation array to get upper case character
- */
-$wikiUpperChars = array(
- 'a' => 'A',
- 'b' => 'B',
- 'c' => 'C',
- 'd' => 'D',
- 'e' => 'E',
- 'f' => 'F',
- 'g' => 'G',
- 'h' => 'H',
- 'i' => 'I',
- 'j' => 'J',
- 'k' => 'K',
- 'l' => 'L',
- 'm' => 'M',
- 'n' => 'N',
- 'o' => 'O',
- 'p' => 'P',
- 'q' => 'Q',
- 'r' => 'R',
- 's' => 'S',
- 't' => 'T',
- 'u' => 'U',
- 'v' => 'V',
- 'w' => 'W',
- 'x' => 'X',
- 'y' => 'Y',
- 'z' => 'Z',
- 'µ' => 'Μ',
- 'à' => 'À',
- 'á' => 'Á',
- 'â' => 'Â',
- 'ã' => 'Ã',
- 'ä' => 'Ä',
- 'å' => 'Å',
- 'æ' => 'Æ',
- 'ç' => 'Ç',
- 'è' => 'È',
- 'é' => 'É',
- 'ê' => 'Ê',
- 'ë' => 'Ë',
- 'ì' => 'Ì',
- 'í' => 'Í',
- 'î' => 'Î',
- 'ï' => 'Ï',
- 'ð' => 'Ð',
- 'ñ' => 'Ñ',
- 'ò' => 'Ò',
- 'ó' => 'Ó',
- 'ô' => 'Ô',
- 'õ' => 'Õ',
- 'ö' => 'Ö',
- 'ø' => 'Ø',
- 'ù' => 'Ù',
- 'ú' => 'Ú',
- 'û' => 'Û',
- 'ü' => 'Ü',
- 'ý' => 'Ý',
- 'þ' => 'Þ',
- 'ÿ' => 'Ÿ',
- 'ā' => 'Ā',
- 'ă' => 'Ă',
- 'ą' => 'Ą',
- 'ć' => 'Ć',
- 'ĉ' => 'Ĉ',
- 'ċ' => 'Ċ',
- 'č' => 'Č',
- 'ď' => 'Ď',
- 'đ' => 'Đ',
- 'ē' => 'Ē',
- 'ĕ' => 'Ĕ',
- 'ė' => 'Ė',
- 'ę' => 'Ę',
- 'ě' => 'Ě',
- 'ĝ' => 'Ĝ',
- 'ğ' => 'Ğ',
- 'ġ' => 'Ġ',
- 'ģ' => 'Ģ',
- 'ĥ' => 'Ĥ',
- 'ħ' => 'Ħ',
- 'ĩ' => 'Ĩ',
- 'ī' => 'Ī',
- 'ĭ' => 'Ĭ',
- 'į' => 'Į',
- 'ı' => 'I',
- 'ij' => 'IJ',
- 'ĵ' => 'Ĵ',
- 'ķ' => 'Ķ',
- 'ĺ' => 'Ĺ',
- 'ļ' => 'Ļ',
- 'ľ' => 'Ľ',
- 'ŀ' => 'Ŀ',
- 'ł' => 'Ł',
- 'ń' => 'Ń',
- 'ņ' => 'Ņ',
- 'ň' => 'Ň',
- 'ŋ' => 'Ŋ',
- 'ō' => 'Ō',
- 'ŏ' => 'Ŏ',
- 'ő' => 'Ő',
- 'œ' => 'Œ',
- 'ŕ' => 'Ŕ',
- 'ŗ' => 'Ŗ',
- 'ř' => 'Ř',
- 'ś' => 'Ś',
- 'ŝ' => 'Ŝ',
- 'ş' => 'Ş',
- 'š' => 'Š',
- 'ţ' => 'Ţ',
- 'ť' => 'Ť',
- 'ŧ' => 'Ŧ',
- 'ũ' => 'Ũ',
- 'ū' => 'Ū',
- 'ŭ' => 'Ŭ',
- 'ů' => 'Ů',
- 'ű' => 'Ű',
- 'ų' => 'Ų',
- 'ŵ' => 'Ŵ',
- 'ŷ' => 'Ŷ',
- 'ź' => 'Ź',
- 'ż' => 'Ż',
- 'ž' => 'Ž',
- 'ſ' => 'S',
- 'ƀ' => 'Ƀ',
- 'ƃ' => 'Ƃ',
- 'ƅ' => 'Ƅ',
- 'ƈ' => 'Ƈ',
- 'ƌ' => 'Ƌ',
- 'ƒ' => 'Ƒ',
- 'ƕ' => 'Ƕ',
- 'ƙ' => 'Ƙ',
- 'ƚ' => 'Ƚ',
- 'ƞ' => 'Ƞ',
- 'ơ' => 'Ơ',
- 'ƣ' => 'Ƣ',
- 'ƥ' => 'Ƥ',
- 'ƨ' => 'Ƨ',
- 'ƭ' => 'Ƭ',
- 'ư' => 'Ư',
- 'ƴ' => 'Ƴ',
- 'ƶ' => 'Ƶ',
- 'ƹ' => 'Ƹ',
- 'ƽ' => 'Ƽ',
- 'ƿ' => 'Ƿ',
- 'Dž' => 'DŽ',
- 'dž' => 'DŽ',
- 'Lj' => 'LJ',
- 'lj' => 'LJ',
- 'Nj' => 'NJ',
- 'nj' => 'NJ',
- 'ǎ' => 'Ǎ',
- 'ǐ' => 'Ǐ',
- 'ǒ' => 'Ǒ',
- 'ǔ' => 'Ǔ',
- 'ǖ' => 'Ǖ',
- 'ǘ' => 'Ǘ',
- 'ǚ' => 'Ǚ',
- 'ǜ' => 'Ǜ',
- 'ǝ' => 'Ǝ',
- 'ǟ' => 'Ǟ',
- 'ǡ' => 'Ǡ',
- 'ǣ' => 'Ǣ',
- 'ǥ' => 'Ǥ',
- 'ǧ' => 'Ǧ',
- 'ǩ' => 'Ǩ',
- 'ǫ' => 'Ǫ',
- 'ǭ' => 'Ǭ',
- 'ǯ' => 'Ǯ',
- 'Dz' => 'DZ',
- 'dz' => 'DZ',
- 'ǵ' => 'Ǵ',
- 'ǹ' => 'Ǹ',
- 'ǻ' => 'Ǻ',
- 'ǽ' => 'Ǽ',
- 'ǿ' => 'Ǿ',
- 'ȁ' => 'Ȁ',
- 'ȃ' => 'Ȃ',
- 'ȅ' => 'Ȅ',
- 'ȇ' => 'Ȇ',
- 'ȉ' => 'Ȉ',
- 'ȋ' => 'Ȋ',
- 'ȍ' => 'Ȍ',
- 'ȏ' => 'Ȏ',
- 'ȑ' => 'Ȑ',
- 'ȓ' => 'Ȓ',
- 'ȕ' => 'Ȕ',
- 'ȗ' => 'Ȗ',
- 'ș' => 'Ș',
- 'ț' => 'Ț',
- 'ȝ' => 'Ȝ',
- 'ȟ' => 'Ȟ',
- 'ȣ' => 'Ȣ',
- 'ȥ' => 'Ȥ',
- 'ȧ' => 'Ȧ',
- 'ȩ' => 'Ȩ',
- 'ȫ' => 'Ȫ',
- 'ȭ' => 'Ȭ',
- 'ȯ' => 'Ȯ',
- 'ȱ' => 'Ȱ',
- 'ȳ' => 'Ȳ',
- 'ȼ' => 'Ȼ',
- 'ȿ' => 'Ȿ',
- 'ɀ' => 'Ɀ',
- 'ɂ' => 'Ɂ',
- 'ɇ' => 'Ɇ',
- 'ɉ' => 'Ɉ',
- 'ɋ' => 'Ɋ',
- 'ɍ' => 'Ɍ',
- 'ɏ' => 'Ɏ',
- 'ɐ' => 'Ɐ',
- 'ɑ' => 'Ɑ',
- 'ɒ' => 'Ɒ',
- 'ɓ' => 'Ɓ',
- 'ɔ' => 'Ɔ',
- 'ɖ' => 'Ɖ',
- 'ɗ' => 'Ɗ',
- 'ə' => 'Ə',
- 'ɛ' => 'Ɛ',
- 'ɠ' => 'Ɠ',
- 'ɣ' => 'Ɣ',
- 'ɥ' => 'Ɥ',
- 'ɨ' => 'Ɨ',
- 'ɩ' => 'Ɩ',
- 'ɫ' => 'Ɫ',
- 'ɯ' => 'Ɯ',
- 'ɱ' => 'Ɱ',
- 'ɲ' => 'Ɲ',
- 'ɵ' => 'Ɵ',
- 'ɽ' => 'Ɽ',
- 'ʀ' => 'Ʀ',
- 'ʃ' => 'Ʃ',
- 'ʈ' => 'Ʈ',
- 'ʉ' => 'Ʉ',
- 'ʊ' => 'Ʊ',
- 'ʋ' => 'Ʋ',
- 'ʌ' => 'Ʌ',
- 'ʒ' => 'Ʒ',
- 'ͅ' => 'Ι',
- 'ͱ' => 'Ͱ',
- 'ͳ' => 'Ͳ',
- 'ͷ' => 'Ͷ',
- 'ͻ' => 'Ͻ',
- 'ͼ' => 'Ͼ',
- 'ͽ' => 'Ͽ',
- 'ά' => 'Ά',
- 'έ' => 'Έ',
- 'ή' => 'Ή',
- 'ί' => 'Ί',
- 'α' => 'Α',
- 'β' => 'Β',
- 'γ' => 'Γ',
- 'δ' => 'Δ',
- 'ε' => 'Ε',
- 'ζ' => 'Ζ',
- 'η' => 'Η',
- 'θ' => 'Θ',
- 'ι' => 'Ι',
- 'κ' => 'Κ',
- 'λ' => 'Λ',
- 'μ' => 'Μ',
- 'ν' => 'Ν',
- 'ξ' => 'Ξ',
- 'ο' => 'Ο',
- 'π' => 'Π',
- 'ρ' => 'Ρ',
- 'ς' => 'Σ',
- 'σ' => 'Σ',
- 'τ' => 'Τ',
- 'υ' => 'Υ',
- 'φ' => 'Φ',
- 'χ' => 'Χ',
- 'ψ' => 'Ψ',
- 'ω' => 'Ω',
- 'ϊ' => 'Ϊ',
- 'ϋ' => 'Ϋ',
- 'ό' => 'Ό',
- 'ύ' => 'Ύ',
- 'ώ' => 'Ώ',
- 'ϐ' => 'Β',
- 'ϑ' => 'Θ',
- 'ϕ' => 'Φ',
- 'ϖ' => 'Π',
- 'ϗ' => 'Ϗ',
- 'ϙ' => 'Ϙ',
- 'ϛ' => 'Ϛ',
- 'ϝ' => 'Ϝ',
- 'ϟ' => 'Ϟ',
- 'ϡ' => 'Ϡ',
- 'ϣ' => 'Ϣ',
- 'ϥ' => 'Ϥ',
- 'ϧ' => 'Ϧ',
- 'ϩ' => 'Ϩ',
- 'ϫ' => 'Ϫ',
- 'ϭ' => 'Ϭ',
- 'ϯ' => 'Ϯ',
- 'ϰ' => 'Κ',
- 'ϱ' => 'Ρ',
- 'ϲ' => 'Ϲ',
- 'ϵ' => 'Ε',
- 'ϸ' => 'Ϸ',
- 'ϻ' => 'Ϻ',
- 'а' => 'А',
- 'б' => 'Б',
- 'в' => 'В',
- 'г' => 'Г',
- 'д' => 'Д',
- 'е' => 'Е',
- 'ж' => 'Ж',
- 'з' => 'З',
- 'и' => 'И',
- 'й' => 'Й',
- 'к' => 'К',
- 'л' => 'Л',
- 'м' => 'М',
- 'н' => 'Н',
- 'о' => 'О',
- 'п' => 'П',
- 'р' => 'Р',
- 'с' => 'С',
- 'т' => 'Т',
- 'у' => 'У',
- 'ф' => 'Ф',
- 'х' => 'Х',
- 'ц' => 'Ц',
- 'ч' => 'Ч',
- 'ш' => 'Ш',
- 'щ' => 'Щ',
- 'ъ' => 'Ъ',
- 'ы' => 'Ы',
- 'ь' => 'Ь',
- 'э' => 'Э',
- 'ю' => 'Ю',
- 'я' => 'Я',
- 'ѐ' => 'Ѐ',
- 'ё' => 'Ё',
- 'ђ' => 'Ђ',
- 'ѓ' => 'Ѓ',
- 'є' => 'Є',
- 'ѕ' => 'Ѕ',
- 'і' => 'І',
- 'ї' => 'Ї',
- 'ј' => 'Ј',
- 'љ' => 'Љ',
- 'њ' => 'Њ',
- 'ћ' => 'Ћ',
- 'ќ' => 'Ќ',
- 'ѝ' => 'Ѝ',
- 'ў' => 'Ў',
- 'џ' => 'Џ',
- 'ѡ' => 'Ѡ',
- 'ѣ' => 'Ѣ',
- 'ѥ' => 'Ѥ',
- 'ѧ' => 'Ѧ',
- 'ѩ' => 'Ѩ',
- 'ѫ' => 'Ѫ',
- 'ѭ' => 'Ѭ',
- 'ѯ' => 'Ѯ',
- 'ѱ' => 'Ѱ',
- 'ѳ' => 'Ѳ',
- 'ѵ' => 'Ѵ',
- 'ѷ' => 'Ѷ',
- 'ѹ' => 'Ѹ',
- 'ѻ' => 'Ѻ',
- 'ѽ' => 'Ѽ',
- 'ѿ' => 'Ѿ',
- 'ҁ' => 'Ҁ',
- 'ҋ' => 'Ҋ',
- 'ҍ' => 'Ҍ',
- 'ҏ' => 'Ҏ',
- 'ґ' => 'Ґ',
- 'ғ' => 'Ғ',
- 'ҕ' => 'Ҕ',
- 'җ' => 'Җ',
- 'ҙ' => 'Ҙ',
- 'қ' => 'Қ',
- 'ҝ' => 'Ҝ',
- 'ҟ' => 'Ҟ',
- 'ҡ' => 'Ҡ',
- 'ң' => 'Ң',
- 'ҥ' => 'Ҥ',
- 'ҧ' => 'Ҧ',
- 'ҩ' => 'Ҩ',
- 'ҫ' => 'Ҫ',
- 'ҭ' => 'Ҭ',
- 'ү' => 'Ү',
- 'ұ' => 'Ұ',
- 'ҳ' => 'Ҳ',
- 'ҵ' => 'Ҵ',
- 'ҷ' => 'Ҷ',
- 'ҹ' => 'Ҹ',
- 'һ' => 'Һ',
- 'ҽ' => 'Ҽ',
- 'ҿ' => 'Ҿ',
- 'ӂ' => 'Ӂ',
- 'ӄ' => 'Ӄ',
- 'ӆ' => 'Ӆ',
- 'ӈ' => 'Ӈ',
- 'ӊ' => 'Ӊ',
- 'ӌ' => 'Ӌ',
- 'ӎ' => 'Ӎ',
- 'ӏ' => 'Ӏ',
- 'ӑ' => 'Ӑ',
- 'ӓ' => 'Ӓ',
- 'ӕ' => 'Ӕ',
- 'ӗ' => 'Ӗ',
- 'ә' => 'Ә',
- 'ӛ' => 'Ӛ',
- 'ӝ' => 'Ӝ',
- 'ӟ' => 'Ӟ',
- 'ӡ' => 'Ӡ',
- 'ӣ' => 'Ӣ',
- 'ӥ' => 'Ӥ',
- 'ӧ' => 'Ӧ',
- 'ө' => 'Ө',
- 'ӫ' => 'Ӫ',
- 'ӭ' => 'Ӭ',
- 'ӯ' => 'Ӯ',
- 'ӱ' => 'Ӱ',
- 'ӳ' => 'Ӳ',
- 'ӵ' => 'Ӵ',
- 'ӷ' => 'Ӷ',
- 'ӹ' => 'Ӹ',
- 'ӻ' => 'Ӻ',
- 'ӽ' => 'Ӽ',
- 'ӿ' => 'Ӿ',
- 'ԁ' => 'Ԁ',
- 'ԃ' => 'Ԃ',
- 'ԅ' => 'Ԅ',
- 'ԇ' => 'Ԇ',
- 'ԉ' => 'Ԉ',
- 'ԋ' => 'Ԋ',
- 'ԍ' => 'Ԍ',
- 'ԏ' => 'Ԏ',
- 'ԑ' => 'Ԑ',
- 'ԓ' => 'Ԓ',
- 'ԕ' => 'Ԕ',
- 'ԗ' => 'Ԗ',
- 'ԙ' => 'Ԙ',
- 'ԛ' => 'Ԛ',
- 'ԝ' => 'Ԝ',
- 'ԟ' => 'Ԟ',
- 'ԡ' => 'Ԡ',
- 'ԣ' => 'Ԣ',
- 'ԥ' => 'Ԥ',
- 'ԧ' => 'Ԧ',
- 'ա' => 'Ա',
- 'բ' => 'Բ',
- 'գ' => 'Գ',
- 'դ' => 'Դ',
- 'ե' => 'Ե',
- 'զ' => 'Զ',
- 'է' => 'Է',
- 'ը' => 'Ը',
- 'թ' => 'Թ',
- 'ժ' => 'Ժ',
- 'ի' => 'Ի',
- 'լ' => 'Լ',
- 'խ' => 'Խ',
- 'ծ' => 'Ծ',
- 'կ' => 'Կ',
- 'հ' => 'Հ',
- 'ձ' => 'Ձ',
- 'ղ' => 'Ղ',
- 'ճ' => 'Ճ',
- 'մ' => 'Մ',
- 'յ' => 'Յ',
- 'ն' => 'Ն',
- 'շ' => 'Շ',
- 'ո' => 'Ո',
- 'չ' => 'Չ',
- 'պ' => 'Պ',
- 'ջ' => 'Ջ',
- 'ռ' => 'Ռ',
- 'ս' => 'Ս',
- 'վ' => 'Վ',
- 'տ' => 'Տ',
- 'ր' => 'Ր',
- 'ց' => 'Ց',
- 'ւ' => 'Ւ',
- 'փ' => 'Փ',
- 'ք' => 'Ք',
- 'օ' => 'Օ',
- 'ֆ' => 'Ֆ',
- 'ᵹ' => 'Ᵹ',
- 'ᵽ' => 'Ᵽ',
- 'ḁ' => 'Ḁ',
- 'ḃ' => 'Ḃ',
- 'ḅ' => 'Ḅ',
- 'ḇ' => 'Ḇ',
- 'ḉ' => 'Ḉ',
- 'ḋ' => 'Ḋ',
- 'ḍ' => 'Ḍ',
- 'ḏ' => 'Ḏ',
- 'ḑ' => 'Ḑ',
- 'ḓ' => 'Ḓ',
- 'ḕ' => 'Ḕ',
- 'ḗ' => 'Ḗ',
- 'ḙ' => 'Ḙ',
- 'ḛ' => 'Ḛ',
- 'ḝ' => 'Ḝ',
- 'ḟ' => 'Ḟ',
- 'ḡ' => 'Ḡ',
- 'ḣ' => 'Ḣ',
- 'ḥ' => 'Ḥ',
- 'ḧ' => 'Ḧ',
- 'ḩ' => 'Ḩ',
- 'ḫ' => 'Ḫ',
- 'ḭ' => 'Ḭ',
- 'ḯ' => 'Ḯ',
- 'ḱ' => 'Ḱ',
- 'ḳ' => 'Ḳ',
- 'ḵ' => 'Ḵ',
- 'ḷ' => 'Ḷ',
- 'ḹ' => 'Ḹ',
- 'ḻ' => 'Ḻ',
- 'ḽ' => 'Ḽ',
- 'ḿ' => 'Ḿ',
- 'ṁ' => 'Ṁ',
- 'ṃ' => 'Ṃ',
- 'ṅ' => 'Ṅ',
- 'ṇ' => 'Ṇ',
- 'ṉ' => 'Ṉ',
- 'ṋ' => 'Ṋ',
- 'ṍ' => 'Ṍ',
- 'ṏ' => 'Ṏ',
- 'ṑ' => 'Ṑ',
- 'ṓ' => 'Ṓ',
- 'ṕ' => 'Ṕ',
- 'ṗ' => 'Ṗ',
- 'ṙ' => 'Ṙ',
- 'ṛ' => 'Ṛ',
- 'ṝ' => 'Ṝ',
- 'ṟ' => 'Ṟ',
- 'ṡ' => 'Ṡ',
- 'ṣ' => 'Ṣ',
- 'ṥ' => 'Ṥ',
- 'ṧ' => 'Ṧ',
- 'ṩ' => 'Ṩ',
- 'ṫ' => 'Ṫ',
- 'ṭ' => 'Ṭ',
- 'ṯ' => 'Ṯ',
- 'ṱ' => 'Ṱ',
- 'ṳ' => 'Ṳ',
- 'ṵ' => 'Ṵ',
- 'ṷ' => 'Ṷ',
- 'ṹ' => 'Ṹ',
- 'ṻ' => 'Ṻ',
- 'ṽ' => 'Ṽ',
- 'ṿ' => 'Ṿ',
- 'ẁ' => 'Ẁ',
- 'ẃ' => 'Ẃ',
- 'ẅ' => 'Ẅ',
- 'ẇ' => 'Ẇ',
- 'ẉ' => 'Ẉ',
- 'ẋ' => 'Ẋ',
- 'ẍ' => 'Ẍ',
- 'ẏ' => 'Ẏ',
- 'ẑ' => 'Ẑ',
- 'ẓ' => 'Ẓ',
- 'ẕ' => 'Ẕ',
- 'ẛ' => 'Ṡ',
- 'ạ' => 'Ạ',
- 'ả' => 'Ả',
- 'ấ' => 'Ấ',
- 'ầ' => 'Ầ',
- 'ẩ' => 'Ẩ',
- 'ẫ' => 'Ẫ',
- 'ậ' => 'Ậ',
- 'ắ' => 'Ắ',
- 'ằ' => 'Ằ',
- 'ẳ' => 'Ẳ',
- 'ẵ' => 'Ẵ',
- 'ặ' => 'Ặ',
- 'ẹ' => 'Ẹ',
- 'ẻ' => 'Ẻ',
- 'ẽ' => 'Ẽ',
- 'ế' => 'Ế',
- 'ề' => 'Ề',
- 'ể' => 'Ể',
- 'ễ' => 'Ễ',
- 'ệ' => 'Ệ',
- 'ỉ' => 'Ỉ',
- 'ị' => 'Ị',
- 'ọ' => 'Ọ',
- 'ỏ' => 'Ỏ',
- 'ố' => 'Ố',
- 'ồ' => 'Ồ',
- 'ổ' => 'Ổ',
- 'ỗ' => 'Ỗ',
- 'ộ' => 'Ộ',
- 'ớ' => 'Ớ',
- 'ờ' => 'Ờ',
- 'ở' => 'Ở',
- 'ỡ' => 'Ỡ',
- 'ợ' => 'Ợ',
- 'ụ' => 'Ụ',
- 'ủ' => 'Ủ',
- 'ứ' => 'Ứ',
- 'ừ' => 'Ừ',
- 'ử' => 'Ử',
- 'ữ' => 'Ữ',
- 'ự' => 'Ự',
- 'ỳ' => 'Ỳ',
- 'ỵ' => 'Ỵ',
- 'ỷ' => 'Ỷ',
- 'ỹ' => 'Ỹ',
- 'ỻ' => 'Ỻ',
- 'ỽ' => 'Ỽ',
- 'ỿ' => 'Ỿ',
- 'ἀ' => 'Ἀ',
- 'ἁ' => 'Ἁ',
- 'ἂ' => 'Ἂ',
- 'ἃ' => 'Ἃ',
- 'ἄ' => 'Ἄ',
- 'ἅ' => 'Ἅ',
- 'ἆ' => 'Ἆ',
- 'ἇ' => 'Ἇ',
- 'ἐ' => 'Ἐ',
- 'ἑ' => 'Ἑ',
- 'ἒ' => 'Ἒ',
- 'ἓ' => 'Ἓ',
- 'ἔ' => 'Ἔ',
- 'ἕ' => 'Ἕ',
- 'ἠ' => 'Ἠ',
- 'ἡ' => 'Ἡ',
- 'ἢ' => 'Ἢ',
- 'ἣ' => 'Ἣ',
- 'ἤ' => 'Ἤ',
- 'ἥ' => 'Ἥ',
- 'ἦ' => 'Ἦ',
- 'ἧ' => 'Ἧ',
- 'ἰ' => 'Ἰ',
- 'ἱ' => 'Ἱ',
- 'ἲ' => 'Ἲ',
- 'ἳ' => 'Ἳ',
- 'ἴ' => 'Ἴ',
- 'ἵ' => 'Ἵ',
- 'ἶ' => 'Ἶ',
- 'ἷ' => 'Ἷ',
- 'ὀ' => 'Ὀ',
- 'ὁ' => 'Ὁ',
- 'ὂ' => 'Ὂ',
- 'ὃ' => 'Ὃ',
- 'ὄ' => 'Ὄ',
- 'ὅ' => 'Ὅ',
- 'ὑ' => 'Ὑ',
- 'ὓ' => 'Ὓ',
- 'ὕ' => 'Ὕ',
- 'ὗ' => 'Ὗ',
- 'ὠ' => 'Ὠ',
- 'ὡ' => 'Ὡ',
- 'ὢ' => 'Ὢ',
- 'ὣ' => 'Ὣ',
- 'ὤ' => 'Ὤ',
- 'ὥ' => 'Ὥ',
- 'ὦ' => 'Ὦ',
- 'ὧ' => 'Ὧ',
- 'ὰ' => 'Ὰ',
- 'ά' => 'Ά',
- 'ὲ' => 'Ὲ',
- 'έ' => 'Έ',
- 'ὴ' => 'Ὴ',
- 'ή' => 'Ή',
- 'ὶ' => 'Ὶ',
- 'ί' => 'Ί',
- 'ὸ' => 'Ὸ',
- 'ό' => 'Ό',
- 'ὺ' => 'Ὺ',
- 'ύ' => 'Ύ',
- 'ὼ' => 'Ὼ',
- 'ώ' => 'Ώ',
- 'ᾀ' => 'ᾈ',
- 'ᾁ' => 'ᾉ',
- 'ᾂ' => 'ᾊ',
- 'ᾃ' => 'ᾋ',
- 'ᾄ' => 'ᾌ',
- 'ᾅ' => 'ᾍ',
- 'ᾆ' => 'ᾎ',
- 'ᾇ' => 'ᾏ',
- 'ᾐ' => 'ᾘ',
- 'ᾑ' => 'ᾙ',
- 'ᾒ' => 'ᾚ',
- 'ᾓ' => 'ᾛ',
- 'ᾔ' => 'ᾜ',
- 'ᾕ' => 'ᾝ',
- 'ᾖ' => 'ᾞ',
- 'ᾗ' => 'ᾟ',
- 'ᾠ' => 'ᾨ',
- 'ᾡ' => 'ᾩ',
- 'ᾢ' => 'ᾪ',
- 'ᾣ' => 'ᾫ',
- 'ᾤ' => 'ᾬ',
- 'ᾥ' => 'ᾭ',
- 'ᾦ' => 'ᾮ',
- 'ᾧ' => 'ᾯ',
- 'ᾰ' => 'Ᾰ',
- 'ᾱ' => 'Ᾱ',
- 'ᾳ' => 'ᾼ',
- 'ι' => 'Ι',
- 'ῃ' => 'ῌ',
- 'ῐ' => 'Ῐ',
- 'ῑ' => 'Ῑ',
- 'ῠ' => 'Ῠ',
- 'ῡ' => 'Ῡ',
- 'ῥ' => 'Ῥ',
- 'ῳ' => 'ῼ',
- 'ⅎ' => 'Ⅎ',
- 'ⅰ' => 'Ⅰ',
- 'ⅱ' => 'Ⅱ',
- 'ⅲ' => 'Ⅲ',
- 'ⅳ' => 'Ⅳ',
- 'ⅴ' => 'Ⅴ',
- 'ⅵ' => 'Ⅵ',
- 'ⅶ' => 'Ⅶ',
- 'ⅷ' => 'Ⅷ',
- 'ⅸ' => 'Ⅸ',
- 'ⅹ' => 'Ⅹ',
- 'ⅺ' => 'Ⅺ',
- 'ⅻ' => 'Ⅻ',
- 'ⅼ' => 'Ⅼ',
- 'ⅽ' => 'Ⅽ',
- 'ⅾ' => 'Ⅾ',
- 'ⅿ' => 'Ⅿ',
- 'ↄ' => 'Ↄ',
- 'ⓐ' => 'Ⓐ',
- 'ⓑ' => 'Ⓑ',
- 'ⓒ' => 'Ⓒ',
- 'ⓓ' => 'Ⓓ',
- 'ⓔ' => 'Ⓔ',
- 'ⓕ' => 'Ⓕ',
- 'ⓖ' => 'Ⓖ',
- 'ⓗ' => 'Ⓗ',
- 'ⓘ' => 'Ⓘ',
- 'ⓙ' => 'Ⓙ',
- 'ⓚ' => 'Ⓚ',
- 'ⓛ' => 'Ⓛ',
- 'ⓜ' => 'Ⓜ',
- 'ⓝ' => 'Ⓝ',
- 'ⓞ' => 'Ⓞ',
- 'ⓟ' => 'Ⓟ',
- 'ⓠ' => 'Ⓠ',
- 'ⓡ' => 'Ⓡ',
- 'ⓢ' => 'Ⓢ',
- 'ⓣ' => 'Ⓣ',
- 'ⓤ' => 'Ⓤ',
- 'ⓥ' => 'Ⓥ',
- 'ⓦ' => 'Ⓦ',
- 'ⓧ' => 'Ⓧ',
- 'ⓨ' => 'Ⓨ',
- 'ⓩ' => 'Ⓩ',
- 'ⰰ' => 'Ⰰ',
- 'ⰱ' => 'Ⰱ',
- 'ⰲ' => 'Ⰲ',
- 'ⰳ' => 'Ⰳ',
- 'ⰴ' => 'Ⰴ',
- 'ⰵ' => 'Ⰵ',
- 'ⰶ' => 'Ⰶ',
- 'ⰷ' => 'Ⰷ',
- 'ⰸ' => 'Ⰸ',
- 'ⰹ' => 'Ⰹ',
- 'ⰺ' => 'Ⰺ',
- 'ⰻ' => 'Ⰻ',
- 'ⰼ' => 'Ⰼ',
- 'ⰽ' => 'Ⰽ',
- 'ⰾ' => 'Ⰾ',
- 'ⰿ' => 'Ⰿ',
- 'ⱀ' => 'Ⱀ',
- 'ⱁ' => 'Ⱁ',
- 'ⱂ' => 'Ⱂ',
- 'ⱃ' => 'Ⱃ',
- 'ⱄ' => 'Ⱄ',
- 'ⱅ' => 'Ⱅ',
- 'ⱆ' => 'Ⱆ',
- 'ⱇ' => 'Ⱇ',
- 'ⱈ' => 'Ⱈ',
- 'ⱉ' => 'Ⱉ',
- 'ⱊ' => 'Ⱊ',
- 'ⱋ' => 'Ⱋ',
- 'ⱌ' => 'Ⱌ',
- 'ⱍ' => 'Ⱍ',
- 'ⱎ' => 'Ⱎ',
- 'ⱏ' => 'Ⱏ',
- 'ⱐ' => 'Ⱐ',
- 'ⱑ' => 'Ⱑ',
- 'ⱒ' => 'Ⱒ',
- 'ⱓ' => 'Ⱓ',
- 'ⱔ' => 'Ⱔ',
- 'ⱕ' => 'Ⱕ',
- 'ⱖ' => 'Ⱖ',
- 'ⱗ' => 'Ⱗ',
- 'ⱘ' => 'Ⱘ',
- 'ⱙ' => 'Ⱙ',
- 'ⱚ' => 'Ⱚ',
- 'ⱛ' => 'Ⱛ',
- 'ⱜ' => 'Ⱜ',
- 'ⱝ' => 'Ⱝ',
- 'ⱞ' => 'Ⱞ',
- 'ⱡ' => 'Ⱡ',
- 'ⱥ' => 'Ⱥ',
- 'ⱦ' => 'Ⱦ',
- 'ⱨ' => 'Ⱨ',
- 'ⱪ' => 'Ⱪ',
- 'ⱬ' => 'Ⱬ',
- 'ⱳ' => 'Ⱳ',
- 'ⱶ' => 'Ⱶ',
- 'ⲁ' => 'Ⲁ',
- 'ⲃ' => 'Ⲃ',
- 'ⲅ' => 'Ⲅ',
- 'ⲇ' => 'Ⲇ',
- 'ⲉ' => 'Ⲉ',
- 'ⲋ' => 'Ⲋ',
- 'ⲍ' => 'Ⲍ',
- 'ⲏ' => 'Ⲏ',
- 'ⲑ' => 'Ⲑ',
- 'ⲓ' => 'Ⲓ',
- 'ⲕ' => 'Ⲕ',
- 'ⲗ' => 'Ⲗ',
- 'ⲙ' => 'Ⲙ',
- 'ⲛ' => 'Ⲛ',
- 'ⲝ' => 'Ⲝ',
- 'ⲟ' => 'Ⲟ',
- 'ⲡ' => 'Ⲡ',
- 'ⲣ' => 'Ⲣ',
- 'ⲥ' => 'Ⲥ',
- 'ⲧ' => 'Ⲧ',
- 'ⲩ' => 'Ⲩ',
- 'ⲫ' => 'Ⲫ',
- 'ⲭ' => 'Ⲭ',
- 'ⲯ' => 'Ⲯ',
- 'ⲱ' => 'Ⲱ',
- 'ⲳ' => 'Ⲳ',
- 'ⲵ' => 'Ⲵ',
- 'ⲷ' => 'Ⲷ',
- 'ⲹ' => 'Ⲹ',
- 'ⲻ' => 'Ⲻ',
- 'ⲽ' => 'Ⲽ',
- 'ⲿ' => 'Ⲿ',
- 'ⳁ' => 'Ⳁ',
- 'ⳃ' => 'Ⳃ',
- 'ⳅ' => 'Ⳅ',
- 'ⳇ' => 'Ⳇ',
- 'ⳉ' => 'Ⳉ',
- 'ⳋ' => 'Ⳋ',
- 'ⳍ' => 'Ⳍ',
- 'ⳏ' => 'Ⳏ',
- 'ⳑ' => 'Ⳑ',
- 'ⳓ' => 'Ⳓ',
- 'ⳕ' => 'Ⳕ',
- 'ⳗ' => 'Ⳗ',
- 'ⳙ' => 'Ⳙ',
- 'ⳛ' => 'Ⳛ',
- 'ⳝ' => 'Ⳝ',
- 'ⳟ' => 'Ⳟ',
- 'ⳡ' => 'Ⳡ',
- 'ⳣ' => 'Ⳣ',
- 'ⳬ' => 'Ⳬ',
- 'ⳮ' => 'Ⳮ',
- 'ⴀ' => 'Ⴀ',
- 'ⴁ' => 'Ⴁ',
- 'ⴂ' => 'Ⴂ',
- 'ⴃ' => 'Ⴃ',
- 'ⴄ' => 'Ⴄ',
- 'ⴅ' => 'Ⴅ',
- 'ⴆ' => 'Ⴆ',
- 'ⴇ' => 'Ⴇ',
- 'ⴈ' => 'Ⴈ',
- 'ⴉ' => 'Ⴉ',
- 'ⴊ' => 'Ⴊ',
- 'ⴋ' => 'Ⴋ',
- 'ⴌ' => 'Ⴌ',
- 'ⴍ' => 'Ⴍ',
- 'ⴎ' => 'Ⴎ',
- 'ⴏ' => 'Ⴏ',
- 'ⴐ' => 'Ⴐ',
- 'ⴑ' => 'Ⴑ',
- 'ⴒ' => 'Ⴒ',
- 'ⴓ' => 'Ⴓ',
- 'ⴔ' => 'Ⴔ',
- 'ⴕ' => 'Ⴕ',
- 'ⴖ' => 'Ⴖ',
- 'ⴗ' => 'Ⴗ',
- 'ⴘ' => 'Ⴘ',
- 'ⴙ' => 'Ⴙ',
- 'ⴚ' => 'Ⴚ',
- 'ⴛ' => 'Ⴛ',
- 'ⴜ' => 'Ⴜ',
- 'ⴝ' => 'Ⴝ',
- 'ⴞ' => 'Ⴞ',
- 'ⴟ' => 'Ⴟ',
- 'ⴠ' => 'Ⴠ',
- 'ⴡ' => 'Ⴡ',
- 'ⴢ' => 'Ⴢ',
- 'ⴣ' => 'Ⴣ',
- 'ⴤ' => 'Ⴤ',
- 'ⴥ' => 'Ⴥ',
- 'ꙁ' => 'Ꙁ',
- 'ꙃ' => 'Ꙃ',
- 'ꙅ' => 'Ꙅ',
- 'ꙇ' => 'Ꙇ',
- 'ꙉ' => 'Ꙉ',
- 'ꙋ' => 'Ꙋ',
- 'ꙍ' => 'Ꙍ',
- 'ꙏ' => 'Ꙏ',
- 'ꙑ' => 'Ꙑ',
- 'ꙓ' => 'Ꙓ',
- 'ꙕ' => 'Ꙕ',
- 'ꙗ' => 'Ꙗ',
- 'ꙙ' => 'Ꙙ',
- 'ꙛ' => 'Ꙛ',
- 'ꙝ' => 'Ꙝ',
- 'ꙟ' => 'Ꙟ',
- 'ꙡ' => 'Ꙡ',
- 'ꙣ' => 'Ꙣ',
- 'ꙥ' => 'Ꙥ',
- 'ꙧ' => 'Ꙧ',
- 'ꙩ' => 'Ꙩ',
- 'ꙫ' => 'Ꙫ',
- 'ꙭ' => 'Ꙭ',
- 'ꚁ' => 'Ꚁ',
- 'ꚃ' => 'Ꚃ',
- 'ꚅ' => 'Ꚅ',
- 'ꚇ' => 'Ꚇ',
- 'ꚉ' => 'Ꚉ',
- 'ꚋ' => 'Ꚋ',
- 'ꚍ' => 'Ꚍ',
- 'ꚏ' => 'Ꚏ',
- 'ꚑ' => 'Ꚑ',
- 'ꚓ' => 'Ꚓ',
- 'ꚕ' => 'Ꚕ',
- 'ꚗ' => 'Ꚗ',
- 'ꜣ' => 'Ꜣ',
- 'ꜥ' => 'Ꜥ',
- 'ꜧ' => 'Ꜧ',
- 'ꜩ' => 'Ꜩ',
- 'ꜫ' => 'Ꜫ',
- 'ꜭ' => 'Ꜭ',
- 'ꜯ' => 'Ꜯ',
- 'ꜳ' => 'Ꜳ',
- 'ꜵ' => 'Ꜵ',
- 'ꜷ' => 'Ꜷ',
- 'ꜹ' => 'Ꜹ',
- 'ꜻ' => 'Ꜻ',
- 'ꜽ' => 'Ꜽ',
- 'ꜿ' => 'Ꜿ',
- 'ꝁ' => 'Ꝁ',
- 'ꝃ' => 'Ꝃ',
- 'ꝅ' => 'Ꝅ',
- 'ꝇ' => 'Ꝇ',
- 'ꝉ' => 'Ꝉ',
- 'ꝋ' => 'Ꝋ',
- 'ꝍ' => 'Ꝍ',
- 'ꝏ' => 'Ꝏ',
- 'ꝑ' => 'Ꝑ',
- 'ꝓ' => 'Ꝓ',
- 'ꝕ' => 'Ꝕ',
- 'ꝗ' => 'Ꝗ',
- 'ꝙ' => 'Ꝙ',
- 'ꝛ' => 'Ꝛ',
- 'ꝝ' => 'Ꝝ',
- 'ꝟ' => 'Ꝟ',
- 'ꝡ' => 'Ꝡ',
- 'ꝣ' => 'Ꝣ',
- 'ꝥ' => 'Ꝥ',
- 'ꝧ' => 'Ꝧ',
- 'ꝩ' => 'Ꝩ',
- 'ꝫ' => 'Ꝫ',
- 'ꝭ' => 'Ꝭ',
- 'ꝯ' => 'Ꝯ',
- 'ꝺ' => 'Ꝺ',
- 'ꝼ' => 'Ꝼ',
- 'ꝿ' => 'Ꝿ',
- 'ꞁ' => 'Ꞁ',
- 'ꞃ' => 'Ꞃ',
- 'ꞅ' => 'Ꞅ',
- 'ꞇ' => 'Ꞇ',
- 'ꞌ' => 'Ꞌ',
- 'ꞑ' => 'Ꞑ',
- 'ꞡ' => 'Ꞡ',
- 'ꞣ' => 'Ꞣ',
- 'ꞥ' => 'Ꞥ',
- 'ꞧ' => 'Ꞧ',
- 'ꞩ' => 'Ꞩ',
- 'a' => 'A',
- 'b' => 'B',
- 'c' => 'C',
- 'd' => 'D',
- 'e' => 'E',
- 'f' => 'F',
- 'g' => 'G',
- 'h' => 'H',
- 'i' => 'I',
- 'j' => 'J',
- 'k' => 'K',
- 'l' => 'L',
- 'm' => 'M',
- 'n' => 'N',
- 'o' => 'O',
- 'p' => 'P',
- 'q' => 'Q',
- 'r' => 'R',
- 's' => 'S',
- 't' => 'T',
- 'u' => 'U',
- 'v' => 'V',
- 'w' => 'W',
- 'x' => 'X',
- 'y' => 'Y',
- 'z' => 'Z',
- '𐐨' => '𐐀',
- '𐐩' => '𐐁',
- '𐐪' => '𐐂',
- '𐐫' => '𐐃',
- '𐐬' => '𐐄',
- '𐐭' => '𐐅',
- '𐐮' => '𐐆',
- '𐐯' => '𐐇',
- '𐐰' => '𐐈',
- '𐐱' => '𐐉',
- '𐐲' => '𐐊',
- '𐐳' => '𐐋',
- '𐐴' => '𐐌',
- '𐐵' => '𐐍',
- '𐐶' => '𐐎',
- '𐐷' => '𐐏',
- '𐐸' => '𐐐',
- '𐐹' => '𐐑',
- '𐐺' => '𐐒',
- '𐐻' => '𐐓',
- '𐐼' => '𐐔',
- '𐐽' => '𐐕',
- '𐐾' => '𐐖',
- '𐐿' => '𐐗',
- '𐑀' => '𐐘',
- '𐑁' => '𐐙',
- '𐑂' => '𐐚',
- '𐑃' => '𐐛',
- '𐑄' => '𐐜',
- '𐑅' => '𐐝',
- '𐑆' => '𐐞',
- '𐑇' => '𐐟',
- '𐑈' => '𐐠',
- '𐑉' => '𐐡',
- '𐑊' => '𐐢',
- '𐑋' => '𐐣',
- '𐑌' => '𐐤',
- '𐑍' => '𐐥',
- '𐑎' => '𐐦',
- '𐑏' => '𐐧'
-);
-
-/**
- * Translation array to get lower case character
- */
-$wikiLowerChars = array(
- 'A' => 'a',
- 'B' => 'b',
- 'C' => 'c',
- 'D' => 'd',
- 'E' => 'e',
- 'F' => 'f',
- 'G' => 'g',
- 'H' => 'h',
- 'I' => 'i',
- 'J' => 'j',
- 'K' => 'k',
- 'L' => 'l',
- 'M' => 'm',
- 'N' => 'n',
- 'O' => 'o',
- 'P' => 'p',
- 'Q' => 'q',
- 'R' => 'r',
- 'S' => 's',
- 'T' => 't',
- 'U' => 'u',
- 'V' => 'v',
- 'W' => 'w',
- 'X' => 'x',
- 'Y' => 'y',
- 'Z' => 'z',
- 'À' => 'à',
- 'Á' => 'á',
- 'Â' => 'â',
- 'Ã' => 'ã',
- 'Ä' => 'ä',
- 'Å' => 'å',
- 'Æ' => 'æ',
- 'Ç' => 'ç',
- 'È' => 'è',
- 'É' => 'é',
- 'Ê' => 'ê',
- 'Ë' => 'ë',
- 'Ì' => 'ì',
- 'Í' => 'í',
- 'Î' => 'î',
- 'Ï' => 'ï',
- 'Ð' => 'ð',
- 'Ñ' => 'ñ',
- 'Ò' => 'ò',
- 'Ó' => 'ó',
- 'Ô' => 'ô',
- 'Õ' => 'õ',
- 'Ö' => 'ö',
- 'Ø' => 'ø',
- 'Ù' => 'ù',
- 'Ú' => 'ú',
- 'Û' => 'û',
- 'Ü' => 'ü',
- 'Ý' => 'ý',
- 'Þ' => 'þ',
- 'Ā' => 'ā',
- 'Ă' => 'ă',
- 'Ą' => 'ą',
- 'Ć' => 'ć',
- 'Ĉ' => 'ĉ',
- 'Ċ' => 'ċ',
- 'Č' => 'č',
- 'Ď' => 'ď',
- 'Đ' => 'đ',
- 'Ē' => 'ē',
- 'Ĕ' => 'ĕ',
- 'Ė' => 'ė',
- 'Ę' => 'ę',
- 'Ě' => 'ě',
- 'Ĝ' => 'ĝ',
- 'Ğ' => 'ğ',
- 'Ġ' => 'ġ',
- 'Ģ' => 'ģ',
- 'Ĥ' => 'ĥ',
- 'Ħ' => 'ħ',
- 'Ĩ' => 'ĩ',
- 'Ī' => 'ī',
- 'Ĭ' => 'ĭ',
- 'Į' => 'į',
- 'İ' => 'i',
- 'IJ' => 'ij',
- 'Ĵ' => 'ĵ',
- 'Ķ' => 'ķ',
- 'Ĺ' => 'ĺ',
- 'Ļ' => 'ļ',
- 'Ľ' => 'ľ',
- 'Ŀ' => 'ŀ',
- 'Ł' => 'ł',
- 'Ń' => 'ń',
- 'Ņ' => 'ņ',
- 'Ň' => 'ň',
- 'Ŋ' => 'ŋ',
- 'Ō' => 'ō',
- 'Ŏ' => 'ŏ',
- 'Ő' => 'ő',
- 'Œ' => 'œ',
- 'Ŕ' => 'ŕ',
- 'Ŗ' => 'ŗ',
- 'Ř' => 'ř',
- 'Ś' => 'ś',
- 'Ŝ' => 'ŝ',
- 'Ş' => 'ş',
- 'Š' => 'š',
- 'Ţ' => 'ţ',
- 'Ť' => 'ť',
- 'Ŧ' => 'ŧ',
- 'Ũ' => 'ũ',
- 'Ū' => 'ū',
- 'Ŭ' => 'ŭ',
- 'Ů' => 'ů',
- 'Ű' => 'ű',
- 'Ų' => 'ų',
- 'Ŵ' => 'ŵ',
- 'Ŷ' => 'ŷ',
- 'Ÿ' => 'ÿ',
- 'Ź' => 'ź',
- 'Ż' => 'ż',
- 'Ž' => 'ž',
- 'Ɓ' => 'ɓ',
- 'Ƃ' => 'ƃ',
- 'Ƅ' => 'ƅ',
- 'Ɔ' => 'ɔ',
- 'Ƈ' => 'ƈ',
- 'Ɖ' => 'ɖ',
- 'Ɗ' => 'ɗ',
- 'Ƌ' => 'ƌ',
- 'Ǝ' => 'ǝ',
- 'Ə' => 'ə',
- 'Ɛ' => 'ɛ',
- 'Ƒ' => 'ƒ',
- 'Ɠ' => 'ɠ',
- 'Ɣ' => 'ɣ',
- 'Ɩ' => 'ɩ',
- 'Ɨ' => 'ɨ',
- 'Ƙ' => 'ƙ',
- 'Ɯ' => 'ɯ',
- 'Ɲ' => 'ɲ',
- 'Ɵ' => 'ɵ',
- 'Ơ' => 'ơ',
- 'Ƣ' => 'ƣ',
- 'Ƥ' => 'ƥ',
- 'Ʀ' => 'ʀ',
- 'Ƨ' => 'ƨ',
- 'Ʃ' => 'ʃ',
- 'Ƭ' => 'ƭ',
- 'Ʈ' => 'ʈ',
- 'Ư' => 'ư',
- 'Ʊ' => 'ʊ',
- 'Ʋ' => 'ʋ',
- 'Ƴ' => 'ƴ',
- 'Ƶ' => 'ƶ',
- 'Ʒ' => 'ʒ',
- 'Ƹ' => 'ƹ',
- 'Ƽ' => 'ƽ',
- 'DŽ' => 'dž',
- 'Dž' => 'dž',
- 'LJ' => 'lj',
- 'Lj' => 'lj',
- 'NJ' => 'nj',
- 'Nj' => 'nj',
- 'Ǎ' => 'ǎ',
- 'Ǐ' => 'ǐ',
- 'Ǒ' => 'ǒ',
- 'Ǔ' => 'ǔ',
- 'Ǖ' => 'ǖ',
- 'Ǘ' => 'ǘ',
- 'Ǚ' => 'ǚ',
- 'Ǜ' => 'ǜ',
- 'Ǟ' => 'ǟ',
- 'Ǡ' => 'ǡ',
- 'Ǣ' => 'ǣ',
- 'Ǥ' => 'ǥ',
- 'Ǧ' => 'ǧ',
- 'Ǩ' => 'ǩ',
- 'Ǫ' => 'ǫ',
- 'Ǭ' => 'ǭ',
- 'Ǯ' => 'ǯ',
- 'DZ' => 'dz',
- 'Dz' => 'dz',
- 'Ǵ' => 'ǵ',
- 'Ƕ' => 'ƕ',
- 'Ƿ' => 'ƿ',
- 'Ǹ' => 'ǹ',
- 'Ǻ' => 'ǻ',
- 'Ǽ' => 'ǽ',
- 'Ǿ' => 'ǿ',
- 'Ȁ' => 'ȁ',
- 'Ȃ' => 'ȃ',
- 'Ȅ' => 'ȅ',
- 'Ȇ' => 'ȇ',
- 'Ȉ' => 'ȉ',
- 'Ȋ' => 'ȋ',
- 'Ȍ' => 'ȍ',
- 'Ȏ' => 'ȏ',
- 'Ȑ' => 'ȑ',
- 'Ȓ' => 'ȓ',
- 'Ȕ' => 'ȕ',
- 'Ȗ' => 'ȗ',
- 'Ș' => 'ș',
- 'Ț' => 'ț',
- 'Ȝ' => 'ȝ',
- 'Ȟ' => 'ȟ',
- 'Ƞ' => 'ƞ',
- 'Ȣ' => 'ȣ',
- 'Ȥ' => 'ȥ',
- 'Ȧ' => 'ȧ',
- 'Ȩ' => 'ȩ',
- 'Ȫ' => 'ȫ',
- 'Ȭ' => 'ȭ',
- 'Ȯ' => 'ȯ',
- 'Ȱ' => 'ȱ',
- 'Ȳ' => 'ȳ',
- 'Ⱥ' => 'ⱥ',
- 'Ȼ' => 'ȼ',
- 'Ƚ' => 'ƚ',
- 'Ⱦ' => 'ⱦ',
- 'Ɂ' => 'ɂ',
- 'Ƀ' => 'ƀ',
- 'Ʉ' => 'ʉ',
- 'Ʌ' => 'ʌ',
- 'Ɇ' => 'ɇ',
- 'Ɉ' => 'ɉ',
- 'Ɋ' => 'ɋ',
- 'Ɍ' => 'ɍ',
- 'Ɏ' => 'ɏ',
- 'Ͱ' => 'ͱ',
- 'Ͳ' => 'ͳ',
- 'Ͷ' => 'ͷ',
- 'Ά' => 'ά',
- 'Έ' => 'έ',
- 'Ή' => 'ή',
- 'Ί' => 'ί',
- 'Ό' => 'ό',
- 'Ύ' => 'ύ',
- 'Ώ' => 'ώ',
- 'Α' => 'α',
- 'Β' => 'β',
- 'Γ' => 'γ',
- 'Δ' => 'δ',
- 'Ε' => 'ε',
- 'Ζ' => 'ζ',
- 'Η' => 'η',
- 'Θ' => 'θ',
- 'Ι' => 'ι',
- 'Κ' => 'κ',
- 'Λ' => 'λ',
- 'Μ' => 'μ',
- 'Ν' => 'ν',
- 'Ξ' => 'ξ',
- 'Ο' => 'ο',
- 'Π' => 'π',
- 'Ρ' => 'ρ',
- 'Σ' => 'σ',
- 'Τ' => 'τ',
- 'Υ' => 'υ',
- 'Φ' => 'φ',
- 'Χ' => 'χ',
- 'Ψ' => 'ψ',
- 'Ω' => 'ω',
- 'Ϊ' => 'ϊ',
- 'Ϋ' => 'ϋ',
- 'Ϗ' => 'ϗ',
- 'Ϙ' => 'ϙ',
- 'Ϛ' => 'ϛ',
- 'Ϝ' => 'ϝ',
- 'Ϟ' => 'ϟ',
- 'Ϡ' => 'ϡ',
- 'Ϣ' => 'ϣ',
- 'Ϥ' => 'ϥ',
- 'Ϧ' => 'ϧ',
- 'Ϩ' => 'ϩ',
- 'Ϫ' => 'ϫ',
- 'Ϭ' => 'ϭ',
- 'Ϯ' => 'ϯ',
- 'ϴ' => 'θ',
- 'Ϸ' => 'ϸ',
- 'Ϲ' => 'ϲ',
- 'Ϻ' => 'ϻ',
- 'Ͻ' => 'ͻ',
- 'Ͼ' => 'ͼ',
- 'Ͽ' => 'ͽ',
- 'Ѐ' => 'ѐ',
- 'Ё' => 'ё',
- 'Ђ' => 'ђ',
- 'Ѓ' => 'ѓ',
- 'Є' => 'є',
- 'Ѕ' => 'ѕ',
- 'І' => 'і',
- 'Ї' => 'ї',
- 'Ј' => 'ј',
- 'Љ' => 'љ',
- 'Њ' => 'њ',
- 'Ћ' => 'ћ',
- 'Ќ' => 'ќ',
- 'Ѝ' => 'ѝ',
- 'Ў' => 'ў',
- 'Џ' => 'џ',
- 'А' => 'а',
- 'Б' => 'б',
- 'В' => 'в',
- 'Г' => 'г',
- 'Д' => 'д',
- 'Е' => 'е',
- 'Ж' => 'ж',
- 'З' => 'з',
- 'И' => 'и',
- 'Й' => 'й',
- 'К' => 'к',
- 'Л' => 'л',
- 'М' => 'м',
- 'Н' => 'н',
- 'О' => 'о',
- 'П' => 'п',
- 'Р' => 'р',
- 'С' => 'с',
- 'Т' => 'т',
- 'У' => 'у',
- 'Ф' => 'ф',
- 'Х' => 'х',
- 'Ц' => 'ц',
- 'Ч' => 'ч',
- 'Ш' => 'ш',
- 'Щ' => 'щ',
- 'Ъ' => 'ъ',
- 'Ы' => 'ы',
- 'Ь' => 'ь',
- 'Э' => 'э',
- 'Ю' => 'ю',
- 'Я' => 'я',
- 'Ѡ' => 'ѡ',
- 'Ѣ' => 'ѣ',
- 'Ѥ' => 'ѥ',
- 'Ѧ' => 'ѧ',
- 'Ѩ' => 'ѩ',
- 'Ѫ' => 'ѫ',
- 'Ѭ' => 'ѭ',
- 'Ѯ' => 'ѯ',
- 'Ѱ' => 'ѱ',
- 'Ѳ' => 'ѳ',
- 'Ѵ' => 'ѵ',
- 'Ѷ' => 'ѷ',
- 'Ѹ' => 'ѹ',
- 'Ѻ' => 'ѻ',
- 'Ѽ' => 'ѽ',
- 'Ѿ' => 'ѿ',
- 'Ҁ' => 'ҁ',
- 'Ҋ' => 'ҋ',
- 'Ҍ' => 'ҍ',
- 'Ҏ' => 'ҏ',
- 'Ґ' => 'ґ',
- 'Ғ' => 'ғ',
- 'Ҕ' => 'ҕ',
- 'Җ' => 'җ',
- 'Ҙ' => 'ҙ',
- 'Қ' => 'қ',
- 'Ҝ' => 'ҝ',
- 'Ҟ' => 'ҟ',
- 'Ҡ' => 'ҡ',
- 'Ң' => 'ң',
- 'Ҥ' => 'ҥ',
- 'Ҧ' => 'ҧ',
- 'Ҩ' => 'ҩ',
- 'Ҫ' => 'ҫ',
- 'Ҭ' => 'ҭ',
- 'Ү' => 'ү',
- 'Ұ' => 'ұ',
- 'Ҳ' => 'ҳ',
- 'Ҵ' => 'ҵ',
- 'Ҷ' => 'ҷ',
- 'Ҹ' => 'ҹ',
- 'Һ' => 'һ',
- 'Ҽ' => 'ҽ',
- 'Ҿ' => 'ҿ',
- 'Ӏ' => 'ӏ',
- 'Ӂ' => 'ӂ',
- 'Ӄ' => 'ӄ',
- 'Ӆ' => 'ӆ',
- 'Ӈ' => 'ӈ',
- 'Ӊ' => 'ӊ',
- 'Ӌ' => 'ӌ',
- 'Ӎ' => 'ӎ',
- 'Ӑ' => 'ӑ',
- 'Ӓ' => 'ӓ',
- 'Ӕ' => 'ӕ',
- 'Ӗ' => 'ӗ',
- 'Ә' => 'ә',
- 'Ӛ' => 'ӛ',
- 'Ӝ' => 'ӝ',
- 'Ӟ' => 'ӟ',
- 'Ӡ' => 'ӡ',
- 'Ӣ' => 'ӣ',
- 'Ӥ' => 'ӥ',
- 'Ӧ' => 'ӧ',
- 'Ө' => 'ө',
- 'Ӫ' => 'ӫ',
- 'Ӭ' => 'ӭ',
- 'Ӯ' => 'ӯ',
- 'Ӱ' => 'ӱ',
- 'Ӳ' => 'ӳ',
- 'Ӵ' => 'ӵ',
- 'Ӷ' => 'ӷ',
- 'Ӹ' => 'ӹ',
- 'Ӻ' => 'ӻ',
- 'Ӽ' => 'ӽ',
- 'Ӿ' => 'ӿ',
- 'Ԁ' => 'ԁ',
- 'Ԃ' => 'ԃ',
- 'Ԅ' => 'ԅ',
- 'Ԇ' => 'ԇ',
- 'Ԉ' => 'ԉ',
- 'Ԋ' => 'ԋ',
- 'Ԍ' => 'ԍ',
- 'Ԏ' => 'ԏ',
- 'Ԑ' => 'ԑ',
- 'Ԓ' => 'ԓ',
- 'Ԕ' => 'ԕ',
- 'Ԗ' => 'ԗ',
- 'Ԙ' => 'ԙ',
- 'Ԛ' => 'ԛ',
- 'Ԝ' => 'ԝ',
- 'Ԟ' => 'ԟ',
- 'Ԡ' => 'ԡ',
- 'Ԣ' => 'ԣ',
- 'Ԥ' => 'ԥ',
- 'Ԧ' => 'ԧ',
- 'Ա' => 'ա',
- 'Բ' => 'բ',
- 'Գ' => 'գ',
- 'Դ' => 'դ',
- 'Ե' => 'ե',
- 'Զ' => 'զ',
- 'Է' => 'է',
- 'Ը' => 'ը',
- 'Թ' => 'թ',
- 'Ժ' => 'ժ',
- 'Ի' => 'ի',
- 'Լ' => 'լ',
- 'Խ' => 'խ',
- 'Ծ' => 'ծ',
- 'Կ' => 'կ',
- 'Հ' => 'հ',
- 'Ձ' => 'ձ',
- 'Ղ' => 'ղ',
- 'Ճ' => 'ճ',
- 'Մ' => 'մ',
- 'Յ' => 'յ',
- 'Ն' => 'ն',
- 'Շ' => 'շ',
- 'Ո' => 'ո',
- 'Չ' => 'չ',
- 'Պ' => 'պ',
- 'Ջ' => 'ջ',
- 'Ռ' => 'ռ',
- 'Ս' => 'ս',
- 'Վ' => 'վ',
- 'Տ' => 'տ',
- 'Ր' => 'ր',
- 'Ց' => 'ց',
- 'Ւ' => 'ւ',
- 'Փ' => 'փ',
- 'Ք' => 'ք',
- 'Օ' => 'օ',
- 'Ֆ' => 'ֆ',
- 'Ⴀ' => 'ⴀ',
- 'Ⴁ' => 'ⴁ',
- 'Ⴂ' => 'ⴂ',
- 'Ⴃ' => 'ⴃ',
- 'Ⴄ' => 'ⴄ',
- 'Ⴅ' => 'ⴅ',
- 'Ⴆ' => 'ⴆ',
- 'Ⴇ' => 'ⴇ',
- 'Ⴈ' => 'ⴈ',
- 'Ⴉ' => 'ⴉ',
- 'Ⴊ' => 'ⴊ',
- 'Ⴋ' => 'ⴋ',
- 'Ⴌ' => 'ⴌ',
- 'Ⴍ' => 'ⴍ',
- 'Ⴎ' => 'ⴎ',
- 'Ⴏ' => 'ⴏ',
- 'Ⴐ' => 'ⴐ',
- 'Ⴑ' => 'ⴑ',
- 'Ⴒ' => 'ⴒ',
- 'Ⴓ' => 'ⴓ',
- 'Ⴔ' => 'ⴔ',
- 'Ⴕ' => 'ⴕ',
- 'Ⴖ' => 'ⴖ',
- 'Ⴗ' => 'ⴗ',
- 'Ⴘ' => 'ⴘ',
- 'Ⴙ' => 'ⴙ',
- 'Ⴚ' => 'ⴚ',
- 'Ⴛ' => 'ⴛ',
- 'Ⴜ' => 'ⴜ',
- 'Ⴝ' => 'ⴝ',
- 'Ⴞ' => 'ⴞ',
- 'Ⴟ' => 'ⴟ',
- 'Ⴠ' => 'ⴠ',
- 'Ⴡ' => 'ⴡ',
- 'Ⴢ' => 'ⴢ',
- 'Ⴣ' => 'ⴣ',
- 'Ⴤ' => 'ⴤ',
- 'Ⴥ' => 'ⴥ',
- 'Ḁ' => 'ḁ',
- 'Ḃ' => 'ḃ',
- 'Ḅ' => 'ḅ',
- 'Ḇ' => 'ḇ',
- 'Ḉ' => 'ḉ',
- 'Ḋ' => 'ḋ',
- 'Ḍ' => 'ḍ',
- 'Ḏ' => 'ḏ',
- 'Ḑ' => 'ḑ',
- 'Ḓ' => 'ḓ',
- 'Ḕ' => 'ḕ',
- 'Ḗ' => 'ḗ',
- 'Ḙ' => 'ḙ',
- 'Ḛ' => 'ḛ',
- 'Ḝ' => 'ḝ',
- 'Ḟ' => 'ḟ',
- 'Ḡ' => 'ḡ',
- 'Ḣ' => 'ḣ',
- 'Ḥ' => 'ḥ',
- 'Ḧ' => 'ḧ',
- 'Ḩ' => 'ḩ',
- 'Ḫ' => 'ḫ',
- 'Ḭ' => 'ḭ',
- 'Ḯ' => 'ḯ',
- 'Ḱ' => 'ḱ',
- 'Ḳ' => 'ḳ',
- 'Ḵ' => 'ḵ',
- 'Ḷ' => 'ḷ',
- 'Ḹ' => 'ḹ',
- 'Ḻ' => 'ḻ',
- 'Ḽ' => 'ḽ',
- 'Ḿ' => 'ḿ',
- 'Ṁ' => 'ṁ',
- 'Ṃ' => 'ṃ',
- 'Ṅ' => 'ṅ',
- 'Ṇ' => 'ṇ',
- 'Ṉ' => 'ṉ',
- 'Ṋ' => 'ṋ',
- 'Ṍ' => 'ṍ',
- 'Ṏ' => 'ṏ',
- 'Ṑ' => 'ṑ',
- 'Ṓ' => 'ṓ',
- 'Ṕ' => 'ṕ',
- 'Ṗ' => 'ṗ',
- 'Ṙ' => 'ṙ',
- 'Ṛ' => 'ṛ',
- 'Ṝ' => 'ṝ',
- 'Ṟ' => 'ṟ',
- 'Ṡ' => 'ṡ',
- 'Ṣ' => 'ṣ',
- 'Ṥ' => 'ṥ',
- 'Ṧ' => 'ṧ',
- 'Ṩ' => 'ṩ',
- 'Ṫ' => 'ṫ',
- 'Ṭ' => 'ṭ',
- 'Ṯ' => 'ṯ',
- 'Ṱ' => 'ṱ',
- 'Ṳ' => 'ṳ',
- 'Ṵ' => 'ṵ',
- 'Ṷ' => 'ṷ',
- 'Ṹ' => 'ṹ',
- 'Ṻ' => 'ṻ',
- 'Ṽ' => 'ṽ',
- 'Ṿ' => 'ṿ',
- 'Ẁ' => 'ẁ',
- 'Ẃ' => 'ẃ',
- 'Ẅ' => 'ẅ',
- 'Ẇ' => 'ẇ',
- 'Ẉ' => 'ẉ',
- 'Ẋ' => 'ẋ',
- 'Ẍ' => 'ẍ',
- 'Ẏ' => 'ẏ',
- 'Ẑ' => 'ẑ',
- 'Ẓ' => 'ẓ',
- 'Ẕ' => 'ẕ',
- 'ẞ' => 'ß',
- 'Ạ' => 'ạ',
- 'Ả' => 'ả',
- 'Ấ' => 'ấ',
- 'Ầ' => 'ầ',
- 'Ẩ' => 'ẩ',
- 'Ẫ' => 'ẫ',
- 'Ậ' => 'ậ',
- 'Ắ' => 'ắ',
- 'Ằ' => 'ằ',
- 'Ẳ' => 'ẳ',
- 'Ẵ' => 'ẵ',
- 'Ặ' => 'ặ',
- 'Ẹ' => 'ẹ',
- 'Ẻ' => 'ẻ',
- 'Ẽ' => 'ẽ',
- 'Ế' => 'ế',
- 'Ề' => 'ề',
- 'Ể' => 'ể',
- 'Ễ' => 'ễ',
- 'Ệ' => 'ệ',
- 'Ỉ' => 'ỉ',
- 'Ị' => 'ị',
- 'Ọ' => 'ọ',
- 'Ỏ' => 'ỏ',
- 'Ố' => 'ố',
- 'Ồ' => 'ồ',
- 'Ổ' => 'ổ',
- 'Ỗ' => 'ỗ',
- 'Ộ' => 'ộ',
- 'Ớ' => 'ớ',
- 'Ờ' => 'ờ',
- 'Ở' => 'ở',
- 'Ỡ' => 'ỡ',
- 'Ợ' => 'ợ',
- 'Ụ' => 'ụ',
- 'Ủ' => 'ủ',
- 'Ứ' => 'ứ',
- 'Ừ' => 'ừ',
- 'Ử' => 'ử',
- 'Ữ' => 'ữ',
- 'Ự' => 'ự',
- 'Ỳ' => 'ỳ',
- 'Ỵ' => 'ỵ',
- 'Ỷ' => 'ỷ',
- 'Ỹ' => 'ỹ',
- 'Ỻ' => 'ỻ',
- 'Ỽ' => 'ỽ',
- 'Ỿ' => 'ỿ',
- 'Ἀ' => 'ἀ',
- 'Ἁ' => 'ἁ',
- 'Ἂ' => 'ἂ',
- 'Ἃ' => 'ἃ',
- 'Ἄ' => 'ἄ',
- 'Ἅ' => 'ἅ',
- 'Ἆ' => 'ἆ',
- 'Ἇ' => 'ἇ',
- 'Ἐ' => 'ἐ',
- 'Ἑ' => 'ἑ',
- 'Ἒ' => 'ἒ',
- 'Ἓ' => 'ἓ',
- 'Ἔ' => 'ἔ',
- 'Ἕ' => 'ἕ',
- 'Ἠ' => 'ἠ',
- 'Ἡ' => 'ἡ',
- 'Ἢ' => 'ἢ',
- 'Ἣ' => 'ἣ',
- 'Ἤ' => 'ἤ',
- 'Ἥ' => 'ἥ',
- 'Ἦ' => 'ἦ',
- 'Ἧ' => 'ἧ',
- 'Ἰ' => 'ἰ',
- 'Ἱ' => 'ἱ',
- 'Ἲ' => 'ἲ',
- 'Ἳ' => 'ἳ',
- 'Ἴ' => 'ἴ',
- 'Ἵ' => 'ἵ',
- 'Ἶ' => 'ἶ',
- 'Ἷ' => 'ἷ',
- 'Ὀ' => 'ὀ',
- 'Ὁ' => 'ὁ',
- 'Ὂ' => 'ὂ',
- 'Ὃ' => 'ὃ',
- 'Ὄ' => 'ὄ',
- 'Ὅ' => 'ὅ',
- 'Ὑ' => 'ὑ',
- 'Ὓ' => 'ὓ',
- 'Ὕ' => 'ὕ',
- 'Ὗ' => 'ὗ',
- 'Ὠ' => 'ὠ',
- 'Ὡ' => 'ὡ',
- 'Ὢ' => 'ὢ',
- 'Ὣ' => 'ὣ',
- 'Ὤ' => 'ὤ',
- 'Ὥ' => 'ὥ',
- 'Ὦ' => 'ὦ',
- 'Ὧ' => 'ὧ',
- 'ᾈ' => 'ᾀ',
- 'ᾉ' => 'ᾁ',
- 'ᾊ' => 'ᾂ',
- 'ᾋ' => 'ᾃ',
- 'ᾌ' => 'ᾄ',
- 'ᾍ' => 'ᾅ',
- 'ᾎ' => 'ᾆ',
- 'ᾏ' => 'ᾇ',
- 'ᾘ' => 'ᾐ',
- 'ᾙ' => 'ᾑ',
- 'ᾚ' => 'ᾒ',
- 'ᾛ' => 'ᾓ',
- 'ᾜ' => 'ᾔ',
- 'ᾝ' => 'ᾕ',
- 'ᾞ' => 'ᾖ',
- 'ᾟ' => 'ᾗ',
- 'ᾨ' => 'ᾠ',
- 'ᾩ' => 'ᾡ',
- 'ᾪ' => 'ᾢ',
- 'ᾫ' => 'ᾣ',
- 'ᾬ' => 'ᾤ',
- 'ᾭ' => 'ᾥ',
- 'ᾮ' => 'ᾦ',
- 'ᾯ' => 'ᾧ',
- 'Ᾰ' => 'ᾰ',
- 'Ᾱ' => 'ᾱ',
- 'Ὰ' => 'ὰ',
- 'Ά' => 'ά',
- 'ᾼ' => 'ᾳ',
- 'Ὲ' => 'ὲ',
- 'Έ' => 'έ',
- 'Ὴ' => 'ὴ',
- 'Ή' => 'ή',
- 'ῌ' => 'ῃ',
- 'Ῐ' => 'ῐ',
- 'Ῑ' => 'ῑ',
- 'Ὶ' => 'ὶ',
- 'Ί' => 'ί',
- 'Ῠ' => 'ῠ',
- 'Ῡ' => 'ῡ',
- 'Ὺ' => 'ὺ',
- 'Ύ' => 'ύ',
- 'Ῥ' => 'ῥ',
- 'Ὸ' => 'ὸ',
- 'Ό' => 'ό',
- 'Ὼ' => 'ὼ',
- 'Ώ' => 'ώ',
- 'ῼ' => 'ῳ',
- 'Ω' => 'ω',
- 'K' => 'k',
- 'Å' => 'å',
- 'Ⅎ' => 'ⅎ',
- 'Ⅰ' => 'ⅰ',
- 'Ⅱ' => 'ⅱ',
- 'Ⅲ' => 'ⅲ',
- 'Ⅳ' => 'ⅳ',
- 'Ⅴ' => 'ⅴ',
- 'Ⅵ' => 'ⅵ',
- 'Ⅶ' => 'ⅶ',
- 'Ⅷ' => 'ⅷ',
- 'Ⅸ' => 'ⅸ',
- 'Ⅹ' => 'ⅹ',
- 'Ⅺ' => 'ⅺ',
- 'Ⅻ' => 'ⅻ',
- 'Ⅼ' => 'ⅼ',
- 'Ⅽ' => 'ⅽ',
- 'Ⅾ' => 'ⅾ',
- 'Ⅿ' => 'ⅿ',
- 'Ↄ' => 'ↄ',
- 'Ⓐ' => 'ⓐ',
- 'Ⓑ' => 'ⓑ',
- 'Ⓒ' => 'ⓒ',
- 'Ⓓ' => 'ⓓ',
- 'Ⓔ' => 'ⓔ',
- 'Ⓕ' => 'ⓕ',
- 'Ⓖ' => 'ⓖ',
- 'Ⓗ' => 'ⓗ',
- 'Ⓘ' => 'ⓘ',
- 'Ⓙ' => 'ⓙ',
- 'Ⓚ' => 'ⓚ',
- 'Ⓛ' => 'ⓛ',
- 'Ⓜ' => 'ⓜ',
- 'Ⓝ' => 'ⓝ',
- 'Ⓞ' => 'ⓞ',
- 'Ⓟ' => 'ⓟ',
- 'Ⓠ' => 'ⓠ',
- 'Ⓡ' => 'ⓡ',
- 'Ⓢ' => 'ⓢ',
- 'Ⓣ' => 'ⓣ',
- 'Ⓤ' => 'ⓤ',
- 'Ⓥ' => 'ⓥ',
- 'Ⓦ' => 'ⓦ',
- 'Ⓧ' => 'ⓧ',
- 'Ⓨ' => 'ⓨ',
- 'Ⓩ' => 'ⓩ',
- 'Ⰰ' => 'ⰰ',
- 'Ⰱ' => 'ⰱ',
- 'Ⰲ' => 'ⰲ',
- 'Ⰳ' => 'ⰳ',
- 'Ⰴ' => 'ⰴ',
- 'Ⰵ' => 'ⰵ',
- 'Ⰶ' => 'ⰶ',
- 'Ⰷ' => 'ⰷ',
- 'Ⰸ' => 'ⰸ',
- 'Ⰹ' => 'ⰹ',
- 'Ⰺ' => 'ⰺ',
- 'Ⰻ' => 'ⰻ',
- 'Ⰼ' => 'ⰼ',
- 'Ⰽ' => 'ⰽ',
- 'Ⰾ' => 'ⰾ',
- 'Ⰿ' => 'ⰿ',
- 'Ⱀ' => 'ⱀ',
- 'Ⱁ' => 'ⱁ',
- 'Ⱂ' => 'ⱂ',
- 'Ⱃ' => 'ⱃ',
- 'Ⱄ' => 'ⱄ',
- 'Ⱅ' => 'ⱅ',
- 'Ⱆ' => 'ⱆ',
- 'Ⱇ' => 'ⱇ',
- 'Ⱈ' => 'ⱈ',
- 'Ⱉ' => 'ⱉ',
- 'Ⱊ' => 'ⱊ',
- 'Ⱋ' => 'ⱋ',
- 'Ⱌ' => 'ⱌ',
- 'Ⱍ' => 'ⱍ',
- 'Ⱎ' => 'ⱎ',
- 'Ⱏ' => 'ⱏ',
- 'Ⱐ' => 'ⱐ',
- 'Ⱑ' => 'ⱑ',
- 'Ⱒ' => 'ⱒ',
- 'Ⱓ' => 'ⱓ',
- 'Ⱔ' => 'ⱔ',
- 'Ⱕ' => 'ⱕ',
- 'Ⱖ' => 'ⱖ',
- 'Ⱗ' => 'ⱗ',
- 'Ⱘ' => 'ⱘ',
- 'Ⱙ' => 'ⱙ',
- 'Ⱚ' => 'ⱚ',
- 'Ⱛ' => 'ⱛ',
- 'Ⱜ' => 'ⱜ',
- 'Ⱝ' => 'ⱝ',
- 'Ⱞ' => 'ⱞ',
- 'Ⱡ' => 'ⱡ',
- 'Ɫ' => 'ɫ',
- 'Ᵽ' => 'ᵽ',
- 'Ɽ' => 'ɽ',
- 'Ⱨ' => 'ⱨ',
- 'Ⱪ' => 'ⱪ',
- 'Ⱬ' => 'ⱬ',
- 'Ɑ' => 'ɑ',
- 'Ɱ' => 'ɱ',
- 'Ɐ' => 'ɐ',
- 'Ɒ' => 'ɒ',
- 'Ⱳ' => 'ⱳ',
- 'Ⱶ' => 'ⱶ',
- 'Ȿ' => 'ȿ',
- 'Ɀ' => 'ɀ',
- 'Ⲁ' => 'ⲁ',
- 'Ⲃ' => 'ⲃ',
- 'Ⲅ' => 'ⲅ',
- 'Ⲇ' => 'ⲇ',
- 'Ⲉ' => 'ⲉ',
- 'Ⲋ' => 'ⲋ',
- 'Ⲍ' => 'ⲍ',
- 'Ⲏ' => 'ⲏ',
- 'Ⲑ' => 'ⲑ',
- 'Ⲓ' => 'ⲓ',
- 'Ⲕ' => 'ⲕ',
- 'Ⲗ' => 'ⲗ',
- 'Ⲙ' => 'ⲙ',
- 'Ⲛ' => 'ⲛ',
- 'Ⲝ' => 'ⲝ',
- 'Ⲟ' => 'ⲟ',
- 'Ⲡ' => 'ⲡ',
- 'Ⲣ' => 'ⲣ',
- 'Ⲥ' => 'ⲥ',
- 'Ⲧ' => 'ⲧ',
- 'Ⲩ' => 'ⲩ',
- 'Ⲫ' => 'ⲫ',
- 'Ⲭ' => 'ⲭ',
- 'Ⲯ' => 'ⲯ',
- 'Ⲱ' => 'ⲱ',
- 'Ⲳ' => 'ⲳ',
- 'Ⲵ' => 'ⲵ',
- 'Ⲷ' => 'ⲷ',
- 'Ⲹ' => 'ⲹ',
- 'Ⲻ' => 'ⲻ',
- 'Ⲽ' => 'ⲽ',
- 'Ⲿ' => 'ⲿ',
- 'Ⳁ' => 'ⳁ',
- 'Ⳃ' => 'ⳃ',
- 'Ⳅ' => 'ⳅ',
- 'Ⳇ' => 'ⳇ',
- 'Ⳉ' => 'ⳉ',
- 'Ⳋ' => 'ⳋ',
- 'Ⳍ' => 'ⳍ',
- 'Ⳏ' => 'ⳏ',
- 'Ⳑ' => 'ⳑ',
- 'Ⳓ' => 'ⳓ',
- 'Ⳕ' => 'ⳕ',
- 'Ⳗ' => 'ⳗ',
- 'Ⳙ' => 'ⳙ',
- 'Ⳛ' => 'ⳛ',
- 'Ⳝ' => 'ⳝ',
- 'Ⳟ' => 'ⳟ',
- 'Ⳡ' => 'ⳡ',
- 'Ⳣ' => 'ⳣ',
- 'Ⳬ' => 'ⳬ',
- 'Ⳮ' => 'ⳮ',
- 'Ꙁ' => 'ꙁ',
- 'Ꙃ' => 'ꙃ',
- 'Ꙅ' => 'ꙅ',
- 'Ꙇ' => 'ꙇ',
- 'Ꙉ' => 'ꙉ',
- 'Ꙋ' => 'ꙋ',
- 'Ꙍ' => 'ꙍ',
- 'Ꙏ' => 'ꙏ',
- 'Ꙑ' => 'ꙑ',
- 'Ꙓ' => 'ꙓ',
- 'Ꙕ' => 'ꙕ',
- 'Ꙗ' => 'ꙗ',
- 'Ꙙ' => 'ꙙ',
- 'Ꙛ' => 'ꙛ',
- 'Ꙝ' => 'ꙝ',
- 'Ꙟ' => 'ꙟ',
- 'Ꙡ' => 'ꙡ',
- 'Ꙣ' => 'ꙣ',
- 'Ꙥ' => 'ꙥ',
- 'Ꙧ' => 'ꙧ',
- 'Ꙩ' => 'ꙩ',
- 'Ꙫ' => 'ꙫ',
- 'Ꙭ' => 'ꙭ',
- 'Ꚁ' => 'ꚁ',
- 'Ꚃ' => 'ꚃ',
- 'Ꚅ' => 'ꚅ',
- 'Ꚇ' => 'ꚇ',
- 'Ꚉ' => 'ꚉ',
- 'Ꚋ' => 'ꚋ',
- 'Ꚍ' => 'ꚍ',
- 'Ꚏ' => 'ꚏ',
- 'Ꚑ' => 'ꚑ',
- 'Ꚓ' => 'ꚓ',
- 'Ꚕ' => 'ꚕ',
- 'Ꚗ' => 'ꚗ',
- 'Ꜣ' => 'ꜣ',
- 'Ꜥ' => 'ꜥ',
- 'Ꜧ' => 'ꜧ',
- 'Ꜩ' => 'ꜩ',
- 'Ꜫ' => 'ꜫ',
- 'Ꜭ' => 'ꜭ',
- 'Ꜯ' => 'ꜯ',
- 'Ꜳ' => 'ꜳ',
- 'Ꜵ' => 'ꜵ',
- 'Ꜷ' => 'ꜷ',
- 'Ꜹ' => 'ꜹ',
- 'Ꜻ' => 'ꜻ',
- 'Ꜽ' => 'ꜽ',
- 'Ꜿ' => 'ꜿ',
- 'Ꝁ' => 'ꝁ',
- 'Ꝃ' => 'ꝃ',
- 'Ꝅ' => 'ꝅ',
- 'Ꝇ' => 'ꝇ',
- 'Ꝉ' => 'ꝉ',
- 'Ꝋ' => 'ꝋ',
- 'Ꝍ' => 'ꝍ',
- 'Ꝏ' => 'ꝏ',
- 'Ꝑ' => 'ꝑ',
- 'Ꝓ' => 'ꝓ',
- 'Ꝕ' => 'ꝕ',
- 'Ꝗ' => 'ꝗ',
- 'Ꝙ' => 'ꝙ',
- 'Ꝛ' => 'ꝛ',
- 'Ꝝ' => 'ꝝ',
- 'Ꝟ' => 'ꝟ',
- 'Ꝡ' => 'ꝡ',
- 'Ꝣ' => 'ꝣ',
- 'Ꝥ' => 'ꝥ',
- 'Ꝧ' => 'ꝧ',
- 'Ꝩ' => 'ꝩ',
- 'Ꝫ' => 'ꝫ',
- 'Ꝭ' => 'ꝭ',
- 'Ꝯ' => 'ꝯ',
- 'Ꝺ' => 'ꝺ',
- 'Ꝼ' => 'ꝼ',
- 'Ᵹ' => 'ᵹ',
- 'Ꝿ' => 'ꝿ',
- 'Ꞁ' => 'ꞁ',
- 'Ꞃ' => 'ꞃ',
- 'Ꞅ' => 'ꞅ',
- 'Ꞇ' => 'ꞇ',
- 'Ꞌ' => 'ꞌ',
- 'Ɥ' => 'ɥ',
- 'Ꞑ' => 'ꞑ',
- 'Ꞡ' => 'ꞡ',
- 'Ꞣ' => 'ꞣ',
- 'Ꞥ' => 'ꞥ',
- 'Ꞧ' => 'ꞧ',
- 'Ꞩ' => 'ꞩ',
- 'A' => 'a',
- 'B' => 'b',
- 'C' => 'c',
- 'D' => 'd',
- 'E' => 'e',
- 'F' => 'f',
- 'G' => 'g',
- 'H' => 'h',
- 'I' => 'i',
- 'J' => 'j',
- 'K' => 'k',
- 'L' => 'l',
- 'M' => 'm',
- 'N' => 'n',
- 'O' => 'o',
- 'P' => 'p',
- 'Q' => 'q',
- 'R' => 'r',
- 'S' => 's',
- 'T' => 't',
- 'U' => 'u',
- 'V' => 'v',
- 'W' => 'w',
- 'X' => 'x',
- 'Y' => 'y',
- 'Z' => 'z',
- '𐐀' => '𐐨',
- '𐐁' => '𐐩',
- '𐐂' => '𐐪',
- '𐐃' => '𐐫',
- '𐐄' => '𐐬',
- '𐐅' => '𐐭',
- '𐐆' => '𐐮',
- '𐐇' => '𐐯',
- '𐐈' => '𐐰',
- '𐐉' => '𐐱',
- '𐐊' => '𐐲',
- '𐐋' => '𐐳',
- '𐐌' => '𐐴',
- '𐐍' => '𐐵',
- '𐐎' => '𐐶',
- '𐐏' => '𐐷',
- '𐐐' => '𐐸',
- '𐐑' => '𐐹',
- '𐐒' => '𐐺',
- '𐐓' => '𐐻',
- '𐐔' => '𐐼',
- '𐐕' => '𐐽',
- '𐐖' => '𐐾',
- '𐐗' => '𐐿',
- '𐐘' => '𐑀',
- '𐐙' => '𐑁',
- '𐐚' => '𐑂',
- '𐐛' => '𐑃',
- '𐐜' => '𐑄',
- '𐐝' => '𐑅',
- '𐐞' => '𐑆',
- '𐐟' => '𐑇',
- '𐐠' => '𐑈',
- '𐐡' => '𐑉',
- '𐐢' => '𐑊',
- '𐐣' => '𐑋',
- '𐐤' => '𐑌',
- '𐐥' => '𐑍',
- '𐐦' => '𐑎',
- '𐐧' => '𐑏'
-);
+++ /dev/null
-<?php
-/**
- * This script generates Utf8Case.php from the Unicode Character Database
- * and supplementary files.
- *
- * Copyright © 2004,2008 Brion Vibber <brion@pobox.com>
- * http://www.mediawiki.org/
- *
- * 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 UtfNormal
- */
-
-if( PHP_SAPI != 'cli' ) {
- die( "Run me from the command line please.\n" );
-}
-
-require_once 'UtfNormalDefines.php';
-require_once 'UtfNormalUtil.php';
-
-$in = fopen("UnicodeData.txt", "rt" );
-if( !$in ) {
- print "Can't open UnicodeData.txt for reading.\n";
- print "If necessary, fetch this file from the internet:\n";
- print "http://www.unicode.org/Public/UNIDATA/UnicodeData.txt\n";
- exit(-1);
-}
-$wikiUpperChars = array();
-$wikiLowerChars = array();
-
-print "Reading character definitions...\n";
-while( false !== ($line = fgets( $in ) ) ) {
- $columns = explode(';', $line);
- $codepoint = $columns[0];
- $name = $columns[1];
- $simpleUpper = $columns[12];
- $simpleLower = $columns[13];
-
- $source = codepointToUtf8( hexdec( $codepoint ) );
- if( $simpleUpper ) {
- $wikiUpperChars[$source] = codepointToUtf8( hexdec( $simpleUpper ) );
- }
- if( $simpleLower ) {
- $wikiLowerChars[$source] = codepointToUtf8( hexdec( $simpleLower ) );
- }
-}
-fclose( $in );
-
-$out = fopen( "Utf8Case.php", "wt" );
-if( $out ) {
- $outUpperChars = escapeArray( $wikiUpperChars );
- $outLowerChars = escapeArray( $wikiLowerChars );
- $outdata = "<" . "?php
-/**
- * Simple 1:1 upper/lowercase switching arrays for utf-8 text.
- * Won't get context-sensitive things yet.
- *
- * Hack for bugs in ucfirst() and company
- *
- * These are pulled from memcached if possible, as this is faster than filling
- * up a big array manually.
- *
- * @file
- * @ingroup Language
- */
-
-/**
- * Translation array to get upper case character
- */
-\$wikiUpperChars = $outUpperChars;
-
-/**
- * Translation array to get lower case character
- */
-\$wikiLowerChars = $outLowerChars;\n";
- fputs( $out, $outdata );
- fclose( $out );
- print "Wrote out Utf8Case.php\n";
-} else {
- print "Can't create file Utf8Case.php\n";
- exit(-1);
-}
-
-
-function escapeArray( $arr ) {
- return "array(\n" .
- implode( ",\n",
- array_map( "escapeLine",
- array_keys( $arr ),
- array_values( $arr ) ) ) .
- "\n)";
-}
-
-function escapeLine( $key, $val ) {
- $encKey = escapeSingleString( $key );
- $encVal = escapeSingleString( $val );
- return "\t'$encKey' => '$encVal'";
-}
+++ /dev/null
-<?php
-/**
- * Object caching using DBA backend.
- *
- * 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 Cache
- */
-
-/**
- * Cache that uses DBA as a backend.
- * Slow due to the need to constantly open and close the file to avoid holding
- * writer locks. Intended for development use only, as a memcached workalike
- * for systems that don't have it.
- *
- * On construction you can pass array( 'dir' => '/some/path' ); as a parameter
- * to override the default DBA files directory (wfTempDir()).
- *
- * @ingroup Cache
- */
-class DBABagOStuff extends BagOStuff {
- var $mHandler, $mFile, $mReader, $mWriter, $mDisabled;
-
- /**
- * @param $params array
- */
- public function __construct( $params ) {
- global $wgDBAhandler;
-
- if ( !isset( $params['dir'] ) ) {
- $params['dir'] = wfTempDir();
- }
-
- $this->mFile = $params['dir'] . '/mw-cache-' . wfWikiID() . '.db';
- wfDebug( __CLASS__ . ": using cache file {$this->mFile}\n" );
- $this->mHandler = $wgDBAhandler;
- }
-
- /**
- * Encode value and expiry for storage
- * @param $value
- * @param $expiry
- *
- * @return string
- */
- protected function encode( $value, $expiry ) {
- # Convert to absolute time
- $expiry = $this->convertExpiry( $expiry );
-
- return sprintf( '%010u', intval( $expiry ) ) . ' ' . serialize( $value );
- }
-
- /**
- * @param $blob string
- * @return array list containing value first and expiry second
- */
- protected function decode( $blob ) {
- if ( !is_string( $blob ) ) {
- return array( false, 0 );
- } else {
- return array(
- unserialize( substr( $blob, 11 ) ),
- intval( substr( $blob, 0, 10 ) )
- );
- }
- }
-
- /**
- * @return resource
- */
- protected function getReader() {
- if ( file_exists( $this->mFile ) ) {
- $handle = dba_open( $this->mFile, 'rl', $this->mHandler );
- } else {
- $handle = $this->getWriter();
- }
-
- if ( !$handle ) {
- wfDebug( "Unable to open DBA cache file {$this->mFile}\n" );
- }
-
- return $handle;
- }
-
- /**
- * @return resource
- */
- protected function getWriter() {
- $handle = dba_open( $this->mFile, 'cl', $this->mHandler );
-
- if ( !$handle ) {
- wfDebug( "Unable to open DBA cache file {$this->mFile}\n" );
- }
-
- return $handle;
- }
-
- /**
- * @param $key string
- * @param $casToken[optional] mixed
- * @return mixed
- */
- public function get( $key, &$casToken = null ) {
- wfProfileIn( __METHOD__ );
- wfDebug( __METHOD__ . "($key)\n" );
-
- $handle = $this->getReader();
- if ( !$handle ) {
- wfProfileOut( __METHOD__ );
- return false;
- }
-
- $val = dba_fetch( $key, $handle );
- list( $val, $expiry ) = $this->decode( $val );
-
- # Must close ASAP because locks are held
- dba_close( $handle );
-
- if ( $val !== false && $expiry && $expiry < time() ) {
- # Key is expired, delete it
- $handle = $this->getWriter();
- dba_delete( $key, $handle );
- dba_close( $handle );
- wfDebug( __METHOD__ . ": $key expired\n" );
- $val = false;
- }
-
- $casToken = $val;
-
- wfProfileOut( __METHOD__ );
-
- return $val;
- }
-
- /**
- * @param $key string
- * @param $value mixed
- * @param $exptime int
- * @return bool
- */
- public function set( $key, $value, $exptime = 0 ) {
- wfProfileIn( __METHOD__ );
- wfDebug( __METHOD__ . "($key)\n" );
-
- $blob = $this->encode( $value, $exptime );
-
- $handle = $this->getWriter();
- if ( !$handle ) {
- wfProfileOut( __METHOD__ );
- return false;
- }
-
- $ret = dba_replace( $key, $blob, $handle );
- dba_close( $handle );
-
- wfProfileOut( __METHOD__ );
- return $ret;
- }
-
- /**
- * @param $casToken mixed
- * @param $key string
- * @param $value mixed
- * @param $exptime int
- * @return bool
- */
- public function cas( $casToken, $key, $value, $exptime = 0 ) {
- wfProfileIn( __METHOD__ );
- wfDebug( __METHOD__ . "($key)\n" );
-
- $blob = $this->encode( $value, $exptime );
-
- $handle = $this->getWriter();
- if ( !$handle ) {
- wfProfileOut( __METHOD__ );
- return false;
- }
-
- // DBA is locked to any other write connection, so we can safely
- // compare the current & previous value before saving new value
- $val = dba_fetch( $key, $handle );
- list( $val, $exptime ) = $this->decode( $val );
- if ( $casToken !== $val ) {
- dba_close( $handle );
- wfProfileOut( __METHOD__ );
- return false;
- }
-
- $ret = dba_replace( $key, $blob, $handle );
- dba_close( $handle );
-
- wfProfileOut( __METHOD__ );
- return $ret;
- }
-
- /**
- * @param $key string
- * @param $time int
- * @return bool
- */
- public function delete( $key, $time = 0 ) {
- wfProfileIn( __METHOD__ );
- wfDebug( __METHOD__ . "($key)\n" );
-
- $handle = $this->getWriter();
- if ( !$handle ) {
- wfProfileOut( __METHOD__ );
- return false;
- }
-
- $ret = !dba_exists( $key, $handle ) || dba_delete( $key, $handle );
- dba_close( $handle );
-
- wfProfileOut( __METHOD__ );
- return $ret;
- }
-
- /**
- * @param $key string
- * @param $value mixed
- * @param $exptime int
- * @return bool
- */
- public function add( $key, $value, $exptime = 0 ) {
- wfProfileIn( __METHOD__ );
-
- $blob = $this->encode( $value, $exptime );
-
- $handle = $this->getWriter();
-
- if ( !$handle ) {
- wfProfileOut( __METHOD__ );
- return false;
- }
-
- $ret = dba_insert( $key, $blob, $handle );
-
- # Insert failed, check to see if it failed due to an expired key
- if ( !$ret ) {
- list( , $expiry ) = $this->decode( dba_fetch( $key, $handle ) );
-
- if ( $expiry && $expiry < time() ) {
- # Yes expired, delete and try again
- dba_delete( $key, $handle );
- $ret = dba_insert( $key, $blob, $handle );
- # This time if it failed then it will be handled by the caller like any other race
- }
- }
-
- dba_close( $handle );
-
- wfProfileOut( __METHOD__ );
- return $ret;
- }
-
- /**
- * @param $key string
- * @param $step integer
- * @return integer|bool
- */
- public function incr( $key, $step = 1 ) {
- wfProfileIn( __METHOD__ );
-
- $handle = $this->getWriter();
-
- if ( !$handle ) {
- wfProfileOut( __METHOD__ );
- return false;
- }
-
- list( $value, $expiry ) = $this->decode( dba_fetch( $key, $handle ) );
- if ( $value !== false ) {
- if ( $expiry && $expiry < time() ) {
- # Key is expired, delete it
- dba_delete( $key, $handle );
- wfDebug( __METHOD__ . ": $key expired\n" );
- $value = false;
- } else {
- $value += $step;
- $blob = $this->encode( $value, $expiry );
-
- $ret = dba_replace( $key, $blob, $handle );
- $value = $ret ? $value : false;
- }
- }
-
- dba_close( $handle );
-
- wfProfileOut( __METHOD__ );
-
- return ( $value === false ) ? false : (int)$value;
- }
-}
+++ /dev/null
-<?php
-/**
- * Object caching using the Ehcache RESTful web service.
- *
- * 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 Cache
- */
-
-/**
- * Client for the Ehcache RESTful web service - http://ehcache.org/documentation/cache_server.html
- * TODO: Simplify configuration and add to the installer.
- *
- * @ingroup Cache
- */
-class EhcacheBagOStuff extends BagOStuff {
- var $servers, $cacheName, $connectTimeout, $timeout, $curlOptions,
- $requestData, $requestDataPos;
-
- var $curls = array();
-
- /**
- * @param $params array
- * @throws MWException
- */
- function __construct( $params ) {
- if ( !defined( 'CURLOPT_TIMEOUT_MS' ) ) {
- throw new MWException( __CLASS__ . ' requires curl version 7.16.2 or later.' );
- }
- if ( !extension_loaded( 'zlib' ) ) {
- throw new MWException( __CLASS__ . ' requires the zlib extension' );
- }
- if ( !isset( $params['servers'] ) ) {
- throw new MWException( __METHOD__ . ': servers parameter is required' );
- }
- $this->servers = $params['servers'];
- $this->cacheName = isset( $params['cache'] ) ? $params['cache'] : 'mw';
- $this->connectTimeout = isset( $params['connectTimeout'] )
- ? $params['connectTimeout'] : 1;
- $this->timeout = isset( $params['timeout'] ) ? $params['timeout'] : 1;
- $this->curlOptions = array(
- CURLOPT_CONNECTTIMEOUT_MS => intval( $this->connectTimeout * 1000 ),
- CURLOPT_TIMEOUT_MS => intval( $this->timeout * 1000 ),
- CURLOPT_RETURNTRANSFER => 1,
- CURLOPT_CUSTOMREQUEST => 'GET',
- CURLOPT_POST => 0,
- CURLOPT_POSTFIELDS => '',
- CURLOPT_HTTPHEADER => array(),
- );
- }
-
- /**
- * @param $key string
- * @param $casToken[optional] mixed
- * @return bool|mixed
- */
- public function get( $key, &$casToken = null ) {
- wfProfileIn( __METHOD__ );
- $response = $this->doItemRequest( $key );
- if ( !$response || $response['http_code'] == 404 ) {
- wfProfileOut( __METHOD__ );
- return false;
- }
- if ( $response['http_code'] >= 300 ) {
- wfDebug( __METHOD__ . ": GET failure, got HTTP {$response['http_code']}\n" );
- wfProfileOut( __METHOD__ );
- return false;
- }
- $body = $response['body'];
- $type = $response['content_type'];
- if ( $type == 'application/vnd.php.serialized+deflate' ) {
- $body = gzinflate( $body );
- if ( !$body ) {
- wfDebug( __METHOD__ . ": error inflating $key\n" );
- wfProfileOut( __METHOD__ );
- return false;
- }
- $data = unserialize( $body );
- } elseif ( $type == 'application/vnd.php.serialized' ) {
- $data = unserialize( $body );
- } else {
- wfDebug( __METHOD__ . ": unknown content type \"$type\"\n" );
- wfProfileOut( __METHOD__ );
- return false;
- }
-
- $casToken = $body;
-
- wfProfileOut( __METHOD__ );
- return $data;
- }
-
- /**
- * @param $key string
- * @param $value mixed
- * @param $expiry int
- * @return bool
- */
- public function set( $key, $value, $expiry = 0 ) {
- wfProfileIn( __METHOD__ );
- $expiry = $this->convertExpiry( $expiry );
- $ttl = $expiry ? $expiry - time() : 2147483647;
- $blob = serialize( $value );
- if ( strlen( $blob ) > 100 ) {
- $blob = gzdeflate( $blob );
- $contentType = 'application/vnd.php.serialized+deflate';
- } else {
- $contentType = 'application/vnd.php.serialized';
- }
-
- $code = $this->attemptPut( $key, $blob, $contentType, $ttl );
-
- if ( $code == 404 ) {
- // Maybe the cache does not exist yet, let's try creating it
- if ( !$this->createCache( $key ) ) {
- wfDebug( __METHOD__ . ": cache creation failed\n" );
- wfProfileOut( __METHOD__ );
- return false;
- }
- $code = $this->attemptPut( $key, $blob, $contentType, $ttl );
- }
-
- $result = false;
- if ( !$code ) {
- wfDebug( __METHOD__ . ": PUT failure for key $key\n" );
- } elseif ( $code >= 300 ) {
- wfDebug( __METHOD__ . ": PUT failure for key $key: HTTP $code\n" );
- } else {
- $result = true;
- }
-
- wfProfileOut( __METHOD__ );
- return $result;
- }
-
- /**
- * @param $casToken mixed
- * @param $key string
- * @param $value mixed
- * @param $exptime int
- * @return bool
- */
- public function cas( $casToken, $key, $value, $exptime = 0 ) {
- // Not sure if we can implement CAS for ehcache. There appears to be CAS-support per
- // http://ehcache.org/documentation/get-started/consistency-options#cas-cache-operations,
- // but I can't find any docs for our current implementation.
- throw new MWException( "CAS is not implemented in " . __CLASS__ );
- }
-
- /**
- * @param $key string
- * @param $time int
- * @return bool
- */
- public function delete( $key, $time = 0 ) {
- wfProfileIn( __METHOD__ );
- $response = $this->doItemRequest( $key,
- array( CURLOPT_CUSTOMREQUEST => 'DELETE' ) );
- $code = isset( $response['http_code'] ) ? $response['http_code'] : 0;
- if ( !$response || ( $code != 404 && $code >= 300 ) ) {
- wfDebug( __METHOD__ . ": DELETE failure for key $key\n" );
- $result = false;
- } else {
- $result = true;
- }
- wfProfileOut( __METHOD__ );
- return $result;
- }
-
- /**
- * @see BagOStuff::merge()
- * @return bool success
- */
- public function merge( $key, closure $callback, $exptime = 0, $attempts = 10 ) {
- return $this->mergeViaLock( $key, $callback, $exptime, $attempts );
- }
-
- /**
- * @param $key string
- * @return string
- */
- protected function getCacheUrl( $key ) {
- if ( count( $this->servers ) == 1 ) {
- $server = reset( $this->servers );
- } else {
- // Use consistent hashing
- $hashes = array();
- foreach ( $this->servers as $server ) {
- $hashes[$server] = md5( $server . '/' . $key );
- }
- asort( $hashes );
- reset( $hashes );
- $server = key( $hashes );
- }
- return "http://$server/ehcache/rest/{$this->cacheName}";
- }
-
- /**
- * Get a cURL handle for the given cache URL.
- * We cache the handles to allow keepalive.
- */
- protected function getCurl( $cacheUrl ) {
- if ( !isset( $this->curls[$cacheUrl] ) ) {
- $this->curls[$cacheUrl] = curl_init();
- }
- return $this->curls[$cacheUrl];
- }
-
- /**
- * @param $key string
- * @param $data
- * @param $type
- * @param $ttl
- * @return int
- */
- protected function attemptPut( $key, $data, $type, $ttl ) {
- // In initial benchmarking, it was 30 times faster to use CURLOPT_POST
- // than CURLOPT_UPLOAD with CURLOPT_READFUNCTION. This was because
- // CURLOPT_UPLOAD was pushing the request headers first, then waiting
- // for an ACK packet, then sending the data, whereas CURLOPT_POST just
- // sends the headers and the data in a single send().
- $response = $this->doItemRequest( $key,
- array(
- CURLOPT_POST => 1,
- CURLOPT_CUSTOMREQUEST => 'PUT',
- CURLOPT_POSTFIELDS => $data,
- CURLOPT_HTTPHEADER => array(
- 'Content-Type: ' . $type,
- 'ehcacheTimeToLiveSeconds: ' . $ttl
- )
- )
- );
- if ( !$response ) {
- return 0;
- } else {
- return $response['http_code'];
- }
- }
-
- /**
- * @param $key string
- * @return bool
- */
- protected function createCache( $key ) {
- wfDebug( __METHOD__ . ": creating cache for $key\n" );
- $response = $this->doCacheRequest( $key,
- array(
- CURLOPT_POST => 1,
- CURLOPT_CUSTOMREQUEST => 'PUT',
- CURLOPT_POSTFIELDS => '',
- ) );
- if ( !$response ) {
- wfDebug( __CLASS__ . ": failed to create cache for $key\n" );
- return false;
- }
- return ( $response['http_code'] == 201 /* created */
- || $response['http_code'] == 409 /* already there */ );
- }
-
- /**
- * @param $key string
- * @param $curlOptions array
- * @return array|bool|mixed
- */
- protected function doCacheRequest( $key, $curlOptions = array() ) {
- $cacheUrl = $this->getCacheUrl( $key );
- $curl = $this->getCurl( $cacheUrl );
- return $this->doRequest( $curl, $cacheUrl, $curlOptions );
- }
-
- /**
- * @param $key string
- * @param $curlOptions array
- * @return array|bool|mixed
- */
- protected function doItemRequest( $key, $curlOptions = array() ) {
- $cacheUrl = $this->getCacheUrl( $key );
- $curl = $this->getCurl( $cacheUrl );
- $url = $cacheUrl . '/' . rawurlencode( $key );
- return $this->doRequest( $curl, $url, $curlOptions );
- }
-
- /**
- * @param $curl
- * @param $url string
- * @param $curlOptions array
- * @return array|bool|mixed
- * @throws MWException
- */
- protected function doRequest( $curl, $url, $curlOptions = array() ) {
- if ( array_diff_key( $curlOptions, $this->curlOptions ) ) {
- // var_dump( array_diff_key( $curlOptions, $this->curlOptions ) );
- throw new MWException( __METHOD__ . ": to prevent options set in one doRequest() " .
- "call from affecting subsequent doRequest() calls, only options listed " .
- "in \$this->curlOptions may be specified in the \$curlOptions parameter." );
- }
- $curlOptions += $this->curlOptions;
- $curlOptions[CURLOPT_URL] = $url;
-
- curl_setopt_array( $curl, $curlOptions );
- $result = curl_exec( $curl );
- if ( $result === false ) {
- wfDebug( __CLASS__ . ": curl error: " . curl_error( $curl ) . "\n" );
- return false;
- }
- $info = curl_getinfo( $curl );
- $info['body'] = $result;
- return $info;
- }
-}
return true;
}
}
-
-/**
- * Backwards compatibility alias for EmptyBagOStuff
- * @deprecated since 1.18
- */
-class FakeMemCachedClient extends EmptyBagOStuff {
-}
return false;
}
- $casToken = $this->bag[$key][0];
+ $casToken = serialize( $this->bag[$key][0] );
return $this->bag[$key][0];
}
* @return bool
*/
function cas( $casToken, $key, $value, $exptime = 0 ) {
- if ( $this->get( $key ) === $casToken ) {
+ if ( serialize( $this->get( $key ) ) === $casToken ) {
return $this->set( $key, $value, $exptime );
}
* @access private
*/
function _connect_sock( &$sock, $host ) {
- list( $ip, $port ) = explode( ':', $host );
+ list( $ip, $port ) = preg_split('/:(?=\d)/' , $host );
$sock = false;
$timeout = $this->_connect_timeout;
$errno = $errstr = null;
return false;
}
try {
- $result = $this->unserialize( $conn->get( $key ) );
+ $value = $conn->get( $key );
+ $casToken = $value;
+ $result = $this->unserialize( $value );
} catch ( RedisException $e ) {
$result = false;
$this->handleException( $server, $conn, $e );
}
- $casToken = $result;
$this->logRequest( 'get', $key, $server, $result );
return $result;
try {
$conn->watch( $key );
- if ( $this->get( $key ) !== $casToken ) {
+ if ( $this->serialize( $this->get( $key ) ) !== $casToken ) {
$conn->unwatch();
return false;
}
public function createTables() {
for ( $serverIndex = 0; $serverIndex < $this->numServers; $serverIndex++ ) {
$db = $this->getDB( $serverIndex );
- if ( $db->getType() !== 'mysql'
- || version_compare( $db->getServerVersion(), '4.1.0', '<' )
- ) {
+ if ( $db->getType() !== 'mysql' ) {
throw new MWException( __METHOD__ . ' is not supported on this DB server' );
}
/**
* @return string TS_MW timestamp
*/
- function getCacheTime() { return wfTimestamp( TS_MW, $this->mCacheTime ); }
+ function getCacheTime() {
+ return wfTimestamp( TS_MW, $this->mCacheTime );
+ }
- function containsOldMagic() { return $this->mContainsOldMagic; }
- function setContainsOldMagic( $com ) { return wfSetVar( $this->mContainsOldMagic, $com ); }
+ /**
+ * @return bool
+ */
+ function containsOldMagic() {
+ return $this->mContainsOldMagic;
+ }
+
+ /**
+ * @param $com bool
+ * @return bool
+ */
+ function setContainsOldMagic( $com ) {
+ return wfSetVar( $this->mContainsOldMagic, $com );
+ }
/**
* setCacheTime() sets the timestamp expressing when the page has been rendered.
* @param $t string
* @return string
*/
- function setCacheTime( $t ) { return wfSetVar( $this->mCacheTime, $t ); }
+ function setCacheTime( $t ) {
+ return wfSetVar( $this->mCacheTime, $t );
+ }
/**
* Sets the number of seconds after which this object should expire.
# function callback,
# optional SFH_NO_HASH to omit the hash from calls (e.g. {{int:...}}
# instead of {{#int:...}})
+ $noHashFunctions = array(
+ 'ns', 'nse', 'urlencode', 'lcfirst', 'ucfirst', 'lc', 'uc',
+ 'localurl', 'localurle', 'fullurl', 'fullurle', 'canonicalurl',
+ 'canonicalurle', 'formatnum', 'grammar', 'gender', 'plural',
+ 'numberofpages', 'numberofusers', 'numberofactiveusers',
+ 'numberofarticles', 'numberoffiles', 'numberofadmins',
+ 'numberingroup', 'numberofedits', 'numberofviews', 'language',
+ 'padleft', 'padright', 'anchorencode', 'defaultsort', 'filepath',
+ 'pagesincategory', 'pagesize', 'protectionlevel',
+ 'namespacee', 'namespacenumber', 'talkspace', 'talkspacee',
+ 'subjectspace', 'subjectspacee', 'pagename', 'pagenamee',
+ 'fullpagename', 'fullpagenamee', 'rootpagename', 'rootpagenamee',
+ 'basepagename', 'basepagenamee', 'subpagename', 'subpagenamee',
+ 'talkpagename', 'talkpagenamee', 'subjectpagename',
+ 'subjectpagenamee', 'pageid', 'revisionid', 'revisionday',
+ 'revisionday2', 'revisionmonth', 'revisionmonth1', 'revisionyear',
+ 'revisiontimestamp', 'revisionuser', 'cascadingsources',
+ );
+ foreach ( $noHashFunctions as $func ) {
+ $parser->setFunctionHook( $func, array( __CLASS__, $func ), SFH_NO_HASH );
+ }
- $parser->setFunctionHook( 'int', array( __CLASS__, 'intFunction' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'ns', array( __CLASS__, 'ns' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'nse', array( __CLASS__, 'nse' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'urlencode', array( __CLASS__, 'urlencode' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'lcfirst', array( __CLASS__, 'lcfirst' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'ucfirst', array( __CLASS__, 'ucfirst' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'lc', array( __CLASS__, 'lc' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'uc', array( __CLASS__, 'uc' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'localurl', array( __CLASS__, 'localurl' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'localurle', array( __CLASS__, 'localurle' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'fullurl', array( __CLASS__, 'fullurl' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'fullurle', array( __CLASS__, 'fullurle' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'canonicalurl', array( __CLASS__, 'canonicalurl' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'canonicalurle', array( __CLASS__, 'canonicalurle' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'formatnum', array( __CLASS__, 'formatnum' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'grammar', array( __CLASS__, 'grammar' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'gender', array( __CLASS__, 'gender' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'plural', array( __CLASS__, 'plural' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'numberofpages', array( __CLASS__, 'numberofpages' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'numberofusers', array( __CLASS__, 'numberofusers' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'numberofactiveusers', array( __CLASS__, 'numberofactiveusers' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'numberofarticles', array( __CLASS__, 'numberofarticles' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'numberoffiles', array( __CLASS__, 'numberoffiles' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'numberofadmins', array( __CLASS__, 'numberofadmins' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'numberingroup', array( __CLASS__, 'numberingroup' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'numberofedits', array( __CLASS__, 'numberofedits' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'numberofviews', array( __CLASS__, 'numberofviews' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'language', array( __CLASS__, 'language' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'padleft', array( __CLASS__, 'padleft' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'padright', array( __CLASS__, 'padright' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'anchorencode', array( __CLASS__, 'anchorencode' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'special', array( __CLASS__, 'special' ) );
- $parser->setFunctionHook( 'speciale', array( __CLASS__, 'speciale' ) );
- $parser->setFunctionHook( 'defaultsort', array( __CLASS__, 'defaultsort' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'filepath', array( __CLASS__, 'filepath' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'pagesincategory', array( __CLASS__, 'pagesincategory' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'pagesize', array( __CLASS__, 'pagesize' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'protectionlevel', array( __CLASS__, 'protectionlevel' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'namespace', array( __CLASS__, 'mwnamespace' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'namespacee', array( __CLASS__, 'namespacee' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'namespacenumber', array( __CLASS__, 'namespacenumber' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'talkspace', array( __CLASS__, 'talkspace' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'talkspacee', array( __CLASS__, 'talkspacee' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'subjectspace', array( __CLASS__, 'subjectspace' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'subjectspacee', array( __CLASS__, 'subjectspacee' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'pagename', array( __CLASS__, 'pagename' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'pagenamee', array( __CLASS__, 'pagenamee' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'fullpagename', array( __CLASS__, 'fullpagename' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'fullpagenamee', array( __CLASS__, 'fullpagenamee' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'rootpagename', array( __CLASS__, 'rootpagename' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'rootpagenamee', array( __CLASS__, 'rootpagenamee' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'basepagename', array( __CLASS__, 'basepagename' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'basepagenamee', array( __CLASS__, 'basepagenamee' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'subpagename', array( __CLASS__, 'subpagename' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'subpagenamee', array( __CLASS__, 'subpagenamee' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'talkpagename', array( __CLASS__, 'talkpagename' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'talkpagenamee', array( __CLASS__, 'talkpagenamee' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'subjectpagename', array( __CLASS__, 'subjectpagename' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'subjectpagenamee', array( __CLASS__, 'subjectpagenamee' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'tag', array( __CLASS__, 'tagObj' ), SFH_OBJECT_ARGS );
- $parser->setFunctionHook( 'formatdate', array( __CLASS__, 'formatDate' ) );
- $parser->setFunctionHook( 'pageid', array( __CLASS__, 'pageid' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'revisionid', array( __CLASS__, 'revisionid' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'revisionday', array( __CLASS__, 'revisionday' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'revisionday2', array( __CLASS__, 'revisionday2' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'revisionmonth', array( __CLASS__, 'revisionmonth' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'revisionmonth1', array( __CLASS__, 'revisionmonth1' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'revisionyear', array( __CLASS__, 'revisionyear' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'revisiontimestamp', array( __CLASS__, 'revisiontimestamp' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'revisionuser', array( __CLASS__, 'revisionuser' ), SFH_NO_HASH );
+ $parser->setFunctionHook( 'namespace', array( __CLASS__, 'mwnamespace' ), SFH_NO_HASH );
+ $parser->setFunctionHook( 'int', array( __CLASS__, 'intFunction' ), SFH_NO_HASH );
+ $parser->setFunctionHook( 'special', array( __CLASS__, 'special' ) );
+ $parser->setFunctionHook( 'speciale', array( __CLASS__, 'speciale' ) );
+ $parser->setFunctionHook( 'tag', array( __CLASS__, 'tagObj' ), SFH_OBJECT_ARGS );
+ $parser->setFunctionHook( 'formatdate', array( __CLASS__, 'formatDate' ) );
if ( $wgAllowDisplayTitle ) {
$parser->setFunctionHook( 'displaytitle', array( __CLASS__, 'displaytitle' ), SFH_NO_HASH );
return $parser->markerSkipCallback( $s, array( $wgContLang, 'uc' ) );
}
- static function localurl( $parser, $s = '', $arg = null ) { return self::urlFunction( 'getLocalURL', $s, $arg ); }
- static function localurle( $parser, $s = '', $arg = null ) { return self::urlFunction( 'escapeLocalURL', $s, $arg ); }
- static function fullurl( $parser, $s = '', $arg = null ) { return self::urlFunction( 'getFullURL', $s, $arg ); }
- static function fullurle( $parser, $s = '', $arg = null ) { return self::urlFunction( 'escapeFullURL', $s, $arg ); }
- static function canonicalurl( $parser, $s = '', $arg = null ) { return self::urlFunction( 'getCanonicalURL', $s, $arg ); }
- static function canonicalurle( $parser, $s = '', $arg = null ) { return self::urlFunction( 'escapeCanonicalURL', $s, $arg ); }
+ static function localurl( $parser, $s = '', $arg = null ) {
+ return self::urlFunction( 'getLocalURL', $s, $arg );
+ }
+
+ static function localurle( $parser, $s = '', $arg = null ) {
+ $temp = self::urlFunction( 'getLocalURL', $s, $arg );
+ if( !is_string( $temp ) ) {
+ return $temp;
+ } else {
+ return htmlspecialchars( $temp );
+ }
+ }
+
+ static function fullurl( $parser, $s = '', $arg = null ) {
+ return self::urlFunction( 'getFullURL', $s, $arg );
+ }
+
+ static function fullurle( $parser, $s = '', $arg = null ) {
+ $temp = self::urlFunction( 'getFullURL', $s, $arg );
+ if( !is_string( $temp ) ) {
+ return $temp;
+ } else {
+ return htmlspecialchars( $temp );
+ }
+ }
+
+ static function canonicalurl( $parser, $s = '', $arg = null ) {
+ return self::urlFunction( 'getCanonicalURL', $s, $arg );
+ }
+
+ static function canonicalurle( $parser, $s = '', $arg = null ) {
+ return self::urlFunction( 'escapeCanonicalURL', $s, $arg );
+ }
static function urlFunction( $func, $s = '', $arg = null ) {
$title = Title::newFromText( $s );
if ( !$wgRestrictDisplayTitle ) {
$parser->mOutput->setDisplayTitle( $text );
- } elseif ( $title instanceof Title && $title->getFragment() == '' && $title->equals( $parser->mTitle ) ) {
+ } elseif ( $title instanceof Title && !$title->hasFragment() && $title->equals( $parser->mTitle ) ) {
$parser->mOutput->setDisplayTitle( $text );
}
* @return boolean true on successful match
*/
private static function matchAgainstMagicword( $magicword, $value ) {
- if ( strval( $value ) === '' ) {
+ $value = trim( strval( $value ) );
+ if ( $value === '' ) {
return false;
}
$mwObject = MagicWord::get( $magicword );
- return $mwObject->match( $value );
+ return $mwObject->matchStartToEnd( $value );
}
static function formatRaw( $num, $raw ) {
* Return the size of the given page, or 0 if it's nonexistent. This is an
* expensive parser function and can't be called too many times per page.
*
- * @todo FIXME: Title::getLength() documentation claims that it adds things
- * to the link cache, so the local cache here should be unnecessary, but
- * in fact calling getLength() repeatedly for the same $page does seem to
- * run one query for each call?
- * @todo Document parameters
- *
* @param $parser Parser
* @param $page String Name of page to check (Default: empty string)
* @param $raw String Should number be human readable with commas or just number
}
/**
- * Returns the requested protection level for the current page
+ * Returns the requested protection level for the current page. This
+ * is an expensive parser function and can't be called too many times
+ * per page, unless the protection levels for the given title have
+ * already been retrieved
*
* @param Parser $parser
* @param string $type
if ( !( $titleObject instanceof Title ) ) {
$titleObject = $parser->mTitle;
}
- $restrictions = $titleObject->getRestrictions( strtolower( $type ) );
- # Title::getRestrictions returns an array, its possible it may have
- # multiple values in the future
- return implode( $restrictions, ',' );
+ if ( $titleObject->areRestrictionsLoaded() || $parser->incrementExpensiveFunctionCount() ) {
+ $restrictions = $titleObject->getRestrictions( strtolower( $type ) );
+ # Title::getRestrictions returns an array, its possible it may have
+ # multiple values in the future
+ return implode( $restrictions, ',' );
+ }
+ return '';
}
/**
// Use title from parser to have correct pageid after edit
if ( $t->equals( $parser->getTitle() ) ) {
$t = $parser->getTitle();
+ return $t->getArticleID();
+ }
+
+ // These can't have ids
+ if ( !$t->canExist() || $t->isExternal() ) {
+ return 0;
+ }
+
+ // Check the link cache, maybe something already looked it up.
+ $linkCache = LinkCache::singleton();
+ $pdbk = $t->getPrefixedDBkey();
+ $id = $linkCache->getGoodLinkID( $pdbk );
+ if ( $id != 0 ) {
+ $parser->mOutput->addLink( $t, $id );
+ return $id;
}
- // fetch pageid from cache/database and return the value
- $pageid = $t->getArticleID();
- return $pageid ? $pageid : '';
+ if ( $linkCache->isBadLink( $pdbk ) ) {
+ $parser->mOutput->addLink( $t, 0 );
+ return $id;
+ }
+
+ // We need to load it from the DB, so mark expensive
+ if ( $parser->incrementExpensiveFunctionCount() ) {
+ $id = $t->getArticleID();
+ $parser->mOutput->addLink( $t, $id );
+ return $id;
+ }
+ return null;
}
/**
$rev = self::getCachedRevisionObject( $parser, $t );
return $rev ? $rev->getUserText() : '';
}
+
+ /**
+ * Returns the sources of any cascading protection acting on a specified page.
+ * Pages will not return their own title unless they transclude themselves.
+ * This is an expensive parser function and can't be called too many times per page,
+ * unless cascading protection sources for the page have already been loaded.
+ *
+ * @param Parser $parser
+ * @param string $title
+ *
+ * @return string
+ * @since 1.23
+ */
+ public static function cascadingsources( $parser, $title = '' ) {
+ $titleObject = Title::newFromText( $title );
+ if ( !( $titleObject instanceof Title ) ) {
+ $titleObject = $parser->mTitle;
+ }
+ if ( $titleObject->areCascadeProtectionSourcesLoaded()
+ || $parser->incrementExpensiveFunctionCount()
+ ) {
+ $names = array();
+ $sources = $titleObject->getCascadeProtectionSources();
+ foreach ( $sources[0] as $sourceTitle ) {
+ $names[] = $sourceTitle->getPrefixedText();
+ }
+ return implode( $names, '|' );
+ }
+ return '';
+ }
+
}
// Self-link checking for mixed/different variant titles. At this point, we
// already know the exact title does not exist, so the link cannot be to a
// variant of the current title that exists as a separate page.
- if ( $variantTitle->equals( $parentTitle ) && $title->getFragment() === '' ) {
+ if ( $variantTitle->equals( $parentTitle ) && !$title->hasFragment() ) {
$this->internals[$ns][$index]['selflink'] = true;
continue 2;
}
$t = Title::newFromText( 'NO TITLE' );
}
- if ( strval( $t->getFragment() ) !== '' ) {
+ if ( $t->hasFragment() ) {
# Strip the fragment to avoid various odd effects
$this->mTitle = clone $t;
$this->mTitle->setFragment( '' );
}
$ns = $nt->getNamespace();
- $iw = $nt->getInterWiki();
+ $iw = $nt->getInterwiki();
wfProfileOut( __METHOD__ . "-title" );
if ( $might_be_img ) { # if this is actually an invalid link
/**
* Strip the whitespace Category links produce, see bug 87
- * @todo We might want to use trim($tmp, "\n") here.
*/
$s .= trim( $prefix . $trail, "\n" ) == '' ? '' : $prefix . $trail;
# Self-link checking. For some languages, variants of the title are checked in
# LinkHolderArray::doVariants() to allow batching the existence checks necessary
# for linking to a different variant.
- if ( $ns != NS_SPECIAL && $nt->equals( $this->mTitle ) && $nt->getFragment() === '' ) {
+ if ( $ns != NS_SPECIAL && $nt->equals( $this->mTitle ) && !$nt->hasFragment() ) {
$s .= $prefix . Linker::makeSelfLinkObj( $nt, $text, '', $trail );
continue;
}
$value = ( wfUrlencode( $this->mTitle->getSubjectNsText() ) );
break;
case 'currentdayname':
- $value = $pageLang->getWeekdayName( MWTimestamp::getInstance( $ts )->format( 'w' ) + 1 );
+ $value = $pageLang->getWeekdayName( (int)MWTimestamp::getInstance( $ts )->format( 'w' ) + 1 );
break;
case 'currentyear':
$value = $pageLang->formatNum( MWTimestamp::getInstance( $ts )->format( 'Y' ), true );
$value = $pageLang->formatNum( MWTimestamp::getInstance( $ts )->format( 'w' ) );
break;
case 'localdayname':
- $value = $pageLang->getWeekdayName( MWTimestamp::getLocalInstance( $ts )->format( 'w' ) + 1 );
+ $value = $pageLang->getWeekdayName( (int)MWTimestamp::getLocalInstance( $ts )->format( 'w' ) + 1 );
break;
case 'localyear':
$value = $pageLang->formatNum( MWTimestamp::getLocalInstance( $ts )->format( 'Y' ), true );
case 'contentlanguage':
global $wgLanguageCode;
return $wgLanguageCode;
+ case 'cascadingsources':
+ $value = CoreParserFunctions::cascadingsources( $this );
+ break;
default:
$ret = null;
- if ( wfRunHooks( 'ParserGetVariableValueSwitch', array( &$this, &$this->mVarCache, &$index, &$ret, &$frame ) ) ) {
- return $ret;
- } else {
- return null;
- }
+ wfRunHooks( 'ParserGetVariableValueSwitch', array( &$this, &$this->mVarCache, &$index, &$ret, &$frame ) );
+ return $ret;
}
if ( $index ) {
* cache may be implemented at a later date which takes further advantage of these strict
* dependency requirements.
*
- * @private
- *
* @return PPNode
*/
function preprocessToDom( $text, $flags = 0 ) {
if ( $file && !$title->equals( $file->getTitle() ) ) {
# Update fetched file title
$title = $file->getTitle();
- if ( is_null( $file->getRedirectedTitle() ) ) {
- # This file was not a redirect, but the title does not match.
- # Register under the new name because otherwise the link will
- # get lost.
- $this->mOutput->addImage( $title->getDBkey(), $time, $sha1 );
- }
+ $this->mOutput->addImage( $title->getDBkey(), $time, $sha1 );
}
return array( $file, $title );
}
*/
class ParserCache {
private $mMemc;
- const try116cache = false; /* Only useful $wgParserCacheExpireTime after updating to 1.17 */
-
/**
* Get an instance of this object
*
$usedOptions = $optionsKey->mUsedOptions;
wfDebug( "Parser cache options found.\n" );
} else {
- if ( !$useOutdated && !self::try116cache ) {
+ if ( !$useOutdated ) {
return false;
}
$usedOptions = ParserOptions::legacyOptions();
}
$value = $this->mMemc->get( $parserOutputKey );
- if ( self::try116cache && !$value && strpos( $value, '*' ) !== -1 ) {
- wfDebug( "New format parser cache miss.\n" );
- $parserOutputKey = $this->getParserOutputKey( $article,
- $popts->optionsHash( ParserOptions::legacyOptions(), $article->getTitle() ) );
- $value = $this->mMemc->get( $parserOutputKey );
- }
if ( !$value ) {
wfDebug( "ParserOutput cache miss.\n" );
wfIncrStats( "pcache_miss_absent" );
/**
* @param ParserOutput $parserOutput
- * @param Article $article
+ * @param WikiPage $page
* @param ParserOptions $popts
* @param string $cacheTime Time when the cache was generated
*/
- public function save( $parserOutput, $article, $popts, $cacheTime = null ) {
+ public function save( $parserOutput, $page, $popts, $cacheTime = null ) {
$expire = $parserOutput->getCacheExpiry();
if ( $expire > 0 ) {
$cacheTime = $cacheTime ?: wfTimestampNow();
$optionsKey->setContainsOldMagic( $parserOutput->containsOldMagic() );
- $parserOutputKey = $this->getParserOutputKey( $article,
- $popts->optionsHash( $optionsKey->mUsedOptions, $article->getTitle() ) );
+ $parserOutputKey = $this->getParserOutputKey( $page,
+ $popts->optionsHash( $optionsKey->mUsedOptions, $page->getTitle() ) );
// Save the timestamp so that we don't have to load the revision row on view
- $parserOutput->setTimestamp( $article->getTimestamp() );
+ $parserOutput->setTimestamp( $page->getTimestamp() );
$parserOutput->mText .= "\n<!-- Saved in parser cache with key $parserOutputKey and timestamp $cacheTime\n -->\n";
wfDebug( "Saved in parser cache with key $parserOutputKey and timestamp $cacheTime\n" );
$this->mMemc->set( $parserOutputKey, $parserOutput, $expire );
// ...and its pointer
- $this->mMemc->set( $this->getOptionsKey( $article ), $optionsKey, $expire );
+ $this->mMemc->set( $this->getOptionsKey( $page ), $optionsKey, $expire );
} else {
wfDebug( "Parser output was marked as uncacheable and has not been saved.\n" );
}
*/
var $mNumberHeadings;
- /**
- * User math preference (as integer). Not used (1.19)
- */
- var $mMath;
-
/**
* Thumb size preferred by the user.
*/
function getExternalLinkTarget() { return $this->mExternalLinkTarget; }
function getDisableContentConversion() { return $this->mDisableContentConversion; }
function getDisableTitleConversion() { return $this->mDisableTitleConversion; }
- /** @deprecated since 1.22 use User::getOption('math') instead */
- function getMath() { $this->optionUsed( 'math' );
- return $this->mMath; }
function getThumbSize() { $this->optionUsed( 'thumbsize' );
return $this->mThumbSize; }
function getStubThreshold() { $this->optionUsed( 'stubthreshold' );
function getUser() { return $this->mUser; }
function getPreSaveTransform() { return $this->mPreSaveTransform; }
- /**
- * @param $title Title
- * @return Skin
- * @deprecated since 1.18 Use Linker::* instead
- */
- function getSkin( $title = null ) {
- wfDeprecated( __METHOD__, '1.18' );
- return new DummyLinker;
- }
-
function getDateFormat() {
$this->optionUsed( 'dateformat' );
if ( !isset( $this->mDateFormat ) ) {
function setExternalLinkTarget( $x ) { return wfSetVar( $this->mExternalLinkTarget, $x ); }
function disableContentConversion( $x = true ) { return wfSetVar( $this->mDisableContentConversion, $x ); }
function disableTitleConversion( $x = true ) { return wfSetVar( $this->mDisableTitleConversion, $x ); }
- /** @deprecated since 1.22 */
- function setMath( $x ) { return wfSetVar( $this->mMath, $x ); }
function setUserLang( $x ) {
if ( is_string( $x ) ) {
$x = Language::factory( $x );
$this->mUser = $user;
$this->mNumberHeadings = $user->getOption( 'numberheadings' );
- $this->mMath = $user->getOption( 'math' );
$this->mThumbSize = $user->getOption( 'thumbsize' );
$this->mStubThreshold = $user->getStubThreshold();
$this->mUserLang = $lang;
/**
* Called when an option is accessed.
+ * @param string $optionName name of the option
*/
- protected function optionUsed( $optionName ) {
+ public function optionUsed( $optionName ) {
if ( $this->onAccessCallback ) {
call_user_func( $this->onAccessCallback, $optionName );
}
* @return array
*/
public static function legacyOptions() {
- return array( 'math', 'stubthreshold', 'numberheadings', 'userlang', 'thumbsize', 'editsection', 'printable' );
+ return array( 'stubthreshold', 'numberheadings', 'userlang', 'thumbsize', 'editsection', 'printable' );
}
/**
public function optionsHash( $forOptions, $title = null ) {
global $wgRenderHashAppend;
- $confstr = '';
-
- if ( in_array( 'math', $forOptions ) ) {
- $confstr .= $this->mMath;
- } else {
- $confstr .= '*';
- }
+ // FIXME: Once the cache key is reorganized this argument
+ // can be dropped. It was used when the math extension was
+ // part of core.
+ $confstr = '*';
// Space assigned for the stubthreshold but unused
// since it disables the parser cache, its value will always
// Give a chance for extensions to modify the hash, if they have
// extra options or other effects on the parser cache.
- wfRunHooks( 'PageRenderingHash', array( &$confstr ) );
+ wfRunHooks( 'PageRenderingHash', array( &$confstr, $this->getUser(), &$forOptions ) );
// Make it a valid memcached key fragment
$confstr = str_replace( ' ', '_', $confstr );
* @throws MWException if given invalid input
*/
function addInterwikiLink( $title ) {
- $prefix = $title->getInterwiki();
- if ( $prefix == '' ) {
+ if ( !$title->isExternal() ) {
throw new MWException( 'Non-interwiki link passed, internal parser error.' );
}
+ $prefix = $title->getInterwiki();
if ( !isset( $this->mInterwikiLinks[$prefix] ) ) {
$this->mInterwikiLinks[$prefix] = array();
}
$process = proc_open(
"$wgTidyBin -config $wgTidyConf $wgTidyOpts$opts", $descriptorspec, $pipes );
+ //NOTE: At least on linux, the process will be created even if tidy is not installed.
+ // This means that missing tidy will be treated as a validation failure.
+
if ( is_resource( $process ) ) {
// Theoretically, this style of communication could cause a deadlock
// here. If the stdout buffer fills up, then writes to stdin could
--- /dev/null
+<?php
+/**
+ * Profiler class for Mwprof.
+ *
+ * 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 Profiler
+ */
+
+/**
+ * Profiler class for Mwprof.
+ *
+ * Mwprof is a high-performance MediaWiki profiling data collector, designed to
+ * collect profiling data from multiple hosts running in tandem. This class
+ * serializes profiling samples into MessagePack arrays and sends them to an
+ * Mwprof instance via UDP.
+ *
+ * @see https://github.com/wikimedia/operations-software-mwprof
+ * @since 1.23
+ */
+class ProfilerMwprof extends Profiler {
+
+ // Message types
+
+ const TYPE_SINGLE = 1;
+ const TYPE_RUNNING = 2;
+
+ /**
+ * Indicate that this Profiler subclass is persistent.
+ *
+ * Called by Parser::braceSubstitution. If true, the parser will not
+ * generate per-title profiling sections, to avoid overloading the
+ * profiling data collector.
+ *
+ * @return bool true
+ */
+ public function isPersistent() {
+ return true;
+ }
+
+ /**
+ * Start a profiling section.
+ *
+ * Marks the beginning of the function or code-block that should be time
+ * and logged under some specific name.
+ *
+ * @param string $inName Section to start
+ */
+ public function profileIn( $inName ) {
+ $this->mWorkStack[] = array( $inName, count( $this->mWorkStack ),
+ $this->getTime(), $this->getTime( 'cpu' ) );
+ }
+
+ /**
+ * Produce an empty function report.
+ *
+ * ProfileMwprof does not provide a function report.
+ *
+ * @return string Empty string.
+ */
+ public function getFunctionReport() {
+ return '';
+ }
+
+ /**
+ * Close a profiling section.
+ *
+ * Marks the end of the function or code-block that should be timed and
+ * logged under some specific name.
+ *
+ * @param string $outName Section to close
+ */
+ public function profileOut( $outName ) {
+ list( $inName, $inCount, $inWall, $inCpu ) = array_pop( $this->mWorkStack );
+
+ // Check for unbalanced profileIn / profileOut calls.
+ // Bad entries are logged but not sent.
+ if ( $inName !== $outName ) {
+ wfDebugLog( 'ProfilerUnbalanced', json_encode( array( $inName, $outName ) ) );
+ return;
+ }
+
+ $elapsedCpu = $this->getTime( 'cpu' ) - $inCpu;
+ $elapsedWall = $this->getTime() - $inWall;
+ $this->updateEntry( $outName, $elapsedCpu, $elapsedWall );
+ $this->updateTrxProfiling( $outName, $elapsedWall );
+ }
+
+ /**
+ * Update an entry with timing data.
+ *
+ * @param string $name Section name
+ * @param float $elapsedCpu elapsed CPU time
+ * @param float $elapsedWall elapsed wall-clock time
+ */
+ public function updateEntry( $name, $elapsedCpu, $elapsedWall ) {
+ // If this is the first measurement for this entry, store plain values.
+ // Many profiled functions will only be called once per request.
+ if ( !isset( $this->mCollated[$name] ) ) {
+ $this->mCollated[$name] = array(
+ 'cpu' => $elapsedCpu,
+ 'wall' => $elapsedWall,
+ 'count' => 1,
+ );
+ return;
+ }
+
+ $entry = &$this->mCollated[$name];
+
+ // If it's the second measurement, convert the plain values to
+ // RunningStat instances, so we can push the incoming values on top.
+ if ( $entry['count'] === 1 ) {
+ $cpu = new RunningStat();
+ $cpu->push( $entry['cpu'] );
+ $entry['cpu'] = $cpu;
+
+ $wall = new RunningStat();
+ $wall->push( $entry['wall'] );
+ $entry['wall'] = $wall;
+ }
+
+ $entry['count']++;
+ $entry['cpu']->push( $elapsedCpu );
+ $entry['wall']->push( $elapsedWall );
+ }
+
+ /**
+ * Serialize profiling data and send to a profiling data aggregator.
+ *
+ * Individual entries are represented as arrays and then encoded using
+ * MessagePack, an efficient binary data-interchange format. Encoded
+ * entries are accumulated into a buffer and sent in batch via UDP to the
+ * profiling data aggregator.
+ */
+ public function logData() {
+ global $wgUDPProfilerHost, $wgUDPProfilerPort;
+
+ $this->close();
+
+ $sock = socket_create( AF_INET, SOCK_DGRAM, SOL_UDP );
+ socket_connect( $sock, $wgUDPProfilerHost, $wgUDPProfilerPort );
+ $bufferLength = 0;
+ $buffer = '';
+ foreach ( $this->mCollated as $name => $entry ) {
+ $count = $entry['count'];
+ $cpu = $entry['cpu'];
+ $wall = $entry['wall'];
+
+ if ( $count === 1 ) {
+ $data = array( self::TYPE_SINGLE, $name, $cpu, $wall );
+ } else {
+ $data = array( self::TYPE_RUNNING, $name, $count,
+ $cpu->m1, $cpu->m2, $cpu->min, $cpu->max,
+ $wall->m1, $wall->m2, $wall->min, $wall->max );
+ }
+
+ $encoded = MWMessagePack::pack( $data );
+ $length = strlen( $encoded );
+
+ // If adding this entry would cause the size of the buffer to
+ // exceed the standard ethernet MTU size less the UDP header,
+ // send all pending data and reset the buffer. Otherwise, continue
+ // accumulating entries into the current buffer.
+ if ( $length + $bufferLength > 1450 ) {
+ socket_send( $sock, $buffer, $bufferLength, 0 );
+ $buffer = '';
+ $bufferLength = 0;
+ }
+ $buffer .= $encoded;
+ $bufferLength += $length;
+ }
+ if ( $bufferLength !== 0 ) {
+ socket_send( $sock, $buffer, $bufferLength, 0 );
+ }
+ }
+}
class ProfilerSimple extends Profiler {
var $mMinimumTime = 0;
- var $zeroEntry = array( 'cpu' => 0.0, 'cpu_sq' => 0.0, 'real' => 0.0, 'real_sq' => 0.0, 'count' => 0 );
var $errorEntry;
+ public function getZeroEntry() {
+ return array(
+ 'cpu' => 0.0,
+ 'cpu_sq' => 0.0,
+ 'real' => 0.0,
+ 'real_sq' => 0.0,
+ 'count' => 0
+ );
+ }
+
+ public function getErrorEntry() {
+ $entry = $this->getZeroEntry();
+ $entry['count'] = 1;
+ return $entry;
+ }
+
+ public function updateEntry( $name, $elapsedCpu, $elapsedReal ) {
+ $entry =& $this->mCollated[$name];
+ if ( !is_array( $entry ) ) {
+ $entry = $this->getZeroEntry();
+ $this->mCollated[$name] =& $entry;
+ }
+ $entry['cpu'] += $elapsedCpu;
+ $entry['cpu_sq'] += $elapsedCpu * $elapsedCpu;
+ $entry['real'] += $elapsedReal;
+ $entry['real_sq'] += $elapsedReal * $elapsedReal;
+ $entry['count']++;
+ }
+
public function isPersistent() {
/* Implement in output subclasses */
return false;
}
protected function addInitialStack() {
- $this->errorEntry = $this->zeroEntry;
- $this->errorEntry['count'] = 1;
+ $this->errorEntry = $this->getErrorEntry();
$initialTime = $this->getInitialTime();
$initialCpu = $this->getInitialTime( 'cpu' );
$this->debug( "$message\n" );
$this->mCollated[$message] = $this->errorEntry;
}
- $entry =& $this->mCollated[$functionname];
$elapsedcpu = $this->getTime( 'cpu' ) - $octime;
$elapsedreal = $this->getTime() - $ortime;
- if ( !is_array( $entry ) ) {
- $entry = $this->zeroEntry;
- $this->mCollated[$functionname] =& $entry;
- }
- $entry['cpu'] += $elapsedcpu;
- $entry['cpu_sq'] += $elapsedcpu * $elapsedcpu;
- $entry['real'] += $elapsedreal;
- $entry['real_sq'] += $elapsedreal * $elapsedreal;
- $entry['count']++;
-
+ $this->updateEntry( $functionname, $elapsedcpu, $elapsedreal );
$this->updateTrxProfiling( $functionname, $elapsedreal );
}
}
public function logData() {
/* Implement in subclasses */
}
-
- /**
- * Get the actual CPU time or the initial one if $ru is set.
- *
- * @deprecated in 1.20
- * @return float|null
- */
- function getCpuTime( $ru = null ) {
- wfDeprecated( __METHOD__, '1.20' );
-
- if ( $ru === null ) {
- return $this->getTime( 'cpu' );
- } else {
- # It theory we should use $ru here, but it always $wgRUstart that is passed here
- return $this->getInitialTime( 'cpu' );
- }
- }
}
<?php
+
+/**
+ * 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
+ */
+
+/**
+ * Generates a colourful notification intended for humans on IRC.
+ *
+ * @since 1.22
+ */
+
class IRCColourfulRCFeedFormatter implements RCFeedFormatter {
/**
- * Generates a colourful notification intended for humans on IRC.
* @see RCFeedFormatter::getLine
*/
public function getLine( array $feed, RecentChange $rc, $actionComment ) {
<?php
-class JSONRCFeedFormatter implements RCFeedFormatter {
- /**
- * Generates a notification that can be easily interpreted by a machine.
- * @see RCFeedFormatter::getLine
- */
- public function getLine( array $feed, RecentChange $rc, $actionComment ) {
- global $wgCanonicalServer, $wgScriptPath, $wgDBname;
- $attrib = $rc->getAttributes();
-
- $packet = array(
- // Usually, RC ID is exposed only for patrolling purposes,
- // but there is no real reason not to expose it in other cases,
- // and I can see how this may be potentially useful for clients.
- 'id' => $attrib['rc_id'],
- 'type' => $attrib['rc_type'],
- 'namespace' => $rc->getTitle()->getNamespace(),
- 'title' => $rc->getTitle()->getPrefixedText(),
- 'comment' => $attrib['rc_comment'],
- 'timestamp' => (int)wfTimestamp( TS_UNIX, $attrib['rc_timestamp'] ),
- 'user' => $attrib['rc_user_text'],
- 'bot' => (bool)$attrib['rc_bot'],
- );
-
- if ( isset( $feed['channel'] ) ) {
- $packet['channel'] = $feed['channel'];
- }
-
- $type = $attrib['rc_type'];
- if ( $type == RC_EDIT || $type == RC_NEW ) {
- global $wgUseRCPatrol, $wgUseNPPatrol;
-
- $packet['minor'] = $attrib['rc_minor'];
- if ( $wgUseRCPatrol || ( $type == RC_NEW && $wgUseNPPatrol ) ) {
- $packet['patrolled'] = $attrib['rc_patrolled'];
- }
- }
-
- switch ( $type ) {
- case RC_EDIT:
- $packet['length'] = array( 'old' => $attrib['rc_old_len'], 'new' => $attrib['rc_new_len'] );
- $packet['revision'] = array( 'old' => $attrib['rc_last_oldid'], 'new' => $attrib['rc_this_oldid'] );
- break;
-
- case RC_NEW:
- $packet['length'] = array( 'old' => null, 'new' => $attrib['rc_new_len'] );
- $packet['revision'] = array( 'old' => null, 'new' => $attrib['rc_this_oldid'] );
- break;
-
- case RC_LOG:
- $packet['log_type'] = $attrib['rc_log_type'];
- $packet['log_action'] = $attrib['rc_log_action'];
- if ( $attrib['rc_params'] ) {
- wfSuppressWarnings();
- $params = unserialize( $attrib['rc_params'] );
- wfRestoreWarnings();
- if (
- // If it's an actual serialised false...
- $attrib['rc_params'] == serialize( false ) ||
- // Or if we did not get false back when trying to unserialise
- $params !== false
- ) {
- // From ApiQueryLogEvents::addLogParams
- $logParams = array();
- // Keys like "4::paramname" can't be used for output so we change them to "paramname"
- foreach ( $params as $key => $value ) {
- if ( strpos( $key, ':' ) === false ) {
- $logParams[$key] = $value;
- continue;
- }
- $logParam = explode( ':', $key, 3 );
- $logParams[$logParam[2]] = $value;
- }
- $packet['log_params'] = $logParams;
- } else {
- $packet['log_params'] = explode( "\n", $attrib['rc_params'] );
- }
- }
- $packet['log_action_comment'] = $actionComment;
- break;
- }
-
- $packet['server_url'] = $wgCanonicalServer;
- $packet['server_script_path'] = $wgScriptPath ?: '/';
- $packet['wiki'] = $wgDBname;
-
+/**
+ * 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
+ */
+
+/**
+ * Formats a notification into the JSON format (http://www.json.org)
+ *
+ * @since 1.22
+ */
+class JSONRCFeedFormatter extends MachineReadableRCFeedFormatter {
+
+ protected function formatArray( array $packet ) {
return FormatJson::encode( $packet );
}
}
--- /dev/null
+<?php
+
+/**
+ * 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
+ */
+
+/**
+ * Abstract class so there can be multiple formatters outputting the same data
+ *
+ * @since 1.23
+ */
+abstract class MachineReadableRCFeedFormatter implements RCFeedFormatter {
+
+ /**
+ * Take the packet and return the formatted string
+ * @param array $packet
+ * @return string
+ */
+ abstract protected function formatArray( array $packet );
+
+ /**
+ * Generates a notification that can be easily interpreted by a machine.
+ * @see RCFeedFormatter::getLine
+ */
+ public function getLine( array $feed, RecentChange $rc, $actionComment ) {
+ global $wgCanonicalServer, $wgScriptPath;
+ $attrib = $rc->getAttributes();
+
+ $packet = array(
+ // Usually, RC ID is exposed only for patrolling purposes,
+ // but there is no real reason not to expose it in other cases,
+ // and I can see how this may be potentially useful for clients.
+ 'id' => $attrib['rc_id'],
+ 'type' => $attrib['rc_type'],
+ 'namespace' => $rc->getTitle()->getNamespace(),
+ 'title' => $rc->getTitle()->getPrefixedText(),
+ 'comment' => $attrib['rc_comment'],
+ 'timestamp' => (int)wfTimestamp( TS_UNIX, $attrib['rc_timestamp'] ),
+ 'user' => $attrib['rc_user_text'],
+ 'bot' => (bool)$attrib['rc_bot'],
+ );
+
+ if ( isset( $feed['channel'] ) ) {
+ $packet['channel'] = $feed['channel'];
+ }
+
+ $type = $attrib['rc_type'];
+ if ( $type == RC_EDIT || $type == RC_NEW ) {
+ global $wgUseRCPatrol, $wgUseNPPatrol;
+
+ $packet['minor'] = $attrib['rc_minor'];
+ if ( $wgUseRCPatrol || ( $type == RC_NEW && $wgUseNPPatrol ) ) {
+ $packet['patrolled'] = $attrib['rc_patrolled'];
+ }
+ }
+
+ switch ( $type ) {
+ case RC_EDIT:
+ $packet['length'] = array(
+ 'old' => $attrib['rc_old_len'],
+ 'new' => $attrib['rc_new_len']
+ );
+ $packet['revision'] = array(
+ 'old' => $attrib['rc_last_oldid'],
+ 'new' => $attrib['rc_this_oldid']
+ );
+ break;
+
+ case RC_NEW:
+ $packet['length'] = array( 'old' => null, 'new' => $attrib['rc_new_len'] );
+ $packet['revision'] = array( 'old' => null, 'new' => $attrib['rc_this_oldid'] );
+ break;
+
+ case RC_LOG:
+ $packet['log_type'] = $attrib['rc_log_type'];
+ $packet['log_action'] = $attrib['rc_log_action'];
+ if ( $attrib['rc_params'] ) {
+ wfSuppressWarnings();
+ $params = unserialize( $attrib['rc_params'] );
+ wfRestoreWarnings();
+ if (
+ // If it's an actual serialised false...
+ $attrib['rc_params'] == serialize( false ) ||
+ // Or if we did not get false back when trying to unserialise
+ $params !== false
+ ) {
+ // From ApiQueryLogEvents::addLogParams
+ $logParams = array();
+ // Keys like "4::paramname" can't be used for output so we change them to "paramname"
+ foreach ( $params as $key => $value ) {
+ if ( strpos( $key, ':' ) === false ) {
+ $logParams[$key] = $value;
+ continue;
+ }
+ $logParam = explode( ':', $key, 3 );
+ $logParams[$logParam[2]] = $value;
+ }
+ $packet['log_params'] = $logParams;
+ } else {
+ $packet['log_params'] = explode( "\n", $attrib['rc_params'] );
+ }
+ }
+ $packet['log_action_comment'] = $actionComment;
+ break;
+ }
+
+ $packet['server_url'] = $wgCanonicalServer;
+ $packet['server_script_path'] = $wgScriptPath ?: '/';
+ $packet['wiki'] = wfWikiID();
+
+ return $this->formatArray( $packet );
+ }
+}
<?php
+
+/**
+ * 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
+ */
+
+/**
+ * Interface for RC feed engines, which send formatted notifications
+ *
+ * @since 1.22
+ */
interface RCFeedEngine {
/**
* Sends some text to the specified live feed.
<?php
+
+/**
+ * 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
+ */
+
+/**
+ * Interface for RC feed formatters
+ *
+ * @since 1.22
+ */
interface RCFeedFormatter {
/**
- * Formats the line for the live feed.
+ * Formats the line to be sent by an engine
*
* @param array $feed The feed, as configured in an associative array.
* @param RecentChange $rc The RecentChange object showing what sort
<?php
+
+/**
+ * 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
+ */
+
+/**
+ * Emit a recent change notification via Redis Pub/Sub
+ *
+ * If the feed URI contains a path component, it will be used to generate a
+ * channel name by stripping the leading slash and replacing any remaining
+ * slashes with '.'. If no path component is present, the channel is set to
+ * 'rc'. If the URI contains a query string, its parameters will be parsed
+ * as RedisConnectionPool options.
+ *
+ * @example
+ * $wgRCFeeds['redis'] = array(
+ * 'formatter' => 'JSONRCFeedFormatter',
+ * 'uri' => "redis://127.0.0.1:6379/rc.$wgDBname",
+ * );
+ *
+ * @since 1.22
+ */
class RedisPubSubFeedEngine implements RCFeedEngine {
+
/**
- * Emit a recent change notification via Redis Pub/Sub
- *
- * If the feed URI contains a path component, it will be used to generate a
- * channel name by stripping the leading slash and replacing any remaining
- * slashes with '.'. If no path component is present, the channel is set to
- * 'rc'. If the URI contains a query string, its parameters will be parsed
- * as RedisConnectionPool options.
- *
- * @example $wgRCFeeds['redis'] = array(
- * 'formatter' => 'JSONRCFeedFormatter',
- * 'uri' => "redis://127.0.0.1:6379/rc.$wgDBname",
- * );
- *
- * @since 1.22
+ * @see RCFeedEngine::send
*/
public function send( array $feed, $line ) {
- $parsed = parse_url( $feed['uri'] );
+ $parsed = wfParseUrl( $feed['uri'] );
$server = $parsed['host'];
$options = array( 'serializer' => 'none' );
$channel = 'rc';
}
$pool = RedisConnectionPool::singleton( $options );
$conn = $pool->getConnection( $server );
- $conn->publish( $channel, $line );
+ if ( $conn !== false ) {
+ $conn->publish( $channel, $line );
+ return true;
+ } else {
+ return false;
+ }
}
}
<?php
+
+/**
+ * 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
+ */
+
+/**
+ * Sends the notification to the specified host in a UDP packet.
+ * @since 1.22
+ */
+
class UDPRCFeedEngine implements RCFeedEngine {
/**
- * Sends the notification to the specified host in a UDP packet.
* @see RCFeedEngine::send
*/
public function send( array $feed, $line ) {
--- /dev/null
+<?php
+
+/**
+ * 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
+ */
+
+/**
+ * @since 1.23
+ */
+class XMLRCFeedFormatter extends MachineReadableRCFeedFormatter {
+
+ protected function formatArray( array $packet ) {
+ return ApiFormatXml::recXmlPrint( 'recentchange', $packet, 0 );
+ }
+}
$states = array();
if ( !count( $modules ) && !count( $missing ) ) {
- return '/* No modules requested. Max made me put this here */';
+ return "/* This file is the Web entry point for MediaWiki's ResourceLoader:
+ <https://www.mediawiki.org/wiki/ResourceLoader>. In this request,
+ no modules were requested. Max made me put this here. */";
}
wfProfileIn( __METHOD__ );
public static function inDebugMode() {
global $wgRequest, $wgResourceLoaderDebug;
static $retval = null;
- if ( !is_null( $retval ) ) {
- return $retval;
+ if ( is_null( $retval ) ) {
+ $retval = $wgRequest->getFuzzyBool( 'debug',
+ $wgRequest->getCookie( 'resourceLoaderDebug', '', $wgResourceLoaderDebug ) );
}
- return $retval = $wgRequest->getFuzzyBool( 'debug',
- $wgRequest->getCookie( 'resourceLoaderDebug', '', $wgResourceLoaderDebug ) );
+ return $retval;
}
/**
// If a module is nothing but a list of dependencies, we need to avoid
// giving max() an empty array
if ( count( $files ) === 0 ) {
+ $this->modifiedTime[$context->getHash()] = 1;
wfProfileOut( __METHOD__ );
- return $this->modifiedTime[$context->getHash()] = 1;
+ return $this->modifiedTime[$context->getHash()];
}
wfProfileIn( __METHOD__ . '-filemtime' );
$module = $loader->getModule( $name );
$time = max( $time, $module->getModifiedTime( $context ) );
}
- return $this->modifiedTime[$hash] = $time;
+ $this->modifiedTime[$hash] = $time;
+ return $this->modifiedTime[$hash];
}
/* Methods */
*/
public function getModifiedTime( ResourceLoaderContext $context ) {
$hash = $context->getHash();
- if ( isset( $this->modifiedTime[$hash] ) ) {
- return $this->modifiedTime[$hash];
+ if ( !isset( $this->modifiedTime[$hash] ) ) {
+ global $wgUser;
+ $this->modifiedTime[$hash] = wfTimestamp( TS_UNIX, $wgUser->getTouched() );
}
- global $wgUser;
- return $this->modifiedTime[$hash] = wfTimestamp( TS_UNIX, $wgUser->getTouched() );
+ return $this->modifiedTime[$hash];
}
/**
$rules[] = 'a:lang(ar), a:lang(kk-arab), a:lang(mzn), ' .
'a:lang(ps), a:lang(ur) { text-decoration: none; }';
}
- if ( $options['justify'] ) {
- $rules[] = "#article, #bodyContent, #mw_content { text-align: justify; }\n";
- }
- if ( !$options['showtoc'] ) {
- $rules[] = "#toc { display: none; }\n";
- }
- if ( !$options['editsection'] ) {
- $rules[] = ".mw-editsection { display: none; }\n";
- }
if ( $options['editfont'] !== 'default' ) {
// Double-check that $options['editfont'] consists of safe characters only
if ( preg_match( '/^[a-zA-Z0-9_, -]+$/', $options['editfont'] ) ) {
*/
public function getModifiedTime( ResourceLoaderContext $context ) {
$hash = $context->getHash();
- if ( isset( $this->modifiedTime[$hash] ) ) {
- return $this->modifiedTime[$hash];
+ if ( !isset( $this->modifiedTime[$hash] ) ) {
+ global $wgUser;
+ $this->modifiedTime[$hash] = wfTimestamp( TS_UNIX, $wgUser->getTouched() );
}
- global $wgUser;
- return $this->modifiedTime[$hash] = wfTimestamp( TS_UNIX, $wgUser->getTouched() );
+ return $this->modifiedTime[$hash];
}
/**
--- /dev/null
+<?php
+/**
+ * Database search 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
+ * @ingroup Search
+ */
+
+/**
+ * Base search engine base class for database-backed searches
+ * @ingroup Search
+ * @since 1.23
+ */
+class SearchDatabase extends SearchEngine {
+ /**
+ * @var DatabaseBase Slave database for reading from for results
+ */
+ protected $db;
+
+ /**
+ * Constructor
+ * @param DatabaseBase $db The database to search from
+ */
+ public function __construct( DatabaseBase $db = null ) {
+ if ( $db ) {
+ $this->db = $db;
+ } else {
+ $this->db = wfGetDB( DB_SLAVE );
+ }
+ }
+}
var $searchTerms = array();
var $namespaces = array( NS_MAIN );
var $showRedirects = false;
+ protected $showSuggestion = true;
/// Feature values
protected $features = array();
- /**
- * @var DatabaseBase
- */
- protected $db;
-
- function __construct( $db = null ) {
- if ( $db ) {
- $this->db = $db;
- } else {
- $this->db = wfGetDB( DB_SLAVE );
- }
- }
-
/**
* Perform a full text search query and return a result set.
* If title searches are not supported or disabled, return null.
return null;
}
- /**
- * If this search backend can list/unlist redirects
- * @deprecated since 1.18 Call supports( 'list-redirects' );
- * @return bool
- */
- function acceptListRedirects() {
- wfDeprecated( __METHOD__, '1.18' );
- return $this->supports( 'list-redirects' );
- }
-
/**
* @since 1.18
* @param $feature String
$this->namespaces = $namespaces;
}
+ /**
+ * Set whether the searcher should try to build a suggestion. Note: some searchers
+ * don't support building a suggestion in the first place and others don't respect
+ * this flag.
+ *
+ * @param boolean $showSuggestion should the searcher try to build suggestions
+ */
+ function setShowSuggestion( $showSuggestion ) {
+ $this->showSuggestion = $showSuggestion;
+ }
+
/**
* Parse some common prefixes: all (search everything)
* or namespace names
$this->namespaces = null;
$parsed = substr( $query, strlen( $allkeyword ) );
} elseif ( strpos( $query, ':' ) !== false ) {
- $prefix = substr( $query, 0, strpos( $query, ':' ) );
+ $prefix = str_replace( ' ', '_', substr( $query, 0, strpos( $query, ':' ) ) );
$index = $wgContLang->getNsIndex( $prefix );
if ( $index !== false ) {
$this->namespaces = array( $index );
}
$search = new $class( $dbr );
- $search->setLimitOffset( 0, 0 );
return $search;
}
*/
public static function getSearchTypes() {
global $wgSearchType, $wgSearchTypeAlternatives;
- static $alternatives = null;
- if ( $alternatives === null ) {
- $alternatives = $wgSearchTypeAlternatives ?: array();
- array_unshift( $alternatives, $wgSearchType );
- }
+
+ $alternatives = $wgSearchTypeAlternatives ?: array();
+ array_unshift( $alternatives, $wgSearchType );
+
return $alternatives;
}
/**
* @var Revision
*/
- var $mRevision = null;
- var $mImage = null;
+ protected $mRevision = null;
+
+ /**
+ * @var File
+ */
+ protected $mImage = null;
/**
* @var Title
*/
- var $mTitle;
+ protected $mTitle;
/**
* @var String
*/
- var $mText;
+ protected $mText;
/**
* Return a new SearchResult and initializes it with a title.
* @return Boolean
*/
function isBrokenTitle() {
- if ( is_null( $this->mTitle ) ) {
- return true;
- }
- return false;
+ return is_null( $this->mTitle );
}
/**
return $this->mTitle;
}
+ /**
+ * Get the file for this page, if one exists
+ * @return File|null
+ */
+ function getFile() {
+ return $this->mImage;
+ }
+
/**
* @return float|null if not supported
*/
function getInterwikiPrefix() {
return '';
}
+
+ /**
+ * Did this match file contents (eg: PDF/DJVU)?
+ */
+ function isFileMatch() {
+ return false;
+ }
}
/**
* A SearchResultSet wrapper for SearchEngine::getNearMatch
* Search engine hook base class for Mssql (ConText).
* @ingroup Search
*/
-class SearchMssql extends SearchEngine {
-
- /**
- * Creates an instance of this class
- * @param $db DatabaseMssql: database object
- */
- function __construct( $db ) {
- parent::__construct( $db );
- }
-
+class SearchMssql extends SearchDatabase {
/**
* Perform a full text search query and return a result set.
*
* Search engine hook for MySQL 4+
* @ingroup Search
*/
-class SearchMySQL extends SearchEngine {
+class SearchMySQL extends SearchDatabase {
var $strictMatching = true;
static $mMinSearchLength;
- /**
- * Creates an instance of this class
- * @param $db DatabaseMysql: database object
- */
- function __construct( $db ) {
- parent::__construct( $db );
- }
-
/**
* Parse the user's query and transform it into an SQL fragment which will
* become part of a WHERE clause
* Search engine hook base class for Oracle (ConText).
* @ingroup Search
*/
-class SearchOracle extends SearchEngine {
+class SearchOracle extends SearchDatabase {
private $reservedWords = array(
'ABOUT' => 1,
'WITHIN' => 1,
);
- /**
- * Creates an instance of this class
- * @param $db DatabasePostgres: database object
- */
- function __construct( $db ) {
- parent::__construct( $db );
- }
-
/**
* Perform a full text search query and return a result set.
*
* Search engine hook base class for Postgres
* @ingroup Search
*/
-class SearchPostgres extends SearchEngine {
-
- /**
- * @var DatabasePostgres
- */
- protected $db;
- /**
- * Creates an instance of this class
- * @param $db DatabaseSqlite: database object
- */
- function __construct( $db ) {
- parent::__construct( $db );
- }
-
+class SearchPostgres extends SearchDatabase {
/**
* Perform a full text search query via tsearch2 and return a result set.
* Currently searches a page's current title (page.page_title) and
* Search engine hook for SQLite
* @ingroup Search
*/
-class SearchSqlite extends SearchEngine {
-
- /**
- * @var DatabaseSqlite
- */
- protected $db;
-
- /**
- * Creates an instance of this class
- * @param $db DatabaseSqlite: database object
- */
- function __construct( $db ) {
- parent::__construct( $db );
- }
-
+class SearchSqlite extends SearchDatabase {
/**
* Whether fulltext search is supported by current schema
* @return Boolean
--- /dev/null
+<?php
+/**
+ * Special page which uses a ChangesList to show query results.
+ *
+ * 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 SpecialPage
+ */
+
+/**
+ * Special page which uses a ChangesList to show query results.
+ * @todo Way too many public functions, most of them should be protected
+ *
+ * @ingroup SpecialPage
+ */
+abstract class ChangesListSpecialPage extends SpecialPage {
+ var $rcSubpage, $rcOptions; // @todo Rename these, make protected
+ protected $customFilters;
+
+ /**
+ * The feed format to output as (either 'rss' or 'atom'), or null if no
+ * feed output was requested
+ *
+ * @var string $feedFormat
+ */
+ protected $feedFormat;
+
+ /**
+ * Main execution point
+ *
+ * @param string $subpage
+ */
+ public function execute( $subpage ) {
+ $this->rcSubpage = $subpage;
+ $this->feedFormat = $this->including() ? null : $this->getRequest()->getVal( 'feed' );
+ if ( $this->feedFormat !== 'atom' && $this->feedFormat !== 'rss' ) {
+ $this->feedFormat = null;
+ }
+
+ $this->setHeaders();
+ $this->outputHeader();
+ $this->addModules();
+
+ $opts = $this->getOptions();
+ // Fetch results, prepare a batch link existence check query
+ $conds = $this->buildMainQueryConds( $opts );
+ $rows = $this->doMainQuery( $conds, $opts );
+ if ( $rows === false ) {
+ if ( !$this->including() ) {
+ $this->doHeader( $opts );
+ }
+
+ return;
+ }
+
+ if ( !$this->feedFormat ) {
+ $batch = new LinkBatch;
+ foreach ( $rows as $row ) {
+ $batch->add( NS_USER, $row->rc_user_text );
+ $batch->add( NS_USER_TALK, $row->rc_user_text );
+ $batch->add( $row->rc_namespace, $row->rc_title );
+ }
+ $batch->execute();
+ }
+ if ( $this->feedFormat ) {
+ list( $changesFeed, $formatter ) = $this->getFeedObject( $this->feedFormat );
+ /** @var ChangesFeed $changesFeed */
+ $changesFeed->execute( $formatter, $rows, $this->checkLastModified( $this->feedFormat ), $opts );
+ } else {
+ $this->webOutput( $rows, $opts );
+ }
+
+ $rows->free();
+ }
+
+ /**
+ * Get the current FormOptions for this request
+ *
+ * @return FormOptions
+ */
+ public function getOptions() {
+ if ( $this->rcOptions === null ) {
+ $this->rcOptions = $this->setup( $this->rcSubpage );
+ }
+
+ return $this->rcOptions;
+ }
+
+ /**
+ * Create a FormOptions object with options as specified by the user
+ *
+ * @param array $parameters
+ *
+ * @return FormOptions
+ */
+ public function setup( $parameters ) {
+ $opts = $this->getDefaultOptions();
+ foreach ( $this->getCustomFilters() as $key => $params ) {
+ $opts->add( $key, $params['default'] );
+ }
+
+ $opts = $this->fetchOptionsFromRequest( $opts );
+
+ // Give precedence to subpage syntax
+ if ( $parameters !== null ) {
+ $this->parseParameters( $parameters, $opts );
+ }
+
+ $this->validateOptions( $opts );
+
+ return $opts;
+ }
+
+ /**
+ * Get a FormOptions object containing the default options. By default returns some basic options,
+ * you might want to not call parent method and discard them, or to override default values.
+ *
+ * @return FormOptions
+ */
+ public function getDefaultOptions() {
+ $opts = new FormOptions();
+
+ $opts->add( 'hideminor', false );
+ $opts->add( 'hidebots', false );
+ $opts->add( 'hideanons', false );
+ $opts->add( 'hideliu', false );
+ $opts->add( 'hidepatrolled', false );
+ $opts->add( 'hidemyself', false );
+
+ $opts->add( 'namespace', '', FormOptions::INTNULL );
+ $opts->add( 'invert', false );
+ $opts->add( 'associated', false );
+
+ return $opts;
+ }
+
+ /**
+ * Get custom show/hide filters
+ *
+ * @return array Map of filter URL param names to properties (msg/default)
+ */
+ protected function getCustomFilters() {
+ // @todo Fire a Special{$this->getName()}Filters hook here
+ return array();
+ }
+
+ /**
+ * Fetch values for a FormOptions object from the WebRequest associated with this instance.
+ *
+ * Intended for subclassing, e.g. to add a backwards-compatibility layer.
+ *
+ * @param FormOptions $parameters
+ * @return FormOptions
+ */
+ protected function fetchOptionsFromRequest( $opts ) {
+ $opts->fetchValuesFromRequest( $this->getRequest() );
+ return $opts;
+ }
+
+ /**
+ * Process $par and put options found in $opts. Used when including the page.
+ *
+ * @param string $par
+ * @param FormOptions $opts
+ */
+ public function parseParameters( $par, FormOptions $opts ) {
+ // nothing by default
+ }
+
+ /**
+ * Validate a FormOptions object generated by getDefaultOptions() with values already populated.
+ *
+ * @param FormOptions $opts
+ */
+ public function validateOptions( FormOptions $opts ) {
+ // nothing by default
+ }
+
+ /**
+ * Return an array of conditions depending of options set in $opts
+ *
+ * @param FormOptions $opts
+ * @return array
+ */
+ public function buildMainQueryConds( FormOptions $opts ) {
+ $dbr = $this->getDB();
+ $user = $this->getUser();
+ $conds = array();
+
+ // It makes no sense to hide both anons and logged-in users. When this occurs, try a guess on
+ // what the user meant and either show only bots or force anons to be shown.
+ $botsonly = false;
+ $hideanons = $opts['hideanons'];
+ if ( $opts['hideanons'] && $opts['hideliu'] ) {
+ if ( $opts['hidebots'] ) {
+ $hideanons = false;
+ } else {
+ $botsonly = true;
+ }
+ }
+
+ // Toggles
+ if ( $opts['hideminor'] ) {
+ $conds['rc_minor'] = 0;
+ }
+ if ( $opts['hidebots'] ) {
+ $conds['rc_bot'] = 0;
+ }
+ if ( $user->useRCPatrol() && $opts['hidepatrolled'] ) {
+ $conds['rc_patrolled'] = 0;
+ }
+ if ( $botsonly ) {
+ $conds['rc_bot'] = 1;
+ } else {
+ if ( $opts['hideliu'] ) {
+ $conds[] = 'rc_user = 0';
+ }
+ if ( $hideanons ) {
+ $conds[] = 'rc_user != 0';
+ }
+ }
+ if ( $opts['hidemyself'] ) {
+ if ( $user->getId() ) {
+ $conds[] = 'rc_user != ' . $dbr->addQuotes( $user->getId() );
+ } else {
+ $conds[] = 'rc_user_text != ' . $dbr->addQuotes( $user->getName() );
+ }
+ }
+
+ // Namespace filtering
+ if ( $opts['namespace'] !== '' ) {
+ $selectedNS = $dbr->addQuotes( $opts['namespace'] );
+ $operator = $opts['invert'] ? '!=' : '=';
+ $boolean = $opts['invert'] ? 'AND' : 'OR';
+
+ // Namespace association (bug 2429)
+ if ( !$opts['associated'] ) {
+ $condition = "rc_namespace $operator $selectedNS";
+ } else {
+ // Also add the associated namespace
+ $associatedNS = $dbr->addQuotes(
+ MWNamespace::getAssociated( $opts['namespace'] )
+ );
+ $condition = "(rc_namespace $operator $selectedNS "
+ . $boolean
+ . " rc_namespace $operator $associatedNS)";
+ }
+
+ $conds[] = $condition;
+ }
+
+ return $conds;
+ }
+
+ /**
+ * Process the query
+ *
+ * @param array $conds
+ * @param FormOptions $opts
+ * @return bool|ResultWrapper Result or false
+ */
+ public function doMainQuery( $conds, $opts ) {
+ $tables = array( 'recentchanges' );
+ $fields = RecentChange::selectFields();
+ $query_options = array();
+ $join_conds = array();
+
+ ChangeTags::modifyDisplayQuery(
+ $tables,
+ $fields,
+ $conds,
+ $join_conds,
+ $query_options,
+ ''
+ );
+
+ // @todo Fire a Special{$this->getName()}Query hook here
+ // @todo Uncomment and document
+ // if ( !wfRunHooks( 'ChangesListSpecialPageQuery',
+ // array( &$tables, &$fields, &$conds, &$query_options, &$join_conds, $opts ) )
+ // ) {
+ // return false;
+ // }
+
+ $dbr = $this->getDB();
+ return $dbr->select(
+ $tables,
+ $fields,
+ $conds,
+ __METHOD__,
+ $query_options,
+ $join_conds
+ );
+ }
+
+ /**
+ * Return a DatabaseBase object for reading
+ *
+ * @return DatabaseBase
+ */
+ protected function getDB() {
+ return wfGetDB( DB_SLAVE );
+ }
+
+ /**
+ * Send output to the OutputPage object, only called if not used feeds
+ *
+ * @param ResultWrapper $rows Database rows
+ * @param FormOptions $opts
+ */
+ public function webOutput( $rows, $opts ) {
+ if ( !$this->including() ) {
+ $this->outputFeedLinks();
+ $this->doHeader( $opts );
+ }
+
+ $this->outputChangesList( $rows, $opts );
+ }
+
+ /**
+ * Output feed links.
+ */
+ public function outputFeedLinks() {
+ // nothing by default
+ }
+
+ /**
+ * Build and output the actual changes list.
+ *
+ * @param array $rows Database rows
+ * @param FormOptions $opts
+ */
+ abstract public function outputChangesList( $rows, $opts );
+
+ /**
+ * Return the text to be displayed above the changes
+ *
+ * @param FormOptions $opts
+ * @return string XHTML
+ */
+ public function doHeader( $opts ) {
+ $this->setTopText( $opts );
+
+ // @todo Lots of stuff should be done here.
+
+ $this->setBottomText( $opts );
+ }
+
+ /**
+ * Send the text to be displayed before the options. Should use $this->getOutput()->addWikiText()
+ * or similar methods to print the text.
+ *
+ * @param FormOptions $opts
+ */
+ function setTopText( FormOptions $opts ) {
+ // nothing by default
+ }
+
+ /**
+ * Send the text to be displayed after the options. Should use $this->getOutput()->addWikiText()
+ * or similar methods to print the text.
+ *
+ * @param FormOptions $opts
+ */
+ function setBottomText( FormOptions $opts ) {
+ // nothing by default
+ }
+
+ /**
+ * Get options to be displayed in a form
+ * @todo This should handle options returned by getDefaultOptions().
+ * @todo Not called by anything, should be called by something… doHeader() maybe?
+ *
+ * @param FormOptions $opts
+ * @return array
+ */
+ function getExtraOptions( $opts ) {
+ return array();
+ }
+
+ /**
+ * Return the legend displayed within the fieldset
+ * @todo This should not be static, then we can drop the parameter
+ * @todo Not called by anything, should be called by doHeader()
+ *
+ * @param $context the object available as $this in non-static functions
+ * @return string
+ */
+ public static function makeLegend( IContextSource $context ) {
+ global $wgRecentChangesFlags;
+ $user = $context->getUser();
+ # The legend showing what the letters and stuff mean
+ $legend = Xml::openElement( 'dl' ) . "\n";
+ # Iterates through them and gets the messages for both letter and tooltip
+ $legendItems = $wgRecentChangesFlags;
+ if ( !$user->useRCPatrol() ) {
+ unset( $legendItems['unpatrolled'] );
+ }
+ foreach ( $legendItems as $key => $legendInfo ) { # generate items of the legend
+ $label = $legendInfo['title'];
+ $letter = $legendInfo['letter'];
+ $cssClass = isset( $legendInfo['class'] ) ? $legendInfo['class'] : $key;
+
+ $legend .= Xml::element( 'dt',
+ array( 'class' => $cssClass ), $context->msg( $letter )->text()
+ ) . "\n";
+ if ( $key === 'newpage' ) {
+ $legend .= Xml::openElement( 'dd' );
+ $legend .= $context->msg( $label )->escaped();
+ $legend .= ' ' . $context->msg( 'recentchanges-legend-newpage' )->parse();
+ $legend .= Xml::closeElement( 'dd' ) . "\n";
+ } else {
+ $legend .= Xml::element( 'dd', array(),
+ $context->msg( $label )->text()
+ ) . "\n";
+ }
+ }
+ # (+-123)
+ $legend .= Xml::tags( 'dt',
+ array( 'class' => 'mw-plusminus-pos' ),
+ $context->msg( 'recentchanges-legend-plusminus' )->parse()
+ ) . "\n";
+ $legend .= Xml::element(
+ 'dd',
+ array( 'class' => 'mw-changeslist-legend-plusminus' ),
+ $context->msg( 'recentchanges-label-plusminus' )->text()
+ ) . "\n";
+ $legend .= Xml::closeElement( 'dl' ) . "\n";
+
+ # Collapsibility
+ $legend =
+ '<div class="mw-changeslist-legend">' .
+ $context->msg( 'recentchanges-legend-heading' )->parse() .
+ '<div class="mw-collapsible-content">' . $legend . '</div>' .
+ '</div>';
+
+ return $legend;
+ }
+
+ /**
+ * Add page-specific modules.
+ */
+ protected function addModules() {
+ $out = $this->getOutput();
+ // Styles and behavior for the legend box (see makeLegend())
+ $out->addModuleStyles( 'mediawiki.special.changeslist.legend' );
+ $out->addModules( 'mediawiki.special.changeslist.legend.js' );
+ }
+
+ /**
+ * Return an array with a ChangesFeed object and ChannelFeed object.
+ *
+ * This is intentionally not abstract not to require subclasses which don't
+ * use feeds functionality to implement it.
+ *
+ * @param string $feedFormat Feed's format (either 'rss' or 'atom')
+ * @return array
+ */
+ public function getFeedObject( $feedFormat ) {
+ throw new MWException( "Not implemented" );
+ }
+
+ /**
+ * Get last-modified date, for client caching. Not implemented by default
+ * (returns current time).
+ *
+ * @param string $feedFormat
+ * @return string|bool
+ */
+ public function checkLastModified( $feedFormat ) {
+ return wfTimestampNow();
+ }
+
+ protected function getGroupName() {
+ return 'changes';
+ }
+}
*/
protected $mContext;
- /**
- * Initialise the special page list
- * This must be called before accessing SpecialPage::$mList
- * @deprecated since 1.18
- */
- static function initList() {
- wfDeprecated( __METHOD__, '1.18' );
- // Noop
- }
-
- /**
- * @deprecated since 1.18
- */
- static function initAliasList() {
- wfDeprecated( __METHOD__, '1.18' );
- // Noop
- }
-
- /**
- * Given a special page alias, return the special page name.
- * Returns false if there is no such alias.
- *
- * @param $alias String
- * @return String or false
- * @deprecated since 1.18 call SpecialPageFactory method directly
- */
- static function resolveAlias( $alias ) {
- wfDeprecated( __METHOD__, '1.18' );
- list( $name, /*...*/ ) = SpecialPageFactory::resolveAlias( $alias );
- return $name;
- }
-
- /**
- * Given a special page name with a possible subpage, return an array
- * where the first element is the special page name and the second is the
- * subpage.
- *
- * @param $alias String
- * @return Array
- * @deprecated since 1.18 call SpecialPageFactory method directly
- */
- static function resolveAliasWithSubpage( $alias ) {
- return SpecialPageFactory::resolveAlias( $alias );
- }
-
- /**
- * Add a page to a certain display group for Special:SpecialPages
- *
- * @param $page Mixed: SpecialPage or string
- * @param $group String
- * @deprecated since 1.18 call SpecialPageFactory method directly
- */
- static function setGroup( $page, $group ) {
- wfDeprecated( __METHOD__, '1.18' );
- SpecialPageFactory::setGroup( $page, $group );
- }
-
- /**
- * Get the group that the special page belongs in on Special:SpecialPage
- *
- * @param $page SpecialPage
- * @return string
- * @deprecated since 1.18 call SpecialPageFactory method directly
- */
- static function getGroup( &$page ) {
- wfDeprecated( __METHOD__, '1.18' );
- return SpecialPageFactory::getGroup( $page );
- }
-
- /**
- * Remove a special page from the list
- * Formerly used to disable expensive or dangerous special pages. The
- * preferred method is now to add a SpecialPage_initList hook.
- * @deprecated since 1.18
- *
- * @param string $name the page to remove
- */
- static function removePage( $name ) {
- wfDeprecated( __METHOD__, '1.18' );
- unset( SpecialPageFactory::getList()->$name );
- }
-
- /**
- * Check if a given name exist as a special page or as a special page alias
- *
- * @param string $name name of a special page
- * @return Boolean: true if a special page exists with this name
- * @deprecated since 1.18 call SpecialPageFactory method directly
- */
- static function exists( $name ) {
- wfDeprecated( __METHOD__, '1.18' );
- return SpecialPageFactory::exists( $name );
- }
-
- /**
- * Find the object with a given name and return it (or NULL)
- *
- * @param $name String
- * @return SpecialPage object or null if the page doesn't exist
- * @deprecated since 1.18 call SpecialPageFactory method directly
- */
- static function getPage( $name ) {
- wfDeprecated( __METHOD__, '1.18' );
- return SpecialPageFactory::getPage( $name );
- }
-
- /**
- * Get a special page with a given localised name, or NULL if there
- * is no such special page.
- *
- * @param $alias String
- * @return SpecialPage object or null if the page doesn't exist
- * @deprecated since 1.18 call SpecialPageFactory method directly
- */
- static function getPageByAlias( $alias ) {
- wfDeprecated( __METHOD__, '1.18' );
- return SpecialPageFactory::getPage( $alias );
- }
-
- /**
- * Return categorised listable special pages which are available
- * for the current user, and everyone.
- *
- * @param $user User object to check permissions, $wgUser will be used
- * if not provided
- * @return array Associative array mapping page's name to its SpecialPage object
- * @deprecated since 1.18 call SpecialPageFactory method directly
- */
- static function getUsablePages( User $user = null ) {
- wfDeprecated( __METHOD__, '1.18' );
- return SpecialPageFactory::getUsablePages( $user );
- }
-
- /**
- * Return categorised listable special pages for all users
- *
- * @return array Associative array mapping page's name to its SpecialPage object
- * @deprecated since 1.18 call SpecialPageFactory method directly
- */
- static function getRegularPages() {
- wfDeprecated( __METHOD__, '1.18' );
- return SpecialPageFactory::getRegularPages();
- }
-
- /**
- * Return categorised listable special pages which are available
- * for the current user, but not for everyone
- *
- * @return array Associative array mapping page's name to its SpecialPage object
- * @deprecated since 1.18 call SpecialPageFactory method directly
- */
- static function getRestrictedPages() {
- wfDeprecated( __METHOD__, '1.18' );
- return SpecialPageFactory::getRestrictedPages();
- }
-
- /**
- * Execute a special page path.
- * The path may contain parameters, e.g. Special:Name/Params
- * Extracts the special page name and call the execute method, passing the parameters
- *
- * Returns a title object if the page is redirected, false if there was no such special
- * page, and true if it was successful.
- *
- * @param $title Title object
- * @param $context IContextSource
- * @param $including Bool output is being captured for use in {{special:whatever}}
- * @return Bool
- * @deprecated since 1.18 call SpecialPageFactory method directly
- */
- public static function executePath( &$title, IContextSource &$context, $including = false ) {
- wfDeprecated( __METHOD__, '1.18' );
- return SpecialPageFactory::executePath( $title, $context, $including );
- }
-
- /**
- * Get the local name for a specified canonical name
- *
- * @param $name String
- * @param $subpage Mixed: boolean false, or string
- *
- * @return String
- * @deprecated since 1.18 call SpecialPageFactory method directly
- */
- static function getLocalNameFor( $name, $subpage = false ) {
- wfDeprecated( __METHOD__, '1.18' );
- return SpecialPageFactory::getLocalNameFor( $name, $subpage );
- }
-
/**
* Get a localised Title object for a specified special page name
*
- * @param $name String
- * @param string|Bool $subpage subpage string, or false to not use a subpage
- * @param string $fragment the link fragment (after the "#")
+ * @param string $name
+ * @param string|bool $subpage Subpage string, or false to not use a subpage
+ * @param string $fragment The link fragment (after the "#")
+ * @return Title
* @throws MWException
- * @return Title object
*/
public static function getTitleFor( $name, $subpage = false, $fragment = '' ) {
$name = SpecialPageFactory::getLocalNameFor( $name, $subpage );
/**
* Get a localised Title object for a page name with a possibly unvalidated subpage
*
- * @param $name String
- * @param string|Bool $subpage subpage string, or false to not use a subpage
- * @return Title object or null if the page doesn't exist
+ * @param string $name
+ * @param string|bool $subpage Subpage string, or false to not use a subpage
+ * @return Title|null Title object or null if the page doesn't exist
*/
public static function getSafeTitleFor( $name, $subpage = false ) {
$name = SpecialPageFactory::getLocalNameFor( $name, $subpage );
}
}
- /**
- * Get a title for a given alias
- *
- * @param $alias String
- * @return Title or null if there is no such alias
- * @deprecated since 1.18 call SpecialPageFactory method directly
- */
- static function getTitleForAlias( $alias ) {
- wfDeprecated( __METHOD__, '1.18' );
- return SpecialPageFactory::getTitleForAlias( $alias );
- }
-
/**
* Default constructor for special pages
* Derivative classes should call this from their constructor
* @param string $name Name of the special page, as seen in links and URLs
* @param string $restriction User right required, e.g. "block" or "delete"
* @param bool $listed Whether the page is listed in Special:Specialpages
- * @param Callback|Bool $function Function called by execute(). By default
- * it is constructed from $name
+ * @param callable|bool $function Function called by execute(). By default
+ * it is constructed from $name
* @param string $file File which is included by execute(). It is also
- * constructed from $name by default
+ * constructed from $name by default
* @param bool $includable Whether the page can be included in normal pages
*/
public function __construct(
$name = '', $restriction = '', $listed = true,
$function = false, $file = 'default', $includable = false
) {
- $this->init( $name, $restriction, $listed, $function, $file, $includable );
- }
-
- /**
- * Do the real work for the constructor, mainly so __call() can intercept
- * calls to SpecialPage()
- * @param string $name Name of the special page, as seen in links and URLs
- * @param string $restriction User right required, e.g. "block" or "delete"
- * @param bool $listed Whether the page is listed in Special:Specialpages
- * @param Callback|Bool $function Function called by execute(). By default
- * it is constructed from $name
- * @param string $file File which is included by execute(). It is also
- * constructed from $name by default
- * @param bool $includable Whether the page can be included in normal pages
- */
- private function init( $name, $restriction, $listed, $function, $file, $includable ) {
$this->mName = $name;
$this->mRestriction = $restriction;
$this->mListed = $listed;
}
}
- /**
- * Use PHP's magic __call handler to get calls to the old PHP4 constructor
- * because PHP E_STRICT yells at you for having __construct() and SpecialPage()
- *
- * @param string $fName Name of called method
- * @param array $a Arguments to the method
- * @throws MWException
- * @deprecated since 1.17, call parent::__construct()
- */
- public function __call( $fName, $a ) {
- // Deprecated messages now, remove in 1.19 or 1.20?
- wfDeprecated( __METHOD__, '1.17' );
-
- // Sometimes $fName is SpecialPage, sometimes it's specialpage. <3 PHP
- if ( strtolower( $fName ) == 'specialpage' ) {
- $name = isset( $a[0] ) ? $a[0] : '';
- $restriction = isset( $a[1] ) ? $a[1] : '';
- $listed = isset( $a[2] ) ? $a[2] : true;
- $function = isset( $a[3] ) ? $a[3] : false;
- $file = isset( $a[4] ) ? $a[4] : 'default';
- $includable = isset( $a[5] ) ? $a[5] : false;
- $this->init( $name, $restriction, $listed, $function, $file, $includable );
- } else {
- $className = get_class( $this );
- throw new MWException( "Call to undefined method $className::$fName" );
- }
- }
-
/**
* Get the name of this Special Page.
- * @return String
+ * @return string
*/
function getName() {
return $this->mName;
/**
* Get the permission that a user must have to execute this page
- * @return String
+ * @return string
*/
function getRestriction() {
return $this->mRestriction;
* Get the file which will be included by SpecialPage::execute() if your extension is
* still stuck in the past and hasn't overridden the execute() method. No modern code
* should want or need to know this.
- * @return String
+ * @return string
* @deprecated since 1.18
*/
function getFile() {
/**
* Whether this special page is listed in Special:SpecialPages
* @since r3583 (v1.3)
- * @return Bool
+ * @return bool
*/
function isListed() {
return $this->mListed;
}
/**
* Set whether this page is listed in Special:Specialpages, at run-time
- * @since r3583 (v1.3)
- * @param $listed Bool
- * @return Bool
+ * @since 1.3
+ * @param bool $listed
+ * @return bool
*/
function setListed( $listed ) {
return wfSetVar( $this->mListed, $listed );
}
/**
* Get or set whether this special page is listed in Special:SpecialPages
- * @since r11308 (v1.6)
- * @param $x Bool
- * @return Bool
+ * @since 1.6
+ * @param bool $x
+ * @return bool
*/
function listed( $x = null ) {
return wfSetVar( $this->mListed, $x );
/**
* Whether it's allowed to transclude the special page via {{Special:Foo/params}}
- * @return Bool
+ * @return bool
*/
public function isIncludable() {
return $this->mIncludable;
}
- /**
- * These mutators are very evil, as the relevant variables should not mutate. So
- * don't use them.
- * @param $x Mixed
- * @return Mixed
- * @deprecated since 1.18
- */
- function name( $x = null ) {
- wfDeprecated( __METHOD__, '1.18' );
- return wfSetVar( $this->mName, $x );
- }
-
- /**
- * These mutators are very evil, as the relevant variables should not mutate. So
- * don't use them.
- * @param $x Mixed
- * @return Mixed
- * @deprecated since 1.18
- */
- function restriction( $x = null ) {
- wfDeprecated( __METHOD__, '1.18' );
- return wfSetVar( $this->mRestriction, $x );
- }
-
- /**
- * These mutators are very evil, as the relevant variables should not mutate. So
- * don't use them.
- * @param $x Mixed
- * @return Mixed
- * @deprecated since 1.18
- */
- function func( $x = null ) {
- wfDeprecated( __METHOD__, '1.18' );
- return wfSetVar( $this->mFunction, $x );
- }
-
- /**
- * These mutators are very evil, as the relevant variables should not mutate. So
- * don't use them.
- * @param $x Mixed
- * @return Mixed
- * @deprecated since 1.18
- */
- function file( $x = null ) {
- wfDeprecated( __METHOD__, '1.18' );
- return wfSetVar( $this->mFile, $x );
- }
-
- /**
- * These mutators are very evil, as the relevant variables should not mutate. So
- * don't use them.
- * @param $x Mixed
- * @return Mixed
- * @deprecated since 1.18
- */
- function includable( $x = null ) {
- wfDeprecated( __METHOD__, '1.18' );
- return wfSetVar( $this->mIncludable, $x );
- }
-
/**
* Whether the special page is being evaluated via transclusion
- * @param $x Bool
- * @return Bool
+ * @param bool $x
+ * @return bool
*/
function including( $x = null ) {
return wfSetVar( $this->mIncluding, $x );
/**
* Get the localised name of the special page
+ * @return string
*/
function getLocalName() {
if ( !isset( $this->mLocalName ) ) {
* (and still overridden) by QueryPage and subclasses, moved here so that
* Special:SpecialPages can safely call it for all special pages.
*
- * @return Boolean
+ * @return bool
*/
public function isExpensive() {
return false;
* Used by QueryPage and subclasses, moved here so that
* Special:SpecialPages can safely call it for all special pages.
*
- * @return Boolean
+ * @return bool
* @since 1.21
*/
public function isCached() {
* Can be overridden by subclasses with more complicated permissions
* schemes.
*
- * @return Boolean: should the page be displayed with the restricted-access
+ * @return bool Should the page be displayed with the restricted-access
* pages?
*/
public function isRestricted() {
* special page (as defined by $mRestriction). Can be overridden by sub-
* classes with more complicated permissions schemes.
*
- * @param $user User: the user to check
- * @return Boolean: does the user have permission to view the page?
+ * @param User $user The user to check
+ * @return bool Does the user have permission to view the page?
*/
public function userCanExecute( User $user ) {
return $user->isAllowed( $this->mRestriction );
/**
* Output an error message telling the user what access level they have to have
+ * @throws PermissionsError
*/
function displayRestrictionError() {
throw new PermissionsError( $this->mRestriction );
* Checks if userCanExecute, and if not throws a PermissionsError
*
* @since 1.19
+ * @return void
+ * @throws PermissionsError
*/
public function checkPermissions() {
if ( !$this->userCanExecute( $this->getUser() ) ) {
* If the wiki is currently in readonly mode, throws a ReadOnlyError
*
* @since 1.19
+ * @return void
* @throws ReadOnlyError
*/
public function checkReadOnly() {
*
* @since 1.20
*
- * @param $subPage string|null
+ * @param string|null $subPage
*/
final public function run( $subPage ) {
/**
*
* @since 1.20
*
- * @param $special SpecialPage
- * @param $subPage string|null
+ * @param SpecialPage $this
+ * @param string|null $subPage
*/
wfRunHooks( 'SpecialPageBeforeExecute', array( $this, $subPage ) );
*
* @since 1.20
*
- * @param $special SpecialPage
- * @param $subPage string|null
+ * @param SpecialPage $this
+ * @param string|null $subPage
*/
wfRunHooks( 'SpecialPageAfterExecute', array( $this, $subPage ) );
}
*
* @since 1.20
*
- * @param $subPage string|null
+ * @param string|null $subPage
*/
protected function beforeExecute( $subPage ) {
// No-op
*
* @since 1.20
*
- * @param $subPage string|null
+ * @param string|null $subPage
*/
protected function afterExecute( $subPage ) {
// No-op
*
* This must be overridden by subclasses; it will be made abstract in a future version
*
- * @param $subPage string|null
+ * @param string|null $subPage
*/
public function execute( $subPage ) {
$this->setHeaders();
* May be overridden, i.e. by extensions to stick with the naming conventions
* for message keys: 'extensionname-xxx'
*
- * @param string $summaryMessageKey message key of the summary
+ * @param string $summaryMessageKey Message key of the summary
*/
function outputHeader( $summaryMessageKey = '' ) {
global $wgContLang;
/**
* Get a self-referential title object
*
- * @param $subpage String|Bool
- * @return Title object
+ * @param string|bool $subpage
+ * @return Title
* @deprecated in 1.23, use SpecialPage::getPageTitle
*/
function getTitle( $subpage = false ) {
/**
* Get a self-referential title object
*
- * @param $subpage String|Bool
- * @return Title object
+ * @param string|bool $subpage
+ * @return Title
+ * @since 1.23
*/
function getPageTitle( $subpage = false ) {
return self::getTitleFor( $this->mName, $subpage );
/**
* Sets the context this SpecialPage is executed in
*
- * @param $context IContextSource
+ * @param IContextSource $context
* @since 1.18
*/
public function setContext( $context ) {
/**
* Adds RSS/atom links
*
- * @param $params array
+ * @param array $params
*/
protected function addFeedLinks( $params ) {
global $wgFeedClasses;
--- /dev/null
+<?php
+/**
+ * Factory for handling the special page list and generating SpecialPage objects.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup SpecialPage
+ * @defgroup SpecialPage SpecialPage
+ */
+
+/**
+ * Factory for handling the special page list and generating SpecialPage objects.
+ *
+ * To add a special page in an extension, add to $wgSpecialPages either
+ * an object instance or an array containing the name and constructor
+ * parameters. The latter is preferred for performance reasons.
+ *
+ * The object instantiated must be either an instance of SpecialPage or a
+ * sub-class thereof. It must have an execute() method, which sends the HTML
+ * for the special page to $wgOut. The parent class has an execute() method
+ * which distributes the call to the historical global functions. Additionally,
+ * execute() also checks if the user has the necessary access privileges
+ * and bails out if not.
+ *
+ * To add a core special page, use the similar static list in
+ * SpecialPageFactory::$list. To remove a core static special page at runtime, use
+ * a SpecialPage_initList hook.
+ *
+ * @ingroup SpecialPage
+ * @since 1.17
+ */
+class SpecialPageFactory {
+ /**
+ * List of special page names to the subclass of SpecialPage which handles them.
+ */
+ private static $list = array(
+ // Maintenance Reports
+ 'BrokenRedirects' => 'BrokenRedirectsPage',
+ 'Deadendpages' => 'DeadendpagesPage',
+ 'DoubleRedirects' => 'DoubleRedirectsPage',
+ 'Longpages' => 'LongpagesPage',
+ 'Ancientpages' => 'AncientpagesPage',
+ 'Lonelypages' => 'LonelypagesPage',
+ 'Fewestrevisions' => 'FewestrevisionsPage',
+ 'Withoutinterwiki' => 'WithoutinterwikiPage',
+ 'Protectedpages' => 'SpecialProtectedpages',
+ 'Protectedtitles' => 'SpecialProtectedtitles',
+ 'Shortpages' => 'ShortpagesPage',
+ 'Uncategorizedcategories' => 'UncategorizedcategoriesPage',
+ 'Uncategorizedimages' => 'UncategorizedimagesPage',
+ 'Uncategorizedpages' => 'UncategorizedpagesPage',
+ 'Uncategorizedtemplates' => 'UncategorizedtemplatesPage',
+ 'Unusedcategories' => 'UnusedcategoriesPage',
+ 'Unusedimages' => 'UnusedimagesPage',
+ 'Unusedtemplates' => 'UnusedtemplatesPage',
+ 'Unwatchedpages' => 'UnwatchedpagesPage',
+ 'Wantedcategories' => 'WantedcategoriesPage',
+ 'Wantedfiles' => 'WantedfilesPage',
+ 'Wantedpages' => 'WantedpagesPage',
+ 'Wantedtemplates' => 'WantedtemplatesPage',
+
+ // List of pages
+ 'Allpages' => 'SpecialAllpages',
+ 'Prefixindex' => 'SpecialPrefixindex',
+ 'Categories' => 'SpecialCategories',
+ 'Listredirects' => 'ListredirectsPage',
+ 'PagesWithProp' => 'SpecialPagesWithProp',
+
+ // Login/create account
+ 'Userlogin' => 'LoginForm',
+ 'CreateAccount' => 'SpecialCreateAccount',
+
+ // Users and rights
+ 'Block' => 'SpecialBlock',
+ 'Unblock' => 'SpecialUnblock',
+ 'BlockList' => 'SpecialBlockList',
+ 'ChangePassword' => 'SpecialChangePassword',
+ 'PasswordReset' => 'SpecialPasswordReset',
+ 'DeletedContributions' => 'DeletedContributionsPage',
+ 'Preferences' => 'SpecialPreferences',
+ 'ResetTokens' => 'SpecialResetTokens',
+ 'Contributions' => 'SpecialContributions',
+ 'Listgrouprights' => 'SpecialListGroupRights',
+ 'Listusers' => 'SpecialListUsers',
+ 'Listadmins' => 'SpecialListAdmins',
+ 'Listbots' => 'SpecialListBots',
+ 'Userrights' => 'UserrightsPage',
+ 'EditWatchlist' => 'SpecialEditWatchlist',
+
+ // Recent changes and logs
+ 'Newimages' => 'SpecialNewFiles',
+ 'Log' => 'SpecialLog',
+ 'Watchlist' => 'SpecialWatchlist',
+ 'Newpages' => 'SpecialNewpages',
+ 'Recentchanges' => 'SpecialRecentChanges',
+ 'Recentchangeslinked' => 'SpecialRecentChangesLinked',
+ 'Tags' => 'SpecialTags',
+
+ // Media reports and uploads
+ 'Listfiles' => 'SpecialListFiles',
+ 'Filepath' => 'SpecialFilepath',
+ 'MIMEsearch' => 'MIMEsearchPage',
+ 'FileDuplicateSearch' => 'FileDuplicateSearchPage',
+ 'Upload' => 'SpecialUpload',
+ 'UploadStash' => 'SpecialUploadStash',
+
+ // Data and tools
+ 'Statistics' => 'SpecialStatistics',
+ 'Allmessages' => 'SpecialAllmessages',
+ 'Version' => 'SpecialVersion',
+ 'Lockdb' => 'SpecialLockdb',
+ 'Unlockdb' => 'SpecialUnlockdb',
+
+ // Redirecting special pages
+ 'LinkSearch' => 'LinkSearchPage',
+ 'Randompage' => 'Randompage',
+ 'RandomInCategory' => 'SpecialRandomInCategory',
+ 'Randomredirect' => 'SpecialRandomredirect',
+
+ // High use pages
+ 'Mostlinkedcategories' => 'MostlinkedCategoriesPage',
+ 'Mostimages' => 'MostimagesPage',
+ 'Mostinterwikis' => 'MostinterwikisPage',
+ 'Mostlinked' => 'MostlinkedPage',
+ 'Mostlinkedtemplates' => 'MostlinkedTemplatesPage',
+ 'Mostcategories' => 'MostcategoriesPage',
+ 'Mostrevisions' => 'MostrevisionsPage',
+
+ // Page tools
+ 'ComparePages' => 'SpecialComparePages',
+ 'Export' => 'SpecialExport',
+ 'Import' => 'SpecialImport',
+ 'Undelete' => 'SpecialUndelete',
+ 'Whatlinkshere' => 'SpecialWhatlinkshere',
+ 'MergeHistory' => 'SpecialMergeHistory',
+ 'ExpandTemplates' => 'SpecialExpandTemplates',
+
+ // Other
+ 'Booksources' => 'SpecialBookSources',
+
+ // Unlisted / redirects
+ 'Blankpage' => 'SpecialBlankpage',
+ 'Diff' => 'SpecialDiff',
+ 'Emailuser' => 'SpecialEmailUser',
+ 'Movepage' => 'MovePageForm',
+ 'Mycontributions' => 'SpecialMycontributions',
+ 'Mypage' => 'SpecialMypage',
+ 'Mytalk' => 'SpecialMytalk',
+ 'Myuploads' => 'SpecialMyuploads',
+ 'AllMyUploads' => 'SpecialAllMyUploads',
+ 'PermanentLink' => 'SpecialPermanentLink',
+ 'Redirect' => 'SpecialRedirect',
+ 'Revisiondelete' => 'SpecialRevisionDelete',
+ 'Specialpages' => 'SpecialSpecialpages',
+ 'Userlogout' => 'SpecialUserlogout',
+ );
+
+ private static $aliases;
+
+ /**
+ * Get the special page list
+ *
+ * @return array
+ */
+ static function getList() {
+ global $wgSpecialPages;
+ global $wgDisableCounters, $wgDisableInternalSearch, $wgEmailAuthentication;
+ global $wgEnableEmail, $wgEnableJavaScriptTest;
+ global $wgMiserMode;
+
+ if ( !is_object( self::$list ) ) {
+ wfProfileIn( __METHOD__ );
+
+ if ( !$wgDisableCounters ) {
+ self::$list['Popularpages'] = 'PopularpagesPage';
+ }
+
+ if ( !$wgDisableInternalSearch ) {
+ self::$list['Search'] = 'SpecialSearch';
+ }
+
+ if ( $wgEmailAuthentication ) {
+ self::$list['Confirmemail'] = 'EmailConfirmation';
+ self::$list['Invalidateemail'] = 'EmailInvalidation';
+ }
+
+ if ( $wgEnableEmail ) {
+ self::$list['ChangeEmail'] = 'SpecialChangeEmail';
+ }
+
+ if ( $wgEnableJavaScriptTest ) {
+ self::$list['JavaScriptTest'] = 'SpecialJavaScriptTest';
+ }
+
+ if ( !$wgMiserMode ) {
+ self::$list['Activeusers'] = 'SpecialActiveUsers';
+ }
+
+ // Add extension special pages
+ self::$list = array_merge( self::$list, $wgSpecialPages );
+
+ // Run hooks
+ // This hook can be used to remove undesired built-in special pages
+ wfRunHooks( 'SpecialPage_initList', array( &self::$list ) );
+
+ // Cast to object: func()[$key] doesn't work, but func()->$key does
+ settype( self::$list, 'object' );
+
+ wfProfileOut( __METHOD__ );
+ }
+ return self::$list;
+ }
+
+ /**
+ * Initialise and return the list of special page aliases. Returns an object with
+ * properties which can be accessed $obj->pagename - each property is an array of
+ * aliases; the first in the array is the canonical alias. All registered special
+ * pages are guaranteed to have a property entry, and for that property array to
+ * contain at least one entry (English fallbacks will be added if necessary).
+ * @return Object
+ */
+ static function getAliasList() {
+ if ( !is_object( self::$aliases ) ) {
+ global $wgContLang;
+ $aliases = $wgContLang->getSpecialPageAliases();
+
+ // Objects are passed by reference by default, need to create a copy
+ $missingPages = clone self::getList();
+
+ self::$aliases = array();
+ foreach ( $aliases as $realName => $aliasList ) {
+ foreach ( $aliasList as $alias ) {
+ self::$aliases[$wgContLang->caseFold( $alias )] = $realName;
+ }
+ unset( $missingPages->$realName );
+ }
+ foreach ( $missingPages as $name => $stuff ) {
+ self::$aliases[$wgContLang->caseFold( $name )] = $name;
+ }
+
+ // Cast to object: func()[$key] doesn't work, but func()->$key does
+ self::$aliases = (object)self::$aliases;
+ }
+ return self::$aliases;
+ }
+
+ /**
+ * Given a special page name with a possible subpage, return an array
+ * where the first element is the special page name and the second is the
+ * subpage.
+ *
+ * @param string $alias
+ * @return array Array( String, String|null ), or array( null, null ) if the page is invalid
+ */
+ public static function resolveAlias( $alias ) {
+ global $wgContLang;
+ $bits = explode( '/', $alias, 2 );
+
+ $caseFoldedAlias = $wgContLang->caseFold( $bits[0] );
+ $caseFoldedAlias = str_replace( ' ', '_', $caseFoldedAlias );
+ if ( isset( self::getAliasList()->$caseFoldedAlias ) ) {
+ $name = self::getAliasList()->$caseFoldedAlias;
+ } else {
+ return array( null, null );
+ }
+
+ if ( !isset( $bits[1] ) ) { // bug 2087
+ $par = null;
+ } else {
+ $par = $bits[1];
+ }
+
+ return array( $name, $par );
+ }
+
+ /**
+ * Add a page to a certain display group for Special:SpecialPages
+ *
+ * @param SpecialPage|string $page
+ * @param string $group
+ * @deprecated since 1.21 Override SpecialPage::getGroupName
+ */
+ public static function setGroup( $page, $group ) {
+ wfDeprecated( __METHOD__, '1.21' );
+
+ global $wgSpecialPageGroups;
+ $name = is_object( $page ) ? $page->getName() : $page;
+ $wgSpecialPageGroups[$name] = $group;
+ }
+
+ /**
+ * Get the group that the special page belongs in on Special:SpecialPage
+ *
+ * @param SpecialPage $page
+ * @return string
+ * @deprecated since 1.21 Use SpecialPage::getFinalGroupName
+ */
+ public static function getGroup( &$page ) {
+ wfDeprecated( __METHOD__, '1.21' );
+
+ return $page->getFinalGroupName();
+ }
+
+ /**
+ * Check if a given name exist as a special page or as a special page alias
+ *
+ * @param string $name Name of a special page
+ * @return bool True if a special page exists with this name
+ */
+ public static function exists( $name ) {
+ list( $title, /*...*/ ) = self::resolveAlias( $name );
+ return property_exists( self::getList(), $title );
+ }
+
+ /**
+ * Find the object with a given name and return it (or NULL)
+ *
+ * @param string $name Special page name, may be localised and/or an alias
+ * @return SpecialPage|null SpecialPage object or null if the page doesn't exist
+ */
+ public static function getPage( $name ) {
+ list( $realName, /*...*/ ) = self::resolveAlias( $name );
+ if ( property_exists( self::getList(), $realName ) ) {
+ $rec = self::getList()->$realName;
+ if ( is_string( $rec ) ) {
+ $className = $rec;
+ return new $className;
+ } elseif ( is_array( $rec ) ) {
+ // @deprecated, officially since 1.18, unofficially since forever
+ wfDebug( "Array syntax for \$wgSpecialPages is deprecated, define a subclass of SpecialPage instead." );
+ $className = array_shift( $rec );
+ self::getList()->$realName = MWFunction::newObj( $className, $rec );
+ }
+ return self::getList()->$realName;
+ } else {
+ return null;
+ }
+ }
+
+ /**
+ * Return categorised listable special pages which are available
+ * for the current user, and everyone.
+ *
+ * @param $user User object to check permissions, $wgUser will be used if
+ * if not provided
+ * @return array ( string => Specialpage )
+ */
+ public static function getUsablePages( User $user = null ) {
+ $pages = array();
+ if ( $user === null ) {
+ global $wgUser;
+ $user = $wgUser;
+ }
+ foreach ( self::getList() as $name => $rec ) {
+ $page = self::getPage( $name );
+ if ( $page ) { // not null
+ $page->setContext( RequestContext::getMain() );
+ if ( $page->isListed()
+ && ( !$page->isRestricted() || $page->userCanExecute( $user ) )
+ ) {
+ $pages[$name] = $page;
+ }
+ }
+ }
+ return $pages;
+ }
+
+ /**
+ * Return categorised listable special pages for all users
+ *
+ * @return array ( string => Specialpage )
+ */
+ public static function getRegularPages() {
+ $pages = array();
+ foreach ( self::getList() as $name => $rec ) {
+ $page = self::getPage( $name );
+ if ( $page->isListed() && !$page->isRestricted() ) {
+ $pages[$name] = $page;
+ }
+ }
+ return $pages;
+ }
+
+ /**
+ * Return categorised listable special pages which are available
+ * for the current user, but not for everyone
+ *
+ * @return array ( string => Specialpage )
+ */
+ public static function getRestrictedPages() {
+ global $wgUser;
+ $pages = array();
+ foreach ( self::getList() as $name => $rec ) {
+ $page = self::getPage( $name );
+ if (
+ $page->isListed()
+ && $page->isRestricted()
+ && $page->userCanExecute( $wgUser )
+ ) {
+ $pages[$name] = $page;
+ }
+ }
+ return $pages;
+ }
+
+ /**
+ * Execute a special page path.
+ * The path may contain parameters, e.g. Special:Name/Params
+ * Extracts the special page name and call the execute method, passing the parameters
+ *
+ * Returns a title object if the page is redirected, false if there was no such special
+ * page, and true if it was successful.
+ *
+ * @param Title $title
+ * @param IContextSource $context
+ * @param bool $including Bool output is being captured for use in {{special:whatever}}
+ *
+ * @return bool
+ */
+ public static function executePath( Title &$title, IContextSource &$context, $including = false ) {
+ wfProfileIn( __METHOD__ );
+
+ // @todo FIXME: Redirects broken due to this call
+ $bits = explode( '/', $title->getDBkey(), 2 );
+ $name = $bits[0];
+ if ( !isset( $bits[1] ) ) { // bug 2087
+ $par = null;
+ } else {
+ $par = $bits[1];
+ }
+ $page = self::getPage( $name );
+ // Nonexistent?
+ if ( !$page ) {
+ $context->getOutput()->setArticleRelated( false );
+ $context->getOutput()->setRobotPolicy( 'noindex,nofollow' );
+
+ global $wgSend404Code;
+ if ( $wgSend404Code ) {
+ $context->getOutput()->setStatusCode( 404 );
+ }
+
+ $context->getOutput()->showErrorPage( 'nosuchspecialpage', 'nospecialpagetext' );
+ wfProfileOut( __METHOD__ );
+ return false;
+ }
+
+ // Page exists, set the context
+ $page->setContext( $context );
+
+ if ( !$including ) {
+ // Redirect to canonical alias for GET commands
+ // Not for POST, we'd lose the post data, so it's best to just distribute
+ // the request. Such POST requests are possible for old extensions that
+ // generate self-links without being aware that their default name has
+ // changed.
+ if ( $name != $page->getLocalName() && !$context->getRequest()->wasPosted() ) {
+ $query = $context->getRequest()->getQueryValues();
+ unset( $query['title'] );
+ $title = $page->getPageTitle( $par );
+ $url = $title->getFullURL( $query );
+ $context->getOutput()->redirect( $url );
+ wfProfileOut( __METHOD__ );
+ return $title;
+ } else {
+ $context->setTitle( $page->getPageTitle( $par ) );
+ }
+
+ } elseif ( !$page->isIncludable() ) {
+ wfProfileOut( __METHOD__ );
+ return false;
+ }
+
+ $page->including( $including );
+
+ // Execute special page
+ $profName = 'Special:' . $page->getName();
+ wfProfileIn( $profName );
+ $page->run( $par );
+ wfProfileOut( $profName );
+ wfProfileOut( __METHOD__ );
+ return true;
+ }
+
+ /**
+ * Just like executePath() but will override global variables and execute
+ * the page in "inclusion" mode. Returns true if the execution was
+ * successful or false if there was no such special page, or a title object
+ * if it was a redirect.
+ *
+ * Also saves the current $wgTitle, $wgOut, $wgRequest, $wgUser and $wgLang
+ * variables so that the special page will get the context it'd expect on a
+ * normal request, and then restores them to their previous values after.
+ *
+ * @param Title $title
+ * @param IContextSource $context
+ * @return string HTML fragment
+ */
+ static function capturePath( Title $title, IContextSource $context ) {
+ global $wgOut, $wgTitle, $wgRequest, $wgUser, $wgLang;
+
+ // Save current globals
+ $oldTitle = $wgTitle;
+ $oldOut = $wgOut;
+ $oldRequest = $wgRequest;
+ $oldUser = $wgUser;
+ $oldLang = $wgLang;
+
+ // Set the globals to the current context
+ $wgTitle = $title;
+ $wgOut = $context->getOutput();
+ $wgRequest = $context->getRequest();
+ $wgUser = $context->getUser();
+ $wgLang = $context->getLanguage();
+
+ // The useful part
+ $ret = self::executePath( $title, $context, true );
+
+ // And restore the old globals
+ $wgTitle = $oldTitle;
+ $wgOut = $oldOut;
+ $wgRequest = $oldRequest;
+ $wgUser = $oldUser;
+ $wgLang = $oldLang;
+
+ return $ret;
+ }
+
+ /**
+ * Get the local name for a specified canonical name
+ *
+ * @param string $name
+ * @param string|bool $subpage
+ * @return string
+ */
+ static function getLocalNameFor( $name, $subpage = false ) {
+ global $wgContLang;
+ $aliases = $wgContLang->getSpecialPageAliases();
+
+ if ( isset( $aliases[$name][0] ) ) {
+ $name = $aliases[$name][0];
+ } else {
+ // Try harder in case someone misspelled the correct casing
+ $found = false;
+ foreach ( $aliases as $n => $values ) {
+ if ( strcasecmp( $name, $n ) === 0 ) {
+ wfWarn( "Found alias defined for $n when searching for " .
+ "special page aliases for $name. Case mismatch?" );
+ $name = $values[0];
+ $found = true;
+ break;
+ }
+ }
+ if ( !$found ) {
+ wfWarn( "Did not find alias for special page '$name'. " .
+ "Perhaps no aliases are defined for it?" );
+ }
+ }
+ if ( $subpage !== false && !is_null( $subpage ) ) {
+ $name = "$name/$subpage";
+ }
+ return $wgContLang->ucfirst( $name );
+ }
+
+ /**
+ * Get a title for a given alias
+ *
+ * @param string $alias
+ * @return Title|null Title or null if there is no such alias
+ */
+ static function getTitleForAlias( $alias ) {
+ $name = self::resolveAlias( $alias );
+ if ( $name ) {
+ return SpecialPage::getTitleFor( $name );
+ } else {
+ return null;
+ }
+ }
+}
case 'am_title' :
$title = Title::makeTitle( NS_MEDIAWIKI, $value . $this->suffix );
$talk = Title::makeTitle( NS_MEDIAWIKI_TALK, $value . $this->suffix );
+ $translation = Linker::makeExternalLink(
+ 'https://translatewiki.net/w/i.php?' . wfArrayToCgi( array(
+ 'title' => 'Special:SearchTranslations',
+ 'group' => 'mediawiki',
+ 'grouppath' => 'mediawiki',
+ 'query' => 'language:' . $this->getLanguage()->getCode() . '^25 ' .
+ 'messageid:"MediaWiki:' . $value . '"^10 "' .
+ $this->msg ( $value )->inLanguage ( 'en' )->plain() . '"'
+ ) ),
+ $this->msg( 'allmessages-filter-translate' )->text()
+ );
if ( $this->mCurrentRow->am_customised ) {
$title = Linker::linkKnown( $title, $this->getLanguage()->lcfirst( $value ) );
);
}
- return $title . ' ' . $this->msg( 'parentheses' )->rawParams( $talk )->escaped();
+ return $title . ' '
+ . $this->msg( 'parentheses' )->rawParams( $talk )->escaped()
+ . ' '
+ . $this->msg( 'parentheses' )->rawParams( $translation )->escaped();
case 'am_default' :
case 'am_actual' :
* @ingroup SpecialPage
*/
class SpecialBlock extends FormSpecialPage {
- /** The maximum number of edits a user can have and still be hidden
- * TODO: config setting? */
- const HIDEUSER_CONTRIBLIMIT = 1000;
-
/** @var User user to be blocked, as passed either by parameter (url?wpTarget=Foo)
* or as subpage (Special:Block/Foo) */
protected $target;
if ( $this->requestedHideUser ) {
$fields['Confirm']['type'] = 'check';
unset( $fields['Confirm']['default'] );
- $this->preErrors[] = 'ipb-confirmhideuser';
+ $this->preErrors[] = array( 'ipb-confirmhideuser', 'ipb-confirmaction' );
}
# Or if the user is trying to block themselves
if ( (string)$this->target === $this->getUser()->getName() ) {
$fields['Confirm']['type'] = 'check';
unset( $fields['Confirm']['default'] );
- $this->preErrors[] = 'ipb-blockingself';
+ $this->preErrors[] = array( 'ipb-blockingself', 'ipb-confirmaction' );
}
}
* @return Bool|String
*/
public static function processForm( array $data, IContextSource $context ) {
- global $wgBlockAllowsUTEdit;
+ global $wgBlockAllowsUTEdit, $wgHideUserContribLimit;
$performer = $context->getUser();
if ( $target === $performer->getName() &&
( $data['PreviousTarget'] !== $target || !$data['Confirm'] )
) {
- return array( 'ipb-blockingself' );
+ return array( 'ipb-blockingself', 'ipb-confirmaction' );
}
} elseif ( $type == Block::TYPE_RANGE ) {
$userId = 0;
} elseif ( !in_array( $data['Expiry'], array( 'infinite', 'infinity', 'indefinite' ) ) ) {
# Bad expiry.
return array( 'ipb_expiry_temp' );
- } elseif ( $user->getEditCount() > self::HIDEUSER_CONTRIBLIMIT ) {
+ } elseif ( $wgHideUserContribLimit !== false
+ && $user->getEditCount() > $wgHideUserContribLimit
+ ) {
# Typically, the user should have a handful of edits.
# Disallow hiding users with many edits for performance.
- return array( 'ipb_hide_invalid' );
+ return array( array( 'ipb_hide_invalid',
+ Message::numParam( $wgHideUserContribLimit ) ) );
} elseif ( !$data['Confirm'] ) {
- return array( 'ipb-confirmhideuser' );
+ return array( 'ipb-confirmhideuser', 'ipb-confirmaction' );
}
}
$block->isAutoblocking( $data['AutoBlock'] );
$block->mHideName = $data['HideUser'];
- if ( !wfRunHooks( 'BlockIp', array( &$block, &$performer ) ) ) {
- return array( 'hookaborted' );
+ $reason = array( 'hookaborted' );
+ if ( !wfRunHooks( 'BlockIp', array( &$block, &$performer, &$reason ) ) ) {
+ return $reason;
}
# Try to insert block. Is there a conflicting block?
return array( 'cant-see-hidden-user' );
}
- $currentBlock->delete();
- $status = $block->insert();
+ $currentBlock->isHardblock( $block->isHardblock() );
+ $currentBlock->prevents( 'createaccount', $block->prevents( 'createaccount' ) );
+ $currentBlock->mExpiry = $block->mExpiry;
+ $currentBlock->isAutoblocking( $block->isAutoblocking() );
+ $currentBlock->mHideName = $block->mHideName;
+ $currentBlock->prevents( 'sendemail', $block->prevents( 'sendemail' ) );
+ $currentBlock->prevents( 'editownusertalk', $block->prevents( 'editownusertalk' ) );
+ $currentBlock->mReason = $block->mReason;
+
+ $status = $currentBlock->update();
+
$logaction = 'reblock';
# Unset _deleted fields if requested
}
protected function getGroupName() {
- return 'other';
+ return 'wiki';
}
}
$throttleCount = LoginForm::incLoginThrottle( $user->getName() );
if ( $throttleCount === true ) {
$lang = $this->getLanguage();
- $this->error( array( 'login-throttled', $lang->formatDuration( $wgPasswordAttemptThrottle['seconds'] ) ) );
+ $this->error( array( 'changeemail-throttled', $lang->formatDuration( $wgPasswordAttemptThrottle['seconds'] ) ) );
return false;
}
*
* @ingroup SpecialPage
*/
-class SpecialChangePassword extends UnlistedSpecialPage {
+class SpecialChangePassword extends FormSpecialPage {
- protected $mUserName, $mOldpass, $mNewpass, $mRetype, $mDomain;
+ protected $mUserName, $mDomain;
public function __construct() {
parent::__construct( 'ChangePassword', 'editmyprivateinfo' );
+ $this->listed( false );
}
/**
* Main execution point
*/
function execute( $par ) {
- global $wgAuth;
-
- $this->setHeaders();
- $this->outputHeader();
$this->getOutput()->disallowUserJs();
- $request = $this->getRequest();
+ parent::execute( $par );
+ }
- if ( !$request->wasPosted() ) {
+ protected function checkExecutePermissions( User $user ) {
+ parent::checkExecutePermissions( $user );
+
+ if ( !$this->getRequest()->wasPosted() ) {
$this->requireLogin( 'resetpass-no-info' );
}
+ }
- $this->mUserName = trim( $request->getVal( 'wpName' ) );
- $this->mOldpass = $request->getVal( 'wpPassword' );
- $this->mNewpass = $request->getVal( 'wpNewPassword' );
- $this->mRetype = $request->getVal( 'wpRetype' );
- $this->mDomain = $request->getVal( 'wpDomain' );
+ protected function getFormFields() {
+ global $wgCookieExpiration;
$user = $this->getUser();
+ $request = $this->getRequest();
- if ( $request->wasPosted() && $request->getBool( 'wpCancel' ) ) {
- $titleObj = Title::newFromText( $request->getVal( 'returnto' ) );
- if ( !$titleObj instanceof Title ) {
- $titleObj = Title::newMainPage();
- }
- $query = $request->getVal( 'returntoquery' );
- $this->getOutput()->redirect( $titleObj->getFullURL( $query ) );
+ $oldpassMsg = $user->isLoggedIn() ? 'oldpassword' : 'resetpass-temp-password';
+
+ $fields = array(
+ 'Name' => array(
+ 'type' => 'info',
+ 'label-message' => 'username',
+ 'default' => $request->getVal( 'wpName', $user->getName() ),
+ ),
+ 'Password' => array(
+ 'type' => 'password',
+ 'label-message' => $oldpassMsg,
+ ),
+ 'NewPassword' => array(
+ 'type' => 'password',
+ 'label-message' => 'newpassword',
+ ),
+ 'Retype' => array(
+ 'type' => 'password',
+ 'label-message' => 'retypenew',
+ ),
+ );
- return;
+ $extraFields = array();
+ wfRunHooks( 'ChangePasswordForm', array( &$extraFields ) );
+ foreach ( $extraFields as $extra ) {
+ list( $name, $label, $type, $default ) = $extra;
+ $fields[$name] = array(
+ 'type' => $type,
+ 'name' => $name,
+ 'label-message' => $label,
+ 'default' => $default,
+ );
}
- $this->checkReadOnly();
- $this->checkPermissions();
-
- if ( $request->wasPosted() && $user->matchEditToken( $request->getVal( 'token' ) ) ) {
- try {
- $this->mDomain = $wgAuth->getDomain();
- if ( !$wgAuth->allowPasswordChange() ) {
- $this->error( $this->msg( 'resetpass_forbidden' )->text() );
-
- return;
- }
-
- $this->attemptReset( $this->mNewpass, $this->mRetype );
-
- if ( $user->isLoggedIn() ) {
- $this->getOutput()->wrapWikiMsg(
- "<div class=\"successbox\">\n$1\n</div>",
- 'changepassword-success'
- );
- $this->getOutput()->returnToMain();
- } else {
- LoginForm::setLoginToken();
- $token = LoginForm::getLoginToken();
- $data = array(
- 'action' => 'submitlogin',
- 'wpName' => $this->mUserName,
- 'wpDomain' => $this->mDomain,
- 'wpLoginToken' => $token,
- 'wpPassword' => $request->getVal( 'wpNewPassword' ),
- ) + $request->getValues( 'wpRemember', 'returnto', 'returntoquery' );
- $login = new LoginForm( new DerivativeRequest( $request, $data, true ) );
- $login->setContext( $this->getContext() );
- $login->execute( null );
- }
-
- return;
- } catch ( PasswordError $e ) {
- $this->error( $e->getMessage() );
- }
+ if ( !$user->isLoggedIn() ) {
+ $fields['Remember'] = array(
+ 'type' => 'check',
+ 'label' => $this->msg( 'remembermypassword' )
+ ->numParams( ceil( $wgCookieExpiration / ( 3600 * 24 ) ) )
+ ->text(),
+ 'default' => $request->getVal( 'wpRemember' ),
+ );
}
- $this->showForm();
+
+ return $fields;
}
- /**
- * @param $msg string
- */
- function error( $msg ) {
- $this->getOutput()->addHTML( Xml::element( 'p', array( 'class' => 'error' ), $msg ) );
+ protected function alterForm( HTMLForm $form ) {
+ $form->setId( 'mw-resetpass-form' );
+ $form->setTableId( 'mw-resetpass-table' );
+ $form->setWrapperLegendMsg( 'resetpass_header' );
+ $form->setSubmitTextMsg(
+ $this->getUser()->isLoggedIn()
+ ? 'resetpass-submit-loggedin'
+ : 'resetpass_submit'
+ );
+ $form->addButton( 'wpCancel', $this->msg( 'resetpass-submit-cancel' )->text() );
+ $form->setHeaderText( $this->msg( 'resetpass_text' )->parseAsBlock() );
+ $form->addHiddenFields(
+ $this->getRequest()->getValues( 'wpName', 'wpDomain', 'returnto', 'returntoquery' ) );
}
- function showForm() {
- global $wgCookieExpiration;
+ public function onSubmit( array $data ) {
+ global $wgAuth;
- $user = $this->getUser();
- if ( !$this->mUserName ) {
- $this->mUserName = $user->getName();
- }
- $rememberMe = '';
- if ( !$user->isLoggedIn() ) {
- $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' ) ) .
- '</td>' .
- '</tr>';
- $submitMsg = 'resetpass_submit';
- $oldpassMsg = 'resetpass-temp-password';
- } else {
- $oldpassMsg = 'oldpassword';
- $submitMsg = 'resetpass-submit-loggedin';
- }
- $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 ),
- );
- $prettyFields = array_merge( $prettyFields, $extraFields );
- $hiddenFields = array(
- 'token' => $user->getEditToken(),
- 'wpName' => $this->mUserName,
- 'wpDomain' => $this->mDomain,
- ) + $this->getRequest()->getValues( 'returnto', 'returntoquery' );
- $hiddenFieldsStr = '';
- foreach ( $hiddenFields as $fieldname => $fieldvalue ) {
- $hiddenFieldsStr .= Html::hidden( $fieldname, $fieldvalue ) . "\n";
+ $request = $this->getRequest();
+
+ if ( $request->getCheck( 'wpLoginToken' ) ) {
+ // This comes from Special:Userlogin when logging in with a temporary password
+ return false;
}
- $this->getOutput()->addHTML(
- Xml::fieldset( $this->msg( 'resetpass_header' )->text() ) .
- Xml::openElement( 'form',
- array(
- 'method' => 'post',
- 'action' => $this->getPageTitle()->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' ) ) .
- "</td>\n" .
- "</tr>\n" .
- Xml::closeElement( 'table' ) .
- Xml::closeElement( 'form' ) .
- Xml::closeElement( 'fieldset' ) . "\n"
- );
- }
- /**
- * @param $fields array
- * @return string
- */
- function pretty( $fields ) {
- $out = '';
- foreach ( $fields as $list ) {
- list( $name, $label, $type, $value ) = $list;
- if ( $type == 'text' ) {
- $field = htmlspecialchars( $value );
- } else {
- $attribs = array( 'id' => $name );
- if ( $name == 'wpNewPassword' || $name == 'wpRetype' ) {
- $attribs = array_merge( $attribs,
- User::passwordChangeInputAttribs() );
- }
- if ( $name == 'wpPassword' ) {
- $attribs[] = 'autofocus';
- }
- $field = Html::input( $name, $value, $type, $attribs );
+ if ( $request->getCheck( 'wpCancel' ) ) {
+ $titleObj = Title::newFromText( $request->getVal( 'returnto' ) );
+ if ( !$titleObj instanceof Title ) {
+ $titleObj = Title::newMainPage();
}
- $out .= "<tr>\n";
- $out .= "\t<td class='mw-label'>";
+ $query = $request->getVal( 'returntoquery' );
+ $this->getOutput()->redirect( $titleObj->getFullURL( $query ) );
+ return true;
+ }
- if ( $type != 'text' ) {
- $out .= Xml::label( $this->msg( $label )->text(), $name );
- } else {
- $out .= $this->msg( $label )->escaped();
+ try {
+ $this->mUserName = $request->getVal( 'wpName', $this->getUser()->getName() );
+ $this->mDomain = $wgAuth->getDomain();
+
+ if ( !$wgAuth->allowPasswordChange() ) {
+ throw new ErrorPageError( 'changepassword', 'resetpass_forbidden' );
}
- $out .= "</td>\n";
- $out .= "\t<td class='mw-input'>";
- $out .= $field;
- $out .= "</td>\n";
- $out .= "</tr>";
+ $this->attemptReset( $data['Password'], $data['NewPassword'], $data['Retype'] );
+
+ return true;
+ } catch ( PasswordError $e ) {
+ return $e->getMessage();
}
+ }
- return $out;
+ public function onSuccess() {
+ if ( $this->getUser()->isLoggedIn() ) {
+ $this->getOutput()->wrapWikiMsg(
+ "<div class=\"successbox\">\n$1\n</div>",
+ 'changepassword-success'
+ );
+ $this->getOutput()->returnToMain();
+ } else {
+ $request = $this->getRequest();
+ LoginForm::setLoginToken();
+ $token = LoginForm::getLoginToken();
+ $data = array(
+ 'action' => 'submitlogin',
+ 'wpName' => $this->mUserName,
+ 'wpDomain' => $this->mDomain,
+ 'wpLoginToken' => $token,
+ 'wpPassword' => $request->getVal( 'wpNewPassword' ),
+ ) + $request->getValues( 'wpRemember', 'returnto', 'returntoquery' );
+ $login = new LoginForm( new DerivativeRequest( $request, $data, true ) );
+ $login->setContext( $this->getContext() );
+ $login->execute( null );
+ }
}
/**
* @throws PasswordError when cannot set the new password because requirements not met.
*/
- protected function attemptReset( $newpass, $retype ) {
+ protected function attemptReset( $oldpass, $newpass, $retype ) {
global $wgPasswordAttemptThrottle;
$isSelf = ( $this->mUserName === $this->getUser()->getName() );
$throttleCount = LoginForm::incLoginThrottle( $this->mUserName );
if ( $throttleCount === true ) {
$lang = $this->getLanguage();
- throw new PasswordError( $this->msg( 'login-throttled' )
+ throw new PasswordError( $this->msg( 'changepassword-throttled' )
->params( $lang->formatDuration( $wgPasswordAttemptThrottle['seconds'] ) )
->text()
);
}
$abortMsg = 'resetpass-abort-generic';
- if ( !wfRunHooks( 'AbortChangePassword', array( $user, $this->mOldpass, $newpass, &$abortMsg ) ) ) {
+ if ( !wfRunHooks( 'AbortChangePassword', array( $user, $oldpass, $newpass, &$abortMsg ) ) ) {
wfRunHooks( 'PrefsPasswordAudit', array( $user, $newpass, 'abortreset' ) );
throw new PasswordError( $this->msg( $abortMsg )->text() );
}
- if ( !$user->checkTemporaryPassword( $this->mOldpass ) && !$user->checkPassword( $this->mOldpass ) ) {
+ if ( !$user->checkTemporaryPassword( $oldpass ) && !$user->checkPassword( $oldpass ) ) {
wfRunHooks( 'PrefsPasswordAudit', array( $user, $newpass, 'wrongpassword' ) );
throw new PasswordError( $this->msg( 'resetpass-wrong-oldpass' )->text() );
}
}
try {
- $user->setPassword( $this->mNewpass );
+ $user->setPassword( $newpass );
wfRunHooks( 'PrefsPasswordAudit', array( $user, $newpass, 'success' ) );
- $this->mNewpass = $this->mOldpass = $this->mRetype = '';
} catch ( PasswordError $e ) {
wfRunHooks( 'PrefsPasswordAudit', array( $user, $newpass, 'error' ) );
throw new PasswordError( $e->getMessage() );
$user->saveSettings();
}
+ public function requiresUnblock() {
+ return false;
+ }
+
protected function getGroupName() {
return 'users';
}
* @ingroup SpecialPage
*/
-class SpecialContributions extends SpecialPage {
+class SpecialContributions extends IncludableSpecialPage {
protected $opts;
public function __construct() {
$this->opts['deletedOnly'] = $request->getBool( 'deletedOnly' );
if ( !strlen( $target ) ) {
- $out->addHTML( $this->getForm() );
-
+ if ( !$this->including() ) {
+ $out->addHTML( $this->getForm() );
+ }
return;
}
}
$feedType = $request->getVal( 'feed' );
+
+ $feedParams = array(
+ 'action' => 'feedcontributions',
+ 'user' => $target,
+ );
+ if ( $this->opts['topOnly'] ) {
+ $feedParams['toponly'] = true;
+ }
+ if ( $this->opts['deletedOnly'] ) {
+ $feedParams['deletedonly'] = true;
+ }
+ if ( $this->opts['tagfilter'] !== '' ) {
+ $feedParams['tagfilter'] = $this->opts['tagfilter'];
+ }
+ if ( $this->opts['namespace'] !== '' ) {
+ $feedParams['namespace'] = $this->opts['namespace'];
+ }
+ // Don't use year and month for the feed URL, but pass them on if
+ // we redirect to API (if $feedType is specified)
+ if ( $feedType && $this->opts['year'] !== null ) {
+ $feedParams['year'] = $this->opts['year'];
+ }
+ if ( $feedType && $this->opts['month'] !== null ) {
+ $feedParams['month'] = $this->opts['month'];
+ }
+
if ( $feedType ) {
// Maintain some level of backwards compatability
// If people request feeds using the old parameters, redirect to API
- $apiParams = array(
- 'action' => 'feedcontributions',
- 'feedformat' => $feedType,
- 'user' => $target,
- );
- if ( $this->opts['topOnly'] ) {
- $apiParams['toponly'] = true;
- }
- if ( $this->opts['deletedOnly'] ) {
- $apiParams['deletedonly'] = true;
- }
- if ( $this->opts['tagfilter'] !== '' ) {
- $apiParams['tagfilter'] = $this->opts['tagfilter'];
- }
- if ( $this->opts['namespace'] !== '' ) {
- $apiParams['namespace'] = $this->opts['namespace'];
- }
- if ( $this->opts['year'] !== null ) {
- $apiParams['year'] = $this->opts['year'];
- }
- if ( $this->opts['month'] !== null ) {
- $apiParams['month'] = $this->opts['month'];
- }
-
- $url = wfAppendQuery( wfScript( 'api' ), $apiParams );
+ $feedParams['feedformat'] = $feedType;
+ $url = wfAppendQuery( wfScript( 'api' ), $feedParams );
$out->redirect( $url, '301' );
}
// Add RSS/atom links
- $this->addFeedLinks( array( 'action' => 'feedcontributions', 'user' => $target ) );
+ $this->addFeedLinks( $feedParams );
if ( wfRunHooks( 'SpecialContributionsBeforeMainOutput', array( $id, $userObj, $this ) ) ) {
- $out->addHTML( $this->getForm() );
-
+ if ( !$this->including() ) {
+ $out->addHTML( $this->getForm() );
+ }
$pager = new ContribsPager( $this->getContext(), array(
'target' => $target,
'contribs' => $this->opts['contribs'],
}
if ( $message ) {
- if ( !$this->msg( $message, $target )->isDisabled() ) {
- $out->wrapWikiMsg(
- "<div class='mw-contributions-footer'>\n$1\n</div>",
- array( $message, $target ) );
+ if ( !$this->including() ) {
+ if ( !$this->msg( $message, $target )->isDisabled() ) {
+ $out->wrapWikiMsg(
+ "<div class='mw-contributions-footer'>\n$1\n</div>",
+ array( $message, $target ) );
+ }
}
}
}
public $mDb;
public $preventClickjacking = false;
+ /** @var DatabaseBase */
+ public $mDbSecondary;
+
/**
* @var array
*/
$month = isset( $options['month'] ) ? $options['month'] : false;
$this->getDateCond( $year, $month );
+ // Most of this code will use the 'contributions' group DB, which can map to slaves
+ // with extra user based indexes or partioning by user. The additional metadata
+ // queries should use a regular slave since the lookup pattern is not all by user.
+ $this->mDbSecondary = wfGetDB( DB_SLAVE ); // any random slave
$this->mDb = wfGetDB( DB_SLAVE, 'contributions' );
}
$batch->add( $row->page_namespace, $row->page_title );
}
}
- $this->mParentLens = Revision::getParentLengths( $this->getDatabase(), $revIds );
+ $this->mParentLens = Revision::getParentLengths( $this->mDbSecondary, $revIds );
$batch->execute();
$this->mResult->seek( 0 );
}
--- /dev/null
+<?php
+/**
+ * Redirect from Special:Diff/### to index.php?diff=### and
+ * from Special:Diff/###/### to index.php?oldid=###&diff=###.
+ *
+ * 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 SpecialPage
+ */
+
+/**
+ * Redirect from Special:Diff/### to index.php?diff=### and
+ * from Special:Diff/###/### to index.php?oldid=###&diff=###.
+ *
+ * All of the following are valid usages:
+ * - [[Special:Diff/12345]] (diff of a revision with the previous one)
+ * - [[Special:Diff/12345/prev]] (diff of a revision with the previous one as well)
+ * - [[Special:Diff/12345/next]] (diff of a revision with the next one)
+ * - [[Special:Diff/12345/cur]] (diff of a revision with the latest one of that page)
+ * - [[Special:Diff/12345/98765]] (diff between arbitrary two revisions)
+ *
+ * @ingroup SpecialPage
+ * @since 1.23
+ */
+class SpecialDiff extends RedirectSpecialPage {
+ function __construct() {
+ parent::__construct( 'Diff' );
+ $this->mAllowedRedirectParams = array();
+ }
+
+ function getRedirect( $subpage ) {
+ $parts = explode( '/', $subpage );
+
+ // Try to parse the values given, generating somewhat pretty URLs if possible
+ if ( count( $parts ) === 1 ) {
+ $this->mAddedRedirectParams['diff'] = $parts[0];
+ } elseif ( count( $parts ) === 2 ) {
+ $this->mAddedRedirectParams['oldid'] = $parts[0];
+ $this->mAddedRedirectParams['diff'] = $parts[1];
+ } else {
+ // Wrong number of parameters, bail out
+ throw new ErrorPageError( 'nopagetitle', 'nopagetext' );
+ }
+
+ return true;
+ }
+}
// This is a bit ugly, but will serve to differentiate
// wiki-borne mails from direct mails and protects against
// SPF and bounce problems with some mailers (see below).
- global $wgPasswordSender, $wgPasswordSenderName;
+ global $wgPasswordSender;
- $mailFrom = new MailAddress( $wgPasswordSender, $wgPasswordSenderName );
+ $mailFrom = new MailAddress( $wgPasswordSender,
+ wfMessage( 'emailsender' )->inContentLanguage()->text() );
$replyTo = $from;
} else {
// Put the sending user's e-mail address in the From: header.
foreach ( explode( "\n", $page ) as $pageName ) {
$pageName = trim( $pageName );
$title = Title::newFromText( $pageName );
- if ( $title && $title->getInterwiki() == '' && $title->getText() !== '' ) {
+ if ( $title && !$title->isExternal() && $title->getText() !== '' ) {
// Only record each page once!
$pageSet[$title->getPrefixedText()] = true;
}
if ( $this->including() ) {
$userName = $par;
$search = '';
+ $showAll = false;
} else {
$userName = $this->getRequest()->getText( 'user', $par );
$search = $this->getRequest()->getText( 'ilsearch', '' );
UserCache::singleton()->doQuery( $userIds, array( 'userpage' ), __METHOD__ );
}
+ /**
+ * @param string $field
+ * @param string $value
+ * @return Message|string|int The return type depends on the value of $field:
+ * - thumb: string
+ * - img_timestamp: string
+ * - img_name: string
+ * - img_user_text: string
+ * - img_size: string
+ * - img_description: string
+ * - count: int
+ * - top: Message
+ * @throws MWException
+ */
function formatValue( $field, $value ) {
switch ( $field ) {
case 'thumb':
case 'top':
// Messages: listfiles-latestversion-yes, listfiles-latestversion-no
return $this->msg( 'listfiles-latestversion-' . $value );
+ default:
+ throw new MWException( "Unknown field '$field'" );
}
}
}
function getQueryInfo() {
- return array(
- 'tables' => array(
- 'page', 'pagelinks',
- 'templatelinks'
+ $tables = array( 'page', 'pagelinks', 'templatelinks' );
+ $conds = array(
+ 'pl_namespace IS NULL',
+ 'page_namespace' => MWNamespace::getContentNamespaces(),
+ 'page_is_redirect' => 0,
+ 'tl_namespace IS NULL'
+ );
+ $joinConds = array(
+ 'pagelinks' => array(
+ 'LEFT JOIN', array(
+ 'pl_namespace = page_namespace',
+ 'pl_title = page_title'
+ )
),
+ 'templatelinks' => array(
+ 'LEFT JOIN', array(
+ 'tl_namespace = page_namespace',
+ 'tl_title = page_title'
+ )
+ )
+ );
+
+ // Allow extensions to modify the query
+ wfRunHooks( 'LonelyPagesQuery', array( &$tables, &$conds, &$joinConds ) );
+
+ return array(
+ 'tables' => $tables,
'fields' => array(
'namespace' => 'page_namespace',
'title' => 'page_title',
'value' => 'page_title'
),
- 'conds' => array(
- 'pl_namespace IS NULL',
- 'page_namespace' => MWNamespace::getContentNamespaces(),
- 'page_is_redirect' => 0,
- 'tl_namespace IS NULL'
- ),
- 'join_conds' => array(
- 'pagelinks' => array(
- 'LEFT JOIN', array(
- 'pl_namespace = page_namespace',
- 'pl_title = page_title'
- )
- ),
- 'templatelinks' => array(
- 'LEFT JOIN', array(
- 'tl_namespace = page_namespace',
- 'tl_title = page_title'
- )
- )
- )
+ 'conds' => $conds,
+ 'join_conds' => $joinConds
);
}
'fields' => array( 'title' => 'cat_title',
'namespace' => NS_CATEGORY,
'value' => 'cat_pages' ),
+ 'conds' => array( 'cat_pages > 0' ),
);
}
$nt = $this->newTitle;
# don't allow moving to pages with # in
- if ( !$nt || $nt->getFragment() != '' ) {
+ if ( !$nt || $nt->hasFragment() ) {
$this->showForm( array( array( 'badtitletext' ) ) );
return;
'from' => $s->page_title,
'prefix' => $prefix,
'hideredirects' => $this->hideRedirects,
+ 'stripprefix' => $this->stripPrefix,
);
if ( $namespace || $prefix == '' ) {
$ns = $request->getIntOrNull( 'namespace' );
$indefOnly = $request->getBool( 'indefonly' ) ? 1 : 0;
$cascadeOnly = $request->getBool( 'cascadeonly' ) ? 1 : 0;
+ $noRedirect = $request->getBool( 'noredirect' ) ? 1 : 0;
$pager = new ProtectedPagesPager(
$this,
$sizetype,
$size,
$indefOnly,
- $cascadeOnly
+ $cascadeOnly,
+ $noRedirect
);
$this->getOutput()->addHTML( $this->showOptions(
$sizetype,
$size,
$indefOnly,
- $cascadeOnly
+ $cascadeOnly,
+ $noRedirect
) );
if ( $pager->getNumRows() ) {
}
/**
- * @param $namespace Integer
- * @param string $type restriction type
- * @param string $level restriction level
+ * @param int $namespace
+ * @param string $type Restriction type
+ * @param string $level Restriction level
* @param string $sizetype "min" or "max"
- * @param $size Integer
- * @param $indefOnly Boolean: only indefinie protection
- * @param $cascadeOnly Boolean: only cascading protection
+ * @param int $size
+ * @param bool $indefOnly Only indefinite protection
+ * @param bool $cascadeOnly Only cascading protection
+ * @param bool $noRedirect Don't show redirects
* @return String: input form
*/
protected function showOptions( $namespace, $type = 'edit', $level, $sizetype,
- $size, $indefOnly, $cascadeOnly
+ $size, $indefOnly, $cascadeOnly, $noRedirect
) {
global $wgScript;
"<br /><span style='white-space: nowrap'>" .
$this->getExpiryCheck( $indefOnly ) . " \n" .
$this->getCascadeCheck( $cascadeOnly ) . " \n" .
+ $this->getRedirectCheck( $noRedirect ) . " \n" .
"</span><br /><span style='white-space: nowrap'>" .
$this->getSizeLimit( $sizetype, $size ) . " \n" .
"</span>" .
) . "\n";
}
+ /**
+ * @param bool $noRedirect
+ * @return string Formatted HTML
+ */
+ protected function getRedirectCheck( $noRedirect ) {
+ return Xml::checkLabel(
+ $this->msg( 'protectedpages-noredirect' )->text(),
+ 'noredirect',
+ 'noredirect',
+ $noRedirect
+ ) . "\n";
+ }
+
/**
* @param string $sizetype "min" or "max"
* @param mixed $size
*/
class ProtectedPagesPager extends AlphabeticPager {
public $mForm, $mConds;
- private $type, $level, $namespace, $sizetype, $size, $indefonly;
+ private $type, $level, $namespace, $sizetype, $size, $indefonly, $cascadeonly, $noredirect;
function __construct( $form, $conds = array(), $type, $level, $namespace,
- $sizetype = '', $size = 0, $indefonly = false, $cascadeonly = false
+ $sizetype = '', $size = 0, $indefonly = false, $cascadeonly = false, $noredirect = false
) {
$this->mForm = $form;
$this->mConds = $conds;
$this->size = intval( $size );
$this->indefonly = (bool)$indefonly;
$this->cascadeonly = (bool)$cascadeonly;
+ $this->noredirect = (bool)$noredirect;
parent::__construct( $form->getContext() );
}
function getQueryInfo() {
$conds = $this->mConds;
- $conds[] = '(pr_expiry>' . $this->mDb->addQuotes( $this->mDb->timestamp() ) .
- 'OR pr_expiry IS NULL)';
+ $conds[] = 'pr_expiry > ' . $this->mDb->addQuotes( $this->mDb->timestamp() ) .
+ 'OR pr_expiry IS NULL';
$conds[] = 'page_id=pr_page';
$conds[] = 'pr_type=' . $this->mDb->addQuotes( $this->type );
if ( $this->cascadeonly ) {
$conds[] = 'pr_cascade = 1';
}
+ if ( $this->noredirect ) {
+ $conds[] = 'page_is_redirect = 0';
+ }
if ( $this->level ) {
$conds[] = 'pr_level=' . $this->mDb->addQuotes( $this->level );
*
* @ingroup SpecialPage
*/
-class SpecialRecentChanges extends IncludableSpecialPage {
- var $rcOptions, $rcSubpage;
- protected $customFilters;
+class SpecialRecentChanges extends ChangesListSpecialPage {
+
+ public function __construct( $name = 'Recentchanges', $restriction = '' ) {
+ parent::__construct( $name, $restriction );
+ }
/**
- * The feed format to output as (either 'rss' or 'atom'), or null if no
- * feed output was requested
+ * Main execution point
*
- * @var string $feedFormat
+ * @param string $subpage
*/
- protected $feedFormat;
+ public function execute( $subpage ) {
+ // 10 seconds server-side caching max
+ $this->getOutput()->setSquidMaxage( 10 );
+ // Check if the client has a cached version
+ $lastmod = $this->checkLastModified( $this->feedFormat );
+ if ( $lastmod === false ) {
+ return;
+ }
- public function __construct( $name = 'Recentchanges' ) {
- parent::__construct( $name );
+ parent::execute( $subpage );
}
/**
* @return FormOptions
*/
public function getDefaultOptions() {
- $opts = new FormOptions();
+ $opts = parent::getDefaultOptions();
$user = $this->getUser();
$opts->add( 'days', $user->getIntOption( 'rcdays' ) );
$opts->add( 'hidepatrolled', $user->getBoolOption( 'hidepatrolled' ) );
$opts->add( 'hidemyself', false );
- $opts->add( 'namespace', '', FormOptions::INTNULL );
- $opts->add( 'invert', false );
- $opts->add( 'associated', false );
-
$opts->add( 'categories', '' );
$opts->add( 'categories_any', false );
$opts->add( 'tagfilter', '' );
return $opts;
}
- /**
- * Create a FormOptions object with options as specified by the user
- *
- * @param array $parameters
- * @return FormOptions
- */
- public function setup( $parameters ) {
- global $wgFeedLimit;
-
- $opts = $this->getDefaultOptions();
-
- foreach ( $this->getCustomFilters() as $key => $params ) {
- $opts->add( $key, $params['default'] );
- }
-
- $opts->fetchValuesFromRequest( $this->getRequest() );
-
- // Give precedence to subpage syntax
- if ( $parameters !== null ) {
- $this->parseParameters( $parameters, $opts );
- }
-
- $opts->validateIntBounds( 'limit', 0, $this->feedFormat ? $wgFeedLimit : 5000 );
-
- return $opts;
- }
-
/**
* Get custom show/hide filters
*
}
/**
- * Get the current FormOptions for this request
- */
- public function getOptions() {
- if ( $this->rcOptions === null ) {
- $this->rcOptions = $this->setup( $this->rcSubpage );
- }
-
- return $this->rcOptions;
- }
-
- /**
- * Main execution point
- *
- * @param string $subpage
- */
- public function execute( $subpage ) {
- $this->rcSubpage = $subpage;
- $this->feedFormat = $this->including() ? null : $this->getRequest()->getVal( 'feed' );
-
- # 10 seconds server-side caching max
- $this->getOutput()->setSquidMaxage( 10 );
- # Check if the client has a cached version
- $lastmod = $this->checkLastModified( $this->feedFormat );
- if ( $lastmod === false ) {
- return;
- }
-
- $opts = $this->getOptions();
- $this->setHeaders();
- $this->outputHeader();
- $this->addModules();
-
- // Fetch results, prepare a batch link existence check query
- $conds = $this->buildMainQueryConds( $opts );
- $rows = $this->doMainQuery( $conds, $opts );
- if ( $rows === false ) {
- if ( !$this->including() ) {
- $this->doHeader( $opts );
- }
-
- return;
- }
-
- if ( !$this->feedFormat ) {
- $batch = new LinkBatch;
- foreach ( $rows as $row ) {
- $batch->add( NS_USER, $row->rc_user_text );
- $batch->add( NS_USER_TALK, $row->rc_user_text );
- $batch->add( $row->rc_namespace, $row->rc_title );
- }
- $batch->execute();
- }
- if ( $this->feedFormat ) {
- list( $changesFeed, $formatter ) = $this->getFeedObject( $this->feedFormat );
- /** @var ChangesFeed $changesFeed */
- $changesFeed->execute( $formatter, $rows, $lastmod, $opts );
- } else {
- $this->webOutput( $rows, $opts );
- }
-
- $rows->free();
- }
-
- /**
- * Return an array with a ChangesFeed object and ChannelFeed object
- *
- * @param string $feedFormat Feed's format (either 'rss' or 'atom')
- * @return array
- */
- public function getFeedObject( $feedFormat ) {
- $changesFeed = new ChangesFeed( $feedFormat, 'rcfeed' );
- $formatter = $changesFeed->getFeedObject(
- $this->msg( 'recentchanges' )->inContentLanguage()->text(),
- $this->msg( 'recentchanges-feed-description' )->inContentLanguage()->text(),
- $this->getPageTitle()->getFullURL()
- );
-
- return array( $changesFeed, $formatter );
- }
-
- /**
- * Process $par and put options found if $opts
- * Mainly used when including the page
+ * Process $par and put options found in $opts. Used when including the page.
*
* @param string $par
* @param FormOptions $opts
}
}
- /**
- * Get last modified date, for client caching
- * Don't use this if we are using the patrol feature, patrol changes don't
- * update the timestamp
- *
- * @param string $feedFormat
- * @return string|bool
- */
- public function checkLastModified( $feedFormat ) {
- $dbr = wfGetDB( DB_SLAVE );
- $lastmod = $dbr->selectField( 'recentchanges', 'MAX(rc_timestamp)', false, __METHOD__ );
- if ( $feedFormat || !$this->getUser()->useRCPatrol() ) {
- if ( $lastmod && $this->getOutput()->checkLastModified( $lastmod ) ) {
- # Client cache fresh and headers sent, nothing more to do.
- return false;
- }
- }
-
- return $lastmod;
+ public function validateOptions( FormOptions $opts ) {
+ global $wgFeedLimit;
+ $opts->validateIntBounds( 'limit', 0, $this->feedFormat ? $wgFeedLimit : 5000 );
+ parent::validateOptions( $opts );
}
/**
* @return array
*/
public function buildMainQueryConds( FormOptions $opts ) {
- $dbr = wfGetDB( DB_SLAVE );
- $conds = array();
-
- # It makes no sense to hide both anons and logged-in users
- # Where this occurs, force anons to be shown
- $forcebot = false;
- if ( $opts['hideanons'] && $opts['hideliu'] ) {
- # Check if the user wants to show bots only
- if ( $opts['hidebots'] ) {
- $opts['hideanons'] = false;
- } else {
- $forcebot = true;
- $opts['hidebots'] = false;
- }
- }
+ $dbr = $this->getDB();
+ $conds = parent::buildMainQueryConds( $opts );
// Calculate cutoff
$cutoff_unixtime = time() - ( $opts['days'] * 86400 );
$conds[] = 'rc_timestamp >= ' . $dbr->addQuotes( $cutoff );
- $hidePatrol = $this->getUser()->useRCPatrol() && $opts['hidepatrolled'];
- $hideLoggedInUsers = $opts['hideliu'] && !$forcebot;
- $hideAnonymousUsers = $opts['hideanons'] && !$forcebot;
-
- if ( $opts['hideminor'] ) {
- $conds['rc_minor'] = 0;
- }
- if ( $opts['hidebots'] ) {
- $conds['rc_bot'] = 0;
- }
- if ( $hidePatrol ) {
- $conds['rc_patrolled'] = 0;
- }
- if ( $forcebot ) {
- $conds['rc_bot'] = 1;
- }
- if ( $hideLoggedInUsers ) {
- $conds[] = 'rc_user = 0';
- }
- if ( $hideAnonymousUsers ) {
- $conds[] = 'rc_user != 0';
- }
-
- if ( $opts['hidemyself'] ) {
- if ( $this->getUser()->getId() ) {
- $conds[] = 'rc_user != ' . $dbr->addQuotes( $this->getUser()->getId() );
- } else {
- $conds[] = 'rc_user_text != ' . $dbr->addQuotes( $this->getUser()->getName() );
- }
- }
-
- # Namespace filtering
- if ( $opts['namespace'] !== '' ) {
- $selectedNS = $dbr->addQuotes( $opts['namespace'] );
- $operator = $opts['invert'] ? '!=' : '=';
- $boolean = $opts['invert'] ? 'AND' : 'OR';
-
- # namespace association (bug 2429)
- if ( !$opts['associated'] ) {
- $condition = "rc_namespace $operator $selectedNS";
- } else {
- # Also add the associated namespace
- $associatedNS = $dbr->addQuotes(
- MWNamespace::getAssociated( $opts['namespace'] )
- );
- $condition = "(rc_namespace $operator $selectedNS "
- . $boolean
- . " rc_namespace $operator $associatedNS)";
- }
-
- $conds[] = $condition;
- }
-
return $conds;
}
* @return bool|ResultWrapper Result or false (for Recentchangeslinked only)
*/
public function doMainQuery( $conds, $opts ) {
- $tables = array( 'recentchanges' );
- $join_conds = array();
- $query_options = array();
+ global $wgAllowCategorizedRecentChanges;
- $uid = $this->getUser()->getId();
- $dbr = wfGetDB( DB_SLAVE );
- $limit = $opts['limit'];
- $namespace = $opts['namespace'];
- $invert = $opts['invert'];
- $associated = $opts['associated'];
+ $dbr = $this->getDB();
+ $user = $this->getUser();
+ $tables = array( 'recentchanges' );
$fields = RecentChange::selectFields();
+ $query_options = array();
+ $join_conds = array();
+
// JOIN on watchlist for users
- if ( $uid && $this->getUser()->isAllowed( 'viewmywatchlist' ) ) {
+ if ( $user->getId() && $user->isAllowed( 'viewmywatchlist' ) ) {
$tables[] = 'watchlist';
$fields[] = 'wl_user';
$fields[] = 'wl_notificationtimestamp';
$join_conds['watchlist'] = array( 'LEFT JOIN', array(
- 'wl_user' => $uid,
+ 'wl_user' => $user->getId(),
'wl_title=rc_title',
'wl_namespace=rc_namespace'
) );
}
- if ( $this->getUser()->isAllowed( 'rollback' ) ) {
+
+ if ( $user->isAllowed( 'rollback' ) ) {
$tables[] = 'page';
$fields[] = 'page_latest';
$join_conds['page'] = array( 'LEFT JOIN', 'rc_cur_id=page_id' );
}
- // Tag stuff.
+
ChangeTags::modifyDisplayQuery(
$tables,
$fields,
// rc_new is not an ENUM, but adding a redundant rc_new IN (0,1) gives mysql enough
// knowledge to use an index merge if it wants (it may use some other index though).
- return $dbr->select(
+ $rows = $dbr->select(
$tables,
$fields,
$conds + array( 'rc_new' => array( 0, 1 ) ),
__METHOD__,
- array( 'ORDER BY' => 'rc_timestamp DESC', 'LIMIT' => $limit ) + $query_options,
+ array( 'ORDER BY' => 'rc_timestamp DESC', 'LIMIT' => $opts['limit'] ) + $query_options,
$join_conds
);
+
+ // Build the final data
+ if ( $wgAllowCategorizedRecentChanges ) {
+ $this->filterByCategories( $rows, $opts );
+ }
+
+ return $rows;
}
/**
- * Send output to the OutputPage object, only called if not used feeds
+ * Output feed links.
+ */
+ public function outputFeedLinks() {
+ $feedQuery = $this->getFeedQuery();
+ if ( $feedQuery !== '' ) {
+ $this->getOutput()->setFeedAppendQuery( $feedQuery );
+ } else {
+ $this->getOutput()->setFeedAppendQuery( false );
+ }
+ }
+
+ /**
+ * Build and output the actual changes list.
*
* @param array $rows Database rows
* @param FormOptions $opts
*/
- public function webOutput( $rows, $opts ) {
- global $wgRCShowWatchingUsers, $wgShowUpdatedMarker, $wgAllowCategorizedRecentChanges;
-
- // Build the final data
-
- if ( $wgAllowCategorizedRecentChanges ) {
- $this->filterByCategories( $rows, $opts );
- }
+ public function outputChangesList( $rows, $opts ) {
+ global $wgRCShowWatchingUsers, $wgShowUpdatedMarker;
$limit = $opts['limit'];
$showWatcherCount = $wgRCShowWatchingUsers && $this->getUser()->getOption( 'shownumberswatching' );
$watcherCache = array();
- $dbr = wfGetDB( DB_SLAVE );
+ $dbr = $this->getDB();
$counter = 1;
$list = ChangesList::newFromContext( $this->getContext() );
}
$rclistOutput .= $list->endRecentChangesList();
- // Print things out
-
- if ( !$this->including() ) {
- // Output options box
- $this->doHeader( $opts );
- }
-
- // And now for the content
- $feedQuery = $this->getFeedQuery();
- if ( $feedQuery !== '' ) {
- $this->getOutput()->setFeedAppendQuery( $feedQuery );
- } else {
- $this->getOutput()->setFeedAppendQuery( false );
- }
-
if ( $rows->numRows() === 0 ) {
$this->getOutput()->addHtml(
'<div class="mw-changeslist-empty">' . $this->msg( 'recentchanges-noresult' )->parse() . '</div>'
}
}
- /**
- * Get the query string to append to feed link URLs.
- *
- * @return string
- */
- public function getFeedQuery() {
- global $wgFeedLimit;
-
- $this->getOptions()->validateIntBounds( 'limit', 0, $wgFeedLimit );
- $options = $this->getOptions()->getChangedValues();
-
- // wfArrayToCgi() omits options set to null or false
- foreach ( $options as &$value ) {
- if ( $value === false ) {
- $value = '0';
- }
- }
- unset( $value );
-
- return wfArrayToCgi( $options );
- }
-
/**
* Return the text to be displayed above the changes
*
$this->setBottomText( $opts );
}
+ /**
+ * Send the text to be displayed above the options
+ *
+ * @param FormOptions $opts Unused
+ */
+ function setTopText( FormOptions $opts ) {
+ global $wgContLang;
+
+ $message = $this->msg( 'recentchangestext' )->inContentLanguage();
+ if ( !$message->isDisabled() ) {
+ $this->getOutput()->addWikiText(
+ Html::rawElement( 'p',
+ array( 'lang' => $wgContLang->getCode(), 'dir' => $wgContLang->getDir() ),
+ "\n" . $message->plain() . "\n"
+ ),
+ /* $lineStart */ false,
+ /* $interface */ false
+ );
+ }
+ }
+
/**
* Get options to be displayed in a form
*
}
/**
- * Return the legend displayed within the fieldset.
- *
- * This method is also called from SpecialWatchlist.
+ * Add page-specific modules.
+ */
+ protected function addModules() {
+ parent::addModules();
+ $out = $this->getOutput();
+ $out->addModules( 'mediawiki.special.recentchanges' );
+ }
+
+ /**
+ * Get last modified date, for client caching
+ * Don't use this if we are using the patrol feature, patrol changes don't
+ * update the timestamp
*
- * @param $context the object available as $this in non-static functions
- * @return string
+ * @param string $feedFormat
+ * @return string|bool
*/
- public static function makeLegend( IContextSource $context ) {
- global $wgRecentChangesFlags;
- $user = $context->getUser();
- # The legend showing what the letters and stuff mean
- $legend = Xml::openElement( 'dl' ) . "\n";
- # Iterates through them and gets the messages for both letter and tooltip
- $legendItems = $wgRecentChangesFlags;
- if ( !$user->useRCPatrol() ) {
- unset( $legendItems['unpatrolled'] );
- }
- foreach ( $legendItems as $key => $legendInfo ) { # generate items of the legend
- $label = $legendInfo['title'];
- $letter = $legendInfo['letter'];
- $cssClass = isset( $legendInfo['class'] ) ? $legendInfo['class'] : $key;
-
- $legend .= Xml::element( 'dt',
- array( 'class' => $cssClass ), $context->msg( $letter )->text()
- ) . "\n";
- if ( $key === 'newpage' ) {
- $legend .= Xml::openElement( 'dd' );
- $legend .= $context->msg( $label )->escaped();
- $legend .= ' ' . $context->msg( 'recentchanges-legend-newpage' )->parse();
- $legend .= Xml::closeElement( 'dd' ) . "\n";
- } else {
- $legend .= Xml::element( 'dd', array(),
- $context->msg( $label )->text()
- ) . "\n";
+ public function checkLastModified( $feedFormat ) {
+ $dbr = $this->getDB();
+ $lastmod = $dbr->selectField( 'recentchanges', 'MAX(rc_timestamp)', false, __METHOD__ );
+ if ( $feedFormat || !$this->getUser()->useRCPatrol() ) {
+ if ( $lastmod && $this->getOutput()->checkLastModified( $lastmod ) ) {
+ # Client cache fresh and headers sent, nothing more to do.
+ return false;
}
}
- # (+-123)
- $legend .= Xml::tags( 'dt',
- array( 'class' => 'mw-plusminus-pos' ),
- $context->msg( 'recentchanges-legend-plusminus' )->parse()
- ) . "\n";
- $legend .= Xml::element(
- 'dd',
- array( 'class' => 'mw-changeslist-legend-plusminus' ),
- $context->msg( 'recentchanges-label-plusminus' )->text()
- ) . "\n";
- $legend .= Xml::closeElement( 'dl' ) . "\n";
-
- # Collapsibility
- $legend =
- '<div class="mw-changeslist-legend">' .
- $context->msg( 'recentchanges-legend-heading' )->parse() .
- '<div class="mw-collapsible-content">' . $legend . '</div>' .
- '</div>';
-
- return $legend;
+
+ return $lastmod;
}
/**
- * Send the text to be displayed above the options
+ * Return an array with a ChangesFeed object and ChannelFeed object.
*
- * @param FormOptions $opts Unused
+ * @param string $feedFormat Feed's format (either 'rss' or 'atom')
+ * @return array
*/
- function setTopText( FormOptions $opts ) {
- global $wgContLang;
+ public function getFeedObject( $feedFormat ) {
+ $changesFeed = new ChangesFeed( $feedFormat, 'rcfeed' );
+ $formatter = $changesFeed->getFeedObject(
+ $this->msg( 'recentchanges' )->inContentLanguage()->text(),
+ $this->msg( 'recentchanges-feed-description' )->inContentLanguage()->text(),
+ $this->getPageTitle()->getFullURL()
+ );
- $message = $this->msg( 'recentchangestext' )->inContentLanguage();
- if ( !$message->isDisabled() ) {
- $this->getOutput()->addWikiText(
- Html::rawElement( 'p',
- array( 'lang' => $wgContLang->getCode(), 'dir' => $wgContLang->getDir() ),
- "\n" . $message->plain() . "\n"
- ),
- /* $lineStart */ false,
- /* $interface */ false
- );
- }
+ return array( $changesFeed, $formatter );
}
/**
- * Send the text to be displayed after the options, for use in subclasses.
+ * Get the query string to append to feed link URLs.
*
- * @param FormOptions $opts
+ * @return string
*/
- function setBottomText( FormOptions $opts ) {
+ public function getFeedQuery() {
+ global $wgFeedLimit;
+
+ $this->getOptions()->validateIntBounds( 'limit', 0, $wgFeedLimit );
+ $options = $this->getOptions()->getChangedValues();
+
+ // wfArrayToCgi() omits options set to null or false
+ foreach ( $options as &$value ) {
+ if ( $value === false ) {
+ $value = '0';
+ }
+ }
+ unset( $value );
+
+ return wfArrayToCgi( $options );
}
/**
/**
* Filter $rows by categories set in $opts
*
- * @param array $rows Database rows
+ * @param ResultWrapper $rows Database rows
* @param FormOptions $opts
*/
function filterByCategories( &$rows, FormOptions $opts ) {
return "{$note}$rclinks<br />$rclistfrom";
}
- /**
- * Add page-specific modules.
- */
- protected function addModules() {
- $this->getOutput()->addModules( array(
- 'mediawiki.special.recentchanges',
- ) );
- }
-
- protected function getGroupName() {
- return 'changes';
+ public function isIncludable() {
+ return true;
}
}
$opts['target'] = $par;
}
- public function getFeedObject( $feedFormat ) {
- $feed = new ChangesFeed( $feedFormat, false );
- $feedObj = $feed->getFeedObject(
- $this->msg( 'recentchangeslinked-title', $this->getTargetTitle()->getPrefixedText() )
- ->inContentLanguage()->text(),
- $this->msg( 'recentchangeslinked-feed' )->inContentLanguage()->text(),
- $this->getPageTitle()->getFullURL()
- );
- return array( $feed, $feedObj );
- }
-
public function doMainQuery( $conds, $opts ) {
$target = $opts['target'];
$showlinkedto = $opts['showlinkedto'];
}
$outputPage = $this->getOutput();
$title = Title::newFromURL( $target );
- if ( !$title || $title->getInterwiki() != '' ) {
+ if ( !$title || $title->isExternal() ) {
$outputPage->addHtml( '<div class="errorbox">' . $this->msg( 'allpagesbadtitle' )->parse() . '</div>' );
return false;
}
return $res;
}
+ function setTopText( FormOptions $opts ) {
+ $target = $this->getTargetTitle();
+ if ( $target ) {
+ $this->getOutput()->addBacklinkSubtitle( $target );
+ }
+ }
+
/**
* Get options to be displayed in a form
*
return $extraOpts;
}
+ public function getFeedObject( $feedFormat ) {
+ $feed = new ChangesFeed( $feedFormat, false );
+ $feedObj = $feed->getFeedObject(
+ $this->msg( 'recentchangeslinked-title', $this->getTargetTitle()->getPrefixedText() )
+ ->inContentLanguage()->text(),
+ $this->msg( 'recentchangeslinked-feed' )->inContentLanguage()->text(),
+ $this->getPageTitle()->getFullURL()
+ );
+ return array( $feed, $feedObj );
+ }
+
/**
* @return Title
*/
}
return $this->rclTargetTitle;
}
-
- function setTopText( FormOptions $opts ) {
- $target = $this->getTargetTitle();
- if ( $target ) {
- $this->getOutput()->addBacklinkSubtitle( $target );
- }
- }
}
/** The RevDel_List object, storing the list of items to be deleted/undeleted */
var $list;
+ /** Was the DB modified in this request */
+ protected $wasSaved = false;
+
/**
* UI labels for each type.
*/
# Show relevant lines from the deletion log
$deleteLogPage = new LogPage( 'delete' );
$output->addHTML( "<h2>" . $deleteLogPage->getName()->escaped() . "</h2>\n" );
- LogEventsList::showLogExtract( $output, 'delete',
- $this->targetObj, '', array( 'lim' => 25, 'conds' => $qc ) );
+ LogEventsList::showLogExtract(
+ $output,
+ 'delete',
+ $this->targetObj,
+ '', /* user */
+ array( 'lim' => 25, 'conds' => $qc, 'useMaster' => $this->wasSaved )
+ );
# Show relevant lines from the suppression log
if ( $user->isAllowed( 'suppressionlog' ) ) {
$suppressLogPage = new LogPage( 'suppress' );
$output->addHTML( "<h2>" . $suppressLogPage->getName()->escaped() . "</h2>\n" );
- LogEventsList::showLogExtract( $output, 'suppress',
- $this->targetObj, '', array( 'lim' => 25, 'conds' => $qc ) );
+ LogEventsList::showLogExtract(
+ $output,
+ 'suppress',
+ $this->targetObj,
+ '',
+ array( 'lim' => 25, 'conds' => $qc, 'useMaster' => $this->wasSaved )
+ );
}
}
protected function success() {
$this->getOutput()->setPageTitle( $this->msg( 'actioncomplete' ) );
$this->getOutput()->wrapWikiMsg( "<span class=\"success\">\n$1\n</span>", $this->typeLabels['success'] );
+ $this->wasSaved = true;
$this->list->reloadFromMaster();
$this->showForm();
}
*/
public function load() {
$request = $this->getRequest();
- list( $this->limit, $this->offset ) = $request->getLimitOffset( 20, 'searchlimit' );
+ list( $this->limit, $this->offset ) = $request->getLimitOffset( 20, '', 500 );
$this->mPrefix = $request->getVal( 'prefix', '' );
$user = $this->getUser();
}
$t = Title::newFromText( $term );
+ $showSuggestion = $t === null || !$t->isKnown();
+ $search->setShowSuggestion( $showSuggestion );
// fetch search results
$rewritten = $search->replacePrefixes( $term );
}
// did you mean... suggestions
- if ( $textMatches && !$textStatus && $textMatches->hasSuggestion() ) {
+ if ( $showSuggestion && $textMatches && !$textStatus && $textMatches->hasSuggestion() ) {
$st = SpecialPage::getTitleFor( 'Search' );
# mirror Go/Search behavior of original request ..
);
}
+ $fileMatch = '';
// Include a thumbnail for media files...
if ( $t->getNamespace() == NS_FILE ) {
- $img = wfFindFile( $t );
+ $img = $result->getFile();
+ $img = $img ?: wfFindFile( $t );
+ if ( $result->isFileMatch() ) {
+ $fileMatch = "<span class='searchalttitle'>" .
+ $this->msg( 'search-file-match' )->escaped() . "</span>";
+ }
if ( $img ) {
$thumb = $img->transform( array( 'width' => 120, 'height' => 120 ) );
if ( $thumb ) {
$thumb->toHtml( array( 'desc-link' => true ) ) .
'</td>' .
'<td style="vertical-align: top;">' .
- $link .
+ "{$link} {$fileMatch}" .
$extract .
"<div class='mw-search-result-data'>{$score}{$desc} - {$date}{$related}</div>" .
'</td>' .
&$score, &$size, &$date, &$related,
&$html
) ) ) {
- $html = "<li><div class='mw-search-result-heading'>{$link} {$redirect} {$section}</div> {$extract}\n" .
+ $html = "<li><div class='mw-search-result-heading'>{$link} {$redirect} {$section} {$fileMatch}</div> {$extract}\n" .
"<div class='mw-search-result-data'>{$score}{$size} - {$date}{$related}</div>" .
"</li>\n";
}
$out .= Html::hidden( 'fulltext', 'Search' ) . "\n";
$out .= Xml::submitButton(
$this->msg( 'searchbutton' )->text(),
- array( 'class' => array( 'mw-ui-button', 'mw-ui-primary' ) )
+ array( 'class' => array( 'mw-ui-button', 'mw-ui-progressive' ) )
) . "\n";
return $out . $this->didYouMeanHtml;
}
} elseif ( $warning == 'duplicate' ) {
$msg = $this->getDupeWarning( $args );
} elseif ( $warning == 'duplicate-archive' ) {
- $msg = "\t<li>" . $this->msg( 'file-deleted-duplicate',
- Title::makeTitle( NS_FILE, $args )->getPrefixedText() )->parse()
- . "</li>\n";
+ if ( $args === '' ) {
+ $msg = "\t<li>" . $this->msg( 'file-deleted-duplicate-notitle' )->parse()
+ . "</li>\n";
+ } else {
+ $msg = "\t<li>" . $this->msg( 'file-deleted-duplicate',
+ Title::makeTitle( NS_FILE, $args )->getPrefixedText() )->parse()
+ . "</li>\n";
+ }
} else {
if ( $args === true ) {
$args = array();
$u->setRealName( $this->mRealName );
$abortError = '';
- if ( !wfRunHooks( 'AbortNewAccount', array( $u, &$abortError ) ) ) {
+ $abortStatus = null;
+ if ( !wfRunHooks( 'AbortNewAccount', array( $u, &$abortError, &$abortStatus ) ) ) {
// Hook point to add extra creation throttles and blocks
wfDebug( "LoginForm::addNewAccountInternal: a hook blocked creation\n" );
- $abortError = new RawMessage( $abortError );
- $abortError->text();
- return Status::newFatal( $abortError );
+ if ( $abortStatus === null ) {
+ // Report back the old string as a raw message status.
+ // This will report the error back as 'createaccount-hook-aborted'
+ // with the given string as the message.
+ // To return a different error code, return a Status object.
+ $abortError = new Message( 'createaccount-hook-aborted', array( $abortError ) );
+ $abortError->text();
+ return Status::newFatal( $abortError );
+ } else {
+ // For MediaWiki 1.23+ and updated hooks, return the Status object
+ // returned from the hook.
+ return $abortStatus;
+ }
}
// Hook point to check for exempt from account creation throttle
function resetLoginForm( $error ) {
$this->getOutput()->addHTML( Xml::element( 'p', array( 'class' => 'error' ), $error ) );
$reset = new SpecialChangePassword();
- $reset->setContext( $this->getContext() );
+ $derivative = new DerivativeContext( $this->getContext() );
+ $derivative->setTitle( $reset->getPageTitle() );
+ $reset->setContext( $derivative );
$reset->execute( null );
}
*/
public static function setLoginToken() {
global $wgRequest;
- // Generate a token directly instead of using $user->editToken()
+ // Generate a token directly instead of using $user->getEditToken()
// because the latter reuses $_SESSION['wsEditToken']
$wgRequest->setSessionData( 'wsLoginToken', MWCryptRand::generateHex( 32 ) );
}
}
$targetUser = $status->value;
+ $targetUser->clearInstanceCache();
if ( $request->getVal( 'conflictcheck-originalgroups' ) !== implode( ',', $targetUser->getGroups() ) ) {
$out->addWikiMsg( 'userrights-conflict' );
* main()
*/
public function execute( $par ) {
- global $wgSpecialVersionShowHooks, $IP;
+ global $IP, $wgExtensionCredits;
$this->setHeaders();
$this->outputHeader();
$out = $this->getOutput();
$out->allowClickjacking();
- if ( $par !== 'Credits' ) {
- $text =
- $this->getMediaWikiCredits() .
- $this->softwareInformation() .
- $this->getEntryPointInfo() .
- $this->getExtensionCredits();
- if ( $wgSpecialVersionShowHooks ) {
- $text .= $this->getWgHooks();
+ // Explode the sub page information into useful bits
+ $parts = explode( '/', (string)$par );
+ $extNode = null;
+ if ( isset( $parts[1] ) ) {
+ $extName = str_replace( '_', ' ', $parts[1] );
+ // Find it!
+ foreach ( $wgExtensionCredits as $group => $extensions ) {
+ foreach ( $extensions as $ext ) {
+ if ( isset( $ext['name'] ) && ( $ext['name'] === $extName ) ) {
+ $extNode = &$ext;
+ break 2;
+ }
+ }
}
-
- $out->addWikiText( $text );
- $out->addHTML( $this->IPInfo() );
-
- if ( $this->getRequest()->getVal( 'easteregg' ) ) {
- // TODO: put something interesting here
+ if ( !$extNode ) {
+ $out->setStatusCode( 404 );
}
} else {
- // Credits sub page
-
- // Header
- $out->addHTML( wfMessage( 'version-credits-summary' )->parseAsBlock() );
+ $extName = 'MediaWiki';
+ }
- $wikiText = file_get_contents( $IP . '/CREDITS' );
+ // Now figure out what to do
+ switch ( strtolower( $parts[0] ) ) {
+ case 'credits':
+ $wikiText = '{{int:version-credits-not-found}}';
+ if ( $extName === 'MediaWiki' ) {
+ $wikiText = file_get_contents( $IP . '/CREDITS' );
+ } elseif ( ( $extNode !== null ) && isset( $extNode['path'] ) ) {
+ $file = $this->getExtAuthorsFileName( dirname( $extNode['path'] ) );
+ if ( $file ) {
+ $wikiText = file_get_contents( $file );
+ }
+ }
- // Take everything from the first section onwards, to remove the (not localized) header
- $wikiText = substr( $wikiText, strpos( $wikiText, '==' ) );
+ $out->setPageTitle( $this->msg( 'version-credits-title', $extName ) );
+ $out->addWikiText( $wikiText );
+ break;
+
+ case 'license':
+ $wikiText = '{{int:version-license-not-found}}';
+ if ( $extName === 'MediaWiki' ) {
+ $wikiText = file_get_contents( $IP . '/COPYING' );
+ } elseif ( ( $extNode !== null ) && isset( $extNode['path'] ) ) {
+ $file = $this->getExtLicenseFileName( dirname( $extNode['path'] ) );
+ if ( $file ) {
+ $wikiText = file_get_contents( $file );
+ if ( !isset( $extNode['license-name'] ) ) {
+ // If the developer did not explicitly set license-name they probably
+ // are unaware that we're now sucking this file in and thus it's probably
+ // not wikitext friendly.
+ $wikiText = "<pre>$wikiText</pre>";
+ }
+ }
+ }
- $out->addWikiText( $wikiText );
+ $out->setPageTitle( $this->msg( 'version-license-title', $extName ) );
+ $out->addWikiText( $wikiText );
+ break;
+
+ default:
+ $out->addModules( 'mediawiki.special.version' );
+ $out->addWikiText(
+ $this->getMediaWikiCredits() .
+ $this->softwareInformation() .
+ $this->getEntryPointInfo()
+ );
+ $out->addHtml(
+ $this->getExtensionCredits() .
+ $this->getParserTags() .
+ $this->getParserFunctionHooks()
+ );
+ $out->addWikiText( $this->getWgHooks() );
+ $out->addHTML( $this->IPInfo() );
+
+ break;
}
}
$gitHeadCommitDate = $gitInfo->getHeadCommitDate();
if ( $gitHeadCommitDate ) {
- $shortSHA1 .= "<br/>" . $wgLang->timeanddate( $gitHeadCommitDate, true );
+ $shortSHA1 .= Html::element( 'br' ) . $wgLang->timeanddate( $gitHeadCommitDate, true );
}
return self::getwgVersionLinked() . " $shortSHA1";
* @return String: Wikitext
*/
function getExtensionCredits() {
- global $wgExtensionCredits, $wgExtensionFunctions, $wgParser;
+ global $wgExtensionCredits;
- if ( !count( $wgExtensionCredits ) && !count( $wgExtensionFunctions ) ) {
+ if ( !count( $wgExtensionCredits ) ) {
return '';
}
// We want the 'other' type to be last in the list.
$out .= $this->getExtensionCategory( 'other', $extensionTypes['other'] );
+ $out .= Xml::closeElement( 'table' );
+
+ return $out;
+ }
+
+ /**
+ * Obtains a list of installed parser tags and the associated H2 header
+ *
+ * @return string HTML output
+ */
+ protected function getParserTags() {
+ global $wgParser;
+
$tags = $wgParser->getTags();
- $cnt = count( $tags );
- if ( $cnt ) {
- for ( $i = 0; $i < $cnt; ++$i ) {
- $tags[$i] = "<{$tags[$i]}>";
- }
- $out .= $this->openExtType( $this->msg( 'version-parser-extensiontags' )->text(), 'parser-tags' );
- $out .= '<tr><td colspan="4">' . $this->listToText( $tags ) . "</td></tr>\n";
+ if ( count( $tags ) ) {
+ $out = Html::rawElement(
+ 'h2',
+ array( 'class' => 'mw-headline' ),
+ Linker::makeExternalLink(
+ '//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Tag_extensions',
+ $this->msg( 'version-parser-extensiontags' )->parse(),
+ false /* msg()->parse() already escapes */
+ )
+ );
+
+ array_walk( $tags, function( &$value ) {
+ $value = '<' . htmlentities( $value ) . '>';
+ } );
+ $out .= $this->listToText( $tags );
+ } else {
+ $out = '';
}
+ return $out;
+ }
+
+ /**
+ * Obtains a list of installed parser function hooks and the associated H2 header
+ *
+ * @return string HTML output
+ */
+ protected function getParserFunctionHooks() {
+ global $wgParser;
+
$fhooks = $wgParser->getFunctionHooks();
if ( count( $fhooks ) ) {
- $out .= $this->openExtType( $this->msg( 'version-parser-function-hooks' )->text(), 'parser-function-hooks' );
- $out .= '<tr><td colspan="4">' . $this->listToText( $fhooks ) . "</td></tr>\n";
- }
+ $out = Html::rawElement( 'h2', array( 'class' => 'mw-headline' ) , Linker::makeExternalLink(
+ '//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Parser_functions',
+ $this->msg( 'version-parser-function-hooks' )->parse(),
+ false /* msg()->parse() already escapes */
+ ) );
- $out .= Xml::closeElement( 'table' );
+ $out .= $this->listToText( $fhooks );
+ } else {
+ $out = '';
+ }
return $out;
}
}
/**
- * Creates and formats the credits for a single extension and returns this.
+ * Creates and formats a version line for a single extension.
+ *
+ * Information for five columns will be created. Parameters required in the
+ * $extension array for part rendering are indicated in ()
+ * - The name of (name), and URL link to (url), the extension
+ * - Official version number (version) and if available version control system
+ * revision (path), link, and date
+ * - If available the short name of the license (license-name) and a linke
+ * to ((LICENSE)|(COPYING))(\.txt)? if it exists.
+ * - Description of extension (descriptionmsg or description)
+ * - List of authors (author) and link to a ((AUTHORS)|(CREDITS))(\.txt)? file if it exists
*
* @param $extension Array
*
- * @return string
+ * @return string raw HTML
*/
function getCreditsForExtension( array $extension ) {
- global $wgLang;
+ $out = $this->getOutput();
+
+ // We must obtain the information for all the bits and pieces!
+ // ... such as extension names and links
+ $extensionName = isset( $extension['name'] ) ? $extension['name'] : '[no name]';
+ if ( isset( $extension['url'] ) ) {
+ $extensionNameLink = Linker::makeExternalLink(
+ $extension['url'],
+ $extensionName,
+ true,
+ '',
+ array( 'class' => 'mw-version-ext-name' )
+ );
+ } else {
+ $extensionNameLink = $extensionName;
+ }
- $name = isset( $extension['name'] ) ? $extension['name'] : '[no name]';
+ // ... and the version information
+ // If the extension path is set we will check that directory for GIT and SVN
+ // metadata in an attempt to extract date and vcs commit metadata.
+ $canonicalVersion = '–';
+ $extensionPath = null;
+ $vcsVersion = null;
+ $vcsLink = null;
+ $vcsDate = null;
- $vcsText = false;
+ if ( isset( $extension['version'] ) ) {
+ $canonicalVersion = $out->parseInline( $extension['version'] );
+ }
if ( isset( $extension['path'] ) ) {
- $gitInfo = new GitInfo( dirname( $extension['path'] ) );
- $gitHeadSHA1 = $gitInfo->getHeadSHA1();
- if ( $gitHeadSHA1 !== false ) {
- $vcsText = '(' . substr( $gitHeadSHA1, 0, 7 ) . ')';
- $gitViewerUrl = $gitInfo->getHeadViewUrl();
- if ( $gitViewerUrl !== false ) {
- $vcsText = "[$gitViewerUrl $vcsText]";
- }
- $gitHeadCommitDate = $gitInfo->getHeadCommitDate();
- if ( $gitHeadCommitDate ) {
- $vcsText .= "<br/>" . $wgLang->timeanddate( $gitHeadCommitDate, true );
- }
+ $extensionPath = dirname( $extension['path'] );
+ $gitInfo = new GitInfo( $extensionPath );
+ $vcsVersion = $gitInfo->getHeadSHA1();
+ if ( $vcsVersion !== false ) {
+ $vcsVersion = substr( $vcsVersion, 0, 7 );
+ $vcsLink = $gitInfo->getHeadViewUrl();
+ $vcsDate = $gitInfo->getHeadCommitDate();
} else {
- $svnInfo = self::getSvnInfo( dirname( $extension['path'] ) );
- # Make subversion text/link.
+ $svnInfo = self::getSvnInfo( $extensionPath );
if ( $svnInfo !== false ) {
- $directoryRev = isset( $svnInfo['directory-rev'] ) ? $svnInfo['directory-rev'] : null;
- $vcsText = $this->msg( 'version-svn-revision', $directoryRev, $svnInfo['checkout-rev'] )->text();
- $vcsText = isset( $svnInfo['viewvc-url'] ) ? '[' . $svnInfo['viewvc-url'] . " $vcsText]" : $vcsText;
+ $vcsVersion = $this->msg( 'version-svn-revision', $svnInfo['checkout-rev'] )->text();
+ $vcsLink = isset( $svnInfo['viewvc-url'] ) ? $svnInfo['viewvc-url'] : '';
}
}
}
- # Make main link (or just the name if there is no URL).
- if ( isset( $extension['url'] ) ) {
- $mainLink = "[{$extension['url']} $name]";
- } else {
- $mainLink = $name;
+ $versionString = Html::rawElement( 'span', array( 'class' => 'mw-version-ext-version' ), $canonicalVersion );
+ if ( $vcsVersion ) {
+ if ( $vcsLink ) {
+ $vcsVerString = Linker::makeExternalLink(
+ $vcsLink,
+ $this->msg( 'version-version', $vcsVersion ),
+ true,
+ '',
+ array( 'class' => 'mw-version-ext-vcs-version' )
+ );
+ } else {
+ $vcsVerString = Html::element( 'span',
+ array( 'class' => 'mw-version-ext-vcs-version'),
+ "({$vcsVersion})"
+ );
+ }
+ $versionString .= " {$vcsVerString}";
+
+ if ( $vcsDate ) {
+ $vcsTimeString = Html::element( 'span',
+ array( 'class' => 'mw-version-ext-vcs-timestamp'),
+ $this->getLanguage()->timeanddate( $vcsDate )
+ );
+ $versionString .= " {$vcsTimeString}";
+ }
+ $versionString = Html::rawElement( 'span',
+ array( 'class' => 'mw-version-ext-meta-version' ),
+ $versionString
+ );
}
- if ( isset( $extension['version'] ) ) {
- $versionText = '<span class="mw-version-ext-version">' .
- $this->msg( 'version-version', $extension['version'] )->text() .
- '</span>';
- } else {
- $versionText = '';
+ // ... and license information; if a license file exists we
+ // will link to it
+ $licenseLink = '';
+ if ( isset( $extension['license-name'] ) ) {
+ $licenseLink = Linker::link(
+ $this->getPageTitle( 'License/' . $extensionName ),
+ $out->parseInline( $extension['license-name'] ),
+ array( 'class' => 'mw-version-ext-license' )
+ );
+ } elseif ( $this->getExtLicenseFileName( $extensionPath ) ) {
+ $licenseLink = Linker::link(
+ $this->getPageTitle( 'License/' . $extensionName ),
+ $this->msg( 'version-ext-license' ),
+ array( 'class' => 'mw-version-ext-license' )
+ );
}
- # Make description text.
- $description = isset( $extension['description'] ) ? $extension['description'] : '';
-
+ // ... and generate the description; which can be a parameterized l10n message
+ // in the form array( <msgname>, <parameter>, <parameter>... ) or just a straight
+ // up string
if ( isset( $extension['descriptionmsg'] ) ) {
- # Look for a localized description.
+ // Localized description of extension
$descriptionMsg = $extension['descriptionmsg'];
if ( is_array( $descriptionMsg ) ) {
} else {
$description = $this->msg( $descriptionMsg )->text();
}
- }
-
- if ( $vcsText !== false ) {
- $extNameVer = "<tr>
- <td><em>$mainLink $versionText</em></td>
- <td><em>$vcsText</em></td>";
+ } elseif ( isset( $extension['description'] ) ) {
+ // Non localized version
+ $description = $extension['description'];
} else {
- $extNameVer = "<tr>
- <td colspan=\"2\"><em>$mainLink $versionText</em></td>";
+ $description = '';
}
+ $description = $out->parseInline( $description );
- $author = isset( $extension['author'] ) ? $extension['author'] : array();
- $extDescAuthor = "<td>$description</td>
- <td>" . $this->listAuthors( $author, false ) . "</td>
- </tr>\n";
+ // ... now get the authors for this extension
+ $authors = isset( $extension['author'] ) ? $extension['author'] : array();
+ $authors = $this->listAuthors( $authors, $extensionName, $extensionPath );
- return $extNameVer . $extDescAuthor;
+ // Finally! Create the table
+ $html = Html::openElement( 'tr', array(
+ 'class' => 'mw-version-ext',
+ 'id' => "mw-version-ext-{$extensionName}"
+ )
+ );
+
+ $html .= Html::rawElement( 'td', array(), $extensionNameLink );
+ $html .= Html::rawElement( 'td', array(), $versionString );
+ $html .= Html::rawElement( 'td', array(), $licenseLink );
+ $html .= Html::rawElement( 'td', array( 'class' => 'mw-version-ext-description' ), $description );
+ $html .= Html::rawElement( 'td', array( 'class' => 'mw-version-ext-authors' ), $authors );
+
+ $html .= Html::closeElement( 'td' );
+
+ return $html;
}
/**
* @return String: wikitext
*/
private function getWgHooks() {
- global $wgHooks;
+ global $wgSpecialVersionShowHooks, $wgHooks;
- if ( count( $wgHooks ) ) {
+ if ( $wgSpecialVersionShowHooks && count( $wgHooks ) ) {
$myWgHooks = $wgHooks;
ksort( $myWgHooks );
- $ret = Xml::element( 'h2', array( 'id' => 'mw-version-hooks' ), $this->msg( 'version-hooks' )->text() ) .
- Xml::openElement( 'table', array( 'class' => 'wikitable', 'id' => 'sv-hooks' ) ) .
- "<tr>
- <th>" . $this->msg( 'version-hook-name' )->text() . "</th>
- <th>" . $this->msg( 'version-hook-subscribedby' )->text() . "</th>
- </tr>\n";
+ $ret = array();
+ $ret[] = '== {{int:version-hooks}} ==';
+ $ret[] = Html::openElement( 'table', array( 'class' => 'wikitable', 'id' => 'sv-hooks' ) );
+ $ret[] = Html::openElement( 'tr' );
+ $ret[] = Html::element( 'th', array(), $this->msg( 'version-hook-name' )->text() );
+ $ret[] = Html::element( 'th', array(), $this->msg( 'version-hook-subscribedby' )->text() );
+ $ret[] = Html::closeElement( 'tr' );
foreach ( $myWgHooks as $hook => $hooks ) {
- $ret .= "<tr>
- <td>$hook</td>
- <td>" . $this->listToText( $hooks ) . "</td>
- </tr>\n";
+ $ret[] = Html::openElement( 'tr' );
+ $ret[] = Html::element( 'td', array(), $hook );
+ $ret[] = Html::element( 'td', array(), $this->listToText( $hooks ) );
+ $ret[] = Html::closeElement( 'tr' );
}
- $ret .= Xml::closeElement( 'table' );
- return $ret;
+ $ret[] = Html::closeElement( 'table' );
+
+ return implode( "\n", $ret );
} else {
return '';
}
}
private function openExtType( $text, $name = null ) {
- $opt = array( 'colspan' => 4 );
$out = '';
+ $opt = array( 'colspan' => 5 );
if ( $this->firstExtOpened ) {
// Insert a spacing line
- $out .= '<tr class="sv-space">' . Html::element( 'td', $opt ) . "</tr>\n";
+ $out .= Html::rawElement( 'tr', array( 'class' => 'sv-space' ),
+ Html::element( 'td', $opt )
+ );
}
$this->firstExtOpened = true;
$opt['id'] = "sv-$name";
}
- $out .= "<tr>" . Xml::element( 'th', $opt, $text ) . "</tr>\n";
+ $out .= Html::rawElement( 'tr', array(),
+ Html::element( 'th', $opt, $text )
+ );
+
+ $out .= Html::openElement( 'tr' );
+ $out .= Html::element( 'th', array( 'class' => 'mw-version-ext-col-label' ),
+ $this->msg( 'version-ext-colheader-name' )->text() );
+ $out .= Html::element( 'th', array( 'class' => 'mw-version-ext-col-label' ),
+ $this->msg( 'version-ext-colheader-version' )->text() );
+ $out .= Html::element( 'th', array( 'class' => 'mw-version-ext-col-label' ),
+ $this->msg( 'version-ext-colheader-license' )->text() );
+ $out .= Html::element( 'th', array( 'class' => 'mw-version-ext-col-label' ),
+ $this->msg( 'version-ext-colheader-description' )->text() );
+ $out .= Html::element( 'th', array( 'class' => 'mw-version-ext-col-label' ),
+ $this->msg( 'version-ext-colheader-credits' )->text() );
+ $out .= Html::closeElement( 'tr' );
return $out;
}
/**
* Return a formatted unsorted list of authors
*
+ * 'And Others'
+ * If an item in the $authors array is '...' it is assumed to indicate an
+ * 'and others' string which will then be linked to an ((AUTHORS)|(CREDITS))(\.txt)?
+ * file if it exists in $dir.
+ *
+ * Similarly an entry ending with ' ...]' is assumed to be a link to an
+ * 'and others' page.
+ *
+ * If no '...' string variant is found, but an authors file is found an
+ * 'and others' will be added to the end of the credits.
+ *
* @param $authors mixed: string or array of strings
+ * @param $extName string: name of the extension for link creation
+ * @param $extDir string: path to the extension root directory
+ *
* @return String: HTML fragment
*/
- function listAuthors( $authors ) {
+ function listAuthors( $authors, $extName, $extDir ) {
+ $hasOthers = false;
+
$list = array();
foreach ( (array)$authors as $item ) {
if ( $item == '...' ) {
- $list[] = $this->msg( 'version-poweredby-others' )->text();
+ $hasOthers = true;
+
+ if ( $this->getExtAuthorsFileName( $extDir ) ) {
+ $text = Linker::link(
+ $this->getPageTitle( "Credits/$extName" ),
+ $this->msg( 'version-poweredby-others' )->text()
+ );
+ } else {
+ $text = $this->msg( 'version-poweredby-others' )->text();
+ }
+ $list[] = $text;
+
} elseif ( substr( $item, -5 ) == ' ...]' ) {
- $list[] = substr( $item, 0, -4 ) . $this->msg( 'version-poweredby-others' )->text() . "]";
+ $hasOthers = true;
+ $list[] = $this->getOutput()->parseInline(
+ substr( $item, 0, -4 ) . $this->msg( 'version-poweredby-others' )->text() . "]"
+ );
+
} else {
- $list[] = $item;
+ $list[] = $this->getOutput()->parseInline( $item );
}
}
+
+ if ( !$hasOthers && $this->getExtAuthorsFileName( $extDir ) ) {
+ $list[] = $text = Linker::link(
+ $this->getPageTitle( "Credits/$extName" ),
+ $this->msg( 'version-poweredby-others' )->text()
+ );
+ }
+
return $this->listToText( $list, false );
}
+ /**
+ * Obtains the full path of an extensions authors or credits file if
+ * one exists.
+ *
+ * @param string $extDir: Path to the extensions root directory
+ *
+ * @since 1.23
+ *
+ * @return bool|string False if no such file exists, otherwise returns
+ * a path to it.
+ */
+ public static function getExtAuthorsFileName( $extDir ) {
+ if ( !$extDir ) {
+ return false;
+ }
+
+ foreach ( scandir( $extDir ) as $file ) {
+ $fullPath = $extDir . DIRECTORY_SEPARATOR . $file;
+ if ( preg_match( '/^((AUTHORS)|(CREDITS))(\.txt)?$/', $file ) &&
+ is_readable( $fullPath ) &&
+ is_file( $fullPath )
+ ) {
+ return $fullPath;
+ }
+ }
+
+ return false;
+ }
+
+ /**
+ * Obtains the full path of an extensions copying or license file if
+ * one exists.
+ *
+ * @param string $extDir: Path to the extensions root directory
+ *
+ * @since 1.23
+ *
+ * @return bool|string False if no such file exists, otherwise returns
+ * a path to it.
+ */
+ public static function getExtLicenseFileName( $extDir ) {
+ if ( !$extDir ) {
+ return false;
+ }
+
+ foreach ( scandir( $extDir ) as $file ) {
+ $fullPath = $extDir . DIRECTORY_SEPARATOR . $file;
+ if ( preg_match( '/^((COPYING)|(LICENSE))(\.txt)?$/', $file ) &&
+ is_readable( $fullPath ) &&
+ is_file( $fullPath )
+ ) {
+ return $fullPath;
+ }
+ }
+
+ return false;
+ }
+
/**
* Convert an array of items into a list for display.
*
__METHOD__
);
foreach ( $categoryRes as $row ) {
- $this->currentCategoryCounts[ $row->cat_title ] = $row->cat_pages;
+ $this->currentCategoryCounts[ $row->cat_title ] = intval( $row->cat_pages );
}
// Back to start for display
* http://www.gnu.org/copyleft/gpl.html
*
* @file
- * @ingroup SpecialPage Watchlist
+ * @ingroup SpecialPage
*/
-class SpecialWatchlist extends SpecialPage {
- protected $customFilters;
+/**
+ * A special page that lists last changes made to the wiki,
+ * limited to user-defined list of titles.
+ *
+ * @ingroup SpecialPage
+ */
+class SpecialWatchlist extends ChangesListSpecialPage {
/**
* Constructor
*/
}
/**
- * Execute
- * @param $par Parameter passed to the page
+ * Main execution point
+ *
+ * @param string $subpage
*/
- function execute( $par ) {
- global $wgRCShowWatchingUsers, $wgEnotifWatchlist, $wgShowUpdatedMarker;
+ function execute( $subpage ) {
+ global $wgEnotifWatchlist, $wgShowUpdatedMarker;
- $user = $this->getUser();
- $output = $this->getOutput();
- $output->addModuleStyles( 'mediawiki.special.changeslist' );
- $output->addModules( 'mediawiki.special.changeslist.js' );
-
- # Anons don't get a watchlist
+ // Anons don't get a watchlist
$this->requireLogin( 'watchlistanontext' );
- // Check permissions
- $this->checkPermissions();
-
- // Add feed links
- $wlToken = $user->getTokenFromOption( 'watchlisttoken' );
- if ( $wlToken ) {
- $this->addFeedLinks( array(
- 'action' => 'feedwatchlist',
- 'allrev' => 1,
- 'wlowner' => $user->getName(),
- 'wltoken' => $wlToken,
- ) );
- }
-
- $this->setHeaders();
- $this->outputHeader();
-
- $output->addSubtitle(
- $this->msg( 'watchlistfor2', $user->getName() )
- ->rawParams( SpecialEditWatchlist::buildTools( null ) )
- );
-
+ $output = $this->getOutput();
$request = $this->getRequest();
- $mode = SpecialEditWatchlist::getMode( $request, $par );
+ $mode = SpecialEditWatchlist::getMode( $request, $subpage );
if ( $mode !== false ) {
if ( $mode === SpecialEditWatchlist::EDIT_RAW ) {
$title = SpecialPage::getTitleFor( 'EditWatchlist', 'raw' );
return;
}
- $dbr = wfGetDB( DB_SLAVE, 'watchlist' );
+ $this->checkPermissions();
- $nitems = $this->countItems( $dbr );
- if ( $nitems == 0 ) {
- $output->addWikiMsg( 'nowatchlist' );
+ $user = $this->getUser();
+ $opts = $this->getOptions();
+
+ if ( ( $wgEnotifWatchlist || $wgShowUpdatedMarker ) && $request->getVal( 'reset' ) &&
+ $request->wasPosted() )
+ {
+ $user->clearAllNotifications();
+ $output->redirect( $this->getPageTitle()->getFullURL( $opts->getChangedValues() ) );
return;
}
- // @todo use FormOptions!
- $defaults = array(
- /* float */ 'days' => floatval( $user->getOption( 'watchlistdays' ) ),
- /* bool */ 'hideMinor' => (int)$user->getBoolOption( 'watchlisthideminor' ),
- /* bool */ 'hideBots' => (int)$user->getBoolOption( 'watchlisthidebots' ),
- /* bool */ 'hideAnons' => (int)$user->getBoolOption( 'watchlisthideanons' ),
- /* bool */ 'hideLiu' => (int)$user->getBoolOption( 'watchlisthideliu' ),
- /* bool */ 'hidePatrolled' => (int)$user->getBoolOption( 'watchlisthidepatrolled' ),
- /* bool */ 'hideOwn' => (int)$user->getBoolOption( 'watchlisthideown' ),
- /* bool */ 'extended' => (int)$user->getBoolOption( 'extendwatchlist' ),
- /* ? */ 'namespace' => '', //means all
- /* ? */ 'invert' => false,
- /* bool */ 'associated' => false,
- );
- $this->customFilters = array();
- wfRunHooks( 'SpecialWatchlistFilters', array( $this, &$this->customFilters ) );
- foreach ( $this->customFilters as $key => $params ) {
- $defaults[$key] = $params['default'];
- }
+ parent::execute( $subpage );
+ }
+
+ /**
+ * Get a FormOptions object containing the default options
+ *
+ * @return FormOptions
+ */
+ public function getDefaultOptions() {
+ $opts = parent::getDefaultOptions();
+ $user = $this->getUser();
+
+ $opts->add( 'days', $user->getOption( 'watchlistdays' ), FormOptions::FLOAT );
+
+ $opts->add( 'hideminor', $user->getBoolOption( 'watchlisthideminor' ) );
+ $opts->add( 'hidebots', $user->getBoolOption( 'watchlisthidebots' ) );
+ $opts->add( 'hideanons', $user->getBoolOption( 'watchlisthideanons' ) );
+ $opts->add( 'hideliu', $user->getBoolOption( 'watchlisthideliu' ) );
+ $opts->add( 'hidepatrolled', $user->getBoolOption( 'watchlisthidepatrolled' ) );
+ $opts->add( 'hidemyself', $user->getBoolOption( 'watchlisthideown' ) );
+
+ $opts->add( 'extended', $user->getBoolOption( 'extendwatchlist' ) );
- # Extract variables from the request, falling back to user preferences or
- # other default values if these don't exist
- $values = array();
- $values['days'] = floatval( $request->getVal( 'days', $defaults['days'] ) );
- $values['hideMinor'] = (int)$request->getBool( 'hideMinor', $defaults['hideMinor'] );
- $values['hideBots'] = (int)$request->getBool( 'hideBots', $defaults['hideBots'] );
- $values['hideAnons'] = (int)$request->getBool( 'hideAnons', $defaults['hideAnons'] );
- $values['hideLiu'] = (int)$request->getBool( 'hideLiu', $defaults['hideLiu'] );
- $values['hideOwn'] = (int)$request->getBool( 'hideOwn', $defaults['hideOwn'] );
- $values['hidePatrolled'] = (int)$request->getBool( 'hidePatrolled', $defaults['hidePatrolled'] );
- $values['extended'] = (int)$request->getBool( 'extended', $defaults['extended'] );
- foreach ( $this->customFilters as $key => $params ) {
- $values[$key] = (int)$request->getBool( $key, $defaults[$key] );
+ return $opts;
+ }
+
+ /**
+ * Get custom show/hide filters
+ *
+ * @return array Map of filter URL param names to properties (msg/default)
+ */
+ protected function getCustomFilters() {
+ if ( $this->customFilters === null ) {
+ $this->customFilters = array();
+ wfRunHooks( 'SpecialWatchlistFilters', array( $this, &$this->customFilters ) );
}
- # Get namespace value, if supplied, and prepare a WHERE fragment
- $nameSpace = $request->getIntOrNull( 'namespace' );
- $invert = $request->getBool( 'invert' );
- $associated = $request->getBool( 'associated' );
- if ( !is_null( $nameSpace ) ) {
- $eq_op = $invert ? '!=' : '=';
- $bool_op = $invert ? 'AND' : 'OR';
- $nameSpace = intval( $nameSpace ); // paranioa
- if ( !$associated ) {
- $nameSpaceClause = "rc_namespace $eq_op $nameSpace";
- } else {
- $associatedNS = MWNamespace::getAssociated( $nameSpace );
- $nameSpaceClause =
- "rc_namespace $eq_op $nameSpace " .
- $bool_op .
- " rc_namespace $eq_op $associatedNS";
+ return $this->customFilters;
+ }
+
+ /**
+ * Fetch values for a FormOptions object from the WebRequest associated with this instance.
+ *
+ * Maps old pre-1.23 request parameters Watchlist used to use (different from Recentchanges' ones)
+ * to the current ones.
+ *
+ * @param FormOptions $parameters
+ * @return FormOptions
+ */
+ protected function fetchOptionsFromRequest( $opts ) {
+ static $compatibilityMap = array(
+ 'hideMinor' => 'hideminor',
+ 'hideBots' => 'hidebots',
+ 'hideAnons' => 'hideanons',
+ 'hideLiu' => 'hideliu',
+ 'hidePatrolled' => 'hidepatrolled',
+ 'hideOwn' => 'hidemyself',
+ );
+
+ $params = $this->getRequest()->getValues();
+ foreach ( $compatibilityMap as $from => $to ) {
+ if ( isset( $params[$from] ) ) {
+ $params[$to] = $params[$from];
+ unset( $params[$from] );
}
- } else {
- $nameSpace = '';
- $nameSpaceClause = '';
- }
- $values['namespace'] = $nameSpace;
- $values['invert'] = $invert;
- $values['associated'] = $associated;
-
- // Dump everything here
- $nondefaults = array();
- foreach ( $defaults as $name => $defValue ) {
- wfAppendToArrayIfNotDefault( $name, $values[$name], $defaults, $nondefaults );
}
- if ( ( $wgEnotifWatchlist || $wgShowUpdatedMarker ) && $request->getVal( 'reset' )
- && $request->wasPosted()
- ) {
- $user->clearAllNotifications();
- $output->redirect( $this->getPageTitle()->getFullURL( $nondefaults ) );
- return;
- }
+ // Not the prettiest way to achieve this… FormOptions internally depends on data sanitization
+ // methods defined on WebRequest and removing this dependency would cause some code duplication.
+ $request = new DerivativeRequest( $this->getRequest(), $params );
+ $opts->fetchValuesFromRequest( $request );
+ return $opts;
+ }
- # Possible where conditions
- $conds = array();
+ /**
+ * Return an array of conditions depending of options set in $opts
+ *
+ * @param FormOptions $opts
+ * @return array
+ */
+ public function buildMainQueryConds( FormOptions $opts ) {
+ $dbr = $this->getDB();
+ $conds = parent::buildMainQueryConds( $opts );
- if ( $values['days'] > 0 ) {
- $conds[] = 'rc_timestamp > ' . $dbr->addQuotes( $dbr->timestamp( time() - intval( $values['days'] * 86400 ) ) );
+ // Calculate cutoff
+ if ( $opts['days'] > 0 ) {
+ $conds[] = 'rc_timestamp > ' . $dbr->addQuotes( $dbr->timestamp( time() - intval( $opts['days'] * 86400 ) ) );
}
- # Toggles
- if ( $values['hideOwn'] ) {
- $conds[] = 'rc_user != ' . $user->getId();
- }
- if ( $values['hideBots'] ) {
- $conds[] = 'rc_bot = 0';
- }
- if ( $values['hideMinor'] ) {
- $conds[] = 'rc_minor = 0';
- }
- if ( $values['hideLiu'] ) {
- $conds[] = 'rc_user = 0';
- }
- if ( $values['hideAnons'] ) {
- $conds[] = 'rc_user != 0';
- }
- if ( $user->useRCPatrol() && $values['hidePatrolled'] ) {
- $conds[] = 'rc_patrolled != 1';
- }
- if ( $nameSpaceClause ) {
- $conds[] = $nameSpaceClause;
- }
+ return $conds;
+ }
+
+ /**
+ * Process the query
+ *
+ * @param array $conds
+ * @param FormOptions $opts
+ * @return bool|ResultWrapper Result or false (for Recentchangeslinked only)
+ */
+ public function doMainQuery( $conds, $opts ) {
+ global $wgShowUpdatedMarker;
+
+ $dbr = $this->getDB();
+ $user = $this->getUser();
# Toggle watchlist content (all recent edits or just the latest)
- if ( $values['extended'] ) {
+ if ( $opts['extended'] ) {
$limitWatchlist = $user->getIntOption( 'wllimit' );
$usePage = false;
} else {
$usePage = true;
}
- # Show a message about slave lag, if applicable
- $lag = wfGetLB()->safeGetLag( $dbr );
- if ( $lag > 0 ) {
- $output->showLagWarning( $lag );
- }
-
- # Create output
- $form = '';
-
- # Show watchlist header
- $form .= "<p>";
- $form .= $this->msg( 'watchlist-details' )->numParams( $nitems )->parse() . "\n";
- if ( $wgEnotifWatchlist && $user->getOption( 'enotifwatchlistpages' ) ) {
- $form .= $this->msg( 'wlheader-enotif' )->parse() . "\n";
- }
- if ( $wgShowUpdatedMarker ) {
- $form .= $this->msg( 'wlheader-showupdated' )->parse() . "\n";
- }
- $form .= "</p>";
-
- if ( $wgShowUpdatedMarker ) {
- $form .= Xml::openElement( 'form', array( 'method' => 'post',
- 'action' => $this->getPageTitle()->getLocalURL(),
- 'id' => 'mw-watchlist-resetbutton' ) ) . "\n" .
- Xml::submitButton( $this->msg( 'enotif_reset' )->text(), array( 'name' => 'dummy' ) ) . "\n" .
- Html::hidden( 'reset', 'all' ) . "\n";
- foreach ( $nondefaults as $key => $value ) {
- $form .= Html::hidden( $key, $value ) . "\n";
- }
- $form .= Xml::closeElement( 'form' ) . "\n";
- }
-
- $form .= Xml::openElement( 'form', array(
- 'method' => 'post',
- 'action' => $this->getPageTitle()->getLocalURL(),
- 'id' => 'mw-watchlist-form'
- ) );
- $form .= Xml::fieldset(
- $this->msg( 'watchlist-options' )->text(),
- false,
- array( 'id' => 'mw-watchlist-options' )
- );
-
- $form .= SpecialRecentChanges::makeLegend( $this->getContext() );
-
$tables = array( 'recentchanges', 'watchlist' );
$fields = RecentChange::selectFields();
+ $query_options = array( 'ORDER BY' => 'rc_timestamp DESC' );
$join_conds = array(
'watchlist' => array(
'INNER JOIN',
),
),
);
- $options = array( 'ORDER BY' => 'rc_timestamp DESC' );
+
if ( $wgShowUpdatedMarker ) {
$fields[] = 'wl_notificationtimestamp';
}
if ( $limitWatchlist ) {
- $options['LIMIT'] = $limitWatchlist;
+ $query_options['LIMIT'] = $limitWatchlist;
}
$rollbacker = $user->isAllowed( 'rollback' );
}
}
- ChangeTags::modifyDisplayQuery( $tables, $fields, $conds, $join_conds, $options, '' );
- wfRunHooks( 'SpecialWatchlistQuery', array( &$conds, &$tables, &$join_conds, &$fields, $values ) );
+ // Log entries with DELETED_ACTION must not show up unless the user has
+ // the necessary rights.
+ if ( !$user->isAllowed( 'deletedhistory' ) ) {
+ $bitmask = LogPage::DELETED_ACTION;
+ } elseif ( !$user->isAllowed( 'suppressrevision' ) ) {
+ $bitmask = LogPage::DELETED_ACTION | LogPage::DELETED_RESTRICTED;
+ } else {
+ $bitmask = 0;
+ }
+ if ( $bitmask ) {
+ $conds[] = $dbr->makeList( array(
+ 'rc_type != ' . RC_LOG,
+ $dbr->bitAnd( 'rc_deleted', $bitmask ) . " != $bitmask",
+ ), LIST_OR );
+ }
- $res = $dbr->select( $tables, $fields, $conds, __METHOD__, $options, $join_conds );
- $numRows = $res->numRows();
- /* Start bottom header */
+ ChangeTags::modifyDisplayQuery(
+ $tables,
+ $fields,
+ $conds,
+ $join_conds,
+ $query_options,
+ ''
+ );
+
+ wfRunHooks( 'SpecialWatchlistQuery',
+ array( &$conds, &$tables, &$join_conds, &$fields, $opts ) );
+
+ return $dbr->select(
+ $tables,
+ $fields,
+ $conds,
+ __METHOD__,
+ $query_options,
+ $join_conds
+ );
+ }
+
+ /**
+ * Return a DatabaseBase object for reading
+ *
+ * @return DatabaseBase
+ */
+ protected function getDB() {
+ return wfGetDB( DB_SLAVE, 'watchlist' );
+ }
+
+ /**
+ * Output feed links.
+ */
+ public function outputFeedLinks() {
+ $user = $this->getUser();
+ $wlToken = $user->getTokenFromOption( 'watchlisttoken' );
+ if ( $wlToken ) {
+ $this->addFeedLinks( array(
+ 'action' => 'feedwatchlist',
+ 'allrev' => 1,
+ 'wlowner' => $user->getName(),
+ 'wltoken' => $wlToken,
+ ) );
+ }
+ }
+
+ /**
+ * Build and output the actual changes list.
+ *
+ * @param ResultWrapper $rows Database rows
+ * @param FormOptions $opts
+ */
+ public function outputChangesList( $rows, $opts ) {
+ global $wgShowUpdatedMarker, $wgRCShowWatchingUsers;
+
+ $dbr = $this->getDB();
+ $user = $this->getUser();
+ $output = $this->getOutput();
+
+ # Show a message about slave lag, if applicable
+ $lag = wfGetLB()->safeGetLag( $dbr );
+ if ( $lag > 0 ) {
+ $output->showLagWarning( $lag );
+ }
+
+ $dbr->dataSeek( $rows, 0 );
+
+ $list = ChangesList::newFromContext( $this->getContext() );
+ $list->setWatchlistDivs();
+
+ $s = $list->beginRecentChangesList();
+ $counter = 1;
+ foreach ( $rows as $obj ) {
+ # Make RC entry
+ $rc = RecentChange::newFromRow( $obj );
+ $rc->counter = $counter++;
+
+ if ( $wgShowUpdatedMarker ) {
+ $updated = $obj->wl_notificationtimestamp;
+ } else {
+ $updated = false;
+ }
+
+ if ( $wgRCShowWatchingUsers && $user->getOption( 'shownumberswatching' ) ) {
+ $rc->numberofWatchingusers = $dbr->selectField( 'watchlist',
+ 'COUNT(*)',
+ array(
+ 'wl_namespace' => $obj->rc_namespace,
+ 'wl_title' => $obj->rc_title,
+ ),
+ __METHOD__ );
+ } else {
+ $rc->numberofWatchingusers = 0;
+ }
+
+ $changeLine = $list->recentChangesLine( $rc, $updated, $counter );
+ if ( $changeLine !== false ) {
+ $s .= $changeLine;
+ }
+ }
+ $s .= $list->endRecentChangesList();
+
+ if ( $rows->numRows() == 0 ) {
+ $output->wrapWikiMsg(
+ "<div class='mw-changeslist-empty'>\n$1\n</div>", 'recentchanges-noresult'
+ );
+ } else {
+ $output->addHTML( $s );
+ }
+ }
+
+ /**
+ * Return the text to be displayed above the changes
+ *
+ * @param FormOptions $opts
+ * @return string XHTML
+ */
+ public function doHeader( $opts ) {
+ $user = $this->getUser();
+
+ $this->getOutput()->addSubtitle(
+ $this->msg( 'watchlistfor2', $user->getName() )
+ ->rawParams( SpecialEditWatchlist::buildTools( null ) )
+ );
+
+ $this->setTopText( $opts );
$lang = $this->getLanguage();
$wlInfo = '';
- if ( $values['days'] > 0 ) {
+ if ( $opts['days'] > 0 ) {
$timestamp = wfTimestampNow();
- $wlInfo = $this->msg( 'wlnote' )->numParams( $numRows, round( $values['days'] * 24 ) )->params(
+ $wlInfo = $this->msg( 'wlnote2' )->numParams( round( $opts['days'] * 24 ) )->params(
$lang->userDate( $timestamp, $user ), $lang->userTime( $timestamp, $user ) )->parse() . "<br />\n";
}
- $cutofflinks = $this->cutoffLinks( $values['days'], $nondefaults ) . "<br />\n";
+ $nondefaults = $opts->getChangedValues();
+ $cutofflinks = $this->cutoffLinks( $opts['days'], $nondefaults ) . "<br />\n";
# Spit out some control panel links
$filters = array(
- 'hideMinor' => 'rcshowhideminor',
- 'hideBots' => 'rcshowhidebots',
- 'hideAnons' => 'rcshowhideanons',
- 'hideLiu' => 'rcshowhideliu',
- 'hideOwn' => 'rcshowhidemine',
- 'hidePatrolled' => 'rcshowhidepatr'
+ 'hideminor' => 'rcshowhideminor',
+ 'hidebots' => 'rcshowhidebots',
+ 'hideanons' => 'rcshowhideanons',
+ 'hideliu' => 'rcshowhideliu',
+ 'hidemyself' => 'rcshowhidemine',
+ 'hidepatrolled' => 'rcshowhidepatr'
);
- foreach ( $this->customFilters as $key => $params ) {
+ foreach ( $this->getCustomFilters() as $key => $params ) {
$filters[$key] = $params['msg'];
}
// Disable some if needed
if ( !$user->useNPPatrol() ) {
- unset( $filters['hidePatrolled'] );
+ unset( $filters['hidepatrolled'] );
}
$links = array();
foreach ( $filters as $name => $msg ) {
- $links[] = $this->showHideLink( $nondefaults, $msg, $name, $values[$name] );
+ $links[] = $this->showHideLink( $nondefaults, $msg, $name, $opts[$name] );
}
$hiddenFields = $nondefaults;
unset( $hiddenFields['invert'] );
unset( $hiddenFields['associated'] );
+ # Create output
+ $form = '';
+
# Namespace filter and put the whole form together.
$form .= $wlInfo;
$form .= $cutofflinks;
$form .= "<hr />\n<p>";
$form .= Html::namespaceSelector(
array(
- 'selected' => $nameSpace,
+ 'selected' => $opts['namespace'],
'all' => '',
'label' => $this->msg( 'namespace' )->text()
), array(
$this->msg( 'invert' )->text(),
'invert',
'nsinvert',
- $invert,
+ $opts['invert'],
array( 'title' => $this->msg( 'tooltip-invert' )->text() )
) . ' ';
$form .= Xml::checkLabel(
$this->msg( 'namespace_association' )->text(),
'associated',
- 'associated',
- $associated,
+ 'nsassociated',
+ $opts['associated'],
array( 'title' => $this->msg( 'tooltip-namespace_association' )->text() )
) . ' ';
$form .= Xml::submitButton( $this->msg( 'allpagessubmit' )->text() ) . "</p>\n";
}
$form .= Xml::closeElement( 'fieldset' ) . "\n";
$form .= Xml::closeElement( 'form' ) . "\n";
- $output->addHTML( $form );
-
- # If there's nothing to show, stop here
- if ( $numRows == 0 ) {
- $output->wrapWikiMsg(
- "<div class='mw-changeslist-empty'>\n$1\n</div>", 'recentchanges-noresult'
- );
- return;
- }
+ $this->getOutput()->addHTML( $form );
- /* End bottom header */
+ $this->setBottomText( $opts );
+ }
- /* Do link batch query */
- $linkBatch = new LinkBatch;
- foreach ( $res as $row ) {
- $userNameUnderscored = str_replace( ' ', '_', $row->rc_user_text );
- if ( $row->rc_user != 0 ) {
- $linkBatch->add( NS_USER, $userNameUnderscored );
- }
- $linkBatch->add( NS_USER_TALK, $userNameUnderscored );
+ function setTopText( FormOptions $opts ) {
+ global $wgEnotifWatchlist, $wgShowUpdatedMarker;
- $linkBatch->add( $row->rc_namespace, $row->rc_title );
- }
- $linkBatch->execute();
- $dbr->dataSeek( $res, 0 );
+ $nondefaults = $opts->getChangedValues();
+ $form = "";
+ $user = $this->getUser();
- $list = ChangesList::newFromContext( $this->getContext() );
- $list->setWatchlistDivs();
+ $dbr = $this->getDB();
+ $numItems = $this->countItems( $dbr );
- $s = $list->beginRecentChangesList();
- $counter = 1;
- foreach ( $res as $obj ) {
- # Make RC entry
- $rc = RecentChange::newFromRow( $obj );
- $rc->counter = $counter++;
-
- if ( $wgShowUpdatedMarker ) {
- $updated = $obj->wl_notificationtimestamp;
- } else {
- $updated = false;
+ // Show watchlist header
+ $form .= "<p>";
+ if ( $numItems == 0 ) {
+ $form .= $this->msg( 'nowatchlist' )->parse() . "\n";
+ } else {
+ $form .= $this->msg( 'watchlist-details' )->numParams( $numItems )->parse() . "\n";
+ if ( $wgEnotifWatchlist && $user->getOption( 'enotifwatchlistpages' ) ) {
+ $form .= $this->msg( 'wlheader-enotif' )->parse() . "\n";
}
-
- if ( $wgRCShowWatchingUsers && $user->getOption( 'shownumberswatching' ) ) {
- $rc->numberofWatchingusers = $dbr->selectField( 'watchlist',
- 'COUNT(*)',
- array(
- 'wl_namespace' => $obj->rc_namespace,
- 'wl_title' => $obj->rc_title,
- ),
- __METHOD__ );
- } else {
- $rc->numberofWatchingusers = 0;
+ if ( $wgShowUpdatedMarker ) {
+ $form .= $this->msg( 'wlheader-showupdated' )->parse() . "\n";
}
+ }
+ $form .= "</p>";
- $changeLine = $list->recentChangesLine( $rc, $updated, $counter );
- if ( $changeLine !== false ) {
- $s .= $changeLine;
+ if ( $numItems > 0 && $wgShowUpdatedMarker ) {
+ $form .= Xml::openElement( 'form', array( 'method' => 'post',
+ 'action' => $this->getPageTitle()->getLocalURL(),
+ 'id' => 'mw-watchlist-resetbutton' ) ) . "\n" .
+ Xml::submitButton( $this->msg( 'enotif_reset' )->text(), array( 'name' => 'dummy' ) ) . "\n" .
+ Html::hidden( 'reset', 'all' ) . "\n";
+ foreach ( $nondefaults as $key => $value ) {
+ $form .= Html::hidden( $key, $value ) . "\n";
}
+ $form .= Xml::closeElement( 'form' ) . "\n";
}
- $s .= $list->endRecentChangesList();
- $output->addHTML( $s );
+ $form .= Xml::openElement( 'form', array(
+ 'method' => 'post',
+ 'action' => $this->getPageTitle()->getLocalURL(),
+ 'id' => 'mw-watchlist-form'
+ ) );
+ $form .= Xml::fieldset(
+ $this->msg( 'watchlist-options' )->text(),
+ false,
+ array( 'id' => 'mw-watchlist-options' )
+ );
+
+ $form .= SpecialRecentChanges::makeLegend( $this->getContext() );
+
+ $this->getOutput()->addHTML( $form );
}
protected function showHideLink( $options, $message, $name, $value ) {
*/
protected function countItems( $dbr ) {
# Fetch the raw count
- $res = $dbr->select( 'watchlist', array( 'count' => 'COUNT(*)' ),
+ $rows = $dbr->select( 'watchlist', array( 'count' => 'COUNT(*)' ),
array( 'wl_user' => $this->getUser()->getId() ), __METHOD__ );
- $row = $dbr->fetchObject( $res );
+ $row = $dbr->fetchObject( $rows );
$count = $row->count;
return floor( $count / 2 );
}
-
- protected function getGroupName() {
- return 'changes';
- }
}
$this->getMsg( $this->data['loggedin'] ? 'createacct-another-submit' : 'createacct-submit' ),
'submit',
array(
- 'class' => "mw-ui-button mw-ui-big mw-ui-block mw-ui-primary",
+ 'class' => "mw-ui-button mw-ui-big mw-ui-block mw-ui-constructive",
'id' => 'wpCreateaccount',
'tabindex' => $tabIndex++
)
echo Html::input( 'wpLoginAttempt', $this->getMsg( 'login' )->text(), 'submit', array(
'id' => 'wpLoginAttempt',
'tabindex' => '6',
- 'class' => 'mw-ui-button mw-ui-big mw-ui-block mw-ui-primary'
+ 'class' => 'mw-ui-button mw-ui-big mw-ui-block mw-ui-constructive'
) );
?>
</div>
<?php if ( $this->haveData( 'createOrLoginHref' ) ) { ?>
<?php if ( $this->data['loggedin'] ) { ?>
<div id="mw-createaccount-another">
- <h3 id="mw-userloginlink"><a href="<?php $this->text( 'createOrLoginHref' ); ?>" id="mw-createaccount-join" tabindex="7" class="mw-ui-button"><?php $this->msg( 'userlogin-createanother' ); ?></a></h3>
+ <a href="<?php $this->text( 'createOrLoginHref' ); ?>" id="mw-createaccount-join" tabindex="7" class="mw-ui-button"><?php $this->msg( 'userlogin-createanother' ); ?></a>
</div>
<?php } else { ?>
<div id="mw-createaccount-cta">
- <h3 id="mw-userloginlink"><?php $this->msg( 'userlogin-noaccount' ); ?><a href="<?php $this->text( 'createOrLoginHref' ); ?>" id="mw-createaccount-join" tabindex="7" class="mw-ui-button mw-ui-constructive"><?php $this->msg( 'userlogin-joinproject' ); ?></a></h3>
+ <?php $this->msg( 'userlogin-noaccount' ); ?><a href="<?php $this->text( 'createOrLoginHref' ); ?>" id="mw-createaccount-join" tabindex="7" class="mw-ui-button mw-ui-progressive"><?php $this->msg( 'userlogin-joinproject' ); ?></a>
</div>
<?php } ?>
<?php } ?>
* UploadBase and subclasses are the backend of MediaWiki's file uploads.
* The frontends are formed by ApiUpload and SpecialUpload.
*
- * See also includes/docs/upload.txt
- *
* @author Brion Vibber
* @author Bryan Tong Minh
* @author Michael Dale
return array( 'uploadscripted' );
}
if ( $this->mFinalExtension == 'svg' || $mime == 'image/svg+xml' ) {
- if ( $this->detectScriptInSvg( $this->mTempPath ) ) {
+ $svgStatus = $this->detectScriptInSvg( $this->mTempPath );
+ if ( $svgStatus !== false ) {
wfProfileOut( __METHOD__ );
- return array( 'uploadscripted' );
+ return $svgStatus;
}
}
}
// Check dupes against archives
$archivedImage = new ArchivedFile( null, 0, "{$hash}.{$this->mFinalExtension}" );
if ( $archivedImage->getID() > 0 ) {
- $warnings['duplicate-archive'] = $archivedImage->getName();
+ if ( $archivedImage->userCan( File::DELETED_FILE ) ) {
+ $warnings['duplicate-archive'] = $archivedImage->getName();
+ } else {
+ $warnings['duplicate-archive'] = '';
+ }
}
wfProfileOut( __METHOD__ );
# exclamation mark, so restrict file name to 240 bytes.
if ( strlen( $this->mFilteredName ) > 240 ) {
$this->mTitleError = self::FILENAME_TOO_LONG;
- return $this->mTitle = null;
+ $this->mTitle = null;
+ return $this->mTitle;
}
/**
$nt = Title::makeTitleSafe( NS_FILE, $this->mFilteredName );
if ( is_null( $nt ) ) {
$this->mTitleError = self::ILLEGAL_FILENAME;
- return $this->mTitle = null;
+ $this->mTitle = null;
+ return $this->mTitle;
}
$this->mFilteredName = $nt->getDBkey();
if ( $this->mFinalExtension == '' ) {
$this->mTitleError = self::FILETYPE_MISSING;
- return $this->mTitle = null;
+ $this->mTitle = null;
+ return $this->mTitle;
} elseif ( $blackListedExtensions ||
( $wgCheckFileExtensions && $wgStrictFileExtensions &&
!$this->checkFileExtensionList( $ext, $wgFileExtensions ) ) ) {
$this->mBlackListedExtensions = $blackListedExtensions;
$this->mTitleError = self::FILETYPE_BADTYPE;
- return $this->mTitle = null;
+ $this->mTitle = null;
+ return $this->mTitle;
}
// Windows may be broken with special characters, see bug XXX
if ( wfIsWindows() && !preg_match( '/^[\x0-\x7f]*$/', $nt->getText() ) ) {
$this->mTitleError = self::WINDOWS_NONASCII_FILENAME;
- return $this->mTitle = null;
+ $this->mTitle = null;
+ return $this->mTitle;
}
# If there was more than one "extension", reassemble the base
if ( strlen( $partname ) < 1 ) {
$this->mTitleError = self::MIN_LENGTH_PARTNAME;
- return $this->mTitle = null;
+ $this->mTitle = null;
+ return $this->mTitle;
}
- return $this->mTitle = $nt;
+ $this->mTitle = $nt;
+ return $this->mTitle;
}
/**
/**
* @param $filename string
- * @return bool
+ * @return mixed false of the file is verified (does not contain scripts), array otherwise.
*/
protected function detectScriptInSvg( $filename ) {
- $check = new XmlTypeCheck( $filename, array( $this, 'checkSvgScriptCallback' ) );
- return $check->filterMatch;
+ $check = new XmlTypeCheck(
+ $filename,
+ array( $this, 'checkSvgScriptCallback' ),
+ true,
+ array( 'processing_instruction_handler' => 'UploadBase::checkSvgPICallback' )
+ );
+ if ( $check->wellFormed !== true ) {
+ // Invalid xml (bug 58553)
+ return array( 'uploadinvalidxml' );
+ } elseif ( $check->filterMatch ) {
+ return array( 'uploadscripted' );
+ }
+ return false;
+ }
+
+ /**
+ * Callback to filter SVG Processing Instructions.
+ * @param $target string processing instruction name
+ * @param $data string processing instruction attribute and value
+ * @return bool (true if the filter identified something bad)
+ */
+ public static function checkSvgPICallback( $target, $data ) {
+ // Don't allow external stylesheets (bug 57550)
+ if ( preg_match( '/xml-stylesheet/i', $target) ) {
+ return true;
+ }
+ return false;
}
/**
'us_key' => $key,
'us_orig_path' => $path,
'us_path' => $stashPath, // virtual URL
- 'us_props' => serialize( $fileProps ),
+ 'us_props' => $dbw->encodeBlob( serialize( $fileProps ) ),
'us_size' => $fileProps['size'],
'us_sha1' => $fileProps['sha1'],
'us_mime' => $fileProps['mime'],
<?php
+/**
+ * Methods to play with arrays.
+ *
+ * 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
+ */
+/**
+ * A collection of static methods to play with arrays.
+ *
+ * @since 1.21
+ */
class ArrayUtils {
/**
* Sort the given array in a pseudo-random order which depends only on the
return $i;
}
+
+ /**
+ * Do a binary search, and return the index of the largest item that sorts
+ * less than or equal to the target value.
+ *
+ * @since 1.23
+ *
+ * @param array $valueCallback A function to call to get the value with
+ * a given array index.
+ * @param int $valueCount The number of items accessible via $valueCallback,
+ * indexed from 0 to $valueCount - 1
+ * @param array $comparisonCallback A callback to compare two values, returning
+ * -1, 0 or 1 in the style of strcmp().
+ * @param string $target The target value to find.
+ *
+ * @return int|bool The item index of the lower bound, or false if the target value
+ * sorts before all items.
+ */
+ public static function findLowerBound( $valueCallback, $valueCount, $comparisonCallback, $target ) {
+ if ( $valueCount === 0 ) {
+ return false;
+ }
+
+ $min = 0;
+ $max = $valueCount;
+ do {
+ $mid = $min + ( ( $max - $min ) >> 1 );
+ $item = call_user_func( $valueCallback, $mid );
+ $comparison = call_user_func( $comparisonCallback, $target, $item );
+ if ( $comparison > 0 ) {
+ $min = $mid;
+ } elseif ( $comparison == 0 ) {
+ $min = $mid;
+ break;
+ } else {
+ $max = $mid;
+ }
+ } while ( $min < $max - 1 );
+
+ if ( $min == 0 ) {
+ $item = call_user_func( $valueCallback, $min );
+ $comparison = call_user_func( $comparisonCallback, $target, $item );
+ if ( $comparison < 0 ) {
+ // Before the first item
+ return false;
+ }
+ }
+ return $min;
+ }
+
+ /**
+ * Do array_diff_assoc() on multi-dimensional arrays.
+ *
+ * Note: empty arrays are removed.
+ *
+ * @since 1.23
+ *
+ * @param array $array1 The array to compare from
+ * @param array $array2 An array to compare against
+ * @param array ... More arrays to compare against
+ * @return array An array containing all the values from array1
+ * that are not present in any of the other arrays.
+ */
+ public static function arrayDiffAssocRecursive( $array1 ) {
+ $arrays = func_get_args();
+ array_shift( $arrays );
+ $ret = array();
+
+ foreach ( $array1 as $key => $value ) {
+ if ( is_array( $value ) ) {
+ $args = array( $value );
+ foreach ( $arrays as $array ) {
+ if ( isset( $array[$key] ) ) {
+ $args[] = $array[$key];
+ }
+ }
+ $valueret = call_user_func_array( __METHOD__, $args );
+ if ( count( $valueret ) ) {
+ $ret[$key] = $valueret;
+ }
+ } else {
+ foreach ( $arrays as $array ) {
+ if ( isset( $array[$key] ) && $array[$key] === $value ) {
+ continue 2;
+ }
+ }
+ $ret[$key] = $value;
+ }
+ }
+
+ return $ret;
+ }
}
+++ /dev/null
-<?php
-/**
- * Convenience class for weighted consistent hash rings.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- * http://www.gnu.org/copyleft/gpl.html
- *
- * @file
- * @author Aaron Schulz
- */
-
-/**
- * Convenience class for weighted consistent hash rings
- *
- * @since 1.22
- */
-class HashRing {
- /** @var Array (location => weight) */
- protected $sourceMap = array();
- /** @var Array (location => (start, end)) */
- protected $ring = array();
-
- const RING_SIZE = 268435456; // 2^28
-
- /**
- * @param array $map (location => weight)
- */
- public function __construct( array $map ) {
- $map = array_filter( $map, function ( $w ) {
- return $w > 0;
- } );
- if ( !count( $map ) ) {
- throw new MWException( "Ring is empty or all weights are zero." );
- }
- $this->sourceMap = $map;
- // Sort the locations based on the hash of their names
- $hashes = array();
- foreach ( $map as $location => $weight ) {
- $hashes[$location] = sha1( $location );
- }
- uksort( $map, function ( $a, $b ) use ( $hashes ) {
- return strcmp( $hashes[$a], $hashes[$b] );
- } );
- // Fit the map to weight-proportionate one with a space of size RING_SIZE
- $sum = array_sum( $map );
- $standardMap = array();
- foreach ( $map as $location => $weight ) {
- $standardMap[$location] = (int)floor( $weight / $sum * self::RING_SIZE );
- }
- // Build a ring of RING_SIZE spots, with each location at a spot in location hash order
- $index = 0;
- foreach ( $standardMap as $location => $weight ) {
- // Location covers half-closed interval [$index,$index + $weight)
- $this->ring[$location] = array( $index, $index + $weight );
- $index += $weight;
- }
- // Make sure the last location covers what is left
- end( $this->ring );
- $this->ring[key( $this->ring )][1] = self::RING_SIZE;
- }
-
- /**
- * Get the location of an item on the ring
- *
- * @param string $item
- * @return string Location
- */
- public function getLocation( $item ) {
- $locations = $this->getLocations( $item, 1 );
-
- return $locations[0];
- }
-
- /**
- * Get the location of an item on the ring, as well as the next clockwise locations
- *
- * @param string $item
- * @param integer $limit Maximum number of locations to return
- * @return array List of locations
- */
- public function getLocations( $item, $limit ) {
- $locations = array();
- $primaryLocation = null;
- $spot = hexdec( substr( sha1( $item ), 0, 7 ) ); // first 28 bits
- foreach ( $this->ring as $location => $range ) {
- if ( count( $locations ) >= $limit ) {
- break;
- }
- // The $primaryLocation is the location the item spot is in.
- // After that is reached, keep appending the next locations.
- if ( ( $range[0] <= $spot && $spot < $range[1] ) || $primaryLocation !== null ) {
- if ( $primaryLocation === null ) {
- $primaryLocation = $location;
- }
- $locations[] = $location;
- }
- }
- // If more locations are requested, wrap-around and keep adding them
- reset( $this->ring );
- while ( count( $locations ) < $limit ) {
- list( $location, ) = each( $this->ring );
- if ( $location === $primaryLocation ) {
- break; // don't go in circles
- }
- $locations[] = $location;
- }
-
- return $locations;
- }
-
- /**
- * Get the map of locations to weight (ignores 0-weight items)
- *
- * @return array
- */
- public function getLocationWeights() {
- return $this->sourceMap;
- }
-
- /**
- * Get a new hash ring with a location removed from the ring
- *
- * @param string $location
- * @return HashRing|bool Returns false if no non-zero weighted spots are left
- */
- public function newWithoutLocation( $location ) {
- $map = $this->sourceMap;
- unset( $map[$location] );
- if ( count( $map ) ) {
- return new self( $map );
- }
-
- return false;
- }
-}
if ( self::isIPv6( $ip ) ) {
$n = self::toUnsigned6( $ip );
} else {
+ // Bug 60035: an IP with leading 0's fails in ip2long sometimes (e.g. *.08)
+ $ip = preg_replace( '/(?<=\.)0+(?=[1-9])/', '', $ip );
$n = ip2long( $ip );
if ( $n < 0 ) {
$n += pow( 2, 32 );
+++ /dev/null
-<?php
-/**
- * Convenience class for generating iterators from iterators.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- * http://www.gnu.org/copyleft/gpl.html
- *
- * @file
- * @author Aaron Schulz
- */
-
-/**
- * Convenience class for generating iterators from iterators.
- *
- * @since 1.21
- */
-class MappedIterator extends FilterIterator {
- /** @var callable */
- protected $vCallback;
- /** @var callable */
- protected $aCallback;
- /** @var array */
- protected $cache = array();
-
- protected $rewound = false; // boolean; whether rewind() has been called
-
- /**
- * Build an new iterator from a base iterator by having the former wrap the
- * later, returning the result of "value" callback for each current() invocation.
- * The callback takes the result of current() on the base iterator as an argument.
- * The keys of the base iterator are reused verbatim.
- *
- * An "accept" callback can also be provided which will be called for each value in
- * the base iterator (post-callback) and will return true if that value should be
- * included in iteration of the MappedIterator (otherwise it will be filtered out).
- *
- * @param Iterator|Array $iter
- * @param callable $vCallback Value transformation callback
- * @param array $options Options map (includes "accept") (since 1.22)
- * @throws MWException
- */
- public function __construct( $iter, $vCallback, array $options = array() ) {
- if ( is_array( $iter ) ) {
- $baseIterator = new ArrayIterator( $iter );
- } elseif ( $iter instanceof Iterator ) {
- $baseIterator = $iter;
- } else {
- throw new MWException( "Invalid base iterator provided." );
- }
- parent::__construct( $baseIterator );
- $this->vCallback = $vCallback;
- $this->aCallback = isset( $options['accept'] ) ? $options['accept'] : null;
- }
-
- public function next() {
- $this->cache = array();
- parent::next();
- }
-
- public function rewind() {
- $this->rewound = true;
- $this->cache = array();
- parent::rewind();
- }
-
- public function accept() {
- $value = call_user_func( $this->vCallback, $this->getInnerIterator()->current() );
- $ok = ( $this->aCallback ) ? call_user_func( $this->aCallback, $value ) : true;
- if ( $ok ) {
- $this->cache['current'] = $value;
- }
-
- return $ok;
- }
-
- public function key() {
- $this->init();
-
- return parent::key();
- }
-
- public function valid() {
- $this->init();
-
- return parent::valid();
- }
-
- public function current() {
- $this->init();
- if ( parent::valid() ) {
- return $this->cache['current'];
- } else {
- return null; // out of range
- }
- }
-
- /**
- * Obviate the usual need for rewind() before using a FilterIterator in a manual loop
- */
- protected function init() {
- if ( !$this->rewound ) {
- $this->rewind();
- }
- }
-}
protected $fileHandles = array(); // cache file handles
const QUICK_RAND = 1; // get randomness from fast and insecure sources
+ const QUICK_VOLATILE = 2; // use an APC like in-memory counter if available
protected function __construct() {
$idFile = wfTempDir() . '/mw-' . __CLASS__ . '-UID-nodeid';
return str_replace( '-', '', self::newUUIDv4( $flags ) );
}
+ /**
+ * Return an ID that is sequential *only* for this node and bucket
+ *
+ * These IDs are suitable for per-host sequence numbers, e.g. for some packet protocols.
+ * If UIDGenerator::QUICK_VOLATILE is used the counter might reset on server restart.
+ *
+ * @param string $bucket Arbitrary bucket name (should be ASCII)
+ * @param integer $bits Bit size (<=48) of resulting numbers before wrap-around
+ * @param integer $flags (supports UIDGenerator::QUICK_VOLATILE)
+ * @return float Integer value as float
+ * @since 1.23
+ */
+ public static function newSequentialPerNodeID( $bucket, $bits = 48, $flags = 0 ) {
+ return current( self::newSequentialPerNodeIDs( $bucket, $bits, 1, $flags ) );
+ }
+
+ /**
+ * Return IDs that are sequential *only* for this node and bucket
+ *
+ * @see UIDGenerator::newSequentialPerNodeID()
+ * @param string $bucket Arbitrary bucket name (should be ASCII)
+ * @param integer $bits Bit size (16 to 48) of resulting numbers before wrap-around
+ * @param integer $count Number of IDs to return (1 to 10000)
+ * @param integer $flags (supports UIDGenerator::QUICK_VOLATILE)
+ * @return array Ordered list of float integer values
+ * @since 1.23
+ */
+ public static function newSequentialPerNodeIDs( $bucket, $bits, $count, $flags = 0 ) {
+ $gen = self::singleton();
+ return $gen->getSequentialPerNodeIDs( $bucket, $bits, $count, $flags );
+ }
+
+ /**
+ * Return IDs that are sequential *only* for this node and bucket
+ *
+ * @see UIDGenerator::newSequentialPerNodeID()
+ * @param string $bucket Arbitrary bucket name (should be ASCII)
+ * @param integer $bits Bit size (16 to 48) of resulting numbers before wrap-around
+ * @param integer $count Number of IDs to return (1 to 10000)
+ * @param integer $flags (supports UIDGenerator::QUICK_VOLATILE)
+ * @return array Ordered list of float integer values
+ */
+ protected function getSequentialPerNodeIDs( $bucket, $bits, $count, $flags ) {
+ if ( $count <= 0 ) {
+ return array(); // nothing to do
+ } elseif ( $count > 10000 ) {
+ throw new MWException( "Number of requested IDs ($count) is too high." );
+ } elseif ( $bits < 16 || $bits > 48 ) {
+ throw new MWException( "Requested bit size ($bits) is out of range." );
+ }
+
+ $counter = null; // post-increment persistent counter value
+
+ // Use APC/eAccelerator/xcache if requested, available, and not in CLI mode;
+ // Counter values would not survive accross script instances in CLI mode.
+ $cache = null;
+ if ( ( $flags & self::QUICK_VOLATILE ) && PHP_SAPI !== 'cli' ) {
+ try {
+ $cache = ObjectCache::newAccelerator( array() );
+ } catch ( MWException $e ) {} // not supported
+ }
+ if ( $cache ) {
+ $counter = $cache->incr( $bucket, $count );
+ if ( $counter === false ) {
+ if ( !$cache->add( $bucket, $count ) ) {
+ throw new MWException( 'Unable to set value to ' . get_class( $cache ) );
+ }
+ $counter = $count;
+ }
+ }
+
+ // Note: use of fmod() avoids "division by zero" on 32 bit machines
+ if ( $counter === null ) {
+ $path = wfTempDir() . '/mw-' . __CLASS__ . '-' . rawurlencode( $bucket ) . '-48';
+ // Get the UID lock file handle
+ if ( isset( $this->fileHandles[$path] ) ) {
+ $handle = $this->fileHandles[$path];
+ } else {
+ $handle = fopen( $path, 'cb+' );
+ $this->fileHandles[$path] = $handle ?: null; // cache
+ }
+ // Acquire the UID lock file
+ if ( $handle === false ) {
+ throw new MWException( "Could not open '{$path}'." );
+ } elseif ( !flock( $handle, LOCK_EX ) ) {
+ fclose( $handle );
+ throw new MWException( "Could not acquire '{$path}'." );
+ }
+ // Fetch the counter value and increment it...
+ rewind( $handle );
+ $counter = floor( trim( fgets( $handle ) ) ) + $count; // fetch as float
+ // Write back the new counter value
+ ftruncate( $handle, 0 );
+ rewind( $handle );
+ fwrite( $handle, fmod( $counter, pow( 2, 48 ) ) ); // warp-around as needed
+ fflush( $handle );
+ // Release the UID lock file
+ flock( $handle, LOCK_UN );
+ }
+
+ $ids = array();
+ $divisor = pow( 2, $bits );
+ $currentId = floor( $counter - $count ); // pre-increment counter value
+ for ( $i = 0; $i < $count; ++$i ) {
+ $ids[] = fmod( ++$currentId, $divisor );
+ }
+
+ return $ids;
+ }
+
/**
* Get a (time,counter,clock sequence) where (time,counter) is higher
* than any previous (time,counter) value for the given clock sequence.
if ( $handle === false ) {
throw new MWException( "Could not open '{$this->$lockFile}'." );
} elseif ( !flock( $handle, LOCK_EX ) ) {
+ fclose( $handle );
throw new MWException( "Could not acquire '{$this->$lockFile}'." );
}
// Get the current timestamp, clock sequence number, last time, and counter
function getParsedTitle() { return ''; }
function markNoConversion( $text, $noParse = false ) { return $text; }
function convertCategoryKey( $key ) { return $key; }
- function convertLinkToAllVariants( $text ) { return $this->autoConvertToAllVariants( $text ); }
/** @deprecated since 1.22 is no longer used */
function armourMath( $text ) { return $text; }
function validateVariant( $variant = null ) { return $variant === $this->mLang->getCode() ? $variant : null; }
$this->mConverter->findVariantLink( $link, $nt, $ignoreOtherCond );
}
- /**
- * If a language supports multiple variants, converts text
- * into an array of all possible variants of the text:
- * 'variant' => text in that variant
- *
- * @deprecated since 1.17 Use autoConvertToAllVariants()
- *
- * @param $text string
- *
- * @return string
- */
- public function convertLinkToAllVariants( $text ) {
- return $this->mConverter->convertLinkToAllVariants( $text );
- }
-
/**
* returns language specific options used by User::getPageRenderHash()
* for example, the preferred language variant
$ret = $wgRequest->getVal( 'uselang' );
}
- return $this->mURLVariant = $this->validateVariant( $ret );
+ $this->mURLVariant = $this->validateVariant( $ret );
+ return $this->mURLVariant;
}
/**
$ret = $wgUser->getOption( 'language' );
}
- return $this->mUserVariant = $this->validateVariant( $ret );
+ $this->mUserVariant = $this->validateVariant( $ret );
+ return $this->mUserVariant;
}
/**
return $ret;
}
- /**
- * Convert link text to all valid variants.
- * In the first, this function only convert text outside the
- * "-{" "}-" markups. Since the "{" and "}" are not allowed in
- * titles, the text will get all converted always.
- * So I removed this feature and deprecated the function.
- *
- * @param $text String: the text to be converted
- * @return Array: variant => converted text
- * @deprecated since 1.17 Use autoConvertToAllVariants() instead
- */
- public function convertLinkToAllVariants( $text ) {
- return $this->autoConvertToAllVariants( $text );
- }
-
/**
* Apply manual conversion rules.
*
* @see http://be-x-old.wikipedia.org/wiki/Project_talk:LanguageBe_tarask.php
*/
class LanguageBe_tarask extends Language {
- /**
- * Plural form transformations
- *
- * $wordform1 - singular form (for 1, 21, 31, 41...)
- * $wordform2 - plural form (for 2, 3, 4, 22, 23, 24, 32, 33, 34...)
- * $wordform3 - plural form (for 0, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 25, 26...)
- */
-
- /**
- * @param $count int
- * @param $forms array
- *
- * @return string
- */
- function convertPlural( $count, $forms ) {
- $forms = $this->handleExplicitPluralForms( $count, $forms );
- if ( is_string( $forms ) ) {
- return $forms;
- }
- if ( !count( $forms ) ) {
- return '';
- }
-
- // If the actual number is not mentioned in the expression, then just two forms are enough:
- // singular for $count == 1
- // plural for $count != 1
- // For example, "This user belongs to {{PLURAL:$1|one group|several groups}}."
- if ( count( $forms ) === 2 ) {
- return $count == 1 ? $forms[0] : $forms[1];
- }
-
- // @todo FIXME: CLDR defines 4 plural forms instead of 3
- // http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html
- $forms = $this->preConvertPlural( $forms, 3 );
-
- if ( $count > 10 && floor( ( $count % 100 ) / 10 ) == 1 ) {
- return $forms[2];
- } else {
- switch ( $count % 10 ) {
- case 1: return $forms[0];
- case 2:
- case 3:
- case 4: return $forms[1];
- default: return $forms[2];
- }
- }
- }
-
/**
* The Belarusian language uses apostrophe sign,
* but the characters used for this could be both U+0027 and U+2019.
+++ /dev/null
-<?php
-/**
- * Croatian (hrvatski) specific code.
- *
- * 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 Language
- */
-
-/**
- * Croatian (hrvatski)
- *
- * @ingroup Language
- */
-class LanguageHr extends Language {
-
- /**
- * @param $count int
- * @param $forms array
- * @return string
- */
- function convertPlural( $count, $forms ) {
- $forms = $this->handleExplicitPluralForms( $count, $forms );
- if ( is_string( $forms ) ) {
- return $forms;
- }
- if ( !count( $forms ) ) {
- return '';
- }
- // @todo FIXME: CLDR defines 4 plural forms instead of 3. Plural for for decimals is missing.
- // http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html
- $forms = $this->preConvertPlural( $forms, 3 );
-
- if ( $count > 10 && floor( ( $count % 100 ) / 10 ) == 1 ) {
- return $forms[2];
- } else {
- switch ( $count % 10 ) {
- case 1: return $forms[0];
- case 2:
- case 3:
- case 4: return $forms[1];
- default: return $forms[2];
- }
- }
- }
-}
return $wgGrammarForms['ru'][$case][$word];
}
- # These rules are not perfect, but they are currently only used for Wikimedia site names so it doesn't
- # matter if they are wrong sometimes. Just add a special case for your site name if necessary.
+ # These rules are not perfect, but they are currently only used for Wikimedia
+ # site names so it doesn't matter if they are wrong sometimes.
+ # Just add a special case for your site name if necessary.
# substr doesn't support Unicode and mb_substr has issues,
# so break it to characters using preg_match_all and then use array_slice and join
return $word;
}
- /**
- * Plural form transformations
- *
- * $forms[0] - singular form (for 1, 21, 31, 41...)
- * $forms[1] - paucal form (for 2, 3, 4, 22, 23, 24, 32, 33, 34...)
- * $forms[2] - plural form (for 0, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 25, 26...)
- *
- * Examples:
- * message with number
- * "Сделано $1 {{PLURAL:$1|изменение|изменения|изменений}}"
- * ("$1 change[s] were made)
- * message without number
- * "Действие не может быть выполнено по {{PLURAL:$1|следующей причине|следующим причинам}}:"
- * ("The action cannot be performed for the following reason[s]")
- * @param $count int
- * @param $forms array
- *
- * @return string
- */
- function convertPlural( $count, $forms ) {
- $forms = $this->handleExplicitPluralForms( $count, $forms );
- if ( is_string( $forms ) ) {
- return $forms;
- }
- if ( !count( $forms ) ) {
- return '';
- }
-
- // If the actual number is not mentioned in the expression, then just two forms are enough:
- // singular for $count === 1
- // plural for $count !== 1
- // For example, "This user belongs to {{PLURAL:$1|one group|several groups}}."
- if ( count( $forms ) === 2 ) {
- return $count === 1 ? $forms[0] : $forms[1];
- }
-
- // @todo FIXME: CLDR defines 4 plural forms. Form with decimals missing.
- // See http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html#ru
- $forms = $this->preConvertPlural( $forms, 3 );
-
- if ( $count > 10 && (int)floor( ( $count % 100 ) / 10 ) === 1 ) {
- return $forms[2];
- }
-
- switch ( $count % 10 ) {
- case 1:
- return $forms[0];
- case 2:
- case 3:
- case 4:
- return $forms[1];
- default:
- return $forms[2];
- }
- }
-
/**
* Four-digit number should be without group commas (spaces)
* See manual of style at http://ru.wikipedia.org/wiki/Википедия:Оформление_статей
*/
require_once __DIR__ . '/../LanguageConverter.php';
-require_once __DIR__ . '/LanguageSr_ec.php';
-require_once __DIR__ . '/LanguageSr_el.php';
/**
* There are two levels of conversion for Serbian: the script level
// regexp for roman numbers
$roman = 'M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})';
- $reg = '/^' . $roman . '$|^' . $roman . $breaks . '|' . $breaks . $roman . '$|' . $breaks . $roman . $breaks . '/';
+ $reg = '/^' . $roman . '$|^' . $roman . $breaks . '|' . $breaks
+ . $roman . '$|' . $breaks . $roman . $breaks . '/';
$matches = preg_split( $reg, $text, -1, PREG_SPLIT_OFFSET_CAPTURE );
$m = array_shift( $matches );
$this->loadTables();
if ( !isset( $this->mTables[$toVariant] ) ) {
- throw new MWException( "Broken variant table: " . implode( ',', array_keys( $this->mTables ) ) );
+ throw new MWException( "Broken variant table: "
+ . implode( ',', array_keys( $this->mTables ) ) );
}
$ret = $this->mTables[$toVariant]->replace( $m[0] );
$mstart = $m[1] + strlen( $m[0] );
*
* @ingroup Language
*/
-class LanguageSr extends LanguageSr_ec {
+class LanguageSr extends Language {
function __construct() {
global $wgHooks;
$this->mConverter = new SrConverter( $this, 'sr', $variants, $variantfallbacks, $flags );
$wgHooks['PageContentSaveComplete'][] = $this->mConverter;
}
-
- /**
- * @param $count int
- * @param $forms array
- *
- * @return string
- */
- function convertPlural( $count, $forms ) {
- $forms = $this->handleExplicitPluralForms( $count, $forms );
- if ( is_string( $forms ) ) {
- return $forms;
- }
- if ( !count( $forms ) ) {
- return '';
- }
-
- // If the actual number is not mentioned in the expression, then just two forms are enough:
- // singular for $count == 1
- // plural for $count != 1
- // For example, "This user belongs to {{PLURAL:$1|one group|several groups}}."
- if ( count( $forms ) === 2 ) {
- return $count == 1 ? $forms[0] : $forms[1];
- }
-
- // @todo FIXME: CLDR defines 4 plural forms. Form with decimals missing.
- // See http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html#ru
- $forms = $this->preConvertPlural( $forms, 3 );
-
- if ( $count > 10 && floor( ( $count % 100 ) / 10 ) == 1 ) {
- return $forms[2];
- } else {
- switch ( $count % 10 ) {
- case 1: return $forms[0];
- case 2:
- case 3:
- case 4: return $forms[1];
- default: return $forms[2];
- }
- }
- }
}
+++ /dev/null
-<?php
-/**
- * Serbian (cyrillic script) specific code.
- *
- * 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 Language
- */
-
-/**
- * Serbian (cyrillic script)
- *
- * @ingroup Language
- */
-class LanguageSr_ec extends Language {
-
- /**
- * @param $count int
- * @param $forms array
- * @return string
- */
- function convertPlural( $count, $forms ) {
- $forms = $this->handleExplicitPluralForms( $count, $forms );
- if ( is_string( $forms ) ) {
- return $forms;
- }
- if ( !count( $forms ) ) {
- return '';
- }
- $forms = $this->preConvertPlural( $forms, 3 );
-
- if ( $count > 10 && floor( ( $count % 100 ) / 10 ) == 1 ) {
- return $forms[2];
- } else {
- switch ( $count % 10 ) {
- case 1: return $forms[0];
- case 2:
- case 3:
- case 4: return $forms[1];
- default: return $forms[2];
- }
- }
- }
-}
+++ /dev/null
-<?php
-/**
- * Serbian (latin script) specific code.
- *
- * 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 Language
- */
-
-/**
- * Serbian (latin script)
- *
- * @ingroup Language
- */
-class LanguageSr_el extends Language {
-
- /**
- * @param $count int
- * @param $forms array
- * @return string
- */
- function convertPlural( $count, $forms ) {
- $forms = $this->handleExplicitPluralForms( $count, $forms );
- if ( is_string( $forms ) ) {
- return $forms;
- }
- if ( !count( $forms ) ) {
- return '';
- }
- $forms = $this->preConvertPlural( $forms, 3 );
-
- if ( $count > 10 && floor( ( $count % 100 ) / 10 ) == 1 ) {
- return $forms[2];
- } else {
- switch ( $count % 10 ) {
- case 1: return $forms[0];
- case 2:
- case 3:
- case 4: return $forms[1];
- default: return $forms[2];
- }
- }
- }
-}
return $word;
}
- /**
- * @param $count int
- * @param $forms array
- * @return string
- */
- function convertPlural( $count, $forms ) {
- $forms = $this->handleExplicitPluralForms( $count, $forms );
- if ( is_string( $forms ) ) {
- return $forms;
- }
- if ( !count( $forms ) ) {
- return '';
- }
-
- // If the actual number is not mentioned in the expression, then just two forms are enough:
- // singular for $count == 1
- // plural for $count != 1
- // For example, "This user belongs to {{PLURAL:$1|one group|several groups}}."
- if ( count( $forms ) === 2 ) {
- return $count == 1 ? $forms[0] : $forms[1];
- }
-
- // @todo FIXME: CLDR defines 4 plural forms. Form for decimals is missing/
- // See http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html#uk
- $forms = $this->preConvertPlural( $forms, 3 );
-
- if ( $count > 10 && floor( ( $count % 100 ) / 10 ) == 1 ) {
- return $forms[2];
- } else {
- switch ( $count % 10 ) {
- case 1: return $forms[0];
- case 2:
- case 3:
- case 4: return $forms[1];
- default: return $forms[2];
- }
- }
- }
-
/**
* Ukrainian numeric format is "12 345,67" but "1234,56"
*
<!DOCTYPE supplementalData SYSTEM "../../common/dtd/ldmlSupplemental.dtd">
<supplementalData>
<plurals>
- <!--
- The "one" and "two" rules are copied directly from CLDR.
- The "many" rule overrides CLDR, because CLDR seems to have a mistake:
- it's sometimes needed for multiples of 10, but not for 10 itself.
- When the CLDR is fixed, this should be removed.
- -->
- <pluralRules locales="he">
- <pluralRule count="one">n is 1</pluralRule>
- <pluralRule count="two">n is 2</pluralRule>
- <pluralRule count="many">n is not 0 AND n is not 10 AND n mod 10 is 0</pluralRule>
- </pluralRules>
+ <!-- Lower Sorbian (Dolnoserbski) and Upper Sorbian (Hornjoserbsce). Not present in CLDR -->
<pluralRules locales="dsb hsb">
- <pluralRule count="one">n mod 100 is 1</pluralRule>
- <pluralRule count="two">n mod 100 is 2</pluralRule>
- <pluralRule count="few">n mod 100 in 3..4</pluralRule>
+ <pluralRule count="one">n % 100 = 1 @integer 1, 101, 201, 301, …</pluralRule>
+ <pluralRule count="two">n % 100 = 2 @integer 2, 102, 202, 302, …</pluralRule>
+ <pluralRule count="few">n % 100 = 3..4 @integer 3~4, 103~104, …</pluralRule>
+ <pluralRule count="other"> @integer 5, 6, 7, 8, 9, 10, 105, 206, 307, …</pluralRule>
</pluralRules>
- <!-- Copied from "be" -->
+
+ <!-- Belarusian in Taraškievica orthography (Беларуская тарашкевіца). Copied from "be" -->
<pluralRules locales="be-tarask">
- <pluralRule count="one">n mod 10 is 1 and n mod 100 is not 11</pluralRule>
- <pluralRule count="few">n mod 10 in 2..4 and n mod 100 not in 12..14</pluralRule>
- <pluralRule count="many">n mod 10 is 0 or n mod 10 in 5..9 or n mod 100 in 11..14</pluralRule>
- <!-- others are fractions -->
+ <pluralRule count="one">n % 10 = 1 and n % 100 != 11 @integer 1, 21, 31, 41, 51, 61, 71, 81, 101, 1001, … @decimal 1.0, 21.0, 31.0, 41.0, 51.0, 61.0, 71.0, 81.0, 101.0, 1001.0, …</pluralRule>
+ <pluralRule count="few">n % 10 = 2..4 and n % 100 != 12..14 @integer 2~4, 22~24, 32~34, 42~44, 52~54, 62, 102, 1002, … @decimal 2.0, 3.0, 4.0, 22.0, 23.0, 24.0, 32.0, 33.0, 102.0, 1002.0, …</pluralRule>
+ <pluralRule count="many">n % 10 = 0 or n % 10 = 5..9 or n % 100 = 11..14 @integer 0, 5~19, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+ <pluralRule count="other"> @decimal 0.1~0.9, 1.1~1.7, 10.1, 100.1, 1000.1, …</pluralRule>
</pluralRules>
+ <!-- Old Church Slavonic (Ѩзыкъ словѣньскъ). Not present in CLDR -->
<pluralRules locales="cu">
- <pluralRule count="one">n mod 10 is 1</pluralRule>
- <pluralRule count="two">n mod 10 is 2</pluralRule>
- <pluralRule count="few">n mod 10 in 3..4</pluralRule>
+ <pluralRule count="one">n % 10 = 1 @integer 1, 11, 21, 31, …</pluralRule>
+ <pluralRule count="two">n % 10 = 2 @integer 2, 12, 22, 32, …</pluralRule>
+ <pluralRule count="few">n % 10 = 3..4 @integer 3~4, 13~14, 23~24, …</pluralRule>
+ <pluralRule count="other"> @integer 5, 6, 7, 8, 9, 10, 15, 105, 206, 307, …</pluralRule>
</pluralRules>
<!-- Copied from "bh" -->
<pluralRules locales="bho">
- <pluralRule count="one">n in 0..1</pluralRule>
+ <pluralRule count="one">n = 0..1 @integer 0, 1 @decimal 0.0, 1.0, 0.00, 1.00, 0.000, 1.000, 0.0000, 1.0000</pluralRule>
+ <pluralRule count="other"> @integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 0.1~0.9, 1.1~1.7, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
</pluralRules>
+ <!-- Samogitian. Not present in CLDR -->
<pluralRules locales="sgs">
- <pluralRule count="one">n mod 10 is 1 and n mod 100 is not 11</pluralRule>
- <pluralRule count="two">n mod 10 is 2 and n mod 100 is not 12</pluralRule>
- <pluralRule count="few">n is 0 or n mod 100 is 0 or n mod 100 in 10..19</pluralRule>
+ <pluralRule count="one">n % 10 = 1 and n % 100 != 11 @integer 1, 21, 31, 41, 51, 61, 71, 81, 91, 101, 121, …</pluralRule>
+ <pluralRule count="two">n % 10 = 2 and n % 100 != 12 @integer 2, 22, 32, 42, 52, 62, 72, 82, 92, 102, 122, …</pluralRule>
+ <pluralRule count="few">n = 0 or n % 100 = 0 or n % 100 = 10..19 @integer 0, 11, 12, 13, 14, 15, 16, 17, 18, 19, 100, 111,112, …</pluralRule>
+ <pluralRule count="other"> @integer 3, 4, 5, 6, 7, 8, 9, 20, 103, 104, …</pluralRule>
</pluralRules>
- <!-- Override as per https://bugzilla.wikimedia.org/show_bug.cgi?id=47099, porting from CLDR 24 -->
- <pluralRules locales="gv">
- <pluralRule count="one">n mod 10 is 1</pluralRule>
- <pluralRule count="two">n mod 10 is 2</pluralRule>
- <pluralRule count="few">n mod 100 in 0,20,40,60</pluralRule>
+ <pluralRules locales="sr-el sr-ec">
+ <pluralRule count="one">v = 0 and i % 10 = 1 and i % 100 != 11 or f % 10 = 1 and f % 100 != 11 @integer 1, 21, 31, 41, 51, 61, 71, 81, 101, 1001, … @decimal 0.1, 1.1, 2.1, 3.1, 4.1, 5.1, 6.1, 7.1, 10.1, 100.1, 1000.1, …</pluralRule>
+ <pluralRule count="few">v = 0 and i % 10 = 2..4 and i % 100 != 12..14 or f % 10 = 2..4 and f % 100 != 12..14 @integer 2~4, 22~24, 32~34, 42~44, 52~54, 62, 102, 1002, … @decimal 0.2~0.4, 1.2~1.4, 2.2~2.4, 3.2~3.4, 4.2~4.4, 5.2, 10.2, 100.2, 1000.2, …</pluralRule>
+ <pluralRule count="other"> @integer 0, 5~19, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0, 0.5~1.0, 1.5~2.0, 2.5~2.7, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
</pluralRules>
</plurals>
</supplementalData>
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE supplementalData SYSTEM "../../common/dtd/ldmlSupplemental.dtd">
+<!--
+Copyright © 1991-2013 Unicode, Inc.
+CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+For terms of use, see http://www.unicode.org/copyright.html
+-->
<supplementalData>
- <version number="$Revision: 8007 $"/>
- <generation date="$Date: 2013-01-03 07:17:41 +0530 (Thu, 03 Jan 2013) $"/>
- <plurals>
+ <version number="$Revision: 9369 $"/>
+ <generation date="$Date: 2013-09-14 01:26:08 +0530 (ശ, 14 സെപ് 2013) $"/>
+ <plurals type="cardinal">
+ <!-- For a canonicalized list, use GeneratedPluralSamples -->
<!-- if locale is known to have no plurals, there are no rules -->
- <pluralRules locales="az bm bo dz fa id ig ii hu ja jv ka kde kea km kn ko lo ms my sah ses sg th to tr vi wo yo zh"/>
<pluralRules locales="ar">
- <pluralRule count="zero">n is 0</pluralRule>
- <pluralRule count="one">n is 1</pluralRule>
- <pluralRule count="two">n is 2</pluralRule>
- <pluralRule count="few">n mod 100 in 3..10</pluralRule>
- <pluralRule count="many">n mod 100 in 11..99</pluralRule>
- </pluralRules>
- <pluralRules locales="he">
- <pluralRule count="one">n is 1</pluralRule>
- <pluralRule count="two">n is 2</pluralRule>
- <pluralRule count="many">n is not 0 AND n mod 10 is 0</pluralRule>
- </pluralRules>
- <pluralRules locales="asa ast af bem bez bg bn brx ca cgg chr ckb da de dv ee el en eo es et eu fi fo fur fy gl gsw gu ha haw hy is it jgo jmc kaj kcg kk kkj kl ks ksb ku ky lb lg mas mgo ml mn mr nah nb nd ne nl nn nnh no nr ny nyn om or os pa pap ps pt rof rm rwk saq seh sn so sq ss ssy st sv sw syr ta te teo tig tk tn ts ur vo wae ve vun xh xog zu">
- <pluralRule count="one">n is 1</pluralRule>
- </pluralRules>
- <pluralRules locales="ak am bh fil tl guw hi ln mg nso ti wa">
- <pluralRule count="one">n in 0..1</pluralRule>
- </pluralRules>
- <pluralRules locales="ff fr kab">
- <pluralRule count="one">n within 0..2 and n is not 2</pluralRule>
+ <pluralRule count="zero">n = 0 @integer 0 @decimal 0.0, 0.00, 0.000, 0.0000</pluralRule>
+ <pluralRule count="one">n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000</pluralRule>
+ <pluralRule count="two">n = 2 @integer 2 @decimal 2.0, 2.00, 2.000, 2.0000</pluralRule>
+ <pluralRule count="few">n % 100 = 3..10 @integer 3~10, 103~110, 1003, … @decimal 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 103.0, 1003.0, …</pluralRule>
+ <pluralRule count="many">n % 100 = 11..99 @integer 11~26, 111, 1011, … @decimal 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 111.0, 1011.0, …</pluralRule>
+ <pluralRule count="other"> @integer 100~102, 200~202, 300~302, 400~402, 500~502, 600, 1000, 10000, 100000, 1000000, … @decimal 0.1~0.9, 1.1~1.7, 10.1, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+ </pluralRules>
+ <pluralRules locales="he iw">
+ <pluralRule count="one">i = 1 and v = 0 @integer 1</pluralRule>
+ <pluralRule count="two">i = 2 and v = 0 @integer 2</pluralRule>
+ <pluralRule count="many">v = 0 and n != 0..10 and n % 10 = 0 @integer 20, 30, 40, 50, 60, 70, 80, 90, 100, 1000, 10000, 100000, 1000000, …</pluralRule>
+ <pluralRule count="other"> @integer 0, 3~17, 101, 1001, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+ </pluralRules>
+ <pluralRules locales="af asa ast az bem bez bg brx cgg chr ckb dv ee el eo es eu fo fur fy gsw ha haw hu jgo jmc ka kaj kcg kk kkj kl ks ksb ku ky lb lg mas mgo ml mn nah nb nd ne nn nnh no nr ny nyn om or os pap ps rm rof rwk saq seh sn so sq ss ssy st syr ta te teo tig tk tn tr ts uz ve vo vun wae xh xog">
+ <pluralRule count="one">n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000</pluralRule>
+ <pluralRule count="other"> @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+ </pluralRules>
+ <pluralRules locales="ak bh guw ln mg nso pa ti wa">
+ <pluralRule count="one">n = 0..1 @integer 0, 1 @decimal 0.0, 1.0, 0.00, 1.00, 0.000, 1.000, 0.0000, 1.0000</pluralRule>
+ <pluralRule count="other"> @integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 0.1~0.9, 1.1~1.7, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+ </pluralRules>
+ <pluralRules locales="ff fr hy kab">
+ <pluralRule count="one">i = 0,1 @integer 0, 1 @decimal 0.0~1.5</pluralRule>
+ <pluralRule count="other"> @integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 2.0~3.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
</pluralRules>
<pluralRules locales="lv">
- <pluralRule count="zero">n is 0</pluralRule>
- <pluralRule count="one">n mod 10 is 1 and n mod 100 is not 11</pluralRule>
+ <pluralRule count="zero">n % 10 = 0 or n % 100 = 11..19 or v = 2 and f % 100 = 11..19 @integer 0, 10~20, 30, 40, 50, 60, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+ <pluralRule count="one">n % 10 = 1 and n % 100 != 11 or v = 2 and f % 10 = 1 and f % 100 != 11 or v != 2 and f % 10 = 1 @integer 1, 21, 31, 41, 51, 61, 71, 81, 101, 1001, … @decimal 0.1, 1.0, 1.1, 2.1, 3.1, 4.1, 5.1, 6.1, 7.1, 10.1, 100.1, 1000.1, …</pluralRule>
+ <pluralRule count="other"> @integer 2~9, 22~29, 102, 1002, … @decimal 0.2~0.9, 1.2~1.9, 10.2, 100.2, 1000.2, …</pluralRule>
</pluralRules>
<pluralRules locales="iu kw naq se sma smi smj smn sms">
- <pluralRule count="one">n is 1</pluralRule>
- <pluralRule count="two">n is 2</pluralRule>
- </pluralRules>
- <pluralRules locales="ga"> <!-- http://unicode.org/cldr/trac/ticket/3915 -->
- <pluralRule count="one">n is 1</pluralRule>
- <pluralRule count="two">n is 2</pluralRule>
- <pluralRule count="few">n in 3..6</pluralRule>
- <pluralRule count="many">n in 7..10</pluralRule>
- </pluralRules>
- <pluralRules locales="ro mo">
- <pluralRule count="one">n is 1</pluralRule>
- <pluralRule count="few">n is 0 OR n is not 1 AND n mod 100 in 1..19</pluralRule>
+ <pluralRule count="one">n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000</pluralRule>
+ <pluralRule count="two">n = 2 @integer 2 @decimal 2.0, 2.00, 2.000, 2.0000</pluralRule>
+ <pluralRule count="other"> @integer 0, 3~17, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+ </pluralRules>
+ <pluralRules locales="ga">
+ <pluralRule count="one">n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000</pluralRule>
+ <pluralRule count="two">n = 2 @integer 2 @decimal 2.0, 2.00, 2.000, 2.0000</pluralRule>
+ <pluralRule count="few">n = 3..6 @integer 3~6 @decimal 3.0, 4.0, 5.0, 6.0, 3.00, 4.00, 5.00, 6.00, 3.000, 4.000, 5.000, 6.000, 3.0000, 4.0000, 5.0000, 6.0000</pluralRule>
+ <pluralRule count="many">n = 7..10 @integer 7~10 @decimal 7.0, 8.0, 9.0, 10.0, 7.00, 8.00, 9.00, 10.00, 7.000, 8.000, 9.000, 10.000, 7.0000, 8.0000, 9.0000, 10.0000</pluralRule>
+ <pluralRule count="other"> @integer 0, 11~25, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.1, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+ </pluralRules>
+ <pluralRules locales="mo ro">
+ <pluralRule count="one">i = 1 and v = 0 @integer 1</pluralRule>
+ <pluralRule count="few">v != 0 or n = 0 or n != 1 and n % 100 = 1..19 @integer 0, 2~16, 101, 1001, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+ <pluralRule count="other"> @integer 20~35, 100, 1000, 10000, 100000, 1000000, …</pluralRule>
</pluralRules>
<pluralRules locales="lt">
- <pluralRule count="one">n mod 10 is 1 and n mod 100 not in 11..19</pluralRule>
- <pluralRule count="few">n mod 10 in 2..9 and n mod 100 not in 11..19</pluralRule>
+ <pluralRule count="one">n % 10 = 1 and n % 100 != 11..19 @integer 1, 21, 31, 41, 51, 61, 71, 81, 101, 1001, … @decimal 1.0, 21.0, 31.0, 41.0, 51.0, 61.0, 71.0, 81.0, 101.0, 1001.0, …</pluralRule>
+ <pluralRule count="few">n % 10 = 2..9 and n % 100 != 11..19 @integer 2~9, 22~29, 102, 1002, … @decimal 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 22.0, 102.0, 1002.0, …</pluralRule>
+ <pluralRule count="many">f != 0 @decimal 0.1~0.9, 1.1~1.7, 10.1, 100.1, 1000.1, …</pluralRule>
+ <pluralRule count="other"> @integer 0, 10~20, 30, 40, 50, 60, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
</pluralRules>
- <pluralRules locales="be bs hr ru sh sr uk">
- <pluralRule count="one">n mod 10 is 1 and n mod 100 is not 11</pluralRule>
- <pluralRule count="few">n mod 10 in 2..4 and n mod 100 not in 12..14</pluralRule>
- <pluralRule count="many">n mod 10 is 0 or n mod 10 in 5..9 or n mod 100 in 11..14</pluralRule>
- <!-- others are fractions -->
+ <pluralRules locales="be">
+ <pluralRule count="one">n % 10 = 1 and n % 100 != 11 @integer 1, 21, 31, 41, 51, 61, 71, 81, 101, 1001, … @decimal 1.0, 21.0, 31.0, 41.0, 51.0, 61.0, 71.0, 81.0, 101.0, 1001.0, …</pluralRule>
+ <pluralRule count="few">n % 10 = 2..4 and n % 100 != 12..14 @integer 2~4, 22~24, 32~34, 42~44, 52~54, 62, 102, 1002, … @decimal 2.0, 3.0, 4.0, 22.0, 23.0, 24.0, 32.0, 33.0, 102.0, 1002.0, …</pluralRule>
+ <pluralRule count="many">n % 10 = 0 or n % 10 = 5..9 or n % 100 = 11..14 @integer 0, 5~19, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+ <pluralRule count="other"> @decimal 0.1~0.9, 1.1~1.7, 10.1, 100.1, 1000.1, …</pluralRule>
</pluralRules>
<pluralRules locales="cs sk">
- <pluralRule count="one">n is 1</pluralRule>
- <pluralRule count="few">n in 2..4</pluralRule>
+ <pluralRule count="one">i = 1 and v = 0 @integer 1</pluralRule>
+ <pluralRule count="few">i = 2..4 and v = 0 @integer 2~4</pluralRule>
+ <pluralRule count="many">v != 0 @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+ <pluralRule count="other"> @integer 0, 5~19, 100, 1000, 10000, 100000, 1000000, …</pluralRule>
</pluralRules>
<pluralRules locales="pl">
- <pluralRule count="one">n is 1</pluralRule>
- <pluralRule count="few">n mod 10 in 2..4 and n mod 100 not in 12..14</pluralRule>
- <pluralRule count="many">n is not 1 and n mod 10 in 0..1 or n mod 10 in 5..9 or n mod 100 in 12..14</pluralRule>
- <!-- others are fractions -->
- <!-- and n mod 100 not in 22..24 from Tamplin -->
+ <pluralRule count="one">i = 1 and v = 0 @integer 1</pluralRule>
+ <pluralRule count="few">v = 0 and i % 10 = 2..4 and i % 100 != 12..14 @integer 2~4, 22~24, 32~34, 42~44, 52~54, 62, 102, 1002, …</pluralRule>
+ <pluralRule count="many">v = 0 and i != 1 and i % 10 = 0..1 or v = 0 and i % 10 = 5..9 or v = 0 and i % 100 = 12..14 @integer 0, 5~19, 100, 1000, 10000, 100000, 1000000, …</pluralRule>
+ <pluralRule count="other"> @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
</pluralRules>
<pluralRules locales="sl">
- <pluralRule count="one">n mod 100 is 1</pluralRule>
- <pluralRule count="two">n mod 100 is 2</pluralRule>
- <pluralRule count="few">n mod 100 in 3..4</pluralRule>
- </pluralRules>
- <pluralRules locales="mt"> <!-- from Tamplin's data -->
- <pluralRule count="one">n is 1</pluralRule>
- <pluralRule count="few">n is 0 or n mod 100 in 2..10</pluralRule>
- <pluralRule count="many">n mod 100 in 11..19</pluralRule>
- </pluralRules>
- <pluralRules locales="mk"> <!-- from Tamplin's data -->
- <pluralRule count="one">n mod 10 is 1 and n is not 11</pluralRule>
- </pluralRules>
- <pluralRules locales="cy"> <!-- from http://www.saltcymru.org/wordpress/?p=99&lang=en -->
- <pluralRule count="zero">n is 0</pluralRule>
- <pluralRule count="one">n is 1</pluralRule>
- <pluralRule count="two">n is 2</pluralRule>
- <pluralRule count="few">n is 3</pluralRule>
- <pluralRule count="many">n is 6</pluralRule>
+ <pluralRule count="one">v = 0 and i % 100 = 1 @integer 1, 101, 201, 301, 401, 501, 601, 701, 1001, …</pluralRule>
+ <pluralRule count="two">v = 0 and i % 100 = 2 @integer 2, 102, 202, 302, 402, 502, 602, 702, 1002, …</pluralRule>
+ <pluralRule count="few">v = 0 and i % 100 = 3..4 or v != 0 @integer 3, 4, 103, 104, 203, 204, 303, 304, 403, 404, 503, 504, 603, 604, 703, 704, 1003, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+ <pluralRule count="other"> @integer 0, 5~19, 100, 1000, 10000, 100000, 1000000, …</pluralRule>
+ </pluralRules>
+ <pluralRules locales="mt">
+ <pluralRule count="one">n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000</pluralRule>
+ <pluralRule count="few">n = 0 or n % 100 = 2..10 @integer 0, 2~10, 102~107, 1002, … @decimal 0.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 10.0, 102.0, 1002.0, …</pluralRule>
+ <pluralRule count="many">n % 100 = 11..19 @integer 11~19, 111~117, 1011, … @decimal 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 111.0, 1011.0, …</pluralRule>
+ <pluralRule count="other"> @integer 20~35, 100, 1000, 10000, 100000, 1000000, … @decimal 0.1~0.9, 1.1~1.7, 10.1, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+ </pluralRules>
+ <pluralRules locales="mk">
+ <pluralRule count="one">v = 0 and i % 10 = 1 or f % 10 = 1 @integer 1, 11, 21, 31, 41, 51, 61, 71, 101, 1001, … @decimal 0.1, 1.1, 2.1, 3.1, 4.1, 5.1, 6.1, 7.1, 10.1, 100.1, 1000.1, …</pluralRule>
+ <pluralRule count="other"> @integer 0, 2~10, 12~17, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0, 0.2~1.0, 1.2~1.7, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+ </pluralRules>
+ <pluralRules locales="cy">
+ <pluralRule count="zero">n = 0 @integer 0 @decimal 0.0, 0.00, 0.000, 0.0000</pluralRule>
+ <pluralRule count="one">n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000</pluralRule>
+ <pluralRule count="two">n = 2 @integer 2 @decimal 2.0, 2.00, 2.000, 2.0000</pluralRule>
+ <pluralRule count="few">n = 3 @integer 3 @decimal 3.0, 3.00, 3.000, 3.0000</pluralRule>
+ <pluralRule count="many">n = 6 @integer 6 @decimal 6.0, 6.00, 6.000, 6.0000</pluralRule>
+ <pluralRule count="other"> @integer 4, 5, 7~20, 100, 1000, 10000, 100000, 1000000, … @decimal 0.1~0.9, 1.1~1.7, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
</pluralRules>
<pluralRules locales="lag">
- <pluralRule count="zero">n is 0</pluralRule>
- <pluralRule count="one">n within 0..2 and n is not 0 and n is not 2</pluralRule>
+ <pluralRule count="zero">n = 0 @integer 0 @decimal 0.0, 0.00, 0.000, 0.0000</pluralRule>
+ <pluralRule count="one">i = 0,1 and n != 0 @integer 1 @decimal 0.1~1.6</pluralRule>
+ <pluralRule count="other"> @integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 2.0~3.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
</pluralRules>
<pluralRules locales="shi">
- <pluralRule count="one">n within 0..1</pluralRule>
- <pluralRule count="few">n in 2..10</pluralRule>
+ <pluralRule count="one">i = 0 or n = 1 @integer 0, 1 @decimal 0.0~1.0, 0.00~0.04</pluralRule>
+ <pluralRule count="few">n = 2..10 @integer 2~10 @decimal 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 2.00, 3.00, 4.00, 5.00, 6.00, 7.00, 8.00</pluralRule>
+ <pluralRule count="other"> @integer 11~26, 100, 1000, 10000, 100000, 1000000, … @decimal 1.1~1.9, 2.1~2.7, 10.1, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
</pluralRules>
- <pluralRules locales="br"> <!-- from http://unicode.org/cldr/trac/ticket/2886 -->
- <pluralRule count="one">n mod 10 is 1 and n mod 100 not in 11,71,91</pluralRule>
- <pluralRule count="two">n mod 10 is 2 and n mod 100 not in 12,72,92</pluralRule>
- <pluralRule count="few">n mod 10 in 3..4,9 and n mod 100 not in 10..19,70..79,90..99</pluralRule>
- <pluralRule count="many">n is not 0 and n mod 1000000 is 0</pluralRule>
+ <pluralRules locales="br">
+ <pluralRule count="one">n % 10 = 1 and n % 100 != 11,71,91 @integer 1, 21, 31, 41, 51, 61, 81, 101, 1001, … @decimal 1.0, 21.0, 31.0, 41.0, 51.0, 61.0, 81.0, 101.0, 1001.0, …</pluralRule>
+ <pluralRule count="two">n % 10 = 2 and n % 100 != 12,72,92 @integer 2, 22, 32, 42, 52, 62, 82, 102, 1002, … @decimal 2.0, 22.0, 32.0, 42.0, 52.0, 62.0, 82.0, 102.0, 1002.0, …</pluralRule>
+ <pluralRule count="few">n % 10 = 3..4,9 and n % 100 != 10..19,70..79,90..99 @integer 3, 4, 9, 23, 24, 29, 33, 34, 39, 43, 44, 49, 103, 1003, … @decimal 3.0, 4.0, 9.0, 23.0, 24.0, 29.0, 33.0, 34.0, 103.0, 1003.0, …</pluralRule>
+ <pluralRule count="many">n != 0 and n % 1000000 = 0 @integer 1000000, … @decimal 1000000.0, 1000000.00, 1000000.000, …</pluralRule>
+ <pluralRule count="other"> @integer 0, 5~8, 10~20, 100, 1000, 10000, 100000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, …</pluralRule>
</pluralRules>
<pluralRules locales="ksh">
- <pluralRule count="zero">n is 0</pluralRule>
- <pluralRule count="one">n is 1</pluralRule>
+ <pluralRule count="zero">n = 0 @integer 0 @decimal 0.0, 0.00, 0.000, 0.0000</pluralRule>
+ <pluralRule count="one">n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000</pluralRule>
+ <pluralRule count="other"> @integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 0.1~0.9, 1.1~1.7, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
</pluralRules>
<pluralRules locales="tzm">
- <pluralRule count="one">n in 0..1 or n in 11..99</pluralRule>
+ <pluralRule count="one">n = 0..1 or n = 11..99 @integer 0, 1, 11~24 @decimal 0.0, 1.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0, 20.0, 21.0, 22.0, 23.0, 24.0</pluralRule>
+ <pluralRule count="other"> @integer 2~10, 100~106, 1000, 10000, 100000, 1000000, … @decimal 0.1~0.9, 1.1~1.7, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
</pluralRules>
<pluralRules locales="gv">
- <pluralRule count="one">n mod 10 in 1..2 or n mod 20 is 0</pluralRule>
+ <pluralRule count="one">n % 10 = 1 @integer 1, 11, 21, 31, 41, 51, 61, 71, 101, 1001, … @decimal 1.0, 11.0, 21.0, 31.0, 41.0, 51.0, 61.0, 71.0, 101.0, 1001.0, …</pluralRule>
+ <pluralRule count="two">n % 10 = 2 @integer 2, 12, 22, 32, 42, 52, 62, 72, 102, 1002, … @decimal 2.0, 12.0, 22.0, 32.0, 42.0, 52.0, 62.0, 72.0, 102.0, 1002.0, …</pluralRule>
+ <pluralRule count="few">n % 100 = 0,20,40,60 @integer 0, 20, 40, 60, 100, 120, 140, 160, 1000, 10000, 100000, 1000000, … @decimal 0.0, 20.0, 40.0, 60.0, 100.0, 120.0, 140.0, 160.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+ <pluralRule count="other"> @integer 3~10, 13~19, 23, 103, 1003, … @decimal 0.1~0.9, 1.1~1.7, 10.0, 100.1, 1000.1, …</pluralRule>
</pluralRules>
<pluralRules locales="gd">
- <pluralRule count="one">n in 1,11</pluralRule>
- <pluralRule count="two">n in 2,12</pluralRule>
- <pluralRule count="few">n in 3..10,13..19</pluralRule>
+ <pluralRule count="one">n = 1,11 @integer 1, 11 @decimal 1.0, 11.0, 1.00, 11.00, 1.000, 11.000, 1.0000</pluralRule>
+ <pluralRule count="two">n = 2,12 @integer 2, 12 @decimal 2.0, 12.0, 2.00, 12.00, 2.000, 12.000, 2.0000</pluralRule>
+ <pluralRule count="few">n = 3..10,13..19 @integer 3~10, 13~19 @decimal 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0, 3.00</pluralRule>
+ <pluralRule count="other"> @integer 0, 20~34, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.1, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+ </pluralRules>
+ <pluralRules locales="bm bo dz id ig ii in ja jbo jv jw kde kea km ko lkt lo ms my nqo sah ses sg th to vi wo yo zh">
+ <pluralRule count="other"> @integer 0~15, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+ </pluralRules>
+ <pluralRules locales="fil tl">
+ <pluralRule count="one">i = 0..1 and v = 0 @integer 0, 1</pluralRule>
+ <pluralRule count="other"> @integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+ </pluralRules>
+ <pluralRules locales="ca de en et fi gl it ji nl sv sw ur yi">
+ <pluralRule count="one">i = 1 and v = 0 @integer 1</pluralRule>
+ <pluralRule count="other"> @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+ </pluralRules>
+ <pluralRules locales="pt">
+ <pluralRule count="one">i = 1 and v = 0 or i = 0 and t = 1 @integer 1 @decimal 0.1, 0.01, 0.10, 0.001, 0.010, 0.100, 0.0001, 0.0010, 0.0100, 0.1000</pluralRule>
+ <pluralRule count="other"> @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0, 0.2~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+ </pluralRules>
+ <pluralRules locales="da">
+ <pluralRule count="one">n = 1 or t != 0 and i = 0,1 @integer 1 @decimal 0.1~1.6</pluralRule>
+ <pluralRule count="other"> @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0, 2.0~3.4, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+ </pluralRules>
+ <pluralRules locales="pt_PT">
+ <pluralRule count="one">n = 1 and v = 0 @integer 1</pluralRule>
+ <pluralRule count="other"> @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+ </pluralRules>
+ <pluralRules locales="am bn fa gu hi kn mr zu">
+ <pluralRule count="one">i = 0 or n = 1 @integer 0, 1 @decimal 0.0~1.0, 0.00~0.04</pluralRule>
+ <pluralRule count="other"> @integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 1.1~2.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+ </pluralRules>
+ <pluralRules locales="is">
+ <pluralRule count="one">t = 0 and i % 10 = 1 and i % 100 != 11 or t != 0 @integer 1, 21, 31, 41, 51, 61, 71, 81, 101, 1001, … @decimal 0.1~1.6, 10.1, 100.1, 1000.1, …</pluralRule>
+ <pluralRule count="other"> @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+ </pluralRules>
+ <pluralRules locales="si">
+ <pluralRule count="one">n = 0,1 or i = 0 and f = 1 @integer 0, 1 @decimal 0.0, 0.1, 1.0, 0.00, 0.01, 1.00, 0.000, 0.001, 1.000, 0.0000, 0.0001, 1.0000</pluralRule>
+ <pluralRule count="other"> @integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 0.2~0.9, 1.1~1.8, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+ </pluralRules>
+ <pluralRules locales="bs hr sh sr">
+ <pluralRule count="one">v = 0 and i % 10 = 1 and i % 100 != 11 or f % 10 = 1 and f % 100 != 11 @integer 1, 21, 31, 41, 51, 61, 71, 81, 101, 1001, … @decimal 0.1, 1.1, 2.1, 3.1, 4.1, 5.1, 6.1, 7.1, 10.1, 100.1, 1000.1, …</pluralRule>
+ <pluralRule count="few">v = 0 and i % 10 = 2..4 and i % 100 != 12..14 or f % 10 = 2..4 and f % 100 != 12..14 @integer 2~4, 22~24, 32~34, 42~44, 52~54, 62, 102, 1002, … @decimal 0.2~0.4, 1.2~1.4, 2.2~2.4, 3.2~3.4, 4.2~4.4, 5.2, 10.2, 100.2, 1000.2, …</pluralRule>
+ <pluralRule count="other"> @integer 0, 5~19, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0, 0.5~1.0, 1.5~2.0, 2.5~2.7, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+ </pluralRules>
+ <pluralRules locales="ru">
+ <pluralRule count="one">v = 0 and i % 10 = 1 and i % 100 != 11 @integer 1, 21, 31, 41, 51, 61, 71, 81, 101, 1001, …</pluralRule>
+ <pluralRule count="many">v = 0 and i % 10 = 0 or v = 0 and i % 10 = 5..9 or v = 0 and i % 100 = 11..14 @integer 0, 5~19, 100, 1000, 10000, 100000, 1000000, …</pluralRule>
+ <pluralRule count="other"> @integer 2~4, 22~24, 32~34, 42~44, 52~54, 62, 102, 1002, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+ </pluralRules>
+ <pluralRules locales="uk">
+ <pluralRule count="one">v = 0 and i % 10 = 1 and i % 100 != 11 @integer 1, 21, 31, 41, 51, 61, 71, 81, 101, 1001, …</pluralRule>
+ <pluralRule count="few">v = 0 and i % 10 = 2..4 and i % 100 != 12..14 @integer 2~4, 22~24, 32~34, 42~44, 52~54, 62, 102, 1002, …</pluralRule>
+ <pluralRule count="many">v = 0 and i % 10 = 0 or v = 0 and i % 10 = 5..9 or v = 0 and i % 100 = 11..14 @integer 0, 5~19, 100, 1000, 10000, 100000, 1000000, …</pluralRule>
+ <pluralRule count="other"> @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
</pluralRules>
</plurals>
</supplementalData>
$messages = array(
# User preference toggles
'tog-underline' => 'Bôh garéh yup peunawôt:',
-'tog-justify' => 'Peurata paragraf',
'tog-hideminor' => 'Peusom neuandam bacut bak neuubah barô',
'tog-hidepatrolled' => 'Peusom neuandam teurunda bak neuubah barô',
'tog-newpageshidepatrolled' => 'Peusom laman teurunda nibak dapeuta ôn barô',
'tog-numberheadings' => 'Bôh numbôi nan keudroë',
'tog-showtoolbar' => 'Peuleumah bateuëng alat andam',
'tog-editondblclick' => 'Andam laman ngön duwa gö teugön',
-'tog-editsection' => 'Peujeuet andam bideuëng röt hubông [andam]',
'tog-editsectiononrightclick' => 'Peujeuët andam bideueng ngön teugön blah uneun bak nan bideueng',
-'tog-showtoc' => 'Peuleumah dapeuta asoe (keu laman-laman nyang na leubèh nibak 3 boh aneuk ulèë)',
'tog-rememberpassword' => 'Ingat lôn tamöng bak peuramban nyoë (keu paléng trép $1 {{PLURAL:$1|uroë}})',
'tog-watchcreations' => 'Tamah laman nyang lôn peugöt u dapeuta keunalön',
'tog-watchdefault' => 'Tamah laman nyang lôn-andam u dapeuta keunalon',
'compareselectedversions' => 'Peubandéng curak teupiléh',
'editundo' => 'pubateuë',
'diff-empty' => '(Hana bida)',
-'diff-multi' => '({{PLURAL:$1|Saboh|$1}} geunantoë antara nyang geupeugot le {{PLURAL:$2|sidroe|$2}} ureueng nguy hana geupeuleumah)',
# Search results
'searchresults' => 'Hasé mita',
'prefs-editing' => 'Neuandam',
'rows' => 'Baréh:',
'searchresultshead' => 'Mita',
-'resultsperpage' => 'Hasé lam saboh laman:',
'stub-threshold-disabled' => 'Geupeumaté',
'timezoneuseoffset' => "La'én (peuteuntèe bidajih)",
'timezoneregion-america' => 'Amirika',
*
* @author Abanima
* @author Csisc
+ * @author Malekbr
*/
$fallback = 'ar';
$messages = array(
# User preference toggles
'tog-underline' => 'ضع خطا تحت الوصلات:',
-'tog-justify' => 'ساو الفقرات',
'tog-hideminor' => 'أخف التعديلات الطفيفة في أحدث التغييرات',
'tog-hidepatrolled' => 'أخف التعديلات المراجعة في أحدث التغييرات',
'tog-newpageshidepatrolled' => 'أخف الصفحات المراجعة من قائمة الصفحات الجديدة',
'tog-numberheadings' => 'رقم العناوين تلقائيا',
'tog-showtoolbar' => 'أظهر شريط التحرير (يتطلب جافاسكربت)',
'tog-editondblclick' => 'عدل الصفحات عند الضغط المزدوج (جافاسكربت)',
-'tog-editsection' => 'مكن تعديل الأقسام عن طريق وصلات [عدل]',
'tog-editsectiononrightclick' => 'فعل تعديل الأقسام بواسطة كبسة الفأرة اليمين على عناوين الأقسام (جافاسكريبت)',
-'tog-showtoc' => 'اعرض فهرس المحتويات (للصفحات التي تحتوي على أكثر من 3 عناوين)',
'tog-rememberpassword' => 'تذكر دخولي على هذا المتصفح (إلى {{PLURAL:$1||يوم واحد|يومين|$1 أيام|$1 يومًا|$1 يوم}} كحد أقصى)',
'tog-watchcreations' => 'أضف الصفحات التي أنشئها والملفات التي أرفعها إلى قائمة مراقبتي.',
'tog-watchdefault' => 'أضف الصفحات والملفات التي أعدلها إلى قائمة مراقبتي',
'thu' => 'el5mis',
'fri' => 'ejjom3a',
'sat' => 'essibt',
-'january' => 'janfi',
-'february' => 'fivri',
-'march' => 'mars',
-'april' => 'avril',
-'may_long' => 'mai',
-'june' => 'juin',
-'july' => 'juillia',
-'august' => 'août',
-'september' => 'septembre',
-'october' => 'octobre',
-'november' => 'novembre',
-'december' => 'décembre',
-'january-gen' => 'janfi',
-'february-gen' => 'fivri',
-'march-gen' => 'mars',
-'april-gen' => 'avril',
-'may-gen' => 'mai',
-'june-gen' => 'juin',
-'july-gen' => 'juillia',
-'august-gen' => 'août',
-'september-gen' => 'septembre',
-'october-gen' => 'octobre',
-'november-gen' => 'novembre',
-'december-gen' => 'décembre',
-'jan' => 'Janvi',
-'feb' => 'fivri',
-'mar' => 'mars',
-'apr' => 'avril',
-'may' => 'mai',
+'january' => 'Janvi',
+'february' => 'Fivri',
+'march' => 'Mars',
+'april' => 'Avril',
+'may_long' => 'Mai',
+'june' => 'Juin',
+'july' => 'Juilia',
+'august' => 'Août',
+'september' => 'Septembre',
+'october' => 'Octobre',
+'november' => 'Novembre',
+'december' => 'Décembre',
+'january-gen' => 'Janvi',
+'february-gen' => 'Fivri',
+'march-gen' => 'Mars',
+'april-gen' => 'Avril',
+'may-gen' => 'Mai',
+'june-gen' => 'Juin',
+'july-gen' => 'Juilia',
+'august-gen' => 'Août',
+'september-gen' => 'Septembre',
+'october-gen' => 'Octobre',
+'november-gen' => 'Novembre',
+'december-gen' => 'Décembre',
+'jan' => 'Janv',
+'feb' => 'Fivr',
+'mar' => 'Mars',
+'apr' => 'Avrl',
+'may' => 'Mai',
'jun' => 'Juin',
-'jul' => 'juillia',
-'aug' => 'août',
-'sep' => 'septembre',
-'oct' => 'octobre',
-'nov' => 'novembre',
-'dec' => 'décembre',
+'jul' => 'Juil',
+'aug' => 'Août',
+'sep' => 'Sept',
+'oct' => 'Oct',
+'nov' => 'Nov',
+'dec' => 'Déc',
# Categories related messages
-'pagecategories' => '{{PLURAL:$1|لا تصنيف|تصنيف|تصنيفان|تصنيفات}}',
+'pagecategories' => '{{PLURAL:Catégorie weħed|Zouz catégories|$1 catégories|$1 en catégorie}}',
'category_header' => 'صفحات تصنيف "$1"',
'subcategories' => 'التصنيفات الفرعية',
'category-media-header' => 'الوسائط في التصنيف "$1"',
'category-empty' => "''هذا التصنيف لا يحتوي حاليا على صفحات أو وسائط.''",
-'hidden-categories' => '{{PLURAL:$1|لا تصنيف مخفيا|تصنيف مخفي|تصنيفان مخفيان|تصنيفات مخفية}}',
+'hidden-categories' => '{{PLURAL:Catégorie mkhabia waħda|Zouz catégories mkhabbin|$1 catégories mkhabbin|$1 en catégorie mkhabia}}',
'hidden-category-category' => 'تصنيفات مخفية',
'category-subcat-count' => '{{PLURAL:$2|لا تصانيف فرعية في هذا التصنيف|هذا التصنيف فيه التصنيف الفرعي التالي فقط.|هذا التصنيف فيه {{PLURAL:$1||هذا التصنيف الفرعي|هذين التصنيفين الفرعيين|هذه ال$1 تصانيف الفرعية|هذه ال$1 تصنيفا فرعيا|هذه ال$1 تصنيف فرعي}}، من إجمالي $2.}}',
'category-subcat-count-limited' => 'هذا التصنيف فيه {{PLURAL:$1||التصنيف الفرعي التالي|التصنيفين الفرعيين التاليين|$1 تصانيف فرعية تالية|$1 تصنيفا فرعيا تاليا|$1 تصنيف فرعي تالي}}.',
'mypage' => 'صفحتي',
'mytalk' => 'نقاشي',
'anontalk' => 'النقاش لعنوان الأيبي هذا',
-'navigation' => 'إبحار',
+'navigation' => 'Navigui',
'and' => ' و',
# Cologne Blue skin
'vector-action-unprotect' => 'غير الحماية',
'vector-simplesearch-preference' => 'مكّن مقترحات البحث المُحسّنة (لواجهة فكتور فقط)',
'vector-view-create' => 'أنشئ',
-'vector-view-edit' => 'modifi el page (baddelha)',
-'vector-view-history' => 'اعرض التاريخ',
-'vector-view-view' => 'اقرأ',
+'vector-view-edit' => 'Baddel',
+'vector-view-history' => "Warri l'historique",
+'vector-view-view' => 'Aqra',
'vector-view-viewsource' => 'اعرض المصدر',
-'actions' => 'أفعال',
-'namespaces' => 'النطاقات',
-'variants' => 'المتغيرات',
+'actions' => 'Aεmel',
+'namespaces' => 'El espaces de noms',
+'variants' => 'Anweε',
'errorpagetitle' => 'ghalath',
'returnto' => 'ارجع إلى $1.',
-'tagline' => 'عن {{SITENAME}}',
-'help' => '3awenni ya3chek',
-'search' => 'lawwej',
-'searchbutton' => 'lawwej',
+'tagline' => 'Fima ykhoss {{SITENAME}}',
+'help' => 'Mouεawna',
+'search' => 'Lawwej',
+'searchbutton' => 'Lawwej',
'go' => 'اذهب',
'searcharticle' => 'اذهب',
'history' => 'teri5 el milaf',
-'history_short' => 'تاريخ',
+'history_short' => 'Historique',
'updatedmarker' => 'تم تحديثها منذ زيارتي الأخيرة',
-'printableversion' => 'نسخة للطباعة',
-'permalink' => 'وصلة دائمة',
+'printableversion' => 'Copie bech tetetbaε',
+'permalink' => 'Lien deyem',
'print' => 'itthba3',
'view' => 'عرض',
-'edit' => 'modifi el page (baddelha)',
+'edit' => 'Baddel',
'create' => 'أنشئ',
'editthispage' => 'modifi hal page',
'create-this-page' => 'أنشئ هذه الصفحة',
'unprotectthispage' => 'غير حماية هذه الصفحة',
'newpage' => 'صفحات جديدة',
'talkpage' => 'ناقش هذه الصفحة',
-'talkpagelinktext' => 'نقاش',
+'talkpagelinktext' => 'Ħdith',
'specialpage' => 'صفحة خاصة',
-'personaltools' => 'أدوات شخصية',
+'personaltools' => 'Outils mteεek',
'postcomment' => 'قسم جديد',
'articlepage' => 'عرض صفحة المحتوى',
-'talk' => 'نقاش',
-'views' => 'معاينة',
-'toolbox' => 'صندوق الأدوات',
+'talk' => 'Ħdith',
+'views' => 'Affichages',
+'toolbox' => 'Outils',
'userpage' => 'عرض صفحة المستخدم',
'projectpage' => 'عرض صفحة المشروع',
'imagepage' => 'عرض صفحة الملف',
'viewhelppage' => 'عرض صفحة المساعدة',
'categorypage' => 'عرض صفحة التصنيف',
'viewtalkpage' => 'عرض النقاش',
-'otherlanguages' => 'بلغات أخرى',
+'otherlanguages' => 'Bloughat okhra',
'redirectedfrom' => '(تم التحويل من $1)',
'redirectpagesub' => 'صفحة تحويل',
-'lastmodifiedat' => 'آخر تعديل لهذه الصفحة في $2، $1.',
+'lastmodifiedat' => 'Ekher tabdil elhassafħa nhar $2, mεa $1.',
'viewcount' => '{{PLURAL:$1|لم تعرض هذه الصفحة أبدا|تم عرض هذه الصفحة مرة واحدة|تم عرض هذه الصفحة مرتين|تم عرض هذه الصفحة $1 مرات|تم عرض هذه الصفحة $1 مرة}}.',
'protectedpage' => 'صفحة محمية',
-'jumpto' => 'اذهب إلى:',
-'jumptonavigation' => 'إبحار',
-'jumptosearch' => 'lawwej',
+'jumpto' => 'Emchi el:',
+'jumptonavigation' => 'Navigation',
+'jumptosearch' => 'Lawwej',
'view-pool-error' => 'عذرا، الخوادم منهكة حاليا.
يحاول مستخدمون كثر الوصول إلى هذه الصفحة.
من فضلك انتظر قليلا قبل أن تحاول الوصول إلى هذه الصفحة مجددا.
'pool-errorunknown' => 'خطأ غير معروف',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage).
-'aboutsite' => 'عن {{SITENAME}}',
-'aboutpage' => 'Project:عن',
+'aboutsite' => 'Fima ykhoss {{SITENAME}}',
+'aboutpage' => 'Project:Fima ykhoss',
'copyright' => 'المحتوى متوفر تحت $1.',
'copyrightpage' => '{{ns:project}}:حقوق النسخ',
-'currentevents' => 'الأحداث الجارية',
-'currentevents-url' => 'Project:الأحداث الجارية',
-'disclaimers' => 'عدم مسؤولية',
-'disclaimerpage' => 'Project:عدم مسؤولية عام',
+'currentevents' => 'Laħdeth mtaε tawa',
+'currentevents-url' => 'Project:Laħdeth mtaε tawa',
+'disclaimers' => "Ɛadam mas'ouliya",
+'disclaimerpage' => "Project:Ɛadam mas'ouliya bsifa εamma",
'edithelp' => 'مساعدة التحرير',
-'helppage' => 'Help:محتويات',
-'mainpage' => 'الصفحة الرئيسية',
-'mainpage-description' => 'الصفحة الرئيسية',
+'helppage' => 'Help:Contenu',
+'mainpage' => 'Elpage principale',
+'mainpage-description' => 'Elpage principale',
'policy-url' => 'Project:سياسة',
-'portal' => 'بوابة المجتمع',
-'portal-url' => 'Project:بوابة المجتمع',
-'privacy' => 'سÙ\8aاسة اÙ\84خصÙ\88صÙ\8aØ©',
-'privacypage' => 'Project:سÙ\8aاسة اÙ\84خصÙ\88صÙ\8aØ©',
+'portal' => 'Mojtamaε',
+'portal-url' => 'Project:Mojtamaε',
+'privacy' => 'Syeset elconfidentialité',
+'privacypage' => 'Project:Syeset elconfidentialité',
'badaccess' => 'خطأ في السماح',
'badaccess-group0' => 'ليس من المسموح لك تنفيذ الفعل الذي طلبته.',
'versionrequiredtext' => 'تلزم النسخة $1 من ميدياويكي لاستعمال هذه الصفحة. انظر [[Special:Version|صفحة النسخة]]',
'ok' => 'ok',
-'retrievedfrom' => 'تم الاسترجاع من "$1"',
+'retrievedfrom' => 'Tekhdhet men "$1"',
'youhavenewmessages' => 'توجد لديك $1 ($2).',
'youhavenewmessagesmulti' => 'لديك رسائل جديدة على $1',
-'editsection' => 'modifi el page (baddelha)',
-'editold' => 'modifi el page (baddelha)',
+'editsection' => 'Baddel essafħa',
+'editold' => 'Baddel',
'viewsourceold' => 'اعرض المصدر',
'editlink' => 'modifi el page (baddelha)',
-'viewsourcelink' => 'اعرض المصدر',
-'editsectionhint' => 'حرر القسم: $1',
-'toc' => 'ta3li9at',
+'viewsourcelink' => 'Warri essource',
+'editsectionhint' => 'Baddel essection: $1',
+'toc' => 'Contenu',
'showtoc' => 'اعرض',
'hidetoc' => 'أخف',
'collapsible-collapse' => 'اطو',
'feed-invalid' => 'نوع اشتراك التلقيم غير صحيح.',
'feed-unavailable' => 'التلقيمات غير متوفرة',
'site-rss-feed' => '$1 تلقيم أر إس إس',
-'site-atom-feed' => '$1 تلقيم أتوم',
+'site-atom-feed' => 'Flux Atom mtaε $1',
'page-rss-feed' => '"$1" تلقيم أر إس إس',
'page-atom-feed' => '$1 تلقيم أتوم',
-'red-link-title' => '$1 (الصفحة غير موجودة)',
+'red-link-title' => '$1 (Essafħa mouch mawjouda)',
'sort-descending' => 'ترتيب تنازلي',
'sort-ascending' => 'ترتيب تصاعدي',
# Short words for each namespace, by default used in the namespace tab in monobook
-'nstab-main' => "ss'af7a",
+'nstab-main' => 'Safħa',
'nstab-user' => 'صفحة مستخدم',
'nstab-media' => 'صفحة وسيط',
-'nstab-special' => 'صفحة خاصة',
+'nstab-special' => 'Safħa spéciale',
'nstab-project' => 'صفحة مشروع',
-'nstab-image' => 'milaf (Fichier)',
+'nstab-image' => 'Fichier',
'nstab-mediawiki' => 'رسالة',
'nstab-template' => 'قالب',
'nstab-help' => 'صفحة مساعدة',
'readonlytext' => 'قاعدة البيانات مغلقة حاليا أمام المدخلات الجديدة والتعديلات الأخرى، السبب غالبا ما يكون الصيانة، وستعود قاعدة البيانات للوضع الطبيعي قريبا.
الإداري الذي أغلق قاعدة البيانات أعطى التفسير التالي: $1',
-'missing-article' => 'لم تجد قاعدة البيانات النص الخاص بصفحة كان يجب أن تجدها، واسمها "$1" $2.
+'missing-article' => 'Elbase de données malqatech ettexte mtaε essafħa elli supposée talqaha, welli esmha "$1" $2.
-عادة ما يحدث هذا عند اتباع فرق قديم أو وصلة تاريخ تؤدي إلى صفحة حذفت.
+Hedha elli ysir elεada waqtelli tħel farq qdim walla lien mtaε l\'historique mtaε safħa tnaħħat.
-إذا لم تكن هذه هي الحالة، فالمحتمل أنك وجدت خللا في البرنامج.
-من فضلك أبلغ أحد [[Special:ListUsers/sysop|الإداريين]]، وأعطه وصلة إلى مسار هذه الصفحة.',
+Idha ken mouch hedheka li sar, rak momken lqit mochkla fel programme.
+Aman qoul elweħeb mel les [[Special:ListUsers/sysop|administrateurs]], waεtih ellien elli ħabit temchilou.',
'missingarticle-rev' => '(رقم المراجعة: $1)',
'missingarticle-diff' => '(فرق: $1، $2)',
'readonly_lag' => 'تم إغلاق قاعدة البيانات تلقائيا حتى تستطيع الخواديم التابعة ملاحقة الخادوم الرئيسي',
'yourdomainname' => 'نطاقك:',
'externaldberror' => 'هناك إما خطأ في دخول قاعدة البيانات الخارجية أو أنه غير مسموح لك بتحديث حسابك الخارجي.',
'login' => 'ادخل',
-'nav-login-createaccount' => 'ادخل / أنشئ حسابا',
+'nav-login-createaccount' => 'Connecti / aεmel compte',
'loginprompt' => 'يجب أن تكون الكوكيز لديك مفعلة لتسجل الدخول إلى {{SITENAME}}.',
'userlogin' => 'ادخل / أنشئ حسابا',
'userloginnocreate' => 'دخول',
لذا فيجب علينا استعمال رقم الأيبي للتعرف عليه/عليها.
مثل هذا العنوان يمكن أن يشترك فيه عدة مستخدمين.
لو كنت مستخدما مجهولا وتشعر بأن تعليقات لا تخصك تم توجيهها إليك، من فضلك [[Special:UserLogin/signup|أنشئ حسابا]] أو [[Special:UserLogin|سجل الدخول]] لتجنب الارتباك المستقبلي مع مستخدمين مجهولين آخرين.''",
-'noarticletext' => 'لا يوجد حاليا أي نص في هذه الصفحة.
-يمكنك [[Special:Search/{{PAGENAME}}|البحث عن عنوان هذه الصفحة]] في الصفحات الأخرى،
-<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} البحث في السجلات المتعلقة]،
-أو [{{fullurl:{{FULLPAGENAME}}|action=edit}} تعديل هذه الصفحة]</span>.',
+'noarticletext' => 'Mafamma ħatta texte tawa f\'essafħa hedhi.
+Tnajjem [[Special:Search/{{PAGENAME}}|tfarkes εal titre mtaε essafħa]] fi safħat okhrine, <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} tfarkes f\'elhistoriques elli εandhom εaleqa],
+walla [{{fullurl:{{FULLPAGENAME}}|action=edit}} tbaddel essafħa hedhi]</span>',
'noarticletext-nopermission' => 'لا يوجد حاليا أي نص في هذه الصفحة.يمكنك [[Special:Search/{{PAGENAME}}|البحث عن عنوان هذه الصفحة]] في الصفحات الأخرى,أو <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} بحث السجلات المتصلة]</span>.',
'userpage-userdoesnotexist' => 'حساب المستخدم "<nowiki>$1</nowiki>" غير مسجل.
من فضلك تأكد أنك تريد إنشاء/تعديل هذه الصفحة.',
'templatesused' => '{{PLURAL:$1||القالب المستخدم|القالبان المستخدمان|القوالب المستخدمة}} في هذه الصفحة:',
'templatesusedpreview' => '{{PLURAL:$1||القالب المستخدم|القالبان المستخدمان|القوالب المستخدمة}} في هذه المعاينة:',
'templatesusedsection' => '{{PLURAL:$1||القالب المستخدم|القالبان المستخدمان|القوالب المستخدمة}} في هذا القسم:',
-'template-protected' => '(ØÙ\85اÙ\8aØ© Ù\83اÙ\85Ù\84Ø©)',
+'template-protected' => '(protégé)',
'template-semiprotected' => '(حماية جزئية)',
'hiddencategories' => '{{PLURAL:$1|هذه الصفحة غير موجودة في أي تصنايف مخفية|هذه الصفحة موجودة في تصنيف مخفي واحد|هذه الصفحة موجودة في تصنيفين مخفيين|هذه الصفحة موجودة في $1 تصانيف مخفية|هذه الصفحة موجودة في $1 تصنيفا مخفيا|هذه الصفحة موجودة في $1 تصنيف مخفي}}:',
'nocreatetext' => 'قام {{SITENAME}} بتحديد القدرة على إنشاء صفحات جديدة.
'nohistory' => 'لا يوجد تاريخ للتعديلات لهذه الصفحة.',
'currentrev' => 'المراجعة الحالية',
'currentrev-asof' => 'المراجعة الحالية بتاريخ $1',
-'revisionasof' => 'مراجعة $1',
+'revisionasof' => 'Version mtaε $1',
'revision-info' => 'مراجعة $1 بواسطة $2',
'previousrevision' => '→ مراجعة أقدم',
'nextrevision' => 'مراجعة أحدث ←',
'difference-title' => '«$1»: الفرق بين المراجعتين',
'difference-title-multipage' => '«$1» و«$2»: الفرق بين الصفحتين',
'difference-multipage' => '(الفرق بين الصفحتين)',
-'lineno' => 'سطر $1:',
+'lineno' => 'Star $1:',
'compareselectedversions' => 'قارن بين النسختين المختارتين',
'showhideselectedversions' => 'أظهر/أخف المراجعات المختارة',
-'editundo' => 'تراجع',
-'diff-multi' => '({{PLURAL:$1||مراجعة واحدة متوسطة غير معروضة أجراها|مراجعتان متوسطتان غير معروضتين أجراهما|$1 مراجعات متوسطة غير معروضة أجراها|$1 مراجعة متوسطة غير معروضة أجراها}} {{PLURAL:$2||مستخدم واحد|مستخدمان|$2 مستخدمين|$2 مستخدمًا|$2 مستخدم}}.)',
+'editundo' => 'Rajjaε',
'diff-multi-manyusers' => '({{PLURAL:$1||مراجعة واحدة متوسطة غير معروضة أجراها|مراجعتان متوسطتان غير معروضتان أجراهما|$1 مراجعات متوسطة غير معروضة أجراها|$1 مراجعة متوسطة غير معروضة أجراها}} أكثر من {{PLURAL:$2||مستخدم واحد|مستخدمين|$2 مستخدمين|$2 مستخدمًا|$2 مستخدم}}.)',
# Search results
-'searchresults' => 'el resultats',
-'searchresults-title' => 'نتائج البحث عن "$1"',
+'searchresults' => 'Elrésultats mtaε elrecherche',
+'searchresults-title' => 'Elrésultats mtaε elrecherche εla "$1"',
'prevn' => '{{PLURAL:$1|$1}} السابقة',
'nextn' => '{{PLURAL:$1|$1}} التالية',
'prevn-title' => '$1 {{PLURAL:$1|نتيجة|نتيجة}} سابقة',
'nextn-title' => '$1 {{PLURAL:$1|نتيجة|نتيجة}} سابقة',
-'shown-title' => 'عرض $1 {{PLURAL:$1|نتيجة|نتيجة}} لكل صفحة',
-'viewprevnext' => 'عرض ($1 {{int:pipe-separator}} $2) ($3).',
+'shown-title' => ' Warri{{PLURAL:Résultat weħed|Zouz résultats|$1 résultats|$1 en résultat}} men kol safħa',
+'viewprevnext' => 'Chouf ($1 {{int:pipe-separator}} $2) ($3)',
'searchmenu-exists' => "'''famma ss'af7a ismha \"[[:\$1]]\" fi hedha el wiki.'''",
'searchmenu-new' => "'''أنشئ الصفحة \"[[:\$1]]\" في هذا الويكي!'''",
-'searchprofile-articles' => 'صفحات المحتوى',
-'searchprofile-project' => 'صفحات المساعدة والمشروع',
-'searchprofile-images' => 'الوسائط المتعددة',
-'searchprofile-everything' => 'كل شيء',
-'searchprofile-advanced' => 'متقدم',
-'searchprofile-articles-tooltip' => 'ابحث في $1',
-'searchprofile-project-tooltip' => 'ابحث في $1',
-'searchprofile-images-tooltip' => 'ابحث عن ملفات',
-'searchprofile-everything-tooltip' => 'ابحث في كل المحتوى (شاملا صفحات النقاش)',
-'searchprofile-advanced-tooltip' => 'ابحث في النطاقات المخصصة',
-'search-result-size' => '$1 ({{PLURAL:$2|لا كلمات|كلمة واحدة|كلمتان|$2 كلمات|$2 كلمة}})',
+'searchprofile-articles' => 'Safħat mtaε contenu',
+'searchprofile-project' => 'Safħat mtaε elmouεawna w les projets',
+'searchprofile-images' => 'Multimédia',
+'searchprofile-everything' => 'Kol chay',
+'searchprofile-advanced' => 'Avancé',
+'searchprofile-articles-tooltip' => 'Farkes fi $1',
+'searchprofile-project-tooltip' => 'Farkis fi $1',
+'searchprofile-images-tooltip' => "Farkes f'elfichiers",
+'searchprofile-everything-tooltip' => 'Farkes kol chay (ħatta safħat leħdith)',
+'searchprofile-advanced-tooltip' => 'Ekhtar les espaces de noms elli bech tfarkes εlihom',
+'search-result-size' => '$1 ({{PLURAL:Ħatta kelma|Kelma waħda|Kelmtin|$2 kelmat|$2 en kelma}})',
'search-result-category-size' => '{{PLURAL:$1|لا أعضاء|عضو واحد|عضوان|$1 أعضاء|$1 عضوًا|$1 عضو}} ({{PLURAL:$2|لا تصانيف فرعية|تصنيف فرعي واحد|تصنيفان فرعيان|$2 تصنيفات فرعية|$2 تصنيفًا فرعيًا|$2 تصنيف فرعي}} و{{PLURAL:$3|لا ملفات|ملف واحد|ملفان|$3 ملفات|$3 ملفًا|$3 ملف}})',
'search-redirect' => '(تحويلة $1)',
-'search-section' => '(قسم $1)',
+'search-section' => '(section $1)',
'search-suggest' => 'هل كنت تقصد: $1',
'searchrelated' => 'مرتبطة',
-'searchall' => 'الكل',
+'searchall' => 'Elkol',
'showingresultsheader' => "{{PLURAL:$5|النتيجة '''$1''' من'''$3'''|النتائج '''$1 - $2''' من'''$3'''}} ل'''$4'''",
'search-nonefound' => 'لا توجد نتائج تطابق الاستعلام.',
# Recent changes
'nchanges' => '{{PLURAL:$1|لا تغييرات|تغيير واحد|تغييران|$1 تغييرات|$1 تغييرا|$1 تغيير}}',
-'recentchanges' => 'أحدث التغييرات',
+'recentchanges' => 'Ajad tabdilet',
'recentchanges-legend' => 'خيارات أحدث التغييرات',
'recentchanges-summary' => 'تابع أحدث التغييرات للويكي عبر هذه التلقيمة.',
'recentchanges-feed-description' => 'تابع أحدث التغييرات للويكي عبر هذه التلقيمة.',
'rcshowhidepatr' => '$1 التعديلات المراجعة',
'rcshowhidemine' => '$1 تعديلاتي',
'rclinks' => 'أظهر آخر $1 تعديل في آخر $2 يوم<br />$3',
-'diff' => 'فرق',
-'hist' => 'تاريخ',
+'diff' => 'Farq',
+'hist' => 'Hist',
'hide' => 'أخف',
'show' => 'اعرض',
'minoreditletter' => 'thafif',
# Recent changes linked
'recentchangeslinked' => 'تغييرات ذات علاقة',
-'recentchangeslinked-toolbox' => 'تغييرات ذات علاقة',
+'recentchangeslinked-toolbox' => 'Tabdilet them',
'recentchangeslinked-title' => 'التغييرات المرتبطة ب "$1"',
'recentchangeslinked-summary' => "هذه قائمة بالتغييرات التي تمت حديثا للصفحات الموصولة من صفحة معينة (أو إلى الأعضاء ضمن تصنيف معين).
الصفحات في [[Special:Watchlist|قائمة مراقبتك]] '''عريضة'''",
'recentchangeslinked-to' => 'أظهر التغييرات للصفحات الموصولة للصفحة المعطاة عوضا عن ذلك',
# Upload
-'upload' => 'ارفع ملفات',
+'upload' => "Abεeth des fichiers l'esserveur",
'uploadlogpage' => 'سجل الرفع',
'filedesc' => 'ملخص:',
'uploadedimage' => 'رفع "[[$1]]"',
الوصف على [$2 صفحة وصف الملف] هناك معروض بالأسفل.',
# Random page
-'randompage' => 'صفحة عشوائية',
+'randompage' => 'Safħa elli tji',
# Statistics
'statistics' => 'إحصاءات',
# Miscellaneous special pages
-'nbytes' => '$1 {{PLURAL:$1|بايت|بايت}}',
+'nbytes' => '{{PLURAL:Octet weħed|Zouz octets|$1 octets|$1 en octet}}',
'nmembers' => '{{PLURAL:$1|لا أعضاء|عضو واحد|عضوان|$1 أعضاء|$1 عضوا|$1 عضو}}',
'prefixindex' => 'كل الصفحات بالبادئة',
'usercreated' => '{{GENDER:$3|أنشأه|أنشأته}} في $1 الساعة $2',
-'newpages' => 'صفحات جديدة',
+'newpages' => 'Safħat jdod',
'move' => 'انقل',
'pager-newer-n' => '{{PLURAL:$1|أقدم 1|أقدم $1}}',
'pager-older-n' => '{{PLURAL:$1|أقدم 1|أقدم $1}}',
'dellogpage' => 'سجل الحذف',
# Rollback
-'rollbacklink' => 'استرجع',
+'rollbacklink' => 'rajjaε',
# Protect
'protectlogpage' => 'سجل الحماية',
# Namespace form on various pages
'namespace' => 'النطاق',
'invert' => 'اعكس الاختيار',
-'blanknamespace' => '(رئيسي)',
+'blanknamespace' => '(Principal)',
# Contributions
'contributions' => 'مساهماتي',
'sp-contributions-submit' => 'lawwej',
# What links here
-'whatlinkshere' => 'ماذا يصل هنا',
+'whatlinkshere' => 'Chnowa elli ywassel elhouni',
'whatlinkshere-title' => 'الصفحات التي تصل إلى "$1"',
'whatlinkshere-page' => "ss'af7a:",
'linkshere' => "الصفحات التالية تصل إلى '''[[:$1]]''':",
# Block/unblock
'ipboptions' => 'ساعتين:2 hours,يوم واحد:1 day,3 أيام:3 days,أسبوع واحد:1 week,أسبوعين:2 weeks,شهر واحد:1 month,3 أشهر:3 months,6 أشهر:6 months,سنة واحدة:1 year,دائم:infinite',
'ipblocklist' => 'المستخدمون الممنوعون',
-'blocklink' => 'امنع',
+'blocklink' => 'Bloqui',
'unblocklink' => 'ارفع المنع',
'change-blocklink' => 'تغيير المنع',
-'contribslink' => 'مساهمات',
+'contribslink' => 'Mousehmet',
'blocklogpage' => 'سجل المنع',
'blocklogentry' => 'منع "[[$1]]" لفترة زمنية مدتها $2 $3',
'block-log-flags-nocreate' => 'إنشاء الحسابات ممنوع',
'allmessagesdefault' => 'النص الافتراضي',
# Thumbnails
-'thumbnail-more' => 'كبّر',
+'thumbnail-more' => 'Kabber',
'thumbnail_error' => 'خطأ في إنشاء صورة مصغرة: $1',
# Tooltip help for the actions
'tooltip-pt-preferences' => 'تفضيلاتي',
'tooltip-pt-watchlist' => 'قائمة الصفحات التي تراقب التغييرات التي تحدث بها',
'tooltip-pt-mycontris' => 'قائمة مساهماتك',
-'tooltip-pt-login' => 'يفضل أن تسجل الدخول، لكنه ليس إلزاميا.',
+'tooltip-pt-login' => 'Madhabina ken tconnecti, ama mouch bessif',
'tooltip-pt-logout' => 'خروج',
-'tooltip-ca-talk' => 'نقاش عن صفحة المحتوى',
-'tooltip-ca-edit' => 'يمكنك تعديل هذه الصفحة.
-من فضلك استخدم زر العرض المسبق قبل الحفظ.',
+'tooltip-ca-talk' => 'Discussion εal contenu mtaε essafħa',
+'tooltip-ca-edit' => 'Tannjem tbaddel essafħa hedhi. Aman enzel εal bouton mtaε elvue el msabqa qbal matsajjel.',
'tooltip-ca-addsection' => 'ابدأ قسما جديدا',
-'tooltip-ca-viewsource' => 'هذه الصفحة محمية.
-يمكنك رؤية مصدرها.',
-'tooltip-ca-history' => 'النسخ السابقة لهذه الصفحة',
+'tooltip-ca-viewsource' => 'El safħa protégée.
+Tnajjem tchouf essource mteεha.',
+'tooltip-ca-history' => 'Copiet qdom mtaε essafħa hedhi',
'tooltip-ca-protect' => 'احم هذه الصفحة',
'tooltip-ca-delete' => 'احذف هذه الصفحة',
'tooltip-ca-move' => 'علم هذه الصفحة',
'tooltip-ca-watch' => 'أضف هذه الصفحة إلى قائمة مراقبتك',
'tooltip-ca-unwatch' => 'أزل هذه الصفحة من قائمة مراقبتك',
-'tooltip-search' => 'lawwej fi {{SITENAME}}',
+'tooltip-search' => 'Lawwej fi {{SITENAME}}',
'tooltip-search-go' => 'اذهب إلى صفحة بالاسم نفسه إن وجدت',
-'tooltip-search-fulltext' => 'ابحث في الصفحات عن هذا النص',
-'tooltip-p-logo' => "ara ess'af7a elraïssia",
-'tooltip-n-mainpage' => "ara ess'af7a elraïssia",
-'tooltip-n-mainpage-description' => "ara ess'af7a elraïssia",
-'tooltip-n-portal' => 'حول المشروع، ماذا يمكن أن تفعل، أين يمكن أن تجد ما تحتاجه',
-'tooltip-n-currentevents' => 'مطالعة سريعة لأهم الأحداث الجارية',
-'tooltip-n-recentchanges' => 'قائمة أحدث التغييرات في الويكي.',
-'tooltip-n-randompage' => 'حمل صفحة عشوائية',
-'tooltip-n-help' => 'المكان للمساعدة',
-'tooltip-t-whatlinkshere' => 'قائمة بكل صفحات الويكي التي تصل هنا',
-'tooltip-t-recentchangeslinked' => 'أحدث التغييرات في الصفحات الموصولة من هذه الصفحة',
+'tooltip-search-fulltext' => "Farkes f'essafħat εattexte hedha",
+'tooltip-p-logo' => "Emchi l'elpage principale",
+'tooltip-n-mainpage' => "Emchi l'elpage principale",
+'tooltip-n-mainpage-description' => "Emchi l'elpage principale",
+'tooltip-n-portal' => "Ɛ'almachrouε, chnowa tnajem taεmel, win talqa elli ħajtek bih",
+'tooltip-n-currentevents' => ' Alqa information εla aham laħdeth mtaε tawa',
+'tooltip-n-recentchanges' => "Lista mtaε ajad ettabdilat f'elwiki",
+'tooltip-n-randompage' => 'Ħell safħa elli tji',
+'tooltip-n-help' => 'Mouεawna',
+'tooltip-t-whatlinkshere' => 'Lista mtaε safħat elwiki elkol elli twassel elhouni',
+'tooltip-t-recentchangeslinked' => "Aham ettabldilet f'essafħat elli ywaslou l'essafħa hedhi",
'tooltip-feed-atom' => 'تلقيم أتوم لهذه الصفحة',
'tooltip-t-contributions' => 'رؤية قائمة مساهمات هذا المستخدم',
'tooltip-t-emailuser' => 'أرسل رسالة لهذا المستخدم',
-'tooltip-t-upload' => 'ارفع ملفات',
-'tooltip-t-specialpages' => 'قائمة بكل الصفحات الخاصة',
-'tooltip-t-print' => 'نسخة للطباعة لهذه الصفحة',
-'tooltip-t-permalink' => 'وصلة دائمة لهذه النسخة من الصفحة',
-'tooltip-ca-nstab-main' => 'رؤية صفحة المحتوى',
+'tooltip-t-upload' => "Abεeth des fichiers l'esserveur",
+'tooltip-t-specialpages' => 'Lista mtaε essafħat esspéciales elkol',
+'tooltip-t-print' => "Version l'ettabεan mtaε essafħa hedhi.",
+'tooltip-t-permalink' => "Lien dayem l'elversion hedhi mtaε essafħa",
+'tooltip-ca-nstab-main' => 'Chouf elcontenu mtaε essafħa',
'tooltip-ca-nstab-user' => 'اعرض صفحة المستخدم',
'tooltip-ca-nstab-special' => 'هذه صفحة خاصة، لا تستطيع أن تعدل الصفحة نفسها',
'tooltip-ca-nstab-project' => 'رؤية صفحة المحتوى',
'tooltip-diff' => 'اعرض التغييرات التي قمت بها للنص.',
'tooltip-compareselectedversions' => 'شاهد الفروق بين النسختين المختارتين من هذه الصفحة.',
'tooltip-watch' => 'أضف هذه الصفحة إلى قائمة مراقبتك',
-'tooltip-rollback' => '"استرجاع" تسترجع التعديل (التعديلات) في هذه الصفحة للمساهم الأخير بضغطة واحدة.',
-'tooltip-undo' => '"رجوع" تسترجع هذا التعديل وتفتح نافذة التعديل في نمط العرض المسبق. تسمح بإضافة سبب في الملخص.',
+'tooltip-rollback' => '"Rajjaε" yrajjeε ettabdilet f\'hassafħa el\'ekher weħed baddel fi nazla waħda.',
+'tooltip-undo' => '"رجوع" تسترجع هذا التعديل وتفتح نافذة التعديل في نمط العرض المسبق. تسمح بإضافة سبب في الملخص.
+"Annuler" trajjeε eltabdila lekhra w tħel fenêtre mtaε el tabdil mtaε elvue el msabqa. Tnajjem tqoul εlech f\'ettalkhis.',
'tooltip-summary' => 'أدخل ملخصا قصيرا',
# Browsing diffs
'show-big-image' => 'دقة كاملة',
# Bad image list
-'bad_image_list' => 'الصيغة كالتالي:
-
-فقط عناصر القائمة (السطور التي تبدأ ب *) تؤخذ في الاعتبار.
-يجب أن تكون أول وصلة في السطر وصلة لملف سيىء.
-أي وصلات تالية في السطر نفسه تعتبر استثناءات، أي صفحات قد يكون الملف فيها سطريا.',
+'bad_image_list' => "Elformat kima hakka:
+Les élements mtaε lista (lostra elli yabdew b' *) yetħesbou.
+Ellien lowel fi star yelzmou ykoun lien el fichier khayeb.
+Ay lien ekher fi nafs estar yetħseb exception, maħneha des pages win elfichier ynajem ykoun fi star.",
# Metadata
'metadata' => 'بيانات ميتا',
'duplicate-defaultsort' => '\'\'\'تحذير:\'\'\' مفتاح الترتيب الافتراضي "$2" يتجاوز مفتاح الترتيب الافتراضي السابق "$1".',
# Special:SpecialPages
-'specialpages' => 'الصفحات الخاصة',
+'specialpages' => 'Safħat spéciales',
# External image whitelist
'external_image_whitelist' => ' #<pre>اترك هذا السطر تماما كما هو
$messages = array(
# User preference toggles
'tog-underline' => 'Onderstreep skakels.',
-'tog-justify' => 'Justeer paragrawe.',
'tog-hideminor' => 'Moenie klein wysigings in die onlangse wysigingslys wys nie.',
'tog-hidepatrolled' => 'Versteek gepatrolleerde wysigings in onlangse wysigingslys',
'tog-newpageshidepatrolled' => 'Versteek gepatrolleerde wysigings van nuwe bladsy lys',
'tog-numberheadings' => 'Nommer opskrifte outomaties',
'tog-showtoolbar' => 'Wys redigeergereedskap',
'tog-editondblclick' => 'Dubbelkliek om te wysig',
-'tog-editsection' => 'Wys [wysig]-skakels vir elke afdeling',
'tog-editsectiononrightclick' => 'Wysig afdeling met regskliek op afdeling se titel (JavaScript)',
-'tog-showtoc' => 'Wys inhoudsopgawe (by bladsye met meer as drie opskrifte)',
'tog-rememberpassword' => "Onthou dat ek op hierdie rekenaar ingeteken het (vir 'n maksimum van $1 {{PLURAL:$1|dag|dae}})",
'tog-watchcreations' => 'Voeg bladsye wat ek skep en lêers wat ek oplaai by my dophoulys',
'tog-watchdefault' => 'Voeg bladsye en lêers wat ek wysig by my dophoulys',
'youhavenewmessages' => 'U het $1 (sien $2).',
'youhavenewmessagesfromusers' => "U het $1 van {{PLURAL:$3|'n ander gebruiker|$3 gebruikers}} ($2).",
'youhavenewmessagesmanyusers' => 'U het $1 van baie gebruikers ($2).',
-'newmessageslinkplural' => "{{PLURAL:$1|'n nuwe boodskap|nuwe boodskappe}}",
-'newmessagesdifflinkplural' => 'laaste {{PLURAL:$1|wysiging|wysigings}}',
+'newmessageslinkplural' => "{{PLURAL:$1|'n nuwe boodskap|999=nuwe boodskappe}}",
+'newmessagesdifflinkplural' => 'laaste {{PLURAL:$1|wysiging|999=wysigings}}',
'youhavenewmessagesmulti' => 'U het nuwe boodskappe op $1',
'editsection' => 'wysig',
'editold' => 'wysig',
# General errors
'error' => 'Fout',
'databaseerror' => 'Databasisfout',
+'databaseerror-text' => "'n Databasisfout het voorgekom. Dit kan op 'n fout in die sagteware dui.",
'databaseerror-textcl' => "'n Databasis-versoek het gefaal.",
'databaseerror-query' => 'SQL: $1',
'databaseerror-function' => 'Funksie: $1',
'cannotdelete-title' => 'Bladsy "$1" kan nie verwyder word nie',
'delete-hook-aborted' => "Die wysiging is deur 'n hoek gekanselleer.
Geen verduideliking is verskaf nie.",
+'no-null-revision' => 'Dit was nie moontlik om \'n nuwe leë weergawe vir bladsy "$1" maak nie',
'badtitle' => 'Ongeldige titel',
'badtitletext' => "Die bladsytitel waarvoor gevra is, is ongeldig, leeg, of
'n verkeerd geskakelde tussen-taal of tussen-wiki titel.",
'invalidtitle-knownnamespace' => 'Ongeldige titel met naamruimte "$2" en teks "$3"',
'invalidtitle-unknownnamespace' => 'Ongeldige titel met onbekende naamruimtenummer $1 en teks "$2"',
'exception-nologin' => 'Nie aangeteken nie',
-'exception-nologin-text' => 'U moet eers op hierdie wiki aanmeld alvorens u hierdie bladsy kan sien of die handeling kan uitvoer.',
+'exception-nologin-text' => '[[Special:Userlogin|Meld aan]] om hierdie bladsy te wys of om die handeling uit te voer.',
+'exception-nologin-text-manual' => 'U moet $1 om hierdie bladsy te wys of die handeling uit te voer.',
# Virus scanner
'virus-badscanner' => "Slegte konfigurasie: onbekende virusskandeerder: ''$1''",
'virus-unknownscanner' => 'onbekende antivirus:',
# Login and logout pages
-'logouttext' => "'''U is nou uitgeteken'''
+'logouttext' => "'''U is nou afgemeld'''
-U kan aanhou om {{SITENAME}} anoniem te gebruik; of u kan weer as dieselfde of 'n ander gebruiker <span class='plainlinks'>[$1 aanmeld]</span>.
-Dit is moontlik dat sommige bladsye nog sal aandui dat u steeds aangemeld is totdat u u webblaaier se kas skoonmaak.",
+Sommige bladsye kan moontlik nog aandui dat u steeds aangemeld is, totdat u u webblaaier se kas skoonmaak.",
'welcomeuser' => 'Welkom, $1!',
'welcomecreation-msg' => 'U gebruiker is geskep.
Moenie vergeet om u [[Special:Preferences|voorkeure vir {{SITENAME}}]] te stel nie.',
'gotaccount' => "Het u reeds 'n rekening? $1.",
'gotaccountlink' => 'Meld aan',
'userlogin-resetlink' => 'U besonderhede vergeet?',
-'userlogin-resetpassword-link' => 'Herstel u wagwoord',
+'userlogin-resetpassword-link' => 'Wagwoord vergeet?',
'helplogin-url' => 'Help:Aanmelding',
'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Hulp met aanmelding]]',
+'userlogin-loggedin' => "U is reeds aangemeld as {{GENDER:$1|$1}}.
+Gebruik die onderstaande vorm om as 'n ander gebruiker aan te meld.",
'userlogin-createanother' => "Skep nog 'n rekening",
'createacct-join' => 'Verskaf u gegewens hieronder.',
'createacct-another-join' => 'Sleutel die nuwe rekening se inligting hier onder in:',
'login-abort-generic' => 'U is nie aangemeld nie. Die prosedure is gestaak.',
'loginlanguagelabel' => 'Taal: $1',
'suspicious-userlogout' => "U versoek om af te teken is geïgnoreer omdat dit lyk asof dit deur 'n gebreekte webleser of instaanbediener gestuur is.",
+'createacct-another-realname-tip' => 'Regte naam is opsioneel.
+As u dit verskaf, sal dit gebruik word om u erkenning vir u werk te gee.',
# Email sending
'php-mail-error-unknown' => 'Onbekende fout in PHP se mail()-funksie',
'newpassword' => 'Nuwe wagwoord',
'retypenew' => 'Tik nuwe wagwoord weer in',
'resetpass_submit' => 'Stel wagwoord en meld aan',
-'changepassword-success' => 'U wagwoord is suksesvol gewysig!
-Besig om u aan te meld...',
+'changepassword-success' => 'U wagwoord is suksesvol gewysig!',
'resetpass_forbidden' => 'Wagwoorde kannie gewysig word nie.',
'resetpass-no-info' => 'U moet ingeteken wees om hierdie bladsy direk te kan gebruik.',
'resetpass-submit-loggedin' => 'Verander wagwoord',
# Special:PasswordReset
'passwordreset' => 'Wagwoord herstel',
'passwordreset-text-one' => 'Voltooi hierdie vorm om u wagwoord te herstel.',
-'passwordreset-text-many' => '{{PLURAL:$1|Vul een van die velde in om u wagwoord te herstel.}}',
+'passwordreset-text-many' => "{{PLURAL:$1|Vul een van die velde in om 'n tydelike wagwoord per e-pos te ontvang.}}",
'passwordreset-legend' => 'Kry nuwe wagwoord',
'passwordreset-disabled' => 'Die herskik van U wagwoord is gedeaktiveer op hierdie wiki.',
'passwordreset-emaildisabled' => 'E-posfunksies is afgeskakel op hierdie wiki.',
'showhideselectedversions' => 'Wys/versteek gekose weergawes',
'editundo' => 'maak ongedaan',
'diff-empty' => '(Geen verskil)',
-'diff-multi' => '({{PLURAL:$1|Een tussenin wysiging|$1 tussenin wysigings}} deur {{PLURAL:$2|een gebruiker|$2 gebruikers}} word nie gewys nie)',
'diff-multi-manyusers' => '({{PLURAL:$1|Een tussenin wysiging|$1 tussenin wysigings}} deur meer as $2 {{PLURAL:$2|gebruiker|gebruikers}} nie gewys nie)',
'difference-missing-revision' => "{{PLURAL:$2|'n Weergawe|$2 weergawes}} van die verskil ($1) {{PLURAL:$2|is|is}} nie gevind nie.
'shown-title' => '$1 {{PLURAL:$1|resultaat|resultate}} per bladsy',
'viewprevnext' => 'Wys ($1 {{int:pipe-separator}} $2) ($3).',
'searchmenu-exists' => "'''Daar is reeds 'n bladsy genaamd \"[[:\$1]]\" op die wiki'''",
-'searchmenu-new' => "'''Skep die bladsy \"[[:\$1]]\" op hierdie wiki'''",
+'searchmenu-new' => '<strong>Skep die bladsy "[[:$1]]" op hierdie wiki</strong> {{PLURAL:$2|0=|Sien ook die bladsy wat in u soektog gevind is.|Sien ook die soekresultate wat gevind is.}}',
'searchprofile-articles' => 'Inhoudelike bladsye',
'searchprofile-project' => 'Hulp- en projekbladsye',
'searchprofile-images' => 'Multimedia',
'rows' => 'Rye',
'columns' => 'Kolomme',
'searchresultshead' => 'Soekresultate',
-'resultsperpage' => 'Aantal resultate om te wys',
'stub-threshold' => 'Drempel vir merk as <a href="#" class="stub">saadjie</a> (grepe):',
'stub-threshold-disabled' => 'Afgeskakel',
'recentchangesdays' => 'Aantal dae wat in onlangse wysigings vertoon word:',
'randompage-nopages' => 'Daar is geen bladsye in die volgende {{PLURAL:$2|naamruimte|naamruimtes}} nie: $1.',
# Random page in category
+'randomincategory' => 'Lukrake bladsy in die kategorie',
'randomincategory-invalidcategory' => '"$1" is nie \'n geldige kategorienaam nie.',
'randomincategory-nopages' => 'Daar is geen bladsye in kategorie [[:Category:$1|$1]].',
+'randomincategory-selectcategory' => "Kry 'n lukrake bladsy uit hierdie kategorie: $1 $2.",
'randomincategory-selectcategory-submit' => 'Gaan',
# Random redirect
'watchmethod-list' => 'kontroleer bladsye op dophoulys vir wysigings',
'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',
'watchlist-options' => 'Opsies vir dophoulys',
'allmessages-prefix' => 'Filter op voorvoegsel:',
'allmessages-language' => 'Taal:',
'allmessages-filter-submit' => 'Laat waai',
+'allmessages-filter-translate' => 'Vertaal',
# Thumbnails
'thumbnail-more' => 'Vergroot',
'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 aan te meld. Dit is egter nie verpligtend nie.',
-'tooltip-pt-anonlogin' => 'U word aangemoedig om aan te meld. Dit is egter nie verpligtend nie',
'tooltip-pt-logout' => 'Teken uit',
'tooltip-ca-talk' => 'Bespreking oor die inhoudbladsy',
'tooltip-ca-edit' => 'U kan hierdie bladsy wysig. Gebruik asseblief die voorskoufunksie vóór u dit stoor.',
'minutes' => '{{PLURAL:$1|$1 minuut|$1 minute}}',
'hours' => '{{PLURAL:$1|$1 uur|$1 ure}}',
'days' => '{{PLURAL:$1|$1 dag|$1 dae}}',
-'weeks' => '{{PLURAL: $1|één week|$1 weke}}',
+'weeks' => '{{PLURAL:$1|één week|$1 weke}}',
'months' => '{{PLURAL:$1|een maand|$1 maande}}',
'years' => '{{PLURAL:$1|een jaar|$1 jaar}}',
'ago' => '$1 gelede',
'version-hook-name' => 'Hoek naam',
'version-hook-subscribedby' => 'Gebruik deur',
'version-version' => '(Weergawe $1)',
-'version-license' => 'Lisensie',
+'version-license' => 'MediaWiki se lisensie',
+'version-ext-license' => 'Lisensie',
+'version-ext-colheader-name' => 'Uitbreiding',
+'version-ext-colheader-version' => 'Weergawe',
+'version-ext-colheader-license' => 'Lisensie',
+'version-ext-colheader-description' => 'Beskrywing',
+'version-ext-colheader-credits' => 'Outeurs',
+'version-license-title' => 'Lisensie vir $1',
+'version-credits-title' => 'Krediete vir $1',
'version-poweredby-credits' => "Hierdie wiki word aangedryf deur '''[https://www.mediawiki.org/ MediaWiki]''', kopiereg © 2001-$1 $2.",
'version-poweredby-others' => 'andere',
'version-poweredby-translators' => 'translatewiki.net-vertalers',
'redirect-lookup' => 'Soek volgens:',
'redirect-value' => 'Waarde:',
'redirect-user' => 'Gebruiker-ID',
+'redirect-page' => 'Bladsy-ID',
'redirect-revision' => 'Bladsy-weergawe',
'redirect-file' => 'Lêernaam',
'redirect-not-exists' => 'Waarde nie gevind nie',
$messages = array(
# User preference toggles
'tog-underline' => 'Nënvizoji vegzat',
-'tog-justify' => 'Drejto kryerreshtat',
'tog-hideminor' => 'Mshef redaktimet e vogla të bâme së voni',
'tog-hidepatrolled' => 'Mshef redaktimet e mbikëqyruna në ndryshimet e fundit',
'tog-newpageshidepatrolled' => 'Mshef redaktimet e mbikëqyruna prej listës së faqeve të reja',
'tog-numberheadings' => 'Numëro automatikisht mbititujt',
'tog-showtoolbar' => 'Trego butonat për redaktim (JavaScript)',
'tog-editondblclick' => 'Redakto faqet me klikim të dyfishtë (JavaScript)',
-'tog-editsection' => 'Lejo redaktimin e seksioneve me opcionin [redakto]',
'tog-editsectiononrightclick' => 'Lejo redaktimin e seksioneve tue klikue me të djathtë mbi titull (JavaScript)',
-'tog-showtoc' => 'Trego përmbajtjen<br />(për faqet me mâ shum se 3 tituj)',
'tog-rememberpassword' => 'Ruej fjalëkalimin tem në këtë shfletues (për $1 {{PLURAL:$1|ditë|ditë}})',
'tog-watchcreations' => 'Shtoji në listë mbikëqyrëse faqet që i krijoj vetë',
'tog-watchdefault' => 'Shtoji në listë mbikëqyrëse faqet që i redaktoj',
'lineno' => 'Rreshti $1:',
'compareselectedversions' => 'Krahasoni versionet e zgjedhme',
'editundo' => 'ktheje',
-'diff-multi' => '({{PLURAL:$1|Një redaktim ndërmjet nuk është|$1 redaktime ndërmjet nuk janë}} treguar.)',
# Search results
'searchresults' => 'Rezultatet e kërkimit',
'rows' => 'Rreshta:',
'columns' => 'Kolona:',
'searchresultshead' => 'Kërkimi',
-'resultsperpage' => 'Gjetje për faqe:',
'stub-threshold' => 'Pragu për formatimin e <a href="#" class="stub">vegzave të cungueme</a> në (byte):',
'recentchangesdays' => 'Numri i ditëve për me i tregue te ndryshimet e freskëta:',
'recentchangesdays-max' => '(maksimum $1 {{PLURAL:$1|ditë|ditë}})',
$messages = array(
# User preference toggles
'tog-underline' => 'በመያያዣ ስር አስምር',
-'tog-justify' => 'አንቀጾችን አስተካክል',
'tog-hideminor' => 'በቅርብ ጊዜ የተደረጉ አነስተኛ እርማቶችን ደብቅ',
'tog-hidepatrolled' => 'ተደጋጋሚ እርማቶችን ከቅርብ ጌዜ እርማቶች ዝርዝር ውስጥ ደብቅ',
'tog-newpageshidepatrolled' => 'በተደጋጋሚ የታዩ ገፆችን ከአዲስ ገፆች ዝርዝር ውስጥ ደብቅ።',
'tog-numberheadings' => 'አርዕስቶችን በራስገዝ ቁጥር ስጥ',
'tog-showtoolbar' => '«አርም» ትዕዛዝ-መስጫ ይታይ (JavaScript)',
'tog-editondblclick' => 'ሁለቴ መጫን ገጹን ማረም ያስችል (JavaScript ያስፈልጋል)',
-'tog-editsection' => 'በ[አርም] መያያዣ ክፍል ማረምን አስችል',
'tog-editsectiononrightclick' => 'የክፍል አርዕስት ላይ በቀኝ በመጫን ክፍል ማረምን አስችል (JavaScript)',
-'tog-showtoc' => 'ከ3 አርዕስቶች በላይ ሲሆን የማውጫ ሰንጠረዥ ይታይ',
'tog-rememberpassword' => 'ለሚቀጥለው ጊዜ በዚህ ኮምፒውተር ላይ በአባልነት ስሜ መግባቴን (ቢበዛ ለ$1 {{PLURAL:$1|ቀን|ቀናት}}) አስታውስ።',
'tog-watchcreations' => 'እኔ የምፈጥራቸውን ገጾችና የምልካቸውን ፋይሎች ወደምከታተላቸው ገጾች ዝርዝር ውስጥ ጨምር',
'tog-watchdefault' => 'ያረምኳቸውን ገጾች እና ፋይሎች ወደምከታተላቸው ገጾች ዝርዝር ውስጥ ጨምር',
'lineno' => 'መስመር፡ $1፦',
'compareselectedversions' => 'የተመረጡትን እትሞች ለማነፃፀር',
'editundo' => 'ለውጡ ይገልበጥ',
-'diff-multi' => '(ከነዚህ 2 እትሞች መካከል በ{{PLURAL:$2|አንድ አባል |$2 አባላት}} {{PLURAL:$1|የተደረገ አንድ ለውጥ አይታይም|የተደረጉ $1 ለውጦች አይታዩም}}።)',
# Search results
'searchresults' => 'የፍለጋ ውጤቶች',
'rows' => 'በማዘጋጀቱ ሰንጠረዥ ስንት ተርታዎች?',
'columns' => 'ስንት ዓምዶችስ?',
'searchresultshead' => 'ፍለጋ',
-'resultsperpage' => 'ስንት ውጤቶች በየገጹ?',
'recentchangesdays' => 'በቅርቡ ለውጦች ዝርዝር ስንት ቀን ይታይ?',
'recentchangesdays-max' => '(እስከ $1 {{PLURAL:$1|ቀን|ቀን}} ድረስ)',
'recentchangescount' => 'በዝርዝርዎ ላይ ስንት ለውጥ ይታይ? (እስከ 500)',
'watchmethod-recent' => 'የቅርብ ለውጦችን ለሚከታተሉት ገጾች በመፈለግ',
'watchmethod-list' => 'የሚከታተሉትን ገጾች ለቅርብ ለውጦች በመፈለግ',
'watchlistcontains' => 'አሁን በሙሉ $1 ገጾች እየተከታተሉ ነው።',
-'wlnote' => 'ባለፉት <b>$2</b> ሰዓቶች የተደረጉት $1 መጨረሻ ለውጦች እታች ይገኛሉ።',
'wlshowlast' => 'ያለፉት $1 ሰዓት፤ $2 ቀን፤ $3 ይታዩ።',
'watchlist-options' => 'የዝርዝሩ ምርጫዎች',
'tooltip-pt-watchlist' => 'እርስዎ ስለ ለውጦች የሚከታተሏቸው ገጾች',
'tooltip-pt-mycontris' => 'የተሳተፍክባቸው/ሽባቸው ቦታዎች ዝርዝር',
'tooltip-pt-login' => 'በብዕር ስም መግባትዎ ጠቃሚ ቢሆንም አስፈላጊነት አይደለም',
-'tooltip-pt-anonlogin' => 'በብዕር ስም መግባትዎ ጠቃሚ ቢሆንም አስፈላጊነት አይደለም',
'tooltip-pt-logout' => 'ከብዕር ስምዎ ለመውጣት',
'tooltip-ca-talk' => 'ስለ ገጹ ለመወያየት',
'tooltip-ca-edit' => 'ይህን ገጽ ለማዘጋጀት ይችላሉ!',
$messages = array(
# User preference toggles
'tog-underline' => 'Subrayar os vinclos:',
-'tog-justify' => 'Achustar parrafos',
'tog-hideminor' => 'Amagar edicions menors en a pachina de "zaguers cambeos"',
'tog-hidepatrolled' => 'Amagar as edicions patrullatas en os zaguers cambeos',
'tog-newpageshidepatrolled' => "Amagar as pachinas patrulladas d'a lista de pachinas nuevas",
'tog-numberheadings' => 'Numerar automaticament os encabezaus',
'tog-showtoolbar' => "Amostrar a barra de ferramientas d'edición (cal JavaScript)",
'tog-editondblclick' => 'Activar edición de pachinas fendo-ie doble click (cal JavaScript)',
-'tog-editsection' => 'Activar a edición por seccions usando os vinclos [editar]',
'tog-editsectiononrightclick' => "Activar a edición de seccions punchando con o botón dreito d'o ratet <br /> en os títols de seccions (cal JavaScript)",
-'tog-showtoc' => "Amostrar l'endice (ta pachinas con más de 3 seccions)",
'tog-rememberpassword' => "Remerar o mío nombre d'usuario en iste navegador (como muito por $1 {{PLURAL:$1|día|días}})",
'tog-watchcreations' => 'Cosirar as pachinas que creye',
'tog-watchdefault' => 'Cosirar as pachinas que edite',
'yourname' => "Nombre d'usuario:",
'yourpassword' => "Clau d'acceso:",
'yourpasswordagain' => 'Torne a escribir a clau:',
+'createacct-yourpasswordagain' => 'Confirma a clau',
'remembermypassword' => "Remerar o mío nombre d'usuario y a clau entre sesions en iste navegador (como muito por $1 {{PLURAL:$1|día|días}})",
'yourdomainname' => 'Dominio:',
'externaldberror' => "Bi habió una error d'autenticación externa d'a base de datos u bien no tiene premisos ta esviellar a suya cuenta externa.",
'logout' => "Salir d'a sesión",
'userlogout' => 'Salir',
'notloggedin' => 'No ha dentrato en o sistema',
+'userlogin-noaccount' => 'No tiene garra cuenta?',
'nologin' => "No tiene garra cuenta? '''$1'''.",
'nologinlink' => 'Creyar una nueva cuenta',
'createaccount' => 'Creyar una nueva cuenta',
'gotaccount' => "Tiene ya una cuenta? '''$1'''.",
'gotaccountlink' => 'Identificar-se y encetar sesión',
'userlogin-resetlink' => "Ha xublidau os suyos datos d'acceso?",
+'createacct-join' => 'Fica os tuyos datos debaixo.',
+'createacct-another-email-ph' => 'Establir una adreza de correu-e',
'createaccountmail' => 'por correu electronico',
'createaccountreason' => 'Razón:',
+'createacct-imgcaptcha-ph' => "Escribe o texto d'alto",
+'createacct-benefit-body3' => '{{PLURAL:$1|colaborador recient|colaboradors recients}}',
'badretype' => 'As claus que ha escrito no son iguals.',
'userexists' => "O nombre d'usuario que ha escrito ya ye en uso.
Por favor, trigue-ne uno de diferent.",
'passwordtooshort' => 'As claus han de tener a lo menos {{PLURAL:$1|1 caracter|$1 caracters}}.',
'password-name-match' => "A clau ha d'estar diferent d'o suyo nombre d'usuario.",
'password-login-forbidden' => "No se permite d'emplegar iste nombre d'usuario y clau.",
-'mailmypassword' => 'Ninviar una nueva clau por correu electronico',
+'mailmypassword' => 'Tornar a fixar a clau',
'passwordremindertitle' => 'Nueva clau temporal de {{SITENAME}}',
'passwordremindertext' => 'Bell un (probablement vusté mesmo, dende l\'adreza IP $1) demandó una nueva clau d\'acceso ta la suya cuenta en {{SITENAME}} ($4). S\'ha creyato una nueva clau temporal ta l\'usuario "$2", que ye "$3".
Si isto ye o que quereba, ha d\'encetar agora una sesión y trigar una nueva clau.
'compareselectedversions' => 'Confrontar as versions trigatas',
'showhideselectedversions' => 'Amostrar/amagar as versions trigadas',
'editundo' => 'desfer',
-'diff-multi' => "(No s'amuestra {{PLURAL:$1|una edición entremeya feita|$1 edicions entremeyas feitas}} por {{PLURAL:$2|un usuario|$2 usuarios}}).",
'diff-multi-manyusers' => "(No s'amuestra {{PLURAL:$1|una edición entremeya|$1 edicions entremeyas}} feitas por más {{PLURAL:$2|d'un usuario|de $2 usuarios}})",
# Search results
'shown-title' => 'Amostrar $1 {{PLURAL:$1|resultau|resultaus}} por pachina',
'viewprevnext' => 'Veyer ($1 {{int:pipe-separator}} $2) ($3)',
'searchmenu-exists' => "'''Bi ha una pachina clamada \"[[\$1]]\" en ista wiki'''",
-'searchmenu-new' => "'''Creyar a pachina \"[[:\$1]]\" en ista wiki!'''",
+'searchmenu-new' => '<strong>Creyar a pachina "[[:$1]]" en iste wiki!</strong> {{PLURAL:$2|0=|Mire-se tamién a pachina que s\'ha trobau.|Mire-se tamién os resultaus d\'a busca.}}',
'searchprofile-articles' => 'Pachinas de conteniu',
'searchprofile-project' => "Pachinas d'aduya y d'o prochecto",
'searchprofile-images' => 'Multimedia',
'rows' => 'Ringleras:',
'columns' => 'Columnas:',
'searchresultshead' => 'Mirar',
-'resultsperpage' => "Resultaus que s'amostrarán por pachina:",
'stub-threshold' => 'Branquil superior ta o formateyo de <a href="#" class="stub">vinclos ta borradors</a> (en bytes):',
'stub-threshold-disabled' => 'Desactivato',
'recentchangesdays' => "Días que s'amostrarán en ''zaguers cambeos'':",
'watchmethod-list' => 'mirando edicions recients en as pachinas cosiratas',
'watchlistcontains' => 'A suya lista de seguimiento tiene $1 {{PLURAL:$1|pachina|pachinas}}.',
'iteminvalidname' => "Bi ha un problema con l'articlo '$1', o nombre no ye conforme...",
-'wlnote' => "Contino se i {{PLURAL:$1|amuestra o solo cambeo|amuestran os zaguers '''$1''' cambeos}} feitos en {{PLURAL:$2|a zaguer hora|as zagueras '''$2''' horas}}, o $3 a las $4.",
'wlshowlast' => 'Amostrar as zagueras $1 horas, $2 días u $3',
'watchlist-options' => "Opcions d'a lista de seguimiento",
'protect_expiry_invalid' => 'O tiempo de circumducción ye incorrecto.',
'protect_expiry_old' => 'O tiempo de circumducción ye una calendata ya pasata.',
'protect-unchain-permissions' => 'Desbloqueyar opcions de protección abanzatas',
-'protect-text' => "Puetz veyer y cambiar o livel e protección d'a pachina '''$1'''.",
+'protect-text' => "Puetz veyer y cambiar o livel de protección d'a pachina '''$1'''.",
'protect-locked-blocked' => "No puede cambiar os livels de protección mientres ye bloqueyato. Contino se i amuestran as opcions actuals d'a pachina '''$1''':",
'protect-locked-dblock' => "Os livels de protección no se pueden cambiar por un bloqueyo activo d'a base de datos.
Contino se i amuestran as opcions actuals d'a pachina '''$1''':",
'tooltip-pt-watchlist' => 'A lista de pachinas que en ye cosirando os cambeos',
'tooltip-pt-mycontris' => "Lista d'as suyas contrebucions",
'tooltip-pt-login' => 'Le recomendamos que se rechistre, encara que no ye obligatorio',
-'tooltip-pt-anonlogin' => 'Li alentamos a rechistrar-se, anque no ye obligatorio',
'tooltip-pt-logout' => 'Rematar a sesión',
'tooltip-ca-talk' => "Descusión sobre l'articlo",
'tooltip-ca-edit' => 'Puede editar ista pachina. Por favor, faiga servir o botón de visualización previa antes de grabar.',
'file-info-size-pages' => "$1 × $2 pixels, grandaria d'o fichero: $3, tipo MIME: $4, $5 {{PLURAL:$5|pachina|pachinas}}",
'file-nohires' => 'No bi ha garra versión con resolución más gran.',
'svg-long-desc' => 'fichero SVG, nominalment $1 × $2 píxels, grandaria: $3',
-'show-big-image' => 'Imachen en a maxima resolución',
+'show-big-image' => 'Fichero orichinal',
'show-big-image-preview' => "Grandaria d'ista previsualización: $1.",
'show-big-image-other' => '{{PLURAL:$2|Unatra resolución|Atras resolucions}}: $1.',
'show-big-image-size' => '$1 × $2 pixels',
$messages = array(
# User preference toggles
'tog-underline' => 'Mearc under hlencan:',
-'tog-justify' => 'Macian cwidfloccas rihte',
'tog-hideminor' => 'Hȳdan lytela adihtunga in nīwra andwendinga getæle',
'tog-hidepatrolled' => 'Hȳdan weardoda adihtunga in nīwra andwendinga getæle',
'tog-newpageshidepatrolled' => 'Hȳdan weardode trametas in nīwra andwendinga getæle',
'tog-numberheadings' => 'Settan rīm on fōrecwidas selflīce',
'tog-showtoolbar' => 'Īwan þā adihtunge tōlmearce',
'tog-editondblclick' => 'Adihtan trametas mid twifealdum mȳs swenge',
-'tog-editsection' => 'Þafian dǣla adihtunge mid [adihtan] hlencum',
'tog-editsectiononrightclick' => 'Þafian dǣla adihtunge þurh swīðran healfe mȳs swengas on dǣla titulum',
-'tog-showtoc' => 'Īwan innunge tabulan (for trametum þe mā þonne 3 fōrecwidas habbaþ)',
'tog-rememberpassword' => 'Gemynan mīne inmeldunge on þissum spearctellende (oþ $1 {{PLURAL:$1|dæg|dagas}} lengest)',
'tog-watchcreations' => 'Ēacnian mīn behealdungtæl mid trametum þā ic scieppe and ymelum þā ic hlade on nett.',
'tog-watchdefault' => 'Ēacnian mīn behealdungtæl mid trametum and ymelum þā ic adihte.',
'rows' => 'Rǣwa:',
'columns' => 'Sȳla:',
'searchresultshead' => 'Sōcn',
-'resultsperpage' => 'Tōhrīgunga tō īewenne for ǣlcum tramete:',
'recentchangescount' => 'Hū mæniga adihtunga to īwenne gewunelīce:',
'savedprefs' => 'Þīna fōreberunga wurdon gehordod.',
'timezonelegend' => 'Tīdgeard',
'unwatchthispage' => 'Ablinnan behealdunge',
'watchlist-details' => '{{PLURAL:$1|Þǣr is $1 tramet|Þǣr sind $1 trameta}} on þīnum behealdunggetæle, nā arīmedum mōtunga trametum.',
'watchlistcontains' => 'Þīn behealdungtæl hæfþ $1 {{PLURAL:$1|tramet|trameta}}.',
-'wlnote' => "Niðer {{PLURAL:$1|is sēo nīwoste andwendung|sind þā nīwostan '''$1''' andwendunga}} in {{PLURAL:$2|þǣre latostan tīde|þǣm latostan '''$2''' tīda}}, fram: $3, $4.",
'wlshowlast' => 'Īwan þā nīwostan $1 tīda $2 daga $3',
'watchlist-options' => 'Behealdungtæles cyras',
* @author Hakeem
* @author Histolo2
* @author Houcinee1
+ * @author Ibrahim.ID
* @author Jak
* @author Khaledhosny
* @author Lord Anubis
* @author Zack wadghiri
* @author Zanatos
* @author أحمد
+ * @author الهميان
* @author ترجمان05
* @author خالد حسني
* @author روخو
$messages = array(
# User preference toggles
'tog-underline' => 'سطر تحت الوصلات:',
-'tog-justify' => 'تسوية عرض الفقرات',
'tog-hideminor' => 'أخف التعديلات الطفيفة في أحدث التغييرات',
'tog-hidepatrolled' => 'أخف التعديلات المراجعة في أحدث التغييرات',
'tog-newpageshidepatrolled' => 'أخف الصفحات المعاينة من قائمة الصفحات الجديدة',
'tog-numberheadings' => 'ترقيم العناوين تلقائيا',
'tog-showtoolbar' => 'إظهار شريط التحرير',
'tog-editondblclick' => 'تعديل الصفحات بالنقر المزدوج',
-'tog-editsection' => 'تفعيل تعديل الأقسام بالضغط على [عدل]',
'tog-editsectiononrightclick' => 'تفعيل تعديل الأقسام بالنقر باليمين على عناوين الأقسام',
-'tog-showtoc' => 'عرض فهرس المحتويات (للصفحات التي تحتوي على أكثر من 3 عناوين)',
'tog-rememberpassword' => 'تذكر دخولي بهذا المتصفح (لمدة أقصاها {{PLURAL:$1||يوم واحد|يومان|$1 أيام|$1 يوما|$1 يوم}})',
'tog-watchcreations' => 'أضف الصفحات التي أنشئها والملفات التي أرفعها إلى قائمة مراقبتي.',
'tog-watchdefault' => 'أضف الصفحات والملفات التي أعدلها إلى قائمة مراقبتي',
'undelete_short' => 'استرجاع {{PLURAL:$1||تعديل واحد|تعديلين|$1 تعديلات|$1 تعديلاً|$1 تعديل}}',
'viewdeleted_short' => 'استعرض {{PLURAL:$1||تعديل واحد|تعديلين|$1 تعديلات|$1 تعديلاً|$1 تعديل}}',
'protect' => 'حماية',
-'protect_change' => 'غيّر',
+'protect_change' => 'غير',
'protectthispage' => 'احم هذه الصفحة',
'unprotect' => 'غير الحماية',
'unprotectthispage' => 'غير حماية هذه الصفحة',
'ok' => 'موافق',
'retrievedfrom' => 'مجلوبة من "$1"',
-'youhavenewmessages' => 'لك $1 ($2).',
-'youhavenewmessagesfromusers' => 'لديك $1 من {{PLURAL:$3|مستخدم واحد|مستخدم واحد|مستخدمين اثنين|$3 مستخدمين|$3 مستخدما|$3 مستخدم}} ($2).',
+'youhavenewmessages' => '{{PLURAL:$3|لك}} $1 ($2).',
+'youhavenewmessagesfromusers' => '{{PLURAL:$4|لديك}} $1 من {{PLURAL:$3|مستخدم واحد|مستخدم واحد|مستخدمين اثنين|$3 مستخدمين|$3 مستخدما|$3 مستخدم}} ($2).',
'youhavenewmessagesmanyusers' => 'لديك $1 من مستخدمين كثر ($2).',
'newmessageslinkplural' => '{{PLURAL:$1|رسالة جديدة|999=رسائل جديدة}}',
'newmessagesdifflinkplural' => 'أحدث {{PLURAL:$1|تغيير|999=تغييرات}}',
'content-not-allowed-here' => '"$1" المحتوى غير مسموح على صفحة [[$2]]',
'editwarning-warning' => 'قد تتسبب مغادرة هذه الصفحة بخسارتك لأي تغييرات أجريتها.
يمكنك تعطيل هذا التحذير إذا كنت والجًا في قسم "التحرير" في تفضيلاتك.',
+'editpage-notsupportedcontentformat-title' => 'تنسيق المحتوى غير مدعوم',
+'editpage-notsupportedcontentformat-text' => 'تنسيق المحتوى $1 غير مدعوم بواسطة نموذج المحتوى $2.',
# Content models
'content-model-wikitext' => 'نص ويكي',
'cantcreateaccount-text' => "إنشاء الحسابات من عنوان الأيبي هذا ('''$1''') تم منعه بواسطة [[User:$3|$3]].
السبب المعطى بواسطة $3 هو ''$2''",
+'cantcreateaccount-range-text' => "إنشاء الحسابات من عناوين الآيبي في النطاق '''$1'''، التي تحتوي على الآيبي الخاص بك ('''$4''')، قد حظرها [[مستخدم:$3|$3]].
+
+سبب الحظر الذي قاله $3 هو ''$2''",
# History pages
'viewpagelogs' => 'اعرض سجلات هذه الصفحة',
'showhideselectedversions' => 'أظهر/أخف المراجعات المختارة',
'editundo' => 'رجوع',
'diff-empty' => '(لا فرق)',
-'diff-multi' => '({{PLURAL:$1||مراجعة واحدة متوسطة غير معروضة أجراها|مراجعتان متوسطتان غير معروضتين أجراهما|$1 مراجعات متوسطة غير معروضة أجراها|$1 مراجعة متوسطة غير معروضة أجراها}} {{PLURAL:$2||مستخدم واحد|مستخدمان|$2 مستخدمين|$2 مستخدمًا|$2 مستخدم}}.)',
'diff-multi-manyusers' => '({{PLURAL:$1||مراجعة واحدة متوسطة غير معروضة أجراها|مراجعتان متوسطتان غير معروضتان أجراهما|$1 مراجعات متوسطة غير معروضة أجراها|$1 مراجعة متوسطة غير معروضة أجراها}} أكثر من {{PLURAL:$2||مستخدم واحد|مستخدمين|$2 مستخدمين|$2 مستخدمًا|$2 مستخدم}}.)',
'difference-missing-revision' => '{{PLURAL:$2|مراجعة واحدة|$2 مراجعات}} لهذا الفرق ($1) {{PLURAL:$2|لم|لم}} يتم إيجادها.
'nextn-title' => '$1 {{PLURAL:$1|نتيجة|نتيجة}} تالية',
'shown-title' => 'عرض $1 {{PLURAL:$1|نتيجة|نتيجة}} لكل صفحة',
'viewprevnext' => 'عرض ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-exists' => "*الصفحة '''[[$1]]'''",
-'searchmenu-new' => "'''أنشئ الصفحة \"[[:\$1]]\" في هذا الويكي!'''",
+'searchmenu-exists' => "'''توجد صفحة اسمها \"[[:\$1]]\" على هذه الويكي.''' {{PLURAL:\$2|0=|انظر ايضا نتائج البحث الأخرى.}}",
+'searchmenu-new' => "'''أنشئ الصفحة \"[[:\$1]]\" على هذه الويكي!''' {{PLURAL:\$2|0=|انظر أيضا الصفحة التي تم العثور عليها من بحثك.|انظر ايضا نتائج البحث.}}",
'searchprofile-articles' => 'صفحات المحتوى',
'searchprofile-project' => 'صفحات المساعدة والمشروع',
'searchprofile-images' => 'الوسائط المتعددة',
'search-result-score' => 'الارتباط: $1%',
'search-redirect' => '(تحويلة $1)',
'search-section' => '(قسم $1)',
+'search-file-match' => '(يطابق محتوى الملف)',
'search-suggest' => 'أتقصد: $1',
'search-interwiki-caption' => 'المشاريع الشقيقة',
'search-interwiki-default' => '$1 نتيجة:',
'rows' => 'صفوف:',
'columns' => 'أعمدة:',
'searchresultshead' => 'بحث',
-'resultsperpage' => 'عدد النتائج في الصفحة:',
'stub-threshold' => 'الحد لتنسيق <a href="#" class="stub">وصلة البذرة</a>:',
'stub-threshold-disabled' => 'معطل',
'recentchangesdays' => 'عدد الأيام المعروضة في أحدث التغييرات:',
'right-reupload-shared' => 'الرفع على الملفات في مستودع الملفات المشترك محليا',
'right-upload_by_url' => 'رفع ملف من عنوان مسار',
'right-purge' => 'تحديث كاش الموقع لصفحة بدون تأكيد',
-'right-autoconfirmed' => 'تعدÙ\8aÙ\84 اÙ\84صÙ\81Øات Ù\86صÙ\81 اÙ\84Ù\85ØÙ\85Ù\8aØ©',
+'right-autoconfirmed' => 'غÙ\8aر Ù\85تأثر بØدÙ\88د اÙ\84Ù\85عدÙ\84',
'right-bot' => 'تعامل كعملية أوتوماتيكية',
'right-nominornewtalk' => 'عدم جعل التعديلات الطفيفة لصفحات النقاش تظهر برواز الرسائل الجديدة',
'right-apihighlimits' => 'استخدام حدود أعلى في استعلامات API',
'right-editmyusercss' => 'تعديل ملفات CSS للمستخدم نفسه',
'right-editmyuserjs' => 'تعديل ملفات جافاسكربت للمستخدم نفسه',
'right-viewmywatchlist' => 'عرض قائمة مراقبتك',
+'right-editmywatchlist' => 'حرر قائمة مراقبتك. لاحظ أن بعض الإجراءات لا تزال تضيف الصفحات حتى بدون هذا الحق.',
'right-viewmyprivateinfo' => 'إستعرض بياناتك الشخصية (مثل البريد الإلكتروني والإسم الحقيقي)',
'right-editmyprivateinfo' => 'حرر بياناتك الشخصية (مثل البريد الإلكتروني والإسم الحقيقي)',
'right-editmyoptions' => 'تعديل تفضيلاتك',
'recentchanges-feed-description' => 'تابع أحدث التغييرات للويكي عبر هذه التلقيمة.',
'recentchanges-label-newpage' => 'أنشأ هذا التعديل صفحة جديدة',
'recentchanges-label-minor' => 'هذا تعديل طفيف',
-'recentchanges-label-bot' => 'Ø£Ù\8fجÙ\92رÙ\90Ù\8aÙ\8e Ù\87ذا اÙ\84تعدÙ\8aÙ\84 بÙ\88اسطة بوت',
+'recentchanges-label-bot' => 'تعدÙ\8aÙ\84 أجراÙ\87 بوت',
'recentchanges-label-unpatrolled' => 'لم يراجع هذا التعديل إلى الآن',
'recentchanges-label-plusminus' => 'حجم الصفحة تغير بهذا العدد من وحدات البايت',
'recentchanges-legend-heading' => 'شرح',
'rclistfrom' => 'أظهر التغييرات بدءا من $1',
'rcshowhideminor' => '$1 التعديلات الطفيفة',
'rcshowhidebots' => '$1 البوتات',
-'rcshowhideliu' => '$1 المستخدمين المسجلين',
+'rcshowhideliu' => '$1 {{GENDER:$1|مستخدمين مسجلين|مستخدمات مسجلات|مستخدمون مسجلون}}',
'rcshowhideanons' => '$1 المستخدمين المجهولين',
'rcshowhidepatr' => '$1 التعديلات المراجعة',
'rcshowhidemine' => '$1 تعديلاتي',
[[File:$1|thumb|center|$1]]',
'file-exists-duplicate' => 'هذا الملف مكرر {{PLURAL:$1|للملف|للملفات}} التالية:',
'file-deleted-duplicate' => 'ملف مطابق لهذه الملف ([[:$1]]) تم حذفه من قبل. ينبغي أن تتحقق من تاريخ الحذف لهذا الملف قبل المتابعة بإعادة رفعه.',
+'file-deleted-duplicate-notitle' => 'سابقا تم حذف ملف مطابق لهذا الملف، وقد تم منع العنوان.
+ينبغي أن تسأل شخص ما لديه القدرة على عرض بيانات الملف الممنوع لاستعراض الوضع قبل الشروع في إعادة تحميله.',
'uploadwarning' => 'تحذير الرفع',
'uploadwarning-text' => 'من فضلك عدل وصف الملف أدناه وحاول مرة أخرى.',
'savefile' => 'احفظ الملف',
'pageswithprop-text' => 'تسرد هذه الصفحة الصفحات التي تستخدم خاصية صفحة معينة.',
'pageswithprop-prop' => 'اسم الخاصية:',
'pageswithprop-submit' => 'اذهب',
+'pageswithprop-prophidden-long' => 'قيمة خاصية النص الطويل المخفية ($1)',
+'pageswithprop-prophidden-binary' => 'قيمة الخاصية الثنائية المخفية ($1)',
'doubleredirects' => 'تحويلات مزدوجة',
'doubleredirectstext' => 'هذه الصفحة تعرض الصفحات التي تحول إلى صفحات تحويل أخرى.
'ninterwikis' => '$1 {{PLURAL:$1|interwiki|interwikis}}',
'nlinks' => '{{PLURAL:$1|لا وصلات|وصلة واحدة|وصلتان|$1 وصلات|$1 وصلة}}',
'nmembers' => '{{PLURAL:$1|لا أعضاء|عضو واحد|عضوان|$1 أعضاء|$1 عضوا|$1 عضو}}',
+'nmemberschanged' => '$1 → $2 {{PLURAL:$2|عضو|أعضاء}}',
'nrevisions' => '{{PLURAL:$1|لا مراجعات|مراجعة واحدة|مراجعتان|$1 مراجعات|$1 مراجعة}}',
'nviews' => '{{PLURAL:$1|مشاهدة واحدة|مشاهدتان|$1 مشاهدات|$1 مشاهدة}}',
'nimagelinks' => 'مستخدم في {{PLURAL:$1||صفحة واحدة|صفحتين|$1 صفحات|$1 صفحة}}',
'protectedpages' => 'صفحات محمية',
'protectedpages-indef' => 'عمليات الحماية غير المحددة فقط',
'protectedpages-cascade' => 'الحماية المضمنة فقط',
+'protectedpages-noredirect' => 'أخفِ التحويلات',
'protectedpagesempty' => 'لا توجد صفحات محمية حاليا بهذه المحددات.',
'protectedtitles' => 'عناوين محمية',
'protectedtitlesempty' => 'لا توجد عناوين محمية حاليا بهذه المحددات.',
'listgrouprights' => 'صلاحيات مجموعات المستخدمين',
'listgrouprights-summary' => 'التالي قائمة بمجموعات المستخدمين المعرفة في هذا الويكي، بصلاحياتهم المصاحبة.
ربما تكون هناك [[{{MediaWiki:Listgrouprights-helppage}}|معلومات إضافية]] حول الصلاحيات المنفردة.',
-'listgrouprights-key' => '* <span class="listgrouprights-granted">صلاحية ممنوحة</span>
+'listgrouprights-key' => 'عنوان:
+* <span class="listgrouprights-granted">صلاحية ممنوحة</span>
* <span class="listgrouprights-revoked">صلاحية مسحوبة</span>',
'listgrouprights-group' => 'المجموعة',
'listgrouprights-rights' => 'الصلاحيات',
'watchmethod-list' => 'فحص الصفحات المراقبة للتعديلات الحديثة',
'watchlistcontains' => 'تحتوي قائمة مراقبتك على {{PLURAL:$1|لا صفحات|صفحة واحدة|صفحتان|$1 صفحات|$1 صفحة}}.',
'iteminvalidname' => "مشكلة في المدخل '$1'، اسم غير صحيح...",
-'wlnote' => "بالأسفل {{PLURAL:$1|لا توجد تغييرات|التغيير الأخير|آخر تغييرين|آخر '''$1''' تغييرات|آخر '''$1''' تغييرا|آخر '''$1''' تغيير}} في {{PLURAL:$2||'''الساعة''' الماضية|'''الساعتين''' الماضيتين|ال'''$2''' ساعات الماضية|ال'''$2''' ساعة الماضية}} وفقاً ل$3، $4.",
'wlshowlast' => 'عرض آخر $1 ساعات $2 أيام $3',
'watchlist-options' => 'خيارات قائمة المراقبة',
ملخص التعديل: $PAGESUMMARY $PAGEMINOREDIT
-الاتصال بالمحرر:
+اتصل بالمحرر:
البريد: $PAGEEDITOR_EMAIL
ويكي: $PAGEEDITOR_WIKI
-لن يكون هناك إخطارات أخرى في حالة حدوث مزيد من التغييرات إلا إذا قمت بزيارة تلك الصفحة.
-يمكنك أيضاً إزالة العلامات عن جميع الصفحات في قائمة مراقبتك.
+لن يكون هناك إخطارات أخرى في حالة حدوث مزيد من التغييرات إلا إذا قمت بزيارة تلك الصفحة أثناء تواجدك. يمكنك أيضاً إزالة العلامات عن جميع الصفحات في قائمة مراقبتك.
- نظام {{SITENAME}} للإعلام بالبريد الإلكتروني
+نظام {{SITENAME}} للإشعار
--
-Ù\84تغÙ\8aÙ\8aر إعدادات اÙ\84إعÙ\84اÙ\85 بالبريد الإلكتروني الخاص بك، قم بزيارة
+Ù\84تغÙ\8aÙ\8aر إعدادات اÙ\84إشعار بالبريد الإلكتروني الخاص بك، قم بزيارة
{{canonicalurl:{{#special:Preferences}}}}
لتغيير إعدادات قائمة مراقبتك، قم بزيارة
لحذف الصفحة من قائمة مراقبتك، قم بزيارة
$UNWATCHURL
-للمقترحات والحصول على مساعدة إضافية:
+للمقترحات وللحصول على مساعدة إضافية:
{{canonicalurl: {{MediaWiki:Helppage}}}}',
'created' => 'أنشئت',
'changed' => 'غيرت',
'deleteotherreason' => 'سبب آخر/إضافي:',
'deletereasonotherlist' => 'سبب آخر',
'deletereason-dropdown' => '*أسباب الحذف الشائعة
-** طلب المؤلف
+** سخام
+** تخريب
** خرق لحقوق التأليف والنشر
-** تخريب',
+** طلب المؤلف
+** تحويلة مكسورة',
'delete-edit-reasonlist' => 'عدل أسباب الحذف',
'delete-toobig' => 'لهذه الصفحة تاريخ تعديل طويل، أكثر من {{PLURAL:$1||مراجعة واحدة|مراجعتين|$1 مراجعات|$1 مراجعة}}.
قُيّد محذف مثل هذه الصفحات لمنع الاضطراب المفاجئة في {{SITENAME}}.',
'delete-warning-toobig' => 'لهذه الصفحة تاريخ تعديل طويل، أكثر من {{PLURAL:$1||مراجعة واحدة|مراجعتين|$1 مراجعات|$1 مراجعة}}.
قد يؤدي حذفها إلى اضطراب عمليات قاعدة البيانات في {{SITENAME}}؛
استمر مع الحذر.',
+'deleting-backlinks-warning' => "'''تحذير:''' ترتبط صفحات أخرى بالصفحة التي أنت على وشك حذفها.",
# Rollback
'rollback' => 'استرجاع التعديلات',
أنظر [[Special:BlockList|قائمة منع الآيبي]] لمراجعة حالات المنع.',
'ipb-blockingself' => 'أنت على وشك منع نفسك! أمتأكد من رغبتك في القيام بذلك؟',
'ipb-confirmhideuser' => 'أنت على وشك منع مستخدم مع تفعيل خيار "أخف المستخدم". سوف يخفي هذا الخيار اسم المستخدم من جميل القوائم ومدخلات السجلات. أمتأكد من رغبتك في القيام بذلك؟',
+'ipb-confirmaction' => 'إن كنت متأكدًا أنك تريد القيام بذلك حقًا، فالرجاء التحقق من حقل "{{int:ipb-confirm}}" في الأسفل.',
'ipb-edit-dropdown' => 'عدل أسباب المنع',
'ipb-unblock-addr' => 'رفع منع $1',
'ipb-unblock' => 'رفع المنع عن مستخدم أو عنوان أيبي',
'range_block_disabled' => 'إمكانية مدير النظام لمنع نطاق معطلة.',
'ipb_expiry_invalid' => 'تاريخ الانتهاء غير صحيح.',
'ipb_expiry_temp' => 'عمليات منع أسماء المستخدمين المخفية يجب أن تكون دائمة.',
-'ipb_hide_invalid' => 'غير قادر على إخفاء هذا الحساب؛ ربما يكون قد قام بالكثير من التعديلات.',
+'ipb_hide_invalid' => 'غير قادر على منع الحساب؛ لديه أكثر من {{PLURAL:$1|تعديل واحد|$1 تعديل}}.',
'ipb_already_blocked' => '"$1" ممنوع حالياً',
'ipb-needreblock' => '$1 ممنوع حالياً. هل تريد تغيير الإعدادات؟',
'ipb-otherblocks-header' => '{{PLURAL:$1||المنع الآخر|المنعان الآخران|المنوعات الأخرى}}',
'tooltip-pt-watchlist' => 'قائمة الصفحات التي تراقب التغييرات التي تحدث بها',
'tooltip-pt-mycontris' => 'قائمة مساهماتك',
'tooltip-pt-login' => 'يفضل أن تسجل الدخول، لكنه ليس إلزاميا.',
-'tooltip-pt-anonlogin' => 'من المفضل أن تقوم بتسجيل الدخول، هذا ليس إلزاميا.',
'tooltip-pt-logout' => 'تسجيل الخروج',
'tooltip-ca-talk' => 'نقاش عن صفحة المحتوى',
'tooltip-ca-edit' => 'يمكنك تعديل هذه الصفحة.
'pageinfo-length' => 'حجم الصفحة (بالبايت)',
'pageinfo-article-id' => 'معرف الصفحة (ID)',
'pageinfo-language' => 'لغة محتوى الصفحة',
+'pageinfo-content-model' => 'نموذج محتوى الصفحة',
'pageinfo-robot-policy' => 'فهرسة الروبوتات',
'pageinfo-robot-index' => 'مسموحة',
'pageinfo-robot-noindex' => 'غير مسموحة',
'imgmultigoto' => 'اذهب إلى صفحة $1',
# Language selector for translatable SVGs
+'img-lang-default' => '(اللغة الافتراضية)',
+'img-lang-info' => 'ترجم هذه الصورة إلى $1. $2',
'img-lang-go' => 'اذهب',
# Table pager
'version-hook-name' => 'اسم الخطاف',
'version-hook-subscribedby' => 'يستخدم بواسطة',
'version-version' => '(نسخة $1)',
-'version-svn-revision' => '(r$2)',
-'version-license' => 'الرخصة',
+'version-svn-revision' => 'ن$1',
+'version-license' => 'ترخيص ميدياويكي',
+'version-ext-license' => 'ترخيص',
+'version-ext-colheader-name' => 'امتداد',
+'version-ext-colheader-version' => 'نسخة',
+'version-ext-colheader-license' => 'ترخيص',
+'version-ext-colheader-description' => 'وصف',
+'version-ext-colheader-credits' => 'مؤلفون',
+'version-license-title' => 'ترخيص لـ $1',
+'version-license-not-found' => 'لم يتم العثور على أي معلومات ترخيص لهذا الامتداد.',
+'version-credits-title' => 'العاملون على $1',
+'version-credits-not-found' => 'لم يتم العثور على أي معلومات للعاملين على هذا الامتداد.',
'version-poweredby-credits' => "تدار هذه الويكي بواسطة '''[https://www.mediawiki.org/ ميدياويكي]'''، حقوق النشر © 2001-$1 $2.",
'version-poweredby-others' => 'آخرون',
'version-poweredby-translators' => 'مترجمو translatewiki.net',
'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath مسار السكريبت]',
# Special:Redirect
-'redirect' => 'تØÙ\88Ù\8aÙ\84 باسÙ\85 Ù\85Ù\84Ù\81 Ø£Ù\88 اسÙ\85 Ù\85ستخدÙ\85 أو رقم مراجعة',
+'redirect' => 'تØÙ\88Ù\8aÙ\84 Øسب رÙ\82Ù\85 اÙ\84Ù\85Ù\84Ù\81 Ø£Ù\88 رÙ\82Ù\85 اÙ\84Ù\85ستخدÙ\85 Ø£Ù\88 رÙ\82Ù\85 اÙ\84صÙ\81ØØ© أو رقم مراجعة',
'redirect-legend' => 'تحويل إلى ملف أو صفحة',
'redirect-summary' => 'هذه الصفحة الخاصة تحوّل إلى ملف (باسمه) أو صفحة (برقم إحدى مراجعاتها) أو إلى صفحة مستخدم (برقمه التعريفي). الاستخدام [[{{#Special:Redirect}}/file/Example.jpg]] أو [[{{#Special:Redirect}}/revision/328429]] أو [[{{#Special:Redirect}}/user/101]].',
'redirect-submit' => 'حوّل',
'redirect-lookup' => 'ابحث في:',
'redirect-value' => 'الوجهة',
'redirect-user' => 'رقم مستخدم',
+'redirect-page' => 'معرف الصفحة',
'redirect-revision' => 'مراجعة صفحة',
'redirect-file' => 'اسم ملف',
'redirect-not-exists' => 'المطلوب غير موجود',
'api-error-overwrite' => 'لا يسمح بالكتابة فوق ملف موجود.',
'api-error-stashfailed' => 'خطأ داخلي: فشل الملقم في تخزين الملفات المؤقتة.',
'api-error-publishfailed' => 'خطأ داخلي: لم ينجح الخادوم في نشر ملف مؤقت',
+'api-error-stasherror' => 'حدث خطأ أثناء رفع الملف لتخزينه.',
'api-error-timeout' => 'لم يستجب الملقم في الوقت المتوقع.',
'api-error-unclassified' => 'حدث خطأ غير معروف',
'api-error-unknown-code' => 'خطأ غير معروف : " $1 "',
'duration-hours' => '({{PLURAL:$1||ساعة واحدة|ساعتان|$1 ساعات|$1 ساعة}})',
'duration-days' => '{{PLURAL:$1||يوم واحد|يومان|$1 أيام|$1 يومًا|$1 يوم}}',
'duration-weeks' => '{{PLURAL:$1||أسبوع واحد|أسبوعان|$1 أسابيع|$1 أسبوعًا|$1 أسبوع}}',
-'duration-years' => '{{PLURAL: $1||سنة واحدة|سنتان|$1 سنين|$1 سنة}}',
-'duration-decades' => '{{PLURAL: $1||عقد واحد|عقدان|$1 عقود|$1 عقدًا|$1 عقد}}',
-'duration-centuries' => '{{PLURAL: $1||قرن واحد|قرنان|$1 قرون|$1 قرنًا|$1 قرن}}',
-'duration-millennia' => '{{PLURAL: $1||ألفية واحدة|ألفيتان|$1 ألفيات|$1 ألفية}}',
+'duration-years' => '{{PLURAL:$1||سنة واحدة|سنتان|$1 سنين|$1 سنة}}',
+'duration-decades' => '{{PLURAL:$1||عقد واحد|عقدان|$1 عقود|$1 عقدًا|$1 عقد}}',
+'duration-centuries' => '{{PLURAL:$1||قرن واحد|قرنان|$1 قرون|$1 قرنًا|$1 قرن}}',
+'duration-millennia' => '{{PLURAL:$1||ألفية واحدة|ألفيتان|$1 ألفيات|$1 ألفية}}',
# Image rotation
'rotate-comment' => 'تدوير الصورة {{PLURAL:$1||درجة واحدة|درجتان|$1 درجات|$1 درجة}} باتجاه عقارب الساعة',
# Limit report
+'limitreport-title' => 'محلل سمات البيانات:',
'limitreport-cputime' => 'زمن المعالجة المستغرق',
'limitreport-cputime-value' => '{{PLURAL:$1|أقل من ثانية|ثانية واحدة|ثانيتان|$1 ثوان|$1 ثانية}}',
'limitreport-walltime' => 'الزمن الحقيقي المستغرق',
'limitreport-walltime-value' => '{{PLURAL:$1|أقل من ثانية|ثانية واحدة|ثانيتان|$1 ثوان|$1 ثانية}}',
-'limitreport-postexpandincludesize-value' => '$1/$2 بايت',
-'limitreport-templateargumentsize-value' => '$1/$2 بايت',
+'limitreport-ppvisitednodes' => 'زار المعالج عقدة إحصاء',
+'limitreport-ppgeneratednodes' => 'أحدث المعالج عقدة إحصاء',
+'limitreport-postexpandincludesize' => 'بعد توسيع المساحة الشاملة',
+'limitreport-postexpandincludesize-value' => '$1/$2 {{PLURAL:$2|بايت|بايت}}',
+'limitreport-templateargumentsize' => 'حجم نقاش القالب',
+'limitreport-templateargumentsize-value' => '$1/$2 {{PLURAL:$2|بايت}}',
+'limitreport-expansiondepth' => 'أكثر عمق توسعي',
+'limitreport-expensivefunctioncount' => 'تحليل إحصاء وظيفة مكلف',
# Special:ExpandTemplates
'expandtemplates' => 'فرد القوالب',
'expand_templates_input' => 'النص المدخل:',
'expand_templates_output' => 'النتيجة',
'expand_templates_xml_output' => 'خرج XML',
+'expand_templates_html_output' => 'ناتج خام HTML',
'expand_templates_ok' => 'موافق',
'expand_templates_remove_comments' => 'أزل التعليقات',
'expand_templates_remove_nowiki' => 'أخفِ وسوم <nowiki> في الناتج',
'expand_templates_generate_xml' => 'اعرض شجرة XML parse',
+'expand_templates_generate_rawhtml' => 'أظهر خام HTML',
'expand_templates_preview' => 'عرض مسبق',
+# Unknown messages
+'uploadinvalidxml' => 'تعذر تحليل XML في الملف المرفوع.',
);
$messages = array(
# User preference toggles
'tog-underline' => 'ܪܫܘܡ ܣܪܛܐ ܬܚܝܬ ܐܣܪܐ:',
-'tog-justify' => 'ܫܘܐ ܦܬܓܡ̈ܐ',
'tog-hideminor' => 'ܛܫܝ ܫܘܚܠܦ̈ܐ ܙܥܘܪ̈ܐ ܒܫܘܚܠܦ̈ܐ ܚܕ̈ܬܐ',
'tog-hidepatrolled' => 'ܛܫܝ ܫܘܚܠܦ̈ܐ ܟܪ̈ܝܟܐ ܒܫܘܚܠܦ̈ܐ ܚܕ̈ܬܐ',
'tog-newpageshidepatrolled' => 'ܛܫܝ ܦܐܬܬ̈ܐ ܟܪ̈ܝܟܬܐ ܡܢ ܡܟܬܒܘܬܐ ܕܦܐܬܐ ܚܕܬܐ',
'tog-extendwatchlist' => 'ܐܪܘܚ ܪ̈ܗܝܬܐ ܠܚܘܘܝܐ ܕܟܠܗܘܢ ܫܘܚܠܦ̈ܐ، ܠܐ ܚܕ̈ܬܐ ܒܠܚܘܕ',
'tog-editondblclick' => 'ܫܚܠܦ ܦܐܬܬ̈ܐ ܒܢܩܪܐ ܙܘܓܢܝܐ',
-'tog-editsection' => 'ܡܫܟܚ ܫܘܚܠܦܐ ܕܦܘܣܩ̈ܐ ܒܐܘܪܚܐ ܕܐܝܨܘܪ̈ܐ [ܫܚܠܦ]',
'tog-rememberpassword' => 'ܕܟܘܪ ܥܠܠܬܝ ܥܠ ܡܦܐܬܢܐ ܗܢܐ (ܠܡܬܚܐ ܥܠܝܐ ܕ $1 {{PLURAL:$1|ܝܘܡܐ|ܝܘܡܬ̈ܐ}})',
'tog-watchcreations' => 'ܐܘܣܦ ܦܐܬܬ̈ܐ ܕܒܪܐ ܐܢܐ ܘܠܠܦ̈ܐ ܕܐܣܩ ܐܢܐ ܠܪ̈ܗܝܬܝ',
'tog-watchdefault' => 'ܐܘܣܦ ܦܐܬܬ̈ܐ ܘܠܦܦ̈ܐ ܕܫܚܠܦ ܐܢܐ ܠܪ̈ܗܝܬܝ',
'gotaccount' => "ܐܝܬ ܠܟ ܚܘܫܒܢܐ؟ '''$1'''.",
'gotaccountlink' => 'ܥܘܠ',
'userlogin-resetlink' => 'ܐܬܢܫܝܬ ܝܕ̈ܥܬܐ ܕܥܠܠܐ؟',
-'userlogin-resetpassword-link' => 'Ü«Ü\9aÜ Ü¦ Ü¡Ü Ü¬Ü\90 Ü\95Ü¥Ü Ü Ü\90',
+'userlogin-resetpassword-link' => 'ܢܫܬ Ü¡Ü Ü¬Ü\90 Ü\95Ü¥Ü Ü Ü\90Ø\9f',
'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|ܥܘܕܪܢܐ ܒܥܠܠܐ ܠܚܘܫܒܢܐ]]',
'createacct-join' => 'ܐܥܠ ܝܕ̈ܥܬܐ ܕܝܠܟ ܠܬܚܬ',
'createacct-emailrequired' => 'ܒܝܠܕܪܐ ܐܠܩܛܪܘܢܝܐ',
'wrongpasswordempty' => 'ܡܠܬܐ ܕܥܠܠܐ ܕܐܥܠܬ ܣܦܝܩܬܐ ܐܝܬܝܗ.
ܒܒܥܘ ܡܢܟ ܕܬܢܣܐ ܙܒܢ ܐܚܪܝܢ.',
'passwordtooshort' => 'ܡܠܬܐ ܕܥܠܠܐ ܘܠܐ ܕܬܗܘܐ ܕܠܐ ܒܨܪ ܡܢ{{PLURAL:$1|ܐܬܘܬܐ ܚܕ|$1 ܐܬܘ̈ܬܐ}}.',
-'mailmypassword' => 'Ü«Ü\95ܪ Ü Ü\9d Ü¡Ü Ü¬Ü\90 Ü\9aÜ\95ܬÜ\90 Ü\95Ü¥Ü Ü Ü\90',
+'mailmypassword' => 'Ü£Ü\98Ü¡ Ü¡Ü Ü¬Ü\90 Ü\95Ü¥Ü Ü Ü\90 Ü\99Ü\92Ü¢ Ü\90Ü\9aܪÜ\9dÜ¢',
'passwordremindertitle' => 'ܡܠܬܐ ܕܥܠܠܐ ܙܒܢܢܝܬܐ ܚܕܬܐ ܠ{{SITENAME}}',
'noemail' => 'ܠܝܬ ܒܝܠܕܪܐ ܐܠܩܛܪܘܢܝܐ ܠܡܦܠܚܢܐ "$1".',
'mailerror' => 'ܦܘܕܐ ܒܫܘܕܪܐ ܕܒܝܠܕܪܐ: $1',
'passwordreset-username' => 'ܫܡܐ ܕܡܦܠܚܢܐ:',
'passwordreset-domain' => 'ܪܘܚܬܐ:',
'passwordreset-email' => 'ܡܘܢܥܐ ܕܒܝܠܕܪܐ ܐܠܩܛܪܘܢܝܐ:',
+'passwordreset-emailsent' => 'ܒܝܠܕܪܐ ܐܠܩܛܪܘܢܝܐ ܐܫܬܕܪ ܠܣܘܝܡ ܡܠܬܐ ܕܥܠܠܐ ܙܒܢ ܐܚܪܝܢ',
# Special:ChangeEmail
'changeemail' => 'ܫܚܠܦ ܒܝܠܕܪܐ ܐܠܩܛܪܘܢܝܐ',
'revisiondelete' => 'ܫܘܦ/ܠܐ ܫܘܦ ܬܢܝܬ̈ܐ',
'revdelete-show-file-submit' => 'ܐܝܢ',
'revdelete-selected' => "'''{{PLURAL:$2|ܬܢܝܬܐ ܓܒܝܬܐ|ܬܢܝܬ̈ܐ ܓܒܝܬܐ}} ܕ [[:$1]]:'''",
-'revdelete-hide-text' => 'Ü\9bÜ«Ü\9d Ü\9fܬÜ\92ܬÜ\90 Ü\95ܬܢÜ\9dܬÜ\90',
+'revdelete-hide-text' => 'ܟܬܒܬܐ ܕܬܢܝܬܐ',
'revdelete-hide-image' => 'ܛܫܝ ܚܒܝܫܬ̈ܐ ܕܠܦܦܐ',
'revdelete-hide-name' => 'ܛܫܝ ܥܒܕܐ ܘܢܘܦܐ',
'revdelete-hide-comment' => 'ܫܚܠܦ ܟܪܝܘܬܐ ܕܫܘܚܠܦܐ',
'compareselectedversions' => 'ܦܚܘܡ ܒܝܢܝ ܬܪܝܢ ܬܢܝܬ̈ܐ ܓܒܝܬ̈ܐ',
'showhideselectedversions' => 'ܚܘܝ/ܛܫܝ ܬܢܝܬ̈ܐ ܓܒܝܬ̈ܐ',
'editundo' => 'ܠܐ ܬܥܒܕ',
-'diff-multi' => '({{PLURAL:$1|ܚܕܐ ܬܢܝܬܐ ܡܨܥܝܬܐ|$1 ܬܢܝܬ̈ܐ ܡܨܥܝܬ̈ܐ}} ܒܝܕ {{PLURAL:$2|ܚܕ ܡܦܠܚܢܐ ܠܐ ܓܠܝܚܬܐ|$2 ܡܦܠܚܢ̈ܐ ܠܐ ܓܠܝܚܬ̈ܐ}})',
'diff-multi-manyusers' => '({{PLURAL:$1|ܚܕܐ ܬܢܝܬܐ ܡܨܥܝܬܐ ܠܐ ܓܠܝܚܬܐ|$1 ܬܢܝܬ̈ܐ ܡܨܥܝܬ̈ܐ ܠܐ ܓܠܝܚܬ̈ܐ}} ܒܝܕ ܝܬܝܪ ܡܢ $2 {{PLURAL:$2|ܚܕ ܡܦܠܚܢܐ|ܡܦܠܚܢ̈ܐ}})',
# Search results
'rows' => 'ܨ̈ܦܐ',
'columns' => 'ܥܡܘܕ̈ܐ:',
'searchresultshead' => 'ܒܨܝ',
-'resultsperpage' => 'ܡܢܝܢܐ ܕܦܠܛ̈ܐ ܒܦܐܬܐ:',
'recentchangesdays' => 'ܝܘܡܬ̈ܐ ܠܚܙܝܐ ܒܫܘܚܠܦ̈ܐ ܚܕ̈ܬܐ:',
'recentchangescount' => 'ܡܢܝܢܐ ܕܫܘܚܠܦ̈ܐ ܠܚܙܝܐ ܪܫܐܝܬ:',
'savedprefs' => 'ܨܒܝܢܝܘܬ̈ܟ ܐܬܠܒܟܘ.',
'recentchanges-label-unpatrolled' => 'ܫܘܚܠܦܐ ܗܢܐ ܠܐ ܗܘ ܟܪܝܟܐ ܠܗܫܐ',
'recentchanges-label-plusminus' => 'ܥܓܪܐ ܕܦܐܬܐ ܐܫܬܚܠܦ ܒܗܢܐ ܡܢܝܢܐ ܡܢ ܒܝܛ̈',
'recentchanges-legend-heading' => "'''ܦܘܫܩܐ:'''",
-'recentchanges-legend-newpage' => '$1 - ܦܐܬܐ ܚܕܬܐ',
+'recentchanges-legend-newpage' => '(ܐܦ ܚܙܝ [[Special:NewPages|ܡܟܬܒܘܬܐ ܕܦܐܬܬ̈ܐ ܚܕ̈ܬܬܐ]])',
'rcnotefrom' => "ܠܬܚܬ ܫܘܚܠܦ̈ܐ ܕܡܢ '''$2''' (ܥܕ '''$1''' ܡܬܚܙܝܢ̈ܐ).",
'rclistfrom' => 'ܚܘܝ ܫܘܚܠܦ̈ܐ ܚܕ̈ܬܐ ܡܢ $1',
'rcshowhideminor' => '$1 ܫܘܚܠܦ̈ܐ ܙܥܘܪ̈ܐ',
'rcshowhidebots' => '$1 ܒܘܬ̈ܐ (Bots)',
-'rcshowhideliu' => '$1 Ü¡Ü¦Ü Ü\9aÜ¢Ì\88Ü\90 Ü¥Ü Ü\9dܠ̈ܐ',
+'rcshowhideliu' => '$1 Ü¡Ü¦Ü Ü\9aÜ¢Ì\88Ü\90 Ü¡Ü£Ü\93ܠ̈ܐ',
'rcshowhideanons' => '$1 ܡܦܠܚܢܐ ܠܐ ܝܕܝܥܐ',
'rcshowhidepatr' => '$1 ܫܘܚܠܦ̈ܐ ܬܢܝ̈ܐ',
'rcshowhidemine' => '$1 ܫܘܚܠܦ̈ܝ',
'upload_source_file' => ' (ܠܦܦܐ ܥܠ ܚܫܘܒܬܐ ܕܝܠܟ)',
# Special:ListFiles
-'listfiles-summary' => 'ܦܐܬܐ ܕܝܠܢܝܬܐ ܗܕܐ ܬܓܠܚ ܟܠ ܠܦܦ̈ܐ ܡܣܩ̈ܐ.
-ܐܡܬܝ ܕܬܨܦܐ ܒܝܕ ܡܦܠܚܢܐ ܬܓܠܚ ܨܚܚܐ ܐܚܪܝܐ ܒܠܚܘܕ ܕܠܦܦ̈ܐ ܡܣܩ̈ܐ ܒܝܕ ܗܢܐ ܡܦܠܚܢܐ.',
+'listfiles-summary' => 'ܦܐܬܐ ܕܝܠܢܝܬܐ ܗܕܐ ܬܓܠܚ ܟܠ ܠܦܦ̈ܐ ܡܣܩ̈ܐ.',
'listfiles_search_for' => 'ܒܨܝ ܥܠ ܫܡܐ ܕܡܝܕܝܐ:',
'imgfile' => 'ܠܦܦܐ',
'listfiles' => 'ܡܟܬܒܘܬܐ ܕܠܦܦ̈ܐ',
'unwatchthispage' => 'ܟܠܝ ܪܗܝܐ',
'watchlist-details' => '{{PLURAL:$1|$1 ܦܐܬܐ|$1 ܦܐܬܬ̈ܐ}} ܒܪ̈ܗܝܬܟ, ܫܒܘܩ ܡܢ ܦܐܬܬ̈ܐ ܕܡܡܠܠܐ.',
'wlheader-showupdated' => "ܦܐܬܬ̈ܐ ܕܐܫܬܚܠܦܢ ܡܢ ܒܬܪ ܣܘܥܪܢܐ ܐܚܪܝܐ ܠܗܝܢ ܡܬܓܠܚܢ ܒܣܪܛܐ '''ܚܠܝܡܐ'''",
-'wlnote' => "ܠܬܚܬ {{PLURAL:$1|ܫܘܚܠܦܐ ܐܚܪܝܐ| '''$1''' ܫܘܚܠܦ̈ܐ ܐܚܪ̈ܝܐ}} {{PLURAL:$2|ܒܫܥܬܐ ܐܚܪܝܬܐ|'''$2''' ܒܫܥܬ̈ܐ ܐܚܪ̈ܝܬܐ}}, ܠܦܘܬ $3, $4.",
'wlshowlast' => 'ܚܘܝ $1 ܫܥܬ̈ܐ $2 ܝܘܡܬ̈ܐ ܐܚܪ̈ܝܐ $3',
'watchlist-options' => 'ܨܒܝܢܝܘܬ̈ܐ ܕܪ̈ܗܝܬܐ',
'contributions' => 'ܫܘܬܦܘ̈ܬܐ {{GENDER:$1|ܕܡܦܠܚܢܐ|ܕܡܦܠܚܢܬܐ}}',
'contributions-title' => 'ܫܘܬܦܘ̈ܬܐ ܕܡܦܠܚܢܐ ܠ$1',
'mycontris' => 'ܫܘܬܦܘ̈ܬܐ',
-'contribsub2' => 'Ü\95 $1 ($2)',
+'contribsub2' => 'Ü {{GENDER:$3|$1}} ($2)',
'uctop' => '(ܗܫܝܐ)',
'month' => 'ܡܢ ܝܪܚܐ ܕ (ܘܡܢ ܩܕܡ ܗܝܕܝܢ):',
'year' => 'ܡܢ ܫܢܬ (ܘܡܢ ܩܕܡ ܗܝܕܝܢ):',
# Special:SpecialPages
'specialpages' => 'ܦܐܬܬ̈ܐ ܕ̈ܝܠܢܝܬܐ',
'specialpages-note' => '* ܦܐܬܬ̈ܐ ܕ̈ܝܠܢܝܬܐ ܥܝܕ̈ܝܬܐ.
-* <span class="mw-specialpagerestricted">ܦܐܬܬ̈ܐ ܕ̈ܝܠܢܝܬܐ ܕܩܝܘܡ̈ܐ ܒܠܚܘܕ.</span>',
+* <span class="mw-specialpagerestricted">ܦܐܬܬ̈ܐ ܕ̈ܝܠܢܝܬܐ ܕܩܝܘܡ̈ܐ.</span>',
'specialpages-group-maintenance' => 'ܬܫܪܪ̈ܐ ܕܚܕܬܘܬܐ',
'specialpages-group-other' => 'ܦܐܬܬ̈ܐ ܕ̈ܝܠܢܝܬܐ ܐܚܪ̈ܢܝܬܐ',
'specialpages-group-login' => 'ܥܘܠ / ܒܪܝ ܚܘܫܒܢܐ',
$messages = array(
# User preference toggles
'tog-underline' => 'Miñcewirilpe lasun',
-'tog-justify' => 'Xvrvmpe cijkantvkun',
'tog-showtoolbar' => 'Pengelün kümeelün ñi chemkün',
'tog-editondblclick' => 'Wirin pakina epu klik mew',
'tog-rememberpassword' => 'Amulen tañi nülküwküleael tüfa mew (alürumechi $1 {{PLURAL:$1 antü}})',
'lineno' => 'Wif $1:',
'compareselectedversions' => 'Trürümün dullinngelu malün',
'editundo' => 'wüñoeltun',
-'diff-multi' => '(Pengelngelay {{PLURAL:$1 trürümün epu malün engu}} ta dewmafi {{PLURAL:$2|kiñe kellufe|$2 pu kellufe}})',
# Search results
'searchresults' => 'Tripalu chi kintun mew',
$messages = array(
# User preference toggles
'tog-underline' => 'Ṣetter l-lyanaṫ:',
-'tog-justify' => 'Jusṫifyé l-paragrafaṫ',
'tog-hideminor' => 'Ĥebbi ṫ-ṫeĝdilaṫ l-leĥĥrin',
'tog-hidepatrolled' => 'Ĥebbi ṫ-ṫeĝdilaṫ l-mraqbin fe ṫ-ṫeĝdilaṫ l-leĥĥrin',
'tog-newpageshidepatrolled' => 'Ĥebbi ṣ-ṣefḫaṫ l-mraqbin men ṣ-ṣefḫaṫ j-jdad',
'tog-numberheadings' => 'Nemra otomaṫikiya dyal l-ĝanawin',
'tog-showtoolbar' => 'Werri l-barra dyal ṫ-ṫeĝdilaṫ (kayḫṫaj JavaScript)',
'tog-editondblclick' => 'Baċ ṫṣayeb ṣ-ṣefḫa ĥaṣek ṫbrek 2 merraṫ (kayḫṫaj JavaScript)',
-'tog-editsection' => 'Aktivé ṫ-ṫeĝdilaṫ dyal s-seksyon be l-lyanaṫ « [Ĝeddel] »',
'tog-editsectiononrightclick' => 'Baċ ṫbeddel l-ĝonwan dyal ċi seksyon brek ĝlih be l-imniya (kayḫṫaj JavaScript)',
-'tog-showtoc' => 'biyn lfahras dyal lmohtawayat (bnisba lsafahat li ktr mn 3 dlaanawin)',
'tog-rememberpassword' => 'Ĝqel ĝla smiyṫi fe had l-ordinaṫør (ġir limoddaṫ {{PLURAL:$1|yom waḫed|$1 iyyam}})',
'tog-watchcreations' => 'zid sfahi li nchatha f qaaimat lmoraqaba',
'tog-watchdefault' => 'zid sfahi li adltha f qaaimat lmoraqaba',
'compareselectedversions' => 'Qaren lé-versyon li meĝzolin',
'showhideselectedversions' => 'wrri/ĥbbi l-morajaĝṫ l-mĥṫaṛa',
'editundo' => 'Rjeĝ',
-'diff-multi' => '({{PLURAL:$1|ṃoṛajaĝa waṣita wḫda|$1 dl-ṃoṛajaĝaṫ l-waṣita}} ṫaĝṫ {{PLURAL:$2|mosṫĥdim waḫf|$2 dl-mosṫĥdimin}} ma mbeyyna-ċ)',
'diff-multi-manyusers' => '({{PLURAL:$1|ṃoṛajaĝa waṣita wḫda|$1 dl-ṃoṛajaĝaṫ l-waṣita}} ṫaĝṫ kṫr mn $2 {{PLURAL:$2|l-mosṫĥdim|dl-mosṫĥdimin}} ma mbeyyna-ċ)',
# Search results
'rows' => 'sofof:',
'columns' => 'aaamida:',
'searchresultshead' => 'Qelleb',
-'resultsperpage' => 'adad nataij f sfha',
'stub-threshold' => 'l-ḫadd l-aqṣa ṫaĝ <a href="#" class="stub">wṣlaṫ l-bidraṫ</a> (ḅayṫaṫ):',
'stub-threshold-disabled' => 'makhdamch',
'recentchangesdays' => 'n-nharaṫ lli twrri f-ṫġyiraṫ j-jdida:',
$messages = array(
# User preference toggles
'tog-underline' => 'حط خط تحت اللينكات:',
-'tog-justify' => 'ساوى الپاراجرافات',
'tog-hideminor' => 'خبى التعديلات الصغيره من اجدد التغييرات',
'tog-hidepatrolled' => 'خبى التعديلات المتراجعه من اخر التعديلات',
'tog-newpageshidepatrolled' => 'خبى الصفح المتراجعه من ليستة الصفح الجديده',
'tog-numberheadings' => 'رقم العناوين اوتوماتيك',
'tog-showtoolbar' => 'بين شريط التعديل',
'tog-editondblclick' => 'عدل الصفح لما تدوس مرتين',
-'tog-editsection' => 'اسمح بـ تعديل الاجزاء عن طريق لينكات [تعديل]',
'tog-editsectiononrightclick' => 'اسمح بـ تعديل الاجزاء لما تعمل كليك يمين بـالماوس على عناوين الاجزاء',
-'tog-showtoc' => 'بين جدول المحتويات (بتاع الصفح اللى فيها اكتر من 3 عناوين)',
'tog-rememberpassword' => ' (لمدة $1 {{PLURAL:$1|يوم|يوم}})خليك فاكر دخولى على الكمبيوتر دا',
'tog-watchcreations' => 'زوّد الصفح اللى ابتديتها على ليستة الصفح اللى باراقبها.',
'tog-watchdefault' => 'زوّد الصفح اللى باعدلها على ليستة الصفح اللى باراقبها',
'ok' => 'موافئ',
'retrievedfrom' => 'اتجابت من "$1"',
-'youhavenewmessages' => 'عندك $1 ($2).',
-'youhavenewmessagesfromusers' => 'عندك $1 من {{PLURAL:${{PLURAL:$3|}}3|يوزر واحد|يوزر واحد|اتنين يوزر |$3 مستخدمين|$3 يوزر}} ($2).',
+'youhavenewmessages' => '{{PLURAL:$3|عندك}} $1 ($2).',
+'youhavenewmessagesfromusers' => '{{PLURAL:$4|عندك}} $1 من {{PLURAL:${{PLURAL:$3|}}3|يوزر واحد|يوزر واحد|اتنين يوزر |$3 مستخدمين|$3 يوزر}} ($2).',
'youhavenewmessagesmanyusers' => 'عندك $1 من يوزرات كتير ($2).',
'newmessageslinkplural' => '{{PLURAL:$1|رساله جديده|999=رسايل جديده}}',
'newmessagesdifflinkplural' => '{{PLURAL:$1|تعديل|تعديلين|$1 تعديلات|$1 تعديل|$1 تعديل}}',
'compareselectedversions' => 'قارن بين النسختين المختارتين',
'showhideselectedversions' => 'عرض/تخبية المراجعات المختاره.',
'editundo' => 'استرجاع',
-'diff-multi' => '({{PLURAL:$1|نسخه واحده متوسطه|$1 نسخ متوسطه}} by {{PLURAL:$2|يوزر واحد |$2 يوزرات}} مش معروضه)',
'diff-multi-manyusers' => '({{PLURAL:$1|نسخه واحده متوسطه|$1 نسخ متوسطه}} by {{PLURAL:$2|يوزر واحد |$2 يوزرات}} مش معروضه)',
# Search results
'nextn-title' => '{{PLURAL:$1|النتيجه|النتايج}} $1 اللى بعد كدا.',
'shown-title' => 'اعرض $1 {{PLURAL:$1|نتيجه|نتايج}} فى كل صفحه',
'viewprevnext' => 'شوف ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-exists' => "*الصفحة '''[[$1]]'''",
-'searchmenu-new' => "'''ابتدى الصفحه \"[[:\$1]]\" ع الويكى دا!'''",
+'searchmenu-exists' => "'''فيه صفحه اسمها \"[[:\$1]]\" على الويكى ده.''' {{PLURAL:\$2|0=|بص كمان على نتايج البحث التانيه.}}",
+'searchmenu-new' => "'''ابتدى الصفحه \"[[:\$1]]\" ع الويكى دا!''' {{PLURAL:\$2|0=|بص كمان على الصفحه اللى لقيناها من بحثك.|بص كمان على نتايج البحث اللى لقيناها.}}",
'searchprofile-articles' => 'صفحات محتوى',
'searchprofile-project' => 'صفحات المساعده و المشروع',
'searchprofile-images' => 'مالتيميديا',
'rows' => 'صفوف:',
'columns' => 'عمدان:',
'searchresultshead' => 'تدوير',
-'resultsperpage' => 'عدد النتايج فى الصفحة:',
'stub-threshold' => 'الحد لتنسيق <a href="#" class="stub">لينك البذرة</a>:',
'stub-threshold-disabled' => 'معطل',
'recentchangesdays' => 'عدد الأيام المعروضة فى اخرالتغييرات:',
'savedprefs' => 'التفضيلات بتاعتك اتحفظت.',
'timezonelegend' => 'منطقة التوقيت',
'localtime' => 'التوقيت المحلى',
-'timezoneuseserverdefault' => 'استخدÙ\85 اÙ\81تراض اÙ\84سرÙ\81ر',
+'timezoneuseserverdefault' => 'استخدÙ\85 اÙ\84Ù\88Ù\8aÙ\83Ù\89 اÙ\84اÙ\81تراضÙ\89 ($1)',
'timezoneuseoffset' => 'تانى (حدد الفرق)',
'servertime' => 'وقت السيرفر',
'guesstimezone' => 'دخل التوقيت من البراوزر',
ماينفعش الرجوع فى التعديل دا.',
'prefs-emailconfirm-label' => 'التأكد من الايميل:',
'youremail' => 'الايميل:',
-'username' => 'اسم اليوزر:',
-'uid' => 'رقم اليوزر:',
-'prefs-memberingroups' => 'عضو فى {{PLURAL:$1|مجموعة|مجموعة}}:',
+'username' => '{{GENDER:$1|اسم اليوزر}}:',
+'uid' => 'رقم {{GENDER:$1|اليوزر}}:',
+'prefs-memberingroups' => '{{GENDER:$2|عضو}} فى {{PLURAL:$1|مجموعه|مجموعات}}:',
'prefs-registration' => 'وقت التسجيل:',
'yourrealname' => 'الاسم الحقيقى:',
'yourlanguage' => 'اللغة:',
'userrights-lookup-user' => 'إدارة مجموعات اليوزر',
'userrights-user-editname' => 'دخل اسم يوزر:',
'editusergroup' => 'تعديل مجموعات اليوزر',
-'editinguser' => "تغيير حقوق االيوزر بتاعة اليوزر'''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
+'editinguser' => "تغيير حقوق اليوزر بتاعه اليوزر '''[[User:$1|$1]]''' $2",
'userrights-editusergroup' => 'تعديل مجموعات اليوزر',
'saveusergroups' => 'حفظ مجموعات اليوزر',
'userrights-groupsmember' => 'عضو في:',
'recentchanges-label-minor' => 'ده تعديل صغير',
'recentchanges-label-bot' => 'التعديل ده عمله بوت',
'recentchanges-label-unpatrolled' => 'التعديل ده مإتراجعش لسه',
-'recentchanges-legend-newpage' => '$1 - صفحه جديده',
+'recentchanges-legend-newpage' => '(بص كمان على [[Special:NewPages|قايمه الصفحات الجديده]])',
'rcnotefrom' => "دى التعديلات من '''$2''' (ل '''$1''' معروضه).",
'rclistfrom' => 'اظهر التعديلات بدايه من $1',
'rcshowhideminor' => '$1 تعديلات صغيره',
'filetype-bad-ie-mime' => ' المف دا ماتحملش لأن الإنترنت إكسبلورر ح يكتشفه ك"$1", وهوه نوع ملف ممنوع ومن المحتمل انه يكون خطر.',
'filetype-unwanted-type' => "'''\".\$1\"''' هو مش نوع ملف مرغوب فيه.
{{PLURAL:\$3|نوع الملف المفضل هو|أنواع الملفات المفضلة هي}} \$2.",
-'filetype-banned-type' => "'''\".\$1\"''' مش نوع ملف مسموح بيه.
-{{PLURAL:\$3|نوع الملف المسموح بيه هو|أنواع الملفات المسموح بيها هي}} \$2.",
+'filetype-banned-type' => '\'\'\'".$1"\'\'\' {{PLURAL:$4|مش نوع ملف مسموح بيه|مش انواع ملفات مسموح بيها}}.
+{{PLURAL:$3|نوع الملف المسموح بيه هو|أنواع الملفات المسموح بيها هي}} $2.',
'filetype-missing' => 'الملف مالوش امتدا(مثلا ".jpg").',
'file-too-large' => 'الملف كان كبير جدا.',
'filetype-banned' => 'نوع الملف ده ممنوع.',
'linksearch-pat' => 'نظام التدوير:',
'linksearch-ns' => 'النطاق:',
'linksearch-ok' => 'تدوير',
-'linksearch-text' => 'الكروت الخاصة زى "*.wikipedia.org" ممكن تستعمل.<br />
-البروتوكولات المدعومة: <code>$1</code>',
+'linksearch-text' => 'الكروت الخاصه زى "*.wikipedia.org" ممكن تستخدم.
+محتاجه على الاقل لدومين مستوى أعلى، زى "*.org".<br />
+{{PLURAL:$2|البروتوكول المدعوم|البروتوكولات المدعومه}}: <code>$1</code> (الافتراضى http:// لو ما اتحددش بروتوكول).',
'linksearch-line' => '$1 موصوله من $2',
'linksearch-error' => 'الكروت الخاصة ممكن تبان بس فى بداية اسم المضيف',
'mailnologintext' => 'لازم تعمل [[Special:UserLogin|تسجيل الدخول]] و تدخل ايميل صحيح فى صفحة [[Special:Preferences|التفضيلات]] علشان تقدر تبعت ايميلات لليوزرز التانيين.',
'emailuser' => 'ابعت ايميل لليوزر دا',
'emailpage' => 'ابعت ايميل لليوزر ده',
-'emailpagetext' => 'ممكن تستعمل الاستمارة اللى تحت دى عشان تيعت ايميل لليوزر دا.
-عنوان الايميل اللى كتبته فى [[Special:Preferences|التفضيلات بتاعتك]] ح يظهر على انه عنوان الاستمارة و بكدة اللى حيستقبله ح يقدر يرد على الايميل.',
+'emailpagetext' => 'ممكن تستعمل الاستمارة اللى تحت دى عشان تيعت ايميل {{GENDER:$1|لليوزر}} دا.
+عنوان الايميل اللى كتبته فى [[Special:Preferences|التفضيلات بتاعتك]] ح يظهر على انه عنوان الاستمارة، و بكدة اللى حيستقبله ح يقدر يرد على الايميل.',
'usermailererror' => 'البريد رجع غلط:',
-'defemailsubject' => 'Ø¥Ù\8aÙ\85Ù\8aÙ\84 Ù\85Ù\86 {{SITENAME}}',
+'defemailsubject' => 'اÙ\8aÙ\85Ù\8aÙ\84 {{SITENAME}} Ù\85Ù\86 اÙ\84Ù\8aÙ\88زر "$1"',
'noemailtitle' => 'مافيش عنوان ايميل',
'noemailtext' => 'اليوزر دا ما كتبش االايميل بتاعه صح .',
'nowikiemailtitle' => 'الايميلات مش مسموح بيها',
'watchmethod-list' => 'التشييك فى الصفحات المتراقبة على التعديلات الاخيرة',
'watchlistcontains' => 'لستة المراقبة بتاعتك فيها $1 {{PLURAL:$1|صفحة|صفحات}}.',
'iteminvalidname' => "مشكلة فى '$1'، اسم مش صحيح...",
-'wlnote' => "تحت فى {{PLURAL:$1|آخر تغيير|آخر '''$1''' تغيير}} فى آخر {{PLURAL:$2|ساعة|'''$2''' ساعة}}.",
'wlshowlast' => 'عرض اخر $1 ساعات $2 ايام $3',
'watchlist-options' => 'اختيارات قايمة المراقبة',
'undeletedrevisions' => 'رجع تانى {{PLURAL:$1|تعديل واحد|تعديلين|$1 تعديلات|$1 تعديل|$1 تعديل}}',
'undeletedrevisions-files' => '{{PLURAL:$1|1 نسخة|$1 نسخة}} و {{PLURAL:$2|1 ملف|$2 ملف}} رجعو تاني',
'undeletedfiles' => '{{PLURAL:$1|ملف|ملفات}} $1 رجعو تاني',
-'cannotundelete' => 'الترجيع ما نفعش :ممكن يكون فى حد تانى رجع الصفحة قبل كدا.',
+'cannotundelete' => 'الترجيع مانفعش:
+$1',
'undeletedpage' => "'''اترجع $1'''
بص على [[Special:Log/delete|سجل المسح]] علشان تشوف عمليات المسح و الترجيع الاخيرة.",
'blanknamespace' => '(رئيسى)',
# Contributions
-'contributions' => 'تعديلات اليوزر {{GENDER:$1|اليوزر|اليوزره}}',
+'contributions' => 'تعديلات {{GENDER:$1|اليوزر|اليوزره}}',
'contributions-title' => 'مساهمات اليوزر ل$1',
'mycontris' => 'تعديلاتى',
'contribsub2' => 'ل{{GENDER:$3|$1}} ($2)',
'range_block_disabled' => 'إمكانيةالسيسوب لمنع نطاق متعطلة.',
'ipb_expiry_invalid' => 'تاريخ الانتهاء مش صحيح.',
'ipb_expiry_temp' => 'عمليات منع أسماء اليوزرز المستخبية لازم تكون على طول.',
-'ipb_hide_invalid' => 'ماقدرناش نخفى الحساب دا; يمكن يكون عنده تعديلات كتيره قوى.',
+'ipb_hide_invalid' => 'ماقدرناش نخفى الحساب دا؛ هو عنده اكتر من {{PLURAL:$1|تعديل واحد|$1 تعديل}}.',
'ipb_already_blocked' => '"$1" ممنوع فعلا',
'ipb-needreblock' => '$1 ممنوع فعلا. عايز تغير الإعدادات؟',
'ipb-otherblocks-header' => '{{PLURAL:$1||المنع التانى|المنعين التانيين|المنوعات التانيين}}',
الصفحة الهدف "[[:$1]]" موجودة فعلا.
انت عايز تمسحها علشان تقدر تنقلها؟',
'delete_and_move_confirm' => 'ايوة، امسح الصفحة',
-'delete_and_move_reason' => 'اتمسحت علشان تسمح للنقل',
+'delete_and_move_reason' => 'اتمسحت علشان تسمح بالنقل من "[[$1]]"',
'selfmove' => 'عنوان المصدر والهدف هو نفسه؛
مش ممكن نقل الصفحة على نفسها.',
'immobile-source-namespace' => 'غير قادر على نقل الصفحات فى النطاق "$1"',
'tooltip-pt-watchlist' => 'ليستة الصفح اللى بتراقب التعديلات فيها',
'tooltip-pt-mycontris' => 'ليستة تعديلاتك',
'tooltip-pt-login' => 'يستحسن تسجل دخولك; لكن, ده مش اجبارى',
-'tooltip-pt-anonlogin' => 'من الأفضل انك تسجل دخولك، لكن ده مش إجبارى.',
'tooltip-pt-logout' => 'خروج',
'tooltip-ca-talk' => 'مناقشة صفحة الموضوع',
'tooltip-ca-edit' => 'ممكن تعدل الصفحه دى.
$messages = array(
# User preference toggles
'tog-underline' => 'সংযোগসমূহ অধোৰেখিত কৰক:',
-'tog-justify' => 'দফাৰ সীমা সমান কৰাক',
'tog-hideminor' => 'সাম্প্ৰতিক সাল-সলনিত অগুৰুত্বপূৰ্ণ সম্পাদনা নেদেখুৱাব',
'tog-hidepatrolled' => 'সাম্প্ৰতিক সাল-সলনিত তহলদাৰী সম্পাদনা নেদেখুৱাব',
'tog-newpageshidepatrolled' => 'নতুন পৃষ্ঠা তালিকাত তহলদাৰী পৃষ্ঠাসমূহ নেদেখুৱাব',
'tog-numberheadings' => 'শীৰ্ষকত স্বয়ংক্ৰিয়ভাৱে ক্ৰমিক নং দিয়ক',
'tog-showtoolbar' => 'সম্পাদনা দণ্ডিকা দেখুৱাওক',
'tog-editondblclick' => 'দুবাৰ ক্লিক কৰি পৃষ্ঠা সম্পাদনা কৰিব পাৰি',
-'tog-editsection' => '[সম্পাদনা] সংযোগৰ জৰিয়তে অনুচ্ছেদ সম্পাদনা কৰা সক্ৰিয় কৰক',
'tog-editsectiononrightclick' => 'অনুচ্ছেদৰ শিৰোনামাত ৰাইট্ ক্লিক টিপি সম্পাদনা কৰাটো সক্ৰিয় কৰক',
-'tog-showtoc' => 'শিৰোনামাৰ সূচী দেখুৱাওক (যিবোৰ পৃষ্ঠাত তিনিটাতকৈ বেছি শিৰোনামা আছে)',
'tog-rememberpassword' => 'মোৰ প্ৰৱেশ এই কম্পিউটাৰত মনত ৰাখক (সৰ্বাধিক $1 {{PLURAL:$1|দিনলৈ|দিনলৈ}})',
'tog-watchcreations' => 'মই সৃষ্টি সকলো পৃষ্ঠা মোৰ লক্ষ্য-তালিকাত যোগ কৰক',
'tog-watchdefault' => 'মই সম্পাদনা কৰা সকলো পৃষ্ঠা মোৰ লক্ষ্য-তালিকাত যোগ কৰক',
'tog-previewontop' => 'সম্পাদনা বাকছৰ ওপৰত খচৰা দেখুৱাওক',
'tog-previewonfirst' => 'প্ৰথম সম্পাদনাৰ পিছত খচৰা দেখুৱাওক',
'tog-enotifwatchlistpages' => 'মোৰ লক্ষ্য-তালিকাত থকা পৃষ্ঠা সলনি হলে মোলৈ ই-মেইল পঠাব',
-'tog-enotifusertalkpages' => 'মোৰ বাৰ্তা পৃষ্ঠা সলনি হলে মোলৈ ই-মেইল পঠাব',
+'tog-enotifusertalkpages' => 'মà§\8bৰ বাৰà§\8dতা পà§\83ষà§\8dঠা সলনি হলà§\87 মà§\8bলà§\88 à¦\87-মà§\87à¦\87ল পঠিয়াব',
'tog-enotifminoredits' => "অগুৰুত্বপূৰ্ণ সম্পাদনা হ'লেও মোলৈ ই-মেইল পঠাব",
'tog-enotifrevealaddr' => 'জাননী ই-মেইল বোৰত মোৰ ই-মেইল ঠিকনা দেখুৱাব',
'tog-shownumberswatching' => 'লক্ষ্য কৰি থকা সদস্য সমূহৰ সংখ্যা দেখুৱাওক',
'returnto' => '$1লৈ ঘূৰি যাওক ।',
'tagline' => '{{SITENAME}}ৰ পৰা',
'help' => 'সহায়',
-'search' => 'সন্ধান',
+'search' => 'সন্ধান কৰক',
'searchbutton' => 'সন্ধান কৰক',
'go' => 'যাওক',
'searcharticle' => 'যাওক',
'badaccess' => 'অনুমোদন ত্ৰুটি',
'badaccess-group0' => 'আপুনি কৰিব বিচৰা কামতো কৰাৰ অধিকাৰ আপোনাৰ নাই।',
-'badaccess-groups' => 'আপুনি অনুৰোধ কৰা কাৰ্য কেৱল {{plural:$2|গোটৰ|গোটৰ}} সদস্যৰ বাবে সীমিত: $1',
+'badaccess-groups' => 'আপুনি অনুৰোধ কৰা কাৰ্য কেৱল {{PLURAL:$2|এই গোটৰ|এই গোটসমূহৰ যিকোনো এটাৰ}} সদস্যৰ বাবে সীমিত: $1',
'versionrequired' => 'মিডিয়াৱিকিৰ $1 সংকলন থাকিব লাগিব ।',
'versionrequiredtext' => 'এই পৃষ্ঠাটো ব্যৱহাৰ কৰিবলৈ মিডিয়াৱিকিৰ $1 সংস্কৰণ থাকিব লাগিব । [[Special:Version|সংস্কৰণ পৃষ্ঠা]] চাওক।',
-'ok' => 'ঠিà¦\95 à¦\86à¦\9bà§\87',
+'ok' => 'শà§\81দà§\8dধ',
'retrievedfrom' => '"$1"ৰ পৰা সংকলিত',
'youhavenewmessages' => 'আপোনাৰ কাৰণে $1 আছে। ($2)',
'youhavenewmessagesfromusers' => '{{PLURAL:$3|আন এজন সদস্য|$3 জন সদস্য}}ৰ পৰা আপোনালৈ $1 আহিছে ($2)।',
'retypenew' => 'নতুন গুপ্তশব্দ আকৌ লিখক',
'resetpass_submit' => 'গুপ্তশব্দ বহুৱাওক আৰু প্ৰৱেশ কৰক',
'changepassword-success' => 'আপোনাৰ গুপ্তশব্দ সফলতাৰে সলনি কৰা হৈছে!',
+'changepassword-throttled' => 'আপুনি সম্প্ৰতি অজস্ৰবাৰ লগ্-ইনৰ প্ৰয়াস কৰিছে।
+অনুগ্ৰহ কৰি $1 সময়ৰ পিছত আকৌ চেষ্টা কৰক।',
'resetpass_forbidden' => 'গুপ্তশব্দ সলনি কৰিব নোৱাৰি',
'resetpass-no-info' => 'এই পৃষ্ঠাটোত প্ৰৱেশাধিকাৰ পাবলৈ আপুনি লগ্ ইন কৰিব লাগিব ।',
'resetpass-submit-loggedin' => 'গুপ্তশব্দ সলনি কৰক',
'changeemail-password' => 'আপোনাৰ {{SITENAME}} গুপ্তশব্দ:',
'changeemail-submit' => 'ই-মেইল ঠিকনা সলনি কৰক',
'changeemail-cancel' => 'বাতিল কৰক',
+'changeemail-throttled' => 'আপুনি সম্প্ৰতি অজস্ৰবাৰ লগ্-ইনৰ প্ৰয়াস কৰিছে।
+অনুগ্ৰহ কৰি $1 সময়ৰ পিছত আকৌ চেষ্টা কৰক।',
# Special:ResetTokens
'resettokens' => "ট'কেন ৰিছে'ট কৰক",
'resettokens-legend' => "ট'কেন ৰিছে'ট কৰক",
'resettokens-tokens' => "ট'কেনসমূহ:",
'resettokens-token-label' => '$1 (বর্তমান: $2)',
+'resettokens-watchlist-token' => "[[Special:Watchlist|আপোনাৰ লক্ষ্যতালিকাৰ পৃষ্ঠাৰ সালসলনিৰ]] ৱেব ফীডৰ বাবে ট'কেন (Atom/RSS)",
'resettokens-done' => "ট'কেন ৰিছে'ট কৰা হ'ল।",
'resettokens-resetbutton' => "নিৰ্বাচিত ট'কেনসমূহ ৰিছে'ট কৰক",
'invalid-content-data' => 'অবৈধ সমল তথ্য',
'content-not-allowed-here' => '[[$2]] পৃষ্ঠাত "$1" সমল অনুমোদিত নহয়',
'editwarning-warning' => 'এই পৃষ্ঠাটো এৰিলে আপুনি কৰা পৰিবৰ্তনসমূহ হেৰাব পাৰে। যদি আপুনি প্ৰৱেশ কৰা অৱস্থাত আছে, আপুনি এই সতৰ্কবাৰ্তাক আপোনাৰ পছন্দসমূহৰ "সম্পাদনা" অংশত অসামৰ্থবান কৰিব পাৰিব।',
+'editpage-notsupportedcontentformat-title' => 'সমলৰ ফৰ্মেট সমৰ্থিত নহয়।',
+'editpage-notsupportedcontentformat-text' => 'সমল মডেল $2ৱে সমল ফৰ্মেট $1 সমৰ্থন নকৰে।',
# Content models
'content-model-wikitext' => 'ৱিকিপাঠ্য',
'cantcreateaccount-text' => "আই পি ঠিকনা ('''$1''')ৰ পৰা একাউণ্ট সৃষ্টিত [[User:$3|$3]]’য়ে বাধা প্ৰদান কৰিছে ।
$3 য়ে আগবঢ়োৱা ইয়াৰ কাৰণ হৈছে ''$2''",
+'cantcreateaccount-range-text' => "[[User:$3|$3]]য়ে '''$1''' পৰিসীমাৰ আই পি ঠিকনাৰ পৰা একাউণ্ট সৃষ্টি বাৰণ কৰিছে যাৰ ভিতৰত আপোনাৰ আই ই ঠিকনাও ('''$4''') আছে।
+
+ $3য়ে ''$2'' বুলি কাৰণ দৰ্শাইছে",
# History pages
'viewpagelogs' => 'এই পৃষ্ঠাৰ অভিলেখ চাওক ।',
'mergelog' => 'অভিলেখ একত্ৰীকৰণ',
'pagemerge-logentry' => "[[$1]] [[$2]]-ত মিলোৱা হ'ল (সংশোধনসমূহ $3-লৈ)",
'revertmerge' => 'একত্ৰীকৰণ বাতিল কৰক',
-'mergelogpagetext' => 'à¦\8fà¦\96ন পৃষ্ঠাৰ ইতিহাস আন এখনৰ লগত কৰা একত্ৰীকৰণৰ সকলোতকৈ শেহতীয়া তালিকা তলত দিয়া হ’ল ।',
+'mergelogpagetext' => 'à¦\8fà¦\9fা পৃষ্ঠাৰ ইতিহাস আন এখনৰ লগত কৰা একত্ৰীকৰণৰ সকলোতকৈ শেহতীয়া তালিকা তলত দিয়া হ’ল ।',
# Diffs
'history-title' => '"$1" ৰ সংশোধনৰ ইতিহাস',
'showhideselectedversions' => 'নিৰ্বাচিত সংশোধনসমূহ দেখুৱাওক/আঁৰ কৰক',
'editundo' => 'পূৰ্ববত কৰক',
'diff-empty' => '(কোনো পাৰ্থক্য নাই)',
-'diff-multi' => '({{PLURAL:$2|এজন সদস্যৰ|$2জন সদস্যৰ}} দ্বাৰা {{PLURAL:$1|এটা মধ্যৱৰ্তী সংশোধন|$1-টা মধ্যৱৰ্তী সংশোধন}} দেখোৱা হোৱা নাই)',
+'diff-multi-sameuser' => 'একেজন সদস্যই কৰা ({{PLURAL:$1|এটা মধ্যৱৰ্তী সংশোধন|$1টা মধ্যৱৰ্তী সংশোধন}} দেখুওৱা হোৱা নাই',
+'diff-multi-otherusers' => '{{PLURAL:$2|আন এজন সদস্যই|$2জন সদস্যই}} কৰা ({{PLURAL:$1|এটা মধ্যৱৰ্তী সংশোধন|$1টা মধ্যৱৰ্তী সংশোধন}} দেখুওৱা হোৱা নাই।',
'diff-multi-manyusers' => '({{PLURAL:$2|এজনতকৈ|$2-জনতকৈ}} অধিক সদস্যৰ দ্বাৰা {{PLURAL:$1|এটা মধ্যৱৰ্তী সংশোধন|$1-টা মধ্যৱৰ্তী সংশোধন}} দেখুওৱা হোৱা নাই)',
'difference-missing-revision' => '{{PLURAL:$2|এটা সংস্কৰণ|$2 সংস্কৰণসমূহৰ}} সংশোধনৰ পাৰ্থক্য ($1) {{PLURAL:$2| পোৱা নগ’ল}}।
'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3) চাওক।',
'searchmenu-exists' => "'''এই ৱিকিত \"[[:\$1]]\" নামৰ এটা পৃষ্ঠা আছে।'''
{{PLURAL:\$2|0=|আন সন্ধান ফলাফলবোৰ চাওক।}}",
-'searchmenu-new' => "'''এই ৱিকিত \"[[:\$1]]\" পৃষ্ঠাখন সৃষ্টি কৰক!'''",
+'searchmenu-new' => '<strong>এই ৱিকিত "[[:$1]]" পৃষ্ঠাখন সৃষ্টি কৰক!</strong>
+{{PLURAL:$2|0=|আপোনাৰ সন্ধানত পোৱা পৃষ্ঠাবোৰো চাওক।|সন্ধান ফলাফলসমূহো চাওক।}}',
'searchprofile-articles' => 'বিষয়বস্তুৰ পৃষ্ঠা',
'searchprofile-project' => 'সহায় আৰু প্ৰকল্প পৃষ্ঠাসমূহ',
'searchprofile-images' => 'মাল্টিমিডিয়া',
'search-result-score' => 'যথাৰ্থতা: $1%',
'search-redirect' => '(পুনৰ্নিৰ্দেশনা $1)',
'search-section' => '(অনুচ্ছেদ $1)',
+'search-file-match' => '(ফাইলৰ বিষয়বস্তুৰ লগত মিল পোৱা গৈছে)',
'search-suggest' => 'আপুনি $1 বুজাব খুজিছে নেকি?',
'search-interwiki-caption' => 'সহপ্ৰকল্পসমূহ',
'search-interwiki-default' => '$1 ফলাফলসমূহ:',
'rows' => 'পথালী শাৰী:',
'columns' => 'ঠিয় শাৰী:',
'searchresultshead' => 'অনুসন্ধান',
-'resultsperpage' => 'প্ৰতি পৃষ্ঠা দৰ্শন:',
'stub-threshold' => '<a href="#" class="stub">আধাৰ সংযোগ</a> ৰ সৰ্বোচ্চ আকাৰ (বাইটত):',
'stub-threshold-disabled' => 'নিষ্ক্ৰিয়',
'recentchangesdays' => 'শেহতীয়া সাল-সলনিত দেখুৱাব লগা দিন:',
'right-viewmyprivateinfo' => 'আপোনাৰ ব্যক্তিগত তথ্য চাওক (যেনে- ইমেইল ঠিকনা, প্ৰকৃত নাম)',
'right-editmyprivateinfo' => 'আপোনাৰ ব্যক্তিগত তথ্য সম্পাদনা কৰক (যেনে- ইমেইল ঠিকনা, প্ৰকৃত নাম)',
'right-editmyoptions' => 'আপোনাৰ নিজৰ পছন্দসমূহ সম্পাদনা কৰক',
-'right-rollback' => 'শà§\87ষৰà¦\9cন সদসà§\8dযà¦\87 à¦\8fà¦\96ন নিৰ্দিষ্ট পৃষ্টাত কৰা সম্পাদনা পূৰ্বৰ অৱস্থালৈ ঘূৰাই আনক',
+'right-rollback' => 'শà§\87ষৰà¦\9cন সদসà§\8dযà¦\87 à¦\8fà¦\9fা নিৰ্দিষ্ট পৃষ্টাত কৰা সম্পাদনা পূৰ্বৰ অৱস্থালৈ ঘূৰাই আনক',
'right-markbotedits' => 'ৰ’ল্ড-বেক সম্পাদনাসমূহ বট সম্পাদনা বুলি চিহ্নিত কৰক',
'right-noratelimit' => 'গতি সীমাৰ দ্বাৰা প্ৰভাৱিত নহ’ব',
'right-import' => 'আন ৱিকিৰ পৰা পৃষ্ঠা আমদানী কৰক',
'overwrite' => 'এতিয়া থকা ফাইলৰ ওপৰত লিখা নিষেধ ।',
'unknown-error' => 'এক অজ্ঞাত সমস্যাই দেখা দিছে ।',
'tmp-create-error' => 'অস্থায়ী ফাইল তৈয়াৰ কৰিব পৰা নহ’ল ।',
-'tmp-write-error' => 'অস্থায়ী ফাইল লিখাত সমস্যা হৈছে ।',
+'tmp-write-error' => 'অস্থায়ী ফাইল লিখাত সমস্যা হৈছে।',
'large-file' => 'পৰামৰ্শ অনুযায়ী ফাইলৰ আকাৰ $1 তকৈ ডাঙৰ হ’ব নালাগে ।
এই ফাইলৰ আকাৰ $2 ।',
'largefileserver' => 'চাৰ্ভাৰে অনুমোদন কৰাতকৈ এই ফাইলৰ আকাৰ ডাঙৰ ।',
'file-exists-duplicate' => 'এই ফাইলটো {{PLURAL:$1|ফাইলৰ|ফাইলবোৰৰ}} প্ৰতিলিপি:',
'file-deleted-duplicate' => "এই ফাইল ([[:$1]]) ৰ লগত মিল থকা আন এটা ফাইল ইতিপূৰ্বে বিলোপ কৰা হৈছে ।
পুনৰ আপল'ড কৰাৰ আগেয়ে আপুনি সেই ফাইলটোৰ অৱলুপ্তি ইতিহাস পৰীক্ষা কৰা উচিত ।",
+'file-deleted-duplicate-notitle' => "এই ফাইলৰ লগত মিল থকা আন এটা ফাইল ইতিপূৰ্বে বিলোপ কৰা হৈছে আৰু শিৰোনামাটো আঁতৰোৱা হৈছে।
+ফাইলটো পুনৰ আপল'ড কৰাৰ আগতে আপুনি অৱদমিত ফাইল তথ্য চোৱাৰ অধিকাৰ থকা কোনোবা এজনক সুধি লোৱা উচিত।",
'uploadwarning' => 'আপল’ড সতৰ্কবাণী',
'uploadwarning-text' => 'অনুগ্ৰহ কৰি তলত ফাইলৰ বিৱৰণী পৰিৱৰ্তন কৰক আৰু পুনৰ চেষ্টা কৰক ।',
'savefile' => 'সংৰক্ষণ',
'upload-file-error' => 'আভ্যন্তৰীণ ত্ৰুটি',
'upload-file-error-text' => 'চাৰ্ভাৰত অস্থায়ী ফাইল সৃষ্টি কৰোঁতে এটা আভ্যন্তৰীণ ত্ৰুটিয়ে দেখা দিছে ।
অনুগ্ৰহ কৰি [[Special:ListUsers/sysop|প্ৰশাসকৰ]] লগত যোগাযোগ কৰক ।',
-'upload-misc-error' => 'à¦\85à¦\9cà§\8dà¦\9eাত à¦\86পলâ\80\99ড সমসà§\8dযা',
+'upload-misc-error' => 'à¦\85à¦\9cà§\8dà¦\9eাত à¦\86পলâ\80\99ড তà§\8dৰà§\81à¦\9fি',
'upload-misc-error-text' => 'আপল’ডৰ সময়ত কোনো অজ্ঞাত সমস্যাই দেখা দিছে ।
URL টোৰ বৈধতা বিচাৰ কৰি পুনৰ চেষ্টা কৰক ।
যদি তাৰ পিছতো সমস্যা হয়, তেন্তে এজন [[Special:ListUsers/sysop|প্ৰশাসকৰ]] লগত যোগাযোগ কৰক ।',
# File description page
'file-anchor-link' => 'চিত্ৰ',
'filehist' => 'ফাইলৰ ইতিবৃত্ত',
-'filehist-help' => 'ফাà¦\87লৰ à¦\86à¦\97ৰ à¦\85ৱà§\8dসà§\8dথা à¦\9aাবলà§\88 সà§\87à¦\87 তাৰিà¦\96/সময়ত à¦\9fিপা মাৰà¦\95 ।',
+'filehist-help' => 'ফাà¦\87লৰ à¦\86à¦\97ৰ à¦\85ৱসà§\8dথা à¦\9aাবলà§\88 সà§\87à¦\87 তাৰিà¦\96/সময়ত à¦\95à§\8dলিà¦\95 à¦\95ৰà¦\95।',
'filehist-deleteall' => 'সকলো বিলোপ কৰক',
'filehist-deleteone' => 'বিলোপ কৰক',
'filehist-revert' => 'আগৰ অৱস্থালৈ ঘূৰি যাওক',
'pageswithprop-text' => 'বিশেষ পৃষ্ঠা উপাদান ব্যৱহাৰ কৰা পৃষ্ঠাসমূহ ইয়াত তালিকাভুক্ত কৰা হৈছে।',
'pageswithprop-prop' => 'উপাদান নাম:',
'pageswithprop-submit' => 'যাওক',
+'pageswithprop-prophidden-binary' => 'বাইনেৰী প্ৰপাৰ্টী মূল্য লুকোৱা হৈছে ($1)',
'doubleredirects' => 'দ্বি-পুনঃনিৰ্দেশিত',
'doubleredirectstext' => 'আন পুনৰ্নিদেশনা পৃষ্ঠালৈ পুনৰ্নিৰ্দেশিত পৃষ্ঠাসমূহ এই তালিকাত দিয়া হৈছে ।
'ninterwikis' => '$1 {{PLURAL:$1|ইণ্টাৰৱিকি|ইণ্টাৰৱিকিসমূহ}}',
'nlinks' => '$1 {{PLURAL:$1|সংযোগ|সংযোগ}}',
'nmembers' => '{{PLURAL:$1|সদস্য|$1 সদস্যবৃন্দ}}',
-'nmemberschanged' => '$1 → $2 {{PLURAL:$2|জন সদস্য|জন সদস্য}}',
+'nmemberschanged' => '$1 → $2 {{PLURAL:$2|জন সদস্য}}',
'nrevisions' => '$1টা {{PLURAL:$1|সংশোধন|সংশোধন}}',
'nviews' => '$1 {{PLURAL:$1|টা দৰ্শন|টা দৰ্শন}}',
'nimagelinks' => '$1 {{PLURAL:$1|খন পৃষ্ঠাত|খন পৃষ্ঠাত}} ব্যৱহৃত',
'protectedpages' => 'সুৰক্ষিত পৃষ্ঠাসমূহ',
'protectedpages-indef' => 'কেৱল অনিৰ্দিষ্ট সুৰক্ষা',
'protectedpages-cascade' => 'কেৱল প্ৰপাতাকাৰ সুৰক্ষা',
+'protectedpages-noredirect' => 'পুনঃনিৰ্দেশ লুকুৱাওক',
'protectedpagesempty' => 'এই পাৰামিটাৰবোৰেৰে কোনো পৃষ্ঠা এতিয়া সুৰক্ষিত কৰা হোৱা নাই ।',
'protectedtitles' => 'সুৰক্ষিত শিৰোনামাসমূহ',
'protectedtitlesempty' => 'এই পাৰামিটাৰবোৰেৰে কোনো শিৰোনামা এতিয়া সুৰক্ষিত কৰা হোৱা নাই ।',
'mailnologin' => 'পাওঁতাৰ ঠিকনা নাই',
'mailnologintext' => 'আন সদস্যক ই-মেইল পঠিয়াবলৈ আপুনি [[Special:UserLogin|লগ্ ইন]] কৰিব লাগিব আৰু আপোনাৰ [[Special:Preferences|পছন্দসমূহত]] এটা বৈধ ই-মেইল ঠিকনা থাকিব লাগিব ।',
'emailuser' => 'এই সদস্যজনলৈ ই-মেইল পঠিয়াওক',
-'emailuser-title-target' => '{{GENDER:$1|সদসà§\8dযà¦\9cনà¦\95}} ইমেইল পঠিয়াওক',
+'emailuser-title-target' => '{{GENDER:$1|সদসà§\8dযà¦\9cনলà§\88}} ইমেইল পঠিয়াওক',
'emailuser-title-notarget' => 'ব্যৱহাৰকাৰী ই-পত্ৰ প্ৰেৰণ কৰক',
'emailpage' => 'ই-পত্ৰ ব্যৱহাৰকাৰী',
'emailpagetext' => 'তলৰ প্ৰপত্ৰখন ব্যৱহাৰ কৰি আপুনি এই {{GENDER:$1|সদস্যজনলৈ}} ই-মেইল পঠাব পাৰে ।
'watchmethod-list' => 'লক্ষ্য কৰা পৃষ্ঠাসমূহ শেহতীয়া সম্পাদনাৰ বাবে পৰীক্ষা কৰা হৈছে',
'watchlistcontains' => 'আপোনাৰ লক্ষ্য-তালিকাত $1 খন {{PLURAL:$1|পৃষ্ঠা|পৃষ্ঠা}} আছে ।',
'iteminvalidname' => "'$1' আইটেমটোৰ লগত সমস্যা হৈছে, অবৈধ নাম...",
-'wlnote' => "তলত {{PLURAL:$1| হ'ল সৰ্বশেষ পৰিৱৰ্তন|হ'ল সৰ্বশেষ '''$1''' পৰিৱৰ্তনসমূহ}} সৰ্বশেষ {{PLURAL:$2|ঘন্টা|'''$2''' ঘন্টা}}, $3, $4 -ৰ হিচাপে।",
'wlshowlast' => 'যোৱা $1 ঘণ্টা $2 দিন $3 চাওক',
'watchlist-options' => 'লক্ষ্য-তালিকা পছন্দসমূহ',
মেইল: $PAGEEDITOR_EMAIL
ৱিকি: $PAGEEDITOR_WIKI
-আপুনি এই পৃষ্ঠাখন নোচোৱালৈকে আন সালসলনিৰ কোনো জাননী দিয়া নহ’ব।
-আপুনি আপোনাৰ লক্ষ্য-তালিকাৰ পৃষ্ঠাবোৰৰ জাননী ফ্লেগ পূৰ্বৰ অৱস্থালৈও ঘূৰাই নিব পাৰে ।
+আপুনি এই পৃষ্ঠাটো প্ৰৱেশ কৰি নোচোৱালৈকে আন সালসলনিৰ কোনো জাননী দিয়া নহ’ব। আপুনি আপোনাৰ লক্ষ্য-তালিকাৰ পৃষ্ঠাবোৰৰ জাননী ফ্লেগ পূৰ্বৰ অৱস্থালৈও ঘূৰাই নিব পাৰে ।
আপোনাৰ {{SITENAME}} জাননী ব্যৱস্থা
--
-à¦\86পà§\8bনাৰ à¦\87-মà§\87à¦\87ল à¦\9cাননà§\80 à¦\9bà§\87à¦\9fিà¦\82 সলনি à¦\95ৰিবলà§\88 à¦\8fà¦\87à¦\96ন à¦\9aাà¦\93à¦\95
+আপোনাৰ ই-মেইল জাননী ছেটিং সলনি কৰিবলৈ চাওক
{{canonicalurl:{{#special:Preferences}}}}
-à¦\86পà§\8bনাৰ লà¦\95à§\8dষà§\8dয-তালিà¦\95াৰ à¦\9bà§\87à¦\9fিà¦\82 সলনি à¦\95ৰিবলà§\88 à¦\8fà¦\87à¦\96ন à¦\9aাà¦\93à¦\95
+আপোনাৰ লক্ষ্য-তালিকাৰ ছেটিং সলনি কৰিবলৈ চাওক
{{canonicalurl:{{#special:EditWatchlist}}}}
-à¦\86পà§\8bনাৰ লà¦\95à§\8dষà§\8dয-তালিà¦\95াৰ পৰা পà§\83ষà§\8dঠা বিলà§\8bপ à¦\95ৰিবলà§\88 à¦\8fà¦\87à¦\96ন à¦\9aাà¦\93à¦\95
+আপোনাৰ লক্ষ্য-তালিকাৰ পৰা পৃষ্ঠা বিলোপ কৰিবলৈ চাওক
$UNWATCHURL
প্ৰতিক্ৰিয়া আৰু অধিক সহযোগিতাৰ বাবে:
'range_block_disabled' => 'প্ৰশাসকৰ পৰিসীমা প্ৰতিবন্ধক সৃষ্টি কৰিব পৰা ক্ষমতা নিষ্ক্ৰিয় কৰা হৈছে ।',
'ipb_expiry_invalid' => 'অবৈধ ম্যাদ উকলা সময়',
'ipb_expiry_temp' => 'গুপ্ত সদস্যনাম অৱৰোধ স্থায়ী হ’ব লাগিব ।',
-'ipb_hide_invalid' => 'এই বিষয়বস্তু নিবাৰণ কৰিব পৰা নগ’ল; ইয়াত বহুতো সম্পাদনা আছে ।',
+'ipb_hide_invalid' => 'এই বিষয়বস্তু নিবাৰণ কৰিব পৰা নগ’ল; ইয়াত {{PLURAL:$1|এটা সম্পাদনা|$1টা সম্পাদনা}} আছে ।',
'ipb_already_blocked' => '"$1"ক ইতিমধ্যে অৱৰোধ কৰা হৈছে',
'ipb-needreblock' => '$1ক ইতিমধ্যে অৱৰোধ কৰা হৈছে । আপুনি ছেটিং সলাব বিচাৰিছে নেকি ?',
'ipb-otherblocks-header' => 'আন {{PLURAL:$1|প্ৰতিবন্ধক|প্ৰতিবন্ধকসমূহ}}',
'sorbsreason' => '{{SITENAME}}ত ব্যৱহাৰ কৰা DNSBLত আপোনাৰ আই.পি. ঠিকনা মুক্ত প্ৰক্সী হিছাপে তালিকাভুক্ত হৈ আছে ।',
'sorbs_create_account_reason' => '{{SITENAME}}ত ব্যৱহাৰ কৰা DNSBLত আপোনাৰ আই.পি. ঠিকনা মুক্ত প্ৰক্সী হিছাপে তালিকাভুক্ত হৈ আছে ।
আপুনি একাউণ্ট সৃষ্টি কৰিব নোৱাৰে',
+'xffblockreason' => "X-Forwarded-For header-ত থকা আপোনাৰ বা আপুনি ব্যৱহাৰ কৰি থকা প্ৰক্সী চাৰ্ভাৰৰ এটা আই পি ঠিকনা বাৰণ কৰা হৈছে। বাৰণ কৰাৰ কাৰণ হ'ল: $1",
'cant-see-hidden-user' => 'আপুনি বাৰণ কৰিব বিচৰা সদস্যজনক ইতিমধ্যেই বাৰণ কৰি গোপন কৰা হৈছে ।
যিহেতু আপোনাৰ সদস্যগোপনতা অধিকাৰ নাই, আপুনি সদস্যজনৰ প্ৰতিবন্ধক চাব বা সম্পাদনা কৰিব নোৱাৰে ।',
'ipbblocked' => 'আপুনি আন সদস্যক অৱৰোধ কৰিব বা আঁতৰাব নোৱাৰে, কাৰণ আপুনি নিজেই বাধাপ্ৰাপ্ত অৱস্থাত আছে',
'allmessages-prefix' => 'উপসৰ্গ দি চেকক',
'allmessages-language' => 'ভাষা:',
'allmessages-filter-submit' => 'যাওক',
+'allmessages-filter-translate' => 'ভাঙনি কৰক',
# Thumbnails
'thumbnail-more' => 'ডাঙৰকৈ চাওক',
# Import log
'importlogpage' => 'আমদানিৰ অভিলেখ',
-'importlogpagetext' => 'আন ৱিকিৰ পৰা সম্পাদনা ইতিহাস সহ প্ৰশাসনীয় পৃষ্ঠা আমদানি ।',
+'importlogpagetext' => 'আন ৱিকিৰ পৰা সম্পাদনা ইতিহাসসহ প্ৰশাসনীয় পৃষ্ঠা আমদানি।',
'import-logentry-upload' => "নথি আপল'ডৰ মাধ্যমেৰে [[$1]] আমদানি কৰা হ'ল",
'import-logentry-upload-detail' => '$1 {{PLURAL:$1|টা সংশোধন|টা সংশোধন}}',
'import-logentry-interwiki' => 'আন্তঃৱিকি-স্থানান্তৰিত $1',
'tooltip-pt-watchlist' => 'আপুনি সালসলনিৰ গতিবিধি লক্ষ্য কৰি থকা পৃষ্ঠাসমূহৰ সুচী',
'tooltip-pt-mycontris' => 'আপোনাৰ বৰঙণিৰ তালিকা',
'tooltip-pt-login' => "বাধ্যতামূলক নহ'লেও প্ৰৱেশ কৰাটো বাঞ্চনীয়",
-'tooltip-pt-anonlogin' => 'বাধ্যতামূলক নহ’লেও প্ৰৱেশ কৰাটো বাঞ্চনীয়',
'tooltip-pt-logout' => 'প্ৰস্থান',
'tooltip-ca-talk' => 'সংশ্লিষ্ট প্ৰবন্ধ সম্পৰ্কীয় আলোচনা',
'tooltip-ca-edit' => 'আপুনি এই পৃষ্ঠাটো সালসলনি কৰিব পাৰে, অনুগ্ৰহ কৰি সালসলনি সাচী থোৱাৰ আগতে খচৰা চাই লব',
এই নিশ্চিতকৰণ সংকেতৰ ম্যাদ $4ত উকলিব ।',
'confirmemail_body_set' => 'কোনোবাই (সম্ভৱতঃ আপুনি) আই.পি. ঠিকনা $1ৰ পৰা {{SITENAME}}ত
-একাউণ্ট "$2"ৰ ই-মেইল ঠিকনা এইটো প্ৰদান কৰিছে ।
+একাউণ্ট "$2"ৰ ইমেইল ঠিকনা এইটো প্ৰদান কৰিছে ।
-à¦\8fà¦\87 à¦\8fà¦\95াà¦\89ণà§\8dà¦\9f à¦\86পà§\8bনাৰ হয়নà§\87 নহয় নিশà§\8dà¦\9aিত à¦\95ৰাৰ বাবà§\87 à¦\86ৰà§\81 {{SITENAME}}ত à¦\87-মà§\87à¦\87ল বà§\88শিষà§\8dà¦\9fসমà§\82হ পà§\81নৰ সà¦\95à§\8dৰিয় à¦\95ৰাৰ বাবà§\87
-à¦\86পà§\8bনাৰ বà§\8dৰাà¦\89à¦\9cাৰত à¦\8fà¦\87 সà¦\82যà§\8bà¦\97à¦\9fà§\8b à¦\96à§\81লক:
+এই একাউণ্ট আপোনাৰ হয়নে নহয় নিশ্চিত কৰাৰ বাবে আৰু {{SITENAME}}ত ই-মেইল বৈশিষ্টসমূহ সক্ৰিয় কৰাৰ বাবে
+à¦\86পà§\8bনাৰ বà§\8dৰাà¦\89à¦\9cাৰত à¦\8fà¦\87 সà¦\82যà§\8bà¦\97à¦\9fà§\8b à¦\96à§\8bলক:
$3
-যদি একাউণ্টটো আপোনাৰ *নহয়*, তেন্তে ই-মেইল ঠিকনা নিশ্চিতকৰণ বাতিলৰ বাবে
+যদি একাউণ্টটো আপোনাৰ *নহয়*, তেন্তে ইমেইল ঠিকনা নিশ্চিতকৰণ বাতিলৰ বাবে
এই সংযোগটো চাওক:
$5
'recreate' => 'পুনৰ সৃষ্টি কৰক',
# action=purge
-'confirm_purge_button' => 'ঠিà¦\95 à¦\86à¦\9bà§\87',
+'confirm_purge_button' => 'শà§\81দà§\8dধ',
'confirm-purge-top' => 'এই পৃষ্ঠাৰ কেচ্ খালী কৰা হওক ?',
-'confirm-purge-bottom' => "à¦\8fà¦\96ন পৃষ্ঠাক শোধিত কৰিলে কেচ্ আতৰি যায় আৰু সকলোতকৈ শেহতীয়া সংশোধন প্ৰদৰ্শিত হ'বলৈ বাধ্য কৰে।",
+'confirm-purge-bottom' => "à¦\8fà¦\9fা পৃষ্ঠাক শোধিত কৰিলে কেচ্ আতৰি যায় আৰু সকলোতকৈ শেহতীয়া সংশোধন প্ৰদৰ্শিত হ'বলৈ বাধ্য কৰে।",
# action=watch/unwatch
-'confirm-watch-button' => 'ঠিà¦\95 à¦\86à¦\9bà§\87',
+'confirm-watch-button' => 'শà§\81দà§\8dধ',
'confirm-watch-top' => 'এই পৃষ্ঠাখন আপোনাৰ লক্ষ্য-তালিকাত যোগ কৰক',
-'confirm-unwatch-button' => 'ঠিà¦\95 à¦\86à¦\9bà§\87',
+'confirm-unwatch-button' => 'শà§\81দà§\8dধ',
'confirm-unwatch-top' => 'এই পৃষ্ঠাখন আপোনাৰ লক্ষ্য-তালিকাৰ পৰা আঁতৰাওক',
# Multipage image navigation
'version-hook-subscribedby' => 'চাবস্ক্ৰাইব কৰিছে',
'version-version' => '(সংস্কৰণ $1)',
'version-license' => 'অনুজ্ঞাপত্ৰ',
+'version-ext-license' => 'অনুজ্ঞাপত্ৰ',
+'version-ext-colheader-name' => 'এক্সটেন্চন',
+'version-ext-colheader-version' => 'সংস্কৰণ',
+'version-ext-colheader-license' => 'অনুজ্ঞাপত্ৰ',
+'version-ext-colheader-description' => 'বিৱৰণ',
+'version-ext-colheader-credits' => 'লেখকসকল',
'version-poweredby-credits' => "এই ৱিকি '''[https://www.mediawiki.org/ মিডিয়াৱিকিৰ]''' দ্বাৰা প্ৰচলিত , কপিৰাইট © ২০০১-$1 $2.",
'version-poweredby-others' => 'অন্য',
'version-poweredby-translators' => 'translatewiki.net অনুবাদকসকল',
# Special:Redirect
'redirect' => 'ফাইল, সদস্য, পৃষ্ঠা বা সংশোধন আই ডি-ৰে পুনঃনিৰ্দেশ',
'redirect-legend' => 'এটা ফাইল বা পৃষ্ঠালৈ পুনঃনিৰ্দেশ',
-'redirect-summary' => 'এই বিশেষ পৃষ্ঠাটোৱে আপোনাক পুনঃনির্দেশিত কৰিছে অন্য এটা নথিপত্রলৈ (নথিপত্রৰ নাম), এটা পৃষ্ঠালৈ (পৃষ্ঠাৰ নাম), অথবা অন্য সদস্যৰ পৃষ্ঠালৈ(সংখ্যাৰে লিখা সদস্যৰ আইডি) ।',
+'redirect-summary' => 'এই বিশেষ পৃষ্ঠাটোৱে আপোনাক অন্য এটা ফাইললৈ (ফাইলৰ নাম), এটা পৃষ্ঠালৈ (সংশোধন আই ডি বা পৃষ্ঠা আই ডি), অথবা অন্য সদস্যৰ পৃষ্ঠালৈ (সদস্যৰ সাংখ্যিক আই ডি) পুনঃনির্দেশিত কৰিছে।
+ব্যৱহাৰ: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], বা [[{{#Special:Redirect}}/user/101]]।',
'redirect-submit' => 'যাওক',
'redirect-lookup' => 'চাওক:',
'redirect-value' => 'মূল্য:',
'specialpages' => 'বিশেষ পৃষ্ঠাসমূহ',
'specialpages-note-top' => 'ব্যাখ্যা',
'specialpages-note' => '* সাধাৰণ বিশেষ পৃষ্ঠাসমূহ।
-* <span class="mw-specialpagerestricted">সীমাবদ্ধ বিশেষ পৃষ্ঠাসমূহ।</span>
-* <span class="mw-specialpagecached">কেশ্ব কৰা বিশেষ পৃষ্ঠাসমূহ (অপ্ৰচলিতও হ\'ব পাৰে)।</span>',
+* <span class="mw-specialpagerestricted">সীমাবদ্ধ বিশেষ পৃষ্ঠাসমূহ।</span>',
'specialpages-group-maintenance' => 'তত্বাৱধানৰ কাৰ্যবিৱৰণীসমূহ',
'specialpages-group-other' => 'অন্যান্য বিশেষ পৃষ্ঠাসমূহ',
'specialpages-group-login' => 'প্ৰৱেশ/একাউণ্ট সৃষ্টি কৰক',
'tags' => 'সালসলনি টেগসমূহ চাওক',
'tag-filter' => '[[Special:Tags|টেগ]] ছেকনী:',
'tag-filter-submit' => 'সংশোধন',
+'tag-list-wrapper' => '([[Special:Tags|{{PLURAL:$1|টেগ্}}]]: $2)',
'tags-title' => 'টেগসমূহ',
'tags-intro' => 'ছফ্টৱেৰে সম্পাদনা চিহ্নিত কৰিব পৰা টেগসমূহ আৰু সেইবোৰৰ অৰ্থ এই পৃষ্ঠাত তালিকাভুক্ত কৰা হৈছে।',
'tags-tag' => 'টেগ নাম',
'dberr-cachederror' => "এইখন অনুৰোধ কৰা পৃষ্ঠাৰ কেচ্ড লিপি, যিখন নবীকৰণ নকৰাও হ'ব পাৰে ।",
# HTML forms
-'htmlform-invalid-input' => 'à¦\86পà§\8bনাৰ à¦\85নà§\8dতৰà§\8dà¦à§\81à¦\95à§\8dতিত à¦\95িà¦\9bà§\81মান সমস্যা হৈছে',
+'htmlform-invalid-input' => 'à¦\86পà§\8bনাৰ à¦\95িà¦\9bà§\81মান à¦\85নà§\8dতৰà§\8dà¦à§\81à¦\95à§\8dতিত সমস্যা হৈছে',
'htmlform-select-badoption' => 'আপুনি ধাৰ্য কৰা মান উপযুক্ত বিকল্প নহয়।',
'htmlform-int-invalid' => 'অপুনি ধাৰ্য কৰা মান অখণ্ড সংখ্যা (integer) নহয়।',
'htmlform-float-invalid' => 'অপুনি ধাৰ্য কৰা মান সংখ্যা নহয়।',
'logentry-delete-delete' => " $3 পৃষ্ঠাখন $1ৰদ্বাৰা {{GENDER:$2|বিলোপ কৰা হ'ল}}",
'logentry-delete-restore' => "$3 পৃষ্ঠাখন $1 ৰদ্বাৰা {{GENDER:$2|পুনৰ্সংৰক্ষণ কৰা হ'ল}}",
'logentry-delete-event' => '$3: $4 -ত {{PLURAL:$5|এটা লগ ঘটনা|$5 লগ ঘটনাসমূহ}} -ৰ $1 পৰিৱৰ্তন কৰা দৃশ্যমানতা',
-'logentry-delete-revision' => 'পৃষ্ঠা $3: $4ত {{PLURAL:$5|এটা পুনৰীক্ষন|$5 পুনৰীক্ষনসমূহ}}ৰ $1 দৃশ্যমানতা পৰিৱৰ্তন কৰা হ’ল',
+'logentry-delete-revision' => 'পৃষ্ঠা $3ত {{PLURAL:$5|এটা সংশোধন|$5 সংশোধনসমূহ}}ৰ দৃশ্যমানতা $1 {{GENDER:$2|য়ে সলালে}}: $4',
'logentry-delete-event-legacy' => "$3ত ল'গ ঘটনাসমূহৰ দৃশ্যমানতা $1 {{GENDER:$2|ৰদ্বাৰা সলোৱা হ'ল}}",
'logentry-delete-revision-legacy' => 'পৃষ্ঠা $3ত পুনৰীক্ষনসমূহৰ $1 দৃশ্যমানতা পৰিৱৰ্তন কৰা হল',
'logentry-suppress-delete' => '$1 সংকোচিত পৃষ্ঠা $3',
'api-error-illegal-filename' => 'ফাইলৰ এই নামটো গ্ৰহণযোগ্য নহয় ।',
'api-error-internal-error' => "আভ্যন্তৰীণ ত্ৰুটি: এই ৱিকিত আপোনাৰ আপল'ড প্ৰক্ৰিয়া সমাপনত কিবা সমস্যা হৈছে।",
'api-error-invalid-file-key' => "আভ্যন্তৰীণ ত্ৰুটি: অস্থায়ী ভঁৰালত ফাইলটো পোৱা নগ'ল।",
-'api-error-missingparam' => 'à¦\86à¦à§\8dযনà§\8dতৰà§\80ণ তà§\8dৰà§\81à¦\9fি: à¦\85নà§\81ৰà§\8bধত পà§\87ৰামিà¦\9fাৰৰ à¦\95িবা সমসà§\8dযা ৰৈছে।',
+'api-error-missingparam' => 'à¦\86à¦à§\8dযনà§\8dতৰà§\80ণ তà§\8dৰà§\81à¦\9fি: à¦\85নà§\81ৰà§\8bধত পাৰামিà¦\9fাৰৰ à¦\95িবা সমসà§\8dযা হৈছে।',
'api-error-missingresult' => "আভ্যন্তৰীণ ত্ৰুটি: অনুলিপি সফল হৈছেনে নাই তাক নিশ্চিত কৰিব পৰা নগ'ল।",
'api-error-mustbeloggedin' => "ফাইল আপল'ড কৰাৰ আগেয়ে আপুনি প্ৰৱেশ কৰাটো বাধ্যতামূলক ।",
'api-error-mustbeposted' => 'আভ্যন্তৰীণ ত্ৰুটি: এই অনুৰোধত HTTP POST প্ৰয়োজন।',
'api-error-publishfailed' => "আভ্যন্তৰীণ ত্ৰুটি: অস্থায়ী ফাইল প্ৰকাশ কৰাত চাৰ্ভাৰ অসমৰ্থ হ'ল।",
'api-error-timeout' => 'আশা কৰা সময়ৰ ভিতৰত চাৰ্ভাৰটোৱে সঁহাৰি নজনালে।',
'api-error-unclassified' => 'এক অজ্ঞাত সমস্যাই দেখা দিছে।',
-'api-error-unknown-code' => 'à¦\85à¦\9cà§\8dà¦\9eাত সমসà§\8dযা: "$1"।',
+'api-error-unknown-code' => 'à¦\85à¦\9cà§\8dà¦\9eাত তà§\8dৰà§\81à¦\9fি: "$1"।',
'api-error-unknown-error' => "আভ্যন্তৰীণ ত্ৰুটি: আপোনাৰ ফাইলটো আপল'ড কৰাত কিবা সমস্যা হৈছে।",
'api-error-unknown-warning' => 'অজ্ঞাত সাৱধানবাণী: "$1"।',
-'api-error-unknownerror' => 'à¦\85à¦\9cà§\8dà¦\9eাত সমসà§\8dযা: "$1"।',
+'api-error-unknownerror' => 'à¦\85à¦\9cà§\8dà¦\9eাত তà§\8dৰà§\81à¦\9fি: "$1"।',
'api-error-uploaddisabled' => "এই ৱিকিত আপল'ড নিষ্ক্ৰিয় কৰা হৈছে।",
'api-error-verification-error' => 'সম্ভৱতঃ এই ফাইলটো ত্ৰুটিপূৰ্ণ বা তাৰ এক্সটেন্ছনটো ভুল।',
'duration-minutes' => '$1 {{PLURAL:$1|মিনিট|মিনিট}}',
'duration-hours' => '$1 {{PLURAL:$1|ঘন্টা|ঘন্টা}}',
'duration-days' => '$1 {{PLURAL:$1|দিন|দিন}}',
-'duration-weeks' => '{{PLURAL: $1|সপ্তাহ|সপ্তাহ}}',
+'duration-weeks' => '{{PLURAL:$1|সপ্তাহ|সপ্তাহ}}',
'duration-years' => '$1 {{PLURAL:$1|বছৰ|বছৰ}}',
'duration-decades' => '$1 {{PLURAL:$1|দশক|দশক}}',
'duration-centuries' => '$1 {{PLURAL:$1|শতাব্দী|শতাব্দী}}',
$messages = array(
# User preference toggles
'tog-underline' => 'Sorrayar enllaces:',
-'tog-justify' => 'Xustificar párrafos',
'tog-hideminor' => 'Anubrir les ediciones menores nos cambeos recientes',
'tog-hidepatrolled' => 'Anubrir les ediciones vixilaes nos cambeos recientes',
'tog-newpageshidepatrolled' => 'Anubrir les páxines vixilaes na llista de páxines nueves',
'tog-numberheadings' => 'Autonumberar los encabezaos',
'tog-showtoolbar' => "Amosar la barra de ferramientes d'edición",
'tog-editondblclick' => 'Editar páxines con doble clic',
-'tog-editsection' => "Activar la edición de seiciones per aciu d'enllaces [editar]",
'tog-editsectiononrightclick' => 'Activar la edición de seiciones calcando col botón drechu nos títulos de seición',
-'tog-showtoc' => 'Amosar índiz (pa páxines con más de 3 encabezaos)',
'tog-rememberpassword' => 'Recordar la mio identificación nesti ordenador (hasta un máximu de $1 {{PLURAL:$1|día|díes}})',
'tog-watchcreations' => 'Amestar les páxines que creo y los ficheros que cargo a la mio llista de vixilancia',
'tog-watchdefault' => "Amestar les páxines y ficheros qu'edito a la mio llista de vixilancia",
'retypenew' => 'Vuelvi a escribir la contraseña nueva:',
'resetpass_submit' => 'Configurar la contraseña y aniciar sesión',
'changepassword-success' => '¡Camudóse la contraseña correutamente!',
+'changepassword-throttled' => "Ficisti demasiaos intentos d'aniciu de sesión recientes.
+Por favor espera $1 enantes d'intentalo otra vuelta.",
'resetpass_forbidden' => 'Nun puen camudase les contraseñes',
'resetpass-no-info' => "Tienes d'aniciar sesión pa entrar direutamente a esta páxina.",
'resetpass-submit-loggedin' => 'Camudar la contraseña',
'changeemail-password' => 'La to contraseña en {{SITENAME}}:',
'changeemail-submit' => 'Camudar el corréu electrónicu',
'changeemail-cancel' => 'Encaboxar',
+'changeemail-throttled' => "Ficisti demasiaos intentos d'aniciu de sesión.
+Por favor espera $1 enantes d'intentalo otra vuelta.",
# Special:ResetTokens
'resettokens' => 'Reaniciar los pases',
'content-failed-to-parse' => 'Fallu al analizar el conteníu $2 pal modelu $1: $3',
'invalid-content-data' => 'Datos del conteníu inválidos',
'content-not-allowed-here' => 'El conteníu «$1» nun se permite na páxina [[$2]]',
-'editwarning-warning' => 'Salir d\'esta páxina pue causar la perda de cualesquier cambiu fechu.
-Si aniciasti sesión, pue desactivase esti avisu na seición "Edición" de les tos preferencies.',
+'editwarning-warning' => "Salir d'esta páxina pue causar la perda de cualesquier cambiu fechu.
+Si anició sesión, pue desactivar esti avisu na seición «{{int:prefs-editing}}» de les preferencies.",
+'editpage-notsupportedcontentformat-title' => 'El formatu del conteníu nun tien sofitu',
+'editpage-notsupportedcontentformat-text' => 'El formatu del conteníu, $1, nun tien sofitu del modelu de conteníu $2.',
# Content models
'content-model-wikitext' => 'testu wiki',
'cantcreateaccount-text' => "La creación de cuentes dende esta direición IP ('''$1''') foi bloquiada por [[User:$3|$3]].
El motivu dau por $3 ye ''$2''",
+'cantcreateaccount-range-text' => "La creación de cuentes dende direiciones IP del rangu '''$1''', qu'incluye la so direición IP ('''$4'''), ta bloquiada pol usuariu [[User:$3|$3]].
+
+La razón dada por $3 ye ''$2''.",
# History pages
'viewpagelogs' => "Ver los rexistros d'esta páxina",
'showhideselectedversions' => 'Amosar/anubrir les versiones seleicionaes',
'editundo' => 'desfacer',
'diff-empty' => '(Nun hai diferencies)',
-'diff-multi' => "({{PLURAL:$1|Nun s'amuesa 1 revisión intermedia|Nun s'amuesen $1 revisiones intermedies}} {{PLURAL:$2|d'un usuariu|de $2 usuarios}} )",
+'diff-multi-sameuser' => "({{PLURAL:$1|Nun s'amuesa una revisión intermedia|Nun s'amuesen $1 revisiones intermedies}} del mesmu usuariu)",
+'diff-multi-otherusers' => "(Nun s'{{PLURAL:$1|amuesa una revisión intermedia|amuesen $1 revisiones intermedies}} {{PLURAL:$2|d'otru usuariu|de $2 usuarios}})",
'diff-multi-manyusers' => "({{PLURAL:$1|Nun s'amuesa una revisión intermedia|Nun s'amuesen $1 revisiones intermedies}} de más de $2 {{PLURAL:$2|usuariu|usuarios}})",
'difference-missing-revision' => "{{PLURAL:$2|Nun s'alcontró|Nun s'alcontraron}} {{PLURAL:$2|una revisión|$2 revisiones}} d'esta diferencia ($1).
'shown-title' => 'Amosar $1 {{PLURAL:$1|resultáu|resultaos}} por páxina',
'viewprevnext' => 'Ver ($1 {{int:pipe-separator}} $2) ($3)',
'searchmenu-exists' => "'''Hai una páxina nomada \"[[\$1]]\" nesta wiki'''",
-'searchmenu-new' => "'''¡Crear la páxina \"[[:\$1]]\" nesta wiki!'''",
+'searchmenu-new' => "<strong>¡Crear la páxina «[[:$1]]» nesta wiki!</strong> {{PLURAL:$2|0=|Vea tamién la páxina que s'alcontró cola gueta.|Vea tamién los resultaos qu'alcontró la gueta.}}",
'searchprofile-articles' => 'Páxines de conteníu',
'searchprofile-project' => 'Páxines de proyeutu y ayuda',
'searchprofile-images' => 'Multimedia',
'search-result-score' => 'Relevancia: $1%',
'search-redirect' => '(redireición de $1)',
'search-section' => '(seición $1)',
+'search-file-match' => '(casa col conteníu del ficheru)',
'search-suggest' => 'Quixisti dicir: $1',
'search-interwiki-caption' => 'Proyeutos hermanos',
'search-interwiki-default' => '$1 resultaos:',
'rows' => 'Fileres:',
'columns' => 'Columnes:',
'searchresultshead' => 'Buscar',
-'resultsperpage' => 'Resultaos por páxina:',
'stub-threshold' => 'Llímite superior pa considerar como <a href="#" class="stub">enllaz a entamu</a> (bytes):',
'stub-threshold-disabled' => 'Desactivao',
'recentchangesdays' => "Díes que s'amuesen nos cambios recientes:",
'recentchanges-label-bot' => 'Esta edición ta fecha por un bot',
'recentchanges-label-unpatrolled' => 'Esta edición ta ensin patrullar entá',
'recentchanges-label-plusminus' => "El tamañu d'esta páxina cambió nesti númberu de bytes",
+'recentchanges-legend-heading' => "'''Lleenda:'''",
'recentchanges-legend-newpage' => '(ver tamién la [[Special:NewPages|llista de páxines nueves]])',
'recentchanges-legend-plusminus' => "(''±123'')",
'rcnotefrom' => "Abaxo tan los cambeos dende '''$2''' (s'amuesen fasta '''$1''').",
'rclistfrom' => 'Amosar los nuevos cambios dende $1',
'rcshowhideminor' => '$1 ediciones menores',
'rcshowhidebots' => '$1 bots',
-'rcshowhideliu' => '$1 usuarios rexistraos',
+'rcshowhideliu' => '$1 los usuarios rexistraos',
'rcshowhideanons' => '$1 usuarios anónimos',
'rcshowhidepatr' => '$1 ediciones supervisaes',
'rcshowhidemine' => '$1 les mios ediciones',
'file-exists-duplicate' => 'Esti ficheru ye un duplicáu {{PLURAL:$1|del siguiente ficheru|de los siguientes ficheros}}:',
'file-deleted-duplicate' => 'Yá se desanició enantes un ficheru idénticu a esti ([[:$1]]).
Deberíes revisar el historial de desaniciu del ficheru enantes de xubilu otra vuelta.',
+'file-deleted-duplicate-notitle' => "Un ficheru idénticu a esti desanicióse anteriormente, y suprimióse'l títulu. Tendría de pidir a dalguién que pueda ver los datos del ficheru desaniciáu que revise la situación enantes de volver a xubilu.",
'uploadwarning' => 'Avisu de xubíes de ficheros',
'uploadwarning-text' => 'Por favor, camuda más abaxo la descripción del ficheru y vuelve a tentalo.',
'savefile' => 'Guardar ficheru',
'protectedpages' => 'Páxines protexíes',
'protectedpages-indef' => 'Namái les proteiciones permanentes',
'protectedpages-cascade' => 'Namái proteiciones en cascada',
+'protectedpages-noredirect' => 'Anubrir redireiciones',
'protectedpagesempty' => 'Nun hai páxines protexíes anguaño con estos parámetros.',
'protectedtitles' => 'Títulos protexíos',
'protectedtitlesempty' => 'Nun hai títulos protexíos anguaño con estos parámetros.',
'watchmethod-list' => 'comprobando ediciones recientes nes páxines vixilaes',
'watchlistcontains' => 'La to llista de vixilancia tien $1 {{PLURAL:$1|páxina|páxines}}.',
'iteminvalidname' => "Problema col elementu '$1', nome non válidu...",
-'wlnote' => "Abaxo {{PLURAL:$1|ta'l caberu cambiu|tán los caberos '''$1''' cambios}} {{PLURAL:$2|na cabera hora|nes caberes '''$2''' hores}}, el día $3 a les $4.",
+'wlnote2' => 'Abaxo tan los cambios {{PLURAL:$1|na cabera hora|nes caberes <strong>$1</strong> hores}}, el día $2 a les $3.',
'wlshowlast' => 'Amosar les últimes $1 hores $2 díes $3',
'watchlist-options' => 'Opciones de la llista de vixilancia',
'delete-warning-toobig' => "Esta páxina tien un historial d'ediciones grande, más de $1 {{PLURAL:$1|revisión|revisiones}}.
Esborralu pue perturbar les operaciones de la base de datos de {{SITENAME}};
obra con precaución.",
+'deleting-backlinks-warning' => "'''Avisu:''' Otres páxines enllacen a, o trescluyen de, la páxina que ta a piques de desaniciar.",
# Rollback
'rollback' => 'Revertir ediciones',
Mira na [[Special:BlockList|llista de bloqueos]] pa revisar los bloqueos.',
'ipb-blockingself' => '¡Tas a piques de bloquiate tú mesmu! ¿Tas seguru de que quies facer eso?',
'ipb-confirmhideuser' => 'Tas a piques de bloquiar un usuariu con "anubrir usuariu" activao. Esto desaniciará el nome del usuariu de tolos llistaos y entraes de los rexistros. ¿De xuro quies facer eso?',
+'ipb-confirmaction' => "Si ta seguru de que quier facelo, por favor, marque'l campu «{{int:ipb-confirm}}» al final.",
'ipb-edit-dropdown' => 'Editar motivos de bloquéu',
'ipb-unblock-addr' => 'Desbloquiar $1',
'ipb-unblock' => "Desbloquiar un nome d'usuariu o direición IP",
'range_block_disabled' => "La capacidá d'alministrador pa crear bloqueos d'intervalos ta desactivada.",
'ipb_expiry_invalid' => 'Tiempu incorrectu.',
'ipb_expiry_temp' => "Los bloqueos de nome d'usuariu escondíos han ser permanentes.",
-'ipb_hide_invalid' => 'Nun se pue desaniciar esta cuenta; seique tenga demasiaes ediciones.',
+'ipb_hide_invalid' => "Nun se pue desaniciar esta cuenta; tien más {{PLURAL:$1|d'una edición|de $1 ediciones}}.",
'ipb_already_blocked' => '"$1" yá ta bloquiáu',
'ipb-needreblock' => '$1 yá ta bloquiáu. ¿Quies camudar los parámetros?',
'ipb-otherblocks-header' => '{{PLURAL:$1|Otru bloquéu|Otros bloqueos}}',
'allmessages-prefix' => 'Peñerar pol prefixu:',
'allmessages-language' => 'Llingua:',
'allmessages-filter-submit' => 'Dir',
+'allmessages-filter-translate' => 'Traducir',
# Thumbnails
'thumbnail-more' => 'Agrandar',
'importuploaderrortemp' => "Falló la xubida del archivu d'importación. Falta una carpeta temporal.",
'import-parse-failure' => "Fallu nel análisis d'importación XML",
'import-noarticle' => '¡Nun hai páxina pa importar!',
-'import-nonewrevisions' => 'Toles revisiones fueran importaes previamente.',
+'import-nonewrevisions' => "Nun s'importó denguna revision (o yá taben toes presentes, o se saltaron por errores).",
'xml-error-string' => '$1 na llinia $2, col $3 (byte $4): $5',
'import-upload' => 'Xubir datos XML',
'import-token-mismatch' => 'Perdiéronse los datos de la sesión. Intentalo otra vuelta.',
'import-error-special' => "La páxina «$1» nun s'importó porque pertenez a un espaciu de nomes especial que nun permite les páxines.",
'import-error-invalid' => "La páxina «$1» nun s'importó porque tien un nome inválidu.",
'import-error-unserialize' => 'Nun se pudo quitar la serialización de la revisión $2 de la páxina "$1". Nel informe figura que la revisión usa\'l modelu de conteníu $3 serializáu como $4.',
+'import-error-bad-location' => 'La revisión $2 qu\'usa\'l modelu de conteníu $3 nun pue guardase na páxina "$1" d\'esta wiki, porque esi modelu nun tien sofitu na páxina.',
'import-options-wrong' => '{{PLURAL:$2|Opción enquivocada|Opciones enquivocaes}}: <nowiki>$1</nowiki>',
'import-rootpage-invalid' => 'La páxina raíz dada ye un títulu inválidu.',
'import-rootpage-nosubpage' => 'L\'espaciu de nomes "$1" de la páxina raíz nun permite subpáxines.',
'tooltip-pt-watchlist' => 'Llista de les páxines nes que tas vixilando los cambios',
'tooltip-pt-mycontris' => 'Llista de les tos collaboraciones',
'tooltip-pt-login' => "T'encamentamos que t'identifiques, anque nun ye obligatorio",
-'tooltip-pt-anonlogin' => "T'encamentamos que t'identifiques, anque nun ye obligatorio.",
'tooltip-pt-logout' => 'Salir',
'tooltip-ca-talk' => 'Alderique tocante al conteníu de la páxina',
'tooltip-ca-edit' => "Pues editar esta páxina. Por favor usa'l botón de vista previa enantes de guardar los cambios.",
'minutes' => '{{PLURAL:$1|$1 minutu|$1 minutos}}',
'hours' => '{{PLURAL:$1|$1 hora|$1 hores}}',
'days' => '{{PLURAL:$1|$1 día|$1 díes}}',
-'weeks' => '{{PLURAL: $1|$1 selmana|$1 selmanes}}',
+'weeks' => '{{PLURAL:$1|$1 selmana|$1 selmanes}}',
'months' => '{{PLURAL:$1|$1 mes|$1 meses}}',
'years' => '{{PLURAL:$1|$1 añu|$1 años}}',
'ago' => 'hai $1',
# Language selector for translatable SVGs
'img-lang-default' => '(llingua predeterminada)',
-'img-lang-info' => 'Representar esta imaxe en $1 $2.',
+'img-lang-info' => 'Representar esta imaxe en $1. $2',
'img-lang-go' => 'Dir',
# Table pager
'version-hook-name' => 'Nome del hook',
'version-hook-subscribedby' => 'Suscritu por',
'version-version' => '(Versión $1)',
-'version-license' => 'Llicencia',
+'version-license' => 'Llicencia de MediaWiki',
+'version-ext-license' => 'Llicencia',
+'version-ext-colheader-name' => 'Estensión',
+'version-ext-colheader-version' => 'Versión',
+'version-ext-colheader-license' => 'Llicencia',
+'version-ext-colheader-description' => 'Descripción',
+'version-ext-colheader-credits' => 'Autores',
+'version-license-title' => 'Llicencia pa $1',
+'version-license-not-found' => "Nun s'alcontró información detallada de llicencia pa esta estensión.",
+'version-credits-title' => 'Créditos de $1',
+'version-credits-not-found' => "Nun s'alcontró información detallada de créditos pa esta estensión.",
'version-poweredby-credits' => "Esta wiki funciona con '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
'version-poweredby-others' => 'otros',
'version-poweredby-translators' => 'los traductores de translatewiki.net',
'version-entrypoints-header-url' => 'URL',
# Special:Redirect
-'redirect' => "Redireición por nome de ficheru, o ID d'usuariu o de revisión",
+'redirect' => 'Redireición por ficheru, usuariu, páxina o ID de revisión',
'redirect-legend' => 'Redirixir a un ficheru o una páxina',
-'redirect-summary' => "Esta páxina especial redirixe a un ficheru (dando'l so nome), una páxina (dando una ID de revisión) o una páxina d'usuariu (dando un númberu d'ID d'usuariu). Usu: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]], o [[{{#Special:Redirect}}/user/101]].",
+'redirect-summary' => "Esta páxina especial redirixe a un ficheru (dando'l so nome), una páxina (dando una ID de revisión o de páxina) o una páxina d'usuariu (dando un númberu d'ID d'usuariu). Usu: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], o [[{{#Special:Redirect}}/user/101]].",
'redirect-submit' => 'Dir',
'redirect-lookup' => 'Buscar:',
'redirect-value' => 'Valor:',
'redirect-user' => "ID d'usuariu:",
+'redirect-page' => 'ID de la páxina',
'redirect-revision' => 'Revisión de páxina',
'redirect-file' => 'Nome del ficheru',
'redirect-not-exists' => "Nun s'alcontró'l valor",
'api-error-overwrite' => 'Nun ta permitío sobroscribir un ficheru esistente.',
'api-error-stashfailed' => 'Fallu internu: el sirvidor nun pudo guardar el ficheru temporal.',
'api-error-publishfailed' => 'Fallu internu: el sirvidor nun pudo espublizar el ficheru temporal.',
+'api-error-stasherror' => 'Hebo un error al xubir el ficheru al almacén.',
'api-error-timeout' => 'El sirvidor nun respondió nel tiempu esperáu.',
'api-error-unclassified' => 'Hebo un fallu desconocíu',
'api-error-unknown-code' => 'Fallu desconocíu: «$1»',
'api-error-verification-error' => 'Esti ficheru pudiera tar corrompíu, o tien una estensión incorreuta.',
# Durations
-'duration-seconds' => '$1 {{PLURAL: $1|segundu|segundos}}',
-'duration-minutes' => '$1 {{PLURAL: $1|minutu|minutos}}',
-'duration-hours' => '$1 {{PLURAL: $1|hora|hores}}',
-'duration-days' => '$1 {{PLURAL: $1|día|díes}}',
-'duration-weeks' => '$1 {{PLURAL: $1|selmana|selmanes}}',
-'duration-years' => '$1 {{PLURAL: $1|añu|años}}',
+'duration-seconds' => '$1 {{PLURAL:$1|segundu|segundos}}',
+'duration-minutes' => '$1 {{PLURAL:$1|minutu|minutos}}',
+'duration-hours' => '$1 {{PLURAL:$1|hora|hores}}',
+'duration-days' => '$1 {{PLURAL:$1|día|díes}}',
+'duration-weeks' => '$1 {{PLURAL:$1|selmana|selmanes}}',
+'duration-years' => '$1 {{PLURAL:$1|añu|años}}',
'duration-decades' => '$1 {{PLURAL:$1|década|décades}}',
'duration-centuries' => '$1 {{PLURAL:$1|sieglu|sieglos}}',
'duration-millennia' => '$1 {{PLURAL:$1|mileniu|milenios}}',
# Limit report
'limitreport-title' => 'Datos de perfiláu del analizador:',
'limitreport-cputime' => 'Usu de tiempu de CPU',
-'limitreport-cputime-value' => '$1 {{PLURAL: $1|segundu|segundos}}',
+'limitreport-cputime-value' => '$1 {{PLURAL:$1|segundu|segundos}}',
'limitreport-walltime' => 'Usu de tiempu real',
-'limitreport-walltime-value' => '$1 {{PLURAL: $1|segundu|segundos}}',
+'limitreport-walltime-value' => '$1 {{PLURAL:$1|segundu|segundos}}',
'limitreport-ppvisitednodes' => 'Cuenta de noyos visitaos pol preprocesador',
'limitreport-ppgeneratednodes' => 'Cuenta de noyos xeneraos pol preprocesador',
'limitreport-postexpandincludesize' => "Tamañu d'inclusión de post-espansión",
'expand_templates_input' => "Testu d'entrada:",
'expand_templates_output' => 'Resultáu',
'expand_templates_xml_output' => 'Salida XML',
+'expand_templates_html_output' => 'Salida HTML en bruto',
'expand_templates_ok' => 'Aceutar',
'expand_templates_remove_comments' => 'Eliminar comentarios',
'expand_templates_remove_nowiki' => 'Quitar les etiquetes <nowiki> nos resultaos',
'expand_templates_generate_xml' => "Amosar l'árbole d'análisis sintáuticu XML",
+'expand_templates_generate_rawhtml' => 'Ver el HTML en bruto',
'expand_templates_preview' => 'Vista previa',
+# Unknown messages
+'createaccount-hook-aborted' => '$1',
+'uploadinvalidxml' => "Nun pudo interpretase'l XML del ficheru cargáu.",
);
$messages = array(
# User preference toggles
'tog-underline' => 'Levconhani gluyasiki se',
-'tog-justify' => 'Emaven kuparkieem',
'tog-hideminor' => 'Palsera va <i>Noeltaf betakseem</i> mezolonaf',
'tog-hidepatrolled' => 'Palsera va fieyen betaks div noeltaf betakseem',
'tog-newpageshidepatrolled' => 'Palsera va fieyenu bu mal vexala dem warzafu bu',
'tog-numberheadings' => 'Mivaskafa vergumveltotukara',
'tog-showtoolbar' => 'Nedira va tidexekak ke betararude',
'tog-editondblclick' => 'Ta bubetara tolon vulegal (JavaScript tir adraf)',
-'tog-editsection' => 'Betara va gabot kan "[Betara]" gluyasiki',
'tog-editsectiononrightclick' => 'Betara va gabot talton vulegason<br /> va gabotvergumvelt',
-'tog-showtoc' => 'Nedira va ugak<br /> (icde teliz dem lo 3 gabot)',
'tog-rememberpassword' => 'Mo bati nedisiki va jinaf remravlem setiker (cugon $1 {{PLURAL:$1|viel|viel}})',
'tog-watchcreations' => 'Kosuzdasikira va jinon betayan bueem',
'tog-watchdefault' => 'Va jinon reduyun ik betayan telizeem suzdá',
'compareselectedversions' => 'Dodisukera va toloy reban siatos',
'showhideselectedversions' => 'Nedira/palsera va reban betaks',
'editundo' => 'dimaskira',
-'diff-multi' => '({{PLURAL:$1|1 walif betaks|$1 walif betaks}} gan {{PLURAL:$2|tanoy webesik|$2 webesik}} me zo nedid)',
# Search results
'searchresults' => 'Aneyaradanekseem',
'rows' => 'Emacekeem',
'columns' => 'Brizeem',
'searchresultshead' => 'Nedira va aneyaratrasikseem',
-'resultsperpage' => 'Fuxebuon trasiksota',
'recentchangesdays' => 'Gonedin viel se koe noeltaf betakseem :',
'recentchangesdays-max' => '(cugon $1 {{PLURAL:$1|viel|viel}})',
'recentchangescount' => 'Omavon gonedina ota va noeltaf betakseem ik buizvot ik "log" :',
'watchmethod-list' => 'ageltara va suzdan bueem icde noeltafa betara',
'watchlistcontains' => 'Rinafi suzdasiki va $1 bu ruldar',
'iteminvalidname' => 'Zvak icde « $1 » teliz : yolt tir mewadaf...',
-'wlnote' => "Vleveon tid tela '''$1''' ironokafa betara mali '''$2''' ironokaf bartiv.",
'wlshowlast' => 'Nedira va ironokaf $1 bartiv isu $2 viel isu $3',
'watchlist-options' => 'Suzdasikiolkeem',
'tooltip-pt-watchlist' => 'Rinon suzdan betan bueem',
'tooltip-pt-mycontris' => 'Jinaf webekseem',
'tooltip-pt-login' => 'Pataredura zo koldar voxe me tir vrebafa.',
-'tooltip-pt-anonlogin' => 'Zo bristul da va int kogluyal, wori batcoba me tir vrebafa.',
'tooltip-pt-logout' => 'Voldogluyara',
'tooltip-ca-talk' => 'Keyaksera va telizbu',
'tooltip-ca-edit' => 'Va batu bu robetal. Va "Abdinedira" vulegasiki abdi giwara vay favel !',
* @author Gulmammad
* @author Kaganer
* @author Khan27
+ * @author Matma Rex
* @author Mushviq Abdulla
* @author PPerviz
* @author PrinceValiant
$messages = array(
# User preference toggles
'tog-underline' => 'Keçidlərin altını xətlə:',
-'tog-justify' => 'Mətni səhifə boyu payla',
'tog-hideminor' => 'Son dəyişikliklərdə kiçik redaktələri gizlə',
'tog-hidepatrolled' => 'Yoxlanılmış redaktələri son dəyişikliklərdə göstərmə',
'tog-newpageshidepatrolled' => 'Yoxlanılmış səhifələri yeni səhifə siyahısında göstərmə',
'tog-numberheadings' => 'Başlıqların avto-nömrələnməsi',
'tog-showtoolbar' => 'Redaktə zamanı alətlər qutusunu göstər (JavaScript)',
'tog-editondblclick' => 'Səhifələri iki kliklə redaktə etməyə başla (JavaScript)',
-'tog-editsection' => 'Hər bir bölmə üçün [redaktə]ni mümkün et',
'tog-editsectiononrightclick' => 'Bölmələrin redaktəsini başlıqların üzərində sağ klik etməklə mümkün et (JavaScript)',
-'tog-showtoc' => 'Mündəricat siyahısını göstər (3 başlıqdan artıq olan səhifələrdə)',
'tog-rememberpassword' => 'Məni bu kompyuterdə xatırla (maksimum $1 {{PLURAL:$1|gün|gün}})',
'tog-watchcreations' => 'Yaratdığım səhifələri izlədiyim səhifələrə əlavə et',
'tog-watchdefault' => 'Redaktə etdiyim səhifələri izlədiyim səhifələrə əlavə et',
'cancel' => 'Ləğv et',
'moredotdotdot' => 'Daha...',
'morenotlisted' => 'Bu siyahı tam deyil.',
-'mypage' => 'Mənim səhifəm',
+'mypage' => 'Səhifə',
'mytalk' => 'Danışıqlarım',
'anontalk' => 'Bu IP-yə aid müzakirə',
'navigation' => 'Naviqasiya',
'last' => 'son',
'page_first' => 'birinci',
'page_last' => 'sonuncu',
-'histlegend' => "<div id=\"histlegend\"><span style=\"white-space:nowrap;\">Aşağıda sadalanan hər hansı bir versiyası görmək üçün, tarixinin üzərinə tıklayın.</span> <span style=\"white-space:nowrap;\">Daha çox kömək üçün, [[Kömək:Səhifə keçmişi|səhifə keçmişi]] səhifəsinə baxın.</span><br /><span style=\"white-space:nowrap;\">Xarici vasitələr: <!-- [http://toolserver.org/~tparis/articleinfo/index.php?article={{FULLPAGENAMEE}}&lang=tr&wiki=wikipedia Təftiş keçmişinin statistikası] '''·'''</span> <span style=\"white-space:nowrap;\"> -->[http://wikipedia.ramselehof.de/wikiblame.php?lang=tr&article={{FULLPAGENAMEE}} Təftiş keçmişini axtarmaq] '''·'''</span> <span style=\"white-space:nowrap;\">[http://toolserver.org/~daniel/WikiSense/Contributors.php?wikilang=tr&wikifam=.wikipedia.org&grouped=on&page={{FULLPAGENAMEE}} Töhfəsi olanlar] '''·'''</span> <span style=\"white-space:nowrap;\">[http://toolserver.org/~mzmcbride/cgi-bin/watcher.py?db=trwiki_p&titles={{FULLPAGENAMEE}} İzləyənlərin sayı] '''·'''</span> <span style=\"white-space:nowrap;\">[http://stats.grok.se/tr/latest/{{FULLPAGENAMEE}} Səhifəyə baxılma statistikası]</span></div>
-----
-Fərqləri seçmə və göstərmə: müqayisə etmək istədiyiniz versiyaların yanındakı radio qutularına işarə qoyun və daxil etmə düyməsinə (enter+a) və ya \"müqayisə et\" düyməsinə vurun.
+'histlegend' => 'Fərqləri seçmə və göstərmə: müqayisə etmək istədiyiniz versiyaların yanındakı radio qutularına işarə qoyun və daxil etmə düyməsinə (enter+a) və ya "müqayisə et" düyməsinə vurun.
-Açıqlama: '''(hh)''' = hal-hazırkı versiya ilə olan fərqlər, '''(son)''' = əvvəlki versiya ilə olan fərqlər, '''k''' = kiçik redaktələr.</span>",
+Açıqlama: <strong>({{int:cur}})</strong> = hal-hazırkı versiya ilə olan fərqlər, <strong>({{int:last}})</strong> = əvvəlki versiya ilə olan fərqlər, <strong>{{int:minoreditletter}}</strong> = kiçik redaktələr.</span>',
'history-fieldset-title' => 'Tarixçəni nəzərdən keçir',
'history-show-deleted' => 'Yalnız silinənlər',
'histfirst' => 'Ən əvvəlki',
'compareselectedversions' => 'Seçilən versiyaları müqayisə et',
'showhideselectedversions' => 'Seçilən versiyaları göstər/gizlə',
'editundo' => 'əvvəlki halına qaytar',
-'diff-multi' => '({{PLURAL:$2|Bir istifadəçi|$2 istifadəçi}} tərəfindən edilən {{PLURAL:$1|bir ara redaktə|$1 ara redaktə}} göstərilmir)',
'diff-multi-manyusers' => '({{PLURAL:$2|Bir istifadəçi|$2 istifadəçi}} tərəfindən edilən {{PLURAL:$1|bir ara redaktə|$1 ara redaktə}} göstərilmir)',
# Search results
'rows' => 'Sıralar:',
'columns' => 'Sütunlar:',
'searchresultshead' => 'Axtar',
-'resultsperpage' => 'Səhifəyə aid tapılmış nəticələr:',
'stub-threshold' => '<a href="#" class="stub">Keçidsiz linki</a> format etmək üçün hüdud (baytlarla):',
'stub-threshold-disabled' => 'Kənarlaşdırılıb',
'recentchangesdays' => 'Son dəyişiklərdə göstərilən günlərin miqdarı:',
'watchmethod-list' => 'izlənilən səhifələr yeni dəyişikliklər üçün yoxlanılır',
'watchlistcontains' => 'İzləmə siyahınızda $1 {{PLURAL:$1|səhifə|səhifə}} var.',
'iteminvalidname' => "'$1' ilə bağlı problem, adı düzgün deyil...",
-'wlnote' => "Aşağıdakı {{PLURAL:$1|'''$1''' dəyişiklik|'''$1''' dəyişiklik}} son {{PLURAL:$2|saatda|'''$2''' saatda}} edilmişdir.",
'wlshowlast' => 'Bunları göstər: son $1 saatı $2 günü $3',
'watchlist-options' => 'İzlədiyim səhifələrin nizamlamaları',
'tooltip-pt-watchlist' => 'İzləməyə götürdüyüm səhifələr',
'tooltip-pt-mycontris' => 'Etdiyim dəyişikliklərin siyahısı',
'tooltip-pt-login' => 'Daxil olmanız tövsiyə olunur, amma bu məcburi tələb deyil.',
-'tooltip-pt-anonlogin' => 'Daxil olmanız tövsiyə olunur, amma tələb olunmur.',
'tooltip-pt-logout' => 'Sistemdən çıx',
'tooltip-ca-talk' => 'Məqalə haqqındə müzakirə edib, münasibətivi bildir',
'tooltip-ca-edit' => 'Bu səhifəni redaktə edə bilərsiniz. Lütfən əvvəlcə sınaq gostərişi edin.',
'version-hook-subscribedby' => 'Abunə olan',
'version-version' => '(Versiya $1)',
'version-license' => 'Lisenziya',
+'version-ext-license' => 'Lisenziya',
+'version-ext-colheader-version' => 'Versiya',
+'version-ext-colheader-license' => 'Lisenziya',
+'version-ext-colheader-credits' => 'Müəlliflər',
'version-poweredby-credits' => "Bu wiki '''[https://www.mediawiki.org/ MediaWiki]''' proqramı istifadə edilərək yaradılmışdır, müəlliflik © 2001-$1 $2.",
'version-poweredby-others' => 'digərləri',
'version-software-product' => 'Məhsul',
$messages = array(
# User preference toggles
'tog-underline' => 'باغلانتیلارین آلتینی خطله:',
-'tog-justify' => 'متنی صحیفه بویو پایلا',
'tog-hideminor' => 'سون دییشیکلیکلرده کیچیکلری گیزلت',
'tog-hidepatrolled' => 'نظارتلنمیش دَییشیکلیکلری سون دییشیکلیکلرده گیزلت',
'tog-newpageshidepatrolled' => 'نظارتلنمیش صحیفهلری یئنی صحیفهلر سیاهیسیندان گیزلت',
'tog-numberheadings' => 'باشلیقلاری اوتوماتیک نومرهله',
'tog-showtoolbar' => 'دَییشدیرمه آراج چوبوغونو گؤستر (جاوااسکریپت لازیمدیر)',
'tog-editondblclick' => 'صحیفهلری ایکی کلیکله دَییشدیر (جاوااسکریپت لازیمدیر)',
-'tog-editsection' => '[دَییشدیر] باغلانتیسیلا بؤلوم دَییشدیرمهسینه ایجازه وئر',
'tog-editsectiononrightclick' => 'بؤلوملرین دیشدیرمهسینی، باشلیقلارین اوزرینده ساغکلیک ائتمکله ایجازه وئر (جاوااسکریپت لازیمدیر)',
-'tog-showtoc' => 'ایچیندهکیلر جدولینی گؤستر (۳-دن آرتیق باشلیقلاری اولان صحیفهلرده)',
'tog-rememberpassword' => 'منیم گیریشیمی بو بیلگیسایاردا یاددا ساخلا (چوخو {{PLURAL:$1|بیر گونه|$1 گونه}} کیمی)',
'tog-watchcreations' => 'ياراتدیغیم صحیفهلری و يوکلهدیگیم فايللاری ایزلهمهلریمه آرتیر',
'tog-watchdefault' => 'دَییشدیردیگیم صحیفهلری و فايللاری ایزلهدیکلریمه آرتیر',
</div> ایستیلئ="فونت-weight: بولد؛ فونت-سیزئ: 110%؛ جولور:رئد؛">موللیف حقوقلاری ایله قورونموش هئچ بیر ایشی ایجازهسیز درج ائتمیین!</div>',
'copyrightwarning2' => 'خاهیش ائدیریک، {{SITENAME}} سایتینا ائدهجهیم بوتون روسوم دیگر عضولر طرفیندن دوزئنلئنئبیلئجئغینی، دییشدیریله و یا سیلینئبیلئجئغینی خاتیرلایین. یازیلارینین مئرهامئتسیزجئ دئغیشتیریلی بیلمسینه راضیلیق گؤسترمیرسه بورا ایشتیراک ائتمیین. <br />
آیریجا بو علاوه یازینی سیزین یازدیغینیزدان یا دا سربست کوپیالاما ایجازهسی وئرن بیر قایناقدان کوپیالادیغینیزی بیزه اؤهدهلرینه ائتمکدسینیز (دئتاللار اوچون ایستیناد: $1).',
-'longpageerror' => "خطا: داخیل متنین اوزونلوغو قبول ائدیله بیلر ان چوخ اوزونلوق اولان {{PLURAL: $2 | بیر کیلوبایت | $2 کیلوبایت}} دان چوخدور و {{PLURAL: $1 | بیر کیلوبایت | $1 کیلوبایت}} بؤیوکلوگوندهدیر.'
+'longpageerror' => "خطا: داخیل متنین اوزونلوغو قبول ائدیله بیلر ان چوخ اوزونلوق اولان {{PLURAL:$2 | بیر کیلوبایت | $2 کیلوبایت}} دان چوخدور و {{PLURAL:$1 | بیر کیلوبایت | $1 کیلوبایت}} بؤیوکلوگوندهدیر.'
دییشیکلیگینین کایدئدیلئمئز.",
'readonlywarning' => "'''دیقت: باخیم سببی ایله دیتابیس بو آندا قیفیللیدیر. بو سببله دییشیکلیکلرینین بو آندا قئید ائدیل میهجکدیر. یازدیقلارینیزی باشقا بیر فایلدا آلیب ساخلایا و داها سونرا یئنیدن بورا گتیریب یازا بیلرسینیز.
'compareselectedversions' => 'سئچیلمیش نوسخهلری قارشیلاشدیر',
'showhideselectedversions' => 'سئچیلمیش نوسخهلری گؤستر/گیزلد',
'editundo' => 'قایتار',
-'diff-multi' => '({{PLURAL:$2|بیر|$2}} ایستیفادهچی طرفیندن ائدیلن {{PLURAL:$1|بیر|$1}} اورتا دَییشیکلیک گؤستریلمیر)',
'diff-multi-manyusers' => '{{PLURAL:$2|بیر|$2}}-دن چوخ ایستیفادهچی یارادان {{PLURAL:$1|بیر|$1}} نوسخه، گؤستریلمهییبدیر',
'difference-missing-revision' => 'بو فرقین ($1) {{PLURAL:$2|بیر|$2}} نوسخهسی تاپیلانمادی.
'rows' => 'سطرلر:',
'columns' => 'سوتونلار',
'searchresultshead' => 'آختار',
-'resultsperpage' => 'صحیفهيه عاید تاپیلمیش نتیجهلر:',
'stub-threshold' => '<a href="#" class="stub">کئچیدسیز لینکی</a> فورمات ائتمک اوچون حدود (بایتلارلا):',
'stub-threshold-disabled' => 'چالیشمایان',
'recentchangesdays' => 'سون دییشیکلرده گؤستریلن گونلرین میقداری:',
'filetype-mime-mismatch' => '".$1" فایل اوزانتیسی فایلین میمئ تیپینه ($2) اویغون گلمیر.',
'filetype-badmime' => '"$1" MIME تیپیندکی فایللارین یوکلنمهسینه ایجازه وئریلمیر.',
'filetype-bad-ie-mime' => 'بو فایل یوکلنه، چونکی اینتئرنئت اکسپلورر بونو، ایجازه وئریلمهین و احتمالا زررلی فایل نؤوو اولان "$1" اولاراق تثبیت ائدیر.',
-'filetype-unwanted-type' => "'''\". \$1\"''' ایستنمهین بیر فایل نؤوودور. تکلیف ائدیلن {{PLURAL: \$3 | فایل نؤوو | فایل نؤولری}} \$2.",
-'filetype-banned-type' => '\' \'". $1"\' {{PLURAL: $4 | ایجازه وئریلن بیر فایل نؤوو دئییل | ایجازه وئریلن بیر فایل نؤوو دئییل}}. ایجازه وئریلن {{PLURAL: $3 | فایل نؤوو | فایل نؤولری}} $2.',
+'filetype-unwanted-type' => "'''\". \$1\"''' ایستنمهین بیر فایل نؤوودور. تکلیف ائدیلن {{PLURAL:\$3 | فایل نؤوو | فایل نؤولری}} \$2.",
+'filetype-banned-type' => '\' \'". $1"\' {{PLURAL:$4 | ایجازه وئریلن بیر فایل نؤوو دئییل | ایجازه وئریلن بیر فایل نؤوو دئییل}}. ایجازه وئریلن {{PLURAL:$3 | فایل نؤوو | فایل نؤولری}} $2.',
'filetype-missing' => 'فايلین هئچ بیر اوزانتیسی يوخدور (مثلا، ".jpg").',
'empty-file' => 'سیز یوللادیغینیز فایل، بوش ایدی.',
'file-too-large' => 'گؤندردیگینیز فایل چوخ بؤیوکدور.',
'fileexists-shared-forbidden' => 'بو آددا بیر فايل اورتاق آمباردا مؤوجود دیر.
فايلینیزی يئنه ده يوکلهمک ایستهيیرسینیزسه، خاهیش ائدیریک گئری گئدیب يئنی بیر آد ایستیفاده ائدین.
[[File:$1|thumb|center|$1]]',
-'file-exists-duplicate' => 'بو فایل آشاغیداکی {{PLURAL: $1 | فایلین | فایللارین}} تکراری سیدیر:',
+'file-exists-duplicate' => 'بو فایل آشاغیداکی {{PLURAL:$1 | فایلین | فایللارین}} تکراری سیدیر:',
'file-deleted-duplicate' => 'بو فایلین عینی اولان باشقا بیر فایل([[:$1]])داها اولدن سیلیندی. بو فایلی یئنیدن یوکلمهدن اول دیگر فایلین سیلینمهسی قئیدلرینی ایداره ائتملیسینیز.',
'uploadwarning' => 'يوکلهمه خبردارلیغی',
'uploadwarning-text' => 'خاهیش ائدیریک آشاغیداکی فایل شرحینی دییشدیرین و یئنیدن جهد ائدین.',
'watchmethod-list' => 'ایزلنیلن صحیفهلر یئنی دییشیکلیکلر اوچون یوخلانیلیر',
'watchlistcontains' => 'ایزلمه سیاهینیزدا $1 {{PLURAL:$1|صحیفه}} وار.',
'iteminvalidname' => "'$1 ایله باغلی پروبلئم، آدی دوزگون دئییل...",
-'wlnote' => "آشاغیداکی {{PLURAL:$1|'''$1''' ديَیشیکلیک|'''$1'''ديَیشیکلیک}} سون {{PLURAL:$2|ساعتدا|'''$2''' ساعتدا}} ائدیلمیشدیر.$3، $4",
'wlshowlast' => 'سون $1 ساعات $2 گون گؤستر $3',
'watchlist-options' => 'ایزلهدیکلر سئچمهلری',
** یازانلار حقوق پوزونتوسو
** واندالیزم',
'delete-edit-reasonlist' => 'سیلمک دلیللرینی دَییشدیر',
-'delete-toobig' => 'بو صحیفه، $1 {{PLURAL: $1 | دنه دییشیکلیک | دنه دییشیکلیک}} ایله چوخ اوزون بیر کئچمیشه مالیکدیر.
+'delete-toobig' => 'بو صحیفه، $1 {{PLURAL:$1 | دنه دییشیکلیک | دنه دییشیکلیک}} ایله چوخ اوزون بیر کئچمیشه مالیکدیر.
بئله صحیفهلرین سیلینمهسی، {{SITENAME}} سایتینی پوزماماق اوچون مهدودلاشدیریلماقدادیر.',
'delete-warning-toobig' => 'بو صحیفهنین بؤيوک بیر ديَیشیکلیک کئچمیشی وار، $1 {{PLURAL:$1|نسخه| نسخه}} اوزرینده.
بونو سیلمک {{SITENAME}} عملیاتلارینی مخدلائدهبیلیر؛
'movelogpage' => 'آد ديیشدیرمک قئیدی',
'movelogpagetext' => 'آشاغیدا اولان سیاهی آدی دییشدیریلمیش صحیفهلری گؤستریر.',
'movesubpage' => '{{PLURAL:$1|آلتینداکی صحیفه}}',
-'movesubpagetext' => 'بو صحیفهنین آشاغیدا گؤستریلن $1 {{PLURAL: $1 | آلت صحیفه سی | آلت صحیفه اسی}} وار.',
+'movesubpagetext' => 'بو صحیفهنین آشاغیدا گؤستریلن $1 {{PLURAL:$1 | آلت صحیفه سی | آلت صحیفه اسی}} وار.',
'movenosubpage' => 'بو صحیفهنین آلت صحیفهسی یوخدور.',
'movereason' => 'ندن:',
'revertmove' => 'قایتار',
'tooltip-pt-watchlist' => 'دییشمکلرینی ایزلهدیگینیز صفحهلرین سیاهیسی',
'tooltip-pt-mycontris' => 'سیزین چالیشمالارینیزین لیستی',
'tooltip-pt-login' => 'گیریش ائتمهیینیز توصیه اولونور؛ اما گرکلی دئییل',
-'tooltip-pt-anonlogin' => 'داخیل اولمانیز توصیه اولونور، آمما طلب اولونمور.',
'tooltip-pt-logout' => 'چیخیش',
'tooltip-ca-talk' => 'ایچیندهکیلره گؤره دانیشیق',
'tooltip-ca-edit' => 'سیز بو صحیفهنی دَییشدیره بیلرسینیز. لوطفاً قئید ائتمهدن اونجه اؤنگؤستریش دویگهسینی ایشلدین',
'file-info-gif-looped' => 'ایلملنیب',
'file-info-gif-frames' => '$1 {{PLURAL:$1|فرامئ|چرچیوه}}',
'file-info-png-looped' => 'ایلملنیب',
-'file-info-png-repeat' => '$1 {{PLURAL: $ 1|دفعه| دفعه}} اویناتیلدی',
+'file-info-png-repeat' => '$1 {{PLURAL:$ 1|دفعه| دفعه}} اویناتیلدی',
'file-info-png-frames' => '$1 {{PLURAL:$1|فرامئ|چرچیوه}}',
'file-no-thumb-animation' => "'''قئید:تئکنیکی مسئلهلر سببیندن قاباق دان گورسنمه فایل متحرک شکیلی گؤرستمیر .",
'file-no-thumb-animation-gif' => "'''قئید:فنی مسائیله گوره GIF فایلارین و اونا تای اولانان لار قالباق دان گورستمه پروقرمی متحرک حالیندا گورسدیلمیجک.'''",
نورمال سینیق گوستریشی کولانین.',
# Friendlier slave lag warnings
-'lag-warn-normal' => '$1 {{PLURAL: $1 | سانیيهدن | سانیيهده}} يئنی ديَیشیکلیکلر بو سیياهیدا گؤرولمهيه.',
+'lag-warn-normal' => '$1 {{PLURAL:$1 | سانیيهدن | سانیيهده}} يئنی ديَیشیکلیکلر بو سیياهیدا گؤرولمهيه.',
'lag-warn-high' => 'وئریلنلر بازاسی سونوجوسونداکی هددیندن آرتیق گئجیکمهدن گؤره، $1 {{PLURAL:$1 | سانیيهدن | سانیيهدن}} يئنی ديَیشیکلیکلر بو سیياهیدا گؤرونمئيئبیلیر.',
# Watchlist editor
$messages = array(
# User preference toggles
'tog-underline' => 'Һылтанмалар аҫтына һыҙыу:',
-'tog-justify' => 'Һөйләмдәр теҙмәһен бит киңлегенә тигеҙләргә',
'tog-hideminor' => 'Әһәмиәте ҙур булмаған төҙәтеүҙәрҙе һуңғы үҙгәртеүҙәр исемлегендә күрһәтмәҫкә',
'tog-hidepatrolled' => 'Һуңғы үҙгәртеүҙәр исемлегендә тикшерелгән үҙгәртеүҙәрҙе йәшер',
'tog-newpageshidepatrolled' => 'Яңы биттәр исемлегендә тикшерелгән үҙгәртеүҙәрҙе йәшер',
'tog-numberheadings' => 'Башисемдәрҙе автоматик рәүештә номерлаe',
'tog-showtoolbar' => 'Мөхәррирләгән ваҡытта өҫкө ҡоралдар панелен күрһәтергә (JavaScript кәрәк)',
'tog-editondblclick' => 'Биттәрҙе ике сиртеү менән мөхәррирләргә',
-'tog-editsection' => 'Һәр бүлек өсөн «үҙгәртеү» һылтанмаһын күрһәтергә',
'tog-editsectiononrightclick' => 'Бүлектәрҙе исемдәренә төрткөнөң уң яғына сиртеп үҙгәртергә',
-'tog-showtoc' => 'Эстәлек күрһәтелһен (3-тән күп башлығы булған биттәрҙә)',
'tog-rememberpassword' => 'Был браузерҙа (иң күбендә $1 {{PLURAL:$1|көнгә}}) иҫәп яҙыуым хәтерләнһен',
'tog-watchcreations' => 'Мин төҙөгән биттәрҙе һәм күсергән файлдарҙы күҙәтеү исемлегенә өҫтәргә',
'tog-watchdefault' => 'Мин үҙгәрткән биттәр һәм файлдар аңлатмаһын күҙәтеү исемлегенә өҫтәргә',
'december-date' => 'Сентябрь $1',
# Categories related messages
-'pagecategories' => '{{PLURAL:$1|Категория|Категория}}',
+'pagecategories' => '{{PLURAL:$1|1=Категория|Категория}}',
'category_header' => '«$1» категорияһындағы биттәр',
'subcategories' => 'Эске категориялар',
'category-media-header' => '«$1» категорияһындағы файлдар',
'category-empty' => '"Был категория әлегә буш."',
-'hidden-categories' => '{{PLURAL:$1|Йәшерен категория|Йәшерен категориялар}}',
+'hidden-categories' => '{{PLURAL:$1|1=Йәшерен категория|Йәшерен категориялар}}',
'hidden-category-category' => 'Йәшерен категориялар',
-'category-subcat-count' => '{{PLURAL:$2|Был категорияла тик киләһе эске категория ғына бар.|$2 эске категорияның $1 эске категорияһы күрһәтелгән.}}',
+'category-subcat-count' => '{{PLURAL:$2|1=Был категорияла тик киләһе эске категория ғына бар.|$2 эске категорияның $1 эске категорияһы күрһәтелгән.}}',
'category-subcat-count-limited' => 'Был категорияла {{PLURAL:$1|$1 эске категория}} бар.',
-'category-article-count' => '{{PLURAL:$2|Был категорияла бер генә бит бар.|Категориялағы $2 биттең $1 бите күрһәтелгән.}}',
+'category-article-count' => '{{PLURAL:$2|1=Был категорияла бер генә бит бар.|Категориялағы $2 биттең $1 бите күрһәтелгән.}}',
'category-article-count-limited' => 'Был категорияла {{PLURAL:$1|$1 бит}} бар.',
'category-file-count' => '{{PLURAL:$2|Был категорияла бер генә файл бар.|Категориялағы $2 файлдың {{PLURAL:$1|$1 файлы күрһәтелгән}}.}}',
'category-file-count-limited' => 'Бу категорияла {{PLURAL:$1|$1 файл}} бар.',
'deletethispage' => 'Был битте юйырға',
'undeletethispage' => 'Юйылған был битте ҡабат тергеҙеү',
'undelete_short' => '$1 {{PLURAL:$1|үҙгәртеүҙе}} тергеҙергә',
-'viewdeleted_short' => '{{PLURAL:$1|1 юйылған үҙгәртеүҙе|$1 юйылған үҙгәртеүҙе}} ҡарау',
+'viewdeleted_short' => '{{PLURAL:$1|1=1 юйылған үҙгәртеүҙе|$1 юйылған үҙгәртеүҙе}} ҡарау',
'protect' => 'Һаҡларға',
'protect_change' => 'үҙгәртергә',
'protectthispage' => 'Был битте һаҡларға',
'badaccess' => 'Кереү хатаһы',
'badaccess-group0' => 'Һоратылған ғәмәлде үтәй алмайһығыҙ.',
-'badaccess-groups' => 'Һоратылған ғәмәлде киләһе {{PLURAL:$2|төркөм|төркөмдәр}} ҡулланыусылары ғына башҡара ала: $1.',
+'badaccess-groups' => 'Һоратылған ғәмәлде киләһе {{PLURAL:$2|1=төркөм|төркөмдәр}} ҡулланыусылары ғына башҡара ала: $1.',
'versionrequired' => 'MediaWiki-ның $1 версияһы кәрәкле',
'versionrequiredtext' => 'Был бит менән эшләү өсөн MediaWiki-ның $1 версияһы кәрәк. [[Special:Version|Ҡулланылған версия тураһында мәғлүмәт битен]] ҡара.',
'pagetitle' => '{{SITENAME}} проектынан',
'retrievedfrom' => 'Сығанағы — «$1»',
'youhavenewmessages' => 'Яңы $1 бар ($2).',
-'youhavenewmessagesfromusers' => 'Һеҙгә {{PLURAL:$3|башҡа ҡатнашыусынан|$3 ҡатнашыусынан}} $1 бар ($2).',
+'youhavenewmessagesfromusers' => 'Һеҙгә {{PLURAL:$3|1=башҡа ҡатнашыусынан|$3 ҡатнашыусынан}} $1 бар ($2).',
'youhavenewmessagesmanyusers' => 'Һеҙгә күп ҡатнашыусынан $1 бар ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|яңы хәбәр|яңы хәбәр}}',
-'newmessagesdifflinkplural' => 'һуңғы {{PLURAL:$1|үҙгәртеү|үҙгәртеү}}',
+'newmessageslinkplural' => '{{PLURAL:$1|1=яңы хәбәр|яңы хәбәр}}',
+'newmessagesdifflinkplural' => 'һуңғы {{PLURAL:$1|1=үҙгәртеү|үҙгәртеү}}',
'youhavenewmessagesmulti' => 'Һеҙгә яңы хәбәрҙәр бар: $1',
'editsection' => 'үҙгәртергә',
'editold' => 'төҙәтеү',
'collapsible-expand' => 'асырға',
'thisisdeleted' => 'Ҡарарғамы йәки тергеҙергәме? — $1',
'viewdeleted' => '$1 ҡарарғамы?',
-'restorelink' => '{{PLURAL:$1|1 юйылған үҙгәртеүҙе|$1 юйылған үҙгәртеүҙе}}',
+'restorelink' => '{{PLURAL:$1|1=1 юйылған үҙгәртеүҙе|$1 юйылған үҙгәртеүҙе}}',
'feedlinks' => 'Таҫма:',
'feed-invalid' => 'Хаталы таҫма тибы.',
'feed-unavailable' => 'Синдикация таҫмаларына ирешеп булмай',
'editinginterface' => "'''Иғтибар.''' Һеҙ программаның арайөҙ тексты булған битте мөхәррирләйһегеҙ.
Уны үҙгәртеү, башҡа ҡулланыусыларҙын арайөҙ күренешен үҙгәртәсәктер.
Тәржемә өсөн [//translatewiki.net/wiki/Main_Page?setlang=ba translatewiki.net] адресын, MediaWiki-ны локалләштереү проектын ҡулланыу яҡшыраҡ буласаҡтыр.",
-'cascadeprotected' => 'Был бит үҙгәртеүҙәрҙән һаҡланған, сөнки ул эҙмә-эҙлекле һаҡлау ҡуйылған {{PLURAL:$1|биткә|биттәргә}} керә:
+'cascadeprotected' => 'Был бит үҙгәртеүҙәрҙән һаҡланған, сөнки ул эҙмә-эҙлекле һаҡлау ҡуйылған {{PLURAL:$1|1=биткә|биттәргә}} керә:
$2',
'namespaceprotected' => '«$1» исем арауығындағы биттәрҙе мөхәррирләү өсөн хоҡуҡтарығыҙ юҡ.',
'customcssprotected' => 'Был CSS-битте үҙгәртеү хоҡуғығыҙ юҡ, сөнки унда башҡа ҡулланыусының шәхси көйләүҙәре бар.',
'createacct-another-submit' => 'Тағы бер иҫәп яҙмаһын булдырырға',
'createacct-benefit-heading' => '{{SITENAME}} һеҙҙең кеүек үк кешеләр тарафынан булдырылған',
'createacct-benefit-body1' => '{{PLURAL:$1|үҙгәртеү}}',
-'createacct-benefit-body2' => '{{PLURAL:$1|мәҡәлә|мәҡәлә|мәҡәләнең}}',
-'createacct-benefit-body3' => 'һуңғы ваҡытта {{PLURAL:$1|ҡатнашыусы|}}',
+'createacct-benefit-body2' => '{{PLURAL:$1|мәҡәлә|мәҡәләнең|мәҡәлә}}',
+'createacct-benefit-body3' => 'һуңғы ваҡытта {{PLURAL:$1|ҡатнашыусы}}',
'badretype' => 'Һеҙ кереткән серһүҙҙәр тап килмәй.',
'userexists' => 'Керетелгән исем ҡулланыла инде.
Зинһар, башҡа исем һайлағыҙ.',
'blocked-mailpassword' => 'Һеҙҙең IP-адресығыҙҙан мөхәррирләү тыйылған, шул сәбәпле серһүҙ тергеҙеү ғәмәле лә блокланған.',
'eauthentsent' => 'Күрһәтелгән электрон почта адресына адресты үҙгәртеүҙе раҫлауығыҙ өсөн хат ебәрелде. Хатта был адрес һеҙҙеке булғанын раҫлау өсөн ниндәй ғәмәлдәрҙе үтәү кәрәклеге тураһында мәғлүмәт бар.',
'throttled-mailpassword' => 'Серһүҙҙе иҫләтеү ғәмәле {{PLURAL:$1|һуңғы $1 сәғәт}} эсенде ҡулланылды инде.
-Насар ниәтле ҡулланыуҙарға ҡаршы, Серһүҙ иҫләтеү ғәмәлен {{PLURAL:$1|сәғәт|$1 сәғәт}} эсендә бер тапҡыр ғына ҡулланырға була.',
+Насар ниәтле ҡулланыуҙарға ҡаршы, Серһүҙ иҫләтеү ғәмәлен {{PLURAL:$1|1=сәғәт|$1 сәғәт}} эсендә бер тапҡыр ғына ҡулланырға була.',
'mailerror' => 'Хат ебәреү хатаһы: $1',
'acct_creation_throttle_hit' => 'Һеҙҙең IP-адрестан бер тәүлек эсендә {{PLURAL:$1|$1 иҫәп яҙыуы}} яһалды инде, был һан был ваҡыт аралығы өсөн максимум һан. Шул сәбәпле, был IP-адресына эйә ҡулланыусылар, хәҙерге ваҡытта яңы иҫәп яҙыуы яһай алмайҙар.',
'emailauthenticated' => 'Электрон почта адресығыҙ раҫланды: $3, $2.',
'passwordreset-email' => 'Электрон почта адресы:',
'passwordreset-emailtitle' => '{{SITENAME}} иҫәп яҙыуы мәғлүмәттәре',
'passwordreset-emailtext-ip' => 'Берәү (бәлки һәҙ, $1 IP-адресынан ) {{SITENAME}} ($4) проектындағы иҫәп яҙыуығыҙҙы хәтерләтеүҙе һоратты.
-Киләһе ҡулланыусы {{PLURAL:$3|иҫәп яҙыуы|иҫәп яҙыуҙары}} был электрон почта адресы менән бәйле:
+Киләһе ҡулланыусы {{PLURAL:$3|1=иҫәп яҙыуы|иҫәп яҙыуҙары}} был электрон почта адресы менән бәйле:
$2
-Был ваҡытлыса {{PLURAL:$3|серһүҙ|серһүҙҙәр}} {{PLURAL:$5|$5 көн}} ғәмәлдә буласаҡ.
+Был ваҡытлыса {{PLURAL:$3|1=серһүҙ|серһүҙҙәр}} {{PLURAL:$5|$5 көн}} ғәмәлдә буласаҡ.
Һеҙ системала танылырға һәм яңы серһүҙ һайларға тейешһегеҙ.
Әгәр, һеҙ быны һоратмаған булһағыҙ йәки элекке серһүҙегеҙҙе киренән иҫләһәгеҙ һәм уны үҙгәртергә теләмәһәгеҙ, был хатҡа иғтибар итмәгеҙ һәм элекке серһүҙегеҙҙе ҡулланыуҙы дауам итегеҙ.',
-'passwordreset-emailtext-user' => '{{SITENAME}} проектындағы $1 ҡулланыусыһы {{SITENAME}} ($4) проектындағы иҫәп яҙыуығыҙҙы хәтерләтеүҙе һоратты. Киләһе ҡулланыусы {{PLURAL:$3|иҫәп яҙыуы|иҫәп яҙыуҙары}} был электрон почта адресы менән бәйле:
+'passwordreset-emailtext-user' => '{{SITENAME}} проектындағы $1 ҡулланыусыһы {{SITENAME}} ($4) проектындағы иҫәп яҙыуығыҙҙы хәтерләтеүҙе һоратты. Киләһе ҡулланыусы {{PLURAL:$3|1=иҫәп яҙыуы|иҫәп яҙыуҙары}} был электрон почта адресы менән бәйле:
$2
-Был ваҡытлыса {{PLURAL:$3|серһүҙ|серһүҙҙәр}} {{PLURAL:$5|$5 көн}} ғәмәлдә буласаҡ.
+Был ваҡытлыса {{PLURAL:$3|1=серһүҙ|серһүҙҙәр}} {{PLURAL:$5|$5 көн}} ғәмәлдә буласаҡ.
Һеҙ системала танылырға һәм яңы серһүҙ һайларға тейешһегеҙ.
Әгәр, һеҙ быны һоратмаған булһағыҙ йәки элекке серһүҙегеҙҙе киренән иҫләһәгеҙ һәм уны үҙгәртергә теләмәһәгеҙ, был хатҡа иғтибар итмәгеҙ һәм элекке серһүҙеҙҙе ҡулланыуҙы дауам итегеҙ.',
'passwordreset-emailelement' => 'Ҡулланыусы исеме: $1
Әгәр кемдең дә булһа текстарығыҙҙы үҙгәртеүен теләмәһәгеҙ, уларҙы бында ҡуймағыҙ.<br />
Шулай уҡ, кереткән өҫтәмәләрҙең авторы булыуығыҙҙы йәки уларҙы, эстәлеге ирекле рәүештә таратылырға һәм үҙгәртелергә рөхсәт ителгән сығанаҡтан алыуығыҙҙы раҫлайһығыҙ (ҡарағыҙ: $1).
'''РӨХСӘТҺЕҘ, АВТОРЛЫҠ ХОҠУҠТАРЫ МЕНӘН ҺАҠЛАНҒАН МАТЕРИАЛДАР ҠУЙМАҒЫҘ!'''",
-'longpageerror' => "'''ХАТА: һаҡланасаҡ текст күләме $1 килобайт, был иһә рөхсәт ителгән {{PLURAL:$1|$1 килобайттан|$2 килобайттан}} күп. Битте һаҡлап булмай.'''",
+'longpageerror' => "'''ХАТА: һаҡланасаҡ текст күләме $1 килобайт, был иһә рөхсәт ителгән {{PLURAL:$1|1=$1 килобайттан|$2 килобайттан}} күп. Битте һаҡлап булмай.'''",
'readonlywarning' => "'''КИҪӘТЕҮ: Техник хеҙмәтләндереү сәбәпле мәғлүмәттәр базаһы блокланған, шунлыҡтан үҙгәртеүҙәрегеҙҙе хәҙер һаҡлай алмайһығыҙ.'''
Тексты аҙаҡтан ҡулланыу өсөн файлда һаҡлап тора алаһығыҙ.
Белешмә өсөн түбәндә һуңғы үҙгәртеү тураһында мәғлүмәт бирелә:",
'semiprotectedpagewarning' => "'''Киҫәтеү:''' был бит һаҡланған. Уны теркәлгән ҡулланыусылар ғына үҙгәртә ала.
Белешмә өсөн түбәндә һуңғы үҙгәртеү тураһында мәғлүмәт бирелә:",
-'cascadeprotectedwarning' => "'''КИҪӘТЕҮ:''' Был битте тик хакимдәр генә үҙгәртә ала, сөнки ул эҙмә-эҙлекле һаҡлау ҡуйылған {{PLURAL:$1|киләһе биткә|киләһе биттәргә}} керә:",
+'cascadeprotectedwarning' => "'''КИҪӘТЕҮ:''' Был битте тик хакимдәр генә үҙгәртә ала, сөнки ул эҙмә-эҙлекле һаҡлау ҡуйылған {{PLURAL:$1|1=киләһе биткә|киләһе биттәргә}} керә:",
'titleprotectedwarning' => "'''Киҫәтеү: Бындый исемле бит һаҡланған, уны үҙгәртеү өсөн [[Special:ListGroupRights|тейешле хоҡуҡҡа]] эйә булыу кәрәк.'''
Белешмә өсөн түбәндә һуңғы үҙгәртеү тураһында мәғлүмәт бирелә:",
-'templatesused' => 'Был биттә ҡулланылған {{PLURAL:$1|ҡалып|ҡалыптар}}:',
-'templatesusedpreview' => 'Алдан ҡаралған биттә ҡулланылған {{PLURAL:$1|ҡалып|ҡалыптар}}:',
-'templatesusedsection' => 'Был бүлектә ҡулланылған {{PLURAL:$1|ҡалып|ҡалыптар}}:',
+'templatesused' => 'Был биттә ҡулланылған {{PLURAL:$1|1=ҡалып|ҡалыптар}}:',
+'templatesusedpreview' => 'Алдан ҡаралған биттә ҡулланылған {{PLURAL:$1|1=ҡалып|ҡалыптар}}:',
+'templatesusedsection' => 'Был бүлектә ҡулланылған {{PLURAL:$1|1=ҡалып|ҡалыптар}}:',
'template-protected' => '(һаҡланған)',
'template-semiprotected' => '(өлөшләтә һаҡланған)',
'hiddencategories' => 'Был бит $1 {{PLURAL:$1|йәшерен категорияға}} керә:',
'sectioneditnotsupported-title' => 'Бүлектәрҙә мөхәррирләү терәкләнмәй',
'sectioneditnotsupported-text' => 'Был биттә бүлектәрҙе мөхәррирләү терәкләнмәй.',
'permissionserrors' => 'Инеү хоҡуғы хатаһы',
-'permissionserrorstext' => 'Түбәндәге {{PLURAL:$1|сәбәп|сәбәптәр}} буйынса һеҙҙең был ғәмәлде үтәү хоҡуғығыҙ юҡ:',
-'permissionserrorstext-withaction' => "«'''$2'''» ғәмәлен башҡара алмайһығыҙ. {{PLURAL:$1|Сәбәбе|Сәбәптәре}}:",
+'permissionserrorstext' => 'Түбәндәге {{PLURAL:$1|1=сәбәп|сәбәптәр}} буйынса һеҙҙең был ғәмәлде үтәү хоҡуғығыҙ юҡ:',
+'permissionserrorstext-withaction' => "«'''$2'''» ғәмәлен башҡара алмайһығыҙ. {{PLURAL:$1|1=Сәбәбе|Сәбәптәре}}:",
'recreate-moveddeleted-warn' => "'''Иғтибар: Һеҙ, элек юйылған битте яңынан яһарға теләйһегеҙ.'''
Һеҙгә был битте яңынан яһау кәрәклеген яңынан уйлап ҡарағыҙ.
'revdelete-no-file' => 'Күрһәтелгән файл юҡ.',
'revdelete-show-file-confirm' => '$2, $3 ваҡытлы «<nowiki>$1</nowiki> файлының юйылған версияһын ҡарарға теләүегеҙҙе раҫлайһығыҙмы?',
'revdelete-show-file-submit' => 'Эйе',
-'revdelete-selected' => "'''[[:$1]] битенең {{PLURAL:$2|һайланған версияһы|һайланған версиялары}}:'''",
-'logdelete-selected' => "'''Яҙманың {{PLURAL:$1|һайланған яҙыуы|һайланған яҙыуҙары}}:'''",
+'revdelete-selected' => "'''[[:$1]] битенең {{PLURAL:$2|1=һайланған версияһы|һайланған версиялары}}:'''",
+'logdelete-selected' => "'''Яҙманың {{PLURAL:$1|1=һайланған яҙыуы|һайланған яҙыуҙары}}:'''",
'revdelete-text' => "'''Биттәрҙең юйылған версиялары һәм ваҡиғалар, бит тарихында һәм яҙмаларҙа күрһәтеләсәк, ләкин уларҙың эстәлектәренең бер өлөшө ябай ҡулланыусыларға асыҡ булмаясаҡ.'''
{{SITENAME}} проектының хакимдәре йәшерен эстәлеккә керә һәм өҫтәмә сикләүҙәр ҡуйылған осраҡтарҙан тыш, ошо уҡ арайөҙ аша тергеҙә аласаҡтар.",
'revdelete-confirm' => 'Зинһар, был ғәмәлде үтәргә теләүегеҙҙе, буласаҡ һөҙөмтәләрҙә аңлауығыҙҙы, [[{{MediaWiki:Policy-url}}|ҡағиҙәләр]] буйынса эшләүегеҙҙе раҫлағыҙ.',
'revdelete-suppress' => 'Мәғлүмәттәрҙе шулай уҡ хакимдәрҙән дә йәшерергә',
'revdelete-unsuppress' => 'Тергеҙелгән версияларҙан бар сикләүҙәрҙе алырға',
'revdelete-log' => 'Сәбәп:',
-'revdelete-submit' => 'Һайланған {{PLURAL:$1|версия|версиялар}} өсөн ҡулланырға',
+'revdelete-submit' => 'Һайланған {{PLURAL:$1|1=версия|версиялар}} өсөн ҡулланырға',
'revdelete-success' => "'''Версия күренеүсәнлеге уңышлы үҙгәртелде.'''",
'revdelete-failure' => "'''Версия күренеүсәнлеген үҙгәртеп булмай:'''
$1",
'showhideselectedversions' => 'Һайланған версияларҙы күрһәтергә/йәшерергә',
'editundo' => 'кире алыу',
'diff-empty' => '(айырмалар юҡ)',
-'diff-multi' => '({{PLURAL:$2|$2 ҡатнашыусының}} {{PLURAL:$1|ваҡытлы версияһы}} күрһәтелмәгән)',
'diff-multi-manyusers' => '(Кәмендә {{PLURAL:$2|$2 ҡатнашыусының}} {{PLURAL:$1|ваҡытлы версияһы}} күрһәтелмәгән)',
-'difference-missing-revision' => '$1 айырмаһының {{PLURAL:$2|бер өлгөһө|$2 өлгөһө}} табылманы.
+'difference-missing-revision' => '$1 айырмаһының {{PLURAL:$2|1=бер өлгөһө|$2 өлгөһө}} табылманы.
Был хәл, ғәҙәттә, юйылған биткә яһалған айырма һылтанмаһының ваҡыты үтеүенән барлыҡҡа килә.
Тулыраҡ мәғлүмәт өсөн ҡарағыҙ: [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} юйыу яҙмалары].',
'notextmatches' => 'Тап килгән бит табылманы',
'prevn' => 'алдағы {{PLURAL:$1|$1}}',
'nextn' => 'киләһе {{PLURAL:$1|$1}}',
-'prevn-title' => 'Һуңғы $1 {{PLURAL:$1|һөҙөмтә|һөҙөмтә}}',
-'nextn-title' => 'Тәүге $1 {{PLURAL:$1|һөҙөмтә|һөҙөмтә}}',
-'shown-title' => 'Бер биттә $1 {{PLURAL:$1|һөҙөмтә|һөҙөмтә}} күрһәт',
+'prevn-title' => 'Һуңғы $1 {{PLURAL:$1|1=һөҙөмтә|һөҙөмтә}}',
+'nextn-title' => 'Тәүге $1 {{PLURAL:$1|1=һөҙөмтә|һөҙөмтә}}',
+'shown-title' => 'Бер биттә $1 {{PLURAL:$1|1=һөҙөмтә|һөҙөмтә}} күрһәт',
'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3) ҡарарға',
'searchmenu-exists' => "'''Был вики-проектта «[[:$1]]» бите бар'''",
'searchmenu-new' => "'''Был википроектта \"[[:\$1]]\" бите булдырырға.'''",
'searchprofile-images-tooltip' => 'Файлдар эҙләү',
'searchprofile-everything-tooltip' => 'Барлыҡ биттәрҙә эҙләү (фекерләшеү биттәрендә лә)',
'searchprofile-advanced-tooltip' => 'Махсус исем арауыҡтарында эҙләргә',
-'search-result-size' => '$1 ({{PLURAL:$2|$2 һүҙ|$2 һүҙ}})',
-'search-result-category-size' => '{{PLURAL:$1|$1 ағза}} ({{PLURAL:$2|$2 эске категория}}, {{PLURAL:$3|$3 файл}})',
+'search-result-size' => '$1 ({{PLURAL:$2|1=$2 һүҙ|$2 һүҙ}})',
+'search-result-category-size' => '{{PLURAL:$1|1=$1 ағза}} ({{PLURAL:$2|$2 эске категория}}, {{PLURAL:$3|$3 файл}})',
'search-result-score' => 'Тап килеүсәнлек: $1%',
'search-redirect' => '(йүнәлтеү $1)',
'search-section' => '($1 бүлеге)',
'searchall' => 'барыһы',
'showingresults' => 'Түбәндә № <strong>$2</strong> һөҙөмтәнән башлап <strong>$1</strong> {{PLURAL:$1|һөҙөмтә}} күрһәтелгән.',
'showingresultsnum' => 'Түбәндә № <strong>$2</strong> һөҙөмтәнән башлап <strong>$3</strong> {{PLURAL:$3|һөҙөмтә}} күрһәтелгән.',
-'showingresultsheader' => "'''$4''' өсөн '''$3''' һөҙөмтәнән {{PLURAL:$5|'''$1''' һөҙөмтә|'''$1 - $2''' арауығындағы һөҙөмтәләр}}",
+'showingresultsheader' => "'''$4''' өсөн '''$3''' һөҙөмтәнән {{PLURAL:$5|1='''$1''' һөҙөмтә|'''$1 - $2''' арауығындағы һөҙөмтәләр}}",
'search-nonefound' => 'Был һорауға яуап биреүсе һөҙөмтәләр табылманы.',
'powersearch-legend' => 'Киңәйтелгән эҙләү',
'powersearch-ns' => 'Исем аралыҡтарында эҙләү:',
'prefs-rc' => 'Һуңғы үҙгәртеүҙәр',
'prefs-watchlist' => 'Күҙәтеү исемлеге',
'prefs-watchlist-days' => 'Күҙәтеү исемлегендә нисә көн керетелгән үҙгәртеүҙәрҙе күрһәтергә:',
-'prefs-watchlist-days-max' => 'Максимум $1 {{PLURAL:$1|көн|көн}}',
+'prefs-watchlist-days-max' => 'Максимум $1 {{PLURAL:$1|1=көн|көн}}',
'prefs-watchlist-edits' => 'Киңәйтелгән күҙәтеү исемлегендә күрһәтелә торған үҙгәртеүҙәр һанының сиге:',
'prefs-watchlist-edits-max' => 'Иң күбе: 1000',
'prefs-watchlist-token' => 'Күҙәтеү исемлеге токены:',
'rows' => 'Юлдар:',
'columns' => 'Бағаналар:',
'searchresultshead' => 'Эҙләү',
-'resultsperpage' => 'Биттә табылған яҙыуҙар',
'stub-threshold' => '<a href="#" class="stub">Материалдарға һылтанмалар </a> форматлау сиге (байттарҙа)',
'stub-threshold-disabled' => 'Һүндерелгән',
'recentchangesdays' => 'Күҙәтеү исемлегендә күренгән көндәр һаны:',
'action-editmyprivateinfo' => 'һеҙҙең шәхси мәғлүмәтте мөхәррирләү',
# Recent changes
-'nchanges' => '$1 {{PLURAL:$1|үҙгәртеү|үҙгәртеү}}',
+'nchanges' => '$1 {{PLURAL:$1|1=үҙгәртеү|үҙгәртеү}}',
'enhancedrc-since-last-visit' => '$1 {{PLURAL:$1|һеҙҙең һуңғы визит}}',
'enhancedrc-history' => 'тарих',
'recentchanges' => 'Һуңғы үҙгәртеүҙәр',
'number_of_watching_users_pageview' => '[$1 {{PLURAL:$1|ҡатнашыусы}} күҙәтә]',
'rc_categories' => 'Ошо категорияларҙан ғына («|» менән айырырға)',
'rc_categories_any' => 'Һәр',
-'rc-change-size-new' => 'Үҙгәртештән һуң $1 {{PLURAL:$1|байт|байт}}',
+'rc-change-size-new' => 'Үҙгәртештән һуң $1 {{PLURAL:$1|1=байт|байт}}',
'newsectionsummary' => '/* $1 */ яңы бүлек',
'rc-enhanced-expand' => 'Ваҡ-төйәгенә тиклем күрһәтергә',
'rc-enhanced-hide' => 'Ваҡлыҡтарҙы йәшерергә',
'filetype-badmime' => 'MIME-төрө «$1» булған файлдарҙы тейәп булмай.',
'filetype-bad-ie-mime' => 'Был файлды тейәп булмай, сөнки Internet Explorer уны "$1", йәғни рөхсәт ителмәгән һәм хәүефле файл төрө тип билдәләйәсәк.',
'filetype-unwanted-type' => "'''\".\$1\"''' — теләнмәгән файл тибы.
-{{PLURAL:\$3|Уңайлы файл тибы|Уңайлы файл типтары:}} \$2.",
-'filetype-banned-type' => '\'\'\'".$1"\'\'\' — {{PLURAL:$4|тыйылған файл төрө|тыйылған файл төрҙәре}}.
-{{PLURAL:$3|Файлдың рөхсәт ителгән төрө|Файлдың рөхсәт ителгән төрҙәре:}} $2.',
+{{PLURAL:\$3|1=Уңайлы файл тибы|Уңайлы файл типтары:}} \$2.",
+'filetype-banned-type' => '\'\'\'".$1"\'\'\' — {{PLURAL:$4|1=тыйылған файл төрө|тыйылған файл төрҙәре}}.
+{{PLURAL:$3|1=Файлдың рөхсәт ителгән төрө|Файлдың рөхсәт ителгән төрҙәре:}} $2.',
'filetype-missing' => 'Файлдың киңәйтелмәһе юҡ (мәҫәлән, ".jpg").',
'empty-file' => 'Һеҙ ебәргән файл буш.',
'file-too-large' => 'Һеҙ ебәргән файл бигерәк ҙур.',
'fileexists-shared-forbidden' => 'Бындай исемле файл дөйөм файл һаҡлағыста бар инде.
Әгәр һеҙ шулай ҙа был файлды тейәргә теләһәгеҙ, зинһар, кире ҡайтығыҙ һәм яңы исем һайлағыҙ.
[[File:$1|thumb|center|$1]]',
-'file-exists-duplicate' => 'Был файл түбәндәге {{PLURAL:$1|файл|файлдар}} менән тап килә:',
+'file-exists-duplicate' => 'Был файл түбәндәге {{PLURAL:$1|1=файл|файлдар}} менән тап килә:',
'file-deleted-duplicate' => 'Оҡшаш файл ([[:$1]]) юйылғайны инде. Уны ҡайтанан тейәр алдынан, зинһар, файлды юйыу тарихын ҡарағыҙ.',
'uploadwarning' => 'Киҫәтеү',
'uploadwarning-text' => 'Зинһар, түбәндәге файл тасуирламаһын үҙгәртегеҙ һәм яңынан ҡабатлап ҡарағыҙ.',
'backend-fail-closetemp' => 'Ваҡытлы файлды ябып булмай.',
'backend-fail-read' => '«$1» файлын уҡып булмай.',
'backend-fail-create' => '«$1» файлын яҙып булмай.',
-'backend-fail-maxsize' => '$1 файлын яҙып булманы, сөнки уның күләме {{PLURAL:$2|$2 байттан|$2 байттан}} күп.',
+'backend-fail-maxsize' => '$1 файлын яҙып булманы, сөнки уның күләме {{PLURAL:$2|1=$2 байттан|$2 байттан}} күп.',
'backend-fail-readonly' => '$1 һаҡлағысы әлегә уҡыу өсөн генә асыҡ. Сәбәбе: $2',
'backend-fail-synced' => '$1 файлы эске һаҡлағыста ярашһыҙ хәлдә тора.',
'backend-fail-connect' => '"$1" һаҡлағысы менән бәйләнеш яһап булманы.',
'backend-fail-internal' => '$1 һаҡлағысында билдәһеҙ хата килеп сыҡты',
'backend-fail-contenttype' => 'Файлды $1 адресына һаҡлар өсөн уның эстәлеге төрөн билдәләп булманы.',
-'backend-fail-batchsize' => 'Һаҡлағыс $1 {{PLURAL:$1|файл операцияһынан|файл операцияһынан}} бер блок алды, сикләү һаны: $2 {{PLURAL:$1|операция|операция}}.',
+'backend-fail-batchsize' => 'Һаҡлағыс $1 {{PLURAL:$1|1=файл операцияһынан|файл операцияһынан}} бер блок алды, сикләү һаны: $2 {{PLURAL:$1|1=операция|операция}}.',
'backend-fail-usable' => 'Хоҡуҡтар етмәгәнлектән йәки кәрәкле папкалар булмағанлыҡтан $1 файлын уҡып йәки яҙып булманы.',
# File journal errors
'filehist-comment' => 'Иҫкәрмә',
'filehist-missing' => 'Файл юҡ',
'imagelinks' => 'Файл ҡулланыу',
-'linkstoimage' => 'Был файлға {{PLURAL:$1|бит|$1 бит}} һылтана:',
+'linkstoimage' => 'Был файлға {{PLURAL:$1|1=бит|$1 бит}} һылтана:',
'linkstoimage-more' => 'Был файлға кәмендә $1 {{PLURAL:$1|бит}} һылтанма яһай.
Түбәндәге исемлектә был файлға $1 {{PLURAL:$1|һылтанма}} ғына килтерелгән.
Шулай уҡ [[Special:WhatLinksHere/$2|тулы исемлекте]] ҡарарға мөмкин.',
'nolinkstoimage' => 'Был файлға һылтанма яһаған бит юҡ.',
'morelinkstoimage' => 'Был файлға [[Special:WhatLinksHere/$1|башҡа һылтанмаларҙы]] ҡарарға.',
'linkstoimage-redirect' => '$1 (файл-йүнәлтеү) $2',
-'duplicatesoffile' => 'Түбәндәге {{PLURAL:$1|файл|файлдар}} был файл менән тап килә ([[Special:FileDuplicateSearch/$2|тулыраҡ мәғлүмәт]])',
+'duplicatesoffile' => 'Түбәндәге {{PLURAL:$1|1=файл|файлдар}} был файл менән тап килә ([[Special:FileDuplicateSearch/$2|тулыраҡ мәғлүмәт]])',
'sharedupload' => 'Был файл $1 базаһынан һәм башҡа проектарҙа ҡулланылырға мөмкин.',
'sharedupload-desc-there' => 'Был файл $1 базаһынан һәм башҡа проекттарҙа ҡулланыла ала.
Тулыраҡ мәғлүмәтте [$2 файл тасуирламаһы битендә] ҡарарға мөмкин.',
# Random page
'randompage' => 'Осраҡлы мәҡәлә',
-'randompage-nopages' => 'Түбәндәге {{PLURAL:$2|исемдәр арауығында|исемдәр арауыҡтарында}} биттәр юҡ: $1.',
+'randompage-nopages' => 'Түбәндәге {{PLURAL:$2|1=исемдәр арауығында|исемдәр арауыҡтарында}} биттәр юҡ: $1.',
# Random page in category
'randomincategory' => 'Категориялағы осраҡлы бит',
'statistics-views-peredit' => 'Бер үҙгәртеүгә ҡарап сығыуҙар',
'statistics-users' => 'Теркәлгән [[Special:ListUsers|ҡатнашыусылар]]',
'statistics-users-active' => 'Әүҙем ҡатнашыусылар',
-'statistics-users-active-desc' => 'Һуңғы {{PLURAL:$1|көндә|$1 көндә}} ниндәйҙер эшмәкәрлек башҡарған ҡатнашыусылар',
+'statistics-users-active-desc' => 'Һуңғы {{PLURAL:$1|1=көндә|$1 көндә}} ниндәйҙер эшмәкәрлек башҡарған ҡатнашыусылар',
'statistics-mostpopular' => 'Иң күп ҡаралған биттәр',
'pageswithprop' => 'Үҙенсәлектәре ҡайтанан билдәләнгән биттәр',
# Miscellaneous special pages
'nbytes' => '$1 {{PLURAL:$1|байт}}',
-'ncategories' => '$1 {{PLURAL:$1|Категория|Категория}}',
+'ncategories' => '$1 {{PLURAL:$1|1=Категория|Категория}}',
'ninterwikis' => '$1 {{PLURAL:$1|интервики-һылтанма}}',
'nlinks' => '$1 {{PLURAL:$1|һылтанма}}',
'nmembers' => '$1 {{PLURAL:$1|объект}}',
-'nrevisions' => '$1 {{PLURAL:$1|өлгө|өлгө}}',
+'nrevisions' => '$1 {{PLURAL:$1|1=өлгө|өлгө}}',
'nviews' => '$1 {{PLURAL:$1|ҡарап сығыу}}',
'nimagelinks' => '$1 {{PLURAL:$1|биттә}} ҡулланыла',
'ntransclusions' => '$1 {{PLURAL:$1|биттә}} ҡулланыла',
'notargettext' => 'Һеҙ был ғәмәл өсөн кәрәкле битте йәки ҡатнашыусыны күрһәтмәгәнһегеҙ.',
'nopagetitle' => 'Бындай бит юҡ',
'nopagetext' => 'Һеҙ күрһәткән бит юҡ.',
-'pager-newer-n' => '{{PLURAL:$1|1 яңыраҡ|$1 яңыраҡ}}',
-'pager-older-n' => '{{PLURAL:$1|1 иҫкерәк|$1 иҫкерәк}}',
+'pager-newer-n' => '{{PLURAL:$1|1=1 яңыраҡ|$1 яңыраҡ}}',
+'pager-older-n' => '{{PLURAL:$1|1=1 иҫкерәк|$1 иҫкерәк}}',
'suppress' => 'Йәшереү',
'querypage-disabled' => 'Был махсус бит һөҙөмтәлелекте арттырыу өсөн ябылған.',
# Special:Categories
'categories' => 'Категориялар',
-'categoriespagetext' => 'Түбәндәге {{PLURAL:$1|категорияла|категорияларҙа}} биттәр йәки файлдар бар.
+'categoriespagetext' => 'Түбәндәге {{PLURAL:$1|1=категорияла|категорияларҙа}} биттәр йәки файлдар бар.
[[Special:UnusedCategories|Ҡулланылмаған категориялар]] бында күрһәтелмәгән.
Шулай уҡ [[Special:WantedCategories|кәрәкле категориялар исемлеген]] ҡарағыҙ.',
'categoriesfrom' => 'Ошондай хәрефтәрҙән башланған категорияларҙы күрһәтергә:',
'linksearch-ok' => 'Эҙләү',
'linksearch-text' => '<code>*.wikipedia.org</code> һымаҡ төркөм билдәләрен ҡулланырға була.
Кәмендә өҫкө кимәл домен кәрәк, мәҫәлән, <code>*.org</code><br />
-Мөмкин булған{{PLURAL:$2|протокол|протоколдар}}: <code>$1</code> (башҡа протокол өҫтәлмәһә, алдан бирелгәне индерелә http://).',
+Мөмкин булған{{PLURAL:$2|1=протокол|протоколдар}}: <code>$1</code> (башҡа протокол өҫтәлмәһә, алдан бирелгәне индерелә http://).',
'linksearch-line' => '$1 адресына $2 битенән һылтанма яһалған',
'linksearch-error' => 'Төркөм билдәләре URL адрестың башында ғына ҡулланыла ала.',
# Special:ActiveUsers
'activeusers' => 'Әүҙем ҡатнашыусылар исемлеге',
'activeusers-intro' => 'Был — һуңғы $1 {{PLURAL:$1|көн}} эсендә ниҙер башҡарған ҡатнашыусылар исемлеге.',
-'activeusers-count' => 'һуңғы $3 {{PLURAL:$3|көн}} эсендәге һуңғы көндә $1 {{PLURAL:$1|үҙгәртеү}}',
+'activeusers-count' => 'һуңғы $3 {{PLURAL:$3|1=көн}} эсендәге һуңғы көндә $1 {{PLURAL:$1|үҙгәртеү}}',
'activeusers-from' => 'Ошондай хәрефтәрҙән башланған ҡатнашыусыларҙы күрһәтергә:',
'activeusers-hidebots' => 'Боттарҙы йәшерергә',
'activeusers-hidesysops' => 'Хакимдәрҙе йәшерергә',
'listgrouprights-rights' => 'Хоҡуҡтар',
'listgrouprights-helppage' => 'Help:Төркөмдәр хоҡуҡтары',
'listgrouprights-members' => '(ағзалар исемлеге)',
-'listgrouprights-addgroup' => '$1 {{PLURAL:$2|төркөмөнә|төркөмдәренә}} өҫтәү',
-'listgrouprights-removegroup' => '$1 {{PLURAL:$2|төркөмөнән|төркөмдәренән}} сығарыу',
+'listgrouprights-addgroup' => '$1 {{PLURAL:$2|1=төркөмөнә|төркөмдәренә}} өҫтәү',
+'listgrouprights-removegroup' => '$1 {{PLURAL:$2|1=төркөмөнән|төркөмдәренән}} сығарыу',
'listgrouprights-addgroup-all' => 'Бөтә төркөмдәргә өҫтәү',
'listgrouprights-removegroup-all' => 'Бөтә төркөмдәрҙән сығарыу',
-'listgrouprights-addgroup-self' => 'Үҙенең иҫәп яҙмаһына $1 {{PLURAL:$2|төркөмөн|төркөмдәрен}} өҫтәү',
-'listgrouprights-removegroup-self' => 'Үҙенең иҫәп яҙмаһынан $1 {{PLURAL:$2|төркөмөн|төркөмдәрен}} юйыу',
+'listgrouprights-addgroup-self' => 'Үҙенең иҫәп яҙмаһына $1 {{PLURAL:$2|1=төркөмөн|төркөмдәрен}} өҫтәү',
+'listgrouprights-removegroup-self' => 'Үҙенең иҫәп яҙмаһынан $1 {{PLURAL:$2|1=төркөмөн|төркөмдәрен}} юйыу',
'listgrouprights-addgroup-self-all' => 'Үҙенең иҫәп яҙмаһына бөтә төркөмдәрҙе өҫтәү',
'listgrouprights-removegroup-self-all' => 'Үҙенең иҫәп яҙмаһынан бөтә төркөмдәрҙе юйыу',
'wlheader-showupdated' => "Һеҙҙең аҙаҡҡы кереүегеҙҙән һуң үҙгәргән биттәр '''ҡалын''' шрифт менән күрһәтелгән.",
'watchmethod-recent' => 'күҙәтелгән биттәр өсөн аҙаҡҡы үҙгәртеүҙәрҙе ҡарау',
'watchmethod-list' => 'аҙаҡҡы үҙгәртеүҙәр өсөн күҙәтелгән биттәрҙе ҡарау',
-'watchlistcontains' => 'Һеҙҙең күҙәтеү исемлегендә $1 {{PLURAL:$1|бит|бит}}бар.',
+'watchlistcontains' => 'Һеҙҙең күҙәтеү исемлегендә $1 {{PLURAL:$1|1=бит|бит}}бар.',
'iteminvalidname' => '«$1» менән ҡыйынлыҡтар, исеме дөрөҫ түгел...',
-'wlnote' => "Түбәндә $3 $4 ваҡытына тиклем аҙаҡҡы {{PLURAL:$2|сәғәт|'''$2''' сәғәт}} эсендә эшләнгән {{PLURAL:$1|үҙгәртеү|'''$1''' үҙгәртеү}} күрһәтелгән.",
'wlshowlast' => 'Һуңғы $1 сәғәт $2 көн өсөн күрһәт $3',
'watchlist-options' => 'Күҙәтеү исемлеге көйләүҙәре',
'rollback' => 'Үҙгәртеүҙәрҙе кире ҡайтарырға',
'rollback_short' => 'Кире ҡайтарырға',
'rollbacklink' => 'кире',
-'rollbacklinkcount' => '$1 {{PLURAL:$1|төҙәтеүҙе|төҙәтеүҙе}} кире алырға',
-'rollbacklinkcount-morethan' => '$1 {{PLURAL:$1|төҙәтеүҙән|төҙәтеүҙән}} күберәк кире алырға',
+'rollbacklinkcount' => '$1 {{PLURAL:$1|1=төҙәтеүҙе|төҙәтеүҙе}} кире алырға',
+'rollbacklinkcount-morethan' => '$1 {{PLURAL:$1|1=төҙәтеүҙән|төҙәтеүҙән}} күберәк кире алырға',
'rollbackfailed' => 'Кире ҡайтарырғанда барлыҡҡа килгән хата',
'cantrollback' => 'Үҙгәртеүҙәрҙе кире алыу мөмкин түгел. Битте һуңғы үҙгәртеүсе ҡатнашыусы уның берҙән-бер авторы булып тора.',
'alreadyrolled' => '[[User:$2|$2]] ([[User talk:$2|фекер алышыу]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) кереткән [[:$1]] һуңғы үҙгәртеүҙәрҙе кире алыу мөмкин түгел; башҡа ҡатнашыусы был битте мөхәррирләгән йәки үҙгәртеүҙәрҙе кире алған инде.
'protect-locked-dblock' => "Һаҡлау дәрәжәһе үҙгәртелә алмай, сөнки төп мәғлүмәттәр базаһы ваҡытлыса бикле.
'''$1''' битенең хәҙерге һаҡлау көйләүҙәре:",
'protect-locked-access' => "Биттең һаҡлау дәрәжеһен үҙгәртер өсөн иҫәп яҙыуығыҙҙың хоҡуҡтары етәрле түгел. '''$1''' битенең хәҙерге һаҡлау көйләүҙәре:",
-'protect-cascadeon' => 'Был бит һаҡланған, сөнки ул эҙмә-эҙлекле һаҡлау ҡуйылған {{PLURAL:$1|биткә|биттәргә}} керә. Һеҙ был биттең һаҡлау дәрәжәһен үҙгәртә алаһығыҙ, ләкин был эҙмә-эҙлекле һаҡлауға йоғонто яһамаясаҡ.',
+'protect-cascadeon' => 'Был бит һаҡланған, сөнки ул эҙмә-эҙлекле һаҡлау ҡуйылған {{PLURAL:$1|1=биткә|биттәргә}} керә. Һеҙ был биттең һаҡлау дәрәжәһен үҙгәртә алаһығыҙ, ләкин был эҙмә-эҙлекле һаҡлауға йоғонто яһамаясаҡ.',
'protect-default' => 'Бар ҡулланыусыларға рөхсәт бирергә',
'protect-fallback' => '«$1» хоҡуҡлы ҡатнашыусыларға ғына рөхсәте ителгән',
'protect-level-autoconfirmed' => 'Үҙенән-үҙе раҫланған ҡатнашыусыларға ғына рөхсәт ителгән',
'undeletepage' => 'Юйылған биттәрҙе ҡарау һәм тергеҙеү',
'undeletepagetitle' => "'''Түбәндә [[:$1|$1]] битенең юйылған өлгөләре килтерелгән'''.",
'viewdeletedpage' => 'Юйылған биттәрҙе ҡарау',
-'undeletepagetext' => 'Түбәндәге {{PLURAL:$1|бит|$1 бит}} юйылған, әммә һаман архивта һаҡлана һәм тергеҙелә ала.
+'undeletepagetext' => 'Түбәндәге {{PLURAL:$1|1=бит|$1 бит}} юйылған, әммә һаман архивта һаҡлана һәм тергеҙелә ала.
Архив ваҡыты менән таҙартыла ала.',
'undelete-fieldset-title' => 'Өлгөләрҙе тергеҙергә',
'undeleteextrahelp' => "Биттең тарихын тулыһынса тергеҙер өсөн, бөтә өлгөләрҙе лә һайланмаған килеш ҡалдырығыҙ һәм '''''{{int:undeletebtn}}''''' төймәһенә баҫығыҙ.
Ҡайһы бер өлгөләрҙе генә тергеҙер өсөн, кәрәкле өлгөләрҙе һайлағыҙ һәм '''''{{int:undeletebtn}}''''' төймәһенә баҫығыҙ.",
-'undeleterevisions' => '$1 {{PLURAL:$1|өлгө|өлгө}} архивта һаҡланған',
+'undeleterevisions' => '$1 {{PLURAL:$1|1=өлгө|өлгө}} архивта һаҡланған',
'undeletehistory' => 'Битте тергеҙгәндә уны үҙгәртеү тарихы ла тергеҙелә.
Әгәр бит юйылғандан һуң шундай уҡ исемле бит булдырылған булһа, тергеҙелгән өлгөләр яңы өлгөләр алдынан ҡуйыласаҡ.',
'undeleterevdel' => 'Әгәр тергеҙеү биттең йәки файлдың аҙаҡҡы өлгөһө өлөшләтә юйылыуына килтерһә, был терегеҙеү башҡарылмаясаҡ.
'undeleteinvert' => 'Һайланғандарҙы әйләндерергә',
'undeletecomment' => 'Сәбәп:',
'undeletedrevisions' => '$1 {{PLURAL:$1|өлгө}} тергеҙелде',
-'undeletedrevisions-files' => '{{PLURAL:$1|өлгө}} һәм {{PLURAL:$2|файл}} тергеҙелде',
+'undeletedrevisions-files' => '{{PLURAL:$1|1=өлгө}} һәм {{PLURAL:$2|файл}} тергеҙелде',
'undeletedfiles' => '{{PLURAL:$1|файл}} тергеҙелде',
'cannotundelete' => 'Юйыуҙы кире алып булманы:
$1',
'isredirect' => 'йүнәлтеү бите',
'istemplate' => 'ҡушылған',
'isimage' => 'файл һылтанмаһы',
-'whatlinkshere-prev' => '{{PLURAL:$1|алдағы|алдағы $1}}',
-'whatlinkshere-next' => '{{PLURAL:$1|киләһе|киләһе $1}}',
+'whatlinkshere-prev' => '{{PLURAL:$1|1=алдағы|алдағы $1}}',
+'whatlinkshere-next' => '{{PLURAL:$1|1=киләһе|киләһе $1}}',
'whatlinkshere-links' => '← һылтанмалар',
'whatlinkshere-hideredirs' => 'Йүнәлтеүҙәрҙе $1',
'whatlinkshere-hidetrans' => 'Ҡушылғандарҙы $1',
'blocklist-reason' => 'Сәбәп',
'ipblocklist-submit' => 'Эҙләү',
'ipblocklist-localblock' => 'Урындағы (локаль) бикләү',
-'ipblocklist-otherblocks' => 'Башҡа {{PLURAL:$1|бикләү|бикләүҙәр}}',
+'ipblocklist-otherblocks' => 'Башҡа {{PLURAL:$1|1=бикләү|бикләүҙәр}}',
'infiniteblock' => 'сикһеҙ',
'expiringblock' => '$1 $2 тамамлана',
'anononlyblock' => 'танылмағандарҙы ғына',
'ipb_already_blocked' => '"$1" бикләнгән инде.',
'ipb-needreblock' => '$1 бикләнгән инде.
Бикләү көйләүҙәрен үҙгәртергә теләйһегеҙме?',
-'ipb-otherblocks-header' => 'Башҡа {{PLURAL:$1|бикләү|бикләүҙәр}}',
+'ipb-otherblocks-header' => 'Башҡа {{PLURAL:$1|1=бикләү|бикләүҙәр}}',
'unblock-hideuser' => 'Һеҙ был ҡулланыусының биген ала алмайһығыҙ, сөнки ҡулланыусы исеме йәшерелгән.',
'ipb_cant_unblock' => 'Хата: Идентификаторы $1 булған бикләү табылманы.
Ул бик алынған, булырға тейеш.',
'import-comment' => 'Иҫкәрмә:',
'importtext' => 'Зинһар, файлды сығанаҡ викинан [[Special:Export|махсус ҡорал]] ярҙамында сығарығыҙ. Артабан уны компьютерығыҙға һаҡлағыҙ һәм бында тейәгеҙ.',
'importstart' => 'Биттәрҙе тейәү...',
-'import-revision-count' => '$1 {{PLURAL:$1|өлгө|өлгө}}',
+'import-revision-count' => '$1 {{PLURAL:$1|1=өлгө|өлгө}}',
'importnopages' => 'Тейәү өсөн биттәр юҡ.',
'imported-log-entries' => 'Журналдан $1 {{PLURAL:$1|яҙма}} тейәлде.',
'importfailed' => 'Тейәү хатаһы: <nowiki>$1</nowiki>',
'import-error-special' => ' «$1» бите импортҡа сығарылманы, сөнки ул биттәр яһау мөмкин булмаған исемдәр арауығына ҡарай.',
'import-error-invalid' => '"$1" бите яраҡһыҙ исеме өсөн импортланманы.',
'import-error-unserialize' => '«$1» битенең $2 өлгөһөн структуралаштырып (десериаялап) булмай. $4 форматында серияланған $3 эстәлегенең моделеның был өлгөлә ҡулланылыуы тураһында хәбәр алынды.',
-'import-options-wrong' => 'Хаталы {{PLURAL:$2|опция|опциялар}}: <nowiki>$1</nowiki>',
+'import-options-wrong' => 'Хаталы {{PLURAL:$2|1=опция|опциялар}}: <nowiki>$1</nowiki>',
'import-rootpage-invalid' => 'Төп биттең күрһәтелгән исеме яңылыш.',
'import-rootpage-nosubpage' => 'Төп биттең "$1" исемдәр арауығы эске биттәргә рөхсәт бирмәй.',
'importlogpage' => 'Тейәү яҙмалары журналы',
'importlogpagetext' => 'Хакимдәр тарафынан башҡа вики проекттарҙан биттәрҙе һәм уларҙың үҙгәртеүҙәр тарихын тейәү.',
'import-logentry-upload' => '[[$1]] битен файлдан тейәгән',
-'import-logentry-upload-detail' => '$1 {{PLURAL:$1|өлгө|өлгө}}',
+'import-logentry-upload-detail' => '$1 {{PLURAL:$1|1=өлгө|өлгө}}',
'import-logentry-interwiki' => '$1 битен вики проекттары-ара тейәгән',
-'import-logentry-interwiki-detail' => '$2 өлгөнән $1 {{PLURAL:$1|өлгө|өлгө}}',
+'import-logentry-interwiki-detail' => '$2 өлгөнән $1 {{PLURAL:$1|1=өлгө|өлгө}}',
# JavaScriptTest
'javascripttest' => '
'tooltip-pt-watchlist' => 'Һеҙ күҙәткән биттәр исемлеге',
'tooltip-pt-mycontris' => 'Кереткән өлөшөгөҙ',
'tooltip-pt-login' => 'Бында теркәлеү үтергә була, әммә был эш мәжбүри түгел.',
-'tooltip-pt-anonlogin' => 'Бында танылыу үтергә була, әммә был эш мәжбүри түгел.',
'tooltip-pt-logout' => 'Сығырға',
'tooltip-ca-talk' => 'Биттең эстәлеге тураһында фекерләшеү',
'tooltip-ca-edit' => 'Һеҙ был битте үҙгәртә алаһығыҙ. Зинһар, яҙып ҡуйыр алдынан ҡарап сығығыҙ',
The wiki server cannot provide data in a format your client can read.',
# Attribution
-'anonymous' => '{{SITENAME}} проектының танылмаған {{PLURAL:$1|ҡатнашыусыһы|ҡатнашыусылары}}',
+'anonymous' => '{{SITENAME}} проектының танылмаған {{PLURAL:$1|1=ҡатнашыусыһы|ҡатнашыусылары}}',
'siteuser' => '{{SITENAME}} проектының ҡатнашыусыһы $1',
'anonuser' => '{{SITENAME}} проектының танылмаған ҡатнашыусыһы $1',
'lastmodifiedatby' => 'Был бит һуңғы тапҡыр $1 $2 $3 тарафынан үҙгәртелгән.',
'othercontribs' => 'Мөхәррирләүҙә ҡатнаштылар: $1.',
'others' => 'башҡалар',
-'siteusers' => '{{SITENAME}} {{PLURAL:$2|ҡатнашыусы|ҡатнашыусылары}} $1',
-'anonusers' => '{{SITENAME}} проектының танылмаған {{PLURAL:$2|ҡатнашыусыһы|ҡатнашыусылары}} $1',
+'siteusers' => '{{SITENAME}} {{PLURAL:$2|1=ҡатнашыусы|ҡатнашыусылары}} $1',
+'anonusers' => '{{SITENAME}} проектының танылмаған {{PLURAL:$2|1=ҡатнашыусыһы|ҡатнашыусылары}} $1',
'creditspage' => 'Рәхмәт белдереү',
'nocredits' => 'Был мәҡәләне мөхәррирләүҙә ҡатнашыусылар исемлеге юҡ.',
'pageinfo-authors' => 'Төрлө авторҙар һаны',
'pageinfo-recent-edits' => 'Һуңғы ваҡыттағы төҙәтеүҙәр ($1 эсендә)',
'pageinfo-recent-authors' => 'Төрлө авторҙарҙың һуңғы һаны',
-'pageinfo-magic-words' => 'Тылсымлы {{PLURAL:$1|һүҙ|һүҙҙәр}} ($1)',
-'pageinfo-hidden-categories' => 'Йәшерен {{PLURAL:$1|категория|категориялар}} ($1)',
-'pageinfo-templates' => 'Ҡулланылған {{PLURAL:$1|ҡалып|ҡалыптар}} ($1)',
+'pageinfo-magic-words' => 'Тылсымлы {{PLURAL:$1|1=һүҙ|һүҙҙәр}} ($1)',
+'pageinfo-hidden-categories' => 'Йәшерен {{PLURAL:$1|1=категория|категориялар}} ($1)',
+'pageinfo-templates' => 'Ҡулланылған {{PLURAL:$1|1=ҡалып|ҡалыптар}} ($1)',
'pageinfo-transclusions' => '{{PLURAL:$1|Индерелгән биттәр}} ($1)',
'pageinfo-toolboxlink' => 'Бит мәғлүмәттәре',
'pageinfo-redirectsto' => 'Йүнәлтеү',
'svg-long-error' => 'Яңылыш SVG файл: $1',
'show-big-image' => 'Тулы асыҡлыҡ',
'show-big-image-preview' => 'Байҡау ваҡытындағы күләм: $1.',
-'show-big-image-other' => '{{PLURAL:$2|Башҡа сиселеш|Башҡа сиселештәр}}: $1.',
+'show-big-image-other' => '{{PLURAL:$2|1=Башҡа сиселеш|Башҡа сиселештәр}}: $1.',
'show-big-image-size' => '$1 × $2 пиксель',
'file-info-gif-looped' => 'әйләнешле',
'file-info-gif-frames' => '$1 {{PLURAL:$1|фрейм}}',
'sp-newimages-showfrom' => '$1 $2 ваҡытынан башлап яңы файлдарҙы күрһәтергә',
# Video information, used by Language::formatTimePeriod() to format lengths in the above messages
-'seconds' => '{{PLURAL:$1|$1 секунд|$1 секунд}}',
-'minutes' => '{{PLURAL:$1|$1 минут|$1 минут}}',
-'hours' => '{{PLURAL:$1|$1 сәғәт|$1 сәғәт}}',
-'days' => '{{PLURAL:$1|$1 көн|$1 көн}}',
-'weeks' => '{{PLURAL:$1|$1 аҙна|$1 аҙна|}}',
+'seconds' => '{{PLURAL:$1|1=$1 секунд|$1 секунд}}',
+'minutes' => '{{PLURAL:$1|1=$1 минут|$1 минут}}',
+'hours' => '{{PLURAL:$1|1=$1 сәғәт|$1 сәғәт}}',
+'days' => '{{PLURAL:$1|1=$1 көн|$1 көн}}',
+'weeks' => '{{PLURAL:$1|$1 аҙна}}',
'months' => '{{PLURAL:$1|$1 ай}}',
'years' => '{{PLURAL:$1|$1 йыл}}',
'ago' => '$1 элек',
'lag-warn-high' => 'Мәғлүмәттәр базаларын синхронлаштырыуҙың күпкә артта ҡалыуы сәбәпле, $1 {{PLURAL:$1|секундтан}} кәмерәк ваҡыт элек эшләнгән үҙгәртеүҙәр был исемлектә күрһәтелә алмай.',
# Watchlist editor
-'watchlistedit-numitems' => 'Һеҙҙең күҙәтеү исемлегегеҙҙә фекер алышыу биттәрен иҫәпләмәгәндә - {{PLURAL:$1|$1 бит|$1 бит}} бар.',
+'watchlistedit-numitems' => 'Һеҙҙең күҙәтеү исемлегегеҙҙә фекер алышыу биттәрен иҫәпләмәгәндә - {{PLURAL:$1|1=$1 бит|$1 бит}} бар.',
'watchlistedit-noitems' => 'Һеҙҙең күҙәтеү исемлегегеҙҙә бер бит тә юҡ.',
'watchlistedit-normal-title' => 'Күҙәтеү исемлеген мөхәррирләү',
'watchlistedit-normal-legend' => 'Күҙәтеү исемлегенән биттәрҙе юйыу',
Биттәрҙе юйыу өсөн, кәрәкле юлдарҙы һайлағыҙ һәм «{{int:Watchlistedit-normal-submit}}» төймәһенә баҫығыҙ.
Һеҙ шулай уҡ [[Special:EditWatchlist/raw|исемлекте текст рәүешендә үҙгәртә]] алаһығыҙ.',
'watchlistedit-normal-submit' => 'Биттәрҙе юйырға',
-'watchlistedit-normal-done' => '{{PLURAL:$1|$1 бит|$1 бит}} һеҙҙең күҙәтеү исемлегенән юйылды:',
+'watchlistedit-normal-done' => '{{PLURAL:$1|1=$1 бит|$1 бит}} һеҙҙең күҙәтеү исемлегенән юйылды:',
'watchlistedit-raw-title' => '«Сей» күҙәтеү исемлеген мөхәррирләү',
'watchlistedit-raw-legend' => '«Сей» күҙәтеү исемлеген мөхәррирләү',
'watchlistedit-raw-explain' => 'Түбәндә һеҙҙең күҙәтеү исемлегендә булған биттәр күрһәтелгән. Һеҙ был исемлекте, юлдар өҫтәп йәки юйып, үҙгәртә алаһығыҙ; бер юлға - бер исем.
'watchlistedit-raw-titles' => 'Яҙмалар:',
'watchlistedit-raw-submit' => 'Исемлекте яңыртырға',
'watchlistedit-raw-done' => 'Һеҙҙең күҙәтеү исемлеге яңырҙы.',
-'watchlistedit-raw-added' => '{{PLURAL:$1|1 яҙма|$1 яҙма}} өҫтәлде:',
-'watchlistedit-raw-removed' => '{{PLURAL:$1|1 яҙма|$1 яҙма}} юйылды:',
+'watchlistedit-raw-added' => '{{PLURAL:$1|1=1 яҙма|$1 яҙма}} өҫтәлде:',
+'watchlistedit-raw-removed' => '{{PLURAL:$1|1=1 яҙма|$1 яҙма}} юйылды:',
# Watchlist editing tools
'watchlisttools-view' => 'Исемлектәге биттәрҙәге үҙгәрештәр',
'tags-active-yes' => 'Эйе',
'tags-active-no' => 'Юҡ',
'tags-edit' => 'үҙгәртергә',
-'tags-hitcount' => '$1 {{PLURAL:$1|үҙгәртеү|үҙгәртеү}}',
+'tags-hitcount' => '$1 {{PLURAL:$1|1=үҙгәртеү|үҙгәртеү}}',
# Special:ComparePages
'comparepages' => 'Биттәрҙе сағыштырыу',
'api-error-badtoken' => 'Эске хата: дөрөҫ булмаған токен',
'api-error-copyuploaddisabled' => 'Был серверҙа URL адрес буйынса йөкләү өҙөлгән',
'api-error-duplicate' => 'Бындай эстәлекле {{PLURAL:$1|[$2 файл]}} бар.',
-'api-error-duplicate-archive' => 'Сайтта бындай эстәлекле {{PLURAL:$1|[$2 башҡа файл]}} бар ине инде, ләкин {{PLURAL:$1|ул юйылды|улар юйылды}}',
-'api-error-duplicate-archive-popup-title' => 'Элек юйылған {{PLURAL:$1|файлдың|файлдарҙың}} дубликаты',
-'api-error-duplicate-popup-title' => '{{PLURAL:$1|файлы|файлдары}} дубликаты.',
+'api-error-duplicate-archive' => 'Сайтта бындай эстәлекле {{PLURAL:$1|[$2 башҡа файл]}} бар ине инде, ләкин {{PLURAL:$1|1=ул юйылды|улар юйылды}}',
+'api-error-duplicate-archive-popup-title' => 'Элек юйылған {{PLURAL:$1|1=файлдың|файлдарҙың}} дубликаты',
+'api-error-duplicate-popup-title' => '{{PLURAL:$1|1=файлы|файлдары}} дубликаты.',
'api-error-empty-file' => 'Һеҙ ебәргән файл буш.',
'api-error-emptypage' => 'Яңы буш биттәр яһау тыйыла.',
'api-error-fetchfileerror' => 'Эске хата: файлды күсергән ваҡытта хата китте',
'api-error-file-too-large' => 'Һеҙ ебәргән файл үтә ҙур.',
'api-error-filename-tooshort' => 'Файл исеме бик ҡыҫҡа.',
'api-error-filetype-banned' => 'Был файл төрө тыйылған.',
-'api-error-filetype-banned-type' => '$1 {{PLURAL:$4|тыйылған файл төрө|тыйылған файл төрҙәре}}. Рөхсәт ителгән {{PLURAL:$3|файл төрө|файл төрҙәре}} $2.',
+'api-error-filetype-banned-type' => '$1 {{PLURAL:$4|1=тыйылған файл төрө|тыйылған файл төрҙәре}}. Рөхсәт ителгән {{PLURAL:$3|1=файл төрө|файл төрҙәре}} $2.',
'api-error-filetype-missing' => 'Был файлдың ҡушымтаһы юҡ',
'api-error-hookaborted' => 'Һеҙ эшләргә теләгән үҙгәртеүҙәр ҡушымтаны тикшереүсе тарафынан өҙөлдө',
'api-error-http' => 'Эске хата: серверға бәйләнеп булмай.',
'api-error-verification-error' => 'Был файл боҙолған, йәки дөрөҫ булмаған ҡушымтаһы бар.',
# Durations
-'duration-seconds' => '$1 {{PLURAL:$1|секунд|секунд}}',
-'duration-minutes' => '$1 {{PLURAL:$1|минут|минут}}',
-'duration-hours' => '$1 {{PLURAL:$1|сәғәт|сәғәт}}',
-'duration-days' => '$1 {{PLURAL:$1|көн|көн}}',
-'duration-weeks' => '$1 {{PLURAL:$1|аҙна|аҙналар|аҙна}}',
-'duration-years' => '$1 {{PLURAL:$1|йыл|йылдар}}',
-'duration-decades' => '$1 {{PLURAL:$1|ун көнлөк|ун көнлөктәр}}',
-'duration-centuries' => '$1 {{PLURAL:$1|быуат|быуаттар}}',
-'duration-millennia' => '$1 {{PLURAL:$1|меңйыллыҡ|меңйыллыҡтар}}',
+'duration-seconds' => '$1 {{PLURAL:$1|1=секунд|секунд}}',
+'duration-minutes' => '$1 {{PLURAL:$1|1=минут|минут}}',
+'duration-hours' => '$1 {{PLURAL:$1|1=сәғәт|сәғәт}}',
+'duration-days' => '$1 {{PLURAL:$1|1=көн|көн}}',
+'duration-weeks' => '$1 {{PLURAL:$1|аҙна|аҙна|аҙналар}}',
+'duration-years' => '$1 {{PLURAL:$1|1=йыл|йылдар}}',
+'duration-decades' => '$1 {{PLURAL:$1|1=ун көнлөк|ун көнлөктәр}}',
+'duration-centuries' => '$1 {{PLURAL:$1|1=быуат|быуаттар}}',
+'duration-millennia' => '$1 {{PLURAL:$1|1=меңйыллыҡ|меңйыллыҡтар}}',
# Image rotation
'rotate-comment' => 'Рәсем сәғәт йөрөшө буйынса $1{{PLURAL:$1|}} градусҡа боролдо',
$messages = array(
# User preference toggles
'tog-underline' => 'Links unterstreichen:',
-'tog-justify' => 'Text ois Blocksotz',
'tog-hideminor' => 'Kloane Änderrungen ausblenden',
'tog-hidepatrolled' => 'Kontroilirde Änderrungen in dé „Létzten Änderrungen“ ausblenden',
'tog-newpageshidepatrolled' => 'Kóntróilirde Seiten auf da Listen „Neiche Seiten“ vaberng',
'tog-numberheadings' => 'Ywerschriften autómaatisch nummerrirn',
'tog-showtoolbar' => 'Beorweiten-Werkzeigleisten åzoang (JavaScript werd braucht)',
'tog-editondblclick' => 'Seiten mid am Dóppedrucker beorweiden (JavaScript werd braucht)',
-'tog-editsection' => "Links zum beorweiten voh d' oahzelnen Obschnitt åzoang",
'tog-editsectiononrightclick' => 'Oahzelne Obschnitt mid am Rechtsdrucker beorweiten (JavaScript werd braucht)',
-'tog-showtoc' => 'Åzoang vom Inhoidsvazeichnis bei Seiten mid merer ois drei Ywerschriften',
'tog-rememberpassword' => 'Mim Browser dauerhoft ågmödt bleim (maximaal $1 {{PLURAL:$1|Toog|Toog}})',
'tog-watchcreations' => 'Voh mir söwer eihgstöde Seiten autómaatisch beówochten',
'tog-watchdefault' => 'Voh mir söwer gänderde Seiten autómaatisch beówochten',
'lineno' => 'Zein $1:',
'compareselectedversions' => 'Ausgwejde Versiona vagleicha',
'editundo' => 'zruck doa',
-'diff-multi' => '({{PLURAL:$1|A dazwischnliegade Version|$1 dazwiscenliegade Versiona}} {{PLURAL:$2|vonam Nutza|vo $2 Nutzan}} {{PLURAL:$1|wead|wean}} ned ozoagt)',
# Search results
'searchresults' => 'Suachergebniss',
'rows' => 'Zeiln:',
'columns' => 'Spoiten',
'searchresultshead' => 'Suachen',
-'resultsperpage' => 'Dreffer pró Seiten:',
'savedprefs' => 'Deine Eihstellungen san gspeicherd worn.',
'timezonelegend' => 'Zaidzone:',
'localtime' => 'Ortszaid:',
'watchmethod-list' => 'Ywerpriaffm voh da Beówochtungslisten auf létzde Beorwatungen',
'watchlistcontains' => 'Deih Beówochtungslisten enthoitt $1 {{PLURAL:$1|Seiten|Seiten}}.',
'iteminvalidname' => 'Próblém mim Eihtrog „$1“, néd gütiger Naum.',
-'wlnote' => "Es {{PLURAL:$1|fóigt d' létzde Änderrung|fóing d' létzden '''$1''' Änderrungen}} voh da/dé {{PLURAL:$2|Stund| '''$2''' Stunden}}. Staund: $3, $4 Uar.",
'wlshowlast' => 'Zoag dé Änderrungen voh dé létzden $1 Stunden, $2 Dog óder $3 (in dé létzden 30 Dog).',
'watchlist-options' => 'Mei Beobochta: Optiona',
'undeletebtn' => 'Wiederherstön',
'undeletelink' => 'oschaugn / wiadaheastejn',
'undeleteviewlink' => 'oschaugn',
-'undeletedfiles' => '$1 {{plural:$1|Datei|Dateien}} san wieda hergstellt worn',
+'undeletedfiles' => '$1 {{PLURAL:$1|Datei|Dateien}} san wieda hergstellt worn',
'undelete-search-box' => 'Suach noch gléschde Seiten',
'undelete-search-submit' => 'Suach',
'undelete-show-file-submit' => 'Jo',
$messages = array(
# User preference toggles
'tog-underline' => ':لینکانآ خط کش',
-'tog-justify' => 'پاراگرافنآ همتراز کن',
'tog-hideminor' => 'هوردین تغییراتآ ته نوکین تغییرات پناه کن',
'tog-hidepatrolled' => 'ته نوکین تغییرات اصلاحاتی که گردگ بیتگن پناه کن',
'tog-newpageshidepatrolled' => 'پناه کتن صفحاتی که گردگ بوتگن چه لیست نوکین صفحه',
'tog-numberheadings' => 'اتوماتیک شماره کتن عناوین',
'tog-showtoolbar' => 'میله ابزار اصلاح پیش درا(جاوا)',
'tog-editondblclick' => 'صفحات گون دو کلیک اصلاح کن(جاوا)',
-'tog-editsection' => 'فعال کتن کسمت اصلاح از طریق لینکان [edit]',
'tog-editsectiononrightclick' => 'فعال کتن اصلاح کسمت گون کلیک راست اور کسمت عناوین(جاوا)',
-'tog-showtoc' => 'جدول محتوایء پیش دار( په صفحیانی که گیش چه 3 عنوانش هست)',
'tog-rememberpassword' => 'من ورود ته ای کامپیوتر هیال بکن (په $1 {{PLURAL:$1|روچ|روچ}})',
'tog-watchcreations' => 'هور کن منی صفحاتی که من ته لیست چارگ شرکتت',
'tog-watchdefault' => 'هورکن صفحاتی که من اصلاح کتن ته منی لیست چارگ',
'compareselectedversions' => 'مقایسه انتخاب بوتگین نسخه یان',
'showhideselectedversions' => 'نمایش/پنهان کتن نسخ انتخابی',
'editundo' => 'خنثی کتن',
-'diff-multi' => '({{PLURAL:$1|یک متوسطین بازبینیان میانی}} پیش دارگ نه بیت .)',
# Search results
'searchresults' => 'نتایج گردگ',
'rows' => 'ردیفآن«',
'columns' => 'ستونان:',
'searchresultshead' => 'گردگ',
-'resultsperpage' => 'کلیک ته هر صفحه:',
'stub-threshold' => 'سرحد په <a href="#" class="stub">چنڈ لینک</a> فرمت (بایت):',
'recentchangesdays' => 'روچ ان به پیش دارگ ته نوکیت تغییرات:',
'recentchangesdays-max' => '(حداکثر $1 {{PLURAL:$1|روچ|روچ}})',
'watchmethod-list' => 'کنترل صفحاتی که چارگ بنت په نوکین اصلاحات',
'watchlistcontains' => 'شمی لیست چارگ شامل $1 {{PLURAL:$1|صفحه|صفحات}}.',
'iteminvalidname' => "مشکل گون آیتم '$1', نامعتبر این نام",
-'wlnote' => "جهلء {{PLURAL:$1|آهرین تغییر هست|آهرین هست'''$1''' تغییرات}} ته آهرین {{PLURAL:$2|ساعت|'''$2''' ساعات}}.",
'wlshowlast' => 'پیش دار آهرین $1 ساعات $2 روچان $3',
'watchlist-options' => 'گزینه یان لیست چارگ',
'tooltip-pt-watchlist' => 'لیست صفحیانی که شما تغییرات آیانا رند گرگیت',
'tooltip-pt-mycontris' => 'لیست شمی مشارکتان',
'tooltip-pt-login' => 'شر ترنت که وارد بیت، بله شی اجبار نهنت',
-'tooltip-pt-anonlogin' => 'چه شما دست بندی بیت وارد بیت، بله شی هنگت ضرورت نهنت.',
'tooltip-pt-logout' => 'در بیگ',
'tooltip-ca-talk' => 'بحث دباره محتوای صفحه',
'tooltip-ca-edit' => 'شما تونیت ای صفحه یا اصلاح کنیت. لطفا چه بازبین دکمه پیش چه ذخیره کتن استفاده کنیت.',
$messages = array(
# User preference toggles
'tog-underline' => 'Linyahan an kilyawan:',
-'tog-justify' => 'Pantayón an mga talodtód',
'tog-hideminor' => 'Tagóon an mga saradít na paghirá sa nakakaági pa sanáng pagbabàgo',
'tog-hidepatrolled' => 'Tagóa an patrolyadong mga paghirá sa nakakaági pa sanáng pagbabàgo',
'tog-newpageshidepatrolled' => 'Tagóa an patrolyadong mga pahina gikan sa listahan kan bàgong pahina',
'tog-numberheadings' => 'Tolos-bilang na mga pamayohán',
'tog-showtoolbar' => 'Ipahiling an barang-gamit nin pagliwat',
'tog-editondblclick' => 'Liwaton an mga pahina sa pagdoble nin klik',
-'tog-editsection' => 'Paganaha an paghihirá kan seksyon sa paági kan [liwaton] na kilyawan',
'tog-editsectiononrightclick' => 'Paganaha an seksyon nin pagliliwat sa pag-klik kan mga titulo nin seksyon',
-'tog-showtoc' => 'Ihayag an taytayan nin mga laog (para sa mga pahinang igwang sobra sa 3 pamayohan)',
'tog-rememberpassword' => 'Giromdoma an sakong paglaóg sa kilyaw (browser) na ini (para sa maximum na $1 {{PLURAL:$1|aldaw|mga aldaw}})',
'tog-watchcreations' => 'Idagdag an mga pahina na ako an nagmukna asin an mga sagunson na ako an nagkarga sa sakong bantay-listahan',
'tog-watchdefault' => 'Idagdag an mga pahina asin mga sagunson na ako an nagliwat sa sakong bantay-listahan',
'invalid-content-data' => 'Imbalidong datos nin laman',
'content-not-allowed-here' => '"$1" na laman dae pinagtutugutan sa pahina [[$2]]',
'editwarning-warning' => 'Sa pagbaya kaining pahina magkakausa saimo na mawara an anuman na mga kaliwatan na saimong ginibo. Kun ika maglaog, mapuwede mong untukon ining patanid sa "Pagliliwat" na seksyon kan saimong mga kamuyahan.',
+'editpage-notsupportedcontentformat-title' => 'Kalamnan nin pormat bakong suportado',
+'editpage-notsupportedcontentformat-text' => 'An pormat nin kalamnan na $1 bakong suportado kan modelong kalamnan na $2.',
# Content models
'content-model-wikitext' => 'wiki-teksto',
'showhideselectedversions' => 'Ihayag/itago mga piniling pagbabago',
'editundo' => 'sulíton',
'diff-empty' => '(Mayong kalaenan)',
-'diff-multi' => '({{PLURAL:$1|Saro intermediate na pagbabago|$1 mga intermediate na mga pagbabago}} by {{PLURAL:$2|sarong paragamit|$2 mga paragamit}} dae pinaghahayag)',
'diff-multi-manyusers' => '({{PLURAL:$1|Sarong intermediate na pagbabago|$1 mga intermediate na mga pagbabago}} na sobra sa $2 {{PLURAL:$2|paragamit|mga paragamit}} dae pinaghahayag)',
'difference-missing-revision' => '{{PLURAL:$2|sarong rebisyon|$2 mga rebisyon}} kaining diperensiya ($1) {{PLURAL:$2|na iyo an|kaidto na iyo an}} dae nanagboan.
'rows' => 'Mga hilera:',
'columns' => 'Mga taytay:',
'searchresultshead' => 'Hanápon',
-'resultsperpage' => 'Mga tamà kada pahina:',
'stub-threshold' => 'Kasagkoran kan <a href="#" class="stub">takod kan tambô</a> pigpopormato:',
'stub-threshold-disabled' => 'Pinagpundo',
'recentchangesdays' => 'Mga aldáw na ipapahilíng sa mga nakakaági pa sanáng pagbabàgó:',
'recentchanges-label-bot' => 'Ining pagliwat pinaghimo bilang sarong bot',
'recentchanges-label-unpatrolled' => 'Ining pagliwat dae pa tabi pinagpatrolyahan',
'recentchanges-label-plusminus' => 'An kadakulaan nin pahina pinagliwat sa paagi kaining numero nin mga bayta',
+'recentchanges-legend-heading' => "'''Kabalaynan:'''",
'recentchanges-legend-newpage' => '(hilngon man [[Special:NewPages|listahan kan mga baguhong pahina]])',
'recentchanges-legend-plusminus' => "(''±saro-duwa-tolo'')",
'rcnotefrom' => "Sa ibaba iyo an mga kaliwatan poon kan '''$2''' (sagkod sa '''$1''' na ipinapahiling).",
'watchmethod-list' => 'Pigsososog an mga pigbabantayan na páhina para mahiling an mga kaaagi pa sanan paghirá',
'watchlistcontains' => 'An saimong lista nin pigbabantayan igwang $1 na {{PLURAL:$1|páhina|mga páhina}}.',
'iteminvalidname' => "May problema sa bagay na '$1', salâ an pangaran...",
-'wlnote' => "Sa ibaba an {{PLURAL:$1|huring pagbabago|mga huring '''$1''' pagbabago}} sa nakaaging {{PLURAL:$2|oras|'''$2''' mga oras}}, magpoon pa kan $3, $4.",
'wlshowlast' => 'Ipahilíng an nakaaging $1 na mga oras mga $2 na aldaw $3',
'watchlist-options' => 'Bantay-listahan na mga pagpipilian',
An pagpupura kan nasambit na mga pahina dae pinagtutugot tanganing maiwasan an aksidenteng pagka-antala kan {{SITENAME}}.',
'delete-warning-toobig' => 'Ining pahina igwa nin dakulaong historiya sa pagliwat, minasobrang $1 {{PLURAL:$1|rebisyon|mga rebisyon}}.
An pagpupura kaini mapuwedeng makapag-antala sa mga operasyon kan datos-sarayan kan {{SITENAME}}; magpadagos tabi na igwang pag-iingat.',
+'deleting-backlinks-warning' => "'''Patanid:''' An ibang mga pahina nakatakod sa pahina na muya mong pagpupuraon.",
# Rollback
'rollback' => 'Mga paghihira na pabalík',
'allmessages-prefix' => 'Pansara sa paagi kan enot-panigmit:',
'allmessages-language' => 'Lengguwahe:',
'allmessages-filter-submit' => 'Dumuman',
+'allmessages-filter-translate' => 'Idakit-taramon',
# Thumbnails
'thumbnail-more' => 'Padakuláon',
'tooltip-pt-watchlist' => 'Sarong listahan kan mga pahina na saimong inaantabayanan para sa mga kaliwatan',
'tooltip-pt-mycontris' => 'Sarong listahan kan saimong mga kontribusyon',
'tooltip-pt-login' => 'Ika inaagyat na maglaog; alagad, bako tabi ining piriritan',
-'tooltip-pt-anonlogin' => 'Pig-aagda kang maglaog, alagad, bakô man ining piriritan.',
'tooltip-pt-logout' => 'Magluwas',
'tooltip-ca-talk' => 'Orolayan dapit sa laog kan pahina',
'tooltip-ca-edit' => 'Ika makakaliwat kaining pahina. Tabi man gamiton an pindutan nin patanaw bago itatagama',
# Language selector for translatable SVGs
'img-lang-default' => '(panugmad na lengguwahe)',
-'img-lang-info' => 'Giboha ining imahe sa $1 $2.',
+'img-lang-info' => 'Giboha ining imahe sa $1. $2',
'img-lang-go' => 'Dumani',
# Table pager
'version-hook-name' => 'Ngaran kan pangawil',
'version-hook-subscribedby' => 'Pinaghaguhot ni',
'version-version' => '(Bersyon na $1)',
-'version-license' => 'Lisensiya',
+'version-license' => 'Lisensiya kan MediaWiki',
+'version-ext-license' => 'Lisensiya',
+'version-ext-colheader-name' => 'Ekstensyon',
+'version-ext-colheader-version' => 'Bersyon',
+'version-ext-colheader-license' => 'Lisensiya',
+'version-ext-colheader-description' => 'Deskripsyon',
+'version-ext-colheader-credits' => 'Mga Kagsurat',
+'version-license-title' => 'Lisensiya para sa $1',
+'version-license-not-found' => 'Mayong detalyadong impormasyon sa lisensiya an nanumpungan para sa ekstensyon na ini.',
'version-poweredby-credits' => "An wiking ini pinagpagana kan '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
'version-poweredby-others' => 'mga iba pa',
'version-poweredby-translators' => 'translatewiki.net na mga paradakit-taramon',
'version-entrypoints-header-url' => 'Kilyawan',
# Special:Redirect
-'redirect' => 'Palikwatong sa paagi nin sagunson, paragamit, or rebisyon kan ID',
+'redirect' => 'Palikwata sa paagi nin sagunson, paragamit, pahina o rebisyon kan ID',
'redirect-legend' => 'Palikwatong pasiring sa sarong sagunson o pahina',
-'redirect-summary' => 'Ining espesyal na pahina minalikwat pasiring sa sarong sagunson (ipinagtao an ngaran kan sagunson), sarong pahina (ipinagtao an sarong rebisyon kan ID), o sarong pahina nin paragamit (ipinagtao an numerikong ID nin paragamit). Pinaggamitan: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]], or [[{{#Special:Redirect}}/user/101]].',
+'redirect-summary' => 'Ining espesyal na pahina minalikwat pasiring sa sarong sagunson (ipinagtao an pangaran nin sagunson), sarong pahina (ipinagtao an sarong rebisyon nin ID o pahina nin ID), o sarong pahina nin paragamit (ipinagtao an numerikong ID nin paragamit). Pinagkagamitan: [[{{#Special:Redirect}}/sagunson/Example.jpg]], [[{{#Special:Redirect}}/rebisyon/328429]], or [[{{#Special:Redirect}}/paragamit/101]].',
'redirect-submit' => 'Dumani',
'redirect-lookup' => 'Hanapon mo',
'redirect-value' => 'Halaga:',
'redirect-user' => 'ID nin Paragamit',
+'redirect-page' => 'ID kan pahina',
'redirect-revision' => 'Rebisyon kan Pahina',
'redirect-file' => 'Ngaran nin Sagunson',
'redirect-not-exists' => 'Halaga dae nanagboan',
'api-error-overwrite' => 'An salambawan na sarong eksistido nang sagunson dae pinagtutugutan.',
'api-error-stashfailed' => 'Panlaog na kasalaan: An serbidor nagpalya sa pagsaray kan temporaryong sagunson.',
'api-error-publishfailed' => 'Panlaog na kasalaan: An serbidor nagpalya na ipublikar an temporaryong sagunson.',
+'api-error-stasherror' => 'Nagkaigwa nin kasalaan mantang ikinakarga an sagunson sa sarayan.',
'api-error-timeout' => 'An serbidor dae nakapagsimbag sa laog kan pinaghunang panahon.',
'api-error-unclassified' => 'May dae midbid na kasalaan an nangyari.',
'api-error-unknown-code' => 'Dae midbid na kasalaan: "$1".',
$messages = array(
# User preference toggles
'tog-underline' => 'Падкрэсліваць спасылкі:',
-'tog-justify' => 'Разганяць абзацы',
'tog-hideminor' => 'Не паказваць дробных правак',
'tog-hidepatrolled' => 'Без паказу ўхваленых правак у нядаўніх змяненнях',
'tog-newpageshidepatrolled' => 'Без паказу ўхваленых правак у пераліку новых старонак',
'tog-numberheadings' => 'Аўта-нумараваць падзагалоўкі',
'tog-showtoolbar' => 'Паказваць рэдактарскую стужку (Яваскрыпт)',
'tog-editondblclick' => 'Праўка старонак па падвойным пстрыку (Яваскрыпт)',
-'tog-editsection' => 'Праўка падраздзелаў праз спасылкі "[правіць]"',
'tog-editsectiononrightclick' => 'Праўка падраздзелаў па правым пстрыку на загалоўку (Яваскрыпт)',
-'tog-showtoc' => 'Паказваць змест (для старонак, дзе больш за 3 падзагалоўкі)',
'tog-rememberpassword' => 'Памятаць уваходныя даныя ў гэтым браўзеры (не даўжэй за $1 {{PLURAL:$1|дзень|дні|дзён}})',
'tog-watchcreations' => 'Дабаўляць створаныя мною старонкі і файлы ў мой спіс назірання',
'tog-watchdefault' => 'Дабаўляць старонкі і файлы пасля маіх правак у мой спіс назірання',
'compareselectedversions' => 'Параўнаць азначаныя версіі',
'showhideselectedversions' => 'Паказаць/схаваць выбраныя версіі',
'editundo' => 'адкат',
-'diff-multi' => '(не паказан{{PLURAL:$1|а адна прамежкавая версія|ы $1 прамежкавых версій}}, зроблен{{PLURAL:$2|ая ўдзельнікам|ыя $2 удзельнікамі}})',
'diff-multi-manyusers' => '({{PLURAL:$1|не паказана $1 прамежкавая версія|не паказаны $1 прамежкавыя версіі|не паказаны $1 прамежкавых версій}}, зробленыя больш чым {{PLURAL:$2|$1 удзельнікам|$2 удзельнікамі}})',
# Search results
'rows' => 'Радкі:',
'columns' => 'Калонкі:',
'searchresultshead' => 'Пошук',
-'resultsperpage' => 'Вынікаў на старонку:',
'stub-threshold' => 'Парог для паказу спасылкі <a href="#" class="stub">як на пачатковы артыкул</a> (у байтах):',
'stub-threshold-disabled' => 'Не ўключана',
'recentchangesdays' => 'За колькі дзён паказваць {{lc:{{:{{ns:mediawiki}}:recentchanges/be}}}}:',
'watchmethod-list' => 'правяраем наяўнасць нядаўніх правак ў назіраных старонках',
'watchlistcontains' => 'У вашым спісе назірання $1 {{PLURAL:$1|старонка|старонкі|старонак}}.',
'iteminvalidname' => "Праблема са складнікам '$1', недапушчальная назва...",
-'wlnote' => "Ніжэй {{PLURAL:$1|паказана апошняе $1 змена|паказаны апошнія $1 змены|паказаны апошнія $1 змен}} за {{PLURAL:$2|апошнюю|апошнія|апошнія}} '''$2''' {{plural:$2|гадзіну|гадзіны|гадзіны}}, на момант часу $3 $4.",
'wlshowlast' => 'Паказваць апошнія $1 гадз. $2 дзён $3',
'watchlist-options' => 'Магчымасці назірання',
'tooltip-pt-watchlist' => 'Пералік старонак, за змяненнямі ў якіх вы сочыце',
'tooltip-pt-mycontris' => 'Пералік вашага ўкладу',
'tooltip-pt-login' => 'Уваходзіць у сістэму неабавязкова, але вас вельмі запрашаюць гэтак зрабіць.',
-'tooltip-pt-anonlogin' => 'Вас запрашаюць уваходзіць у сістэму, хоць гэта і не абавязкова.',
'tooltip-pt-logout' => 'Выйсці з сістэмы',
'tooltip-ca-talk' => 'Размовы пра змест гэтай старонкі',
'tooltip-ca-edit' => 'Старонку можна правіць; ужывайце папярэдні паказ перад замацоўваннем.',
$messages = array(
# User preference toggles
'tog-underline' => 'Падкрэсьліваць спасылкі:',
-'tog-justify' => 'Выраўноўваць тэкст па шырыні старонкі',
-'tog-hideminor' => 'Хаваць дробныя зьмены ў сьпісе апошніх зьменаў',
-'tog-hidepatrolled' => 'Хаваць патруляваныя зьмены ў сьпісе апошніх зьменаў',
+'tog-hideminor' => 'Хаваць дробныя праўкі ў сьпісе апошніх зьменаў',
+'tog-hidepatrolled' => 'Хаваць патруляваныя праўкі ў сьпісе апошніх зьменаў',
'tog-newpageshidepatrolled' => 'Хаваць патруляваныя старонкі ў сьпісе новых старонак',
'tog-extendwatchlist' => 'Пашырыць сьпіс назіраньня, каб ён паказваў усе зьмены, а ня толькі апошнія',
'tog-usenewrc' => 'Групаваць зьмены па старонках у апошніх зьменах і сьпісе назіраньня',
'tog-numberheadings' => 'Аўтаматычная нумарацыя загалоўкаў',
'tog-showtoolbar' => 'Паказваць панэль інструмэнтаў рэдагаваньня',
-'tog-editondblclick' => 'Рэдагаваць старонкі па падвойным пстрыку',
-'tog-editsection' => 'Дазволіць рэдагаваньне асобных сэкцыяў па спасылках [рэдагаваць]',
-'tog-editsectiononrightclick' => 'Рэдагаваць сэкцыі па правым пстрыку на загалоўку',
-'tog-showtoc' => 'Паказваць зьмест (для старонак з больш як 3 разьдзеламі)',
+'tog-editondblclick' => 'Рэдагаваць старонкі па падвойным націсканьні',
+'tog-editsectiononrightclick' => 'Рэдагаваць сэкцыі па націсканьні правай кнопкі мышы на загалоўку',
'tog-rememberpassword' => 'Запомніць мяне ў гэтым браўзэры (ня больш за $1 {{PLURAL:$1|дзень|дні|дзён}})',
'tog-watchcreations' => 'Дадаваць у мой сьпіс назіраньня створаныя мной старонкі і загружаныя файлы',
-'tog-watchdefault' => 'Дадаваць у мой сьпіс назіраньня старонкі і файлы, якія я рэдагаваў',
+'tog-watchdefault' => 'Дадаваць у мой сьпіс назіраньня старонкі і файлы, якія я {{GENDER:|рэдагаваў|рэдагавала}}',
'tog-watchmoves' => 'Дадаваць у мой сьпіс назіраньня перанесеныя мною старонкі і файлы',
'tog-watchdeletion' => 'Дадаваць у мой сьпіс назіраньня старонкі і файлы, якія я выдаляю',
-'tog-minordefault' => 'Ð\9fа змоÑ\9eÑ\87анÑ\8cнÑ\96 пазнаÑ\87аÑ\86Ñ\8c Ñ\83Ñ\81е зÑ\8cменÑ\8b дробнымі',
+'tog-minordefault' => 'Ð\9fа змоÑ\9eÑ\87анÑ\8cнÑ\96 пазнаÑ\87аÑ\86Ñ\8c Ñ\83Ñ\81е мае пÑ\80аÑ\9eкÑ\96 дробнымі',
'tog-previewontop' => 'Паказваць папярэдні прагляд старонкі над полем рэдагаваньня',
'tog-previewonfirst' => 'Папярэдні прагляд пры першым рэдагаваньні',
'tog-enotifwatchlistpages' => 'Паведамляць мне праз электронную пошту пра зьмены старонак і файлаў у маім сьпісе назіраньня',
'subcategories' => 'Падкатэгорыі',
'category-media-header' => 'Файлы ў катэгорыі «$1»',
'category-empty' => "''Гэтая катэгорыя ня ўтрымлівае ні старонак, ні файлаў.''",
-'hidden-categories' => '{{PLURAL:$1|Схаваная катэгорыя|Схаваныя катэгорыі}}',
+'hidden-categories' => '{{PLURAL:$1|1=Схаваная катэгорыя|Схаваныя катэгорыі}}',
'hidden-category-category' => 'Схаваныя катэгорыі',
'category-subcat-count' => '{{PLURAL:$2|Гэтая катэгорыя зьмяшчае наступную падкатэгорыю.|Гэтая катэгорыя зьмяшчае {{PLURAL:$1|наступную $1 падкатэгорыю|наступныя $1 падкатэгорыі|наступныя $1 падкатэгорыяў}} з $2 агулам.}}',
'category-subcat-count-limited' => 'У гэтай катэгорыі $1 {{PLURAL:$1|падкатэгорыя|падкатэгорыі|падкатэгорыяў}}.',
-'category-article-count' => '{{PLURAL:$2|Гэтая катэгорыя ўтрымлівае толькі адну старонку.|{{PLURAL:$1|Паказаная $1 старонка|Паказаныя $1 старонкі|Паказаныя $1 старонак}} гэтай катэгорыі з $2.}}',
+'category-article-count' => '{{PLURAL:$2|1=Гэтая катэгорыя ўтрымлівае толькі адну старонку.|{{PLURAL:$1|Паказаная $1 старонка|Паказаныя $1 старонкі|Паказаныя $1 старонак}} гэтай катэгорыі з $2.}}',
'category-article-count-limited' => 'У гэтай катэгорыі $1 {{PLURAL:$1|старонка|старонкі|старонак}}.',
-'category-file-count' => '{{PLURAL:$2|Гэтая катэгорыя ўтрымлівае толькі адзін файл.|{{PLURAL:$1|Паказаны $1 файл|Паказаныя $1 файлы|Паказаныя $1 файлаў}} гэтай катэгорыі з $2.}}',
+'category-file-count' => '{{PLURAL:$2|1=Гэтая катэгорыя ўтрымлівае толькі адзін файл.|{{PLURAL:$1|Паказаны $1 файл|Паказаныя $1 файлы|Паказаныя $1 файлаў}} гэтай катэгорыі з $2.}}',
'category-file-count-limited' => 'У гэтай катэгорыі $1 {{PLURAL:$1|файл|файлы|файлаў}}.',
'listingcontinuesabbrev' => ' (працяг)',
'index-category' => 'Індэксаваныя старонкі',
'badaccess' => 'Памылка доступу',
'badaccess-group0' => 'Вам не дазволена выканаць запытанае Вамі дзеяньне.',
-'badaccess-groups' => 'Запытанае Вамі дзеяньне дазволенае толькі ўдзельнікам {{PLURAL:$2|з групы|адной з групаў:}} $1.',
+'badaccess-groups' => 'Запытанае Вамі дзеяньне дазволенае толькі ўдзельнікам {{PLURAL:$2|1=з групы|адной з групаў:}} $1.',
'versionrequired' => 'Патрабуецца MediaWiki вэрсіі $1',
'versionrequiredtext' => 'Для карыстаньня гэтай старонкай патрабуецца MediaWiki вэрсіі $1.
'pagetitle' => '$1 — {{SITENAME}}',
'retrievedfrom' => 'Атрымана з «$1»',
'youhavenewmessages' => 'Вы атрымалі $1 ($2).',
-'youhavenewmessagesfromusers' => 'Вы атрымалі $1 ад {{PLURAL:$3|іншага ўдзельніка|$3 удзельнікаў}} ($2).',
+'youhavenewmessagesfromusers' => '{{PLURAL:$4|Вы}} атрымалі $1 ад {{PLURAL:$3|1=іншага ўдзельніка|$3 удзельнікаў}} ($2).',
'youhavenewmessagesmanyusers' => 'Вы атрымалі $1 ад некалькіх удзельнікаў ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|новае паведамленьне|999=новыя паведамленьні}}',
-'newmessagesdifflinkplural' => '{{PLURAL:$1|апошняя зьмена|999=апошнія зьмены}}',
+'newmessageslinkplural' => '{{PLURAL:$1|1=новае паведамленьне|999=новыя паведамленьні}}',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|1=апошняя зьмена|999=апошнія зьмены}}',
'youhavenewmessagesmulti' => 'Вы атрымалі новыя паведамленьні на $1',
'editsection' => 'рэдагаваць',
'editold' => 'рэдагаваць',
'badtitle' => 'Няслушная назва',
'badtitletext' => 'Запытаная назва старонкі няслушная ці пустая, альбо няслушна ўказаная міжмоўная ці інтэрвікі-назва. Яна можа ўтрымліваць сымбалі, якія нельга ўжываць у назвах.',
'perfcached' => 'Наступныя зьвесткі кэшаваныя і могуць быць састарэлымі. У кэшы {{PLURAL:$1|даступны|даступныя}} ня больш за $1 {{PLURAL:$1|вынік|вынікі|вынікаў}}.',
-'perfcachedts' => 'Наступныя зьвесткі кэшаваныя і апошні раз былі абноўленыя $1. У кэшы {{PLURAL:$4|даступны|даступныя}} ня больш за $4 {{PLURAL:$4|вынік|вынікі|вынікаў}}.',
+'perfcachedts' => 'Наступныя зьвесткі кэшаваныя і апошні раз былі абноўленыя $1. У кэшы {{PLURAL:$4|даступны|даступныя}} ня больш за $4 {{PLURAL:$4|вынік|вынікаў|вынікі}}.',
'querypage-no-updates' => 'Абнаўленьні гэтай старонкі цяпер адключаныя. Зьвесткі ня будуць абнаўляцца.',
'viewsource' => 'Паказаць крыніцу',
'viewsource-title' => 'Прагляд крыніцы для $1',
'editinginterface' => "'''Увага:''' Вы рэдагуеце старонку, якая ўтрымлівае сыстэмнае паведамленьне MediaWiki.
Яе зьмена паўплывае на вонкавы выгляд інтэрфэйсу іншых удзельнікаў у гэтай вікі.
Каб дадаць ці зьмяніць пераклад ва ўсіх праектах, зьвярніцеся на [//translatewiki.net/wiki/Main_Page?setlang=be-tarask translatewiki.net] — праект для лякалізацыі MediaWiki.",
-'cascadeprotected' => 'Гэтая старонка абароненая ад рэдагаваньня, таму што яна ўключаная ў {{PLURAL:$1|наступную старонку, якая была абароненая|наступныя старонкі, якія былі абароненыя}} з актывізаванай опцыяй «каскаднай абароны»:
+'cascadeprotected' => 'Гэтая старонка абароненая ад рэдагаваньня, таму што яна ўключаная ў {{PLURAL:$1|1=наступную старонку, якая была абароненая|наступныя старонкі, якія былі абароненыя}} з актывізаванай опцыяй «каскаднай абароны»:
$2',
'namespaceprotected' => "Вы ня маеце правоў на рэдагаваньне старонак у прасторы назваў '''$1'''.",
'customcssprotected' => 'Вы ня маеце правоў на рэдагаваньне гэтай CSS-старонкі, таму што яна ўтрымлівае пэрсанальныя налады іншага ўдзельніка.',
'passwordtooshort' => 'Паролі павінны ўтрымліваць ня менш за $1 {{PLURAL:$1|сымбаль|сымбалі|сымбаляў}}.',
'password-name-match' => 'Ваш пароль павінен адрозьнівацца ад Вашага імя ўдзельніка.',
'password-login-forbidden' => 'Выкарыстаньне гэтага імя ўдзельніка і пароля было забароненае.',
-'mailmypassword' => 'Ð\94аÑ\81лаÑ\86Ñ\8c новÑ\8b паÑ\80олÑ\8c па Ñ\8dлекÑ\82Ñ\80оннай поÑ\88Ñ\86е',
+'mailmypassword' => 'СкÑ\96нÑ\83Ñ\86Ñ\8c паÑ\80олÑ\8c',
'passwordremindertitle' => 'Новы часовы пароль для {{GRAMMAR:родны|{{SITENAME}}}}',
'passwordremindertext' => 'Нехта (магчыма Вы, з IP-адрасу $1) запытаў нас даслаць новы пароль для {{GRAMMAR:родны|{{SITENAME}}}} ($4). Для ўдзельніка «$2» быў створаны часовы пароль і ён цяпер «$3». Калі гэта была Вашая ініцыятыва, Вам трэба ўвайсьці ў сыстэму і адразу зьмяніць пароль. Тэрмін дзеяньня Вашага часовага паролю — $5 {{PLURAL:$5|дзень|дні|дзён}}.
У выніку, наведвальнікі, якія карыстаюцца гэтым ІР-адрасам, ня могуць стварыць зараз болей рахункаў.',
'emailauthenticated' => 'Ваш адрас электроннай пошты быў пацьверджаны $2 у $3.',
'emailnotauthenticated' => 'Ваш адрас электроннай пошты яшчэ не пацьверджаны.
-ÐлекÑ\82Ñ\80оннаÑ\8f поÑ\88Ñ\82а длÑ\8f наÑ\81Ñ\82Ñ\83пнÑ\8bÑ\85 магÑ\87Ñ\8bмаÑ\81Ñ\8cÑ\86Ñ\8fÑ\9e даÑ\81Ñ\8bлаÑ\86Ñ\86а нÑ\8f бÑ\83дзе.',
+Ð\9bÑ\96Ñ\81Ñ\82Ñ\8b Ñ\8dлекÑ\82Ñ\80оннай поÑ\88Ñ\82ай длÑ\8f наÑ\81Ñ\82Ñ\83пнÑ\8bÑ\85 магÑ\87Ñ\8bмаÑ\81Ñ\8cÑ\86Ñ\8fÑ\9e даÑ\81Ñ\8bлаÑ\86Ñ\86а нÑ\8f бÑ\83дÑ\83Ñ\86Ñ\8c.',
'noemailprefs' => 'Пазначце адрас электроннай пошты ў Вашых наладах, каб актывізаваць гэтыя магчымасьці.',
'emailconfirmlink' => 'Пацьвердзіць Ваш адрас электроннай пошты',
'invalidemailaddress' => 'Уведзены адрас электроннай пошты не адпавядае фармату адрасоў электроннай пошты.
'retypenew' => 'Паўтарыце новы пароль:',
'resetpass_submit' => 'Наставіць пароль і увайсьці',
'changepassword-success' => 'Ваш пароль быў пасьпяхова зьменены!',
+'changepassword-throttled' => 'Вы зрабілі зашмат спробаў увайсьці ў сыстэму.
+Калі ласка, пачакайце $1 перад наступнай спробай.',
'resetpass_forbidden' => 'Пароль ня можа быць зьменены',
'resetpass-no-info' => 'Для непасрэднага доступу да гэтай старонкі Вам неабходна ўвайсьці ў сыстэму.',
'resetpass-submit-loggedin' => 'Зьмяніць пароль',
# Special:PasswordReset
'passwordreset' => 'Ачыстка паролю',
'passwordreset-text-one' => 'Запоўніце гэтую форму, каб скінуць пароль.',
-'passwordreset-text-many' => '{{PLURAL:$1|Ð\97апоÑ\9eнÑ\96Ñ\86е адно з гÑ\8dÑ\82Ñ\8bÑ\85 палÑ\91Ñ\9e, каб Ñ\81кÑ\96нÑ\83Ñ\86Ñ\8c паÑ\80олÑ\8c.}}',
+'passwordreset-text-many' => '{{PLURAL:$1|Ð\97апоÑ\9eнÑ\96Ñ\86е адно з палÑ\91Ñ\9e, каб аÑ\82Ñ\80Ñ\8bмаÑ\86Ñ\8c Ñ\87аÑ\81овÑ\8b паÑ\80олÑ\8c пÑ\80аз Ñ\8dлекÑ\82Ñ\80оннÑ\83Ñ\8e поÑ\88Ñ\82Ñ\83.}}',
'passwordreset-legend' => 'Ачысьціць пароль',
'passwordreset-disabled' => 'Магчымасьць ачысткі паролю была забароненая ў {{GRAMMAR:месны|{{SITENAME}}}}.',
'passwordreset-emaildisabled' => 'Функцыі e-mail у гэтай вікі былі адключаныя.',
'passwordreset-capture-help' => 'Калі Вы пазначыце гэтае поле, электронны ліст (з часовым паролем), будзе паказаны Вам як толькі ён будзе дасланы ўдзельніку.',
'passwordreset-email' => 'Адрас электроннай пошты:',
'passwordreset-emailtitle' => 'Падрабязнасьці рахунку ў {{GRAMMAR:месны|{{SITENAME}}}}',
-'passwordreset-emailtext-ip' => 'Нехта (магчыма Вы, з IP-адрасу $1) зрабіў запыт на вашага паролю ў {{GRAMMAR:месны|{{SITENAME}}}} ($4). {{PLURAL:$3|Наступны рахунак удзельніка зьвязаны|Наступныя рахункі ўдзельнікаў зьвязаныя}} з гэтым адрасам электроннай пошты:
+'passwordreset-emailtext-ip' => 'Нехта (магчыма Вы, з IP-адрасу $1) зрабіў запыт на скіданьне вашага паролю ў {{GRAMMAR:месны|{{SITENAME}}}} ($4). {{PLURAL:$3|1=Наступны рахунак удзельніка зьвязаны|Наступныя рахункі ўдзельнікаў зьвязаныя}} з гэтым адрасам электроннай пошты:
$2
-{{PLURAL:$3|Гэты часовы пароль будзе|Гэтыя часовыя паролі будуць}} дзейнічаць $5 {{PLURAL:|дзень|дні|дзён}}.
-Цяпер Вам неабходна ўвайсьці і выбраць новы пароль. Калі нехта іншы зрабіў гэты запыт,
-ці Вы ўспомнілі Ваш пачатковы пароль, які ня хочаце мяняць,
-Вы можаце праігнараваць гэтае паведамленьне, і працягваць выкарыстоўваць стары пароль.',
-'passwordreset-emailtext-user' => 'Удзельнік $1 зрабіў запыт на скіданьне вашага паролю ў {{GRAMMAR:месны|{{SITENAME}}}} ($4). {{PLURAL:$3|Наступны рахунак удзельніка зьвязаны|Наступныя рахункі ўдзельнікаў зьвязаныя}} з гэтым адрасам электроннай пошты:
+{{PLURAL:$3|1=Гэты часовы пароль будзе|Гэтыя часовыя паролі будуць}} дзейнічаць $5 {{PLURAL:$5|дзень|дні|дзён}}.
+Цяпер Вам неабходна ўвайсьці і выбраць новы пароль. Калі нехта іншы зрабіў гэты запыт, ці Вы ўспомнілі Ваш пачатковы пароль, які ня хочаце мяняць, Вы можаце праігнараваць гэтае паведамленьне, і працягваць выкарыстоўваць стары пароль.',
+'passwordreset-emailtext-user' => 'Удзельнік $1 зрабіў запыт на скіданьне вашага паролю ў {{GRAMMAR:месны|{{SITENAME}}}} ($4). {{PLURAL:$3|1=Наступны рахунак удзельніка зьвязаны|Наступныя рахункі ўдзельнікаў зьвязаныя}} з гэтым адрасам электроннай пошты:
$2
-{{PLURAL:$3|Гэты часовы пароль будзе|Гэтыя часовыя паролі будуць}} дзейнічаць $5 {{PLURAL:|дзень|дні|дзён}}.
-Цяпер Вам неабходна ўвайсьці і выбраць новы пароль. Калі нехта іншы зрабіў гэты запыт,
-ці Вы ўспомнілі Ваш пачатковы пароль, які ня хочаце мяняць,
-Вы можаце праігнараваць гэтае паведамленьне, і працягваць выкарыстоўваць стары пароль.',
+{{PLURAL:$3|1=Гэты часовы пароль будзе|Гэтыя часовыя паролі будуць}} дзейнічаць $5 {{PLURAL:$5|дзень|дні|дзён}}.
+Цяпер Вам неабходна ўвайсьці і выбраць новы пароль. Калі нехта іншы зрабіў гэты запыт, ці Вы ўспомнілі Ваш пачатковы пароль, які ня хочаце мяняць, Вы можаце праігнараваць гэтае паведамленьне, і працягваць выкарыстоўваць стары пароль.',
'passwordreset-emailelement' => 'Імя ўдзельніка: $1
Часовы пароль: $2',
'passwordreset-emailsent' => 'Ліст пра скіданьне паролю быў дасланы.',
'changeemail-password' => 'Ваш пароль у {{GRAMMAR:месны|{{SITENAME}}}}:',
'changeemail-submit' => 'Зьмяніць адрас электроннай пошты',
'changeemail-cancel' => 'Скасаваць',
+'changeemail-throttled' => 'Вы зрабілі зашмат спробаў увайсьці ў сыстэму.
+Калі ласка, пачакайце $1 перад наступнай спробай.',
# Special:ResetTokens
'resettokens' => 'Скідваньне токенаў',
Апошні запіс з журнала пададзены ніжэй для даведкі:",
'semiprotectedpagewarning' => "'''Заўвага:''' Гэтая старонка была абароненая, і рэдагаваць яе могуць толькі зарэгістраваныя ўдзельнікі.
Апошні запіс з журнала пададзены ніжэй для даведкі:",
-'cascadeprotectedwarning' => "'''Ð\9fапÑ\8fÑ\80Ñ\8dджанÑ\8cне:''' Ð\93Ñ\8dÑ\82аÑ\8f Ñ\81Ñ\82аÑ\80онка абаÑ\80оненаÑ\8f, Ñ\82олÑ\8cкÑ\96 Ñ\9eдзелÑ\8cнÑ\96кÑ\96 з пÑ\80авамÑ\96 адмÑ\96нÑ\96Ñ\81Ñ\82Ñ\80аÑ\82аÑ\80аÑ\9e могÑ\83Ñ\86Ñ\8c Ñ\80Ñ\8dдагаваÑ\86Ñ\8c Ñ\8fе, Ñ\82амÑ\83 Ñ\88Ñ\82о Ñ\8fна Ñ\9eклÑ\8eÑ\87анаÑ\8f Ñ\9e {{PLURAL:$1|наÑ\81Ñ\82Ñ\83пнÑ\83Ñ\8e каÑ\81кадна-абаÑ\80оненÑ\83Ñ\8e Ñ\81Ñ\82аÑ\80онкÑ\83|наÑ\81Ñ\82Ñ\83пнÑ\8bÑ\8f каÑ\81кадна-абаÑ\80оненÑ\8bÑ\8f Ñ\81Ñ\82аÑ\80онкÑ\96}}:",
+'cascadeprotectedwarning' => "'''Ð\9fапÑ\8fÑ\80Ñ\8dджанÑ\8cне:''' гÑ\8dÑ\82аÑ\8f Ñ\81Ñ\82аÑ\80онка абаÑ\80оненаÑ\8f, Ñ\82олÑ\8cкÑ\96 Ñ\9eдзелÑ\8cнÑ\96кÑ\96 з пÑ\80авамÑ\96 адмÑ\96нÑ\96Ñ\81Ñ\82Ñ\80аÑ\82аÑ\80аÑ\9e могÑ\83Ñ\86Ñ\8c Ñ\80Ñ\8dдагаваÑ\86Ñ\8c Ñ\8fе, Ñ\82амÑ\83 Ñ\88Ñ\82о Ñ\8fна Ñ\9eклÑ\8eÑ\87анаÑ\8f Ñ\9e {{PLURAL:$1|1=наÑ\81Ñ\82Ñ\83пнÑ\83Ñ\8e Ñ\81Ñ\82аÑ\80онкÑ\83|наÑ\81Ñ\82Ñ\83пнÑ\8bÑ\8f Ñ\81Ñ\82аÑ\80онкÑ\96}} з каÑ\81каднай абаÑ\80онай:",
'titleprotectedwarning' => "'''Папярэджаньне: гэтая старонка была абароненая і для яе стварэньня патрабуюцца [[Special:ListGroupRights|адпаведныя правы]].'''
Апошні запіс з журнала пададзены ніжэй для даведкі:",
-'templatesused' => 'На гэтай старонцы {{PLURAL:$1|выкарыстаны наступны шаблён|выкарыстаныя наступныя шаблёны}}:',
-'templatesusedpreview' => 'У гэтым папярэднім праглядзе {{PLURAL:$1|выкарыстаны наступны шаблён|выкарыстаныя наступныя шаблёны}}:',
-'templatesusedsection' => 'У гэтай сэкцыі {{PLURAL:$1|выкарыстаны наступны шаблён|выкарыстаныя наступныя шаблёны}}:',
+'templatesused' => '{{PLURAL:$1|Шаблён, які ўжываецца|Шаблёны, якія ўжываюцца}} на гэтай старонцы:',
+'templatesusedpreview' => 'У гэтым папярэднім праглядзе {{PLURAL:$1|1=выкарыстаны наступны шаблён|выкарыстаныя наступныя шаблёны}}:',
+'templatesusedsection' => 'У гэтай сэкцыі {{PLURAL:$1|1=выкарыстаны наступны шаблён|выкарыстаныя наступныя шаблёны}}:',
'template-protected' => '(абаронены)',
'template-semiprotected' => '(часткова абароненая)',
'hiddencategories' => 'Гэтая старонка належыць да $1 {{PLURAL:$1|схаванай катэгорыі|схаваных катэгорыяў}}:',
'sectioneditnotsupported-title' => 'Рэдагаваньне сэкцыяў не падтрымліваецца',
'sectioneditnotsupported-text' => 'Рэдагаваньне сэкцыяў не падтрымліваецца ў гэтай старонцы рэдагаваньня',
'permissionserrors' => 'Памылка дазволу',
-'permissionserrorstext' => 'Ð\92Ñ\8b нÑ\8f маеÑ\86е дазволÑ\83 на гÑ\8dÑ\82ае дзеÑ\8fнÑ\8cне па {{PLURAL:$1|наÑ\81Ñ\82Ñ\83пнай пÑ\80Ñ\8bÑ\87Ñ\8bне|наÑ\81Ñ\82Ñ\83пнÑ\8bÑ\85 пÑ\80Ñ\8bÑ\87Ñ\8bнаÑ\85}}:',
-'permissionserrorstext-withaction' => 'Ð\92Ñ\8b нÑ\8f маеÑ\86е дазволÑ\83 на $2 па {{PLURAL:$1|наÑ\81Ñ\82Ñ\83пнай пÑ\80Ñ\8bÑ\87Ñ\8bне|наÑ\81Ñ\82Ñ\83пнÑ\8bÑ\85 пÑ\80Ñ\8bÑ\87Ñ\8bнаÑ\85}}:',
+'permissionserrorstext' => 'Ð\92Ñ\8b нÑ\8f маеÑ\86е дазволÑ\83 на гÑ\8dÑ\82ае дзеÑ\8fнÑ\8cне з {{PLURAL:$1|1=наÑ\81Ñ\82Ñ\83пнай пÑ\80Ñ\8bÑ\87Ñ\8bнÑ\8b|наÑ\81Ñ\82Ñ\83пнÑ\8bÑ\85 пÑ\80Ñ\8bÑ\87Ñ\8bнаÑ\9e}}:',
+'permissionserrorstext-withaction' => 'Ð\92Ñ\8b нÑ\8f маеÑ\86е дазволÑ\83 на $2 з {{PLURAL:$1|1=наÑ\81Ñ\82Ñ\83пнай пÑ\80Ñ\8bÑ\87Ñ\8bнÑ\8b|наÑ\81Ñ\82Ñ\83пнÑ\8bÑ\85 пÑ\80Ñ\8bÑ\87Ñ\8bнаÑ\9e}}:',
'recreate-moveddeleted-warn' => "'''Увага: Вы ствараеце старонку, якая раней была выдаленая.'''
Упэўніцеся, што стварэньне гэтай старонкі неабходнае.
'invalid-content-data' => 'Няслушныя зьвесткі',
'content-not-allowed-here' => 'Зьмест тыпу «$1» на старонцы [[$2]] не дазволены',
'editwarning-warning' => 'Пакінуўшы гэтую старонку, вы можаце страціць усе ўнесеныя зьмены.
-Калі вы ўвайшлі ў сыстэму, Вы можаце адключыць гэтае папярэджаньне ў сэкцыі «Рэдагаваньне» вашых наладаў.',
+Калі вы ўвайшлі ў сыстэму, Вы можаце адключыць гэтае папярэджаньне ў сэкцыі «{{int:prefs-editing}}» вашых наладаў.',
+'editpage-notsupportedcontentformat-title' => 'Фармат зьмесьціва не падтрымліваецца',
+'editpage-notsupportedcontentformat-text' => 'Фармат зьмесьціва $1 не падтрымліваецца мадэльлю зьмесьціва $2.',
# Content models
'content-model-wikitext' => 'вікі-тэкст',
'cantcreateaccount-text' => "Стварэньне рахункаў з гэтага IP-адрасу ('''$1''') было заблякаванае [[User:$3|$3]].
Прычына блякаваньня пададзеная $3: ''$2''",
+'cantcreateaccount-range-text' => "Стварэньне рахункаў з IP-адрасоў у дыяпазоне '''$1''', у які ўваходзіць ваш IP-адрас ('''$4'''), было забароненае {{GENDER:$3|ўдзельнікам|ўдзельніцай}} [[User:$3|$3]].
+
+{{GENDER:$3|Удзельнікам|Удзельніцай}} $3 была пададзеная наступная прычына: ''$2''.",
# History pages
'viewpagelogs' => 'Паказаць журналы падзеяў для гэтай старонкі',
'revdelete-no-file' => 'Пазначаны файл не існуе.',
'revdelete-show-file-confirm' => 'Вы ўпэўненыя, што жадаеце паглядзець выдаленую вэрсію файла «<nowiki>$1</nowiki>» ад $2 $3?',
'revdelete-show-file-submit' => 'Так',
-'revdelete-selected' => "'''{{PLURAL:$2|Выбраная вэрсія|Выбраныя вэрсіі}} старонкі [[:$1]]:'''",
-'logdelete-selected' => "'''{{PLURAL:$1|Выбраны запіс|Выбраныя запісы}} журнала падзеяў:'''",
+'revdelete-selected' => "'''{{PLURAL:$2|1=Выбраная вэрсія|Выбраныя вэрсіі}} старонкі [[:$1]]:'''",
+'logdelete-selected' => "'''{{PLURAL:$1|1=Выбраны запіс|Выбраныя запісы}} журнала:'''",
'revdelete-text' => "'''Выдаленыя вэрсіі і падзеі будуць паказвацца ў гісторыі старонкі і журналах, але частка іх зьместу ня будзе даступная для звычайных удзельнікаў.'''
Іншыя адміністратары {{GRAMMAR:родны|{{SITENAME}}}} будуць мець магчымасьць прагляду зьместу і аднаўленьня старонкі праз гэты інтэрфэйс, калі ня будуць уведзеныя дадатковыя абмежаваньні.",
'revdelete-confirm' => 'Калі ласка, пацьвердзіце, што Вы сапраўды жадаеце зрабіць гэта, разумееце наступствы і робіце гэта ў адпаведнасьці з [[{{MediaWiki:Policy-url}}|правіламі]].',
-'revdelete-suppress-text' => "Схаваньні могуць выкарыстоўвацца '''толькі''' ў наступных выпадках:
-* Раскрыцьцё асабістых зьвестак
-*: ''хатнія адрасы, тэлефонныя нумары, нумары пашпартоў і г.д.''",
+'revdelete-suppress-text' => "Скрываньне можа выкарыстоўвацца '''толькі''' ў наступных выпадках:
+* патэнцыйна паклёпніцкая інфармацыя
+* раскрыцьцё асабістых зьвестак
+*: ''хатнія адрасы, тэлефонныя нумары, нумары пашпартоў і г. д.''",
'revdelete-legend' => 'Усталяваць абмежаваньні бачнасьці',
-'revdelete-hide-text' => 'СÑ\85аваÑ\86Ñ\8c Ñ\82экст вэрсіі',
+'revdelete-hide-text' => 'Тэкст вэрсіі',
'revdelete-hide-image' => 'Схаваць зьмест файла',
'revdelete-hide-name' => 'Схаваць дзеяньне і мэту',
-'revdelete-hide-comment' => 'СÑ\85аваÑ\86Ñ\8c каÑ\80оÑ\82кае апісаньне зьменаў',
-'revdelete-hide-user' => 'СÑ\85аваÑ\86Ñ\8c Ñ\96мÑ\8f/IP-адÑ\80аÑ\81 Ñ\83дзелÑ\8cнÑ\96ка',
+'revdelete-hide-comment' => 'Ð\90пісаньне зьменаў',
+'revdelete-hide-user' => 'Ð\86мÑ\8f Ñ\9eдзелÑ\8cнÑ\96ка/IP-адÑ\80аÑ\81',
'revdelete-hide-restricted' => 'Ужываць гэтыя абмежаваньні таксама і для адміністратараў',
'revdelete-radio-same' => '(не зьмяняць)',
-'revdelete-radio-set' => 'Так',
-'revdelete-radio-unset' => 'Ð\9dе',
+'revdelete-radio-set' => 'СÑ\85аваÑ\86Ñ\8c',
+'revdelete-radio-unset' => 'Ð\9fаказаÑ\86Ñ\8c',
'revdelete-suppress' => 'Схаваць зьвесткі ад адміністратараў як і ад іншых удзельнікаў',
'revdelete-unsuppress' => 'Зьняць абмежаваньні з адноўленых вэрсіяў',
'revdelete-log' => 'Прычына:',
-'revdelete-submit' => 'Ужыць для {{PLURAL:$1|выбранай вэрсіі|выбраных вэрсіяў}}',
+'revdelete-submit' => 'Ужыць для {{PLURAL:$1|1=выбранай вэрсіі|выбраных вэрсіяў}}',
'revdelete-success' => "'''Бачнасьць вэрсіі пасьпяхова абноўленая.'''",
'revdelete-failure' => "'''Немагчыма абнавіць бачнасьць вэрсіі:'''
$1",
'showhideselectedversions' => 'Паказаць/схаваць вызначаныя вэрсіі',
'editundo' => 'скасаваць',
'diff-empty' => '(Розьніцы няма)',
-'diff-multi' => '($1 {{PLURAL:$1|прамежная вэрсія|прамежныя вэрсіі|прамежных вэрсіяў}} $2 {{PLURAL:$2|удзельніка|удзельнікаў|удзельнікаў}} {{PLURAL:$1|не паказаная|не паказаныя|не паказаныя}})',
+'diff-multi-sameuser' => '(не {{PLURAL:$1|паказаная $1 прамежная вэрсія|паказаныя $1 прамежныя вэрсіі|паказаныя $1 прамежных вэрсіяў}} аўтарства таго ж удзельніка)',
+'diff-multi-otherusers' => '(не {{PLURAL:$1|паказаная $1 прамежная вэрсія|паказаныя $1 прамежныя вэрсіі|паказаныя $1 прамежных вэрсіяў}} аўтарства {{PLURAL:$2|1=яшчэ аднаго ўдзельніка|$2 удзельнікаў}})',
'diff-multi-manyusers' => '($1 {{PLURAL:$1|прамежная вэрсія|прамежныя вэрсіі|прамежных вэрсіяў}} $2 {{PLURAL:$2|удзельніка|удзельнікаў|удзельнікаў}} {{PLURAL:$1|не паказаная|не паказаныя|не паказаныя}})',
-'difference-missing-revision' => '{{PLURAL:$2|Адна вэрсія|$2 вэрсіі}} з гэтымі адрозьненьнямі ($1) {{PLURAL:$2|не была|не былі}} знойдзеныя.
+'difference-missing-revision' => '{{PLURAL:$2|$2 вэрсія|$2 вэрсіі|$2 вэрсіяў}} з гэтымі адрозьненьнямі ($1) {{PLURAL:$2|не была|не былі}} знойдзеныя.
-Звычайна гэта здараецца з-за перахода па састарэлай спасылцы на старонку, якая была выдаленая.
+Звычайна гэта здараецца з-за пераходу па састарэлай спасылцы на старонку, якая была выдаленая.
Падрабязнасьці можна знайсьці ў [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} журнале выдаленьняў].',
# Search results
'shown-title' => 'Паказваць $1 {{PLURAL:$1|вынік|вынікі|вынікаў}} на старонцы',
'viewprevnext' => 'Паказаць ($1 {{int:pipe-separator}} $2) ($3)',
'searchmenu-exists' => "* Старонка '''[[$1]]'''",
-'searchmenu-new' => "'''Стварыць старонку «[[:$1|$1]]» у {{GRAMMAR:месны|{{SITENAME}}}}!'''",
+'searchmenu-new' => '<strong>Стварыць старонку «[[:$1]]» у {{GRAMMAR:месны|{{SITENAME}}}}!</strong> {{PLURAL:$2|0=|Глядзіце таксама старонку, знойдзеную ў выніку пошуку.|Глядзіце таксама вынікі пошуку.}}',
'searchprofile-articles' => 'Старонкі са зьместам',
'searchprofile-project' => 'Старонкі дапамогі і праекту',
'searchprofile-images' => 'Мультымэдыя',
'search-result-score' => 'Адпаведнасьць: $1%',
'search-redirect' => '(перанакіраваньне $1)',
'search-section' => '(сэкцыя $1)',
+'search-file-match' => '(супадае зь зьмесьцівам файла)',
'search-suggest' => 'Магчыма, вы мелі на ўвазе: $1',
'search-interwiki-caption' => 'Сумежныя праекты',
'search-interwiki-default' => 'вынікі з $1:',
'searchall' => 'усе',
'showingresults' => "Ніжэй {{PLURAL:$1|паданы|паданыя|паданыя}} да '''$1''' {{PLURAL:$1|выніку|вынікаў|вынікаў}}, пачынаючы з #<b>$2</b>.",
'showingresultsnum' => "Ніжэй паказаны сьпіс з '''$3''' {{PLURAL:$3|выніка|вынікаў|вынікаў}}, пачынаючы ад № '''$2'''.",
-'showingresultsheader' => "{{PLURAL:$5|Вынік '''$1''' з '''$3'''|Вынікі '''$1 - $2''' з '''$3'''}} для '''$4'''",
+'showingresultsheader' => "{{PLURAL:$5|1=Вынік '''$1''' з '''$3'''|Вынікі '''$1—$2''' з '''$3'''}} для '''$4'''",
'search-nonefound' => 'Супадзеньняў па запыце ня знойдзена.',
'powersearch-legend' => 'Удасканалены пошук',
'powersearch-ns' => 'Шукаць у прасторах назваў:',
'rows' => 'Радкоў:',
'columns' => 'Слупкоў:',
'searchresultshead' => 'Пошук',
-'resultsperpage' => 'Колькасьць вынікаў на старонцы:',
'stub-threshold' => 'Максымальны памер старонкі для паказу спасылак <a href="#" class="stub">як на накід</a> (у байтах):',
'stub-threshold-disabled' => 'Выключаны',
'recentchangesdays' => 'Колькасьць дзён для паказу ў апошніх зьменах:',
'youremail' => 'Адрас электроннай пошты:',
'username' => 'Імя {{GENDER:$1|ўдзельніка|ўдзельніцы}}:',
'uid' => 'ID {{GENDER:$1|удзельніка|удзельніцы}}:',
-'prefs-memberingroups' => '{{GENDER:$2|Удзельнік|Удзельніца}} {{PLURAL:$1|групы|групаў}}:',
+'prefs-memberingroups' => '{{GENDER:$2|Удзельнік|Удзельніца}} {{PLURAL:$1|1=групы|групаў}}:',
'prefs-registration' => 'Час рэгістрацыі:',
'yourrealname' => 'Сапраўднае імя:',
'yourlanguage' => 'Мова інтэрфэйсу:',
'prefs-tokenwatchlist' => 'Токен',
'prefs-diffs' => 'Розьніцы вэрсіяў',
'prefs-help-prefershttps' => 'Гэтая налада набудзе моц пры наступным уваходзе ў сыстэму.',
+'prefs-tabs-navigation-hint' => 'Падказка: вы можаце пераходзіць паміж укладкамі ў сьпісе ўкладак з дапамогай клявішаў налева і направа.',
# User preference: email validation using jQuery
'email-address-validity-valid' => 'Выглядае слушна',
'filetype-mime-mismatch' => 'Пашырэньне файла «.$1» не адпавядае выяўленаму MIME-тыпу файла ($2).',
'filetype-badmime' => 'Загрузка файлаў тыпу MIME «$1» забароненая.',
'filetype-bad-ie-mime' => 'Немагчыма загрузіць гэты файл, таму што Internet Explorer вызначыў яго як «$1», што азначае, што тып гэтага файла забаронены і патэнцыяльна небясьпечны.',
-'filetype-unwanted-type' => "'''«.$1»''' — непажаданы тып файла.
-{{PLURAL:$3|Пажаданым тыпам файла зьяўляецца|Пажаданымі тыпамі файлаў зьяўляюцца}} $2.",
-'filetype-banned-type' => "'''«.$1»''' — {{PLURAL:$4|забаронены тып файлаў|забароненыя тыпы файлаў}}.
-{{PLURAL:$3|Дазволены тып файлаў|Дазволеныя тыпы файлаў}}: $2.",
+'filetype-unwanted-type' => '<strong>«.$1»</strong> — непажаданы тып файла.
+{{PLURAL:$3|1=Пажаданым тыпам файла зьяўляецца|Пажаданымі тыпамі файлаў зьяўляюцца:}} $2.',
+'filetype-banned-type' => '<strong>«.$1»</strong> — {{PLURAL:$4|1=забаронены тып файлаў|забароненыя тыпы файлаў}}.
+{{PLURAL:$3|1=Дазволены тып файлаў|Дазволеныя тыпы файлаў}}: $2.',
'filetype-missing' => 'Файл ня мае пашырэньня (напрыклад, «.jpg»).',
'empty-file' => 'Дасланы Вамі файл пусты.',
'file-too-large' => 'Дасланы Вамі файл занадта вялікі.',
Калі ласка, вярніцеся назад і загрузіце гэты файл з новай назвай. [[File:$1|thumb|center|$1]]',
'fileexists-shared-forbidden' => 'Файл з такой назвай ужо існуе ў агульным сховішчы файлаў.
Калі Вы жадаеце загрузіць Ваш файл, вярніцеся назад і загрузіце гэты файл з новай назвай. [[File:$1|thumb|center|$1]]',
-'file-exists-duplicate' => 'Гэты файл дублюе {{PLURAL:$1|наступны файл|наступныя файлы}}:',
+'file-exists-duplicate' => 'Гэты файл дублюе {{PLURAL:$1|1=наступны файл|наступныя файлы}}:',
'file-deleted-duplicate' => 'Падобны файл ([[:$1]]) ужо выдаляўся. Калі ласка, паглядзіце гісторыю выдаленьняў гэтага файла перад яго паўторнай загрузкай.',
'uploadwarning' => 'Папярэджаньне',
'uploadwarning-text' => 'Калі ласка, зьмяніце апісаньне файла ніжэй і паспрабуйце ізноў.',
'filehist-comment' => 'Камэнтар',
'filehist-missing' => 'Файл адсутнічае',
'imagelinks' => 'Выкарыстаньне файла',
-'linkstoimage' => '{{PLURAL:$1|Наступная старонка спасылаецца|Наступныя старонкі спасылаюцца}} на гэты файл:',
+'linkstoimage' => '{{PLURAL:$1|1=Наступная старонка спасылаецца|Наступныя старонкі спасылаюцца}} на гэты файл:',
'linkstoimage-more' => 'Больш чым $1 {{PLURAL:$1|старонка спасылаецца|старонкі спасылаюцца|старонак спасылаюцца}} на гэты файл.
У гэтым сьпісе толькі $1 {{PLURAL:$1|спасылка|спасылкі|спасылак}} на гэты файл.
Даступны таксама [[Special:WhatLinksHere/$2|поўны сьпіс]].',
'nolinkstoimage' => 'Ніводная старонка не спасылаецца на гэты файл.',
'morelinkstoimage' => 'Паказаць [[Special:WhatLinksHere/$1|болей спасылак]] на гэты файл.',
'linkstoimage-redirect' => '$1 (перанакіраваньне на файл) $2',
-'duplicatesoffile' => '{{PLURAL:$1|Наступны файл дублюе|Наступныя файлы дублююць}} гэты файл ([[Special:FileDuplicateSearch/$2|падрабязнасьці]]):',
+'duplicatesoffile' => '{{PLURAL:$1|1=Наступны файл дублюе|Наступныя файлы дублююць}} гэты файл ([[Special:FileDuplicateSearch/$2|падрабязнасьці]]):',
'sharedupload' => 'Гэты файл паходзіць з $1 і можа выкарыстоўвацца іншымі праектамі.',
'sharedupload-desc-there' => 'Гэты файл паходзіць з $1 і можа выкарыстоўвацца іншымі праектамі.
Калі ласка, глядзіце падрабязнасьці на [$2 старонцы апісаньня файла].',
# Random page
'randompage' => 'Выпадковая старонка',
-'randompage-nopages' => 'Няма старонак у {{PLURAL:$2|наступнай прасторы|наступных прасторах}} назваў: $1.',
+'randompage-nopages' => 'Няма старонак у {{PLURAL:$2|1=наступнай прасторы|наступных прасторах}} назваў: $1.',
# Random page in category
'randomincategory' => 'Выпадковая старонка ў катэгорыі',
# Miscellaneous special pages
'nbytes' => '$1 {{PLURAL:$1|байт|байты|байтаў}}',
'ncategories' => '$1 {{PLURAL:$1|катэгорыя|катэгорыі|катэгорыяў}}',
-'ninterwikis' => '$1 {{PLURAL:$1|інтэрвікі|інтэрвікі}}',
+'ninterwikis' => '$1 {{PLURAL:$1|1=інтэрвікі|інтэрвікі}}',
'nlinks' => '$1 {{PLURAL:$1|спасылка|спасылкі|спасылак}}',
'nmembers' => '$1 {{PLURAL:$1|элемэнт|элемэнты|элемэнтаў}}',
'nmemberschanged' => '$1 → $2 {{PLURAL:$2|элемэнт|элемэнты|элемэнтаў}}',
# Special:Categories
'categories' => 'Катэгорыі',
-'categoriespagetext' => '{{PLURAL:$1|Наступная катэгорыя зьмяшчае|Наступныя катэгорыі зьмяшчаюць}} старонкі і/альбо мэдыяфайлы.
+'categoriespagetext' => '{{PLURAL:$1|1=Наступная катэгорыя зьмяшчае|Наступныя катэгорыі зьмяшчаюць}} старонкі альбо мэдыяфайлы.
Тут не паказаныя [[Special:UnusedCategories|катэгорыі, якія не выкарыстоўваюцца]].
Глядзіце таксама [[Special:WantedCategories|сьпіс запатрабаваных катэгорыяў]].',
'categoriesfrom' => 'Паказаць катэгорыі, пачынаючы з:',
'linksearch-pat' => 'Узор для пошуку:',
'linksearch-ns' => 'Прастора назваў:',
'linksearch-ok' => 'Шукаць',
-'linksearch-text' => 'Можна ўжываць сымбалі падстаноўкі, напрыклад, «*.wikipedia.org».<br />
+'linksearch-text' => 'Можна ўжываць сымбалі падстаноўкі, напрыклад, «*.wikipedia.org».
Неабходны дамэн першага ўзроўню, напрыклад, «*.org».<br />
-{{PLURAL:$2|Пратакол, які падтрымліваецца|Пратаколы, якія падтрымліваюцца}}: <code>$1</code> (дапомна http://, калі пратакол не пазначаны).',
+{{PLURAL:$2|1=Пратакол, які падтрымліваецца|Пратаколы, якія падтрымліваюцца}}: <code>$1</code> (дапомна http://, калі пратакол не пазначаны).',
'linksearch-line' => 'Спасылка на $1 з $2',
'linksearch-error' => 'Сымбалі падстаноўкі могуць ужывацца толькі ў пачатку адрасоў.',
'listgrouprights-rights' => 'Правы',
'listgrouprights-helppage' => 'Help:Правы групаў удзельнікаў',
'listgrouprights-members' => '(сьпіс удзельнікаў групы)',
-'listgrouprights-addgroup' => 'можа дадаваць {{PLURAL:$2|групу|групы}}: $1',
-'listgrouprights-removegroup' => 'можа выдаляць {{PLURAL:$2|групу|групы}}: $1',
+'listgrouprights-addgroup' => 'можа дадаваць {{PLURAL:$2|1=групу|групы}}: $1',
+'listgrouprights-removegroup' => 'можа выдаляць {{PLURAL:$2|1=групу|групы}}: $1',
'listgrouprights-addgroup-all' => 'можа дадаваць усе групы',
'listgrouprights-removegroup-all' => 'можа выдаляць усе групы',
-'listgrouprights-addgroup-self' => 'Можа дадаць уласны рахунак да {{PLURAL:$2|групы|групаў}}: $1',
-'listgrouprights-removegroup-self' => 'Можа выдаліць уласны рахунак з {{PLURAL:$2|групы|групаў}}: $1',
+'listgrouprights-addgroup-self' => 'Можа дадаць уласны рахунак да {{PLURAL:$2|1=групы|групаў}}: $1',
+'listgrouprights-removegroup-self' => 'Можа выдаліць уласны рахунак з {{PLURAL:$2|1=групы|групаў}}: $1',
'listgrouprights-addgroup-self-all' => 'Можа дадаць уласны рахунак да ўсіх груп',
'listgrouprights-removegroup-self-all' => 'Можа выдаліць уласны рахунак з ўсіх груп',
'watchmethod-list' => 'прагляд старонак са сьпісу назіраньня дзеля апошніх зьменах',
'watchlistcontains' => 'Ваш сьпіс назіраньня зьмяшчае $1 {{PLURAL:$1|старонка|старонкі|старонак}}.',
'iteminvalidname' => 'Праблема з элемэнтам «$1», няслушная назва…',
-'wlnote' => "Ніжэй {{PLURAL:$1|паказаная '''$1''' апошняя зьмена|паказаныя '''$1''' апошнія зьмены|паказаныя '''$1''' апошніх зьменаў}} за '''$2''' {{PLURAL:$2|гадзіну|гадзіны|гадзінаў}}, па стане на $3, $4.",
'wlshowlast' => 'Паказаць: за апошнія $1 гадзінаў, $2 дзён, $3',
'watchlist-options' => 'Налады сьпісу назіраньня',
Выдаленьне такіх старонак было забароненае, каб пазьбегнуць праблемаў у працы {{GRAMMAR:родны|{{SITENAME}}}}.',
'delete-warning-toobig' => 'Гэтая старонка мае доўгую гісторыю рэдагаваньняў, больш за $1 {{PLURAL:$1|вэрсію|вэрсіі|вэрсіяў}}.
Яе выдаленьне можа выклікаць праблемы ў працы базы зьвестак {{GRAMMAR:родны|{{SITENAME}}}}; будзьце асьцярожны.',
+'deleting-backlinks-warning' => "'''Увага:''' іншыя старонкі спасылаюцца на старонку, якую вы зьбіраецеся выдаліць.",
# Rollback
'rollback' => 'Адкаціць рэдагаваньні',
'undeletepage' => 'Прагляд і аднаўленьне выдаленых старонак',
'undeletepagetitle' => "'''Ніжэй паданыя выдаленыя вэрсіі [[:$1|$1]]'''.",
'viewdeletedpage' => 'Паказаць выдаленыя старонкі',
-'undeletepagetext' => '{{PLURAL:$1|Наступная старонка была выдаленая, але яна знаходзяцца ў архіве і можа быць адноўленая|Наступныя старонкі былі выдаленыя, але яны знаходзяцца ў архіве і могуць быць адноўленыя}}.
+'undeletepagetext' => '{{PLURAL:$1|1=Наступная старонка была выдаленая, але яна знаходзяцца ў архіве і можа быць адноўленая|Наступныя старонкі былі выдаленыя, але яны знаходзяцца ў архіве і могуць быць адноўленыя}}.
Архіў пэрыядычна чысьціцца.',
'undelete-fieldset-title' => 'Аднавіць вэрсіі',
'undeleteextrahelp' => "Для поўнага аднаўленьня гісторыі рэдагаваньня старонкі, пакіньце ўсе адзнакі нявызначнымі і націсьніце '''''{{int:undeletebtn}}'''''.
'blocklist-reason' => 'Прычына',
'ipblocklist-submit' => 'Шукаць',
'ipblocklist-localblock' => 'Лякальнае блякаваньне',
-'ipblocklist-otherblocks' => '{{PLURAL:$1|Іншае блякаваньне|Іншыя блякаваньні}}',
+'ipblocklist-otherblocks' => '{{PLURAL:$1|1=Іншае блякаваньне|Іншыя блякаваньні}}',
'infiniteblock' => 'назаўсёды',
'expiringblock' => 'канчаецца $1 $2',
'anononlyblock' => 'толькі ананімаў',
'ipb_hide_invalid' => 'Немагчыма схаваць гэты рахунак; верагодна зь яго зроблена зашмат рэдагаваньняў.',
'ipb_already_blocked' => '«$1» ужо заблякаваны',
'ipb-needreblock' => '$1 ужо заблякаваны. Вы жадаеце зьмяніць парамэтры?',
-'ipb-otherblocks-header' => '{{PLURAL:$1|Іншае блякаваньне|Іншыя блякаваньні}}',
+'ipb-otherblocks-header' => '{{PLURAL:$1|1=Іншае блякаваньне|Іншыя блякаваньні}}',
'unblock-hideuser' => 'Вы ня можаце разблякаваць гэтага ўдзельніка, таму што яго імя было схаванае.',
'ipb_cant_unblock' => 'Памылка: ID блякаваньня $1 ня знойдзена. Верагодна яно было ўжо зьнятае.',
'ipb_blocked_as_range' => 'Памылка: IP-адрас $1 быў заблякаваны наўпрост і ня можа быць разблякаваны.
'movepage-max-pages' => '$1 {{PLURAL:$1|старонка была перанесеная|старонкі былі перанесеныя|старонак былі перанесеныя}} — гэта дазволены максымум, больш аўтаматычных пераносаў ня будзе.',
'movelogpage' => 'Журнал пераносаў',
'movelogpagetext' => 'Ніжэй пададзены сьпіс перанесеных старонак.',
-'movesubpage' => '{{PLURAL:$1|Падстаронка|Падстаронкі}}',
-'movesubpagetext' => 'Гэтая старонка мае $1 {{PLURAL:$1|падстаронку|падстаронкі|падстаронак}}, {{PLURAL:$1|якая паказаная ніжэй|якія паказаныя ніжэй}}.',
+'movesubpage' => '{{PLURAL:$1|1=Падстаронка|Падстаронкі}}',
+'movesubpagetext' => 'Гэтая старонка мае $1 {{PLURAL:$1|падстаронку|падстаронкі|падстаронак}}, {{PLURAL:$1|1=якая паказаная ніжэй|якія паказаныя ніжэй}}.',
'movenosubpage' => 'Гэтая старонка ня мае падстаронак.',
'movereason' => 'Прычына:',
'revertmove' => 'адкат',
'import-error-special' => 'Старонка «$1» не была імпартаваная, таму што яна належыць да спэцыяльнай прасторы назваў, старонкі ў якой не дазволеныя.',
'import-error-invalid' => 'Старонка «$1» не была імпартаваная з-за няслушнасьці назвы.',
'import-error-unserialize' => 'Не атрымалася дэсэрыялізаваць вэрсію $2 старонкі «$1». Меркавалася, што вэрсія выкарыстоўвала мадэль зьвестак $3 і была сэрыялізавана ў фармаце $4.',
-'import-options-wrong' => '{{PLURAL:$2|Няслушная налада|Няслушныя налады}}: <nowiki>$1</nowiki>',
+'import-options-wrong' => '{{PLURAL:$2|1=Няслушная налада|Няслушныя налады}}: <nowiki>$1</nowiki>',
'import-rootpage-invalid' => 'Пазначаная назва карнявой старонкі няслушная.',
'import-rootpage-nosubpage' => 'Падстаронкі ў прасторы назваў «$1» карнявой старонкі не дазволеныя.',
'tooltip-pt-watchlist' => 'Сьпіс старонак, за зьменамі якіх Вы назіраеце',
'tooltip-pt-mycontris' => 'Ваш унёсак',
'tooltip-pt-login' => 'Вас запрашаюць увайсьці, хаця гэта і неабавязкова.',
-'tooltip-pt-anonlogin' => 'Уваход у сыстэму вітаецца, хаця ён не абавязковы.',
'tooltip-pt-logout' => 'Выйсьці',
'tooltip-ca-talk' => 'Абмеркаваньне зьместу старонкі',
'tooltip-ca-edit' => 'Вы можаце рэдагаваць гэтую старонку. Калі ласка, ужывайце кнопку прагляду перад захаваньнем.',
'notacceptable' => 'Вікі-сэрвэр ня можа адлюстраваць зьвесткі ў выглядзе, які здольны прачытаць Ваш браўзэр.',
# Attribution
-'anonymous' => '{{PLURAL:$1|Ананімны ўдзельнік ці ўдзельніца|Ананімныя ўдзельнікі і ўдзельніцы}} {{GRAMMAR:родны|{{SITENAME}}}}',
+'anonymous' => '{{PLURAL:$1|1=Ананімны ўдзельнік ці ўдзельніца|Ананімныя ўдзельнікі і ўдзельніцы}} {{GRAMMAR:родны|{{SITENAME}}}}',
'siteuser' => 'Удзельнік/удзельніца {{GRAMMAR:родны|{{SITENAME}}}} $1',
'anonuser' => 'Ананімны ўдзельнік {{GRAMMAR:родны|{{SITENAME}}}} $1',
'lastmodifiedatby' => 'Гэтую старонку апошні раз рэдагаваў $3 $2, $1.',
'othercontribs' => 'На аснове працы $1.',
'others' => 'іншыя',
-'siteusers' => '{{PLURAL:$2|Удзельнік|Удзельнікі}} {{GRAMMAR:родны|{{SITENAME}}}} $1',
-'anonusers' => '{{PLURAL:$2|Ананімны ўдзельнік|Ананімныя ўдзельнікі}} {{GRAMMAR:родны|{{SITENAME}}}} $1',
+'siteusers' => '{{PLURAL:$2|1=Удзельнік|Удзельнікі}} {{GRAMMAR:родны|{{SITENAME}}}} $1',
+'anonusers' => '{{PLURAL:$2|1=Ананімны ўдзельнік|Ананімныя ўдзельнікі}} {{GRAMMAR:родны|{{SITENAME}}}} $1',
'creditspage' => 'Падзякі',
'nocredits' => 'Няма інфармацыі пра аўтараў гэтай старонкі.',
'pageinfo-robot-noindex' => 'Не дазволеная',
'pageinfo-views' => 'Колькасьць праглядаў',
'pageinfo-watchers' => 'Колькасьць назіральнікаў і назіральніц',
-'pageinfo-few-watchers' => 'Менш за $1 {{PLURAL:$1|назіральніка|назіральнікаў}}',
+'pageinfo-few-watchers' => 'Менш за $1 {{PLURAL:$1|1=назіральніка|назіральнікаў}}',
'pageinfo-redirects-name' => 'Перанакіраваньняў на гэтую старонку',
'pageinfo-subpages-name' => 'Колькасьць падстаронак',
'pageinfo-subpages-value' => '$1 ($2 {{PLURAL:$2|перанакіраваньне|перанакіраваньні|перанакіраваньняў}}; $3 {{PLURAL:$3|звычайная|звычайныя|звычайных}})',
'pageinfo-authors' => 'Колькасьць аўтараў',
'pageinfo-recent-edits' => 'Колькасьць апошніх рэдагаваньняў (за $1)',
'pageinfo-recent-authors' => 'Колькасьць апошніх аўтараў',
-'pageinfo-magic-words' => '{{PLURAL:$1|Магічнае слова|Магічныя словы}} ($1)',
-'pageinfo-hidden-categories' => '{{PLURAL:$1|Схаваная катэгорыя|Схаваныя катэгорыі}} ($1)',
-'pageinfo-templates' => '{{PLURAL:$1|Шаблён|Шаблёны}} ($1)',
-'pageinfo-transclusions' => 'Выкарыстаньне на {{PLURAL:$1|іншай старонцы|іншых старонках}} ($1)',
+'pageinfo-magic-words' => '{{PLURAL:$1|1=Магічнае слова|Магічныя словы}} ($1)',
+'pageinfo-hidden-categories' => '{{PLURAL:$1|1=Схаваная катэгорыя|Схаваныя катэгорыі}} ($1)',
+'pageinfo-templates' => '{{PLURAL:$1|1=Шаблён|Шаблёны}} ($1)',
+'pageinfo-transclusions' => 'Выкарыстаньне на {{PLURAL:$1|1=іншай старонцы|іншых старонках}} ($1)',
'pageinfo-toolboxlink' => 'Зьвесткі пра старонку',
'pageinfo-redirectsto' => 'Перанакіроўвае на',
'pageinfo-redirectsto-info' => 'інфармацыя',
'svg-long-desc' => 'SVG-файл, намінальна $1 × $2 {{PLURAL:$2|піксэл|піксэлы|піксэлаў}}, памер файла: $3.',
'svg-long-desc-animated' => 'Анімаваны SVG-файл, намінальна $1 × $2 {{PLURAL:$2|піксэл|піксэлы|піксэлаў}}, памер файла: $3',
'svg-long-error' => 'Няслушны SVG-файл: $1',
-'show-big-image' => 'Ð\9dайлепÑ\88ае Ñ\80азÑ\80озÑ\8cненÑ\8cне',
+'show-big-image' => 'Ð\90Ñ\80Ñ\8bгÑ\96налÑ\8cнÑ\8b Ñ\84айл',
'show-big-image-preview' => 'Памер прагляду: $1.',
-'show-big-image-other' => '{{PLURAL:$2|Іншае разрозьненьне|Іншыя разрозьненьні}}: $1.',
+'show-big-image-other' => '{{PLURAL:$2|1=Іншае разрозьненьне|Іншыя разрозьненьні}}: $1.',
'show-big-image-size' => '$1 × $2 піксэлаў',
'file-info-gif-looped' => 'паўтараючыся',
'file-info-gif-frames' => '$1 {{PLURAL:$1|кадар|кадры|кадраў}}',
'version-hook-subscribedby' => 'Падпісаны на',
'version-version' => '(Вэрсія $1)',
'version-svn-revision' => '(r$2)',
-'version-license' => 'Ліцэнзія',
+'version-license' => 'Ліцэнзія MediaWiki',
'version-poweredby-credits' => "{{SITENAME}} працуе на праграмным забесьпячэньні '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
'version-poweredby-others' => 'іншыя',
'version-poweredby-translators' => 'перакладчыкі з translatewiki.net',
'tags' => 'Слушныя тэгі зьменаў',
'tag-filter' => 'Фільтар [[Special:Tags|тэгаў]]:',
'tag-filter-submit' => 'Фільтар',
-'tag-list-wrapper' => '([[Special:Tags|{{PLURAL:$1|Тэг|Тэгі}}]]: $2)',
+'tag-list-wrapper' => '([[Special:Tags|{{PLURAL:$1|1=Тэг|Тэгі}}]]: $2)',
'tags-title' => 'Тэгі',
'tags-intro' => 'На гэтай старонцы знаходзіцца сьпіс тэгаў, якімі праграмнае забесьпячэньне можа пазначыць рэдагаваньне, і іх значэньне.',
'tags-tag' => 'Назва тэга',
# New logging system
'logentry-delete-delete' => '$1 {{GENDER:$2|выдаліў|выдаліла}} старонку $3',
'logentry-delete-restore' => '$1 {{GENDER:$2|аднавіў|аднавіла}} старонку $3',
-'logentry-delete-event' => '$1 {{GENDER:$2|зьмяніў|зьмяніла}} бачнасьць $5 {{PLURAL:$5|падзеі ў журнале|падзеяў у журнале}} на $3: $4',
-'logentry-delete-revision' => '$1 {{GENDER:$2|зьмяніў|зьмяніла}} бачнасьць $5 {{PLURAL:$5|вэрсіі|вэрсіяў}} старонкі $3: $4',
+'logentry-delete-event' => '$1 {{GENDER:$2|зьмяніў|зьмяніла}} бачнасьць $5 {{PLURAL:$5|1=падзеі ў журнале|падзеяў у журнале}} на $3: $4',
+'logentry-delete-revision' => '$1 {{GENDER:$2|зьмяніў|зьмяніла}} бачнасьць $5 {{PLURAL:$5|1=вэрсіі|вэрсіяў}} старонкі $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|зьмяніў|зьмяніла}} бачнасьць $5 {{PLURAL:$5|падзеі ў журнале|падзеяў у журнале}} на $3: $4',
-'logentry-suppress-revision' => '$1 прыхавана {{GENDER:$2|зьмяніў|зьмяніла}} бачнасьць $5 {{PLURAL:$5|вэрсіі|вэрсіяў}} старонкі $3: $4',
+'logentry-suppress-event' => '$1 прыхавана {{GENDER:$2|зьмяніў|зьмяніла}} бачнасьць $5 {{PLURAL:$5|1=падзеі ў журнале|падзеяў у журнале}} на $3: $4',
+'logentry-suppress-revision' => '$1 прыхавана {{GENDER:$2|зьмяніў|зьмяніла}} бачнасьць $5 {{PLURAL:$5|1=вэрсіі|вэрсіяў}} старонкі $3: $4',
'logentry-suppress-event-legacy' => '$1 прыхавана {{GENDER:$2|зьмяніў|зьмяніла}} бачнасьць падзеяў у журнале на $3',
'logentry-suppress-revision-legacy' => '$1 прыхавана {{GENDER:$2|зьмяніў|зьмяніоа}} бачнасьць вэрсіяў старонкі $3',
'revdelete-content-hid' => 'зьмест схаваны',
'api-error-badaccess-groups' => 'У Вас няма дазволу загружаць файлы ў гэтую вікі.',
'api-error-badtoken' => 'Унутраная памылка: няслушны ключ.',
'api-error-copyuploaddisabled' => 'Загрузка з URL-адрасу забароненая на гэтым сэрвэры.',
-'api-error-duplicate' => 'Ужо {{PLURAL:$1|існуе [$2 іншы файл]|існуюць [$2 іншыя файлы]}} з такім жа зьместам.',
-'api-error-duplicate-archive' => 'Раней на сайце {{PLURAL:$1|ўжо быў [$2 файл]|былі [$2 файлы]}} з дакладна такім жа зьместам, але {{PLURAL:$1|ён быў выдалены|яны былі выдаленыя}}.',
-'api-error-duplicate-archive-popup-title' => 'Дублікаты {{PLURAL:$1|файла, які ўжо быў выдалены|файлаў, якія ўжо былі выдаленыя}}',
-'api-error-duplicate-popup-title' => '{{PLURAL:$1|Ідэнтычны файл|Ідэнтычныя файлы}}',
+'api-error-duplicate' => 'Ужо {{PLURAL:$1|1=існуе [$2 іншы файл]|існуюць [$2 іншыя файлы]}} з такім жа зьместам.',
+'api-error-duplicate-archive' => 'Раней на сайце {{PLURAL:$1|1=ўжо быў [$2 файл]|былі [$2 файлы]}} з дакладна такім жа зьместам, але {{PLURAL:$1|1=ён быў выдалены|яны былі выдаленыя}}.',
+'api-error-duplicate-archive-popup-title' => 'Дублікаты {{PLURAL:$1|1=файла, які ўжо быў выдалены|файлаў, якія ўжо былі выдаленыя}}',
+'api-error-duplicate-popup-title' => '{{PLURAL:$1|1=Ідэнтычны файл|Ідэнтычныя файлы}}',
'api-error-empty-file' => 'Дасланы Вамі файл быў пусты.',
'api-error-emptypage' => 'Стварэньне новых пустых старонак забаронена.',
'api-error-fetchfileerror' => 'Унутраная памылка: падчас атрыманьня файла штосьці здарылася.',
'api-error-file-too-large' => 'Дасланы Вамі файл занадта вялікі.',
'api-error-filename-tooshort' => 'Назва файла занадта кароткая.',
'api-error-filetype-banned' => 'Гэты тып файла забаронены.',
-'api-error-filetype-banned-type' => '$1 — {{PLURAL:$4|забаронены тып файлаў|забароненыя тыпы файлаў}}. {{PLURAL:$3|Дазволены тып файлаў|Дазволеныя тыпы файлаў}}: $2.',
+'api-error-filetype-banned-type' => '$1 — {{PLURAL:$4|1=забаронены тып файлаў|забароненыя тыпы файлаў}}. {{PLURAL:$3|1=Дазволены тып файлаў|Дазволеныя тыпы файлаў}}: $2.',
'api-error-filetype-missing' => 'У файла няма пашырэньня.',
'api-error-hookaborted' => 'Прапанаваная Вамі зьмена была адхіленая апрацоўшчыкам пашырэньня.',
'api-error-http' => 'Унутраная памылка: немагчыма далучыцца да сэрвэра.',
'expand_templates_generate_xml' => 'Паказаць дрэва аналізу XML',
'expand_templates_preview' => 'Папярэдні прагляд',
+# Unknown messages
+'createaccount-hook-aborted' => '$1',
);
$messages = array(
# User preference toggles
'tog-underline' => 'Подчертаване на препратките:',
-'tog-justify' => 'Двустранно подравняване на абзаците',
'tog-hideminor' => 'Скриване на малки редакции в последните промени',
'tog-hidepatrolled' => 'Скриване на патрулираните редакции от списъка с последните промени',
'tog-newpageshidepatrolled' => 'Скриване на патрулираните редакции от списъка на новите страници',
'tog-numberheadings' => 'Номериране на заглавията',
'tog-showtoolbar' => 'Показване на инструментите за редактиране',
'tog-editondblclick' => 'Редактиране на страниците чрез двойно щракване',
-'tog-editsection' => 'Възможност за редактиране на раздел чрез препратка [редактиране]',
'tog-editsectiononrightclick' => 'Възможност за редактиране на раздел при щракване с десния бутон върху заглавието му',
-'tog-showtoc' => 'Показване на съдържание (за страници с повече от три раздела)',
'tog-rememberpassword' => 'Запомяне на паролата ми в този браузър (за не повече от $1 {{PLURAL:$1|ден|дни}})',
'tog-watchcreations' => 'Добавяне на създадените от мен страници и качените от мен файлове към списъка ми за наблюдение',
'tog-watchdefault' => 'Добавяне на страниците, които редактирам, в списъка ми за наблюдение',
'showhideselectedversions' => 'Показване/скриване на избрани версии',
'editundo' => 'връщане',
'diff-empty' => '(Няма разлика)',
-'diff-multi' => '({{PLURAL:$1|Не е показана една междинна версия|Не са показани $1 междинни версии}} от {{PLURAL:$2|един потребител|$2 потребителя}}.)',
'diff-multi-manyusers' => '({{PLURAL:$1|Не е показана една междинна версия|Не са показани $1 междинни версии}} от повече от $2 {{PLURAL:$2|потребител|потребителя}})',
'difference-missing-revision' => '{{PLURAL:$2|Не беше открита|Не бяха открити}} {{PLURAL:$2|една версия|$2 версии}} от тази разликова препратка ($1).
'rows' => 'Редове:',
'columns' => 'Колони:',
'searchresultshead' => 'Търсене',
-'resultsperpage' => 'Резултати на страница:',
'stub-threshold' => 'Праг за форматиране на <a href="#" class="stub">препратки към мъничета</a>:',
'stub-threshold-disabled' => 'Изключено',
'recentchangesdays' => 'Брой дни в последни промени:',
'watchmethod-list' => 'проверка на наблюдаваните страници за скорошни редакции',
'watchlistcontains' => 'Списъкът ви за наблюдение съдържа {{PLURAL:$1|една страница|$1 страници}}.',
'iteminvalidname' => 'Проблем с „$1“, грешно име…',
-'wlnote' => "{{PLURAL:$1|Показана е последната промяна|Показани са последните '''$1''' промени}} през {{PLURAL:$2|последния час|последните '''$2''' часа}}.",
'wlshowlast' => 'Показване на последните $1 часа $2 дни $3',
'watchlist-options' => 'Опции на списъка за наблюдение',
'tooltip-pt-watchlist' => 'Списък на страници, чиито промени сте избрали да наблюдавате',
'tooltip-pt-mycontris' => 'Списък на вашите приноси',
'tooltip-pt-login' => 'Насърчаваме ви да влезете, въпреки че не е задължително.',
-'tooltip-pt-anonlogin' => 'Насърчаваме ви да влезете, въпреки че не е задължително.',
'tooltip-pt-logout' => 'Излизане от {{SITENAME}}',
'tooltip-ca-talk' => 'Беседа относно страницата',
'tooltip-ca-edit' => 'Можете да редактирате страницата. Използвайте бутона за предварителен преглед преди да съхраните.',
'exif-gpslongitude-w' => 'западна дължина',
# Pseudotags used for GPSAltitudeRef
-'exif-gpsaltitude-above-sealevel' => '$1 {{plural:$1|метър|метра}} над морското равнище',
-'exif-gpsaltitude-below-sealevel' => '$1 {{plural:$1|метър|метра}} под морското равнище',
+'exif-gpsaltitude-above-sealevel' => '$1 {{PLURAL:$1|метър|метра}} над морското равнище',
+'exif-gpsaltitude-below-sealevel' => '$1 {{PLURAL:$1|метър|метра}} под морското равнище',
'exif-gpsstatus-a' => 'Измерване в ход',
'exif-gpsstatus-v' => 'Оперативна съвместимост на измерването',
'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-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' => '$1 {{GENDER:$2|създаде}} потребителска сметка $3',
$messages = array(
# User preference toggles
'tog-underline' => 'लिंक के नीचे रेखा',
-'tog-justify' => 'पैराग्राफ जस्टीफाई',
'tog-hideminor' => 'हाल के परिवर्तन में मामूली संपादन छुपाईं',
'tog-hidepatrolled' => 'हाल के परिवर्तन में मामूली संपादन छुपाईं',
'tog-newpageshidepatrolled' => 'नयका पृष्ठ के सूची में से जाँचल पृष्क के छुपाँई',
'tog-numberheadings' => 'स्वयं-सांख्यिकी शिर्षक',
'tog-showtoolbar' => 'सम्पादन औजार् बक्सा के दिखाइल् जाए',
'tog-editondblclick' => 'दुई क्लिक पर पृष्ठ संपादित करीं (जावास्क्रिप्ट आवश्यक बा)',
-'tog-editsection' => '[संपादित करीं] कड़ि द्वारा अनुभाग संपादन सक्षम करीं',
'tog-editsectiononrightclick' => 'अनुभाग शीर्षक पर दायाँ क्लिक कर अनुभाग सम्पादित करीं (जावास्क्रिप्ट आवश्यक बा)',
-'tog-showtoc' => 'अनुक्रम दिखाईं (जे पृष्ठ पर तीन से अधिक अनुभाग होखे)',
'tog-rememberpassword' => 'इ ब्राउजर पर हमार प्रवेश जारी रहे (अधिकतम $1 {{PLURAL:$1|दिन|दिन}})',
'tog-watchcreations' => 'हमरा द्वारा निर्मित पृष्ठ आ हमरा द्वारा लादल फ़ाइलन के हमार ध्यानसूची में जोड़ी',
'tog-watchdefault' => 'हमरा द्वारा निर्मित पृष्ठ आ हमरा द्वारा लादल फ़ाइलन के हमार ध्यानसूची में जोड़ी',
'compareselectedversions' => 'चुनल गईल संशोधन में अन्तर देखीं',
'showhideselectedversions' => 'चुनल गईल संशोधन दिखाईं/छुपाईं',
'editundo' => 'पूर्ववत',
-'diff-multi' => '({{PLURAL:$2|एगो योगदानकर्ता|$2 योगदानकर्ताओं}} द्वारा {{PLURAL:$1|कियल गईल बीच के एगो|कियल गईल बीच के $1}} अवतरण नईखे दर्शावल बा।)',
# Search results
'searchresults' => 'खोज परिणाम',
'tooltip-pt-watchlist' => 'राउर ध्यान दियल पन्ना के सूची',
'tooltip-pt-mycontris' => 'राउर योगदान के सूची',
'tooltip-pt-login' => 'रउआ के खाता प्रवेश खातिर प्रोत्साहित करल जा रहल बा, बाकि ई अनिवार्य नईखे',
-'tooltip-pt-anonlogin' => 'रउआ के खाता प्रवेश खातिर प्रोत्साहित करल जा रहल बा, बाँकि ई अनिवार्य नईखे',
'tooltip-pt-logout' => 'खाता से बाहर',
'tooltip-ca-talk' => 'सामग्री पन्ना के बारे में बात-चीत',
'tooltip-ca-edit' => 'रउआ ई पन्ना के सम्पादन कर सकत बानी। कृपया पन्ना सुरक्षित करे से पहिले पूर्वावलोकन बटन के इस्तेमाल करीं।',
$messages = array(
# User preference toggles
'tog-underline' => 'Garisi di bawah tautan',
-'tog-justify' => 'Ratakan paragraf',
'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-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-editsection' => "Kawa'akan pambabakan sub-hagian malalui tautan [babak]",
'tog-editsectiononrightclick' => "Kawa'akan mambabak sub-hagian lawan mang-klik kanan pada judul hagian (parlu ada JavaScript)",
-'tog-showtoc' => 'Tampaiakan daptar isi (gasan tungkaran-tungkaran nang baisi labih dari 3 subbagian)',
'tog-rememberpassword' => 'Ingatakan babuat log ulun pada panjalajah web ini (gasan salawas $1{{PLURAL:$1|hari|hahari}})',
'tog-watchcreations' => 'Tambahi tungkaran nang ulun ulah ka daptar itihan',
'tog-watchdefault' => 'Tambahi tungkaran nang ulun babak ka daptar itihan ulun',
Log masuk pauncitnya disadiakan di bawah gasan rujukan:",
'semiprotectedpagewarning' => "'''Catatan:''' Tungkaran ngini sudah dilindungi nang akibatnya pamakai tadaptar haja nang kawa mambabak.
Log masuk pauncitnya disadiakan di bawah gasan rujukan:",
-'cascadeprotectedwarning' => "'''Paringatan:''' Tungkaran ngini sudah dilindungi nang akibatnya pamakai awan hak istimiwa pambakal haja nang kawa mambabak, sualnya ngini tamasuk dalam baumpat parlindungan barénténg {{PLURAL: $1|tungkaran|tutungkaran}}:",
+'cascadeprotectedwarning' => "'''Paringatan:''' Tungkaran ngini sudah dilindungi nang akibatnya pamakai awan hak istimiwa pambakal haja nang kawa mambabak, sualnya ngini tamasuk dalam baumpat parlindungan barénténg {{PLURAL:$1|tungkaran|tutungkaran}}:",
'titleprotectedwarning' => "'''Paringatan: Tungkaran ngini sudah dilindungi nang akibatnya [[Special:ListGroupRights|hak khas]] diparluakan hagan maulah ngini.'''
Log masuk pauncitnya disadiakan di bawah gasan rujukan:",
'templatesused' => '{{PLURAL:$1|Citakan|Citakan}} nang digunakan di tungkaran ngini:',
'compareselectedversions' => 'Tandingakan ralatan nang dipilih',
'showhideselectedversions' => 'Tampaiakan/sungkupakan ralatan-ralatan',
'editundo' => 'walangi',
-'diff-multi' => '({{PLURAL:$1|Asa ralatan tangah|$1 raralatan tangah}} ulih {{PLURAL:$2|asa pamakai|$2 papamakai}} kada ditampaiakan)',
'diff-multi-manyusers' => '({{PLURAL:$1|Asa ralatan tangah|$1 raralatan tangah}} ulih labih pada $2 {{PLURAL:$2|pamuruk|papamuruk}} kada ditampaiakan)',
# Search results
'rows' => 'Baris:',
'columns' => 'Kolom:',
'searchresultshead' => 'Gagai',
-'resultsperpage' => 'Hantukan par tungkaran:',
'stub-threshold' => 'Ambang watas gasan pormat <a href="#" class="stub">taautan rintisan</a>:',
'stub-threshold-disabled' => 'Kada kawa-akan',
'recentchangesdays' => 'Jumlah hari nang manampaiakan paubahan pahanyarnya:',
'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.",
'wlshowlast' => 'Tampaiakan $1 jam $2 hari pahabisan $3',
'watchlist-options' => 'Pilihan daptar itihan',
'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-pt-logout' => 'Kaluar',
'tooltip-ca-talk' => 'Pamandiran pasal isi tungkaran',
'tooltip-ca-edit' => 'Pian kawa mambabak tungkaran ngini. Tabéngkéng amun mamakai picikan titilikan sabalum manyimpan',
$fallback = 'fr';
+// Remove French aliases
+$namespaceGenderAliases = array();
+
$messages = array(
# User preference toggles
'tog-hideminor' => 'Yɛlɛmaliw kura fitini dogo',
* @author Samritmaity
* @author Sayak Sarkar
* @author Sm faysal
+ * @author Tauhid16
* @author Usarker
* @author Wikitanvir
* @author Zaheen
$messages = array(
# User preference toggles
'tog-underline' => 'সংযোগগুলির নিচে দাগ দেখানো হোক:',
-'tog-justify' => 'অনুচ্ছেদগুলি যথাযথ ফাঁক দিয়ে সাজানো (justify) হোক',
'tog-hideminor' => 'অনুল্লেখ্য সম্পাদনাগুলো সাম্প্রতিক পরিবর্তনে না দেখানো হোক',
'tog-hidepatrolled' => 'পরীক্ষিত সম্পাদনা গুলো সাম্প্রতিক পরিবর্তনসমূহে আড়াল করো',
'tog-newpageshidepatrolled' => 'পরীক্ষিত পাতা গুলো নতুন পাতার তালিকায় আড়াল করো',
'tog-numberheadings' => 'শিরোনামগুলোকে স্বয়ংক্রিয়ভাবে ক্রমিক নম্বর দাও',
'tog-showtoolbar' => 'সম্পাদনা টুলবার দেখাও',
'tog-editondblclick' => 'দুইবার ক্লিক করে পাতা সম্পাদনা',
-'tog-editsection' => '[সম্পাদনা] সংযোগের সাহায্যে পরিচ্ছেদ সম্পাদনা করার ক্ষমতা দেয়া হোক',
'tog-editsectiononrightclick' => 'পরিচ্ছেদের শিরোনামে ডান ক্লিকের মাধ্যমে সম্পাদনা করার ক্ষমতা দেয়া হোক',
-'tog-showtoc' => 'সূচিপত্র দেখানো হোক (৩টির বেশি পরিচ্ছেদের শিরোনামবিশিষ্ট পাতার জন্য)',
'tog-rememberpassword' => 'এই ব্রাউজারে আমার লগ ইন তথ্য (শব্দচাবি) মনে রাখো (সর্বোচ্চ $1 {{PLURAL:$1|দিনের|দিনের}} জন্য)',
'tog-watchcreations' => 'আমার তৈরি পাতা এবং আপলোড করা ফাইলগুললো আমার নজরতালিকায় যোগ করা হোক',
'tog-watchdefault' => 'আমার সম্পাদিত পাতা এবং ফাইলগুলো আমার নজরতালিকায় যোগ করা হোক',
'retypenew' => 'নতুন শব্দচাবি আবার লিখুন:',
'resetpass_submit' => 'শব্দচাবি দাও এবং লগ-ইন করো',
'changepassword-success' => 'আপনার শব্দচাবি সাফলভাবে পরিবর্তীত হয়েছে।',
+'changepassword-throttled' => 'আপনি সম্প্রতি পরপর বেশ কয়েকবার প্রবেশের চেষ্টা করেছেন। পুনরায় চেষ্টা করার পূর্বে অনুগ্রহ করে $1 অপেক্ষা করুন।',
'resetpass_forbidden' => 'শব্দচাবি পরিবর্তন করা সম্ভব নয়',
'resetpass-no-info' => 'এই পাতাটিতে সরাসরি প্রবেশাধিকার পেতে আপনাকে অবশ্যই লগইন করতে হবে।',
'resetpass-submit-loggedin' => 'শব্দচাবি পরিবর্তন',
'changeemail-password' => 'আপনার {{SITENAME}} শব্দচাবি:',
'changeemail-submit' => 'ই-মেইল পরিবর্তন',
'changeemail-cancel' => 'বাতিল',
+'changeemail-throttled' => 'আপনি পরপর বেশ কয়েকবার প্রবেশের চেষ্টা করেছেন। পুনরায় চেষ্টা করার পূর্বে অনুগ্রহ করে $1 অপেক্ষা করুন।',
# Special:ResetTokens
'resettokens' => 'রিসেট টোকেন',
'showhideselectedversions' => 'নির্বাচিত সংশোধনগুলো দেখাও/লুকাও',
'editundo' => 'পূর্বাবস্থায় আনো',
'diff-empty' => '(কোন পার্থক্য নেই)',
-'diff-multi' => '({{PLURAL:$2|একজন ব্যবহারকারী |$2 জন ব্যবহারকারী}} সম্পাদিত {{PLURAL:$1|একটি অন্তর্বর্তীকালীন সংশোধন|$1টি অন্তর্বর্তীকালীন সংশোধন}} দেখানো হয়নি।)',
'diff-multi-manyusers' => '($2 জন {{PLURAL:$2|ব্যবহারাকারীর}} সম্পাদিত {{PLURAL:$1|একটি সাম্প্রতিক সংস্করণ|$1 টি সাম্প্রতিক সংস্করণ}} প্রদর্শিত হচ্ছে না)',
'difference-missing-revision' => '$1 পার্থক্যের {{PLURAL:$2|একটি সংস্করণ|$2টি সংস্করণসমূহ}} খুজে পাওয়া যাচ্ছে না।
'shown-title' => 'প্রতি পাতায় $1 {{PLURAL:$1|ফলাফল|ফলাফলসমূহ}} দেখাও',
'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3) দেখানো হোক।',
'searchmenu-exists' => "'''এই উইকিতে \"[[:\$1]]\" নামে একটি পাতা রয়েছে'''",
-'searchmenu-new' => "'''\"[[:\$1]]\" পাতাটি এই উইকিতে তৈরি করুন!'''",
+'searchmenu-new' => '<strong>"[[:$1]]" পাতাটি এই উইকিতে তৈরি করুন!</strong> {{PLURAL:$2|0=|এছাড়া আপনার অনুসন্ধানের সাথে পাওয়া পাতা দেখুন।|এছাড়া অনুসন্ধানে পাওয়া ফলাফলগুলি দেখুন।}}',
'searchprofile-articles' => 'বিষয়বস্তুর পাতা',
'searchprofile-project' => 'সহায়িকা এবং প্রকল্প পাতা',
'searchprofile-images' => 'মাল্টিমিডিয়া',
'searchprofile-everything-tooltip' => 'সকল বিষয়বস্তু অনুসন্ধান করো (আলাপের পাতা সহ)',
'searchprofile-advanced-tooltip' => 'স্বনির্ধারিত নামস্থানে অনুসন্ধান করো',
'search-result-size' => '$1 ({{PLURAL:$2|১টি শব্দ|$2টি শব্দ}})',
-'search-result-category-size' => '{{PLURAL: $1 | 1 সদস্য | $1 সদস্যবৃন্দ}} ({{PLURAL: $2 | 1 উপবিষয়শ্রেণীটি | $2 টি}}, {{PLURAL: $3 | 1 ফাইল | $3 ফাইল}})',
+'search-result-category-size' => '{{PLURAL:$1 | 1 সদস্য | $1 সদস্যবৃন্দ}} ({{PLURAL:$2 | 1 উপবিষয়শ্রেণীটি | $2 টি}}, {{PLURAL:$3 | 1 ফাইল | $3 ফাইল}})',
'search-result-score' => 'মিলেছে: $1%',
'search-redirect' => '(পুনর্নিদেশনা $1)',
'search-section' => '(অনুচ্ছেদ $1)',
+'search-file-match' => '(নথির বিষয়বস্তু মিলে যায়)',
'search-suggest' => 'আপনি সম্ভবত বুঝাতে চাইছেন: $1',
'search-interwiki-caption' => 'সহপ্রকল্পসমূহ',
'search-interwiki-default' => '$1 ফলাফলসমূহ:',
'rows' => 'সারি:',
'columns' => 'কলাম:',
'searchresultshead' => 'অনুসন্ধান',
-'resultsperpage' => 'প্রতি পাতায় হিট:',
'stub-threshold' => '<a href="#" class="stub">অসম্পূর্ণ নিবন্ধের সংযোগগুলির</a> বিশেষ ফরম্যাটিঙের সীমা (বাইটে):',
'stub-threshold-disabled' => 'নিস্ক্রিয়',
'recentchangesdays' => 'সাম্প্রতিক পরিবর্তনে দিনসমূহ দেখানোর জন্য:',
'mostinterwikis' => 'সবচেয়ে বেশী ইন্টারউইকি লিংক-সমৃদ্ধ নিবন্ধসমূহ',
'mostrevisions' => 'সবচেয়ে বেশী বার সম্পাদিত নিবন্ধসমূহ',
'prefixindex' => 'উপসর্গ সহ সমস্ত পাতা',
-'prefixindex-namespace' => 'পà§\8dরিফিà¦\95à§\8dস সমà§\8dপবলিত সকল পাতা ($1 নামস্থান)',
+'prefixindex-namespace' => 'à¦\89পসরà§\8dà¦\97 সহ সকল পাতা ($1 নামস্থান)',
'prefixindex-strip' => 'তালিকা থেকে প্রিফিক্স সরাও',
'shortpages' => 'সংক্ষিপ্ত পাতাসমূহ',
'longpages' => 'দীর্ঘ পাতাসমূহ',
'protectedpages' => 'সুরক্ষিত পাতাসমূহ',
'protectedpages-indef' => 'শুধুমাত্র অসীম সুরক্ষা',
'protectedpages-cascade' => 'শুধুমাত্র প্রপাতাকার সুরক্ষা',
+'protectedpages-noredirect' => 'পুনর্নির্দেশনাগুলো লুকাও',
'protectedpagesempty' => 'কোন পাতা বর্তমানে এই প্যারামিটারগুলিসহ সুরক্ষিত নয়।',
'protectedtitles' => 'সুরক্ষিত শিরোনামগুলি',
'protectedtitlesempty' => 'কোন শিরোনাম বর্তমানে এই প্যারামিটারগুলিসহ সুরক্ষিত নয়।',
'watchmethod-list' => 'নজরে রাখা পাতাগুলিতে সাম্প্রতিক পরিবর্তন পরীক্ষা করা হচ্ছে',
'watchlistcontains' => 'আপনার নজরতালিকায় $1 টি {{PLURAL:$1|পাতা|পাতা}} রয়েছে।',
'iteminvalidname' => "'$1'নং আইটেমে সমস্যা, অবৈধ নাম...",
-'wlnote' => "নিচে $3, $4 তারিখ থেকে বিগত {{PLURAL:$2|১ ঘন্টায়|'''$2''' ঘন্টায়}} সংঘটিত {{PLURAL:$1|শেষ ১টি পরিবর্তন|শেষ '''$1'''টি পরিবর্তন}} দেখানো হল।",
'wlshowlast' => 'দেখাও সর্বশেষ $1 ঘন্টা $2 দিন $3',
'watchlist-options' => 'নজর তালিকা পছন্দসমূহ',
'exblank' => 'পাতাটি খালি ছিল',
'delete-confirm' => '"$1" অপসারণ',
'delete-legend' => 'অপসারণ',
-'historywarning' => "'''সতরà§\8dà¦\95à§\80à¦\95রণ:''' à¦\8fà¦\87 পাতাà¦\9fি মà§\81à¦\9bà§\87 ফà§\87লা হবà§\87 যার à¦\87তিহাস সà¦\82à¦\96à§\8dযা পà§\8dরায় $1 {{PLURAL:$1|সà¦\82শà§\8bধন|সà¦\82শà§\8bধন}}:",
+'historywarning' => "'''সতরà§\8dà¦\95à§\80à¦\95রণ:''' যà§\87 পাতাà¦\9fি à¦\86পনি মà§\81à¦\9bà§\87 ফà§\87লতà§\87 যাà¦\9aà§\8dà¦\9bà§\87ন তার à¦\87তিহাসà§\87 পà§\8dরায় $1à¦\9fি {{PLURAL:$1|সà¦\82শà§\8bধন}} রয়à§\87à¦\9bà§\87:",
'confirmdeletetext' => 'আপনি একটি পাতা সেটির সমস্ত ইতিহাসসহ মুছে ফেলতে যাচ্ছেন।
অনুগ্রহ করে নিশ্চিত করুন আপনি আসলেই এটি করতে চান, আপনি এর ফলাফল সম্পর্কে অবহিত, এবং আপনি [[{{MediaWiki:Policy-url}}|নীতিমালা]] মেনে এটি করছেন।',
'actioncomplete' => 'কাজটি নিষ্পন্ন হয়েছে',
'delete-warning-toobig' => 'এই পাতাটির একটি বৃহৎ সম্পাদনা ইতিহাস রয়েছে, যা $1 {{PLURAL:$1|সংস্করণেরও|সংস্করণেরও}} বেশি।
এই পাতাটি মুছে ফেললে তা {{SITENAME}} সাইটের ডেটাবেজ সমস্যার কারণ হতে পারে;
সাবধানতার সাথে এগিয়ে যান।',
+'deleting-backlinks-warning' => "'''সতর্কীকরণ:''' আপনি যেটি মুছে ফেলতে যাচ্ছেন তা অন্যান্য পাতাসমূহের সাথে সংযুক্ত অথবা অন্তর্ভুক্ত করা আছে।",
# Rollback
'rollback' => 'সম্পাদনা ফিরিয়ে নিন',
'range_block_disabled' => 'প্রশাসকের পক্ষে আইপি ঠিকানার শ্রেণী বাধাদানের ক্ষমতা নিষ্ক্রিয় আছে।',
'ipb_expiry_invalid' => 'মেয়াদোত্তীর্ণকাল অবৈধ।',
'ipb_expiry_temp' => 'লুকানো ব্যবহারকারীনাম বাধা চিরস্থায়ী হতে হবে।',
-'ipb_hide_invalid' => 'à¦\8fà¦\87 à¦\85à§\8dযাà¦\95াà¦\89নà§\8dà¦\9f বাধা দà§\87য়া সমà§\8dà¦à¦¬ নয়; হয়তà§\8b সমà§\8dপাদনার সà¦\82à¦\96à§\8dযা à¦\85নà§\87à¦\95 বà§\87শি।',
+'ipb_hide_invalid' => 'à¦\8fà¦\87 à¦\85à§\8dযাà¦\95াà¦\89নà§\8dà¦\9f বাধা দà§\87য়া সমà§\8dà¦à¦¬ নয়; à¦\8fà¦\9fি {{PLURAL:$1|à¦\8fà¦\95à§\87র à¦\85ধিà¦\95|$1à¦\9fি}} সমà§\8dপাদনা à¦\95রà§\87à¦\9bà§\87।',
'ipb_already_blocked' => '"$1" ইতিমধ্যে ব্লক',
'ipb-needreblock' => '$1 পূর্বেই ব্লক রয়েছেন। আপনি কি সেটিংস পরিবর্তন করতে চান?',
'ipb-otherblocks-header' => 'অন্যান্য {{PLURAL:$1|বাধাঁ|বাধাঁসমূহ}}',
'allmessages-prefix' => 'প্রিফিক্স অনুযায়ী ফিল্টার:',
'allmessages-language' => 'ভাষা:',
'allmessages-filter-submit' => 'চলো',
+'allmessages-filter-translate' => 'অনুবাদ',
# Thumbnails
'thumbnail-more' => 'বড় করো',
'tooltip-pt-watchlist' => 'যে পাতাগুলির পরিবর্তন আপনি নজরে রেখেছেন, তাদের তালিকা',
'tooltip-pt-mycontris' => 'আপনার অবদানগুলোর তালিকা',
'tooltip-pt-login' => 'আপনার লগ-ইন করাটা বাঞ্চনীয়, কিন্তু তা বাধ্যতামূলক নয়।',
-'tooltip-pt-anonlogin' => 'আপনাকে লগ ইন করতে উৎসাহ দেয়া হচ্ছে, তবে এটা বাধ্যতামূলক নয়।',
'tooltip-pt-logout' => 'প্রস্থান',
'tooltip-ca-talk' => 'বিষয়বস্তু পাতা সম্পর্কে আলোচনা',
'tooltip-ca-edit' => 'আপনি এই পাতা সম্পাদনা করতে পারেন। অনুগ্রহ করে সংরক্ষণের আগে প্রাকদর্শন করুন।',
# Patrol log
'patrol-log-page' => 'পরীক্ষণ লগ',
'patrol-log-header' => 'এটি যাচাইকৃত রিভিশনের তালিকা।',
-'log-show-hide-patrol' => '$1 পরীক্ষণ লগ',
+'log-show-hide-patrol' => 'পরীক্ষণ লগ $1',
# Image deletion
'deletedrevision' => 'মুছে ফেলা পুরাতন সংশোধন $1',
'version-hook-name' => 'হুকের নাম',
'version-hook-subscribedby' => 'সাবস্ক্রাইব করেছেন',
'version-version' => '(সংস্করণ $1)',
-'version-license' => 'লাইসেন্স',
+'version-license' => 'মিডিয়াউইকি লাইসেন্স',
+'version-ext-license' => 'লাইসেন্স',
+'version-ext-colheader-name' => 'এক্সটেনশন',
+'version-ext-colheader-version' => 'সংস্করণ',
+'version-ext-colheader-license' => 'লাইসেন্স',
+'version-ext-colheader-description' => 'বিবরণ',
+'version-ext-colheader-credits' => 'লেখক',
+'version-license-title' => '$1-এর জন্য লাইসেন্স',
+'version-credits-title' => '$1-এর জন্য কৃতিত্ব',
+'version-credits-not-found' => 'এই এক্সটেনশনটির জন্য কোনো বিস্তারিত কৃতিত্ব তথ্য পাওয়া যায়নি।',
'version-poweredby-credits' => "এইক উইকিটি পরিচালিত হচ্ছে '''[https://www.mediawiki.org/ মিডিয়াউইকি]'''-এর মাধ্যমে, কপিরাইট © ২০০১-$1 $2।",
'version-poweredby-others' => 'অন্যান্য',
'version-poweredby-translators' => 'translatewiki.net অনুবাদকগণ',
'version-entrypoints-header-url' => 'ইউআরএল',
# Special:Redirect
-'redirect' => 'ফাà¦\87ল, বà§\8dযবহারà¦\95রà§\80, à¦\85থবা রিà¦à¦¿à¦¶ন আইডি দ্বারা পুনঃনির্দেশ করা হয়েছে',
+'redirect' => 'পাতা, ফাà¦\87ল, বà§\8dযবহারà¦\95রà§\80, à¦\85থবা সà¦\82শà§\8bধন আইডি দ্বারা পুনঃনির্দেশ করা হয়েছে',
'redirect-legend' => 'একটি ফাইল অথবা পাতায় পুনঃনির্দেশ করা হয়েছে',
-'redirect-summary' => 'à¦\8fà¦\87 বিশà§\87ষ পাতাà¦\9fি পà§\81নà¦\83নিরà§\8dদà§\87শিত হয়à§\87à¦\9bà§\87 à¦\8fà¦\95à¦\9fি ফাà¦\87লà§\87 (ফাà¦\87লà§\87র নাম), à¦\8fà¦\95à¦\9fি পাতা (রিà¦à¦¿à¦¶à¦¨ à¦\86à¦\87ডি), à¦\85থবা à¦\8fà¦\95à¦\9fি বà§\8dযবহারà¦\95রà§\80 পাতায় (সà¦\82à¦\96à§\8dযায় লà§\87à¦\96া বà§\8dযবহারà¦\95ারà§\80 à¦\86à¦\87ডি)। বà§\8dযবহার: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]], or [[{{#Special:Redirect}}/user/101]]।',
+'redirect-summary' => 'à¦\8fà¦\87 বিশà§\87ষ পাতাà¦\9fি à¦\8fà¦\95à¦\9fি ফাà¦\87লà§\87 (ফাà¦\87লà§\87র নাম), à¦\8fà¦\95à¦\9fি পাতায় (সà¦\82সà§\8dà¦\95রণ à¦\86à¦\87ডি বা পাতা à¦\86à¦\87ডি), à¦\85থবা à¦\8fà¦\95à¦\9fি বà§\8dযবহারà¦\95রà§\80 পাতায় (সà¦\82à¦\96à§\8dযায় লà§\87à¦\96া বà§\8dযবহারà¦\95ারà§\80 à¦\86à¦\87ডি) পà§\81নà¦\83নিরà§\8dদà§\87শিত হয়à§\87à¦\9bà§\87। বà§\8dযবহার: [[{{#Special:Redirect}}/file/à¦\89দাহরণ.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], à¦\85থবা [[{{#Special:Redirect}}/user/101]]।',
'redirect-submit' => 'যাও',
'redirect-lookup' => 'দেখুন:',
'redirect-value' => 'মান:',
'redirect-user' => 'ব্যবহারকারী আইডি',
+'redirect-page' => 'পাতার আইডি',
'redirect-revision' => 'পাতা সংস্করণ',
'redirect-file' => 'ফাইলের নাম',
'redirect-not-exists' => 'মান পাওয়া যায়নি',
'duration-minutes' => '$1 {{PLURAL:$1|মিনিট|মিনিট}}',
'duration-hours' => '$1 {{PLURAL:$1|ঘন্টা|ঘন্টা}}',
'duration-days' => '$1 {{PLURAL:$1|দিন|দিন}}',
-'duration-weeks' => '{{PLURAL: $1|সপ্তাহ|সপ্তাহ}}',
+'duration-weeks' => '$1 {{PLURAL:$1|সপ্তাহ}}',
'duration-years' => '$1 {{PLURAL:$1|বছর|বছর}}',
'duration-decades' => '$1 {{PLURAL:$1|দশক|দশক}}',
'duration-centuries' => '$1 {{PLURAL:$1|শতাব্দী|শতাব্দী}}',
$messages = array(
# User preference toggles
'tog-underline' => 'འོག་ཐིག་འཐེན་པ།',
-'tog-justify' => 'ཚིག་གི་ཚད་སྙོམས་པ།',
'tog-hideminor' => 'རྩོམ་སྒྲིག་ཆུང་ཚགས་སྦས་བ།',
'tog-hidepatrolled' => 'ལྟ་ཞིབ་བྱས་པའི་རྩོམ་སྒྲིག་སྦས་བ།',
'tog-newpageshidepatrolled' => 'ཤོག་ངོས་གསར་བར་ལྟ་ཞིབ་བྱས་པའི་རྩོམ་སྒྲིག་སྦས་བ།',
'tog-numberheadings' => 'རང་སྒྲིག་ཨང་རྟགས་འགོ་བརྗོད།',
'tog-showtoolbar' => 'རྩོམ་སྒྲིག་ལག་ཆ་སྟོན།(JavaScript ཡི་བརྡ་ཆད་དགོས།)',
'tog-editondblclick' => 'ཤོག་ངོས་རྩོམ་སྒྲིག་བྱེད་པར་ལན་གཉིས་རྡེབ།(JavaScript ཡི་བརྡ་ཆད་དགོས།)',
-'tog-editsection' => '[སྒྲིག་བཅོས།]འབྲེལ་མཐུད་གནོན་ཏེ་སྒྲིགབཅོས་སྡེ་ཚན་ཡོད་པར་འགྱིས།',
'tog-rememberpassword' => 'ངའི་ནང་འཛུལ་བཤར་ལྟ་ཆས་འདི་རུ་མང་མཐའ་ཉིན $1 {{PLURAL:$1}} དྲན་པར་མཛོད།',
'tog-watchcreations' => 'ངའི་ལྟ་ཐོའི་གྲས་སུ་གསར་བཟོ་བྱས་པ་ལ་ཤོག་ངོས་ཁ་སྣོན།',
'tog-watchdefault' => 'ངའི་ལྟ་ཐོའི་གྲས་སུ་རྩོམ་སྒྲིག་བྱས་པ་ལ་ཤོག་ངོས་ཁ་སྣོན།',
$messages = array(
# User preference toggles
'tog-underline' => 'লিঙ্কর তলে দুরগ দিক:',
-'tog-justify' => 'অনুচ্ছেদহানির দুরগি দ্বিয়পারাদেত্ত মান্নাকরিক',
'tog-hideminor' => 'হুরু পতানি গুর',
'tog-hidepatrolled' => 'পরীক্ষাইসে পতা অতা হাদিএহানর পতানিত আরুম কর',
'tog-newpageshidepatrolled' => 'পরীক্ষাইসে পতা অতা নুৱা পাতার লাতঙে আরুম কর',
'tog-numberheadings' => 'নিজেলত্ত পাজালার চিঙনাঙ',
'tog-showtoolbar' => 'পতানির আতিয়ার দেহাদে (জাভাস্ক্রিপ্ট)',
'tog-editondblclick' => 'দ্বিমাউ যাতিয়া পতাহান পতিক (জাভাস্ক্রিপ্ট)',
-'tog-editsection' => '[পতিক] লিঙ্ক এহান্ন পরিচ্ছদ পতানি অক',
'tog-editsectiononrightclick' => 'পরিচ্ছদ পতানির য়্যাথাঙহান বাতেদের গোথামগ <br /> পরিচ্ছদর চিঙনাঙর গজে যাতিলে দে (জাভাস্ক্রিপ্ট)',
-'tog-showtoc' => 'বিষয়র মাঠেলহানি দেহাদে (যে পাতারতা ৩হানর গজে চিঙনাঙ আসে)',
'tog-rememberpassword' => 'এরে ব্রাউজারর গজে সেশনর কা খন্তাচাবি মনে থ(সর্বোচ্চ $1 {{PLURAL:$1|দিনর|দিনর}} কা)',
'tog-watchcreations' => 'যে পতাহানি মি ইকরিসু অতা মর তালাবির তালিকাত থ',
'tog-watchdefault' => 'যে পতাহানি মি পতাসু অতা মর তালাবির তালিকাত থ',
'compareselectedversions' => 'বাসাইল সংস্করণহানি তুলনা কর',
'showhideselectedversions' => 'বাসিসি রিভিশনহানি দেখাদে/গুর',
'editundo' => 'আলকর',
-'diff-multi' => '({{PLURAL:$2|আতাকুরা আগ |$2 গ আতাকুরা}} সম্পাদন অসে {{PLURAL:$1|হমবুকর রিভিসন আহান|$1 হমবুকর রিভিসন হানি}} দেহাদেনা এহাত না মিহিসে।)',
# Search results
'searchresults' => 'বিসারলে অতার ফলাফল',
'searchprofile-everything-tooltip' => 'হাব্বি থাকে বিসারা (য়্যারির পাতাতউ)',
'searchprofile-advanced-tooltip' => 'নিজর লেপকরা নাঙথাকে বিসারা',
'search-result-size' => '$1 ({{PLURAL:$2|1 ৱাহি|$2 ৱাহিহানি}})',
-'search-result-category-size' => '{{PLURAL: $1 | 1 সদস্য | $1 সদস্যগি}} ({{PLURAL: $2 | 1 উপবিষয়থাকহানি | $2 হান}}, {{PLURAL: $3 | 1 ফাইল | $3 ফাইল}})',
+'search-result-category-size' => '{{PLURAL:$1 | 1 সদস্য | $1 সদস্যগি}} ({{PLURAL:$2 | 1 উপবিষয়থাকহানি | $2 হান}}, {{PLURAL:$3 | 1 ফাইল | $3 ফাইল}})',
'search-result-score' => 'মান্নপা $1%',
'search-redirect' => '(বারোআলথক $1)',
'search-section' => '(অনুচ্ছেদ $1)',
$messages = array(
# User preference toggles
'tog-underline' => 'Liammoù islinennet',
-'tog-justify' => 'Rannbennadoù marzekaet',
'tog-hideminor' => "Kuzhat ar c'hemmoù nevez dister",
'tog-hidepatrolled' => "Kuzhat ar c'hemmoù evezhiet e-touez ar c'hemmoù diwezhañ",
'tog-newpageshidepatrolled' => 'Kuzhat ar pajennoù evezhiet diouzh roll ar pajennoù nevez',
'tog-numberheadings' => 'Niverenniñ emgefre an titloù',
'tog-showtoolbar' => 'Diskouez ar varrenn ostilhoù aozañ',
'tog-editondblclick' => 'Daouglikañ evit kemmañ pajennoù',
-'tog-editsection' => 'Kemmañ ur rann dre al liammoù [kemmañ]',
'tog-editsectiononrightclick' => 'Kemmañ ur rann dre glikañ a-zehou war titl ar rann',
-'tog-showtoc' => 'Diskouez an daolenn<br /> (evit ar pennadoù zo ouzhpenn 3 rann enno)',
'tog-rememberpassword' => "Derc'hel soñj eus ma ger-tremen war an urzhiataer-mañ (evit $1 devezh{{PLURAL:$1||}} d'ar muiañ)",
'tog-watchcreations' => "Ouzhpennañ ar pajennoù krouet ganin da'm roll evezhiañ",
'tog-watchdefault' => "Ouzhpennañ ar pajennoù kemmet ganin da'm roll evezhiañ",
'invalidtitle-unknownnamespace' => 'Titl direizh gant an niverenn esaouenn anv $1 hag an destenn "$2" dianav',
'exception-nologin' => "N'oc'h ket kevreet",
'exception-nologin-text' => "Ar bajenn-mañ pe an ober-mañ a c'houlenn e vefec'h kevreet er wiki-mañ.",
+'exception-nologin-text-manual' => "$1, mar plij, evit gallout mont d'ar bajenn-mañ pe ober an dra-mañ",
# Virus scanner
'virus-badscanner' => "Kefluniadur fall : skanner viruzoù dianav : ''$1''",
'createacct-emailoptional' => "Chomlec'h postel (direizh)",
'createacct-email-ph' => "Skrivit ho chomlec'h postel",
'createacct-another-email-ph' => "Ebarzhiñ ur chomlec'h postel",
-'createaccountmail' => 'Dre bostel',
+'createaccountmail' => "Implijout ur ger-tremen dibad ha kas anezhañ d'ar chomlec'h postel diferetDre bostel",
'createacct-realname' => 'Anv gwir (diret)',
'createaccountreason' => 'Abeg :',
'createacct-reason' => 'Abeg',
'passwordtooshort' => '{{PLURAL:$1|1 arouezenn|$1 arouezenn}} hir a rank bezañ ar gerioù-tremen da nebeutañ.',
'password-name-match' => "Rankout a ra ho ker-tremen bezañ disheñvel diouzh hoc'h anv implijer.",
'password-login-forbidden' => 'Berzet eo ober gant an anv-implijer hag ar ger-tremen-mañ.',
-'mailmypassword' => 'Kasit din ur ger-tremen nevez',
+'mailmypassword' => 'Adderaouekaat ar ger-tremen',
'passwordremindertitle' => 'Ho ker-tremen berrbad nevez evit {{SITENAME}}',
'passwordremindertext' => "Unan bennak (c'hwi moarvat gant ar chomlec'h IP \$1)
en deus goulennet ma vo kaset dezhañ ur ger-tremen nevez evit {{SITENAME}} (\$4).
'showhideselectedversions' => 'Diskouez/Kuzhat ar stummoù diuzet',
'editundo' => 'dizober',
'diff-empty' => '(Disheñvelder ebet)',
-'diff-multi' => "({{PLURAL:$1|Ur reizhadenn da c'hortoz|$1 reizhadenn da c'hortoz}} gant {{PLURAL:$2|un implijer|$2 implijer}} kuzhet.)",
'diff-multi-manyusers' => "({{PLURAL:$1|Ur reizhadenn da c'hortoz|$1 reizhadenn da c'hortoz}} gant muioc'h eget $2 {{PLURAL:$2|implijer|implijer}} kuzhet.)",
'difference-missing-revision' => "!!{{PLURAL:$2|Un adweladur|$2 adweladurioù}} eus an disheñvelder ($1) {{PLURAL:$2|n'eo ket bet kavet|n'int ket bet adkavet}}.
'rows' => 'Linennoù :',
'columns' => 'Bannoù',
'searchresultshead' => 'Klask',
-'resultsperpage' => 'Niver a respontoù dre bajenn :',
'stub-threshold' => 'Bevenn uhelañ evit al <a href="#" class="stub">liammoù war-du an danvez pennadoù</a> (okted) :',
'stub-threshold-disabled' => 'Diweredekaet',
'recentchangesdays' => "Niver a zevezhioù da ziskouez er c'hemmoù diwezhañ :",
'recentchanges-summary' => "Dre ar bajenn-mañ e c'hallit heuliañ ar c'hemmoù diwezhañ bet degaset d'ar wiki.",
'recentchanges-noresult' => "N'eus bet kemm ebet a glot gant an dezverkoù-se e-pad ar prantad diferet.",
'recentchanges-feed-description' => "Heuilhit ar c'hemmoù diwezhañ er wiki el lusk-mañ.",
-'recentchanges-label-newpage' => "Gant ar c'hemm-mañ eo bet krouet ur bajenn nevez.",
+'recentchanges-label-newpage' => "Gant ar c'hemm-mañ ez eus bet krouet ur bajenn nevez.",
'recentchanges-label-minor' => "Ur c'hemm dister eo hemañ",
'recentchanges-label-bot' => "Gant ur bot eo bet degaset ar c'hemm-mañ.",
'recentchanges-label-unpatrolled' => "N'eo ket bet gwiriet ar c'hemm-mañ evit c'hoazh.",
-'recentchanges-label-plusminus' => 'Kemmet he deus ment ar bajenn eus an niver-se a bitoù',
-'recentchanges-legend-newpage' => '(gwelet ivez [[Dibar:PajennoùNevez|roll ar pajennoù nevez krouet]])',
+'recentchanges-label-plusminus' => 'Kemmet eo ment ar bajenn eus an niver-mañ a oktedoù',
+'recentchanges-legend-heading' => "'''Alc'hwez :'''",
+'recentchanges-legend-newpage' => '(gwelet ivez [[Special:NewPages|roll ar pajennoù nevez]])',
'rcnotefrom' => "Setu aze roll ar c'hemmoù c'hoarvezet abaoe an '''$2''' ('''$1''' d'ar muiañ).",
'rclistfrom' => "Diskouez ar c'hemmoù diwezhañ abaoe an $1.",
'rcshowhideminor' => "$1 ar c'hemmoù dister",
'filehist-comment' => 'Notenn',
'filehist-missing' => 'Restr diank',
'imagelinks' => 'Implij ar restr',
-'linkstoimage' => "Liammet eo {{PLURAL:$1|ar bajenn-mañ|an $1 pajenn-mañ}} d'ar restr-mañ :",
+'linkstoimage' => 'Liammet eo {{PLURAL:$1|ar bajenn-mañ|an $1 pajenn-mañ}} ouzh ar restr-mañ :',
'linkstoimage-more' => "Ouzhpenn $1 {{PLURAL:$1|bajenn zo liammet ouzh|pajenn zo liammet ouzh}} ar restr-mañ.
Ne laka ar roll-mañ war wel nemet {{PLURAL:$1|ar bajenn gentañ liammet ouzh|an $1 pajenn gentañ liammet ouzh}} ar rest-mañ.
Ur [[Special:WhatLinksHere/$2|roll klok]] a c'haller da gaout.",
'ninterwikis' => ' {{PLURAL:$1|interwiki|interwikis}}',
'nlinks' => '$1 {{PLURAL:$1|liamm|liamm}}',
'nmembers' => '$1 {{PLURAL:$1|elfenn|elfenn}}',
+'nmemberschanged' => '$1 → $2 {{PLURAL:$2|ezel}}',
'nrevisions' => '$1 {{PLURAL:$1|stumm|stumm}}',
'nviews' => '$1 {{PLURAL:$1|selladenn|selladenn}}',
'nimagelinks' => 'Implijet e $1 {{PLURAL:$1|pajenn|pajenn}}',
'protectedpages' => 'Pajennoù gwarezet',
'protectedpages-indef' => 'Gwarezoù da badout hepken',
'protectedpages-cascade' => 'Gwarez dre skalierad hepken',
+'protectedpages-noredirect' => 'Kuzhat an adkasoù',
'protectedpagesempty' => "N'eus pajenn gwarezet ebet gant an arventennoù-mañ evit poent.",
'protectedtitles' => 'Titloù gwarezet',
'protectedtitlesempty' => "N'eus bet gwarezet titl ebet dezhañ an arventennoù-se evit poent.",
'watchmethod-list' => "Gwiriañ ar c'hemmoù diwezhañ evit ar pajennoù evezhiet",
'watchlistcontains' => '$1 {{PLURAL:$1|pajenn|pajenn}} zo en ho rollad evezhiañ',
'iteminvalidname' => "Ur gudenn zo gant ar pennad « $1 » : n'eo ket mat e anv...",
-'wlnote' => "Setu aze {{PLURAL:$1|ar c'hemm diwezhañ|ar '''$1''' kemm diwezhañ}} c'hoarvezet e-kerzh an {{PLURAL:$2|eurvezh|'''$2''' eurvezh}} ziwezhañ, evit an $3 da $4.",
'wlshowlast' => 'Diskouez an $1 eurvezh $2 devezh diwezhañ $3',
'watchlist-options' => 'Dibarzhioù ar roll evezhiañ',
'tooltip-pt-watchlist' => "Roll ar pajennoù evezhiet ganeoc'h.",
'tooltip-pt-mycontris' => 'Roll ho tegasadennoù',
'tooltip-pt-login' => "Daoust ma n'eo ket ret, ec'h aliomp deoc'h kevreañ",
-'tooltip-pt-anonlogin' => "Daoust ma n'eo ket ret, ec'h aliomp deoc'h kevreañ.",
'tooltip-pt-logout' => 'Digevreañ',
'tooltip-ca-talk' => 'Kaozeadennoù diwar-benn ar pennad',
'tooltip-ca-edit' => 'Gallout a rit kemmañ ar bajenn-mañ. Implijit ar stokell Rakwelet a-raok enrollañ, mar plij.',
'version-parser-function-hooks' => "Galv an arc'hwelioù dielfennañ",
'version-hook-name' => 'Anv ar galv',
'version-hook-subscribedby' => 'Termenet gant',
-'version-version' => '(Stumm $1)',
-'version-license' => 'Aotre-implijout',
+'version-version' => '($1)',
+'version-license' => 'Aotre-implijout MediaWiki',
+'version-ext-license' => 'Aotre-implijout',
+'version-ext-colheader-name' => 'Astenn',
+'version-ext-colheader-version' => 'Stumm',
+'version-ext-colheader-license' => 'Aotre-implijout',
+'version-ext-colheader-description' => 'Deskrivadur',
+'version-ext-colheader-credits' => 'Aozerien',
+'version-license-title' => 'Aotre-implijout evit $1',
+'version-credits-title' => 'Kredoù evit $1',
'version-poweredby-credits' => "Mont a ra ar wiki-mañ en-dro a-drugarez da '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
'version-poweredby-others' => 're all',
'version-poweredby-translators' => 'troerien translatewiki.net',
'redirect-lookup' => 'Klask :',
'redirect-value' => 'Talvoud :',
'redirect-user' => 'ID an implijer',
+'redirect-page' => 'ID ar bajenn',
'redirect-revision' => 'Adwel ar bajenn',
'redirect-file' => 'Anv ar restr',
'redirect-not-exists' => "Talvoud n'eo ket bet kavet",
'duration-centuries' => "$1 {{PLURAL:$1|c'hantved|kantved}}",
'duration-millennia' => '$1 {{PLURAL:$1|milvloaz|milvoaz}}',
+# Image rotation
+'rotate-comment' => 'Skeudenn troet eus $1 {{PLURAL:$1|derez}} a-du gant an heol',
+
# Limit report
'limitreport-cputime' => 'Amzer implij ar CPU',
'limitreport-cputime-value' => '$1 {{PLURAL:$1|eiladenn}}',
'limitreport-postexpandincludesize-value' => '$1/$2 {{PLURAL:$2|okted}}',
'limitreport-templateargumentsize' => 'Ment arguzenn ar patrom',
'limitreport-templateargumentsize-value' => '$1/$2 {{PLURAL:$2|okted}}',
+'limitreport-expansiondepth' => 'Donder astenn brasañ',
# Special:ExpandTemplates
'expandtemplates' => 'Emled ar patromoù',
'expand_templates_remove_comments' => 'Lemel an notennoù kuit',
'expand_templates_remove_nowiki' => "Diverkañ a ra ar balizennoù <nowiki> en disoc'h",
'expand_templates_generate_xml' => 'Gwelet ar gwezennadur XML',
+'expand_templates_generate_rawhtml' => 'Diskouez an HTML kriz',
'expand_templates_preview' => 'Rakwelet',
);
* @author Edinwiki
* @author Fulup
* @author Geitost
+ * @author KWiki
* @author Kaganer
* @author Kal-El
* @author Malafaya
$messages = array(
# User preference toggles
'tog-underline' => 'Podvuci veze:',
-'tog-justify' => 'Uravnjaj pasuse',
'tog-hideminor' => 'Sakrij male izmjene u spisku nedavnih izmjena',
'tog-hidepatrolled' => 'Sakrij patrolirane izmjene u nedavnim promjenama',
'tog-newpageshidepatrolled' => 'Sakrij patrolirane stranice sa spiska novih stranica',
'tog-numberheadings' => 'Automatski numeriši podnaslove',
'tog-showtoolbar' => 'Prikaži traku s alatkama za uređivanje',
'tog-editondblclick' => 'Izmijeni stranice dvostrukim klikom',
-'tog-editsection' => 'Omogući da mijenjam pojedinačne odjeljke putem [uredi] linka',
'tog-editsectiononrightclick' => 'Uključite uređivanje odjeljka sa pritiskom na desno dugme miša u naslovu odjeljka',
-'tog-showtoc' => 'Prikaži sadržaj (u svim stranicama sa više od tri podnaslova)',
'tog-rememberpassword' => 'Zapamti moju šifru u ovom pregledniku (najviše $1 {{PLURAL:$1|dan|dana}})',
'tog-watchcreations' => 'Dodaj stranice i datoteke koje napravim na moj spisak praćenih članaka',
'tog-watchdefault' => 'Dodaj stranice i datoteke koje uređujem na moj spisak praćenih članaka',
'category-empty' => "''Ova kategorija trenutno ne sadrži članke ni medije.''",
'hidden-categories' => '{{PLURAL:$1|Sakrivena kategorija|Sakrivene kategorije}}',
'hidden-category-category' => 'Sakrivene kategorije',
-'category-subcat-count' => '{{PLURAL:$2|Ova kategorija ima sljedeću podkategoriju.|Ova kategorija ima {{PLURAL:$1|sljedeće podkategorije|sljedećih $1 podkategorija}}, od $2 ukupno.}}',
+'category-subcat-count' => '{{PLURAL:$2|Ova kategorija ima sljedeću podkategoriju.|Ova kategorija ima {{PLURAL:$1|sljedeću podkategoriju|sljedeće $1 podkategorije|sljedećih $1 podkategorija}}, od $2 ukupno.}}',
'category-subcat-count-limited' => 'Ova kategorija sadrži {{PLURAL:$1|slijedeću $1 podkategoriju|slijedeće $1 podkategorije|slijedećih $1 podkategorija}}.',
'category-article-count' => '{{PLURAL:$2|U ovoj kategoriji se nalazi $1 članak.|{{PLURAL:$1|Prikazan je $1 članak|Prikazana su $1 članka|Prikazano je $1 članaka}} od ukupno $2 u ovoj kategoriji.}}',
'category-article-count-limited' => '{{PLURAL:$1|Slijedeća $1 stranica je|Slijedeće $1 stranice su|Slijedećih $1 stranica je}} u ovoj kategoriji.',
'article' => 'Članak',
'newwindow' => '(otvara se u novom prozoru)',
'cancel' => 'Poništite',
-'moredotdotdot' => 'Još...',
+'moredotdotdot' => 'Više...',
'morenotlisted' => 'Ovaj spisak nije kompletan.',
'mypage' => 'Korisnička stranica',
'mytalk' => 'Razgovor',
'youhavenewmessages' => 'Imate $1 ($2).',
'youhavenewmessagesfromusers' => 'Imate $1 od {{PLURAL:$3|drugog korisnika|$3 korisnika}} ($2).',
'youhavenewmessagesmanyusers' => 'Imate $1 od mnogo korisnika ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|novu poruku|nove poruke}}',
-'newmessagesdifflinkplural' => '{{PLURAL:$1|posljednja izmjena|posljednje izmjene}}',
+'newmessageslinkplural' => '{{PLURAL:$1|novu poruku|999=nove poruke}}',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|posljednja izmjena|999=posljednje izmjene}}',
'youhavenewmessagesmulti' => 'Imate nove poruke na $1',
'editsection' => 'uredi',
'editold' => 'uredi',
'passwordtooshort' => 'Šifra mora imati najmanje {{PLURAL:$1|1 znak|$1 znaka|$1 znakova}}.',
'password-name-match' => 'Vaša šifra mora biti različita od Vašeg korisničkog imena.',
'password-login-forbidden' => 'Korištenje ovih korisničkih imena i šifara je zabranjeo.',
-'mailmypassword' => 'Pošalji mi novu šifru',
+'mailmypassword' => 'Poništi šifru/lozinku',
'passwordremindertitle' => 'Nova privremena šifra za {{SITENAME}}',
'passwordremindertext' => 'Neko (vjerovatno Vi, sa IP adrese $1) je zahtjevao da vam pošaljemo novu šifru za {{SITENAME}} ($4). Privremena šifra za korisnika "$2" je napravljena i glasi "$3". Ako ste to željeli, sad treba da se prijavite i promjenite šifru.
Vaša privremena šifra će isteči za {{PLURAL:$5|$5 dan|$5 dana}}.
# Special:PasswordReset
'passwordreset' => 'Poništavanje šifre',
'passwordreset-text-one' => 'Ispunite ovaj obrazac da biste resetovali Vašu šifru/lozinku.',
-'passwordreset-text-many' => '{{PLURAL:$1|Ispunite jedno od polja kako bi ste resetirali svoju šifru/lozinku.}}',
+'passwordreset-text-many' => '{{PLURAL:$1|Ispunite jedno od polja kako bi ste dobili privremenu šifru/lozinku putem e-pošte.}}',
'passwordreset-legend' => 'Poništi šifru',
'passwordreset-disabled' => 'Poništavanje šifre je onemogućeno na ovoj wiki.',
'passwordreset-emaildisabled' => 'E-pošta je onemogućena na ovom wikiju.',
'revdelete-hide-user' => 'Korisničko ime urednika/IP',
'revdelete-hide-restricted' => 'Ograniči podatke za administratore kao i za druge korisnike',
'revdelete-radio-same' => '(ne mijenjaj)',
-'revdelete-radio-set' => 'Vidljivo',
-'revdelete-radio-unset' => 'Sakriveno',
+'revdelete-radio-set' => 'Sakriveno',
+'revdelete-radio-unset' => 'Vidljivo',
'revdelete-suppress' => 'Sakrij podatke od administratora kao i od drugih',
'revdelete-unsuppress' => 'Ukloni ograničenja na vraćenim revizijama',
'revdelete-log' => 'Razlog:',
'showhideselectedversions' => 'Pokaži/sakrij odabrane verzije',
'editundo' => 'ukloni ovu izmjenu',
'diff-empty' => '(Nema razlike)',
-'diff-multi' => '({{plural:$1|Nije prikazana jedna međurevizija|Nisu prikazane $1 međurevizije|Nije prikazano $1 međurevizija}} od {{PLURAL:$2|jednog korisnika|$2 korisnika}})',
'diff-multi-manyusers' => '({{PLURAL:$1|Jedna međurevizija|$1 međurevizije|$1 međurevizija}} od više od $2 {{PLURAL:$2|korisnika|korisnika}} {{PLURAL:$1|nije prikazana|nisu prikazane}})',
'difference-missing-revision' => '{{PLURAL:$2|Jedna izmjena|$2 izmjene}} od ove razlike ($1) ne {{PLURAL:$2|postoji|postoje}}.
'powersearch-togglenone' => 'Ništa',
'search-external' => 'Vanjska pretraga',
'searchdisabled' => '<p>Izvinjavamo se! Puno pretraga teksta je privremeno onemogućena. U međuvremenu, možete koristiti Google za pretragu. Indeks može biti stariji.',
+'search-error' => 'Dogodila se greška prilikom pretraživanja: $1',
# Preferences page
'preferences' => 'Postavke',
'rows' => 'Redova',
'columns' => 'Kolona',
'searchresultshead' => 'Podešavanja rezultata pretrage',
-'resultsperpage' => 'Pogodaka po stranici:',
'stub-threshold' => 'Formatiranje <a href="#" class="stub">linkova stranica u začetku</a> (bajtova):',
'stub-threshold-disabled' => 'Isključen/a',
'recentchangesdays' => 'Broj dana za prikaz u nedavnim izmjenama:',
'recentchanges-legend' => 'Postavke nedavnih izmjena',
'recentchanges-summary' => 'Na ovoj stranici možete pratiti nedavne izmjene.',
'recentchanges-feed-description' => 'Na ovoj stranici možete pratiti nedavne izmjene.',
-'recentchanges-label-newpage' => 'Ovom izmjenom se pravi nova stranica',
+'recentchanges-label-newpage' => 'Ovom izmjenom pravi se nova stranica',
'recentchanges-label-minor' => 'Ovo je mala izmjena',
-'recentchanges-label-bot' => 'Ova izmjenu je načinio bot',
+'recentchanges-label-bot' => 'Ovu izmjenu napravio je bot',
'recentchanges-label-unpatrolled' => 'Ova izmjena još nije patrolirana',
-'recentchanges-label-plusminus' => 'Veličina stranice je se promjenila za ovoliko bajtova',
+'recentchanges-label-plusminus' => 'Veličina stranice promijenila se za ovoliko bajtova',
+'recentchanges-legend-heading' => "'''Legenda:'''",
'recentchanges-legend-newpage' => '(također pogledajte [[Special:NewPages|spisak novih stranica]])',
'rcnotefrom' => 'Ispod su izmjene od <b>$2</b> (do <b>$1</b> prikazano).',
'rclistfrom' => 'Prikaži nove izmjene počev od $1',
'rcshowhideminor' => '$1 male izmjene',
'rcshowhidebots' => '$1 botove',
-'rcshowhideliu' => '$1 prijavljene korisnike',
+'rcshowhideliu' => '$1 registrovanih korisnika',
'rcshowhideanons' => '$1 anonimne korisnike',
'rcshowhidepatr' => '$1 patrolirane izmjene',
'rcshowhidemine' => '$1 moje izmjene',
'watchmethod-list' => 'provjerava se da li ima nedavnih izmjena u praćenim stranicama',
'watchlistcontains' => 'Vaš spisak praćenih članaka sadrži $1 {{PLURAL:$1|stranicu|stranica}}.',
'iteminvalidname' => "Problem sa '$1', neispravno ime...",
-'wlnote' => "Ispod je {{PLURAL:$1|najskorija izmjena|'''$1''' najskorije izmjene|'''$1''' najskorijih izmjena}} načinjenih {{PLURAL:$2|posljednjeg sata|u posljednjih '''$2''' sata|u posljednjih '''$2''' sati}}, od $3, $4.",
'wlshowlast' => 'Prikaži posljednjih $1 sati $2 dana $3',
'watchlist-options' => 'Opcije spiska praćenja',
'protect-title-notallowed' => 'Pregled stepena zaštite za "$1"',
'prot_1movedto2' => 'članak [[$1]] premješten na [[$2]]',
'protect-badnamespace-title' => 'Nezaštitljiv imenski prostor',
-'protect-badnamespace-text' => 'Stranice u ovom imenskom prostoru se ne mogu zaštititi.',
+'protect-badnamespace-text' => 'Stranice u ovom imenskom prostoru ne mogu se zaštititi.',
'protect-norestrictiontypes-text' => 'Ova stranica se ne može zaštititi jer nema dostupnih oblika ograničenja.',
'protect-norestrictiontypes-title' => 'Nezaštitljiva strana',
'protect-legend' => 'Potvrdite zaštitu',
'undeleteextrahelp' => "Da vratite cijelu historiju članka, ostavite sve kutijice neoznačene i kliknite '''''{{int:undeletebtn}}'''''.
Da bi izvršili selektivno vraćanje, odaberite kutijice koje odgovaraju revizijama koje želite vratiti, i kliknite '''''{{int:undeletebtn}}'''''.",
'undeleterevisions' => '{{PLURAL:$1|$1 revizija arhivirana|$1 revizije arhivirane|$1 revizija arhivirano}}',
-'undeletehistory' => 'Ako vratite stranicu, sve revizije će biti vraćene njenoj historiji.
-Ako je nova stranica istog imena napravljena od brisanja, vraćene revizije će se pojaviti u njenoj ranijoj historiji.',
+'undeletehistory' => 'Ako vratite stranicu, sve će revizije biti vraćene u njenu historiju.
+Ako je nova stranica istog imena napravljena od brisanja, vraćene revizije pojavit će se u njenoj ranijoj historiji.',
'undeleterevdel' => 'Vraćanje obrisanog se neće izvršiti ako bi rezultiralo da zaglavlje stranice ili revizija datoteke bude djelimično obrisano.
U takvim slučajevima, morate ukloniti označene ili otkriti sakrivene najskorije obrisane revizije.',
'undeletehistorynoadmin' => 'Ova stranica je izbrisana. Ispod se nalazi dio historije brisanja i historija revizija izbrisane stranice. Tekst izbrisane stranice je vidljiv samo korisnicima koji su administratori.',
'tooltip-pt-watchlist' => 'Spisak članaka koje pratite.',
'tooltip-pt-mycontris' => 'Spisak vašeg doprinosa',
'tooltip-pt-login' => 'Predlažemo da se prijavite, ali nije obvezno.',
-'tooltip-pt-anonlogin' => 'Prijava nije obavezna, ali donosi mnogo koristi.',
'tooltip-pt-logout' => 'Odjava sa projekta {{SITENAME}}',
'tooltip-ca-talk' => 'Razgovor o sadržaju',
'tooltip-ca-edit' => 'Možete da uređujete ovaj članak. Molimo Vas, koristite dugme "Prikaži izgled',
'pageinfo-length' => 'Dužina stranice (u bajtovima)',
'pageinfo-article-id' => 'ID stranice',
'pageinfo-language' => 'Jezik sadržaja stranice',
+'pageinfo-content-model' => 'Model sadržaj stranice',
'pageinfo-robot-policy' => 'Indeksiranje od strane robota',
'pageinfo-robot-index' => 'Dozvoljeno',
'pageinfo-robot-noindex' => 'Nije dozvoljeno',
'svg-long-desc' => 'SVG fajl, dozvoljeno $1 × $2 piksela, veličina fajla: $3',
'svg-long-desc-animated' => 'Animirana SVG datoteka, nominalno: $1 × $2 piksela, veličina datoteke: $3',
'svg-long-error' => 'Nevaljana SVG datoteka: $1',
-'show-big-image' => 'Vidi sliku u punoj veličini (rezoluciji)',
+'show-big-image' => 'Izvorna datoteka',
'show-big-image-preview' => 'Veličina ovog prikaza: $1.',
'show-big-image-other' => '{{PLURAL:$2|Druga rezolucija|Ostale rezolucije}}: $1.',
'show-big-image-size' => '$1 × $2 piksela',
'redirect-submit' => 'Idi',
'redirect-value' => 'Vrijednost:',
'redirect-user' => 'Korisnički ID',
+'redirect-page' => 'ID stranice',
'redirect-revision' => 'Verzija stranice',
'redirect-file' => 'Naziv datoteke',
'redirect-not-exists' => 'Vrijednost nije pronađena',
# Special:SpecialPages
'specialpages' => 'Posebne stranice',
+'specialpages-note-top' => 'Legenda',
'specialpages-note' => '* Normalne posebne stranice.
* <strong class="mw-specialpagerestricted">Zaštićene posebne stranice.</strong>',
'specialpages-group-maintenance' => 'Izvještaji za održavanje',
$messages = array(
# User preference toggles
'tog-underline' => 'Subratlla els enllaços:',
-'tog-justify' => 'Alineació justificada dels paràgrafs',
'tog-hideminor' => 'Amaga les edicions menors en la pàgina de canvis recents',
'tog-hidepatrolled' => 'Amaga edicions patrullades als canvis recents',
'tog-newpageshidepatrolled' => 'Amaga pàgines patrullades de la llista de pàgines noves',
'tog-numberheadings' => 'Enumera automàticament els encapçalaments',
'tog-showtoolbar' => "Mostra la barra d'eines d'edició (cal JavaScript)",
'tog-editondblclick' => 'Edita les pàgines amb un doble clic (cal JavaScript)',
-'tog-editsection' => 'Activa la modificació de seccions mitjançant els enllaços [modifica]',
'tog-editsectiononrightclick' => "Habilita l'edició per seccions en clicar amb el botó dret sobre els títols de les seccions (cal JavaScript)",
-'tog-showtoc' => 'Mostra la taula de continguts (per pàgines amb més de 3 seccions)',
'tog-rememberpassword' => 'Recorda la sessió al navegador (per un màxim de {{PLURAL:$1|dia|dies}})',
'tog-watchcreations' => 'Afegeix les pàgines que vagi creant i fitxers que carregui a la llista de seguiment',
'tog-watchdefault' => 'Afegeix les pàgines que vagi editant a la llista de seguiment',
'noemailcreate' => "Has d'indicar una adreça de correu electrònic vàlida",
'passwordsent' => "S'ha enviat una nova contrasenya a l'adreça electrònica registrada per «$1».
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.',
+'blocked-mailpassword' => "S'ha blocat la vostra adreça IP. 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'enviï 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 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}}.",
'retypenew' => 'Torneu a escriure la nova contrasenya:',
'resetpass_submit' => 'Definiu una contrasenya i inicieu una sessió',
'changepassword-success' => "S'ha canviat la vostra contrasenya amb èxit!",
+'changepassword-throttled' => "Heu realitzat massa intents d'inici de sessió.
+Espereu $1 abans de tornar-ho a provar.",
'resetpass_forbidden' => 'No poden canviar-se les contrasenyes',
'resetpass-no-info' => "Heu d'estar registrats en un compte per a poder accedir directament a aquesta pàgina.",
'resetpass-submit-loggedin' => 'Canvia la contrasenya',
'changeemail-password' => 'La vostra contrasenya a {{SITENAME}}:',
'changeemail-submit' => 'Canvia de correu electrònic',
'changeemail-cancel' => 'Cancel·la',
+'changeemail-throttled' => "Heu realitzat massa intents d'inici de sessió.
+Espereu $1 abans de tornar-ho a provar.",
# Special:ResetTokens
'resettokens' => 'Reinicia els testimonis',
'permissionserrors' => 'Error de permisos',
'permissionserrorstext' => 'No teniu permisos per a fer-ho, {{PLURAL:$1|pel següent motiu|pels següents motius}}:',
'permissionserrorstext-withaction' => 'No teniu permís per a $2, {{PLURAL:$1|pel motiu següent|pels motius següents}}:',
-'recreate-moveddeleted-warn' => "'''Avís: esteu creant una pàgina que ha estat prèviament suprimida.'''
+'recreate-moveddeleted-warn' => "'''Avís: esteu creant una pàgina que s'ha suprimit prèviament.'''
Hauríeu de considerar si és realment necessari continuar editant aquesta pàgina.
-A continuació s'ofereix el registre d'esborraments i de reanomenaments de la pàgina:",
+A continuació s'ofereix el registre de supressions i de reanomenaments de la pàgina:",
'moveddeleted-notice' => "S'ha suprimit aquesta pàgina.
A continuació us mostrem com a referència el registre d'esborraments i reanomenaments de la pàgina.",
'log-fulllog' => 'Veure tot el registre',
'content-not-allowed-here' => 'No és permés el contingut "$1" a la pàgina [[$2]]',
'editwarning-warning' => "Si sortiu d'aquesta pàgina perdreu tots els canvis que hàgiu fet.
Si teniu un compte d'usuari, podeu eliminar aquest avís a la secció «Caixa d'edició» de les vostres preferències.",
+'editpage-notsupportedcontentformat-title' => "No s'admet el format del contingut",
+'editpage-notsupportedcontentformat-text' => "No s'admet el format del contingut $1 pel model de contingut $2.",
# Content models
'content-model-wikitext' => 'wikitext',
'cantcreateaccounttitle' => 'No es pot crear el compte',
'cantcreateaccount-text' => "[[User:$3|$3]] ha bloquejat la creació de comptes des d'aquesta adreça IP ('''$1''').
+El motiu donat per $3 és ''$2''",
+'cantcreateaccount-range-text' => "La creació de comptes des de les adreces IP en el rang '''$1''', que inclou la vostra adreça IP ('''$4'''), ha esta blocada per [[User:$3|$3]].
+
El motiu donat per $3 és ''$2''",
# History pages
'rev-deleted-user' => "(s'ha suprimit el nom d'usuari)",
'rev-deleted-event' => "(s'ha suprimit el registre d'accions)",
'rev-deleted-user-contribs' => "[nom d'usuari o adreça IP esborrada - modificació ocultada de les contribucions]",
-'rev-deleted-text-permission' => "Aquesta versió de la pàgina ha estat '''eliminada'''.
-Hi poden haver més detalls al [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registre d'esborrats].",
+'rev-deleted-text-permission' => "S'ha '''suprimit''' aquesta versió de la pàgina.
+Vegeu-ne més detalls al [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registre de supressions].",
'rev-deleted-text-unhide' => "S'ha '''suprimit''' la revisió d'aquesta pàgina.
Hi poden haver més detalls al [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registre d'esborrats].
Encara podeu [$1 veure aquesta revisió] si així ho desitgeu.",
Encara podeu [$1 veure aquesta revisió] si així ho desitgeu.",
'rev-deleted-text-view' => "S'ha '''suprimit''' aquesta versió de la pàgina.
Podeu veure-la; vegeu-ne més detalls al [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registre d'esborrats].",
-'rev-suppressed-text-view' => "Aquesta versió de la pàgina ha estat '''eliminada'''.
-Podeu veure-la; vegeu-ne més detalls al [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} registre d'esborrats].",
+'rev-suppressed-text-view' => "S'ha '''suprimit''' aquesta versió de la pàgina.
+Vegeu-ne més detalls al [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} registre de supressions].",
'rev-deleted-no-diff' => "No podeu veure aquesta comparativa perquè s'ha '''suprimit''' una de les versions.
Potser trobareu detalls al [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registre d'esborrats].",
'rev-suppressed-no-diff' => "No podeu veure aquesta diferència perquè s'ha '''suprimit''' una de les revisions.",
-'rev-deleted-unhide-diff' => "Una de les revisions d'aquesta comparativa ha estat '''eliminada'''.
-Potser trobareu detalls al [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registre d'esborrats].
+'rev-deleted-unhide-diff' => "S'ha '''eliminat''' una de les revisions d'aquesta comparativa.
+Vegeu-ne més detalls al [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registre de supressions].
Encara podeu [$1 veure aquesta comparativa] si així ho desitgeu.",
'rev-suppressed-unhide-diff' => "S¡ha '''suprimit''' una de les revisions d'aquesta comparativa.
Podeu veure'n més detalls al [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} registre de supressions].
Podeu seguir [$1 veient aquesta comparativa] si així ho desitgeu.",
'rev-deleted-diff-view' => "S'ha '''suprimit'' una de les revisions d'aquesta comparativa.
Podeu veure aquesta comparativa; poden haver-hi més detalls al [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registre d'esborraments].",
-'rev-suppressed-diff-view' => "Una de les revisions d'aquesta comparativa ha estat '''esborrada'''.
-Podeu veure aquesta comparativa; pot haver-hi més detalls al [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} registre de supressions].",
+'rev-suppressed-diff-view' => "S'ha '''suprimit'' una de les revisions d'aquesta comparativa.
+Vegeu-ne més detalls al [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} registre de supressions].",
'rev-delundel' => 'mostra/amaga',
'rev-showdeleted' => 'mostra',
'revisiondelete' => 'Esborrar/restaurar revisions',
'showhideselectedversions' => 'Mostra/oculta les versions seleccionades',
'editundo' => 'desfés',
'diff-empty' => '(Cap diferència)',
-'diff-multi' => '({{PLURAL:$1|Hi ha una revisió intermèdia |Hi ha $1 revisions intermèdies}} sense mostrar fetes per {{PLURAL:$2|un usuari|$2 usuaris}})',
'diff-multi-manyusers' => "({{PLURAL:$1|Hi ha una revisió intermèdia|Hi ha $1 revisions intermèdies}} sense mostrar fetes per més {{PLURAL:$2|d'un usuari|de $2 usuaris}})",
'difference-missing-revision' => "{{PLURAL:$2|Una revisió|$2 revisions}} d'aquesta diferència ($1) no {{PLURAL:$2|s'ha|s'han}} trobat.
'search-result-score' => 'Rellevància: $1%',
'search-redirect' => '(redirigit des de $1)',
'search-section' => '(secció $1)',
+'search-file-match' => '(coincideix amb el contingut del fitxer)',
'search-suggest' => 'Volíeu dir: $1',
'search-interwiki-caption' => 'Projectes germans',
'search-interwiki-default' => '$1 resultats:',
'rows' => 'Files',
'columns' => 'Columnes',
'searchresultshead' => 'Preferències de la cerca',
-'resultsperpage' => 'Resultats a mostrar per pàgina',
'stub-threshold' => 'Límit per a formatar l\'enllaç com <a href="#" class="stub">esborrany</a> (en octets):',
'stub-threshold-disabled' => 'Deshabilitat',
'recentchangesdays' => 'Dies a mostrar en els canvis recents:',
'fileexists-shared-forbidden' => 'Ja hi ha un fitxer amb aquest nom al fons comú de fitxers.
Si us plau, si encara desitgeu carregar el vostre fitxer, torneu enrera i carregueu-ne una còpia amb un altre nom. [[File:$1|thumb|center|$1]]',
'file-exists-duplicate' => 'Aquest fitxer és un duplicat {{PLURAL:$1|del fitxer |dels següents fitxers:}}',
-'file-deleted-duplicate' => "Un fitxer idèntic a aquest ([[:$1]]) ha estat esborrat amb anterioritat. Hauríeu de comprovar el registre d'esborrat del fitxer abans de tornar-lo a carregar.",
+'file-deleted-duplicate' => "S'ha suprimit anteriorment un fitxer idèntic a aquest ([[:$1]]). Hauríeu de comprovar el registre de supressions del fitxer abans de tornar-lo a carregar.",
+'file-deleted-duplicate-notitle' => 'Un fitxer idèntic a aquest fitxer havia estat suprimit abans, i també el títol. Hauríeu de demanar a algú que pugui veure les dades suprimides del fitxer que revisi la situació abans de procedir a tornar a carregar-lo.',
'uploadwarning' => 'Avís de càrrega',
'uploadwarning-text' => 'Modifiqueu la descripció de la imatge i torneu a intentar-ho.',
'savefile' => 'Desa el fitxer',
$1',
'upload-warning-subj' => 'Avís de càrrega',
-'upload-warning-msg' => 'Hi ha hagut un problema amb la teva càrrega de [$2]. Pots tornar a [[Special:Upload/stash/$1|formulari de càrrega]] per corregir aquest problema.',
+'upload-warning-msg' => 'Hi ha hagut un problema amb la càrrega de [$2]. Podeu tornar a [[Special:Upload/stash/$1|formulari de càrrega]] per corregir aquest problema.',
'upload-proto-error' => 'El protocol és incorrecte',
'upload-proto-error-text' => 'Per a les càrregues remotes cal que els URL comencin amb <code>http://</code> o <code>ftp://</code>.',
'statistics-pages' => 'Pàgines',
'statistics-pages-desc' => 'Totes les pàgines del wiki, incloent les pàgines de discussió, redireccions, etc.',
'statistics-files' => 'Fitxers carregats',
-'statistics-edits' => 'Edicions en pàgines des que el projecte {{SITENAME}} fou instaŀlat',
+'statistics-edits' => 'Edicions en pàgines des que el projecte {{SITENAME}} fou instal·lat',
'statistics-edits-average' => 'Edicions per pàgina de mitjana',
'statistics-views-total' => 'Visualitzacions totals',
'statistics-views-total-desc' => "No hom inclou l'accès a pàgines inexistents o pàgines especials",
'ninterwikis' => '$1 {{PLURAL:$1|interwiki|interwikis}}',
'nlinks' => '$1 {{PLURAL:$1|enllaç|enllaços}}',
'nmembers' => '$1 {{PLURAL:$1|membre|membres}}',
-'nmemberschanged' => '$1 → $2 {{PLURAL:$2|membre|membres}}',
+'nmemberschanged' => '$1 → $2 {{PLURAL:$2|element|elements}}',
'nrevisions' => '$1 {{PLURAL:$1|revisió|revisions}}',
'nviews' => '$1 {{PLURAL:$1|visita|visites}}',
'nimagelinks' => "S'utilitza en {{PLURAL:$1|una pàgina|$1 pàgines}}",
'protectedpages' => 'Pàgines protegides',
'protectedpages-indef' => 'Només proteccions indefinides',
'protectedpages-cascade' => 'Només proteccions en cascada',
+'protectedpages-noredirect' => 'Amaga redireccions',
'protectedpagesempty' => 'No hi ha cap pàgina protegida per ara',
'protectedtitles' => 'Títols protegits',
'protectedtitlesempty' => 'No hi ha cap títol protegit actualment amb aquests paràmetres.',
'watchnologintext' => "Heu d'[[Special:UserLogin|entrar]]
per modificar el vostre llistat de seguiment.",
'addwatch' => 'Afegeix a llista de seguiment',
-'addedwatchtext' => 'La pàgina "[[:$1]]" ha estat afegida a la vostra [[Special:Watchlist|llista de seguiment]].
+'addedwatchtext' => 'S\'ha afegit la pàgina "[[:$1]]" a la vostra [[Special:Watchlist|llista de seguiment]].
S\'hi mostraran els canvis futurs que tinguin lloc en aquesta pàgina i la corresponent discussió.',
'removewatch' => 'Treu de la llista de seguiment',
'removedwatchtext' => "S'ha tret la pàgina «[[:$1]]» de la vostra [[Special:Watchlist|llista de seguiment]].",
'watchmethod-list' => "s'està comprovant si hi ha edicions recents en les pàgines vigilades",
'watchlistcontains' => 'La vostra llista de seguiment conté {{PLURAL:$1|una única pàgina|$1 pàgines}}.',
'iteminvalidname' => "Hi ha un problema amb l'element '$1': el nom no és vàlid...",
-'wlnote' => "A sota hi ha {{PLURAL:$1|el darrer canvi|els darrers '''$1''' canvis}} en {{PLURAL:$2|la darrera hora|les '''$2''' darreres hores}}, a $4 del $3.",
'wlshowlast' => '<small>- Mostra les darreres $1 hores, els darrers $2 dies o $3</small>',
'watchlist-options' => 'Opcions de la llista de seguiment',
'delete-edit-reasonlist' => "Edita els motius d'eliminació",
'delete-toobig' => "Aquesta pàgina té un historial d'edicions molt gran, amb més de $1 {{PLURAL:$1|canvi|canvis}}. L'eliminació d'aquestes pàgines està restringida per a prevenir que hi pugui haver un desajustament seriós de la base de dades de tot el projecte {{SITENAME}} per accident.",
'delete-warning-toobig' => "Aquesta pàgina té un historial d'edicions molt gran, amb més de $1 {{PLURAL:$1|canvi|canvis}}. Eliminar-la podria suposar un seriós desajustament de la base de dades de tot el projecte {{SITENAME}}; aneu en compte abans dur a terme l'acció.",
+'deleting-backlinks-warning' => "'''Avís:''' Altres pàgines enllacen o transclouen de la pàgina que esteu a punt de suprimir.",
# Rollback
'rollback' => 'Reverteix edicions',
# Edit tokens
'sessionfailure-title' => 'Error de sessió',
-'sessionfailure' => "Sembla que hi ha problema amb la vostra sessió. Aquesta acció ha estat anuŀlada en prevenció de pirateig de sessió. Si us plau, pitgeu «Torna», i recarregueu la pàgina des d'on veniu, després intenteu-ho de nou.",
+'sessionfailure' => "S'ha produït un error amb la vostra sessió. S'ha anul·lat aquesta acció en prevenció de pirateig de sessió. Premeu «Torna», recarregueu la pàgina des d'on veniu i torneu-ho a intentar.",
# Protect
'protectlogpage' => 'Registre de protecció',
Vegeu la [[Special:BlockList|llista de bloqueigs]] per revisar-los.",
'ipb-blockingself' => 'Esteu a punt de blocar-vos a vós mateix! Esteu segurs de voler-ho fer?',
'ipb-confirmhideuser' => "Esteu a punt de bloquejar un usuari que està marcat amb l'opció «amaga l'usuari». Això suprimirà el seu nom a totes les llistes i registres. Esteu segurs de voler-ho fer?",
+'ipb-confirmaction' => 'Si esteu segur que voleu fer-ho, marqueu el camp «{{int:ipb-confirm}}» a la part inferior.',
'ipb-edit-dropdown' => 'Edita les raons per a blocar',
'ipb-unblock-addr' => 'Desbloca $1',
'ipb-unblock' => 'Desbloca un usuari o una adreça IP',
'change-blocklink' => 'canvia el blocatge',
'contribslink' => 'contribucions',
'emaillink' => 'correu electrònic',
-'autoblocker' => "Heu estat blocat automàticament perquè la vostra adreça IP ha estat recentment utilitzada per l'usuari ''[[User:$1|$1]]''.
+'autoblocker' => "Se us ha blocat automàticament perquè la vostra adreça IP ha estat recentment utilitzada per l'usuari ''[[User:$1|$1]]''.
El motiu del bloqueig de $1 és: ''$2''.",
'blocklogpage' => 'Registre de bloquejos',
'blocklog-showlog' => "S'ha blocat aquest usuari prèviament.
'range_block_disabled' => 'La facultat dels administradors per a crear bloquejos de rang està desactivada.',
'ipb_expiry_invalid' => "Data d'acabament no vàlida.",
'ipb_expiry_temp' => "Els blocatges amb ocultació de nom d'usuari haurien de ser permanents.",
-'ipb_hide_invalid' => "No s'ha pogut eliminar el compte; potser té massa edicions.",
+'ipb_hide_invalid' => "No s'ha pogut eliminar el compte; té més {{PLURAL:$1|d'una edició|de $1 edicions}}.",
'ipb_already_blocked' => '«$1» ja està blocat',
'ipb-needreblock' => "L'usuari $1 ja està blocat. Voleu canviar-ne els paràmetres del blocatge?",
'ipb-otherblocks-header' => 'Altres {{PLURAL:$1|bloquejos|bloquejos}}',
'importuploaderrortemp' => "La càrrega del fitxer d'importació ha fallat. Manca una carpeta temporal.",
'import-parse-failure' => "error a en importar l'XML",
'import-noarticle' => 'No hi ha cap pàgina per importar!',
-'import-nonewrevisions' => "Totes les revisions s'havien importat abans.",
+'import-nonewrevisions' => "No s'ha importat cap revisió (ja hi eren abans o s'han omès a causa d'errors).",
'xml-error-string' => '$1 a la línia $2, columna $3 (byte $4): $5',
'import-upload' => 'Carrega dades XML',
'import-token-mismatch' => 'Pèrdua de dades de sessió. Torneu-ho a intentar.',
'tooltip-pt-watchlist' => 'La llista de pàgines de les que estau vigilant els canvis.',
'tooltip-pt-mycontris' => 'Llista de les vostres contribucions.',
'tooltip-pt-login' => 'Us animem a registrar-vos, però no és obligatori',
-'tooltip-pt-anonlogin' => 'Us animem a registrar-vos, però no és obligatori.',
'tooltip-pt-logout' => "Finalitza la sessió d'usuari",
'tooltip-ca-talk' => "Discussió sobre el contingut d'aquesta pàgina",
'tooltip-ca-edit' => 'Podeu modificar aquesta pàgina. Si us plau, previsualitzeu-la abans de desar.',
'version-hook-name' => 'Nom del lligam',
'version-hook-subscribedby' => 'Subscrit per',
'version-version' => '(Versió $1)',
-'version-license' => 'Llicència',
+'version-license' => 'Llicència del MediaWiki',
+'version-ext-license' => 'Llicència',
+'version-ext-colheader-name' => 'Extensió',
+'version-ext-colheader-version' => 'Versió',
+'version-ext-colheader-license' => 'Llicència',
+'version-ext-colheader-description' => 'Descripció',
+'version-ext-colheader-credits' => 'Autors',
+'version-license-title' => 'Llicència de $1',
+'version-license-not-found' => "No s'ha trobat cap informació detallada de la llicència d'aquesta extensió.",
+'version-credits-title' => 'Crèdits de $1',
+'version-credits-not-found' => "No s'ha trobat cap informació detallada dels crèdits d'aquesta extensió.",
'version-poweredby-credits' => "El wiki funciona gràcies a '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
'version-poweredby-others' => 'altres',
'version-poweredby-translators' => 'Traductors de translatewiki.net',
MediaWiki es distribueix en l'esperança de ser d'utilitat, però SENSE CAP GARANTIA; ni tan sols la garantia implícita de COMERCIALITZACIÓ o ADEQUACIÓ A UNA FINALITAT DETERMINADA. En trobareu més detalls a la Llicència Pública General GNU.
Amb aquest programa heu d'haver rebut [{{SERVER}}{{SCRIPTPATH}}/COPYING una còpia de la Llicència Pública General GNU]; si no és així, adreceu-vos a la Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA o bé [//www.gnu.org/licenses/old-licenses/gpl-2.0.html llegiu-la en línia].",
-'version-software' => 'Programari instaŀlat',
+'version-software' => 'Programari instal·lat',
'version-software-product' => 'Producte',
'version-software-version' => 'Versió',
'version-entrypoints' => "URL de punts d'entrada",
'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-stasherror' => "S'ha produït un error en carregar el fitxer al dipòsit.",
'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»',
'expand_templates_generate_rawhtml' => "Mostra l'HTML sense filtrar",
'expand_templates_preview' => 'Previsualitza',
+# Unknown messages
+'uploadinvalidxml' => "No s'ha pogut analitzar l'XML del fitxer carregat.",
);
$messages = array(
# User preference toggles
'tog-underline' => 'Кlел сиз хьака хьажориган:',
-'tog-justify' => 'Нисде йоза шораллий агlонца',
'tog-hideminor' => 'Къайладаха кигийра нисдарш оц могӀама керла хийцамехь',
'tog-hidepatrolled' => 'Къайладаха гӀаролладина нисдарш оц могӀама керла нисдаршкахь',
'tog-newpageshidepatrolled' => 'Къайлайаха гlароллайина агlонаш оц могlама керла агlонашкахь',
'tog-numberheadings' => 'Ша шех хlитто терахь корташна',
'tog-showtoolbar' => 'Гайта лакхара гӀирсан дакъа нисйеш аттон оц тадар чохь (JavaScript)',
'tog-editondblclick' => 'Нисйе агӀонаш шозза тӀетаӀийча (JavaScript)',
-'tog-editsection' => 'Гайта хьажораг «нисйе» аьлла хӀора агӀона',
'tog-editsectiononrightclick' => 'Нисде дакъа шозза бакъехьар дахка тӀетаӀийча оцу кортан (JavaScript)',
-'tog-showtoc' => 'Гойти коьртнаш (оцу агlонашна лаххара 3 коьртнашца)',
-'tog-rememberpassword' => 'Даглаца сан дӀаяздар хӀокху браузеран тӀяхь (цхьан $1 {{PLURAL:$1|де|ден|динахь}})',
+'tog-rememberpassword' => 'Даглаца сан дӀаяздар хӀокху браузеран тӀяхь (цхьан $1 {{PLURAL:$1|де|динахь|ден}})',
'tog-watchcreations' => 'ТӀетоха ас кхоьллина агӀонаш тергаме могӀам чу',
'tog-watchdefault' => 'ТӀетоха ас нисйина агӀонаш тергаме могӀам чу',
'tog-watchmoves' => 'ТӀетоха ас цӀераш хийцина агӀонаш тергаме могӀам чу',
'december-date' => 'Декабрь $1',
# Categories related messages
-'pagecategories' => '{{PLURAL:$1|Категори|Категореш}}',
+'pagecategories' => '{{PLURAL:$1|1=Категори|Категореш}}',
'category_header' => 'Агlонаш оц категоречохь «$1»',
'subcategories' => 'Бухаркатегореш',
'category-media-header' => 'Файлаш оцу категори чохь «$1»',
'category-empty' => "''ХӀара категори хӀинца йаьсса ю.''",
-'hidden-categories' => '{{PLURAL:$1|Къайлаха категори|Къайлаха йолу категореш}}',
+'hidden-categories' => '{{PLURAL:$1|1=Къайлаха категори|Къайлаха йолу категореш}}',
'hidden-category-category' => 'Къайлаха йолу категореш',
-'category-subcat-count' => '{{PLURAL:$2|ХӀокху категори чохь ю хӀокхуьна бухар категори.|ХӀокху категори чохь ю $1 {{PLURAL:$1|бухара категори|бухара категореш}} $2 массо нах.}}',
-'category-subcat-count-limited' => 'Хlокх категори чохь {{PLURAL:$1|$1 бухар категори|$1 бухар категореша|$1 бухар категореш}}.',
-'category-article-count' => '{{PLURAL:$2|ХӀокху категори чохь яц цхьа агӀо бе.|{{PLURAL:$1|Гойташ $1 агӀо|Гойту $1 агӀонаш|Гойту $1 агӀонаш}} хӀокху категорешца кху $2.}}',
-'category-article-count-limited' => 'ХӀокх категори чохь {{PLURAL:$1|$1 агӀо|$1 агӀонаш}}.',
-'category-file-count' => '{{PLURAL:$2|ХӀокху категори чохь цхьа файл бе яц.|{{PLURAL:$1|Гойта $1 файл|Гойту $1 файл|Гойту $1 файлаш}} хӀокху категорешца кху $2.}}',
-'category-file-count-limited' => 'ХӀокх категори чохь {{PLURAL:$1|$1 файл|$1 файл|$1 файлаш}}.',
+'category-subcat-count' => '{{PLURAL:$2|1=ХӀокху категори чохь ю хӀокхуьна бухар категори.|ХӀокху категори чохь ю $1 {{PLURAL:$1|1=бухара категори|бухара категореш}} $2 массо нах.}}',
+'category-subcat-count-limited' => 'Хlокх категори чохь {{PLURAL:$1|$1 бухар категори|$1 бухар категореш|$1 бухар категореша}}.',
+'category-article-count' => '{{PLURAL:$2|1=ХӀокху категори чохь яц цхьа агӀо бе.|{{PLURAL:$1|1=Гойташ $1 агӀо|Гойту $1 агӀонаш}} хӀокху категорешца кху $2.}}',
+'category-article-count-limited' => 'ХӀокх категори чохь {{PLURAL:$1|1=$1 агӀо|$1 агӀонаш}}.',
+'category-file-count' => '{{PLURAL:$2|ХӀокху категори чохь цхьа файл бе яц.|{{PLURAL:$1|Гойта $1 файл|Гойту $1 файлаш|Гойту $1 файл}} хӀокху категорешца кху $2.}}',
+'category-file-count-limited' => 'ХӀокх категори чохь {{PLURAL:$1|$1 файл|$1 файлаш|$1 файл}}.',
'listingcontinuesabbrev' => '(кхин дlа)',
'index-category' => 'Меттигтерахьйо агlонаш',
'noindex-category' => 'ДӀахьушйоцу агӀонаш',
'navigation-heading' => 'Навигацин меню',
'errorpagetitle' => 'ГӀалат',
-'returnto' => 'Юхагlо оцу агlоне $1.',
+'returnto' => 'ЮхагӀо оцу агӀоне $1.',
'tagline' => 'Гlирс хlокхуьна бу {{grammar:genitive|{{SITENAME}}}}',
'help' => 'ГӀо',
'search' => 'Лаха',
'delete' => 'ДӀаяккха',
'deletethispage' => 'ДӀаяккха хӀара агӀо',
'undeletethispage' => 'ХӀара агӀо меттахӀоттор',
-'undelete_short' => 'Меттахlоттайé $1 {{PLURAL:$1|нисйинарг|нисйинарш|нисйинарш}}',
+'undelete_short' => 'МеттахӀоттайé $1 {{PLURAL:$1|1=нисйинарг|нисйинарш}}',
'viewdeleted_short' => 'Хьажар {{PLURAL:$1|$1 дlадаьккхина нийсдар|$1 дlадаьхна нийсдарш|$1 дlадаьхна нийсдарш}}',
'protect' => 'Гlаролла дé',
'protect_change' => 'хийца',
'badaccess' => 'ТӀекхачарехь гӀалат',
'badaccess-group0' => 'Шуьга кхочуш далур дац дехарца деш дерг',
-'badaccess-groups' => 'Дехарца деш дерг кхочуш далундерш бу хӀара декъашхой оцу {{PLURAL:$2|тобанашах|тобанах}} $1.',
+'badaccess-groups' => 'Дехарца деш дерг кхочуш далундерш бу хӀара декъашхой оцу {{PLURAL:$2|1=тобанашах|тобанах}} $1.',
'versionrequired' => 'Оьшу MediaWiki тайпанара $1',
'versionrequiredtext' => 'Болх бан хӀоку агӀонца оьшу MediaWiki тайпан $1. Хьажа. [[Special:Version|лелочу тайпанара башхонах лаьцна хаам]].',
'pagetitle-view-mainpage' => '{{SITENAME}}',
'retrievedfrom' => 'Хьост — «$1»',
'youhavenewmessages' => 'Хьуна кхечи $1 ($2).',
-'youhavenewmessagesfromusers' => 'Хьуна кхачанна $1 {{PLURAL:$3|$3 декъашхочунгара|$3 декъашхошкара}} ($2).',
+'youhavenewmessagesfromusers' => 'Хьуна кхачанна $1 {{PLURAL:$3|1=$3 декъашхочунгара|$3 декъашхошкара}} ($2).',
'youhavenewmessagesmanyusers' => 'Хьона еъна $1 дукху декъашхошкар ($2).',
'newmessageslinkplural' => '{{PLURAL:$1|керла хаам|999=керла хаамаш}}',
'newmessagesdifflinkplural' => '{{PLURAL:$1|тӀаьхьара бина хийцам|999=тӀаьхьара бина хийцамаш}}',
'youhavenewmessagesmulti' => 'Хьуна кхаьчна керла хаам оцу $1',
'editsection' => 'нисйé',
'editold' => 'нисйé',
-'viewsourceold' => 'Ñ\85Ñ\8cажа йолÑ\88 йолÑ\83Ñ\87Ñ\83 иÑ\88аÑ\80е',
+'viewsourceold' => 'Ñ\85Ñ\8cажа йолÑ\83Ñ\88 йолÑ\83Ñ\87Ñ\83 коде',
'editlink' => 'нисйé',
-'viewsourcelink' => 'Ñ\85Ñ\8cажа йолÑ\88 йолÑ\83Ñ\87Ñ\83 иÑ\88аÑ\80е',
+'viewsourcelink' => 'Ñ\85Ñ\8cажа йолÑ\83Ñ\88 йолÑ\83Ñ\87Ñ\83 коде',
'editsectionhint' => 'Нисде дакъа: $1',
'toc' => 'Чулацам',
'showtoc' => 'гайта',
'hidetoc' => 'къайлаяккха',
'collapsible-collapse' => 'къайлаяккха',
'collapsible-expand' => 'хьайаста',
-'thisisdeleted' => 'Хьажа йа меттахlоттайé $1?',
-'viewdeleted' => 'Ð¥Ñ\8cалÑ\85Ñ\85Ñ\8cожи $1?',
-'restorelink' => '{{PLURAL:$1|$1 дӀадаьккхина нийсдар|$1 дӀадяхна нийсдарш}}',
+'thisisdeleted' => 'Хьажа я меттахӀоттайé $1?',
+'viewdeleted' => 'Ð¥Ñ\8cожий $1?',
+'restorelink' => '{{PLURAL:$1|1=$1 дӀадаьккхина нийсдар|$1 дӀадяхна нийсдарш}}',
'feedlinks' => 'Оцу хатlаьхь:',
'feed-invalid' => 'Тайпан нийсадоцу талол оцу куьгтаlорна.',
'feed-unavailable' => 'Хаитарца йолу асанаш тlекхочучехь яц',
'page-atom-feed' => '«$1» — Atom-аса',
'feed-atom' => 'Атом',
'feed-rss' => 'RSS',
-'red-link-title' => '$1 (ишта агlо йоцуш йу)',
+'red-link-title' => '$1 (ишта агӀо йоцуш ю)',
'sort-descending' => 'Ма хийла нисяр',
'sort-ascending' => 'Ма хила нисяр',
'nstab-user' => 'Декъашхо',
'nstab-media' => 'Медиа агӀо',
'nstab-special' => 'Белха агlо',
-'nstab-project' => 'Ð\9aÑ\85олламеÑ\85',
+'nstab-project' => 'Ð\9fÑ\80оекÑ\82аÑ\85 лаÑ\8cÑ\86на',
'nstab-image' => 'Файл',
'nstab-mediawiki' => 'Хаам',
'nstab-template' => 'Кеп',
# Main script and global functions
'nosuchaction' => 'Ишта дийриг дац',
+'nosuchactiontext' => 'ДӀаязйина URL нийса яц.
+URL язъеш гӀалат даьлла хила мега.
+Иза кхин {{SITENAME}} пороектехь гӀалат хила мега.',
'nosuchspecialpage' => 'Иштта белхан агӀо яц',
'nospecialpagetext' => '<strong>Иштта белхан агӀо яц.</strong>
'no-null-revision' => '«$1» агӀона нисдар дан цаделира',
'badtitle' => 'Цамегаш йолу цlе',
'badtitletext' => 'Дехарца йолу агlонан цlе нийса яц, йаьсса ю, хила мега нийса ца хlоттийна меттаюкъар йа юкъарвики цlе. Хила мега, цlарца цамагош йолу саберг.',
-'perfcached' => 'Лахара хаам схьаэца кэша чура цундела тӀехьарлаьра хийцамаш гойтуш бац. Кэша чохь латтаё оцул $1 кӀезиг {{PLURAL:$1|дӀаяздар|дӀаяздарш}}.',
-'perfcachedts' => 'Лахара хаам схьаэца кэша чура иза тӀаьхьара карла ялла $1. Кэша чохь латта до оцул $4 кӀезиг {{PLURAL:$4|дӀаяздар|дӀаяздарш}}.',
+'perfcached' => 'Лахара хаам схьаэца кэша чура цундела тӀехьарлаьра хийцамаш гойтуш бац. Кэша чохь латтаё оцул $1 кӀезиг {{PLURAL:$1|1=дӀаяздар|дӀаяздарш}}.',
+'perfcachedts' => 'Лахара хаам схьаэца кэша чура иза тӀаьхьара карла ялла $1. Кэша чохь латта до оцул $4 кӀезиг {{PLURAL:$4|1=дӀаяздар|дӀаяздарш}}.',
'querypage-no-updates' => 'ХӀинца хӀара агӀо карлаякхар дӀадайина ду.
Кхузахь гайтина болу хаамаш карла боккхур бац.',
'viewsource' => 'Хьажар',
'viewsource-title' => 'Агӏона $1 дуьххьарлера йозане хьажар',
'actionthrottled' => 'Сиххалин доза тохар',
+'actionthrottledtext' => 'Спам цахилийта хӀара дешдерг кӀезиг хенахь дукху ца дайта дихкина ду. Дехар до массийта минот яьлча гӀорта.',
'protectedpagetext' => 'ХӀара агӀо дӀакъойлина йу рé цадаккхийта.',
'viewsourcetext' => 'Хьоьга далундерг хьажар а дезахь хlокху агlон чура йоза хьаэцар:',
+'viewyourtext' => "Хьан йиш ю '''хьой нисдинчу''' дӀадолалун йозе хьажа а цуна копи ян а:",
'protectedinterface' => 'ХӀара схьгайтарна гӀирса хаамаш латтош йолу агӀо ю. Куьйгалхошна бен иза хийца цало.',
'editinginterface' => "'''Тергам бе:''' Ахьа таеш ю интерфейсан йоза долу агӀо програмин латторан.
Цуна бина хийцам хьокху википедин кхечу декъашхошна гур бу.
'mycustomjsprotected' => 'Хьан бакъо яц JavaScript агӀо тая.',
'myprivateinfoprotected' => 'Хьайн долара хаамна хийцам ба хьа йиш яц',
'mypreferencesprotected' => 'Хьай гӀирс нисбан хьа бакъо яц.',
+'ns-specialprotected' => 'ХӀокху «{{ns:special}}» цӀерийн меттигашан агӀонаш таян йиш яц.',
'exception-nologin' => 'ХӀинца а ахьа системин чохь болх беш бац',
# Virus scanner
'userlogin-yourpassword-ph' => 'Язъе хьай пароль',
'createacct-yourpassword-ph' => 'Язъе пароль',
'yourpasswordagain' => 'Юха язъе пароль:',
-'createacct-yourpasswordagain' => 'Бакъе пароль',
+'createacct-yourpasswordagain' => 'Бакъ йе пароль',
'createacct-yourpasswordagain-ph' => 'Кхин цкъа язъе пароль',
'remembermypassword' => 'Даглаца сан дӀаяздар хӀокху компьютеран тӀехь (цхьан $1 {{PLURAL:$1|динахь}})',
'userlogin-remembermypassword' => 'Дагахь латт ве/е со',
'userlogout' => 'Болх дӀаберзор',
'notloggedin' => 'ХӀинца а ахьа системин чохь болх беш бац',
'userlogin-noaccount' => 'Декъашхочун дӀаяздар дац хьа?',
-'userlogin-joinproject' => '{{grammar:genitive|{{SITENAME}}}} юкъахӀотта',
+'userlogin-joinproject' => 'Проектехь дӀаяздар кхоллар',
'nologin' => "Декъашхочун дӀаяздар дац хьа? '''$1'''.",
'nologinlink' => 'Кхолла декъашхочун дӀаяздар',
'createaccount' => 'Кхолла декъашхочун дӀаяздар',
'userlogin-createanother' => 'Кхолла декъашхочун кхин дӀаяздар',
'createacct-join' => 'ДӀаязбе лахахь хай хаам.',
'createacct-another-join' => 'Язбе лахахь керлачу декъашхочун дӀаяздаран хаам.',
-'createacct-emailrequired' => 'ÐлекÑ\82Ñ\80онни почтан адрес',
-'createacct-emailoptional' => 'ÐлекÑ\82Ñ\80онни почтан адрес (ца яздича мега)',
-'createacct-email-ph' => 'Ð\94Ó\80аÑ\8fзде Ñ\8dлекÑ\82Ñ\80онни почтан адрес',
-'createacct-another-email-ph' => 'Ð\94Ó\80аÑ\8fзде Ñ\8dлекÑ\82Ñ\80онни почтан адрес',
+'createacct-emailrequired' => 'ÐлекÑ\82Ñ\80онан почтан адрес',
+'createacct-emailoptional' => 'ÐлекÑ\82Ñ\80онан почтан адрес (ца яздича мега)',
+'createacct-email-ph' => 'Ð\94Ó\80аÑ\8fзде Ñ\8dлекÑ\82Ñ\80онан почтан адрес',
+'createacct-another-email-ph' => 'Ð\94Ó\80аÑ\8fзде Ñ\8dлекÑ\82Ñ\80онан почтан адрес',
'createaccountmail' => 'хааман зӀене хула',
'createacct-realname' => 'Хьан цӀе (ца язйича мега)',
'createaccountreason' => 'Бахьан:',
'createacct-submit' => 'Кхолла декъашхочун дӀаяздар',
'createacct-another-submit' => 'Кхолла декъашхочун кхин дӀаяздар',
'createacct-benefit-heading' => '{{SITENAME}} кхолийна хьо санначу наха.',
-'createacct-benefit-body1' => '{{PLURAL:$1|нисдар|нисдарш}}',
-'createacct-benefit-body2' => '{{PLURAL:$1|яззам|яззамаш}}',
-'createacct-benefit-body3' => '{{PLURAL:$1|декъашхо|декъашхой}} тӀаьхьарачу хенахь',
+'createacct-benefit-body1' => '{{PLURAL:$1|1=нисдар|нисдарш}}',
+'createacct-benefit-body2' => '{{PLURAL:$1|1=яззам|яззамаш}}',
+'createacct-benefit-body3' => '{{PLURAL:$1|1=декъашхо|декъашхой}} тӀаьхьарачу хенахь',
'badretype' => 'Ахьа язъен ишарш цхьатера яц',
'userexists' => 'Ахьа язъен декъашхочун цӀе йолуш ю, дехар до кхин цӀе харжар.',
'loginerror' => 'Гlалат ду декъашхо вовзарехь/йовзарехь',
'noname' => 'Ахьа магийтина йолу декъашхочун цӀе билгал йина яц.',
'loginsuccesstitle' => 'Хьан пароль тӀеэца, марша догӀила Википеди чу!',
'loginsuccess' => 'Хlинца ахьа болх бó оцу цlарца $1.',
-'nosuchuser' => 'ЦlаÑ\80Ñ\86а $1 декÑ\8aаÑ\88Ñ\85о ваÑ\86/Ñ\8fц.
-Декъашхой цlераш хаалуш йу дlайазвалрца/яларца элраш.
-Нийса юьй хьажа цlе йа [[Special:UserLogin/signup|дlаяздар кхолла керла]].',
+'nosuchuser' => 'Ð\98Ñ\88Ñ\82Ñ\82а $1 Ñ\86Ó\80е йолÑ\83Ñ\88 декÑ\8aаÑ\88Ñ\85оÑ\87Ñ\83н дÓ\80аÑ\8fздаÑ\80 дац.
+Декъашхой цӀераш хаалуш ю дӀаяздарца элпаш.
+Нийса юьй хьажа цӀе я [[Special:UserLogin/signup|дӀаяздар кхолла керла]].',
'nosuchusershort' => 'Ишта «$1» цӀе йолу декъашхо вац/яц. Хьажа цӀе нийса язйина юй.',
'nouserspecified' => 'Ахьа декъашхочун цӀе билгал ян езаш ю.',
'login-userblocked' => 'ХӀара декъашхо блоктоьхна ву/ю. Системин чувала/яла магийна дац.',
'wrongpassword' => 'Ахьа язйина йолу пароль нийса яц. Хьажа юху цхьаъз.',
'wrongpasswordempty' => 'Дехар до, язъе еса йоцу пароль.',
-'passwordtooshort' => 'Пароль хилла еза $1 {{PLURAL:$1|символ|символаш}} йолуш.',
+'passwordtooshort' => 'Пароль хилла еза $1 {{PLURAL:$1|1=символ|символаш}} йолуш.',
'password-name-match' => 'Язъен пароль декъашхочун дӀаяздарал башха хила еза.',
'password-login-forbidden' => 'Иштта декъашхочун цӀе а пароль а лелаян цамаго.',
'mailmypassword' => 'Пароль кхоссар',
'passwordremindertitle' => 'Декъашхочун {{grammar:genitive|{{SITENAME}}}} пароль дагайаийтар',
-'noemail' => 'ЦÓ\80е $1 йолÑ\83 декÑ\8aаÑ\88Ñ\85оÑ\87Ñ\83н Ñ\8dлекÑ\82Ñ\80онни адрес яздина дац.',
-'noemailcreate' => 'Ð\90Ñ\85Ñ\8cа нийÑ\81а Ñ\8dлекÑ\82Ñ\80онни почтан адрес дӀаяздан деза',
-'passwordsent' => 'Ð\9aеÑ\80ла паÑ\80олÑ\8c декÑ\8aаÑ\88Ñ\85оÑ\87Ñ\83н $1 Ñ\8dлекÑ\82Ñ\80онни адрес тӀе дӀахьажина. Дехар до, керла пароль еъча юху системин чугӀо.',
+'noemail' => 'ЦÓ\80е $1 йолÑ\83 декÑ\8aаÑ\88Ñ\85оÑ\87Ñ\83н Ñ\8dлекÑ\82Ñ\80онан адрес яздина дац.',
+'noemailcreate' => 'Ð\90Ñ\85Ñ\8cа нийÑ\81а Ñ\8dлекÑ\82Ñ\80онан почтан адрес дӀаяздан деза',
+'passwordsent' => 'Ð\9aеÑ\80ла паÑ\80олÑ\8c декÑ\8aаÑ\88Ñ\85оÑ\87Ñ\83н $1 Ñ\8dлекÑ\82Ñ\80онан адрес тӀе дӀахьажина. Дехар до, керла пароль еъча юху системин чугӀо.',
'blocked-mailpassword' => 'Хьан IP-адрес ца тадарш дан магийна дац, цуьндела пароль меттахӀотош йолу функци блоктоьхна ю.',
'eauthentsent' => 'ДӀаяздинчу электронан адрес тӀе хаам баийтина.
Даиман хаамаш баийта хааман чохь де бохург дан деза адрес хьай хилар бакъдеш.',
'usernamehasherror' => 'Декъашхочун цӀеран юкъахь хийла ца еза «цаца»',
'login-throttled' => 'Хьо дукха гӀиртира.
Дехар до, собар де $1 юха гӀортале.',
+'login-abort-generic' => 'Сестемин довзийта тарцаделира',
'loginlanguagelabel' => 'Мотт: $1',
# Change password dialog
'oldpassword' => 'Шираелла пароль:',
'newpassword' => 'Керла пароль:',
'retypenew' => 'Юха язъйе керла пароль:',
+'resetpass_submit' => 'Пароль дӀахӀоттийна системин чугӀо',
+'changepassword-success' => 'Хьан пароль кхиамца хийцина!',
'resetpass_forbidden' => 'Пароль хийца йиш яц',
'resetpass-no-info' => 'ХӀара агӀо лело системин чугӀо.',
'resetpass-submit-loggedin' => 'Хийца пароль',
'resetpass-submit-cancel' => 'Цаоьшу',
'resetpass-temp-password' => 'Цхьан хана пароль:',
+'resetpass-abort-generic' => 'Пароль хийцар дӀахедар',
# Special:PasswordReset
'passwordreset' => 'Пароль кхоссар',
'passwordreset-legend' => 'Пароль кхоссар',
'passwordreset-username' => 'Декъашхочун цӀе:',
'passwordreset-domain' => 'Домен:',
-'passwordreset-email' => 'Электронни почтан адрес:',
+'passwordreset-capture' => 'Хьажа беанчу хааме?',
+'passwordreset-email' => 'Электронан почтан адрес:',
+'passwordreset-emailtitle' => '{{SITENAME}}: декъашхочун дӀаяздарх лаьцна хаам',
+'passwordreset-emailelement' => 'Декъашхочун цӀе: $1
+Ханна йолу пароль: $2',
+'passwordreset-emailsent' => 'Электронан хаам баийтина кхоьссинчу паролах лаьцна хаам чохь болуш.',
+'passwordreset-emailsent-capture' => 'Электронан хаам баийтина кхоьссинчу паролах лаьцна хаам чохь болуш.
+цуна йозане хьажа йиш ю лахахь.',
# Special:ChangeEmail
'changeemail' => 'Хийца электрони почт',
-'changeemail-header' => 'ÐлекÑ\82Ñ\80они почтан адрес хийцар',
-'changeemail-text' => 'Юза Ñ\85Ó\80аÑ\80а Ñ\84оÑ\80ма Ñ\85Ñ\8cайн Ñ\8dлекÑ\82Ñ\80они почтан адрес хуьйцуш. Ахьа хийцар бакъдан язъян еза пароль.',
+'changeemail-header' => 'ÐлекÑ\82Ñ\80онан почтан адрес хийцар',
+'changeemail-text' => 'Юза Ñ\85Ó\80аÑ\80а Ñ\84оÑ\80ма Ñ\85Ñ\8cайн Ñ\8dлекÑ\82Ñ\80онан почтан адрес хуьйцуш. Ахьа хийцар бакъдан язъян еза пароль.',
'changeemail-no-info' => 'ХӀара агӀо лело системин чугӀо.',
-'changeemail-oldemail' => 'Ð\9aаÑ\80аÑ\80а Ñ\8dлекÑ\82Ñ\80онни почтан адрес:',
-'changeemail-newemail' => 'ÐлекÑ\82Ñ\80они почтан керла адрес:',
+'changeemail-oldemail' => 'Ð\9aаÑ\80аÑ\80а Ñ\8dлекÑ\82Ñ\80онан почтан адрес:',
+'changeemail-newemail' => 'ÐлекÑ\82Ñ\80онан почтан керла адрес:',
'changeemail-none' => '(яц)',
'changeemail-password' => 'Хьан пароль «{{SITENAME}}» проектан:',
'changeemail-submit' => 'Хийца email',
'resettokens-text' => 'Хьан йиш ю токенаш кхосса, цара йиш хуьлуьйту цхьаболу долара хаамашна тӀекхача, уьш ю хьан дӀаяздар ца вовшахтесна.
Хьона иза оьшу, ахьа хьай токенаш цхьам гучу яьхна елахь я хьан аккаунт йохийна елахь.',
+'resettokens-no-tokens' => 'Кхосса токенаш яц.',
'resettokens-legend' => 'Токенаш кхоссар',
'resettokens-tokens' => 'Токенаш:',
'resettokens-token-label' => '$1 (карара маьӀна: $2)',
'savearticle' => 'Дlайазъé агlо',
'preview' => 'Хьалха муха ю хьажа',
'showpreview' => 'Хьалха муха ю хьажар',
+'showlivepreview' => 'Сиха хьажар',
'showdiff' => 'Хlоттина болу хийцам',
'anoneditwarning' => "'''Тергам бе''': Ахьа хьай цӀарца тадарш деш дац. Хьан IP-адрес дӀаяздина хира ду хӀокху агӀон истори чу.",
+'anonpreviewwarning' => "''Системин чу цагӀахь хьан IP-адрес агӀона истори чу дӀаяз лур ду.''",
+'missingcommenttext' => 'Дехар до дӀаязбе хайн хаам лахахь.',
'summary-preview' => 'Цуьнах лаьцна хирду:',
+'subject-preview' => 'Коьрта могӀа хира бу:',
'blockedtitle' => 'Декъашхочун блоктоьхана',
+'blockednoreason' => 'бахьана билгалдина дац',
+'whitelistedittext' => 'Ахьа да деза $1 агӀона хийцамаш бан.',
'nosuchsectiontitle' => 'Дакъа каро йиш яц.',
'nosuchsectiontext' => 'Хьо гӀерта доцу дакъа тадан.
Хьо хӀокху агӀоне хьоьжучу хенахь иза кхечухьа деккхина я дӀадаьккхина хела тарло.',
'loginreqtitle' => 'Хьай цӀарца чугӀо',
'loginreqlink' => 'Логин',
+'loginreqpagetext' => 'Ахьа да деза $1, кхин агӀонаш хьажа.',
'accmailtitle' => 'Пароль дlаяхьийтина.',
'accmailtext' => "Пароль декъашхочуьна [[User talk:$1|$1]], йина ша шех хитта делла чу элпашах, дlаяхийтина хьокху $2 адрес тӀе.
Ишта хуьйла ширелла дӀаяьккхина агӀонан хьажораган дихьа делча.
Ма-дара хила мега [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} дӀайаьхарш йолу тептар] чохь.',
-'userpage-userdoesnotexist' => 'Ишта дlайазвар «<nowiki>$1</nowiki>» хlинца дац. Хьажа билгал, хьуна бакъалла лаьи кхолла йа хийцам ба хlокху агlон.',
+'userpage-userdoesnotexist' => 'Ишта декъашхочун дӀаяздар «<nowiki>$1</nowiki>» хӀинца дац. Хьажа билгал, хьуна бакъалла лаьий кхолла я хийцам ба хӀокху агӀон.',
'userpage-userdoesnotexist-view' => '«$1» ишта декъашхочун дӀаяздар дац.',
'blocked-notice-logextract' => 'ХӀара декъашхочун дӀаяздар блоктоьхна ду.
Лахахь гойту блоктохаршан тептар чура тӀаьхьарлера дӀаяздар:',
Хьой бина хийцам лахарчу корера лакхарчу коре баккха.
Кнопкан «{{int:savearticle}}» тӏетаӏича лакхара корера йоза дӏаязлурду.',
'yourtext' => 'Хьан йоза',
+'storedversion' => 'Ӏалашйина верси',
'editingold' => "'''ДӀахьедар. Ахьа таеш ю хӀокху агӀона шира елла верси.'''
АгӀо Ӏалаш йинчул тӀехьа хьалхо бина хийцамаш дӀабяра бу.",
'yourdiff' => 'Башхаллаш',
Лахахьа гойту хаамаш тlаьхьара бина болу хийцамна тептар чура:",
'cascadeprotectedwarning' => '<div id="cascadeprotectedwarning" style="border:1px solid #ee0; padding:10px; background:#ffa; margin-bottom:1em">[[file:Padlock.svg|left|25px|ДовгӀа|link=]]
ХӀара агӀо тада бакъо йолуш [[Project:Куьйгалхой|куьйгалхой]] бу, хӀунда аьлча и агӀо латийна кхечу агӀонашца хӀоттделлачу гӀаролле:</div>',
-'templatesused' => '{{PLURAL:$1|Кеп, лелийна|Кепаш, лелош ду}} хlокху агlон башхонца:',
-'templatesusedpreview' => '{{PLURAL:$1|Кеп, лелошдолу|Кепаш, лелошдолу}} оцу хьалх хьожучу агlонца:',
-'templatesusedsection' => 'ХӀокху декъан чохь {{PLURAL:$1|лелош йолу кеп|лелош йолу кепаш}}:',
+'templatesused' => '{{PLURAL:$1|1=Кеп, лелийна|Кепаш, лелош ду}} хlокху агlон башхонца:',
+'templatesusedpreview' => '{{PLURAL:$1|1=Кеп, лелошдолу|Кепаш, лелошдолу}} оцу хьалх хьожучу агlонца:',
+'templatesusedsection' => 'ХӀокху декъан чохь {{PLURAL:$1|1=лелош йолу кеп|лелош йолу кепаш}}:',
'template-protected' => '(гlароллийца)',
'template-semiprotected' => '(дуьззина доцуш гlаролла)',
-'hiddencategories' => 'ХӀара агӀо чуйогӀуш ю оцу $1 {{PLURAL:$1|къайлаха категори чу|къайлаха категореш чу}}:',
+'hiddencategories' => 'ХӀара агӀо чуйогӀуш ю оцу $1 {{PLURAL:$1|1=къайлаха категори чу|къайлаха категореш чу}}:',
'edittools' => '<!-- Кхузе буха диллина йоза гуш хир ду редоккхуче бухахь а хlума чуйоккхуче бухахь. -->',
+'nocreate-loggedin' => 'Хьан бакъо яц керла агӀонаш кхолла.',
+'sectioneditnotsupported-title' => 'Дакъош тадар ловш дац',
+'sectioneditnotsupported-text' => 'ХӀокху агӀорахь дакъош тадар ловш дац',
'permissionserrors' => 'ТӀекхачаре бакъона гӀалат',
-'permissionserrorstext' => 'Хьан бакъо яц кхочуш хилийта хийцам оцу {{PLURAL:$1|шолгlа бахьанца|шолгlа бахьанашца}}:',
-'permissionserrorstext-withaction' => "Хьан бакъо яц хlумда «'''$2'''» оцу {{PLURAL:$1|шолгlа бахьанца|шолгlа бахьанашца}}:",
+'permissionserrorstext' => 'Хьан бакъо яц кхочуш хилийта хийцам оцу {{PLURAL:$1|1=шолгlа бахьанца|шолгlа бахьанашца}}:',
+'permissionserrorstext-withaction' => "Хьан бакъо яц хlумда «'''$2'''» оцу {{PLURAL:$1|1=шолгlа бахьанца|шолгlа бахьанашца}}:",
'recreate-moveddeleted-warn' => "'''Тидам бе. Ахьа кхуллуш ю, хьалхо дӀаяьккхина йолу агӀо.'''
Хьажа, билгалла оьши хьуна хӀара агӀо юха кхолла.
'moveddeleted-notice' => 'Иза агӀо дӀаяьккхина яра.
Хаийтарна лахахьа гойту, цуьнца долу дӀаяздарш кху тептар чура дӀаяхарш а цӀе хийцарш а.',
'log-fulllog' => 'Хьажа деригге тептаре',
+'edit-hook-aborted' => 'Нисдар юхадаьккхина тӀехьожучо.
+ХӀу бахьна ду билгал дина дац.',
+'edit-gone-missing' => 'АгӀо карлаяккха цатарло.
+Иза дӀаяьккхина хила мега.',
+'edit-conflict' => 'Тадарна дойнаш.',
+'edit-no-change' => 'Хьан нисдар юхадаьккхина, ахьа хийцамаш бина цахилар бахьнехь.',
'postedit-confirmation' => 'Хьан нисдар дӏайазъдина.',
+'edit-already-exists' => 'Керла агӀо кхолла цатарло.
+Иза хӀинцале йолуш ю.',
+'defaultmessagetext' => 'Ӏад дитарца йоза',
+'content-failed-to-parse' => 'Чулацам $2 богӀуш бац $1: $3.',
+'invalid-content-data' => 'Хилийта йиш йоцу хаамаш',
+'content-not-allowed-here' => 'Чулацам "$1" [[$2]] агӀонгахь хилийта йиш яц',
# Content models
+'content-model-wikitext' => 'вики-йоза',
+'content-model-text' => 'цхьалхе йоза',
'content-model-javascript' => 'JavaScript',
'content-model-css' => 'CSS',
'revdelete-nooldid-title' => 'Билгалйина яц Ӏалашонан верси',
'revdelete-nooldid-text' => 'Ахьа хӀара функци кхочушъян билгалйина яц Ӏалашонан верси (я версеш).',
'revdelete-show-file-submit' => 'Хlаъ',
-'revdelete-selected' => "'''АгӀона [[:$1]] {{PLURAL:$2|къастина верси|къастина версеш}}:'''",
-'logdelete-selected' => "'''Тептар чура {{PLURAL:$1|хаьржина дӀаяздар|хаьржина дӀаяздарш}}:'''",
+'revdelete-selected' => "'''АгӀона [[:$1]] {{PLURAL:$2|1=къастина верси|къастина версеш}}:'''",
+'logdelete-selected' => "'''Тептар чура {{PLURAL:$1|1=хаьржина дӀаяздар|хаьржина дӀаяздарш}}:'''",
'revdelete-text' => "'''ДӀаяхна агӀонашан версеш а хелларш а гуш хир ду агӀона истори а тептаран а чохь, амма цара чулацам куьйгалхошна бен тӀекхочу чохь хир бац.'''
{{SITENAME}} проектан куьйгалхойн йиш хир ю хӀокху интерфейс чухула дӀааьхинарш меттахӀотта я.",
'revdelete-confirm' => 'Дехар до, бакъдар ахьа деш дерг [[{{MediaWiki:Policy-url}}|бакъонашца]] деш хилар.',
'revdelete-hide-image' => 'Къайлабаккха файлан чулацам',
'revdelete-hide-name' => 'Къайлаяккха дешдерг а цуна объект а',
'revdelete-hide-comment' => 'Хийцамах лаьцнарг',
-'revdelete-hide-user' => 'Ð\9aÑ\8aайлаÑ\8fккÑ\85а авÑ\82оÑ\80ан Ñ\86Ó\80е',
+'revdelete-hide-user' => 'Ð\94екÑ\8aаÑ\88Ñ\85оÑ\87Ñ\83н Ñ\86Ó\80е/IP-адÑ\80еÑ\81',
'revdelete-radio-same' => '(ма хийца)',
-'revdelete-radio-set' => 'Хlаъ',
-'revdelete-radio-unset' => 'Хlахlа',
+'revdelete-radio-set' => 'Къайлаяьккхина',
+'revdelete-radio-unset' => 'Гуш ерг',
+'revdelete-suppress' => 'Къайлабаха хаамаш куьйгалхойх а',
+'revdelete-unsuppress' => 'МеттахӀоьттина версешан дихкар къайладаккха',
'revdelete-log' => 'Бахьан:',
-'revdelete-submit' => 'Кхочушде {{PLURAL:$1|къастина версин|къастина версешан}}',
+'revdelete-submit' => 'Кхочушде {{PLURAL:$1|1=къастина версин|къастина версешан}}',
'revdelete-success' => "'''Версеш гуш хилар кхиамца хийцина.'''",
'revdelete-failure' => "'''Версеш гуш хилар хийца йиш яц:'''
$1",
'logdelete-success' => 'Хиларг гуш хилар хийцина.',
+'logdelete-failure' => "'''Тептаран гуш хилар хӀоттина дац:'''
+$1",
'revdel-restore' => 'Хийцам бе схьагарехь',
'pagehist' => 'АгӀона истори',
'deletedhist' => 'ДӀаяккхаран истори',
'revdelete-otherreason' => 'Кхин бахьна/тӀетохар:',
'revdelete-reasonotherlist' => 'Кхин бахьан',
'revdelete-edit-reasonlist' => 'Бахьанин список нисяр',
+'revdelete-offender' => 'АгӀона версен автор:',
+
+# Suppression log
+'suppressionlog' => 'Хьулдаран тептар',
# History merging
+'mergehistory' => 'Нисдарин истори цхьаьнатохар',
+'mergehistory-box' => 'Шин агӀона нисдарин истори цхьаьнатохар:',
'mergehistory-from' => 'Дуьххьарлера агӀоно',
+'mergehistory-into' => 'Ӏалашонан агӀо:',
+'mergehistory-list' => 'Цхьаьнатухуш долу нисдарин истори',
+'mergehistory-go' => 'Гайта цхьаьнатухуш долу нисдарш',
+'mergehistory-submit' => 'Цхьаьнатоха нисдарш',
+'mergehistory-empty' => 'Цхьаьнатоха нисдарш цакарий.',
'mergehistory-fail' => 'АгӀонийн истореш вовшахтоха цаделира, дехар до агӀона параметаршка а хене а хьажа.',
'mergehistory-invalid-source' => 'Хьостан нийса корта хила еза.',
'mergehistory-invalid-destination' => 'Юзийна агӀона нийса корта хила еза.',
'showhideselectedversions' => 'Гайта/къайлаяха хаьржина башхонаш',
'editundo' => 'цаоьшу',
'diff-empty' => '(башхалла яц)',
-'diff-multi' => '({{PLURAL:$1|гайтина яц $1 юккъера верси|гайтина яц $1 юккъера версеш}} {{PLURAL:$2|$2 декъашхочун|$2 декъашхой}})',
# Search results
'searchresults' => 'Лахарна хилам',
'searchresults-title' => 'Лаха «$1»',
'notextmatches' => 'Агlонаш чура йозанашца цхьатера йогlуш яц',
-'prevn' => '{{PLURAL:$1|хьалхарниг $1|хьалхарнаш $1|хьалхарнаш $1}}',
-'nextn' => '{{PLURAL:$1|тlаьхьйогlург $1|тlаьхьйогlурш $1|тlаьхьйогlурш $1}}',
-'prevn-title' => '{{PLURAL:$1|Хьалхара $1 дӀаяздар|Хьалхара $1 дӀаяздарш}}',
-'nextn-title' => '{{PLURAL:$1|ТӀаьхьара $1 дӀаяздар|ТӀаьхьара $1 дӀаяздарш}}',
-'shown-title' => 'АгӀона чохь $1 {{PLURAL:$1|дӀаяздар|дӀаяздарш}} гайта',
+'prevn' => 'хьалхарнаш {{PLURAL:$1|$1}}',
+'nextn' => 'тӀаьхьйогӀурш {{PLURAL:$1|$1}}',
+'prevn-title' => '{{PLURAL:$1|1=Хьалхара $1 дӀаяздар|Хьалхара $1 дӀаяздарш}}',
+'nextn-title' => '{{PLURAL:$1|1=ТӀаьхьара $1 дӀаяздар|ТӀаьхьара $1 дӀаяздарш}}',
+'shown-title' => 'АгӀона чохь $1 {{PLURAL:$1|1=дӀаяздар|дӀаяздарш}} гайта',
'viewprevnext' => 'Хьажа ($1 {{int:pipe-separator}} $2) ($3)',
'searchmenu-exists' => "'''ХӀокху вики чохь йолуш ю ишта агӀо «[[:$1]]»'''",
-'searchmenu-new' => "'''Кхолла ишта агlо «[[:$1]]» хlокху вики-кхолламашчохь!'''",
+'searchmenu-new' => "'''Кхолла ишта агӀо «[[:$1]]» хӀокху {{PLURAL:$2|0=|вики-проектехь.}}'''",
'searchprofile-articles' => 'Къаьстина агlонаш',
'searchprofile-project' => 'ГӀона а проектан а агӀонаш',
'searchprofile-images' => 'Мультимедиа',
'searchprofile-everything-tooltip' => 'Лаха массо агlонашкахь (дийцаре агlонашцани)',
'searchprofile-advanced-tooltip' => 'Лаха дехарца хlокху ана цlерашкахь',
'search-result-size' => '$1 ({{PLURAL:$2|$2 дош|$2 дешнаш|$2 дешнаш}})',
-'search-result-category-size' => '$1 {{PLURAL:$1|юкъаяр}} ($2 {{PLURAL:$2|бухара категори|бухара категореш}}, $3 {{PLURAL:$3|файл|файлаш}}).',
+'search-result-category-size' => '$1 {{PLURAL:$1|юкъаяр}} ($2 {{PLURAL:$2|1=бухара категори|бухара категореш}}, $3 {{PLURAL:$3|1=файл|файлаш}}).',
'search-redirect' => '(дlасахьажийна $1)',
'search-section' => '(дакъа $1)',
'search-suggest' => 'Хила мега ахьа лоьхарг: $1',
'searchrelated' => 'хlоттаделларг',
'searchall' => 'массо',
'showingresults' => 'Лахахьа {{PLURAL:$1|гойта|гойту|гойту}} <strong>$1</strong> {{PLURAL:$1|хилам|хиламаш|хиламаш}}, дlаболало кху № <strong>$2</strong>.',
-'showingresultsheader' => "{{PLURAL:$5|Хилам '''$1''' кху '''$3'''|Хиламаш '''$1 — $2''' кху '''$3'''}} оцун '''$4'''",
+'showingresultsheader' => "{{PLURAL:$5|1=Хилам '''$1''' кху '''$3'''|Хиламаш '''$1 — $2''' кху '''$3'''}} оцун '''$4'''",
'search-nonefound' => 'Дехаре терра цхьа хӀума ца карийна.',
'powersearch-legend' => 'Шуьро лахар',
'powersearch-ns' => 'Цlераши анахь лахар:',
'rows' => 'МогӀанаш:',
'columns' => 'БӀогӀамаш:',
'searchresultshead' => 'Лаха',
-'resultsperpage' => 'Карийначу дӀаяздаршан дукхалла:',
'stub-threshold' => 'Кеч яран доза <a href="#" class="stub">коьртамогӀамна хьажорагаш</a> (байташках):',
'recentchangesdays' => 'Керла нисдар гайта динахь:',
'recentchangesdays-max' => 'Къезиг $1 {{PLURAL:$1|дена}}',
'youremail' => 'Кехат яздо зlе цlе:',
'username' => '{{GENDER:$1|Декъашхочун цӀе}}:',
'uid' => 'Декъашхочун {{GENDER:$1|код}}:',
-'prefs-memberingroups' => '{{GENDER:$2|Тобана|Тобана}} {{PLURAL:$1|декъашхо|декъашхо}}:',
+'prefs-memberingroups' => '{{GENDER:$2|Тобана|Тобана}} {{PLURAL:$1|1=декъашхо|декъашхо}}:',
'prefs-registration' => 'ДӀаяздар кхолийна хан:',
'yourrealname' => 'Хьан бакъ цlе:',
'yourlanguage' => 'Мотт:',
'prefs-help-gender' => 'ТӀехь доцург: и хаам лелош бу цхьайолу хаамаш чохь декъашхочун пол гучуйоккхуш.
И хаам массарна гуш хир бу.',
'email' => 'Email',
-'prefs-help-email' => 'ÐлекÑ\82Ñ\80они поÑ\87Ñ\82ан адÑ\80еÑ\81 Ñ\86аÑ\85lоÑ\82Ñ\82ийÑ\87а аÑ\8a Ñ\85lумма дац, амма иза оьшар ю, нагахь хьуна хьай пароль йицлахь.',
-'prefs-help-email-others' => 'Ð\9aÑ\85ин дÓ\80а Ñ\86о кÑ\85еÑ\87Ñ\83 декÑ\8aаÑ\88Ñ\85оÑ\88на йиÑ\88 Ñ\85Ñ\83Ñ\8cлÑ\83Ñ\8cйÑ\82Ñ\83 Ñ\85Ñ\8cога Ñ\8dлекÑ\82Ñ\80онни кеÑ\85аÑ\82 даийÑ\82а Ñ\85Ñ\8cан агÓ\80она Ñ\87оÑ\85Ñ\8c йолÑ\83 Ñ\85Ñ\8cажоÑ\80иган гÓ\80онца.',
+'prefs-help-email' => 'ÐлекÑ\82Ñ\80онан поÑ\87Ñ\82ан адÑ\80еÑ\81 Ñ\86аÑ\85Ó\80оÑ\82Ñ\82ийÑ\87а а Ñ\85Ó\80умма дац, амма иза оьшар ю, нагахь хьуна хьай пароль йицлахь.',
+'prefs-help-email-others' => 'Ð\9aÑ\85ин дÓ\80а Ñ\86о кÑ\85еÑ\87Ñ\83 декÑ\8aаÑ\88Ñ\85оÑ\88на йиÑ\88 Ñ\85Ñ\83Ñ\8cлÑ\83Ñ\8cйÑ\82Ñ\83 Ñ\85Ñ\8cога Ñ\8dлекÑ\82Ñ\80онан кеÑ\85аÑ\82 даийÑ\82а Ñ\85Ñ\8cан агÓ\80она Ñ\87оÑ\85Ñ\8c йолÑ\83 Ñ\85Ñ\8cажоÑ\80иган гÓ\80оÑ\8cнца.',
'prefs-info' => 'Коьрта хаам',
'prefs-i18n' => 'Юкъардекъа мотт',
'prefs-signature' => 'КуьгтаӀор',
'group-autoconfirmed' => 'Ша тӀелаьцболу декъашхой',
'group-bot' => 'Шаболххой',
'group-sysop' => 'Куьйгалхой',
-'group-bureaucrat' => 'Ð\94аÑ\80жаÑ\85ой',
+'group-bureaucrat' => 'Ð\91Ñ\8eÑ\80окÑ\80аÑ\82аÑ\88',
'group-suppress' => 'Ревизораш',
'group-all' => '(массо)',
'group-user-member' => '{{GENDER:$1|декъашхо}}',
'group-bot-member' => 'шаболххо',
'group-sysop-member' => '{{GENDER:$1|куьйгалхо}}',
-'group-bureaucrat-member' => 'даржахо',
+'group-bureaucrat-member' => '{{GENDER:$1|бюрократхо}}',
'group-suppress-member' => 'левисорхо',
'grouppage-user' => '{{ns:project}}:Декъашхой',
'grouppage-autoconfirmed' => '{{ns:project}}:Бакъонаш йолу декъашхой',
'grouppage-bot' => '{{ns:project}}:Шаболххой',
'grouppage-sysop' => '{{ns:project}}:Куьйгалхой',
-'grouppage-bureaucrat' => '{{ns:project}}:Ð\94аÑ\80жаÑ\85ой',
+'grouppage-bureaucrat' => '{{ns:project}}:Ð\91Ñ\8eÑ\80окÑ\80аÑ\82аÑ\88',
'grouppage-suppress' => '{{ns:project}}:Ревизораш',
# Rights
'right-read' => 'агӀонашка хьажар',
-'right-edit' => 'Ð\90гÓ\80оаÑ\88 ниÑ\81Ñ\8fÑ\80',
+'right-edit' => 'агÓ\80онаÑ\88 нийÑ\81е',
'right-createpage' => 'АгӀонаш кхоллар (дийцарш дац)',
'right-createtalk' => 'Дийцаре агӀонаш кхоллар',
'right-createaccount' => 'декъашхошна керла дӀаяздарш кхоллар',
'right-move' => 'АгӀонашан цӀераш хийцар',
'right-move-subpages' => 'АгӀонашан цӀераш хийцар цера бухара агӀонашцан',
'right-move-rootuserpages' => 'декъашхочун ораман агӀонийн цӀераш хийцар',
-'right-movefile' => 'ФайланÑ\88и цӀе хийцар',
+'right-movefile' => 'Файлийн цӀе хийцар',
'right-suppressredirect' => 'агӀона цӀе хуьйцуш ширчу цӀарах ма кхолла дӀасахьажаяр',
'right-upload' => 'Файлаш чуйаьхар',
'right-reupload' => 'йолуш йолу чера тӀехула файлаш дӀаязъяр',
'right-import' => 'кхечу википедешкара агӀонаш импорт ян',
'right-importupload' => 'файлаш чуяхарца агӀонаш импорт ян',
'right-patrol' => 'нисдарш хьаьжна сана билгалдар',
+'right-autopatrol' => 'нисдарш хьаьжна сана автоматически билгалдан',
'right-patrolmarks' => 'керла нисдарийн хьаьжна билгалонашка хьажар',
'right-unwatchedpages' => 'тергамехь йоцу агӀонийн могӀане хьажар',
'right-mergehistory' => 'агӀонаш вовшахтохар',
'rc_categories_any' => 'Муьлхаа',
'rc-change-size-new' => 'Хийцам бинчул тӀехьа болу барам: $1 {{PLURAL:$1|байт}}',
'newsectionsummary' => '/* $1 */ Керла хьедар',
-'rc-enhanced-expand' => 'Гайта ма дарра дерг (лелош ю JavaScript)',
+'rc-enhanced-expand' => 'Гайта мадарра',
'rc-enhanced-hide' => 'Ма дарра дерг къайладаккха',
'rc-old-title' => 'дуьххьара кхоьллина яра цӀарца «$1»',
'recentchangeslinked-feed' => 'Кхуьнца долу нисдарш',
'recentchangeslinked-toolbox' => 'Кхуьнца долу нисдарш',
'recentchangeslinked-title' => 'Кхуьнца долу нисдарш $1',
-'recentchangeslinked-summary' => "Хlара хийцам биначу агlонашан могlам бу, тlетовжар долуш хьагучу агlон (йа хьагойтуш йолучу категорена).
-Агlонаш юькъайогlуш йолу хьан [[Special:Watchlist|тергаме могlам чохь]] '''къастийна йу'''.",
+'recentchangeslinked-summary' => "ХӀара хийцам биначу агӀонашан могӀам бу, тӀетовжар долуш хьагучу агӀон (йа хьагойтуш йолучу категорена).
+АгӀонаш юькъайогӀуш йолу хьан [[Special:Watchlist|тергаме могӀам чохь]] '''къастийна ю'''.",
'recentchangeslinked-page' => 'Агlон цlе:',
'recentchangeslinked-to' => 'Кхечу агӀор, гайта хийцамаш агӀонашца, хӀоттийначу агӀонтӀе хьажораг йолуш',
'upload-recreate-warning' => "'''Тегам бе: иштта цӀе йолу файл дӀаяьккхина я цӀе хийцина.'''
Лахахьа гойтуш ю хӀокху агӀона тептар:",
+'uploadtext' => "Лелайе хӀара агӀо сервер чу файлаш йохуш.
+Хьалхо чуйаьхна файлаш хьажа, [[Special:FileList|кхузахь]]. Кхин чуйаьхна файлаш дӀаязло [[Special:Log/upload|чуяхаран тептар чохь]], дӀаяьхна файлаш каро йиш ю [[Special:Log/delete|кхузахь]].
+
+Файл агӀона чуйилла лелабе лахара могӀанаш:
+* '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.jpg]]</nowiki></code>''' файла Файлан юьззина верси чуйиллуш;
+* '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.png|200px|thumb|left|цунахь лаьцна хаам]]</nowiki></code>''' 200 пиксель барамехь файл чуйилар бухахь цунахь лаьцна могӀа а болуш;
+* '''<code><nowiki>[[</nowiki>{{ns:media}}<nowiki>:File.ogg]]</nowiki></code>''' файлан тӀе хьажораг хӀотайо файл агӀонгахь ца гуш.",
'upload-permitted' => 'Магийна файлийн тайпанаш: $1.',
'uploadlogpage' => 'Чуяхаран тéптар',
'uploadlogpagetext' => 'Лахахьа гойтуш бу тӀаьххьара чуяхна файлийн могӀам.
'filesource' => 'Хьост:',
'ignorewarning' => 'ХӀума дац чуяккха файл',
'ignorewarnings' => 'ДӀахедар тергал ца дан',
-'badfilename' => 'Файлан цӀе оцу $1.',
+'badfilename' => 'Файлан цӀе хийцина → $1.',
+'filetype-banned-type' => "'''«.$1»''' — {{PLURAL:$4|1=ца магийна файлан тайп|ца магийна файлийн тайпанаш}}.
+{{PLURAL:$3|1=Магийна файлан тайп ю|Магийна файлийн тайпанаш ю:}} $2.",
'emptyfile' => 'Ахьа чуйоккхуш йолу файл еса хийла там бу. Иза гӀалат хийла мега файлан цӀе нийса язйина йоцу дела. Дехар до хьажа бакъалла и юьй ахьа чуйоккхуш йолу файл.',
'fileexists' => 'Иштта цӀе йолу файл йолуш ю. Дехар до, хьажа <strong>[[:$1]]</strong>, лаьий хьуна и хийца.
[[$1|thumb]]',
+'filepageexists' => 'Файлах лаьцна хаам болу агӀо кхоьллина <strong>[[:$1]]</strong>, амма иштта цӀе йолуш файл хӀинца яц.
+Язбина хаам файлах лаьцнарг долу агӀонехь гучабаьра бац.
+Керла хаам тӀетоха ахьа и куьга хийца езар ю.
+[[$1|thumb]]',
'fileexists-extension' => 'Тера цӀе йолу файл йолуш ю: [[$2|thumb]]
* Чуйоккхуш йолу файлан цӀе: <strong>[[:$1]]</strong>
* Йолуш йолу файлан цӀе: <strong>[[:$2]]</strong>
Дехар до, харжа кхин цӀе.',
+'fileexists-thumbnail-yes' => 'Файл жима йина копи хила там бу. [[$1|thumb]]
+Дехар до, хьажа файле <strong>[[:$1]]</strong>.
+Билгалйина файл цуна жима йина копи елахь и чуяккха цаоьшу.',
+'file-thumbnail-no' => 'Файлан цӀе йолалуш ю <strong>$1</strong>.
+Файл жима йина суьртан копи хила там бу.
+Хьайгахь хӀара сурт дика барамехь делахь, дехар до, чудаккха и я файлан цӀе хийца.',
'fileexists-forbidden' => 'Иштта цӀе йолу файл йолуш ю цундела тӀехула дӀаязян йиш яц.
ТӀаккха а хьара файл чуяккха лууш делахь, дехар до, юха а гӀой файлан цӀе хийца а яй чуяккха файл. [[File:$1|thumb|center|$1]]',
-'file-exists-duplicate' => 'ХӀара файл лахарчу {{PLURAL:$1|файлан|файлийн}} дубликат ю:',
+'file-exists-duplicate' => 'ХӀара файл лахарчу {{PLURAL:$1|1=файлан|файлийн}} дубликат ю:',
'file-deleted-duplicate' => 'Иштта файл ([[:$1]]) хӀинцале дӀаяьккхина хилла. Дехар до, юху файл чуяккхале файл дӀаяккхаран историга хьажа.',
'uploadwarning' => 'Дlахьедар',
'uploadwarning-text' => 'Дехар до, лахара файлах лаьцнарг хийца а дай юху а гӀорта файл чуяккха.',
'upload-options' => 'Чуякхаран параметраш',
'watchthisupload' => 'Латайе хӀара файл тергаме могӀам юкъахь',
'filewasdeleted' => 'Иштта цӀе йолуш файл хьалха чуяьккхина хила, амма дӀаяьккхина. Дехар до, юху чуяккхале $1 хьажа.',
+'filename-bad-prefix' => "Чуйоккхучу файлан цӀе йолалуш ю «'''$1'''» и сурт доккхучу хӀумнан кепан цӀе хилла мега. Дехар до, хьаржа файлан йогӀуш йолу цӀе.",
'filename-prefix-blacklist' => '#<!-- битийша хlара могlа ша мабарра --> <pre>
# Бухасиз шолгlа:
# * Массо, саболчунтlийра йуьлалуш ерш «#» хуьлу хетаме дерг (могlа чекх балац)
PICT # тайп тайпан
#</pre> <!-- битийша хlара могlа ша мабарра -->',
+# File backend
+'backend-fail-readonly' => 'ХӀара «$1» хӀинца еша бен таро яц. Бахьна: «$2»',
+
# HTTP errors
'http-timed-out' => 'Хьежаран хан чекхели HTTP-жоп дехаран.',
'listfiles_description' => 'Цуьнах лаьцна',
'listfiles_count' => 'Верси',
'listfiles-show-all' => 'Гайта суьртийн шира версеш',
+'listfiles-latestversion-yes' => 'ХӀаъ',
# File description page
'file-anchor-link' => 'Файл',
'filehist-filesize' => 'Файлан барам',
'filehist-comment' => 'Билгалдаккхар',
'imagelinks' => 'Файл лелор',
-'linkstoimage' => '{{PLURAL:$1|ТӀаьхьайогӀу $1 агӀо тӀетойжина|ТӀаьхьайогӀу $1 агӀонаш тӀетойжина|ТӀаьхьайогlу $1 агӀонаш тӀетойжина}} хӀокху файлан:',
+'linkstoimage' => '{{PLURAL:$1|ТӀаьхьайогӀу $1 агӀо тӀетойжина|ТӀаьхьайогlу $1 агӀонаш тӀетойжина|ТӀаьхьайогӀу $1 агӀонаш тӀетойжина}} хӀокху файлан:',
'nolinkstoimage' => 'АгӀонашчохь файл лелош яц.',
-'sharedupload' => 'Хlара хlума оцун $1 чура ю иза хила мега лелош кхечу кхолламашкахь.',
+'sharedupload' => 'ХӀара хӀума оцун $1 чура ю иза хила мега лелош кхечу проекташкахь.',
'sharedupload-desc-here' => 'ХӀара файл $1 чура ю и лело йиш ю массо проекташкахь.
Цунна хаам гайтина лахахь. [$2 Файл Викигуламехь]',
'filepage-nofile' => 'Иштта цӀе йолуш файл яц.',
'filedelete' => '$1 — дӀаяккхар',
'filedelete-legend' => 'ДӀаяккха файл',
'filedelete-intro' => "Хьо файл '''[[Media:$1|$1]]''' дӀаяккха гӀерта цунна массо истори цхьан.",
+'filedelete-intro-old' => '<span class="plainlinks">Ахьа дӀайоккхуш ю верси \'\'\'[[Media:$1|$1]]\'\'\' цу [$4 $3, $2].</span>',
'filedelete-comment' => 'Бахьан:',
'filedelete-submit' => 'ДӀаяккха',
'filedelete-success' => '$1 дӀаяккхи.',
+'filedelete-success-old' => "Верси '''[[Media:$1|$1]]''' цу $3 $2 дӀаяьккхина.",
+'filedelete-nofile' => "'''$1''' яц.",
'filedelete-otherreason' => 'Кхин бахьан:',
'filedelete-reason-otherlist' => 'Кхин бахьан',
'filedelete-reason-dropdown' => '* Даржина долу дӀаяккхаран баьхьанаш
'statistics-header-pages' => 'Агlонашан жамlа',
'statistics-header-edits' => 'Нисдаран жамӀ',
'statistics-header-users' => 'Декъашхойн жамӀа',
+'statistics-header-hooks' => 'Кхин статистика',
'statistics-articles' => 'Яззамаш',
'statistics-pages' => 'Агlонаш',
'statistics-pages-desc' => 'Массо вики агlонаш, дийцаре агlонашцани, дlасахьаждарш а кхин дерш.',
'statistics-edits-average' => 'Юккъера агӀонан нисдаран терахь',
'statistics-users' => '[[ВП:Дlаязвалар|Дlаязбелларш]] шаберигге декъашхой чохь болу [[Special:ListUsers|(могlам)]]',
'statistics-users-active' => 'Жигара декъашхой',
-'statistics-users-active-desc' => 'Декъашхой, муьлха цхьа хlум дина болу, кху {{PLURAL:$1|тlаьххьара $1 динахь|тlаьххьара $1 дийнахь}}',
+'statistics-users-active-desc' => 'Декъашхой, муьлха цхьа хlум дина болу, кху {{PLURAL:$1|1=тlаьххьара $1 динахь|тlаьххьара $1 дийнахь}}',
'pageswithprop' => 'АгӀонаш цхьадолу къастамашца',
'pageswithprop-legend' => 'АгӀонаш цхьадолу къастамашца',
# Miscellaneous special pages
'nbytes' => '$1 {{PLURAL:$1|байт}}',
'ncategories' => '$1 {{PLURAL:$1|категори|категореш|категореш}}',
-'ninterwikis' => '$1 {{PLURAL:$1|юкъарвики-хьажораг|юкъарвики-хьажорагаш}}',
-'nlinks' => '$1 {{PLURAL:$1|хьажораг|хьажорагаш}}',
-'nmembers' => '$1 {{PLURAL:$1|хӀума|хӀумнаш}}',
+'ninterwikis' => '$1 {{PLURAL:$1|1=юкъарвики-хьажораг|юкъарвики-хьажорагаш}}',
+'nlinks' => '$1 {{PLURAL:$1|1=хьажораг|хьажорагаш}}',
+'nmembers' => '$1 {{PLURAL:$1|1=хӀума|хӀумнаш}}',
'nimagelinks' => 'Лелош ю $1 {{PLURAL:$1|агӀоначохь|агӀонашкахь|агӀонашкахь}}',
'ntransclusions' => 'лелош ю $1 {{PLURAL:$1|агӀоначохь|агӀонашкахь|агӀонашкахь}}',
'specialpage-empty' => 'Дехаро хӀумма ца елла.',
'longpages' => 'Беха яззамаш',
'deadendpages' => 'Дика йоцу агIонаш',
'protectedpages' => 'ГIаролла дина агIонаш',
+'protectedpages-indef' => 'Хан йоцуш гӀоралла динарш бен',
+'protectedpages-cascade' => 'Чахчарин гӀоралла бен',
'protectedtitles' => 'ГIаролла дина цIераш',
'listusers' => 'Декъашхой могlам',
'listusers-editsonly' => 'Цхаъ мукъане а хийцам бина декъашхой гайта',
-'listusers-creationsort' => 'Кхолларан хене хьаьжна нисъяр',
+'listusers-creationsort' => 'Кхоьллина хене хьаьжна нисъяр',
'listusers-desc' => 'Харжа къезиг хиларца',
'usercreated' => '{{GENDER:$3|дӀавазвелла|дӀаязелла}} $1 $2',
'newpages' => 'Керла агlонаш',
'move' => 'Цlе хийца',
'movethispage' => 'Хlокху агlон цlе хийца',
'unusedimagestext' => 'Дехар до, тидаме эца, кхин йолу дуьнана машан-меттигаш а лелош хила мега нийсса йогӀу хьажораг (URL) хӀокху хӀуман, хӀокху могӀаме йогӀуш ялахь яцахь а иза хила мега жигара лелош.',
+'unusedcategoriestext' => 'ХӀокху категорешан чохь агӀонаш я кхин категореш яц.',
'notargettitle' => 'Ӏалашо билгал йина яц',
'notargettext' => 'И кхочушдан ахьа билгал йина яц Ӏалашонан агӀо я декъашхо.',
'nopagetitle' => 'Ишта агӀо яц',
'nopagetext' => 'Ишта агӀо яц.',
-'pager-newer-n' => '{{PLURAL:$1|алсамо керла|алсамо керланаш|алсамо керлачарех}} $1',
-'pager-older-n' => '{{PLURAL:$1|алсамо шира|алсамо ширниш|алсамо ширачарех}} $1',
+'pager-newer-n' => '{{PLURAL:$1|алсамо керла 1|алсамо керланаш $1}}',
+'pager-older-n' => '{{PLURAL:$1|алсамо шира 1|алсамо ширниш $1}}',
# Book sources
'booksources' => 'Жайнан хьосташ',
# Special:AllPages
'allpages' => 'Массо агӀонаш',
-'alphaindexline' => 'оцу $1 кху $2',
+'alphaindexline' => 'тӀера $1 $2 кхаччалц',
'nextpage' => 'Тlаьхьа йогlу агlо ($1)',
'prevpage' => 'Хьалхалера агlо ($1)',
'allpagesfrom' => 'Гучé яха агӀонаш, йолалуш йолу оцу:',
# Special:Categories
'categories' => 'Категореш',
-'categoriespagetext' => '{{PLURAL:$1|Лахара категореш чохь ю|Лахара категореш чохь ю}} агӀонаш я медиа-файлаш.
+'categoriespagetext' => '{{PLURAL:$1|1=Лахара категореш чохь ю|Лахара категореш чохь ю}} агӀонаш я медиа-файлаш.
Кхузахь гойтуш яц [[Special:UnusedCategories|лелош йоцу категореш]].
Кхин дӀа [[Special:WantedCategories| хийла еза категореш]].',
'categoriesfrom' => 'Гучé яха категореш, оцу:',
'linksearch-ok' => 'Лаха',
'linksearch-text' => 'Лело мега хӀоттош йолу символаш, масала, <code>*.wikipedia.org</code>.
Лакхара даржан домен мукъа хила еза , масала<code>*.org</code><br />
-Ловш йолу {{PLURAL:$2|протокол|протоколаш}}: <code>$1</code> (Iад йитарца http://, протокол бакъалла язъен яцахь).',
+Ловш йолу {{PLURAL:$2|1=протокол|протоколаш}}: <code>$1</code> (Iад йитарца http://, протокол бакъалла язъен яцахь).',
'linksearch-line' => '$2 — хьажораг кху $1',
# Special:ListUsers
# Special:ActiveUsers
'activeusers' => 'Жигар декъашхой могlам',
-'activeusers-intro' => 'Лахахь гойтуш бу {{PLURAL:$1|тӀаьхьара $1 динахь|тӀаьхьара $1 деношкахь}} хийцамаш бина декъашхой.',
-'activeusers-count' => '{{PLURAL:$3|тӀаьхьарчу $3 динахь|тӀаьхьара $3 деношкахь}} $1 {{PLURAL:$1|нисдар|нисдарш}} дина',
+'activeusers-intro' => 'Лахахь гойтуш бу {{PLURAL:$1|1=тӀаьхьара $1 динахь|тӀаьхьара $1 деношкахь}} хийцамаш бина декъашхой.',
+'activeusers-count' => '{{PLURAL:$3|1=тӀаьхьарчу $3 динахь|тӀаьхьара $3 деношкахь}} $1 {{PLURAL:$1|1=нисдар|нисдарш}} дина',
'activeusers-from' => 'Гучé баха декъашхой, болалуш болу тӀера:',
'activeusers-hidebots' => 'Къайлабаха шабелхалой',
'activeusers-hidesysops' => 'Къайлабаха куьйгалхой',
'activeusers-noresult' => 'Декъашхой цакарий.',
# Special:ListGroupRights
-'listgrouprights' => 'Декъашхойн тобанаши бакъонаш',
+'listgrouprights' => 'Декъашхойн тобанийн бакъонаш',
+'listgrouprights-summary' => 'Лахахьа гойту декъашхошна яла йиш йолу бакъонаш. [[{{MediaWiki:Listgrouprights-helppage}}|хьажа кхин хааме]].',
+'listgrouprights-key' => 'Легенда:
+* <span class="listgrouprights-granted">Ела бакъонаш</span>
+* <span class="listgrouprights-revoked">ДӀаяьхна бакъонаш</span>',
'listgrouprights-group' => 'Тоба',
+'listgrouprights-rights' => 'Бакъонаш',
'listgrouprights-helppage' => 'Help:Тобан бакъонаш',
'listgrouprights-members' => '(тобан могlам)',
+'listgrouprights-addgroup-all' => 'массо тобанийн юкъатоха йиш ю',
# Email user
'mailnologintext' => 'Электронан кехаташ кхехьийта йиш хилийта [[Special:UserLogin|системин чугӀо]] кхин декъашхошка хаамаш кхехьийта хьа [[Special:Preferences|гӀирса чохь]] бакъалла долу электронан почтан адрес хила деза.',
'emailccme' => 'Соьга а кхосса хааман копи.',
'emailsent' => 'Кехат дӏадахьийтина',
'emailsenttext' => 'Хьан электроннан хаам дӏабахьийтина.',
+'emailuserfooter' => 'ХӀара хаам бахийтинера $1 {{GENDER:$1|декъащхочо}} $2 {{GENDER:$2|декъащхочунга}} «декъашхочунга хаам» олучу функцин гӀоьнца {{SITENAME}} проектан.',
# Watchlist
'watchlist' => 'Тергаме могӀам',
'notanarticle' => 'Бац яззам',
'watchlist-details' => 'Хьан тергаме могlамца $1 {{PLURAL:$1|агlо|агlонаш|агlонаш}} ю, дийцаре агlонаша йоцуш.',
'wlheader-showupdated' => "Хийцам бина агӀонаш '''Ӏаьржа''' шрифтцан билгальяха ю.",
-'wlnote' => 'Лахахьа {{PLURAL:$1|тlаьхьа богlу $1 хийцам|тlаьхьа богlу $1 хийцамаш|тlаьхьа богlу $1 хийцамаш}} хlокху {{PLURAL:$2|тlаьхьар|тlаьхьара|тlаьхьара}} <strong>$2</strong> {{plural:$2|сохьт|сохьатехь|сохьташкахь}}.',
'wlshowlast' => 'Гайта тlаьххьара $1 сахьташ $2 денош $3',
'watchlist-options' => 'Тергаме могlаман гlирс нисбар',
'rollback' => 'Юхабаккха хийцам',
'rollback_short' => 'Юхаяккхар',
'rollbacklink' => 'юхаяккха',
-'rollbacklinkcount' => 'юхадаккха $1 {{PLURAL:$1|нисдар|нисдарш}}',
+'rollbacklinkcount' => 'юхадаккха $1 {{PLURAL:$1|1=нисдар|нисдарш}}',
'rollbacklinkcount-morethan' => 'Юхадаккха $1 дукха {{PLURAL:$1|нисдар|нисдарш|нисдарш}}',
'rollbackfailed' => 'Юхайоккхуш гӀалат ду',
'alreadyrolled' => 'ТӀехьара [[User:$2|$2]] ([[User talk:$2|дийцаре]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) декъашхочо «[[:$1]]» агӀона бина хийцамаш юхабаха цатарло,
'editcomment' => "Хийцамаш барна гайтина бахьна: ''$1''.",
'revertpage' => 'Нисдарш [[Special:Contributions/$2|$2]] ([[User talk:$2|дийцаре]]) юха даьхна башхаллийн [[User:$1|$1]]',
'revertpage-nouser' => 'Нисдарш (декъашхочун цӀе хьулйина) юхадаьхина башхаллин {{GENDER:$1|[[User:$1|$1]]}}',
-'rollback-success' => 'Юха даьхна $1; нисдарш, $2 версен.',
+'rollback-success' => 'Юхадаьхна $1; нисдарш, $2 версен.',
# Protect
'protectlogpage' => 'Гlаролли тептар',
'protect-unchain-permissions' => 'Схьабелла кхин гӀорралин гӀирс',
'protect-text' => "Кхузéхь хьо хьажало хийцалуш гӀароллин локхалла оцу агӀонашна '''$1'''.",
'protect-locked-access' => "Хьан дlаязваларéхь тоъал бакъо яц гlароллийн локхаллéхь агlон хийцам бá. Дlадоьлху хlоттийнарш оцу агlонна '''$1''':",
-'protect-cascadeon' => 'Хlара агlо гlароллийца ю, хlунд аьлча иза латийна {{PLURAL:$1|лахахьа гойтучу агlонца, цуьнца хlоттийна|лахахьа гойтучу агlоншца, цаьрца хlоттийна}} чахчарийца гlаролла. Хьога хийцалур ю гlаролли локхалла хlокху агlон, амма оцо хийцам бийра бац чахчарехь йолучу гlароллийна.',
+'protect-cascadeon' => 'Хlара агlо гlароллийца ю, хlунд аьлча иза латийна {{PLURAL:$1|1=лахахьа гойтучу агlонца, цуьнца хlоттийна|лахахьа гойтучу агlоншца, цаьрца хlоттийна}} чахчарийца гlаролла. Хьога хийцалур ю гlаролли локхалла хlокху агlон, амма оцо хийцам бийра бац чахчарехь йолучу гlароллийна.',
'protect-default' => 'Гlаролла йоцуш',
'protect-fallback' => 'Бакъо оьшу «$1»',
'protect-level-autoconfirmed' => 'Гlаролла дé оцу керла а дlабазбина боцучу декъашхойх',
'protect-expiring-local' => 'чекхйолу $1',
'protect-expiry-indefinite' => 'хан чаккхе йоцуш',
'protect-cascade' => 'Гlаролла йé агlонаш, хlокху агlонца хlоттайелларш (чахчарé гlаролла)',
-'protect-cantedit' => 'Хьéга хийцам цабало хlокху агlон гlаролли локхалан, хlуд аьлча хьан бакъо яц оцун рéдаккха.',
+'protect-cantedit' => 'Хьéга хийцам цабало хӀокху агӀон гlаролли локхалан, хӀуд аьлча хьан бакъо яц оцунна тадар дан.',
'protect-othertime' => 'Кхин хан:',
'protect-othertime-op' => 'кхин хан',
'protect-otherreason' => 'Кхин бахьна/тӀетохар:',
** гӀараялл агӀо',
'protect-edit-reasonlist' => 'Бахьанин список нисяр',
'protect-expiry-options' => '1 сахьт:1 hour,1 де:1 day,1 кӀиран:1 week,2 кӀиран:2 weeks,1 бутт:1 month,3 бутт:3 months,6 бутт:6 months,1 шо:1 year,цlкъа:infinite',
-'restriction-type' => 'Бакъо:',
+'restriction-type' => 'Бакъонаш:',
'restriction-level' => 'ТӀекхочаран локхалла:',
+'minimum-size' => 'Лаххара бараме',
+'maximum-size' => 'Лаккхара бараме:',
# Restrictions (nouns)
'restriction-edit' => 'Тадар',
'restriction-upload' => 'Чуйолуш',
# Restriction levels
+'restriction-level-sysop' => 'дуьззина гӀоралла',
'restriction-level-autoconfirmed' => 'дуьззина доцуш гӀаролла',
'restriction-level-all' => 'массо барам',
Агӏо дӏаяккхинчул тӏяха юху кхолийна елахь меттахӏоттина йолу версеш гучуер ю керлачу версешна хьалха',
'undeleterevdel' => 'Метта хlоттор хира дац, нагахь иза дакъошкахь дlадайина далахь а тlаьххьара кисак башхо йа хlума.
Иштнарг хилча ахьа дlабаккха беза хlоттийна болу къастам йа хьагайта тlаьххьара дlайайина башхо.',
-'undelete-revision' => 'Декъашхочун $3 дӀайаьккхина верси $1 (цу $4 $5 хан):',
+'undelete-revision' => 'Декъашхочун $3 дӀаяьккхина верси $1 (цу $4 $5 хан):',
'undeletebtn' => 'МеттахӀоттае',
'undeletelink' => 'хьажа/меттахӀоттае',
'undeleteviewlink' => 'хьажа',
'isredirect' => 'агlо-дlасахьажайар',
'istemplate' => 'лата йe',
'isimage' => 'Файлан хьажораг',
-'whatlinkshere-prev' => '{{PLURAL:$1|хьалхайодарг|хьалхайодарш|хьалхайодарш}} $1',
+'whatlinkshere-prev' => '{{PLURAL:$1|1=хьалхайодарг|хьалхайодарш}} $1',
'whatlinkshere-next' => '{{PLURAL:$1|тlаьхьайогlург|тlаьхьайогlурш|тlаьхьайогlурш}} $1',
'whatlinkshere-links' => '← хьажорагаш',
'whatlinkshere-hideredirs' => '$1 дlасахьажйар',
Ишта чу ханчохь, ахьа дехьа яккха йезар ю йа куьйга хlоттайар, нагахь иза хьашт йалахь.",
'movearticle' => 'Цle хийца хlокху агlон',
+'moveuserpage-warning' => "'''Тергам бе.''' Хьо декъашхочун агӀона цӀе хийца гӀерта. Дехар до, тергам бе, декъашхочун агӀона цӀе бен хийца лур яц, декъашхочун дӀаяздаран цӀе хийца лур яц.",
'newtitle' => 'Керла цlе',
'move-watch' => 'Латайé хӀара агӀо тергаме могӀанан юкъахь',
'movepagebtn' => 'Агlон цlе хийца',
'move-subpages' => 'ЦӀeрш хийцае бухара агӀонаши ($1 кхаччалц)',
'move-talk-subpages' => 'ЦӀе хийца бухара агӀонаши а агӀонашан дийцаре а ($1 кхаччалц)',
'movepage-page-exists' => 'Агӏо $1 йолуш ю цундела и ша юху дӏаязъян йиш яц.',
-'movepage-page-moved' => 'АгӀона $1 цӀе хийцина оцу $2.',
+'movepage-page-moved' => 'АгӀона $1 цӀе хийцина → $2.',
'movelogpage' => 'Цlераш хийцаран тептар',
'movelogpagetext' => 'Лахахьа гойтуш ю цӀе хийцина агӀонаш.',
-'movesubpage' => '{{PLURAL:$1|Бухара агӀо|Бухара агӀонаш}}',
-'movesubpagetext' => 'ХӀокху агӀона $1 {{PLURAL:$1|бухара агӀо ю|бухара агӀонаш ю}}.',
+'movesubpage' => '{{PLURAL:$1|1=Бухара агӀо|Бухара агӀонаш}}',
+'movesubpagetext' => 'ХӀокху агӀона $1 {{PLURAL:$1|1=бухара агӀо ю|бухара агӀонаш ю}}.',
'movenosubpage' => 'ХӀокху агӀона бухара агӀонаш яц.',
'movereason' => 'Бахьан:',
'revertmove' => 'юхаяккха',
'immobile-source-page' => 'ХӀокху агӏона цӏе хийца йиш яц.',
'bad-target-model' => 'Йиш яц хийца $1 оцу $2: цхьаьна ца догӀу моделин хаамаш.',
'move-leave-redirect' => 'Ӏадйита дӀасахьажораг',
-'protectedpagemovewarning' => "'''Дlахьедар.''' Хlара агlо гlаролла йина йу; цlе хийца йа нисйа а бакъо йолуш адаманкуьйгалхой бе бац.
-Лахахьа тептаро балийна тlаьхьаралера дlаязбина хаам:",
-'semiprotectedpagemovewarning' => "'''Дlахьедо.''' Хlара агlо гlаролла йина йу; дlабазбиначу декъашхошка бе цlе хийцалуш яц.
-Лахахьа тептаро балийна тlаьхьаралера дlаязбина хаам:",
+'protectedpagemovewarning' => "'''ДӀахьедар.''' ХӀара агӀо гӀаролла йина ю; цӀе хийца я нисйа а бакъо йолуш куьйгалхой бе бац.
+Лахахьа тептаро балийна тӀаьхьаралера дӀаязбина хаам:",
+'semiprotectedpagemovewarning' => "'''ДӀахьедо.''' ХӀара агӀо гӀаролла йина ю; дӀабазбиначу декъашхошка бе цӀе хийцалуш яц.
+Лахахьа тептаро балийна тӀаьхьаралера дӀаязбина хаам:",
# Export
'export' => 'АгӀонаш араяхар',
# Namespace 8 related
'allmessages' => 'Гlирса хаамаш',
'allmessagesname' => 'Хаам',
-'allmessagesdefault' => 'Шаьшха йоза',
+'allmessagesdefault' => 'Ӏад дитарца йоза',
'allmessagescurrent' => 'Карарчу хенан йоза',
'allmessagestext' => 'ХӀара «MediaWiki» цӀерийн меттигера системан хаамийн могӀа бу.
Хьайна MediaWiki тая лууш делахь, дехар до, проект [//translatewiki.net translatewiki.net] [https://www.mediawiki.org/wiki/Localisation юьйцучу хьажа].',
+'allmessagesnotsupportedDB' => "'''\$wgUseDatabaseMessages''' дӀаяйина хилар бахьнехь хӀара агӀо дӀачӀаьгӀна ю.",
'allmessages-filter-legend' => 'Литтар',
'allmessages-filter' => 'Литтар оцу хьола хийцамца:',
'allmessages-filter-unmodified' => 'Хийцан йоцурш',
'allmessages-prefix' => 'Литтар оцу дешахьалхе:',
'allmessages-language' => 'Мотт:',
'allmessages-filter-submit' => 'Дехьа гӀо',
+'allmessages-filter-translate' => 'Гочйе',
# Thumbnails
'thumbnail-more' => 'Доккха де',
'import-upload-filename' => 'Файлан цӀе:',
'import-comment' => 'Билгалдаккхар:',
'importnosources' => 'Юкъаравики-импортан хьост хаьржина яцара, дуьхьала хийцамашан истори чуяккхар дӀадайина ду.',
+'import-error-special' => '«$1» агӀо импорт йина яц, и къастина цӀерийн меттигашан юкъайогӀуш хиларна.',
# Import log
'importlogpage' => 'Импортан тептар',
'tooltip-n-currentevents' => 'Дlаоьхуш болу хаамашна могlам',
'tooltip-n-recentchanges' => 'Тlаьххьаралера хийцаман могlам',
'tooltip-n-randompage' => 'Хьажа цахууш нисйеллачу агlоне',
-'tooltip-n-help' => 'Ð\9dиÑ\81воÑ\85аамаÑ\88 оÑ\86Ñ\83 кÑ\85олламÑ\86а «{{SITENAME}}»',
+'tooltip-n-help' => 'Ð\93Ó\80оде меÑ\82Ñ\82иг',
'tooltip-t-whatlinkshere' => 'Массо агlон могlам, хlокху агlонтlе хьажийна йолу',
'tooltip-t-recentchangeslinked' => 'Тlаьхьарлера хийцамаш хlокху агlонашкахь, мичхьа хьажийна хlара агlо',
'tooltip-feed-rss' => 'Хьагайтар оцу RSS цани хlокху агlон',
'tooltip-feed-atom' => 'Хьагайтар оцу Atom цани хlокху агlон',
'tooltip-t-contributions' => 'Хlокху декъашхочо хийцина йолу агlонашан могlам',
-'tooltip-t-emailuser' => 'Дlабахьийта хаам оцу декъашхона',
+'tooltip-t-emailuser' => 'ДӀабахьийта хаам оцу декъашхона',
'tooltip-t-upload' => 'Чуйаха файлаш',
'tooltip-t-specialpages' => 'Белха агlонаши могlам',
'tooltip-t-print' => 'Хlокху агlонна зорба туху башхо',
'tooltip-ca-nstab-main' => 'Яззамна чулацам',
'tooltip-ca-nstab-user' => 'ХӀора декъашхочун долахь йолу агӀо ю',
'tooltip-ca-nstab-media' => 'Медиа-файл',
-'tooltip-ca-nstab-special' => 'Хlара белха агlо йу, хlара рéдаккхалуш яц',
+'tooltip-ca-nstab-special' => 'ХӀара белха агӀо ю, хӀара тая луш яц',
'tooltip-ca-nstab-project' => 'Кхолламан дакъа',
'tooltip-ca-nstab-image' => 'Хlуман агlо',
'tooltip-ca-nstab-mediawiki' => 'Хааман агlо MediaWiki',
'tooltip-summary' => 'Язъе йоца цӀе',
# Stylesheets
-'common.css' => '/** Чуйиллина йолу кхузе CSS хир йу лелош масхьа кечйечу чохь */',
-'monobook.css' => '/* Чуйиллина йолу кхузе CSS хир йу лелош масхьа Monobook чохь */',
-'print.css' => '/* Чуйиллина йолу кхузе CSS хир йу лелош масхьа зорба тухучуче чохь */',
+'common.css' => '/** Чуйиллина йолу кхузе CSS хир ю лелош масхьа кечйечу чохь */',
+'monobook.css' => '/* Чуйиллина йолу кхузе CSS хир ю лелош масхьа Monobook чохь */',
+'print.css' => '/* Чуйиллина йолу кхузе CSS хир ю лелош масхьа зорба тухучуче чохь */',
# Scripts
'common.js' => '/* Чуйиллина йолу кхузе JavaScript код гучу ера ю массо декъашхошна оцара схьаелларца хlора агlо */',
# Attribution
'siteuser' => 'декъашхо {{grammar:genitive|{{SITENAME}}}} $1',
'others' => 'кхин',
-'siteusers' => '{{PLURAL:$2|декъашхо|декъашхой}} {{grammar:genitive|{{SITENAME}}}} $1',
-'anonusers' => '{{PLURAL:$2|цӀе хьулйина декъашхо|цӀе хьулйина декъашхой}} {{grammar:genitive|{{SITENAME}}}} $1',
+'siteusers' => '{{PLURAL:$2|1=декъашхо|декъашхой}} {{grammar:genitive|{{SITENAME}}}} $1',
+'anonusers' => '{{PLURAL:$2|1=цӀе хьулйина декъашхо|цӀе хьулйина декъашхой}} {{grammar:genitive|{{SITENAME}}}} $1',
'nocredits' => 'Бац декъашхойн могlам хlокху яззамца',
# Spam protection
'pageinfo-language' => 'АгӀона мотт',
'pageinfo-toolboxlink' => 'Агlонах болу бовзам',
'pageinfo-redirectsto-info' => 'Хаам',
+'pageinfo-contentpage-yes' => 'ХӀаъ',
+'pageinfo-protect-cascading' => 'Чахчарин гӀоралла кхузара',
+'pageinfo-protect-cascading-yes' => 'ХӀаъ',
+'pageinfo-protect-cascading-from' => 'Чахчарин гӀоралла тӀера',
'pageinfo-category-info' => 'Категорех лаьцна хаам',
# Skin names
'widthheightpage' => '$1 × $2, $3 {{PLURAL:$3|агlо|агlонаш|агlонаш}}',
'file-info' => 'файлан барам: $1, MIME-тайп: $2',
'file-info-size' => '$1 × $2 пиксель, файлан барам: $3, MIME-тайп: $4',
-'file-info-size-pages' => '$1 × $2 пиксель, файлан барам: $3, MIME-тайп: $4, $5 {{PLURAL:$5|агӀо|агӀонаш}}',
+'file-info-size-pages' => '$1 × $2 пиксель, файлан барам: $3, MIME-тайп: $4, $5 {{PLURAL:$5|1=агӀо|агӀонаш}}',
'file-nohires' => 'Кхи йоккха гlоле башхо яц.',
'svg-long-desc' => 'SVG-файл, лартӀахь ю $1 × $2 {{PLURAL:$2|пиксель|пикселш|пикселш}}, файлан барам: $3',
'svg-long-desc-animated' => 'Анимироват йина SVG-файл, номиналан $1 × $2 пиксель, файлан барам: $3',
'show-big-image' => 'Сурт цlанал лаккхара бакъонца',
'show-big-image-preview' => 'Барам хьажале: $1.',
-'show-big-image-other' => '{{PLURAL:$2|Кхин шоралла|Кхин шоралла}}: $1.',
+'show-big-image-other' => '{{PLURAL:$2|1=Кхин шоралла|Кхин шоралла}}: $1.',
'show-big-image-size' => '$1 × $2 пиксель',
# Special:NewFiles
'hours-ago' => '$1 {{PLURAL:$1|сахьт}} хьалха',
'minutes-ago' => '$1 {{PLURAL:$1|минут}} хьалха',
'seconds-ago' => '$1 {{PLURAL:$1|секунд}} хьалха',
+'monday-at' => 'оршотан дийнахь $1',
+'wednesday-at' => 'кхаарин дийнахь $1',
+'thursday-at' => 'еарин дийнахь $1',
+'friday-at' => 'пӀераскан дийнахь $1',
+'saturday-at' => 'шот дийнахь $1',
+'sunday-at' => 'кӀиранан дийнахь $1',
'yesterday-at' => 'селхана $1 даьлча',
# Bad image list
'exif-sensingmethod' => 'Сенсоран тайп',
'exif-filesource' => 'Файлан хьост',
'exif-imageuniqueid' => 'Суьртан номер (ID)',
+'exif-gpslatitude' => 'Шоралла',
+'exif-gpslongitude' => 'Дохалла',
'exif-gpsaltitude' => 'Локхалла',
'exif-gpsdestlatitude' => 'Объектан дохалла',
'exif-gpsdatestamp' => 'Терахь',
'exif-originaltransmissionref' => 'ДӀадолалун меттиган код',
'exif-label' => 'Билгало',
'exif-datetimemetadata' => 'ТӀехьара метахаамаш хийцина терахь',
+'exif-copyrightowner' => 'Авторийн бакъонаш ерг',
+'exif-usageterms' => 'Лелоран хьал',
'exif-pngfilecomment' => 'PNG-файлан билгалдаккхар',
'exif-giffilecomment' => 'GIF-файлан билгалдаккхар',
'exif-sharpness-0' => 'Лартӏахь',
'exif-dc-date' => 'Терахь(ш)',
+'exif-dc-rights' => 'Бакъонаш',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'массо',
# Live preview
'livepreview-loading' => 'Чуйолуш…',
-'livepreview-ready' => 'Чуйолуш… Кийча йу!',
+'livepreview-ready' => 'Чуйолуш… Кийча ю!',
# Watchlist editor
'watchlistedit-normal-title' => 'Тергаме могӀанийн хийцамаш',
'version-parser-function-hooks' => 'Cинтаксисан къасторан функци схьалоцурш',
'version-version' => '(Верси $1)',
'version-license' => 'Бакъо',
+'version-ext-license' => 'Лицензи',
+'version-ext-colheader-name' => 'Шордарш',
+'version-ext-colheader-version' => 'Верси',
+'version-ext-colheader-license' => 'Лицензи',
+'version-ext-colheader-description' => 'Цуьнах лаьцна',
+'version-ext-colheader-credits' => 'Автораш',
+'version-poweredby-credits' => "ХӀара вики болх беш ю '''[https://www.mediawiki.org/ MediaWiki]''' движок тӀехь, copyright © 2001-$1 $2.",
+'version-poweredby-others' => 'кхин',
'version-license-info' => 'MediaWiki ю маьрша программин латораг, шу йиш ю фондас арахецна йолу GNU General Public License лицензица и яржо я хийца а.
MediaWiki яржош ю и шуна пайдане хир яц те аьлла, амма ЦХЬА ЮКЪАРАХИЛАР ДОЦУШ. Хь. кхин. лицензи мадарра GNU General Public License .
Шоьга кхача езаш яра [{{SERVER}}{{SCRIPTPATH}}/COPYING копи GNU General Public License] хӀокху программица, кхаьчна яцахь язъе 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-version' => 'Верси',
# Special:Redirect
'fileduplicatesearch-legend' => 'Цхьатера ерш лахар',
'fileduplicatesearch-filename' => 'Файлан цӀе:',
'fileduplicatesearch-submit' => 'Лаха',
-'fileduplicatesearch-info' => '$1 × $2 {{PLURAL:$2|пиксель|пикселш|пикселш}}<br />Файлан барам: $3<br />MIME-тайп: $4',
+'fileduplicatesearch-info' => '$1 × $2 пиксель<br />Файлан барам: $3<br />MIME-тайп: $4',
# Special:SpecialPages
'specialpages' => 'Леррина агlонаш',
'tags' => 'Болш болу хийцаман къастам',
'tag-filter' => 'Къастам [[Special:Tags|хьажар]]:',
'tag-filter-submit' => 'Литта',
-'tag-list-wrapper' => '([[Special:Tags|{{PLURAL:$1|Билгало|Билгалонаш}}]]: $2)',
+'tag-list-wrapper' => '([[Special:Tags|{{PLURAL:$1|1=Билгало|Билгалонаш}}]]: $2)',
'tags-title' => 'Билгалонаш',
'tags-intro' => 'ХӀокху агӀона чохь гойтуш бу билгалошан могӀам царца программин латторо билгал доху нисдарш, кхин билгалошан маьӀна а.',
'tags-tag' => 'Билгалона цӀе',
'tags-display-header' => 'МогӀам чохь хийцамаш гар',
'tags-description-header' => 'МаьӀнан дуьззина сурт хӀоттор',
+'tags-active-header' => 'Жигара?',
'tags-hitcount-header' => 'Къастам бина нисдарш',
+'tags-active-yes' => 'ХӀаъ',
'tags-edit' => 'нисйé',
'tags-hitcount' => '$1 {{PLURAL:$1|хийцам|хийцамаш|хийцамаш}}',
'compare-submit' => 'Муха ю хьажа',
# Database error messages
-'dberr-header' => 'Хlара вики ловш йу халона бала',
+'dberr-header' => 'ХӀара вики ловш ю халона бала',
'dberr-problems' => 'Бехк ма бил! Хlинц машан меттиган хилла гlирсаца халонаш.',
'dberr-again' => 'Хьажа карла йаккха агlо массех минот йаьлча.',
'dberr-info' => '(аьтто ца хили зlе хlотта гlулкхдечуьнца бухара хаамашца: $1)',
-'dberr-usegoogle' => 'ЦӀачун хьо хьажа лаха гӀонца Google.',
+'dberr-usegoogle' => 'ЦӀачун хьо хьажа лаха гӀоьнца Google.',
'dberr-outofdate' => 'Хьуна хаалахь, цуьна йолу меттиг хила мега тишйелла черахь.',
# HTML forms
'htmlform-submit' => 'ДӀадахьийта',
'htmlform-reset' => 'Цаоьшу хийцамаш',
'htmlform-selectorother-other' => 'Кхин',
+'htmlform-yes' => 'ХӀаъ',
# New logging system
'logentry-delete-delete' => '$1 {{GENDER:$2|дӀаяьккхина}} агӀо $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' => '$1 {{GENDER:$2|хийцина}} гуш хилар {{PLURAL:$5|1=$5 дӀаяздаран|$5 дӀаяздаршан}} тептаран → $3: $4',
+'logentry-delete-revision' => '$1 {{GENDER:$2|хийцина}} {{PLURAL:$5|1=$5 верси|$5 версеш}} гуш хилар $3: $4 агӀорахь',
'logentry-delete-event-legacy' => '$1 {{GENDER:$2|хийцина}} $3 агӀона тептаран дӀаяздарш гуш хилар',
'logentry-delete-revision-legacy' => '$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' => '$1 къайлаха {{GENDER:$2|хийцина}} тептаран {{PLURAL:$5|1=$5 дӀаяздар|$5 дӀаяздарш}} гуш хилар $3: $4 чохь',
+'logentry-suppress-revision' => '$1 къайлаха {{GENDER:$2|хийцина}} {{PLURAL:$5|1=$5 верси|$5 версеш}} $3: $4 чохь гуш хилар',
'logentry-suppress-event-legacy' => '$1 къайлаха {{GENDER:$2|хийцина}} $3 тептар чура дӀаяздарш гуш хилар',
'logentry-suppress-revision-legacy' => '$1 къайлаха {{GENDER:$2|хийцина}} $3 агӀона верси гуш хилар',
'revdelete-content-hid' => 'чулацам къайлабаьккхина',
'revdelete-uname-unhid' => 'декъашхочун цӀе гуча яьккхина',
'revdelete-restricted' => 'куьйгалхойн доза туху',
'revdelete-unrestricted' => 'куьйгалхойн доза тохар дӀаяьккхина',
-'logentry-move-move' => '$1 {{GENDER:$2|цӀе хийцина|цӀе хийцина}} $3 оцу $4',
-'logentry-move-move-noredirect' => '$1 {{GENDER:$2|цӀе хийцина|цӀе хийцина}} $3 оцу $4 дӀасахьажийнарг цаюьтуш',
+'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-auto' => '$1 автоматически {{GENDER:$2|хьаьжина}} $3 агӀона версега $4',
# Feedback
'feedback-cancel' => 'Цаоьшу',
+'feedback-close' => 'Кийчча ю',
# Search suggestions
'searchsuggest-search' => 'Лаха',
# Limit report
'limitreport-title' => 'АгӀона хӀоттам къасторан хаамаш:',
'limitreport-cputime' => 'Процессоран хан лелор',
+'limitreport-cputime-value' => '$1 {{PLURAL:$1|секунд}}',
'limitreport-walltime' => 'Йодуш йолу хенахь лелор',
+'limitreport-walltime-value' => '$1 {{PLURAL:$1|секунд}}',
'limitreport-ppvisitednodes' => 'Препроцессор хьаьжна шадин дукхалла',
'limitreport-ppgeneratednodes' => 'Препроцессорс сгенерировать бина шадин дукхалла',
'limitreport-postexpandincludesize' => 'Схьаяьстина юккъерчаран барам',
# Special:ExpandTemplates
'expandtemplates' => 'Кепаш схьаястар',
+'expand_templates_intro' => 'ХӀокху белхан агӀорахь йиш ю йоза хийца.
+Кхин кепаш схьаяста.
+<code><nowiki>{{#language:…}}</nowiki></code> кхочуш дан тайп
+<code><nowiki>{{CURRENTDAY}}</nowiki></code>.',
+'expand_templates_title' => 'АгӀона {{FULLPAGENAME}} корта кхин а:',
+'expand_templates_input' => 'Чудолу йоза:',
'expand_templates_output' => 'Хилам',
'expand_templates_remove_comments' => 'ДӀаяха комментареш',
+'expand_templates_remove_nowiki' => 'ДӀайоху тегаш <nowiki> хилча',
+'expand_templates_generate_xml' => 'Гойту дитта цу XML',
'expand_templates_preview' => 'Хьалха муха ю хьажа',
);
$messages = array(
# User preference toggles
'tog-underline' => 'ھێڵ ھێنان بەژێر بەستەرەکان:',
-'tog-justify' => 'پەرەگرافەکان پڕاوپر نیشان بدە',
'tog-hideminor' => 'دەستکارییە بچووکەکان لە دوایین گۆڕانکارییەکاندا بشارەوە',
'tog-hidepatrolled' => 'لە دوایین گۆڕانکارییەکاندا دەستکارییە پاس دراوەکان بشارەوە',
'tog-newpageshidepatrolled' => 'لە پێرستی پەڕە نوێکاندا پەڕە پاس دراوەکان بشارەوە',
'tog-numberheadings' => 'ژمارەکردنی خۆگەڕی سەردێڕەکان',
'tog-showtoolbar' => 'شریتی ئامرازەکانی دەستکاری نیشان بدە (JavaScript پێویستە)',
'tog-editondblclick' => 'دەستکاریی پەڕە بە دووکلیک لەسەر دەق (JavaScript پێویستە)',
-'tog-editsection' => 'ڕێگە بدە بۆ دەستکاری کردنی بەشەکان لە ڕێگەی بەستەرەکانی [دەستکاری]',
'tog-editsectiononrightclick' => 'ڕێگە بدە بۆ دەستکاری کردنی بەشەکان لە ڕێگەی کلیکی ڕاست کردن لەسەر سەردێڕی بەشەکان (JavaScript پێویستە)',
-'tog-showtoc' => 'پێرستی ناوەرۆک نیشان بدە (بۆ ئەو پەڕانە کە زیاتر لە ٣ سەردێڕیان تێدایە)',
'tog-rememberpassword' => 'چوونە ژوورەوەم لەسەر ئەم وێبگەڕە پاشەکەوت بکە (ئەو پەڕی $1 {{PLURAL:$1|ڕۆژ|ڕۆژ}}ە)',
'tog-watchcreations' => 'ئەو پەڕانەی من دروستم کردوون و ئەو پەڕگانە من بارم کردوون زیاد بکە بە لیستی چاودێڕییەکەم',
'tog-watchdefault' => 'ئەو پەڕانە و ئەو پەڕگانە من دەستکاریان دەکەم زیاد بکە بە لیستی چاودێڕییەکەم',
'userlogout' => 'بچۆ دەرەوە',
'notloggedin' => 'لە ژوورەوە نیت',
'userlogin-noaccount' => 'ھەژمارت نییە؟',
-'userlogin-joinproject' => 'ڕەگەڵ {{SITENAME}} کەوە',
+'userlogin-joinproject' => 'وێڕای {{SITENAME}} کەوە',
'nologin' => 'ھەژمارت نییە؟ $1.',
'nologinlink' => 'ھەژمارێک دروست بکە',
'createaccount' => 'ھەژمار دروست بکە',
'userlogin-resetpassword-link' => 'تێپەڕوشە ڕیسێت بکەوە',
'helplogin-url' => 'Help:چوونەژوورەوە',
'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|یارمەتی بۆ چوونەژوورەوە]]',
+'userlogin-loggedin' => 'تۆ ھەر ئێستا بە ناوی {{GENDER:$1|$1}} چوویتە ژوورەوە.
+فۆرمی ژێرەوە بەکاربھێنە بۆ چوونەژوورەوە وەک بەکارھێنەرێکی تر.',
+'userlogin-createanother' => 'ھەژمارێکی تر دروست بکە',
'createacct-join' => 'زانیارییەکەت لە ژێرەوە بنووسە.',
+'createacct-another-join' => 'زانیارییەکانی ھەژمارە نوێکەت لە ژێرەوە بنووسە.',
'createacct-emailrequired' => 'ناونیشانی ئیمەیل',
'createacct-emailoptional' => 'ناونیشانی ئیمەیل (دڵخوازانە)',
'createacct-email-ph' => 'ناونیشانی ئیمەیلەکەت بنووسە',
'createacct-captcha' => 'تاوتوێی ئاسایشی',
'createacct-imgcaptcha-ph' => 'دەقەکەی لە ژێرەوە دەیبینی بینووسە',
'createacct-submit' => 'ھەژمارەکەت دروست بکە',
+'createacct-another-submit' => 'ھەژمارێکی تر دروست بکە',
'createacct-benefit-heading' => '{{SITENAME}} لە لایەن کەسانێک وەکوو خۆت دروست کراوە.',
'createacct-benefit-body1' => '{{PLURAL:$1|دەستکاری}}',
'createacct-benefit-body2' => '{{PLURAL:$1|پەڕە}}',
'compareselectedversions' => 'پیاچوونەوە ھەڵبژێردراوەکان ھەڵسەنگێنە',
'showhideselectedversions' => 'پیاچوونەوە ھەڵبژێردراوەکان نیشانبدە/بشارەوە',
'editundo' => 'پووچەڵکردنەوە',
-'diff-multi' => '({{PLURAL:$1|پیاچوونەوەیەکی نێوانی|$1 پیاچوونەوەی نێوانی}}ی {{PLURAL:$2|بەکارھێنەرێک|$2 بەکارھێنەر}} نیشان نەدراوە)',
# Search results
'searchresults' => 'ئاکامەکانی گەڕان',
'rows' => 'ڕیزەکان:',
'columns' => 'ستوونەکان:',
'searchresultshead' => 'گەڕان',
-'resultsperpage' => 'ژمارەی ئەنجامەکان لە ھەر پەڕەیەک:',
'stub-threshold' => 'سنوور بۆ شێوازی <a href="#" class="stub">بەستەری کۆڵکە</a> (بایت):',
'stub-threshold-disabled' => 'ناچالاک',
'recentchangesdays' => 'ژمارە ڕۆژە نیشاندراوەکان لە دوایین گۆڕانکارییەکان:',
'watchmethod-list' => 'سەرنجدانی لاپەڕە چاودێریکراوەکان بۆ دوایین دەستکاریەکان',
'watchlistcontains' => 'لیستی چاودێڕییەکانت $1 {{PLURAL:$1|پەڕە|پەڕە}}ی تێدایە.',
'iteminvalidname' => "ھەڵە لەگەڵ بابەتی '$1'، ناوی نادروست...",
-'wlnote' => "خوارەوە {{PLURAL:$1|دوایین گۆڕانکارییە|دوایین '''$1''' گۆڕانکارییە}} لە دوایین {{PLURAL:$2|کاتژمێر|'''$2''' کاتژمێر}}دا ھەتا $4 لە $3.",
'wlshowlast' => 'دوایین $1 کاتژمێر $2 ڕۆژی $3 نیشان بدە',
'watchlist-options' => 'ھەڵبژاردەکانی لیستی چاودێری',
'delete-warning-toobig' => 'ئەم لاپەڕە مێژوویەکی دەستکاری زۆر گەورەی هەیە، زیاتر لە $1 {{PLURAL:$1|پێداچوونەوە|پێداچوونەوە}}.
سڕینەوی ئەوە لە وانەیە کارەکانی بنکەدراوی {{SITENAME}} تووشی کێشە بکات؛
دوورنواڕانە جێبەجێی بکە.',
+'deleting-backlinks-warning' => "'''ھۆشدار:''' پەڕەی تر بەم پەڕەیەی دەتەوێ بیسڕییەوە بەستەر دراوە.",
# Rollback
'rollback' => 'گەڕاندنەوەی دەستکارییەکان',
'tooltip-pt-watchlist' => 'پێرستی ئەو پەڕانە کە چاودێریی گۆڕانکارییەکانیانی دەکەی',
'tooltip-pt-mycontris' => 'پێرستی بەشدارییەکانت',
'tooltip-pt-login' => 'پێشنیارت پێدەکرێ بچیتە ژوورەوە؛ ھەرچەندە زۆرت لێناکرێ',
-'tooltip-pt-anonlogin' => 'پێشنیار دەکەین بڕۆیتەژوورەوە، ئەگەرچی ئەوە زۆرەملیی نیە',
'tooltip-pt-logout' => 'دەرچوون',
'tooltip-ca-talk' => 'لێدوان دەربارەی ناوەڕۆکی پەرە',
'tooltip-ca-edit' => 'دەتوانی دەستکاریی ئەم پەڕەیە بکەیت. تکایە پێش پاشەکەوتکردن دوگمەی پێشبینین بەکاربێنە.',
'pageinfo-authors' => 'ژمارەی نووسەرە جیاوازەکان',
'pageinfo-recent-edits' => 'ژمارەی دوایین دەستکارییەکان (لە $1ی ڕابردوودا)',
'pageinfo-recent-authors' => 'ژمارەی دوایین نووسەرە جیاوازەکان',
+'pageinfo-magic-words' => '{{PLURAL:$1|وشەی|وشە}} {{PLURAL:$1|جادوویی|جادویییەکان}} ($1)',
'pageinfo-hidden-categories' => '{{PLURAL:$1|پۆلی شاردراوە|پۆلە شاردراوەکان}} ($1)',
-'pageinfo-templates' => 'داڕێژە{{PLURAL:$1|ی بەکارگیراو| بەکارگیراوەکان}} ($1)',
+'pageinfo-templates' => '{{PLURAL:$1|داڕێژەی|داڕێژە}} {{PLURAL:$1|بەکارگیراو|بەکارگیراوەکان}} ($1)',
'pageinfo-toolboxlink' => 'زانیاریی پەڕە',
'pageinfo-redirectsto-info' => 'زانیاری',
'pageinfo-contentpage' => 'ھەژمارکراو وەک پەڕەی بەناوەرۆک',
'days' => '{{PLURAL:$1|$1 ڕۆژ}}',
'weeks' => '{{PLURAL:$1|$1 حەفتە}}',
'months' => '{{PLURAL:$1|$1 مانگ}}',
-'years' => '{{PLURAL: $1|$1 ساڵ}}',
+'years' => '{{PLURAL:$1|$1 ساڵ}}',
'ago' => '$1 لەمە پێش',
'just-now' => 'ھەرئێستا',
* @ingroup Language
* @file
*
+ * @author Ale Mister
* @author Ale Mister (on co.wikipedia.org)
* @author Img (on co.wikipedia.org)
+ * @author Paulu
*/
+$fallback = 'it';
+
$messages = array(
+# User preference toggles
+'tog-hideminor' => "Piattà e mudifiche minore in l'ultime mudifiche",
+'tog-hidepatrolled' => "Piattà e mudifiche verificate in l'ultime mudifiche",
+'tog-newpageshidepatrolled' => 'Piattà e pagine verificate da a lista di e pagine più recente',
+'tog-watchlisthidebots' => 'Piattà e mudifiche di i boti in e pagine speciale',
+'tog-showhiddencats' => 'Mustrà e categurie nascoste',
+
'underline-always' => 'Sempre',
'underline-never' => 'Mai',
'oct' => 'ott',
'nov' => 'nuv',
'dec' => 'dic',
+'january-date' => '{{PLURAL:$1|1°|$1}} ghjennaghju',
+'february-date' => '{{PLURAL:$1|1°|$1}} ferraghju',
+'march-date' => '{{PLURAL:$1|1°|$1}} marzu',
+'may-date' => '{{PLURAL:$1|1°|$1}} maghju',
+'june-date' => '{{PLURAL:$1|1°|$1}} ghjugnu',
+'july-date' => '{{PLURAL:$1|1°|$1}} lugliu',
+'august-date' => '{{PLURAL:$1|1°|$1}} aostu',
+'september-date' => '{{PLURAL:$1|1°|$1}} sittembre',
+'november-date' => '{{PLURAL:$1|1°|$1}} nuvembre',
# Categories related messages
'pagecategories' => '{{PLURAL:$1|Categuria|Categurie}}',
-'category_header' => 'Articuli in a categuria "$1"',
+'category_header' => 'Pagine in a categuria "$1"',
'subcategories' => 'Sottucategurie',
+'category-empty' => "''Sta categuria ùn cuntene alcuna pagina o file multimediale.''",
+'hidden-categories' => '{{PLURAL:$1|Categuria nascosta|Categurie nascoste}}',
+'hidden-category-category' => 'Categurie nascoste',
+'index-category' => 'Pagine indicizate',
'about' => 'À prupositu',
'article' => 'Articulu',
+'newwindow' => '(si apre in una nova finestra)',
'cancel' => 'Annullà',
-'mypage' => 'A mo pagina',
-'mytalk' => 'E mo discussioni',
+'moredotdotdot' => 'Di più...',
+'morenotlisted' => "'Ssa lista ùn hè micca cumpletta",
+'mypage' => 'A me pagina',
+'mytalk' => 'Discussione',
'anontalk' => 'Discussione per istu indirizzu IP',
'navigation' => 'Navigazione',
'and' => ' è',
# Cologne Blue skin
+'qbfind' => 'Truvà',
+'qbbrowse' => 'Sfuglià',
+'qbedit' => 'Mudificà',
'qbpageoptions' => 'Issa pagina',
'qbmyoptions' => 'E mo pagine',
# Vector skin
+'vector-action-addsection' => 'Aghjunghje discussione',
'vector-action-delete' => 'Supprimà',
+'vector-action-move' => 'Cullucà',
'vector-action-protect' => 'Pruteghje',
+'vector-action-unprotect' => 'Cambià a prutezzione',
+'vector-view-create' => 'Creà',
'vector-view-edit' => 'Mudificà',
+'vector-view-history' => 'Vede a cronolugia',
+'vector-view-view' => 'Leghje',
+'vector-view-viewsource' => 'Vede a surghjente',
+'actions' => 'Azzione',
+'variants' => 'Variante',
'errorpagetitle' => 'Errore',
'returnto' => 'Vultà à $1.',
+'tagline' => 'À prupositu di {{SITENAME}}',
'help' => 'Aiutu',
'search' => 'Ricerca',
'searchbutton' => 'Ricerca',
-'searcharticle' => 'Và',
+'go' => 'Andà',
+'searcharticle' => 'Andà',
'history' => 'Cronolugia',
'history_short' => 'Cronolugia',
+'updatedmarker' => 'Mudificata dapoi a me ultima visita',
+'printableversion' => 'Versione stampevule',
'permalink' => 'Ligame permanente',
'print' => 'Stampà',
+'view' => 'Vede',
'edit' => 'Mudificà',
'create' => 'Creà',
+'create-this-page' => "Creà 'ssa pagina",
'delete' => 'Supprimà',
'deletethispage' => 'Cancellà issa pagina',
'protect' => 'Pruteghje',
+'protect_change' => 'Cambià',
'protectthispage' => 'Pruteghje issa pagina',
+'unprotect' => 'Cambià a prutezzione',
+'unprotectthispage' => 'Cambià a prutezzione di sta pagina',
'newpage' => 'Pagina nova',
+'talkpage' => "Discussione di 'ssa pagina",
'talkpagelinktext' => 'discussione',
'specialpage' => 'Pagina speciale',
+'personaltools' => 'Strumenti persunali',
+'postcomment' => 'Nova sezione',
'articlepage' => "Vede l'articulu",
'talk' => 'Discussione',
'toolbox' => 'Stuvigli',
'userpage' => 'Vede a pagina di utilizatore',
-'otherlanguages' => 'In altri lingui',
-'lastmodifiedat' => 'Ultima mudifica di ista pagina u $1 à e $2.',
+'projectpage' => 'Vede a pagina prutetta',
+'mediawikipage' => 'Vede i missaghji',
+'templatepage' => 'Vede a pagina di mudellu',
+'viewhelppage' => 'Vede a pagina di aiutu',
+'categorypage' => 'Vede a pagina di categuria',
+'viewtalkpage' => 'Vede a discussione',
+'otherlanguages' => 'In altre lingue',
+'lastmodifiedat' => 'Ultima mudifica di sta pagina u $1 à e $2.',
'protectedpage' => 'Pagina prutetta',
+'jumpto' => 'Andà à:',
'jumptonavigation' => 'navigazione',
'jumptosearch' => 'ricerca',
+'pool-errorunknown' => 'Errore scunnisciutu',
# 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).
'aboutsite' => 'À prupositu di {{SITENAME}}',
'aboutpage' => 'Project:À prupositu',
'currentevents' => 'Ultimi evenimenti',
'currentevents-url' => 'Project:Ultimi evenimenti',
-'disclaimers' => 'Avertimenti',
+'disclaimers' => 'Avvertimenti',
'disclaimerpage' => 'Project:Avertimenti generali',
+'helppage' => 'Help:Cuntenutu',
'mainpage' => 'Pagina maestra',
'mainpage-description' => 'Pagina maestra',
'portal' => 'Purtone di a cumunità',
'versionrequired' => 'A version $1 di MediaWiki hè necessaria',
+'ok' => "D'accordu",
+'retrievedfrom' => 'Ricacciatu da "$1"',
+'youhavenewmessagesmulti' => 'Ha novi missaghji nantu à $1',
'editsection' => 'mudificà',
'editold' => 'mudificà',
+'viewsourceold' => 'Vede a surghjente',
'editlink' => 'mudificà',
+'viewsourcelink' => 'Vede a surghjente',
+'editsectionhint' => 'Mudificà a sezzione: $1',
'toc' => 'Cuntenutu',
'showtoc' => 'mustrà',
'hidetoc' => 'piattà',
'feed-atom' => 'Atomu',
+'red-link-title' => '$1 (a pagina ùn esiste micca)',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'Articulu',
-'nstab-user' => 'Utilizatore',
+'nstab-user' => 'Pagina di cuntributore',
+'nstab-special' => 'Pagina spiciale',
+'nstab-project' => 'Pagina di prugettu',
'nstab-image' => 'Schedariu',
'nstab-mediawiki' => 'Messaghju',
'nstab-template' => 'Mudellu',
# General errors
'error' => 'Errore',
+'missingarticle-rev' => '(numeru di a versione: $1)',
'internalerror' => 'Errore internu',
+'internalerror_info' => 'Errore internu: $1',
+'badtitle' => 'Titulu scurrettu',
+'viewsource' => 'Vede a surghjente',
+'viewsource-title' => 'Vede a sughjente di $1',
+'actionthrottled' => 'Azzione attimpata',
+'viewsourcetext' => 'Si pò vede è cupià u codice surghjente di sta pagina:',
+
+# Virus scanner
+'virus-unknownscanner' => 'antivirus scunnisciutu:',
# Login and logout pages
-'yourname' => 'Nome di utilizatore:',
-'yourpassword' => 'Parulla secreta:',
-'yourpasswordagain' => 'Scrive torna a parulla secreta:',
+'yourname' => 'Nome di cuntributore:',
+'yourpassword' => 'Parolla secreta:',
+'yourpasswordagain' => 'Ripete a parolla secreta:',
'yourdomainname' => 'U to duminiu:',
'login' => 'Cunnessione',
-'userlogin' => 'Cunnessione / Registramentu',
+'nav-login-createaccount' => 'Cunnessione / registramentu',
+'userlogin' => 'Cunnessione / registramentu',
'logout' => 'Scunnessione',
'userlogout' => 'Scunnessione',
+'nologin' => 'Ùn ha ancu un accessu? $1.',
'nologinlink' => 'Registramentu',
'createaccount' => 'Registramentu',
+'gotaccount' => 'Ùn ha ancu un accessu? $1.',
'gotaccountlink' => 'Cunnessione',
'createaccountreason' => 'Mutivu:',
+'createacct-reason' => 'Mutivu',
'loginsuccesstitle' => 'Cunnessione fatta',
'acct_creation_throttle_hit' => "Desulatu, ai digià fattu $1 registramenti. Ùn ne poi micca fà d'altri.",
'accountcreated' => 'Registramentu fattu',
# Change password dialog
'retypenew' => 'Scrive torna a nova parulla secreta:',
+'resetpass-submit-cancel' => 'Cancillà',
+
+# Special:ChangeEmail
+'changeemail-cancel' => 'Cancillà',
# Edit page toolbar
+'bold_sample' => 'Grassettu',
+'bold_tip' => 'Grassettu',
+'italic_sample' => 'Italicu',
+'italic_tip' => 'Italicu',
+'link_sample' => 'Titulu di u ligame',
+'link_tip' => 'Ligame internu',
+'extlink_tip' => 'Ligamu esternu (cù u prefissu http:// )',
+'headline_sample' => 'Testu di intestatura',
+'headline_tip' => 'Intestamentu di 2° livellu',
+'nowiki_sample' => 'Inserisce quì u testu micca furmattatu',
+'nowiki_tip' => 'Ignurà a furmattazione wiki',
'image_sample' => 'Esempiu.jpg',
+'hr_tip' => 'Linia orizuntale (da imprudà incù ghjudiziu)',
# Edit pages
-'minoredit' => 'Mudifica minore',
+'minoredit' => 'Hè una mudifica minore',
+'watchthis' => "Fighjulà 'ssa pagina",
'savearticle' => 'Arrighjistrà a pagina',
+'preview' => 'Previsualisazione',
+'showpreview' => 'Previsualizà',
'showdiff' => 'Mustrà i cambiamenti',
-'anoneditwarning' => "'''Attenzione''': ùn sè micca un utilizatore registratu, oppuru ùn ai fattu a cunnessione.
-U to indirizzu IP serà registratu indu a cronolugia di ista pagina.",
+'anoneditwarning' => "'''Attenzione:''' Ùn ai micca fattu a cunnessione. U to indirizzu IP sarà salvatu in a cronolugia di sta pagina.",
'loginreqlink' => 'cunnessione',
'accmailtitle' => 'Parulla secreta inviata.',
'accmailtext' => 'A parulla secreta per "$1" hè stata inviata à l\'indirizzu $2.',
+'newarticle' => '(Novu)',
+'previewnote' => "'''Attentu: questa ùn hè ch'è una previsualisazzione.'''
+E to mudifiche ùn sò ancora state salvate!",
'editing' => 'Mudifica di $1',
'editingsection' => 'Mudifica di $1 (sezzione)',
'editingcomment' => 'Mudifica di $1 (cummentu)',
'editconflict' => 'Cunflittu di mudificazione: $1',
'yourtext' => 'U to testu',
'yourdiff' => 'Differenze',
+'templatesused' => "{{PLURAL:$1|Mudellu imprudatu|Mudelli imprudati}} in 'ssa pagina:",
'template-protected' => '(prutettu)',
'template-semiprotected' => '(mezu prutettu)',
+'hiddencategories' => 'Sta pagina appartene à {{PLURAL:$1|una categuria nascosta|$1 categurie nascoste}}:',
+
+# Parser/template warnings
+'post-expand-template-inclusion-warning' => "'''Attenti:''' a dimensione di i mudelli inclusi è troppa maiò.
+Parechji mudelli ùn seranu micca inclusi.",
+'post-expand-template-inclusion-category' => 'Pagine per e quale a dimensione di i mudelli inclusi supereghja a limita',
+'post-expand-template-argument-category' => 'Pagine cuntinenti argumenti di mudellu mancanti',
# Account creation failure
'cantcreateaccounttitle' => 'Registramentu micca pussibile',
# History pages
'currentrev' => 'Ultima revisione',
+'currentrev-asof' => 'Versione attuale di e $1',
+'revisionasof' => 'Versione di e $1',
+'revision-info' => 'Versione di e $4 à e $5 di $2',
+'previousrevision' => '← Versione menu ricente',
+'currentrevisionlink' => 'Ultima revisione',
'page_first' => 'prima',
-'histfirst' => 'Prima',
-'histlast' => 'Ultima',
+'history-fieldset-title' => 'Parcorre a cronolugia',
+'history-show-deleted' => 'Solu quelli cancellati',
+'histfirst' => 'prima',
+'histlast' => 'ultima',
'historysize' => '({{PLURAL:$1|1 ottettu|$1 ottetti}})',
# Revision feed
'history-feed-title' => 'Cronolugia di e revisione',
+'history-feed-item-nocomment' => 'da $1 à $2',
# Revision deletion
'rev-delundel' => 'mustrà/piattà',
'revdelete-log' => 'Mutivu:',
+'revdel-restore' => 'cambià a visibilità',
# History merging
'mergehistory-reason' => 'Mutivu:',
+# Diffs
+'history-title' => '$1: cronolugia di e mudifiche',
+'lineno' => 'Linia $1:',
+'compareselectedversions' => 'Paragunà e versione selezziunate',
+'editundo' => 'Cancillà a modifica',
+
# Search results
'searchresults' => 'Risultati di a ricerca',
+'searchresults-title' => 'Risultati di a ricerca di "$1"',
+'prevn' => '{{PLURAL:$1|precidente|precidenti $1}}',
+'nextn' => '{{PLURAL:$1|siguente|siguenti $1}}',
+'prevn-title' => '{{PLURAL:$1|Risultatu precidente|$1 risultati precidenti}}',
+'nextn-title' => '{{PLURAL:$1|Risultatu|$1 risultati}}',
+'shown-title' => 'Mustrà {{PLURAL:$1|un risultatu|$1 risultati}} per pagina',
+'searchmenu-exists' => "'''Esiste nantu à u situ una pagina intitulata \"[[:\$1]]\"'''",
+'searchmenu-new' => 'Creà a pagina "[[:$1]]" annantu à \'ssu situ',
+'searchprofile-articles' => 'Pagine di cuntenuti',
+'searchprofile-project' => 'Pagine di aiutu è relative à u prugettu',
+'searchprofile-everything' => 'Tuttu',
+'searchprofile-advanced' => 'Avanzatu',
+'searchprofile-articles-tooltip' => 'Circà in $1',
+'searchprofile-project-tooltip' => 'Circà in $1',
+'searchprofile-everything-tooltip' => 'Circà dapertuttu (incluse e pagine di discussione)',
+'search-result-size' => '$1 ({{PLURAL:$2|1 parolla|$2 parolle}})',
+'search-section' => '(sezzione $1)',
+'search-suggest' => 'Forse vulii dì',
+'searchrelated' => 'currilati',
+'showingresultsheader' => "{{PLURAL:$5|Risultatu '''$1''' di '''$3'''|Risultati '''$1 - $2''' di '''$3'''}} per '''$4'''",
+'search-nonefound' => 'A ricerca ùn hà micca datu risultati.',
# Preferences page
'preferences' => 'Preferenze',
'localtime' => 'Ora lucale',
'allowemail' => 'Abilità a ricezzione di e-mail da altri utilizatori',
'prefs-files' => 'Schedarii',
-'youremail' => 'Indirizzu e-mail:',
-'yourrealname' => 'U to veru nome:',
+'youremail' => 'Indirizzu di currieru elettronicu:',
+'yourrealname' => 'Casata reale:',
'yourlanguage' => "Lingua di l'interfaccia:",
'yourvariant' => 'Variante',
'yournick' => 'Signatura pè e discussioni:',
'grouppage-sysop' => '{{ns:project}}:Amministratori',
'grouppage-bureaucrat' => '{{ns:project}}:Burocrati',
+# Special:Log/newusers
+'newuserlogpage' => 'Novi cuntributori',
+
+# Associated actions - in the sentence "You do not have permission to X"
+'action-edit' => "mudificà 'ssa pagina",
+
# Recent changes
+'nchanges' => '$1 {{PLURAL:$1|mudifica|mudifiche}}',
'recentchanges' => 'Ultimi cambiamenti',
-'rcnotefrom' => "Quì sò discritti i cambiamenti dipoi <b>$2</b> (sin'à <b>$1</b>).",
-'rclistfrom' => 'Mustrà i cambiamenti dipoi $1',
+'recentchanges-legend' => "Ozzione per l'ultime mudifiche",
+'recentchanges-summary' => 'Sta pagina prisenta e mudifiche più recente à u cuntenutu di u situ.',
+'recentchanges-label-newpage' => "'Ssa mudifica hà creatu una pagina nova",
+'recentchanges-label-minor' => 'Hè una mudifica minore',
+'recentchanges-label-bot' => 'Sta mudifica hè stata effettuata da un botu',
+'recentchanges-label-unpatrolled' => 'Sta mudifica ùn hè ancu stata verificata',
+'recentchanges-label-plusminus' => "A dimensione di a pagina hè stata cambiata di 'ssu numaru d'ottetti",
+'rcnotefrom' => "Quì seguitanu e mudifiche dapoi u '''$2''' ('''$1''' à u massimu).",
+'rclistfrom' => 'Mustrà e mudifiche dapoi u $1',
'rcshowhideminor' => '$1 i cambiamenti minori',
'rcshowhidebots' => '$1 i boti',
-'rcshowhideliu' => "$1 l'utilizatori registrati",
+'rcshowhideliu' => '$1 i cuntributori righjistrati',
'rcshowhideanons' => '$1 i cuntributori anonimi',
+'rcshowhidepatr' => '$1 e mudifiche verificate',
'rcshowhidemine' => '$1 e mo cuntribuzioni',
-'rclinks' => 'Mustrà ultimi $1 cambiamenti in i $2 ghjorni scorsi<br />$3',
+'rclinks' => "Mustrà l'ultime $1 mudifiche in i $2 ghjorni scorsi<br />$3",
'hist' => 'cron',
'hide' => 'piattà',
'show' => 'mustrà',
+'rc-enhanced-hide' => 'Nasconde i dittagli',
# Recent changes linked
-'recentchangeslinked' => 'Cambiamenti assuciati',
+'recentchangeslinked' => 'Mudifiche assuciate',
'recentchangeslinked-feed' => 'Cambiamenti assuciati',
'recentchangeslinked-toolbox' => 'Cambiamenti assuciati',
+'recentchangeslinked-title' => 'Mudifiche assuciate à "$1"',
+'recentchangeslinked-page' => 'Nome di a pagina:',
+'recentchangeslinked-to' => 'Mustrà solu e mudifiche à a pagine legate à quella specificata',
# Upload
'upload' => 'Incaricà un schedariu',
'upload-file-error' => 'Errore internu',
+'license' => 'Licenzia:',
+'license-header' => 'Licenzia:',
+
# Special:ListFiles
'imgfile' => 'schedariu',
'listfiles_date' => 'Data',
'file-anchor-link' => 'Schedariu',
'filehist' => "Cronolugia di l'imagine",
'filehist-deleteone' => 'supprimà',
-'filehist-user' => 'Utilizatore',
-'imagelinks' => 'Ligami',
+'filehist-user' => 'Cuntributore',
+'filehist-dimensions' => 'Dimensione',
+'filehist-comment' => 'Cummentu',
+'imagelinks' => 'Usu di u schedariu',
# File reversion
'filerevert-comment' => 'Mutivu:',
# Miscellaneous special pages
'ncategories' => '$1 {{PLURAL:$1|categuria|categurie}}',
+'nmembers' => '$1 {{PLURAL:$1|elementu|elementi}}',
'specialpage-empty' => 'Issa pagina hè biota.',
'popularpages' => 'Pagine populare',
+'prefixindex' => 'Indice di e pagine per lettere iniziale',
'shortpages' => 'Pagine corte',
'longpages' => 'Pagine longhe',
'protectedpages' => 'Pagine prutette',
'listusers' => 'Listinu di i cuntributori',
'newpages' => 'Pagine nove',
'ancientpages' => 'Pagine vechje',
+'move' => 'Cullucà',
+'pager-newer-n' => '{{PLURAL:$1|1 più ricente|$1 più ricenti}}',
+'pager-older-n' => '{{PLURAL:$1|1 menu ricente|$1 menu ricenti}}',
+
+# Book sources
+'booksources' => 'Libri di fonti',
+'booksources-go' => 'Andà',
# Special:Log
'specialloguserlabel' => 'Utilizatore:',
'speciallogtitlelabel' => 'Titulu:',
+'log' => 'Righjistramenti',
'all-logs-page' => "Tutte l'azzioni",
# Special:AllPages
'allpages' => 'Tutte e pagine',
'alphaindexline' => 'da $1 à $2',
+'nextpage' => 'Pagina seguente ($1)',
+'prevpage' => 'Pagina precedente ($1)',
'allpagesfrom' => 'Mustrà e pagine à parte da:',
-'allarticles' => "Tutti l'articuli",
+'allarticles' => 'Tutte e pagine',
'allinnamespace' => 'Tutte e pagine di u spaziu $1',
'allpagessubmit' => 'Và',
'allpagesprefix' => 'Mustrà e pagine chì cumincianu cù:',
# Special:LinkSearch
'linksearch-ns' => 'Spaziu:',
'linksearch-ok' => 'Ricerca',
+'linksearch-line' => '$1 hè culligatu à a pagina $2',
# Special:ListUsers
'listusers-submit' => 'Mustrà',
+# Special:ListGroupRights
+'listgrouprights-members' => '(Lista di i membri)',
+
# Email user
+'emailuser' => "Scrive à 'ssu cuntributore",
'emailto' => 'À:',
'emailsubject' => 'Sughjettu:',
'emailmessage' => 'Messaghju:',
'emailsend' => 'Invià',
# Watchlist
-'watchlist' => 'Articuli seguitati',
-'mywatchlist' => 'Articuli seguitati',
-'watch' => 'Seguità',
+'watchlist' => 'Seguitati',
+'mywatchlist' => 'Seguitati',
+'watchlistfor2' => 'Per $1 ($2)',
+'watch' => 'Suvità',
+'unwatch' => 'Ùn suvità micca',
+'wlshowlast' => "Mustrà l'ultime $1 ore $2 ghjorni $3",
'enotif_reset' => 'Marcà tutte e pagine visitate',
'created' => 'creatu',
'exblank' => 'a pagina era biota',
'delete-legend' => 'Supprimà',
'actioncomplete' => 'Azzione compia',
+'actionfailed' => 'Azione faltata',
+'dellogpage' => 'Cancellamenti',
'deletecomment' => 'Mutivu:',
# Protect
-'protectedarticle' => 'prutettu "[[$1]]"',
+'protectedarticle' => 'hai prutettu "[[$1]]"',
'prot_1movedto2' => 'hà mossu [[$1]] à [[$2]]',
'protect-legend' => 'Cunfirmà a prutezzione',
'protectcomment' => 'Mutivu:',
# Undelete
'viewdeletedpage' => 'Fighjulà e p agine supprimate',
+'undeleteviewlink' => 'vede',
'undeletecomment' => 'Mutivu:',
'undelete-search-box' => 'Circà e pagine supprimate',
'undelete-search-submit' => 'Ricerca',
'blanknamespace' => '(Principale)',
# Contributions
-'contributions' => "Cuntribuzioni di l'utilizatore",
-'mycontris' => 'E mo cuntribuzioni',
-'contribsub2' => 'Per $1 ($2)',
+'contributions' => 'Mudifiche fatte da i {{GENDER:$1|cuntributori|cuntributrici}}',
+'contributions-title' => 'Cuntribuzione di $1',
+'mycontris' => 'Cuntribuzioni',
+'contribsub2' => 'Per {{GENDER:$3|$1}} ($2)',
'month' => 'Da u mese (è nanzu):',
+'year' => "Da l'annu (è nanzu):",
+'sp-contributions-newbies' => 'Mustrà solu e mudifiche di i novi cuntributori',
'sp-contributions-talk' => 'discussione',
+'sp-contributions-search' => 'Ricercà e cuntribuzione',
+'sp-contributions-submit' => 'Circà',
# What links here
+'whatlinkshere' => 'Pagine chì leganu quì',
+'whatlinkshere-title' => 'Pagine ligate à "$1"',
+'linkshere' => "E seguente pagine sò culligate à '''[[:$1]]''':",
'istemplate' => 'inclusione',
+'whatlinkshere-prev' => '{{PLURAL:$1|precidente|precidenti $1}}',
+'whatlinkshere-next' => '{{PLURAL:$1|seguente|seguenti $1}}',
+'whatlinkshere-links' => '$1 ligami',
+'whatlinkshere-hidetrans' => 'inclusione',
+'whatlinkshere-hidelinks' => '$1 ligami',
# Block/unblock
'ipadressorusername' => 'Adrizzu IP o nome di cuntributore',
'ipbreason' => 'Mutivu:',
+'ipboptions' => '2 ore:2 hours,1 ghjornu:1 day,3 ghjorni:3 days,1 sittimana:1 week,2 sittimane:2 weeks,1 mese:1 month,3 mesi:3 months,6 mesi:6 months,1 annu:1 year,infinitu:infinite',
+'ipblocklist' => 'Cuntributori bluccati',
'blocklist-reason' => 'Mutivu',
'ipblocklist-submit' => 'Ricerca',
'anononlyblock' => 'solu i cuntributori anonimi',
'blocklink' => 'bluccà',
'unblocklink' => 'sbluccà',
-'contribslink' => 'cuntribuzioni',
+'change-blocklink' => 'cambià u bloccu',
+'contribslink' => 'cuntribuzione',
+'blocklogentry' => 'ha bluccatu [[$1]] per un periodu di $2 $3',
'block-log-flags-anononly' => 'solu cuntributori anonimi',
'block-log-flags-nocreate' => 'registramentu pruibitu',
'export-addcat' => 'Aghjunghje',
# Namespace 8 related
-'allmessages' => 'Messaghji di sistemu',
+'allmessages' => 'Messagi di sistemu',
'allmessagesname' => 'Nome',
-'allmessagesdefault' => 'Testu prestabilitu',
+'allmessagesdefault' => 'Testu predefinitu',
'allmessagescurrent' => 'Testu attuale',
-'allmessagestext' => 'Istu hè u listinu di tutti i messaghji dispunibili in u spaziu MediaWiki.',
-'allmessagesnotsupportedDB' => "'''{{ns:special}}:Allmessages''' ùn hè dispunibile perchè '''\$wgUseDatabaseMessages''' ùn hè micca attivu.",
+'allmessagestext' => 'Ista pagina riperturia a lista di tutti i messagi dispunibili in u spaziu MediaWiki. Per cuntribuì à a lucalizazione generica di MediaWiki, visità [[translatewiki:|Translatewiki.net]].',
+'allmessagesnotsupportedDB' => "Ista pagina ùn hè dispunibile perchè '''\$wgUseDatabaseMessages''' ùn hè micca attivu.",
+'allmessages-filter-legend' => 'Filtru',
+'allmessages-filter' => 'Filtrà per statu di mudifica:',
+'allmessages-filter-unmodified' => 'Micca mudificati',
+'allmessages-filter-all' => 'Tutti',
+'allmessages-filter-modified' => 'Mudificati',
+'allmessages-prefix' => 'Filtrà per prefissu:',
+'allmessages-language' => 'Lingua:',
+'allmessages-filter-submit' => 'Applicà',
+
+# Thumbnails
+'thumbnail-more' => 'Allargà',
# Special:Import
'import-interwiki-submit' => 'Impurtà',
'import-logentry-upload-detail' => '$1 {{PLURAL:$1|revisione|revisione}}',
# Tooltip help for the actions
-'tooltip-pt-userpage' => 'A to pagina di utilizatore',
+'tooltip-pt-userpage' => 'A to pagina di cuntributore',
'tooltip-pt-mytalk' => 'A to pagina di discussione',
'tooltip-pt-preferences' => 'E to preferenze',
-'tooltip-pt-watchlist' => 'U listinu di e pagine chì seguiti',
-'tooltip-pt-mycontris' => 'U listinu di e to cuntribuzioni',
+'tooltip-pt-watchlist' => "Lista di e pagine ch'è tù suviti",
+'tooltip-pt-mycontris' => 'Lista di e to cuntribuzioni',
'tooltip-pt-login' => 'U registramentu hè suggeritu, micca ubligatoriu',
-'tooltip-pt-logout' => 'Scunnessione',
-'tooltip-ca-protect' => 'Pruteghje issa pagina',
-'tooltip-ca-delete' => 'Supprimà issa pagina',
+'tooltip-pt-logout' => 'Esce da a sessione',
+'tooltip-ca-talk' => 'Vede e discussione relative à sta pagina',
+'tooltip-ca-edit' => "Pò mudificà 'ssa pagina. Per piacè improda l'ozzione di previsualisazzione prima di salvà",
+'tooltip-ca-addsection' => 'Cumincià una nova sezzione',
+'tooltip-ca-viewsource' => 'Sta pagina hè prutetta, ma si pò vede u so codice surghjente',
+'tooltip-ca-history' => 'Versione precedente di sta pagina',
+'tooltip-ca-protect' => 'Prutege sta pagina',
+'tooltip-ca-delete' => 'Supprime sta pagina',
+'tooltip-ca-move' => "Move 'ssa pagina",
+'tooltip-ca-watch' => "Aghjunghje 'ssa pagina à u listinu di e pagine ch'è tù suviti",
+'tooltip-search' => 'Circà in {{SITENAME}}',
+'tooltip-search-go' => "Andà à una pagina incù u titolu indicatu, s'ella esiste",
+'tooltip-search-fulltext' => 'Circà e pagine cuntinenti stu testu',
'tooltip-p-logo' => 'Pagina maestra',
'tooltip-n-mainpage' => 'Andà à a Pagina maestra',
+'tooltip-n-mainpage-description' => 'Andà à a pagina maestra',
+'tooltip-n-portal' => 'À prupositu di u prugettu, ciò chì si pò fà, induve truvà qualcosa',
+'tooltip-n-currentevents' => "Informazione nantu à l'evvenimenti di attualità",
+'tooltip-n-recentchanges' => "Listinu di l'ultime mudifiche di u situ",
+'tooltip-n-randompage' => "Sceglie una pagina à l'accasu",
+'tooltip-n-help' => 'Pagine di aiutu',
+'tooltip-t-whatlinkshere' => 'Listinu di tutte e pagine chì sò ligate à quessa',
+'tooltip-t-recentchangeslinked' => "Versione di l'ultime mudifiche à e pagine legate à quessa",
+'tooltip-t-contributions' => "Listinu di e mudifiche di 'ssu cuntributore",
'tooltip-t-specialpages' => 'Listinu di tutte e pagine spiciale',
-'tooltip-ca-nstab-user' => 'Vede a pagina di utilizatore',
+'tooltip-t-print' => "Versione stampevule di 'ssa pagina",
+'tooltip-t-permalink' => 'Ligame permanente à e revisione di sta pagina',
+'tooltip-ca-nstab-main' => "Vede u cuntenutu di l'articulu",
+'tooltip-ca-nstab-user' => 'Vede a pagina di cuntributore',
+'tooltip-ca-nstab-project' => 'Vede a pagina di u prugettu',
+'tooltip-ca-nstab-template' => 'Vede u mudellu',
+'tooltip-ca-nstab-category' => 'Vede a pagina di categuria',
+'tooltip-minoredit' => "Signalà com'è mudifica minore",
+'tooltip-save' => 'Arrighjistrà i cambiamenti',
+'tooltip-preview' => 'Previsualizà i cambiamenti (si cunsiglia di salvà prima)',
+'tooltip-diff' => 'Mustrà e mudifiche fatte à u testu',
+'tooltip-compareselectedversions' => 'Vede e differenze trà e dui versione selezziunate di sta pagina.',
# Attribution
'anonymous' => '{{PLURAL:$1|Utilizatore anonimu|Utilizatori anonimi}} di {{SITENAME}}',
'others' => 'altri',
# Media information
-'show-big-image' => 'Imagine in alta resoluzione',
+'file-nohires' => 'Una diversione incù una risoluzione più alta ùn hè micca dispunibile.',
+'show-big-image' => 'Schedariu originale',
+'show-big-image-other' => '{{PLURAL:$2|Altra risuluzione|Altre risuluzioni}}: $1.',
# Special:NewFiles
'showhidebots' => '($1 boti)',
'exif-saturation-0' => 'Nurmale',
# 'all' in various places, this might be different for inflected languages
-'watchlistall2' => 'tutti',
+'watchlistall2' => 'tutte',
'monthsall' => 'tutti',
# action=purge
'confirm_purge_button' => "D'accordu",
# Table pager
-'table_pager_next' => 'Prossima pagina',
+'table_pager_next' => 'Pagina seguente',
+'table_pager_prev' => 'Pagina precedente',
'table_pager_first' => 'Prima pagina',
'table_pager_last' => 'Ultima pagina',
+'table_pager_limit' => 'Mustrà $1 elementi per pagina',
+'table_pager_limit_label' => 'Risultati per pagina:',
+'table_pager_limit_submit' => 'Invià',
'table_pager_empty' => 'Micca risultati',
# Auto-summaries
# Watchlist editor
'watchlistedit-raw-titles' => 'Pagine:',
+# Watchlist editing tools
+'watchlisttools-view' => 'Vede e modifiche assuciate',
+
# Special:Version
'version' => 'Versione',
+'version-specialpages' => 'Pagine spiciale',
# Special:SpecialPages
'specialpages' => 'Pagine spiciale',
# Special:Tags
'tags-edit' => 'mudificà',
+# New logging system
+'rightsnone' => '(nessunu)',
+
# Special:ExpandTemplates
'expand_templates_output' => 'Risultatu',
$messages = array(
# User preference toggles
'tog-underline' => 'Kuritan sa idalum ang mga link',
-'tog-justify' => 'Tadlungon ang mga talata',
'tog-hideminor' => 'Itago ang mga gamay nga ginliwat sang mini lang ginbag-o',
'tog-hidepatrolled' => 'Itago ang mga napatrolya nga mga na-islan sang mini lang ginbag-o',
'tog-newpageshidepatrolled' => 'Itago ang mga napatrolya nga mga pahina halin sa bag-o nga lista sang pahina',
'tog-numberheadings' => 'Insigida nga pag-isip sang numero sa mga titulo',
'tog-showtoolbar' => 'Ipakita ang toolbar sang pag-ilis (kinahanglan ang JavaScript)',
'tog-editondblclick' => 'Liwaton ang mga pahina sa duwa ka pindot {kinahanglan ang Javascript}',
-'tog-editsection' => 'Pasugtan ang pagilis sang mga seksyon pamaagi sa mga [ilis] nga link',
'tog-editsectiononrightclick' => 'Pasugtan ang pag-ilis sang mga bahin pama-agi sa tu-o nga pagpindot sa mga titulo sang pahina {kinanglan ang JavaScript}',
-'tog-showtoc' => 'Ipakita ang listahan sang mga kaundan (sa mga pahina nga may madamu pa sa 3 ka titulo)',
'tog-rememberpassword' => 'Dumduma ang pagsulod ko sa mini nga kompyuter (pinakadamu na ang $1 {{PLURAL:$1|adlaw|mga adlaw}})',
'tog-watchcreations' => 'Idugang sa akon balantayan ang mga pahina nga gin-ubra ko.',
'tog-watchdefault' => 'Idugang sa akon balantayan ang mga pahina nga akon na-islan',
$messages = array(
# User preference toggles
'tog-underline' => 'Багълантыларнынъ тюбюни сызув:',
-'tog-justify' => 'Метинни эки янгъа тегизле',
'tog-hideminor' => '"Сонъки денъиштирмелер" саифесинде кичик денъиштирмелерни гизле',
'tog-hidepatrolled' => 'Сонъки денъиштирмелер косьтергенде тешкерильген денъиштирмелерни гизле',
'tog-newpageshidepatrolled' => 'Янъы саифелер косьтергенде тешкерильген саифелерни гизле',
'tog-numberheadings' => 'Серлеваларны автоматик номераландыр',
'tog-showtoolbar' => 'Саифени денъиштирген вакъытта ярдымджы дёгмелерни косьтер. (JavaScript)',
'tog-editondblclick' => 'Саифени чифт басып денъиштирмеге башла (JavaScript)',
-'tog-editsection' => 'Болюклерни [денъиштир] багълантысы вастасынен денъиштирмеге рухсет бер',
'tog-editsectiononrightclick' => 'Болюк серлевасына онъ баскъанда денъиштирюв пенджересини ач. (JavaScript)',
-'tog-showtoc' => 'Мундеридже джедвели косьтер (3 данеден зияде серлевасы олгъан саифелер ичюн)',
-'tog-rememberpassword' => 'Киришимни бу браузерде хатырла (энъ чокъ $1 {{PLURAL:$1|кунь|кунь}} ичюн)',
+'tog-rememberpassword' => 'Киришимни бу браузерде хатырла (энъ чокъ $1 {{PLURAL:$1|1=кунь|кунь}} ичюн)',
'tog-watchcreations' => 'Яраткъан саифелеримни ве юклеген файлларымны козетюв джедвелиме кирсет',
'tog-watchdefault' => 'Денъиштирген саифе ве файлларымны козетюв джедвелиме кирсет',
'tog-watchmoves' => 'Адыны мен денъиштирген саифе ве файлларны козетюв джедвелиме кирсет',
'dec' => 'дек',
# Categories related messages
-'pagecategories' => '{{PLURAL:$1|Саифенинъ категориясы|Саифенинъ категориялары}}',
+'pagecategories' => '{{PLURAL:$1|1=Саифенинъ категориясы|Саифенинъ категориялары}}',
'category_header' => '"$1" категориясындаки саифелер',
'subcategories' => 'Алт категориялар',
'category-media-header' => '"$1" категориясындаки медиа файллары',
'category-empty' => "''Ишбу категорияда ич бир саифе я да медиа файл ёкъ.''",
-'hidden-categories' => 'Гизли {{PLURAL:$1|категория|категориялар}}',
+'hidden-categories' => 'Гизли {{PLURAL:$1|1=категория|категориялар}}',
'hidden-category-category' => 'Гизли категориялар',
-'category-subcat-count' => '{{PLURAL:$2|Бу категорияда тек бир ашагъыдаки алт категория бар.|Бу категориядаки топлам $2 алт категориядан ашагъыдаки $1 алт категория косьтерильген.}}',
-'category-subcat-count-limited' => 'Бу категорияда ашагъыдаки {{PLURAL:$1|1|$1}} алт категория бар.',
-'category-article-count' => '{{PLURAL:$2|Бу категорияда тек бир ашагъыдаки саифе бар.|Бу категориядаки топлам $2 саифеден ашагъыдаки $1 саифе косьтерильген.}}',
-'category-article-count-limited' => 'Бу категорияда ашагъыдаки {{PLURAL:$1|1|$1}} саифе бар.',
-'category-file-count' => '{{PLURAL:$2|Бу категорияда тек бир ашагъыдаки файл бар.|Бу категориядаки топлам $2 файлдан ашагъыдаки $1 файл косьтерильген.}}',
-'category-file-count-limited' => 'Бу категорияда ашагъыдаки {{PLURAL:$1|1|$1}} файл бар.',
+'category-subcat-count' => '{{PLURAL:$2|1=Бу категорияда тек бир ашагъыдаки алт категория бар.|Бу категориядаки топлам $2 алт категориядан ашагъыдаки $1 алт категория косьтерильген.}}',
+'category-subcat-count-limited' => 'Бу категорияда ашагъыдаки {{PLURAL:$1|1=1|$1}} алт категория бар.',
+'category-article-count' => '{{PLURAL:$2|1=Бу категорияда тек бир ашагъыдаки саифе бар.|Бу категориядаки топлам $2 саифеден ашагъыдаки $1 саифе косьтерильген.}}',
+'category-article-count-limited' => 'Бу категорияда ашагъыдаки {{PLURAL:$1|1=1|$1}} саифе бар.',
+'category-file-count' => '{{PLURAL:$2|1=Бу категорияда тек бир ашагъыдаки файл бар.|Бу категориядаки топлам $2 файлдан ашагъыдаки $1 файл косьтерильген.}}',
+'category-file-count-limited' => 'Бу категорияда ашагъыдаки {{PLURAL:$1|1=1|$1}} файл бар.',
'listingcontinuesabbrev' => ' (девам)',
'index-category' => 'Индексли саифелер',
'noindex-category' => 'Индекссиз саифелер',
'create-this-page' => 'Бу саифени ярат',
'delete' => 'Ёкъ эт',
'deletethispage' => 'Саифени ёкъ эт',
-'undelete_short' => '{{PLURAL:$1|1|$1}} денъиштирмени кери кетир',
-'viewdeleted_short' => '{{PLURAL:$1|бир ёкъ этильген денъиштирмени|$1 ёкъ этильген денъиштирмени}} косьтер.',
+'undelete_short' => '{{PLURAL:$1|1=1|$1}} денъиштирмени кери кетир',
+'viewdeleted_short' => '{{PLURAL:$1|1=бир ёкъ этильген денъиштирмени|$1 ёкъ этильген денъиштирмени}} косьтер.',
'protect' => 'Къорчала',
'protect_change' => 'денъиштир',
'protectthispage' => 'Саифени къорчалав алтына ал',
'redirectedfrom' => '($1 саифесинден ёлланды)',
'redirectpagesub' => 'Ёллама саифеси',
'lastmodifiedat' => 'Бу саифе сонъки оларакъ $1, $2 тарихында янъарды.',
-'viewcount' => 'Бу саифе {{PLURAL:$1|1|$1}} дефа иришильген.',
+'viewcount' => 'Бу саифе {{PLURAL:$1|1=1|$1}} дефа иришильген.',
'protectedpage' => 'Къорчалангъан саифе',
'jumpto' => 'Бунъа бар:',
'jumptonavigation' => 'къуллан',
'badaccess' => 'Изин хатасы',
'badaccess-group0' => 'Япаджакъ олгъан арекетинъизни япмагъа акъкъынъыз ёкъ.',
-'badaccess-groups' => 'Япаджакъ олгъан арекетинъизни тек ашагъыдаки {{PLURAL:$2|1|$2}} группагъа аза олгъан къулланыджылары япып олалар: $1.',
+'badaccess-groups' => 'Япаджакъ олгъан арекетинъизни тек ашагъыдаки {{PLURAL:$2|1=1|$2}} группагъа аза олгъан къулланыджылары япып олалар: $1.',
'versionrequired' => 'MediaWiki-нинъ $1 версиясы керек',
'versionrequiredtext' => 'Бу саифени къулланмакъ ичюн MediaWiki-нинъ $1 версиясы керек. [[Special:Version|Версия]] саифесине бакъ.',
'ok' => 'Ок',
'retrievedfrom' => 'Менба – "$1"',
'youhavenewmessages' => 'Янъы $1 бар ($2).',
-'youhavenewmessagesfromusers' => '{{PLURAL:$3|Башкъа бир къулланыджыдан|$3 къулланыджыдан}} $1 бар. ($2)',
+'youhavenewmessagesfromusers' => '{{PLURAL:$3|1=Башкъа бир къулланыджыдан|$3 къулланыджыдан}} $1 бар. ($2)',
'youhavenewmessagesmanyusers' => 'Бир къач къулланыджыдан $1 бар. ($2)',
-'newmessageslinkplural' => '{{PLURAL:$1|янъы беянатынъыз|янъы беянатларынъыз}}',
-'newmessagesdifflinkplural' => 'музакере саифенъизнинъ сонъки {{PLURAL:$1|денъиштирильмеси|денъиштирильмелери}}',
+'newmessageslinkplural' => '{{PLURAL:$1|1=янъы беянатынъыз|янъы беянатларынъыз}}',
+'newmessagesdifflinkplural' => 'музакере саифенъизнинъ сонъки {{PLURAL:$1|1=денъиштирильмеси|денъиштирильмелери}}',
'youhavenewmessagesmulti' => '$1 саифесинде янъы беянатынъыз бар.',
'editsection' => 'денъиштир',
'editold' => 'денъиштир',
'collapsible-expand' => 'Кенишлет',
'thisisdeleted' => '$1 корьмеге я да кери кетирмеге истейсинъизми?',
'viewdeleted' => '$1 корь?',
-'restorelink' => 'ёкъ этильген {{PLURAL:$1|1|$1}} денъиштирмеси',
+'restorelink' => 'ёкъ этильген {{PLURAL:$1|1=1|$1}} денъиштирмеси',
'feedlinks' => 'Бу шекильде:',
'feed-invalid' => 'Абуне каналынынъ чешити янълыштыр.',
'feed-unavailable' => 'Синдикация ленталары къулланылып оламай.',
Ич бир изаат берильмеди.',
'badtitle' => 'Рухсетсиз серлева',
'badtitletext' => 'Истенильген саифе ады догъру дегиль, о боштыр, яхут тиллерара багъланты я да викилерара багъланты догъру язылмагъан. Бельки саифе адында ясакълангъан ишаретлер бар.',
-'perfcached' => 'Ашагъыдаки малюмат кэштен алынды ве эскирген ола билир! Кэште энъ чокъ {{PLURAL:$1|бир нетидже|$1 нетидже}} сакъланып тура.',
-'perfcachedts' => 'Ашагъыдаки малюмат кэштен алынды, кэшнинъ сонъки янъартылгъан вакъты: $1. Кэште энъ чокъ {{PLURAL:$1|бир нетидже|$1 нетидже}} сакъланып тура.',
+'perfcached' => 'Ашагъыдаки малюмат кэштен алынды ве эскирген ола билир! Кэште энъ чокъ {{PLURAL:$1|1=бир нетидже|$1 нетидже}} сакъланып тура.',
+'perfcachedts' => 'Ашагъыдаки малюмат кэштен алынды, кэшнинъ сонъки янъартылгъан вакъты: $1. Кэште энъ чокъ {{PLURAL:$1|1=бир нетидже|$1 нетидже}} сакъланып тура.',
'querypage-no-updates' => 'Бу саифени денъиштирмеге шимди изин ёкъ. Бу малюмат аман янъартылмайджакъ.',
'viewsource' => 'менба кодуны косьтер',
'viewsource-title' => '$1 саифесининъ менба коду',
'viewsourcetext' => 'Саифенинъ кодуны козьден кечирип копиялай билесинъиз:',
'protectedinterface' => 'Бу саифеде система интерфейсининъ метни бар. Онынъ ичюн мында бир хата чыкъмасын деп оны денъиштирмек ясакъ.',
'editinginterface' => "'''Тенби''': MediaWiki системасынынъ интерфейс саифесини денъиштиреятасыз. Бу саифедеки денъиштирмелер интерфейснинъ корюнишини бу викининъ башкъа къулланыджылары ичюн де денъиштиреджек. Лютфен, вики интерфейсини терджиме этмек ичюн [//translatewiki.net/wiki/Main_Page?setlang=crh translatewiki.net] сайтыны (MediaWiki ресмий локализация лейхасы) къулланынъыз.",
-'cascadeprotected' => 'Бу саифени денъиштирип оламазсынъыз, чюнки каскад къорчалав алтында булунгъан {{PLURAL:$1|саифеге|саифелерге}} менсюптир:
+'cascadeprotected' => 'Бу саифени денъиштирип оламазсынъыз, чюнки каскад къорчалав алтында булунгъан {{PLURAL:$1|1=саифеге|саифелерге}} менсюптир:
$2',
'namespaceprotected' => "'''$1''' исим фезасында саифелер денъиштирмеге акъкъынъыз ёкъ.",
'ns-specialprotected' => '{{ns:special}} исим фезасындаки саифелерни денъиштирмек ясакъ.',
'yourname' => 'Къулланыджы адынъыз',
'yourpassword' => 'Паролинъиз',
'yourpasswordagain' => 'Парольни бир даа язынъыз:',
-'remembermypassword' => 'Киришимни бу компьютерде хатырла (энъ чокъ $1 {{PLURAL:$1|кунь|кунь}} ичюн)',
+'remembermypassword' => 'Киришимни бу компьютерде хатырла (энъ чокъ $1 {{PLURAL:$1|1=кунь|кунь}} ичюн)',
'yourdomainname' => 'Домен адынъыз',
'externaldberror' => 'Сайткъа киргенде бир хата олды. Бу тыш эсабынъызны денъиштирмек акъкъынъыз олмагъанындан себеп мейдангъа келип ола.',
'login' => 'Кириш',
'wrongpassword' => 'Кирсеткен паролинъиз янълыштыр. Лютфен, текрар этинъиз.',
'wrongpasswordempty' => 'Кирсеткен паролинъиз боштыр.
Лютфен, текрар этинъиз.',
-'passwordtooshort' => 'Паролинъизде энъ аз {{PLURAL:$1|1|$1}} ишарет олмалы.',
+'passwordtooshort' => 'Паролинъизде энъ аз {{PLURAL:$1|1=1|$1}} ишарет олмалы.',
'password-name-match' => 'Паролинъиз къулланыджы адынъыздан фаркълы олмалы.',
'password-login-forbidden' => 'Бу къулланыджы ады ве парольни къулланмакъ ясакътыр.',
'mailmypassword' => 'Янъы пароль йибер',
'passwordremindertitle' => '{{grammar:genitive|{{SITENAME}}}} къулланыджынынъ пароль хатырлатувы',
'passwordremindertext' => 'Бирев (бельки де бу сизсинъиз, $1 IP адресинден) {{SITENAME}} сайты ичюн ($4) янъы къулланыджы паролини истеди.
-$2 къулланыджысына вакътынджа <code>$3</code> пароли яратылды. Эгер бу керчектен де сизинъ истегинъиз олгъан олса, отурым ачып янъы бир пароль яратманъыз керектир. Мувакъкъат паролинъизнинъ муддети {{PLURAL:$5|1 кунь|$5 кунь}} ичинде доладжакъ.
+$2 къулланыджысына вакътынджа <code>$3</code> пароли яратылды. Эгер бу керчектен де сизинъ истегинъиз олгъан олса, отурым ачып янъы бир пароль яратманъыз керектир. Мувакъкъат паролинъизнинъ муддети {{PLURAL:$5|1=1 кунь|$5 кунь}} ичинде доладжакъ.
Эгер де янъы пароль талап этмеген олсанъыз я да эски паролинъизни хатырлап энди оны денъиштирмеге истемесенъиз, бу мектюпни дикъкъаткъа алмайып эски паролинъизни къулланмагъа девам этип оласынъыз.',
'noemail' => '$1 адлы къулланыджы ичюн e-mail бильдирильмеди.',
'passwordsent' => 'Янъы пароль e-mail ёлунен къулланыджынынъ бильдирген $1 адресине йиберильди. Парольни алгъан сонъ текрар кириш япынъыз.',
'blocked-mailpassword' => 'IP адресинъизден саифелер денъиштирюв ясакълы, пароль хатырлатув функциясы да блок этильди.',
'eauthentsent' => 'Бильдирильген e-mail адресине ичинде тасдыкъ коду олгъан бир мектюп ёлланды. Сиз шу мектюпте язылгъан арекетлерни япып бу e-mail адресининъ саиби керчектен де сиз олгъанынъызны тасдыкълагъан сонъ башкъа мектюп ёлланып олур.',
-'throttled-mailpassword' => 'Пароль хатырлатув функциясы энди сонъки {{PLURAL:$1|1|$1}} саат девамында ишлетильген эди. {{PLURAL:$1|1|$1}} саат ичинде тек бир хатырлатув ишлетмек мумкюн.',
+'throttled-mailpassword' => 'Пароль хатырлатув функциясы энди сонъки {{PLURAL:$1|1=1|$1}} саат девамында ишлетильген эди. {{PLURAL:$1|1=1|$1}} саат ичинде тек бир хатырлатув ишлетмек мумкюн.',
'mailerror' => 'Почта йиберильгенде бир хата мейдангъа кельди: $1',
-'acct_creation_throttle_hit' => 'Сизинъ IP адресинъизни къулланып бу викини зиярет эткенлер сонъки куньде {{PLURAL:$1|1 эсап|$1 эсап}} яратты. Бу вакъыт аралыгъында бир IP-ден даа чокъ эсап яратмакъ мумкюн дегиль.
+'acct_creation_throttle_hit' => 'Сизинъ IP адресинъизни къулланып бу викини зиярет эткенлер сонъки куньде {{PLURAL:$1|1=1 эсап|$1 эсап}} яратты. Бу вакъыт аралыгъында бир IP-ден даа чокъ эсап яратмакъ мумкюн дегиль.
Нетиджеде, бу IP адресини къуллангъан зияретчилер шимди даа зияде эсап ачып оламазлар.',
'emailauthenticated' => 'E-mail адресинъиз $2 $3 тарихында тасдыкъланды.',
'emailnotauthenticated' => 'E-mail адресинъиз тасдыкъланмады, викининъ e-mail иле багълы функциялары чалышмайджакъ.',
Журналнынъ сонъки язысы ашагъыда берильген:",
'semiprotectedpagewarning' => "'''Тенби''': Бу саифе тек къайдлы къулланыджылар тарафындан денъиштирилип олур.
Журналнынъ сонъки язысы ашагъыда берильген:",
-'cascadeprotectedwarning' => "'''Тенби:''' Бу саифени тек «Идареджилер» группасына кирген къулланыджылар денъиштирип олалар, чюнки о каскад къорчалав алтында булунгъан {{PLURAL:$1|саифеге|саифелерге}} менсюптир:",
+'cascadeprotectedwarning' => "'''Тенби:''' Бу саифени тек «Идареджилер» группасына кирген къулланыджылар денъиштирип олалар, чюнки о каскад къорчалав алтында булунгъан {{PLURAL:$1|1=саифеге|саифелерге}} менсюптир:",
'titleprotectedwarning' => "'''ТЕНБИ: Бу саифе къорчалав алтындадыр, тек [[Special:ListGroupRights|махсус акъларгъа]] саип къулланыджылар оны яратып ола.'''
Журналнынъ сонъки язысы ашагъыда берильген:",
-'templatesused' => 'Бу саифеде къулланылгъан {{PLURAL:$1|шаблон|шаблонлар}}:',
-'templatesusedpreview' => 'Сиз бакъып чыкъкъан саифенъизде къулланылгъан {{PLURAL:$1|шаблон|шаблонлар}}:',
-'templatesusedsection' => 'Бу болюкте къулланылгъан {{PLURAL:$1|шаблон|шаблонлар}}:',
+'templatesused' => 'Бу саифеде къулланылгъан {{PLURAL:$1|1=шаблон|шаблонлар}}:',
+'templatesusedpreview' => 'Сиз бакъып чыкъкъан саифенъизде къулланылгъан {{PLURAL:$1|1=шаблон|шаблонлар}}:',
+'templatesusedsection' => 'Бу болюкте къулланылгъан {{PLURAL:$1|1=шаблон|шаблонлар}}:',
'template-protected' => '(къорчалав алтында)',
'template-semiprotected' => '(къысмен къорчалав алтында)',
-'hiddencategories' => 'Бу саифе {{PLURAL:$1|1|$1}} гизли категориягъа менсюптир:',
+'hiddencategories' => 'Бу саифе {{PLURAL:$1|1=1|$1}} гизли категориягъа менсюптир:',
'nocreatetext' => '{{SITENAME}} сайтында янъы саифе яратув сынъырлыдыр.
Кери къайтып мевджут олгъан саифени денъиштире, [[Special:UserLogin|отурым ача я да янъы бир эсап яратып оласынъыз]].',
'nocreate-loggedin' => 'Янъы саифелер яратмагъа изининъиз ёкътыр.',
'sectioneditnotsupported-title' => 'Болюклерни денъиштирмек мумкюн дегиль.',
'sectioneditnotsupported-text' => 'Бу саифеде болюклерни денъиштирмек мумкюн дегиль.',
'permissionserrors' => 'Иришим акъларынынъ хаталары',
-'permissionserrorstext' => 'Буны япмагъа изининъиз ёкътыр. {{PLURAL:$1|Себеп|Себеплер}}:',
-'permissionserrorstext-withaction' => 'Ашагъыдаки {{PLURAL:$1|себептен|себеплерден}} $2 рухсетинъиз ёкъ:',
+'permissionserrorstext' => 'Буны япмагъа изининъиз ёкътыр. {{PLURAL:$1|1=Себеп|Себеплер}}:',
+'permissionserrorstext-withaction' => 'Ашагъыдаки {{PLURAL:$1|1=себептен|себеплерден}} $2 рухсетинъиз ёкъ:',
'recreate-moveddeleted-warn' => "'''Тенби: Эвельдже ёкъ этильген саифени янъыдан яратасынъыз.'''
Саифени денъиштирмеге девам эткени уйгъун олып олмагъаныны тюшюнмелисинъиз.
'history-show-deleted' => 'Тек ёкъ этильгенлер',
'histfirst' => 'Энъ эски',
'histlast' => 'Энъ янъы',
-'historysize' => '({{PLURAL:$1|1 байт|$1 байт}})',
+'historysize' => '({{PLURAL:$1|1=1 байт|$1 байт}})',
'historyempty' => '(бош)',
# Revision feed
'revdelete-hide-comment' => 'Къыскъа тарифни косьтерме',
'revdelete-hide-user' => 'Денъиштирмени япкъаннынъ къулланыджы адыны/IP-ни гизле',
'revdelete-hide-restricted' => 'Малюматны адий къулланыджылардан киби идареджилерден де гизле',
-'revdelete-submit' => 'Сайлангъан {{PLURAL:$1|версиягъа|версияларгъа}} ишлет',
+'revdelete-submit' => 'Сайлангъан {{PLURAL:$1|1=версиягъа|версияларгъа}} ишлет',
'revdel-restore' => 'корюнювни денъиштир',
# Merge log
'compareselectedversions' => 'Сайлангъан версияларны тенъештир',
'showhideselectedversions' => 'Сайлангъан версияларны косьтер/гизле',
'editundo' => 'лягъу эт',
-'diff-multi' => '({{PLURAL:$2|Бир къулланыджы|$2 къулланыджы}}нынъ япкъан {{PLURAL:$1|бир ара версиясы|$1 ара версиясы}} косьтерильмей)',
-'diff-multi-manyusers' => '($2-ден зияде {{PLURAL:$2|къулланыджы|къулланыджы}}нынъ япкъан {{PLURAL:$1|бир ара версиясы|$1 ара версиясы}} косьтерильмей)',
+'diff-multi-manyusers' => '($2-ден зияде {{PLURAL:$2|1=къулланыджы|къулланыджы}}нынъ япкъан {{PLURAL:$1|1=бир ара версиясы|$1 ара версиясы}} косьтерильмей)',
# Search results
'searchresults' => 'Къыдырув нетиджелери',
'notextmatches' => 'Ич бир саифеде тапыламады',
'prevn' => 'эвельки {{PLURAL:$1|$1}}',
'nextn' => 'сонъраки {{PLURAL:$1|$1}}',
-'prevn-title' => 'Эвельки $1 {{PLURAL:$1|нетидже|нетидже}}',
-'nextn-title' => 'Сонъраки $1 {{PLURAL:$1|нетидже|нетидже}}',
-'shown-title' => 'Саифе башына $1 {{PLURAL:$1|нетидже|нетидже}} косьтер',
+'prevn-title' => 'Эвельки $1 {{PLURAL:$1|1=нетидже|нетидже}}',
+'nextn-title' => 'Сонъраки $1 {{PLURAL:$1|1=нетидже|нетидже}}',
+'shown-title' => 'Саифе башына $1 {{PLURAL:$1|1=нетидже|нетидже}} косьтер',
'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3).',
'searchmenu-exists' => "'''Бу викиде \"[[:\$1]]\" адлы бир саифе бар'''",
'searchmenu-new' => "'''Бу викиде \"[[:\$1]]\" саифесини ярат!'''",
'searchprofile-images-tooltip' => 'Файлларны къыдыр',
'searchprofile-everything-tooltip' => 'Бутюн саифелерде (музакере саифелеринде де) къыдыр',
'searchprofile-advanced-tooltip' => 'Бельгиленген исим фезаларында къыдыр',
-'search-result-size' => '$1 ({{PLURAL:$2|1|$2}} сёз)',
+'search-result-size' => '$1 ({{PLURAL:$2|1=1|$2}} сёз)',
'search-result-score' => 'Уйгъунлыкъ: $1 %',
'search-redirect' => '(ёллама $1)',
'search-section' => '(болюк $1)',
'searcheverything-enable' => 'Бутюн исим фезаларында къыдыр',
'searchrelated' => 'багълы',
'searchall' => 'эписи',
-'showingresults' => "Ашагъыда № <strong>$2</strong>ден башлап {{PLURAL:$1|'''1''' нетидже|'''$1''' нетидже}} булуна.",
-'showingresultsnum' => "Ашагъыда № '''$2'''ден башлап {{PLURAL:$3|'''1''' нетидже|'''$3''' нетидже}} булуна.",
+'showingresults' => "Ашагъыда № <strong>$2</strong>ден башлап {{PLURAL:$1|1='''1''' нетидже|'''$1''' нетидже}} булуна.",
+'showingresultsnum' => "Ашагъыда № '''$2'''ден башлап {{PLURAL:$3|1='''1''' нетидже|'''$3''' нетидже}} булуна.",
'search-nonefound' => 'Соратманен эшлешкен бир нетидже ёкъ.',
'powersearch-legend' => 'Тафсилятлы къыдырув',
'powersearch-ns' => 'Бу исим фезаларында къыдыр:',
'prefs-rc' => 'Сонъки денъиштирмелер',
'prefs-watchlist' => 'Козетюв джедвели',
'prefs-watchlist-days' => 'Козетюв джедвелинде косьтериледжек кунь сайысы:',
-'prefs-watchlist-days-max' => 'Энъ чокъ $1 {{PLURAL:$1|кунь|кунь}}',
+'prefs-watchlist-days-max' => 'Энъ чокъ $1 {{PLURAL:$1|1=кунь|кунь}}',
'prefs-watchlist-edits' => 'Кенишлетилген козетюв джедвелинде косьтериледжек денъиштирмелер сайысы:',
'prefs-watchlist-edits-max' => '(энъ чокъ 1000)',
'prefs-watchlist-token' => 'Козетюв джедвели ишарети:',
'rows' => 'Сатыр',
'columns' => 'Сутун',
'searchresultshead' => 'Къыдырув',
-'resultsperpage' => 'Саифеде косьтериледжек тапылгъан саифе сайысы',
'recentchangesdays' => 'Сонъки денъиштирмелер саифесинде косьтериледжек кунь сайысы:',
-'recentchangesdays-max' => '(энъ чокъ $1 {{PLURAL:$1|кунь|кунь}})',
+'recentchangesdays-max' => '(энъ чокъ $1 {{PLURAL:$1|1=кунь|кунь}})',
'recentchangescount' => 'Ог бельгиленген косьтериледжек денъиштирмелер сайысы:',
'prefs-help-recentchangescount' => 'Бу, сонъки денъиштирмелер, саифе кечмиши ве журнал саифелеринде къулланыла.',
'savedprefs' => 'Сазламаларынъыз сакъланды.',
'youremail' => 'E-mail адресинъиз:',
'username' => 'Къулланыджы ады:',
'uid' => 'Къайд номери:',
-'prefs-memberingroups' => 'Азасы олгъан {{PLURAL:$1|группа|группалар}}:',
+'prefs-memberingroups' => 'Азасы олгъан {{PLURAL:$1|1=группа|группалар}}:',
'prefs-registration' => 'Къайд тарихы:',
'yourrealname' => 'Керчек адынъыз:',
'yourlanguage' => 'Интерфейс тили:',
'yournick' => 'Янъы имзанъыз:',
'prefs-help-signature' => 'Музакере саифелериндеки тефсирлерни "<nowiki>~~~~</nowiki>" иле имзаламакъ керек, бу дёрт тильда ерине имзанъыз ве вакъыт косьтерилир.',
'badsig' => 'Янълыш имза. HTML тэглерининъ догърулыгъыны бакъынъыз.',
-'badsiglength' => 'Къарардан зияде узун имзадыр, {{PLURAL:$1|1|$1}} зияде ишареттен ибарет олмасы мумкюн дегиль.',
+'badsiglength' => 'Къарардан зияде узун имзадыр, {{PLURAL:$1|1=1|$1}} зияде ишареттен ибарет олмасы мумкюн дегиль.',
'yourgender' => 'Джынсынъыз:',
'gender-unknown' => 'Бильдирильмеген',
'gender-male' => 'Эркек',
'minoreditletter' => 'к',
'newpageletter' => 'Я',
'boteditletter' => 'б',
-'number_of_watching_users_pageview' => '[$1 {{PLURAL:$1|къулланыджы|къулланыджы}} козете]',
+'number_of_watching_users_pageview' => '[$1 {{PLURAL:$1|1=къулланыджы|къулланыджы}} козете]',
'rc_categories' => 'Тек категориялардан («|» иле айырыла)',
'rc_categories_any' => 'Эр анги',
'newsectionsummary' => '/* $1 */ янъы болюк',
'filetype-badmime' => '"$1" MIME чешитиндеки файллар юклеме ясакълыдыр.',
'filetype-bad-ie-mime' => 'Бу файл юкленип оламаз, чюнки Internet Explorer оны "$1" яни рухсет берильмеген ве зарарлы ола бильген файл деп беллейджек.',
'filetype-unwanted-type' => "'''\".\$1\"''' — истенильмеген файл чешити.
-Истенильген {{PLURAL:\$3|файл чешити|файл чешитлери}}: \$2.",
+Истенильген {{PLURAL:\$3|1=файл чешити|файл чешитлери}}: \$2.",
'filetype-banned-type' => "'''\".\$1\"''' — ясакълы файл чешити.
-Истенильген {{PLURAL:\$3|файл чешити|файл чешитлери}}: \$2.",
+Истенильген {{PLURAL:\$3|1=файл чешити|файл чешитлери}}: \$2.",
'filetype-missing' => 'Файлнынъ ич бир узантысы ёкъ (меселя «.jpg», «.gif» ве илх.).',
'large-file' => 'Буюклиги $1 байттан зияде ибарет олмагъан ресимлер къулланув тевсие этиле (бу файлнынъ буюклиги $2 байт).',
'largefileserver' => 'Бу файлнынъ узунлыгъы серверде изин берильгенден буюкчедир.',
'fileexists-shared-forbidden' => 'Файллар умумий тутулгъан еринде бу исимде бир файл энди бар.
Эгер бу файлны эп бир юклемеге истесенъиз, кери къайтынъыз ве файл исмини денъиштирип янъыдан юкленъиз.
[[File:$1|thumb|center|$1]]',
-'file-exists-duplicate' => 'Бу файл ашагъыдаки {{PLURAL:$1|файлнынъ|файлларнынъ}} дубликаты ола:',
+'file-exists-duplicate' => 'Бу файл ашагъыдаки {{PLURAL:$1|1=файлнынъ|файлларнынъ}} дубликаты ола:',
'uploadwarning' => 'Тенби',
'savefile' => 'Файлны сакъла',
'uploadedimage' => 'Юкленген: "[[$1]]"',
'filehist-comment' => 'Изаат',
'filehist-missing' => 'Файл ёкъ',
'imagelinks' => 'Файл багълантылары',
-'linkstoimage' => 'Бу файлгъа багъланты олгъан {{PLURAL:$1|1|$1}} саифе:',
+'linkstoimage' => 'Бу файлгъа багъланты олгъан {{PLURAL:$1|1=1|$1}} саифе:',
'nolinkstoimage' => 'Бу файлгъа багълангъан саифе ёкъ.',
'sharedupload' => 'Бу файл $1 сайтындан ве дигер лейхаларда да къулланылып ола.',
'uploadnewversion-linktext' => 'Файлнынъ янъысыны юкленъиз',
# Random page
'randompage' => 'Тесадюфий саифе',
-'randompage-nopages' => '"$1" {{PLURAL:$2|исим фезасында|исим фезаларында}} ич бир саифе ёкъ.',
+'randompage-nopages' => '"$1" {{PLURAL:$2|1=исим фезасында|исим фезаларында}} ич бир саифе ёкъ.',
# Random redirect
'randomredirect' => 'Тесадюфий ёллама саифеси',
'fewestrevisions' => 'Энъ аз денъиштирме япылгъан саифелер',
# Miscellaneous special pages
-'nbytes' => '{{PLURAL:$1|1 байт|$1 байт}}',
-'ncategories' => '{{PLURAL:$1|1 категория|$1 категория}}',
-'nlinks' => '{{PLURAL:$1|1 багъланты|$1 багъланты}}',
-'nmembers' => '{{PLURAL:$1|1 аза|$1 аза}}',
-'nrevisions' => '{{PLURAL:$1|1 версия|$1 версия}}',
-'nviews' => '{{PLURAL:$1|1 корюнюв|$1 корюнюв}}',
+'nbytes' => '{{PLURAL:$1|1=1 байт|$1 байт}}',
+'ncategories' => '{{PLURAL:$1|1=1 категория|$1 категория}}',
+'nlinks' => '{{PLURAL:$1|1=1 багъланты|$1 багъланты}}',
+'nmembers' => '{{PLURAL:$1|1=1 аза|$1 аза}}',
+'nrevisions' => '{{PLURAL:$1|1=1 версия|$1 версия}}',
+'nviews' => '{{PLURAL:$1|1=1 корюнюв|$1 корюнюв}}',
'specialpage-empty' => 'Бу соратма ичюн ич нетидже ёкъ.',
'lonelypages' => 'Озюне ич багъланты олмагъан саифелер',
'lonelypagestext' => 'Ашагъыдаки саифелерге {{SITENAME}} сайтындаки дигер саифелерден багъланты берильмеген, ондан да гъайры мезкюр саифелер дигер саиферлрге кирсетильмеген.',
'ancientpages' => 'Энъ эски саифелер',
'move' => 'Адыны денъиштир',
'movethispage' => 'Саифенинъ адыны денъиштир',
-'pager-newer-n' => '{{PLURAL:$1|даа янъы 1|даа янъы $1}}',
-'pager-older-n' => '{{PLURAL:$1|даа эски 1|даа эски $1}}',
+'pager-newer-n' => '{{PLURAL:$1|1=даа янъы 1|даа янъы $1}}',
+'pager-older-n' => '{{PLURAL:$1|1=даа эски 1|даа эски $1}}',
# Book sources
'booksources' => 'Китаплар менбасы',
# Special:Categories
'categories' => 'Саифе категориялары',
-'categoriespagetext' => 'Ашагъыдаки {{PLURAL:$1|категорияда|категорияларда}} саифе я да медиа файллар бар.
+'categoriespagetext' => 'Ашагъыдаки {{PLURAL:$1|1=категорияда|категорияларда}} саифе я да медиа файллар бар.
[[Special:UnusedCategories|Къулланылмагъан категориялар]] мында косьтерильмеген.
Айрыджа [[Special:WantedCategories|талап этильген категорияларнынъ джедвелине]] де бакъынъыз.',
'special-categories-sort-count' => 'сайыларына коре сырала',
'unwatch' => 'Козетме',
'unwatchthispage' => 'Бу саифени козетме',
'notanarticle' => 'Малюмат саифеси дегиль',
-'watchlist-details' => 'Музакере саифелерини эсапкъа алмайып, козетюв джедвелинъизде {{PLURAL:$1|1|$1}} саифе бар.',
+'watchlist-details' => 'Музакере саифелерини эсапкъа алмайып, козетюв джедвелинъизде {{PLURAL:$1|1=1|$1}} саифе бар.',
'wlheader-enotif' => 'E-mail иле хабер берюв ачылды.',
'wlheader-showupdated' => "Сонъки зияретинъизден сонъ денъиштирильген саифелер '''къалын арифлернен''' косьтерильди.",
'watchmethod-recent' => 'сонъки денъиштирмелер арасында козеткен саифелеринъиз къыдырыла',
'watchmethod-list' => 'козетюв джедвелиндеки саифелер тешкериле',
-'watchlistcontains' => 'Сизинъ козетюв джедвелинъизде {{PLURAL:$1|1|$1}} саифе бар.',
+'watchlistcontains' => 'Сизинъ козетюв джедвелинъизде {{PLURAL:$1|1=1|$1}} саифе бар.',
'iteminvalidname' => '"$1" саифеси мунасебетинен проблема олып чыкъты, эльверишли олмагъан исимдир…',
-'wlnote' => "Ашагъыда саат $3, $4 ичюн сонъки {{PLURAL:$2|саат|'''$2''' саат}} ичинде япылгъан сонъки {{PLURAL:$1|денъиштирме|'''$1''' денъиштирме}} косьтериле.",
'wlshowlast' => 'Сонъки $1 саат ичюн, $2 кунь ичюн я да $3 косьтер',
'watchlist-options' => 'Козетюв джедвели сазламалары',
'exblank' => 'саифе метини бош',
'delete-confirm' => '«$1» саифесини ёкъ этмектесинъиз',
'delete-legend' => 'Ёкъ этюв',
-'historywarning' => "'''Тенби:''' Сиз ёкъ этмеге истеген саифенъизнинъ къарарнен $1 {{PLURAL:$1|версиялы|версиялы}} кечмиши бардыр:",
+'historywarning' => "'''Тенби:''' Сиз ёкъ этмеге истеген саифенъизнинъ къарарнен $1 {{PLURAL:$1|1=версиялы|версиялы}} кечмиши бардыр:",
'confirmdeletetext' => 'Бир саифени я да ресимни бутюн кечмиши иле бирликте малюмат базасындан къалыджы оларакъ ёкъ этмек узьресинъиз.
Лютфен, нетиджелерини анълагъанынъызны ве [[{{MediaWiki:Policy-url}}|ёкъ этюв политикасына]] уйгъунлыгъыны дикъкъаткъа алып, буны япмагъа истегенинъизни тасдыкъланъыз.',
'actioncomplete' => 'Арекет тамамланды.',
'protect_expiry_old' => 'Битиш заманы кечмиштедир.',
'protect-text' => "'''[[$1]]''' саифесининъ къорчалав севиесини мындан корип олур ве денъиштирип оласынъыз.",
'protect-locked-access' => "Къулланыджы эсабынъыз саифенинъ къорчалав севиелерини денъиштирме еткисине саип дегиль. '''$1''' саифесининъ шимдики сазламалары шуларыдыр:",
-'protect-cascadeon' => 'Бу саифе шимди къорчалав алтындадыр, чюнки ашагъыда джедвелленген ве каскадлы къорчалав алтындаки {{PLURAL:$1|1|$1}} саифеде къулланыла.
+'protect-cascadeon' => 'Бу саифе шимди къорчалав алтындадыр, чюнки ашагъыда джедвелленген ве каскадлы къорчалав алтындаки {{PLURAL:$1|1=1|$1}} саифеде къулланыла.
Бу саифенинъ къорчалав севиесини денъиштирип оласынъыз, амма каскадлы къорчалав тесир этильмейджек.',
'protect-default' => 'Бутюн къулланыджыларгъа рухсет бер',
'protect-fallback' => 'Тек «$1» рухсети олгъан къулланыджылар ичюн',
'undeletebtn' => 'Кери кетир!',
'undeletelink' => 'косьтер/кери кетир',
'undeletecomment' => 'Себеп:',
-'undeletedrevisions' => 'Топлам {{PLURAL:$1|1 къайд|$1 къайд}} кери кетирильди.',
+'undeletedrevisions' => 'Топлам {{PLURAL:$1|1=1 къайд|$1 къайд}} кери кетирильди.',
'undelete-header' => 'Кеченлерде ёкъ этильген саифелерни корьмек ичюн [[Special:Log/delete|ёкъ этюв журналына]] бакъынъыз.',
# Namespace form on various pages
'isredirect' => 'Ёллама саифеси',
'istemplate' => 'кирсетильме',
'isimage' => 'файл багълантысы',
-'whatlinkshere-prev' => '{{PLURAL:$1|эвельки|эвельки $1}}',
-'whatlinkshere-next' => '{{PLURAL:$1|сонъраки|сонъраки $1}}',
+'whatlinkshere-prev' => '{{PLURAL:$1|1=эвельки|эвельки $1}}',
+'whatlinkshere-next' => '{{PLURAL:$1|1=сонъраки|сонъраки $1}}',
'whatlinkshere-links' => '← багълантылар',
'whatlinkshere-hideredirs' => 'ёлламаларны $1',
'whatlinkshere-hidetrans' => 'чапраз къошмаларны $1',
'movepage-page-unmoved' => '$1 саифесининъ ады $2 оларакъ денъиштирилип оламай.',
'movelogpage' => 'Ад денъиштирильмелери журналы',
'movelogpagetext' => 'Ашагъыда булунгъан джедвель ады денъиштирильген саифелерни косьтере',
-'movesubpage' => '{{PLURAL:$1|Алт саифе|Алт саифелер}}',
-'movesubpagetext' => 'Бу саифенинъ ашагъыда косьтерильген $1 {{PLURAL:$1|алт саифеси|алт саифеси}} бар.',
+'movesubpage' => '{{PLURAL:$1|1=Алт саифе|Алт саифелер}}',
+'movesubpagetext' => 'Бу саифенинъ ашагъыда косьтерильген $1 {{PLURAL:$1|1=алт саифеси|алт саифеси}} бар.',
'movenosubpage' => 'Бу саифенинъ алт саифеси ёкъ.',
'movereason' => 'Себеп',
'revertmove' => 'Кериге ал',
'tooltip-pt-watchlist' => 'Козетювге алгъан саифелеринъиз',
'tooltip-pt-mycontris' => 'Къошкъан исселеринъизнинъ джедвели',
'tooltip-pt-login' => 'Отурым ачманъыз тевсие олуныр амма меджбур дегильсинъиз.',
-'tooltip-pt-anonlogin' => 'Отурым ачманъыз тевсие олуныр амма меджбур дегильсинъиз.',
'tooltip-pt-logout' => 'Системадан чыкъув',
'tooltip-ca-talk' => 'Саифедеки малюматнен багълы музакере',
'tooltip-ca-edit' => 'Бу саифени денъиштирип оласынъыз. Сакъламаздан эвель бакъып чыкъмагъа унутманъыз.',
'notacceptable' => 'Вики-сервер браузеринъиз окъуп оладжакъ форматында малюмат бералмай.',
# Attribution
-'anonymous' => '{{SITENAME}} сайтынынъ {{PLURAL:$1|1|$1}} къайдсыз (аноним) къулланыджысы',
+'anonymous' => '{{SITENAME}} сайтынынъ {{PLURAL:$1|1=1|$1}} къайдсыз (аноним) къулланыджысы',
'siteuser' => '{{SITENAME}} сайтынынъ къулланыджысы $1',
'anonuser' => '{{SITENAME}} сайтынынъ къайдсыз (аноним) къулланыджысы $1',
'lastmodifiedatby' => 'Саифе энъ сонъки $3 тарафындан $1, $2 тарихында денъиштирильди.',
'othercontribs' => 'Бу саифени яраткъанда иштирак эткен: $1.',
'others' => 'дигерлери',
-'siteusers' => '{{SITENAME}} сайтынынъ {{PLURAL:$2|1|$2}} къулланыджысы $1',
-'anonusers' => '{{SITENAME}} сайтынынъ къайдсыз (аноним) {{PLURAL:$2|къулланыджысы|къулланыджылары}} $1',
+'siteusers' => '{{SITENAME}} сайтынынъ {{PLURAL:$2|1=1|$2}} къулланыджысы $1',
+'anonusers' => '{{SITENAME}} сайтынынъ къайдсыз (аноним) {{PLURAL:$2|1=къулланыджысы|къулланыджылары}} $1',
'creditspage' => 'Тешеккюрлер',
'nocredits' => 'Бу саифе ичюн къулланыджылар джедвели ёкъ.',
Файлны ишлетип ишлетим системанъызгъа зарар кетирип олурсынъыз.",
'imagemaxsize' => "Ресим ольчюси сынъыры:<br />''(файл малюмат саифелери ичюн)''",
'thumbsize' => 'Кичик ольчю:',
-'widthheightpage' => '$1 × $2, {{PLURAL:$3|1|$3}} саифе',
+'widthheightpage' => '$1 × $2, {{PLURAL:$3|1=1|$3}} саифе',
'file-info' => 'файл буюклиги: $1, MIME чешити: $2',
'file-info-size' => '$1 × $2 пиксель, файл буюклиги: $3, MIME чешити: $4',
'file-nohires' => 'Даа юксек айырымлылыкъкъа саип версия ёкъ.',
# Special:NewFiles
'newimages' => 'Янъы ресимлер',
-'imagelisttext' => "Ашагъыдаки джедвельде $2 коре тизильген {{PLURAL:$1|'''1''' файлдыр|'''$1''' файлдыр}}.",
+'imagelisttext' => "Ашагъыдаки джедвельде $2 коре тизильген {{PLURAL:$1|1='''1''' файлдыр|'''$1''' файлдыр}}.",
'newimages-summary' => 'Бу махсус саифе сонъки юкленген файлларны косьтере.',
'newimages-legend' => 'Сюзгюч',
'newimages-label' => 'Файл ады (я да онынъ бир парчасы):',
'livepreview-error' => 'Багъланамады: $1 «$2». Адий бакъып чыкъувны къулланып бакъынъыз.',
# Friendlier slave lag warnings
-'lag-warn-normal' => '{{PLURAL:$1|1|$1}} саниеден эвель ве ондан сонъ япылгъан денъишикликлер бу джедвельде косьтерильмейип олалар.',
-'lag-warn-high' => 'Малюмат базасындаки проблемалар себебинден {{PLURAL:$1|1|$1}} саниеден эвель ве ондан сонъ япылгъан денъишикликлер бу джедвельде косьтерильмейип олалар.',
+'lag-warn-normal' => '{{PLURAL:$1|1=1|$1}} саниеден эвель ве ондан сонъ япылгъан денъишикликлер бу джедвельде косьтерильмейип олалар.',
+'lag-warn-high' => 'Малюмат базасындаки проблемалар себебинден {{PLURAL:$1|1=1|$1}} саниеден эвель ве ондан сонъ япылгъан денъишикликлер бу джедвельде косьтерильмейип олалар.',
# Watchlist editor
-'watchlistedit-numitems' => 'Музакере саифесини эсапкъа алмайып, козетюв джедвелинъизде {{PLURAL:$1|1|$1}} саифе бар.',
+'watchlistedit-numitems' => 'Музакере саифесини эсапкъа алмайып, козетюв джедвелинъизде {{PLURAL:$1|1=1|$1}} саифе бар.',
'watchlistedit-noitems' => 'Козетюв джедвелинъизде ич бир саифе ёкъ.',
'watchlistedit-normal-title' => 'Козетюв джевелинъизни денъиштиреятасыз',
'watchlistedit-normal-legend' => 'Козетюв джедвелинден саифе ёкъ этилюви',
'watchlistedit-normal-explain' => 'Козетюв джедвелинъиздеки саифелер ашагъыда косьтерильген.
Бир саифе козетюв джедвелинден ёкъ этмек ичюн оны бельгилеп «{{int:Watchlistedit-normal-submit}}» дёгмесине басынъыз. Козетюв джедвелинъизни [[Special:EditWatchlist/raw|метин оларакъ да]] денъиштирип оласынъыз.',
'watchlistedit-normal-submit' => 'Сайлангъан саифелерни козетюв джевелинден ёкъ эт',
-'watchlistedit-normal-done' => '{{PLURAL:$1|1 саифе|$1 саифе}} козетюв джедвелинъизден ёкъ этильди:',
+'watchlistedit-normal-done' => '{{PLURAL:$1|1=1 саифе|$1 саифе}} козетюв джедвелинъизден ёкъ этильди:',
'watchlistedit-raw-title' => 'Козетюв джевелинъизни денъиштиреятасыз',
'watchlistedit-raw-legend' => 'Козетюв джедвелини денъиштирилюви',
'watchlistedit-raw-explain' => 'Козетюв джедвелинъиздеки саифелер ашагъыда косьтерильген. Эр сатырда бир саифе серлевасы олмакъ узере, серлеваларны кирсетип я да ёкъ этип джедвельни денъиштирип оласынъыз.
'watchlistedit-raw-titles' => 'Саифелер:',
'watchlistedit-raw-submit' => 'Козетюв джедвелини янъарт',
'watchlistedit-raw-done' => 'Козетюв джедвелинъиз янъарды.',
-'watchlistedit-raw-added' => '{{PLURAL:$1|1 саифе|$1 саифе}} иляве олунды:',
-'watchlistedit-raw-removed' => '{{PLURAL:$1|1 саифе|$1 саифе}} ёкъ этильди:',
+'watchlistedit-raw-added' => '{{PLURAL:$1|1=1 саифе|$1 саифе}} иляве олунды:',
+'watchlistedit-raw-removed' => '{{PLURAL:$1|1=1 саифе|$1 саифе}} ёкъ этильди:',
# Watchlist editing tools
'watchlisttools-view' => 'Денъишикликлерни косьтер',
'fileduplicatesearch-submit' => 'Къыдыр',
'fileduplicatesearch-info' => '$1 × $2 пиксел<br />Файл буюклиги: $3<br />MIME чешити: $4',
'fileduplicatesearch-result-1' => '«$1» файлынынъ ич копиясы ёкъ.',
-'fileduplicatesearch-result-n' => '«$1» файлынынъ {{PLURAL:$2|бир копиясы|$2 копиясы}} бар.',
+'fileduplicatesearch-result-n' => '«$1» файлынынъ {{PLURAL:$2|1=бир копиясы|$2 копиясы}} бар.',
# Special:SpecialPages
'specialpages' => 'Махсус саифелер',
$messages = array(
# User preference toggles
'tog-underline' => 'Bağlantılarnıñ tübüni sızuv:',
-'tog-justify' => 'Metinni eki yanğa tegizle',
'tog-hideminor' => '"Soñki deñiştirmeler" saifesinde kiçik deñiştirmelerni gizle',
'tog-hidepatrolled' => 'Soñki deñiştirmeler köstergende teşkerilgen deñiştirmelerni gizle',
'tog-newpageshidepatrolled' => 'Yañı saifeler köstergende teşkerilgen saifelerni gizle',
'tog-numberheadings' => 'Serlevalarnı avtomatik nomeralandır',
'tog-showtoolbar' => 'Saifeni deñiştirgen vaqıtta yardımcı dögmelerni köster. (JavaScript)',
'tog-editondblclick' => 'Saifeni çift basıp deñiştirmege başla (JavaScript)',
-'tog-editsection' => 'Bölüklerni [deñiştir] bağlantısı vastasınen deñiştirmege ruhset ber',
'tog-editsectiononrightclick' => 'Bölük serlevasına oñ basqanda deñiştirüv penceresini aç. (JavaScript)',
-'tog-showtoc' => 'Münderice cedveli köster (3 daneden ziyade serlevası olğan saifeler içün)',
'tog-rememberpassword' => 'Kirişimni bu brauzerde hatırla (eñ çoq $1 {{PLURAL:$1|kün|kün}} içün)',
'tog-watchcreations' => 'Yaratqan saifelerimni ve yüklegen fayllarımnı közetüv cedvelime kirset',
'tog-watchdefault' => 'Deñiştirgen saife ve fayllarımnı közetüv cedvelime kirset',
'compareselectedversions' => 'Saylanğan versiyalarnı teñeştir',
'showhideselectedversions' => 'Saylanğan versiyalarnı köster/gizle',
'editundo' => 'lâğu et',
-'diff-multi' => '({{PLURAL:$2|Bir qullanıcı|$2 qullanıcı}}nıñ yapqan {{PLURAL:$1|bir ara versiyası|$1 ara versiyası}} kösterilmey)',
'diff-multi-manyusers' => '($2-den ziyade {{PLURAL:$2|qullanıcı|qullanıcı}}nıñ yapqan {{PLURAL:$1|bir ara versiyası|$1 ara versiyası}} kösterilmey)',
# Search results
'rows' => 'Satır',
'columns' => 'Sutun',
'searchresultshead' => 'Qıdıruv',
-'resultsperpage' => 'Saifede kösterilecek tapılğan saife sayısı',
'recentchangesdays' => 'Soñki deñiştirmeler saifesinde kösterilecek kün sayısı:',
'recentchangesdays-max' => '(eñ çoq $1 {{PLURAL:$1|kün|kün}})',
'recentchangescount' => 'Ög belgilengen kösterilecek deñiştirmeler sayısı:',
'watchmethod-list' => 'közetüv cedvelindeki saifeler teşkerile',
'watchlistcontains' => 'Siziñ közetüv cedveliñizde {{PLURAL:$1|1|$1}} saife bar.',
'iteminvalidname' => '"$1" saifesi munasebetinen problema olıp çıqtı, elverişli olmağan isimdir…',
-'wlnote' => "Aşağıda saat $3, $4 içün soñki {{PLURAL:$2|saat|'''$2''' saat}} içinde yapılğan soñki {{PLURAL:$1|deñiştirme|'''$1''' deñiştirme}} kösterile.",
'wlshowlast' => 'Soñki $1 saat içün, $2 kün içün ya da $3 köster',
'watchlist-options' => 'Közetüv cedveli sazlamaları',
'tooltip-pt-watchlist' => 'Közetüvge alğan saifeleriñiz',
'tooltip-pt-mycontris' => 'Qoşqan isseleriñizniñ cedveli',
'tooltip-pt-login' => 'Oturım açmañız tevsiye olunır amma mecbur degilsiñiz.',
-'tooltip-pt-anonlogin' => 'Oturım açmañız tevsiye olunır amma mecbur degilsiñiz.',
'tooltip-pt-logout' => 'Sistemadan çıquv',
'tooltip-ca-talk' => 'Saifedeki malümatnen bağlı muzakere',
'tooltip-ca-edit' => 'Bu saifeni deñiştirip olasıñız. Saqlamazdan evel baqıp çıqmağa unutmañız.',
*
* @author Chmee2
* @author Danny B.
+ * @author DemonioCZ
* @author Dontlietome7
* @author Geitost
* @author Helix84
* @author Littledogboy
* @author Martin Kozák
* @author Matěj Grabovský
+ * @author Matěj Suchánek
* @author Mercy
* @author Michawiki
* @author Mormegil
* @author Mr. Richard Bolla
+ * @author Paxt
* @author Quinn
* @author Ragimiri
* @author Reaperman
$messages = array(
# User preference toggles
'tog-underline' => 'Podtrhávat odkazy:',
-'tog-justify' => 'Zarovnat odstavce do bloku',
'tog-hideminor' => 'Skrýt malé editace v posledních změnách',
'tog-hidepatrolled' => 'Skrýt patrolované editace v posledních změnách',
'tog-newpageshidepatrolled' => 'Skrýt patrolované stránky ze seznamu nových stránek',
'tog-numberheadings' => 'Automaticky číslovat nadpisy',
'tog-showtoolbar' => 'Zobrazit panel nástrojů',
'tog-editondblclick' => 'Editovat stránky dvojklikem',
-'tog-editsection' => 'Zapnout možnost editace části stránky pomocí odkazu [editovat]',
'tog-editsectiononrightclick' => 'Umožnit editaci části stránky kliknutím pravým tlačítkem na nadpisy sekcí',
-'tog-showtoc' => 'Zobrazovat obsah (na stránkách s více než třemi nadpisy)',
'tog-rememberpassword' => 'Zapamatovat si mé přihlášení v tomto prohlížeči (maximálně $1 {{PLURAL:$1|den|dny|dní}})',
'tog-watchcreations' => 'Přidávat mnou založené stránky a načtené soubory ke sledovaným',
'tog-watchdefault' => 'Přidávat mnou editované stránky a soubory ke sledovaným',
'retypenew' => 'Napište znovu nové heslo',
'resetpass_submit' => 'Nastavit heslo a přihlásit se',
'changepassword-success' => 'Vaše heslo bylo úspěšně změněno!',
+'changepassword-throttled' => 'Provedli jste příliš mnoho pokusů o přihlášení.
+Čekejte prosím $1 a zkuste to znovu.',
'resetpass_forbidden' => 'Hesla nelze změnit.',
'resetpass-no-info' => 'K této stránce mají přímý přístup jen přihlášení uživatelé.',
'resetpass-submit-loggedin' => 'Změnit heslo',
'changeemail-password' => 'Vaše heslo do {{gender:2sg|{{SITENAME}}}}:',
'changeemail-submit' => 'Změnit e-mail',
'changeemail-cancel' => 'Storno',
+'changeemail-throttled' => 'Provedli jste příliš mnoho pokusů o přihlášení.
+Čekejte prosím $1 a zkuste to znovu.',
# Special:ResetTokens
'resettokens' => 'Reinicializace klíčů',
'invalid-content-data' => 'Obsažená data jsou chybná',
'content-not-allowed-here' => 'Obsah typu $1 není na stránce [[$2]] dovolen.',
'editwarning-warning' => 'Opuštěním této stránky se mohou veškeré provedené změny ztratit.
-Přihlášení uživatelé si mohou toto varování vypnout na záložce „Editace“ v uživatelském nastavení.',
+Přihlášení uživatelé si mohou toto varování vypnout na záložce „{{int:prefs-editing}}“ v uživatelském nastavení.',
+'editpage-notsupportedcontentformat-title' => 'Nepodporovaný formát obsahu',
+'editpage-notsupportedcontentformat-text' => 'Model obsahu $2 nepodporuje formát obsahu $1.',
# Content models
'content-model-wikitext' => 'wikitext',
'showhideselectedversions' => 'Zobrazit/skrýt vybrané revize',
'editundo' => 'zrušit editaci',
'diff-empty' => '(Žádný rozdíl)',
-'diff-multi' => '({{PLURAL:$1|Není zobrazena 1 mezilehlá verze|Nejsou zobrazeny $1 mezilehlé verze|Není zobrazeno $1 mezilehlých verzí}} od {{PLURAL:$2|1 uživatele|$2 uživatelů}}.)',
+'diff-multi-sameuser' => '({{PLURAL:$1|Není zobrazena 1 mezilehlá verze|Nejsou zobrazeny $1 mezilehlé verze|Není zobrazeno $1 mezilehlých verzí}} od stejného uživatele.)',
+'diff-multi-otherusers' => '({{PLURAL:$1|Není zobrazena 1 mezilehlá verze|Nejsou zobrazeny $1 mezilehlé verze|Není zobrazeno $1 mezilehlých verzí}} od {{PLURAL:$2|1 dalšího uživatele|$2 dalších uživatelů}}.)',
'diff-multi-manyusers' => '(Není zobrazeno $1 mezilehlých verzí od více než $2 {{PLURAL:$2|uživatele|uživatelů}}.)',
'difference-missing-revision' => '{{PLURAL:$2|Jedna z revizí|$2 revize|$2 revizí}} k požadovanému porovnání ($1) {{PLURAL:$2|neexistuje|neexistují|neexistuje}}.
'shown-title' => 'Zobrazit $1 {{PLURAL:$1|výsledek|výsledky|výsledků}} na stránku',
'viewprevnext' => 'Ukázat ($1 {{int:pipe-separator}} $2) ($3).',
'searchmenu-exists' => "'''Na této wiki existuje stránka nazvaná „[[:$1]]“.'''",
-'searchmenu-new' => "'''Vytvořte na této wiki stránku „[[:$1]]“!'''",
+'searchmenu-new' => '<strong>Vytvořte na této wiki stránku „[[:$1]]“!</strong> {{PLURAL:$2|0=|Prohlédněte si také stránku nalezenou vaším hledáním.|Prohlédněte si také stránky nalezené vaším hledáním.}}',
'searchprofile-articles' => 'Články',
'searchprofile-project' => 'Nápověda a projektové stránky',
'searchprofile-images' => 'Multimédia',
'search-result-score' => 'Relevantnost: $1 %',
'search-redirect' => '(přesměrování $1)',
'search-section' => '(část $1)',
+'search-file-match' => '(odpovídá obsahu souboru)',
'search-suggest' => 'Mysleli jste: $1',
'search-interwiki-caption' => 'Sesterské projekty',
'search-interwiki-default' => 'Výsledky z $1:',
'rows' => 'Řádky',
'columns' => 'Sloupce',
'searchresultshead' => 'Vyhledávání',
-'resultsperpage' => 'Počet výsledků na stránku:',
'stub-threshold' => 'Limit pro formátování odkazu jako <a href="#" class="stub">pahýl</a> (v bajtech):',
'stub-threshold-disabled' => 'Vypnuto',
'recentchangesdays' => 'Počet dní zobrazených v posledních změnách:',
'filetype-mime-mismatch' => 'Přípona souboru „.$1“ neodpovídá rozpoznanému MIME typu souboru ($2).',
'filetype-badmime' => 'Není povoleno načítat soubory MIME typu „$1“.',
'filetype-bad-ie-mime' => 'Nelze načíst tento soubor, neboť Internet Explorer by ho považoval za „$1“, což je nedovolený a potenciálně nebezpečný typ souboru.',
-'filetype-unwanted-type' => "„.$1“''' je nežádoucí formát souborů. {{plural:$3|Upřednostňovaný formát souborů je|Upřednostňované formáty souborů jsou}} $2.",
+'filetype-unwanted-type' => "„.$1“''' je nežádoucí formát souborů. {{PLURAL:$3|Upřednostňovaný formát souborů je|Upřednostňované formáty souborů jsou}} $2.",
'filetype-banned-type' => "'''„.$1“''' {{PLURAL:$4|je nedovolený formát souborů|jsou nedovolené formáty souborů}}.
{{PLURAL:$3|Povolený formát souborů je|Povolené formáty souborů jsou}} $2.",
'filetype-missing' => 'Soubor nemá příponu (např. ".jpg").',
'fileexists-shared-forbidden' => 'Soubor s tímto názvem již existuje ve sdíleném úložišti. Pokud přesto chcete váš soubor načíst, vraťte se a zvolte jiný název. [[File:$1|thumb|center|$1]]',
'file-exists-duplicate' => 'Tento soubor je duplikát {{PLURAL:$1|následujícího souboru|následujících souborů}}:',
'file-deleted-duplicate' => 'Identický soubor k tomuto ([[:$1]]) byl již dříve smazán. Před tím, než soubor znovu nahrajete, byste měli zkontrolovat záznamy o předchozím smazání.',
+'file-deleted-duplicate-notitle' => 'Identický soubor k tomuto byl již dříve smazán a název byl utajen.
+Před tím, než soubor znovu nahrajete, byste měli požádat někoho, kdo může prohlížet utajené soubory, aby situaci zkontroloval.',
'uploadwarning' => 'Upozornění k načítání',
'uploadwarning-text' => 'Prosíme, upravte popis souboru níže a zkuste to znovu.',
'savefile' => 'Uložit soubor',
'nolinkstoimage' => 'Na tento soubor neodkazuje žádná stránka.',
'morelinkstoimage' => 'Zobrazit [[Special:WhatLinksHere/$1|další odkazy]] na tento soubor.',
'linkstoimage-redirect' => '$1 (přesměrování) $2',
-'duplicatesoffile' => '{{plural:$1|Následující soubor je duplikát|Následující $1 soubory jsou duplikáty|Následujících $1 souborů jsou duplikáty}} tohoto souboru ([[Special:FileDuplicateSearch/$2|podrobnosti]]):',
+'duplicatesoffile' => '{{PLURAL:$1|Následující soubor je duplikát|Následující $1 soubory jsou duplikáty|Následujících $1 souborů jsou duplikáty}} tohoto souboru ([[Special:FileDuplicateSearch/$2|podrobnosti]]):',
'sharedupload' => 'Tento soubor pochází z {{grammar:2sg|$1}} a mohou ho používat ostatní projekty.',
'sharedupload-desc-there' => 'Tento soubor pochází z {{grammar:2sg|$1}} a mohou ho používat ostatní projekty.
Více informací obsahuje jeho [$2 tamější stránka s popisem souboru].',
'statistics-views-peredit' => 'Počet zobrazení na editaci',
'statistics-users' => 'Registrovaní [[Special:ListUsers|uživatelé]]',
'statistics-users-active' => 'Aktivní uživatelé',
-'statistics-users-active-desc' => 'Uživatelé, kteří v {{plural:$1|posledním dni|posledních $1 dnech}} provedli nějakou operaci',
+'statistics-users-active-desc' => 'Uživatelé, kteří v {{PLURAL:$1|posledním dni|posledních $1 dnech}} provedli nějakou operaci',
'statistics-mostpopular' => 'Nejčtenější stránky',
'pageswithprop' => 'Stránky s vlastností',
'protectedpages' => 'Zamčené stránky',
'protectedpages-indef' => 'Pouze zámky na neurčito',
'protectedpages-cascade' => 'Pouze kaskádové zámky',
+'protectedpages-noredirect' => 'Skrýt přesměrování',
'protectedpagesempty' => 'Žádná stránka není zamčena s těmito parametry.',
'protectedtitles' => 'Zamčené názvy stránek',
'protectedtitlesempty' => 'S těmito parametry nejsou zamčeny žádné názvy.',
# 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-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',
'watchmethod-list' => 'hledají se nejnovější editace sledovaných stránek',
'watchlistcontains' => 'Na vašem seznamu sledovaných stránek {{PLURAL:$1|je $1 položka|jsou $1 položky|je $1 položek}}.',
'iteminvalidname' => 'Problém s položkou „$1“, neplatný název…',
-'wlnote' => "Níže {{PLURAL:$1|je poslední změna|jsou poslední '''$1''' změny|je posledních '''$1''' změn}} za {{PLURAL:$2|poslední hodinu|poslední '''$2''' hodiny|posledních '''$2''' hodin}} do $4, $3.",
+'wlnote2' => 'Níže jsou změny za {{PLURAL:$1|poslední hodinu|poslední <strong>$1</strong> hodiny|posledních <strong>$1</strong> hodin}} do $3, $2.',
'wlshowlast' => 'Ukázat posledních $1 hodin $2 dnů $3',
'watchlist-options' => 'Možnosti sledovaných stránek',
'exblank' => 'stránka byla prázdná',
'delete-confirm' => 'Smazání stránky „$1“',
'delete-legend' => 'Smazat',
-'historywarning' => "'''Varování:''' Stránka, kterou chcete smazat, má historii se zhruba $1 {{plural:$1|revizí|revizemi}}:",
+'historywarning' => "'''Varování:''' Stránka, kterou chcete smazat, má historii se zhruba $1 {{PLURAL:$1|revizí|revizemi}}:",
'confirmdeletetext' => 'Chystáte se smazat stránku s celou její historií. Prosím potvrďte, že to opravdu chcete učinit, že si uvědomujete důsledky a že je to v souladu s [[{{MediaWiki:Policy-url}}|pravidly]].',
'actioncomplete' => 'Provedeno',
'actionfailed' => 'Operace se nezdařila',
** Na žádost autora
** Rozbité přesměrování',
'delete-edit-reasonlist' => 'Editovat důvody smazání',
-'delete-toobig' => 'Tato stránka má velkou historii editací, přes $1 {{plural:$1|verzi|verze|verzí}}. Mazání takových stránek je omezeno, aby se předešlo nechtěnému narušení {{grammar:2sg|{{SITENAME}}}}.',
-'delete-warning-toobig' => 'Tato stránka má velkou historii editací, přes $1 {{plural:$1|verzi|verze|verzí}}. Mazání takových stránek může narušit databázové operace {{grammar:2sg|{{SITENAME}}}}; postupujte opatrně.',
+'delete-toobig' => 'Tato stránka má velkou historii editací, přes $1 {{PLURAL:$1|verzi|verze|verzí}}. Mazání takových stránek je omezeno, aby se předešlo nechtěnému narušení {{grammar:2sg|{{SITENAME}}}}.',
+'delete-warning-toobig' => 'Tato stránka má velkou historii editací, přes $1 {{PLURAL:$1|verzi|verze|verzí}}. Mazání takových stránek může narušit databázové operace {{grammar:2sg|{{SITENAME}}}}; postupujte opatrně.',
+'deleting-backlinks-warning' => "'''Upozornění:''' Stránka, kterou se chystáte smazat, je na jiných stránkách odkazována nebo vkládána.",
# Rollback
'rollback' => 'Vrátit zpět editace',
'cantrollback' => 'Nelze vrátit zpět poslední editaci, neboť poslední přispěvatel je jediným autorem této stránky.',
'alreadyrolled' => 'Nelze vrátit zpět poslední editaci [[:$1]] od uživatele [[User:$2|$2]] ([[User talk:$2|diskuse]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]), protože někdo jiný již stránku editoval nebo vrátil tuto změnu zpět.
-Poslední editaci této stránky provedl(a) [[User:$3|$3]] ([[User talk:$3|diskuse]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
+Poslední editaci této stránky {{PLURAL:$3|provedl|provedla|provedl uživatel}} [[User:$3|$3]] ([[User talk:$3|diskuse]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
'editcomment' => "Shrnutí editace bylo: ''„$1“''.",
'revertpage' => 'Editace uživatele „[[Special:Contributions/$2|$2]]“ ([[User talk:$2|diskuse]]) vráceny do předchozího stavu, jehož autorem je „[[User:$1|$1]]“',
'revertpage-nouser' => 'Editace skrytého uživatele vráceny do předchozího stavu, jehož {{GENDER:$1|autorem|autorkou}} je „[[User:$1|$1]]“',
Můžete si prohlédnout [[Special:BlockList|seznam zablokovaných uživatelů]].',
'ipb-blockingself' => 'Chystáte se zablokovat {{gender:|sám|sama|sami}} sebe! Jste si {{gender:|jist|jista|jisti}}, že to chcete udělat?',
'ipb-confirmhideuser' => 'Chystáte se zablokovat uživatele se zapnutou volbou „skrýt uživatelské jméno“. To způsobí, že jméno uživatele zmizí ze všech seznamů a protokolovacích záznamů. Jste si {{gender:|jist|jista|jisti}}, že to chcete udělat?',
+'ipb-confirmaction' => 'Pokud jste si {{GENDER:|jist|jista|jisti}}, že to chcete udělat, zaškrtněte pole „{{int:ipb-confirm}}“ dole.',
'ipb-edit-dropdown' => 'Editace seznamu důvodů zablokování',
'ipb-unblock-addr' => 'Odblokovat uživatele nebo IP $1',
'ipb-unblock' => 'Odblokovat uživatele nebo IP adresu',
'range_block_disabled' => 'Blokování rozsahů IP adres je zakázáno.',
'ipb_expiry_invalid' => 'Neplatný čas vypršení.',
'ipb_expiry_temp' => 'Blokování skrytých uživatelských jmen by měla být trvalá.',
-'ipb_hide_invalid' => 'Tento účet nelze utajit; možná má příliš mnoho editací.',
+'ipb_hide_invalid' => 'Tento účet nelze utajit; má více než $1 {{PLURAL:$1|editaci|editace|editací}}.',
'ipb_already_blocked' => '„$1“ již je zablokován.',
'ipb-needreblock' => '$1 je již zablokován(a). Chcete změnit nastavení bloku?',
'ipb-otherblocks-header' => '{{PLURAL:$1|Jiné zablokování|Jiná zablokování}}',
'movelogpage' => 'Kniha přesunů',
'movelogpagetext' => 'Toto je záznam všech přesunů stránek.',
'movesubpage' => '{{PLURAL:$1|Podstránka|Podstránky}}',
-'movesubpagetext' => 'Tato stránka má $1 {{plural:$1|podstránku uvedenou|podstránky vypsané|podstránek vypsaných}} níže.',
+'movesubpagetext' => 'Tato stránka má $1 {{PLURAL:$1|podstránku uvedenou|podstránky vypsané|podstránek vypsaných}} níže.',
'movenosubpage' => 'Tato stránka nemá žádné podstránky.',
'movereason' => 'Důvod:',
'revertmove' => 'vrátit',
'allmessages-prefix' => 'Filtr podle začátku názvu:',
'allmessages-language' => 'Jazyk:',
'allmessages-filter-submit' => 'Použít',
+'allmessages-filter-translate' => 'přeložit',
# Thumbnails
'thumbnail-more' => 'Zvětšit',
'importuploaderrortemp' => 'Nepodařilo se načíst importní soubor. Není k dispozici dočasná složka.',
'import-parse-failure' => 'Chyba při importu XML',
'import-noarticle' => 'Není určena žádná stránka na import!',
-'import-nonewrevisions' => 'Všechny verze již byly dříve importovány.',
+'import-nonewrevisions' => 'Žádné revize nebyly importovány (buď již byly všechny importovány dříve, nebo byly přeskočeny kvůli chybám).',
'xml-error-string' => '$1 na řádku $2, sloupec $3 (bajt $4): $5',
'import-upload' => 'Importovat XML data',
'import-token-mismatch' => 'Ztratila se data relace. Zkuste to znovu.',
'import-error-special' => 'Stránka „$1“ se neimportuje, protože patří do speciálního jmenného prostoru, do kterého stránky nepatří.',
'import-error-invalid' => 'Stránka „$1“ se neimportuje, protože její název je neplatný.',
'import-error-unserialize' => 'Nepodařilo se deserializovat revizi $2 stránky „$1“. Revize měla používat model obsahu $3 serializovaný jako $4.',
+'import-error-bad-location' => 'Revizi $2 používající obsahový model $3 nelze uložit na "$1" na této wiki, neboť tento model není na této stránce podporován.',
'import-options-wrong' => '{{PLURAL:$2|Chybná volba|Chybné volby}}: <nowiki>$1</nowiki>',
'import-rootpage-invalid' => 'Zadaný název kořenové stránky je neplatný.',
'import-rootpage-nosubpage' => 'Ve jmenném prostoru „$1“ kořenové stránky nejsou dovoleny podstránky.',
'tooltip-pt-watchlist' => 'Seznam stránek, jejichž změny sleduji',
'tooltip-pt-mycontris' => 'Seznam vašich příspěvků',
'tooltip-pt-login' => 'Doporučujeme vám přihlásit se, ovšem není to povinné.',
-'tooltip-pt-anonlogin' => 'Doporučujeme vám přihlásit se, ovšem není to povinné.',
'tooltip-pt-logout' => 'Odhlásit se',
'tooltip-ca-talk' => 'Diskuse ke stránce',
'tooltip-ca-edit' => 'Tuto stránku můžete editovat. Prosíme použijte tlačítko Ukázat náhled před uložením.',
# Special:NewFiles
'newimages' => 'Galerie nových souborů',
-'imagelisttext' => "Níže je {{plural:$1|jeden soubor|seznam '''$1''' souborů seřazených $2|seznam '''$1''' souborů seřazených $2}}.",
+'imagelisttext' => "Níže je {{PLURAL:$1|'''$1''' soubor|seznam '''$1''' souborů seřazených $2}}.",
'newimages-summary' => 'Na této speciální stránce se zobrazují poslední načtené soubory.',
'newimages-legend' => 'Filtr',
'newimages-label' => 'Název souboru (nebo jeho část):',
'version-parser-function-hooks' => 'Funkce parseru',
'version-hook-name' => 'Název přípojného bodu',
'version-hook-subscribedby' => 'Volán z',
-'version-version' => '(Verze $1)',
-'version-license' => 'Licence',
+'version-version' => '($1)',
+'version-license' => 'Licence MediaWiki',
+'version-ext-license' => 'Licence',
+'version-ext-colheader-name' => 'Rozšíření',
+'version-ext-colheader-version' => 'Verze',
+'version-ext-colheader-license' => 'Licence',
+'version-ext-colheader-description' => 'Popis',
+'version-ext-colheader-credits' => 'Autoři',
+'version-license-title' => 'Licence pro $1',
+'version-license-not-found' => 'Pro toto rozšíření nebyly nalezeny podrobnější informace o licenci.',
+'version-credits-title' => 'Autoři $1',
+'version-credits-not-found' => 'Pro toto rozšíření nebyly nalezeny podrobnější informace o autorech.',
'version-poweredby-credits' => "Tato wiki běží na '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001–$1 $2.",
'version-poweredby-others' => 'další',
'version-poweredby-translators' => 'překladatelé na translatewiki.net',
'api-error-overwrite' => 'Není dovoleno přepsat existující soubor.',
'api-error-stashfailed' => 'Vnitřní chyba: Serveru se nepodařilo uložit dočasný soubor.',
'api-error-publishfailed' => 'Vnitřní chyba: Serveru se nepodařilo zveřejnit dočasný soubor.',
+'api-error-stasherror' => 'Při načítání souboru do skrýše došlo k chybě.',
'api-error-timeout' => 'Server neodpověděl v očekávaném čase.',
'api-error-unclassified' => 'Došlo k neznámé chybě',
'api-error-unknown-code' => 'Neznámá chyba: „$1“',
'expand_templates_generate_rawhtml' => 'Zobrazit surové HTML',
'expand_templates_preview' => 'Náhled',
+# Unknown messages
+'createaccount-hook-aborted' => '$1',
+'uploadinvalidxml' => 'XML v načteném souboru nelze zpracovat.',
);
'tog-editsection' => '«Тӳрлет» ссылкăна кашни пайра кăтартмалла',
'tog-editsectiononrightclick' => 'Шăшин сылтăм пускăчне пуссан статья пайне тӳрлетмелле (JavaScript)',
'tog-showtoc' => 'Тупмаллине кăтартмалла (3, е ытларах заголовок пулсан)',
-'tog-rememberpassword' => 'Мана ку компьютер çинче астуса хăвармалла (for a maximum of $1 {{PLURAL:$1|day|days}})',
+'tog-rememberpassword' => 'Мана ку компьютер çинче астуса хăвармалла (for a maximum of $1 {{PLURAL:$1|1=day|days}})',
'tog-watchcreations' => 'Эпĕ тунă страницăсене сăнав списокне кĕртмелле',
'tog-watchdefault' => 'Тӳрлетнĕ страницăсене сăнав списокне кĕртмелле',
'tog-watchmoves' => 'Страница ятне эпĕ улаштарсан вĕсене сăнав списокне кĕртмелле',
'dec' => 'раш',
# Categories related messages
-'pagecategories' => 'Категорисем',
+'pagecategories' => '{{PLURAL:$1|1=Категори|Категорисем}}',
'category_header' => '«$1» категорири статьясем',
'subcategories' => 'Подкатегорисем',
'category-media-header' => '«$1» категорири файлсем',
'category-empty' => "''Хальхи вăхăтра ку категори пушă.''",
-'hidden-categories' => '{{PLURAL:$1|Пытарнă категори|Пытарнă категорисем}}',
+'hidden-categories' => '{{PLURAL:$1|1=Пытарнă категори|Пытарнă категорисем}}',
'hidden-category-category' => 'Пытарнă категорисем',
'category-subcat-count' => '{{PLURAL:$2|Ку категоринче çак айри категори пур.|$2-ран(-рен,-тан,-тен) {{PLURAL:$1|$1 айри категорине кăтартнă|$1 айри категорине кăтартнă|$1 айри категорине кăтартнă}}.}}',
'category-subcat-count-limited' => 'Ку категоринче {{PLURAL:$1|$1 айри категори|$1 айри категори|$1 айри категори}}.',
-'category-article-count' => '{{PLURAL:$2|Ку категоринче пĕр страница кăна.|Ку категорири $2 страницăран $1 кăтартнă.}}',
+'category-article-count' => '{{PLURAL:$2|1=Ку категоринче пĕр страница кăна.|Ку категорири $2 страницăран $1 кăтартнă.}}',
'category-article-count-limited' => 'Ку категоринче $1 страница.',
-'category-file-count' => '{{PLURAL:$2|Ку категоринче пĕр файл кăна.|Ку категоринчи $2 файлтан $1 кăтартнă.}}',
+'category-file-count' => '{{PLURAL:$2|1=Ку категоринче пĕр файл кăна.|Ку категоринчи $2 файлтан $1 кăтартнă.}}',
'category-file-count-limited' => 'Ку категоринче $1 файл.',
'listingcontinuesabbrev' => '(малалли)',
'cancel' => 'Пăрахăçла',
'moredotdotdot' => 'Малалла…',
'mypage' => 'Ман страница',
-'mytalk' => 'Ð\9cан канаÑ\88лÑ\83 Ñ\81Ñ\82Ñ\80аниÑ\86и',
+'mytalk' => 'СӳÑ\82Ñ\81е Ñ\8fвни',
'anontalk' => 'Çак IP-адреса сӳтсе явни',
'navigation' => 'Меню',
'and' => ' тата',
'articlepage' => 'Статьяна пăх',
'talk' => 'Сӳтсе явни',
'views' => 'Пурĕ пăхнă',
-'toolbox' => 'Ĕç хатĕрĕсем',
+'toolbox' => 'Хатĕрсем',
'userpage' => 'Хутшăнакан страницине пăх',
'projectpage' => 'Проект страницине пăх',
'imagepage' => 'Ӳкерчĕк страницине пăх',
'nstab-main' => 'Статья',
'nstab-user' => 'Хутшăнакан страници',
'nstab-media' => 'Мультимеди',
-'nstab-special' => 'Ятарлă',
+'nstab-special' => 'Ятарлă страницă',
'nstab-project' => 'Проект çинчен',
'nstab-image' => 'Файл',
'nstab-mediawiki' => 'Пĕлтерӳ',
'cannotdelete' => 'Эсир кăтартнă страницăна е файла кăларса пăрахаймастпăр. Ăна, тен, урăххи кăларса пăрахнă?',
'badtitle' => 'Ку ят килĕшмест',
'badtitletext' => 'Эсир кăтартнă статья ячĕ тĕрĕс мар, пушă, е чĕлхе хушшинчипе интервики ячĕ тĕрĕс мар. Ятра усă курма юраман паллăсене çырнинче пулма пултарать.',
-'perfcached' => 'Ку даннăйсене кэшран илнĕ, çавна май унта юлашки улшăнусем палăрмасăр пултараççĕ. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
-'perfcachedts' => 'Ку даннăйсене кэшран илнĕ, юлашки хут вăл $1 вăхăтра çĕнелнĕ. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
+'perfcached' => 'Ку даннăйсене кэшран илнĕ, çавна май унта юлашки улшăнусем палăрмасăр пултараççĕ. A maximum of {{PLURAL:$1|1=one result is|$1 results are}} available in the cache.',
+'perfcachedts' => 'Ку даннăйсене кэшран илнĕ, юлашки хут вăл $1 вăхăтра çĕнелнĕ. A maximum of {{PLURAL:$4|1=one result is|$4 results are}} available in the cache.',
'querypage-no-updates' => 'Ку страницăна хальхи вăхăтра улăштарма чарнă. Ку даннăйсене хальхи вăхăтра çĕнетме май çук.',
'viewsource' => 'Курăм',
'actionthrottled' => 'Хăвăртлăха чакарнă',
'yourname' => 'Сирĕн ят',
'yourpassword' => 'Вăрттăн сăмах:',
'yourpasswordagain' => 'Вăрттăн сăмах тепре çырăр:',
-'remembermypassword' => 'Ку компьютер çинче мана астуса хăвармалла (for a maximum of $1 {{PLURAL:$1|day|days}})',
+'remembermypassword' => 'Ку компьютер çинче мана астуса хăвармалла (for a maximum of $1 {{PLURAL:$1|1=day|days}})',
'yourdomainname' => 'Сирĕн домен',
'login' => 'Сайта кĕр',
'nav-login-createaccount' => 'Сайта кĕр / регистрацилен',
'textmatches' => 'Статьясенчи текст пĕрпеклĕхĕ',
'prevn' => 'малтанхи {{PLURAL:$1|$1}}',
'nextn' => 'малалли {{PLURAL:$1|$1}}',
-'search-result-size' => '$1 ({{PLURAL:$2|1 сăмах|$2 сăмах}})',
+'search-result-size' => '$1 ({{PLURAL:$2|1=1 сăмах|$2 сăмах}})',
'showingresults' => 'Аяларах эсир <b>#$2</b> пуçласа кăтартнă <b>$1</b> йĕркене куратăр.',
-'showingresultsheader' => "{{PLURAL:$5|Результат '''$1''' '''$3''' хушшинчен|Результатсем'''$1 - $2''' '''$3''' хушшинчен}} '''$4''' валли",
+'showingresultsheader' => "{{PLURAL:$5|1=Результат '''$1''' '''$3''' хушшинчен|Результатсем'''$1 - $2''' '''$3''' хушшинчен}} '''$4''' валли",
'powersearch-legend' => 'Анлă шырав',
# Preferences page
'preferences' => 'Ĕнерлевсем',
-'mypreferences' => 'Ман ĕнерлевсем',
+'mypreferences' => 'Ĕнерлев',
'prefs-edits' => 'Тӳрлетӳсен шучĕ:',
'prefs-skin' => 'Ерешленӳ',
'skin-preview' => 'Малтанхи курăну',
'fewestrevisions' => 'Сахал тӳрлетнĕ статьясем',
# Miscellaneous special pages
-'nbytes' => '$1 {{PLURAL:$1|байт|байт}}',
-'nlinks' => '$1 {{PLURAL:$1|каçă|каçă}}',
+'nbytes' => '$1 {{PLURAL:$1|1=байт|байт}}',
+'nlinks' => '$1 {{PLURAL:$1|1=каçă|каçă}}',
'nviews' => '$1 хут пăхнă',
'specialpage-empty' => 'Ку страница пушă',
'lonelypages' => 'Тăлăх страницăсем',
$messages = array(
# User preference toggles
'tog-underline' => 'Tanlinellu cysylltiadau:',
-'tog-justify' => 'Unioni paragraffau',
'tog-hideminor' => 'Cuddio golygiadau bychain yn rhestr y newidiadau diweddar',
'tog-hidepatrolled' => 'Cuddio golygiadau sydd wedi derbyn ymweliad patrôl rhag y rhestr newidiadau diweddar',
'tog-newpageshidepatrolled' => 'Cuddio tudalennau sydd wedi derbyn ymweliad patrôl rhag rhestr y tudalennau newydd',
'tog-numberheadings' => "Rhifo penawdau'n awtomatig",
'tog-showtoolbar' => 'Dangos y bar offer golygu',
'tog-editondblclick' => 'Golygu tudalennau wrth glicio ddwywaith',
-'tog-editsection' => 'Galluogi golygu adran trwy ddolennau [golygu] uwchben yr adran',
'tog-editsectiononrightclick' => 'Galluogi golygu adran drwy dde-glicio ar bennawd yr adran',
-'tog-showtoc' => 'Dangos y daflen gynnwys (ar gyfer tudalennau sydd â mwy na 3 pennawd)',
'tog-rememberpassword' => "Y porwr hwn i gofio'r manylion mewngofnodi (hyd at $1 {{PLURAL:$1||diwrnod|ddiwrnod|diwrnod|diwrnod|diwrnod}})",
'tog-watchcreations' => 'Ychwanegu tudalennau at fy rhestr wylio wrth i mi eu creu a ffeiliau wrth i mi eu huwchlwytho.',
'tog-watchdefault' => 'Ychwanegu tudalennau a ffeiliau at fy rhestr wylio wrth i mi eu golygu',
'cantcreateaccount-text' => "Rhwystrwyd y gallu i greu cyfrif ar gyfer y cyfeiriad IP hwn, ('''$1'''), gan [[User:$3|$3]].
Y rheswm a roddwyd dros y bloc gan $3 yw ''$2''.",
+'cantcreateaccount-range-text' => "Gosododd [[User:\$3|\$3]] floc ar agor cyfrifon o gyfeiriadau IP yn yr ystod '''\$1''', sy'n cynnwys eich cyfeiriad IP chi ('''\$4''').
+
+Y rheswm a roddwyd gan \$3 yw \"\$2\"",
# History pages
'viewpagelogs' => "Dangos logiau'r dudalen hon",
'showhideselectedversions' => 'Dangos/cuddio y diwygiadau dewisedig',
'editundo' => 'dadwneud',
'diff-empty' => '(Dim gwahaniaeth)',
-'diff-multi' => '(Ni ddangosir {{PLURAL:$1|yr $1 diwygiad|yr $1 diwygiad|y $1 ddiwygiad|y $1 diwygiad|y $1 diwygiad|y $1 diwygiad}} rhyngol gan {{PLURAL:$2||un defnyddiwr|$2 ddefnyddiwr|$2 defnyddiwr|$2 o ddefnyddwyr|$2 o ddefnyddwyr}}.)',
'diff-multi-manyusers' => '(Ni ddangosir {{PLURAL:$1|yr $1 diwygiad|yr $1 diwygiad|y $1 ddiwygiad|y $1 diwygiad|y $1 diwygiad|y $1 diwygiad}} rhyngol gan mwy na $2 {{PLURAL:$2|o ddefnyddwyr}}.)',
'difference-missing-revision' => "Ni chafwyd hyd i $1 {{PLURAL:$2|diwygiad|diwygiad|ddiwygiad|diwygiad}} o'r gwahaniaeth ($1) {{PLURAL:$2|hwn}}.
'rows' => 'Rhesi:',
'columns' => 'Colofnau:',
'searchresultshead' => 'Chwilio',
-'resultsperpage' => 'Cyfradd taro fesul tudalen:',
'stub-threshold' => 'Trothwy ar gyfer fformatio <a href="#" class="stub">cyswllt eginyn</a> (beitiau):',
'stub-threshold-disabled' => 'Analluogwyd',
'recentchangesdays' => "Nifer y diwrnodau i'w dangos yn 'newidiadau diweddar':",
'prefs-tokenwatchlist' => 'Tocyn',
'prefs-diffs' => "Cymharu golygiadau ('gwahan')",
'prefs-help-prefershttps' => "Bydd y dewis yma'n cael ei roi ar waith y tro nesaf i chi fewngofnodi.",
+'prefs-tabs-navigation-hint' => "Awgrym: Gallwch ddefnyddio'r allweddellau sy'n saethau i'r chwith neu i'r dde i lywio rhwng y tabiau ar restr y tabiau.",
# User preference: email validation using jQuery
'email-address-validity-valid' => 'Y cyfeiriad e-bost yn ymddangos yn un dilys',
'recentchanges-label-bot' => 'Golygwyd gan fot',
'recentchanges-label-unpatrolled' => "Nid yw'r golygiad hwn wedi derbyn ymweliad patrôl eto",
'recentchanges-label-plusminus' => "Newidiodd maint y dudalen o'r nifer hwn o feitiau",
+'recentchanges-legend-heading' => "'''Allwedd:'''",
'recentchanges-legend-newpage' => '(gweler hefyd [[Special:NewPages|restr y tudalennau newydd]])',
'recentchanges-legend-plusminus' => "(''±123'')",
'rcnotefrom' => "Isod rhestrir pob newid ers '''$2''' (hyd at '''$1''' ohonynt).",
'file-exists-duplicate' => "Dyblgeb yw'r ffeil hwn o'r {{PLURAL:$1|ffeil|ffeil|ffeiliau|ffeiliau|ffeiliau|ffeiliau}} sy'n dilyn:",
'file-deleted-duplicate' => "Mae ffeil union debyg i hon ([[:$1]]) eisoes wedi cael ei dileu.
Dylech edrych ar hanes dileu'r ffeil honno cyn bwrw ati i'w llwytho unwaith eto.",
+'file-deleted-duplicate-notitle' => "Mae ffeil union debyg i hon eisoes wedi cael ei dileu, ac mae'r teitl wedi ei hatal rhag ymddangos ar goedd.
+Cyn i chi ail-lwytho'r ffeil, dylech holi i rywun â'r gallu ganddo i weld data ffeil sydd wedi ei hatal rhag ymddangos, i adolygu'r sefyllfa.",
'uploadwarning' => 'Rhybudd uwchlwytho',
'uploadwarning-text' => 'Newidiwch ddisgrifiad y ffeil isod ac yna ceisiwch ei huwchlwytho eto, os gwelwch yn dda.',
'savefile' => "Cadw'r ffeil",
'protectedpages' => 'Tudalennau wedi eu diogelu',
'protectedpages-indef' => 'A ddiogelwyd yn ddi-derfyn yn unig',
'protectedpages-cascade' => 'A sgydol-ddiogelwyd yn unig',
+'protectedpages-noredirect' => 'Cuddio ailgyfeiriadau',
'protectedpagesempty' => "Does dim tudalennau wedi eu diogelu gyda'r paramedrau hyn.",
'protectedtitles' => 'Teitlau wedi eu diogelu',
'protectedtitlesempty' => "Ar hyn o bryd nid oes unrhyw deitlau wedi eu diogelu a'r paramedrau hyn.",
'watchmethod-list' => "yn chwilio'r tudalennau ar y rhestr wylio am ddiwygiadau diweddar",
'watchlistcontains' => '{{PLURAL:$1|Nid oes dim tudalennau|Mae $1 dudalen|Mae $1 dudalen|Mae $1 tudalen|Mae $1 thudalen|Mae $1 o dudalennau}} ar eich rhestr wylio.',
'iteminvalidname' => "Problem gyda'r eitem '$1', enw annilys...",
-'wlnote' => "{{PLURAL:\$1|Ni fu unrhyw newid|Isod mae'r '''\$1''' newid diweddaraf|Isod mae'r '''\$1''' newid diweddaraf|Isod mae'r '''\$1''' newid diweddaraf|Isod mae'r '''\$1''' newid diweddaraf|Isod mae'r '''\$1''' newid diweddaraf}} yn ystod {{PLURAL:\$2||yr awr|y ddwyawr|y teirawr|y \"\$2\" awr|y(r) \"\$2\" awr}} ddiwethaf, fel ag yr oedd am \$4, \$3.",
'wlshowlast' => "Dangoser newidiadau'r $1 awr ddiwethaf neu'r $2 {{PLURAL:$2|diwrnod|diwrnod|ddiwrnod|diwrnod|diwrnod|diwrnod}} diwethaf neu'r $3 newidiadau.",
'watchlist-options' => 'Dewisiadau ar gyfer y rhestr wylio',
Cyfyngwyd ar y gallu i ddileu tudalennau sydd wedi eu golygu cymaint â hyn, er mwyn osgoi amharu ar weithrediad databas {{SITENAME}} yn ddamweiniol.",
'delete-warning-toobig' => "Cafwyd dros $1 {{PLURAL:$1|o olygiadau}} i'r dudalen hon.
Gallai dileu tudalen, gyda hanes golygu cymaint â hyn iddi, beri dryswch i weithrediadau'r databas ar {{SITENAME}}; ewch ati'n ofalus.",
+'deleting-backlinks-warning' => "'''Rhybudd:''' Mae tudalennau eraill yn cysylltu i'r dudalen yr ydych ar fin ei dileu.",
# Rollback
'rollback' => 'Gwrthdroi golygiadau',
Gweler y [[Special:BlockList|rhestr blociau]] er mwyn arolygu blociau.',
'ipb-blockingself' => "Rydych ar rwystro'ch hunan! A ydych yn siŵr eich bod chi am wneud hyn?",
'ipb-confirmhideuser' => 'Rydych ar rwystro defnyddiwr sydd yn "guddiedig." Bydd hyn yn atal enw\'r defnyddiwr ym mhob rhestr a chofnod lòg. A ydych yn siŵr eich bod chi am wneud hyn?',
+'ipb-confirmaction' => 'Os ydych wir am wneud hyn, cliciwch ar y maes "{{int:ipb-confirm}}" ar y gwaelod.',
'ipb-edit-dropdown' => "Golygu'r rhesymau dros flocio",
'ipb-unblock-addr' => 'Dadflocio $1',
'ipb-unblock' => 'Dadflocio enw defnyddiwr neu gyfeiriad IP',
'tooltip-pt-watchlist' => 'Rydych yn dilyn hynt y tudalennau sydd ar y rhestr hon',
'tooltip-pt-mycontris' => 'Rhestr eich cyfraniadau yn nhrefn amser',
'tooltip-pt-login' => "Fe'ch anogir i fewngofnodi, er nad oes rhaid gwneud.",
-'tooltip-pt-anonlogin' => "Fe'ch anogir i fewngofnodi, er nad oes rhaid gwneud.",
'tooltip-pt-logout' => 'Allgofnodi',
'tooltip-ca-talk' => 'Sgwrsio am y dudalen',
'tooltip-ca-edit' => "Gallwch olygu'r dudalen hon. Da o beth fyddai defnyddio'r botwm 'Dangos rhagolwg' cyn rhoi ar gadw.",
'imgmultigoto' => "Mynd i'r dudalen $1",
# Language selector for translatable SVGs
+'img-lang-default' => '(diofyn)',
'img-lang-info' => "Cynhyrchu'r ddelwedd yn yr iaith $1. $2",
'img-lang-go' => 'Cynhyrcher',
'version-hook-name' => "Enw'r bachyn",
'version-hook-subscribedby' => 'Tanysgrifwyd gan',
'version-version' => '(Fersiwn $1)',
-'version-license' => 'Trwydded',
+'version-license' => 'Trwydded MediaWiki',
+'version-ext-license' => 'Trwydded',
+'version-ext-colheader-name' => 'Estyniad',
+'version-ext-colheader-version' => 'Fersiwn',
+'version-ext-colheader-license' => 'Trwydded',
+'version-ext-colheader-description' => 'Disgrifiad',
+'version-ext-colheader-credits' => 'Awduron',
+'version-license-title' => 'Trwydded $1',
+'version-license-not-found' => 'Ni chafwyd hyd i wybodaeth manwl am drwydded yr estyniad hwn.',
+'version-credits-title' => 'Tadogi $1',
+'version-credits-not-found' => "Ni chafwyd hyd i wybodaeth fanwl ar dadogi'r estyniad hwn.",
'version-poweredby-credits' => "Mae'r wici hwn wedi'i nerthu gan '''[https://www.mediawiki.org/ MediaWiki]''', hawlfraint © 2001 - $1 $2.",
'version-poweredby-others' => 'eraill',
'version-poweredby-translators' => 'cyfieithwyr translatewiki.net',
# Special:Redirect
'redirect' => 'Ailgyfeirio yn ôl enw ffeil, defnyddiwr, tudalen neu ID y diwygiad',
'redirect-legend' => 'Ailgyfeirio i ffeil neu dudalen',
-'redirect-summary' => "Mae'r dudalen arbennig hon yn ailgyfeirio at ffeil (o roi enw'r ffeil), at dudalen (o roi ID rhyw ddiwygiad o'r dudalen), neu at dudalen defnyddiwr (o roi rhif ID y defnyddiwr).
+'redirect-summary' => "Mae'r dudalen arbennig hon yn ailgyfeirio at ffeil (o roi enw'r ffeil), at dudalen (o roi ID rhyw ddiwygiad o'r dudalen neu ID y dudalen), neu at dudalen defnyddiwr (o roi rhif ID y defnyddiwr).
Defnydd:
-[[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]], neu [[{{#Special:Redirect}}/user/101]].",
+[[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], neu [[{{#Special:Redirect}}/user/101]].",
'redirect-submit' => 'Ati',
'redirect-lookup' => 'Chwilio drwy:',
'redirect-value' => 'Chwilio am:',
'redirect-user' => 'ID defnyddwyr',
+'redirect-page' => 'ID tudalennau',
'redirect-revision' => 'Rhifau diwygiadau tudalennau',
'redirect-file' => 'Enwau ffeiliau',
'redirect-not-exists' => "Heb lwyddo i'w ganfod",
'api-error-overwrite' => 'Ni chaniateir trosysgrifo ffeil sydd eisoes yn bod.',
'api-error-stashfailed' => "Gwall mewnol: methodd y gweinydd â rhoi'r ffeil dros dro ar gadw.",
'api-error-publishfailed' => "Gwall mewnol: methodd y gweinydd â chyhoeddi'r ffeil dros dro.",
+'api-error-stasherror' => "Cafwyd gwall wrth uwchlwytho'r ffeil i'w gelcio.",
'api-error-timeout' => 'Ni chafwyd ymateb gan y gweinydd mewn da bryd.',
'api-error-unclassified' => 'Cafwyd gwall anhysbys',
'api-error-unknown-code' => 'Gwall anhysbys: "$1"',
# Special:ExpandTemplates
'expandtemplates' => "Ehangu'r nodynnau",
+'expand_templates_title' => 'Teitl y cyd-destun, ar gyfer {{FULLPAGENAME}}, etc.:',
'expand_templates_input' => 'Cynnwys y mewnbwn:',
'expand_templates_output' => 'Y canlyniad',
'expand_templates_xml_output' => 'Yr allbwn XML',
+'expand_templates_html_output' => 'Allbwn HTML crai',
'expand_templates_ok' => 'Iawn',
'expand_templates_remove_comments' => 'Peidio â dangos sylwadau',
'expand_templates_remove_nowiki' => "Cuddio'r tagiau <nowiki> wrth ehangu",
+'expand_templates_generate_rawhtml' => 'Dangos HTML crai',
'expand_templates_preview' => 'Rhagolwg',
);
$messages = array(
# User preference toggles
'tog-underline' => 'Understreg henvisninger:',
-'tog-justify' => 'Vis afsnit med lige marginer',
'tog-hideminor' => 'Skjul mindre ændringer i listen over seneste ændringer',
'tog-hidepatrolled' => 'Skjul patruljerede redigeringer i seneste ændringer',
'tog-newpageshidepatrolled' => 'Skjul patruljerede sider på listen over nye sider',
'tog-numberheadings' => 'Automatisk nummerering af overskrifter',
'tog-showtoolbar' => 'Vis værktøjslinje til redigering',
'tog-editondblclick' => 'Redigér sider med dobbeltklik',
-'tog-editsection' => 'Redigér afsnit ved hjælp af [redigér]-henvisninger',
'tog-editsectiononrightclick' => 'Redigér afsnit ved at højreklikke på deres titler',
-'tog-showtoc' => 'Vis indholdsfortegnelse (på sider med mere end tre afsnit)',
-'tog-rememberpassword' => 'Husk mit login i denne browser (højst $1 {{PLURAL:$1|dag|dage}})',
+'tog-rememberpassword' => 'Husk mig i denne browser (i højst $1 {{PLURAL:$1|dag|dage}})',
'tog-watchcreations' => 'Tilføj sider, jeg opretter, og filer, jeg lægger op, til min overvågningsliste',
'tog-watchdefault' => 'Tilføj sider og filer, jeg redigerer, til min overvågningsliste',
'tog-watchmoves' => 'Tilføj sider og filer, jeg flytter, til min overvågningsliste',
'delete-hook-aborted' => 'Sletningen blev afbrudt af en programfunktion.
Der var ikke nogen forklaring.',
'no-null-revision' => 'Kunne ikke oprette nye tom revision for side "$1"',
-'badtitle' => 'Forkert titel',
-'badtitletext' => 'Den ønskede sides titel var ikke tilladt, tom eller siden er forkert henvist fra en {{SITENAME}} på et andet sprog.
-Den kan indeholde et eller flere tegn, som ikke kan anvendes i titler.',
+'badtitle' => 'Ugyldig titel',
+'badtitletext' => 'Den ønskede sides titel var ikke tilladt, tom eller siden er forkert henvist fra {{SITENAME}} på et andet sprog.
+Den kan indeholde et eller flere tegn, som ikke må anvendes i titler.',
'perfcached' => 'Følgende data er gemt i cachen, der muligvis ikke er helt opdateret. Der gemmes højst {{PLURAL:$1|ét resultat|$1 resultater}} i cachen.',
'perfcachedts' => 'Disse data stammer fra cachen, som senest blev opdateret $1. Der gemmes højst {{PLURAL:$4|ét resultat|$4 resultater}} i cachen.',
'querypage-no-updates' => "'''Opdateringer til denne side er deaktiveret for øjeblikket. Dataene bliver indtil videre ikke fornyet.'''",
'noemailcreate' => 'Du skal angive en gyldig e-mailadresse',
'passwordsent' => 'En ny adgangskode er sendt til e-mailadressen, som er registreret for "$1".
Du bør logge på og ændre din adgangskode straks efter du har modtaget e-mailen.',
-'blocked-mailpassword' => 'Din IP-adresse er spærret for ændring af sider. For at forhindre misbrug, er det heller ikke muligt, at bestille en ny adgangskode.',
+'blocked-mailpassword' => 'Din IP-adresse er blokeret fra at redigere sider. For at forhindre misbrug, er det heller ikke muligt, at bestille en ny adgangskode.',
'eauthentsent' => 'En e-mailbekræftelse er sendt til den angivne e-mailadresse.
Før flere e-mails bliver sendt til kontoen, skal du følge instruktionerne i e-mailen, for at bekræfte at kontoen rent faktisk er din.',
'missingcommentheader' => "'''Bemærk:''' Du har ikke angivet en overskrift/emne for denne kommentar. Hvis du trykker \"{{int:savearticle}}\" én gang til, gemmes dine ændringer uden overskrift/emne.",
'summary-preview' => 'Forhåndsvisning af beskrivelsen:',
'subject-preview' => 'Forhåndsvisning af emnet:',
-'blockedtitle' => 'Brugeren er blokeret',
+'blockedtitle' => 'Du eller din IP-adresse er blokeret',
'blockedtext' => "'''Dit brugernavn eller din IP-adresse er blevet blokeret.'''
Blokeringen er foretaget af $1.
# Account creation failure
'cantcreateaccounttitle' => 'Brugerkontoen kan ikke oprettes.',
-'cantcreateaccount-text' => "Oprettelsen af en brugerkonto fra IP-adressen <b>$1</b> er spærret af [[User:$3|$3]]. Årsagen til blokeringen er angivet som ''$2''",
+'cantcreateaccount-text' => "Oprettelsen af en brugerkonto fra IP-adressen ('''$1''') er blevet blokeret af [[User:$3|$3]].
+
+Årsagen til blokeringen er angivet af $3 som ''$2''",
'cantcreateaccount-range-text' => "Oprettelsen af en brugerkonto fra IP-adresser i intervallet '''$1''', som omfatter din IP-adresse ('''$4'''), er blevet blokeret af [[User:$3|$3]].
Årsagen angivet af $3 er ''$2''",
'showhideselectedversions' => 'Vis/skjul udvalgte versioner',
'editundo' => 'fjern redigering',
'diff-empty' => '(Ingen forskel)',
-'diff-multi' => '({{PLURAL:$1|En mellemliggende version|$1 mellemliggende versioner}} af {{PLURAL:$2|en bruger|$2 brugere}} ikke vist)',
'diff-multi-manyusers' => '({{PLURAL:$1|En mellemliggende version|$1 mellemliggende versioner}} af mere end $2 {{PLURAL:$2|bruger|brugere}} ikke vist)',
'difference-missing-revision' => '{{PLURAL:$2|En revision|$2 revisioner}} af denne forskel ($1) {{PLURAL:$2|blev|blev}} ikke fundet.
'rows' => 'Rækker',
'columns' => 'Kolonner',
'searchresultshead' => 'Søgeresultater',
-'resultsperpage' => 'Resultater pr. side',
'stub-threshold' => 'Grænse for visning af henvisning som <a href="#" class="stub">artikelstump</a>:',
'stub-threshold-disabled' => 'Deaktiveret',
'recentchangesdays' => 'Antal dage som skal vises i seneste ændringer:',
'timezoneregion-europe' => 'Europa',
'timezoneregion-indian' => 'Indiske Ocean',
'timezoneregion-pacific' => 'Stillehavet',
-'allowemail' => 'Tillad e-mails fra andre brugere',
+'allowemail' => 'Tillad e-mail fra andre brugere',
'prefs-searchoptions' => 'Søg',
'prefs-namespaces' => 'Navnerum',
'defaultns' => 'Ellers søg i disse navnerum:',
'prefs-help-variant' => 'Den sprogvariant eller retskrivning, som du foretrækker, at denne wikis indholdssider vises i.',
'yournick' => 'Signatur:',
'prefs-help-signature' => 'Kommentarer på diskussionssider bør signeres med "<nowiki>~~~~</nowiki>" som vil blive konverteret til din signatur og et tidsstempel.',
-'badsig' => 'Syntaksen i underskriften er ugyldig; kontroller venligst den brugte HTML.',
-'badsiglength' => 'Din signatur er for lang. Den må højst indeholde {{PLURAL:$1|}}$1 tegn.',
+'badsig' => 'Syntaksen i signaturen er ugyldig; kontroller venligst den brugte HTML.',
+'badsiglength' => 'Din signatur er for lang. Den må højst indeholde $1 {{PLURAL:$1|tegn}}.',
'yourgender' => 'Hvordan foretrækker du at blive beskrevet?',
'gender-unknown' => 'Jeg foretrækker ikke at specificere',
'gender-male' => 'Han redigerer wikisider',
'recentchanges-label-plusminus' => 'Størrelsen på siden blev ændret med dette antal bytes',
'recentchanges-legend-heading' => "'''Forklaring:'''",
'recentchanges-legend-newpage' => '(se også [[Special:NewPages|listen over nye sider]])',
-'recentchanges-legend-plusminus' => '("±123")',
+'recentchanges-legend-plusminus' => "(''±123'')",
'rcnotefrom' => "Nedenfor er op til '''$1''' ændringer siden '''$2''' vist.",
'rclistfrom' => 'Vis nye ændringer startende fra $1',
'rcshowhideminor' => '$1 mindre ændringer',
[[File:$1|thumb|center|$1]]',
'file-exists-duplicate' => 'Denne fil er en bublet af {{PLURAL:$1|den nedenstående fil|de nedenstående $1 filer}}:',
'file-deleted-duplicate' => 'En fil identisk med denne fil ([[:$1]]) er tidligere blevet slettet. Du bør tjekke den fils sletningshistorik før du prøver at genoplægge den.',
+'file-deleted-duplicate-notitle' => 'En fil, der er identisk med denne fil er tidligere blevet slettet, og titlen er blevet undertrykt.
+Du bør spørge en person med evnen til at se undertrykte fildata for at gennemgå situationen inden du fortsætter med at uploade den igen.',
'uploadwarning' => 'Advarsel',
'uploadwarning-text' => 'Vær venlig at ændre filbeskrivelsen nedenfor og prøv igen.',
'savefile' => 'Gem fil',
'filehist-comment' => 'Kommentar',
'filehist-missing' => 'Fil mangler',
'imagelinks' => 'Filanvendelse',
-'linkstoimage' => '{{Plural:$1|Den følgende side|De følgende $1 sider}} henviser til denne fil:',
+'linkstoimage' => '{{PLURAL:$1|Den følgende side|De følgende $1 sider}} henviser til denne fil:',
'linkstoimage-more' => 'Flere end $1 {{PLURAL:$1|side|sider}} henviser til denne fil.
Den følgende liste viser kun {{PLURAL:$1|den første henvisning|de $1 første henvisninger}}.
En [[Special:WhatLinksHere/$2|komplet liste]] er tilgængelig.',
'brokenredirects' => 'Defekte omdirigeringer',
'brokenredirectstext' => 'Følgende omdirigeringer peger på en side der ikke eksisterer:',
-'brokenredirects-edit' => 'rediger',
+'brokenredirects-edit' => 'redigér',
'brokenredirects-delete' => 'slet',
'withoutinterwiki' => 'Sider uden henvisninger til andre sprog',
'deadendpages' => 'Blindgydesider',
'deadendpagestext' => 'De følgende sider henviser ikke til andre sider i denne wiki.',
'protectedpages' => 'Skrivebeskyttede sider',
-'protectedpages-indef' => 'Kun beskyttelser uden udløbadato',
+'protectedpages-indef' => 'Kun beskyttelser på ubestemt tid',
'protectedpages-cascade' => 'Kun nedarvende beskyttelser',
+'protectedpages-noredirect' => 'Skjul omdirigeringer',
'protectedpagesempty' => 'I øjeblikket er ingen sider beskyttet på denne måde.',
'protectedtitles' => 'Beskyttede sidenavne',
'protectedtitlesempty' => 'Der er ingen sidetitler der er beskyttet med disse parametre.',
'watchmethod-list' => 'Tjekker seneste ændringer for sider i din overvågningsliste',
'watchlistcontains' => 'Din overvågningsliste indeholder $1 {{PLURAL:$1|side|sider}}.',
'iteminvalidname' => "Problem med '$1', ugyldigt navn...",
-'wlnote' => "Nedenfor ses {{PLURAL:$1|den seneste ændring|de seneste '''$1''' ændringer}} i {{PLURAL:$2|den sidste time|'''de sidste $2 timer}}''' op til den $3 kl. $4.",
'wlshowlast' => 'Vis de seneste $1 timer $2 dage $3',
'watchlist-options' => 'Indstillinger for overvågningslisten',
'delete-edit-reasonlist' => 'Rediger sletningsårsager',
'delete-toobig' => 'Denne side har en stor historik, over {{PLURAL:$1|en version|$1 versioner}}. Sletning af sådanne sider er begrænset, for at forhindre utilsigtet forstyrrelse af {{SITENAME}}.',
'delete-warning-toobig' => 'Denne side har en stor historik, over {{PLURAL:$1|en version|$1 versioner}} versioner, slettes den kan det forstyrre driften af {{SITENAME}}, gå forsigtigt frem.',
+'deleting-backlinks-warning' => "'''Advarsel:''' Andre sider linker til den side, du er ved at slette.",
# Rollback
'rollback' => 'Fjern redigeringer',
'protect_expiry_old' => 'Udløbstiden ligger i fortiden.',
'protect-unchain-permissions' => 'Lås yderligere beskyttelsesindstillinger op',
'protect-text' => "Her kan beskyttelsesstatus for siden '''$1''' ses og ændres.",
-'protect-locked-blocked' => "Du kan ikke ændre sidens status, da din brugerkonto er spærret. Her er de aktuelle beskyttelsesindstillinger for siden '''„$1“:'''",
+'protect-locked-blocked' => "Du kan ikke ændre sidens status, da din brugerkonto er blokeret.
+Her er de aktuelle beskyttelsesindstillinger for siden '''$1''':",
'protect-locked-dblock' => "Databasen er spærret, sidebeskyttelsen kan derfor ikke ændres. her er de aktuelle beskyttelsesindstillinger for siden '''„$1“:'''",
'protect-locked-access' => "Den brugerkonto har ikke de nødvendige rettigheder til at ændre sidebeskyttelsen. Her er de aktuelle beskyttelsesindstillinger for siden '''„$1“:'''",
'protect-cascadeon' => 'Denne side er del af en nedarvet skrivebeskyttelse. Wen er indeholdt i nedenstående {{PLURAL:$1|side|sider}}, som er skrivebeskyttet med tilvalg af "nedarvende sidebeskyttelse" Sidebeskyttelsen kan ændres for denne side, det påvirker dog ikke kaskadespærringen:',
'pagesize' => '(bytes)',
# Restrictions (nouns)
-'restriction-edit' => 'Redigér',
-'restriction-move' => 'flytte',
+'restriction-edit' => 'Redigering',
+'restriction-move' => 'Flytning',
'restriction-create' => 'oprette',
-'restriction-upload' => 'oplægge',
+'restriction-upload' => 'Oplægning',
# Restriction levels
'restriction-level-sysop' => 'fuldt beskyttet',
'undeleteinvert' => 'Omvend valget af versioner',
'undeletecomment' => 'Begrundelse:',
'undeletedrevisions' => '$1 {{PLURAL:$1|version|versioner}} gendannet',
-'undeletedrevisions-files' => '$1 {{plural:$1|version|versioner}} og $2 {{plural:$2|fil|filer}} gendannet',
-'undeletedfiles' => '$1 {{plural:$1|fil|filer}} gendannet',
+'undeletedrevisions-files' => '$1 {{PLURAL:$1|version|versioner}} og $2 {{PLURAL:$2|fil|filer}} gendannet',
+'undeletedfiles' => '$1 {{PLURAL:$1|fil|filer}} gendannet',
'cannotundelete' => 'Gendannelse mislykkedes:
$1',
'undeletedpage' => "'''$1''' blev gendannet.
'blocklist-target' => 'Mål',
'blocklist-expiry' => 'Udløber',
'blocklist-by' => 'Blokerende administrator',
-'blocklist-params' => 'Block parametre',
+'blocklist-params' => 'Parametre for blokeringen',
'blocklist-reason' => 'Årsag',
'ipblocklist-submit' => 'Søg',
'ipblocklist-localblock' => 'Lokal blokering',
'infiniteblock' => 'udløber ikke',
'expiringblock' => 'udløber $1 $2',
'anononlyblock' => 'kun anonyme',
-'noautoblockblock' => 'Autoblok deaktiveret',
-'createaccountblock' => 'Oprettelse af brugerkonti spærret',
+'noautoblockblock' => 'automatisk blokering slået fra',
+'createaccountblock' => 'oprettelse af konto deaktiveret',
'emailblock' => 'e-mail blokeret',
'blocklist-nousertalk' => 'kan ikke redigere egen diskussionsside',
'ipblocklist-empty' => 'Blokeringslisten er tom.',
'autoblocker' => 'Du er automatisk blokeret, fordi du deler IP-adresse med "[[User:$1|$1]]".
Begrundelse: "$2".',
'blocklogpage' => 'Blokeringslog',
-'blocklog-showlog' => 'Denne bruger er tidligere blevet blokeret.
+'blocklog-showlog' => 'Denne bruger har tidligere været blokeret.
Blokeringsloggen vises nedenfor som reference:',
'blocklog-showsuppresslog' => 'Denne bruger har tidligere været blokeret og skjult.
Skjulningsloggen vises nedenfor som reference:',
-'blocklogentry' => 'blokerede [[$1]] med en varighed på $2 $3',
-'reblock-logentry' => 'ændrede blokeringsindstillinger for [[$1]] med en varighed $2 $3',
+'blocklogentry' => 'blokerede [[$1]] med $2 som udløbstid $3',
+'reblock-logentry' => 'ændrede blokeringsindstillinger for [[$1]] med $2 som udløbstid $3',
'blocklogtext' => 'Dette er en liste med blokerede brugere og ophævede blokeringer af brugere.
Automatisk blokerede IP-adresser er ikke anført her.
Se [[Special:BlockList|blokeringslisten]] for den nuværende liste med aktuelle blokeringer.',
'unblocklogentry' => 'ophævede blokering af "$1"',
'block-log-flags-anononly' => 'kun anonyme',
-'block-log-flags-nocreate' => 'Oprettelse af brugerkonti blokeret',
-'block-log-flags-noautoblock' => 'Autoblok deaktiveret',
+'block-log-flags-nocreate' => 'oprettelse af konto deaktiveret',
+'block-log-flags-noautoblock' => 'automatisk blokering slået fra',
'block-log-flags-noemail' => 'e-mail blokeret',
'block-log-flags-nousertalk' => 'kan ikke redigere egen diskussionsside',
-'block-log-flags-angry-autoblock' => 'udvidet automatisk blokering slået tilenhanced autoblock enabled',
+'block-log-flags-angry-autoblock' => 'udvidet automatisk blokering slået til',
'block-log-flags-hiddenname' => 'brugernavnet er skjult',
'range_block_disabled' => 'Sysop-muligheden for at oprette blokeringsklasser er slået fra.',
'ipb_expiry_invalid' => 'Udløbstiden er ugyldig.',
'movepage-moved' => 'Siden \'\'\'"$1" er flyttet til "$2"\'\'\'',
'movepage-moved-redirect' => 'En omdirigering er oprettet.',
'movepage-moved-noredirect' => 'Der oprettedes ikke en omdirigering.',
-'articleexists' => 'En side med det navn eksisterer allerede, eller det
+'articleexists' => 'En side med dette navn eksisterer allerede, eller det
navn du har valgt er ikke gyldigt. Vælg et andet navn.',
'cantmove-titleprotected' => 'Du kan ikke omdøbe en side til dette navn. Det nye navn er beskyttet mod oprettelse.',
'movetalk' => 'Flyt også "diskussionssiden", hvis den eksisterer.',
'djvu_no_xml' => 'XML-data kan ikke hentes til DjVu-filen',
'thumbnail-temp-create' => 'Kunne ikke oprette midlertidig miniaturefil',
'thumbnail-dest-create' => 'Kunne ikke gemme miniaturebillede til destinationen',
-'thumbnail_invalid_params' => 'Ugyldige thumbnail-parametre',
+'thumbnail_invalid_params' => 'Ugyldige parametre for miniaturebillede',
'thumbnail_dest_directory' => 'Kataloget kan ikke oprettes.',
'thumbnail_image-type' => 'Billedtypen understøttes ikke',
'thumbnail_gd-library' => 'Ufuldstændig konfiguration af GD-biblioteket: funktionen $1 mangler',
'tooltip-pt-watchlist' => 'Listen over sider du overvåger for ændringer.',
'tooltip-pt-mycontris' => 'Liste over dine bidrag',
'tooltip-pt-login' => 'Du opfordres til at logge på, men det er ikke obligatorisk.',
-'tooltip-pt-anonlogin' => 'Du opfordres til at logge på, men det er ikke obligatorisk',
'tooltip-pt-logout' => 'Log af',
'tooltip-ca-talk' => 'Diskussion om indholdet på siden',
'tooltip-ca-edit' => 'Du kan redigere denne side. Brug venligst forhåndsvisning før du gemmer.',
# Video information, used by Language::formatTimePeriod() to format lengths in the above messages
'hours-abbrev' => '$1t',
-'seconds' => '{{PLURAL: $1|$1 sekund|$1 sekunder}}',
-'minutes' => '{{PLURAL: $1|$1 minut|$1 minutter}}',
-'hours' => '{{PLURAL: $1|$1 time|$1 timer}}',
-'days' => '{{PLURAL: $1|$1 dag|$1 dage}}',
+'seconds' => '{{PLURAL:$1|$1 sekund|$1 sekunder}}',
+'minutes' => '{{PLURAL:$1|$1 minut|$1 minutter}}',
+'hours' => '{{PLURAL:$1|$1 time|$1 timer}}',
+'days' => '{{PLURAL:$1|$1 dag|$1 dage}}',
'weeks' => '{{PLURAL:$1|$1 uge|$1 uger}}',
'months' => '{{PLURAL:$1|$1 måned|$1 måneder}}',
'years' => '{{PLURAL:$1|$1 år}}',
# Auto-summaries
'autosumm-blank' => 'Tømmer siden for indhold',
-'autosumm-replace' => "Sidens indhold blev erstattet med: '$1'",
+'autosumm-replace' => 'Erstatter sidens indhold med "$1"',
'autoredircomment' => 'Omdirigering til [[$1]] oprettet',
-'autosumm-new' => "Oprettede siden med '$1'",
+'autosumm-new' => 'Oprettede siden med "$1"',
# Live preview
'livepreview-loading' => 'Indlæser …',
'version' => 'Information om MediaWiki',
'version-extensions' => 'Installerede udvidelser',
'version-specialpages' => 'Specialsider',
-'version-parserhooks' => 'Oversætter-funktioner',
+'version-parserhooks' => 'Parserfunktioner',
'version-variables' => 'Variabler',
'version-antispam' => 'Spamforebyggelse',
'version-skins' => 'Udseender',
'version-mediahandlers' => 'Specialhåndtering af mediefiler',
'version-hooks' => 'Funktionstilføjelser',
'version-parser-extensiontags' => 'Tilføjede tags',
-'version-parser-function-hooks' => 'Oversætter-funktioner',
+'version-parser-function-hooks' => 'Parserfunktioner',
'version-hook-name' => 'Navn',
'version-hook-subscribedby' => 'Brugt af',
'version-version' => '(Version $1)',
-'version-license' => 'Licens',
+'version-license' => 'MediaWiki Licens',
+'version-ext-license' => 'Licens',
+'version-ext-colheader-name' => 'Udvidelse',
+'version-ext-colheader-license' => 'Licens',
+'version-ext-colheader-description' => 'Beskrivelse',
+'version-ext-colheader-credits' => 'Forfattere',
+'version-license-title' => 'Licens for $1',
+'version-license-not-found' => 'Ingen detaljerede licensoplysninger blev fundet for denne udvidelse.',
'version-poweredby-credits' => "Denne wiki er drevet af '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
'version-poweredby-others' => 'andre',
'version-poweredby-translators' => 'translatewiki.net oversættere',
* @author Purodha
* @author Raimond Spekking (Raymond) <raimond.spekking@gmail.com> since January 2007
* @author Red Baron
+ * @author Reditec
* @author Reedy
* @author Remember the dot
* @author Revolus
$messages = array(
# User preference toggles
'tog-underline' => 'Links unterstreichen:',
-'tog-justify' => 'Text als Blocksatz',
'tog-hideminor' => 'Kleine Änderungen in den „Letzten Änderungen“ ausblenden',
'tog-hidepatrolled' => 'Kontrollierte Änderungen in den „Letzten Änderungen“ ausblenden',
'tog-newpageshidepatrolled' => 'Kontrollierte Seiten bei den „Neuen Seiten“ ausblenden',
'tog-numberheadings' => 'Überschriften automatisch nummerieren',
'tog-showtoolbar' => 'Bearbeiten-Werkzeugleiste anzeigen',
'tog-editondblclick' => 'Seiten mit Doppelklick bearbeiten',
-'tog-editsection' => 'Links zum Bearbeiten einzelner Abschnitte anzeigen',
'tog-editsectiononrightclick' => 'Einzelne Abschnitte per Rechtsklick bearbeiten',
-'tog-showtoc' => 'Anzeige eines Inhaltsverzeichnisses auf Seiten mit mehr als drei Überschriften',
'tog-rememberpassword' => 'Mit diesem Browser dauerhaft angemeldet bleiben (maximal $1 {{PLURAL:$1|Tag|Tage}})',
'tog-watchcreations' => 'Selbst erstellte Seiten und hochgeladene Dateien automatisch beobachten',
'tog-watchdefault' => 'Selbst geänderte Seiten und Dateien automatisch beobachten',
'searcharticle' => 'Seite',
'history' => 'Versionen',
'history_short' => 'Versionsgeschichte',
-'updatedmarker' => 'Änderung seit meinem letzten Besuch',
+'updatedmarker' => 'Änderung seit deinem letzten Besuch',
'printableversion' => 'Druckversion',
'permalink' => 'Permanenter Link',
'print' => 'Drucken',
'helplogin-url' => 'Help:Anmelden',
'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Hilfe beim Anmelden]]',
'userlogin-loggedin' => 'Du bist bereits als {{GENDER:$1|$1}} angemeldet.
-Benutze das unten stehende Formular, um sich unter einem anderen Benutzer anzumelden.',
+Benutze das unten stehende Formular, um dich unter einem anderen Benutzernamen anzumelden.',
'userlogin-createanother' => 'Ein weiteres Benutzerkonto erstellen',
'createacct-join' => 'Gib unten deine Informationen ein.',
'createacct-another-join' => 'Gib unten die Informationen des neuen Benutzerkontos ein.',
'retypenew' => 'Neues Passwort (nochmal):',
'resetpass_submit' => 'Passwort übermitteln und anmelden',
'changepassword-success' => 'Dein Passwort wurde erfolgreich geändert!',
+'changepassword-throttled' => 'Du hast kürzlich zu viele Anmeldeversuche unternommen.
+Bitte warte $1, bevor du es erneut versuchst.',
'resetpass_forbidden' => 'Das Passwort kann nicht geändert werden.',
'resetpass-no-info' => 'Du musst dich anmelden, um auf diese Seite direkt zuzugreifen.',
'resetpass-submit-loggedin' => 'Passwort ändern',
'changeemail-password' => 'Dein {{SITENAME}}-Passwort:',
'changeemail-submit' => 'E-Mail-Adresse ändern',
'changeemail-cancel' => 'Abbrechen',
+'changeemail-throttled' => 'Du hast zu viele Anmeldeversuche unternommen.
+Bitte warte $1, bevor du es erneut versuchst.',
# Special:ResetTokens
'resettokens' => 'Tokens zurücksetzen',
'invalid-content-data' => 'Ungültige Inhaltsdaten',
'content-not-allowed-here' => 'Der Inhalt „$1“ ist auf der Seite [[$2]] nicht erlaubt',
'editwarning-warning' => 'Das Verlassen dieser Seite kann dazu führen, dass deine Änderungen verloren gehen.
-Wenn du angemeldet bist, kannst du das Anzeigen dieser Warnung im Bereich „Bearbeiten“ deiner Einstellungen abschalten.',
+Wenn du angemeldet bist, kannst du das Anzeigen dieser Warnung im Bereich „{{int:prefs-editing}}“ deiner Einstellungen abschalten.',
+'editpage-notsupportedcontentformat-title' => 'Das Inhaltsformat wird nicht unterstützt',
+'editpage-notsupportedcontentformat-text' => 'Das Inhaltsformat $1 wird vom Inhaltsmodell $2 nicht unterstützt.',
# Content models
'content-model-wikitext' => 'Wikitext',
'showhideselectedversions' => 'Gewählte Versionen zeigen/verstecken',
'editundo' => 'rückgängig machen',
'diff-empty' => '(kein Unterschied)',
-'diff-multi' => '({{PLURAL:$1|Eine dazwischenliegende Version|$1 dazwischenliegende Versionen}} von {{PLURAL:$2|einem Benutzer|$2 Benutzern}} {{PLURAL:$1|wird|werden}} nicht angezeigt)',
+'diff-multi-sameuser' => '({{PLURAL:$1|Eine dazwischenliegende Version|$1 dazwischenliegende Versionen}} des gleichen Benutzers werden nicht angezeigt)',
+'diff-multi-otherusers' => '({{PLURAL:$1|Eine dazwischenliegende Version|$1 dazwischenliegende Versionen}} von {{PLURAL:$2|einem anderen Benutzer|$2 Benutzern}} werden nicht angezeigt)',
'diff-multi-manyusers' => '({{PLURAL:$1|$1 dazwischenliegende Versionen}} von mehr als {{PLURAL:$2|$2 Benutzern}}, die nicht angezeigt werden)',
'difference-missing-revision' => '{{PLURAL:$2|Eine Version|$2 Versionen}} dieser Unterschiedsanzeige ($1) {{PLURAL:$2|wurde|wurden}} nicht gefunden.
'shown-title' => 'Zeige $1 {{PLURAL:$1|Ergebnis|Ergebnisse}} pro Seite',
'viewprevnext' => 'Zeige ($1 {{int:pipe-separator}} $2) ($3)',
'searchmenu-exists' => "'''Es gibt eine Seite, die den Namen „[[:$1]]“ hat.'''",
-'searchmenu-new' => "'''Erstelle die Seite „[[:$1]]“ in diesem Wiki.'''",
+'searchmenu-new' => '<strong>Erstelle die Seite „[[:$1]]“ in diesem Wiki.</strong> {{PLURAL:$2|0=|Siehe auch die mit deiner Suche gefundene Seite.|Siehe auch die gefundenen Suchergebnisse.}}',
'searchprofile-articles' => 'Inhaltsseiten',
'searchprofile-project' => 'Hilfe- und Projektseiten',
'searchprofile-images' => 'Multimedia',
'search-result-score' => 'Relevanz: $1 %',
'search-redirect' => '(Weiterleitung von „$1“)',
'search-section' => '(Abschnitt $1)',
+'search-file-match' => '(treffende Dateiinhalte)',
'search-suggest' => 'Meintest du „$1“?',
'search-interwiki-caption' => 'Schwesterprojekte',
'search-interwiki-default' => '$1 Ergebnisse:',
'rows' => 'Zeilen:',
'columns' => 'Spalten:',
'searchresultshead' => 'Suche',
-'resultsperpage' => 'Treffer pro Seite:',
'stub-threshold' => 'Linkformatierung <a href="#" class="stub">kleiner Seiten</a> (in Bytes):',
'stub-threshold-disabled' => 'Deaktiviert',
'recentchangesdays' => 'Anzahl der standardmäßig einbezogenen Tage:',
[[File:$1|thumb|center|$1]]',
'file-exists-duplicate' => 'Diese Datei ist ein Duplikat der folgenden {{PLURAL:$1|Datei|$1 Dateien}}:',
'file-deleted-duplicate' => 'Eine mit dieser identische Datei ([[:$1]]) wurde früher gelöscht. Sieh das Lösch-Logbuch ein, bevor du sie hochlädst.',
+'file-deleted-duplicate-notitle' => 'Eine identische Datei wurde kürzlich gelöscht und der Titel wurde unterdrückt.
+Du solltest jemanden fragen, der die Möglichkeit hat, die unterdrückten Dateidaten anzusehen, um die Situation vor dem erneuten Hochladen zu überprüfen.',
'uploadwarning' => 'Warnung',
'uploadwarning-text' => 'Bitte ändere unten die Dateibeschreibung und versuche es erneut.',
'savefile' => 'Datei speichern',
'protectedpages' => 'Geschützte Seiten',
'protectedpages-indef' => 'Nur unbeschränkt geschützte Seiten zeigen',
'protectedpages-cascade' => 'Nur Seiten mit Kaskadenschutz',
+'protectedpages-noredirect' => 'Weiterleitungen ausblenden',
'protectedpagesempty' => 'Aktuell sind keine Seiten mit diesen Parametern geschützt.',
'protectedtitles' => 'Geschützte Seitennamen',
'protectedtitlesempty' => 'Zurzeit sind mit den angegebenen Parametern keine Seiten zur Neuerstellung gesperrt.',
'unusedcategoriestext' => 'Diese Spezialseite zeigt alle Kategorien, die leer sind, also selbst keine Kategorien oder Seiten enthalten.',
'notargettitle' => 'Keine Seite angegeben',
'notargettext' => 'Du hast nicht angegeben, auf welche Seite diese Funktion angewendet werden soll.',
-'nopagetitle' => 'Quellseite nicht vorhanden',
-'nopagetext' => 'Die zu verschiebende Seite ist nicht vorhanden.',
+'nopagetitle' => 'Seite nicht vorhanden',
+'nopagetext' => 'Die angegebene Seite ist nicht vorhanden.',
'pager-newer-n' => '{{PLURAL:$1|nächster|nächste $1}}',
'pager-older-n' => '{{PLURAL:$1|vorheriger|vorherige $1}}',
'suppress' => 'Oversight',
'watchmethod-list' => 'Überprüfen der Beobachtungsliste nach letzten Bearbeitungen',
'watchlistcontains' => 'Deine Beobachtungsliste enthält $1 {{PLURAL:$1|Seite|Seiten}}.',
'iteminvalidname' => 'Problem mit dem Eintrag „$1“, ungültiger Name.',
-'wlnote' => "Es {{PLURAL:$1|folgt die letzte Änderung|folgen die letzten '''$1''' Änderungen}} der letzten {{PLURAL:$2|Stunde|'''$2''' Stunden}}. Stand: $3, $4 Uhr.",
+'wlnote2' => 'Es folgen die Änderungen der letzten {{PLURAL:$1|Stunde|<strong>$1</strong> Stunden}}. Stand: $2, $3.',
'wlshowlast' => 'Zeige die Änderungen der letzten $1 Stunden, $2 Tage oder $3.',
'watchlist-options' => 'Anzeigeoptionen',
'delete-edit-reasonlist' => 'Löschgründe bearbeiten',
'delete-toobig' => 'Diese Seite hat mit mehr als $1 {{PLURAL:$1|Version|Versionen}} eine sehr lange Versionsgeschichte. Das Löschen solcher Seiten wurde eingeschränkt, um eine versehentliche Überlastung der Server zu verhindern.',
'delete-warning-toobig' => 'Diese Seite hat mit mehr als $1 {{PLURAL:$1|Version|Versionen}} eine sehr lange Versionsgeschichte. Das Löschen kann zu Störungen im Datenbankbetrieb führen.',
+'deleting-backlinks-warning' => "'''Warnung:''' Es verweisen noch andere Seiten auf die zu löschende Seite oder diese Seite ist noch woanders eingebunden.",
# Rollback
'rollback' => 'Zurücksetzen der Änderungen',
Zur Aufhebung der Sperre siehe die [[Special:BlockList|Liste aller aktiven Sperren]].',
'ipb-blockingself' => 'Du bist gerade dabei, dich selbst zu sperren! Möchtest du das wirklich tun?',
'ipb-confirmhideuser' => 'Du bist gerade dabei, einen Benutzer im Modus „Benutzer verstecken“ zu sperren. Dies führt dazu, dass der Benutzername in allen Listen und Logbüchern unterdrückt wird. Möchtest du das wirklich tun?',
+'ipb-confirmaction' => 'Wenn du dir sicher bist, dass du dies wirklich tun möchtest, überprüfe bitte unten das Feld „{{int:ipb-confirm}}“.',
'ipb-edit-dropdown' => 'Sperrgründe bearbeiten',
'ipb-unblock-addr' => '„$1“ freigeben',
'ipb-unblock' => 'IP-Adresse/Benutzer freigeben',
'range_block_disabled' => 'Die Möglichkeit, ganze Adressräume zu sperren, ist nicht aktiviert.',
'ipb_expiry_invalid' => 'Die eingegebene Dauer ist ungültig.',
'ipb_expiry_temp' => 'Benutzernamens-Sperren mit der Verstecken-Option müssen permanent sein.',
-'ipb_hide_invalid' => 'Dieses Konto kann nicht unterdrückt werden, da es zu viele Bearbeitungen aufweist.',
+'ipb_hide_invalid' => 'Dieses Konto kann nicht unterdrückt werden, da es mehr als {{PLURAL:$1|eine Bearbeitung|$1 Bearbeitungen}} aufweist.',
'ipb_already_blocked' => '„$1“ ist bereits gesperrt',
'ipb-needreblock' => '„$1“ ist bereits gesperrt. Möchtest du die Sperrparameter ändern?',
'ipb-otherblocks-header' => 'Andere {{PLURAL:$1|Sperre|Sperren}}',
'allmessages-prefix' => 'Präfixfilter:',
'allmessages-language' => 'Sprache:',
'allmessages-filter-submit' => 'Los',
+'allmessages-filter-translate' => 'Übersetzen',
# Thumbnails
'thumbnail-more' => 'vergrößern',
'importuploaderrortemp' => 'Das Hochladen der Importdatei ist fehlgeschlagen. Ein temporäres Verzeichnis fehlt.',
'import-parse-failure' => 'Fehler beim XML-Import:',
'import-noarticle' => 'Es wurde keine zu importierende Seite angegeben!',
-'import-nonewrevisions' => 'Alle Versionen wurden bereits zu einem früheren Zeitpunkt importiert.',
+'import-nonewrevisions' => 'Es wurden keine Versionen importiert. Entweder waren alle bereits vorhanden oder wurden aufgrund von Fehlern übersprungen.',
'xml-error-string' => '$1 Zeile $2, Spalte $3, (Byte $4): $5',
'import-upload' => 'XML-Dateien importieren',
'import-token-mismatch' => 'Verlust der Sessiondaten. Bitte versuche es erneut.',
'import-error-special' => 'Die Seite „$1“ wurde nicht importiert, da sie zu einem besonderen Namensraum gehört, in dem keine Seiten möglich sind.',
'import-error-invalid' => 'Seite „$1“ wurde nicht importiert, da deren Name ungültig ist.',
'import-error-unserialize' => 'Die Version $2 der Seite „$1“ konnte nicht deserialisiert werden. Die Version wurde zur Verwendung des Inhaltsmodells $3 gemeldet, das als $4 serialisiert ist.',
+'import-error-bad-location' => 'Die Version $2, die das Inhaltsmodell $3 verwendet, kann auf diesem Wiki nicht unter „$1“ gespeichert werden, da dieses Modell auf dieser Seite nicht unterstützt wird.',
'import-options-wrong' => 'Falsche {{PLURAL:$2|Option|Optionen}}: <nowiki>$1</nowiki>',
'import-rootpage-invalid' => 'Der angegebene Stammseitenname ist ungültig.',
'import-rootpage-nosubpage' => 'Im Namensraum „$1“ der Stammseite sind keine Unterseiten erlaubt.',
'tooltip-pt-watchlist' => 'Liste der beobachteten Seiten',
'tooltip-pt-mycontris' => 'Liste eigener Beiträge',
'tooltip-pt-login' => 'Sich anzumelden wird zwar gerne gesehen, ist aber keine Pflicht.',
-'tooltip-pt-anonlogin' => 'Sich anzumelden wird zwar gerne gesehen, ist aber keine Pflicht.',
'tooltip-pt-logout' => 'Abmelden',
'tooltip-ca-talk' => 'Diskussion zum Seiteninhalt',
'tooltip-ca-edit' => 'Seite bearbeiten. Bitte vor dem Speichern die Vorschaufunktion benutzen.',
'pageinfo-article-id' => 'Seitenkennnummer',
'pageinfo-language' => 'Seiteninhaltssprache',
'pageinfo-content-model' => 'Seiteninhaltsmodell',
-'pageinfo-robot-policy' => 'Indexierung durch Robots',
+'pageinfo-robot-policy' => 'Indizierung durch Suchmaschinen',
'pageinfo-robot-index' => 'Erlaubt',
'pageinfo-robot-noindex' => 'Nicht erlaubt',
'pageinfo-views' => 'Anzahl der Seitenaufrufe',
'exif-gpslongitude-w' => 'westl. Länge',
# Pseudotags used for GPSAltitudeRef
-'exif-gpsaltitude-above-sealevel' => '$1 {{plural:$1|Meter}} über dem Meeresspiegel',
-'exif-gpsaltitude-below-sealevel' => '$1 {{plural:$1|Meter}} unter dem Meeresspiegel',
+'exif-gpsaltitude-above-sealevel' => '$1 {{PLURAL:$1|Meter}} über dem Meeresspiegel',
+'exif-gpsaltitude-below-sealevel' => '$1 {{PLURAL:$1|Meter}} unter dem Meeresspiegel',
'exif-gpsstatus-a' => 'Messung läuft',
'exif-gpsstatus-v' => 'Interoperabilität von Messungen',
'version-parser-function-hooks' => "Parsererweiterungen ''(Funktionen)''",
'version-hook-name' => 'Schnittstellenname',
'version-hook-subscribedby' => 'Aufruf von',
-'version-version' => '(Version $1)',
+'version-version' => '($1)',
'version-svn-revision' => '(Version $2)',
-'version-license' => 'Lizenz',
+'version-license' => 'MediaWiki-Lizenz',
+'version-ext-license' => 'Lizenz',
+'version-ext-colheader-name' => 'Bezeichnung',
+'version-ext-colheader-version' => 'Version',
+'version-ext-colheader-license' => 'Lizenz',
+'version-ext-colheader-description' => 'Beschreibung',
+'version-ext-colheader-credits' => 'Autoren',
+'version-license-title' => 'Lizenz für $1',
+'version-license-not-found' => 'Es wurden keine detaillierten Lizenzinformationen für diese Erweiterung gefunden.',
+'version-credits-title' => 'Danksagungen für $1',
+'version-credits-not-found' => 'Es wurden keine detaillierten Danksagungsinformationen für diese Erweiterung gefunden.',
'version-poweredby-credits' => "Diese Website nutzt '''[https://www.mediawiki.org/wiki/MediaWiki/de MediaWiki]''', Copyright © 2001–$1 $2.",
'version-poweredby-others' => 'andere',
'version-poweredby-translators' => 'Übersetzer von translatewiki.net',
# Special:Redirect
'redirect' => 'Weiterleitung auf Benutzerseite, Seite, Seitenversion oder Datei',
'redirect-legend' => 'Weiterleitung auf eine Benutzerseite, Seite, Seitenversion oder Datei',
-'redirect-summary' => 'Diese Spezialseite leitet auf eine Benutzerseite (numerische Benutzerkennung angegeben), Seite (Seitenkennung angeben), Seitenversion (Versionskennung angegeben) oder Datei (Dateiname angegeben) weiter. Benutzung: [[{{#Special:Redirect}}/user/101]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]] oder [[{{#Special:Redirect}}/file/Example.jpg]].',
+'redirect-summary' => 'Diese Spezialseite leitet auf eine Benutzerseite (numerische Benutzerkennung angegeben), Seite (Seitenkennung angegeben), Seitenversion (Versionskennung angegeben) oder Datei (Dateiname angegeben) weiter. Benutzung: [[{{#Special:Redirect}}/user/101]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]] oder [[{{#Special:Redirect}}/file/Example.jpg]].',
'redirect-submit' => 'Los',
'redirect-lookup' => 'Suchen:',
'redirect-value' => 'Kennung oder Dateiname:',
'api-error-overwrite' => 'Das Überschreiben einer vorhandenen Datei ist nicht erlaubt.',
'api-error-stashfailed' => 'Interner Fehler: Der Server konnte keine temporäre Datei speichern.',
'api-error-publishfailed' => 'Interner Fehler: Der Server konnte die temporäre Datei nicht veröffentlichen.',
+'api-error-stasherror' => 'Beim Hochladen der Datei gab es einen Fehler.',
'api-error-timeout' => 'Der Server hat nicht innerhalb der erwarteten Zeit reagiert.',
'api-error-unclassified' => 'Ein unbekannter Fehler ist aufgetreten.',
'api-error-unknown-code' => 'Unbekannter Fehler: „$1“',
'expand_templates_generate_rawhtml' => 'Rohes HTML anzeigen',
'expand_templates_preview' => 'Vorschau',
+# Unknown messages
+'createaccount-hook-aborted' => '$1',
+'uploadinvalidxml' => 'Das XML in der hochgeladenen Datei konnte nicht geparst werden.',
);
$messages = array(
# User preference toggles
'tog-underline' => 'Bınê gırey de xete bance:',
-'tog-justify' => 'Paragrafan eyar ke',
'tog-hideminor' => 'Vurnayışanê şenıkan pela vurnayışanê peyênan de bınımne',
'tog-hidepatrolled' => 'Vurnayışanê qontrolkerdeyan pela vurnayışê peyêni de bınımne',
'tog-newpageshidepatrolled' => 'Pelanê qontrolkerdeyan lista pelanê neweyan de bınımne',
'tog-extendwatchlist' => 'Lista seyrkerdışi hera bıke ke vurnayışi pêro basê, tenya tewr peyêni nê',
-'tog-usenewrc' => 'Pera vurnayışanê grube de vurnayışê peyêni u lista seyrkerdışi (JavaScript lazımo)',
+'tog-usenewrc' => 'Vurnayışê ke pela vurnayışanê peyênan û lista seyrkerdışi derê inan grube ke.',
'tog-numberheadings' => 'Sernuşteyan be xo numre cı şane',
'tog-showtoolbar' => 'Toolbar virnayisi bivin (JavaScript lazımo)',
'tog-editondblclick' => 'Per virnayisi di dilet klik bike (JavaScript lazımo)',
-'tog-editsection' => 'Vurnayışê qısımi be gıreyanê [bıvurne] ra feal ke',
'tog-editsectiononrightclick' => 'Qısıman be tıknayışê serrêze ra ebe gocega raşte bıvurne (JavaScript lazımo)',
-'tog-showtoc' => 'Tabloyê tedeesteyan bımocne (de pelanê be hirê sernuşteyan ra vêşêri de)',
'tog-rememberpassword' => 'Parola mı nê cıgeyrayoği de bia xo viri (seba tewr zêde $1 {{PLURAL:$1|roce|rocan}}).',
'tog-watchcreations' => 'Pelê ke mı afernayê u dosyeyê ke mı bar kerdê lista mına seyrkerdışi ke',
'tog-watchdefault' => 'Pel u dosyeyê ke mı vurnayê lista mına seyrkerdışi ke',
'tog-minordefault' => "Vurnayışanê xo pêrune ''vurnayışo qıckek'' nışan bıde",
'tog-previewontop' => 'Verqayti pela nuştışi ser de bımocne',
'tog-previewonfirst' => 'Vurnayışo verên de verqayti tım bımocne',
-'tog-enotifwatchlistpages' => 'Yew pele ya zi dosyaya ke lista mına seyrkerdışi de vurnayê mı rê e-poste bırışe',
+'tog-enotifwatchlistpages' => 'Jû pele ya ki dosyawa ke lista mına seyrkerdışi de vurnae, mı rê e-mail bırışe',
'tog-enotifusertalkpages' => 'Pela mına werênayışi ke vurnayê mı rê e-poste bırışe',
-'tog-enotifminoredits' => 'Vurnayışanê qıckekanê pelan u dosyeyan de zi mı rê e-poste bırışe',
+'tog-enotifminoredits' => 'Pelan de vurnayışanê qıckekan u dosyan de ki mı rê e-mail bırışe',
'tog-enotifrevealaddr' => 'Adresa e-posteyê mı posteyê xeberan de bımocne',
'tog-shownumberswatching' => 'Amarê karberanê seyrkerdoğan bımocne',
-'tog-oldsig' => 'İmzaya mewcude:',
+'tog-oldsig' => 'İmza mewcude:',
'tog-fancysig' => 'İmza rê mameleyê wikimeqaley bıke (bê gıreyo otomatik)',
-'tog-uselivepreview' => 'Verqayt di weseye karneno (JavaScript lazım o) (Cerbino)',
-'tog-forceeditsummary' => 'Mı ke xulasa kerde cı vira, hay be mı ser de',
+'tog-uselivepreview' => 'Verqayto giyane bıgureyne (cerrebane)',
+'tog-forceeditsummary' => 'Mı ke xulasa veng verdaye, hay a mı ser de',
'tog-watchlisthideown' => 'Vurnayışanê mı lista mına seyrkerdışi de bınımne',
'tog-watchlisthidebots' => 'Lista seyrkerdışi ra vurnayışanê boti bınımne',
'tog-watchlisthideminor' => 'Vurnayışanê qıckekan lista mına seyrkerdışi de bınımne',
'editfont-style' => 'Cayê vurnayışi de terzê nuştışi:',
'editfont-default' => 'Cıgeyrayoğo hesabiyaye',
'editfont-monospace' => 'Terzê nusteyê sabıtcagırewtoği',
-'editfont-sansserif' => 'Babetê Sans-serifi',
-'editfont-serif' => 'Babetê serifi',
+'editfont-sansserif' => 'Fontê Sans-serifi',
+'editfont-serif' => 'Font (çêşıdê nuştey) Serif',
# Dates
-'sunday' => 'Bazar',
-'monday' => 'Berarek',
-'tuesday' => 'Telete',
+'sunday' => 'Kırê (Bazar)',
+'monday' => 'Dışeme',
+'tuesday' => 'Sêşeme',
'wednesday' => 'Çarşeme',
-'thursday' => 'Panşeme',
-'friday' => 'Éne',
-'saturday' => 'Bahdé éni',
-'sun' => 'Baz',
-'mon' => 'Bbz',
-'tue' => 'Tlt',
+'thursday' => 'Pancşeme',
+'friday' => 'Yene',
+'saturday' => 'Şeme',
+'sun' => 'Krê',
+'mon' => 'Dış',
+'tue' => 'Sêş',
'wed' => 'Çrş',
'thu' => 'Pşm',
-'fri' => 'Êne',
-'sat' => 'Bdé',
+'fri' => 'Yen',
+'sat' => 'Şem',
'january' => 'Çele',
-'february' => 'Zemherı',
-'march' => 'Mert',
-'april' => 'Lisan',
-'may_long' => 'Gúlan',
+'february' => 'Sıbate',
+'march' => 'Adar (Mart)',
+'april' => 'Nisane',
+'may_long' => 'Gulane',
'june' => 'Heziran',
-'july' => 'Temuz',
-'august' => 'Ağustos',
+'july' => 'Temuze',
+'august' => 'Tebaxe',
'september' => 'Keşkelun',
-'october' => 'Cetan',
-'november' => 'Kelverdan',
-'december' => 'Gağand',
+'october' => 'Tışrino Verên',
+'november' => 'Tışrino Peyên',
+'december' => 'Kanun',
'january-gen' => 'Çele',
-'february-gen' => 'Zemherı',
-'march-gen' => 'Mert',
-'april-gen' => 'Lisan',
-'may-gen' => 'Gúlan',
-'june-gen' => 'Heziran',
-'july-gen' => 'Temuz',
-'august-gen' => 'Ağustos',
+'february-gen' => 'Sıbate',
+'march-gen' => 'Adar',
+'april-gen' => 'Nisane',
+'may-gen' => 'Gulane',
+'june-gen' => 'Hezirane',
+'july-gen' => 'Temuze',
+'august-gen' => 'Tebaxe',
'september-gen' => 'Keşkelun',
-'october-gen' => 'Cetan',
-'november-gen' => 'Kelverdan',
-'december-gen' => 'Gağand',
+'october-gen' => 'Tışrino Verên',
+'november-gen' => 'Tışrino Peyên',
+'december-gen' => 'Kanun',
'jan' => 'Çel',
'feb' => 'Sbt',
'mar' => 'Adr',
'nov' => 'Tşp',
'dec' => 'Kan',
'january-date' => 'Çele $1',
-'february-date' => 'Şıbate $1',
+'february-date' => 'Sıbate $1',
'march-date' => 'Adar $1',
'april-date' => 'Nisane $1',
'may-date' => 'Gulane $1',
'july-date' => 'Temuze $1',
'august-date' => 'Tebaxe $1',
'september-date' => 'Keşkelun $1',
-'october-date' => 'Cıtan $1',
-'november-date' => 'Qasım $1',
-'december-date' => 'Gağand $1',
+'october-date' => 'Tışrino Verên $1',
+'november-date' => 'Tışrino Peyên $1',
+'december-date' => 'Kanun $1',
# Categories related messages
-'pagecategories' => '{{PLURAL:$1|Kategori|Kategoriy}}',
-'category_header' => 'Perré ke kategori da "$1" de yé',
+'pagecategories' => '{{PLURAL:$1|Kategoriye|Kategoriy}}',
+'category_header' => 'Pelê ke kategoriya "$1" derê',
'subcategories' => 'Kategoriyê bınêni',
'category-media-header' => 'Dosyeyê ke kategoriya "$1" derê',
'category-empty' => "''Ena kategoriye de hewna qet nuştey ya zi medya çıniyê.''",
'broken-file-category' => 'Peleye ke gıreyê dosyeyanê ğeletan muhtewa kenê',
'categoryviewer-pagedlinks' => '($1) ($2)',
-'about' => 'Heqdé cı',
+'about' => 'Heqa cı de',
'article' => 'Wesiqe',
'newwindow' => '(pençereyê newey de beno a)',
-'cancel' => 'Bıterkne',
+'cancel' => 'Bıtexelne',
'moredotdotdot' => 'Vêşi...',
'morenotlisted' => 'Vêşi lista nêbi...',
'mypage' => 'Per',
-'mytalk' => 'Vaten',
+'mytalk' => 'Werênayış',
'anontalk' => 'Pela werênayışê nê IPy',
'navigation' => 'Pusula',
'and' => ' u',
# Cologne Blue skin
'qbfind' => 'Bıvêne',
'qbbrowse' => 'Rovete',
-'qbedit' => 'Timar ke',
+'qbedit' => 'Bıvurne',
'qbpageoptions' => 'Na per',
'qbmyoptions' => 'Peré mı',
'faq' => 'PZP (Persê ke zehf persiyenê)',
# Vector skin
'vector-action-addsection' => 'Mewzu vıraze',
-'vector-action-delete' => 'Bestern',
-'vector-action-move' => 'Ber',
-'vector-action-protect' => 'Star ke',
+'vector-action-delete' => 'Bestere',
+'vector-action-move' => 'Bere',
+'vector-action-protect' => 'Bışevekne',
'vector-action-undelete' => 'Esterıtışi peyser bıgê',
'vector-action-unprotect' => 'Starkerdışi bıvurne',
'vector-simplesearch-preference' => 'Çuweya cı geyreyış de rehater aktiv ke (Tenya vector skin de)',
-'vector-view-create' => 'İycad ke',
-'vector-view-edit' => 'Timar ke',
-'vector-view-history' => 'Verénan bıvin',
-'vector-view-view' => 'Buwan',
-'vector-view-viewsource' => 'Çımi bıvin',
+'vector-view-create' => 'Vıraze',
+'vector-view-edit' => 'Bıvurne',
+'vector-view-history' => 'Verênan bıvêne',
+'vector-view-view' => 'Bıwane',
+'vector-view-viewsource' => 'Çımey bıvêne',
'actions' => 'Hereketi',
'namespaces' => 'Cayê namey',
'variants' => 'Varyanti',
'errorpagetitle' => 'Ğeta',
'returnto' => 'Peyser şo $1.',
'tagline' => '{{SITENAME}} ra',
-'help' => 'Desteg',
+'help' => 'Peşti',
'search' => 'Cı geyre',
'searchbutton' => 'Cı geyre',
'go' => 'Şo',
'searcharticle' => 'Şo',
-'history' => 'Verora perer',
+'history' => 'Tarixê pele',
'history_short' => 'Verén',
'updatedmarker' => 'cıkewtena mına peyêne ra dıme biyo rocane',
-'printableversion' => 'Versiyona Nusnayışi',
+'printableversion' => 'Asayışê çapkerdışi',
'permalink' => 'Gıreyo jûqere',
'print' => 'Nusten ke',
'view' => 'Bıvin',
-'edit' => 'Timar ke',
-'create' => 'İycad ke',
+'edit' => 'Bıvurne',
+'create' => 'Vıraze',
'editthispage' => 'Ena pele bıvurne',
'create-this-page' => 'Na pele bınuse',
'delete' => 'Bestere',
-'deletethispage' => 'Ena perer besternê',
+'deletethispage' => 'Ena pele bestere',
'undeletethispage' => 'Na perer mebesterne',
'undelete_short' => '{{PLURAL:$1|Yew vurnayışi|$1 Vurnayışan}} mestere',
'viewdeleted_short' => '{{PLURAL:$1|Yew vurnayışo esterıte|$1 Vurnayışanê esterıtan}} bımocne',
-'protect' => 'Star ke',
+'protect' => 'Bışevekne',
'protect_change' => 'bıvurne',
'protectthispage' => 'Ena pele bıpawe',
'unprotect' => 'Starkerdışi bıvurne',
'unprotectthispage' => 'Starkerdışe ena peler bıvurne',
-'newpage' => 'Pera newiye',
+'newpage' => 'Pela newiye',
'talkpage' => 'Ena pele sero werêne',
-'talkpagelinktext' => 'Vaten',
+'talkpagelinktext' => 'Werênayış',
'specialpage' => 'Pela xısusiye',
'personaltools' => 'Hacetê şexsiy',
'postcomment' => 'Qısımo newe',
'articlepage' => 'Pela zerreki bıvêne',
-'talk' => 'Vaten',
+'talk' => 'Werênayış',
'views' => 'Asayışi',
'toolbox' => 'Haceti',
'userpage' => 'Pela karberi bıvêne',
'pool-errorunknown' => 'Xeta nêzanıtiye',
# 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).
-'aboutsite' => 'Heqdé {{SITENAME}}',
-'aboutpage' => 'Project:Heqdê cı',
+'aboutsite' => 'Heqa {{SITENAME}} de',
+'aboutpage' => 'Project:Heqa cı de',
'copyright' => 'Zerrekacı $1 bındı not biya.',
'copyrightpage' => '{{ns:project}}:Heqa telifi',
'currentevents' => 'Veng u vac',
'currentevents-url' => 'Project:Rocani hadisey',
-'disclaimers' => 'Reddiya mesuliyeti',
+'disclaimers' => 'Redê mesuliyeti',
'disclaimerpage' => 'Project:Reddê mesuliyetê bıngey',
'edithelp' => 'Peştdariya vurnayışi',
'helppage' => 'Help:Zerrek',
-'mainpage' => 'Pera Seri',
-'mainpage-description' => 'Pera Seri',
+'mainpage' => 'Pela Seri',
+'mainpage-description' => 'Pela seri',
'policy-url' => 'Project:Terzê hereketi',
'portal' => 'Portalê cemaeti',
'portal-url' => 'Project:Portalê cemaeti',
'editold' => 'bıvurne',
'viewsourceold' => 'çımey cı bıvinê',
'editlink' => 'bıvurne',
-'viewsourcelink' => 'Ã\87ımi bıvin',
+'viewsourcelink' => 'çımey bıvêne',
'editsectionhint' => 'Leteyo ke bıvuriyo: $1',
'toc' => 'Sernameyê meselan',
'showtoc' => 'bımocne',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'Wesiqe',
-'nstab-user' => 'Pera Karberi',
+'nstab-user' => 'Pela karberi',
'nstab-media' => 'Pera Medya',
-'nstab-special' => 'Pera bağsi',
+'nstab-special' => 'Pela xase',
'nstab-project' => 'Pera proci',
'nstab-image' => 'Dosya',
'nstab-mediawiki' => 'Mesac',
'nstab-template' => 'Şablon',
'nstab-help' => 'Pela peşti',
-'nstab-category' => 'Kategori',
+'nstab-category' => 'Kategoriye',
# Main script and global functions
'nosuchaction' => 'Fealiyeto wınasi çıniyo',
'perfcached' => 'Datay cı ver hazır biye. No semedê ra nıkayin niyo! tewr zaf {{PLURAL:$1|netice|$1 netice}} debêno de',
'perfcachedts' => 'Cêr de malumatê nımıteyi esti, demdê newe kerdışo peyın: $1. Tewr zaf {{PLURAL:$4|netice|$4 neticey cı}} debyayo de',
'querypage-no-updates' => 'Nıka newe kerdış nêbeno. no datayi ca de newe nêbeni .',
-'viewsource' => 'Çımi bıvin',
+'viewsource' => 'Çımey bıvêne',
'viewsource-title' => "Cı geyrayışê $1'i bıvin",
'actionthrottled' => 'Kerden peysnaya',
'actionthrottledtext' => 'Riyê tedbirê anti-spami ra, wextê do kılmek de şıma nê fealiyeti nêşkenê zaf zêde bıkerê, şıma ki no hedi viyarna ra.
'nologinlink' => 'Yew hesab ake',
'createaccount' => 'Hesab vıraşten',
'gotaccount' => "Hesabê şıma esto? '''$1'''.",
-'gotaccountlink' => 'Dekewtış',
+'gotaccountlink' => 'Cı kewe',
'userlogin-resetlink' => 'Melumatê cıkewtışi xo vira kerdê?',
-'userlogin-resetpassword-link' => 'Şıma parola ke ğo vira?',
+'userlogin-resetpassword-link' => 'Parola xo kerda xo vira?',
'helplogin-url' => 'Help:Qeydbiyayış',
-'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Desteg be qeydbiyayış ra]]',
+'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Peşti be qeydbiyayış ra]]',
+'userlogin-loggedin' => 'Tı xora namey {{GENDER:$1|$1}} ra kewtê/kewtay cı.
+Formê cêrêni bıgureyne ke namey karberio bin ra cı kewê.',
'userlogin-createanother' => 'Zewbi hesab vıraz',
'createacct-join' => 'Cêr melumatê xo cı ke',
'createacct-another-join' => 'Malumata hesabdé ğoye newi dekeré cér.',
'resetpass_forbidden' => 'parolayi nêvuryayi',
'resetpass-no-info' => 'şıma gani hesab akere u hona bıeşke bırese cı',
'resetpass-submit-loggedin' => 'Parola bıvurne',
-'resetpass-submit-cancel' => 'Bıterkne',
+'resetpass-submit-cancel' => 'Bıtexelne',
'resetpass-wrong-oldpass' => 'parolayo parola maqbul niyo.
şıma ya parolaye xo vurnayo ya zi parolayo muwaqqat waşto.',
'resetpass-temp-password' => 'parolayo muweqet:',
# Special:ChangeEmail
'changeemail' => 'E-posta adresa xo bıvurnê',
'changeemail-header' => 'E-posya adresta hesabdê xo bıvurnê',
-'changeemail-text' => 'Şıma qayılê ke e-postay xo bıvurnê se enê formi pırkerê. Qandê araşt kerdışi zi parolay xo şıma de bınusnê',
-'changeemail-no-info' => 'Resayışê ena pela rê Dekewtış icab keno.',
-'changeemail-oldemail' => 'E-postay şımaya newki:',
-'changeemail-newemail' => 'E-posta adresiyo newe:',
-'changeemail-none' => '(Çıno)',
-'changeemail-password' => 'Parolaya şımaya {{SITENAME}}i:',
-'changeemail-submit' => 'E-postay xo bıvurne',
-'changeemail-cancel' => 'Bıterkne',
+'changeemail-text' => 'Şıma ke qailê e-postay xo bıvırnê, enê formi pırr kerê. Raştkerdışi rê ki şıma gani parolay xo bınusnê',
+'changeemail-no-info' => 'Şıma gani bıkewê pele ke derdest bıresê na pele.',
+'changeemail-oldemail' => 'E-postay şımawa nıkaêne:',
+'changeemail-newemail' => 'E-postay şımawa newiye:',
+'changeemail-none' => '(Çıniyo)',
+'changeemail-password' => 'Parolay şımawa {{SITENAME}}i:',
+'changeemail-submit' => 'E-postay xo bıvırnên',
+'changeemail-cancel' => 'Bıtexelne',
# Special:ResetTokens
-'resettokens' => 'Reset fi ye',
-'resettokens-no-tokens' => 'Ena reset nefina',
-'resettokens-legend' => 'Reset fi ye',
-'resettokens-tokens' => 'Beli kerdeni:',
-'resettokens-token-label' => '$1 (weziyeta newki: $2)',
-'resettokens-watchlist-token' => 'Qandé [[Special:Watchlist|Per vırnayışa lista da temaşan]] web wari kerdeni (Atom/RSS)',
-'resettokens-done' => 'Reset fi',
-'resettokens-resetbutton' => 'Reset fiyayış weçin',
+'resettokens' => 'Nışanan reset ke',
+'resettokens-no-tokens' => 'Nışanê reseti çıniyê',
+'resettokens-legend' => 'Nışanan reset ke',
+'resettokens-tokens' => 'Nışani:',
+'resettokens-token-label' => '$1 (weziyeto nıkaên: $2)',
+'resettokens-watchlist-token' => 'Web Feed rê nışan (Atom/RSS)ê [[Special:Watchlist|vêreno perranê lista şımawa seyrkerdışi]]',
+'resettokens-done' => 'Nışanan reset ke',
+'resettokens-resetbutton' => 'Nışananê weçıniteyan reset ke',
# Edit page toolbar
'bold_sample' => 'Metno qalın',
'bold_tip' => 'Metno qalın',
-'italic_sample' => 'Metno vırandere',
-'italic_tip' => 'Metno vırandere',
-'link_sample' => 'Namey gırê',
-'link_tip' => 'Gıreyê miyani',
-'extlink_sample' => 'http://www.example.com şınasiya adresi',
-'extlink_tip' => 'Greyê teberi (adresi vero http:// dekerê de)',
-'headline_sample' => 'nuştey xeta seri',
-'headline_tip' => '2.ki sewiye sername',
-'nowiki_sample' => 'Non-format nuşte itiya ra bıerz',
-'nowiki_tip' => 'Format kerdışê wiki bıterknê',
+'italic_sample' => 'Metno çewt',
+'italic_tip' => 'Metno çewt',
+'link_sample' => 'Namey gırey',
+'link_tip' => 'Gırey miyani',
+'extlink_sample' => 'http://www.misal.com sernamey gırey',
+'extlink_tip' => 'Gırey teberi (xo vira mekerên http:// prefix)',
+'headline_sample' => 'metnê sernamey',
+'headline_tip' => 'Sewiya 2ıne sername',
+'nowiki_sample' => 'metnê formatkerdey berze etıya',
+'nowiki_tip' => 'Goş formatê Wiki ra mekûwe',
'image_sample' => 'Misal resim.jpg',
-'image_tip' => 'Dosyaya gumın',
+'image_tip' => 'Dosya tewrkerdiye',
'media_sample' => 'misal.jpg',
-'media_tip' => 'Gıreyê dosya',
-'sig_tip' => 'İmza u wext',
-'hr_tip' => 'Çıxiza dimdayi (hend akar mefiye)',
+'media_tip' => 'Gırey dosya',
+'sig_tip' => 'İmzay şıma be morê zemani',
+'hr_tip' => 'Xeta verardiye (teserrufın bıgureyne/bıxebetne)',
# Edit pages
'summary' => "<font style=\"color:Blue\">'''Xulasa:'''</font>",
'subject' => 'Mewzu/sernuşte:',
-'minoredit' => 'Vırnayışa werkek',
+'minoredit' => 'No vırnayışê do werdiyo',
'watchthis' => "'''Ena pele seyr ke'''",
'savearticle' => 'Pele qeyd ke',
'preview' => 'Verqayt',
'showpreview' => 'Verqayti bımocne',
-'showlivepreview' => 'Verqayto cıwın',
+'showlivepreview' => 'Verqayto cınde (giyane)',
'showdiff' => 'Vurnayışan bımocne',
-'anoneditwarning' => 'Teme!: Şıma bı hesabê xo nıkewtê cı. Hurêndiya namey şıma dı IP-adresa şıma qeyd bena u asena.',
-'anonpreviewwarning' => "''Ti hama nicikewte. Qeyd kerdiş zerre tarixê pele de adresê IP yê tu keyd keno.''",
-'missingsummary' => "'''DİQET:''' Şıma kılmnuşte nıkerd.
-Eke şıma reyna butonê qaydker ser a ne pel bê kılmnuşte qayd beno.",
-'missingcommenttext' => 'Cêr de yew xulasa binuse.',
-'missingcommentheader' => "Vir ardoğ:''' Şıma qey na mesela sername nuşte nênuşt.
-Eke şıma reyna \"{{int:savearticle}}\" qayd ker bıtıkni pel bê sername qayd beno.",
-'summary-preview' => 'Verqeydê qıssa:',
-'subject-preview' => 'Mesela/Sername verqayd seyr kerdış:',
-'blockedtitle' => 'Karber (eza) blok biyo',
-'blockedtext' => '\'\'\'No name ya zi na IP adresê şıma ri musade çino.\'\'\'
-
-Oyo ke musade nêkeno: $1.<br />
-Sebebê musade nêdayiş: \'\'$2\'\'.
-
-* Dest pê kerdışê musade nêdayiş: $8
-* Qedyayişê musade nêdayiş: $6
-* Oyo ke cı rê musade nêdeyêno: $7
-
-Eke şıma sebebê musade nêdayiş ri itiraz keni, $1 de ya zi yewna [[{{MediaWiki:Grouppage-sysop}}|xızmetkar]] de şıma eşkeni na mesela de qıse bıkeri. [[Special:Preferences|Tercihê]] eke şıma na qısme de pey yew e-postayo raşt nêkewte cı, şıma xususiyetê "Karber ri e-posta bırışê" ra nêeşkeni istifade bıkeri, eke şıma tercihanê xo bıerz zerreyê e-postayê xo şıma hıni şenê ep-posta bırışê.
-<br />IP adresê şıma yo nıkayın $3, numreya musade nêdayiş #$5.
-<br />Eke şıma qayile yew xızmkar çiko bıpers, no malumatan not bıkere ney şıma rê lazım beni.',
+'anoneditwarning' => 'İqaz!: Şıma be hesabê xo nêkewtê cı.
+Adresê şımaê IP tarixê vırnayışê na pele de do qeyd bo.',
+'anonpreviewwarning' => '"Şıma be hesabê xo nêkewtê cı. Eke qeyd kerê, adresê şımaê IP tarixê vırnayışê na pele de do qeyd bo."',
+'missingsummary' => "'''DİQET:''' Şıma jû xulasa nênuşte.
+Eke şıma \"{{int:savearticle}}\" reyna bıtıknê, vırnayışê şıma bê xulasa qeyd beno.",
+'missingcommenttext' => 'Cêr de jû fıkır bınusên, şıma rê zehmet.',
+'missingcommentheader' => "'''Diqet:''' Şıma seba nê fıkrvaci yew mewzu/sernuşte nênuşt.
+Eke şıma reyna \"{{int:savearticle}}\" bıtıknê, vırnayışê şıa bê mewzu/sernuşte do qeyd bo.",
+'summary-preview' => 'Verqaytê xulasa:',
+'subject-preview' => 'Verqaytê mewzu/sernuştey:',
+'blockedtitle' => 'Karber blokekerdeo',
+'blockedtext' => '\'\'\'No namey karberi ya ki no adresê IP blokekerdeo.\'\'\'
+
+Vıraştoğê blokey: $1
+Sebebê blokey: \'\'$2\'\'.
+
+* Sıftekerdena blokey: $8
+* Qediyayışê blokey: $6
+* Blokebiyae: $7
+
+Şıma şenê $1 de ya ki yewna [[{{MediaWiki:Grouppage-sysop}}|administrator]]i de irtıbat kewê ke na mesela sero werênê, cemaet vırazê.
+Şıma nêşenê xısusiyetê "karberi rê e-posta bırışe" bıgureynê/bıxebetnê heta ke [[Special:Preferences|Tercihanê hesabi]] de jû e-postawa ke vêrena, beli biye u şıam gureynayışê cı ra mehrum nêbiyê.
+IP adresê şımao nıkaên $3o u numrey bloki #$5.
+Şıma rê zehmet, eke kewnê ra dıme, teferruatanê corênan not kerên.',
'autoblockedtext' => 'IP adresê şıma otomotikmen kerda kılit, çıkı $1 verniya nê hesabi grota.
Sebebê cı zi:
Qey na hesabê newe parola, cıkewtış dıma şıma eşkeni na qısım de ''[[Special:ChangePassword|parola bıvurn]]'' bıvurni.",
'newarticle' => '(Newe)',
-'newarticletext' => 'Ena per erdmaluamti miyan de çıniya.
-Şıma qayıle ena perer vırazese dora metini bıkarne. (yana [[{{MediaWiki:Helppage}}|Pera destegi]] ra malumat bıgire).
-Nara ke şıma ğamğamde ameyé tiya se butonda peyseri bıploğne u şıré cado verén.',
+'newarticletext' => "To yew gıre tıkna be ra yew pela ke hewna çıniya.
+Seba afernayışê pele ra, qutiya metnê cêrêni bıgurene (seba melumati qaytê [[{{MediaWiki:Helppage}}|pela peşti]] ke).
+Eke be ğeletine ameya tiya, wa gocega '''peyser'''i programê xo de bıtıkne.",
'anontalkpagetext' => "----''No pel, pel o karbero hesab a nêkerdeyan o, ya zi karbero hesab akerdeyan o labele pê hesabê xo nêkewto de. No sebeb ra ma IP adres şuxulneni û ney IP adresan herkes eşkeno bıvino. Eke şıma qayil niye ina bo xo ri [[Special:UserLogin/signup|yew hesab bıvıraze]] veyaxut [[Special:UserLogin|hesab akere]].''",
'noarticletext' => 'Na per enewke venga.
Tı şenay na perer, peran de [[Special:Search/{{PAGENAME}}|binan miyan de bıgeyrè]],
Hewna kerde aseno.',
'edit-conflict' => 'Vurnayişê pêverdiyaye .',
'edit-no-change' => 'Vurnayişê şıma qebul nêbı, çunke nuşte de yew vurnayiş n3evıraziya.',
-'postedit-confirmation' => 'Vurnayış qeyd be',
+'postedit-confirmation' => 'Vurnayışê to qeyd bi.',
'edit-already-exists' => 'Pelo newe nêvıraziyeno.
Pel ca ra esto.',
'defaultmessagetext' => 'Hesıbyaye metne mesaci',
'undo-success' => 'No vurnayiş tepeye geryeno. pêverronayişêyê cêrıni kontrol bıkeri.',
'undo-failure' => 'Sebayê pêverameyişê vurnayişan karo tepêya gırewtış nêbı.',
'undo-norev' => 'Vurnayiş tepêya nêgeryeno çunke ya vere cû hewna biyo ya zi ca ra çino.',
-'undo-summary' => "Vırnayışa $1'i be terefê [[Special:Contributions/$2|$2i]] ([[User talk:$2|vatenayış]]) peyser grot",
+'undo-summary' => "Vırnayışê $1'i [[Special:Contributions/$2|$2i]] ([[User talk:$2|Werênayış]]) peyser gırewt",
'undo-summary-username-hidden' => "Rewizyona veri $1'i hewada",
# Account creation failure
Sebebo ke terefê $3 ra diyao ''$2''",
# History pages
-'viewpagelogs' => 'Heqde na perer qeydan bıvin',
+'viewpagelogs' => 'Heqa na pele de qeydan bıvêne',
'nohistory' => 'Verê vurnayışanê na pele çıniyo.',
'currentrev' => 'Halo nıkayên',
'currentrev-asof' => 'Revizyonanê peniyan, tarixê $1',
'page_last' => 'peyên',
'histlegend' => "Ferqê weçinayışi: Qutiya versiyonan mor ke u ''enter''i bıpıloxne ya zi makera cêrêne bıpıloxne.<br />
Lecant: '''({{int:cur}})''' = ferqê versiyonê peyêni, '''({{int:last}})''' = ferqê versiyonê verêni, '''{{int:minoreditletter}}''' = vurnayışo werdi.",
-'history-fieldset-title' => 'Bewni tarixer',
-'history-show-deleted' => 'Tenya esterıt',
+'history-fieldset-title' => 'Tarixi bıvêne',
+'history-show-deleted' => 'Tenya esterıtey',
'histfirst' => 'Verênêr',
'histlast' => 'Peyênêr',
'historysize' => '({{PLURAL:$1|1 bayt|$1 bayti}})',
'revdelete-hide-text' => 'Nuştey revizyoni',
'revdelete-hide-image' => 'zerreyê dosyay bınımnê',
'revdelete-hide-name' => "hedef u vaqa' bınımne",
-'revdelete-hide-comment' => 'Menıni timar ke',
+'revdelete-hide-comment' => 'Xulasa bıvurne',
'revdelete-hide-user' => 'IP asresa/namey vırnoği',
'revdelete-hide-restricted' => 'Malumatan pa serkaran u karberan ra bınım.',
'revdelete-radio-same' => '(mevurne)',
'logdelete-failure' => "'''Esayişê rocaneyi eyar nêbı:'''
$1",
'revdel-restore' => 'asayışi bıvurne',
-'pagehist' => 'Verora perer',
+'pagehist' => 'Tarixê pele',
'deletedhist' => 'tarixê hewna şiyaye',
'revdelete-hide-current' => '$2 $1 ney çiye ke wexta diyayene wera (wedar dayiş) xeta da: no reviyon nınımiyeno.',
'revdelete-show-no-access' => '$2 $1 wexta ke ney tarix de mociyayene xeta da: ne çi "vergırewtı" nişane biyo.
'mergehistory-header' => 'No pel, reviyonê yew peli eşkeno yewna pelo newe de piyawano.
no vurnayişo ke şıma keni kontrol bıkere yew pelo kehen nêbo.',
'mergehistory-box' => 'revizyonê pelanî yew bike:',
-'mergehistory-from' => 'Para Çımi:',
+'mergehistory-from' => 'Pela çımey:',
'mergehistory-into' => 'Pela destinasyonî',
'mergehistory-list' => 'tarixê vurnayîşî ke eşkeno yew bi.',
'mergehistory-merge' => '[[:$1]] qey ney revizyonê cêrini [[:$2]] şıma ekeni piyawani. Benatê wexto muwaqqet de piyayanayişê rezizyonan de tuşa radyo bıxebitne.',
'lineno' => 'Xeta $1i:',
'compareselectedversions' => 'Rewizyonanê weçineyan pêver ke',
'showhideselectedversions' => 'Revizyonanê weçinıtan bımocne/bınımne',
-'editundo' => 'peyser bıgi',
+'editundo' => 'peyser bıgê',
'diff-empty' => '(Babetna niyo)',
-'diff-multi' => '({{PLURAL:$1|Yew revizyono miyanên|$1 revizyonê miyanêni}} terefê {{PLURAL:$2|yew karberi|$2 karberan}} nêmocno)',
'diff-multi-manyusers' => '({{PLURAL:$1|jew timar kerdışo qıckeko|$1 timar kerdışo qıckeko}} timar kerdo, $2 {{PLURAL:$2|Karber|karberi}} memocne)',
'difference-missing-revision' => 'Ferqê {{PLURAL:$2|Yew rewizyonê|$2 rewizyonê}} {{PLURAL:$2|dı|dı}} ($1) sero çıniyo.
'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3) bıvênên',
'searchmenu-exists' => "''Ena 'Wikipediya de ser \"[[:\$1]]\" yew pel esto'''",
'searchmenu-new' => "''Na Wiki de pelay \"[[:\$1]]\" vıraze!'''",
-'searchprofile-articles' => 'Perré muhteway',
-'searchprofile-project' => 'Pera Destegi uw Procan',
+'searchprofile-articles' => 'Pelê tedeestey',
+'searchprofile-project' => 'Pelê peşti û procey',
'searchprofile-images' => 'Multimedya',
'searchprofile-everything' => 'Heme çi',
-'searchprofile-advanced' => 'Ravérden',
+'searchprofile-advanced' => 'Raverşiyaye',
'searchprofile-articles-tooltip' => '$1 de cı geyré',
'searchprofile-project-tooltip' => '$1 de bigêre',
'searchprofile-images-tooltip' => 'Dosya cı geyr',
'search-result-size' => '$1 ({{PLURAL:$2|1 çekuyo|$2 çekuyê}})',
'search-result-category-size' => '{{PLURAL:$1|1 eza|$1 ezayan}} ({{PLURAL:$2|1 kategoriyê bini|$2 kategirayanê binan}}, {{PLURAL:$3|1 dosya|$3 dosyayan}})',
'search-result-score' => 'Eleqa: $1%',
-'search-redirect' => '(ber $1)',
+'search-redirect' => '($1 ra ardış)',
'search-section' => '(qısmê $1)',
'search-suggest' => 'To va: $1',
'search-interwiki-caption' => 'Projey Bıray',
'searchrelated' => 'eleqeyın',
'searchall' => 'pêro',
'showingresults' => "#$2 netican ra {{PLURAL:$1|'''1''' netica|'''$1''' neticey}} cêr deyê.",
-'showingresultsnum' => "'''$2''' netican ra nata {{PLURAL:$3|'''1''' netice|'''$3''' neticeyê}} cêrde liste biyê.",
+'showingresultsnum' => "'''$2''' netican ra {{PLURAL:$3|'''1''' netice|'''$3''' neticey}} cêr derê.",
'showingresultsheader' => "{{PLURAL:$5|Neticeyê '''$1''' of '''$3'''|Neticeyanê '''$1 - $2''' hetê '''$3'''}} qe '''$4'''",
'search-nonefound' => 'Zey perskerdışê şıma netice nêvêniya.',
'powersearch-legend' => 'Cıgeyrayışo hera',
'prefs-skin' => 'Çerme',
'skin-preview' => 'Verasayış',
'datedefault' => 'Tercih çıniyo',
-'prefs-beta' => 'Xacetê beta',
+'prefs-beta' => 'Hacetê beta',
'prefs-datetime' => 'Tarix u wext',
'prefs-labs' => 'Xacetê labs',
'prefs-user-pages' => 'Pela Karberi',
'prefs-personal' => 'Pela karberi',
-'prefs-rc' => 'Vırnayışé bahdoyéni',
+'prefs-rc' => 'Vurnayışê peyêni',
'prefs-watchlist' => 'Lista seyrkerdışi',
'prefs-watchlist-days' => 'Rocê ke lista seyrkerdışi de bêrê ramocnaene',
'prefs-watchlist-days-max' => 'tewr vêşi $1 {{PLURAL:$1|roci|roci}}',
'rows' => 'Xeti:',
'columns' => 'Estûni:',
'searchresultshead' => 'Cı geyre',
-'resultsperpage' => 'Neticeye ke perde bıase:',
'stub-threshold' => 'Qandé <a href="#" class="stub">Taslağ formati</a> sinor (bayti):',
'stub-threshold-disabled' => 'Astengın',
'recentchangesdays' => 'Rocê ke vurnayışanê peyênan de bıasê:',
'prefs-dateformat' => 'Formatê tarixi',
'prefs-timeoffset' => 'Wext offset',
'prefs-advancedediting' => 'Herayen weçinayış',
-'prefs-editor' => 'Timarkar',
+'prefs-editor' => 'Vurnayoğ',
'prefs-preview' => 'Verqayt',
'prefs-advancedrc' => 'Tercihê raverberdey',
'prefs-advancedrendering' => 'Tercihê raverberdey',
'right-viewmywatchlist' => 'Lista seyr de xo bıvin',
'right-editmywatchlist' => 'Listeya temaşiya karberinda ğo timar ke.Not tay karfinayışi na icazet nédeyo zi pera dekeno de.',
'right-viewmyprivateinfo' => 'Bağse malumatané ğo bıasne (e-posta, nameyo raştay vs.)',
-'right-editmyprivateinfo' => 'Bağse malumatané ğo bıvırn (e-posta, nameyo raştay vs.)',
-'right-editmyoptions' => 'Tercihané Ä\9fo bıvırn',
+'right-editmyprivateinfo' => 'Melumatanê xoyê şexsiyan bıvurne (adresa e-postey, nameyo raştıkên uêb.)',
+'right-editmyoptions' => 'Tercihanê xo bıvurne',
'right-rollback' => 'Lez/herbi vurnayışanê karberê peyêni tekrar bıke, oyo ke yew be yew pelê sero gureyao',
'right-markbotedits' => 'Vurnayışanê peyd ameyan, vurnayışê boti deye nışan kerê',
'right-noratelimit' => 'Sinoranê xızi (rate limit) ra tesir nêbi',
'action-reupload-shared' => 'dosyayê ki ho embarê medyayî de esto ser ay binusne',
'action-upload_by_url' => 'Ena dosya yew URL ra bar bike',
'action-writeapi' => 'ser nuşte API gure bike',
-'action-delete' => 'ena perer besternê',
+'action-delete' => 'ena pele bestere',
'action-deleterevision' => 'nê çımraviyarnayışi bestere',
'action-deletedhistory' => 'tarixê ena pel ki estereyî biya, ey bivine',
'action-browsearchive' => 'pelanê esterıteyan bıgeyre',
'action-undelete' => 'ena pele reyna biyere',
'action-suppressrevision' => 'revizyone ki nimnaye biye reyna bivîne u restore bike',
-'action-suppressionlog' => 'Ena bağse qeydi bıvin',
+'action-suppressionlog' => 'enê qeydê xısusi bıvêne',
'action-block' => 'enê karberi vurnayışi ra bıreyne',
'action-protect' => 'seviyeyê pawitişî se ena pele bivurne',
'action-rollback' => 'Lez/herbi vurnayışanê karberê peyêni tekrar bıke, oyo ke yew be yew pelê sero gureyao',
'nchanges' => '$1 {{PLURAL:$1|fın vurna|fıni vurna}}',
'enhancedrc-since-last-visit' => '$1 {{PLURAL:$1|ra yok wazino}}',
'enhancedrc-history' => 'verenayış',
-'recentchanges' => 'Vırnayışé bahdoyéni',
+'recentchanges' => 'Vurnayışê peyêni',
'recentchanges-legend' => 'Tercihê vurnayışanê peyênan',
-'recentchanges-summary' => 'Ena perer de wiki sero vurnayışanê peyênan teqib ke.',
+'recentchanges-summary' => 'Ena pele de wiki sero vurnayışanê peyênan teqib ke.',
'recentchanges-noresult' => 'Zey kiterandé şıma vırnayış névineya',
'recentchanges-feed-description' => 'Ena feed dı vurnayişanê tewr peniyan teqip bık.',
-'recentchanges-label-newpage' => 'Ena vırnayış ra pera newi vıraziyê',
-'recentchanges-label-minor' => 'Ena vırnayışa werkeka',
-'recentchanges-label-bot' => 'No vurnayışé boti yo.',
+'recentchanges-label-newpage' => 'Enê vurnayışi ra yew pela newiye vıraziye',
+'recentchanges-label-minor' => 'Eno yew vurnayışo werdiyo',
+'recentchanges-label-bot' => 'Eno vurnayış terefê yew boti ra vıraziyo',
'recentchanges-label-unpatrolled' => 'Eno vurnayış hewna dewriya nêbiyo',
-'recentchanges-label-plusminus' => 'Ebata na perer ebatta na nımra de vırneya',
+'recentchanges-label-plusminus' => 'Ebadê pele de bazê bayti de vayeyê cı',
'recentchanges-legend-heading' => "'''Kıtabek:'''",
-'recentchanges-legend-newpage' => '(Zewbi bıvin [[Special:NewPages|Listeya peran de newan]])',
+'recentchanges-legend-newpage' => '([[Special:NewPages|Lista pelanê neweyan]] zi bıvêne)',
'recentchanges-legend-plusminus' => "''(±123)''",
'rcnotefrom' => "Cêr de '''$2''' ra nata vurnayışiyê asenê (tewr vêşi <b> '''$1'''</b> asenê).",
-'rclistfrom' => '$1 ra tepya vırnayışané newan bıasne',
-'rcshowhideminor' => 'Vırnayışané werkekean $1',
+'rclistfrom' => '$1 ra tepiya vurnayışanê neweyan bımocne',
+'rcshowhideminor' => 'Vurnayışanê werdiyan $1',
'rcshowhidebots' => 'Botan $1',
-'rcshowhideliu' => 'Karberé qeydınan $1',
-'rcshowhideanons' => 'Karberané bénaman $1',
+'rcshowhideliu' => 'Karberanê qeydbiyayeyan $1',
+'rcshowhideanons' => 'Karberanê bênameyan $1',
'rcshowhidepatr' => '$1 vurnayışê ke dewriya geyrayê',
'rcshowhidemine' => 'Vurnayışanê mı $1',
-'rclinks' => '$2 rocan peynira $1 vurnayışan bıasne <br />$3',
+'rclinks' => 'Peyniya $2 rocan de $1 vurnayışan bımocne <br />$3',
'diff' => 'ferq',
'hist' => 'verên',
'hide' => 'Bınımne',
-'show' => 'Bıasne',
+'show' => 'Bımocne',
'minoreditletter' => 'q',
'newpageletter' => 'N',
'boteditletter' => 'b',
'recentchangeslinked' => 'Vurnayışê elaqeyıni',
'recentchangeslinked-feed' => 'Vurnayışê elaqeyıni',
'recentchangeslinked-toolbox' => 'Vurnayışê elaqeyıni',
-'recentchangeslinked-title' => 'vurnayışan ser "$1"',
+'recentchangeslinked-title' => 'Heqa "$1" de vurnayışi',
'recentchangeslinked-summary' => "Lista cêrêne, pela bêlikerdiye rê (ya zi karberanê kategoriya bêlikerdiye rê) pelanê gırêdayoğan de lista de vurnayışê peyênana.
[[Special:Watchlist|Lista şımaya seyrkedışi de]] peli be nuşteyo '''qolınd''' bêli kerdê.",
'recentchangeslinked-page' => 'Nameyê pele:',
-'recentchangeslinked-to' => 'Pelayan ke ena pela ri gire bi, ser ayi vurnayışi bımoc',
+'recentchangeslinked-to' => 'Heruna pela ke yena dayene, vurnayışanê pelanê ke daye ra gırêdayiyê inan bımocne',
# Upload
'upload' => 'Dosya bar ke',
Dosyayn de Java barkerdışi rê icazet nêdeyê, çıkı emeleya merduman nêbena.',
'upload-source' => 'Dosyayê henî',
'sourcefilename' => 'Nameyê dosyaye çimeyî',
-'sourceurl' => "URL'yê Çımi",
+'sourceurl' => 'URLyê çımey:',
'destfilename' => 'Destînasyonê nameyêdosya',
'upload-maxfilesize' => 'Ebatêî dosya tewr girdî: $1',
'upload-description' => 'Deskripsiyonê dosyayî',
# File description page
'file-anchor-link' => 'Dosya',
'filehist' => 'Ravêrdê dosya',
-'filehist-help' => 'bıploxne ser yew tarih u aye tarih dı versionê dosya bıvin.',
+'filehist-help' => 'Seba diyayışê viyarteyê dosya tarixê ke qısımê tarix/zemani derê inan bıtıkne.',
'filehist-deleteall' => 'pêro bestere',
'filehist-deleteone' => 'bestere',
'filehist-revert' => 'reyna biyere',
# File reversion
'filerevert' => '$1 reyna biyere',
-'filerevert-legend' => 'Dosya ber weziyet do verên',
+'filerevert-legend' => 'Dosya raçarne',
'filerevert-intro' => "Ti ho ena dosyayê '''[[Media:$1|$1]]'''î [$4 versiyonê $3, $2] rê reyna anî.",
'filerevert-comment' => 'Sebeb:',
'filerevert-defaultcomment' => 'Versiyonê $2, $1 rê reyna ard',
# Random page in category
'randomincategory' => 'Ğoseri pera kategoriya',
-'randomincategory-invalidcategory' => '"$1" namedı kategori çıniya',
+'randomincategory-invalidcategory' => '"$1" yew nameyê kategoriya vêrdiye niyo.',
'randomincategory-nopages' => 'Kategori da [[:Category:$1|$1]] de qet per çıniya.',
'randomincategory-selectcategory' => 'Pera ke cıra raşt ameye kategori do bıgéri yo: $1 $2.',
'randomincategory-selectcategory-submit' => 'Şo',
# Random redirect
-'randomredirect' => 'Xoseri hetenayış',
+'randomredirect' => 'Serçarnayışo rastameye',
'randomredirect-nopages' => 'Ena cayênameyê "$1"î de redereksiyonî çin o.',
# Statistics
# Miscellaneous special pages
'nbytes' => '$1 {{PLURAL:$1|bayt|bayti}}',
-'ncategories' => '$1 {{PLURAL:$1|Kategori|Kategoriy}}',
+'ncategories' => '$1 {{PLURAL:$1|Kategoriye|Kategoriy}}',
'ninterwikis' => '$1 {{PLURAL:$1|interwiki|interwikiy}}',
'nlinks' => '$1 {{PLURAL:$1|link|linkî}}',
'nmembers' => '$1 {{PLURAL:$1|eza|ezayan}}',
'listusers-desc' => 'Kemeyen rézed ratn',
'usereditcount' => '$1 {{PLURAL:$1|vurnayîş|vurnayîşî}}',
'usercreated' => '$2 de $1 {{GENDER:$3|viraziya}}',
-'newpages' => 'Peré newey',
+'newpages' => 'Pelê newey',
'newpages-username' => 'Nameyê karberi:',
'ancientpages' => 'Wesiqeyê ke vurnayışê ciyê peyeni tewr kehani',
-'move' => 'Ber',
-'movethispage' => 'Na perer ber',
+'move' => 'Bere',
+'movethispage' => 'Ena pele bere',
'unusedimagestext' => 'Enê dosyey estê, feqet zerrey yew pele de wedardey niyê.
Xo vira mekerê ke, sıteyê webiê bini şenê direkt ebe URLi yew dosya ra gırê bê, u wına şenê verba gurênayışo feal de tiya hewna lista bê.',
'unusedcategoriestext' => 'kategoriyê cêrıni bıbo zi çı nêşuxulyena.',
# Book sources
'booksources' => 'Çımey kitaban',
-'booksources-search-legend' => 'Ser çımey kitaban bıgeyr',
+'booksources-search-legend' => 'Seba çımeyanê kıtaban cı geyre',
'booksources-isbn' => 'ISBN:',
'booksources-go' => 'Şo',
'booksources-text' => 'listeya cêrıni, keyepelê kitap rotoxan o.',
# Special:Categories
'categories' => 'Kategoriy',
-'categoriespagetext' => '{{PLURAL:$1|kategoriyê|kategoriyê}} cêrıni de pel u media esto.
-[[Special:UnusedCategories|kategoriyê ke nê xebtênê]] tiya de nêmociyeni.
-hem zi bıewnê [[Special:WantedCategories|kategori yê ke waziyeni]].',
-'categoriesfrom' => 'kategori yê ke pê ninan destpêkeno ramocın:',
+'categoriespagetext' => '{{PLURAL:$1|Kategoriya cêrene|Kategoriyanê cêrênan}} de peli ya zi medya estê.
+[[Special:UnusedCategories|Kategoriyê ke nêxebetiyenê]] tiya de nêmocniyayê.
+[[Special:WantedCategories|Kategoriyanê waşteyeyan]] de zi bıvêne.',
+'categoriesfrom' => 'Kategoriyê ke be ninan dest pêkenê, bımocne:',
'special-categories-sort-count' => 'goreyê çendi rêz ker.',
'special-categories-sort-abc' => 'alfabetik rêz ker',
# Special:LinkSearch
'linksearch' => 'Gıreyê teberi cı geyrê',
'linksearch-pat' => 'bıgêr motif:',
-'linksearch-ns' => 'Heruna naman:',
+'linksearch-ns' => 'Heruna nameyan:',
'linksearch-ok' => 'Cı geyre',
'linksearch-text' => 'Jokeri ê zey "*.wikipedia.org"i benê ke bıgureniyê.
Tewr senık yew sewiya serêna cayê tesiri lazıma, mesela "*.org".<br />
'removewatch' => 'Listedê mınê seyr kerdışi ra hewad',
'removedwatchtext' => 'Ena pela "[[:$1]]" biya wedariya [[Special:Watchlist|listeyê seyr-kerdışi şıma]].',
'watch' => 'Temaşe ke',
-'watchthispage' => 'Na perer seyr ke',
+'watchthispage' => 'Ena pele seyr ke',
'unwatch' => 'Teqib mekerê',
'unwatchthispage' => 'temaşa kerdışê peli vındarn.',
'notanarticle' => 'mebhesê peli niyo',
'watchmethod-list' => 'pel ê ke şıma temaşa kenî vuryayişê peyinê ey konrol beno',
'watchlistcontains' => 'listeya seyrkerdışê şıma de $1 tene {{PLURAL:$1|peli|peli}} estî.',
'iteminvalidname' => "pê no '$1' unsuri problem bı, nameyo nemeqbul...",
-'wlnote' => "$3 seate u bahde $4 deqa dıma {{PLURAL:$2|ju seate dı|'''$2''' ju seate dı}} {{PLURAL:$1|vurnayışe peyeni|vurnayışe '''$1''' peyeni}} cêrdeyê",
'wlshowlast' => 'Peyni de vurnayışan ra $1 seata u $2 roca $3 bımocnê',
'watchlist-options' => 'Tercihê liste da seyri',
'deletecomment' => 'Sebeb:',
'deleteotherreason' => 'Sebebo bin:',
'deletereasonotherlist' => 'Sebebo bin',
-'deletereason-dropdown' => '*Sebebé esterıti
-** Spam
+'deletereason-dropdown' => '* Sebebê esterıtışê pêroyi
+** Vurnayışo nêwaşte (spam)
** Vandalizm
-** İhlala heqdé telifi
-** WaÅ\9ftıÅ\9fé nustoği
-** Xırab hetenayış',
+** İxlalê heqa telifi
+** WaÅ\9ftıÅ\9fê nuÅ\9ftoği
+** Oryantasyono xırabe',
'delete-edit-reasonlist' => 'Sebebê vurnayışan bıvurne',
'delete-toobig' => 'no pel, pê $1 {{PLURAL:$1|tene vuriyayiş|tene vuriyayiş}}i wayirê yew tarixo kehen o.
qey hewna nêşiyayişi wina pelani u {{SITENAME}}nêxerebnayişê keyepeli yew hed niyaya ro.',
'protect-title' => 'qey "$1" yew seviyaya pawıtışi bıvıcinê',
'protect-title-notallowed' => 'Star kerdış sewiyeyê "$1" bıvinê',
'prot_1movedto2' => 'nameyê [[$1]] peli yo newe: [[$2]]',
-'protect-badnamespace-title' => 'Heruna naman itad starêna',
+'protect-badnamespace-title' => 'Heruna nameyana bêsıtare',
'protect-badnamespace-text' => 'Na herunda namide peley nêstarênê.',
'protect-norestrictiontypes-text' => 'Na perdi mahne esto cokira tipeci nikarnina',
'protect-norestrictiontypes-title' => 'Pera starneyin',
# Restrictions (nouns)
'restriction-edit' => 'Bıvurne',
-'restriction-move' => 'Ber',
-'restriction-create' => 'İycad ke',
+'restriction-move' => 'Bere',
+'restriction-create' => 'Vıraze',
'restriction-upload' => 'Bar ke',
# Restriction levels
'undeletebtn' => 'Timar bike',
'undeletelink' => 'bıvêne/peyser bia',
'undeleteviewlink' => 'bıvin',
-'undeleteinvert' => 'vicnayeyi qeldaye açarn',
+'undeleteinvert' => 'Weçinıtışi açarne',
'undeletecomment' => 'Sebeb:',
'undeletedrevisions' => 'pêro piya{{PLURAL:$1|1 qeyd|$1 qeyd}} tepiya anciya.',
'undeletedrevisions-files' => '{{PLURAL:$1|1 revizyon|$1 revizyon}} u {{PLURAL:$2|1 dosya|$2 dosya}} ameyê halê xo yê verıni',
'undelete-show-file-submit' => 'E',
# Namespace form on various pages
-'namespace' => 'Heruna naman:',
-'invert' => 'Weçinayan ğariç bıasné',
+'namespace' => 'Heruna nameyan:',
+'invert' => 'Weçinıtışi açarne',
'tooltip-invert' => 'nameyo ke nışan biyo (u nameyo elekeyın zi nışanyyayo se) vurnayışan zerrekan nımtışi re ena dore tesdiqi nışan kerê',
-'namespace_association' => 'Elaqedar nameyé cayan',
+'namespace_association' => 'Heruna nameyanê elaqedaran',
'tooltip-namespace_association' => 'Herunda canemiya elekeyın nışan kerdışi sero qıse kerdışi yana zerre dekerdışi rê ena dora tesdiqi nışan kerê',
'blanknamespace' => '(Ser)',
'contribsub2' => 'Qandê {{GENDER:$3|$1}} ($2)',
'nocontribs' => 'Ena kriteriya de vurnayîş çini yo.',
'uctop' => '(weziyet)',
-'month' => 'Aşm:',
-'year' => 'Ser:',
+'month' => 'Aşme:',
+'year' => 'Serre:',
'sp-contributions-newbies' => 'Tenya iştıraqanê karberanê neweyan bımocne',
'sp-contributions-newbies-sub' => 'Qe hesebê newe',
'sp-contributions-newbies-title' => 'Îştîrakê karberî ser hesabê neweyî',
-'sp-contributions-blocklog' => 'Qeydê bloqi',
-'sp-contributions-deleted' => 'iştırakê karberiê esterıtey',
+'sp-contributions-blocklog' => 'Qeydê blokey',
+'sp-contributions-deleted' => 'İştırakê karberi esterd',
'sp-contributions-uploads' => 'barkerdey',
'sp-contributions-logs' => 'qeydi',
'sp-contributions-talk' => 'werênayış',
-'sp-contributions-userrights' => 'İdareyê heqanê karberan',
+'sp-contributions-userrights' => 'idareyê heqanê karberan',
'sp-contributions-blocked-notice' => 'verniyê no/na karber/e geriyayo/a
qê referansi qeydê vernigrewtışi cêr de eşkera biyo:',
'sp-contributions-blocked-notice-anon' => 'Eno adresê IPi bloke biyo.
'sp-contributions-submit' => 'Cı geyre',
# What links here
-'whatlinkshere' => 'Gırey perer',
+'whatlinkshere' => 'Gıreyê pele',
'whatlinkshere-title' => 'Per da "$1" rê perê ke gre danê',
'whatlinkshere-page' => 'Pele:',
'linkshere' => "Ena peleyan grey biya '''[[:$1]]''':",
'ipbenableautoblock' => 'verniyê IPadresa peyin ê no karberi u wexta ke vurnayişi kerd ê IPadresani otomotik bıger.',
'ipbsubmit' => 'Ena karber blok bike',
'ipbother' => 'Waxtê bini:',
-'ipboptions' => '2 seat:2 hours,1 roc:1 day,3 roci:3 days,1 hefte:1 week,2 heftey:2 weeks,1 aşm:1 month,3 aşm:3 months,6 aşmi:6 months,1 ser:1 year,ebedi:infinite',
+'ipboptions' => '2 saeti:2 hours,1 roce:1 day,3 roci:3 days,1 hefte:1 week,2 heftey:2 weeks,1 aşme:1 month,3 aşmi:3 months,6 aşmi:6 months,1 serre:1 year,ebedi:infinite',
'ipbhidename' => 'Nameyê karberî listeyan u vurnayîşan ra binumne',
'ipbwatchuser' => 'Pela miniqaşe u pela ena karberî seyr bike',
'ipb-disableusertalk' => 'No karber wexto ke bloqedeyo wa pela da xodı vurnayış kerdışi rê izin medı',
'ipblocklist-empty' => 'Lista kılitkerdışi venga.',
'ipblocklist-no-results' => 'Adresa IPya waştiye ya zi namey karberi kılit nêbiyo.',
'blocklink' => 'kılit ke',
-'unblocklink' => 'bloqi hewad',
+'unblocklink' => 'bloki wedare',
'change-blocklink' => 'kılitkerdışi bıvurne',
'contribslink' => 'iştıraqi',
'emaillink' => 'e-poste bırışe',
'sorbs_create_account_reason' => 'IP adresa şıma, hetê no translatewiki.net keyepeli ra DNSBL de proxy hesibyayo u liste biyo.
şıma neeşkeni hesab bıvırazi',
+'xffblockreason' => 'Yew adresê İP sernuştey X-Forwarded-For de esto, ya ê to ya ki ê proxy serverio ke tı gureynenê (xebetnenê), bloke biyo. Sebebê blokekerdışio esıl no bi: $1',
'cant-see-hidden-user' => 'karber o ke şıma gêreni verniyê ey bıgeri ca ra verniyê ey gırewteyo u pinani kerdeyo.',
'ipbblocked' => 'Ti nieşkena karberanê binan bloke bike ya zi a bike cunki ti bloke biya',
'ipbnounblockself' => 'Ti nieşkena xo a bike',
'movepage-page-moved' => 'pelê $1i kırışiya pelê $2i.',
'movepage-page-unmoved' => 'pelê $1i nêkırışiyeno sernameyê $2i.',
'movepage-max-pages' => 'tewr ziyed $1 {{PLURAL:$1|peli|peli}} kırışiya u hıni ziyedê ıney otomotikmen nêkırışiyeno.',
-'movelogpage' => 'Qeydé berdışi',
+'movelogpage' => 'Qeydê berdışi',
'movelogpagetext' => 'nameyê liste ya ke cêr de yo, pelê vuriyayeyani mocneno',
'movesubpage' => '{{PLURAL:$1|Subpage|pelê bınıni}}',
'movesubpagetext' => '{{PLURAL:$1|pelê bınıni yê|pelê bınıni yê}} no $1 peli cer de yo.',
'movenosubpage' => 'pelê bınıni yê no peli çino.',
'movereason' => 'Sebeb:',
'revertmove' => 'peyser bia',
-'delete_and_move' => 'Bestern u ber',
+'delete_and_move' => 'Bestere û bere',
'delete_and_move_text' => '==gani hewn a bıbıo/bıesteriyo==
" no [[:$1]]" name de yew pel ca ra esto. şıma wazeni pê hewn a kerdışê ey peli vurnayişê nameyi bıkeri?',
-'delete_and_move_confirm' => 'E na perer bestern',
+'delete_and_move_confirm' => 'Eya, na pele bestere',
'delete_and_move_reason' => '"[[$1]]" qande nami re ca akerdışi re besteriyaye',
'selfmove' => 'name yo ke şıma wazeni bıbo, ın name û name yo ke ca ra esto eyni yê /zepê yê. vurnayiş mumkin niyo.',
'immobile-source-namespace' => '"$1" pelê cayi de nameyi nêkırışyenî',
'javascripttest-qunit-heading' => 'MediaWiki JavaScript QUnit test suite',
# Tooltip help for the actions
-'tooltip-pt-userpage' => 'Pera şımaya karberi',
+'tooltip-pt-userpage' => 'Pela şımaya karberi',
'tooltip-pt-anonuserpage' => 'pelê karberê IPyi',
-'tooltip-pt-mytalk' => 'Pera şımaya vaten',
+'tooltip-pt-mytalk' => 'Pela toya werênayışi',
'tooltip-pt-anontalk' => 'vurnayiş ê ke no Ipadresi ra biyo muneqeşa bıker',
'tooltip-pt-preferences' => 'Tercihi',
'tooltip-pt-watchlist' => 'Lista pelanê ke to gırewtê seyrkerdış',
'tooltip-pt-mycontris' => 'Listeya dekerdışan de şıma',
'tooltip-pt-login' => 'Mayê şıma ronıştış akerdışi rê dawet keme; labelê ronıştış mecburi niyo',
-'tooltip-pt-anonlogin' => 'Seba cıkewtışê şıma rê dewato; labelê, no zeruri niyo',
'tooltip-pt-logout' => 'Sistem ra vıcyayış',
-'tooltip-ca-talk' => 'Heqdé zerreki vatenayış',
+'tooltip-ca-talk' => 'Zerrekê pele sero werênayış',
'tooltip-ca-edit' => 'Tı şenay na perer bıvurné.Verdé qeyd kerdışi ver gocega verqayti bıkarné.',
'tooltip-ca-addsection' => 'Zu bınnusteya newi ak',
'tooltip-ca-viewsource' => 'Ena pele kılit biya.
Şıma şenê çımeyê aye bıvênê',
-'tooltip-ca-history' => 'Verén rewziyoné ena perer bıvin',
-'tooltip-ca-protect' => 'Na perer star fi',
+'tooltip-ca-history' => 'Versiyonê verênê ena pele',
+'tooltip-ca-protect' => 'Ena pele bışevekne',
'tooltip-ca-unprotect' => 'Starkerdışe ena peler bıvurne',
-'tooltip-ca-delete' => 'Ena perer bestern',
+'tooltip-ca-delete' => 'Ena pele bestere',
'tooltip-ca-undelete' => 'peli biyarê halê ver hewnakerdışi',
-'tooltip-ca-move' => 'Na perer ber',
+'tooltip-ca-move' => 'Ena pele bere',
'tooltip-ca-watch' => 'Ena pele lista xoya seyrkerdışi ke',
'tooltip-ca-unwatch' => 'Ena pele listeya seyir-kerdışi xo ra bıvec',
'tooltip-search' => '{{SITENAME}} miyan de bıvin',
'tooltip-search-go' => 'Ebe nê namey tami şo yew pela ke esta',
'tooltip-search-fulltext' => 'Nê metni peran dı cı geyre',
-'tooltip-p-logo' => 'Şo pera seri',
-'tooltip-n-mainpage' => 'Şo pera seri',
+'tooltip-p-logo' => 'Şo pela seri',
+'tooltip-n-mainpage' => 'Şo pela seri',
'tooltip-n-mainpage-description' => 'Şo pela seri',
'tooltip-n-portal' => 'Heqa projey de, kes çı şeno bıkero, çıçiyo koti deyo',
'tooltip-n-currentevents' => 'Vurnayışanê peyênan de melumatê pey bıvêne',
'tooltip-n-recentchanges' => 'Wiki de lista vurnayışanê peyênan',
'tooltip-n-randompage' => 'Perake raşt amé',
-'tooltip-n-help' => 'Cay desteg grotışi',
+'tooltip-n-help' => 'Cayê peştigırewtışi',
'tooltip-t-whatlinkshere' => 'Lista pelanê wikiya pêroina ke tiya gırê bena',
'tooltip-t-recentchangeslinked' => 'Vurnayışê peyênê pelanê ke ena pela ra gırê biyê',
'tooltip-feed-rss' => 'RSS feed qe ena pele',
'tooltip-t-print' => 'Hewl versiyona ploğnayışa na perer',
'tooltip-t-permalink' => 'Gırêyo daimi be ena versiyonê pele',
'tooltip-ca-nstab-main' => 'Perra muhtevay bıvin',
-'tooltip-ca-nstab-user' => 'Pera karberi bıvin',
+'tooltip-ca-nstab-user' => 'Pela karberi bıvêne',
'tooltip-ca-nstab-media' => 'Pera medya bıvin',
-'tooltip-ca-nstab-special' => 'Na zu pera bağsi ya, şıma néşené sero vırnayış bıkeré',
+'tooltip-ca-nstab-special' => 'Na yew pela xasa, şıma nêşenê sero vurnayış bıkerê',
'tooltip-ca-nstab-project' => 'Pera proci bıvin',
'tooltip-ca-nstab-image' => 'Pera dosyayer bıvin',
'tooltip-ca-nstab-mediawiki' => 'Mesacané sistemi bıvin',
'tooltip-ca-nstab-template' => 'Şabloni bıvin',
-'tooltip-ca-nstab-help' => 'Pera destegi bıvin',
-'tooltip-ca-nstab-category' => 'Pera kategori bıvin',
+'tooltip-ca-nstab-help' => 'Pela peşti bıvêne',
+'tooltip-ca-nstab-category' => 'Pela kategoriye bıvêne',
'tooltip-minoredit' => 'Nay vırnayışa werdi nışan bıkeré',
-'tooltip-save' => 'Vurnayışa qeyd ke',
+'tooltip-save' => 'Vurnayışanê xo qeyd ke',
'tooltip-preview' => 'Vurnayışané ğo çımra ravyarné. Verdé qeyd kerdışi eneri bıkarné!',
'tooltip-diff' => 'Metni sero vurnayışan mocneno',
'tooltip-compareselectedversions' => 'Ena per de ferqê rewziyonan de dı weçinaya bıvinê',
'pageinfo-redirects-name' => 'Hetenayışê na perer',
'pageinfo-redirects-value' => '$1',
'pageinfo-subpages-name' => 'Bınpelê na pela',
-'pageinfo-subpages-value' => '$1 ($2 {{PLURAL:$2|hetenayış|hetenayışi}}; $3 {{PLURAL:$3|raykerdışt|raykerdışi}})',
+'pageinfo-subpages-value' => '$1 ($2 {{PLURAL:$2|serçarnayış|serçarnayışi}}; $3 {{PLURAL:$3|nêserçarnayış|nêserçarnayışi}})',
'pageinfo-firstuser' => 'Pela vıraşter',
'pageinfo-firsttime' => 'Demê pela vıraştışi',
'pageinfo-lastuser' => 'Vurnayoğo peyên',
'markaspatrolledtext' => 'Ena pele nişan bike ke devriye biyo',
'markedaspatrolled' => 'Nişan biyo ke verni de devriye biyo',
'markedaspatrolledtext' => 'Versiyone weçinaye [[:$1]] nişan biyo ke devriye biyo',
-'rcpatroldisabled' => 'Dewriyaya vırnayışé bahdoyéni devrera vıciyayé',
+'rcpatroldisabled' => 'Dewriyaya vurnayışê peyêni nêxebetiyena',
'rcpatroldisabledtext' => 'Devriyeyê vurnayışê peyêni inke kefilnaye biyo u nihebitiyeno',
'markedaspatrollederror' => 'Nişan nibeno ke devriye biyo',
'markedaspatrollederrortext' => 'Ti gani revizyon işaret bike ke Nişanê devriye biyo',
'exif-writer' => 'Nuştekar',
'exif-languagecode' => 'Zıwan',
'exif-iimversion' => 'Verqaydê IIM',
-'exif-iimcategory' => 'Kategori',
+'exif-iimcategory' => 'Kategoriye',
'exif-iimsupplementalcategory' => 'Oleyê Kategoriyan',
'exif-datetimeexpires' => 'No peyra mekarênê',
'exif-datetimereleased' => 'Bıroşe',
'exif-dc-publisher' => 'Hesrekar',
'exif-dc-relation' => 'Medyay cı',
'exif-dc-rights' => 'Heqi',
-'exif-dc-source' => 'Medyay çımi',
+'exif-dc-source' => 'Medyaya çımey',
'exif-dc-type' => 'Babeta medyay',
'exif-rating-rejected' => 'Red ke',
E-posta yo ke erşawiyeno tede gıreyê kodê araşti esto, gıreyi pıploxne akerê u e-postayê xo araşt kerê.',
'confirmemail_pending' => 'Yew codê konfirmasyonî ma ti ra şiravt;
Eka ti newe hesabê xo viraşt, ti gani yew di dekika vindero u email xo kontrol bike, yani reyna yew hesab meviraz.',
-'confirmemail_send' => 'Yew kodê konfirmasyonî email mina bişirave',
+'confirmemail_send' => 'Yew kodê konfirmasyoni bırışe',
'confirmemail_sent' => 'Emailê konfirmasyonî şiravt',
'confirmemail_oncreate' => 'Yew codê konfirmasyonî ma ti ra şiravt;
Ena kod semed ci kewtîşî lazim niyo, feqat ti gani sistem rê eno kod bimocne ke ti opsiyonê emailî wîkî a bike.',
'version-version' => '(Versiyon $1)',
'version-svn-revision' => '(r$2)',
'version-license' => 'Lisans',
+'version-ext-license' => 'Lisans',
'version-poweredby-credits' => "Ena wiki, dezginda '''[https://www.mediawiki.org/ MediaWiki]''' ya piya vıraziyaya, heqê telifi © 2001-$1 $2.",
'version-poweredby-others' => 'Zewmi',
'version-poweredby-translators' => "Açernere translatewiki.net'i",
'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath Script path]',
# Special:Redirect
-'redirect' => "Hetenayışa dosyay, karberi yana rewizyona ID'i",
+'redirect' => 'Serşıkıtena dosya, karberi, pele ya ki revizyonê kamiya dosya',
'redirect-legend' => 'Hetenayışa dosya yana pela',
-'redirect-summary' => "Na pera bağsi şıma bena dosya (cıré namey dosya deyeno), zu per (zu ID'A rewizyoni deyaya) yana cıré zu pera karberi beno herın (kamiya karberiya amoriyen). Karkerden: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]], yana [[{{#Special:Redirect}}/user/101]].",
+'redirect-summary' => 'Na pela xase to hetê jû dosya (namey dosya daeyo), jû pele (kamiya revizyoni ya ki pele daiya) ya ki jû pela karberi (kamiya karberia reqemkiye daiya) ser şıknena. Gurenayış: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], ya ki [[{{#Special:Redirect}}/user/101]].',
'redirect-submit' => 'Şo',
'redirect-lookup' => 'Bewni',
'redirect-value' => 'Erc:',
'redirect-user' => 'Kamiya Karberi:',
+'redirect-page' => 'Kamiya pele',
'redirect-revision' => 'Rewizyona pela',
'redirect-file' => 'Namey dosya',
'redirect-not-exists' => 'Erc nêvineyê',
# Special:SpecialPages
'specialpages' => 'Pelê xısusiy',
'specialpages-note-top' => 'Kıtabek',
-'specialpages-note' => '*Normal pera bağsi.
-* <span class="mw-specialpagerestricted">Peré bağseyé ke groté ver hafıza.</span>',
+'specialpages-note' => '* Pelê xasê normali.
+* <span class="mw-specialpagerestricted">Pelê xasê nımıtey.</span>',
'specialpages-group-maintenance' => 'Raporê tepıştışi',
'specialpages-group-other' => 'Pelê xasiyê bini',
'specialpages-group-login' => 'Cı kewe / hesab vıraze',
'tags-active-yes' => 'E',
'tags-active-no' => 'Nê',
'tags-edit' => 'bıvurne',
-'tags-hitcount' => '$1 {{PLURAL:$1|vırnayış|vırnayışi}}',
+'tags-hitcount' => '$1 {{PLURAL:$1|vurnayış|vurnayışi}}',
# Special:ComparePages
'comparepages' => 'Pela miqeyese ke',
'feedback-bugornote' => 'Jew mersela teferruato teknik esta şıma reca malumatê şıma hazıro se [ $1 jew xırab rapor] bıvinê.Zewbi zi, formê cerê xo rê şenê karfiyê. Vatışê xo pela da "[ $3 $2 ]", namey karber dê xoya piya u wasteriya karfiye.',
'feedback-subject' => 'Mersel:',
'feedback-message' => 'Mesac:',
-'feedback-cancel' => 'Bıterkne',
+'feedback-cancel' => 'Bıtexelne',
'feedback-submit' => 'Peyxeberdar Bırşe',
'feedback-adding' => 'Pela rê peyxeberdar defêno...',
'feedback-error1' => 'Xeta: API ra neticey ne vıcyay',
'duration-minutes' => '$1 {{PLURAL:$1|deqa|deqey}}',
'duration-hours' => '($1 {{PLURAL:$1|seate|seati}})',
'duration-days' => '($1 {{PLURAL:$1|roce|roci}})',
-'duration-weeks' => '$1 {{PLURAL: $1|hefte|heftey}}',
+'duration-weeks' => '$1 {{PLURAL:$1|hefte|heftey}}',
'duration-years' => '$1 {{PLURAL:$1|serre|serri}}',
'duration-decades' => '$1 {{PLURAL:$1|dades|dadesi}}',
'duration-centuries' => '$1 {{PLURAL:$1|seserre|seserri}}',
$messages = array(
# User preference toggles
'tog-underline' => 'Wótkaze pódšmarnuś:',
-'tog-justify' => 'Tekst do bloka zrownaś',
'tog-hideminor' => 'Małe změny w aktualnych změnach schowaś',
'tog-hidepatrolled' => 'Doglědowane změny w aktualnych změnach schowaś',
'tog-newpageshidepatrolled' => 'Doglědowane boki z lisćiny nowych bokow schowaś',
'tog-numberheadings' => 'Nadpisma awtomatiski numerěrowaś',
'tog-showtoolbar' => 'Wobźěłowańsku rědku pokazaś',
'tog-editondblclick' => 'Boki z dwójnym kliknjenim wobźěłaś',
-'tog-editsection' => 'Wobźěłanje wótstawkow pśez wótkaze [wobźěłaś] zmóžniś',
'tog-editsectiononrightclick' => 'Wobźěłowanje wótrězkow pśez kliknjenje z pšaweju tastu myški zmóžniś',
-'tog-showtoc' => 'Wopśimjeśe pokazaś, jolic ma bok wěcej nježli 3 nadpisma',
'tog-rememberpassword' => 'Z toś tym wobglědowakom pśizjawjony wóstaś (za maksimalnje $1 {{PLURAL:$1|źeń|dnja|dny|dnjow}})',
'tog-watchcreations' => 'Boki, kótarež napórajom a dataje, kótarež nagrawam, wobglědowaś',
'tog-watchdefault' => 'Boki a dataje , kótarež změnijom, wobglědowaś',
'otherlanguages' => 'W drugich rěcach',
'redirectedfrom' => '(pósrědnjone z boka „$1”)',
'redirectpagesub' => 'Dalejpósrědnjenje',
-'lastmodifiedat' => 'Slědna změna boka: $1 w $2 goź.',
+'lastmodifiedat' => 'Slědna změna boka: $1 w $2 góź.',
'viewcount' => 'Toś ten bok jo był woglědany {{PLURAL:$1|jaden raz|$1 raza|$1 raze}}.',
'protectedpage' => 'Śćitany bok',
'jumpto' => 'Źi na bok:',
# Virus scanner
'virus-badscanner' => "Špatna konfiguracija: njeznaty wirusowy scanner: ''$1''",
-'virus-scanfailed' => 'Scannowanje jo se njeraźiło (kod $1)',
+'virus-scanfailed' => 'Scannowanje njejo se raźiło (koda $1)',
'virus-unknownscanner' => 'njeznaty antiwirus:',
# Login and logout pages
'retypenew' => 'Nowe šćitne gronidło (hyšći raz):',
'resetpass_submit' => 'Šćitne gronidło nastajiś a se pśizjawiś',
'changepassword-success' => 'Twóje gronidło jo se wuspěšnje změniło!',
+'changepassword-throttled' => 'Sy pśecesto wopytał se pśizjawiś.
+Pócakaj pšosym $1, nježli až wopytajoš znowego.',
'resetpass_forbidden' => 'Gronidła njedaju se změniś',
'resetpass-no-info' => 'Dejš pśizjawjony byś, aby direktny pśistup na toś ten bok měł.',
'resetpass-submit-loggedin' => 'Gronidło změniś',
Nachylne gronidło: $2',
'passwordreset-emailsent' => 'E-mail za anulěrowanje gronidła jo se pósłała.',
'passwordreset-emailsent-capture' => 'E-mail za anulěrowanje gronidła jo se pósłała, kótaraž pokazujo se dołojce.',
-'passwordreset-emailerror-capture' => 'E-mail za anulěrowanje gronidła jo se napórała, kótaraž se dołojce pokazujo, ale słanje {{GENDER:$2|wužywarjeju|wužywarce}} jo se njeraźiło: $1',
+'passwordreset-emailerror-capture' => 'E-mail za anulěrowanje gronidła jo se napórała, kótaraž se dołojce pokazujo, ale słanje {{GENDER:$2|wužywarjeju|wužywarce}} njejo se raźiło: $1',
# Special:ChangeEmail
'changeemail' => 'E-mailowu adresu změniś',
'changeemail-password' => 'Twójo gronidło za {{GRAMMAR:akuzatiw|{{SITENAME}}}}',
'changeemail-submit' => 'E-mailowu adresu změniś',
'changeemail-cancel' => 'Pśetergnuś',
+'changeemail-throttled' => 'Sy pśecesto wopytał se pśizjawiś.
+Pócakaj pšosym $1, nježli až wopytajoš znowego.',
# Special:ResetTokens
'resettokens' => 'Tokeny slědk stajiś',
'edit-already-exists' => 'Njejo móžno było nowy bok napóraś.
Eksistěrujo južo.',
'defaultmessagetext' => 'Standardny tekst powěźeńki',
-'content-failed-to-parse' => 'Parsowanje wopśimjeśa $2 za model $1 jo se njeraźiło: $3',
+'content-failed-to-parse' => 'Parsowanje wopśimjeśa $2 za model $1 njejo se raźiło: $3',
'invalid-content-data' => 'Njepłaśiwe wopśimjeśowe daty',
'content-not-allowed-here' => 'Wopśimjeśe "$1" njejo na boku [[$2]] dowólone',
'editwarning-warning' => 'Gaž toś ten bok se spušća, mógu se změny zgubiś, kótarež sy pśewjadł.
Jolic sy pśizjawjeny, móžoš toś to warnowanje we wótrězku „Wobźěłaś“ swójich nastajenjow znjemóžniś.',
+'editpage-notsupportedcontentformat-title' => 'Wopśimjeśowy format se njepódpěra.',
+'editpage-notsupportedcontentformat-text' => 'Wopśimjeśowy format $1 njepódpěra se pśez wopśimjeśowy model $2.',
# Content models
'content-model-wikitext' => 'wikitekst',
'showhideselectedversions' => 'Wubrane wersije pokazaś/schowaś',
'editundo' => 'wótwrośiś',
'diff-empty' => '(Žeden rozdźěl)',
-'diff-multi' => '({{PLURAL:$1|Jadna mjazywersija|$1 mjazywersiji|$1 mjazywersije|$1 mjazywersijow}} wót {{PLURAL:$2|jadnogo wužywarja|$2 wužywarjowu|$2 wužywarjow|$2 wužywarjow}} {{PLURAL:$1|njepokazana|njepokazanej|njepokazane|njepokazane}})',
'diff-multi-manyusers' => '({{PLURAL:$1|Jadna mjazywersija|$1 mjazywersiji|$1 mjazywersije|$1 mjazywersijow}} wót wěcej ako {{PLURAL:$2|jadnogo wužywarja|$2 wužywarjowu|$2 wužywarjow|$2 wužywarjow}} {{PLURAL:$1|njepokazana|njepokazanej|njepokazane|njepokazane}})',
'difference-missing-revision' => '{{PLURAL:$2|Jadna wersija|$2 wersiji|$2 wersije|$2 wersijow}} toś togo rozdźěla ($1) {{PLURAL:$2|njejo se namakała|njejstej se namakałej|njejsu namakali|njejo se namakało}}.
'search-result-score' => 'Relewanca: $1 %',
'search-redirect' => '(pśesměrowanje $1)',
'search-section' => '(sekcija $1)',
+'search-file-match' => '(wótpowědujo datajowemu wopśimjeśeju)',
'search-suggest' => 'Měnjašo $1?',
'search-interwiki-caption' => 'Sotšine projekty',
'search-interwiki-default' => '$1 wuslědki:',
'rows' => 'Rědki:',
'columns' => 'Słupy:',
'searchresultshead' => 'Pytaś',
-'resultsperpage' => 'Wuslědki na bok:',
'stub-threshold' => 'Formatěrowanje <a href="#" class="stub">wótkaza na zarodk</a> (w bytach):',
'stub-threshold-disabled' => 'Znjemóžnjony',
'recentchangesdays' => 'Licba dnjow, kenž se pokazuju w "slědnych změnach":',
'action-undelete' => 'Toś ten bok wótnowiś',
'action-suppressrevision' => 'schowanu wersiju pśeglědaś a wótnowiś',
'action-suppressionlog' => 'toś ten priwatny protokol zwobrazniś',
-'action-block' => 'Toś tomu wužiwarjeju wobźěłowanje zawoboraś',
+'action-block' => 'Toś tomu wužywarjeju wobźěłowanje zawoboraś',
'action-protect' => 'Šćitowe stopnje za toś ten bok změniś',
'action-rollback' => 'změny slědnego wužywarja, kótaryž jo wobźěłał wěsty bok, malsnje slědk stajiś',
'action-import' => 'boki z drugego wikija importěrowaś',
[[File:$1|thumb|center|$1]]',
'file-exists-duplicate' => 'Toś ta dataja jo duplikat {{PLURAL:$1|slědujuceje dataje|slědujuceju datajow|slědujucych datajow|slědujucych datajow}}:',
'file-deleted-duplicate' => 'Dataja, kótaraž jo identiska z toś teju dataju ([[:$1]]) jo se pjerwjej wulašowała. Ty měł stawizny wulašowanja toś teje dataje pśeglědaś, pjerwjej až pokšacujoš z jeje zasejnagrawanjom.',
+'file-deleted-duplicate-notitle' => 'Z toś teju dataju identiska dataja jo se do togo wulašowała, a titel jo so pódtłocył. Ty by měł se někogo pšašaś, kótaryž ma móžnosć, se pódtłocone daty woglědaś, aby situaciju pśeglědał, nježli až nagrajoš ju znowego.',
'uploadwarning' => 'Warnowanje',
'uploadwarning-text' => 'Pšosym změń slědujuce datajowe wopisanje a wopytaj hyšći raz.',
'savefile' => 'Dataju składowaś',
'uploadstash-summary' => 'Toś ten bok zmóžnja dostup do datajow, kótarež su nagrate (abo so nagrawaju), ale hyšći njejsu do wikija wózjawjone. Toś te dataje njejsu widobne za nikogo, mimo až za wužywarja, kótaryž jo je nagrał.',
'uploadstash-clear' => 'Schowane nagrate dataje wulašowaś',
'uploadstash-nofiles' => 'Njamaš schowane nagrate dataje.',
-'uploadstash-badtoken' => 'Wuwjeźenje teje akcije jo se njeraźiło, snaź dokulaž twóje wobźěłowańske daty su spadnjone. Wopytaj hyšći raz.',
-'uploadstash-errclear' => 'Wótpóranje datajow jo se njeraźiło.',
+'uploadstash-badtoken' => 'Wuwjeźenje teje akcije njejo se raźiło, snaź dokulaž twóje wobźěłowańske daty su spadnjone. Wopytaj hyšći raz.',
+'uploadstash-errclear' => 'Wótpóranje datajow njejo se raźiło.',
'uploadstash-refresh' => 'Lisćinu datajow aktualizěrowaś',
'invalid-chunk-offset' => 'Njepłaśiwy startowy dypk',
# HTTP errors
'http-invalid-url' => 'Njepłaśiwy URL: $1',
'http-invalid-scheme' => 'URL ze šemu "$1" se njepódpěraju.',
-'http-request-error' => 'HTTP-napšašowanje jo se njeraźiło njeznateje zmólki dla.',
+'http-request-error' => 'HTTP-napšašowanje njejo se raźiło njeznateje zmólki dla.',
'http-read-error' => 'Cytańska zmólka HTTP.',
'http-timed-out' => 'HTTP-napšašowanje jo cas pśekšocyło.',
'http-curl-error' => 'Zmólka pśi wótwółowanju URL: $1',
'protectedpages' => 'Šćitane boki',
'protectedpages-indef' => 'Jano boki pokazaś, kótarež su na njewěsty cas šćitane',
'protectedpages-cascade' => 'Jano boki z kaskadowym šćitom',
+'protectedpages-noredirect' => 'Dalejpósrědnjenja schowaś',
'protectedpagesempty' => 'Z toś tymi parametrami njejsu tuchylu žedne boki šćitane.',
'protectedtitles' => 'Šćitane titele',
'protectedtitlesempty' => 'Tuchylu njejsu žedne boki z pódanych parametrami šćitane.',
'watchmethod-list' => 'Pśepytanje wobglědowanych bokow za aktualnymi změnami',
'watchlistcontains' => 'Twója wobglědowańka wopśimujo $1 {{PLURAL:$1|bok|boka|boki|bokow}}.',
'iteminvalidname' => 'Problem ze zapisom „$1“, njepłaśece mě.',
-'wlnote' => "{{PLURAL:$1|Slědujo slědna změna|slědujotej '''$1''' slědnej změnje|slěduju slědne '''$1''' změny}} {{PLURAL:$2|slědneje góźiny|slědneju '''$2''' góźinowu|slědnych '''$2''' góźinow}}, staw: $3, $4.",
'wlshowlast' => 'Pokaž změny slědnych $1 góźinow, $2 dnjow abo $3 (w slědnych 30 dnjach).',
'watchlist-options' => 'Opcije wobglědowańki',
'delete-toobig' => 'Toś ten bok ma z wěcej nježli $1 {{PLURAL:$1|wersiju|wersijomaj|wersijami|wersijami}} dłujku historiju. Lašowanje takich bokow bu wobgranicowane, aby wobškoźenju {{GRAMMAR:genitiw|{{SITENAME}}}} z pśigódy zajźowało.',
'delete-warning-toobig' => 'Toś ten bok ma z wěcej ako $1 {{PLURAL:$1|wersiju|wersijomaj|wersijami|wersijami}} dłujke stawizny. Jich wulašowanje móžo źěło datoweje banki na {{SITENAME}} kazyś;
póstupujśo z glědanim.',
+'deleting-backlinks-warning' => "'''Warnowanje:''' Druge boki wótkazuju k bokoju abo bok jo hynźi zapśěgnjony, kótaryž coš wulašowaś.",
# Rollback
'rollback' => 'Wobźěłanja slědk wześ',
'undeletedrevisions' => '{{PLURAL:$1|1 wersija jo se nawrośiła|$1 wersiji stej se nawrośiłej|$1 wersije su se nawrośili}}.',
'undeletedrevisions-files' => '{{PLURAL:$1|1 wersija|$1 wersiji|$1 wersije}} a {{PLURAL:$2|1 dataja|$2 dataji|$2 dataje}} {{PLURAL:$2|jo se nawrośiła|stej se nawrośiłej|su se nawrośili}}.',
'undeletedfiles' => '{{PLURAL:$1|1 dataja jo se nawrośiła|$1 dataji stej se nawrośiłej|$1 dataje su se nawrośili}}.',
-'cannotundelete' => 'Wótnowjenje jo se njeraźiło:
+'cannotundelete' => 'Wótnowjenje njejo se raźiło:
$1',
'undeletedpage' => "Bok '''$1''' jo se nawrośił.
Glědaj do [[Special:BlockList|lisćiny blokěrowanjow]], aby blokěrowanja pśeglědał.',
'ipb-blockingself' => 'Coš samogo blokěrowaś! Coš to napšawdu cyniś?',
'ipb-confirmhideuser' => 'Coš rowno wužywarja z nastajenim "wužywarja schowaś" blokěrowaś. To k tomu dowjeźo, až mě wužywarja pódłocyjo se we wšych lisćinach a protokolowych zapiskach. Coš to napšawdu cyniś?',
+'ipb-confirmaction' => 'Jolic sy se wěsty, až coš to napšawdu cyniś, pśeglědaj pšosym dołojce pólo "{{int:ipb-confirm}}".',
'ipb-edit-dropdown' => 'Pśicyny blokěrowanja wobźěłaś',
'ipb-unblock-addr' => '$1 dopušćiś',
'ipb-unblock' => 'Wužywarske mě abo IP-adresu dopušćiś',
'range_block_disabled' => 'Móžnosć administratora, blokěrowaś cełe adresowe rumy, njejo aktiwěrowana.',
'ipb_expiry_invalid' => 'Pódany cas jo njepłaśecy.',
'ipb_expiry_temp' => 'Blokěrowanja schowanych wužywarskich mjenjow deje permanentne byś.',
-'ipb_hide_invalid' => 'Njejo móžno toś to konto pódtłocyś; jo snaź pśewjele změnow.',
+'ipb_hide_invalid' => 'Njejo móžno toś to konto pódtłocyś; ma wěcej ako {{PLURAL:$1|jadnu změnu|$1 změnje|$1 změny|$1 změnow}}.',
'ipb_already_blocked' => '"$1" jo južo blokěrowany.',
'ipb-needreblock' => '$1 jo južo zablokěrowany. Coš nastajenja změniś?',
'ipb-otherblocks-header' => '{{PLURAL:$1|Druge blokěrowanje|Drugej blokěrowani|Druge blokěrowanja|Druge blokěrowanja}}',
'importhistoryconflict' => 'Konflikt wersijow (snaź jo toś ten bok južo raz se importěrował)',
'importnosources' => 'Za transwikijowe importěrowanje njejsu žrědła definěrowane, direktne stawizny nagraśow su znjemóžnjone.',
'importnofile' => 'Žedna dataja za importěrowanje njejo se nagrała.',
-'importuploaderrorsize' => 'Nagrawanje importoweje dataje jo se njeraźiło. Dataja jo wětša ako dowólona wjelikosć nagraśow.',
-'importuploaderrorpartial' => 'Nagrawanje importoweje dataje jo se njeraźiło. Dataja jo se jano pó źělach nagrała.',
-'importuploaderrortemp' => 'Nagrawanje importoweje dataje jo se njeraźiło. Temporarny zapis feluje.',
+'importuploaderrorsize' => 'Nagrawanje importoweje dataje njejo se raźiło. Dataja jo wětša ako dowólona wjelikosć nagraśow.',
+'importuploaderrorpartial' => 'Nagrawanje importoweje dataje njejo se raźiło. Dataja jo se jano pó źělach nagrała.',
+'importuploaderrortemp' => 'Nagrawanje importoweje dataje njejo se raźiło. Temporarny zapis felujo.',
'import-parse-failure' => 'Zmólka pśi XML-imporśe:',
'import-noarticle' => 'Žeden bok za import!',
'import-nonewrevisions' => 'Wšykne wersije buchu južo pjerwjej importowane.',
'tooltip-pt-watchlist' => 'Lisćina bokow, kótarež se wobglěduju',
'tooltip-pt-mycontris' => 'Lisćina twójich pśinoskow',
'tooltip-pt-login' => 'Pśizjawjenje njejo obligatoriske, ale lubje witane.',
-'tooltip-pt-anonlogin' => 'Pśizjawjenje njejo obligatoriske, ale lubje witane.',
'tooltip-pt-logout' => 'Wótzjawiś',
'tooltip-ca-talk' => 'Diskusija wó wopśimjeśu boka',
'tooltip-ca-edit' => 'Móžoš bok wobźěłaś. Nježlic składujoš, wužywaj pšosym funkciju "pśeglěd".',
'markedaspatrollederrortext' => 'Musyš wersiju wuzwóliś.',
'markedaspatrollederror-noautopatrol' => 'Njesmějoš swóje změny ako kontrolěrowane markěrowaś.',
'markedaspatrollednotify' => 'Toś ta změna do $1 jo se ako doglědowana markěrowała.',
-'markedaspatrollederrornotify' => 'Markěrowanje ako doglědowane jo se njeraźiło.',
+'markedaspatrollederrornotify' => 'Markěrowanje ako doglědowane njejo se raźiło.',
# Patrol log
'patrol-log-page' => 'Protokol kontrolow',
'minutes' => '{{PLURAL:$1|$1 minutu|$1 minutoma|$1 minutami|$1 minutami}}',
'hours' => '{{PLURAL:$1|$1 góźinu|$1 góźinoma|$1 góźinami|$1 góźinami}}',
'days' => '{{PLURAL:$1|$1 dnjom|$1 dnjoma|$1 dnjami|$1 dnjami}}',
-'weeks' => '{{PLURAL: $1|$1 tyźeń|$1 tyźenja|$1 tyźenje|$1 tyźenjow}}',
+'weeks' => '{{PLURAL:$1|$1 tyźeń|$1 tyźenja|$1 tyźenje|$1 tyźenjow}}',
'months' => '{{PLURAL:$1|$1 mjasecom|$1 mjasecoma|$1 mjasecami}}',
'years' => '{{PLURAL:$1|$1 lětom|$1 lětoma|$1 lětami}}',
'ago' => 'pśed $1',
# Metadata
'metadata' => 'Metadaty',
-'metadata-help' => 'Toś ta dataja wopśimjejo pśidatne informacije, kótarež nejskerjej póchadaju wót digitalneje kamery abo scannera. Jolic dataja bu pozdźej změnjona, njeby mógli někotare detaile změnjonu dataju wótbłyšćowaś.',
+'metadata-help' => 'Toś ta dataja wopśimjejo pśidatne informacije, kótarež nejskerjej póchadaju wót digitalneje kamery abo scannera. Jolic dataja bu pózdźej změnjona, njeby mógli někotare detaile změnjonu dataju wótbłyšćowaś.',
'metadata-expand' => 'rozšyrjone detaile pokazaś',
'metadata-collapse' => 'rozšyrjone detaile schowaś',
'metadata-fields' => 'Slědujuce póla metadatow, kótarež su w toś tej powěźeńce pódane, budu se do bokow wopisanja wobrazow zapśimowaś, gaž tabela metadatow jo schowana. Druge se pó standarźe njepokazuju.
# Scary transclusion
'scarytranscludedisabled' => '[Pśidawanje interwiki jo deaktiwěrowane]',
'scarytranscludefailed' => '[Zapśěgnjenje pśedłogi za $1 njejo se raźiło]',
-'scarytranscludefailed-httpstatus' => '[Wótwołanje pśedłogi za $1 jo se njeraźiło: HTTP $2]',
+'scarytranscludefailed-httpstatus' => '[Wótwołanje pśedłogi za $1 njejo se raźiło: HTTP $2]',
'scarytranscludetoolong' => '[URL jo pśedłujki]',
# Delete conflict
'version-parser-function-hooks' => 'Parserowe funkcije',
'version-hook-name' => 'Mě kokule',
'version-hook-subscribedby' => 'Aboněrowany wót',
-'version-version' => '(Wersija $1)',
-'version-license' => 'Licenca',
+'version-version' => '($1)',
+'version-license' => 'Licenca MediaWiki',
+'version-ext-license' => 'Licenca',
+'version-ext-colheader-name' => 'Rozšyrjenje',
+'version-ext-colheader-version' => 'Wersija',
+'version-ext-colheader-license' => 'Licenca',
+'version-ext-colheader-description' => 'Wopisanje',
+'version-ext-colheader-credits' => 'Awtory',
+'version-license-title' => 'Licenca za $1',
+'version-license-not-found' => 'Za toś to rozšyrjenje njejsu se žedne nadrobne licencne informacije namakali.',
+'version-credits-title' => 'Źěkowanja za $1',
+'version-credits-not-found' => 'Za toś to rozšyrjenje njejsu žedne źěkowańske informacije namakali.',
'version-poweredby-credits' => "Toś ten wiki spěchujo se wót '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
'version-poweredby-others' => 'druge',
'version-poweredby-translators' => 'Pśełožowarje na translatewiki.net',
'feedback-submit' => 'Komentar wótpósłaś',
'feedback-adding' => 'Komentar pśidawa se bokoju...',
'feedback-error1' => 'Zmólka: Njepóznaty wuslědk wót API',
-'feedback-error2' => 'Zmólka: Wobźěłanje jo se njeraźiło',
+'feedback-error2' => 'Zmólka: Wobźěłanje njejo se raźiło',
'feedback-error3' => 'Zmólka: Žedne wótegrono wót API',
'feedback-thanks' => 'Źěkujomy se! Twój komentar jo se k bokoju "[$2 $1]" pósłał.',
'feedback-close' => 'Dokóńcony',
'api-error-duplicate-popup-title' => '{{PLURAL:$1|Dwójna dataja|Dwójnej dataji|Dwójne dataje|Dwójne dataje}}',
'api-error-empty-file' => 'Dataja, kótaruž sy nagrał, jo prozna była.',
'api-error-emptypage' => 'Napóranje nowych, proznych bokow njejo dowólone.',
-'api-error-fetchfileerror' => 'Nutśikowna zmólka: Pśii wobstarowanju dataje jo se něco njeraźiło.',
+'api-error-fetchfileerror' => 'Nutśikowna zmólka: Pśi wobstarowanju dataje něco njejo se raźiło.',
'api-error-fileexists-forbidden' => 'Dataja z mjenim "$1" južo eksistěrujo, a njedajo se pśepisaś.',
'api-error-fileexists-shared-forbidden' => 'Dataja z mjenim "$1" južo eksistěrujo w zgromadnem datajowem repozitoriumje a njedajo se pśepisaś.',
'api-error-file-too-large' => 'Dataja, kótaruž sy nagrał, jo pśewjelika była.',
'api-error-hookaborted' => 'Změna, kótaruž sy wopytał pśewjasć, jo se pśetergnuła pśez rozšyrjenje.',
'api-error-http' => 'Nutśikowna zmólka: Zwisk ze serwerom njemóžno.',
'api-error-illegal-filename' => 'Datajowe mě njejo dowólone.',
-'api-error-internal-error' => 'Nutśikowna zmólka: Pśi pśeźěłowanju twójogo nagraśa na wiki jo se něco njeraźiło.',
+'api-error-internal-error' => 'Nutśikowna zmólka: Pśi pśeźěłowanju twójogo nagraśa na wiki něco njejo se raźiło.',
'api-error-invalid-file-key' => 'Nutśikowna zmólka: Dataja njejo se w temporernem składowaku namakała.',
'api-error-missingparam' => 'Nutśikowna zmólka: Felujuce parametry pśi napšašowanju.',
'api-error-missingresult' => 'Nutśikowna zmólka: Njedajo se zwěsćiś, lěc kopěrowanje jo se raźiło.',
'api-error-overwrite' => 'Pśepisowanje eksistujuceje dataje njejo dowólone.',
'api-error-stashfailed' => 'Nutśikowna zmólka: Serwer njejo mógał temporernu dataju składowaś.',
'api-error-publishfailed' => 'Nutśkowna zmólka: Serwer njejo mógł nachylnu dataju wozjawiś.',
+'api-error-stasherror' => 'Pśi nagrawanju dataje do chowanki jo zmólka nastała.',
'api-error-timeout' => 'Serwer njejo we wócakanem casu wótgronił.',
'api-error-unclassified' => 'Njeznata zmólka jo nastała.',
'api-error-unknown-code' => 'Njeznata zmólka: "$1"',
-'api-error-unknown-error' => 'Nutśikowna zmólka: Pśi nagrawanju twójeje dataje jo se něco njeraźiło.',
+'api-error-unknown-error' => 'Nutśikowna zmólka: Pśi nagrawanju twójeje dataje něco njejo se raźiło.',
'api-error-unknown-warning' => 'Njeznate warnowanje: $1',
'api-error-unknownerror' => 'Njeznata zmólka: "$1".',
'api-error-uploaddisabled' => 'Nagraśa su na toś tom wikiju znjemóžnjone.',
'duration-minutes' => '$1 {{PLURAL:$1|minuta|minuśe|minuty|minutow}}',
'duration-hours' => '$1 {{PLURAL:$1|góźina|góźinje|góźiny|góźinow}}',
'duration-days' => '$1 {{PLURAL:$1|źeń|dnja|dny|dnjow}}',
-'duration-weeks' => '$1 {{PLURAL: $1|tyźeń|tyźenja|tyźenje|tyźenjow}}',
-'duration-years' => '$1 {{PLURAL: $1|lěto|lěśe|lěta|lět}}',
+'duration-weeks' => '$1 {{PLURAL:$1|tyźeń|tyźenja|tyźenje|tyźenjow}}',
+'duration-years' => '$1 {{PLURAL:$1|lěto|lěśe|lěta|lět}}',
'duration-decades' => '$1 {{PLURAL:$1|lětźasetk|lětźasetka|lětźasetki|lětźastkow}}',
'duration-centuries' => '$1 {{PLURAL:$1|stolěśe|stolěśi|stolěśa|stolěśow}}',
'duration-millennia' => '$1 {{PLURAL:$1|lěttysac|lěttysaca|lěttysace|lěttysacow}}',
'expand_templates_generate_rawhtml' => 'Gropny HTML pokazaś',
'expand_templates_preview' => 'Pśeglěd',
+# Unknown messages
+'createaccount-hook-aborted' => '$1',
+'uploadinvalidxml' => 'XML w nagratej dataji njedajo se parsowaś.',
);
$messages = array(
# User preference toggles
'tog-underline' => 'Mangagaris pioputan:',
-'tog-justify' => 'Kasagaan kiparagrap',
'tog-hideminor' => 'Lisoko idit tokoro ih wagu kaalanai.',
'tog-hidepatrolled' => 'Lisoko idit tinamangan ih wagu kaalanai',
'tog-newpageshidepatrolled' => 'Lisoko bolikon tinamangan mantad lis bolikon kawawagu',
'tog-numberheadings' => 'oporian-mongonumbur it tuluhon',
'tog-showtoolbar' => 'Pokitono kakamotbar mongidit (momoguno JawaSikrip)',
'tog-editondblclick' => 'Idito bolikon momoguno induaan todos (momoguno JawaSikrip)',
-'tog-editsection' => 'Pabanaro sikson mongidit mamakai noputan (idit)',
'tog-editsectiononrightclick' => 'Pabanaro sikson mongidit momoguno todos golibang id sikson tuluon (momoguno JawaSikrip)',
-'tog-showtoc' => 'Pokitono mija sinuang-suang (montok bolikon di kolobi do 3 tuluhon)',
'tog-rememberpassword' => 'Soroho ot loginku id popogihuman diti (gisom solinaid do $1 {{PLURAL:$1|tadau|madau}})',
'tog-watchcreations' => 'Ruhangai bolikon di winonsoiku om nogi pail pinosuangku id lisintanganku',
'tog-watchdefault' => 'Ruhangai bolikon om tangapail di niditku id lisintanganku',
'compareselectedversions' => 'Popitimbang sinimakan nopili',
'showhideselectedversions' => 'Pokitono/polisoko sinimakan nopili',
'editundo' => 'suguto mongidit',
-'diff-multi' => '({{PLURAL:$1|Iso sinimakan pintangaan|$1 tongosinimakan pintangaan}} di {{PLURAL:$2|iso momomoguno|$2 momomoguno}} awu pokitonon)',
# Search results
'searchresults' => 'Kootuson nihuman',
'watchthispage' => 'މި ޞަފްޙާއަށް ނަޒަރުބަހައްޓަވާ',
'unwatch' => 'ހާއްސަ ނަޒަރުން އުނިކުރޭ',
'watchlistcontains' => 'ތިޔަބޭފުޅާގެ ހާއްސަ ނަޒަރު ފިހުރިސްތުގައި ވަނީ $1 ޞަފްޙާއެވެ.',
-'wlnote' => 'ތިރީގައި މިވަނީ އެއީ ފާއިތުވި <b>$2</b> ގަޑި އިރުގެ ތެރޭގައިގެނެވިފައިވާ ފަހު $1 ބަދަލެވެ.',
'changed' => 'ބަދަލުކުރެވިއްޖެ',
# User preference toggles
'tog-underline' => "Tîra 'na rîga sòta i colegamèint.",
'tog-hideminor' => "Lōga 'l mudéfichi pió céchi int al j ûltmi mudéfichi.",
-'tog-hidepatrolled' => "Lōga 'l mudéfichi verifichêdi int al j ûltmi modéfichi",
+'tog-hidepatrolled' => "Lōga 'l mudéfichi verifichêdi int al j ûltmi mudéfichi",
'tog-newpageshidepatrolled' => "Lōga al pàgini verifichêdi da l'elèinch dal pàgini pió nōvi.",
'tog-extendwatchlist' => "Fà vèder tót' al mudéfichi fât a i tgnû sòt ôc, mìa sōl l'ûltma.",
'tog-usenewrc' => "Unés al mudéfichi per pàgina int al j ûltmi mudéfichi e in quî tgnû sòt' ôc.",
'tog-numberheadings' => 'Cûnta automâtica di tétol ed sesiòun.',
'tog-showtoolbar' => 'Fà vèder la bâra di strumèint ed mudéfica.',
'tog-editondblclick' => "Mudéfica 'l pàgini cun un cléch dòpi.",
-'tog-editsection' => 'Mudéfica dal sesiòun per mèz dal colegamèint [mudéfica].',
'tog-editsectiononrightclick' => 'Mudéfica dal sesiòun per mèz dal cléch a dréta insém al tétol.',
-'tog-showtoc' => "Fà vèder al sûnt (p'r al pàgini cun pió 'd 3 sesiòun)",
+'tog-rememberpassword' => "Tîn a mèint la cêva 'd ingrès insém a cól navigadōr ché (per un mâsim ed $1{{PLURAL:$1|dé}}).",
+'tog-watchcreations' => "Zûnta al pàgini fâti e i file carghê int i tgnû 'd ôc specêl.",
+'tog-watchdefault' => "Zûnta al pàgini e i file mudifichê int i tgnû 'd ôc specêl.",
+'tog-watchmoves' => "Zûnta al pàgini e i file spustê int i tgnû 'd ôc specêl.",
+'tog-watchdeletion' => "Zûnta al pàgini e i file scanşlê int i tgnû 'd ôc specêl.",
+'tog-minordefault' => 'Sògna ògni mudéfica cme céca (sōl cme pre-stabilî)',
+'tog-previewontop' => "Fà vèder còl ch' ò fât sōver la caşèla ed mudéfica e mìa sòta.",
+'tog-previewonfirst' => "Fà vèder còl ch' ò fât almēno 'na vôlta préma 'd salvêr",
+'tog-enotifwatchlistpages' => "Mândon un avîş cun la pôsta eletrônica quând a vîn cambiê 'na pàgina o un file preşèint int i tgnû 'd ôc specêl",
+'tog-enotifusertalkpages' => "Mândon un avîş cun la pôsta eletrônica quând a vîn cambiê la mé pàgina 'd discusiòun",
+'tog-enotifminoredits' => "Mândom un avîş ânca p'r al mudéfichi céchi ed pàgini e file",
+'tog-enotifrevealaddr' => "Fà vèder al mé indirés ed la pôsta eletrônica int i mesâg 'd avîş",
+'tog-shownumberswatching' => "Fà vèder al nómer ed j utèint che gh'àn la pàgina sòta uservasiòun",
+'tog-oldsig' => "La fîrma 'd adèsa",
+'tog-fancysig' => 'Trâta la fîrma cme wikitèst (sèinsa colegamèint avtomâtich)',
+'tog-uselivepreview' => 'Permèt la funsiòun "Live preview" (guêrda préma \'d salvêr dal vîv - in sperimèint)',
+'tog-forceeditsummary' => "Dmânda s'l'è vèira che al câmp argumèint l' é vōd",
+'tog-watchlisthideown' => "Lōga al mé mudéfichi int i tgnû 'd ôc specêl",
+'tog-watchlisthidebots' => "Lōga al mudéfichi di bot int i tgnû 'd ôc specêl",
+'tog-watchlisthideminor' => "Lōga al mudéfichi céchi int i tgnû 'd ôc specêl",
+'tog-watchlisthideliu' => "Lōga al mudéfichi 'd j utèint registrê int i tgnû 'd ôc specêl",
+'tog-watchlisthideanons' => "Lōga al mudéfichi 'd j utèint sèinsa nòm int i tgnû 'd ôc specêl",
+'tog-watchlisthidepatrolled' => "Lōga al mudéfichi verifichêdi int i tgnû 'd ôc specêl",
+'tog-ccmeonemails' => "Mândom 'na côpia di mesâg spidî a chiêter utèint",
+'tog-diffonly' => "An fê mia vèder còl che gh'é dèinter int la pàgina dôp al cunfrûnt tr'al versiòun",
+'tog-showhiddencats' => 'Fà vèder al categoréi lughêdi',
+'tog-norollbackdiff' => 'An fê mia vèder al cunfrûnt tr\' al versiòun dôp avèir fât un "rollback"',
+'tog-useeditwarning' => "Avîşom quând a vâgh fōra da 'na pàgina d' mudéfica e an n'ò mìa salvê al mudéfichi fâti",
+'tog-prefershttps' => "Drōva sèimper un colegamèint sicûr quând ét fê l'ingès",
+
+'underline-always' => 'Sèimper',
+'underline-never' => 'Mài',
+'underline-default' => "Mantî al j impustasiòun dal navigadōr o 'd la skin",
+
+# Font style option in Special:Preferences
+'editfont-style' => "Stîl dal carâter int la caşèla 'd mudéfica:",
+'editfont-default' => 'Pre-stabilî dal navigadōr',
+'editfont-monospace' => 'Carâter a larghésa fésa',
+'editfont-sansserif' => 'Carâter sans-serif',
+'editfont-serif' => 'Carâter serif',
# Dates
+'sunday' => 'Dumènica',
+'monday' => 'lunedé',
+'tuesday' => 'Martedé',
+'wednesday' => 'Mercordé',
+'thursday' => 'Giovedé',
+'friday' => 'Venerdé',
+'saturday' => 'Sâbet',
'sun' => 'Dum',
'mon' => 'Lun',
'tue' => 'Mar',
'oct' => 'Utò',
'nov' => 'Nov',
'dec' => 'Dic',
+'january-date' => 'Znêr $1',
+'february-date' => 'Fervêr $1',
+'march-date' => 'Mêrs $1',
+'april-date' => 'Avrîl $1',
+'may-date' => 'Mâg $1',
+'june-date' => 'Zógn $1',
+'july-date' => 'Lój $1',
+'august-date' => 'Agòst $1',
+'september-date' => 'Setèmber $1',
+'october-date' => 'Otòber $1',
+'november-date' => 'Novèmber $1',
+'december-date' => 'Dicèmber $1',
# Categories related messages
'pagecategories' => '{{PLURAL:$1|Categoréia!Categoréi}}',
+'category_header' => "Pàgini 'd la categoréia $1",
+'subcategories' => 'Sòt-categoréi',
+'category-media-header' => "File int la categoréia ''$1''",
+'category-empty' => '"Al mumèint la categoréia l\'an ghà mìa nisóna pàgina o file multimediêl."',
'hidden-categories' => '{{PLURAL:$1|Categoréia lughêda|Categoréi lughêdi}}',
+'hidden-category-category' => 'Categoréi lughêdi',
+'category-subcat-count' => "{{PLURAL:$2|In cla categoréia ché a gh'é sōl 'n'ónica sòt-categoréia.| In cla categoréia ché a gh'é {{PLURAL:$1|la sòt-categoréia sgnêda|al $1 sòt-categoréi sgnêdi}} ed sègvit, só 'n totêl ed $2.}}",
+'category-subcat-count-limited' => "In cla categoréia ché a gh'é{{PLURAL:$1|'na sòt-categoréia, nutêda|$1 sòt-categoréi, nutêdi}}ché 'd sègvit.",
+'category-article-count' => "{{PLURAL:$2|In cla categoréia ché a gh'é sōl 'na pàgina, sgnêda ché.|In cla categoréia ché gh'é{{PLURAL:$1|la pàgina sgnêda| al pàgini $1 sgnêdi}} ed sègvit, in un totêl ed $2.}}",
+'category-article-count-limited' => "In cla categoréia ché a gh'é {{PLURAL:$1|la pàgina nutêda|al $1 pàgini nutêdi ch'é 'd sègvit.}}",
+'category-file-count' => "{{PLURAL:$2|In cla categoréia ché a gh'é sōl un file, sgnê ché.|In cla categoréia ché gh'é{{PLURAL:$1|un file sgnê ché| i file $1, sgnê}} ed sègvit, in un totêl ed $2.}}",
+'category-file-count-limited' => "In cla categoréia ché a gh'é {{PLURAL:$1|al file nutê|i $1 file nutê}} ché 'd sègvit.",
+'listingcontinuesabbrev' => 'cunt.',
+'index-category' => 'Pàgini gancêdi',
+'noindex-category' => 'Pàgini mìa gancêdi',
+'broken-file-category' => "Pàgini cun dèinter di file ch' an gh'în mìa.",
'about' => 'Infumasiòun',
+'article' => "Còl che gh'é int la pàgina",
+'newwindow' => "(a s'arvés 'na fnèstra nōva)",
'cancel' => 'Scanşèla',
+'moredotdotdot' => 'Êter...',
+'morenotlisted' => "Cl'elèinch ché an n'é mìa finî.",
+'mypage' => 'Pàgina',
'mytalk' => 'Al mē discusiòun',
+'anontalk' => "Discusiòun per cl' IP ché",
'navigation' => 'Navigasiòun',
'and' => ' e',
# Cologne Blue skin
'qbfind' => 'Câta',
+'qbbrowse' => 'Sfòja',
'qbedit' => 'Mudéfica',
'qbpageoptions' => "Siēlti 'd la pàgina",
'qbmyoptions' => 'Al mē pàgini',
'faq' => 'Dmândi fâti',
+'faqpage' => 'Project:Dmândi fâti despès',
# Vector skin
+'vector-action-addsection' => 'Zûnta discusiòun',
'vector-action-delete' => 'Scanşèla',
'vector-action-move' => 'Spôsta',
'vector-action-protect' => 'Prutēz',
+'vector-action-undelete' => 'Fà al recóper',
+'vector-action-unprotect' => 'Câmbia la prutesiòun',
+'vector-simplesearch-preference' => 'Drōva la bâra per la sērca pió fâcila (sōl per la skin Vector)',
'vector-view-create' => 'Invèinta',
'vector-view-edit' => 'Mudéfica',
'vector-view-history' => 'Guêrda la stôria',
'namespaces' => 'Spâsi di nòm',
'variants' => 'Mudéfichi',
+'navigation-heading' => "Lésta 'd navigasiòun",
'errorpagetitle' => 'Erōr',
+'returnto' => 'Tōrna a $1',
'tagline' => 'Da {{SITENAME}}',
'help' => 'Ajót',
'search' => 'Sèirca',
'searcharticle' => 'Và',
'history' => "Stòria 'd la pàgina",
'history_short' => 'Stôria',
+'updatedmarker' => 'cambiêda da la mé ûltma vişita',
'printableversion' => "Stâmpa la pàgina ch' ét vèd.",
'permalink' => 'Colegamèint fés',
'print' => 'Stâmpa',
-'view' => 'Guardêr',
+'view' => 'Guêrda',
'edit' => 'Mudéfichi',
'create' => 'Invèinta',
+'editthispage' => 'Mudéfica cla pàgina ché',
+'create-this-page' => 'Fà cla pàgina ché',
'delete' => 'Scanşéla',
'deletethispage' => 'Scanşéla cla pàgina ché',
-'undelete_short' => "Recóper ed {{PLURAL:$1|'na revisiòun|$1 revisiòun}}",
+'undeletethispage' => "Fà 'l recóper ed cla pàgina ché",
+'undelete_short' => "Recóper ed {{PLURAL:$1|'na versiòun|$1 versiòun}}",
'viewdeleted_short' => "Guèrda {{PLURAL:$1|'na mudéficha scanşlêda|$1 mudéfichi scanşlêdi}}",
'protect' => 'Prutēz',
'protect_change' => 'Câmbia',
'talk' => 'Discusiòun',
'views' => 'Vîşiti',
'toolbox' => 'Strumèint',
-'userpage' => "Guêrda la pàgina 'd l'uteint",
+'userpage' => 'Guêrda la pàgina utèint',
'projectpage' => 'Guêrda la pàgina dal prugèt',
'imagepage' => "Guêrda la pàgina dal 'file'",
'mediawikipage' => 'Guêrda al mesâg',
'jumpto' => 'Và a:',
'jumptonavigation' => 'Navigasiòun',
'jumptosearch' => 'Sērca',
+'view-pool-error' => 'In cól mumèint ché i terminêl în trôp câregh.
+Trôp utèint în drē serchêr ed vèder cla pàgina ché.
+Spèta soquânt minût préma ed pruvêr incòra a carghêr la pgina.
+
+$1',
+'pool-timeout' => "Tèimp che gh'é da spetêr préma dal sblôch.",
'pool-queuefull' => 'A ghé la fîla, trôpa gînta a vōl vèder la pàgina, prōva tra soquânt minût',
'pool-errorunknown' => 'Erōr mìa cgnusû',
'privacy' => 'Infurmasiòun só la véta privêda',
'privacypage' => 'Project:Règoli só la secretèsa dal j infurmasiòun personêli.',
+'badaccess' => 'I permès în mìa asê',
+'badaccess-group0' => "An 't gh'è mìa i permès necesâri per fêr còl che t'é dmandê.",
+'badaccess-groups' => "La funsiòun dmandêda l'é riservêda a j utèint che fân pêrt {{PLURAL:$2|al gróp|a ûn di gróp ché sòta}}: $1",
+
+'versionrequired' => "L'é necesâria la versiòun $1 ed MediaWiki",
+'versionrequiredtext' => "Per druvê cla pàgina ché l'é necesâri avèir la versiòun $1 dal prugrâma MediaWiki. Guêrda [[Special:Version|la pàgina apôsta]].",
+
'ok' => 'Va bèin',
'retrievedfrom' => 'Tôt da "$1".',
+'youhavenewmessages' => "{{PLURAL:$3|T'ê}} $1 ($2)",
+'youhavenewmessagesfromusers' => '{{PLURAL:$4|Ét ghê}} $1 da {{PLURAL:$3|un êter utèint|$3 utèint}} ($2).',
+'youhavenewmessagesmanyusers' => "Ét gh'ê $1 da dimòndi utèint $2.",
+'newmessageslinkplural' => '{{PLURAL:$1|un nōv mesâg|999=nōv mesâg}}',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|ûltma mudéfica|999=ûltmi mudéfichi}}',
+'youhavenewmessagesmulti' => "Ét gh'ê di mesâg nōv insém a $1",
'editsection' => 'Mudéfica',
'editold' => 'mudéfica',
'viewsourceold' => 'guêrda la surzéia',
'nstab-image' => "'File'",
'nstab-mediawiki' => 'Mesâg',
'nstab-template' => 'Mudèl',
-'nstab-help' => 'Ajót',
+'nstab-help' => 'Per quî rivê da pôch',
'nstab-category' => 'Categoréia',
+# Main script and global functions
+'nosuchaction' => 'Operasiòun mìa arcgnusûda',
+'nosuchactiontext' => "Còl che t'é scrét int l' URL an n'é mìa vâlid.
+L'é anca pusébil che la URL la sia stêda scréta şbaliêda o che sia stê fât un colegamèint mìa vâlid.
+Còst al pré ânca dîr che gh'é un bug in {{SITENAME}}.",
+'nosuchspecialpage' => "La pàgina specêla l'an gh'é mìa.",
+'nospecialpagetext' => "<strong>La pàgina specêla serchêda an n'é mìa stêda arcgnusûda</strong>
+
+L'elèinch dal pàgini specêli vâlidi a 's câta in [[Special:SpecialPages|Elèinch dal pàgini specêli]].",
+
# General errors
'error' => 'Erōr',
'databaseerror' => "Erōr dal 'database'",
+'databaseerror-text' => 'È sucès un erōr de dmânda insém al databêş.
+A pré ânch èser un bug int al prugrâma.',
+'databaseerror-textcl' => 'È sucès un erōr de dmânda insém al databêş.',
+'databaseerror-query' => 'Istrusiòun SQL: $1',
+'databaseerror-function' => 'Funsiòun: $1',
+'databaseerror-error' => 'Erōr: $1',
+'laggedslavemode' => "'''Atèinti:''' la pàgina la pré avèir mìa al revisiòun pió nōv.",
'readonly' => "'Database' bluchê",
-'missing-article' => "Al datebêş an n'à mìa catê al tèst ed 'na pàgina ch' l' aré duvû catêres sòt' al nòm \"\$1\" \$2. Ed sôlit còst a sucēd quând a vîn arciamê, a partîr da la stòria dal mudéfichi o dal cunfrûnt tra revisiòun, un colegamèint a 'na pàgina scanşlêda, a un cunfrûnt tra revisiòun che gh'în mìa o a un cunfrûnt tra revisiòun cun la stòria dal mudéfichi scanşlêda. In chês cuntrâri, a s'é pubabilmèint catê un erōr int al prugrâma ed Media Wiki. A se dmânda al piaşèir ed comunichêr còl ch'é sucès a un [[Special:ListUsers/sysop|amministadōr]] e comunichêregh l'indirés (URL) in quistiòun.",
-'missingarticle-rev' => '(revisiòun n°: $1)',
+'enterlockreason' => "Scréver al mutîv dal blôch, precişêr quând a 's pèinsa che 'l vègna tôt via.",
+'readonlytext' => "In cól mumèint ché al databêş l'é bluchê e an 's pōlen fêr né zûnti né mudéfichi. Al blôch ed sôlit l'é lighê a 'na revişiòun normêla e quând la srà finîda al gnirà sbluchê.
+
+L'aminitradōr dal sistēma ch' al l'à bluchê l'à dê cla spiegasiòun ché: $1",
+'missing-article' => "Al datebêş an n'à mìa catê al tèst ed 'na pàgina ch' l' aré duvû catêres sòt' al nòm \"\$1\" \$2. Ed sôlit còst a sucēd quând a vîn arciamê, a partîr da la stòria dal mudéfichi o dal cunfrûnt tra versiòun, un colegamèint a 'na pàgina scanşlêda, a un cunfrûnt tra versiòun che gh'în mìa o a un cunfrûnt tra versiòun cun la stòria dal mudéfichi scanşlêda. In chês cuntrâri, a s'é pubabilmèint catê un erōr int al prugrâma ed Media Wiki. A se dmânda al piaşèir ed comunichêr còl ch'é sucès a un [[Special:ListUsers/sysop|amministadōr]] e comunichêregh l'indirés (URL) in quistiòun.",
+'missingarticle-rev' => '(nómer ed la versiòun: $1)',
'missingarticle-diff' => '(Diff: $1, $2)',
+'readonly_lag' => "Al databêş l'é stê bluchê in avtomàtich per permèter a i terminêl cun al databêş schiêv ed mètres in pâs cun al master",
'internalerror' => 'Erōr intêren',
'internalerror_info' => 'Erōr intêren: $1',
+'fileappenderrorread' => 'An n\'é mìa stê pusébil lēşer "$1" mèinter es fêva la zûnta.',
+'fileappenderror' => 'An n\'é mìa pusébil zuntêr "$1" a "$2".',
+'filecopyerror' => 'An n\'é mìa pusébil cupiêr al file "$1" in "$2".',
+'filerenameerror' => 'An n\'é mìa pusébil cambiêr al nòm ed "$1" in "$2".',
+'filedeleteerror' => 'An n\'é mìa pusébil scanşlêr al file "$1".',
+'directorycreateerror' => 'An n\'é mìa pusébil fêr la directory "$1".',
+'filenotfound' => 'An n\'é mìa pusébil catêr al file "$1".',
+'fileexistserror' => 'An n\'é mìa pusébil scréver al file "$1": al file al gh\'é bèle.',
+'unexpected' => 'Valōr mìa pervést "$1"="$2".',
+'formerror' => "Erōr: an n'é ma pusébil spidîr al môdul.",
+'badarticleerror' => 'Operasiòun mìa permésa per cla pàgina ché.',
+'cannotdelete' => 'An n\'é mìa stê pusébil scanşlêr la pàgina o al file "$1".
+Al pré èser bèle stê scanşlê da quelchidûn êter.',
+'cannotdelete-title' => 'Impusébil scanşlêr la pàgina "$1".',
+'delete-hook-aborted' => "L' hook an n'à mia permés la scanşladûra.
+An n'é mìa stê dê la spiegasiòun.",
+'no-null-revision' => 'An pōl èser fât \'na versiòun mìa vâlida per la pàgina "$1"',
+'badtitle' => 'Tétol mìa curèt.',
+'badtitletext' => "Al tétol ed la pàgina serchêda l'é vōd, şbaliê opór al deşvîn da 'n erōr int i colegamèint di côdis o int i colegamèint druvê in wiki. In pió al pré avèir ûn o pió carâter ch'an pōlen mìa èser druvê int i tétol.",
+'perfcached' => 'Al j infurmasiòun ché sòta vînen registrêdi int la "cache" dal databêş e an pōlen mìa èser arnuvê. Int la "cache" a gh\'é un mâsim ed {{PLURAL:$1|un rişultêt |$1 rişultêt}} ch\' es pōl/en druvêr.',
+'perfcachedts' => 'Al j infurmasiòun ché sòta vînen registrêdi int la "cache" dal databêş e l\'ûltma vôlta l\' è stê arnuvê al $ 1. Int la "cache" a gh\'é un mâsim ed {{PLURAL:$4|un rişultêt |$4 rişultêt}} ch\' es pōl/en druvêr.',
+'querypage-no-updates' => "J arnuvamèint ed la pàgina în p'r al mumèint fērom. Al j infurmasiòun dèinter a la pàgina a gnirân mia arnuvêdi.",
'viewsource' => 'Guêrda la surzéia',
'viewsource-title' => "Guêrda la surzéia 'd $1",
+'actionthrottled' => "L'asiòun la vîn tardêda.",
+'actionthrottledtext' => "Cme mişûra 'd sicurèsa cûnt'r al spam soquânti operasiòun a vînen limitêdi a 'n nómer mâsim ed vôlti in un precîş peréiod ed tèimp, in cól chêş ché a s'é bèle andê d'ed là 'd cól lémit. A se dmânda ed turnêr a pruvêr tra soquânt minût.",
+'protectedpagetext' => "Cla pàgina ché l'é stêda prutèta per impidîr la mudéfica o êtri operasiòun.",
+'viewsourcetext' => "L'é pusébil vèder e cupiêr al côdis surzéia ed cla pàgina ché.",
+'viewyourtext' => 'L\'é pusébil vèder e cupiêr al côdis surzéia dal "tō mudéfichi" ed cla pàgina ché:',
+'protectedinterface' => "Cla pàgina ché la gh'à 'n elemèint ch' al fa pêrt dal colegamèint tra utèint e al progrâma 'd cól sît ché e l'é prutèta per schivşêr pusébil abûş. Per zuntêr o mudufichêr tradusiòun per tót i sistēma wiki druvêr [//translatewiki.net/ translatewiki.net], al prugèt 'd adatamèint a ògni léngva 'd MediaWiki.",
+'editinginterface' => "'''Atèinti:'' Al tèst ed cla pàgina ché 'l fa pêrt dal colegamèint tra utèint e 'l progrâma dal sît. Tót' al modéfichi fâti a cla pàgina ché a gnîran spustêdi insém a i mesâg vést da tót j utèint ed cól wiki ché. Per zuntêr o mudufichêr tradusiòun vâlidi per tót i wiki, cunsîdra la pusibilitê 'd druvêr [/ / translatewiki.net / translatewiki.net], al prugèt 'd adatamèint a ògni léngva 'd MediaWiki.",
+'cascadeprotected' => "Insém a cla pàgina ché an n'é mìa pusébil fêr dal mudéfichi perchè l'é dèinter {{PLURAL:$1|int la pàgina sgnêda ché 'd sègvit, ch' l'é stêda prutèta|int al pàgini sgnêdi ché 'd sègvit, ch' în stêdi prutèti}} cun la prutesiòun ch' la 's arfà in cuntinvasiòun:
+$2",
+'namespaceprotected' => "An 's gh'à mìa i permès necesâri per mudifichêr al pàgini dal spâsi di nòm '''$1'''.",
+'customcssprotected' => "An 's gh'à mìa i permès necesâri per mudifichêr cla pàgina CSS ché, perchè la gh'à dèinter al j impustasiòun personêli 'd n' êter utèint.",
+'customjsprotected' => "An 's gh'à mìa i permès necesâri per mudifichêr cla pàgina JavaScript ché, perchè la gh'à dèinter al j impustasiòun personêli 'd n' êter utèint.",
+'mycustomcssprotected' => "An 's gh'à mìa i permès necesâri per mudifichêr cla pàgina CSS ché.",
+'mycustomjsprotected' => "An 's gh'à mìa i permès necesâri per mudifichêr cla pàgina JavaScript ché .",
+'myprivateinfoprotected' => "An 's gh'à mìa i permès necesâri per cambiê 'l j infurmasiòun personêli.",
+'mypreferencesprotected' => "An 's gh'à mìa i permès necesâri per cambiêr al preferèinsi personêli.",
+'ns-specialprotected' => "An n'é mìa pusébil mudifichêr al pàgini specêli.",
+'titleprotected' => 'Al tétol ed cla pagina ché l\'é stê bluchê da [[User:$1|$1]].
+Còst l\'é al mutîv:"$2".',
+'filereadonlyerror' => 'An n\'é mìa stê pusébil mudifichêr al file "$1" perchè al depôsit di file "$2" a \'s pōl sōl lēzer.
+
+L\'aministradōr ch\' al l\'à bluchê l\'à dê cla spiegasiòun ché:"$3".',
+'invalidtitle-knownnamespace' => 'Tétol mìa vâlid cme spâsi di nòm "$2" e tèst "$3"',
+'invalidtitle-unknownnamespace' => 'Tétol mìa vâlid cun spâsi di nòm mìa cgnusû "$1" e tèst "$2"',
+'exception-nologin' => "An t'é mìa gnû dèinter",
+'exception-nologin-text' => "Per andêr dèinter a cla pàgina ché o fêr còl ch'ét pèins ét gh'ê da [[Special:Userlogin|fêr l'ingrès]].",
+'exception-nologin-text-manual' => 'Per prèir andêr dèinter a cla pàgina ché o fêr còl ch\'ét pèins ét gh\'ê da "$1".',
+
+# Virus scanner
+'virus-badscanner' => 'Erōr \'d impustasiòun: antivîrus mìa cgnusû:"$1"',
+'virus-scanfailed' => "Al cuntròl antivìrus l'é andê mêl (côdis $1)",
+'virus-unknownscanner' => 'Antivìrus scgnusû:',
# Login and logout pages
+'logouttext' => "'''An t'é pió coleghê.'''
+
+Guêrda che soquânti pàgini a prén vèdres incòra cme s'ét fós incòra coleghê, còst fintânt ch' an vîn mìa pulî la memôria dal tó navigadōr.",
+'welcomeuser' => 'Beinvgnû, $1',
+'welcomecreation-msg' => "Al j infurmasiòun per l'ingrès în stêdi dêdi 'n mōd gióst. An scurdêret mìa 'd dîr quèl' în al [[Special:Preferences|preferèinsi in {{SITENAME}}]].",
'yourname' => 'Nòm utèint:',
+'userlogin-yourname' => 'Nòm utèint',
+'userlogin-yourname-ph' => 'Mèt dèinter al tó nòm utèint',
+'createacct-another-username-ph' => 'Mèt dèinter al nòm utèint',
'yourpassword' => "Cêva 'd ingrès:",
+'userlogin-yourpassword' => "Cêva 'd ingrès",
+'userlogin-yourpassword-ph' => "Mèt dèinter la tó cêva 'd ingrès",
+'createacct-yourpassword-ph' => "Mèt dèinter 'na cêva 'd ingrès",
'yourpasswordagain' => "Scrév incòra la cêva 'd ingrès:",
+'createacct-yourpasswordagain' => "Cunfērma la cêva 'd ingrès",
+'createacct-yourpasswordagain-ph' => "Tōrna mèter dèinter la cêva 'd ingrès",
+'remembermypassword' => "Tîn a mèint la cêva 'd ingrès insém a cól navigadōr ché (per un mâsim ed $1{{PLURAL:$1|dé}}).",
+'userlogin-remembermypassword' => 'Sèimper coleghê',
+'userlogin-signwithsecure' => 'Drōva un colegamèint sicûr',
+'yourdomainname' => 'Precişêr al duméni:',
+'password-change-forbidden' => "An n'é mìa pusébil mudifichêr la cêva 'd ingrès insém a sté wiki.",
+'externaldberror' => "È sucès un erōr cun al terminêl ed certificasiòun ed validitê d'ed fōra, opór an 's gh'à mìa al j autorişasiòun necesâri per arnuvêr l' ingrès d'ed fōra.",
'login' => 'Và dèinter',
'nav-login-createaccount' => 'Và dèinter / Fà la tó inscrisiòun',
+'loginprompt' => "Per andêr dèinter a {{SITENAME}} l'é necesâri permèter i cookie.",
'userlogin' => 'Và dèinter / Fà la tó inscrisiòun',
'userloginnocreate' => 'Và dèinter',
'logout' => 'Và fōra',
'userlogout' => 'Và fōra',
'notloggedin' => "An t'é mìa gnû dèinter",
+'userlogin-noaccount' => 'Ét mìa incòra fât la registrasiòun?',
+'userlogin-joinproject' => 'Da {{SITENAME}}',
+'nologin' => "An gh'èt mìa incòra un ingrès? $1",
'nologinlink' => 'Fà la tó inscrisiòun',
'createaccount' => 'Fà la tó inscrisiòun',
+'gotaccount' => "Gh'èt bèle un ingrès? $1",
'gotaccountlink' => 'Và dèinter',
+'userlogin-resetlink' => "T'ét scurdê j elemèint p'r al tó ingrès?",
+'userlogin-resetpassword-link' => "T' ét scurdê la cêva 'd ingrès?",
+'helplogin-url' => "Help: Per l'ingrès",
+'userlogin-helplink' => "[[{{MediaWiki:helplogin-url}}|Ajót cun l' ingrès]]",
+'userlogin-loggedin' => "T'ét bèle coleghê {{GENDER:$1|$1}}.
+Drōva al mōdul ché sòta cme un êter utèint.",
+'userlogin-createanother' => "Fà 'n' êtra utèinsa.",
+'createacct-join' => 'Mèt dèinter al tō infurmasiòun ché sòta.',
+'createacct-another-join' => 'Mèt dèinter al j infurmasiòun per la registrasiòun ché sòta.',
+'createacct-emailrequired' => 'Indirés pôsta eletrônica',
+'createacct-emailoptional' => "Indirés pôsta eletrônica (se 's vōl)",
+'createacct-email-ph' => 'Scrév al tó indirés ed pôsta eletrônica',
+'createacct-another-email-ph' => "Scrév l'indirés ed pôsta eletrônica",
'createaccountmail' => "Drōva 'na cêva 'd ingrès a chêş pruvişôria e spidésla a l'indirés ed pôsta eletrônica sgnê.",
+'createacct-realname' => "Al nòm vèira (se 's vōl)",
'createaccountreason' => 'Mutîv:',
+'createacct-reason' => 'Mutîv',
+'createacct-reason-ph' => "Perchè ét drē fêr 'n' êtra utèinsa",
+'createacct-captcha' => "Cuntròl 'd sicurèsa",
+'createacct-imgcaptcha-ph' => "Mèt dèinter al tèst ch'é vèd ché sōver",
+'createacct-submit' => 'Fà la tó utèinsa',
+'createacct-another-submit' => "Fà 'n' êtra utèinsa.",
+'createacct-benefit-heading' => '{{SITENAME}} crès grâsia a persòuni cme té.',
+'createacct-benefit-body1' => '{{PLURAL:$1|mudéfica|mudéfichi}}',
+'createacct-benefit-body2' => '{{PLURAL:$1|pàgina|pàgini}}',
+'createacct-benefit-body3' => '{{PLURAL:$1|iscrét nōv}}',
+'badretype' => "Al cêvi 'd ingrès scréti an cumbînen tra 'd lōr.",
+'userexists' => "Al nòm utèint scrét l'é bèle druvê.
+Siēlier 'n' êter nòm utèint.",
'loginerror' => "Erōr 'd ingrès",
+'createacct-error' => "A gh'é stê un erōr ind al fêr l'utèinsa.",
+'createaccounterror' => "Imposébil fêr l'iscrisiòun: $1",
+'nocookiesnew' => "La registrasiòun an n' é mìa finîda, e an n'é mìa stê pusébil andêr dèinter a {{SITENAME}} perchè i cookie în blûchê. Tōrna fêr l'ingrès cun al nòm e la cêva 'd ingrès apèina fât dôp avèir şbluchê i cookie int al tó navigadōr.",
+'nocookieslogin' => "Per fêr l'ingrès a {{SITENAME}} a 's dēv druvêr i cookie che rişûlten bluchê. Tōrna fêr l'ingrès dôp avèir şbluchê i cookie int al tó navigadōr.",
+'nocookiesfornew' => "L'iscrisiòun utèint an n'é mìa stêda fâta, perchè òm mìa prû cunfermêr la só urégin. Veréfica 'd avèir şbluchê i cookie, tōrna carghêr cla pàgina ché e prōva incòra.",
+'noname' => "Al nòm utèint scrét an n'é mìa vâlid.",
+'loginsuccesstitle' => 'Ingrès fât.',
+'loginsuccess' => "''' T'é stê coleghê al terminêl {{SITENAME}} cun al nòm utèint '''$1'''.",
+'nosuchuser' => 'An n\'é mìa registrê nisûn utèint cun al nòm "$1". I nòm utèin în sensébil al lètri grândi. Veréfica al nòm scrét o [[Special:UserLogin/signup|fà un nōv ingrès]].',
+'nosuchusershort' => "An gh'é mìa registrê un utèint ciamê ''$1''. Veréfica al nòm scrét.",
+'nouserspecified' => "L'é necesâri precişêr un nòm utèint.",
+'login-userblocked' => "Cl'utèinsa ché l'é bluchêda. An n'é pusébil fêr l'ingrès.",
+'wrongpassword' => "La cêv 'd ingrès e-scréta an n'é mìa giósta. Tōrna a pruvêr.",
+'wrongpasswordempty' => "An n'é mìa stê scrét nisóna cêva 'd ingrès. Tōrna pruvêr.",
+'passwordtooshort' => "La cêva 'd ingrès la dēv avèir almēno {{PLURAL:$1|1 carâter|$1 carâter}}",
+'password-name-match' => "La cêva 'd ingrès l'an dēv mìa èser cumpâgn al nòm utèint.",
+'password-login-forbidden' => "L'ûş de sté nòm e cêva 'd ingrès l'é stê pruibî.",
+'mailmypassword' => "Tōrna mèter la cêva 'd ingrès",
+'passwordremindertitle' => "Nōva cêva 'd ingrès pruvişôria per {{SITENAME}}",
+'passwordremindertext' => "Quelchiûn (prubabilmèit té, cun l'indirés IP \$1) l'à dmandê de spidîregh 'na nōva cêva 'd ingrès a {{SITENAME}} (\$4). 'Na nōva cêva 'd ingrès pruvişôria per l'utèint \"\$2\" l'é stêda impustêda a \"\$3\". L'é necesâri fêr un ingrès al pió prèst e cambiêr la cêva 'd ingrès subét. La cêva 'd ingrès pruvişôria la scadrà dôp {{PLURAL:\$5un dé|\$5 dé}}. S' an t'é mia stê té a fêr la dmânda, opór t'é turnê a catêr la vècia cêva 'd ingrès e an 't vō pió cambiêrla, ét pō trascurêr cól mesâg ché e cuntinvêr a druvêr la vècia cêva 'd ingrès.",
+'noemail' => "Nisûn indirés ed pôsta eletrônica registrê per l'utèint $1.",
+'noemailcreate' => "L'é necesâri dêr un 'indirés ed pôsta eletrônica vâlid.",
+'passwordsent' => "'Na nōva cêva 'd ingrès l'é stêda spidîda a l'indiré ed pôsta eletrônica per l'utèint \"\$1\". Per piaşèir, fà un ingrès apèina 't la ricēv.",
+'blocked-mailpassword' => "Per pervèder abûş, an n'é mìa permès druvêr la funsiòun \"spidés 'na nōva cêva 'd ingrès\" da un indirés IP bluchê.",
+'eauthentsent' => "Un mesâg ed cunfèirma l'é stê spidî a l'indirés ed pôsta eletrônica sgnê ché. L'utèint per prèir inviêr di mesâg ed pôsta eletrônica al dēv andêr a drē al j istrusiòun scréti, in môd da cunfermêr ch' l'é ló al legétim proprietâri 'd l'indirés.",
+'throttled-mailpassword' => "Un mesâg ed pôsta eletrônica 'd arnōv ed la cêva 'd ingrès l'é bèle stê inviê da mēno 'd {{PLURAL:$1|1 ōra|$1 ōri}}. Per pervèder abûş, la funziòun 'd arnōv ed la cêva 'd ingrès la pōl èser druvêda sōl 'na vôlta ògni {{PLURAL:$1|1 ōra|$1 ōri}}.",
+'mailerror' => 'Erōr int la spedisiòun dal mesâg $1',
+'acct_creation_throttle_hit' => "{{PLURAL:$1|1 registrasiòun l'é bèle stêda fâta |$1 registrasiòun în bèle stêdi fâti}} da quelchidûn cun al tó 'stès indirés IP int l'ûltem dé: l'é al mâsim permés in cól peréiod ed tèimp ché. Per còst j utèint che drōven cl 'indirés IP ché, p'r al mumèint, an 's pōl mìa registrêr.",
+'emailauthenticated' => "L'indirés ed pôsta eletrônica l'é stê cunfermê al $2 al $3.",
+'emailnotauthenticated' => "L'indirés ed pôsta eletrônica an n'é mìa incòra stê cunfermê.
+A gnirâ mìa spidî mesâg ed pôsta eletrônica p'r al funsiòun in elèinch ché sòta.",
+'noemailprefs' => "Scréver un indirés ed pôsta eletrônica per fêr funsionêr st' al funsiòun.",
+'emailconfirmlink' => 'Cunfèirma al tó indirés ed pôsta eletrônica',
+'invalidemailaddress' => "L'indirés ed pôsta eletrônica scrét in 'na manēra mìa vâlida.
+Scrév un indirés vâlid o vōda la caşèla.",
+'cannotchangeemail' => 'In cól wiki ché j indiré ed pôsta eletrônica an pōlen mìa èser cambiê.',
+'emaildisabled' => 'Cól sît ché an pōl mia spidîr mesâg ed pôsta eletrônica.',
'accountcreated' => 'Ingrès fât',
+'accountcreatedtext' => "È stê fât 'n'utèisa per [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|msg]]).",
+'createaccount-title' => 'Per fêr un inscrisiòun a {{SITENAME}}',
+'createaccount-text' => "Quelchidûn l'à fât un inscrisiòun a {{SITENAME}} (\$4) a nòm ed \$2 coleghê a cl'indirés ed pôsta eletrônica ché. La cêva 'd ingrès per l'utèint \"\$2\" l'é impustêda a \"\$3\".
+É necesâri fêr un ingrès préma ch' es pôl e cambiêr subét la cêva 'd ingrès.
+Se l'inscrisiòun l'é stêda fâta per şbâli, es pōl scanşlêr sté mesâg.",
+'usernamehasherror' => 'Al nòm utèint al pōl mìa avèir i carâter hash',
+'login-throttled' => "În stê fât trôp tentatîv 'd ingrès in pôch tèimp. Spèta $1 e pó tōrna pruvêr.",
+'login-abort-generic' => "An t'é mìa stê arcgnusû - Scanşlê",
'loginlanguagelabel' => 'Léngva: $1',
+'suspicious-userlogout' => "La tó dmânda per destachêret l'é stēda rifiutêda perchè la sèmbra spidîda da un navigadōr ch' al funsiòuna mìa o da un proxy di caching.",
+'createacct-another-realname-tip' => "Druvêr al nòm vèira l'é 'na siēlta personêla; s' es pèinsa 'd ruvêrel al gnirâ uşê per dêr la paternitê di lavōr spidî.",
+
+# Email sending
+'php-mail-error-unknown' => 'Erōr mìa cngusû int la funsiòun PHP mail().',
+'user-mail-no-addy' => "T'é serchê de spidîr un mesâg cun la pôsta eletrônica sèinsa 'n indirés.",
+'user-mail-no-body' => "A s'é serchê de spidîr un mesâg ed pôsta eltrônica vōd o dimòndi cûrt.",
# Change password dialog
'changepassword' => "Câmbia la cêva 'd ingrès",
+'resetpass_announce' => "L'ingrès l'é stê fâ cun un côdis pruvişôri, spidî cun la pôsta eletrônica. Per finîr l'ingrès l'é necesâri impustêr 'na nōva cêva 'd ingrès.",
+'resetpass_header' => "Câmbia la cêva 'd ingrès ed l'inscrisiòun.",
'oldpassword' => "Cêva 'd ingès vècia:",
'newpassword' => "Nōva cêva 'd ingrès:",
+'retypenew' => "Scrév incòra la nōva cêva 'd ingrès:",
+'resetpass_submit' => "Scrév la cêva 'd ingrès e và dèinter al sît",
+'changepassword-success' => "La cêva 'd ingrès l'é stêda nudifichêda!",
+'changepassword-throttled' => "În stê fât trôp tentatîv 'd ingrès in pôch tèimp. Spèta $1 e pó tōrna pruvêr.",
+'resetpass_forbidden' => "An 'né mìa pusébil mudifichêr la cêva 'd ingrès",
+'resetpass-no-info' => "Per andêr dèinter a cla pàgina ché 't gh'ê da fêr l'ingrès.",
'resetpass-submit-loggedin' => "Câmbia la cêva 'd ingrès",
'resetpass-submit-cancel' => 'Scanşèla',
+'resetpass-wrong-oldpass' => "Cêva 'd ingrès pruvişôria o còla 'd adès mìa vâlida.
+La cêva 'd ingrès la pré èser stêda bèle cambiêda, opór n'in pré èser stê dmandê 'na nōva pruvişôria.",
'resetpass-temp-password' => "Cêva 'd ingrès pruvişôria:",
+'resetpass-abort-generic' => "La mudéfica 'd la cêva 'd ingrès l'é stêda fermêda da un şlungamèint.",
# Special:PasswordReset
'passwordreset' => "Câmbia la cêva 'd ingrès",
+'passwordreset-text-one' => "Impés cól môdul ché per turnêr a impustêr la tó cêva 'd ingrès.",
+'passwordreset-text-many' => "{{PLURAL:$1|Impés ûn di câmp per ricēver 'na cêva 'd ingrès pruvişôria per mèz ed la pôsta eletrônica}}",
'passwordreset-legend' => "Tōrna mèter la cêva 'd ingrès",
+'passwordreset-disabled' => "In cla wiki ché an pōlen mia turnêr impustêr al cêvi 'd ingrès",
+'passwordreset-emaildisabled' => 'In cla wiki ché è stê bluchê al funsiòun ed la pôsta eletrônica.',
'passwordreset-username' => 'Nòm utèint:',
'passwordreset-domain' => 'Proprietê:',
+'passwordreset-capture' => 'Vōt vèder còl che dèinter int al mesâg ed pôsta eletrônica?',
+'passwordreset-capture-help' => "S' es sernés cla caşèla ché, l'indirés ed pôsta eletrônica (cun la cêva 'd ingrès pruvişôria), év vîn fâ vèder, d'ed là 'd èser spidî a l'utèint.",
+'passwordreset-email' => 'Indirés pôsta eletrônica',
+'passwordreset-emailtitle' => "Particulêr ed l'utèint só {{SITENAME}}",
+'passwordreset-emailtext-ip' => "Quelchidûn (prubabilmèint té, cun l'indirés IP $1) l'à dmandê de spidîregh 'na nōva cêva 'd ingrès per andêr dèinter a {{SITENAME}} ($4). {{PLURAL:$3|L'utèint inscrét| J utèint inscrét}} a sté indirés ed pôsta eletrônica în:
+
+$2
+
+{{PLURAL:$3|Cla cêva 'd ingrès pruvişôria la scadrà| St' al cêvi 'd ingrès pruvişôri ché scadrân}} dôp {{PLURAL:$5|ûn dé|$5 dé}}. Ét duvrés andêr dèinter e sernîr 'na cêva 'd ingrès nōva adès.
+
+Se t'é mìa stê té a fêr la dmânda, o s' ét t'é ricurdê la cêva 'd ingrès uriginêla e an 't vō mia pió cambiêrla, ét pō scanşlêr cól mesâg ché e cuntinvêr a druvêr la tó cêva 'd ingrès vècia.",
+'passwordreset-emailtext-user' => "L'utèint $1 ed {{SITENAME}} l'à dmandê de spidîregh 'na nōva cêva 'd ingrès per andêr dèinter a {{SITENAME}} ($4). {{PLURAL:$3|L'utèint inscrét| J utèint inscrét}} a sté indirés ed pôsta eletrônica în:
+
+$2
+
+{{PLURAL:$3|Cla cêva 'd ingrès pruvişôria ché la scadrà| St' al cêvi 'd ingrès pruvişôri ché scadrân}} dôp {{PLURAL:$5|ûn dé|$5 dé}}. Ét duvrés andêr dèinter e sernîr 'na cêva 'd ingrès nōva adès.
+
+Se t'é mìa stê té a fêr la dmânda, o s' ét t'é ricurdê la cêva 'd ingrès uriginêla e an 't vō mia pió cambiêrla, ét pō scanşlêr cól mesâg ché e cuntinvêr a druvêr la tó cêva 'd ingrès vècia",
+'passwordreset-emailelement' => "Nòm utèint: $1.
+Cêva 'd ingrès pruvişôria: $2",
+'passwordreset-emailsent' => "É stê spidî un mesâg ed pôsta eletrônica per turnêr a impustêr la cêva 'd ingrès.",
+'passwordreset-emailsent-capture' => "É stê spidî un mesâg ed pôsta eletrônica per turnêr a impustêr la cêva 'd ingrès, ché sòta a gh'é al tèst che gh'é scrét.",
+'passwordreset-emailerror-capture' => "É stê fât un mesâg ed pôsta eletrônica per turnêr a impustêr la cêva 'd ingrès, scréta ché 'd sègvit. La spedisiòun {{GENDER:$2|a l'utèint}} an n'é mia 'riusîda:$1",
+
+# Special:ChangeEmail
+'changeemail' => "Câmbia l'indirés ed la pôsta eletrônica",
+'changeemail-header' => "Câmbia l'indirés ed la pôsta eletrônica 'd la tó inscrisiòun.",
+'changeemail-text' => "Impés sté mòdul per cambiêr al tó indirés ed pòsta eletrônica. A srà necesâri mèter dèinter la cêva 'd ingrès per cunfermêr la mudéfica.",
+'changeemail-no-info' => "Per andêr dèinter diretamèint a cla pàgina ché 't gh'ê da fêr l'ingrès.",
+'changeemail-oldemail' => "L'indirés ed la pôsta eletrànica 'd adès.",
+'changeemail-newemail' => 'Nōv indirés ed pàsta eletrônica:',
+'changeemail-none' => '(nisûn)',
+'changeemail-password' => "La cêva 'd ingrès só {{SITENAME}}:",
+'changeemail-submit' => "Cambiêr l'indirés ed pôsta eletrônica",
+'changeemail-cancel' => 'Scanşèla',
+'changeemail-throttled' => "În stê fât trôp tentatîv 'd ingrès in pôch tèimp. Spèta $1 e pó tōrna pruvêr dôp.",
+
+# Special:ResetTokens
+'resettokens' => "Tōrna 'd impustêr la cêva",
+'resettokens-text' => "Ché 't pō turnêr a impustêr al cêvi ch'ét permèten l'ingrès a precîşi infurmasiòun privêdi lighêdi a la tó utèinsa. Ét duvrés fêrel se per chêş ét j ê spartîdi cun quelchidûn o se al j infurmasiòun ed la tó utèinsa în in perécol.",
+'resettokens-no-tokens' => "An gh'é mìa di token da turnêr a impustêr.",
+'resettokens-legend' => "Tōrna 'd impustêr la cêva",
+'resettokens-token-label' => "$1 (valōr 'd adèsa: $2)",
+'resettokens-watchlist-token' => "Token p'r al feed web (Atom/RSS) dal [[Special:Watchlist|mudéfichi al pàgini ch'ét tîn sòt' ôc]]",
+'resettokens-done' => 'Token turnê a impustêr.',
+'resettokens-resetbutton' => 'Més a zēro i token sernî',
# Edit page toolbar
'bold_sample' => 'Grasèt',
+'bold_tip' => 'Grasèt',
'italic_sample' => 'Cursîv',
+'italic_tip' => 'Cursîv',
+'link_sample' => 'Tétol dal colegamèint',
+'link_tip' => 'Colegamèint intêren',
+'extlink_sample' => 'http://www.example.com tétol dal colegamèint',
+'extlink_tip' => "Colegamèin d'ed fōra (ricôrdet ed mèter préma http://)",
+'headline_sample' => 'Intestasiòun',
+'headline_tip' => 'Intestasiòun ed 2° livèl',
+'nowiki_sample' => 'Mèt dèinter ché al tèst mìa furmatê',
+'nowiki_tip' => 'An badêr mìa la furmatasiòun wiki',
+'image_tip' => 'Mèt dèinter al file',
'media_tip' => "Colegamèint al 'file'",
+'sig_tip' => "Fîrma cun la dâta e l'ōra",
+'hr_tip' => 'Rîga spiâna (drōva cun giudési)',
# Edit pages
'summary' => 'Sûnt:',
+'subject' => 'Argumèint (tétol):',
+'minoredit' => "Còsta l'é 'na mudéfica céca",
+'watchthis' => 'Tîn adrē a cla pàgina ché',
'savearticle' => 'Sêlva la pàgina',
'preview' => 'Guêrda préma',
'showpreview' => "Guêrda préma 'd salvêr",
+'showlivepreview' => 'Guêrda préma diretamèint',
'showdiff' => 'Guêrda i cambiamèint',
+'anoneditwarning' => "'''Atensiòun:''' Ingrès mìa fât. Al tó indirés IP al srà sgnê int la stòria ed cla pàgina chè.",
+'anonpreviewwarning' => "\"An n'é mìa stê fât l'ingrès. Mèinter es sêlva la pàgina, l'indirés IP al srà sgnê int la stòria 'd la pàgina.\"",
'blockedtitle' => 'Utèint bluchê',
'newarticle' => '(Nōv)',
+'newarticletext' => "Al colegamèint apèina fât al cumbîna cun 'na pàgina ch' an n'é mìa incòra stêda fâta. S'ét vō fêr la pàgina adès, l'é asê cumincêr a scréver al tèst int la caşèla ché sòt (per vedèr infurmasiòun pió precîşi guêrda la [[{{MediaWiki:Helppage}}|pàgina 'd ajót]]). Se al colegamèint l'é stê avêrt per erōr, l'é asê clichêr al pulsânt \"Indrē\" dal tó navigadōr.",
'noarticletext' => 'In cól mumèint ché la pàgina serchêda l\'é vōda. L\'é pusébil [[Special:Search/{{PAGENAME}}|serchêr sté tétol]] int al j êtri pàgini dal sît, <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} serchêr int i regéster coleghê] opór [{{fullurl:{{FULLPAGENAME}}|action=edit}} mudifichêr la pàgina adèsa]</span>.',
+'noarticletext-nopermission' => "In cól mumèint ché la pàgina serchêda l'é vōda. L'é pusébil [[Special:Search/{{PAGENAME}}|serchêr sté tétol]] int al j êtri pàgini dal sît o<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} serchêr int i regéster coleghê] <span>, mó an 't gh'ê mìa al permès ed fêr cla pàgina ché.",
'note' => "'''Nôta:'''",
+'previewnote' => "'''Ricôrdet che còsta l'é sōl 'na guardêda préma 'd salvêr.'''
+Al tō mudéfichi în MIA incòra stêdi salvêdi.",
'editing' => 'Mudéfica ed $1',
'editingsection' => 'Mudéfica ed $1 (sesiòun)',
'editingcomment' => 'Mudéfica e $1 (sesiòun nōva)',
'editconflict' => "Cuntrâst 'd edisiòun só $1",
'yourtext' => 'Al tó tèst',
'yourdiff' => 'Diferèinsi',
+'templatesused' => '{{PLURAL:$1|Mudèl druvê|Mudē druvê}} in cla pàgina ché:',
'template-protected' => '(prutèt)',
'template-semiprotected' => '(mèz-prutèt)',
+'hiddencategories' => "Cla pàgina ché l' é 'd {{PLURAL:$1|'na categoréia lughêda|$1 categoréi lughêdi}}:",
+'permissionserrorstext-withaction' => "An 's gh'à mìa i permès necesâri per $2, per{{PLURAL:$1|cól mutîv ché|chi mutîv ché}}:",
+'recreate-moveddeleted-warn' => "'''Atensiòun: a s'é drē serchêr ed fêr 'na pàgina bèle scanşlêda tèimp fa'''.
+
+Asicurêres che sìa dabòun necesâri cuntinvêr a mudifichêr cla pàgina ché.
+Per cumditê còst l'é l'èlèinch dal scanşladûri e di spustamèint relatîv a la pàgina.",
+'moveddeleted-notice' => "Cla pàgina ché l'é stêda scanşlêda. Per infurmasiòun còst l'é l'èlèinch relatîv dal scanşladûri e di spustemèint fât.",
'log-fulllog' => 'Guêrda la stòria dal registrasiòun',
'edit-conflict' => "Cuntrâst 'd edisiòun",
+# Parser/template warnings
+'post-expand-template-inclusion-warning' => "'''Atensiòun:''' la grandèsa di mudē més dèinter l'é trôp grôsa. Soquânt mudē gnirâ mìa més dèinter.",
+'post-expand-template-inclusion-category' => "Pàgini in dó la grandèsa di mudē més dèinter la và d'ed sōver dal lémit permés.",
+'post-expand-template-argument-warning' => "'''Atensiòun:''' cla pàgina ché la gh'à ûn o pió argumèint ed mudē trôp grôs per èser şlarghê. Chi argomèint ché a gnirân saltê.",
+'post-expand-template-argument-category' => 'Pàgini cun mudē sèinsa argumèint.',
+
# History pages
'viewpagelogs' => "Guêrda la stòria 'd cla pàgina ché",
-'currentrev' => 'Ûltma revişiòun',
-'currentrev-asof' => 'Ûltma revişiòun dal $1',
-'revisionasof' => 'Revişiòun dal $1',
-'revision-info' => 'Revişiòun ed $1, avtōr: $2',
-'previousrevision' => '← Revişiòun pió vècia',
-'nextrevision' => 'Revişiòun pió nōva →',
-'currentrevisionlink' => 'Ûltma revişiòun',
-'cur' => 'cur',
+'currentrev' => 'Ûltma versiòun',
+'currentrev-asof' => 'Ûltma versiòun dal $1',
+'revisionasof' => 'Versiòun dal $1',
+'revision-info' => 'Versiòun ed $1, avtōr: $2',
+'previousrevision' => '← Versiòun pió vècia',
+'nextrevision' => 'Versiòun pió nōva →',
+'currentrevisionlink' => 'Ûltma versiòun',
+'cur' => 'adès',
'next' => 'Còl dôp',
-'last' => 'Còl préma',
+'last' => 'préma',
'page_first' => 'préma',
'page_last' => 'ûltem',
+'histlegend' => "Cunfrûnt tra 'l versiòun: sernés al caşèli cumpâgni al versiòun vrûdi e schésa Invio o al ptòun in bâs. Spiegasiòun: : '''({{int:cur}})''' = diferèinsi cun la versiòun d' adèsa, '''({{int:last}})''' = diferèinsi cun la versiòun ed préma, '''{{int:minoreditletter}}''' = mudéfica céca.",
+'history-fieldset-title' => "Nâviga int la stòria 'd la pàgina",
+'history-show-deleted' => 'Sōl quî scanşlê',
+'histfirst' => 'préma',
+'histlast' => 'ûltma',
# Revision feed
'history-feed-item-nocomment' => '$1 al $2',
'revertmerge' => "Scanşèla l'uniòun",
# Diffs
+'history-title' => '$1 stòria dal mudéfichi',
'lineno' => 'Rîga $1:',
+'compareselectedversions' => 'Cunfrûnta al versiòun sernîdi.',
'editundo' => 'scanşèla',
# Search results
'nextn-title' => '{{PLURAL:$1|Al rişultêt ed préma|$1 i rişultêt ed préma}}',
'shown-title' => 'Fà vèder {{PLURAL:$1|un rişultêt|$1 di rişultêt}}',
'viewprevnext' => 'Guêrda ($1 {{int:pipe-separator}} $2) ($3).',
+'searchmenu-exists' => "'''Int al sît a gh'é 'na pàgina cun al nòm [[:$1]].'''
+{{PLURAL:$2|0=|Guêrda ânca chiêter ch'în stê catê.}}",
+'searchmenu-new' => "'''Şvilópa la pàgina \"[[:\$1]]\" insém a cól sît ché! '''{{PLURAL:\$2|0=|Guêrda ânch i rişultêt catê}}.",
'searchprofile-articles' => "Pàgini 'd j argumèint",
'searchprofile-project' => "Pàgini 'd ajót e relatîvi al prugèt.",
'searchprofile-images' => 'Multimèdia',
'searchprofile-everything-tooltip' => "Sērca dapertót (ânch int al pàgini 'd discusuòun).",
'searchprofile-advanced-tooltip' => 'Sērca int i spâsi di nòm fât só mzûra.',
'search-result-size' => "$1 ({{PLURAL:$2|'na parôla|$2 parôli}})",
+'search-result-category-size' => '{{PLURAL:$1|1 utèint|$1 utèint}} ({{PLURAL:$2|1 sotcategoréia|$2 sotcategoréi}},{{PLURAL:$3|1 file|$3 files}})',
'search-redirect' => '(redirect $1)',
'search-section' => '(sesiòun $1)',
+'search-suggest' => "Fōrsi 't serchêv $1",
'search-interwiki-caption' => 'Prugèt fradē',
'search-interwiki-default' => 'Rişultêt da $1:',
'search-interwiki-more' => '(êter)',
+'searchrelated' => 'coleghê',
'searchall' => 'tót',
'showingresultsheader' => "{{PLURAL:$5|Al risultêt '''$1''' ed '''$3'''|I risultêt '''$1 - $2''' ed '''$3'''}} per '''$4'''",
+'search-nonefound' => "La sērca an n'à mìa dê di rişultê.",
'powersearch-toggleall' => 'Tót',
'powersearch-togglenone' => 'Nisûn',
'yourrealname' => 'Nòm vèira:',
'yourlanguage' => 'Léngua',
'email' => 'E-mail',
+'prefs-help-email' => "Mèter l'indéris ed la tó pôsta eletrônica an n'é mia necesâri, mó al permèt ed ricêver la cêva 'd ingrès se per chêş ét la scurdés.",
+'prefs-help-email-others' => "Ét pō ânca sernîr ed lasêr che chiêter a 's mèten in cuntât tēgh cun la pôsta eletrônica cun al colegamèint da la tó pàgina utèint o da còla 'd discusiòun. Al tó indirés al vîn mìa fât savèir a quî ch'ét 's mèten in cuntât tēgh.",
# Groups
'group' => 'Gróp:',
'right-read' => 'Al lēş al pàgini',
'right-edit' => 'Mudéfica pàgini',
+# Special:Log/newusers
+'newuserlogpage' => 'Utèint nōv',
+
# Associated actions - in the sentence "You do not have permission to X"
'action-read' => 'lēzer cla pàgina ché',
'action-edit' => 'Mudifichêr cla pàgina ché',
'action-delete' => 'scanşlêr cla pàgina ché',
# Recent changes
+'nchanges' => '$1
+{{PLURAL:$1|mudéfica|mudéfichi}}',
'recentchanges' => 'Ûltmi mudéfichi',
+'recentchanges-legend' => 'Siēlti ûltmi mudéfichi.',
+'recentchanges-feed-description' => "Cól feed ché 'l arpôrta al mudéfichi piô frèschi a còl che gh'é dèinter al sît.",
+'recentchanges-label-newpage' => "Cun cla mudéfica ché t'é fât 'na pàgina nōva.",
+'recentchanges-label-minor' => "Còsta l'é 'na mudéfica céca",
+'recentchanges-label-bot' => "Cla mudéfica ché l'é stêda fâta da un bot.",
+'recentchanges-label-unpatrolled' => "Cla mudéfica ché an n'é mìa incòra stêda verifichêda.",
+'rcnotefrom' => "Ché sòt a gh'é la lésta dal mudéfichi fâti a partîr da '''$2''' (fîn a '''$1''').",
+'rclistfrom' => 'Fà vèder al mudéfichi fâti a partîr da $1.',
+'rcshowhideminor' => '$1 al mudéfichi céchi',
'rcshowhidebots' => '$1 i bot',
+'rcshowhideliu' => '$1 j utèint registrê',
+'rcshowhideanons' => '$1 j utèint sèinsa nòm.',
+'rcshowhidepatr' => '$1 al mudéfichi verifichêdi',
'rcshowhidemine' => '$1 al mē mudéfichi',
+'rclinks' => 'Fà vèder al $1 ûltmi mudéfichi fâti int j ûltem $2 dé<br />$3',
'diff' => 'dif',
'hist' => 'stòr',
'hide' => 'Lōga',
'boteditletter' => 'b',
'number_of_watching_users_pageview' => '[vésta da {{PLURAL:$1|un utèint|$1 utèint}}]',
'rc_categories_any' => "Bast' ech sia",
+'rc-enhanced-expand' => 'Fà vèder i particulêr.',
+'rc-enhanced-hide' => 'Lōga i particulêr.',
# Recent changes linked
+'recentchangeslinked' => 'Mudéfichi coleghêdi',
'recentchangeslinked-toolbox' => 'Mudéfichi coleghêdi',
+'recentchangeslinked-title' => 'Mudéfichi coleghêdi a $1.',
'recentchangeslinked-summary' => "Cla pàgina specêla ché la fà vèder al j ûltmi mudéfichi al pàgini coleghêdi da còla sgnêda (o dèinter int la categoréia sgnêda). Al pàgini dèint a la tó lésta 'd j [[Special:Watchlist|tgnû sòt ôc specêl]] în sgnêdi in '''grasèt'''.",
+'recentchangeslinked-page' => "Nòm ' d la pàgina.",
+'recentchangeslinked-to' => 'Fà vèder sōl al mudéfichi fâti al pàgini coleghêdi a còla sgnêda.',
# Upload
'upload' => "Cârga un 'file'",
+'uploadlogpage' => 'Fil carghê',
+'filedesc' => 'Sûnt.',
+'uploadedimage' => 'l\'à carghê "[[$1]]"',
'license' => 'Licèinsa:',
'license-header' => 'Licèinsa',
# File description page
'file-anchor-link' => "'File'",
'filehist' => "Stòria 'd la pàgina",
-'filehist-current' => "(d'adèsa)",
+'filehist-help' => "Fà cléch insém a 'n gróp dâta/ōra per vèder al file cm'é l'ēra int al mumèint e-sgnê",
+'filehist-revert' => 'armèt',
+'filehist-current' => '(adès)',
'filehist-datetime' => 'Dâta/Ōra',
'filehist-thumb' => 'Miniadûra',
+'filehist-thumbtext' => 'Miniadûra ed la versiòundal $1.',
'filehist-user' => 'Utèint',
'filehist-dimensions' => 'Amzûri',
'filehist-comment' => 'Cumèint',
'imagelinks' => "Ûş dal 'file'",
+'linkstoimage' => "{{PLURAL:$1|Int la pàgina seguèint a gh'é|Int al seguèinti $1 pàgini a gh'é}} colegamèint al file:",
+'nolinkstoimage' => "Nisóna pàgina la gh'à colegamèint al file",
+'sharedupload-desc-here' => "Cól file ché al deşvîn da $1 e al pōl èser druvê da êter prugèt. Ed sègvit a vîn fât vèder la spiegasiòun che gh'é int la [$2 pàgina de spiegasiòun dal file].",
# File deletion
'filedelete-submit' => 'Scanşela',
# Random page
'randompage' => "'Na pàgina a chêş",
+# Statistics
+'statistics' => 'Statéstichi',
+
'brokenredirects-edit' => 'Mudéfica',
# Miscellaneous special pages
'nbytes' => '$1 {{PLURAL:$1|byte|byte}}',
+'nmembers' => '$1 {{PLURAL:$1|elemèint}}',
+'prefixindex' => 'Elèinch per lètri dal pàgini',
+'usercreated' => '{{GENDER:$3|Fât/fâta}} al $1 a $2',
'newpages' => 'Pàgini pió nōvi',
'move' => 'Spôsta',
+'pager-newer-n' => '{{PLURAL:$1|1 còl pió frèsch|$1 i pió frèsch}}',
+'pager-older-n' => '{{PLURAL:$1|1 al pió vèc|$1 i pió vèc}}',
# Book sources
+'booksources' => 'Tèst o documèint da léber.',
+'booksources-search-legend' => "Sērca 'd documèint insém a di léber",
'booksources-go' => 'Và',
+# Special:Log
+'log' => 'Regéster',
+
# Special:AllPages
+'allpages' => 'Tót al pàgini.',
'alphaindexline' => 'da $1 a $2',
+'allarticles' => 'Tót al pàgini.',
'allpagessubmit' => 'Và',
+# Special:Categories
+'categories' => 'Categoréi',
+
+# Special:LinkSearch
+'linksearch-line' => '$1 preşèint int la pàgina $2',
+
# Special:ListUsers
'listusers-submit' => 'Fà vèder',
# Special:ListGroupRights
'listgrouprights-group' => 'Gróp:',
+'listgrouprights-members' => "(elèinch 'd j inscrét)",
# Email user
+'emailuser' => "Scrév a l'utèint",
'emailfrom' => 'Da:',
'emailto' => 'A:',
'emailsubject' => 'Argumèint:',
'emailmessage' => 'Mesâg',
# Watchlist
-'mywatchlist' => 'Sòt uservasiòun',
+'watchlist' => 'Tgnîr sòt ôc',
+'mywatchlist' => 'Tgnîr sòt ôc',
'watchlistfor2' => "Da l'utèint $1 $2",
'watchnologin' => "An t'é mìa gnû dèinter",
'watch' => 'Và adrē',
'watchthispage' => 'Và adrē a cla pàgina ché',
'unwatch' => 'Andêr mìa adrē',
+'watchlist-details' => "La lésta 'd quî tgnû 'd ôc specêl la gh'à {{PLURAL:$1|'na pàgina (e la relatîva pàgina 'd discusiòun)|$1 pagine (e al relatîvi pàgini 'd discusiòun)}}.",
+'wlshowlast' => 'Fà vèder al j ûltmi $1 ōri $2 dé $3',
+'watchlist-options' => 'Siēlti di tgnû sòt ôc specêl.',
'created' => 'creät',
'changed' => 'mudifegat',
# Delete
'delete-confirm' => 'Scanşela "$1"',
'delete-legend' => 'Scanşela',
+'actioncomplete' => 'Asiòun cumpîda',
+'actionfailed' => 'Asiòun falîda',
+'dellogpage' => 'Scanşladûri',
# Rollback
'rollback_short' => 'Tōrna a préma dal mudéfichi',
'rollbackfailed' => "An t'é mia turnê indrē",
# Protect
+'protectlogpage' => 'Al prutesiòun',
+'protectedarticle' => 'l\'à prutèt "[[$1]]"',
'pagesize' => '(byte)',
# Restrictions (nouns)
# Namespace form on various pages
'namespace' => 'Spâsi di nòm',
+'invert' => "scâmbia 'l pêrti siēlta",
'blanknamespace' => '(Principêl)',
# Contributions
-'contributions' => 'Lavōr fât da {{GENDER:$1|utèint}}',
+'contributions' => "Lavōr fât da {{GENDER:$1|l'utèint}}",
'contributions-title' => 'Lavōr ed $1',
'mycontris' => 'I mē lavōr',
'contribsub2' => 'Per {{GENDER:$3|$1}}($2)',
-'uctop' => "(d'adèsa)",
-
+'uctop' => '(adès)',
+'month' => 'Dal mèiş (e quî préma):',
+'year' => "Da l'ân (e quî préma):",
+
+'sp-contributions-newbies' => 'Fà vèder sōl i lavōr fât da j utèint nōv.',
+'sp-contributions-blocklog' => 'blôch',
+'sp-contributions-uploads' => 'fil carghê',
+'sp-contributions-logs' => 'Regéster',
+'sp-contributions-talk' => 'discusiòun',
+'sp-contributions-search' => 'Sērca i lavōr fât',
+'sp-contributions-username' => 'Indirés IP o nòm utèint',
+'sp-contributions-toponly' => "Fà vèder sōl i lavōr ch' în al j ûltmi versiòun per la pàgina.",
'sp-contributions-submit' => 'Sērca',
# What links here
'whatlinkshere' => 'A pûnten ché',
+'whatlinkshere-title' => 'Pàgini che pûnten a "$1"',
'whatlinkshere-page' => 'Pàgina:',
+'linkshere' => "Al pàgini segvèinti a gh'àn di colegamèint a '''[[:$1]]'''.",
+'nolinkshere' => "Nisóna pàgina la gh'à dèinter colegamèint che pûnten a '''[[:$1]]'''.",
+'isredirect' => 'Pàgina redirect',
+'istemplate' => 'uniòun',
+'isimage' => "Colegamèint vêrs al 'file'",
+'whatlinkshere-prev' => '{{PLURAL:$1|còl préma|quî préma $1}}',
+'whatlinkshere-next' => '{{PLURAL:$1|còl dôp|quî dôp $1}}',
'whatlinkshere-links' => '← colegamèint',
+'whatlinkshere-hideredirs' => '$1redirect',
+'whatlinkshere-hidetrans' => '$1 uniòun',
+'whatlinkshere-hidelinks' => '$1 colegamèint',
+'whatlinkshere-hideimages' => '$1 colegamèint da file',
+'whatlinkshere-filters' => 'Fîlter',
# Block/unblock
'block' => "Blôca l'utèint",
'unblock' => "Şblôcä l'utèint",
'blockip' => "Blôcä l'utèint",
'blockip-legend' => "Blôcä l'utèint",
+'ipboptions' => '2 ōri:2 hours,1 dé:1 day,3 dé:3 days,1 stmâna:1 week,2 stâni:2 weeks,1 mèiş:1 month,3 mèiş:3 months,6 mèiş:6 months,1 ân:1 year,infinito:infinite',
'ipb-unblock-addr' => 'Şblôcä $1',
'unblockip' => "Şblôcä l'utèint",
'blocklist' => 'Utèint bluchê',
+'ipblocklist' => 'Utèint bluchê',
'ipblocklist-submit' => 'Sērca',
'ipblocklist-otherblocks' => 'Êter {{PLURAL:$1|blôch}}',
'blocklink' => 'blôca',
'unblocklink' => 'şblôca',
'change-blocklink' => 'câmbia blôch',
'contribslink' => 'lavōr',
+'blocklogpage' => 'Blôch',
+'blocklogentry' => "t'é bluchê [[$1]] per un peréiod ed $2 $3",
'unblocklogentry' => "l'à şbluchê $1",
+'block-log-flags-nocreate' => 'Registrasiòun bluchêda',
# Move page
'move-page' => 'Spustamèint ed $1',
'revertmove' => 'armèt',
# Export
+'export' => "Pôrta fōra 'l pàgini.",
'export-submit' => 'Pôrta fōra',
# Namespace 8 related
+'allmessagesname' => 'Nòm.',
+'allmessagesdefault' => 'Tèst pre-stabilî',
'allmessages-filter-all' => 'Tót',
'allmessages-language' => 'Léngua:',
'allmessages-filter-submit' => 'Và',
# Thumbnails
'thumbnail-more' => 'Ingrandés',
+'thumbnail_error' => 'Erōr mèinter ét fêv la miniadûra:$1',
# Special:Import
'import-upload-filename' => "Nòm dal 'file':",
'tooltip-pt-userpage' => 'La tó pàgina utèint',
'tooltip-pt-mytalk' => "La tó pàgina 'd discusiòun.",
'tooltip-pt-preferences' => 'Al mē preferèinsi.',
-'tooltip-pt-watchlist' => "Elèinch dal pàgini che t'é drē tgnîr sòta uservasiòun.",
+'tooltip-pt-watchlist' => "Elèinch dal pàgini che t'é drē tgnîr sòt ôc.",
'tooltip-pt-mycontris' => 'Elèinch di tō lavōr.',
'tooltip-pt-login' => "A 's cunsélia 'd fêr la registrasiòun, ânca s' an n'é mia ubligatôri.",
'tooltip-pt-logout' => 'Và fōra',
'tooltip-ca-talk' => 'Guêrda al discusiòun relatîvi a cla pàgina chè.',
'tooltip-ca-edit' => 'Ét pō mudifiche cla pàgina ché. Per piaşèir drōva al ptòun "Guêrda préma" préma \'d salvêr còl che t\'é fât.',
+'tooltip-ca-addsection' => "Cumîncia 'na sesiòun nōva.",
'tooltip-ca-viewsource' => "Cla pàgina ché l'é sòta prutesiòun, mó 't pō vèder al só côdis surzéia.",
-'tooltip-ca-history' => 'Revişiòun fâti a cla pàgina ché.',
+'tooltip-ca-history' => 'Versiòun ed préma fâti a cla pàgina ché.',
+'tooltip-ca-protect' => 'Prutēz cla pàgina ché',
+'tooltip-ca-delete' => 'Scanşéla cla pàgina ché',
'tooltip-ca-move' => 'Spôsta cla pàgina ché (câmbia tétol)',
'tooltip-ca-watch' => "Zûnta cla pàgina ché a la tó lésta di tgnû 'd ôc specêl.",
+'tooltip-ca-unwatch' => "Tó via cla pàgina ché da la tó lésta di tgnû 'd ôc specêl.",
'tooltip-search' => 'Sērca dèinter ed {{SITENAME}}',
+'tooltip-search-go' => "Và a'na pàgina cun al tétol sgnê, s' al gh'é.",
'tooltip-search-fulltext' => 'Sērca int al pàgini al tèst e-sgnê.',
'tooltip-p-logo' => 'Guêrda la pàgina principêla',
'tooltip-n-mainpage' => 'Guêrda la pàgina principêla',
'tooltip-t-whatlinkshere' => "Elèinch ed tót' al pàgini ch'în coleghêdi a còsta.",
'tooltip-t-recentchangeslinked' => 'Elèinch dal j ûltmi mudéfichi al pàgini coleghêdi a còsta.',
'tooltip-feed-atom' => 'Feed Atom per cla pàgina ché.',
+'tooltip-t-contributions' => "Lèsta di lavōr fât da cl'utèint ché.",
+'tooltip-t-emailuser' => "Mânda un mesâg cun la pòsta eletrônica a cl'utèint ché",
'tooltip-t-upload' => "Cârga un 'file'",
'tooltip-t-specialpages' => 'Elèinch ed tót al pàgini specêli',
'tooltip-t-print' => 'Per stampêr cla pàgina ché.',
-'tooltip-t-permalink' => "Colegamèint fés a cla rervişiòun ché 'd la pàgina.",
+'tooltip-t-permalink' => "Colegamèint fés a cla versiòun ché 'd la pàgina.",
'tooltip-ca-nstab-main' => 'Guêrda la pàgina',
+'tooltip-ca-nstab-user' => 'Guêrda la pàgina utèint',
+'tooltip-ca-nstab-special' => "Còsta ché l'é 'na pàgina specêlal l'an pōl mìa èser mudifichêda",
'tooltip-ca-nstab-project' => 'Guêrda la pàgina dal prugèt',
'tooltip-ca-nstab-image' => "Guêrda la pàgina dal 'file'",
'tooltip-ca-nstab-template' => "Guêrda 'l template",
'tooltip-ca-nstab-help' => "Guêrda la pàgina d'ajót",
'tooltip-ca-nstab-category' => "Guêrda la pàgina 'd la categoréia",
+'tooltip-minoredit' => "Sègna cme 'na mudéfica céca",
'tooltip-save' => 'Sêlva al mudéfichi',
+'tooltip-preview' => "Guêrda al mudéfichi préma 'd salvêr (cunsiliê préma 'd salvêr)",
+'tooltip-diff' => "Guêrda 'l mudéfichi fâti al tèst",
+'tooltip-compareselectedversions' => "Guêrda al diferèinsi tr' al dō versiòun sernîdi ed cla pàgina ché.",
+'tooltip-watch' => "Zûnta cla pàgina ché a la tó lésta di tgnû 'd ôc specêl.",
'tooltip-rollback' => "\"Rollback\" al scanşèla cun un cléch tót' al mudéfichi fâti a cla pàgina ché da l'ûltem ch' al gh'à més al mân.",
'tooltip-undo' => '"Scanşèla" al permèt de scanşlêr cla mudéfica ché e l\'arvés al mudèl ed mudéfica in môd "Guerda préma". E al permèt ed mèter dèinter \'na spiegasiòun int l\' elemèint ed la mudéfica.',
+'tooltip-summary' => 'Mèt dèinter un sût cèch.',
# Attribution
'others' => 'êter',
# Info page
'pageinfo-header-edits' => 'Stòria dal mudéfichi',
'pageinfo-views' => 'Nómer dal vîşiti',
-'pageinfo-watchers' => "Nómer 'd utèint che gh'àn la pàgina sòt uservasiòun.",
+'pageinfo-watchers' => "Nómer 'd utèint che gh'àn la pàgina sòt ôc.",
'pageinfo-edits' => 'Nómer totêl dal mudéfichi',
'pageinfo-authors' => 'Nómer totêl di divêrs avtôr',
'nextdiff' => 'Diferèinsa dôp →',
# Media information
+'file-info-size' => '$1 × $2 pixel, amzûra dal file:$3, gèner MIME: $4',
+'file-nohires' => "An gh'é mìa la manēra ed vèder pió cêr de csé.",
+'svg-long-desc' => 'file in furmê SVG, grandèsa teôrica $1 x $2 pixel, grandèsa dal file: $3',
+'show-big-image' => 'File uriginêl',
'file-info-gif-looped' => 'A ripetisiòun',
'file-info-png-looped' => 'A ripetisiòun',
# Metadata
'metadata' => 'Metadati',
+'metadata-help' => "In cól file ché agh'é dal j infurmasiòun zuntêdi, prubabilmèint zuntêdi da la mâchina fotogrâfica o dal scàner druvê per fotografêrel o per fêrel dvintêr digitêl. Se al file l'é stê mudfifichê, soquânt particulêr a prén cumbinêr mìa cun la realtê.",
+'metadata-fields' => "I câmp relatîv a i metadati ed la figûra, in lésta in cól mesâg ché, a gnirân més int la pàgina ed la figûra quând la tabèla di metadati l'é mustrêda int la fōrma cûrta. Per impustasiòun pre-stabilîda, chiêter câmp a gnirân lughê.
+* make
+* model
+* datetimeoriginal
+* exposuretime
+* fnumber
+* isospeedratings
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude",
# Exif tags
'exif-exposuretime-format' => '$1 s ($2)',
# Watchlist editor
'watchlistedit-raw-titles' => 'Tétol:',
+# Watchlist editing tools
+'watchlisttools-view' => 'Guêrda al mudéfichi relatîvi.',
+'watchlisttools-edit' => "Fa vèder e mudéfica la lést quî di tgnû 'd ôc specêl.",
+'watchlisttools-raw' => 'Mudéfica la lésta in furmê tèst.',
+
+# Core parser functions
+'duplicate-defaultsort' => "Atensiòun la cêva per urdnêr pre-stabilîda ''$1'' la vîn cambiêda cun la ''$2''.",
+
# Special:Version
'version' => 'Versiòun',
'version-specialpages' => 'Pàgina specêla',
'version-other' => 'Êter',
-'version-version' => '(Versiòun $1)',
-'version-license' => 'Licèinsa',
+'version-version' => '($1)',
+'version-license' => 'Licèinsa Media Wiki',
'version-poweredby-others' => 'êter',
# Special:FileDuplicateSearch
# Special:SpecialPages
'specialpages' => 'Pàgini specêli',
+# External image whitelist
+'external_image_whitelist' => "#Lasêr cla pàgina ché acsé cme l'é<pre>
+#Mèter dèinter i pès dal j espresiòun regolêri (sōl la pêrta cla va fra //) ed sègvit
+#Còsti gnirân més a cunfrûnt cun j indirés URL dal figûri d'ed fōra (hotlinked)
+#Al cunbinasiòun asrân fât vèder cme figûri, se no a gnirà fât vèder sōl al colegamèint
+#Al rîghi che cumîncen cun # în cunsidrêdi di cumèint
+#La diferèinsa tr' al lètri grândi e al lètri céchi an gh'à mìa impurtânsa
+
+#Mèter sōver cla rîga ché tót i pès di regex. Lasêr cla rîga ché acsé cme l'é</pre>",
+
# Special:Tags
+'tag-filter' => 'Fîlta per [[Special:Tags|etichèta]]',
'tags-edit' => 'mudéfica',
# Special:ComparePages
$messages = array(
# User preference toggles
'tog-underline' => 'Υπογράμμιση συνδέσμων:',
-'tog-justify' => 'Στοίχιση παραγράφων',
'tog-hideminor' => 'Απόκρυψη μικροεπεξεργασιών στις πρόσφατες αλλαγές',
'tog-hidepatrolled' => 'Απόκρυψη ελεγμένων επεξεργασιών στις πρόσφατες αλλαγές',
'tog-newpageshidepatrolled' => 'Απόκρυψη ελεγμένων σελίδων από τον κατάλογο νέων σελίδων',
'tog-numberheadings' => 'Αυτόματη αρίθμηση επικεφαλίδων',
'tog-showtoolbar' => 'Εμφάνιση μπάρας εργαλείων επεξεργασίας',
'tog-editondblclick' => 'Επεξεργασία σελίδων με διπλό κλικ',
-'tog-editsection' => 'Ενεργοποίηση επεξεργασίας ενοτήτων μέσω των συνδέσμων [επεξεργασία]',
'tog-editsectiononrightclick' => 'Ενεργοποίηση επεξεργασίας ενοτήτων με δεξί κλικ στους τίτλους των ενοτήτων',
-'tog-showtoc' => 'Εμφάνιση πίνακα περιεχομένων (για σελίδες με περισσότερες από τρεις κεφαλίδες)',
'tog-rememberpassword' => 'Διατήρηση της σύνδεσής μου σε αυτόν τον περιηγητή (για μέγιστο $1 {{PLURAL:$1|ημέρας|ημερών}})',
'tog-watchcreations' => 'Προσθήκη σελίδων που δημιουργώ και αρχείων που ανεβάζω στη λίστα παρακολούθησής μου',
'tog-watchdefault' => 'Προσθήκη σελίδων που επεξεργάζομαι στη λίστα παρακολούθησης.',
'gotaccount' => 'Έχετε ήδη λογαριασμό; $1.',
'gotaccountlink' => 'Είσοδος',
'userlogin-resetlink' => 'Ξεχάσατε τα στοιχεία εισόδου σας;',
-'userlogin-resetpassword-link' => 'Î\9eεÏ\87λαÏ\83αÏ\84ε Ï\84ον κÏ\89δικÏ\8c Ï\80Ï\81Ï\8cÏ\83βαÏ\83ηÏ\82',
+'userlogin-resetpassword-link' => 'Î\9eεÏ\87άÏ\83αÏ\84ε Ï\84ον κÏ\89δικÏ\8c Ï\80Ï\81Ï\8cÏ\83βαÏ\83ηÏ\82;',
'helplogin-url' => 'Help:Σύνδεση',
'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Βοήθεια για τη σύνδεσή σας]]',
'createacct-join' => 'Εισάγετε τα στοιχεία σας παρακάτω.',
'content-failed-to-parse' => 'Απέτυχε η ανάλυση περιεχομένου του $2 για το μοντέλο $1:$3',
'invalid-content-data' => 'Μη έγκυρα δεδομένα περιεχομένου',
'content-not-allowed-here' => 'Το περιεχόμενο «$1» δεν επιτρέπεται στη σελίδα [[$2]]',
-'editwarning-warning' => 'Αφήνοντας αυτή τη σελίδα μπορεί να σας κάνει να χάσετε κάποιες αλλαγές που έχετε κάνει.
-Αν έχετε συνδεθεί, μπορείτε να απενεργοποιήσετε αυτή την προειδοποίηση στην ενότητα "Επεξεργασία" των προτιμήσεών σας.',
+'editwarning-warning' => 'Αφήνοντας αυτή τη σελίδα μπορεί να έχει ως συνέπεια να χαθούν κάποιες αλλαγές που έχετε κάνει.
+Αν έχετε συνδεθεί, μπορείτε να απενεργοποιήσετε αυτή την προειδοποίηση στην ενότητα "{{int:prefs-editing}}" των προτιμήσεών σας.',
# Content models
'content-model-wikitext' => 'βικικείμενο',
'showhideselectedversions' => 'Εμφάνιση/απόκρυψη των επιλεγμένων εκδοχών',
'editundo' => 'αναίρεση',
'diff-empty' => '(Καμία διαφορά)',
-'diff-multi' => '({{PLURAL:$1|Μία ενδιάμεση αναθεώρηση|$1 ενδιάμεσες αναθεωρήσεις}} από {{PLURAL:$2|ένα χρήστη|$2 χρήστες}} δεν {{PLURAL:$1|εμφανίζεται|εμφανίζονται}})',
'diff-multi-manyusers' => '({{PLURAL:$1|Μία ενδιάμεση αναθεώρηση|$1 ενδιάμεσες αναθεωρήσεις}} από περισσότερο από $2 {{PLURAL:$2|χρήστη|χρήστες}} δεν εμφανίζ{{PLURAL:$1|εται|ονται}})',
'difference-missing-revision' => '{{PLURAL:$2|Μία αναθεώρηση|$2 αναθεωρήσεις}} αυτής της διαφοράς ($1) δεν {{PLURAL:$2|μπόρεσε να βρεθεί|μπόρεσαν να βρεθούν}}.
'rows' => 'Σειρές',
'columns' => 'Στήλες',
'searchresultshead' => 'Αποτελέσματα αναζήτησης/Ρυθμίσεις',
-'resultsperpage' => 'Αποτελέσματα ανά σελίδα',
'stub-threshold' => 'Κατώφλι για μορφοποίηση <span class="mw-stub-example">συνδέσμου επεκτάσιμου</span>:',
'stub-threshold-disabled' => 'Απενεργοποιημένο',
'recentchangesdays' => 'Ημέρες προς εμφάνιση στις πρόσφατες αλλαγές:',
'recentchanges-label-minor' => 'Αυτή είναι μια μικροαλλαγή',
'recentchanges-label-bot' => 'Αυτή η επεξεργασία έγινε από ένα ρομπότ',
'recentchanges-label-unpatrolled' => 'Αυτή η επεξεργασία δεν έχει ελεγχθεί ακόμα',
-'recentchanges-legend-newpage' => '$1 - νέα σελίδα',
+'recentchanges-label-plusminus' => 'Μεταβολή του μεγέθους της σελίδας σε bytes',
+'recentchanges-legend-heading' => "'''Υπόμνημα:'''",
+'recentchanges-legend-newpage' => '(δείτε [[Special:NewPages|Νέες σελίδες]])',
'rcnotefrom' => "Παρακάτω είναι οι αλλαγές από τις '''$2''' (εμφανίζονται μέχρι '''$1''').",
'rclistfrom' => 'Εμφάνιση νέων αλλαγών αρχίζοντας από $1',
'rcshowhideminor' => '$1 μικροεπεξεργασιών',
'unusedimages' => 'Αχρησιμοποίητες εικόνες',
'popularpages' => 'Δημοφιλείς σελίδες',
'wantedcategories' => 'Επιθυμητές κατηγορίες',
-'wantedpages' => 'Î\95Ï\80ιθÏ\85μηÏ\84Îς σελίδες',
+'wantedpages' => 'Î\96ηÏ\84οÏ\8dμενες σελίδες',
'wantedpages-badtitle' => 'Μη εγκυρός τίτλος στο σύνολο αποτελέσματος: $1',
-'wantedfiles' => 'Î\95Ï\80ιθÏ\85μηÏ\84ά αρχεία',
+'wantedfiles' => 'Î\96ηÏ\84οÏ\8dμενα αρχεία',
'wantedfiletext-cat' => 'Τα ακόλουθα αρχεία χρησιμοποιούνται αλλά δεν υπάρχουν. Αρχεία από εξωτερικά αποθετήρια ενδέχεται να παρατίθενται παρότι υπάρχουν. Κάθε τέτοιες λανθασμένες αναφορές θα <del>διαγραμμίζονται</del>. Επιπλέον, σελίδες που ενσωματώνουν αρχεία που δεν υπάρχουν παρατίθενται στο [[:$1]].',
'wantedfiletext-nocat' => 'Τα ακόλουθα αρχεία χρησιμοποιούνται αλλά δεν υπάρχουν. Πέρα από τα υπάρχοντα ενδέχεται να έχουν καταχωριστεί και αρχεία από εξωτερικές πηγές λογισμικού. Τέτοιες ψευδο-υπαρκτές καταχωρίσεις θα εμφανίζονται <del>διαγραμμισμένες</del>.',
-'wantedtemplates' => 'Î\95Ï\80ιθÏ\85μηÏ\84ά πρότυπα',
+'wantedtemplates' => 'Î\96ηÏ\84οÏ\8dμενα πρότυπα',
'mostlinked' => 'Οι σελίδες με τις περισσότερες αναφορές',
'mostlinkedcategories' => 'Περισσότερο χρησιμοποιούμενες κατηγορίες',
'mostlinkedtemplates' => 'Περισσότερο χρησιμοποιούμενα πρότυπα',
'watchmethod-list' => 'Έλεγχος σελίδων υπό παρακολούθηση για πρόσφατες αλλαγές',
'watchlistcontains' => 'Η λίστα παρακολούθησής σας περιέχει $1 {{PLURAL:$1|σελίδα|σελίδες}}.',
'iteminvalidname' => 'Πρόβλημα με το στοιχείο "$1", άκυρο όνομα...',
-'wlnote' => "Παρακάτω είναι {{PLURAL:$1|η πιο πρόσφατη αλλαγή|οι '''$1''' πιο πρόσφατες αλλαγές}} κατά τη διάρκεια {{PLURAL:$2|της τελευταίας ώρας|των '''$2''' τελευταίων ωρών}} ως προς την $3, $4.",
'wlshowlast' => 'Εμφάνιση των τελευταίων $1 ωρών $2 ημερών $3',
'watchlist-options' => 'Επιλογές λίστας παρακολούθησης',
'tooltip-pt-watchlist' => 'Η λίστα με τις σελίδες που παρακολουθείτε για αλλαγές',
'tooltip-pt-mycontris' => 'Κατάλογος των συνεισφορών σας',
'tooltip-pt-login' => 'Σας ενθαρρύνουμε να συνδεθείτε· ωστόσο δεν είναι υποχρεωτικό',
-'tooltip-pt-anonlogin' => 'Σας προτείνουμε να συνδεθείτε παρόλο που δεν είναι αναγκαίο.',
'tooltip-pt-logout' => 'Έξοδος',
'tooltip-ca-talk' => 'Συζήτηση για τη σελίδα περιεχομένου',
'tooltip-ca-edit' => 'Μπορείτε να επεξεργαστείτε αυτή τη σελίδα. Παρακαλούμε χρησιμοποιήστε το κουμπί προεπισκόπησης πριν την αποθήκευση.',
'version-hook-subscribedby' => 'Υπογεγραμμένο από',
'version-version' => '(Έκδοση $1)',
'version-license' => 'Άδεια χρήσης',
+'version-ext-license' => 'Άδεια χρήσης',
+'version-ext-colheader-name' => 'Επέκταση',
+'version-ext-colheader-version' => 'Έκδοση',
+'version-ext-colheader-license' => 'Άδεια χρήσης',
+'version-ext-colheader-description' => 'Περιγραφή',
'version-poweredby-credits' => "Αυτό το wiki λειτουργεί με το λογισμικό '''[https://www.mediawiki.org/ MediaWiki]''', πνευματική ιδιοκτησία © 2001-$1 $2.",
'version-poweredby-others' => 'άλλοι',
'version-poweredby-translators' => 'translatewiki.net μεταφραστές',
'numberingroup' => array( 1, 'NUMBERINGROUP', 'NUMINGROUP' ),
'staticredirect' => array( 1, '__STATICREDIRECT__' ),
'protectionlevel' => array( 1, 'PROTECTIONLEVEL' ),
+ 'cascadingsources' => array( 1, 'CASCADINGSOURCES' ),
'formatdate' => array( 0, 'formatdate', 'dateformat' ),
'url_path' => array( 0, 'PATH' ),
'url_wiki' => array( 0, 'WIKI' ),
'CreateAccount' => array( 'CreateAccount' ),
'Deadendpages' => array( 'DeadendPages' ),
'DeletedContributions' => array( 'DeletedContributions' ),
+ 'Diff' => array( 'Diff' ),
'DoubleRedirects' => array( 'DoubleRedirects' ),
'EditWatchlist' => array( 'EditWatchlist' ),
'Emailuser' => array( 'EmailUser' ),
# User preference toggles
'tog-underline' => 'Link underlining:',
-'tog-justify' => 'Justify paragraphs',
'tog-hideminor' => 'Hide minor edits in recent changes',
'tog-hidepatrolled' => 'Hide patrolled edits in recent changes',
'tog-newpageshidepatrolled' => 'Hide patrolled pages from new page list',
'tog-numberheadings' => 'Auto-number headings',
'tog-showtoolbar' => 'Show edit toolbar',
'tog-editondblclick' => 'Edit pages on double click',
-'tog-editsection' => 'Enable section editing via [edit] links',
'tog-editsectiononrightclick' => 'Enable section editing by right clicking on section titles',
-'tog-showtoc' => 'Show table of contents (for pages with more than 3 headings)',
'tog-rememberpassword' => 'Remember my login on this browser (for a maximum of $1 {{PLURAL:$1|day|days}})',
'tog-watchcreations' => 'Add pages I create and files I upload to my watchlist',
'tog-watchdefault' => 'Add pages and files I edit to my watchlist',
'category_header' => 'Pages in category "$1"',
'subcategories' => 'Subcategories',
'category-media-header' => 'Media in category "$1"',
-'category-empty' => "''This category currently contains no pages or media.''",
+'category-empty' => '<em>This category currently contains no pages or media.</em>',
'hidden-categories' => '{{PLURAL:$1|Hidden category|Hidden categories}}',
'hidden-category-category' => 'Hidden categories',
'category-subcat-count' => '{{PLURAL:$2|This category has only the following subcategory.|This category has the following {{PLURAL:$1|subcategory|$1 subcategories}}, out of $2 total.}}',
'databaseerror-query' => 'Query: $1',
'databaseerror-function' => 'Function: $1',
'databaseerror-error' => 'Error: $1',
-'laggedslavemode' => "'''Warning:''' Page may not contain recent updates.",
+'laggedslavemode' => '<strong>Warning:</strong> Page may not contain recent updates.',
'readonly' => 'Database locked',
'enterlockreason' => 'Enter a reason for the lock, including an estimate of when the lock will be released',
'readonlytext' => 'The database is currently locked to new entries and other modifications, probably for routine database maintenance, after which it will be back to normal.
Please try again in a few minutes.',
'protectedpagetext' => 'This page has been protected to prevent editing or other actions.',
'viewsourcetext' => 'You can view and copy the source of this page:',
-'viewyourtext' => "You can view and copy the source of '''your edits''' to this page:",
+'viewyourtext' => 'You can view and copy the source of <strong>your edits</strong> to this page:',
'protectedinterface' => 'This page provides interface text for the software on this wiki, and is protected to prevent abuse.
To add or change translations for all wikis, please use [//translatewiki.net/ translatewiki.net], the MediaWiki localisation project.',
-'editinginterface' => "'''Warning:''' You are editing a page that is used to provide interface text for the software.
+'editinginterface' => '<strong>Warning:</strong> You are editing a page that is used to provide interface text for the software.
Changes to this page will affect the appearance of the user interface for other users on this wiki.
-To add or change translations for all wikis, please use [//translatewiki.net/ translatewiki.net], the MediaWiki localisation project.",
+To add or change translations for all wikis, please use [//translatewiki.net/ translatewiki.net], the MediaWiki localisation project.',
'cascadeprotected' => 'This page has been protected from editing because it is included in the following {{PLURAL:$1|page, which is|pages, which are}} protected with the "cascading" option turned on:
$2',
-'namespaceprotected' => "You do not have permission to edit pages in the '''$1''' namespace.",
+'namespaceprotected' => "You do not have permission to edit pages in the <strong>$1</strong> namespace.",
'customcssprotected' => "You do not have permission to edit this CSS page because it contains another user's personal settings.",
'customjsprotected' => "You do not have permission to edit this JavaScript page because it contains another user's personal settings.",
'mycustomcssprotected' => 'You do not have permission to edit this CSS page.',
'mypreferencesprotected' => 'You do not have permission to edit your preferences.',
'ns-specialprotected' => 'Special pages cannot be edited.',
'titleprotected' => 'This title has been protected from creation by [[User:$1|$1]].
-The reason given is "\'\'$2\'\'".',
+The reason given is "<em>$2</em>".',
'filereadonlyerror' => 'Unable to modify the file "$1" because the file repository "$2" is in read-only mode.
The administrator who locked it offered this explanation: "$3".',
'exception-nologin-text-manual' => 'Please $1 to be able to access this page or action.',
# Virus scanner
-'virus-badscanner' => "Bad configuration: Unknown virus scanner: ''$1''",
+'virus-badscanner' => "Bad configuration: Unknown virus scanner: <em>$1</em>",
'virus-scanfailed' => 'scan failed (code $1)',
'virus-unknownscanner' => 'unknown antivirus:',
# Login and logout pages
-'logouttext' => "'''You are now logged out.'''
+'logouttext' => "<strong>You are now logged out.</strong>
Note that some pages may continue to be displayed as if you were still logged in, until you clear your browser cache.",
'welcomeuser' => 'Welcome, $1!',
'nocookiesforlogin' => '{{int:nocookieslogin}}', # only translate this message to other languages if you have to change it
'noname' => 'You have not specified a valid username.',
'loginsuccesstitle' => 'Login successful',
-'loginsuccess' => "'''You are now logged in to {{SITENAME}} as \"\$1\".'''",
+'loginsuccess' => "<strong>You are now logged in to {{SITENAME}} as \"\$1\".</strong>",
'nosuchuser' => 'There is no user by the name "$1".
Usernames are case sensitive.
Check your spelling, or [[Special:UserLogin/signup|create a new account]].',
Please enter a well-formatted address or empty that field.',
'cannotchangeemail' => 'Account email addresses cannot be changed on this wiki.',
'emaildisabled' => 'This site cannot send emails.',
+'emailsender' => '{{SITENAME}}', # do not translate or duplicate this message to other languages
'accountcreated' => 'Account created',
'accountcreatedtext' => 'The user account for [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|talk]]) has been created.',
'createaccount-title' => 'Account creation for {{SITENAME}}',
# Change password dialog
'changepassword' => 'Change password',
'changepassword-summary' => '', # do not translate or duplicate this message to other languages
+'changepassword-throttled' => 'You have made too many recent login attempts.
+Please wait $1 before trying again.',
'resetpass_announce' => 'You logged in with a temporary emailed code.
To finish logging in, you must set a new password here:',
'resetpass_text' => '<!-- Add text here -->', # only translate this message to other languages if you have to change it
'changeemail-password' => 'Your {{SITENAME}} password:',
'changeemail-submit' => 'Change email',
'changeemail-cancel' => 'Cancel',
+'changeemail-throttled' => 'You have made too many login attempts.
+Please wait $1 before trying again.',
# Special:ResetTokens
'resettokens' => 'Reset tokens',
'showpreview' => 'Show preview',
'showlivepreview' => 'Live preview',
'showdiff' => 'Show changes',
-'anoneditwarning' => "'''Warning:''' You are not logged in.
+'anoneditwarning' => "<strong>Warning:</strong> You are not logged in.
Your IP address will be recorded in this page's edit history.",
-'anonpreviewwarning' => "''You are not logged in. Saving will record your IP address in this page's edit history.''",
-'missingsummary' => "'''Reminder:''' You have not provided an edit summary.
+'anonpreviewwarning' => "<em>You are not logged in. Saving will record your IP address in this page's edit history.</em>",
+'missingsummary' => "<strong>Reminder:</strong> You have not provided an edit summary.
If you click \"{{int:savearticle}}\" again, your edit will be saved without one.",
'missingcommenttext' => 'Please enter a comment below.',
-'missingcommentheader' => "'''Reminder:''' You have not provided a subject/headline for this comment.
+'missingcommentheader' => "<strong>Reminder:</strong> You have not provided a subject/headline for this comment.
If you click \"{{int:savearticle}}\" again, your edit will be saved without one.",
'summary-preview' => 'Summary preview:',
'subject-preview' => 'Subject/headline preview:',
'blockedtitle' => 'User is blocked',
-'blockedtext' => "'''Your username or IP address has been blocked.'''
+'blockedtext' => "<strong>Your username or IP address has been blocked.</strong>
The block was made by $1.
-The reason given is ''$2''.
+The reason given is <em>$2</em>.
* Start of block: $8
* Expiry of block: $6
'autoblockedtext' => "Your IP address has been automatically blocked because it was used by another user, who was blocked by $1.
The reason given is:
-:''$2''
+:<em>$2</em>
* Start of block: $8
* Expiry of block: $6
'loginreqlink' => 'log in',
'loginreqpagetext' => 'Please $1 to view other pages.',
'accmailtitle' => 'Password sent',
-'accmailtext' => "A randomly generated password for [[User talk:$1|$1]] has been sent to $2. It can be changed on the ''[[Special:ChangePassword|change password]]'' page upon logging in.",
+'accmailtext' => "A randomly generated password for [[User talk:$1|$1]] has been sent to $2. It can be changed on the <em>[[Special:ChangePassword|change password]]</em> page upon logging in.",
'newarticle' => '(New)',
'newarticletext' => "You have followed a link to a page that does not exist yet.
To create the page, start typing in the box below (see the [[{{MediaWiki:Helppage}}|help page]] for more info).
-If you are here by mistake, click your browser's '''back''' button.",
+If you are here by mistake, click your browser's <strong>back</strong> button.",
'newarticletextanon' => '{{int:newarticletext}}', # do not translate or duplicate this message to other languages
'talkpagetext' => '<!-- MediaWiki:talkpagetext -->', # do not translate or duplicate this message to other languages
'anontalkpagetext' => "----
-''This is the discussion page for an anonymous user who has not created an account yet, or who does not use it.''
+<em>This is the discussion page for an anonymous user who has not created an account yet, or who does not use it.</em>
We therefore have to use the numerical IP address to identify him/her.
Such an IP address can be shared by several users.
If you are an anonymous user and feel that irrelevant comments have been directed at you, please [[Special:UserLogin/signup|create an account]] or [[Special:UserLogin|log in]] to avoid future confusion with other anonymous users.",
'userpage-userdoesnotexist-view' => 'User account "$1" is not registered.',
'blocked-notice-logextract' => 'This user is currently blocked.
The latest block log entry is provided below for reference:',
-'clearyourcache' => "'''Note:''' After saving, you may have to bypass your browser's cache to see the changes.
-* '''Firefox / Safari:''' Hold ''Shift'' while clicking ''Reload'', or press either ''Ctrl-F5'' or ''Ctrl-R'' (''⌘-R'' on a Mac)
-* '''Google Chrome:''' Press ''Ctrl-Shift-R'' (''⌘-Shift-R'' on a Mac)
-* '''Internet Explorer:''' Hold ''Ctrl'' while clicking ''Refresh'', or press ''Ctrl-F5''
-* '''Opera:''' Clear the cache in ''Tools → Preferences''",
-'usercssyoucanpreview' => "'''Tip:''' Use the \"{{int:showpreview}}\" button to test your new CSS before saving.",
-'userjsyoucanpreview' => "'''Tip:''' Use the \"{{int:showpreview}}\" button to test your new JavaScript before saving.",
-'usercsspreview' => "'''Remember that you are only previewing your user CSS.'''
-'''It has not yet been saved!'''",
-'userjspreview' => "'''Remember that you are only testing/previewing your user JavaScript.'''
-'''It has not yet been saved!'''",
-'sitecsspreview' => "'''Remember that you are only previewing this CSS.'''
-'''It has not yet been saved!'''",
-'sitejspreview' => "'''Remember that you are only previewing this JavaScript code.'''
-'''It has not yet been saved!'''",
-'userinvalidcssjstitle' => "'''Warning:''' There is no skin \"\$1\".
+'clearyourcache' => "<strong>Note:</strong> After saving, you may have to bypass your browser's cache to see the changes.
+* <strong>Firefox / Safari:</strong> Hold <em>Shift</em> while clicking <em>Reload</em>, or press either <em>Ctrl-F5</em> or <em>Ctrl-R</em> (<em>⌘-R</em> on a Mac)
+* <strong>Google Chrome:</strong> Press <em>Ctrl-Shift-R</em> (<em>⌘-Shift-R</em> on a Mac)
+* <strong>Internet Explorer:</strong> Hold <em>Ctrl</em> while clicking <em>Refresh</em>, or press <em>Ctrl-F5</em>
+* <strong>Opera:</strong> Clear the cache in <em>Tools → Preferences</em>",
+'usercssyoucanpreview' => "<strong>Tip:</strong> Use the \"{{int:showpreview}}\" button to test your new CSS before saving.",
+'userjsyoucanpreview' => "<strong>Tip:</strong> Use the \"{{int:showpreview}}\" button to test your new JavaScript before saving.",
+'usercsspreview' => "<strong>Remember that you are only previewing your user CSS.
+It has not yet been saved!</strong>",
+'userjspreview' => "<strong>Remember that you are only testing/previewing your user JavaScript.
+It has not yet been saved!</strong>",
+'sitecsspreview' => "<strong>Remember that you are only previewing this CSS.
+It has not yet been saved!</strong>",
+'sitejspreview' => "<strong>Remember that you are only previewing this JavaScript code.
+It has not yet been saved!</strong>",
+'userinvalidcssjstitle' => "<strong>Warning:</strong> There is no skin \"\$1\".
Custom .css and .js pages use a lowercase title, e.g. {{ns:user}}:Foo/vector.css as opposed to {{ns:user}}:Foo/Vector.css.",
'updated' => '(Updated)',
-'note' => "'''Note:'''",
-'previewnote' => "'''Remember that this is only a preview.'''
+'note' => "<strong>Note:</strong>",
+'previewnote' => "<strong>Remember that this is only a preview.</strong>
Your changes have not yet been saved!",
'continue-editing' => 'Go to editing area',
'previewconflict' => 'This preview reflects the text in the upper text editing area as it will appear if you choose to save.',
-'session_fail_preview' => "'''Sorry! We could not process your edit due to a loss of session data.'''
+'session_fail_preview' => "<strong>Sorry! We could not process your edit due to a loss of session data.</strong>
Please try again.
If it still does not work, try [[Special:UserLogout|logging out]] and logging back in.",
-'session_fail_preview_html' => "'''Sorry! We could not process your edit due to a loss of session data.'''
+'session_fail_preview_html' => "<strong>Sorry! We could not process your edit due to a loss of session data.</strong>
-''Because {{SITENAME}} has raw HTML enabled, the preview is hidden as a precaution against JavaScript attacks.''
+<em>Because {{SITENAME}} has raw HTML enabled, the preview is hidden as a precaution against JavaScript attacks.</em>
-'''If this is a legitimate edit attempt, please try again.'''
+<strong>If this is a legitimate edit attempt, please try again.</strong>
If it still does not work, try [[Special:UserLogout|logging out]] and logging back in.",
-'token_suffix_mismatch' => "'''Your edit has been rejected because your client mangled the punctuation characters in the edit token.'''
+'token_suffix_mismatch' => "<strong>Your edit has been rejected because your client mangled the punctuation characters in the edit token.</strong>
The edit has been rejected to prevent corruption of the page text.
This sometimes happens when you are using a buggy web-based anonymous proxy service.",
-'edit_form_incomplete' => "'''Some parts of the edit form did not reach the server; double-check that your edits are intact and try again.'''",
+'edit_form_incomplete' => "<strong>Some parts of the edit form did not reach the server; double-check that your edits are intact and try again.</strong>",
'editing' => 'Editing $1',
'creating' => 'Creating $1',
'editingsection' => 'Editing $1 (section)',
The upper text area contains the page text as it currently exists.
Your changes are shown in the lower text area.
You will have to merge your changes into the existing text.
-'''Only''' the text in the upper text area will be saved when you press \"{{int:savearticle}}\".",
+<strong>Only</strong> the text in the upper text area will be saved when you press \"{{int:savearticle}}\".",
'yourtext' => 'Your text',
'storedversion' => 'Stored revision',
-'nonunicodebrowser' => "'''Warning: Your browser is not Unicode compliant.'''
+'nonunicodebrowser' => "<strong>Warning: Your browser is not Unicode compliant.</strong>
A workaround is in place to allow you to safely edit pages: Non-ASCII characters will appear in the edit box as hexadecimal codes.",
-'editingold' => "'''Warning: You are editing an out-of-date revision of this page.'''
+'editingold' => "<strong>Warning: You are editing an out-of-date revision of this page.</strong>
If you save it, any changes made since this revision will be lost.",
'yourdiff' => 'Differences',
'copyrightwarning' => "Please note that all contributions to {{SITENAME}} are considered to be released under the $2 (see $1 for details).
If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.<br />
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource.
-'''Do not submit copyrighted work without permission!'''",
+<strong>Do not submit copyrighted work without permission!</strong>",
'copyrightwarning2' => "Please note that all contributions to {{SITENAME}} may be edited, altered, or removed by other contributors.
If you do not want your writing to be edited mercilessly, then do not submit it here.<br />
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see $1 for details).
-'''Do not submit copyrighted work without permission!'''",
+<strong>Do not submit copyrighted work without permission!</strong>",
'editpage-head-copy-warn' => '-', # do not translate or duplicate this message to other languages
'editpage-tos-summary' => '-', # do not translate or duplicate this message to other languages
'longpage-hint' => '-', # do not translate or duplicate this message to other languages
-'longpageerror' => "'''Error: The text you have submitted is {{PLURAL:$1|one kilobyte|$1 kilobytes}} long, which is longer than the maximum of {{PLURAL:$2|one kilobyte|$2 kilobytes}}.'''
+'longpageerror' => "<strong>Error: The text you have submitted is {{PLURAL:$1|one kilobyte|$1 kilobytes}} long, which is longer than the maximum of {{PLURAL:$2|one kilobyte|$2 kilobytes}}.</strong>
It cannot be saved.",
-'readonlywarning' => "'''Warning: The database has been locked for maintenance, so you will not be able to save your edits right now.'''
+'readonlywarning' => "<strong>Warning: The database has been locked for maintenance, so you will not be able to save your edits right now.</strong>
You may wish to copy and paste your text into a text file and save it for later.
The administrator who locked it offered this explanation: $1",
-'protectedpagewarning' => "'''Warning: This page has been protected so that only users with administrator privileges can edit it.'''
+'protectedpagewarning' => "<strong>Warning: This page has been protected so that only users with administrator privileges can edit it.</strong>
The latest log entry is provided below for reference:",
-'semiprotectedpagewarning' => "'''Note:''' This page has been protected so that only registered users can edit it.
+'semiprotectedpagewarning' => "<strong>Note:</strong> This page has been protected so that only registered users can edit it.
The latest log entry is provided below for reference:",
-'cascadeprotectedwarning' => "'''Warning:''' This page has been protected so that only users with administrator privileges can edit it because it is included in the following cascade-protected {{PLURAL:$1|page|pages}}:",
-'titleprotectedwarning' => "'''Warning: This page has been protected so that [[Special:ListGroupRights|specific rights]] are needed to create it.'''
+'cascadeprotectedwarning' => "<strong>Warning:</strong> This page has been protected so that only users with administrator privileges can edit it because it is included in the following cascade-protected {{PLURAL:$1|page|pages}}:",
+'titleprotectedwarning' => "<strong>Warning: This page has been protected so that [[Special:ListGroupRights|specific rights]] are needed to create it.</strong>
The latest log entry is provided below for reference:",
'templatesused' => '{{PLURAL:$1|Template|Templates}} used on this page:',
'templatesusedpreview' => '{{PLURAL:$1|Template|Templates}} used in this preview:',
'permissionserrors' => 'Permission error',
'permissionserrorstext' => 'You do not have permission to do that, for the following {{PLURAL:$1|reason|reasons}}:',
'permissionserrorstext-withaction' => 'You do not have permission to $2, for the following {{PLURAL:$1|reason|reasons}}:',
-'recreate-moveddeleted-warn' => "'''Warning: You are recreating a page that was previously deleted.'''
+'recreate-moveddeleted-warn' => "<strong>Warning: You are recreating a page that was previously deleted.</strong>
You should consider whether it is appropriate to continue editing this page.
The deletion and move log for this page are provided here for convenience:",
'invalid-content-data' => 'Invalid content data',
'content-not-allowed-here' => '"$1" content is not allowed on page [[$2]]',
'editwarning-warning' => 'Leaving this page may cause you to lose any changes you have made.
-If you are logged in, you can disable this warning in the "Editing" section of your preferences.',
+If you are logged in, you can disable this warning in the "{{int:prefs-editing}}" section of your preferences.',
+'editpage-notsupportedcontentformat-title'=> 'Content format not supported',
+'editpage-notsupportedcontentformat-text' => 'The content format $1 is not supported by the content model $2.',
# Content models
'content-model-wikitext' => 'wikitext',
'content-model-css' => 'CSS',
# Parser/template warnings
-'expensive-parserfunction-warning' => "'''Warning:''' This page contains too many expensive parser function calls.
+'expensive-parserfunction-warning' => "<strong>Warning:</strong> This page contains too many expensive parser function calls.
It should have less than $2 {{PLURAL:$2|call|calls}}, there {{PLURAL:$1|is now $1 call|are now $1 calls}}.",
'expensive-parserfunction-category' => 'Pages with too many expensive parser function calls',
-'post-expand-template-inclusion-warning' => "'''Warning:''' Template include size is too large.
+'post-expand-template-inclusion-warning' => "<strong>Warning:</strong> Template include size is too large.
Some templates will not be included.",
'post-expand-template-inclusion-category' => 'Pages where template include size is exceeded',
-'post-expand-template-argument-warning' => "'''Warning:''' This page contains at least one template argument that has a too large expansion size.
+'post-expand-template-argument-warning' => "<strong>Warning:</strong> This page contains at least one template argument that has a too large expansion size.
These arguments have been omitted.",
'post-expand-template-argument-category' => 'Pages containing omitted template arguments',
'parser-template-loop-warning' => 'Template loop detected: [[$1]]',
'cantcreateaccount-range-text' => "Account creation from IP addresses in the range '''$1''', which includes your IP address ('''$4'''), has been blocked by [[User:$3|$3]].
The reason given by $3 is ''$2''",
-'cantcreateaccount-text' => "Account creation from this IP address ('''$1''') has been blocked by [[User:$3|$3]].
+'cantcreateaccount-text' => "Account creation from this IP address (<strong>$1</strong>) has been blocked by [[User:$3|$3]].
-The reason given by $3 is ''$2''",
+The reason given by $3 is <em>$2</em>",
+'createaccount-hook-aborted' => '$1', # do not translate or duplicate this message to other languages
# History pages
'viewpagelogs' => 'View logs for this page',
'page_first' => 'first',
'page_last' => 'last',
'histlegend' => "Diff selection: Mark the radio boxes of the revisions to compare and hit enter or the button at the bottom.<br />
-Legend: '''({{int:cur}})''' = difference with latest revision, '''({{int:last}})''' = difference with preceding revision, '''{{int:minoreditletter}}''' = minor edit.",
+Legend: <strong>({{int:cur}})</strong> = difference with latest revision, <strong>({{int:last}})</strong> = difference with preceding revision, <strong>{{int:minoreditletter}}</strong> = minor edit.",
'history-fieldset-title' => 'Browse history',
'history-show-deleted' => 'Deleted only',
'history_copyright' => '-', # do not translate or duplicate this message to other languages
'rev-deleted-user' => '(username removed)',
'rev-deleted-event' => '(log action removed)',
'rev-deleted-user-contribs' => '[username or IP address removed - edit hidden from contributions]',
-'rev-deleted-text-permission' => "This page revision has been '''deleted'''.
+'rev-deleted-text-permission' => "This page revision has been <strong>deleted</strong>.
Details can be found in the [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} deletion log].",
-'rev-deleted-text-unhide' => "This page revision has been '''deleted'''.
+'rev-deleted-text-unhide' => "This page revision has been <strong>deleted</strong>.
Details can be found in the [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} deletion log].
You can still [$1 view this revision] if you wish to proceed.",
-'rev-suppressed-text-unhide' => "This page revision has been '''suppressed'''.
+'rev-suppressed-text-unhide' => "This page revision has been <strong>suppressed</strong>.
Details can be found in the [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} suppression log].
You can still [$1 view this revision] if you wish to proceed.",
-'rev-deleted-text-view' => "This page revision has been '''deleted'''.
+'rev-deleted-text-view' => "This page revision has been <strong>deleted</strong>.
You can view it; details can be found in the [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} deletion log].",
-'rev-suppressed-text-view' => "This page revision has been '''suppressed'''.
+'rev-suppressed-text-view' => "This page revision has been <strong>suppressed</strong>.
You can view it; details can be found in the [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} suppression log].",
-'rev-deleted-no-diff' => "You cannot view this diff because one of the revisions has been '''deleted'''.
+'rev-deleted-no-diff' => "You cannot view this diff because one of the revisions has been <strong>deleted</strong>.
Details can be found in the [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} deletion log].",
-'rev-suppressed-no-diff' => "You cannot view this diff because one of the revisions has been '''deleted'''.",
-'rev-deleted-unhide-diff' => "One of the revisions of this diff has been '''deleted'''.
+'rev-suppressed-no-diff' => "You cannot view this diff because one of the revisions has been <strong>deleted</strong>.",
+'rev-deleted-unhide-diff' => "One of the revisions of this diff has been <strong>deleted</strong>.
Details can be found in the [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} deletion log].
You can still [$1 view this diff] if you wish to proceed.",
-'rev-suppressed-unhide-diff' => "One of the revisions of this diff has been '''suppressed'''.
+'rev-suppressed-unhide-diff' => "One of the revisions of this diff has been <strong>suppressed</strong>.
Details can be found in the [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} suppression log].
You can still [$1 view this diff] if you wish to proceed.",
-'rev-deleted-diff-view' => "One of the revisions of this diff has been '''deleted'''.
+'rev-deleted-diff-view' => "One of the revisions of this diff has been <strong>deleted</strong>.
You can view this diff; details can be found in the [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} deletion log].",
-'rev-suppressed-diff-view' => "One of the revisions of this diff has been '''suppressed'''.
+'rev-suppressed-diff-view' => "One of the revisions of this diff has been <strong>suppressed</strong>.
You can view this diff; details can be found in the [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} suppression log].",
'rev-delundel' => 'change visibility',
'rev-showdeleted' => 'show',
'revdelete-no-file' => 'The file specified does not exist.',
'revdelete-show-file-confirm' => 'Are you sure you want to view a deleted revision of the file "<nowiki>$1</nowiki>" from $2 at $3?',
'revdelete-show-file-submit' => 'Yes',
-'revdelete-selected' => "'''{{PLURAL:$2|Selected revision|Selected revisions}} of [[:$1]]:'''",
-'logdelete-selected' => "'''{{PLURAL:$1|Selected log event|Selected log events}}:'''",
-'revdelete-text' => "'''Deleted revisions and events will still appear in the page history and logs, but parts of their content will be inaccessible to the public.'''
+'revdelete-selected' => "<strong>{{PLURAL:$2|Selected revision|Selected revisions}} of [[:$1]]:</strong>",
+'logdelete-selected' => "<strong>{{PLURAL:$1|Selected log event|Selected log events}}:</strong>",
+'revdelete-text' => "<strong>Deleted revisions and events will still appear in the page history and logs, but parts of their content will be inaccessible to the public.</strong>
Other administrators on {{SITENAME}} will still be able to access the hidden content and can undelete it again through this same interface, unless additional restrictions are set.",
'revdelete-confirm' => 'Please confirm that you intend to do this, that you understand the consequences, and that you are doing this in accordance with [[{{MediaWiki:Policy-url}}|the policy]].',
-'revdelete-suppress-text' => "Suppression should '''only''' be used for the following cases:
+'revdelete-suppress-text' => "Suppression should <strong>only</strong> be used for the following cases:
* potentially libelous information
* inappropriate personal information
-*: ''home addresses and telephone numbers, national identification numbers, etc.''",
+*: <em>home addresses and telephone numbers, national identification numbers, etc.</em>",
'revdelete-legend' => 'Set visibility restrictions',
'revdelete-hide-text' => 'Revision text',
'revdelete-hide-image' => 'Hide file content',
'revdelete-unsuppress' => 'Remove restrictions on restored revisions',
'revdelete-log' => 'Reason:',
'revdelete-submit' => 'Apply to selected {{PLURAL:$1|revision|revisions}}',
-'revdelete-success' => "'''Revision visibility successfully updated.'''",
-'revdelete-failure' => "'''Revision visibility could not be updated:'''
+'revdelete-success' => "<strong>Revision visibility successfully updated.</strong>",
+'revdelete-failure' => "<strong>Revision visibility could not be updated:</strong>
$1",
-'logdelete-success' => "'''Log visibility successfully set.'''",
-'logdelete-failure' => "'''Log visibility could not be set:'''
+'logdelete-success' => "<strong>Log visibility successfully set.</strong>",
+'logdelete-failure' => "<strong>Log visibility could not be set:</strong>
$1",
'revdel-restore' => 'change visibility',
'pagehist' => 'Page history',
'revdelete-modify-no-access' => 'Error modifying the item dated $2, $1: This item has been marked "restricted".
You do not have access to it.',
'revdelete-modify-missing' => 'Error modifying item ID $1: It is missing from the database!',
-'revdelete-no-change' => "'''Warning:''' The item dated $2, $1 already had the requested visibility settings.",
+'revdelete-no-change' => "<strong>Warning:</strong> The item dated $2, $1 already had the requested visibility settings.",
'revdelete-concurrent-change' => 'Error modifying the item dated $2, $1: Its status appears to have been changed by someone else while you attempted to modify it.
Please check the logs.',
'revdelete-only-restricted' => 'Error hiding the item dated $2, $1: You cannot suppress items from view by administrators without also selecting one of the other visibility options.',
'showhideselectedversions' => 'Change visibility of selected revisions',
'editundo' => 'undo',
'diff-empty' => '(No difference)',
-'diff-multi' => '({{PLURAL:$1|One intermediate revision|$1 intermediate revisions}} by {{PLURAL:$2|one user|$2 users}} not shown)',
+'diff-multi-sameuser' => '({{PLURAL:$1|One intermediate revision|$1 intermediate revisions}} by the same user not shown)',
+'diff-multi-otherusers' => '({{PLURAL:$1|One intermediate revision|$1 intermediate revisions}} by {{PLURAL:$2|one other user|$2 users}} not shown)',
'diff-multi-manyusers' => '({{PLURAL:$1|One intermediate revision|$1 intermediate revisions}} by more than $2 {{PLURAL:$2|user|users}} not shown)',
'difference-missing-revision' => '{{PLURAL:$2|One revision|$2 revisions}} of this difference ($1) {{PLURAL:$2|was|were}} not found.
'nextn-title' => 'Next $1 {{PLURAL:$1|result|results}}',
'shown-title' => 'Show $1 {{PLURAL:$1|result|results}} per page',
'viewprevnext' => 'View ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-exists' => "'''There is a page named \"[[:\$1]]\" on this wiki.''' {{PLURAL:$2|0=|See also the other search results found.}}",
-'searchmenu-new' => "'''Create the page \"[[:\$1]]\" on this wiki!''' {{PLURAL:$2|0=|See also the page found with your search.|See also the search results found.}}",
+'searchmenu-exists' => "<strong>There is a page named \"[[:\$1]]\" on this wiki.</strong> {{PLURAL:$2|0=|See also the other search results found.}}",
+'searchmenu-new' => "<strong>Create the page \"[[:\$1]]\" on this wiki!</strong> {{PLURAL:$2|0=|See also the page found with your search.|See also the search results found.}}",
'searchmenu-new-nocreate' => '', # do not translate or duplicate this message to other languages
'searchprofile-articles' => 'Content pages',
'searchprofile-project' => 'Help and Project pages',
'search-result-score' => 'Relevance: $1%',
'search-redirect' => '(redirect $1)',
'search-section' => '(section $1)',
+'search-file-match' => '(matches file content)',
'search-suggest' => 'Did you mean: $1',
'search-interwiki-caption' => 'Sister projects',
'search-interwiki-default' => '$1 results:',
'searcheverything-enable' => 'Search in all namespaces',
'searchrelated' => 'related',
'searchall' => 'all',
-'showingresults' => "Showing below up to {{PLURAL:$1|'''1''' result|'''$1''' results}} starting with #'''$2'''.",
-'showingresultsnum' => "Showing below {{PLURAL:$3|'''1''' result|'''$3''' results}} starting with #'''$2'''.",
-'showingresultsheader' => "{{PLURAL:$5|Result '''$1''' of '''$3'''|Results '''$1 - $2''' of '''$3'''}} for '''$4'''",
+'showingresults' => "Showing below up to {{PLURAL:$1|<strong>1</strong> result|<strong>$1</strong> results}} starting with #<strong>$2</strong>.",
+'showingresultsnum' => "Showing below {{PLURAL:$3|<strong>1</strong> result|<strong>$3</strong> results}} starting with #<strong>$2</strong>.",
+'showingresultsheader' => "{{PLURAL:$5|Result <strong>$1</strong> of <strong>$3</strong>|Results <strong>$1 - $2</strong> of <strong>$3</strong>}} for <strong>$4</strong>",
'search-nonefound' => 'There were no results matching the query.',
'powersearch-legend' => 'Advanced search',
'powersearch-ns' => 'Search in namespaces:',
'rows' => 'Rows:',
'columns' => 'Columns:',
'searchresultshead' => 'Search',
-'resultsperpage' => 'Hits per page:',
'stub-threshold' => 'Threshold for <a href="#" class="stub">stub link</a> formatting (bytes):',
'stub-threshold-disabled' => 'Disabled',
'recentchangesdays' => 'Days to show in recent changes:',
'userrights-lookup-user' => 'Manage user groups',
'userrights-user-editname' => 'Enter a username:',
'editusergroup' => 'Edit user groups',
-'editinguser' => "Changing user rights of user '''[[User:$1|$1]]''' $2",
+'editinguser' => "Changing user rights of user <strong>[[User:$1|$1]]</strong> $2",
'userrights-editusergroup' => 'Edit user groups',
'saveusergroups' => 'Save user groups',
'userrights-groupsmember' => 'Member of:',
'recentchanges-label-plusminus' => 'The page size changed by this number of bytes',
'recentchanges-legend-heading' => "'''Legend:'''",
'recentchanges-legend-newpage' => '(also see [[Special:NewPages|list of new pages]])',
-'recentchanges-legend-plusminus' => "(''±123'')",
-'rcnotefrom' => "Below are the changes since '''$2''' (up to '''$1''' shown).",
+'recentchanges-legend-plusminus' => "(<em>±123</em>)",
+'rcnotefrom' => "Below are the changes since <strong>$2</strong> (up to <strong>$1</strong> shown).",
'rclistfrom' => 'Show new changes starting from $1',
'rcshowhideminor' => '$1 minor edits',
'rcshowhidebots' => '$1 bots',
'recentchangeslinked-toolbox' => 'Related changes',
'recentchangeslinked-title' => 'Changes related to "$1"',
'recentchangeslinked-summary' => "This is a list of changes made recently to pages linked from a specified page (or to members of a specified category).
-Pages on [[Special:Watchlist|your watchlist]] are '''bold'''.",
+Pages on [[Special:Watchlist|your watchlist]] are <strong>bold</strong>.",
'recentchangeslinked-page' => 'Page name:',
'recentchangeslinked-to' => 'Show changes to pages linked to the given page instead',
'upload_directory_read_only' => 'The upload directory ($1) is not writable by the webserver.',
'uploaderror' => 'Upload error',
'upload-summary' => '', # do not translate or duplicate this message to other languages
-'upload-recreate-warning' => "'''Warning: A file by that name has been deleted or moved.'''
+'upload-recreate-warning' => "<strong>Warning: A file by that name has been deleted or moved.</strong>
The deletion and move log for this page are provided here for convenience:",
'uploadtext' => "Use the form below to upload files.
To view or search previously uploaded files go to the [[Special:FileList|list of uploaded files]], (re)uploads are also logged in the [[Special:Log/upload|upload log]], deletions in the [[Special:Log/delete|deletion log]].
To include a file in a page, use a link in one of the following forms:
-* '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.jpg]]</nowiki></code>''' to use the full version of the file
-* '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.png|200px|thumb|left|alt text]]</nowiki></code>''' to use a 200 pixel wide rendition in a box in the left margin with \"alt text\" as description
-* '''<code><nowiki>[[</nowiki>{{ns:media}}<nowiki>:File.ogg]]</nowiki></code>''' for directly linking to the file without displaying the file",
+* <strong><code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.jpg]]</nowiki></code></strong> to use the full version of the file
+* <strong><code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.png|200px|thumb|left|alt text]]</nowiki></code></strong> to use a 200 pixel wide rendition in a box in the left margin with \"alt text\" as description
+* <strong><code><nowiki>[[</nowiki>{{ns:media}}<nowiki>:File.ogg]]</nowiki></code></strong> for directly linking to the file without displaying the file",
'upload-permitted' => 'Permitted file types: $1.',
'upload-preferred' => 'Preferred file types: $1.',
'upload-prohibited' => 'Prohibited file types: $1.',
'filetype-mime-mismatch' => 'File extension ".$1" does not match the detected MIME type of the file ($2).',
'filetype-badmime' => 'Files of the MIME type "$1" are not allowed to be uploaded.',
'filetype-bad-ie-mime' => 'Cannot upload this file because Internet Explorer would detect it as "$1", which is a disallowed and potentially dangerous file type.',
-'filetype-unwanted-type' => "'''\".\$1\"''' is an unwanted file type.
+'filetype-unwanted-type' => "<strong>\".\$1\"</strong> is an unwanted file type.
Preferred {{PLURAL:\$3|file type is|file types are}} \$2.",
-'filetype-banned-type' => '\'\'\'".$1"\'\'\' {{PLURAL:$4|is not a permitted file type|are not permitted file types}}.
+'filetype-banned-type' => '<strong>".$1"</strong> {{PLURAL:$4|is not a permitted file type|are not permitted file types}}.
Permitted {{PLURAL:$3|file type is|file types are}} $2.',
'filetype-missing' => 'The file has no extension (like ".jpg").',
'empty-file' => 'The file you submitted was empty.',
* Name of the uploading file: <strong>[[:$1]]</strong>
* Name of the existing file: <strong>[[:$2]]</strong>
Please choose a different name.',
-'fileexists-thumbnail-yes' => "The file seems to be an image of reduced size ''(thumbnail)''.
+'fileexists-thumbnail-yes' => "The file seems to be an image of reduced size <em>(thumbnail)</em>.
[[$1|thumb]]
Please check the file <strong>[[:$1]]</strong>.
If the checked file is the same image of original size it is not necessary to upload an extra thumbnail.",
'file-thumbnail-no' => "The filename begins with <strong>$1</strong>.
-It seems to be an image of reduced size ''(thumbnail)''.
+It seems to be an image of reduced size <em>(thumbnail)</em>.
If you have this image in full resolution upload this one, otherwise change the filename please.",
'fileexists-forbidden' => 'A file with this name already exists, and cannot be overwritten.
If you still want to upload your file, please go back and use a new name.
'file-exists-duplicate' => 'This file is a duplicate of the following {{PLURAL:$1|file|files}}:',
'file-deleted-duplicate' => "A file identical to this file ([[:$1]]) has previously been deleted.
You should check that file's deletion history before proceeding to re-upload it.",
+'file-deleted-duplicate-notitle' => "A file identical to this file has previously been deleted, and the title has been suppressed.
+You should ask someone with the ability to view suppressed file data to review the situation before proceeding to re-upload it.",
'uploadwarning' => 'Upload warning',
'uploadwarning-text' => 'Please modify the file description below and try again.',
'savefile' => 'Save file',
'php-uploaddisabledtext' => 'File uploads are disabled in PHP.
Please check the file_uploads setting.',
'uploadscripted' => 'This file contains HTML or script code that may be erroneously interpreted by a web browser.',
+'uploadinvalidxml' => 'The XML in the uploaded file could not be parsed.',
'uploadvirus' => 'The file contains a virus!
Details: $1',
'uploadjava' => 'The file is a ZIP file that contains a Java .class file.
'watchthisupload' => 'Watch this file',
'filewasdeleted' => 'A file of this name has been previously uploaded and subsequently deleted.
You should check the $1 before proceeding to upload it again.',
-'filename-bad-prefix' => "The name of the file you are uploading begins with '''\"\$1\"''', which is a non-descriptive name typically assigned automatically by digital cameras.
+'filename-bad-prefix' => "The name of the file you are uploading begins with <strong>\"\$1\"</strong>, which is a non-descriptive name typically assigned automatically by digital cameras.
Please choose a more descriptive name for your file.",
'filename-prefix-blacklist' => ' #<!-- leave this line exactly as it is --> <pre>
# Syntax is as follows:
'backend-fail-read' => 'Could not read file "$1".',
'backend-fail-create' => 'Could not write file "$1".',
'backend-fail-maxsize' => 'Could not write file "$1" because it is larger than {{PLURAL:$2|one byte|$2 bytes}}.',
-'backend-fail-readonly' => 'The storage backend "$1" is currently read-only. The reason given is: "\'\'$2\'\'"',
+'backend-fail-readonly' => 'The storage backend "$1" is currently read-only. The reason given is: "<em>$2</em>"',
'backend-fail-synced' => 'The file "$1" is in an inconsistent state within the internal storage backends',
'backend-fail-connect' => 'Could not connect to storage backend "$1".',
'backend-fail-internal' => 'An unknown error occurred in storage backend "$1".',
# File reversion
'filerevert' => 'Revert $1',
'filerevert-legend' => 'Revert file',
-'filerevert-intro' => "You are about to revert the file '''[[Media:$1|$1]]''' to the [$4 version as of $3, $2].",
+'filerevert-intro' => "You are about to revert the file <strong>[[Media:$1|$1]]</strong> to the [$4 version as of $3, $2].",
'filerevert-comment' => 'Reason:',
'filerevert-defaultcomment' => 'Reverted to version as of $2, $1',
'filerevert-submit' => 'Revert',
-'filerevert-success' => "'''[[Media:$1|$1]]''' has been reverted to the [$4 version as of $3, $2].",
+'filerevert-success' => "<strong>[[Media:$1|$1]]</strong> has been reverted to the [$4 version as of $3, $2].",
'filerevert-badversion' => 'There is no previous local version of this file with the provided timestamp.',
# File deletion
'filedelete' => 'Delete $1',
'filedelete-legend' => 'Delete file',
-'filedelete-intro' => "You are about to delete the file '''[[Media:$1|$1]]''' along with all of its history.",
-'filedelete-intro-old' => "You are deleting the version of '''[[Media:$1|$1]]''' as of [$4 $3, $2].",
+'filedelete-intro' => "You are about to delete the file <strong>[[Media:$1|$1]]</strong> along with all of its history.",
+'filedelete-intro-old' => "You are deleting the version of <strong>[[Media:$1|$1]]</strong> as of [$4 $3, $2].",
'filedelete-comment' => 'Reason:',
'filedelete-submit' => 'Delete',
-'filedelete-success' => "'''$1''' has been deleted.",
-'filedelete-success-old' => "The version of '''[[Media:$1|$1]]''' as of $3, $2 has been deleted.",
-'filedelete-nofile' => "'''$1''' does not exist.",
-'filedelete-nofile-old' => "There is no archived version of '''$1''' with the specified attributes.",
+'filedelete-success' => "<strong>$1</strong> has been deleted.",
+'filedelete-success-old' => "The version of <strong>[[Media:$1|$1]]</strong> as of $3, $2 has been deleted.",
+'filedelete-nofile' => "<strong>$1</strong> does not exist.",
+'filedelete-nofile-old' => "There is no archived version of <strong>$1</strong> with the specified attributes.",
'filedelete-otherreason' => 'Other/additional reason:',
'filedelete-reason-otherlist' => 'Other reason',
'filedelete-reason-dropdown' => '*Common delete reasons
'protectedpages-indef' => 'Indefinite protections only',
'protectedpages-summary' => '', # do not translate or duplicate this message to other languages
'protectedpages-cascade' => 'Cascading protections only',
+'protectedpages-noredirect' => 'Hide redirects',
'protectedpagesempty' => 'No pages are currently protected with these parameters.',
'protectedtitles' => 'Protected titles',
'protectedtitles-summary' => '', # do not translate or duplicate this message to other languages
'notvisiblerev' => 'The last revision by a different user has been deleted',
'watchlist-details' => '{{PLURAL:$1|$1 page|$1 pages}} on your watchlist, not counting talk pages.',
'wlheader-enotif' => 'Email notification is enabled.',
-'wlheader-showupdated' => "Pages that have been changed since you last visited them are shown in '''bold'''.",
+'wlheader-showupdated' => "Pages that have been changed since you last visited them are shown in <strong>bold</strong>.",
'watchmethod-recent' => 'checking recent edits for watched pages',
'watchmethod-list' => 'checking watched pages for recent edits',
'watchlistcontains' => 'Your watchlist contains $1 {{PLURAL:$1|page|pages}}.',
'iteminvalidname' => 'Problem with item "$1", invalid name...',
-'wlnote' => "Below {{PLURAL:$1|is the last change|are the last '''$1''' changes}} in the last {{PLURAL:$2|hour|'''$2''' hours}}, as of $3, $4.",
+'wlnote2' => "Below are the changes in the last {{PLURAL:$1|hour|<strong>$1</strong> hours}}, as of $2, $3.",
'wlshowlast' => 'Show last $1 hours $2 days $3',
'watchlist-options' => 'Watchlist options',
'exblank' => 'page was empty',
'delete-confirm' => 'Delete "$1"',
'delete-legend' => 'Delete',
-'historywarning' => "'''Warning:''' The page you are about to delete has a history with approximately $1 {{PLURAL:$1|revision|revisions}}:",
+'historywarning' => "<strong>Warning:</strong> The page you are about to delete has a history with approximately $1 {{PLURAL:$1|revision|revisions}}:",
'confirmdeletetext' => 'You are about to delete a page along with all of its history.
Please confirm that you intend to do this, that you understand the consequences, and that you are doing this in accordance with [[{{MediaWiki:Policy-url}}|the policy]].',
+'deleting-backlinks-warning' => "'''Warning:''' Other pages link to or transclude from the page you are about to delete.",
'actioncomplete' => 'Action complete',
'actionfailed' => 'Action failed',
'deletedtext' => '"$1" has been deleted.
'protect_expiry_invalid' => 'Expiry time is invalid.',
'protect_expiry_old' => 'Expiry time is in the past.',
'protect-unchain-permissions' => 'Unlock further protect options',
-'protect-text' => "Here you may view and change the protection level for the page '''$1'''.",
+'protect-text' => "Here you may view and change the protection level for the page <strong>$1</strong>.",
'protect-locked-blocked' => "You cannot change protection levels while blocked.
-Here are the current settings for the page '''$1''':",
+Here are the current settings for the page <strong>$1</strong>:",
'protect-locked-dblock' => "Protection levels cannot be changed due to an active database lock.
-Here are the current settings for the page '''$1''':",
+Here are the current settings for the page <strong>$1</strong>:",
'protect-locked-access' => "Your account does not have permission to change page protection levels.
-Here are the current settings for the page '''$1''':",
+Here are the current settings for the page <strong>$1</strong>:",
'protect-cascadeon' => "This page is currently protected because it is included in the following {{PLURAL:$1|page, which has|pages, which have}} cascading protection turned on.
You can change this page's protection level, but it will not affect the cascading protection.",
'protect-default' => 'Allow all users',
'undelete' => 'View deleted pages',
'undelete-summary' => '', # do not translate or duplicate this message to other languages
'undeletepage' => 'View and restore deleted pages',
-'undeletepagetitle' => "'''The following consists of deleted revisions of [[:$1|$1]]'''.",
+'undeletepagetitle' => "<strong>The following consists of deleted revisions of [[:$1|$1]]</strong>.",
'viewdeletedpage' => 'View deleted pages',
'undeletepagetext' => 'The following {{PLURAL:$1|page has been deleted but is|$1 pages have been deleted but are}} still in the archive and can be restored.
The archive may be periodically cleaned out.',
'undelete-fieldset-title' => 'Restore revisions',
-'undeleteextrahelp' => "To restore the page's entire history, leave all checkboxes deselected and click '''''{{int:undeletebtn}}'''''.
-To perform a selective restoration, check the boxes corresponding to the revisions to be restored, and click '''''{{int:undeletebtn}}'''''.",
+'undeleteextrahelp' => "To restore the page's entire history, leave all checkboxes deselected and click <strong><em>{{int:undeletebtn}}</em></strong>.
+To perform a selective restoration, check the boxes corresponding to the revisions to be restored, and click <strong><em>{{int:undeletebtn}}</em></strong>.",
'undeleterevisions' => '$1 {{PLURAL:$1|revision|revisions}} archived',
'undeletehistory' => 'If you restore the page, all revisions will be restored to the history.
If a new page with the same name has been created since the deletion, the restored revisions will appear in the prior history.',
'undeletedfiles' => '{{PLURAL:$1|1 file|$1 files}} restored',
'cannotundelete' => 'Undelete failed:
$1',
-'undeletedpage' => "'''$1 has been restored'''
+'undeletedpage' => "<strong>$1 has been restored</strong>
Consult the [[Special:Log/delete|deletion log]] for a record of recent deletions and restorations.",
'undelete-header' => 'See [[Special:Log/delete|the deletion log]] for recently deleted pages.',
'whatlinkshere-title' => 'Pages that link to "$1"',
'whatlinkshere-summary' => '', # do not translate or duplicate this message to other languages
'whatlinkshere-page' => 'Page:',
-'linkshere' => "The following pages link to '''[[:$1]]''':",
-'nolinkshere' => "No pages link to '''[[:$1]]'''.",
-'nolinkshere-ns' => "No pages link to '''[[:$1]]''' in the chosen namespace.",
+'linkshere' => "The following pages link to <strong>[[:$1]]</strong>:",
+'nolinkshere' => "No pages link to <strong>[[:$1]]</strong>.",
+'nolinkshere-ns' => "No pages link to <strong>[[:$1]]</strong> in the chosen namespace.",
'isredirect' => 'redirect page',
'istemplate' => 'transclusion',
'isimage' => 'file link',
See the [[Special:BlockList|block list]] to review blocks.',
'ipb-blockingself' => 'You are about to block yourself! Are you sure you want to do that?',
'ipb-confirmhideuser' => 'You are about to block a user with "hide user" enabled. This will suppress the user\'s name in all lists and log entries. Are you sure you want to do that?',
+'ipb-confirmaction' => 'If you are sure you really want to do it, please check the "{{int:ipb-confirm}}" field at the bottom.',
'ipb-edit-dropdown' => 'Edit block reasons',
'ipb-unblock-addr' => 'Unblock $1',
'ipb-unblock' => 'Unblock a username or IP address',
'contribslink' => 'contribs',
'emaillink' => 'send email',
'autoblocker' => 'Autoblocked because your IP address has been recently used by "[[User:$1|$1]]".
-The reason given for $1\'s block is "\'\'$2\'\'"',
+The reason given for $1\'s block is "<em>$2</em>"',
'blocklogpage' => 'Block log',
'blocklog-showlog' => 'This user has been blocked previously.
The block log is provided below for reference:',
'range_block_disabled' => 'The administrator ability to create range blocks is disabled.',
'ipb_expiry_invalid' => 'Expiry time invalid.',
'ipb_expiry_temp' => 'Hidden username blocks must be permanent.',
-'ipb_hide_invalid' => 'Unable to suppress this account; it may have too many edits.',
+'ipb_hide_invalid' => 'Unable to suppress this account; it has more than {{PLURAL:$1|one edit|$1 edits}}.',
'ipb_already_blocked' => '"$1" is already blocked.',
'ipb-needreblock' => '$1 is already blocked. Do you want to change the settings?',
'ipb-otherblocks-header' => 'Other {{PLURAL:$1|block|blocks}}',
If you choose not to, be sure to check for [[Special:DoubleRedirects|double]] or [[Special:BrokenRedirects|broken redirects]].
You are responsible for making sure that links continue to point where they are supposed to go.
-Note that the page will '''not''' be moved if there is already a page at the new title, unless the latter is a redirect and has no past edit history.
+Note that the page will <strong>not</strong> be moved if there is already a page at the new title, unless the latter is a redirect and has no past edit history.
This means that you can rename a page back to where it was renamed from if you make a mistake, and you cannot overwrite an existing page.
-'''Warning!'''
+<strong>Warning!</strong>
This can be a drastic and unexpected change for a popular page;
please be sure you understand the consequences of this before proceeding.",
'movepagetext-noredirectfixer' => "Using the form below will rename a page, moving all of its history to the new name.
Be sure to check for [[Special:DoubleRedirects|double]] or [[Special:BrokenRedirects|broken redirects]].
You are responsible for making sure that links continue to point where they are supposed to go.
-Note that the page will '''not''' be moved if there is already a page at the new title, unless it is a redirect and has no past edit history.
+Note that the page will <strong>not</strong> be moved if there is already a page at the new title, unless it is a redirect and has no past edit history.
This means that you can rename a page back to where it was renamed from if you make a mistake, and you cannot overwrite an existing page.
-'''Warning!'''
+<strong>Warning!</strong>
This can be a drastic and unexpected change for a popular page;
please be sure you understand the consequences of this before proceeding.",
-'movepagetalktext' => "The associated talk page will be automatically moved along with it '''unless:'''
+'movepagetalktext' => "The associated talk page will be automatically moved along with it <strong>unless:</strong>
*A non-empty talk page already exists under the new name, or
*You uncheck the box below.
In those cases, you will have to move or merge the page manually if desired.",
'movearticle' => 'Move page:',
-'moveuserpage-warning' => "'''Warning:''' You are about to move a user page. Please note that only the page will be moved and the user will ''not'' be renamed.",
+'moveuserpage-warning' => "<strong>Warning:</strong> You are about to move a user page. Please note that only the page will be moved and the user will <em>not</em> be renamed.",
'movenologintext' => 'You must be a registered user and [[Special:UserLogin|logged in]] to move a page.',
'movenotallowed' => 'You do not have permission to move pages.',
'movenotallowedfile' => 'You do not have permission to move files.',
'move-watch' => 'Watch source page and target page',
'movepagebtn' => 'Move page',
'pagemovedsub' => 'Move succeeded',
-'movepage-moved' => '\'\'\'"$1" has been moved to "$2"\'\'\'',
+'movepage-moved' => '<strong>"$1" has been moved to "$2"</strong>',
'movepage-moved-redirect' => 'A redirect has been created.',
'movepage-moved-noredirect' => 'The creation of a redirect has been suppressed.',
'articleexists' => 'A page of that name already exists, or the name you have chosen is not valid.
'imageinvalidfilename' => 'The target filename is invalid',
'fix-double-redirects' => 'Update any redirects that point to the original title',
'move-leave-redirect' => 'Leave a redirect behind',
-'protectedpagemovewarning' => "'''Warning:''' This page has been protected so that only users with administrator privileges can move it.
+'protectedpagemovewarning' => "<strong>Warning:</strong> This page has been protected so that only users with administrator privileges can move it.
The latest log entry is provided below for reference:",
-'semiprotectedpagemovewarning' => "'''Note:''' This page has been protected so that only registered users can move it.
+'semiprotectedpagemovewarning' => "<strong>Note:</strong> This page has been protected so that only registered users can move it.
The latest log entry is provided below for reference:",
'move-over-sharedrepo' => '== File exists ==
[[:$1]] exists on a shared repository. Moving a file to this title will override the shared file.',
'exportall' => 'Export all pages',
'exportcuronly' => 'Include only the current revision, not the full history',
'exportnohistory' => "----
-'''Note:''' Exporting the full history of pages through this form has been disabled due to performance reasons.",
+<strong>Note:</strong> Exporting the full history of pages through this form has been disabled due to performance reasons.",
'exportlistauthors' => 'Include a full list of contributors for each page',
'export-submit' => 'Export',
'export-addcattext' => 'Add pages from category:',
'allmessagescurrent' => 'Current message text',
'allmessagestext' => 'This is a list of system messages available in the MediaWiki namespace.
Please visit [https://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] and [//translatewiki.net translatewiki.net] if you wish to contribute to the generic MediaWiki localisation.',
-'allmessagesnotsupportedDB' => "This page cannot be used because '''\$wgUseDatabaseMessages''' has been disabled.",
+'allmessagesnotsupportedDB' => "This page cannot be used because <strong>\$wgUseDatabaseMessages</strong> has been disabled.",
'allmessages-filter-legend' => 'Filter',
'allmessages-filter' => 'Filter by customization state:',
'allmessages-filter-unmodified' => 'Unmodified',
'allmessages-prefix' => 'Filter by prefix:',
'allmessages-language' => 'Language:',
'allmessages-filter-submit' => 'Go',
+'allmessages-filter-translate' => 'Translate',
# Thumbnails
'thumbnail-more' => 'Enlarge',
A temporary folder is missing.',
'import-parse-failure' => 'XML import parse failure',
'import-noarticle' => 'No page to import!',
-'import-nonewrevisions' => 'All revisions were previously imported.',
+'import-nonewrevisions' => 'No revisions imported (all were either already present, or skipped due to errors).',
'xml-error-string' => '$1 at line $2, col $3 (byte $4): $5',
'import-upload' => 'Upload XML data',
'import-token-mismatch' => 'Loss of session data.
'import-error-special' => 'Page "$1" is not imported because it belongs to a special namespace that does not allow pages.',
'import-error-invalid' => 'Page "$1" is not imported because its name is invalid.',
'import-error-unserialize' => 'Revision $2 of page "$1" could not be unserialized. The revision was reported to use content model $3 serialized as $4.',
+'import-error-bad-location' => 'Revision $2 using content model $3 can not be stored on "$1" on this wiki, since that model is not supported on that page.',
'import-options-wrong' => 'Wrong {{PLURAL:$2|option|options}}: <nowiki>$1</nowiki>',
'import-rootpage-invalid' => 'Given root page is an invalid title.',
'import-rootpage-nosubpage' => 'Namespace "$1" of the root page does not allow subpages.',
'accesskey-pt-watchlist' => 'l', # do not translate or duplicate this message to other languages
'accesskey-pt-mycontris' => 'y', # do not translate or duplicate this message to other languages
'accesskey-pt-login' => 'o', # do not translate or duplicate this message to other languages
-'accesskey-pt-anonlogin' => 'o', # do not translate or duplicate this message to other languages
'accesskey-pt-logout' => '', # do not translate or duplicate this message to other languages
'accesskey-ca-talk' => 't', # do not translate or duplicate this message to other languages
'accesskey-ca-edit' => 'e', # do not translate or duplicate this message to other languages
'tooltip-pt-watchlist' => 'A list of pages you are monitoring for changes',
'tooltip-pt-mycontris' => 'A list of your contributions',
'tooltip-pt-login' => 'You are encouraged to log in; however, it is not mandatory',
-'tooltip-pt-anonlogin' => 'You are encouraged to log in; however, it is not mandatory',
'tooltip-pt-logout' => 'Log out',
'tooltip-ca-talk' => 'Discussion about the content page',
'tooltip-ca-edit' => 'You can edit this page. Please use the preview button before saving',
'spam_blanking' => 'All revisions contained links to $1, blanking',
'spam_deleting' => 'All revisions contained links to $1, deleting',
'simpleantispam-label' => "Anti-spam check.
-Do '''NOT''' fill this in!",
+Do <strong>NOT</strong> fill this in!",
# Info page
'pageinfo-header' => '-', # do not translate or duplicate this message to other languages
'nextdiff' => 'Newer edit →',
# Media information
-'mediawarning' => "'''Warning:''' This file type may contain malicious code.
+'mediawarning' => "<strong>Warning:</strong> This file type may contain malicious code.
By executing it, your system may be compromised.",
-'imagemaxsize' => "Image size limit:<br />''(for file description pages)''",
+'imagemaxsize' => "Image size limit:<br /><em>(for file description pages)</em>",
'thumbsize' => 'Thumbnail size:',
'widthheight' => '$1 × $2', # only translate this message to other languages if you have to change it
'widthheightpage' => '$1 × $2, $3 {{PLURAL:$3|page|pages}}',
'file-info-png-looped' => 'looped',
'file-info-png-repeat' => 'played $1 {{PLURAL:$1|time|times}}',
'file-info-png-frames' => '$1 {{PLURAL:$1|frame|frames}}',
-'file-no-thumb-animation' => "'''Note: Due to technical limitations, thumbnails of this file will not be animated.'''",
-'file-no-thumb-animation-gif' => "'''Note: Due to technical limitations, thumbnails of high resolution GIF images such as this one will not be animated.'''",
+'file-no-thumb-animation' => "<strong>Note: Due to technical limitations, thumbnails of this file will not be animated.</strong>",
+'file-no-thumb-animation-gif' => "<strong>Note: Due to technical limitations, thumbnails of high resolution GIF images such as this one will not be animated.</strong>",
# Special:NewFiles
'newimages' => 'Gallery of new files',
-'imagelisttext' => "Below is a list of '''$1''' {{PLURAL:$1|file|files}} sorted $2.",
+'imagelisttext' => "Below is a list of <strong>$1</strong> {{PLURAL:$1|file|files}} sorted $2.",
'newimages-summary' => 'This special page shows the last uploaded files.',
'newimages-legend' => 'Filter',
'newimages-label' => 'Filename (or a part of it):',
* gpslatitude
* gpslongitude
* gpsaltitude',
-'metadata-langitem' => "'''$2:''' $1", # only translate this message to other languages if you have to change it
+'metadata-langitem' => "<strong>$2:</strong> $1", # only translate this message to other languages if you have to change it
'metadata-langitem-default' => '$1', # only translate this message to other languages if you have to change it
# Exif tags
'scarytranscludetoolong' => '[URL is too long]',
# Delete conflict
-'deletedwhileediting' => "'''Warning:''' This page was deleted after you started editing!",
+'deletedwhileediting' => "<strong>Warning:</strong> This page was deleted after you started editing!",
'confirmrecreate' => "User [[User:$1|$1]] ([[User talk:$1|talk]]) deleted this page after you started editing with reason:
-: ''$2''
+: <em>$2</em>
Please confirm that you really want to recreate this page.",
'confirmrecreate-noreason' => 'User [[User:$1|$1]] ([[User talk:$1|talk]]) deleted this page after you started editing. Please confirm that you really want to recreate this page.',
'recreate' => 'Recreate',
# Core parser functions
'unknown_extension_tag' => 'Unknown extension tag "$1"',
-'duplicate-defaultsort' => '\'\'\'Warning:\'\'\' Default sort key "$2" overrides earlier default sort key "$1".',
+'duplicate-defaultsort' => '<strong>Warning:</strong> Default sort key "$2" overrides earlier default sort key "$1".',
# Special:Version
'version' => 'Version',
'version-parser-function-hooks' => 'Parser function hooks',
'version-hook-name' => 'Hook name',
'version-hook-subscribedby' => 'Subscribed by',
-'version-version' => '(Version $1)',
-'version-svn-revision' => '(r$2)', # only translate this message to other languages if you have to change it
-'version-license' => 'License',
-'version-poweredby-credits' => "This wiki is powered by '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
+'version-version' => '($1)',
+'version-svn-revision' => 'r$1', # only translate this message to other languages if you have to change it
+'version-license' => 'MediaWiki License',
+'version-license-title' => 'License for $1',
+'version-license-not-found' => 'No detailed license information was found for this extension.',
+'version-credits-title' => 'Credits for $1',
+'version-credits-not-found' => 'No detailed credits information was found for this extension.',
+'version-ext-license' => 'License',
+'version-ext-colheader-name' => 'Extension',
+'version-ext-colheader-version' => 'Version',
+'version-ext-colheader-license' => 'License',
+'version-ext-colheader-description' => 'Description',
+'version-ext-colheader-credits' => 'Authors',
+'version-poweredby-credits' => "This wiki is powered by <strong>[https://www.mediawiki.org/ MediaWiki]</strong>, copyright © 2001-$1 $2.",
'version-poweredby-others' => 'others',
'version-poweredby-translators' => 'translatewiki.net translators',
'version-credits-summary' => 'We would like to recognize the following persons for their contribution to [[Special:Version|MediaWiki]].',
'version-software' => 'Installed software',
'version-software-product' => 'Product',
'version-software-version' => 'Version',
+'version-db-mysql-url' => 'http://www.mysql.com/', # do not translate or duplicate this message to other languages
+'version-db-mariadb-url' => 'http://mariadb.org/', # do not translate or duplicate this message to other languages
+'version-db-percona-url' => 'http://www.percona.com/software/percona-server', # do not translate or duplicate this message to other languages
+'version-db-postgres-url' => 'http://www.postgresql.org/', # do not translate or duplicate this message to other languages
+'version-db-oracle-url' => 'http://www.oracle.com/database/', # do not translate or duplicate this message to other languages
+'version-db-sqlite-url' => 'http://www.sqlite.org/', # do not translate or duplicate this message to other languages
+'version-db-mssql-url' => 'http://www.microsoft.com/sql/', # do not translate or duplicate this message to other languages
'version-entrypoints' => 'Entry point URLs',
'version-entrypoints-header-entrypoint' => 'Entry point',
'version-entrypoints-header-url' => 'URL',
'api-error-unknownerror' => 'Unknown error: "$1".',
'api-error-uploaddisabled' => 'Uploading is disabled on this wiki.',
'api-error-verification-error' => 'This file might be corrupt, or have the wrong extension.',
+'api-error-stasherror' => 'There was an error while uploading the file to stash.',
# Durations
'duration-seconds' => '$1 {{PLURAL:$1|second|seconds}}',
$messages = array(
# User preference toggles
'tog-underline' => 'Substreki ligilojn',
-'tog-justify' => 'Alkadrigi liniojn',
'tog-hideminor' => 'Kaŝi malgrandajn redaktetojn ĉe <i>Lastaj ŝanĝoj</i>',
'tog-hidepatrolled' => 'Kaŝi patrolitajn redaktojn en lastaj ŝanĝoj',
'tog-newpageshidepatrolled' => 'Kaŝi patrolitajn paĝojn de listo de novaj paĝoj',
'tog-numberheadings' => 'Aŭtomate numerigi sekciojn',
'tog-showtoolbar' => 'Montri redakto-breton (per JavaScript)',
'tog-editondblclick' => 'Redakti per duobla alklako (per JavaScript)',
-'tog-editsection' => 'Montri [redakti]-ligilojn por sekcioj',
'tog-editsectiononrightclick' => 'Ŝalti sekcian redaktadon per dekstra musklako de sekciaj titoloj (kun JavaScript)',
-'tog-showtoc' => 'Montri enhavliston (por paĝoj kun pli ol 3 sekcioj)',
'tog-rememberpassword' => 'Memori mian ensalutadon ĉe ĉi tiu retumilo (daŭrante maksimume $1 {{PLURAL:$1|tagon|tagojn}})',
'tog-watchcreations' => 'Aldoni miajn kreatajn paĝojn al mia atentaro',
'tog-watchdefault' => 'Aldoni al mia atentaro paĝojn redaktitajn de mi',
'protectedpagetext' => 'Tiu ĉi paĝo estas ŝlosita por malebligi redaktadon.',
'viewsourcetext' => 'Vi povas rigardi kaj kopii la fonton de la paĝo:',
'viewyourtext' => "Vi povas vidi kaj kopii la fonton de '''viaj redaktoj''' al ĉi tiu paĝo:",
-'protectedinterface' => 'Ĉi tiu paĝo provizas interfacan tekston por la softvaro, kaj estas ŝlosita por malebligi misuzon.
+'protectedinterface' => 'Ĉi tiu paĝo provizas interfacan tekston por la programaro, kaj estas ŝlosita por malebligi misuzon.
Por aldoni aŭ ŝanĝi tradukojn por ĉiuj vikioj, bonvolu uzi [//translatewiki.net/ translatewiki.net], la projekto por provizi tradukojn por MediaWiki.',
-'editinginterface' => "'''Atentu:''' Vi redaktas paĝon, kiu estas uzata kiel interfaca teksto por la programaro. Ŝanĝoj de ĉi tiu teksto povas ŝanĝi aspekton de la interfaco por aliaj uzantoj sur ĉi tiu vikio. Por aldoni aŭ ŝanĝi tradukojn, bonvolu uzi [//translatewiki.net/ translatewiki.net], la MediaWiki-projekton por lingvigaj versioj.",
+'editinginterface' => "'''Atentu:''' Vi redaktas paĝon, kiu provizas interfacan tekston por la programaro.
+Ŝanĝoj de ĉi tiu teksto ŝanĝos aspekton de la interfaco por aliaj uzantoj de ĉi tiu vikio.
+Por aldoni aŭ ŝanĝi tradukojn por ĉiuj vikioj, bonvolu uzi [//translatewiki.net/ translatewiki.net], la projekton por provizi tradukojn por MediaWiki.",
'cascadeprotected' => 'Ĉi tiu paĝo estas protektita kontraŭ redaktado, ĉar ĝi estas inkludita en la {{PLURAL:$1|sekvan paĝon, kiu|sekvajn paĝojn, kiuj}} estas {{PLURAL:$1|protektata|protektataj}} kun la "kaskada" opcio turnita sur:
$2',
'namespaceprotected' => "Vi ne rajtas redakti paĝojn en la '''$1''' nomspaco.",
'yourpassword' => 'Pasvorto:',
'userlogin-yourpassword' => 'Pasvorto',
'userlogin-yourpassword-ph' => 'Enigu vian pasvorton',
+'createacct-yourpassword-ph' => 'Tajpu pasvorton',
'yourpasswordagain' => 'Retajpu pasvorton',
'createacct-yourpasswordagain' => 'Konfirmu pasvorton',
+'createacct-yourpasswordagain-ph' => 'Retajpu pasvorton',
'remembermypassword' => 'Memori mian ensalutadon ĉe ĉi tiu komputilo (daŭrante maksimume $1 {{PLURAL:$1|tagon|tagojn}})',
'userlogin-remembermypassword' => 'Memoru mian ensaluton',
'userlogin-signwithsecure' => 'Uzu sekurigitan konekton',
'showhideselectedversions' => 'Montri/kaŝi elektitajn versiojn',
'editundo' => 'malfari',
'diff-empty' => '(Neniu diferenco)',
-'diff-multi' => '({{PLURAL:$1|Unu intermeza versio|$1 intermezaj versioj}} de {{PLURAL:$2|unu uzanto|$2 uzantoj}} ne estas {{PLURAL:$1|montrata|montrataj}}.)',
'diff-multi-manyusers' => '({{PLURAL:$1|Unu intermeza versio|$1 intermezaj versioj}} de pli ol {{PLURAL:$2|unu uzanto|$2 uzantoj}} ne estas {{PLURAL:$1|montrata|montrataj}}.)',
'difference-missing-revision' => '{{PLURAL:$2|Unu revizio|$2 revizioj}} de ĉi tiu malsameco ($1) ne {{PLURAL:$2|estis|estis}} trovebla.
'rows' => 'Linioj:',
'columns' => 'Kolumnoj:',
'searchresultshead' => 'Serĉi',
-'resultsperpage' => 'Montri trovitajn po',
'stub-threshold' => 'Ago-sojlo por formatigo de <a href="#" class="stub">ligil-ĝermo (anglalingve: "stub link")</a> (bitikoj):',
'stub-threshold-disabled' => 'Malebligita',
'recentchangesdays' => 'Tagoj montrendaj en lastaj ŝanĝoj:',
'action-createpage' => 'krei paĝojn',
'action-createtalk' => 'krei diskuto-paĝojn',
'action-createaccount' => 'krei ĉi tiun uzanto-konton',
-'action-minoredit' => 'marki ĉi tiun redakton kiel malgravan',
+'action-minoredit' => 'marki ĉi tiun redakton eta',
'action-move' => 'movi ĉi tiun paĝon',
'action-move-subpages' => 'movi ĉi tiun paĝon, kaj ties subpaĝojn',
'action-move-rootuserpages' => 'movi radikajn uzanto-paĝojn',
'rclistfrom' => 'Montri novajn ŝanĝojn ekde "$1"',
'rcshowhideminor' => '$1 redaktetojn',
'rcshowhidebots' => '$1 robotojn',
-'rcshowhideliu' => '$1 ensalutantojn',
+'rcshowhideliu' => '$1 registriĝintojn',
'rcshowhideanons' => '$1 anonimajn redaktojn',
'rcshowhidepatr' => '$1 patrolitajn redaktojn',
'rcshowhidemine' => '$1 miajn redaktojn',
'backend-fail-closetemp' => 'Ne povis fermi provizoran dosieron.',
'backend-fail-read' => 'Ne povas legi dosieron "$1".',
'backend-fail-create' => 'Ne povas skribi dosieron $1.',
-'backend-fail-maxsize' => 'Ne povis skribi la dosieron "$1," ĉar ĝi estas pli granda ol {{plural: $2|bitoko|$2 bitokoj}}.',
+'backend-fail-maxsize' => 'Ne povis skribi la dosieron "$1," ĉar ĝi estas pli granda ol {{PLURAL:$2|bitoko|$2 bitokoj}}.',
'backend-fail-readonly' => 'La interna konservujo "$1" nune estas nurlega. La indikata kialo estas: "\'\'$2\'\'"',
'backend-fail-synced' => 'La dosiero "$1" estas en nekohera stato kun la internaj konservujoj',
'backend-fail-connect' => 'Ne eblis konekti la internan konservujon "$1".',
'watchmethod-list' => 'traserĉas priatentitajn',
'watchlistcontains' => 'Via atentaro enhavas $1 {{PLURAL:$1|paĝon|paĝojn}}.',
'iteminvalidname' => 'Ia eraro pri "$1", nevalida titolo...',
-'wlnote' => "Jen la {{PLURAL:$1|lasta redakto|lastaj '''$1''' redaktoj}} dum la {{PLURAL:$2|lasta horo|lastaj '''$2''' horoj}}, ekde $3, $4.",
'wlshowlast' => 'Montri el lastaj $1 horoj $2 tagoj $3',
'watchlist-options' => 'Opcioj por atentaro',
'tooltip-pt-watchlist' => 'Listo de paĝoj kies ŝanĝojn vi priatentas.',
'tooltip-pt-mycontris' => 'Listo de viaj kontribuoj',
'tooltip-pt-login' => 'Vi estas invitita ensaluti, tamen ne estas devige.',
-'tooltip-pt-anonlogin' => 'Vi estas invitita ensaluti, tamen ne estas devige.',
'tooltip-pt-logout' => 'Elsaluti',
'tooltip-ca-talk' => 'Diskuto pri la artikolo',
'tooltip-ca-edit' => 'Vi povas redakti tiun ĉi paĝon. Bv uzi la antaŭvidbutonon antaŭ ol konservi.',
'version-parser-function-hooks' => 'Hokoj de sintaksaj funkcioj',
'version-hook-name' => 'Nomo de hoko',
'version-hook-subscribedby' => 'Abonita de',
-'version-version' => '(Versio $1)',
-'version-license' => 'Permesilo',
+'version-version' => '($1)',
+'version-license' => 'Permesilo de MediaWiki',
'version-poweredby-credits' => "Ĉi tiu vikio funkcias per '''[https://www.mediawiki.org/ MediaWiki]''', aŭtorrajto © 2001–$1 $2.",
'version-poweredby-others' => 'aliaj',
'version-credits-summary' => 'Ni ŝatus agnoski la sekvajn personojn pro siaj kontribuoj al [[Special:Version|MediaWiki]].',
* @author Boivie
* @author Candalua
* @author Capmo
+ * @author Carlitosag
* @author Cerealito
* @author Ciencia Al Poder
* @author Clerc
* @author Remember the dot
* @author Remux
* @author Richard Wolf VI
+ * @author Salvador alc
* @author Sanbec
* @author Savh
+ * @author Sethladan
* @author Shirayuki
* @author Spacebirdy
* @author Stephensuleeman
$messages = array(
# User preference toggles
'tog-underline' => 'Subrayar los enlaces:',
-'tog-justify' => 'Justificar los párrafos',
'tog-hideminor' => 'Ocultar las ediciones menores en los cambios recientes',
'tog-hidepatrolled' => 'Ocultar las ediciones patrulladas en los cambios recientes',
'tog-newpageshidepatrolled' => 'Ocultar las páginas patrulladas de la lista de páginas nuevas',
'tog-numberheadings' => 'Numerar automáticamente los encabezados',
'tog-showtoolbar' => 'Mostrar la barra de edición',
'tog-editondblclick' => 'Editar las páginas al pulsar dos veces en ellos con el ratón',
-'tog-editsection' => 'Activar la edición de secciones mediante el enlace [editar]',
'tog-editsectiononrightclick' => 'Activar la edición de secciones pulsando el botón derecho en los títulos de secciones',
-'tog-showtoc' => 'Mostrar el índice (para páginas con más de 3 encabezados)',
'tog-rememberpassword' => 'Recordar mi nombre de usuario y contraseña entre sesiones en este navegador (por un máximo de $1 {{PLURAL:$1|día|días}})',
'tog-watchcreations' => 'Añadir las páginas que cree y los archivos que suba a mi lista de seguimento',
'tog-watchdefault' => 'Añadir las páginas y archivos que edite a mi lista de seguimiento',
'tog-diffonly' => "No mostrar bajo las ''diferencias'' el contenido de la página",
'tog-showhiddencats' => 'Mostrar las categorías escondidas',
'tog-noconvertlink' => 'Desactivar la conversión de título de enlace',
-'tog-norollbackdiff' => "Omitir la ''diferencia'' después de revertir",
+'tog-norollbackdiff' => 'Omitir la diferencia después de revertir',
'tog-useeditwarning' => 'Advertirme cuando abandone una página editada con cambios sin grabar',
'tog-prefershttps' => 'Utiliza una conexión segura siempre que haya iniciado una sesión',
'wed' => 'mié',
'thu' => 'jue',
'fri' => 'vie',
-'sat' => 'sab',
+'sat' => 'sáb',
'january' => 'enero',
'february' => 'febrero',
'march' => 'marzo',
'redirectedfrom' => '(Redirigido desde «$1»)',
'redirectpagesub' => 'Página de redirección',
'lastmodifiedat' => 'Esta página fue modificada por última vez el $1, a las $2.',
-'viewcount' => 'Esta página ha sido visitada {{PLURAL:$1|una vez|$1 veces}}.',
+'viewcount' => 'Esta página se ha visitado {{PLURAL:$1|una vez|$1 veces}}.',
'protectedpage' => 'Página protegida',
'jumpto' => 'Saltar a:',
'jumptonavigation' => 'navegación',
Puede que ya haya sido borrado por alguien más.',
'cannotdelete-title' => 'No se puede borrar la página «$1»',
'delete-hook-aborted' => 'La modificación que intentaste hacer fue cancelada por un gancho de extensión. No hay explicación disponible.',
-'no-null-revision' => 'No se pudo crear la nueva revisión nula para la página "$1"',
+'no-null-revision' => 'No se pudo crear la revisión nula para la página «$1»',
'badtitle' => 'Título incorrecto',
'badtitletext' => 'El título de la página solicitada está vacío, no es válido, o es un enlace interidioma o interwiki incorrecto.
Puede que contenga uno o más caracteres que no se pueden usar en los títulos.',
# Virus scanner
'virus-badscanner' => "Error de configuración: Antivirus desconocido: ''$1''",
-'virus-scanfailed' => 'Escaneo fallido (código $1)',
+'virus-scanfailed' => 'falló el análisis (código $1)',
'virus-unknownscanner' => 'antivirus desconocido:',
# Login and logout pages
'yourname' => 'Nombre de usuario:',
'userlogin-yourname' => 'Usuario',
'userlogin-yourname-ph' => 'Escribe tu nombre de usuario',
-'createacct-another-username-ph' => 'Ingrese el nombre de usuario',
+'createacct-another-username-ph' => 'Escribe el nombre de usuario',
'yourpassword' => 'Contraseña:',
'userlogin-yourpassword' => 'Contraseña',
'userlogin-yourpassword-ph' => 'Escribe tu contraseña',
'login-abort-generic' => 'Tu inicio de sesión no fue exitoso - Cancelado',
'loginlanguagelabel' => 'Idioma: $1',
'suspicious-userlogout' => 'Tu solicitud de desconexión ha sido denegada, pues parece haber sido enviada desde un navegador defectuoso o un proxy caché.',
-'createacct-another-realname-tip' => 'El nombre Real es opcional.
-Si elige proporcionarlo, se usará para dar al usuario la atribución de su trabajo.',
+'createacct-another-realname-tip' => 'El nombre real es opcional.
+Si se proporciona, se usará para dar al usuario la atribución de su trabajo.',
# Email sending
'php-mail-error-unknown' => 'Error desconocido en la función mail() de PHP.',
# Change password dialog
'changepassword' => 'Cambiar contraseña',
'resetpass_announce' => 'Has iniciado sesión con una contraseña temporal que fue enviada por correo electrónico.
-Por favor, introduce una nueva contraseña aquí:',
+Establece una contraseña nueva aquí:',
'resetpass_text' => '<!-- Añada texto aquí -->',
'resetpass_header' => 'Cambiar la contraseña de la cuenta',
'oldpassword' => 'Contraseña antigua:',
'retypenew' => 'Confirmar la contraseña nueva:',
'resetpass_submit' => 'Establecer contraseña e iniciar sesión',
'changepassword-success' => 'La contraseña ha sido cambiada con éxito.',
+'changepassword-throttled' => 'Has intentado acceder demasiadas veces.
+Espera $1 antes de intentarlo de nuevo.',
'resetpass_forbidden' => 'No se pueden cambiar las contraseñas',
'resetpass-no-info' => 'Debes iniciar sesión para acceder directamente a esta página.',
'resetpass-submit-loggedin' => 'Cambiar contraseña',
'changeemail-header' => 'Cambiar la dirección de correo de la cuenta',
'changeemail-text' => 'Rellena este formulario para cambiar tu dirección de correo electrónico. Debes introducir la contraseña para confirmar este cambio.',
'changeemail-no-info' => 'Debes iniciar sesión para acceder directamente a esta página.',
-'changeemail-oldemail' => 'Dirección de correo electrónico actual:',
-'changeemail-newemail' => 'Nueva dirección de correo electrónico:',
+'changeemail-oldemail' => 'Dirección electrónica actual:',
+'changeemail-newemail' => 'Dirección electrónica nueva:',
'changeemail-none' => '(ninguna)',
'changeemail-password' => 'Tu contraseña en {{SITENAME}}:',
'changeemail-submit' => 'Cambiar correo electrónico',
'changeemail-cancel' => 'Cancelar',
+'changeemail-throttled' => 'Has intentado acceder demasiadas veces.
+Espera $1 antes de intentarlo de nuevo.',
# Special:ResetTokens
'resettokens' => 'Restablecer claves',
'content-not-allowed-here' => 'El contenido "$1" no está permitido en la página [[$2]]',
'editwarning-warning' => 'Si abandonas esta página perderás tus cambios.
Si estás identificado, puedes deshabilitar esta advertencia en la sección "Edición" de tus preferencias.',
+'editpage-notsupportedcontentformat-title' => 'Formato de contenido no admitido',
+'editpage-notsupportedcontentformat-text' => 'El formato de contenido $1 no es compatible con el modelo de contenido $2.',
# Content models
'content-model-wikitext' => 'texto wiki',
'cantcreateaccounttitle' => 'No se puede crear la cuenta',
'cantcreateaccount-text' => "La creación de cuentas desde esta dirección IP ('''$1''') ha sido bloqueada por [[User:$3|$3]].
+El motivo dado por $3 es ''$2''",
+'cantcreateaccount-range-text' => "La creación de cuentas de usuario desde direcciones IP en el rango '''$1''', que incluye tu dirección IP ('''$4'''), ha sido bloqueada por [[User:$3|$3]].
+
El motivo dado por $3 es ''$2''",
# History pages
Otros administradores de {{SITENAME}} aún podrán acceder al contenido oculto y podrán deshacer el borrado a través de la misma interfaz, a menos que se establezcan restricciones adicionales.",
'revdelete-confirm' => 'Por favor confirma que deseas realizar la operación, que entiendes las consecuencias y que estás ejecutando dicha acción acorde con [[{{MediaWiki:Policy-url}}|las políticas]].',
'revdelete-suppress-text' => "La herramienta de supresión '''solo''' debería usarse en los siguientes casos:
-* Información potencialmente injuriosa o calumniante.
-* Información personal inapropiada, tal como:
-*: ''nombres, domicilios, números de teléfono, números de la seguridad social e información análoga.",
+* información potencialmente injuriosa o calumniante.
+* información personal inapropiada, tal como:
+*: ''nombres, domicilios, números de teléfono, números de la seguridad social e información análoga.''",
'revdelete-legend' => 'Establecer restricciones de revisión:',
'revdelete-hide-text' => 'Texto de la revisión',
'revdelete-hide-image' => 'Ocultar el contenido del archivo',
'showhideselectedversions' => 'Mostrar/ocultar versiones seleccionadas',
'editundo' => 'deshacer',
'diff-empty' => '(Sin diferencias)',
-'diff-multi' => '(No se {{PLURAL:$1|muestra una edición intermedia realizada|muestran $1 ediciones intermedias realizadas}} por {{PLURAL:$2|un usuario|$2 usuarios}})',
'diff-multi-manyusers' => '(No se {{PLURAL:$1|muestra una edición intermedia|muestran $1 ediciones intermedias}} de {{PLURAL:$2|un usuario|$2 usuarios}})',
'difference-missing-revision' => 'No {{PLURAL:$2|se ha encontrado|se han encontrado}} {{PLURAL:$2|una revisión|$2 revisiones}} de esta diferencia ($1).
'search-result-score' => 'Relevancia: $1%',
'search-redirect' => '(redirige desde $1)',
'search-section' => '(sección $1)',
+'search-file-match' => '(coincide con el contenido del archivo)',
'search-suggest' => 'Quizás quieres buscar: $1',
'search-interwiki-caption' => 'Proyectos hermanos',
'search-interwiki-default' => 'Resultados de $1:',
'rows' => 'Filas:',
'columns' => 'Columnas:',
'searchresultshead' => 'Búsquedas',
-'resultsperpage' => 'Resultados por página:',
'stub-threshold' => 'Límite para formato de <a href="#" class="stub">enlace a esbozo</a> (bytes):',
'stub-threshold-disabled' => 'Desactivado',
'recentchangesdays' => 'Días a mostrar en cambios recientes:',
'prefs-tokenwatchlist' => 'Clave',
'prefs-diffs' => 'Diferencias',
'prefs-help-prefershttps' => 'Esta preferencia tendrá efecto en tu próximo inicio de sesión.',
+'prefs-tabs-navigation-hint' => 'Sugerencia: Puede utilizar las teclas de flecha izquierda y derecha para navegar entre las pestañas de la lista de pestañas.',
# User preference: email validation using jQuery
'email-address-validity-valid' => 'La dirección de correo electrónico parece ser válida',
Si todavía quiere subir su archivo, por favor, regrese a la página anterior y use otro nombre. [[File:$1|thumb|center|$1]]',
'file-exists-duplicate' => 'Este archivo es un duplicado {{PLURAL:$1|del siguiente|de los siguientes}}:',
'file-deleted-duplicate' => 'Un archivo idéntico a este ([[:$1]]) ha sido borrado con anterioridad. Debes comprobar el historial de borrado del archivo ante de volver a subirlo.',
+'file-deleted-duplicate-notitle' => 'Un archivo idéntico a este ha sido borrado con anterioridad, y el título ha sido suprimido. Deberías contactar con alguien capaz de ver los datos de archivos borrados para que revise esta situación antes de proceder a subir de nuevo este archivo.',
'uploadwarning' => 'Advertencia de subida de archivo',
'uploadwarning-text' => 'Por favor, modifique la descripción del archivo abajo indicada e inténtelo de nuevo.',
'savefile' => 'Guardar archivo',
'ninterwikis' => '$1 {{PLURAL:$1|interwiki|interwikis}}',
'nlinks' => '$1 {{PLURAL:$1|enlace|enlaces}}',
'nmembers' => '$1 {{PLURAL:$1|artículo|artículos}}',
+'nmemberschanged' => '$1 → $2 {{PLURAL:$2|miembro|miembros}}',
'nrevisions' => '$1 {{PLURAL:$1|revisión|revisiones}}',
'nviews' => '$1 {{PLURAL:$1|vista|vistas}}',
'nimagelinks' => 'Usado en {{PLURAL:$1|una página|$1 páginas}}',
'protectedpages' => 'Páginas protegidas',
'protectedpages-indef' => 'Sólo protecciones indefinidas',
'protectedpages-cascade' => 'Sólo protecciones en cascada',
+'protectedpages-noredirect' => 'Ocultar redirecciones',
'protectedpagesempty' => 'Actualmente no hay ninguna página protegida con esos parámetros.',
'protectedtitles' => 'Títulos protegidos',
'protectedtitlesempty' => 'Actualmente no existen entradas protegidas con esos parámetros.',
'addwatch' => 'Añadir a la lista de seguimiento',
'addedwatchtext' => 'La página «[[:$1]]» ha sido añadida a tu [[Special:Watchlist|lista de seguimiento]]. Los cambios futuros en esta página y en su página de discusión asociada se indicarán ahí.',
'removewatch' => 'Quitar de la lista de seguimiento',
-'removedwatchtext' => 'La página «[[:$1]]» ha sido eliminada de tu [[Special:Watchlist|lista de seguimiento]].',
+'removedwatchtext' => 'Se ha eliminado la página «[[:$1]]» de tu [[Special:Watchlist|lista de seguimiento]].',
'watch' => 'Vigilar',
'watchthispage' => 'Vigilar esta página',
'unwatch' => 'Dejar de vigilar',
'watchmethod-list' => 'revisando las páginas vigiladas en busca de cambios recientes',
'watchlistcontains' => 'Tu lista de seguimiento posee $1 {{PLURAL:$1|página|páginas}}.',
'iteminvalidname' => "Problema con el artículo '$1', nombre inválido...",
-'wlnote' => "A continuación {{PLURAL:$1|se muestra el último cambio|se muestran los últimos '''$1''' cambios}} en {{PLURAL:$2|la última hora|las últimas '''$2''' horas}} a fecha de $4 $3.",
'wlshowlast' => 'Ver los cambios de las últimas $1 horas, $2 días $3',
'watchlist-options' => 'Opciones de la lista de seguimiento',
'delete-edit-reasonlist' => 'Editar razones de borrado',
'delete-toobig' => 'Esta página tiene un historial muy grande, con más de $1 {{PLURAL:$1|revisión|revisiones}}. Borrar este tipo de páginas ha sido restringido para prevenir posibles problemas en {{SITENAME}}.',
'delete-warning-toobig' => 'Esta página tiene un historial de más de $1 {{PLURAL:$1|revisión|revisiones}}. Eliminarla puede perturbar las operaciones de la base de datos de {{SITENAME}}. Ten cuidado al borrar.',
+'deleting-backlinks-warning' => "'''Advertencia:''' Otras páginas están enlazadas o son inclusión desde la página que estás por eliminar.",
# Rollback
'rollback' => 'Revertir ediciones',
Véase la [[Special:BlockList|lista de bloqueos]] para revisarlo.',
'ipb-blockingself' => '¡Estás a punto de bloquearte a ti mismo! ¿Estás seguro de que quieres hacerlo?',
'ipb-confirmhideuser' => 'Estás a punto de bloquear un usuario con la opción de supresión activada. Esto suprimirá el nombre de usuario en todas las listas y entradas de registro. ¿Estás seguro de que deseas proceder?',
+'ipb-confirmaction' => 'Si estás seguro de querer hacerlo, por favor, marca el campo «{{int:ipb-confirm}}» que hay al final.',
'ipb-edit-dropdown' => 'Editar motivo del bloqueo',
'ipb-unblock-addr' => 'Desbloquear $1',
'ipb-unblock' => 'Desbloquear un usuario o una IP',
'range_block_disabled' => 'La facultad de administrador de crear bloqueos por rangos está deshabilitada.',
'ipb_expiry_invalid' => 'El tiempo de caducidad no es válido.',
'ipb_expiry_temp' => 'Los bloqueos a nombres de usuario ocultos deben ser permanentes.',
-'ipb_hide_invalid' => 'Incapaz de suprimir esta cuenta; puede tener muchas ediciones.',
+'ipb_hide_invalid' => 'No se puede suprimir esta cuenta; tiene más de {{PLURAL:$1|una edición|$1 ediciones}}.',
'ipb_already_blocked' => '"$1" ya se encuentra bloqueado.',
'ipb-needreblock' => '$1 ya está bloqueado. ¿Quieres cambiar el bloqueo?',
'ipb-otherblocks-header' => '{{PLURAL:$1|Otro bloqueo|Otros bloqueos}}',
'allmessages-prefix' => 'Filtrar por prefijo:',
'allmessages-language' => 'Idioma:',
'allmessages-filter-submit' => 'Ir',
+'allmessages-filter-translate' => 'Traducir',
# Thumbnails
'thumbnail-more' => 'Aumentar',
No hay un directorio temporal.',
'import-parse-failure' => 'Error de lectura al importar XML',
'import-noarticle' => '¡No hay páginas para importar!',
-'import-nonewrevisions' => 'Todas las revisiones fueron previamente importadas.',
+'import-nonewrevisions' => 'Ninguna revisión fue importada (todas ya estaban presentes o fueron omitido debido a errores).',
'xml-error-string' => '$1 en la línea $2, col $3 (byte $4): $5',
'import-upload' => 'Subir datos XML',
'import-token-mismatch' => 'Pérdida de datos de sesión. Por favor, inténtalo de nuevo.',
'tooltip-pt-watchlist' => 'Lista de páginas cuyos cambios vigilas',
'tooltip-pt-mycontris' => 'Lista de tus contribuciones',
'tooltip-pt-login' => 'Te recomendamos iniciar sesión, sin embargo no es obligatorio',
-'tooltip-pt-anonlogin' => 'Te invitamos a registrarte, aunque no es obligatorio',
'tooltip-pt-logout' => 'Salir de la sesión',
'tooltip-ca-talk' => 'Discusión acerca del artículo',
'tooltip-ca-edit' => 'Puedes editar esta página. Utiliza el botón de previsualización antes de guardar',
'markaspatrolledtext' => 'Marcar este artículo como revisado',
'markedaspatrolled' => 'Marcado como revisado',
'markedaspatrolledtext' => 'La revisión seleccionada de [[:$1|$1]] ha sido marcada como revisada.',
-'rcpatroldisabled' => 'Revisión de los Cambios Recientes deshabilitada',
+'rcpatroldisabled' => 'Se ha desactivado la supervisión de cambios recientes',
'rcpatroldisabledtext' => 'La capacidad de revisar los Cambios Recientes está deshabilitada en este momento.',
'markedaspatrollederror' => 'No se puede marcar como patrullada',
'markedaspatrollederrortext' => 'Debes especificar una revisión para marcarla como patrullada.',
# Language selector for translatable SVGs
'img-lang-default' => '(idioma predeterminado)',
+'img-lang-info' => 'Renderizar esta imagen en $1. $2',
+'img-lang-go' => 'Adelante',
# Table pager
'ascending_abbrev' => 'asc',
'version-parser-function-hooks' => 'Extensiones de funciones sintácticas',
'version-hook-name' => 'Nombre de la extensión',
'version-hook-subscribedby' => 'Suscrito por',
-'version-version' => '(Versión $1)',
-'version-license' => 'Licencia',
+'version-version' => '($1)',
+'version-license' => 'Licencia de MediaWiki',
+'version-ext-license' => 'Licencia',
+'version-ext-colheader-name' => 'Extensión',
+'version-ext-colheader-version' => 'Versión',
+'version-ext-colheader-license' => 'Licencia',
+'version-ext-colheader-description' => 'Descripción',
+'version-ext-colheader-credits' => 'Autores',
+'version-license-title' => 'Licencia para $1',
+'version-license-not-found' => 'No se han encontrado información detallada de licencia para esta extensión.',
+'version-credits-title' => 'Reconocimiento para $1',
+'version-credits-not-found' => 'No se ha encontrado información detallada de reconocimiento para esta extensión.',
'version-poweredby-credits' => "Este wiki funciona gracias a '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
'version-poweredby-others' => 'otros',
'version-poweredby-translators' => 'Traductores de translatewiki.net',
'redirect-lookup' => 'Buscar:',
'redirect-value' => 'Valor:',
'redirect-user' => 'Id. del usuario',
+'redirect-page' => 'ID de la página',
'redirect-revision' => 'Revisión de página',
'redirect-file' => 'Nombre de fichero',
'redirect-not-exists' => 'No se encontró el valor',
#Colocar todos los fragmentos regex arriba de esta línea. Deja esta línea exactamente como está</pre>',
# Special:Tags
-'tags' => 'Cambio de etiquetas válida',
+'tags' => 'Etiquetas de cambios',
'tag-filter' => 'Filtro de [[Special:Tags|etiquetas]]:',
'tag-filter-submit' => 'Filtro',
'tag-list-wrapper' => '([[Special:Tags|{{PLURAL:$1|Etiqueta|Etiquetas}}]]: $2)',
'api-error-overwrite' => 'No se permite sobrescribir un archivo existente.',
'api-error-stashfailed' => 'Error interno: El servidor no pudo almacenar el archivo temporal.',
'api-error-publishfailed' => 'Error interno: el servidor no pudo publicar el archivo temporal.',
+'api-error-stasherror' => 'Ha ocurrido un error al subir el archivo al depósito.',
'api-error-timeout' => 'El servidor no respondió en el plazo previsto.',
'api-error-unclassified' => 'Ocurrió un error desconocido.',
'api-error-unknown-code' => 'Error desconocido: «$1»',
'duration-hours' => '$1 {{PLURAL:$1|hora|horas}}',
'duration-days' => '$1 {{PLURAL:$1|día|días}}',
'duration-weeks' => '$1 {{PLURAL:$1|semana|semanas}}',
-'duration-years' => '$1 {{PLURAL: $1|año|años}}',
+'duration-years' => '$1 {{PLURAL:$1|año|años}}',
'duration-decades' => '$1 {{PLURAL:$1|década|décadas}}',
'duration-centuries' => '$1 {{PLURAL:$1|siglo|siglos}}',
'duration-millennia' => '$1 {{PLURAL:$1|milenio|milenios}}',
'expand_templates_input' => 'Texto a expandir:',
'expand_templates_output' => 'Resultado:',
'expand_templates_xml_output' => 'Salida XML',
+'expand_templates_html_output' => 'Salida HTML en crudo',
'expand_templates_ok' => 'Aceptar',
'expand_templates_remove_comments' => 'Eliminar comentarios (<!-- ... -->)',
'expand_templates_remove_nowiki' => 'Suprimir <nowiki> etiquetas en resultado',
'expand_templates_generate_xml' => 'Mostrar el árbol XML.',
+'expand_templates_generate_rawhtml' => 'Mostrar HTML en crudo',
'expand_templates_preview' => 'Previsualización',
+# Unknown messages
+'uploadinvalidxml' => 'No se pudo analizar el XML del archivo cargado.',
);
$messages = array(
# User preference toggles
'tog-underline' => 'Linkide allakriipsutus:',
-'tog-justify' => 'Lõikude rööpjoondus',
'tog-hideminor' => 'Peida pisiparandused viimastes muudatustes',
'tog-hidepatrolled' => 'Peida kontrollitud redaktsioonid viimastes muudatustes',
'tog-newpageshidepatrolled' => 'Peida uute lehtede loendis kontrollitud leheküljed',
'tog-numberheadings' => 'Pealkirjade automaatnummerdus',
'tog-showtoolbar' => 'Näita redigeerimise tööriistariba',
'tog-editondblclick' => 'Redigeeri lehekülgi topeltklõpsu peale',
-'tog-editsection' => 'Näita alaosade redigeerimise linke',
'tog-editsectiononrightclick' => 'Alusta alaosa redigeerimist paremklõpsuga alaosa pealkirjal',
-'tog-showtoc' => 'Näita sisukorda (lehtedel, millel on rohkem kui 3 pealkirja)',
'tog-rememberpassword' => 'Parooli meeldejätmine tulevasteks seanssideks (kuni $1 {{PLURAL:$1|päevaks|päevaks}})',
'tog-watchcreations' => 'Lisa jälgimisloendisse minu alustatud leheküljed ja minu üles laaditud failid',
'tog-watchdefault' => 'Lisa jälgimisloendisse minu muudetud leheküljed ja failid',
'cannotdelete' => 'Lehekülge või faili "$1" ei saa kustutada.
Võimalik, et keegi on selle juba kustutanud.',
'cannotdelete-title' => 'Lehekülge "$1" ei saa kustutada',
+'no-null-revision' => 'Lehekülje "$1" nullredaktsiooni ei õnnestunud teha.',
'badtitle' => 'Vigane pealkiri',
'badtitletext' => 'Soovitud lehekülje pealkiri oli vigane, tühi või teisest keeleversioonist või vikist valesti lingitud.
See võib sisaldada ühte või enamat märki, mida ei saa pealkirjades kasutada.',
-'perfcached' => 'Järgnevad andmed on puhverdatud ja ei pruugi olla kõige värskemad. Puhvris on saadaval kuni {{PLURAL:$1|üks tulemus|$1 tulemust}}.',
+'perfcached' => 'Järgmised andmed on puhverdatud ja ei pruugi olla kõige värskemad. Puhvris on saadaval kuni {{PLURAL:$1|üks tulemus|$1 tulemust}}.',
'perfcachedts' => 'Järgmised andmed on vahemälus. Viimane uuendamisaeg: $2, kell $3. Puhvris on saadaval kuni {{PLURAL:$4|üks tulemus|$4 tulemust}}.',
'querypage-no-updates' => 'Lehekülje uuendamine ei ole hetkel lubatud ning andmeid ei värskendata.',
'viewsource' => 'Vaata lähteteksti',
'gotaccount' => "Kui sul on juba konto, '''$1'''.",
'gotaccountlink' => 'logi sisse',
'userlogin-resetlink' => 'Kas oled unustanud oma sisselogimisandmed?',
-'userlogin-resetpassword-link' => 'Unustasid parooli?',
+'userlogin-resetpassword-link' => 'Kas unustasid parooli?',
'helplogin-url' => 'Help:Sisselogimine',
'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Sisselogimisabi]]',
'userlogin-loggedin' => 'Oled juba sisse logitud nimega {{GENDER:$1|$1}}.
Seetõttu ei saa seda IP-aadressi kasutades hetkel rohkem kontosid luua.',
'emailauthenticated' => 'Sinu e-posti aadressi kinnitamisaeg: $2 kell $3.',
'emailnotauthenticated' => 'Sinu e-posti aadress pole veel kinnitatud.
-Järgnevate funktsioonidega seotud e-kirju ei saadeta.',
-'noemailprefs' => 'Järgnevate võimaluste toimimiseks on vaja sisestada e-posti aadress.',
+Järgmiste funktsioonidega seotud e-kirju ei saadeta.',
+'noemailprefs' => 'Järgmiste võimaluste toimimiseks on vaja määrata e-posti aadress.',
'emailconfirmlink' => 'Kinnita oma e-posti aadress',
'invalidemailaddress' => 'E-posti aadress ei ole aktsepteeritav, sest see on vigaselt kirjutatud.
Ole hea ja sisesta õige e-posti aadress või jäta väli tühjaks.',
'resetpass_submit' => 'Sisesta parool ja logi sisse',
'changepassword-success' => 'Sinu parool on edukalt muudetud!
Sind logitakse nüüd sisse...',
+'changepassword-throttled' => 'Oled hiljuti proovinud liiga palju kordi sisse logida.
+Palun oota $1, enne kui uuesti proovid.',
'resetpass_forbidden' => 'Paroole ei saa muuta',
'resetpass-no-info' => 'Pead olema sisselogitud, et sellele lehele pääseda.',
'resetpass-submit-loggedin' => 'Muuda parool',
'changeemail-password' => 'Sinu parool {{GRAMMAR:inessive|{{SITENAME}}}}:',
'changeemail-submit' => 'Muuda e-posti aadress',
'changeemail-cancel' => 'Loobu',
+'changeemail-throttled' => 'Oled proovinud liiga palju kordi sisse logida.
+Palun oota $1, enne kui uuesti proovid.',
# Special:ResetTokens
'resettokens' => 'Lubade lähtestamine',
'cascadeprotectedwarning' => "'''Hoiatus:''' See lehekülg on nii lukustatud, et ainult administraatori õigustega kasutajad saavad seda redigeerida, sest lehekülg on osa {{PLURAL:$1|järgmisest|järgmisest}} kaskaadkaitsega {{PLURAL:$1|leheküljest|lehekülgedest}}:",
'titleprotectedwarning' => "'''Hoiatus: See lehekülg on nii lukustatud, et selle loomiseks on tarvis [[Special:ListGroupRights|eriõigusi]].'''
Allpool on toodud uusim logisissekanne:",
-'templatesused' => 'Sellel leheküljel on kasutusel {{PLURAL:$1|järgnev mall|järgnevad mallid}}:',
+'templatesused' => 'Sellel leheküljel on kasutusel {{PLURAL:$1|järgmine mall|järgmised mallid}}:',
'templatesusedpreview' => 'Eelvaates {{PLURAL:$1|kasutatav mall|kasutatavad mallid}}:',
'templatesusedsection' => 'Selles alaosas {{PLURAL:$1|kasutatav mall|kasutatavad mallid}}:',
'template-protected' => '(kaitstud)',
'sectioneditnotsupported-text' => 'Sellel leheküljel pole alaosa redigeerimine lubatud.',
'permissionserrors' => 'Loatõrge',
'permissionserrorstext' => 'Sul pole õigust seda teha {{PLURAL:$1|järgmisel põhjusel|järgmistel põhjustel}}:',
-'permissionserrorstext-withaction' => 'Sul pole lubatud {{lcfirst:$2}} {{PLURAL:$1|järgneval põhjusel|järgnevatel põhjustel}}:',
+'permissionserrorstext-withaction' => 'Sul pole lubatud {{lcfirst:$2}} {{PLURAL:$1|järgmisel põhjusel|järgmistel põhjustel}}:',
'recreate-moveddeleted-warn' => "'''Hoiatus: Lood uuesti lehekülge, mis on varem kustutatud.'''
Kaalu, kas lehekülje uuesti loomine on kohane.
'invalid-content-data' => 'Vigased sisuandmed',
'content-not-allowed-here' => 'Lehekülg [[$2]] ei või sisaldada $1i.',
'editwarning-warning' => 'Sellelt leheküljelt lahkumise tõttu võivad tehtud muudatused kaotsi minna.
-Kui oled sisse loginud, saad selle hoiatuse eelistuste alaosas "Toimetamine" keelata.',
+Kui oled sisse loginud, saad selle hoiatuse eelistuste alaosas "{{int:prefs-editing}}" keelata.',
+'editpage-notsupportedcontentformat-title' => 'Sisuvormingu tugi puudub',
+'editpage-notsupportedcontentformat-text' => 'Sisumudelil $2 puudub sisuvormingu $1 tugi.',
# Content models
'content-model-wikitext' => 'vikitekst',
'node-count-exceeded-warning' => 'Lehekülg ületas sõlmemäära.',
'expansion-depth-exceeded-category' => 'Ületatud hõrendussügavusega leheküljed',
'expansion-depth-exceeded-warning' => 'Lehekülg ületas hõrendussügavuse.',
+'converter-manual-rule-error' => 'Tõrge keelevariandi käsivahetusreeglis',
# "Undo" feature
'undo-success' => 'Selle redaktsiooni käigus tehtud muudatusi saab eemaldada. Palun kontrolli allolevat võrdlust veendumaks, et tahad need muudatused tõepoolest eemaldada. Seejärel saad lehekülje salvestada.',
'cantcreateaccounttitle' => 'Ei saa kontot luua',
'cantcreateaccount-text' => "Kasutaja [[User:$3|$3]] on blokeerinud kasutajanime loomise sellelt IP-aadressilt ('''$1''').
Kasutaja $3 märkis põhjuseks ''$2''",
+'cantcreateaccount-range-text' => "Kontode loomine IP-aadressidelt vahemikus '''$1''', millesse jääb sinu IP-aadress ('''$4'''), on blokeeritud. Blokeeris kasutaja [[User:$3|$3]].
+
+$3 tõi järgmise põhjuse: ''$2''",
# History pages
'viewpagelogs' => 'Vaata selle lehe logisid',
'revdelete-text' => "'''Kustutatud redaktsioonid ja sündmused kajastuvad endiselt lehekülje ajaloos ja logides, kuid osa nende sisust pole avalikult nähtav.'''
{{GRAMMAR:genitive|{{SITENAME}}}} administraatorid saavad peidetud sisu siiski vaadata ning seda vajadusel selle liidese kaudu taastada, kui see pole just täiendavalt keelatud.",
'revdelete-confirm' => 'Kinnita, et soovid tõesti seda teha ning et saad aru tagajärgedest ja tegevus on kooskõlas [[{{MediaWiki:Policy-url}}|siinsete kokkulepetega]].',
-'revdelete-suppress-text' => "Andmed tuleks varjata '''ainult''' järgnevatel juhtudel:
-* Võimalik laim
-* Sobimatu isiklik teave
+'revdelete-suppress-text' => "Andmed tuleks varjata '''ainult''' järgmistel juhtudel:
+* võimalik laim
+* sobimatu isiklik teave
*: ''kodune aadress ja telefoninumber, isikukood jne''",
'revdelete-legend' => 'Nähtavuse piirangute seadmine',
'revdelete-hide-text' => 'Redaktsiooni tekst',
'showhideselectedversions' => 'Muuda valitud redaktsioonide nähtavust',
'editundo' => 'eemalda',
'diff-empty' => '(Erinevus puudub)',
-'diff-multi' => '({{PLURAL:$1|Ühte|$1}} vahepealset {{PLURAL:$2|ühe|$2}} kasutaja redaktsiooni ei näidata.)',
+'diff-multi-sameuser' => '(ei näidata sama kasutaja {{PLURAL:$1|üht|$1}} vahepealset redaktsiooni)',
+'diff-multi-otherusers' => '(ei näidata {{PLURAL:$2|ühe teise|$2}} kasutaja {{PLURAL:$1|üht|$1}} vahepealset redaktsiooni)',
'diff-multi-manyusers' => '({{PLURAL:$1|Ühte|$1}} vahepealset rohkem kui {{PLURAL:$2|ühe|$2}} kasutaja redaktsiooni ei näidata.)',
'difference-missing-revision' => 'Selle erinevuste vaate {{PLURAL:$2|üht|$2}} redaktsiooni ($1) ei leitud.
'shown-title' => 'Näita lehekülje kohta $1 {{PLURAL:$1|tulemus|tulemust}}',
'viewprevnext' => 'Näita ($1 {{int:pipe-separator}} $2) ($3)',
'searchmenu-exists' => "'''Lehekülg pealkirjaga \"[[:\$1]]\" on olemas.'''",
-'searchmenu-new' => "'''Loo lehekülg pealkirjaga \"[[:\$1]]\".'''",
+'searchmenu-new' => '<strong>Loo lehekülg pealkirjaga "[[:$1]]".</strong> {{PLURAL:$2|0=|Vaata ka leitud lehekülge.|Vaata ka leitud otsitulemusi.}}',
'searchprofile-articles' => 'Sisuleheküljed',
'searchprofile-project' => 'Abi- ja projektilehed',
'searchprofile-images' => 'Multimeedia',
'search-result-score' => 'Vastavus: $1%',
'search-redirect' => '(ümbersuunamine $1)',
'search-section' => '(alaosa $1)',
+'search-file-match' => '(vastab faili sisule)',
'search-suggest' => 'Kas mõtlesid: $1',
'search-interwiki-caption' => 'Sõsarprojektid',
'search-interwiki-default' => '$1 tulemused:',
'rows' => 'Ridu:',
'columns' => 'Veerge:',
'searchresultshead' => 'Otsingutulemite sätted',
-'resultsperpage' => 'Vasteid leheküljel:',
'stub-threshold' => '<a href="#" class="stub">Nii</a> lingitud lehekülje suuruse ülempiir (baitides):',
'stub-threshold-disabled' => 'Välja lülitatud',
'recentchangesdays' => 'Mitu päeva näidata viimastes muudatustes:',
'upload-recreate-warning' => "'''Hoiatus: Sellise nimega fail on kustutatud või teisaldatud.'''
Selle lehe kustutamis- ja teisaldamislogi on kuvatud siin:",
-'uploadtext' => "Kasuta allpool olevat vormi failide üleslaadimiseks.
-Et näha või leida eelnevalt üles laaditud faile vaata [[Special:FileList|failide loendit]].
+'uploadtext' => "Kasuta allpool olevat vormi, et faile üles laadida.
+Et näha või leida varem üles laaditud faile, vaata [[Special:FileList|failide loendit]].
Üleslaadimiste ajalugu saab uurida [[Special:Log/upload|üleslaadimislogist]], kustutamiste ajalugu [[Special:Log/delete|kustutamislogist]].
-Faili lisamiseks artiklile kasuta linki ühel kujul järgnevatest.
-* '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:Fail.jpg]]</nowiki></code>''', et lisada täissuuruses pilt.
-* '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:Fail.png|200px|thumb|left|kirjeldus]]</nowiki></code>''', et lisada lehekülje vasakusse serva raamiga 200 piksli laiune pisipilt koos pildiallkirjaga (''kirjeldus'').
-* '''<code><nowiki>[[</nowiki>{{ns:media}}<nowiki>:Fail.ogg]]</nowiki></code>''', et linkida otse failile ilma seda kuvamata.",
+Et lisada fail artiklile, kasuta üht järgmistest süntaksitest:
+* '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:Fail.jpg]]</nowiki></code>''', et lisada täissuuruses pilt
+* '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:Fail.png|200px|thumb|left|kirjeldus]]</nowiki></code>''', et lisada lehekülje vasakusse serva raamiga 200 piksli laiune pisipilt koos pildiallkirjaga (''kirjeldus'')
+* '''<code><nowiki>[[</nowiki>{{ns:media}}<nowiki>:Fail.ogg]]</nowiki></code>''', et linkida otse failile ilma seda kuvamata",
'upload-permitted' => 'Lubatud failitüübid: $1.',
'upload-preferred' => 'Eelistatud failitüübid: $1.',
'upload-prohibited' => 'Keelatud failitüübid: $1.',
'fileexists-shared-forbidden' => 'Samanimeline fail on juba olemas jagatud meediavaramus.
Kui soovid siiski oma faili üles laadida, siis palun mine tagasi ja kasuta teist failinime.
[[File:$1|thumb|center|$1]]',
-'file-exists-duplicate' => 'See fail on {{PLURAL:$1|järgneva faili|järgnevate failide}} duplikaat:',
+'file-exists-duplicate' => 'See fail on {{PLURAL:$1|järgmise faili|järgmiste failide}} duplikaat:',
'file-deleted-duplicate' => 'Selle failiga ([[:$1]]) identne fail on hiljuti kustutatud.
Vaata selle faili kustutamise ajalugu enne jätkamist.',
+'file-deleted-duplicate-notitle' => 'Selle failiga identne fail on varem kustutatud ja pealkiri on varjatud.
+Enne kui jätkad uuesti üleslaadimisega, peaksid paluma olukorda hinnata kellelgi, kes saab vaadata varjatud andmeid.',
'uploadwarning' => 'Üleslaadimise hoiatus',
'uploadwarning-text' => 'Muuda allpool olevat faili kirjeldust ning proovi uuesti.',
'savefile' => 'Salvesta fail',
'uploadstash-badtoken' => 'Toiming ebaõnnestus; võib-olla redigeerimisloa aegumise tõttu. Proovi uuesti.',
'uploadstash-errclear' => 'Failide kustutamine ebaõnnestus.',
'uploadstash-refresh' => 'Värskenda faililoendit',
+'invalid-chunk-offset' => 'Tüki vigane nihe',
# img_auth script messages
'img-auth-accessdenied' => 'Juurdepääs keelatud',
'filehist-missing' => 'Fail puudub',
'imagelinks' => 'Failikasutus',
'linkstoimage' => 'Sellele pildile {{PLURAL:$1|viitab järgmine lehekülg|viitavad järgmised leheküljed}}:',
-'linkstoimage-more' => 'Sellele failile viitab enam kui $1 {{PLURAL:$1|lehekülg|lehekülge}}.
-Järgnevas loetelus on kuvatud ainult {{PLURAL:$1|esimene viitav lehekülg|esimesed $1 viitavat lehekülge}}.
+'linkstoimage-more' => 'Sellele failile viitab enam kui {{PLURAL:$1|üks lehekülg|$1 lehekülge}}.
+Järgmises loendis on näidatud ainult {{PLURAL:$1|esimene viitav lehekülg|esimesed $1 viitavat lehekülge}}.
[[Special:WhatLinksHere/$2|Kogu loetelu]] on saadaval.',
'nolinkstoimage' => 'Sellele pildile ei viita ükski lehekülg.',
'morelinkstoimage' => 'Vaata [[Special:WhatLinksHere/$1|veel linke]], mis sellele failile viitavad.',
'linkstoimage-redirect' => '$1 (failiümbersuunamine) $2',
-'duplicatesoffile' => '{{PLURAL:$1|Järgnev fail|Järgnevad $1 faili}} on selle faili {{PLURAL:$1|duplikaat|duplikaadid}} ([[Special:FileDuplicateSearch/$2|üksikasjad]]):',
+'duplicatesoffile' => '{{PLURAL:$1|Järgmine fail|Järgmised $1 faili}} on selle faili {{PLURAL:$1|duplikaat|duplikaadid}} ([[Special:FileDuplicateSearch/$2|üksikasjad]]):',
'sharedupload' => 'See fail pärineb allikast $1 ning võib olla kasutusel ka teistes projektides.',
'sharedupload-desc-there' => 'See fail pärineb kesksest failivaramust $1. Palun vaata [$2 faili kirjelduse lehekülge], et saada rohkem teavet.',
'sharedupload-desc-here' => 'See on jagatud fail allikast $1 ja seda saab kasutada ka teistes projektides. Faili sealne [$2 kirjeldus] on kuvatud allpool.',
'protectedpages' => 'Kaitstud leheküljed',
'protectedpages-indef' => 'Ainult määramata ajani kaitstud',
'protectedpages-cascade' => 'Ainult kaskaadkaitsega',
+'protectedpages-noredirect' => 'Peida ümbersuunamised',
'protectedpagesempty' => 'Selliste parameetritega ei ole praegu ühtegi lehekülge kaitstud.',
'protectedtitles' => 'Kaitstud pealkirjad',
'protectedtitlesempty' => 'Hetkel pole ükski pealkiri kaitstud.',
'ancientpages' => 'Vanimad leheküljed',
'move' => 'Teisalda',
'movethispage' => 'Muuda pealkirja',
-'unusedimagestext' => 'Järgnevad failid on olemas, aga pole ühelegi leheküljele lisatud.
+'unusedimagestext' => 'Järgmised failid on olemas, aga pole ühelegi leheküljele lisatud.
Pane tähele, et teised võrgukohad võivad viidata failile otselingiga ja seega võivad siin toodud failid olla ikkagi aktiivses kasutuses.',
'unusedcategoriestext' => 'Need kategooriad pole ühelgi leheküljel ega teises kategoorias kasutuses.',
'notargettitle' => 'Puudub sihtlehekülg',
'watchmethod-list' => 'jälgitavate lehekülgede viimased muudatused',
'watchlistcontains' => 'Sinu jälgimisloendis on $1 {{PLURAL:$1|lehekülg|lehekülge}}.',
'iteminvalidname' => "Probleem üksusega '$1'. Selle nimes on viga.",
-'wlnote' => "Allpool on {{PLURAL:$1|viimane muudatus|viimased '''$1''' muudatust}} viimase {{PLURAL:$2|tunni|'''$2''' tunni}} jooksul seisuga $3, $4.",
+'wlnote2' => 'Allpool on viimase {{PLURAL:$1|tunni|<strong>$1</strong> tunni}} jooksul tehtud muudatused seisuga $2, $3.',
'wlshowlast' => 'Näita viimast $1 tundi $2 päeva. $3',
'watchlist-options' => 'Jälgimisloendi seaded',
Selle kustutamine on keelatud, et ära hoida ekslikku {{GRAMMAR:genitive|{{SITENAME}}}} töö häirimist.',
'delete-warning-toobig' => 'See lehekülg on pika redigeerimislooga – üle {{PLURAL:$1|ühe muudatuse|$1 muudatuse}}.
Ettevaatust, selle kustutamine võib esile kutsuda häireid {{GRAMMAR:genitive|{{SITENAME}}}} andmebaasi töös.',
+'deleting-backlinks-warning' => "'''Hoiatus:''' Teised leheküljed viitavad leheküljele, mida oled kustutamas, või see lehekülg on kasutuses mallina.",
# Rollback
'rollback' => 'Tühista muudatused',
'undeletepage' => 'Kustutatud lehekülgede vaatamine ja taastamine',
'undeletepagetitle' => "'''Kustutatud redaktsioonid leheküljest [[:$1|$1]]'''.",
'viewdeletedpage' => 'Kustutatud lehekülgede vaatamine',
-'undeletepagetext' => '{{PLURAL:$1|Järgnev lehekülg on kustutatud|Järgnevad leheküljed on kustutatud}}, kuid arhiivis veel olemas ja taastatavad. Arhiivi sisu kustutatakse perioodiliselt.',
+'undeletepagetext' => '{{PLURAL:$1|Järgmine lehekülg|Järgmised leheküljed}} on kustutatud, kuid arhiivis veel olemas ja taastatavad.
+Arhiivi sisu võidakse perioodiliselt kustutada.',
'undelete-fieldset-title' => 'Redaktsioonide taastamine',
'undeleteextrahelp' => "Kogu lehe ja selle ajaloo taastamiseks jäta kõik linnukesed tühjaks ja vajuta '''''{{int:undeletebtn}}'''''.
Et taastada valikuliselt, tee linnukesed kastidesse, mida soovid taastada ja vajuta '''''{{int:undeletebtn}}'''''.",
'range_block_disabled' => 'Administraatori õigus blokeerida IP-aadresside vahemik on ära võetud.',
'ipb_expiry_invalid' => 'Vigane aegumise tähtaeg.',
'ipb_expiry_temp' => 'Peidetud kasutajanime blokeeringud peavad olema alalised.',
-'ipb_hide_invalid' => 'Selle konto varjamine ei õnnestunud. Sellelt võib olla tehtud liiga palju redigeerimisi.',
+'ipb_hide_invalid' => 'Seda kontot ei saa varjata, sest sellega on tehtud üle {{PLURAL:$1|ühe|$1}} muudatuse.',
'ipb_already_blocked' => '"$1" on juba blokeeritud.',
'ipb-needreblock' => '$1 on juba blokeeritud.
Kas soovid muuta blokeeringu sätteid?',
'sorbsreason' => 'Sinu IP-aadress on {{GRAMMAR:genitive|{{SITENAME}}}} kasutatavas DNS-põhises mustas nimekirjas märgitud kui avatud proksi.',
'sorbs_create_account_reason' => 'Sinu IP-aadress on {{GRAMMAR:genitive|{{SITENAME}}}} kasutatavas DNS-põhises mustas nimekirjas märgitud kui avatud proksi.
Sa ei saa kasutajakontot luua.',
+'xffblockreason' => 'X-Forwarded-Fori päises esinev IP-aadress, mis kuulub kas sulle või proksiserverile, mida kasutad, on blokeeritud. Blokeerimise algne põhjus oli: $1',
'cant-see-hidden-user' => 'Kasutaja, keda blokeerida üritad, on juba blokeeritud ning peidetud. Kuna sul pole õigust blokeerida kasutajanimesid, peites need avalikkuse eest, ei saa sa selle kasutaja blokeeringut vaadata ega muuta.',
'ipbblocked' => 'Sa ei saa teisi blokeerida ega nende blokeeringuid eemaldada, sest oled ise blokeeritud.',
'ipbnounblockself' => 'Sul pole lubatud enda blokeeringut eemaldada.',
'allmessages-prefix' => 'Eesliitefilter:',
'allmessages-language' => 'Keel:',
'allmessages-filter-submit' => 'Mine',
+'allmessages-filter-translate' => 'Tõlgi',
# Thumbnails
'thumbnail-more' => 'Suurenda',
Puudub ajutine kataloog.',
'import-parse-failure' => 'Viga XML-i importimisel',
'import-noarticle' => 'Ühtki lehekülge polnud importida!',
-'import-nonewrevisions' => 'Kõik versioonid on eelnevalt imporditud.',
+'import-nonewrevisions' => 'Ühtegi redaktsiooni ei imporditud (kõik on juba olemas või tõrgete tõttu vahele jäetud).',
'xml-error-string' => '$1 real $2, tulbas $3 (bait $4): $5',
'import-upload' => 'Laadi üles XML-andmed',
'import-token-mismatch' => 'Seansiandmed läksid kaduma.
'import-error-interwiki' => 'Lehekülge "$1" ei impordita, sest selle pealkirja hoitakse välislinkide (interviki) jaoks.',
'import-error-special' => 'Lehekülge "$1" ei impordita, sest see kuulub erinimeruumi, kus pole leheküljed lubatud.',
'import-error-invalid' => 'Lehekülge "$1" ei impordita, sest selle pealkiri on vigane.',
+'import-error-bad-location' => 'Redaktsiooni $2 sisumudeliga $3 ei saa talletada siin vikis leheküljel "$1", mis seda mudelit ei toeta.',
'import-options-wrong' => '{{PLURAL:$2|Vale valik|Valed valikud}}: <nowiki>$1</nowiki>',
'import-rootpage-invalid' => 'Etteantud juurlehekülje pealkiri on vigane.',
'import-rootpage-nosubpage' => 'Juurlehekülje nimeruumis "$1" pole alamleheküljed lubatud.',
'tooltip-pt-watchlist' => 'Lehekülgede loend, mille muudatusi jälgid',
'tooltip-pt-mycontris' => 'Sinu kaastööde loend',
'tooltip-pt-login' => 'Me julgustame teid sisse logima, kuid see pole kohustuslik.',
-'tooltip-pt-anonlogin' => 'Me julgustame teid sisse logima, kuid see pole kohustuslik.',
'tooltip-pt-logout' => 'Logi välja',
'tooltip-ca-talk' => 'Selle artikli arutelu',
'tooltip-ca-edit' => 'Sa saad seda lehekülge muuta. Palun kasuta enne salvestamist eelvaadet.',
'spamprotectiontitle' => 'Spämmitõrjefilter',
'spamprotectiontext' => 'Rämpspostifilter oli lehekülje, mida sa salvestada tahtsid, blokeerinud.
See on ilmselt põhjustatud linkimisest mustas nimekirjas olevasse välisvõrgukohta.',
-'spamprotectionmatch' => 'Järgnev tekst vallandas meie rämpspostifiltri: $1',
+'spamprotectionmatch' => 'Järgmine tekst vallandas meie rämpspostifiltri: $1',
'spambot_username' => 'MediaWiki spämmieemaldus',
'spam_reverting' => 'Taastan viimase versiooni, mis ei sisalda linke aadressile $1.',
'spam_blanking' => 'Kõik versioonid sisaldasid linke veebilehele $1. Lehekülg tühjendatud.',
# Special:NewFiles
'newimages' => 'Uute failide galerii',
-'imagelisttext' => "
-Järgnevas loendis, mis on sorteeritud $2, on '''$1''' {{PLURAL:$1|fail|faili}}.",
+'imagelisttext' => "Allpool on {{PLURAL:$1|'''ühe''' fail|'''$1''' faili}} $2 järjestatud loend.",
'newimages-summary' => 'Sellel erilehel on viimati üles laaditud failid.',
'newimages-legend' => 'Filter',
'newimages-label' => 'Failinimi (või selle osa):',
'confirmemail_subject' => '{{GRAMMAR:genitive|{{SITENAME}}}} e-posti aadressi kinnitamine',
'confirmemail_body' => 'Keegi IP-aadressilt $1, ilmselt sa ise, registreeris selle e-posti aadressiga {{GRAMMAR:inessive|{{SITENAME}}}} konto "$2".
-Kinnitamaks, et see kasutajakonto tõepoolest kuulub sulle ning e-posti teenuste aktiveerimiseks, ava oma võrgulehitsejas järgnev link:
+Kinnitamaks, et see kasutajakonto tõepoolest kuulub sulle ning e-posti teenuste aktiveerimiseks, ava oma võrgulehitsejas järgmine link:
$3
-Kui see *pole* sinu loodud konto, ava järgnev link kinnituse tühistamiseks:
+Kui see *pole* sinu loodud konto, ava järgmine link kinnituse tühistamiseks:
$5
'confirmemail_body_changed' => 'Keegi IP-aadressilt $1, ilmselt sa ise,
muutis {{GRAMMAR:inessive|{{SITENAME}}}} konto "$2" e-posti aadressiks selle aadressi.
-Kinnitamaks, et see konto tõepoolest kuulub sulle ja e-posti teenuste taasaktiveerimiseks, ava oma veebilehitsejas järgnev link:
+Kinnitamaks, et see konto tõepoolest kuulub sulle ja e-posti teenuste taasaktiveerimiseks, ava oma veebilehitsejas järgmine link:
$3
-Kui see *pole* sinu konto, ava järgnev link
+Kui see *pole* sinu konto, ava järgmine link
kinnituse tühistamiseks:
$5
# Scary transclusion
'scarytranscludedisabled' => '[Vikidevaheline mallina kasutamine on keelatud]',
+'scarytranscludefailed' => '[Malli $1 hankimine ebaõnnestus]',
+'scarytranscludefailed-httpstatus' => '[Malli $1 hankimine ebaõnnestus: HTTP $2]',
'scarytranscludetoolong' => '[URL on liiga pikk]',
# Delete conflict
# Language selector for translatable SVGs
'img-lang-default' => '(vaikekeel)',
-'img-lang-info' => 'Viimistle pilt järgmises keeles: $1 $2',
+'img-lang-info' => 'Viimistle pilt järgmises keeles: $1. $2',
'img-lang-go' => 'Mine',
# Table pager
'version-other' => 'Muu',
'version-mediahandlers' => 'Meediatöötlejad',
'version-hooks' => 'Haagid',
-'version-parser-extensiontags' => 'Parseri lisamärgendid',
+'version-parser-extensiontags' => 'Parseri lisasildid',
'version-parser-function-hooks' => 'Parserifunktsioonid',
'version-hook-name' => 'Haagi nimi',
'version-hook-subscribedby' => 'Tellijad',
-'version-version' => '(Versioon $1)',
-'version-license' => 'Litsents',
+'version-version' => '($1)',
+'version-license' => 'MediaWiki litsents',
+'version-ext-license' => 'Litsents',
+'version-ext-colheader-name' => 'Lisa',
+'version-ext-colheader-version' => 'Versioon',
+'version-ext-colheader-license' => 'Litsents',
+'version-ext-colheader-description' => 'Kirjeldus',
+'version-ext-colheader-credits' => 'Autorid',
+'version-license-title' => 'Tarkvaralisa $1 litsents',
+'version-license-not-found' => 'Selle lisa kohta ei leitud üksikasjalikku litsentsiteavet.',
+'version-credits-title' => 'Tarkvaralisa $1 tegijad',
+'version-credits-not-found' => 'Selle lisa tegijate kohta ei leitud üksikasjalikku teavet.',
'version-poweredby-credits' => "See viki kasutab '''[https://www.mediawiki.org/ MediaWiki]''' tarkvara. Autoriõigus © 2001–$1 $2.",
'version-poweredby-others' => 'teised',
'version-poweredby-translators' => 'translatewiki.net-i tõlkijad',
'version-entrypoints-header-url' => 'URL',
# Special:Redirect
-'redirect' => 'Ümbersuunamine faili, kasutaja või redaktsiooni identifikaatori järgi',
+'redirect' => 'Ümbersuunamine faili, kasutaja, lehekülje või redaktsiooni identifikaatori järgi',
'redirect-legend' => 'Ümbersuunamine faili juurde või leheküljele',
-'redirect-summary' => 'See erilehekülg suunab ümber faili (toodud failinimi), lehekülje (toodud redaktsiooni identifikaator) või kasutajalehekülje (toodud numbriline kasutaja identfikaator) juurde. Kasutamine: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]] või [[{{#Special:Redirect}}/user/101]].',
+'redirect-summary' => 'See erilehekülg suunab ümber faili (toodud failinimi), lehekülje (toodud redaktsiooni või lehekülje identifikaator) või kasutajalehekülje (toodud numbriline kasutaja identfikaator) juurde. Kasutamine: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]] või [[{{#Special:Redirect}}/user/101]].',
'redirect-submit' => 'Mine',
'redirect-lookup' => 'Leia:',
'redirect-value' => 'Väärtus:',
'redirect-user' => 'Kasutaja identifikaator',
+'redirect-page' => 'Lehekülje identifikaator',
'redirect-revision' => 'Lehekülje redaktsioon',
'redirect-file' => 'Failinimi',
'redirect-not-exists' => 'Väärtust ei leitud',
# HTML forms
'htmlform-invalid-input' => 'Osaga sinu sisestatust on probleeme',
-'htmlform-select-badoption' => 'Antud number ei ole kõlbulik.',
+'htmlform-select-badoption' => 'Antud väärtus ei sobi.',
'htmlform-int-invalid' => 'Antud väärtus ei ole täisarv.',
'htmlform-float-invalid' => 'Määratud väärtus ei ole arvuline.',
'htmlform-int-toolow' => 'Antud suurus on väiksem kui minimaalne $1',
'api-error-overwrite' => 'Olemasolevate failide ülekirjutamine pole lubatud.',
'api-error-stashfailed' => 'Sisetõrge: Serveril ei õnnestunud ajutist faili talletada.',
'api-error-publishfailed' => 'Sisetõrge: Serveril ebaõnnestus ajutise faili avaldamine.',
+'api-error-stasherror' => 'Selle faili hoidlasse üleslaadimisel ilmnes tõrge.',
'api-error-timeout' => 'Server ei vastanud oodatud aja sees.',
'api-error-unclassified' => 'Ilmnes teadmata tõrge.',
'api-error-unknown-code' => 'Teadmata tõrge: "$1"',
'expand_templates_input' => 'Sisendtekst:',
'expand_templates_output' => 'Tulemus',
'expand_templates_xml_output' => 'XML-väljund',
+'expand_templates_html_output' => 'HTML-toorväljund',
'expand_templates_ok' => 'Hõrenda',
'expand_templates_remove_comments' => 'Eemalda selgitavad märkused',
'expand_templates_remove_nowiki' => 'Ära näita tulemuses <nowiki>-silte',
-'expand_templates_generate_xml' => 'Näita XML sõelumispuud',
+'expand_templates_generate_xml' => 'Näita XML-liigenduspuud',
+'expand_templates_generate_rawhtml' => 'Näita toor-HTMLi',
'expand_templates_preview' => 'Eelvaade',
+# Unknown messages
+'uploadinvalidxml' => 'Üleslaaditud failis sisalduvat XMLi ei õnnestunud liigendada.',
);
*
* @author An13sa
* @author Bengoa
+ * @author Fitoschido
* @author Helix84
* @author Kaganer
* @author Kaustubh
$messages = array(
# User preference toggles
'tog-underline' => 'Loturak azpimarratu:',
-'tog-justify' => 'Paragrafoak justifikatu',
'tog-hideminor' => 'Azken aldaketetan aldaketa txikiak ezkutatu',
'tog-hidepatrolled' => 'Ezkutatu patruilatutako aldaketa azken aldaketetan',
'tog-newpageshidepatrolled' => 'Ezkutatu patruilatutako orriak, orri-zerrenda berritik',
'tog-numberheadings' => 'Goiburukoak automatikoki zenbakitu',
'tog-showtoolbar' => 'Aldaketen tresna-barra erakutsi',
'tog-editondblclick' => 'Klik bikoitzaren bitartez orrialdeak aldatu',
-'tog-editsection' => 'Atalak [aldatu] loturen bitartez aldatzeko aukera gaitu',
'tog-editsectiononrightclick' => 'Atalen izenburuetan eskuin klik eginez aldatzea gaitu',
-'tog-showtoc' => 'Edukien taula erakutsi (3 goiburukotik gorako orrialdeentzako)',
'tog-rememberpassword' => 'Nire saioa ordenagailu honetan gorde ({{PLURAL:$1|egun baterako| $1 egunerako}} gehienez)',
'tog-watchcreations' => 'Sortzen ditudan orrialdeak eta fitxategiak nire jarraipen-zerrendara gehitu',
'tog-watchdefault' => 'Aldatzen ditudan orrialdeak eta fitxategiak nire jarraipen-zerrendara gehitu',
Ez du arrazoirik eman.',
'no-null-revision' => 'Ezin izan da "$1" orrialdearen berrikuspen huts bat sortu',
'badtitle' => 'Izenburu ezegokia',
-'badtitletext' => 'Eskatutako orrialde izenburua ez da baliozkoa, hutsik dago, edo gaizki lotutako hizkuntzen arteko lotura da. Baliteke izenburuetan erabili ezin den karaktereren bat izatea.',
+'badtitletext' => 'Eskatutako orri izenburua ez da baliozkoa, hutsik dago, edo gaizki lotutako hizkuntzen arteko lotura da. Baliteke izenburuetan erabili ezin den karaktereren bat edukitzea.',
'perfcached' => 'Hurrengo datuak katxean gordeta daude eta litekeena da guztiz eguneratuta ez egotea. Gehienez {{PLURAL:$1|emaitza 1 dago|$1 emaitza daude}} eskuragarri katxean.',
'perfcachedts' => 'Hurrengo datuak katxean daude, $1 eguneratu zen azkenekoz. {{PLURAL:$4|emaitza 1 dago|$4 emaitza daude}} eskuragarri katxean.',
'querypage-no-updates' => 'Orrialde honen berritzeak ez dira baimentzen. Hemen dagoen data ez da zuzenean berrituko.',
'last' => 'azkena',
'page_first' => 'lehena',
'page_last' => 'azkena',
-'histlegend' => 'Diff hautapena: hautatu alderatu nahi dituzun bi bertsioak eta beheko botoian klik egin.<br />
-Legenda: (orain) = oraingo bertsioarekiko ezberdintasuna,
-(azkena) = aurreko bertsioarekiko ezberdintasuna, t = aldaketa txikia.',
+'histlegend' => "Alderaketa hautatzea: marka itzazu alderatu nahi dituzun bi bertsioak, eta saka ezazu «Enter» edo klika ezazu beheko botoia.<br />
+Azalpenak: '''({{int:cur}})''' = oraingo bertsioarekiko aldeak,
+'''({{int:last}})''' = aurreko bertsioarekiko aldeak,
+'''{{int:minoreditletter}}''' = aldaketa txikia.",
'history-fieldset-title' => 'Historia erakutsi',
'history-show-deleted' => 'Ezabatuak soilik',
'histfirst' => 'zaharrena',
'mergelogpagetext' => 'Jarraian dagoen zerrendak orrialde baten historiatik beste batera egindako azken bateratzeak erakusten ditu.',
# Diffs
-'history-title' => '"$1" orrialdearen historia berrikuspena',
+'history-title' => '«$1» orrialdearen historia berrikuspena',
'difference-title' => '«$1»: berrikuspenen arteko aldeak',
-'difference-title-multipage' => '"$1" eta "$2" orrialdeen arteko ezberditasunak',
-'difference-multipage' => '(Orrialdeen arteko ezberdintasunak)',
+'difference-title-multipage' => '«$1» eta «$2» orrien arteko aldeak',
+'difference-multipage' => '(Orrien arteko aldeak)',
'lineno' => '$1. lerroa:',
'compareselectedversions' => 'Hautatutako bertsioak alderatu',
'showhideselectedversions' => 'Erakutsi/ezkutatu aukeratutako berrikuspenak',
'editundo' => 'desegin',
'diff-empty' => '(Ez dago alderik)',
-'diff-multi' => '({{PLURAL:$1|Ez da tarteko berrikuspen bat|Ez dira tarteko $1 berrikuspen}} erakusten {{PLURAL:$2|lankide batena|$2 lankiderena}}.)',
# Search results
'searchresults' => 'Bilaketaren emaitzak',
'rows' => 'Lerroak:',
'columns' => 'Zutabeak:',
'searchresultshead' => 'Bilaketa',
-'resultsperpage' => 'Emaitza orrialdeko:',
'stub-threshold' => '<a href="#" class="stub">stub link</a> formaturako atalasea (byteak):',
'stub-threshold-disabled' => 'Ezgaitua',
'recentchangesdays' => 'Aldaketa berrietan erakutsi beharreko egun kopurua:',
'right-createtalk' => 'Eztabaida orriak sortu',
'right-createaccount' => 'Erabiltzaile kontu berria sortu',
'right-minoredit' => 'Aldaketa txiki gisa markatu',
-'right-move' => 'Orrialdeak mugitu',
+'right-move' => 'Mugitu orriak',
'right-move-subpages' => 'Mugitu orrialdeak bere azpiorrialdeekin',
'right-move-rootuserpages' => 'Erro-lankidearen orriak mugitu',
-'right-movefile' => 'Fitxategiak mugitu',
+'right-movefile' => 'Mugitu fitxategiak',
'right-suppressredirect' => 'Ez sortu birzuzenketa bat antzinako izenetik orrialdea mugitzerakoan',
'right-upload' => 'Fitxategia igo',
'right-reupload' => 'Jada existitzen den artxibo bat gainidatzi',
'recentchangeslinked' => 'Lotutako orrietako aldaketak',
'recentchangeslinked-feed' => 'Lotutako orrietako aldaketak',
'recentchangeslinked-toolbox' => 'Lotutako orrietako aldaketak',
-'recentchangeslinked-title' => '"$1"(e)kin harremanetan dauden aldaketak',
+'recentchangeslinked-title' => '«$1»(e)kin harremanetan dauden aldaketak',
'recentchangeslinked-summary' => "Zerrenda honetan zehazturiko orrialde bati (edo kategoria berezi bateko azkeneko kideei) lotura duten orrietan eginiko azken aldaketak agertzen dira.
[[Special:Watchlist|Zurre jarraitze zerrenda]]n agertzen diren orrialdeak '''beltze'''z agertzen dira.",
'recentchangeslinked-page' => 'Orriaren izena:',
'allinnamespace' => 'Orrialde guztiak ($1 izen-tartea)',
'allpagessubmit' => 'Joan',
'allpagesprefix' => 'Aurrizki hau duten orrialdeak bistaratu:',
-'allpagesbadtitle' => 'Orrialdearen izena baliogabekoa da edo interwiki edo hizkuntzen arteko aurrizkia dauka. Izenburuetan erabili ezin daitezkeen karaktere bat edo gehiago izan ditzake.',
+'allpagesbadtitle' => 'Orriaren izena baliogabea da, edo interwiki edo hizkuntzen arteko aurrizkia dauka.
+Baliteke izenburuetan erabili ezin daitekeen karaktere bat edo gehiago edukitzea.',
'allpages-bad-ns' => '{{SITENAME}}(e)k ez dauka "$1" izeneko izen-tarterik.',
'allpages-hide-redirects' => 'Birzuzenketak ezkutatu',
'watchmethod-list' => 'jarraipen zerrendako orrialdeak aldaketa berrien bila aztertzen',
'watchlistcontains' => 'Zure jarraipen zerrendak {{PLURAL:$1|orrialde $1 du|$1 orrialde ditu}}.',
'iteminvalidname' => "Arazoa '$1' elementuarekin, baliogabeko izena...",
-'wlnote' => "Jarraian {{PLURAL:$2|ikus daiteke azken orduko|ikus daitezke azken '''$2''' orduetako}} azken {{PLURAL:$1|aldaketa|'''$1''' aldaketak}}, $3, $4 gisa.",
'wlshowlast' => 'Erakutsi azken $1 orduak $2 egunak $3',
'watchlist-options' => 'Jarraitze-zerrendaren aukerak',
'modifiedarticleprotection' => '"[[$1]]"(r)en babes maila aldatu da',
'unprotectedarticle' => '"[[$1]]"-(r)i babesa kendu zaio',
'movedarticleprotection' => 'babes hobespenak "[[$2]]"tik "[[$1]]"(e)ra mugitu dira',
-'protect-title' => '"$1" babesten',
+'protect-title' => '«$1» babesten',
'protect-title-notallowed' => '"$1"en babes maila ikusi',
'prot_1movedto2' => '$1 izenburua $2(r)engatik aldatu da',
'protect-badnamespace-title' => 'Izen-tarte ez babesgarria',
'lockedbyandtime' => '({{GENDER:$1|$1}}k egina $2ko $3(e)tan)',
# Move page
-'move-page' => '$1 mugitu',
+'move-page' => 'Mugitu «$1»',
'move-page-legend' => 'Orrialdea mugitu',
'movepagetext' => "Beheko formularioa erabiliz orrialde baten izena aldatuko da, historia osoa izen berrira mugituz.
Izenburu zaharra izenburu berrira daraman birbideratze bilakatuko da.
* Beheko koadroa hautatzen ez baduzu.
Kasu horietan orrialdea eskuz mugitu edo bestearekin bateratu beharko duzu.",
-'movearticle' => 'Orrialdea mugitu',
+'movearticle' => 'Mugitu orria',
'moveuserpage-warning' => "'''Oharra:''' Lankide orrialde bat mugitzera zoaz. Kontutan izan orrialde bakarrik mugituko duzula eta '''ez''' duzula lankide izena aldatuko.",
'movenologintext' => 'Orrialde bat mugitzeko erregistratutako lankidea izan behar duzu eta [[Special:UserLogin|saioa hasi]].',
'movenotallowed' => 'Ez daukazu orrialdeak mugitzeko baimenik.',
'cant-move-to-user-page' => 'Ez duzu orrialde bat lankide orrialde batera mugitzeko eskumenik (lankide azpiorrialde batera izan ezik).',
'newtitle' => 'Izenburu berria',
'move-watch' => 'Orrialde hau jarraitu',
-'movepagebtn' => 'Orrialde mugitu',
+'movepagebtn' => 'Mugitu orria',
'pagemovedsub' => 'Mugimendua eginda',
'movepage-moved' => '\'\'\'"$1" "$2"(e)ra mugitu da\'\'\'',
'movepage-moved-redirect' => 'Birbideratze orri bat sortu da.',
'movepage-page-exists' => '$1 orrialdea jada badago eta ezin da automatikoki gainetik idatzi.',
'movepage-page-moved' => '«$1» orria «$2» izenera aldatu da.',
'movepage-page-unmoved' => '$1 orrialdea ezin da $2(e)ra mugitu.',
-'movepage-max-pages' => '$1 {{PLURAL:$1|orrialderen|orrialdeen}} maximoa mugitu da eta jada ez dira gehiago mugituko modu automatikoan.',
+'movepage-max-pages' => '$1 {{PLURAL:$1|orrialderen|orrialdeen}} kopuru maximoa jada mugitu da, eta ez dira gehiago mugituko modu automatikoan.',
'movelogpage' => 'Mugimendu erregistroa',
'movelogpagetext' => 'Mugitutako orrialdeen zerrenda bat azaltzen da jarraian.',
'movesubpage' => '{{PLURAL:$1|Azpiorrialde|Azpiorrialdeak}}',
'importnotext' => 'Hutsik dago edo testurik gabe',
'importsuccess' => 'Inportazioa burutu da!',
'importhistoryconflict' => 'Gatazka sortzen ari den berrikuspen historia dago (baliteke orrialdea lehenago inportatu izana)',
-'importnosources' => 'Ez dago wikien arteko inportazio iturririk eta historialak zuzenean igotzea ezgaituta dago.',
+'importnosources' => 'Ez dago wikien arteko inportazio iturririk definituta, eta historialak zuzenean igotzea ezgaituta dago.',
'importnofile' => 'Ez da inportazio fitxategirik igo.',
'importuploaderrorsize' => 'Inportatutako artxiboaren igoera-porrota.
Artxiboa onartutako igoera-tamaina baino handiagoa da.',
'import-error-invalid' => '"$1" orrialdea ez da inportatu izena ez delako baliagarria.',
'import-options-wrong' => 'Aukera {{PLURAL:$2|ez-egokia|ez-egokiak}}:<nowiki>$1</nowiki>',
'import-rootpage-invalid' => 'Emandako jatorri orrialdea izenburu ez-baliagarria da.',
-'import-rootpage-nosubpage' => 'Jatorri orrialdearen "$1" izen-tarteak ez du baimentzen azpi-orrialderik.',
+'import-rootpage-nosubpage' => 'Jatorri orrialdearen «$1» izen-tarteak ez du baimentzen azpi-orrialderik.',
# Import log
'importlogpage' => 'Inportazio erregistroa',
'tooltip-pt-watchlist' => 'Jarraitzen dituzun orrialdeen zerrenda.',
'tooltip-pt-mycontris' => 'Nire ekarpenen zerrenda',
'tooltip-pt-login' => 'Izen ematera gonbidatzen zaitugu.',
-'tooltip-pt-anonlogin' => 'Izen ematera gonbidatzen zaitugu.',
'tooltip-pt-logout' => 'Saioa itxi',
'tooltip-ca-talk' => 'Artikuluari buruzko eztabaida',
'tooltip-ca-edit' => 'Artikulu hau aldatu dezakezu. Mesedez, aurrebista botoia erabil ezazu gorde baino lehen.',
'tooltip-save' => 'Zure aldaketak gorde',
'tooltip-preview' => 'Zure aldaketak aurreikusi, mesedez gorde aurretik erabili!',
'tooltip-diff' => 'Testuari egindako aldaketak erakutsi.',
-'tooltip-compareselectedversions' => 'Orrialde honen bi hautatutako bertsioen arteko ezberdintasunak ikusi.',
+'tooltip-compareselectedversions' => 'Ikusi orri honen bi bertsio hautatuen arteko aldeak.',
'tooltip-watch' => 'Orrialde hau zure segimendu zerrendan gehitu',
'tooltip-watchlistedit-normal-submit' => 'Izenburuak kendu',
'tooltip-watchlistedit-raw-submit' => 'Jarraipen zerrenda gaurkotu',
'minutes' => '{{PLURAL:$1|minutu $1|$1 minutu}}',
'hours' => '{{PLURAL:$1|ordu $1|$1 ordu}}',
'days' => '{{PLURAL:$1|egun $1|$1 egun}}',
-'weeks' => '{{PLURAL: $1|aste $1|$1 aste}}',
-'months' => '{{PLURAL: $1|hilabete $1|$1 hilabete}}',
-'years' => '{{PLURAL: $1|urte $1|$1 urte}}',
+'weeks' => '{{PLURAL:$1|aste $1|$1 aste}}',
+'months' => '{{PLURAL:$1|hilabete $1|$1 hilabete}}',
+'years' => '{{PLURAL:$1|urte $1|$1 urte}}',
'ago' => 'Duela $1',
'just-now' => 'orain',
# Special:SpecialPages
'specialpages' => 'Orri bereziak',
-'specialpages-note-top' => 'Legenda',
+'specialpages-note-top' => 'Azalpenak',
'specialpages-note' => '* Orri berezi arruntak.
* <strong class="mw-specialpagerestricted">Mugatutako orri bereziak.</strong>',
'specialpages-group-maintenance' => 'Mantentze-oharrak',
'limitreport-cputime' => 'CPU denbora erabilpena',
'limitreport-cputime-value' => '{{PLURAL:$1|Segundu $1|$1 segundu}}',
'limitreport-walltime' => 'Denbora errealeko erabilpena',
-'limitreport-walltime-value' => '{{plural:$1|Segundu $1|$1 segundu}}',
+'limitreport-walltime-value' => '{{PLURAL:$1|Segundu $1|$1 segundu}}',
'limitreport-ppvisitednodes' => 'Preprozesadoreak bisitatu du nodo kontua',
'limitreport-ppgeneratednodes' => 'Preprozesadoreak sortu du nodo kontua',
'limitreport-postexpandincludesize' => 'Espantsioaren ondoko inklusio tamaina',
$messages = array(
# User preference toggles
'tog-underline' => 'Surrayal atihus:',
-'tog-justify' => 'Encahal párrafus',
'tog-hideminor' => 'Açonchal eicionis chiqueninas en "úrtimus chambus"',
'tog-hidepatrolled' => 'Açonchal eicionis vegilás en úrtimus chambus',
'tog-newpageshidepatrolled' => 'Açonchal páginas vegilás ena nueva lista',
'tog-numberheadings' => 'Autu-numeral entítulus',
'tog-showtoolbar' => "Muestral la barra d'eición (JavaScript)",
'tog-editondblclick' => 'Eital páhinas haziendu dobri click (JavaScript)',
-'tog-editsection' => 'Premitil eital mensahis gastandu el atihu [eital]',
'tog-editsectiononrightclick' => 'Premitil eital secionis pulsandu el botón de la derecha<br /> enus entítulus de secionis (JavaScript)',
-'tog-showtoc' => 'Muestral cuairu e continius (pa páhinas con mas de 3 entítulus)',
'tog-rememberpassword' => 'Recordal la mi cuenta nesti ordinaol (for a maximum of $1 {{PLURAL:$1|day|days}})',
'tog-watchcreations' => 'Vehilal las páhinas que yo crei',
'tog-watchdefault' => "Vehilal las páhinas qu'eiti",
'lineno' => 'Línia $1:',
'compareselectedversions' => 'Comparal velsionis aseñalás',
'editundo' => 'esjazel',
-'diff-multi' => '(Nu se {{PLURAL:$1|muestra una revisión entelmeya|muestran $1 revisionis entelmeyas}}.)',
# Search results
'searchresults' => 'Landeal resurtaus',
'rows' => 'Filas:',
'columns' => 'Colunas:',
'searchresultshead' => 'Landeal',
-'resultsperpage' => 'Resurtaus pol páhina:',
'stub-threshold' => 'Arrayu superiol pa consieral cumu <a href="#" class="stub">atihu a prencipiu</a> (bytes):',
'recentchangesdays' => 'Númeru e dias a muestral en "úrtimus chambus":',
'recentchangesdays-max' => 'Máissimu $1 {{PLURAL:$1|dia|dias}}',
'watchmethod-list' => 'Revisandu las páhinas vehilás en cata los úrtimus chambus',
'watchlistcontains' => 'Ai $1 {{PLURAL:$1|páhina|páhinas}} ena tu lista e seguimientu.',
'iteminvalidname' => "Pobrema con el artículu '$1', nombri nu premitiu...",
-'wlnote' => "Embahu {{PLURAL:$1|es el úrtimu chambu|son los úrtimus '''$1''' chambus}} enas úrtimas {{PLURAL:$2|oras|'''$2''' oras}}.",
'wlshowlast' => 'Muestral úrtimus $1 oras $2 dias $3',
'watchlist-options' => 'Ocionis de la mi lista e seguimientu',
'tooltip-pt-watchlist' => 'Lista e páhinas enas que vehilas los chambus',
'tooltip-pt-mycontris' => 'Los mis endirguis',
'tooltip-pt-login' => 'Te recomendamus que te rustris, inque nu es mestel.',
-'tooltip-pt-anonlogin' => 'Te recomendamus que te rustris, inque nu es mestel.',
'tooltip-pt-logout' => 'Salil',
'tooltip-ca-talk' => 'Caraba al tentu el artículu',
'tooltip-ca-edit' => 'Pueis eital esta página.
* @author Dalba
* @author E THP
* @author Ebraminio
+ * @author Fatemi127
* @author Goudarz
* @author Huji
* @author Ibrahim
* @author Ladsgroup
* @author Leyth
* @author Mardetanha
+ * @author Mcuteangel
* @author Mehdi
* @author Mehran
* @author MehranVB
$messages = array(
# User preference toggles
-'tog-underline' => 'خط کشیدن زیر پیوندها:',
-'tog-justify' => 'بندها تمامچین نمایش یابند',
+'tog-underline' => 'پیوند خط کشی شده در زیر:',
'tog-hideminor' => 'تغییرات جزئی از فهرست تغییرات اخیر پنهان شوند',
'tog-hidepatrolled' => 'ویرایشهای گشتخورده از فهرست تغییرات اخیر پنهان شوند',
'tog-newpageshidepatrolled' => 'صفحههای گشتخورده از فهرست صفحههای تازه پنهان شوند',
'tog-numberheadings' => 'شمارهگذاری خودکار عنوانها',
'tog-showtoolbar' => 'نوار ابزار جعبهٔ ویرایش نمایش یابد',
'tog-editondblclick' => 'ویرایش صفحهها با دوکلیک (نیازمند جاوااسکریپت)',
-'tog-editsection' => 'ویرایش بخشها از طریق پیوندهای [ویرایش] فعال باشد',
'tog-editsectiononrightclick' => 'امکان ویرایش بخشها با کلیک راست روی عنوانهای بخش (نیازمند جاوااسکریپت)',
-'tog-showtoc' => 'فهرست مندرجات نمایش یابد (برای صفحههای دارای بیش از ۳ عنوان)',
'tog-rememberpassword' => 'گذرواژهٔ من (حداکثر $1 {{PLURAL:$1|روز|روز}}) در این مرورگر به خاطر سپرده شود',
'tog-watchcreations' => 'صفحههایی که میسازم و پروندههایی که بارگذاری میکنم به فهرست پیگیریهایم افزوده شود',
'tog-watchdefault' => 'صفحهها و پروندههایی که ویرایش میکنم به فهرست پیگیریهایم افزوده شود',
'retypenew' => 'گذرواژهٔ جدید را دوباره وارد کنید',
'resetpass_submit' => 'تنظیم گذرواژه و ورود به سامانه',
'changepassword-success' => 'گذرواژهٔ شما با موفقیت تغییر داده شد!',
+'changepassword-throttled' => 'شما به تازگی چندینبار برای ثبت ورود تلاش کردهاید.
+لطفاً پیش از آنکه دوباره تلاش کنید $1 صبر کنید.',
'resetpass_forbidden' => 'نمیتوان گذرواژهها را تغییر داد',
'resetpass-no-info' => 'برای دسترسی مستقیم به این صفحه شما باید به سامانه وارد شده باشید.',
'resetpass-submit-loggedin' => 'تغییر گذرواژه',
'changeemail-password' => ' {{SITENAME}} رمز عبور شما:',
'changeemail-submit' => 'تغییر رایانامه',
'changeemail-cancel' => 'انصراف',
+'changeemail-throttled' => 'شما به مراتب برای ورود تلاش کردهاید.
+لطفاً پیش از آنکه دوباره تلاش کنید $1 صبر کنید.',
# Special:ResetTokens
'resettokens' => 'بازنشانی شناسانندهها',
'content-failed-to-parse' => 'عدم موفقیت در تجزیه محتوای $2 برای مدل $1: $3',
'invalid-content-data' => 'داده محتوای نامعتبر',
'content-not-allowed-here' => 'محتوای «$1» در صفحهٔ [[$2]] مجاز نیست',
-'editwarning-warning' => 'خروج از این صفحه ممکن است باعث از دست رفتن هرچه نوشتهاید شود.
-اگر شما با نام کاربری وارد شدهاید میتوانید این هشدار را در بخش «در حال ویرایش» ترجیحاتتان بیابید.',
+'editwarning-warning' => 'خروج از این صفحه ممکن است باعث شود که شما هر شانسی که به وجود آورده اید را از دست بدهید.
+اگر شما وارد سیستم شدهاید، میتوانید این هشدار را در بخش «در حال ویرایش» ترجیحاتتان غیرفعال کنید.',
+'editpage-notsupportedcontentformat-title' => 'فرمت محتوا پشتیبانی نشده',
+'editpage-notsupportedcontentformat-text' => 'فرمت محتوای $1 توسط مدل محتوای $2 پشتیبانی نشدهاست.',
# Content models
'content-model-wikitext' => 'ویکیمتن',
'showhideselectedversions' => 'نمایش/نهفتن نسخههای انتخاب شده',
'editundo' => 'خنثیسازی',
'diff-empty' => '(بدون تفاوت)',
-'diff-multi' => '({{PLURAL:$1|یک|$1}} ویرایش میانی توسط {{PLURAL:$2|یک|$2}} کاربر نشان داده نشدهاست)',
+'diff-multi-sameuser' => '({{PLURAL:$1|یک نسخهٔ متوسط|$1 نسخههای متوسط}} توسط کاربر مشابهی که نشان داده نشده)',
+'diff-multi-otherusers' => '({{PLURAL:$1|یک نسخهٔ متوسط|$1 نسخههای متوسط}} توسط {{PLURAL:$2|کاربر دیگری|$2 کاربران}} نشان داده نشده)',
'diff-multi-manyusers' => '({{PLURAL:$1|یک|$1}} ویرایش میانی توسط بیش از {{PLURAL:$2|یک|$2}} کاربر نشان داده نشدهاست)',
'difference-missing-revision' => '{{PLURAL:$2|یک ویرایش|$2 ویرایش}} از تفاوت نسخهها ($1) {{PLURAL:$2|یافت|یافت}} نشد.
'shown-title' => 'نمایش $1 {{PLURAL:$1|نتیجه|نتیجه}} در هر صفحه',
'viewprevnext' => 'نمایش ($1 {{int:pipe-separator}} $2) ($3)',
'searchmenu-exists' => "'''صفحهای با عنوان «[[:$1]]» در این ویکی وجود دارد.'''",
-'searchmenu-new' => "'''صفحهٔ «[[:$1]]» را در این ویکی بسازید!'''",
+'searchmenu-new' => '<strong>ایجاد صفحه "[[:$1]]" در این ویکی!</strong> {{PLURAL:$2|0=|همچنین مشاهدهٔ صفحهٔ پیدا شده با جستجوی شما.|همچنین مشاهدهٔ جستجوی نتایج پیدا شده.}}',
'searchprofile-articles' => 'صفحههای محتوایی',
'searchprofile-project' => 'صفحههای راهنما و پروژه',
'searchprofile-images' => 'چندرسانهای',
'search-result-score' => 'ارتباط: $1٪',
'search-redirect' => '(تغییرمسیر $1)',
'search-section' => '(بخش $1)',
+'search-file-match' => '(تشابه محتوی پرونده)',
'search-suggest' => 'آیا منظورتان این بود: $1',
'search-interwiki-caption' => 'پروژههای خواهر',
'search-interwiki-default' => '$1 نتیجه:',
'rows' => 'تعداد سطرها:',
'columns' => 'تعداد ستونها:',
'searchresultshead' => 'جستجو',
-'resultsperpage' => 'تعداد نتایج در هر صفحه:',
'stub-threshold' => 'آستانهٔ ویرایش پیوندهای <a href="#" class="stub">ناقص</a> (بایت):',
'stub-threshold-disabled' => 'غیرفعال',
'recentchangesdays' => 'تعداد روزهای نمایش دادهشده در تغییرات اخیر:',
'right-mergehistory' => 'ادغام تاریخچهٔ صفحهها',
'right-userrights' => 'ویرایش تمام اختیارات کاربرها',
'right-userrights-interwiki' => 'ویرایش اختیارات کاربرهای ویکیهای دیگر',
-'right-siteadmin' => 'قفل کردن و باز کردن پایگاه داده',
+'right-siteadmin' => 'قفلکردن و بازکردن پایگاه دادهها',
'right-override-export-depth' => 'برونبری صفحهها شامل صفحههای پیوند شده تا عمق ۵',
'right-sendemail' => 'ارسال رایانامه به دیگر کاربران',
'right-passwordreset' => 'مشاهدهٔ نامههای تنظیم مجدد گذرواژه',
'action-mergehistory' => 'ادغام تاریخچهٔ این صفحه',
'action-userrights' => 'ویرایش همهٔ اختیارات کاربری',
'action-userrights-interwiki' => 'ویرایش اختیارات کاربری کاربران یک ویکی دیگر',
-'action-siteadmin' => 'قفل کردن و باز کردن پایگاه داده',
+'action-siteadmin' => 'قفلکردن و بازکردن پایگاه دادهها',
'action-sendemail' => 'ارسال ایمیل',
'action-editmywatchlist' => 'فهرست پیگیریهای خود را ویرایش کنید',
'action-viewmywatchlist' => 'فهرست پیگیریهای خود را ببینید',
'file-exists-duplicate' => 'به نظر میرسد این پرونده نسخهای تکراری از {{PLURAL:$1|پروندهٔ|پروندههای}} زیر باشد:',
'file-deleted-duplicate' => 'یک پرونده نظیر این پرونده ([[:$1]]) قبلاً حذف شدهاست.
شما باید تاریخچهٔ حذف آن پرونده را قبل از بارگذاری مجدد آن ببینید.',
+'file-deleted-duplicate-notitle' => 'یک پرونده یکسان بااین پرونده قبلا حذف شده است و عنوان متوقف شدهاست.
+شما باید از کسی که دسترسی مشاهدهٔ فایل متوقف شده را دارد، درخواست کنید تا شرایط را قبل از بارگذاری مجدد بررسی کند.',
'uploadwarning' => 'هشدار بارگذاری',
'uploadwarning-text' => 'لطفاً توضیحات پرونده را در زیر تغییر دهید و دوباره تلاش کنید.',
'savefile' => 'ذخیرهٔ پرونده',
'protectedpages' => 'صفحههای محافظتشده',
'protectedpages-indef' => 'فقط محافظتهای بیپایان',
'protectedpages-cascade' => 'فقط محافظتهای آبشاری',
+'protectedpages-noredirect' => 'پنهانکردن تغییر مسیرها',
'protectedpagesempty' => 'در حال حاضر هیچصفحهای محافظت نشدهاست.',
'protectedtitles' => 'عنوانهای محافظتشده',
'protectedtitlesempty' => 'در حال حاضر هیچ عنوانی با این پارامترها محافظت نشدهاست.',
'watchmethod-list' => 'بررسی صفحههای مورد پیگیری برای ویرایشهای اخیر',
'watchlistcontains' => 'فهرست پیگیریهای شما حاوی $1 {{PLURAL:$1|صفحه|صفحه}} است.',
'iteminvalidname' => 'مشکل با مورد «$1»، نام نامعتبر است...',
-'wlnote' => 'در زیر {{PLURAL:$1|تغییری|$1 تغییری}} که در {{PLURAL:$2|ساعت|$2 ساعت}} گذشته انجام شده موجود است، تاریخ آخرین بازیابی: $3، $4',
+'wlnote2' => 'در زیر تغییرات اخیر وجود دارد {{PLURAL:$1|ساعت|<strong>$1</strong> ساعتها}}, به عنوان $2, $3.',
'wlshowlast' => 'نمایش آخرین $1 ساعت $2 روز $3',
'watchlist-options' => 'گزینههای پیگیری',
'delete-warning-toobig' => 'این صفحه تاریخچهٔ ویرایشی بزرگی دارد، که شامل بیش از $1 {{PLURAL:$1|نسخه|نسخه}} است.
حذف آن ممکن است که عملکرد پایگاه دادهٔ {{SITENAME}} را مختل کند;
با احتیاط ادامه دهید.',
+'deleting-backlinks-warning' => "''' هشدار:''' صفحات دیگر پیوند یا تراگنجایش به صفحه شما برای حذف هستند.",
# Rollback
'rollback' => 'واگردانی ویرایشها',
برای بررسی بستهشدهها [[Special:BlockList|فهرست بستهشدهها]] را ببینید.',
'ipb-blockingself' => 'شما در حال بستن خودتان هستید! آیا مطمئن هستید که میخواهید چنین کاری انجام دهید؟',
'ipb-confirmhideuser' => 'شما در حال بستن یک کاربر هستید که «پنهانسازی کاربر» برایش فعال شدهاست. این کار نام کاربر را از همهٔ فهرستها و سیاههها مخفی میکند. آیا مطمئن هستید که میخواهید آن را انجام دهید؟',
+'ipb-confirmaction' => 'اگر واقعاً مطمئنید که میخواهید آن را انجام دهید، لطفاً زمینهٔ "{{int:ipb-confirm}}" را در زیر بررسی کنید.',
'ipb-edit-dropdown' => 'ویرایش دلایل قطعدسترسی',
'ipb-unblock-addr' => 'باز کردن $1',
'ipb-unblock' => 'باز کردن نام کاربری یا نشانی آیپی',
'range_block_disabled' => 'بستن یک بازه توسط مدیران غیر فعال است.',
'ipb_expiry_invalid' => 'زمان سرآمدن نامعتبر.',
'ipb_expiry_temp' => 'قطع دسترسی کاربرهای پهنان باید همیشگی باشد.',
-'ipb_hide_invalid' => 'Ù\86اتÙ\88اÙ\86 از Ù\81رÙ\88Ù\86شاÙ\86دÙ\86 اÛ\8cÙ\86 ØسابØ\9b شاÛ\8cد Ù\88Û\8cراÛ\8cØ´â\80\8cÙ\87اÛ\8c زÛ\8cادÛ\8c دارد.',
+'ipb_hide_invalid' => 'Ù\82ادر بÙ\87 سرکÙ\88ب اÛ\8cÙ\86 Øساب Ù\86Û\8cست; اÛ\8cÙ\86 بÛ\8cشتر از {{PLURAL:$1|Û\8cÚ© Ù\88Û\8cراÛ\8cØ´|$1 Ù\88Û\8cراÛ\8cØ´â\80\8cÙ\87ا}} دارد.',
'ipb_already_blocked' => '«$1» همین الان هم بستهاست',
'ipb-needreblock' => 'دسترسی $1 از قبل بسته است. آیا میخواهید تنظیمات آن را تغییر دهید؟',
'ipb-otherblocks-header' => 'سایر {{PLURAL:$1|قطع دسترسیها|قطع دسترسیها}}',
'exportcuronly' => 'فقط نسخهٔ فعلی شامل شود، نه کل تاریخچه',
'exportnohistory' => "----
'''توجه:''' امکان برونبری تاریخچهٔ کامل صفحهها از طریق این صفحه به دلایل اجرایی از کار انداخته شدهاست.",
-'exportlistauthors' => 'محتوی لیست کامل مشارکتکنندگان هر صفحه',
+'exportlistauthors' => 'شامل فهرست کامل مشارکتکنندگان هر صفحه',
'export-submit' => 'برونبری',
'export-addcattext' => 'افزودن صفحهها از رده:',
'export-addcat' => 'افزودن',
'allmessages-prefix' => 'پالودن بر اساس پسوند:',
'allmessages-language' => 'زبان:',
'allmessages-filter-submit' => 'برو',
+'allmessages-filter-translate' => 'ترجمه',
# Thumbnails
'thumbnail-more' => 'بزرگکردن',
پوشهٔ موقت پیدا نشد.',
'import-parse-failure' => 'خطا در تجزیهٔ اکسامال بارگذاریشده',
'import-noarticle' => 'صفحهای برای بارگذاری وجود ندارد!',
-'import-nonewrevisions' => 'تمام نسخهها قبلاً بارگذاری شدهاند.',
+'import-nonewrevisions' => 'هیچ بازبینی وارد نشده (همه یا در حال حاضر وجود دارند، یا به دلیل خطاها نادیده گرفته شدهاند).',
'xml-error-string' => '$1 در سطر $2، ستون $3 (بایت $4): $5',
'import-upload' => 'بارگذاری داده اکسامال',
'import-token-mismatch' => 'از دست رفتن اطلاعات نشست کاربری. لطفاً دوباره امتحان کنید.',
'import-error-special' => 'صفحهٔ «$1» درونریزی نشد، چرا که متعلق به فضای نام نامجاز است.',
'import-error-invalid' => 'صفحه "$1" به دلیل نامعتبر بودن نامش وارد نمیشود.',
'import-error-unserialize' => 'امکان خارج کردن نسخهٔ $2 از صفحهٔ «$1» از حالت سریالشده وجود نداشت. گزارش شد که نسخه از مدل محتوای $3 استفاده میکند که به صورت $4 سریال شدهاست.',
+'import-error-bad-location' => 'بازبینی $2 با استفاده از مدل محتوای $3 نمیتواند در "$1" در این ویکی ذخیره شده باشد، از آنجایی که مدل در آن صفحه پشتیبانی نشدهاست.',
'import-options-wrong' => '{{PLURAL:$2|جزئیات|جزئیات}} اشتباه: <nowiki>$1</nowiki>',
'import-rootpage-invalid' => 'با توجه به ریشه صفحه عنوان نامعتبر است.',
'import-rootpage-nosubpage' => 'فضای نام "$1" صفحهٔ مبنا اجازهٔ زیرصفحه نمیدهد.',
'tooltip-pt-watchlist' => 'فهرست صفحههایی که شما تغییرات آنها را پیگیری میکنید',
'tooltip-pt-mycontris' => 'فهرست مشارکتهای شما',
'tooltip-pt-login' => 'توصیه میشود که به سامانه وارد شوید، گرچه اجباری نیست',
-'tooltip-pt-anonlogin' => 'توصیه میشود که به سامانه وارد شوید، لیکن اجباری نیست',
'tooltip-pt-logout' => 'خروج از سامانه',
'tooltip-ca-talk' => 'گفتگو پیرامون محتوای صفحه',
'tooltip-ca-edit' => 'شما میتوانید این صفحه را ویرایش کنید. لطفاً پیش از ذخیره از دکمهٔ پیشنمایش استفاده کنید.',
'hours-abbrev' => '$1 ساعت',
'days-abbrev' => '$1 روز',
'seconds' => '{{PLURAL:$1|$1ثانیه| $1 ثانیه}}',
-'minutes' => '{{PLURAL: $1|دقیقه|دقیقه}}',
-'hours' => '{{PLURAL: $1|ساعت|ساعت}}',
-'days' => '{{PLURAL: $1|روز|روز}}',
+'minutes' => '{{PLURAL:$1|دقیقه|دقیقه}}',
+'hours' => '{{PLURAL:$1|ساعت|ساعت}}',
+'days' => '{{PLURAL:$1|روز|روز}}',
'weeks' => '{{PLURAL:$1|$1 هفته|$1 هفته}}',
'months' => '{{PLURAL:$1|$1 ماه|}}',
'years' => '{{PLURAL:$1|$1 سال|}}',
'version-parser-function-hooks' => 'قلابهای عملگر تجزیهگر',
'version-hook-name' => 'نام قلاب',
'version-hook-subscribedby' => 'وارد شده توسط',
-'version-version' => '(نسخه $1)',
+'version-version' => '(نسخه $1)',
'version-svn-revision' => '(&رلم;r$2)',
-'version-license' => 'اجازهنامه',
+'version-license' => 'اجازهنامهٔ مدیاویکی',
+'version-ext-license' => 'مجوزها',
+'version-ext-colheader-name' => 'گسترهها',
+'version-ext-colheader-version' => 'نسخه',
+'version-ext-colheader-license' => 'مجوز',
+'version-ext-colheader-description' => 'توصیفات',
+'version-ext-colheader-credits' => 'مؤلفان',
+'version-license-title' => 'مجوز برای $1',
+'version-license-not-found' => 'هیچ جزئیاتی از اطلاعات مجوز برای این گستره پیدا نشد.',
+'version-credits-title' => 'اعتبارها برای $1',
+'version-credits-not-found' => 'هیچ جزئیاتی از اطلاعات اعتبارها برای این گستره پیدا نشد.',
'version-poweredby-credits' => "این ویکی توسط '''[https://www.mediawiki.org/ مدیاویکی]''' پشتیبانی میشود، کلیهٔ حقوق محفوظ است © 2001-$1 $2.",
'version-poweredby-others' => 'دیگران',
'version-poweredby-translators' => 'مترجمان translatewiki.net',
'api-error-overwrite' => 'جای نوشتن یک پرونده موجود مجاز نیست.',
'api-error-stashfailed' => 'خطای داخلی: کارساز نمیتواند پرونده موقت را ذخیره کند.',
'api-error-publishfailed' => 'خطای داخلی: کارساز نمیتواند پرونده موقت را ذخیره کند.',
+'api-error-stasherror' => 'هنگام انتقال پوشه برای ذخیره خطایی بود.',
'api-error-timeout' => 'کارساز در زمان انتظار هیچ پاسخی نداد.',
'api-error-unclassified' => 'یک خطای ناشناخته رخ داد.',
'api-error-unknown-code' => 'خطای ناشناخته: " $1 "',
'expand_templates_generate_rawhtml' => 'نمایش اچتیامال خام',
'expand_templates_preview' => 'پیشنمایش',
+# Unknown messages
+'createaccount-hook-aborted' => '$1',
+'uploadinvalidxml' => 'XML در پروندهٔ بارگذاریشده نمیتواند تجزیه شود.',
);
$fallback = 'fr';
+// Remove French aliases
+$namespaceGenderAliases = array();
+
$messages = array(
# User preference toggles
'tog-underline' => 'Diidtol jokke',
* @author Cimon Avaro
* @author Crt
* @author ElmA
+ * @author Elseweyr
* @author Geitost
* @author Harriv
* @author Hyperborean
* @author Pxos
* @author Samoasambia
* @author Silvonen
+ * @author Smite
* @author Snidata
* @author Str4nd
* @author Stryn
$messages = array(
# User preference toggles
'tog-underline' => 'Linkkien alleviivaus:',
-'tog-justify' => 'Tasaa kappaleet',
'tog-hideminor' => 'Piilota pienet muutokset tuoreet muutokset -listasta',
'tog-hidepatrolled' => 'Piilota tarkastetut muutokset tuoreet muutokset -listasta',
'tog-newpageshidepatrolled' => 'Piilota tarkastetut sivut uusien sivujen listalta',
'tog-numberheadings' => 'Numeroi otsikot automaattisesti',
'tog-showtoolbar' => 'Näytä työkalupalkki',
'tog-editondblclick' => 'Muokkaa sivuja kaksoisnapsautuksella',
-'tog-editsection' => 'Näytä muokkauslinkit jokaisen osion yläpuolella',
'tog-editsectiononrightclick' => 'Muokkaa osioita napsauttamalla osion otsikkoa hiiren oikealla painikkeella',
-'tog-showtoc' => 'Näytä sisällysluettelo (sivuilla, joilla on yli kolme otsikkoa)',
'tog-rememberpassword' => 'Muista kirjautuminen tässä selaimessa (enintään $1 {{PLURAL:$1|päivä|päivää}})',
'tog-watchcreations' => 'Lisää luomani sivut ja tallentamani tiedostot tarkkailulistalleni',
'tog-watchdefault' => 'Lisää muokkaamani sivut ja tiedostot tarkkailulistalleni',
'retypenew' => 'Uusi salasana uudelleen:',
'resetpass_submit' => 'Aseta salasana ja kirjaudu sisään',
'changepassword-success' => 'Salasanan vaihto onnistui.',
+'changepassword-throttled' => 'Olet tehnyt liian monta äskettäistä kirjautumisyritystä.
+Odota $1 ennen kuin yrität uudelleen.',
'resetpass_forbidden' => 'Salasanoja ei voi vaihtaa.',
'resetpass-no-info' => 'Et voi nähdä tätä sivua kirjautumatta sisään.',
'resetpass-submit-loggedin' => 'Muuta salasana',
'changeemail-password' => 'Salasanasi sivustolla {{SITENAME}}',
'changeemail-submit' => 'Muuta sähköpostiosoite',
'changeemail-cancel' => 'Peruuta',
+'changeemail-throttled' => 'Olet tehnyt liian monta kirjautumisyritystä.
+Odota $1 ennen kuin yrität uudelleen.',
# Special:ResetTokens
'resettokens' => 'Uudista avaimet',
'content-not-allowed-here' => 'Sivun [[$2]] sisältö ei voi olla tyyppiä $1.',
'editwarning-warning' => 'Tältä sivulta poistuminen saattaa aiheuttaa kaikkien tekemiesi muutosten katoamisen.
Jos olet kirjautuneena sisään, voit poistaa tämän varoituksen käytöstä asetuksissa osiossa "Muokkaus".',
+'editpage-notsupportedcontentformat-title' => 'Sisällön muotoa ei tueta',
# Content models
'content-model-wikitext' => 'wikiteksti',
'cantcreateaccount-text' => "Tunnusten luonti tästä IP-osoitteesta ('''$1''') on estetty. Estäjänä on [[User:$3|$3]].
Käyttäjän $3 antama syy on ''$2''",
+'cantcreateaccount-range-text' => "Tunnusten luominen IP-osoitteista osoitealueella '''\$1''', johon kuuluu myös sinun käyttämäsi IP-osoite ('''\$4'''), on estetty. Eston on asettanut [[User:\$3|\$3]].
+
+Syy estolle on \"\$2\".",
# History pages
'viewpagelogs' => 'Näytä tämän sivun lokit',
'showhideselectedversions' => 'Näytä tai piilota valitut versiot',
'editundo' => 'kumoa',
'diff-empty' => '(ei eroavaisuuksia)',
-'diff-multi' => '(Näytettyjen versioiden välissä on {{PLURAL:$1|yksi muokkaus|$1 versiota, jotka ovat {{PLURAL:$2|yhden käyttäjän tekemiä|$2 eri käyttäjän tekemiä}}}}.)',
'diff-multi-manyusers' => '(Versioiden välissä on {{PLURAL:$1|yksi muu muokkaus|$1 muuta muokkausta, jotka on tehnyt {{PLURAL:$2|yksi käyttäjä|yli $2 eri käyttäjää}}}}.)',
'difference-missing-revision' => '{{PLURAL:$2|Yhtä versiota|$2 versiota}} tästä vertailusta ($1) {{PLURAL:$2|ei}} löytynyt.
'search-result-score' => 'Asiaankuuluvuus: $1%',
'search-redirect' => '(ohjaus $1)',
'search-section' => '(osio $1)',
+'search-file-match' => '(vastaa tiedoston sisältöä)',
'search-suggest' => 'Tarkoititko: $1',
'search-interwiki-caption' => 'Sisarprojektit',
'search-interwiki-default' => 'Tulokset osoitteesta $1:',
'rows' => 'Rivejä',
'columns' => 'Sarakkeita',
'searchresultshead' => 'Haku',
-'resultsperpage' => 'Tuloksia sivua kohti',
'stub-threshold' => '<a href="#" class="stub">Tynkäsivun</a> osoituskynnys',
'stub-threshold-disabled' => 'Ei käytössä',
'recentchangesdays' => 'Näytettävien päivien määrä tuoreissa muutoksissa',
'prefs-tokenwatchlist' => 'Avain',
'prefs-diffs' => 'Eroavaisuudet',
'prefs-help-prefershttps' => 'Tämä asetus tulee voimaan seuraavan sisäänkirjautumisesi yhteydessä.',
+'prefs-tabs-navigation-hint' => 'Vihje: Voit käyttää vasenta ja oikeata nuolinäppäintä liikkumiseen välilehtien välillä.',
# User preference: email validation using jQuery
'email-address-validity-valid' => 'Sähköpostiosoite vaikuttaa kelvolliselta',
'recentchanges-label-plusminus' => 'Sivun koon muutos tavuina',
'recentchanges-legend-heading' => "'''Selitys:'''",
'recentchanges-legend-newpage' => '(katso myös [[Special:NewPages|lista uusista sivuista]])',
+'recentchanges-legend-plusminus' => "(''±123'')",
'rcnotefrom' => 'Alla on muutokset <b>$2</b> lähtien. Enintään <b>$1</b> merkintää näytetään.',
'rclistfrom' => 'Näytä uudet muutokset $1 alkaen',
'rcshowhideminor' => '$1 pienet muutokset',
'ninterwikis' => '$1 {{PLURAL:$1|kielilinkki|kielilinkkiä}}',
'nlinks' => '$1 {{PLURAL:$1|linkki|linkkiä}}',
'nmembers' => '$1 {{PLURAL:$1|jäsen|jäsentä}}',
+'nmemberschanged' => '$1 → $2 {{PLURAL:$2|jäsen|jäsentä}}',
'nrevisions' => '$1 {{PLURAL:$1|muutos|muutosta}}',
'nviews' => '$1 {{PLURAL:$1|lataus|latausta}}',
'nimagelinks' => 'Käytössä $1 {{PLURAL:$1|sivulla}}',
'protectedpages' => 'Suojatut sivut',
'protectedpages-indef' => 'Vain ikuisesti suojatut',
'protectedpages-cascade' => 'Vain tarttuvasti suojatut',
+'protectedpages-noredirect' => 'Piilota ohjaukset',
'protectedpagesempty' => 'Mitään sivuja ei ole tällä hetkellä suojattu näillä asetuksilla.',
'protectedtitles' => 'Suojatut sivunimet',
'protectedtitlesempty' => 'Ei suojattuja sivunimiä näillä hakuehdoilla.',
'watchmethod-list' => 'tarkistetaan tarkkailtujen sivujen tuoreimmat muutokset',
'watchlistcontains' => 'Tarkkailulistallasi on {{PLURAL:$1|yksi sivu|$1 sivua}}.',
'iteminvalidname' => 'Sivun $1 kanssa oli ongelmia. Sivun nimessä on vikaa.',
-'wlnote' => "Alla on {{PLURAL:$1|yksi muutos|'''$1''' muutosta}} viimeisen {{PLURAL:$2|tunnin|'''$2''' tunnin}} ajalta $3 kello $4 asti.",
'wlshowlast' => 'Näytä viimeiset $1 tuntia tai $2 päivää, $3',
'watchlist-options' => 'Tarkkailulistan asetukset',
sähköposti: $PAGEEDITOR_EMAIL
wiki: $PAGEEDITOR_WIKI
-Uusia ilmoituksia tästä sivusta ei tule kunnes vierailet sivulla. Voit myös nollata ilmoitukset kaikille tarkkailemillesi sivuille tarkkailulistallasi.
+Uusia ilmoituksia tästä sivusta ei tule kunnes vierailet sivulla sisään kirjautuneena. Voit myös nollata ilmoitukset kaikille tarkkailemillesi sivuille tarkkailulistallasi.
{{GRAMMAR:genitive|{{SITENAME}}}} ilmoitusjärjestelmä
'delete-edit-reasonlist' => 'Muokkaa poistosyitä',
'delete-toobig' => 'Tällä sivulla on pitkä muutoshistoria – yli $1 {{PLURAL:$1|versio|versiota}}. Näin suurien muutoshistorioiden poistamista on rajoitettu suorituskykysyistä.',
'delete-warning-toobig' => 'Tällä sivulla on pitkä muutoshistoria – yli $1 {{PLURAL:$1|versio|versiota}}. Näin suurien muutoshistorioiden poistaminen voi haitata sivuston suorituskykyä.',
+'deleting-backlinks-warning' => "'''Varoitus:''' Sivulle, jota olet poistamassa, johtaa linkkejä muilta sivuilta, tai sivu on sisällytetty muuhun sivuun.",
# Rollback
'rollback' => 'palauta aiempaan versioon',
Voimassa olevat estot näkyvät [[Special:BlockList|estolistasta]].',
'ipb-blockingself' => 'Olet estämässä itseäsi. Oletko varma, että haluat tehdä niin?',
'ipb-confirmhideuser' => 'Olet estämässä käyttäjää ”piilota käyttäjä” -toiminnon kanssa. Tämä piilottaa käyttäjän nimen kaikissa luetteloissa ja lokitapahtumissa. Oletko varma, että haluat tehdä näin?',
+'ipb-confirmaction' => 'Jos olet varma että haluat todella tehdä tämän, tarkista kentän "{{int:ipb-confirm}}" sisältö alhaalta.',
'ipb-edit-dropdown' => 'Muokkaa estosyitä',
'ipb-unblock-addr' => 'Poista käyttäjän $1 esto',
'ipb-unblock' => 'Poista käyttäjän tai IP-osoitteen muokkausesto',
'range_block_disabled' => 'Ylläpitäjien mahdollisuus asettaa avaruusestoja on poistettu käytöstä.',
'ipb_expiry_invalid' => 'Virheellinen päättymisaika.',
'ipb_expiry_temp' => 'Piilotettujen käyttäjätunnusten estojen tulee olla pysyviä.',
-'ipb_hide_invalid' => 'Tämän tunnuksen piilottaminen ei onnistu. Sillä saattaa olla liikaa muokkauksia.',
+'ipb_hide_invalid' => 'Tämän tunnuksen piilottaminen ei onnistu; sillä on enemmän kuin {{PLURAL:$1|yksi muokkaus|$1 muokkausta}}.',
'ipb_already_blocked' => '”$1” on jo estetty.',
'ipb-needreblock' => '$1 on jo estetty. Haluatko muuttaa eston asetuksia?',
'ipb-otherblocks-header' => '{{PLURAL:$1|Muu esto|Muut estot}}',
'allmessages-prefix' => 'Suodata etuliitteellä',
'allmessages-language' => 'Kieli:',
'allmessages-filter-submit' => 'Siirry',
+'allmessages-filter-translate' => 'Käännä',
# Thumbnails
'thumbnail-more' => 'Suurenna',
'tooltip-pt-watchlist' => 'Lista sivuista, joiden muokkauksia tarkkailet',
'tooltip-pt-mycontris' => 'Lista omista muokkauksista',
'tooltip-pt-login' => 'Kirjaudu sisään tai luo tunnus',
-'tooltip-pt-anonlogin' => 'Kirjaudu sisään tai luo tunnus',
'tooltip-pt-logout' => 'Kirjaudu ulos',
'tooltip-ca-talk' => 'Keskustele sisällöstä',
'tooltip-ca-edit' => 'Muokkaa tätä sivua',
# Separators for various lists, etc.
'percent' => '$1 %',
+'quotation-marks' => '"$1"',
# Multipage image navigation
'imgmultipageprev' => '← edellinen sivu',
# Language selector for translatable SVGs
'img-lang-default' => '(oletuskieli)',
+'img-lang-info' => 'Näytä tämä kuva kielellä $1. $2',
'img-lang-go' => 'Suorita',
# Table pager
'version-parser-function-hooks' => 'Jäsentimen laajennusfunktiot',
'version-hook-name' => 'Kytköspisteen nimi',
'version-hook-subscribedby' => 'Kytkökset',
-'version-version' => '(Versio $1)',
-'version-license' => 'Lisenssi',
+'version-version' => '($1)',
+'version-license' => 'MediaWikin lisenssi',
+'version-ext-license' => 'Lisenssi',
+'version-ext-colheader-name' => 'Laajennusosa',
+'version-ext-colheader-version' => 'Versio',
+'version-ext-colheader-license' => 'Lisenssi',
+'version-ext-colheader-description' => 'Kuvaus',
+'version-ext-colheader-credits' => 'Tekijät',
+'version-license-title' => 'Lisenssi ohjelmalle $1',
+'version-license-not-found' => 'Tälle lisäosalle ei ole saatavissa tarkkoja lisenssitietoja.',
+'version-credits-title' => 'Laajennuksen $1 tekijätiedot',
+'version-credits-not-found' => 'Tälle laajenukselle ei löytynyt yksityiskohtaisia tekijätietoja.',
'version-poweredby-credits' => "Tämä wiki käyttää '''[https://www.mediawiki.org/ MediaWikiä]'''. Copyright © 2001–$1 $2.",
'version-poweredby-others' => 'muut',
'version-poweredby-translators' => 'translatewiki.net-kääntäjät',
'version-entrypoints-header-url' => 'URL',
# Special:Redirect
-'redirect' => 'Ohjaus tiedostonimen, käyttäjätunnisteen tai versiotunnisteen mukaan',
+'redirect' => 'Ohjaus tiedoston, käyttäjän, sivun tai version tunnisteen mukaan',
'redirect-legend' => 'Ohjaus tiedostoon tai sivulle',
-'redirect-summary' => 'Tämä toimintosivu ohjaa tiedostoon (tiedostonimen mukaan), sivulle (versiotunnisteen mukaan) tai käyttäjäsivulle (käyttäjätunnisteen mukaan). Käyttö: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]] tai [[{{#Special:Redirect}}/user/101]].',
+'redirect-summary' => 'Tämä toimintosivu ohjaa tiedostoon (tiedostonimen mukaan), sivulle (version numeron tai sivun tunnisteen mukaan) tai käyttäjäsivulle (käyttäjän numeron mukaan). Käyttö: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]] tai [[{{#Special:Redirect}}/user/101]].',
'redirect-submit' => 'Siirry',
'redirect-lookup' => 'Hae:',
'redirect-value' => 'Arvo:',
-'redirect-user' => 'Käyttäjätunniste',
+'redirect-user' => 'Käyttäjän tunnusnumero',
+'redirect-page' => 'Sivun tunnistenumero',
'redirect-revision' => 'Sivun versio',
'redirect-file' => 'Tiedostonimi',
'redirect-not-exists' => 'Arvoa ei löytynyt',
'api-error-overwrite' => 'Olemassa olevan tiedoston korvaaminen toisella ei ole sallittua.',
'api-error-stashfailed' => 'Sisäinen virhe: Väliaikaisen tiedoston tallentaminen epäonnistui.',
'api-error-publishfailed' => 'Sisäinen virhe: Väliaikaisen tiedoston julkaiseminen epäonnistui.',
+'api-error-stasherror' => 'Tiedostoa ladattaessa tapahtui virhe.',
'api-error-timeout' => 'Palvelin ei vastannut odotetun ajan kuluessa.',
'api-error-unclassified' => 'Tapahtui tuntematon virhe.',
'api-error-unknown-code' => 'Tuntematon virhe: $1.',
'limitreport-cputime-value' => '$1 {{PLURAL:$1|sekunti|sekuntia}}',
'limitreport-walltime' => 'Todellinen ajankäyttö',
'limitreport-walltime-value' => '$1 {{PLURAL:$1|sekunti|sekuntia}}',
+'limitreport-ppvisitednodes' => 'Esikääntäjän läpikäymien solmujen määrä',
'limitreport-postexpandincludesize-value' => '$1/$2 {{PLURAL:$2|tavu|tavua}}',
'limitreport-templateargumentsize' => 'Mallineen argumenttien koko',
'limitreport-templateargumentsize-value' => '$1/$2 {{PLURAL:$2|tavu|tavua}}',
'limitreport-expansiondepth' => 'Highest expansion depth',
+'limitreport-expensivefunctioncount' => 'Vaativien parserfunktioiden määrä',
# Special:ExpandTemplates
'expandtemplates' => 'Mallineiden laajennus',
'expand_templates_input' => 'Teksti',
'expand_templates_output' => 'Tulos',
'expand_templates_xml_output' => 'XML-tuloste',
+'expand_templates_html_output' => 'Raaka HTML-koodi',
'expand_templates_ok' => 'Laajenna',
'expand_templates_remove_comments' => 'Poista kommentit',
'expand_templates_remove_nowiki' => 'Poista <nowiki>-tagit tulosteesta',
'expand_templates_generate_xml' => 'Näytä XML-jäsennyspuu',
+'expand_templates_generate_rawhtml' => 'Näytä raaka HTML',
'expand_templates_preview' => 'Esikatselu',
);
$messages = array(
# User preference toggles
'tog-underline' => 'Undirstrika leinki:',
-'tog-justify' => 'Lat tekstin fáa javnan kant til høgru',
'tog-hideminor' => 'Krógva minni broytingar í seinastu broytingum',
'tog-hidepatrolled' => 'Krógva eftirkannaðar rættingar í seinastu broytingum',
'tog-newpageshidepatrolled' => 'Goym eftirkannaðar síður frá listanum yvir nýggjar síður',
'tog-numberheadings' => 'Sjálvvirkandi talmerking av yvirskriftum',
'tog-showtoolbar' => 'Vís rættingar-tóllinju',
'tog-editondblclick' => 'Rætta síður við at tvíklikkja',
-'tog-editsection' => 'Rætta greinpart við hjálp av [rætta] leinkjum',
'tog-editsectiononrightclick' => 'Rætta reglubrot við at høgraklikkja á reglubrotsyvirskrift',
-'tog-showtoc' => 'Vís innihaldsyvirlit (fyri síður við meira enn trimun yvirskriftum)',
'tog-rememberpassword' => 'Minst til mítt loyniorð á hesum kaga (í mesta lagi í $1 {{PLURAL:$1|dag|dagar}})',
'tog-watchcreations' => 'Legg síður, sum eg stovni og fílur sum eg leggi út, afturat mínum eftirlitslista',
'tog-watchdefault' => 'Legg síður sum eg rætti afturat mínum eftirlitslista',
'showhideselectedversions' => 'Vís/fjal valdu versjónir',
'editundo' => 'afturstilla',
'diff-empty' => '(Ongin munur)',
-'diff-multi' => '({{PLURAL:$1|Ein versjón herímillum|$1 versjónir sum liggja ímillum}} av {{PLURAL:$2|einum brúkara|$2 brúkarar}} ikki víst)',
'diff-multi-manyusers' => '({{PLURAL:$1|Ein versjón sum liggur ímillum|$1 versjónir sum liggja ímillum}} skrivaðar av meira enn $2 {{PLURAL:$2|brúkara|brúkarum}} ikki víst)',
# Search results
'rows' => 'Røð:',
'columns' => 'Teigar:',
'searchresultshead' => 'Leita',
-'resultsperpage' => 'Úrslit fyri hvørja síðu:',
'stub-threshold' => 'Avmarkað til <a href="#" class="stub">stubba leinki</a> formatering (bytes):',
'stub-threshold-disabled' => 'Er gjørt óvirki',
'recentchangesdays' => 'Dagar av vísa í seinastu broytingum:',
'watchmethod-list' => 'kannar síður undir eftirliti fyri feskar broytingar',
'watchlistcontains' => 'Títt eftirlit inniheldur {{PLURAL:$1|eina síðu|$1 síður}}.',
'iteminvalidname' => "Trupulleiki við luti '$1', ógyldugt navn...",
-'wlnote' => "Niðanfyri {{PLURAL:$1|stendur seinasta broytingin|standa seinastu '''$1''' broytingarnar}} seinasta/u {{PLURAL:$2| tíman|'''$2''' tímarnar}} hin $3 kl. $4",
'wlshowlast' => 'Vís seinastu $1 tímar $2 dagar $3',
'watchlist-options' => 'Møguleikar í ansingarlistanum',
'tooltip-pt-watchlist' => 'Ein listi við síðum sum tú eftiransar fyri broytingum',
'tooltip-pt-mycontris' => 'Yvirlit yvir títt íkast',
'tooltip-pt-login' => 'Vit mæla til at tú ritar inn, tað er tó ikki eitt krav.',
-'tooltip-pt-anonlogin' => 'Vit mæla til at tú ritar inn, tað er tó ikki eitt krav',
'tooltip-pt-logout' => 'Rita út',
'tooltip-ca-talk' => 'Kjak um innihaldssíðuna',
'tooltip-ca-edit' => 'Tú kanst broyta hesa síðuna. Vinarliga nýt forskoðanarknøttin áðrenn tú goymir.',
* @author Dereckson
* @author Diti
* @author Dodoïste
+ * @author Dr Brains
* @author Drongou
* @author Elfix
* @author Enzoreg
* @author Jean-Frédéric
* @author JeanVoisin
* @author Jens Liebenau
+ * @author Jul law
* @author Klutzy
* @author Korg
* @author Korrigan
* @author Louperivois
* @author Ltrlg
* @author Lucyin
+ * @author Manohisoa
* @author Mattho69
* @author McDutchie
* @author Meithal
'Discussion_Catégorie' => NS_CATEGORY_TALK
);
+$namespaceGenderAliases = array(
+ NS_USER => array( 'male' => 'Utilisateur', 'female' => 'Utilisatrice' ),
+ NS_USER_TALK => array( 'male' => 'Discussion_utilisateur', 'female' => 'Discussion_utilisatrice' ),
+);
+
$specialPageAliases = array(
'Activeusers' => array( 'Utilisateurs_actifs', 'UtilisateursActifs' ),
'Allmessages' => array( 'Messages_système', 'Messages_systeme', 'Messagessystème', 'Messagessysteme' ),
$messages = array(
# User preference toggles
'tog-underline' => 'Souligner les liens :',
-'tog-justify' => 'Justifier les paragraphes',
'tog-hideminor' => 'Masquer les modifications mineures dans les changements récents',
'tog-hidepatrolled' => 'Masquer les modifications surveillées dans les modifications récentes',
'tog-newpageshidepatrolled' => 'Masquer les pages surveillées dans la liste des nouvelles pages',
'tog-numberheadings' => 'Numéroter automatiquement les titres de section',
'tog-showtoolbar' => "Montrer la barre d'outils de modification (nécessite JavaScript)",
'tog-editondblclick' => 'Modifier des pages sur double-clic (nécessite JavaScript)',
-'tog-editsection' => 'Activer les modifications de sections grâce aux liens « [modifier] »',
'tog-editsectiononrightclick' => 'Activer la modification de sections par clic droit sur les titres (nécessite JavaScript)',
-'tog-showtoc' => 'Afficher la table des matières (pour les pages ayant plus de 3 sections)',
'tog-rememberpassword' => 'Se souvenir de mon identification avec ce navigateur (au maximum $1 {{PLURAL:$1|jour|jours}})',
'tog-watchcreations' => "Ajouter les pages que je crée et les fichiers que j'importe à ma liste de suivi",
'tog-watchdefault' => 'Ajouter les pages et les fichiers que je modifie à ma liste de suivi',
'ok' => 'Valider',
'retrievedfrom' => 'Récupérée de « $1 »',
-'youhavenewmessages' => 'Vous avez $1 ($2).',
-'youhavenewmessagesfromusers' => "Vous avez $1 {{PLURAL:$3|d'un autre utilisateur|de $3 autres utilisateurs}} ($2).",
+'youhavenewmessages' => '{{PLURAL:$3|Vous avez}} $1 ($2).',
+'youhavenewmessagesfromusers' => "{{PLURAL:$4|Vous avez}} $1 {{PLURAL:$3|d'un autre utilisateur|de $3 autres utilisateurs}} ($2).",
'youhavenewmessagesmanyusers' => 'Vous avez $1 de nombreux utilisateurs ($2).',
'newmessageslinkplural' => '{{PLURAL:$1|un nouveau message|de nouveaux messages}}',
'newmessagesdifflinkplural' => '{{PLURAL:$1|dernière modification|dernières modifications}}',
'retypenew' => 'Confirmer le nouveau mot de passe :',
'resetpass_submit' => 'Changer le mot de passe et se connecter',
'changepassword-success' => 'Votre mot de passe a été changé avec succès !',
+'changepassword-throttled' => 'Vous avez fait trop de tentatives de connexion récemment.
+Veuillez attendre $1 avant de réessayer.',
'resetpass_forbidden' => 'Les mots de passe ne peuvent pas être changés',
'resetpass-no-info' => 'Vous devez être connecté(e) pour avoir accès à cette page.',
'resetpass-submit-loggedin' => 'Changer de mot de passe',
'changeemail-password' => 'Votre mot de passe sur {{SITENAME}} :',
'changeemail-submit' => 'Changer l’adresse de courriel',
'changeemail-cancel' => 'Annuler',
+'changeemail-throttled' => 'Vous avez fait trop de tentatives de connexion.
+Veuillez attendre $1 avant de réessayer.',
# Special:ResetTokens
'resettokens' => 'Réinitialiser les jetons',
'accmailtext' => "Un mot de passe généré aléatoirement pour [[User talk:$1|$1]] a été envoyé à $2.
Il peut être modifié sur la page ''[[Special:ChangePassword|Changement de mot de passe]]'' après s’être connecté{{GENDER:$1||e|(e)}}.",
'newarticle' => '(Nouveau)',
-'newarticletext' => "Vous avez suivi un lien vers une page qui n'existe pas encore ou qui a été [{{fullurl:Special:Log|type=delete&page={{FULLPAGENAMEE}}}} effacée].
-Pour créer cette page, entrez votre texte dans la boîte ci-dessous (vous pouvez consulter [[{{MediaWiki:Helppage}}|la page d'aide]] pour plus d'informations).
+'newarticletext' => "Vous avez suivi un lien vers une page qui n’existe pas encore ou qui a été [{{fullurl:Special:Log|type=delete&page={{FULLPAGENAMEE}}}} effacée].
+Pour créer cette page, entrez votre texte dans la boîte ci-après (vous pouvez consulter [[{{MediaWiki:Helppage}}|la page d’aide]] pour plus d’informations).
Si vous êtes arrivé{{GENDER:||e|(e)}} ici par erreur, cliquez sur le bouton '''retour''' de votre navigateur.",
'anontalkpagetext' => "---- ''Vous êtes sur la page de discussion d'un utilisateur anonyme qui n'a pas encore créé de compte ou qui n'en utilise pas. Pour cette raison, nous devons utiliser son adresse IP pour l'identifier. Une adresse IP peut être partagée par plusieurs utilisateurs. Si vous êtes un{{GENDER:||e|}} utilisat{{GENDER:|eur|rice|eur}} anonyme et si vous constatez que des commentaires qui ne vous concernent pas vous ont été adressés, vous pouvez [[Special:UserLogin/signup|créer un compte]] ou [[Special:UserLogin|vous connecter]] afin d'éviter toute confusion future avec d'autres contributeurs anonymes.''",
-'noarticletext' => 'Il n\'y a pour l\'instant aucun texte sur cette page.
+'noarticletext' => 'Il n’y a pour l’instant aucun texte sur cette page.
Vous pouvez [[Special:Search/{{PAGENAME}}|lancer une recherche sur ce titre]] dans les autres pages,
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} rechercher dans les opérations liées]
ou [{{fullurl:{{FULLPAGENAME}}|action=edit}} créer cette page]</span>.',
'invalid-content-data' => 'Données du contenu non valides',
'content-not-allowed-here' => 'Le contenu « $1 » n’est pas autorisé sur la page [[$2]]',
'editwarning-warning' => 'Quitter cette page vous fera perdre toutes les modifications que vous avez faites.
-Si vous êtes connecté, vous pouvez désactiver cet avertissement dans la section « Modification » de vos préférences.',
+Si vous êtes connecté, vous pouvez désactiver cet avertissement dans la section « {{int:prefs-editing}} » de vos préférences.',
+'editpage-notsupportedcontentformat-title' => 'Format de contenu non pris en charge',
+'editpage-notsupportedcontentformat-text' => "Le format de contenu $1 n'est pas pris en charge par le modèle de contenu $2 .",
# Content models
'content-model-wikitext' => 'wikitexte',
'converter-manual-rule-error' => 'Erreur détectée dans la règle manuelle de conversion de langue',
# "Undo" feature
-'undo-success' => "Cette modification va être défaite. Veuillez vérifier les modifications ci-dessous, puis publier si c'est bien ce que vous voulez faire.",
+'undo-success' => 'Cette modification va être défaite. Veuillez vérifier les modifications ci-dessous, puis publier si c’est bien ce que vous voulez faire.',
'undo-failure' => 'Cette modification ne peut pas être défaite : cela entrerait en conflit avec les modifications intermédiaires.',
-'undo-norev' => "La modification n'a pas pu être défaite parce qu'elle est inexistante ou qu'elle a été supprimée.",
+'undo-norev' => 'La modification n’a pas pu être défaite parce qu’elle est inexistante ou qu’elle a été supprimée.',
'undo-summary' => 'Annulation des modifications $1 de [[Special:Contributions/$2|$2]] ([[User talk:$2|discussion]])',
'undo-summary-username-hidden' => 'Annuler la révision $1 par un utilisateur masqué',
'revdelete-offender' => 'Auteur de la révision :',
# Suppression log
-'suppressionlog' => 'Journal des suppressions',
-'suppressionlogtext' => 'Voici la liste des suppressions et des blocages qui portent sur du contenu caché aux administrateurs.
+'suppressionlog' => 'Journal des masquages',
+'suppressionlogtext' => 'Voici la liste des masquages et des blocages qui portent sur du contenu caché aux administrateurs.
Voir la [[Special:BlockList|liste des blocages]] pour la liste des bannissements et des blocages actuellement opérationnels.',
# History merging
'showhideselectedversions' => 'Afficher/masquer les versions sélectionnées',
'editundo' => 'annuler',
'diff-empty' => '(Aucune différence)',
-'diff-multi' => '({{PLURAL:$1|Une révision intermédiaire|$1 révisions intermédiaires}} par {{PLURAL:$2|un utilisateur|$2 utilisateurs}} {{PLURAL:$1|est masquée|sont masquées}})',
+'diff-multi-sameuser' => '({{PLURAL:$1|Une révision intermédiaire par le même utilisateur non affichée|$1 révisions intermédiaires par le même utilisateur non affichées}})',
+'diff-multi-otherusers' => '({{PLURAL:$1|Une révision intermédiaire|$1 révisions intermédiaires}} par {{PLURAL:$2|un autre utilisateur|$2 utilisateurs}} non {{PLURAL:$1|affichée|affichées}})',
'diff-multi-manyusers' => "({{PLURAL:$1|Une révision intermédiaire|$1 révisions intermédiaires}} par plus {{PLURAL:$2|d'un utilisateur|de $2 utilisateurs}} {{PLURAL:$1|est masquée|sont masquées}})",
'difference-missing-revision' => "{{PLURAL:$2|Une révision|$2 révisions}} de cette différence ($1) {{PLURAL:$2|n'a pas été trouvée|n'ont pas été trouvées}}.
'nextn-title' => '$1 {{PLURAL:$1|résultat suivant|résultats suivants}}',
'shown-title' => 'Afficher $1 résultat{{PLURAL:$1||s}} par page',
'viewprevnext' => 'Voir ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-exists' => "'''Il existe une page nommée « [[:$1]] » sur ce wiki'''",
-'searchmenu-new' => "'''Créer la page « [[:$1|$1]] » sur ce wiki !'''",
+'searchmenu-exists' => "'''Il existe une page nommée « [[:$1]] » sur ce wiki.''' {{PLURAL:$2|0=|Voyez également les autres résultats de votre recherche.}}",
+'searchmenu-new' => '<strong>Créer la page « [[:$1|$1]] » sur ce wiki !</strong> {{PLURAL:$2|0=|Voyez également la page trouvée avec votre recherche.|Voyez également les résultats de votre recherche.}}',
'searchprofile-articles' => 'Pages de contenu',
'searchprofile-project' => "Pages d'aide et de projet",
'searchprofile-images' => 'Multimédia',
'search-result-score' => 'Pertinence : $1%',
'search-redirect' => '(redirection depuis $1)',
'search-section' => '(section $1)',
+'search-file-match' => '(correspond au contenu du fichier)',
'search-suggest' => 'Essayez avec cette orthographe : $1',
'search-interwiki-caption' => 'Projets frères',
'search-interwiki-default' => 'Résultats sur $1 :',
'rows' => 'Rangées :',
'columns' => 'Colonnes :',
'searchresultshead' => 'Filtrer avec cette valeur',
-'resultsperpage' => 'Nombre de réponses par page :',
'stub-threshold' => 'Limite supérieure pour les <a href="#" class="stub">liens vers les ébauches</a> (octets) :',
'stub-threshold-disabled' => 'Désactivé',
'recentchangesdays' => 'Nombre de jours à afficher dans les modifications récentes :',
'prefs-emailconfirm-label' => 'Confirmation du courriel :',
'youremail' => 'Courriel :',
'username' => "{{GENDER:$1|Nom d'utilisateur|Nom d'utilisatrice}} :",
-'uid' => "Numéro d'{{GENDER:$1|utilisateur|utilisatrice}}:",
+'uid' => 'Numéro d’{{GENDER:$1|utilisateur|utilisatrice}} :',
'prefs-memberingroups' => '{{GENDER:$2|Membre}} {{PLURAL:$1|du groupe|des groupes}}:',
'prefs-registration' => "Date d'inscription :",
'yourrealname' => 'Nom réel :',
'upload-tryagain' => 'Envoyer la description du fichier modifiée',
'uploadnologin' => 'Non connecté{{GENDER:||e|(e)}}',
'uploadnologintext' => 'Vous devez $1 pour importer des fichiers.',
-'upload_directory_missing' => "Le répertoire d'import de fichier ($1) est introuvable et n'a pas pu être créé par le serveur web.",
-'upload_directory_read_only' => "Le répertoire d'import de fichier ($1) n'est pas accessible en écriture depuis le serveur web.",
-'uploaderror' => "Erreur lors de l'import",
+'upload_directory_missing' => 'Le répertoire d’import de fichier ($1) est introuvable et n’a pas pu être créé par le serveur web.',
+'upload_directory_read_only' => 'Le répertoire d’import de fichier ($1) n’est pas accessible en écriture depuis le serveur web.',
+'uploaderror' => 'Erreur lors de l’import',
'upload-recreate-warning' => "'''Attention : Un fichier portant ce nom a été supprimé ou déplacé.'''
Le journal des suppressions et celui des déplacements de cette page sont affichés ici pour informations :",
'uploadtext' => "Utilisez ce formulaire pour importer des fichiers sur le serveur.
-Pour voir ou rechercher des images précédemment envoyées, consultez la [[Special:FileList|liste des images]]. L'import est aussi enregistrés dans le [[Special:Log/upload|journal d'import des fichiers]], et les suppressions dans le [[Special:Log/delete|journal des suppressions]].
+Pour voir ou rechercher des images précédemment envoyées, consultez la [[Special:FileList|liste des images]]. L’import est aussi enregistré dans le [[Special:Log/upload|journal d’import des fichiers]], et les suppressions dans le [[Special:Log/delete|journal des suppressions]].
Pour inclure un fichier dans une page, utilisez un lien de la forme :
-* '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:fichier.jpg]]</nowiki></code>''', pour afficher le fichier en pleine résolution (dans le cas d'une image) ;
+* '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:fichier.jpg]]</nowiki></code>''', pour afficher le fichier en pleine résolution (dans le cas d’une image) ;
* '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:fichier.png|200px|thumb|left|texte descriptif]]</nowiki></code>''' pour utiliser une miniature de 200 pixels de large dans une boîte à gauche avec « texte descriptif » comme description ;
-* '''<code><nowiki>[[</nowiki>{{ns:media}}<nowiki>:fichier.ogg]]</nowiki></code>''' pour lier directement vers le fichier sans l'afficher.",
+* '''<code><nowiki>[[</nowiki>{{ns:media}}<nowiki>:fichier.ogg]]</nowiki></code>''' pour lier directement vers le fichier sans l’afficher.",
'upload-permitted' => 'Formats de fichiers autorisés : $1.',
'upload-preferred' => 'Formats de fichiers préférés : $1.',
'upload-prohibited' => 'Formats de fichiers interdits : $1.',
-'uploadlog' => "Journal d'import de fichiers",
-'uploadlogpage' => "Journal d'import de fichiers",
+'uploadlog' => 'Journal d’import de fichiers',
+'uploadlogpage' => 'Journal d’import de fichiers',
'uploadlogpagetext' => 'Voici la liste des derniers fichiers importés sur le serveur.
Voyez la [[Special:NewFiles|galerie des nouvelles images]] pour une présentation plus visuelle.',
'filename' => 'Nom du fichier',
'hookaborted' => 'La modification que vous avez essayé de faire a été annulée par une extension.',
'illegal-filename' => "Le nom du fichier n'est pas autorisé.",
'overwrite' => "Écraser un fichier existant n'est pas autorisé.",
-'unknown-error' => "Une erreur inconnue s'est produite.",
+'unknown-error' => 'Une erreur inconnue s’est produite.',
'tmp-create-error' => 'Impossible de créer le fichier temporaire.',
'tmp-write-error' => "Erreur d'écriture du fichier temporaire.",
'large-file' => 'Les fichiers importés ne devraient pas dépasser $1 ; ce fichier fait $2.',
Si vous voulez toujours importer votre fichier, veuillez revenir en arrière et utiliser un autre nom. [[File:$1|thumb|center|$1]]',
'file-exists-duplicate' => 'Ce fichier est un doublon {{PLURAL:$1|du fichier suivant|des fichiers suivants}} :',
'file-deleted-duplicate' => "Un fichier identique à celui-ci ([[:$1]]) a déjà été supprimé. Vous devriez vérifier le journal des suppressions de ce fichier avant de l'importer à nouveau.",
+'file-deleted-duplicate-notitle' => "Un fichier identique à ce fichier a déjà été supprimé ainsi que le titre.
+Vous devriez demander à quelqu'un la possibilité de vérifier le journal de ce fichier supprimé afin d'examiner la situation avant de l'importer à nouveau.",
'uploadwarning' => 'Attention !',
'uploadwarning-text' => 'Modifiez la description du fichier et essayez de nouveau.',
'savefile' => 'Sauvegarder le fichier',
'uploadedimage' => 'a importé « [[$1]] »',
'overwroteimage' => 'a importé une nouvelle version de « [[$1]] »',
-'uploaddisabled' => "Désolé, l'import de fichiers est désactivé.",
+'uploaddisabled' => 'Désolé, l’import de fichiers est désactivé.',
'copyuploaddisabled' => 'Import de fichier par URL désactivé.',
-'uploadfromurl-queued' => "Votre fichier a été mis dans la file d'attente.",
-'uploaddisabledtext' => "L'import de fichiers est désactivé sur ce wiki.",
+'uploadfromurl-queued' => 'Votre fichier a été mis dans la file d’attente.',
+'uploaddisabledtext' => 'L’import de fichiers est désactivé sur ce wiki.',
'php-uploaddisabledtext' => "L'import de fichiers a été désactivé dans PHP. Vérifiez l'option de configuration file_uploads.",
'uploadscripted' => 'Ce fichier contient du code HTML ou un script qui pourrait être interprété de façon incorrecte par un navigateur web.',
'uploadvirus' => 'Ce fichier contient un virus ! Pour plus de détails, consultez : $1',
-'uploadjava' => "C'est un fichier ZIP qui contient un fichier Java .class.
-Le téléchargement de fichiers Java n'est pas autorisé, car ils peuvent contourner des restrictions de sécurité.",
+'uploadjava' => 'C’est un fichier ZIP qui contient un fichier Java .class.
+Le téléchargement de fichiers Java n’est pas autorisé, car ils peuvent contourner certaines restrictions de sécurité.',
'upload-source' => 'Fichier source',
'sourcefilename' => 'Nom du fichier source :',
'sourceurl' => 'URL source :',
'destfilename' => 'Nom sous lequel le fichier sera enregistré :',
'upload-maxfilesize' => 'Taille maximale du fichier : $1',
'upload-description' => 'Description du fichier',
-'upload-options' => "Options d'import de fichiers",
+'upload-options' => 'Options d’import de fichiers',
'watchthisupload' => 'Suivre ce fichier',
'filewasdeleted' => "Un fichier avec ce nom a déjà été importé, puis supprimé.
Vous devriez vérifier le $1 avant de l'importer à nouveau.",
'upload-failure-msg' => 'Il y a eu un problème avec votre import depuis [$2] :
$1',
-'upload-warning-subj' => "Avertissement lors de l'import",
-'upload-warning-msg' => "Un problème est survenu lors de l'import depuis [$2]. Vous pouvez revenir au [[Special:Upload/stash/$1|formulaire d'import]] pour le résoudre.",
+'upload-warning-subj' => 'Avertissement lors de l’import',
+'upload-warning-msg' => 'Un problème est survenu lors de l’import depuis [$2]. Vous pouvez revenir au [[Special:Upload/stash/$1|formulaire d’import]] pour le résoudre.',
'upload-proto-error' => 'Protocole incorrect',
-'upload-proto-error-text' => "L'import requiert des URL commençant par <code>http://</code> ou <code>ftp://</code>.",
+'upload-proto-error-text' => 'L’import requiert des URL commençant par <code>http://</code> ou <code>ftp://</code>.',
'upload-file-error' => 'Erreur interne',
'upload-file-error-text' => 'Une erreur interne est survenue en voulant créer un fichier temporaire sur le serveur. Veuillez contacter un [[Special:ListUsers/sysop|administrateur]].',
-'upload-misc-error' => "Erreur d'import inconnue",
-'upload-misc-error-text' => "Une erreur inconnue est survenue pendant l'import.
-Veuillez vérifier que l'URL est valide et accessible, puis essayer à nouveau.
-Si le problème persiste, contactez un [[Special:ListUsers/sysop|administrateur]].",
-'upload-too-many-redirects' => "L'URL contient trop de redirections.",
+'upload-misc-error' => 'Erreur d’import inconnue',
+'upload-misc-error-text' => 'Une erreur inconnue est survenue pendant l’import.
+Veuillez vérifier que l’URL est valide et accessible, puis essayer à nouveau.
+Si le problème persiste, contactez un [[Special:ListUsers/sysop|administrateur]].',
+'upload-too-many-redirects' => 'L’URL contient trop de redirections.',
'upload-unknown-size' => 'Taille inconnue',
'upload-http-error' => 'Une erreur HTTP est survenue : $1',
-'upload-copy-upload-invalid-domain' => "La copie des téléchargements n'est pas disponible depuis ce domaine.",
+'upload-copy-upload-invalid-domain' => 'La copie des téléversements n’est pas disponible depuis ce domaine.',
# File backend
'backend-fail-stream' => 'Impossible de lire le fichier $1.',
Sa sécurité ne peut pas être correctement vérifiée.',
# Special:UploadStash
-'uploadstash' => "Cache d'import",
-'uploadstash-summary' => "Cette page donne accès aux fichiers qui sont importés (ou en cours d'importation), mais ne sont pas encore publiés dans le wiki. Ces fichiers ne sont pas encore visibles, sauf pour l'utilisateur qui les a importés.",
+'uploadstash' => 'Cache d’import',
+'uploadstash-summary' => 'Cette page donne accès aux fichiers qui sont importés (ou en cours d’importation), mais ne sont pas encore publiés dans le wiki. Ces fichiers ne sont pas encore visibles, sauf pour l’utilisateur qui les a importés.',
'uploadstash-clear' => 'Effacer les fichiers en cache',
-'uploadstash-nofiles' => "Vous n'avez pas de fichiers en cache d'import.",
-'uploadstash-badtoken' => "L'exécution de cette action a échoué, peut-être parce que vos informations d'identification ont expiré. Réessayez.",
-'uploadstash-errclear' => "L'effacement des fichiers a échoué.",
+'uploadstash-nofiles' => 'Vous n’avez pas de fichiers en cache d’import.',
+'uploadstash-badtoken' => 'L’exécution de cette action a échoué, peut-être parce que vos informations d’identification ont expiré. Réessayez.',
+'uploadstash-errclear' => 'La suppression des fichiers a échoué.',
'uploadstash-refresh' => 'Actualiser la liste des fichiers',
'invalid-chunk-offset' => 'Offset de segment non valide',
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => 'URL injoignable',
-'upload-curl-error6-text' => "L'URL fournie ne peut pas être atteinte. Veuillez vérifier que l'URL est correcte et que le site est en ligne.",
+'upload-curl-error6-text' => 'L’URL fournie ne peut pas être atteinte. Veuillez vérifier que l’URL est correcte et que le site est en ligne.',
'upload-curl-error28' => "Dépassement du délai lors de l'import",
'upload-curl-error28-text' => 'Le site a mis trop longtemps à répondre. Vérifiez que le site est en ligne, attendez un peu et réessayez. Vous pouvez aussi réessayer à une heure de moindre affluence.',
'download' => 'télécharger',
# Unwatched pages
-'unwatchedpages' => "Pages ne faisant partie d'aucune liste de suivi",
+'unwatchedpages' => 'Pages ne faisant partie d’aucune liste de suivi',
# List redirects
'listredirects' => 'Liste des redirections',
# Unused templates
'unusedtemplates' => 'Modèles inutilisés',
-'unusedtemplatestext' => "Cette page liste toutes les pages de l'espace de noms « {{ns:template}} » qui ne sont incluses dans aucune autre page.
-N'oubliez pas de vérifier s'il n'y a pas d'autres liens vers les modèles avant de les supprimer.",
+'unusedtemplatestext' => 'Cette page liste toutes les pages de l’espace de noms « {{ns:template}} » qui ne sont incluses dans aucune autre page.
+N’oubliez pas de vérifier s’il n’y a pas d’autres liens vers les modèles avant de les supprimer.',
'unusedtemplateswlh' => 'autres liens',
# Random page
'protectedpages' => 'Pages protégées',
'protectedpages-indef' => 'Uniquement les protections permanentes',
'protectedpages-cascade' => 'Uniquement les protections en cascade',
+'protectedpages-noredirect' => 'Masquer les redirections',
'protectedpagesempty' => "Aucune page n'est protégée de cette façon.",
'protectedtitles' => 'Titres protégés',
'protectedtitlesempty' => "Aucun titre n'est actuellement protégé avec ces paramètres.",
'ancientpages' => 'Pages les plus anciennement modifiées',
'move' => 'Renommer',
'movethispage' => 'Renommer cette page',
-'unusedimagestext' => "Les fichiers suivants existent, mais ne sont inclus dans aucune page.
-Veuillez noter que d'autres sites peuvent avoir un lien direct vers un fichier, et donc qu'un fichier peut être listé ici alors qu'il est en réalité utilisé sur ces sites.",
+'unusedimagestext' => 'Les fichiers suivants existent, mais ne sont inclus dans aucune page.
+Veuillez noter que d’autres sites peuvent avoir un lien direct vers un fichier, et donc qu’un fichier peut être listé ici alors qu’il est en réalité utilisé sur ces sites.',
'unusedcategoriestext' => 'Les catégories suivantes existent mais aucune page ou catégorie ne les utilise.',
'notargettitle' => 'Pas de cible',
'notargettext' => "Vous n'avez pas indiqué une page ou un utilisateur sur lequel vous souhaitez effectuer cette action.",
'watchmethod-list' => 'vérification des pages suivies pour y trouver des modifications récentes',
'watchlistcontains' => 'Votre liste de suivi référence $1 page{{PLURAL:$1||s}}.',
'iteminvalidname' => "Problème avec l'élément « $1 » : le nom est invalide.",
-'wlnote' => "Ci-dessous {{PLURAL:$1|figure la dernière modification effectuée|figurent les '''$1''' dernières modifications effectuées}} durant {{PLURAL:$2|la dernière heure|les '''$2''' dernières heures}}, depuis $3, $4.",
+'wlnote2' => 'Ci-dessous les modifications dans {{PLURAL:$1|la dernière heure|les <strong>$1</strong> dernières heures}}, à partir de $2, $3.',
'wlshowlast' => 'Montrer les dernières $1 heures, les derniers $2 jours ou bien $3',
'watchlist-options' => 'Options de la liste de suivi',
'delete-warning-toobig' => "Cette page possède un historique important de modifications, dépassant $1 version{{PLURAL:$1||s}}.
La supprimer peut perturber le fonctionnement de la base de données de {{SITENAME}} ;
veuiller ne procéder qu'avec prudence.",
+'deleting-backlinks-warning' => "'''Attention :''' D’autres pages ont un lien vers ou incorporent la page que vous allez supprimer.",
# Rollback
'rollback' => 'Révoquer les modifications',
'protect-norestrictiontypes-title' => 'Page non protégeable',
'protect-legend' => 'Confirmer la protection',
'protectcomment' => 'Motif :',
-'protectexpiry' => "Date d'expiration :",
+'protectexpiry' => 'Date d’expiration :',
'protect_expiry_invalid' => "La date d'expiration est invalide.",
'protect_expiry_old' => "La date d'expiration est déjà passée.",
'protect-unchain-permissions' => "Déverrouiller davantage d'options de protection",
'undeletepage' => 'Voir et restaurer des pages supprimées',
'undeletepagetitle' => "'''La liste suivante contient des versions supprimées de [[:$1|$1]]'''.",
'viewdeletedpage' => 'Voir les pages supprimées',
-'undeletepagetext' => "{{PLURAL:$1|La page suivante a été supprimée et se trouve|Les pages suivantes ont été supprimées et se trouvent}} dans la base de données archive, d'où {{PLURAL:$1|elle peut|elles peuvent}} encore être restaurée{{PLURAL:$1||s}}.
-L'archive peut être nettoyée périodiquement.",
+'undeletepagetext' => '{{PLURAL:$1|La page suivante a été supprimée et se trouve|Les pages suivantes ont été supprimées et se trouvent}} dans la base de données archive, d’où {{PLURAL:$1|elle peut|elles peuvent}} encore être restaurée{{PLURAL:$1||s}}.
+L’archive peut être nettoyée périodiquement.',
'undelete-fieldset-title' => 'Restaurer les versions',
-'undeleteextrahelp' => "Pour restaurer l'historique complet de cette page, laissez toutes les cases décochées et cliquez sur '''''Restaurer'''''.
+'undeleteextrahelp' => "Pour restaurer l’historique complet de cette page, laissez toutes les cases décochées et cliquez sur '''''Restaurer'''''.
Pour effectuer une restauration partielle, cochez les cases correspondant aux versions à rétablir, puis cliquez sur '''''Restaurer'''''.",
'undeleterevisions' => '$1 {{PLURAL:$1|version archivée|versions archivées}}',
-'undeletehistory' => "Si vous restaurez la page, toutes les versions seront replacées dans l'historique.
-Si une nouvelle page avec le même nom a été créée depuis la suppression, les versions restaurées apparaîtront dans l'historique antérieur et la version courante ne sera pas automatiquement remplacée.",
+'undeletehistory' => 'Si vous restaurez la page, toutes les versions seront replacées dans l’historique.
+Si une nouvelle page avec le même nom a été créée depuis la suppression, les versions restaurées apparaîtront dans l’historique antérieur et la version courante ne sera pas automatiquement remplacée.',
'undeleterevdel' => 'La restauration ne sera pas effectuée si, au final, la version la plus récente de la page ou du fichier reste partiellement supprimée.
Dans de tels cas, vous devez décocher ou démasquer les versions effacées les plus récentes (en tête de liste).',
-'undeletehistorynoadmin' => "Cette page a été supprimée.
-Le motif de la suppression est indiqué dans le résumé ci-dessous, avec les détails des utilisateurs qui l'ont modifié avant sa suppression.
-Le contenu effectif de ces versions supprimées n'est accessible qu'aux administrateurs.",
+'undeletehistorynoadmin' => 'Cette page a été supprimée.
+Le motif de la suppression est indiqué dans le résumé ci-dessous, avec les détails des utilisateurs qui ont modifié la page avant sa suppression.
+Le contenu effectif de ces versions supprimées n’est accessible qu’aux administrateurs.',
'undelete-revision' => 'Version supprimée de $1 (version du $4 à $5) par $3 :',
-'undeleterevision-missing' => "Version incorrecte ou manquante.
-Vous avez peut-être un mauvais lien, ou la version a pu être restaurée ou supprimée de l'archive.",
+'undeleterevision-missing' => 'Version incorrecte ou manquante.
+Vous avez peut-être un mauvais lien, ou la version a pu être restaurée ou supprimée de l’archive.',
'undelete-nodiff' => 'Aucune version précédente trouvée.',
'undeletebtn' => 'Restaurer',
'undeletelink' => 'visualiser/rétablir',
'undelete-search-box' => 'Rechercher des pages supprimées',
'undelete-search-prefix' => 'Montrer les pages commençant par :',
'undelete-search-submit' => 'Rechercher',
-'undelete-no-results' => "Aucune page correspondante n'a été trouvée dans les archives de suppression.",
+'undelete-no-results' => 'Aucune page correspondante n’a été trouvée dans les archives de suppression.',
'undelete-filename-mismatch' => 'Impossible de restaurer la version du fichier datée du $1 : le nom de fichier ne correspond pas.',
'undelete-bad-store-key' => 'Impossible de restaurer la version du fichier datée du $1 : le fichier était absent avant la suppression.',
-'undelete-cleanup-error' => "Erreur lors de la suppression du fichier d'archive inutilisé « $1 ».",
-'undelete-missing-filearchive' => "Impossible de restaurer le fichier d'archive avec l'identifiant $1 parce qu'il n'est pas dans la base de données.
-Il a peut-être déjà été restauré.",
-'undelete-error' => "Page d'erreur d'annulation",
+'undelete-cleanup-error' => 'Erreur lors de la suppression du fichier d’archive inutilisé « $1 ».',
+'undelete-missing-filearchive' => 'Impossible de restaurer le fichier d’archive avec l’identifiant $1 parce qu’il n’est pas dans la base de données.
+Il a peut-être déjà été restauré.',
+'undelete-error' => 'Page d’erreur d’annulation',
'undelete-error-short' => 'Erreur lors de la restauration du fichier : $1',
'undelete-error-long' => 'Des erreurs ont été rencontrées lors de la restauration du fichier :
# Block/unblock
'autoblockid' => 'Blocage automatique #$1',
'block' => 'Bloquer l’utilisateur',
-'unblock' => "Débloquer l'utilisateur",
+'unblock' => 'Débloquer l’utilisateur',
'blockip' => 'Bloquer l’utilisateur',
'blockip-legend' => 'Bloquer l’utilisateur',
'blockiptext' => 'Utilisez le formulaire ci-dessous pour bloquer les tentatives de modification faites à partir d’une adresse IP spécifique ou d’un nom d’utilisateur.
Consultez la [[Special:BlockList|liste des blocages]] pour revoir les blocages.',
'ipb-blockingself' => 'Vous êtes sur le point de bloquer votre propre compte ! Êtes-vous certain{{GENDER:||e|(e)}} de vouloir faire cela ?',
'ipb-confirmhideuser' => "Vous êtes sur le point de bloquer un utilisateur avec « cacher l'utilisateur » activé. Cela supprime le nom de l'utilisateur dans toutes les listes et les entrées du journal. Êtes-vous sûr de vouloir le faire ?",
+'ipb-confirmaction' => 'Si vous êtes sûr de vraiment vouloir le faire, veuillez cocher le champ « {{int:ipb-confirm}} » en bas.',
'ipb-edit-dropdown' => 'Modifier les motifs de blocage par défaut',
'ipb-unblock-addr' => 'Débloquer $1',
'ipb-unblock' => 'Débloquer un compte utilisateur ou une adresse IP',
'ipb-blocklist' => 'Voir les blocages existants',
'ipb-blocklist-contribs' => 'Contributions pour $1',
'unblockip' => 'Débloquer un utilisateur ou une adresse IP',
-'unblockiptext' => "Utilisez le formulaire ci-dessous pour rétablir l'accès aux modifications depuis une adresse IP ou un nom d'utilisateur.",
+'unblockiptext' => 'Utilisez le formulaire ci-dessous pour redonner les droits d’écriture à une adresse IP ou un nom d’utilisateur.',
'ipusubmit' => 'Supprimer ce blocage',
'unblocked' => '[[User:$1|$1]] a été débloqué{{GENDER:$1||e|(e)}}',
'unblocked-range' => '$1 a été débloqué{{GENDER:$1||e|(e)}}',
'range_block_disabled' => 'Le droit administrateur de créer des blocages de plages IP est désactivé.',
'ipb_expiry_invalid' => "Durée d'expiration incorrecte.",
'ipb_expiry_temp' => "Les blocages de noms d'utilisateurs cachés doivent être permanents.",
-'ipb_hide_invalid' => 'Impossible de supprimer ce compte ; il semble avoir trop de modifications.',
+'ipb_hide_invalid' => 'Impossible de supprimer ce compte ; il semble avoir plus {{PLURAL:$1|d’une modification|de $1 modifications}}.',
'ipb_already_blocked' => '« $1 » est déjà bloqué',
'ipb-needreblock' => '$1 est déjà bloqué. Voulez-vous modifier les paramètres ?',
'ipb-otherblocks-header' => '{{PLURAL:$1|Autre blocage|Autres blocages}}',
-'unblock-hideuser' => "Vous ne pouvez pas débloquer cet utilisateur, car son nom d'utilisateur a été masqué.",
+'unblock-hideuser' => 'Vous ne pouvez pas débloquer cet utilisateur, car son nom d’utilisateur a été masqué.',
'ipb_cant_unblock' => "Erreur : identifiant de blocage $1 non trouvé.
Il est possible qu'un déblocage ait déjà été effectué.",
'ipb_blocked_as_range' => "Erreur : l'adresse IP $1 n'est pas bloquée directement et ne peut donc pas être débloquée.
'unlockdb' => 'Déverrouiller la base de données',
'lockdbtext' => "Le verrouillage de la base de données empêchera tous les utilisateurs de modifier des pages, d'enregistrer leurs préférences, de modifier leur liste de suivi et d'effectuer toutes les autres opérations nécessitant des changements dans la base de données.
Veuillez confirmer que c'est bien là ce que vous voulez faire et que vous déverrouillerez la base dès que votre opération de maintenance sera terminée.",
-'unlockdbtext' => "Le déverrouillage de la base de données permettra à nouveau à tous les utilisateurs de modifier des pages, de changer leurs préférences, de modifier leur liste de suivi et d'effectuer les autres opérations nécessitant des changements dans la base de données.
-Veuillez confirmer que c'est bien là ce que vous voulez faire.",
+'unlockdbtext' => 'Le déverrouillage de la base de données permettra à nouveau à tous les utilisateurs de modifier des pages, de changer leurs préférences, de modifier leur liste de suivi et d’effectuer les autres opérations nécessitant des changements dans la base de données.
+Veuillez confirmer que c’est bien là ce que vous voulez faire.',
'lockconfirm' => 'Oui, je confirme que je souhaite verrouiller la base de données.',
'unlockconfirm' => 'Oui, je confirme que je souhaite déverrouiller la base de données.',
'lockbtn' => 'Verrouiller la base de données',
'allmessagesname' => 'Nom du message',
'allmessagesdefault' => 'Message par défaut',
'allmessagescurrent' => 'Message actuel',
-'allmessagestext' => "Ceci est la liste des messages disponibles dans l'espace MediaWiki.
-Veuillez visiter la [https://www.mediawiki.org/wiki/Localisation Localisation de MediaWiki] et [//translatewiki.net/ translatewiki.net] si vous désirez contribuer à la localisation générique de MediaWiki.",
+'allmessagestext' => 'Ceci est la liste des messages disponibles dans l’espace MediaWiki.
+Veuillez visiter la [https://www.mediawiki.org/wiki/Localisation Localisation de MediaWiki] et [//translatewiki.net/ translatewiki.net] si vous désirez contribuer à la localisation générique de MediaWiki.',
'allmessagesnotsupportedDB' => "Cette page '''{{ns:special}}:Allmessages''' n'est pas utilisable car '''\$wgUseDatabaseMessages''' a été désactivé.",
'allmessages-filter-legend' => 'Filtrer',
'allmessages-filter' => 'Filtrer par état de modification :',
'allmessages-prefix' => 'Filtrer par préfixe :',
'allmessages-language' => 'Langue :',
'allmessages-filter-submit' => 'Appliquer',
+'allmessages-filter-translate' => 'Traduire',
# Thumbnails
'thumbnail-more' => 'Agrandir',
Un dossier temporaire est manquant.",
'import-parse-failure' => "Échec lors de l'analyse du XML à importer",
'import-noarticle' => 'Aucune page à importer !',
-'import-nonewrevisions' => 'Toutes les versions ont été importées auparavant.',
+'import-nonewrevisions' => 'Aucune révision importée (toutes étaient déjà présentes, ou ignorées du fait d’erreurs).',
'xml-error-string' => '$1 à la ligne $2, colonne $3 (octet $4) : $5',
'import-upload' => 'Import de données XML',
'import-token-mismatch' => 'Perte des données de session. Veuillez réessayez.',
'import-error-special' => "La page « $1 » n'est pas importée parce qu'elle appartient à un espace de noms spécial qui n'en autorise aucune.",
'import-error-invalid' => "Page « $1 » n'est pas importée parce que son nom n'est pas valide.",
'import-error-unserialize' => 'La révision $2 de la page « $1 » ne peut pas être désérialisée. La révision est indiquée comme utilisant le modèle de contenu $3 sérialisé en $4.',
+'import-error-bad-location' => 'La révision $2 utilisant le modèle de contenu $3 n’a pas pu être stocké sur « $1 » sur ce wiki, car ce modèle n’est pas supporté sur cette page.',
'import-options-wrong' => '{{PLURAL:$2|Mauvaise option|Mauvaises options}} : <nowiki>$1</nowiki>',
'import-rootpage-invalid' => 'La page racine fournie est un titre non valide.',
'import-rootpage-nosubpage' => "L'espace de noms « $1 » de la page racine n'autorise pas les sous-pages.",
'tooltip-pt-watchlist' => 'La liste des pages dont vous suivez les modifications',
'tooltip-pt-mycontris' => 'La liste de vos contributions',
'tooltip-pt-login' => "Vous êtes encouragé{{GENDER:||e|(e)}} à vous identifier ; ce n'est cependant pas obligatoire.",
-'tooltip-pt-anonlogin' => "Vous êtes encouragé{{GENDER:||e|(e)}} à vous identifier ; ce n'est cependant pas obligatoire.",
'tooltip-pt-logout' => 'Se déconnecter',
'tooltip-ca-talk' => 'Discussion au sujet de cette page de contenu',
'tooltip-ca-edit' => "Vous pouvez modifier cette page.
'signature' => '[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|discussion]])',
# Core parser functions
-'unknown_extension_tag' => "Balise d'extension « $1 » inconnue",
-'duplicate-defaultsort' => 'Attention : la clé de tri par défaut « $2 » écrase la précédente « $1 ».',
+'unknown_extension_tag' => 'Balise d’extension « $1 » inconnue',
+'duplicate-defaultsort' => 'Attention : la clé de tri par défaut « $2 » écrase la précédente clé « $1 ».',
# Special:Version
'version' => 'Version',
'version-hook-name' => 'Nom du greffon',
'version-hook-subscribedby' => 'Abonnés :',
'version-version' => '(version $1)',
-'version-license' => 'Licence',
+'version-license' => 'Licence MediaWiki',
+'version-ext-license' => 'Licence',
+'version-ext-colheader-name' => 'Extension',
+'version-ext-colheader-version' => 'Version',
+'version-ext-colheader-license' => 'Licence',
+'version-ext-colheader-description' => 'Description',
+'version-ext-colheader-credits' => 'Auteurs',
+'version-license-title' => 'Licence pour $1',
+'version-license-not-found' => "Aucune information détaillée de la licence n'a été trouvée pour cette extension.",
+'version-credits-title' => 'Remerciements pour $1',
+'version-credits-not-found' => "Aucune information détaillée des remerciements n'a été trouvée pour cette extension.",
'version-poweredby-credits' => "Ce wiki fonctionne grâce à '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
'version-poweredby-others' => 'autres',
'version-poweredby-translators' => 'traducteurs de translatewiki.net',
'api-error-overwrite' => "Écraser un fichier existant n'est pas autorisé.",
'api-error-stashfailed' => "Erreur interne : le serveur n'a pas pu enregistrer le fichier temporaire.",
'api-error-publishfailed' => "Erreur interne: Le serveur n'a pas pu publier le fichier temporaire.",
+'api-error-stasherror' => "Une erreur s'est produite lors du téléchargement du fichier pour le dissimuler.",
'api-error-timeout' => "Le serveur n'a pas répondu dans le délai imparti.",
'api-error-unclassified' => "Une erreur inconnue s'est produite",
'api-error-unknown-code' => 'Erreur inconnue : « $1 »',
'expand_templates_generate_rawhtml' => 'Afficher le HTML brut',
'expand_templates_preview' => 'Aperçu du rendu',
+# Unknown messages
+'uploadinvalidxml' => 'Le XML dans le fichier importé n’a pas pu être analysé.',
);
'Discussion_Catègorie' => NS_CATEGORY_TALK
);
+// Remove French aliases
+$namespaceGenderAliases = array();
+
$specialPageAliases = array(
'Activeusers' => array( 'Usanciérs_actifs', 'UsanciérsActifs' ),
'Allmessages' => array( 'Mèssâjos_sistèmo', 'MèssâjosSistèmo' ),
$messages = array(
# User preference toggles
'tog-underline' => 'Solegnér los lims :',
-'tog-justify' => 'Justifiar los paragrafos',
'tog-hideminor' => 'Cachiér los petiôts changements dedens los dèrriérs changements',
'tog-hidepatrolled' => 'Cachiér los changements gouardâs dedens los dèrriérs changements',
'tog-newpageshidepatrolled' => 'Cachiér les pâges gouardâyes entre-mié la lista de les pâges novèles',
'tog-numberheadings' => 'Numerotar ôtomaticament los titros de sèccion',
'tog-showtoolbar' => 'Montrar la bârra d’outils de changement (at fôta de JavaScript)',
'tog-editondblclick' => 'Changiér des pâges sur doblo-clic (at fôta de JavaScript)',
-'tog-editsection' => 'Activar lo changement de sèccions avouéc los lims « [changiér] »',
'tog-editsectiononrightclick' => 'Activar lo changement de sèccions per clic drêt sur lors titros (at fôta de JavaScript)',
-'tog-showtoc' => 'Montrar la trâbla de les matiéres (por les pâges qu’ant més de 3 sèccions)',
'tog-rememberpassword' => 'Sè rapelar de mon contresegno sur ceti navigator (por lo més $1 jorn{{PLURAL:$1||s}})',
'tog-watchcreations' => 'Apondre les pâges que fé et pués los fichiérs que tèlèchârjo a ma lista de siuvu',
'tog-watchdefault' => 'Apondre les pâges et los fichiérs que chanjo a ma lista de siuvu',
'showhideselectedversions' => 'Montrar / cachiér les vèrsions chouèsies',
'editundo' => 'dèfâre',
'diff-empty' => '(Niona difèrence)',
-'diff-multi' => '({{PLURAL:$1|Na vèrsion entèrmèdièra|$1 vèrsions entèrmèdières}} per {{PLURAL:$2|un utilisator|$2 utilisators}} {{PLURAL:$1|est pas montrâye|sont pas montrâyes}})',
'diff-multi-manyusers' => '({{PLURAL:$1|Na vèrsion entèrmèdièra|$1 vèrsions entèrmèdières}} per més de $2 utilisator{{PLURAL:$2||s}} {{PLURAL:$1|est pas montrâye|sont pas montrâyes}})',
'difference-missing-revision' => '{{PLURAL:$2|Na vèrsion|$2 vèrsions}} de cela difèrence ($1) {{PLURAL:$2|est pas étâye trovâye|sont pas étâyes trovâyes}}.
'rows' => 'Renches :',
'columns' => 'Colones :',
'searchresultshead' => 'Rechèrche',
-'resultsperpage' => 'Nombro de rèponses per pâge :',
'stub-threshold' => 'Limita d’amont por los <a href="#" class="stub">lims de vers los començons</a> (octèts) :',
'stub-threshold-disabled' => 'Dèsactivâ',
'recentchangesdays' => 'Nombro de jorns a montrar dedens los dèrriérs changements :',
'watchmethod-list' => 'contrôlo de les pâges siuvues por y trovar des novéls changements',
'watchlistcontains' => 'Voutra lista de siuvu contint $1 pâge{{PLURAL:$1||s}}.',
'iteminvalidname' => 'Problèmo avouéc la piéce « $1 », nom pas justo...',
-'wlnote' => "Vê-que {{PLURAL:$1|lo dèrriér changement fêt|los '''$1''' dèrriérs changements fêts}} pendent {{PLURAL:$2|l’hora passâye|les '''$2''' hores passâyes}}, dês $3 a $4.",
'wlshowlast' => 'Montrar les $1 hores passâyes, los $2 jorns passâs ou ben $3',
'watchlist-options' => 'Chouèx de la lista de siuvu',
'tooltip-pt-watchlist' => 'La lista de les pâges que vos siude los changements',
'tooltip-pt-mycontris' => 'La lista de voutres contribucions',
'tooltip-pt-login' => 'Vos éte encoragiê a vos branchiér ; portant, o est pas oblegatouèro.',
-'tooltip-pt-anonlogin' => 'Vos éte encoragiê a vos branchiér ; portant, o est pas oblegatouèro.',
'tooltip-pt-logout' => 'Sè dèbranchiér',
'tooltip-ca-talk' => 'Discussion sur ceta pâge de contegnu',
'tooltip-ca-edit' => 'Vos pouede changiér ceta pâge.
$messages = array(
# User preference toggles
'tog-underline' => 'Ferwisangen onerstrik:',
-'tog-justify' => 'Tekst üs blook saat',
'tog-hideminor' => 'Letj anrangen fersteeg',
'tog-hidepatrolled' => 'Letj anrangen fersteeg',
'tog-newpageshidepatrolled' => 'Kontroliaret sidjen bi a "Nei sidjen" fersteeg',
'tog-numberheadings' => 'Auerskraften automaatisk numeriare',
'tog-showtoolbar' => 'Werktjüch tu bewerkin wise',
'tog-editondblclick' => 'Sidjen mä dobelklik bewerke',
-'tog-editsection' => "Ferwisangen tu't bewerkin faan enkelt kirwer",
'tog-editsectiononrightclick' => 'Enkelt kirwer mä rochtsklik bewerke',
-'tog-showtoc' => 'Üüb sidjen mä muar üs trii auerskraften en indeks uunwise',
'tog-rememberpassword' => 'Üüb diheer reegner üüb düür uunmelde (maksimaal för $1 {{PLURAL:$1|dai|daar}})',
'tog-watchcreations' => "Salew maaget sidjen an huuchlooset datein leewen uun't uug behual",
'tog-watchdefault' => "Salew feranert sidjen an datein leewen uun't uug behual",
'passwordtooshort' => 'Paaswurden skel tumanst {{PLURAL:$1|1 tiaken|$1 tiakens}} lung wees.',
'password-name-match' => 'Dü könst dan brükernööm ei üs paaswurd nem.',
'password-login-forbidden' => 'Didiar brükernööm mä detdiar paaswurd as ei tuläät.',
-'mailmypassword' => 'Schüür mi en nei paaswurd.',
+'mailmypassword' => 'Paaswurd turagsaat',
'passwordremindertitle' => 'Nei tidjwiis paaswurd för {{SITENAME}}',
'passwordremindertext' => 'En brüker (woorskiinelk dü, faan IP adres $1) hää am en nei paaswurd för {{SITENAME}} ($4) fraaget.
En nei paaswurd för di brüker "$2" as maaget wurden an het nü "$3".
# Special:PasswordReset
'passwordreset' => 'Paaswurd turagsaat',
'passwordreset-text-one' => 'Fal detheer formulaar ütj, am din paaswurd turag tu saaten.',
-'passwordreset-text-many' => '{{PLURAL:$1|Fal ian fial ütj, am din paaswurd turag tu saaten.}}',
+'passwordreset-text-many' => '{{PLURAL:$1|Fal ian faan jodiat fialen ütj, am en tidjwiis paaswurd tuschüürd tu fun.}}',
'passwordreset-legend' => 'Paaswurd turagsaat',
'passwordreset-disabled' => 'Dü könst din paaswurd uun detdiar wiki ei turagsaat.',
'passwordreset-emaildisabled' => 'E-mail as üüb detheer Wiki ufknipset wurden.',
'content-not-allowed-here' => '„$1“ mut ei skrewen wurd üüb sidj [[$2]]',
'editwarning-warning' => 'Wan dü detheer sidj slotst, kön feranrangen ferleesen gung.
Üs uunmeldet brüker könst dü detheer wäärnang bi din iinstelangen oner „Bewerke“ wechknipse.',
+'editpage-notsupportedcontentformat-title' => 'Detdiar formoot gongt ei.',
+'editpage-notsupportedcontentformat-text' => 'Det formoot $1 gongt ei mä det model $2.',
# Content models
'content-model-wikitext' => 'wikitekst',
'cantcreateaccount-text' => "Det iinrachten faan en brükerkonto faan det IP-adres '''($1)''' as faan [[User:$3|$3]] speret wurden.
Grünj för det sper: ''$2''",
+'cantcreateaccount-range-text' => "Det iinrachten faan brükerkontos uun det IP-adresfial '''$1''', huar uk din IP ('''$4''') uun as, as faan [[User:$3|$3]] speret wurden.
+
+Di grünj faan $3 wiar: ''$2''",
# History pages
'viewpagelogs' => 'Logbuken faan detdiar sidj uunwise',
'mergehistory-reason' => 'Grünj:',
# Merge log
-'mergelog' => 'Feriin-logbök',
+'mergelog' => 'Ferianangs-logbuk',
'pagemerge-logentry' => '[[$1]] efter [[$2]] tuupfeerd (werjuunen bit $3)',
'revertmerge' => 'Det tuupfeeren turagsaat',
'mergelogpagetext' => 'Diar as det logbuk faan a tuupfeerd sidjen.',
'showhideselectedversions' => 'Werjuunen wise of fersteeg',
'editundo' => 'turagsaat',
'diff-empty' => '(nään ferskeel)',
-'diff-multi' => '({{PLURAL:$1|Ian werjuun diartesken|$1 werjuunen diartesken}} faan {{PLURAL:$2|ään brüker|$2 brükern}} {{PLURAL:$1|woort|wurd}} ei uunwiset)',
'diff-multi-manyusers' => '({{PLURAL:$1|Ian werjuun diartesken|$1 werjuunen diartesken}} faan muar üs $2 {{PLURAL:$2|brüker|brükern}} wurd ei uunwiset)',
'difference-missing-revision' => "{{PLURAL:$2|Ian werjuun|$2 werjuunen}} faan di ferskeel ($1) {{PLURAL:$2|as|san}} ei fünjen wurden.
'rows' => 'Räen:',
'columns' => 'Spleder:',
'searchresultshead' => 'Schük',
-'resultsperpage' => 'So fölsis komt det föör per sidj:',
'stub-threshold' => 'Formatiarang faan links <a href="#" class="stub">för letj sidjen</a> (uun Byte):',
'stub-threshold-disabled' => 'Ufsteld',
'recentchangesdays' => 'Soföl daar skel a „leetst feranrangen“ uunwise:',
'prefs-tokenwatchlist' => 'Token',
'prefs-diffs' => 'Ferskeel',
'prefs-help-prefershttps' => 'Detdiar iinstelang täält, wan dü di naist tooch uunmeldest.',
+'prefs-tabs-navigation-hint' => "Halep: Dü könst a lachter of rochter wiiser-knoop brük, am tesken a ridjerkoorden boowen uun't menüü hen an weder tu springen.",
# User preference: email validation using jQuery
'email-address-validity-valid' => 'Detdiar E-Mail-adres schocht gud ütj.',
'action-createtalk' => 'diskusjuunssidjen maage',
'action-createaccount' => 'jüdeer brükerkonto mååge',
'action-minoredit' => 'detdiar feranrang üs letj kääntiakne',
-'action-move' => 'jüdeer sid ferschüwe',
-'action-move-subpages' => 'jüdeer sid än unerside ferschüwe',
+'action-move' => 'an fersküüw det diar sidj',
+'action-move-subpages' => 'an fersküüw detdiar sidj mä hör onersidjen',
'action-move-rootuserpages' => 'hood-brükersidj fersküüw',
-'action-movefile' => 'jüdeer sid ferschüwe',
+'action-movefile' => 'an fersküüw detdiar datei',
'action-upload' => 'Datein huuchschüür',
'action-reupload' => 'det datei auerskriiw',
'action-reupload-shared' => 'det datei auerskriiw, diar uun en gemiansoom archiif leit',
'recentchanges-label-bot' => 'Feranrang faan en bot',
'recentchanges-label-unpatrolled' => 'Detdiar feranrang as noch ei efterluket wurden',
'recentchanges-label-plusminus' => 'Feranert sidjengrate (am soföl bytes)',
+'recentchanges-legend-heading' => "'''Ferklaarang:'''",
'recentchanges-legend-newpage' => "(luke uk bi't [[Special:NewPages|list mä nei sidjen]])",
'recentchanges-legend-plusminus' => "(''±123'')",
'rcnotefrom' => "Diar wurd a feranrangen sant '''$2'''uunwiset (ei muar üs '''$1''' feranrangen).",
'rclistfrom' => 'Bluas feranrangen sant $1 wise.',
'rcshowhideminor' => '$1 letj feranrangen',
'rcshowhidebots' => '$1 bots',
-'rcshowhideliu' => '$1 uunmeldet brükern',
+'rcshowhideliu' => '$1 registriaret brükern',
'rcshowhideanons' => '$1 anonüüm brükern',
'rcshowhidepatr' => '$1 efterluket feranrangen',
'rcshowhidemine' => '$1 min bidracher',
[[File:$1|thumb|center|$1]]",
'file-exists-duplicate' => 'Detdiar datei as en duplikaat faan {{PLURAL:$1|detdiar datei|$1 datein}}:',
'file-deleted-duplicate' => "En duplikaat faan detdiar datei ([[:$1]]) as al ans stregen wurden. Luke iin uun logbuk för't striken, iar dü det noch ans huuchsjüürst.",
+'file-deleted-duplicate-notitle' => 'Detdiar datei as leetst iarst stregen wurden an di nööm as ferbürgen wurden.
+Dü skulst hoker fraage, di ferbürgen nöömer uunluke koon, am tu besnaakin, wat det diarmä üüb ham hää.',
'uploadwarning' => 'Wäärnang',
'uploadwarning-text' => 'Feranre det datei-beskriiwang an ferschük det noch ans nei.',
'savefile' => 'Datei seekre',
'ninterwikis' => '$1 {{PLURAL:$1|interwiki|interwikis}}',
'nlinks' => '$1 {{PLURAL:$1|link|links}}',
'nmembers' => '{{PLURAL:$1|1 iindrach|$1 iindracher}}',
+'nmemberschanged' => '$1 → $2 {{PLURAL:$2|lasmoot|lasmooten}}',
'nrevisions' => '$1 {{PLURAL:$1|feranrang|feranrangen}}',
'nviews' => '$1 {{PLURAL:$1|klik|kliks}}',
'nimagelinks' => 'Brükt üüb $1 {{PLURAL:$1|sidj|sidjen}}',
'protectedpages' => 'Seekert sidjen',
'protectedpages-indef' => 'Bluas permanent seekert sidjen uunwise',
'protectedpages-cascade' => 'Bluas sidjen mä kaskaaden-seekerhaid',
+'protectedpages-noredirect' => 'Widjerfeerangen fersteeg',
'protectedpagesempty' => 'Uun uugenblak san sok sidjen ei seekert.',
'protectedtitles' => 'Seekert sidjennöömer',
'protectedtitlesempty' => 'Uun uugenblak san sok sidjen ei speret.',
'watchmethod-list' => "Sidjen, diar dü uun't uug heest, am a leetst feranrangen beluke",
'watchlistcontains' => "Dü häälst $1 {{PLURAL:$1|sidj|sidjen}} uun't uug.",
'iteminvalidname' => 'Mä di iindrach „$1“ stemet wat ei, di nööm as ferkiard.',
-'wlnote' => "Diar {{PLURAL:$1|stäänt det leetst feranrang|stun a leetst '''$1''' feranrangen}} faan a leetst {{PLURAL:$2|stünj|'''$2''' stünjen}}. Stant: $3, klook $4.",
'wlshowlast' => 'Wise a feranrangen faan leetst $1 stünjen, $2 daar of $3.',
'watchlist-options' => "Iinstelangen för't uunwisin",
'delete-edit-reasonlist' => "Grünjer för't striken bewerke",
'delete-toobig' => 'Detdiar sidj hää muar üs $1 {{PLURAL:$1|werjuun|werjuunen}} . Sok sidjen kön ei so gau stregen wurd, ööders san a servers plaat.',
'delete-warning-toobig' => "Detdiar sidj hää muar üs $1 {{PLURAL:$1|werjuun|werjuunen}} . Det striken koon komer maage bi't dootenbeenk.",
+'deleting-backlinks-warning' => "'''Paase üüb:''' Diar ferwise noch ööder sidjen üüb det sidj, diar dü strik wel.",
# Rollback
'rollback' => 'Feranrangen turagsaat',
Am det aptuheewen, gung tu't [[Special:BlockList|sperlist]].",
'ipb-blockingself' => 'Wel dü würelk di salew spere?',
'ipb-confirmhideuser' => 'Dü beest diarbi, en brüker uun det muude „brüker fersteeg“ tu sperin. Do woort di brükernööm uun aal a logbuken an listen ferbürgen. Wel dü det würelk du?',
+'ipb-confirmaction' => 'Wan dü was an seeker beest, dat dü det würelk du wel, do trak oner üüb det fial „{{int:ipb-confirm}}“.',
'ipb-edit-dropdown' => "Grünjer för't sperin bewerke",
'ipb-unblock-addr' => '„$1“ ei muar spere',
'ipb-unblock' => 'IP-adres/brüker ei muar spere',
# Move page
'move-page' => 'Fersküüw $1',
-'move-page-legend' => 'Sid ferschüwe',
+'move-page-legend' => 'Sidj fersküüw',
'movepagetext' => "Mä detdiar formulaar könst dü en sidj mä aal sin werjuunen amnääm.
Di ual tiitel woort üüb di nei widjerfeerd.
Dü könst widjerfeerangen, diar üüb di ual tiitel wise, automaatisk üüb di nei tiitel widjerfeer läät.
'tooltip-pt-watchlist' => "Sidjen, diar dü uun't uug behual wel",
'tooltip-pt-mycontris' => 'List mä aanj bidracher',
'tooltip-pt-login' => 'Wan dü di uunmeldest, heest dü muar mögelkhaiden. Dü säärst det oober ei.',
-'tooltip-pt-anonlogin' => 'Wan dü di uunmeldest, heest dü muar mögelkhaiden. Dü säärst det oober ei.',
'tooltip-pt-logout' => 'Ufmelde',
'tooltip-ca-talk' => 'Diskusjuun auer di artiikel',
'tooltip-ca-edit' => 'Sidj bewerke. Luke di det iarst ans uun, iar dü det seekerst.',
'imgmultigo' => 'Widjer',
'imgmultigoto' => 'Gung tu sidj $1',
+# Language selector for translatable SVGs
+'img-lang-default' => '(standard spriak)',
+'img-lang-info' => 'Detdiar bil uun $1 amwerke. $2',
+'img-lang-go' => 'Widjer',
+
# Table pager
'ascending_abbrev' => 'ap',
'descending_abbrev' => 'deel',
'version-parser-function-hooks' => 'Parser function hooks',
'version-hook-name' => 'Hook nööm',
'version-hook-subscribedby' => 'Aprepen faan',
-'version-version' => '(Werjuun $1)',
-'version-license' => 'Lisens',
+'version-version' => '($1)',
+'version-license' => 'MediaWiki-lisens',
+'version-ext-license' => 'Lisens',
+'version-ext-colheader-name' => 'Ütjwidjang',
+'version-ext-colheader-version' => 'Werjuun',
+'version-ext-colheader-license' => 'Lisens',
+'version-ext-colheader-description' => 'Beskriiwang',
+'version-ext-colheader-credits' => 'Skriiwern',
+'version-license-title' => 'Lisens för $1',
+'version-license-not-found' => 'För detdiar ütjwidjang as nian lisens fünjen wurden.',
+'version-credits-title' => 'Soonk för $1',
+'version-credits-not-found' => 'För detdiar ütjwidjang as nään soonk fünjen wurden.',
'version-poweredby-credits' => "Detheer wääbsteed werket mä '''[https://www.mediawiki.org/wiki/MediaWiki/de MediaWiki]''', Copyright © 2001–$1 $2.",
'version-poweredby-others' => 'öödern',
'version-poweredby-translators' => 'Auersaatern faan translatewiki.net',
'version-entrypoints-header-url' => 'URL',
# Special:Redirect
-'redirect' => 'Widjerfeerang üüb en brükersidj, sidjenwerjuun of datei.',
+'redirect' => 'Widjerfeerang faan en brüker, en sidj, en sidjenwerjuun of en datei.',
'redirect-legend' => 'Widjerfeerang üüb en sidjenwerjuun of datei.',
-'redirect-summary' => 'Detdiar spezial-sidj feert widjer üüb en brükersidj, sidjenwerjuun of datei.
-An det woort so brükt: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]], of [[{{#Special:Redirect}}/user/101]].',
+'redirect-summary' => 'Detdiar spezial-sidj feert widjer üüb en brükersidj, sidj, sidjenwerjuun of datei.
+An det woort so brükt: [[{{#Special:Redirect}}/user/101]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]] of [[{{#Special:Redirect}}/file/Example.jpg]].',
'redirect-submit' => 'Widjer',
'redirect-lookup' => 'Schük:',
'redirect-value' => 'Käänang of dateinööm:',
'redirect-user' => 'Brüker-ID',
+'redirect-page' => 'Sidjenkäännumer (ID)',
'redirect-revision' => 'Sidjenwerjuun',
'redirect-file' => 'Dateinööm',
'redirect-not-exists' => 'Wäärs ei fünjen',
'api-error-overwrite' => 'Dü könst nian datei auerskriiw, wat al diar as.',
'api-error-stashfailed' => 'Intern feeler: Di server küd nian tidjwiis datei seekre.',
'api-error-publishfailed' => 'Intern feeler: Di server küd det tidjwiis datei ei widjer schüür.',
+'api-error-stasherror' => "Bi't huuchschüüren faan detdiar datei as wat skiaf gingen.",
'api-error-timeout' => 'Di server hää ei rochttidjag swaaret (time-out).',
'api-error-unclassified' => 'Diar as irgentwat skiaf gingen.',
'api-error-unknown-code' => 'Ünbekäänd feeler: „$1“',
'expand_templates_input' => 'Skriiwfial:',
'expand_templates_output' => 'Resultaat',
'expand_templates_xml_output' => 'XML-resultaat',
+'expand_templates_html_output' => 'Rä HTML-ütjgoow',
'expand_templates_ok' => 'OK',
'expand_templates_remove_comments' => 'Komentaaren wechnem',
'expand_templates_remove_nowiki' => "<nowiki>-tags uun't resultaat ei uunwise",
'expand_templates_generate_xml' => 'XML-parser-buum uunwise',
+'expand_templates_generate_rawhtml' => 'Rä HTML uunwise',
'expand_templates_preview' => 'Föörskau',
);
$messages = array(
# User preference toggles
'tog-underline' => 'Sotlinee leams',
-'tog-justify' => 'Justifiche paragraf',
'tog-hideminor' => 'Plate lis piçulis modifichis tai ultins cambiaments',
'tog-hidepatrolled' => 'Plate lis modifichis controladis intai ultins cambiaments',
'tog-newpageshidepatrolled' => 'Plate lis pagjinis verificadis de liste des pagjinis gnovis',
'tog-numberheadings' => 'Numerazion automatiche dai titui',
'tog-showtoolbar' => 'Mostre sbare dai imprescj pe modifiche (JavaScript)',
'tog-editondblclick' => 'Cambie lis pagjinis fracant dôs voltis',
-'tog-editsection' => 'Inserìs un leam [cambie] pe editazion veloç di une sezion',
'tog-editsectiononrightclick' => 'Modifiche une sezion fracant cul tast diestri<br /> sui titui des sezions',
-'tog-showtoc' => 'Mostre la tabele dai contignûts pes pagjinis cun plui di 3 sezions',
'tog-rememberpassword' => 'Visiti di me su chest sgarfadôr (par un massim di $1 {{PLURAL:$1|zornade|zornadis}})',
'tog-watchcreations' => 'Zonte lis pagjinis creadis e i file cjariats aes oservadis specials',
'tog-watchdefault' => 'Zonte in automatic lis pagjinis che o cambii inte liste di chês tignudis di voli',
Se la cause no samee jessi cheste, tu podaressis vê cjatât un problem tal software.
Segnalilu par plasê a un [[Special:ListUsers/sysop|administrator]], notant la URL.',
'missingarticle-rev' => '(numar de revision: $1)',
+'missingarticle-diff' => '(Dif.: $1, $2)',
'readonly_lag' => 'Par cumò il database al è stât blocât pe sincronizazion cul server',
'internalerror' => 'Erôr interni',
'internalerror_info' => 'Erôr interni: $1',
'fileexistserror' => 'No si pues scrivi il file "$1": al esist zà',
'unexpected' => 'Valor no proviodût: "$1" = "$2"',
'formerror' => 'Erôr: no si rive a mandâ il form',
+'badarticleerror' => 'Operazion no permetude in cheste pagjine',
+'cannotdelete' => 'La pagjine o il file "$1" no si pues concelâ.
+Podarès jessi stât cancelât di cualchidun altri.',
+'cannotdelete-title' => 'No si pues cancelâ la pagjine "$1"',
+'delete-hook-aborted' => 'La cancelazion e je stade anulade di un hook.
+No je une spigazion disponibile.',
+'no-null-revision' => 'No si pues creâ une version vuedie de pagjine "$1"',
'badtitle' => 'Titul sbaliât',
'badtitletext' => 'Il titul de pagjine che tu âs inserît nol è valit, al è vuelit, o al veve un erôr tal colegament tra wiki diviersis o tra versions in altris lenghis.
Al podarès vê dentri caratars che no podin jessi doprâts tai titui.',
+'perfcached' => 'I dats seguints a vegnin di une copie de "cache" dal database e a podaressin no jessi inzornâts. La cache e rive a tignî al massim {{PLURAL:$1|un risultâ disponibil|$1 risultats disponibii}}',
+'perfcachedts' => 'I dats seguints a vegnin di une copie de "cache" dal database dal $1 e a podaressin no jessi inzornâts. La cache e rive a tignî al massim {{PLURAL:$1|un risultâ disponibil|$1 risultats disponibii}}',
+'querypage-no-updates' => 'Inzornaments de pagjine a son al moment sospindûts. I dats metûts no saràn salvâts.',
'viewsource' => 'Cjale risultive',
+'viewsource-title' => 'Cjale il codiç di $1',
+'actionthrottled' => 'Azion ritardade',
+'actionthrottledtext' => 'Come misure anti-spam tu âs des limitazion tal fâ cheste azion masse voltis in toc di timp curt. Il limit al è stât superât. Tu puedis tornâ a provâ fra cualchi minût.',
+'protectedpagetext' => 'Pagjine protete par evitâ modifichis o altris azions.',
'viewsourcetext' => 'Tu puedis viodi e copiâ la risultive di cheste pagjine:',
+'viewyourtext' => 'Tu puedis viodi o copiâ il codiç des "tôs modifichis" in cheste pagjine.',
+'ns-specialprotected' => 'Lis pagjinis specialis no si puedin modificâ',
+'exception-nologin' => 'No tu sês jentrât',
+
+# Virus scanner
+'virus-unknownscanner' => 'antivirus no cognossût:',
# Login and logout pages
-'logouttext' => "'''Tu sâs cumò lât fûr.'''
+'logouttext' => "'''Tu sës cumò lât fûr.'''
-Tu puedis continuâ a doprâ {{SITENAME}} come anonim, o tu puedis <span class='plainlinks'>[$1 jentrâ di gnûf]</span> cul stes o cuntun altri non utent.
Considere che cualchi pagjine e pues mostrâti ancjemò come jentrât tal sît fin cuant che no tu netis la memorie cache dal sgarfadôr.",
'yourname' => 'Non utent',
'yourpassword' => 'Peraule clâf',
'lineno' => 'Rie $1:',
'compareselectedversions' => 'Confronte versions selezionadis',
'editundo' => 'anule',
-'diff-multi' => '({{PLURAL:$1|Une revision intermedie|$1 revisions intermediis}} di {{PLURAL:$2|un utent no mostrade|$2 utents no mostradis}})',
# Search results
'searchresults' => 'Risultâts de ricercje',
'rows' => 'Riis',
'columns' => 'Colonis:',
'searchresultshead' => 'Ricercje',
-'resultsperpage' => 'Risultâts par pagjine',
'stub-threshold' => 'Valôr minim pe formatazion dai <a href="#" class="stub">leams aboç</a> (bytes):',
'recentchangesdays' => 'Numar di zornadis di mostrâ tai ultins cambiaments:',
'recentchangesdays-max' => '(massim $1 {{PLURAL:$1|zornade|zornadis}})',
'timezoneregion-indian' => 'Ocean Indian',
'timezoneregion-pacific' => 'Ocean Pacific',
'allowemail' => 'Ative la ricezion di messaçs email di bande di altris utents¹',
-'prefs-searchoptions' => 'Opzions de ricercje',
+'prefs-searchoptions' => 'Cîr',
'prefs-namespaces' => 'Spazis dai nons',
'defaultns' => 'Se no, cîr in chescj spazis dai nons:',
'default' => 'predeterminât',
'prefs-custom-js' => 'JS personalizât',
'prefs-emailconfirm-label' => 'Conferme de pueste eletroniche:',
'youremail' => 'Email *',
-'username' => 'Non utent:',
+'username' => '{{GENDER:$1|Non utent}}:',
'uid' => 'ID utent:',
'prefs-memberingroups' => 'Al fâs part {{PLURAL:$1|dal grup|dai grups}}:',
'prefs-registration' => 'Date di regjistrazion:',
'wlheader-enotif' => 'Notifiche par pueste eletroniche ativade.',
'wlheader-showupdated' => "Lis pagjinis gambiadis de ultime volte che tu lis âs cjaladis a son mostradis in '''gruessut'''",
'watchlistcontains' => 'Tu stâs tignint di voli $1 {{PLURAL:$1|pagjine|pagjinis}}.',
-'wlnote' => "Ca sot {{PLURAL:$1|al è il cambiament plui recent|a son i '''$1''' cambiaments plui recents}} {{PLURAL:$2|inte ultime ore|intes '''$2''' oris passadis}}.",
'wlshowlast' => 'Mostre ultimis $1 oris $2 zornadis $3',
'watchlist-options' => 'Opzions pe liste dai tignûts di voli',
'tooltip-pt-watchlist' => 'La liste des pagjinis che tu stâs tignint di voli',
'tooltip-pt-mycontris' => 'Liste dai tiei contribûts',
'tooltip-pt-login' => 'La regjistrazion e je conseade, ancje se no obligatorie.',
-'tooltip-pt-anonlogin' => 'La regjistrazion e je conseade, ma no si scugne fâle',
'tooltip-pt-logout' => 'Jes (logout)',
'tooltip-ca-talk' => 'Discussions su cheste pagjine',
'tooltip-ca-edit' => 'Tu puedis cambiâ cheste pagjine. Par plasê dopre il boton de anteprime prime di salvâ.',
$messages = array(
# User preference toggles
'tog-underline' => 'Keppelings ûnderstreekje:',
-'tog-justify' => 'Paragrafen útfolje',
'tog-hideminor' => "Tekstwizigings wei litte út 'Koartlyn feroare'",
'tog-hidepatrolled' => 'Markearre feroarings ferskûlje yn resinte feroarings',
'tog-newpageshidepatrolled' => "Markearre siden ferskûlje yn 'e list mei nije siden",
'tog-numberheadings' => 'Koppen fansels nûmerje',
'tog-showtoolbar' => 'Brûk arkbalke by bewurkjen',
'tog-editondblclick' => 'Dûbelklik jout bewurkingsside (freget JavaScript)',
-'tog-editsection' => 'Jou [bewurk]-keppelings foar seksjebewurking',
'tog-editsectiononrightclick' => 'Rjochtsklik op sekjsetitels jout seksjebewurking (freget JavaScript)',
-'tog-showtoc' => 'Ynhâldsopjefte, foar siden mei mear as twa koppen',
'tog-rememberpassword' => 'Oare kear fansels oanmelde (for a maximum of $1 {{PLURAL:$1|day|days}})',
'tog-watchcreations' => "Set siden dy't jo begjinne yn jo folchlist",
'tog-watchdefault' => "Sides dy't jo feroare hawwe folgje",
'compareselectedversions' => 'Ferlykje selektearre ferzjes',
'showhideselectedversions' => 'Oantikke ferzjes wol/net sjen litte',
'editundo' => 'werom sette',
-'diff-multi' => '({{PLURAL:$1|Ien tuskenlizzende ferzje wurdt|$1 tuskenlizzende ferzjes wurde}} net sjen litten.)',
# Search results
'searchresults' => 'Sykresultaat',
'rows' => 'Rigen',
'columns' => 'Kolommen',
'searchresultshead' => 'Sykje',
-'resultsperpage' => 'Treffers de side',
'stub-threshold' => 'Drompel foar markearring <a href="#" class="stub">stobbe</a> (bytes):',
'recentchangesdays' => 'Dagen om sjen te litten yn Koartlyn feroare:',
'recentchangesdays-max' => '(maksimaal $1 {{PLURAL:$1|dei|dagen}})',
'watchmethod-list' => 'Folge ...',
'watchlistcontains' => 'Jo folgje op it stuit $1 {{PLURAL:$1|side|siden}}.',
'iteminvalidname' => 'Misse namme: "$1" ...',
-'wlnote' => "Dit {{PLURAL:$1|is de lêste feroaring|binne de lêste '''$1''' feroarings}} yn de lêste {{PLURAL:$2|oer|'''$2''' oeren}}.",
'wlshowlast' => 'Lit feroarings sjen fan de lêste $1 oeren $2 dagen $3',
# Displayed when you click the "watch" button and it is in the process of watching
$messages = array(
# User preference toggles
'tog-underline' => 'Folínte faoi naisc:',
-'tog-justify' => 'Comhfhadaigh na paragraif',
'tog-hideminor' => 'Ná taispeáin mionathruithe i measc na n-athruithe is déanaí',
'tog-hidepatrolled' => 'Folaigh giotaí eagartha smachtaithe sna athruithe is déanaí',
'tog-newpageshidepatrolled' => 'Folaigh leathanaigh smachtaithe ó liosta leathanaigh úire',
'tog-numberheadings' => 'Uimhrigh ceannteidil go huathoibríoch',
'tog-showtoolbar' => 'Taispeáin an barra uirlisí eagair (JavaScript)',
'tog-editondblclick' => 'Déghliogáil chun leathanaigh a chur in eagar (JavaScript)',
-'tog-editsection' => 'Cumasaigh mír-eagarthóireacht le naisc mar seo: [athrú]',
'tog-editsectiononrightclick' => 'Cumasaigh mír-eagarthóireacht le deaschliceáil<br /> ar cheannteidil (JavaScript)',
-'tog-showtoc' => "Taispeáin an clár ábhair (d'ailt le níos mó ná 3 ceannteidil)",
'tog-rememberpassword' => 'Cuimhnigh orm ar an ríomhaire seo (ar feadh uastréimhse de $1 {{PLURAL:$1|lá|lá}})',
'tog-watchcreations' => 'Cuir ar mo liosta faire leathanaigh a chruthaím',
'tog-watchdefault' => 'Déan faire ar leathanaigh a athraím',
'lineno' => 'Líne $1:',
'compareselectedversions' => 'Cuir na leagain roghnaithe i gcomparáid',
'editundo' => 'cealaigh',
-'diff-multi' => '({{PLURAL:$1|Leasú idirmheánach amháin|$1 leasú idirmheánach}} le {{PLURAL:$2|úsáideoir amháin|$2 úsáideoirí}} nach thaispeántar.)',
# Search results
'searchresults' => 'Torthaí an chuardaigh',
'rows' => 'Sraitheanna',
'columns' => 'Colúin',
'searchresultshead' => 'Cuardaigh',
-'resultsperpage' => 'Torthaí le taispeáint ó leathanach:',
'stub-threshold-disabled' => 'Díchumasaithe',
'recentchangesdays' => 'Méid laethanta le taispeáint sna hathruithe is déanaí:',
'recentchangesdays-max' => '(uasmhéid $1 {{PLURAL:$1|lá|lá}})',
'watchmethod-list' => 'ag seiceáil na leathanaigh faire ar do chuid athruithe deireanacha',
'watchlistcontains' => 'Tá {{PLURAL:$1|leathanach amháin|$1 leathanaigh}} ar do liosta faire.',
'iteminvalidname' => "Fadhb leis an mír '$1', ainm neamhbhailí...",
-'wlnote' => "Is {{PLURAL:$1|é seo thíos an t-athrú deireanach|iad seo thíos na '''$1''' athruithe deireanacha}} {{PLURAL:$2|san uair deireanach|sna '''$2''' uaire deireanacha}}.",
'wlshowlast' => 'Líon na n-uair is déanaí le taispeáint: $1. Líon na laethanta is déanaí le taispeáint: $2. Taispeáin $3.',
'watchlist-options' => 'Roghanna don liosta faire',
'tooltip-pt-watchlist' => 'Liosta de na leathanaigh a bhfuil tú á bhfaire ar athruithe',
'tooltip-pt-mycontris' => 'Liosta do chuid dréachtaí',
'tooltip-pt-login' => 'Moltar duit logáil isteach, ach níl sé riachtanach.',
-'tooltip-pt-anonlogin' => 'Moltar duit logáil isteach, ach níl sé riachtanach.',
'tooltip-pt-logout' => 'Logáil amach',
'tooltip-ca-talk' => 'Plé maidir leis an leathanach ábhair',
'tooltip-ca-edit' => 'Is féidir leat an leathanach seo a athrú. Más é do thoil é, bain úsáid as an cnaipe réamhamhairc roimh sábháil a dhéanamh.',
$messages = array(
# User preference toggles
'tog-underline' => '下划链接',
-'tog-justify' => '对到段落',
'tog-hideminor' => '该朝子𠮶改动弆到𠮶细修改',
'tog-hidepatrolled' => '到个昼子𠮶修改里头弆到巡查过𠮶编辑',
'tog-newpageshidepatrolled' => '到新页清单里头弆到巡查过𠮶页面',
'tog-numberheadings' => '标题自动编号',
'tog-showtoolbar' => '显示编辑工具栏(JavaScript)',
'tog-editondblclick' => '按两下改吖(JavaScript)',
-'tog-editsection' => '可以用[编写]链接来编写个别段落',
'tog-editsectiononrightclick' => '可以按右键来编写只把子段落(JavaScript)',
-'tog-showtoc' => '超过三只标题就显到目录',
'tog-rememberpassword' => '到个只电脑记到我𠮶密码(至多$1{{PLURAL:$1|日|日}})',
'tog-watchcreations' => '拿偶开嘞𠮶页面加到偶𠮶监视列表',
'tog-watchdefault' => '拿偶改嘞𠮶页面加到偶𠮶监视列表',
'lineno' => '第$1行:',
'compareselectedversions' => '比较拣正𠮶版本',
'editundo' => '还原',
-'diff-multi' => '{{PLURAL:$2|1只用户|$2只用户}}舞𠮶{{PLURAL:$1|一只中途修改|$1只中途修改}}冇拕显示)',
# Search results
'searchresults' => '寻到𠮶结果',
'rows' => '横:',
'columns' => '竖:',
'searchresultshead' => '设置寻到𠮶结果',
-'resultsperpage' => '设置寻到𠮶链接数',
'stub-threshold' => '<a href="#" class="stub">细文链接</a>格式门槛:',
'recentchangesdays' => '最近更改中𠮶显示日数:',
'recentchangescount' => '最近更改中𠮶编辑数:',
'watchmethod-list' => '望吖监视页里头最晏𠮶改动',
'watchlistcontains' => '倷𠮶监视列表包含$1只页面。',
'iteminvalidname' => "页面'$1'出错,无效命名...",
-'wlnote' => "下底系最近'''$2'''钟头内𠮶最晏'''$1'''道修改:",
'wlshowlast' => '显示近来$1钟头$2日$3𠮶改动',
'watchlist-options' => '监视清单选项',
'tooltip-pt-watchlist' => '偶𠮶监视列表',
'tooltip-pt-mycontris' => '偶𠮶贡献列表',
'tooltip-pt-login' => '登入系伓强制𠮶,但佢会有蛮多好处',
-'tooltip-pt-anonlogin' => '登入系伓强制𠮶,但佢会有蛮多好处',
'tooltip-pt-logout' => '登出',
'tooltip-ca-talk' => '内容页𠮶讨论',
'tooltip-ca-edit' => '倷编得正个页,但劳烦倷望佢一眼起再存到佢。',
$messages = array(
# User preference toggles
'tog-underline' => '下劃連結',
-'tog-justify' => '對到段落',
'tog-hideminor' => '該晝子嗰改動弆到嗰細修改',
'tog-hidepatrolled' => '到箇晝子嗰修改裡頭弆到巡查過嗰編輯',
'tog-newpageshidepatrolled' => '到新頁清單裡頭弆到巡查過嗰頁面',
'tog-numberheadings' => '標題自動編號',
'tog-showtoolbar' => '顯示編輯工具欄(JavaScript)',
'tog-editondblclick' => '捺兩下來改下(JavaScript)',
-'tog-editsection' => '可以用[編寫]連結來編寫個別段落',
'tog-editsectiononrightclick' => '可以按右鍵來編寫隻把子段落(JavaScript)',
-'tog-showtoc' => '超過三隻標題就顯到目錄',
'tog-rememberpassword' => '到箇隻電腦記到我嗰密碼(至多$1{{PLURAL:$1|日|日}})',
'tog-watchcreations' => '搦我開嗰頁面加到我嗰監視列表',
'tog-watchdefault' => '搦我改嗰頁面加到我嗰監視列表',
'lineno' => '第$1行:',
'compareselectedversions' => '對比揀正嗰版本',
'editundo' => '還原',
-'diff-multi' => '{{PLURAL:$2|1隻用戶|$2隻用戶}}舞嗰{{PLURAL:$1|一隻中途修改|$1隻中途修改}}冇拕顯示)',
# Search results
'searchresults' => '尋到嗰結果',
'rows' => '橫:',
'columns' => '豎:',
'searchresultshead' => '設置尋到嗰結果',
-'resultsperpage' => '設置尋到嗰連結數',
'stub-threshold' => '<a href="#" class="stub">細文連結</a>格式門檻:',
'recentchangesdays' => '頂晏嗰改動嗰顯示日數:',
'recentchangescount' => '最近更改中嗰編輯數:',
'watchmethod-list' => '望吖監視頁裡頭頂晏嗰改動',
'watchlistcontains' => '倷嗰監視列表包含$1隻頁面。',
'iteminvalidname' => "頁面'$1'出錯,無效命名...",
-'wlnote' => "下底係最近'''$2'''鐘頭內嗰最晏'''$1'''道修改:",
'wlshowlast' => '顯示箇日子$1鐘頭$2日$3嗰改動',
'watchlist-options' => '監視清單選項',
'tooltip-pt-watchlist' => '汝嗰監視列表嗰改動',
'tooltip-pt-mycontris' => '汝嗰貢獻列表',
'tooltip-pt-login' => '汝登入會得佢蠻多惠,但冇人訛得汝。',
-'tooltip-pt-anonlogin' => '汝登入會得佢蠻多惠,但冇人訛得汝。',
'tooltip-pt-logout' => '登出',
'tooltip-ca-talk' => '內容頁嗰討論',
'tooltip-ca-edit' => '汝編得正箇頁,但勞為汝望多一眼起,再存到佢。',
$messages = array(
# User preference toggles
'tog-underline' => 'Fo-loidhneadh nan ceanglaichean:',
-'tog-justify' => 'Taobhaich na h-earrannan',
'tog-hideminor' => 'Falaich mùthaidhean beaga ann an liosta nam mùthaidhean ùra',
'tog-hidepatrolled' => 'Falaich mùthaidhean fo fhaire ann an liosta nam mùthaidhean ùra',
'tog-newpageshidepatrolled' => 'Falaich duilleagan fo fhaire ann an liosta nan duilleagan ùra',
'tog-numberheadings' => 'Cuir àireamhan ri ceann-sgrìobhaidhean leis fhèin',
'tog-showtoolbar' => 'Seall am bàr-inneal deasachaidh',
'tog-editondblclick' => 'Tòisich air deasachadh duilleige le briogadh dùbailte',
-'tog-editsection' => 'Cuir am comas deasachadh earainn le ceanglaichean [deasaich]',
'tog-editsectiononrightclick' => "Cuir an comas deasachadh earrainn le briogadh deas air tiotal de dh'earrainn",
-'tog-showtoc' => 'Seall an clàr-innse (air duilleagan air a bheil barrachd air 3 ceann-sgrìobhaidhean)',
'tog-rememberpassword' => "Cuimhnich gu bheil mi air logadh a-steach air a' choimpiutair seo (suas gu $1 {{PLURAL:$1|latha|latha|làithean|latha}})",
'tog-watchcreations' => "Cuir duilleagan a chruthaicheas mi air a' chlàr-fhaire agam",
'tog-watchdefault' => "Cuir duilleagan a dheasaicheas mi air a' chlàr-fhaire agam",
'youhavenewmessages' => 'Tha $1 ($2) agad.',
'youhavenewmessagesfromusers' => 'Tha $1 o {{PLURAL:$3|aon chleachdaiche|$3 chleachdaiche|$3 cleachdaichean|$3 cleachdaiche}} agad ($2).',
'youhavenewmessagesmanyusers' => 'Tha $1 agad o iomadh cleachdaiche ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|aon teachdaireachd ùr|$1 theachdaireachd ùr|$1 teachdaireachdan ùra|$1 teachdaireachd ùr}}',
-'newmessagesdifflinkplural' => '{{PLURAL:$1|am mùthadh|an $1 mhùthadh|na $1 mùthaidhean|na $1 mùthadh}} mu dheireadh',
+'newmessageslinkplural' => '{{PLURAL:$1|teachdaireachd ùr|theachdaireachd ùr|theachdaireachdan ùra|teachdaireachd ùr}}',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|mhùthadh|mhùthadh|mùthaidhean|mùthadh}} mu dheireadh',
'youhavenewmessagesmulti' => 'Tha teachdaireachdan ùra agad ann an $1',
'editsection' => 'deasaich',
'editold' => 'deasaich',
'invalidtitle-knownnamespace' => 'Tiotal mì-dhligheach leis an namespace "$2" agus an teacsa "$3"',
'invalidtitle-unknownnamespace' => 'Tiotal mì-dhligheach leis an àireamh namespace $1 agus an teacsa "$2"',
'exception-nologin' => 'Chan eil thu air clàradh a-steach',
-'exception-nologin-text' => 'Feumaidh tu clàradh a-steach air an uicipeid seo mus urrainn dhut seo a dhèanamh.',
+'exception-nologin-text' => 'Feumaidh tu [[Special:Userlogin|clàradh a-steach]] mus fhaic thu an duilleag seo no mus urrainn dhut seo a dhèanamh.',
# Virus scanner
'virus-badscanner' => "Droch cho-dhealbhachd: sganair bhìorasan neo-aithnichte: ''$1''",
'passwordtooshort' => "Feumaidh faclan-faire a bhith {{PLURAL:$1|$1 charactar|$1 charactar|$1 caractaran|$1 caractar}} a dh'fhaid air a' char as lugha.",
'password-name-match' => "Chan fhaod am facal-faire 's an t-ainm-cleachdaiche agad a bhith co-ionnann.",
'password-login-forbidden' => "Tha an t-ainm-cleachdaiche 's am facal-faire seo toirmisgte.",
-'mailmypassword' => "Cuir facal-faire ùr thugam air a' phost-dealain",
+'mailmypassword' => 'Ath-shuidhich am facal-faire',
'passwordremindertitle' => 'Facal-faire sealach ùr airson {{SITENAME}}',
'passwordremindertext' => 'Dh\'iarr cuideigin (\'s mathaid gun do dh\'iarr thusa seo on t-seòladh IP $1) facal-faire ùr airson {{SITENAME}} ($4). Chaidh facal-faire sealach a chruthachadh airson "$2" a tha \'na "$3".
Ma bha sin fa-near dhut, bidh agad ri clàradh a-steach agus facal-faire ùr a thaghadh
# Special:PasswordReset
'passwordreset' => 'Ath-shuidhich am facal-faire',
'passwordreset-text-one' => 'Lìon am foirm seo gus am facal-faire agad ath-shuidheachadh.',
-'passwordreset-text-many' => '{{PLURAL:$1|Lìon aon dhe na raointean gus am facal-faire agad ath-shuidheachadh.}}',
+'passwordreset-text-many' => '{{PLURAL:$1|Lìon aon dhe na raointean gus facal-faire sealach fhaighinn ann am post-d.}}',
'passwordreset-legend' => 'Ath-shuidhich am facal-faire',
'passwordreset-disabled' => 'Chaidh ath-shuidheachadh nam faclan-faire a chur à comas air an uicipeid seo.',
'passwordreset-emaildisabled' => "Chaidh feartan a' phuist-d a chur à comas san uicipeid seo.",
'revdelete-hide-user' => 'Ainm-cleachdaiche/seòladh IP an deasaiche',
'revdelete-hide-restricted' => 'Mùch dàta o rianairean agus càch',
'revdelete-radio-same' => '(na atharraich)',
-'revdelete-radio-set' => 'Ri fhaicinn',
-'revdelete-radio-unset' => 'Falaichte',
+'revdelete-radio-set' => 'Falaichte',
+'revdelete-radio-unset' => 'Ri fhaicinn',
'revdelete-suppress' => 'Mùch dàta o rianairean agus càch',
'revdelete-unsuppress' => 'Thoir air falbh na bacaidhean air mùthaidhean a chaidh aiseag',
'revdelete-log' => 'Adhbhar:',
'showhideselectedversions' => 'Seall/Falaich na lèirmheasan a thagh thu',
'editundo' => 'neo-dhèan',
'diff-empty' => '(Gun diofar eatarra)',
-'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
'rclistfrom' => 'Seall na mùthaidhean ùra a-mach o $1',
'rcshowhideminor' => '$1 mùthaidhean beaga',
'rcshowhidebots' => '$1 botaichean',
-'rcshowhideliu' => '$1 neach-cleachdaidh air logadh a-steach',
+'rcshowhideliu' => '$1 neach-cleachdaidh clàraichte',
'rcshowhideanons' => '$1 luchd-cleachdaidh gun ainm',
'rcshowhidepatr' => '$1 na deasachaidhean fo aire freiceadain',
'rcshowhidemine' => '$1 na mùthaidhean agam',
'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.',
-'wlnote' => 'Seo {{PLURAL:$1|an $1 mhùthadh|$1 mhùthadh|na $1 mùthaidhean|$1 mùthadh}} mu dheireadh san {{PLURAL:$2|$2 uair a thìde|$2 uair a thìde|$2 uairean a thìde|$2 uair a thìde}} mu dheireadh, mar a bha e $3, $4.',
'wlshowlast' => 'Seall na $1 uairean a thìde mu dheireadh $2 làithean mu dheireadh $3',
'watchlist-options' => 'Roghainnean mo chlàir-faire',
'others' => 'eile',
'siteusers' => '{{PLURAL:$2|cleachdaiche|cleachdaichean}} {{SITENAME}} $1',
+# Info page
+'pageinfo-toolboxlink' => 'Fiosrachadh mun duilleag',
+
# Browsing diffs
'previousdiff' => '← Mùthadh nas sine',
'nextdiff' => 'Deasachadh nas ùire →',
'file-info-size' => '$1 × $2 pixel, meud an fhaidhle: $3, seòrsa MIME: $4',
'file-nohires' => 'Chan eil dùmhlachd-bhreacaidh nas fhearr ri fhaighinn.',
'svg-long-desc' => 'Faidhle SVG, a-rèir ainm $1 × $2 pixel, meud faidhle: $3',
-'show-big-image' => 'Dùmhlachd-bhreacaidh shlàn',
+'show-big-image' => 'Am faidhle tùsail',
# Special:NewFiles
'ilsubmit' => 'Rannsaich',
$messages = array(
# User preference toggles
'tog-underline' => 'Subliñar as ligazóns:',
-'tog-justify' => 'Xustificar os parágrafos',
'tog-hideminor' => 'Agochar as edicións pequenas nos cambios recentes',
'tog-hidepatrolled' => 'Agochar as edicións patrulladas nos cambios recentes',
'tog-newpageshidepatrolled' => 'Agochar as páxinas revisadas da lista de páxinas novas',
'tog-numberheadings' => 'Numerar automaticamente as cabeceiras',
'tog-showtoolbar' => 'Mostrar a barra de ferramentas de edición',
'tog-editondblclick' => 'Editar as páxinas logo de facer dobre clic',
-'tog-editsection' => 'Permitir a edición de seccións mediante as ligazóns "[editar]"',
'tog-editsectiononrightclick' => 'Permitir a edición de seccións premendo co botón dereito nos títulos das seccións',
-'tog-showtoc' => 'Mostrar o índice (para as páxinas con máis de tres cabeceiras)',
'tog-rememberpassword' => 'Lembrar o meu contrasinal neste navegador (ata $1 {{PLURAL:$1|día|días}})',
'tog-watchcreations' => 'Engadir as páxinas que cree e os ficheiros que cargue á miña lista de vixilancia',
'tog-watchdefault' => 'Engadir as páxinas e os ficheiros que edite á miña lista de vixilancia',
'retypenew' => 'Insira outra vez o novo contrasinal:',
'resetpass_submit' => 'Establecer o contrasinal e acceder ao sistema',
'changepassword-success' => 'O seu contrasinal modificouse correctamente!',
+'changepassword-throttled' => 'Fixo demasiados intentos de acceder ao sistema.
+Por favor, agarde $1 antes de probar outra vez.',
'resetpass_forbidden' => 'Non se poden mudar os contrasinais',
'resetpass-no-info' => 'Debe rexistrarse para acceder directamente a esta páxina.',
'resetpass-submit-loggedin' => 'Cambiar o contrasinal',
'changeemail-password' => 'O seu contrasinal en {{SITENAME}}:',
'changeemail-submit' => 'Cambiar o correo electrónico',
'changeemail-cancel' => 'Cancelar',
+'changeemail-throttled' => 'Fixo demasiados intentos de acceder ao sistema.
+Por favor, agarde $1 antes de probar outra vez.',
# Special:ResetTokens
'resettokens' => 'Restablecer os pases',
'content-not-allowed-here' => 'O contido "$1" non está permitido na páxina "[[$2]]"',
'editwarning-warning' => 'Deixar esta páxina pode causar a perda de calquera cambio feito.
Se accedeu ao sistema, pode desactivar esta mensaxe de advertencia na sección "Edición" das súas preferencias.',
+'editpage-notsupportedcontentformat-title' => 'Formato de contido non admitido',
+'editpage-notsupportedcontentformat-text' => 'O formato de contido $1 non é compatible co modelo de contido $2.',
# Content models
'content-model-wikitext' => 'texto wiki',
'cantcreateaccount-text' => "A creación de contas desde este enderezo IP ('''$1''') foi bloqueada por [[User:$3|$3]].
A razón dada por $3 foi ''$2''",
-'cantcreateaccount-range-text' => "A creación de contas dende direccións IP no rango '''$1''', e que inclúe á súa dirección IP ('''$4'''), foi bloqueada polo usuario [[User:$3|$3]].
+'cantcreateaccount-range-text' => "O usuario [[User:$3|$3]] bloqueou a creación de contas desde enderezos IP no rango '''$1''', no que se inclúe o seu enderezo IP ('''$4''').
-A razón dada por $3 foi ''$2''.",
+A razón que deu $3 foi ''$2''.",
# History pages
'viewpagelogs' => 'Ver os rexistros desta páxina',
'compareselectedversions' => 'Comparar as versións seleccionadas',
'showhideselectedversions' => 'Mostrar/Agochar as versións seleccionadas',
'editundo' => 'desfacer',
-'diff-empty' => '(Sen diferenzas)',
-'diff-multi' => '(Non se {{PLURAL:$1|mostra unha revisión|mostran $1 revisións}} do historial {{PLURAL:$1|feita|feitas}} por {{PLURAL:$2|un usuario|$2 usuarios}}.)',
+'diff-empty' => '(Sen diferenzas.)',
+'diff-multi-sameuser' => '(Non se {{PLURAL:$1|mostra unha revisión|mostran $1 revisións}} do historial {{PLURAL:$1|feita|feitas}} polo mesmo usuario.)',
+'diff-multi-otherusers' => '(Non se {{PLURAL:$1|mostra unha revisión|mostran $1 revisións}} do historial {{PLURAL:$1|feita|feitas}} por {{PLURAL:$2|outro usuario|$2 usuarios}}.)',
'diff-multi-manyusers' => '(Non se {{PLURAL:$1|mostra unha revisión|mostran $1 revisións}} do historial {{PLURAL:$1|feita|feitas}} por máis {{PLURAL:$2|dun usuario|de $2 usuarios}}.)',
'difference-missing-revision' => 'Non se {{PLURAL:$2|atopou revisión ningunha|atoparon $2 revisións}} desta diferenza ($1).
'nextn-title' => '{{PLURAL:$1|O seguinte resultado|Os seguintes $1 resultados}}',
'shown-title' => 'Mostrar $1 {{PLURAL:$1|resultado|resultados}} por páxina',
'viewprevnext' => 'Ver as ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-exists' => "* Páxina \"'''[[\$1]]'''\"",
-'searchmenu-new' => "'''Crear a páxina \"[[:\$1]]\" neste wiki!'''",
+'searchmenu-exists' => '<strong>Xa existe unha páxina chamada "[[:$1]]" neste wiki.</strong> {{PLURAL:$2|0=|Bótelle unha ollada tamén aos outros resultados atopados.}}',
+'searchmenu-new' => '<strong>Crear a páxina "[[:$1]]" neste wiki!</strong> {{PLURAL:$2|0=|Bótelle unha ollada tamén á páxina atopada na súa procura.|Bótelle unha ollada tamén aos resultados atopados.}}',
'searchprofile-articles' => 'Páxinas de contido',
'searchprofile-project' => 'Páxinas do proxecto e de axuda',
'searchprofile-images' => 'Multimedia',
'search-result-score' => 'Relevancia: $1%',
'search-redirect' => '(redirixido desde "$1")',
'search-section' => '(sección "$1")',
+'search-file-match' => '(coincide co contido do ficheiro)',
'search-suggest' => 'Quizais quixo dicir: $1',
'search-interwiki-caption' => 'Proxectos irmáns',
'search-interwiki-default' => 'Resultados en $1:',
'rows' => 'Filas:',
'columns' => 'Columnas:',
'searchresultshead' => 'Procurar',
-'resultsperpage' => 'Número de resultados por páxina:',
'stub-threshold' => 'Límite superior para o formato de <a href="#" class="stub">ligazóns de bosquexo</a> (bytes):',
'stub-threshold-disabled' => 'Desactivado',
'recentchangesdays' => 'Número de días a mostrar nos cambios recentes:',
[[File:$1|thumb|center|$1]]',
'file-exists-duplicate' => 'Este ficheiro é un duplicado {{PLURAL:$1|do seguinte|dos seguintes}}:',
'file-deleted-duplicate' => 'Un ficheiro idéntico a este ("[[:$1]]") foi borrado previamente. Debería comprobar o historial de borrados do ficheiro antes de proceder a cargalo de novo.',
+'file-deleted-duplicate-notitle' => 'Un ficheiro idéntico a este foi borrado con anterioridade e o título foi suprimido.
+Debería contactar con alguén capaz de ver os datos de ficheiros borrados para que revise esta situación antes de subilo de novo.',
'uploadwarning' => 'Advertencia ao cargar o ficheiro',
'uploadwarning-text' => 'Por favor, modifique a descrición do ficheiro e inténteo de novo.',
'savefile' => 'Gardar o ficheiro',
# File backend
'backend-fail-stream' => 'Non se puido transmitir o ficheiro "$1".',
'backend-fail-backup' => 'Non se puido facer unha copia de seguridade do ficheiro "$1".',
-'backend-fail-notexists' => 'Non existe o ficheiro "$1".',
+'backend-fail-notexists' => 'O ficheiro "$1" non existe.',
'backend-fail-hashes' => 'Non se puideron obter os cardinais do ficheiro por comparación.',
'backend-fail-notsame' => 'Xa existe un ficheiro chamado "$1", con contidos diferentes.',
'backend-fail-invalidpath' => '"$1" non é unha ruta de almacenamento válida.',
'protectedpages' => 'Páxinas protexidas',
'protectedpages-indef' => 'Só as proteccións indefinidas',
'protectedpages-cascade' => 'Só as proteccións en serie',
+'protectedpages-noredirect' => 'Agochar as redireccións',
'protectedpagesempty' => 'Actualmente non hai ningunha páxina protexida con eses parámetros.',
'protectedtitles' => 'Títulos protexidos',
'protectedtitlesempty' => 'Actualmente non hai ningún título protexido con eses parámetros.',
'watchmethod-list' => 'comprobando as páxinas vixiadas na procura de edicións recentes',
'watchlistcontains' => 'A súa lista de vixilancia ten $1 {{PLURAL:$1|páxina|páxinas}}.',
'iteminvalidname' => 'Hai un problema co elemento "$1", nome non válido...',
-'wlnote' => "A continuación {{PLURAL:$1|está a última modificación|están as últimas '''$1''' modificacións}} {{PLURAL:$2|na última hora|nas últimas '''$2''' horas}} ata o $3 ás $4.",
+'wlnote2' => 'A continuación están as modificacións feitas {{PLURAL:$1|na última hora|nas últimas <strong>$1</strong> horas}}, ata o $2 ás $3.',
'wlshowlast' => 'Mostrar as últimas $1 horas, os últimos $2 días ou $3',
'watchlist-options' => 'Opcións de vixilancia',
'delete-warning-toobig' => 'Esta páxina conta cun historial de edicións longo, de máis {{PLURAL:$1|dunha revisión|de $1 revisións}}.
Ao eliminala pódense provocar problemas de funcionamento nas operacións da base de datos de {{SITENAME}};
proceda con coidado.',
+'deleting-backlinks-warning' => "'''Atención:''' Outras páxinas conteñen unha ligazón ou unha transclusión da páxina que está a piques de borrar.",
# Rollback
'rollback' => 'Reverter as edicións',
Olle a [[Special:BlockList|lista de bloqueos]] para revisalo.',
'ipb-blockingself' => 'Está a piques de se bloquear! Está seguro de querer facelo?',
'ipb-confirmhideuser' => 'Está a piques de bloquear un usuario coa opción "agochar o usuario" activada. Isto suprime o nome de usuario de todas as listas e entradas de rexistro. Está seguro de querer facelo?',
+'ipb-confirmaction' => 'Se está seguro de querer facelo, marque o campo "{{int:ipb-confirm}}" ao final.',
'ipb-edit-dropdown' => 'Editar os motivos de bloqueo',
'ipb-unblock-addr' => 'Desbloquear a $1',
'ipb-unblock' => 'Desbloquear un usuario ou enderezo IP',
'range_block_disabled' => 'A funcionalidade de administrador de crear rangos de bloqueos está deshabilitada.',
'ipb_expiry_invalid' => 'O tempo de duración non é válido.',
'ipb_expiry_temp' => 'Os bloqueos a nomes de usuario agochados deberían ser permanentes.',
-'ipb_hide_invalid' => 'Non se pode suprimir esta conta; se cadra, ten moitas edicións.',
+'ipb_hide_invalid' => 'Non se pode suprimir esta conta; ten máis {{PLURAL:$1|dunha edición|de $1 edicións}}.',
'ipb_already_blocked' => '"$1" xa está bloqueado',
'ipb-needreblock' => '$1 xa está bloqueado. Quere cambiar as configuracións?',
'ipb-otherblocks-header' => '{{PLURAL:$1|Outro bloqueo|Outros bloqueos}}',
'allmessages-prefix' => 'Filtrar por prefixo:',
'allmessages-language' => 'Lingua:',
'allmessages-filter-submit' => 'Mostrar',
+'allmessages-filter-translate' => 'Traducir',
# Thumbnails
'thumbnail-more' => 'Ampliar',
'importuploaderrortemp' => 'Fallou o envío do ficheiro de importación. Falta un cartafol temporal.',
'import-parse-failure' => 'Fallo de análise da importación de XML',
'import-noarticle' => 'Ningunha páxina para importar!',
-'import-nonewrevisions' => 'Todas as revisións foron importadas previamente.',
+'import-nonewrevisions' => 'Non se importou ningunha revisión (xa estaban todas presentes ou saltáronse por erros).',
'xml-error-string' => '$1 na liña $2, columna $3 (byte $4): $5',
'import-upload' => 'Cargar datos XML',
'import-token-mismatch' => 'Perdéronse os datos da sesión. Por favor, inténteo de novo.',
'import-error-special' => 'Non se pode importar a páxina "$1" porque pertence a un espazo de nomes especial que non o permite.',
'import-error-invalid' => 'Non se pode importar a páxina "$1" porque o seu nome non é válido.',
'import-error-unserialize' => 'Non se puido deserializar a revisión $2 da páxina "$1". Informouse de que a revisión usa o modelo de contido $3 serializado como $4.',
+'import-error-bad-location' => 'Non se pode almacenar a revisión $2 que usa o modelo de contido $3 na páxina "$1" deste wiki, dado que ese modelo non está soportado nesa páxina.',
'import-options-wrong' => '{{PLURAL:$2|Opción incorrecta|Opcións incorrectas}}: <nowiki>$1</nowiki>',
'import-rootpage-invalid' => 'A páxina raíz dada é un título non válido.',
'import-rootpage-nosubpage' => 'O espazo de nomes "$1" da páxina raíz non permite as subpáxinas.',
'tooltip-pt-watchlist' => 'A lista de páxinas cuxas modificacións está a seguir',
'tooltip-pt-mycontris' => 'Lista das súas contribucións',
'tooltip-pt-login' => 'Recoméndaselle rexistrarse, se ben non é obrigatorio.',
-'tooltip-pt-anonlogin' => 'Recoméndaselle rexistrarse, se ben non é obrigatorio.',
'tooltip-pt-logout' => 'Saír ao anonimato',
'tooltip-ca-talk' => 'Conversa acerca do contido desta páxina',
'tooltip-ca-edit' => 'Pode modificar esta páxina; antes de gardala, por favor, utilice o botón de vista previa',
'version-parser-function-hooks' => 'Asociadores da función do analizador',
'version-hook-name' => 'Nome do asociador',
'version-hook-subscribedby' => 'Subscrito por',
-'version-version' => '(Versión $1)',
-'version-license' => 'Licenza',
+'version-version' => '($1)',
+'version-license' => 'Licenza de MediaWiki',
+'version-ext-license' => 'Licenza',
+'version-ext-colheader-name' => 'Extensión',
+'version-ext-colheader-version' => 'Versión',
+'version-ext-colheader-license' => 'Licenza',
+'version-ext-colheader-description' => 'Descrición',
+'version-ext-colheader-credits' => 'Autores',
+'version-license-title' => 'Licenza para $1',
+'version-license-not-found' => 'Non se atopou información detallada de licenza para esta extensión.',
+'version-credits-title' => 'Receñecemento para $1',
+'version-credits-not-found' => 'Non se atopou información detallada de recoñecemento para esta extensión.',
'version-poweredby-credits' => "Este wiki está desenvolvido por '''[https://www.mediawiki.org/wiki/MediaWiki/gl MediaWiki]''', dereitos de autoría © 2001-$1 $2.",
'version-poweredby-others' => 'outros',
'version-poweredby-translators' => 'os tradutores de translatewiki.net',
'api-error-overwrite' => 'Non está permitido sobrescribir un ficheiro existente.',
'api-error-stashfailed' => 'Erro interno: O servidor non puido almacenar o ficheiro temporal.',
'api-error-publishfailed' => 'Erro interno: O servidor non puido publicar o ficheiro temporal.',
+'api-error-stasherror' => 'Houbo un erro ao subir o ficheiro ao depósito.',
'api-error-timeout' => 'O servidor non respondeu no tempo esperado.',
'api-error-unclassified' => 'Houbo un erro descoñecido.',
'api-error-unknown-code' => 'Erro descoñecido: "$1"',
'expand_templates_generate_rawhtml' => 'Mostrar o HTML en bruto',
'expand_templates_preview' => 'Vista previa',
+# Unknown messages
+'uploadinvalidxml' => 'Non se puido analizar o XML do ficheiro cargado.',
);
'lineno' => 'Line ank $1:',
'compareselectedversions' => 'Nivodloleo uzollneo comparar kor',
'editundo' => "rod'd kor",
-'diff-multi' => "({{PLURAL:$2|Eka vapuddpean|$2 vapuddpeamni}} {{PLURAL:$1|kel'li ek modli uzollnni|kel'leo $1 modleo uzollnneo}} dakhonk nant)",
# Search results
'searchresults' => 'Sodacho nikal',
$messages = array(
# User preference toggles
'tog-underline' => 'Ὑπογραμμίζειν συνδέσμους:',
-'tog-justify' => 'Στοιχίζειν παραγράφους',
'tog-hideminor' => 'Κρύπτειν ἥττονας μεταγραφὰς ἐν προσφάτοις ἀλλαγαῖς',
'tog-hidepatrolled' => 'Κρύπτειν τὰς περιπολουμένας μεταγραφὰς ἐν ταῖς προσφάτοις ἀλλαγαῖς',
'tog-newpageshidepatrolled' => 'Κρύπτειν τὰς περιπολουμένας μεταγραφὰς ὑπὸ τῆς διαλογῆς νέων δέλτων',
'tog-numberheadings' => 'Ἐξαριθμεῖν ἐπικεφαλίδας αὐτομάτως',
'tog-showtoolbar' => 'Δεικνύναι τὴν τῶν ἐργαλείων μεταγραφῆς μετώπην (ἀπαιτεῖται JavaScript)',
'tog-editondblclick' => 'Ἐπὶ δέλτων δὶς θλίψας, μετάγραψον αὐτάς (ἀπαιτεῖται JavaScript)',
-'tog-editsection' => 'Τμήματος μεταγραφὴν διὰ τῶν συνδέσμων «[μεταγράφειν]» καθιστάναι δυνατήν',
'tog-editsectiononrightclick' => 'Καθιστάναι δυνατὸν τὸ μεταγράφειν τμήματα διὰ τοῦ ἐπὶ τῶν ἐπιγραφῶν τῶν τμημάτων θλίβειν δεξιῶς (ἀπαιτεῖται JavaScript)',
-'tog-showtoc' => 'Δεικνύναι πίνακα περιεχομένων (ἐν δέλτοις περιεχούσαις πλείους τῶν 3 ἐπικεφαλίδων)',
'tog-rememberpassword' => 'Ἐνθυμεῖσθαι τὴν ἐμὴν σύνδεσιν ἐν τῇδε τῇ ὑπολογιστικῇ μηχανῇ (μέγιστον $1 {{PLURAL:$1|ἡμέρα|ἡμέραι}})',
'tog-watchcreations' => 'Προστιθέναι τὰς δέλτους ἃς ποιῶ τοῖς ἐφορωμένοις μου',
'tog-watchdefault' => 'Προστιθέναι τὰς δέλτους ἃς μεταγράφω τοῖς ἐφορωμένοις μου',
'compareselectedversions' => 'Συγκρίνειν τὰς ἐπειλεγμένας δέλτους',
'showhideselectedversions' => 'Δεικνύειν/κρύπτειν τὰς ἐπειλεγμένας ἐκδόσεις',
'editundo' => 'ἀναίρεσις',
-'diff-multi' => '({{PLURAL:$1|Μία ἐνδιάμεσος ἀναθεώρησις|$1 ἐνδιάμεσοι ἀναθεωρήσεις}} οὐ φαίνονται.)',
# Search results
'searchresults' => 'Ἀποτελέσματα ἀναζητήσεως',
'rows' => 'Σειραί:',
'columns' => 'Στῆλαι:',
'searchresultshead' => 'Ζητεῖν',
-'resultsperpage' => 'Ἀποτελέσματα ἀνά δέλτον:',
'stub-threshold' => 'Ἄνω φράγμα διὰ τοῦς <a href="#" class="stub">συνδέσμους πρὸς λείμματα</a> (δυφία):',
'stub-threshold-disabled' => 'Ἀπενεργηθέν',
'recentchangesdays' => 'Αἱ ἡμέραι αἱ δεικτέαι ἐν ταῖς προσφάτοις ἀλλαγαῖς:',
'watchmethod-list' => 'ἐλέγχειν ἐφορωμένας δέλτους περὶ μεταγραφὰς προσφάτους',
'watchlistcontains' => 'Ἡ ἐφοροδιαλογὴ σου περιέχει $1 {{PLURAL:$1|δέλτον|δέλτους}}.',
'iteminvalidname' => "Πρόβλημα τεμαχἰου '$1', ἄκυρον ὄνομα...",
-'wlnote' => "Κατωτέρω {{PLURAL:$1|ἐστὶν ἡ ὑστάτη μεταβολὴ|εἰσὶν αἱ ὑστάται '''$1''' μεταβολαὶ}} ἐν {{PLURAL:$2|τῇ ὑστάτῃ μίᾳ ὥρᾳ|ταῖς ὑστάταις '''$2''' ὥραις}}.",
'wlshowlast' => 'Ἐμφάνισις τῶν τελευταίων $1 ὡρῶν $2 ἡμερῶν $3',
'watchlist-options' => 'Ἐπιλογαὶ ἐφοροδιαλογῆς',
'tooltip-pt-watchlist' => 'Κατάλογος τῶν ἐφορωμένων μου',
'tooltip-pt-mycontris' => 'Κατάλογος τῶν ἐράνων σου',
'tooltip-pt-login' => 'Ἐπιθυμητὸν τὸ συνδεῖσθαι, οὐχ ὑποχρεωτικόν.',
-'tooltip-pt-anonlogin' => 'Ἐπιθυμητὸν τὸ συνδεῖσθαι, οὐχ ὑποχρεωτικόν.',
'tooltip-pt-logout' => 'Ἐξέρχεσθαι',
'tooltip-ca-talk' => 'Διάλεξις περὶ τῆς δέλτου',
'tooltip-ca-edit' => 'Ἔξεστί σοι μεταγράφειν τήνδε τὴν δέλτον. Προθεωρεῖν πρὶν ἂν γράφῃς τὴν δέλτον.',
$messages = array(
# User preference toggles
'tog-underline' => 'Links unterstryche',
-'tog-justify' => 'Tekscht als Blocksatz',
'tog-hideminor' => 'Keini «chlyni Änderige» aazeige',
'tog-hidepatrolled' => 'Vum Fäldhieter aagluegti Änderige in dr „Letschte Änderige“ usblände',
'tog-newpageshidepatrolled' => 'Aagluegti Syten uf dr Lischt „Neiji Syte“ verstecke',
'tog-numberheadings' => 'Überschrifte outomatisch numeriere',
'tog-showtoolbar' => 'Wärchzyyglyscht zum Bearbeite aazeige',
'tog-editondblclick' => 'Syte ändere mit Doppelklick',
-'tog-editsection' => 'Links aazeige für ds Bearbeite vo einzelnen Absätz',
'tog-editsectiononrightclick' => 'Einzelni Absätz ändere mit Rächtsclick uf d Iberschrifte',
-'tog-showtoc' => 'Inhaltsverzeichnis aazeige bi Artikle mit meh als drei Überschrifte',
'tog-rememberpassword' => 'Mit däm Browser duurhaft aamälde (Maximal fir $1 {{PLURAL:$1|Tag|Täg}})',
'tog-watchcreations' => 'Sälber gmachti Sytene un uffegladeni Dateie automatisch beobachte',
'tog-watchdefault' => 'Sälber gändereti Syte un Dateie automatisch beobachte',
'showhideselectedversions' => 'Uusgwehlti Versione zeige/verstecke',
'editundo' => 'rückgängig',
'diff-empty' => '(kei Unterschid)',
-'diff-multi' => '({{PLURAL:$1|Ei Version|$1 Versione}} vu {{PLURAL:$2|eim Benutzer|$2 Benutzer}}, {{PLURAL:$1|wu derzwische lyt, wird|wu derzwische lige, wäre}} nit aazeigt)',
'diff-multi-manyusers' => '({{PLURAL:$1|Ei Version|$1 Versione}} vu meh {{PLURAL:$2|eim Benutzer|$2 Benutzer}}, {{PLURAL:$1|wu derzwische lyt un nit aazeigt wird|wu derzwische lige un nit aazeigt wäre}})',
'difference-missing-revision' => '{{PLURAL:$2|Ei Version|$2 Versione}} vui däre Unterschidsaazeig ($1) {{PLURAL:$2|isch|sin}} nit gfunde wore.
'rows' => 'Zylene',
'columns' => 'Spaltene',
'searchresultshead' => 'Suech-Ergäbnis',
-'resultsperpage' => 'Träffer pro Syte',
'stub-threshold' => 'Gleichformatierig <a href="#" class="stub">vu chleine Syte</a> (in Byte):',
'stub-threshold-disabled' => 'Deaktiviert',
'recentchangesdays' => 'Aazahl vu dr Täg, wu d Lischt vu dr „Letschte Änderige“ standardmässig soll umfasse:',
'youremail' => 'E-Mail-Adräss:',
'username' => '{{GENDER:$1|Benutzername}}:',
'uid' => '{{GENDER:$1|Benutzernummere}}:',
-'prefs-memberingroups' => '{{GENDER:$2|Mitglid}} vu dr {{PLURAL:$1|Benutzergruppe|Benutzergruppe}}:',
+'prefs-memberingroups' => '{{GENDER:$2|Mitglid}} vu dr {{PLURAL:$1|Benutzergruppe}}:',
'prefs-registration' => 'Aamäldzyt:',
'yourrealname' => 'Echte Name:',
'yourlanguage' => 'Sproch:',
'gender-unknown' => 'Ich wett doderzue kei Aagab mache',
'gender-male' => 'Är schafft an Syte',
'gender-female' => 'Si schafft an Syte',
-'prefs-help-gender' => 'Optional: bruucht fir gschlächtsspezifischi Adrässierig dur d Software. Die Information isch effentlig.',
+'prefs-help-gender' => 'Optional: bruucht fir gschlächtsspezifischi Adrässierig dur d Software. Die Information isch effentlig.
+
+Des isch e frejwilligi Aagab. D Software brucht si go Di aarede un as Hiiwys fir anderi dur d Verwändig vum grammatische Gschlächt. Die Information isch effetli.',
'email' => 'E-Mail',
'prefs-help-realname' => '* <strong>Dyy ächte Name</strong> (optional): Wänn du wetsch, ass Dyyni Änderige uf Dii chenne zruckgfierd wäre.',
'prefs-help-email' => 'D Aagab vun ere E-Mail isch optional, macht aber s Zueschicke vun eme Ersatzpasswort meglig, wänn Du dyy Passwort vergässe hesch.',
'prefs-signature' => 'Unterschrift',
'prefs-dateformat' => 'Datumsformat',
'prefs-timeoffset' => 'Zytunterschid',
-'prefs-advancedediting' => 'Erwytereti Optione',
+'prefs-advancedediting' => 'Allgmeini Optione',
'prefs-advancedrc' => 'Erwytereti Optione',
'prefs-advancedrendering' => 'Erwytereti Optione',
'prefs-advancedsearchoptions' => 'Erwytereti Optione',
'userrights-no-interwiki' => 'Du hesch nit d Berächtigung, Benutzerrächt in andere Wiki z ändere.',
'userrights-nodatabase' => 'D Datebank $1 git s nit oder si isch nit lokal.',
'userrights-nologin' => 'Du muesch Di mit eme Ammanne-Benutzerkonto [[Special:UserLogin|aamälde]], zum Benutzerrächt z ändere.',
-'userrights-notallowed' => 'Du hesch nit d Berächtigung zum Benutzerrächt vergee.',
+'userrights-notallowed' => 'Du hesch nit d Berächtigung zum Benutzerrächt vergee oder ewägnee.',
'userrights-changeable-col' => 'Gruppezuegherigkeit, wu Du chasch ändere',
'userrights-unchangeable-col' => 'Gruppezuegherigkeit, wu Du nit chasch ändere',
'right-reupload-shared' => 'Lokals Iberschryybe vun ere Datei, wu in eme gmeinsam gnutzte Repositorium vorhanden isch',
'right-upload_by_url' => 'E Datei uffelade vun ere URL-Adräss',
'right-purge' => 'Sytecache lääre ohni Ruckfrog',
-'right-autoconfirmed' => 'Halbgschitzti Syte bearbeite',
+'right-autoconfirmed' => 'Kei Bschränkig dur IP-basierti Limit',
'right-bot' => 'Behandlig as automatische Prozess',
'right-nominornewtalk' => 'Chleini Bearbeitige an Diskussionssyte fiehre nit zuen ere „Neiji Nochrichte“-Aazeig',
'right-apihighlimits' => 'Hecheri Limit in API-Abfroge',
'right-ipblock-exempt' => 'Uusnahm vu IP-Sperrine, Autoblock und Rangesperre',
'right-proxyunbannable' => 'Uusnahm vu automatische Proxysperrine',
'right-unblockself' => 'Sich sälber entsperre',
-'right-protect' => 'Syteschutzstatus änderen un gschitzti Syte bearbeite',
+'right-protect' => 'Syteschutzstatus änderen un kaskadegschitzti Syte bearbeite',
'right-editprotected' => 'Gschitzti Syte bearbeite (ohni Kaskadeschutz)',
'right-editinterface' => 'Benutzerinterface bearbeite',
'right-editusercssjs' => 'Bearbeite vu CSS- und JS-Dateie vu andere Benutzer',
'recentchanges-legend' => 'Optione vu dr Aazeig',
'recentchanges-summary' => 'Uf däre Syte chasch di letschte Änderige in däm Wiki aaluege.',
'recentchanges-feed-description' => 'Di letschten Änderige vo {{SITENAME}} i däm Feed abonniere.',
-'recentchanges-label-newpage' => 'Die Bearbeitig het e neji Syte aagleit',
+'recentchanges-label-newpage' => 'Mit däre Bearbeitig isch e neji Syte aagleit wore',
'recentchanges-label-minor' => 'Des isch e chleini Änderig',
'recentchanges-label-bot' => 'Die Bearbeitig isch dur e Bott uusgfiert wore',
'recentchanges-label-unpatrolled' => 'Die Bearbeitig isch nonig vun eme Fäldhieter aagluegt wore',
'recentchanges-label-plusminus' => 'Di gänderet Sytegreßi (Aazahl in Byte)',
-'recentchanges-legend-newpage' => '$1 - neji Syte',
+'recentchanges-legend-newpage' => '(lueg au d [[Special:NewPages|Lischt vu neie Syte]])',
'rcnotefrom' => 'Des sin d Ändrige syter <b>$2</b> (bis zem <b>$1</b> zeigt).',
'rclistfrom' => '<small>Nöji Änderige ab $1 aazeige (UTC)</small>',
'rcshowhideminor' => 'Chlynigkeite $1',
'rcshowhidebots' => 'Bots $1',
-'rcshowhideliu' => 'Aagmoldene Benützer $1',
+'rcshowhideliu' => 'Regischtrierti Benutzer $1',
'rcshowhideanons' => 'Nid aagmäldete Benutzer $1',
'rcshowhidepatr' => 'Vum Fäldhieter aagluegti Änderige $1',
'rcshowhidemine' => 'Eigeni Änderige $1',
'backend-fail-notsame' => 'S git scho ne Datei $1, wu nit idäntisch isch.',
'backend-fail-invalidpath' => '$1 isch kei giltige Pfad zum Spychere.',
'backend-fail-delete' => 'D Datei $1 het nit glöscht werre kinne.',
+'backend-fail-describe' => 'D Metadate fir d Datei „$1“ hän nit chenne gänderet wäre.',
'backend-fail-alreadyexists' => 'D Datei „$1“ git s scho.',
'backend-fail-store' => 'D Datei $1 het nit chenne unter em Name $2 gspycheret wäre.',
'backend-fail-copy' => 'D Datei $1 het nit no $2 chenne kopiert wäre.',
'upload_source_file' => ' (e Datei uf Dyynem Computer)',
# Special:ListFiles
-'listfiles-summary' => 'Die Spezialsyte lischtet alli uffegladene Dateie uf. Wänn noch eme bstimmte Benutzer gfilteret wird, wäre nume die Dateie zeigt, wun er di letschte Version uffeglade het.',
+'listfiles-summary' => 'Die Spezialsyte lischtet alli uffegladene Dateie uf.',
'listfiles_search_for' => 'Suech noch Datei:',
'imgfile' => 'Datei',
'listfiles' => 'Lischte vo Bilder',
'statistics-users-active-desc' => 'Benutzer mit Bearbeitige {{PLURAL:$1|in dr letschte 24 Stund|in dr letschte $1 Täg}}',
'statistics-mostpopular' => 'Am meischte aagluegti Syte',
+'pageswithprop' => 'Syte mit ere Syteneigeschaft',
+'pageswithprop-legend' => 'Syte mit ere Syteneigeschaft',
+'pageswithprop-text' => 'Die Spezialsyte lischet Syten auf, wu ne bstimmti Syteneigeschaft bruche.',
+'pageswithprop-prop' => 'Eigeschaftsname:',
+'pageswithprop-submit' => 'Gang ane',
+
'doubleredirects' => 'Doppleti Wyterleitige (Redirects)',
'doubleredirectstext' => 'Die Lischt zeigt Wyterleitige, wu uf anderi Wyterleitige verwyyse.
In jedere Zyylete het s Link zue dr erschte un dr zwote Wyterleitig un s Ziil vu dr zwote Wyterleitig, wu normalerwys di gwinscht Ziilsyten isch. Do sott eigetli scho di erscht Wyterleitig druf zeige.
'linksearch-pat' => 'Suechmuschter:',
'linksearch-ns' => 'Namensruum:',
'linksearch-ok' => 'Sueche',
-'linksearch-text' => 'Die Spezialsyte macht d Suechi no Syte megli, wu s bstimmti Weblink din het. Doderby chenne Platzhalter wie zem Byschpel <code>*.byschpel.de</code> brucht wäre. S mueß zmindecht ei Top-Level-Domain, z. B. „*.org“. aagee wäre. <br />Unterstitzti Protokoll: <code>$1</code> (Standard isch http, wänn kei Protokoll aagee isch).',
+'linksearch-text' => 'Die Spezialsyte macht d Suechi no Syte megli, wu s bstimmti Weblink din het. Doderby chenne Platzhalter wie zem Byschpel <code>*.byschpel.de</code> brucht wäre. S mueß zmindecht ei Top-Level-Domain, z. B. „*.org“. aagee wäre. <br />{{PLURAL:$2|Unterstitzt Protokoll|Unterstitzti Protokoll}}: <code>$1</code> (Standard isch http, wänn kei Protokoll aagee isch.)',
'linksearch-line' => '$1 isch vo $2 verknüpft',
'linksearch-error' => 'Platzhalter chönne numme am Aafang verwändet werre.',
# Special:ActiveUsers
'activeusers' => 'Lischt vu dr aktive Benutzer',
'activeusers-intro' => 'Des isch e Lischt vu Benutzer, wu irgedebis bearbeitet hän {{PLURAL:$1|am letschte Tag|in dr letschte $1 Täg}}.',
-'activeusers-count' => '$1 {{PLURAL:$1|Bearbeitig|Bearbeitige}} {{PLURAL:$3|am letschte Tag|in dr letschte $3 Täg}}',
+'activeusers-count' => '$1 {{PLURAL:$1|Aktion|Aktione}} {{PLURAL:$3|am letschte Tag|in dr letschte $3 Täg}}',
'activeusers-from' => 'Zeig Benutzer ab:',
'activeusers-hidebots' => 'Bötli uusblände',
'activeusers-hidesysops' => 'Ammanne (Administratore) uusblände',
'watchnologin' => 'Du bisch nit aagmäldet',
'watchnologintext' => 'Du muesch [[Special:UserLogin|aagmäldet]] syy, zum Dyyni Beobachtigssyte z bearbeite.',
'addwatch' => 'zue de Beobachtigslischte derzue tue',
-'addedwatchtext' => "D Syte \"[[:\$1]]\" stoht jetz uf Dyyre [[Special:Watchlist|Beobachtigslischt]].
-Neji Änderige an dr Syte oder dr Diskussionssyte drvo chasch jetz dert säh. Usserdem sin die Änderige uf dr [[Special:RecentChanges|letschte Änderige]] '''fett''' gschribe, ass De si schnäller findsch.
-
-Wänn Du d Syte speter wider vu dr Lischt witt stryyche, deno druck eifach uf „{{int:Unwatch}}“.",
+'addedwatchtext' => 'D Syte "[[:$1]]" stoht jetz uf Dyyre [[Special:Watchlist|Beobachtigslischt]].
+Neji Änderige an dr Syte oder dr Diskussionssyte drvo chasch jetz dert säh.',
'removewatch' => 'Us der Beobachtigsliste usegnuu',
'removedwatchtext' => 'D Syte «[[:$1]]» isch us dyre [[Special:Watchlist|Beobachtigsliste]] glösche worde.',
'watch' => 'Beobachte',
'watchmethod-list' => 'Iberpriefe vu dr Beobachtigslischt no letschte Bearbeitige',
'watchlistcontains' => 'In Dyynere Beobachtigslischt het s $1 {{PLURAL:$1|Syte|Syte}}.',
'iteminvalidname' => 'Probläm mit em Yytrag „$1“, uugiltige Name.',
-'wlnote' => "Do {{PLURAL:$1|chunnt di letscht Änderig|chemme di letschte '''$1''' Änderige}} vu dr letschte {{PLURAL:$2|Stund|'''$2''' Stunde}}. Stand: $3, $4 Uhr.",
'wlshowlast' => 'Zeig di letschte $1 Stunde $2 Tage $3',
'watchlist-options' => 'Aazeigoptione',
'enotif_mailer' => '{{SITENAME}} E-Mail-Benochrichtigungsdienscht',
'enotif_reset' => 'Alli Syte as aagluegt markiere',
'enotif_impersonal_salutation' => '{{SITENAME}}-Benutzer',
+'enotif_subject_deleted' => '{{SITENAME}}-Syte $1 isch vu {{GENDER:$2|$2}} glescht wore',
+'enotif_subject_created' => '{{SITENAME}}-Syte $1 isch vu {{GENDER:$2|$2}} aagleit wore',
+'enotif_subject_moved' => '{{SITENAME}}-Syte $1 isch vu {{GENDER:$2|$2}} verschobe wore',
+'enotif_subject_restored' => '{{SITENAME}}-Syte $1 isch vu {{GENDER:$2|$2}} widerhärgstellt wore',
+'enotif_subject_changed' => '{{SITENAME}}-Syte $1 isch vu {{GENDER:$2|$2}} gänderet',
+'enotif_body_intro_deleted' => 'D {{SITENAME}}-Syte $1 isch am $PAGEEDITDATE vu {{GENDER:$2|$2}} glescht wore. Lueg $3.',
+'enotif_body_intro_created' => 'D {{SITENAME}}-Syte $1 isch am $PAGEEDITDATE vu {{GENDER:$2|$2}} aagleit wore. Lueg $3 fir di aktuäll Version.',
+'enotif_body_intro_moved' => 'D {{SITENAME}}-Syte $1 isch am $PAGEEDITDATE vu {{GENDER:$2|$2}} verschobe wore. Lueg $3 fir di aktuäll Version.',
+'enotif_body_intro_restored' => 'D {{SITENAME}}-Syte $1 isch am $PAGEEDITDATE vu {{GENDER:$2|$2}} widerhärgstellt wore. Lueg $3 fir di aktuäll Version.',
+'enotif_body_intro_changed' => 'D {{SITENAME}}-Syte $1 isch am $PAGEEDITDATE vu {{GENDER:$2|$2}} verschobe wore. Lueg $3 fir di aktuäll Version.',
'enotif_lastvisited' => '$1 zeigt alli Änderige uf s Mol.',
'enotif_lastdiff' => 'Lueg $1 no däre Änderig.',
'enotif_anon_editor' => 'Anonyme Benutzer $1',
-'enotif_body' => 'Liebe/Liebi $WATCHINGUSERNAME,
-
-d {{SITENAME}}-Syte $PAGETITLE isch vum $PAGEEDITOR am $PAGEEDITDATE $CHANGEDORCREATED wore, di aktuell Version isch: $PAGETITLE_URL
-
+'enotif_body' => 'Sali $WATCHINGUSERNAME,
-$NEWPAGE
+$PAGEINTRO $NEWPAGE
Zämmenfassig vum Autor: $PAGESUMMARY $PAGEMINOREDIT
+
Kontakt zum Autor:
Mail $PAGEEDITOR_EMAIL
Wiki $PAGEEDITOR_WIKI
-Es wird kei wyteri Nochricht iber Änderige gschickt, bis Du uf sälli Syte gohsch.
-Uf Dyyre Beobachtigssyte chasch d Beobachtigsmarker fir alli Syte zrucksetze, wu Du beobachte tuesch.
+Es wird kei wyteri Nochricht iber Änderige gschickt, bis Du uf sälli Syte gohsch un di aamäldsch. Uf Dyyre Beobachtigssyte chasch d Beobachtigsmarker fir alli Syte zrucksetze, wu Du beobachte tuesch.
Dyy fryndli {{SITENAME}}-Nochrichtesyschtem
'deleteotherreason' => 'Andere/zuesätzleche Grund:',
'deletereasonotherlist' => 'Andere Grund',
'deletereason-dropdown' => '* Allgmeini Leschgrind
+** Spam
** Wunsch vum Autor
** Urheberrächtsverletzig
-** Vandalismus',
+** Vandalismus
+** Defekti Wyterleitung',
'delete-edit-reasonlist' => 'Leschgrind bearbeite',
'delete-toobig' => 'Die Syte het e arg langi Versionsgschicht mit meh as $1 {{PLURAL:$1|Version|Versione}}. S Lesche vu sonige Syte isch yygschränkt wore go verhindere, ass dr Server vu {{SITENAME}} us Versäh zytwys iberlaschtet wird.',
'delete-warning-toobig' => 'Die Syte het e arg langi Versionsgschicht mit meh as $1 {{PLURAL:$1|Version|Versione}}. S Lesche cha dr Datebankbetriib vu {{SITENAME}} stere.',
Di letscht Änderig het [[User:$3|$3]] ([[User talk:$3|Diskussion]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]) gmacht.',
'editcomment' => "D Änderigszämmefassig isch: „''$1''“.",
'revertpage' => 'Ruckgängig gmacht zue dr letschte Änderig vo [[Special:Contributions/$2|$2]] ([[User talk:$2|Diskussion]]) mit de letzte Version vo [[User:$1|$1]] widerhergstellt',
-'revertpage-nouser' => 'Bearbeitige ruckgängig gmacht vu (Benutzername uusegnuu), letschti Fassig vu [[User:$1|$1]] widerhärgstellt',
+'revertpage-nouser' => 'Bearbeitige ruckgängig gmacht vu (Benutzername uusegnuu), letschti Fassig vu {{GENDER:$1|[[User:$1|$1]]}} widerhärgstellt',
'rollback-success' => 'D Änderige vu $1 sin ruckgängig gmacht wore un di letscht Version vu $2 isch widerhärgstellt wore.',
# Edit tokens
'prot_1movedto2' => '[[$1]] isch uf [[$2]] verschobe worde.',
'protect-badnamespace-title' => 'Nit-schitzbare Namensruum',
'protect-badnamespace-text' => 'Syte in däm Namensruum chenne nit gschitzt wäre.',
+'protect-norestrictiontypes-text' => 'Die Syte cha nit gschitzt wäre, wel kei Bschränkigstype verfiegbar sin.',
+'protect-norestrictiontypes-title' => 'Nit schitzbari Syte',
'protect-legend' => 'Syteschutzstatus ändere',
'protectcomment' => 'Grund:',
'protectexpiry' => 'Gsperrt bis:',
'protect-cascadeon' => 'Die Syten isch gschützt, wil si {{PLURAL:$1|zur folgende Syte|zu de folgende Syte}} ghört, wo derfür e Kaskadesperrig gilt.
Der Schutzstatus vo dere Syte lat sech la ändere, aber das het kei Yfluss uf d Kaskadesperrig.',
'protect-default' => 'Alle Benutzer',
-'protect-fallback' => '«$1»-Berächtigung nötig',
-'protect-level-autoconfirmed' => 'Neji un nit regischtrierti Benutzer sperre',
-'protect-level-sysop' => 'Numme Ammanne',
+'protect-fallback' => 'Nume Benutzer mit dr „$1“-Berächtigung erlaube.',
+'protect-level-autoconfirmed' => 'Nume automatisch bstetigte Benutzer erlaube',
+'protect-level-sysop' => 'Numme Ammanne erlaube',
'protect-summary-cascade' => 'Kaskade',
'protect-expiring' => 'bis $1 (UTC)',
'protect-expiring-local' => 'bis $1',
'range_block_disabled' => 'D Megligkeit, ganzi Adrässryym z sperre, isch nit aktiviert.',
'ipb_expiry_invalid' => 'D Duur, wu yygee woren isch, isch nit giltig.',
'ipb_expiry_temp' => 'Versteckti Benutzername-Sperrine solle permanent syy.',
-'ipb_hide_invalid' => 'S isch nit megli des Benutzerkonto z unterdrucke; villicht het s viili Bearbeitige.',
+'ipb_hide_invalid' => 'S isch nit megli des Benutzerkonto z unterdrucke, wel s meh wie {{PLURAL:$1|ei Bearbeitig|$1 Bearbeitige}} ufwyst.',
'ipb_already_blocked' => '„$1“ isch scho gsperrt wore.',
'ipb-needreblock' => '{{GENDER:|De|D|}} „$1“ isch scho gsperrt. Mechtsch d Sperrparameter ändere?',
'ipb-otherblocks-header' => 'Anderi {{PLURAL:$1|Sperri|Sperrine}}',
# Move page
'move-page' => '„$1“ verschiebe',
'move-page-legend' => 'Artikel verschiebe',
-'movepagetext' => 'Mit däm Formular chasch du en Artikel verschiebe, u zwar mit syre komplette Versionsgschicht. Der alt Titel leitet zum nöie wyter, aber Links ufen alt Titel blyben unveränderet.',
+'movepagetext' => "Mit däm Formular chasch e Syte umnänne, indäm Du si mitsamt allne Versionen uf e neje Titel verschiebsch.
+Dr alt Titel wird derno zum eje wyterleite.
+Du chasch Wyterleitige, wu uf dr Originaltitel verwyse, automatisch korrigiere loo.
+Stell sicher, dass Du im Aaschluss alli [[Special:DoubleRedirects|dopplete]] oder [[Special:BrokenRedirects|defekte Wyterleitige]] iberpriefsch.
+Du bisch derfir verantwortlig, ass Link wyter uf s korräkt Ziil verwyse.
+
+D Syte wird '''nit''' verschobe, wänn s scho ne Syte mit em vorgsähne Titel git, usser s isch e Wyterleitig ohni Versionsgschicht.
+Des heißt, ass Du d Umnännig chasch ruckgängig mache, wänn e Fähler gmacht hesch. Du chasch dergege kei Syte, wu s scho git, iberschrybe.
+
+'''Warnig!'''
+D Verschiebig cha wyteri un nit erwarteti Folge fir vylmol bsuechti Syte haa.
+Du sottsch wäge däm d Konsequänze verstande haa, vorbe jetz wyter machsch.",
'movepagetext-noredirectfixer' => "Mit däm Formular unte chasch e Syte umnänne, indäm Du si mitsamt allene Versione uf e neje Titel verschiebsch.
Dr alt Titel leitet derno zum neje wyter.
Stell sicher, ass Du im Aaschluss alli [[Special:DoubleRedirects|dopplete]] oder [[Special:BrokenRedirects|kaputtige Wyterleitige]] iberpriefsch.
'import-error-interwiki' => 'D Syte „$1“ isch nit importiert wore, wel dr Name vun ere fir externi Link (Interwiki) reserviert isch.',
'import-error-special' => 'D Syte „$1“ isch nit importiert wore, wel si zuen eme bsundere Namensruum ghert, wu kei Syte megli sin.',
'import-error-invalid' => 'Syte „$1“ isch nit importiert wore, wel dr Name vun ere nit giltig isch.',
+'import-error-unserialize' => 'D Version $2 vu dr Syte „$1“ het nit chenne deserialisiert wäre. D Version isch fir d Verwändig vum Inhaltsmodäll $3 gmäldet wore, wu as $4 serialisiert isch.',
'import-options-wrong' => 'Falschi {{PLURAL:$2|Option|Optione}}: <nowiki>$1</nowiki>',
'import-rootpage-invalid' => 'Dää Stammsytename isch nit giltig.',
'import-rootpage-nosubpage' => 'Im Namensruum „$1“ vu dr Stammsyte sin kei Untersyte erlaubt.',
'tooltip-pt-watchlist' => 'Lischte vo de beobachtete Syte.',
'tooltip-pt-mycontris' => 'Lischt vu Dyyne Byyträg',
'tooltip-pt-login' => 'Aamälde',
-'tooltip-pt-anonlogin' => 'Mir ermuntre dich zwar dass du dich miteme Benutzerkonto aamääldsch, es isch aber kei Pflicht!',
'tooltip-pt-logout' => 'Abmälde',
'tooltip-ca-talk' => 'Diskussion zum Artikelinhalt',
'tooltip-ca-edit' => 'Syte bearbeite. Bitte vor em Spychere d Vorschou aaluege.',
'pageinfo-length' => 'Sytelengi (in Byte)',
'pageinfo-article-id' => 'Syten-ID',
'pageinfo-language' => 'Syteninhaltssproch',
-'pageinfo-robot-policy' => 'Suechmaschinestatus',
-'pageinfo-robot-index' => 'Indexierbar',
-'pageinfo-robot-noindex' => 'Nit indexierbar',
+'pageinfo-robot-policy' => 'Indexierig dur Suechmaschine',
+'pageinfo-robot-index' => 'Erlaubt',
+'pageinfo-robot-noindex' => 'Nit erlaubt',
'pageinfo-views' => 'Aazahl Sytenufruef',
'pageinfo-watchers' => 'Aazahl vu Beobachter',
-'pageinfo-redirects-name' => 'Wyterleitige zue däre Syte',
+'pageinfo-few-watchers' => 'Weniger wie {{PLURAL:$1|ei|$1}} Beobachter',
+'pageinfo-redirects-name' => 'Zahl vu dr Wyterleitige zue däre Syte',
'pageinfo-subpages-name' => 'Untersyte vu däre Syte',
'pageinfo-subpages-value' => '$1 ($2 {{PLURAL:$2|Wyterleitig|Wyterleitige}}; $3 {{PLURAL:$3|anderi Syte}})',
'pageinfo-firstuser' => 'Aagleit vu',
'pageinfo-magic-words' => '{{PLURAL:$1|Magischs Wort|Magischi Werter}} ($1)',
'pageinfo-hidden-categories' => 'Versteckti {{PLURAL:$1|Kategori|Kategorie}} ($1)',
'pageinfo-templates' => 'Yybundeni {{PLURAL:$1|Vorlag|Vorlage}} ($1)',
+'pageinfo-transclusions' => 'Yybunden in {{PLURAL:$1|1 Syte|$1 Syte}}',
'pageinfo-toolboxlink' => 'Informatione zue dr Syte',
'pageinfo-redirectsto' => 'Weiterleitung nach',
'pageinfo-redirectsto-info' => 'Information',
'pageinfo-protect-cascading' => 'Syte mit Kaskadeschutz vu do',
'pageinfo-protect-cascading-yes' => 'Jo',
'pageinfo-protect-cascading-from' => 'Syte mit Kaskadeschutz vu',
+'pageinfo-category-info' => 'Kategoriinformatione',
+'pageinfo-category-pages' => 'Aazahl vu dr Syte',
+'pageinfo-category-subcats' => 'Aazahl vu dr Unterkategorie',
+'pageinfo-category-files' => 'Aazahl vu dr Dateie',
# Patrolling
'markaspatrolleddiff' => 'Als patrulyrt markyre',
'exif-compression-4' => 'CCITT Gruppe 4 Faxkodierig',
'exif-copyrighted-true' => 'Gschitzt',
-'exif-copyrighted-false' => 'Public Domain',
+'exif-copyrighted-false' => 'Urheberrächtsstatus nit feschtgleit',
'exif-unknowndate' => 'Nit bekannt Datum',
'exif-gpslongitude-w' => 'weschtl. Längi',
# Pseudotags used for GPSAltitudeRef
-'exif-gpsaltitude-above-sealevel' => '$1 {{plural:$1|Meter|Meter}} iber em Meeresspiegel',
-'exif-gpsaltitude-below-sealevel' => '$1 {{plural:$1|Meter|Meter}} unter em Meeresspiegel',
+'exif-gpsaltitude-above-sealevel' => '$1 {{PLURAL:$1|Meter}} iber em Meeresspiegel',
+'exif-gpsaltitude-below-sealevel' => '$1 {{PLURAL:$1|Meter}} unter em Meeresspiegel',
'exif-gpsstatus-a' => 'Mässig lauft',
'exif-gpsstatus-v' => 'Interoperabilität vu Mässige',
'specialpages-group-highuse' => 'Syte wo oft bruucht werde',
'specialpages-group-pages' => 'Lischte vo Syte',
'specialpages-group-pagetools' => 'Sytewerchzüüg',
-'specialpages-group-wiki' => 'Syschtemdate un Wärchzüüg',
+'specialpages-group-wiki' => 'Date un Wärchzyyg',
'specialpages-group-redirects' => 'Spezialsyte wo wyterleite',
'specialpages-group-spam' => 'Spam-Wärchzüüg',
'expand_templates_generate_xml' => 'Zeig XML-Parser-Baum',
'expand_templates_preview' => 'Vorschou',
+# Unknown messages
+'uploadinvalidxml' => 'S XML in dr uffegladene Datei het nit chenne parst wäre.',
);
$messages = array(
# User preference toggles
'tog-underline' => 'કડીઓની નીચે લીટી (અંડરલાઇન):',
-'tog-justify' => 'ફકરાઓ લાઇનસર કરો',
'tog-hideminor' => 'હાલમાં થયેલા ફેરફારમાં નાના ફેરફારો છુપાવો',
'tog-hidepatrolled' => 'હાલના સલામતી માટે કરવામાં આવેલાં થયેલા ફેરફારો છુપાવો.',
'tog-newpageshidepatrolled' => 'નવાં પાનાંની યાદીમાંથી દેખરેખ હેઠળનાં પાનાં છુપાવો',
'tog-numberheadings' => 'મથાળાંઓને આપો-આપ ક્રમ (ઑટો નંબર) આપો',
'tog-showtoolbar' => 'ફેરફાર માટેની ટૂલબાર બતાવો',
'tog-editondblclick' => 'બે વખત ક્લિક કરી પાનાંઓમાં ફેરફાર કરો',
-'tog-editsection' => 'વિભાગોમાં [ફેરફાર કરો] કડી દ્વારા વિભાગીય ફેરફાર લાગુ કરો.',
'tog-editsectiononrightclick' => 'વિભાગના મથાળાં ને રાઇટ ક્લિક દ્વારા ફેરફાર કરવાની રીત અપનાવો.',
-'tog-showtoc' => 'અનુક્રમણિકા દર્શાવો (૩થી વધુ પેટા-મથાળા વાળા લેખો માટે)',
'tog-rememberpassword' => 'આ કમ્પ્યૂટર પર મારી લોગ-ઇન વિગતો યાદ રાખો (મહત્તમ $1 {{PLURAL:$1|દિવસ|દિવસો}} માટે)',
'tog-watchcreations' => 'મેં બનાવેલાં પાનાં અને અપલોડ કરેલી ફાઇલો મારી ધ્યાનસૂચિમાં ઉમેરો',
'tog-watchdefault' => 'હું ફેરફાર કરૂં તે પાનાં અને ફાઇલ્સ મારી ધ્યાનસૂચિમાં ઉમેરો',
'showhideselectedversions' => 'પસંદ કરેલા બતાવો / સંતાડો',
'editundo' => 'રદ કરો',
'diff-empty' => '(કોઇ ભેદ નહી)',
-'diff-multi' => '{{PLURAL:$2|એક સભ્યએ કરેલું|$2 સભ્યોએ કરેલા}} ({{PLURAL:$1|વચગાળાનું એક પુનરાવર્તન દર્શાવ્યં|વચગાળાનાં $1 પુનરાવર્તનો દર્શાવ્યાં}} નથી.)',
'diff-multi-manyusers' => '{{PLURAL:$2|એક સભ્યએ કરેલું|$2 સભ્યોએ કરેલા}} ({{PLURAL:$1|વચગાળાનું એક પુનરાવર્તન દર્શાવ્યં|વચગાળાનાં $1 પુનરાવર્તનો દર્શાવ્યાં}} નથી.)',
# Search results
'rows' => 'પંક્તિઓ',
'columns' => 'સ્તંભ',
'searchresultshead' => 'શોધો',
-'resultsperpage' => 'પ્રતિ પાના પર પરિણામો',
'stub-threshold' => '<a href="#" class="stub">stub link</a>નાફોર્મમેટિંગ માટે શરૂઆતિ પગથિયું (બાઈટ્સ):',
'stub-threshold-disabled' => 'નિષ્ક્રિય કરેલ',
'recentchangesdays' => 'તાજા ફેરફારોમાં દેખાડવાના દિવસો',
'enhancedrc-history' => 'ઇતિહાસ',
'recentchanges' => 'તાજા ફેરફારો',
'recentchanges-legend' => 'હાલમાં થયેલા ફેરફારોના વિકલ્પ',
-'recentchanges-summary' => 'વિàª\95િમાàª\82 તાàª\9cà«\87તરમાàª\82 થયà«\87લા ફà«\87રફારà«\8b પર àª\85હિંથી નજર રાખો.',
+'recentchanges-summary' => 'વિàª\95િમાàª\82 તાàª\9cà«\87તરમાàª\82 થયà«\87લા ફà«\87રફારà«\8b પર àª\85હà«\80ંથી નજર રાખો.',
'recentchanges-feed-description' => 'આ ફીડ દ્વારા વિકિમાં થયેલા તાજા ફેરફારો પર ધ્યાન રાખો.',
'recentchanges-label-newpage' => 'આ ફેરફાર દ્વારા નવું પાનું નિર્મિત થયું',
'recentchanges-label-minor' => 'આ એક નાનો સુધારો છે.',
'watchmethod-list' => 'હાલમાં થયેલ ફેરફાર માટે નીરીક્ષીત પાના તપાસાય છે',
'watchlistcontains' => 'તમારી ધ્યાનસૂચીમાં $1 {{PLURAL:$1|પાનું|પાનાં}} છે.',
'iteminvalidname' => "વસ્તુ '$1' સાથે સમસ્યા, અવૈધ નામ...",
-'wlnote' => "નીચે $3, $4 વાગ્યા સુધીના છેલ્લા {{PLURAL:$2|એક કલાક|'''$2''' કલાક}}માં થયેલા {{PLURAL:$1|ફેરફાર|'''$1''' ફેરફારો }} દર્શાવ્યા છે.",
'wlshowlast' => 'છેલ્લા $1 કલાક $2 દિવસ $3 બતાવો',
'watchlist-options' => 'ધ્યાનસૂચિના વિકલ્પો',
'tooltip-pt-watchlist' => 'તમે દેખરેખ રાખી રહ્યાં હોવ તેવા પાનાઓની યાદી',
'tooltip-pt-mycontris' => 'તમારા યોગદાનની યાદી',
'tooltip-pt-login' => 'આપને લોગ ઇન કરવા ભલામણ કરવામાં આવે છે, જોકે તે આવશ્યક નથી',
-'tooltip-pt-anonlogin' => 'આપને લોગ ઇન કરવા ભલામણ કરવામાં આવે છે, જોકે તે આવશ્યક નથી',
'tooltip-pt-logout' => 'બહાર નીકળો/લૉગ આઉટ કરો',
'tooltip-ca-talk' => 'અનુક્રમણિકાનાં પાના વિષે ચર્ચા',
'tooltip-ca-edit' => "આપ આ પાનામાં ફેરફાર કરી શકો છો, કાર્ય સુરક્ષિત કરતાં પહેલાં 'ઝલક' બટન ઉપર ક્લિક કરીને જોઇ લેશો",
'logentry-delete-delete' => '$1 દ્વારા પાનું $3 {{GENDER:$2|દૂર કરવામાં આવ્યું}}',
'logentry-delete-restore' => '$1 {{GENDER:$2|પુનઃસંગ્રહ}} પાનું $3',
'logentry-delete-event' => '$1 એ {{PLURAL:$5|લૉગ ઘટના|$5 લૉગ ઘટનાઓ}} ની દ્રશ્યતા $3 પર {{GENDER:$2|બદલેલ}} છે: $4',
-'logentry-delete-revision' => '$1 {{GENDER:$2|બદલેલ}} બદલાઈ ના દૃશ્યતા {{PLURAL: $5 | સુધારણા | $5 આવૃત્તિઓ}} $3 પાનાં પર: $4',
+'logentry-delete-revision' => '$1 {{GENDER:$2|બદલેલ}} બદલાઈ ના દૃશ્યતા {{PLURAL:$5 | સુધારણા | $5 આવૃત્તિઓ}} $3 પાનાં પર: $4',
'logentry-delete-event-legacy' => '$1 {{GENDER:$2|બદલેલ}} બદલાઈ $3 પર લોગ ઘટનાઓ દૃશ્યતા',
'logentry-delete-revision-legacy' => '$1 {{GENDER:$2|બદલેલ}} બદલાઈ પાનાં પર આવૃત્તિઓની દૃશ્યતા $3',
'logentry-suppress-delete' => '$1 એ $3 પાનું {{GENDER:$2|દબાવ્યું}}',
-'logentry-suppress-event' => '$1 (છાની માહિતી) {{GENDER:$2|બદલેલ}} બદલાઈ {{PLURAL: $5 | લોગ ઘટના | $5 લોગ}} ની દ્રશ્યતા $3 : $4',
-'logentry-suppress-revision' => '$1 છાની માહિતી {{GENDER:$2|બદલેલ}} બદલાઈ ના દૃશ્યતા {{PLURAL: $5 | આવૃત્તિ એ | $5 આવૃત્તિઓ}}: $4 $3 પાનાં પર',
+'logentry-suppress-event' => '$1 (છાની માહિતી) {{GENDER:$2|બદલેલ}} બદલાઈ {{PLURAL:$5 | લોગ ઘટના | $5 લોગ}} ની દ્રશ્યતા $3 : $4',
+'logentry-suppress-revision' => '$1 છાની માહિતી {{GENDER:$2|બદલેલ}} બદલાઈ ના દૃશ્યતા {{PLURAL:$5 | આવૃત્તિ એ | $5 આવૃત્તિઓ}}: $4 $3 પાનાં પર',
'logentry-suppress-event-legacy' => '$1 ગુપ્ત {{GENDER:$2|બદલેલ}} બદલો $3 પર લોગ ઘટનાઓ દૃશ્યતા',
'logentry-suppress-revision-legacy' => '$1 ગુપ્ત {{GENDER:$2|બદલેલ}} બદલાઈ પાનાં પર આવૃત્તિઓની દૃશ્યતા $3',
'revdelete-content-hid' => 'સામગ્રી છુપાયેલા',
$messages = array(
# User preference toggles
'tog-underline' => 'Cur linnaghyn fo chianglaghyn:',
-'tog-justify' => 'Cur meeryn ayns un linney',
'tog-hideminor' => "Follee myn-arraghyn ayns caghlaaghyn s'noa",
'tog-hidepatrolled' => "Follee arraghyn er nyn scrutaghey ayns caghlaaghyn s'noa",
'tog-newpageshidepatrolled' => "Follee duillagyn er nyn scrutaghey 'sy rolley duillagyn noa",
'oct' => 'JFou',
'nov' => 'Soun',
'dec' => 'Noll',
+'january-date' => '$1 Jerrey Geuree',
+'february-date' => '$1 Toshiaght Arree',
+'march-date' => '$1 Mayrnt',
+'april-date' => '$1 Averil',
+'may-date' => '$1 Boaldyn',
+'june-date' => '1 Mean Souree',
+'july-date' => '$1 Jerrey Souree',
+'august-date' => '$1 Luanistyn',
+'september-date' => '$1 Mean Fouyir',
+'october-date' => '$1 Jerrey Fouyir',
+'november-date' => '$1 Sauin',
+'december-date' => '$1 Mee ny Nollick',
# Categories related messages
'pagecategories' => '{{PLURAL:$1|Ronney|Ronnaghyn}}',
'view' => 'Lhaih',
'edit' => 'Reagh',
'create' => 'Croo',
-'editthispage' => 'Reagh yn duillag shoh',
+'editthispage' => 'Reagh y duillag shoh',
'create-this-page' => 'Croo yn duillag shoh',
'delete' => 'Scryss',
'deletethispage' => 'Scryss y duillag shoh',
+'undeletethispage' => 'Jee-scryss y duillag shoh',
'undelete_short' => 'Jee-scryss {{PLURAL:$1|$1 caghlaa|$1 chaghlaa|$1 chaghlaa|$1 caghlaaghyn}}',
'viewdeleted_short' => 'Jeeagh er {{PLURAL:$1|$1 caghlaa scryssit magh|$1 chaghlaa scryssit magh|$1 chaghlaa scryssit magh|$1 caghlaaghyn scryssit magh}}',
'protect' => 'Coadee',
'nchanges' => '$1 {{PLURAL:$1|caghlaa|chaghlaa|chaghlaa|caghlaaghyn}}',
'recentchanges' => "Caghlaaghyn s'noa",
'recentchanges-legend' => "Reihyssyn da ny caghlaaghyn s'noa",
-'recentchanges-summary' => "Shirrey ny caghlaaghyn s'noa da'n wiki er y duillag shoh.",
+'recentchanges-summary' => "Shirr ny caghlaaghyn s'noa da'n wiki er y duillag shoh.",
'recentchanges-feed-description' => "Shirr ny caghlaaghyn s'noa er y wiki 'sy scoltey shoh.",
'recentchanges-label-newpage' => 'Ren y reaghey shoh croo duillag noa',
'recentchanges-label-minor' => 'She myn-reaghey eh shoh',
'recentchanges-label-bot' => 'Ren bot y reaghey shoh',
'rcnotefrom' => "Shoh heese ny caghlaaghyn veih '''$2''' (gys '''$1''' taishbynit).",
'rclistfrom' => "Taishbyn ny caghlaaghyn s'noa veih $1",
-'rcshowhideminor' => '{{PLURAL:$1|$1 myn-arraghey|$1 vyn-arraghey|$1 vyn-arraghey|$1 myn-arraghyn}}',
+'rcshowhideminor' => '$1 myn-arraghyn',
'rcshowhidebots' => '{{PLURAL:$1|$1 robot|$1 robot|$1 robot|$1 robotyn}}',
'rcshowhideliu' => '{{PLURAL:$1|$1 ymmydeyr|$1 ymmydeyr|$1 ymmydeyr|$1 ymmydeyryn}} ta loggit stiagh',
'rcshowhideanons' => '{{PLURAL:$1|$1 ymmydeyr|$1 ymmydeyr|$1 ymmydeyr|$1 ymmydeyryn}} neuenmyssit',
*
* @author Anson2812
* @author Dream hot
+ * @author EagerLin
* @author Hakka
* @author Jetlag
* @author Mnemonic kek
$messages = array(
# User preference toggles
'tog-underline' => '鏈接加底線:',
-'tog-justify' => '段落對齊',
'tog-hideminor' => '隱藏最近更改肚嘅細微編寫',
'tog-hidepatrolled' => '隱藏最近更改肚巡查過嘅編寫',
'tog-newpageshidepatrolled' => '隱藏新頁面清單肚巡查過嘅頁面',
'tog-numberheadings' => '標題自動編號',
'tog-showtoolbar' => '展示編寫工具欄',
'tog-editondblclick' => '雙撳編寫頁面',
-'tog-editsection' => '允許通過點撳[編寫]鏈接編寫段落',
'tog-editsectiononrightclick' => '允許右撳標題編寫段落',
-'tog-showtoc' => '顯示目錄(針對一頁超過3隻標題嘅頁面)',
'tog-rememberpassword' => '在邇隻瀏覽器記下亻厓嘅登入狀態(最多$1日)',
'tog-watchcreations' => '加亻厓建立嘅頁面撈上傳嘅文件加入亻厓嘅監視列表',
'tog-watchdefault' => '將亻厓編寫嘅頁面撈檔案加入亻厓嘅監視列表',
'tog-watchmoves' => '將亻厓移動嘅頁面撈檔案加入亻厓嘅監視列表',
'tog-watchdeletion' => '加亻厓刪除嘅頁面撈文件入亻厓嘅監視列表',
-'tog-minordefault' => '默認標記全部編寫為細微修改',
+'tog-minordefault' => '默認標記全部編寫係細微修改',
'tog-previewontop' => '在編寫框上頭顯示預覽',
'tog-previewonfirst' => '第一擺編寫時顯示預覽',
'tog-enotifwatchlistpages' => '亻厓監視列表肚嘅頁面或文件有更動時,發電子郵件分亻厓',
'tog-enotifusertalkpages' => '亻厓嘅交流頁有更改時,發電子郵件分亻厓',
-'tog-enotifminoredits' => '頁面撈文件嘅細修改也發電子郵件分我',
+'tog-enotifminoredits' => '頁面撈文件个細修改也發電子郵件分我',
'tog-enotifrevealaddr' => '在通知電子郵件肚顯示亻厓嘅電子郵件地址',
'tog-shownumberswatching' => '展示監視中嘅使用人數目',
'tog-oldsig' => '現有簽名:',
'articlepage' => '查看內容頁面',
'talk' => '討論',
'views' => '查看數',
-'toolbox' => '工具箱',
+'toolbox' => 'Kûng-khí-siông',
'userpage' => '查看用戶頁面',
'projectpage' => '查看項目頁面',
'imagepage' => '查看文件頁面',
'youhavenewmessages' => '汝有$1($2)。',
'youhavenewmessagesfromusers' => '汝有來自{{PLURAL:$3|另一位用戶|$3位用戶}}嘅$1($2)。',
'youhavenewmessagesmanyusers' => '汝有來自多位用戶嘅$1( $2 )。',
-'newmessageslinkplural' => '{{PLURAL:$1|一條新信息|新信息}}',
-'newmessagesdifflinkplural' => '最新{{PLURAL:$1|更改|更改}}',
+'newmessageslinkplural' => '{{PLURAL:$1|yit-thiàu sîn sêu-sit|999=sîn sêu-sit}}',
+'newmessagesdifflinkplural' => 'chui-khiun{{PLURAL:$1|kiên-kói|kiên-kói}}',
'youhavenewmessagesmulti' => '汝在$1肚有新消息',
'editsection' => '編寫',
'editold' => '編寫',
'databaseerror' => '數據庫差錯',
'databaseerror-text' => '出現資料庫查詢錯誤。
邇可能表示軟件肚存在錯誤。',
+'databaseerror-textcl' => 'chṳ̂-liau-ku chhà-chhìm chho-ngu',
+'databaseerror-query' => 'chhà-chhìm:$1',
+'databaseerror-function' => 'kûng-nèn:$1',
+'databaseerror-error' => 'chho-ngu:$1',
'laggedslavemode' => "'''警告:'''頁面可能毋包含最近嘅更新。",
'readonly' => '數據庫分人鎖定',
'enterlockreason' => '請撳入禁止訪問原因, 包括估計重新開放嘅時間',
'cannotdelete-title' => '無辦法刪除頁面「$1」',
'delete-hook-aborted' => '刪除分勾仔中止。
其毋曾提供任何解釋。',
+'no-null-revision' => 'mò-fap chhóng-kien "$1" ya̍p-mien sîn-ke khûng-pa̍k siû-thin',
'badtitle' => '有錯嘅標題',
'badtitletext' => '所請求頁面嘅標題是無效嘅、毋存在嘅,跨語言或跨wiki鏈接嘅標題有錯。其可能包含一隻或還較多做毋得用於標題嘅字符。',
'perfcached' => '下列係緩存數據,因此可能毋係最新嘅。最多{{PLURAL:$1|單淨有1嘅結果|$1嘅結果}}可用。',
'lineno' => '第$1行:',
'compareselectedversions' => '比較選定嘅修訂版本',
'editundo' => '撤銷',
-'diff-multi' => '(吂展示$2隻用戶嘅$1嘅中間版本)',
# Search results
'searchresults' => '搜尋結果',
'rows' => '行数:',
'columns' => '列:',
'searchresultshead' => '搜尋',
-'resultsperpage' => '每頁顯示鏈接數:',
'stub-threshold' => '<a href="#" class="stub">短頁面鏈接</a>格式門檻值(字節):',
'recentchangesdays' => '最近更改肚嘅顯示日數:',
'recentchangescount' => 'Chui-khiûn kiên-kói chûng ke phiên-siá chúng-su:',
'watchmethod-list' => '檢查最近編寫嘅分監視頁面',
'watchlistcontains' => '汝嘅監視列表包含$1隻頁面。',
'iteminvalidname' => "頁面'$1'錯誤,無效命名...",
-'wlnote' => 'Yî-ha he chui-khiûn <b>$2</b> séu-sṳ̀ nui-ke chui-heu $1-chhṳ chin-siû.',
'wlshowlast' => '展示最近$1隻鐘頭,$2日或$3嘅更改。',
'watchlist-options' => '監視列表選項',
'block-log-flags-noautoblock' => '禁用自動查封',
'range_block_disabled' => '單淨管理員正做得創建禁止查封嘅範圍。',
'ipb_expiry_invalid' => '無效嘅終止時間。',
+'ipb_hide_invalid' => 'Put-tet yit-chak yung-fu; Kì yû chhêu-ko {{PLURAL:$1|$1}} chhṳ-su phiên-siá',
'ipb_already_blocked' => 'Yí-kîn fûng-só "$1"',
'ipb_cant_unblock' => '差錯: 尋毋到查封ID$1。可能已經解除封禁。',
'ip_range_invalid' => '無效嘅IP範圍。',
'tooltip-pt-watchlist' => '汝監視中頁面嘅更改列表',
'tooltip-pt-mycontris' => '汝嘅貢獻列表',
'tooltip-pt-login' => '建議汝登入,但係並非必須嘅',
-'tooltip-pt-anonlogin' => 'Kien-ngi ngì tên-ki, than-he pin-fî pit-sî.',
'tooltip-pt-logout' => '登出',
'tooltip-ca-talk' => '關於頁面正文嘅討論',
'tooltip-ca-edit' => '汝做得編寫邇頁,請在保存前用預覽撳掣。',
* @author Rotem Liss (March 2006 on)
* @author Rotemliss
* @author YaronSh
+ * @author Yona b
* @author אור שפירא
+ * @author דולב
* @author ערן
* @author פדיחה
* @author שומבלע
$messages = array(
# User preference toggles
'tog-underline' => 'סימון קישורים בקו תחתי:',
-'tog-justify' => 'יישור פסקאות',
'tog-hideminor' => 'הסתרת שינויים משניים ברשימת השינויים האחרונים',
'tog-hidepatrolled' => 'הסתרת שינויים בדוקים ברשימת השינויים האחרונים',
'tog-newpageshidepatrolled' => 'הסתרת דפים בדוקים ברשימת הדפים החדשים',
'tog-numberheadings' => 'מספור כותרות אוטומטי',
'tog-showtoolbar' => 'הצגת סרגל העריכה',
'tog-editondblclick' => 'עריכת דפים בלחיצה כפולה',
-'tog-editsection' => 'עריכת פסקאות באמצעות קישורי [עריכה]',
-'tog-editsectiononrightclick' => 'עריכת פסקאות על ידי לחיצה ימנית על כותרות הפסקאות',
-'tog-showtoc' => 'הצגת תוכן עניינים (עבור דפים עם יותר מ־3 כותרות)',
+'tog-editsectiononrightclick' => 'עריכת פסקאות באמצעות לחיצה ימנית על כותרות הפסקאות',
'tog-rememberpassword' => 'שמירת הכניסה שלי בדפדפן זה ({{PLURAL:$1|ליום אחד|ליומיים|ל־$1 ימים}} לכל היותר)',
'tog-watchcreations' => 'מעקב אחרי דפים שיצרתי וקבצים שהעליתי',
'tog-watchdefault' => 'מעקב אחרי דפים וקבצים שערכתי',
'tog-enotifrevealaddr' => 'חשיפת כתובת הדוא"ל שלך בהודעות דוא"ל',
'tog-shownumberswatching' => 'הצגת מספר המשתמשים העוקבים',
'tog-oldsig' => 'החתימה הנוכחית:',
-'tog-fancysig' => 'פ×\99ר×\95ש ×\94חתימה כקוד ויקי (ללא קישור אוטומטי)',
+'tog-fancysig' => '×\94ת×\99×\99×\97ס×\95ת ×\9cחתימה כקוד ויקי (ללא קישור אוטומטי)',
'tog-uselivepreview' => 'שימוש בתצוגה מקדימה מהירה (ניסיוני)',
'tog-forceeditsummary' => 'הצגת אזהרה בעת הכנסת תקציר עריכה ריק',
'tog-watchlisthideown' => 'הסתרת העריכות שלי ברשימת המעקב',
'category-subcat-count-limited' => 'קטגוריה זו כוללת את {{PLURAL:$1|קטגוריית המשנה הבאה|$1 קטגוריות המשנה הבאות}}.',
'category-article-count' => '{{PLURAL:$2|קטגוריה זו כוללת את הדף הבא בלבד|דף קטגוריה זה כולל את {{PLURAL:$1|הדף הבא|$1 הדפים הבאים}}, מתוך $2 בקטגוריה כולה}}.',
'category-article-count-limited' => 'קטגוריה זו כוללת את {{PLURAL:$1|הדף הבא|$1 הדפים הבאים}}.',
-'category-file-count' => '{{PLURAL:$2|ק×\98×\92×\95ר×\99×\94 ×\96×\95 ×\9b×\95×\9c×\9cת ×\90ת ×\94ק×\95×\91×¥ ×\94×\91×\90 ×\91×\9c×\91×\93|×\93×£ ק×\98×\92×\95ר×\99×\94 ×\96×\94 ×\9b×\95×\9c×\9c את {{PLURAL:$1|הקובץ הבא|$1 הקבצים הבאים}}, מתוך $2 בקטגוריה כולה}}.',
+'category-file-count' => '{{PLURAL:$2|ק×\98×\92×\95ר×\99×\94 ×\96×\95 ×\9b×\95×\9c×\9cת ×\90ת ×\94ק×\95×\91×¥ ×\94×\91×\90 ×\91×\9c×\91×\93|ק×\98×\92×\95ר×\99×\94 ×\96×\95 ×\9b×\95×\9c×\9cת את {{PLURAL:$1|הקובץ הבא|$1 הקבצים הבאים}}, מתוך $2 בקטגוריה כולה}}.',
'category-file-count-limited' => 'קטגוריה זו כוללת את {{PLURAL:$1|הקובץ הבא|$1 הקבצים הבאים}}.',
'listingcontinuesabbrev' => '(המשך)',
'index-category' => 'דפים המופיעים במנועי חיפוש',
'actionthrottled' => 'הפעולה הוגבלה',
'actionthrottledtext' => 'כאמצעי נגד ספאם, אינכם מורשים לבצע פעולה זו פעמים רבות מדי בזמן קצר. אנא נסו שוב בעוד מספר דקות.',
'protectedpagetext' => 'דף זה מוגן כדי למנוע עריכה ופעולות אחרות.',
-'viewsourcetext' => '×\91×\90פשר×\95ת×\9b×\9d לצפות בטקסט המקור של הדף ולהעתיקו:',
+'viewsourcetext' => '×\91×\90פשר×\95ת×\9a לצפות בטקסט המקור של הדף ולהעתיקו:',
'viewyourtext' => "באפשרותכם לצפות בטקסט המקור של '''העריכות שלכם''' של הדף ולהעתיקו:",
'protectedinterface' => 'דף זה הוא אחד מסדרת דפים המספקים הודעות מערכת לתוכנה באתר ויקי זה, ומוגן כדי למנוע השחתות.
כדי להוסיף או לשנות תרגומים בכל אתרי הוויקי, אנא השתמשו ב־[//translatewiki.net/ translatewiki.net], פרויקט התרגום של מדיה־ויקי.',
אנא המתינו $1 לפני שתנסו שוב.',
'login-abort-generic' => 'הכניסה לחשבון לא הצליחה - היא הופסקה',
'loginlanguagelabel' => 'שפה: $1',
-'suspicious-userlogout' => '×\91קשת×\9b×\9d ×\9cצ×\90ת ×\9e×\94×\97ש×\91×\95×\9f × ×\93×\97ת×\94 ×\9b×\99×\95×\95×\9f ×©× ×¨×\90×\94 ש×\94×\99×\90 × ×©×\9c×\97×\94 ×¢×\9c ידי דפדפן שבור או שרת פרוקסי עם זיכרון מטמון.',
+'suspicious-userlogout' => '×\91קשת×\9a ×\9cצ×\90ת ×\9e×\94×\97ש×\91×\95×\9f × ×\93×\97ת×\94 ×\9b×\99×\95×\95×\9f ×©× ×¨×\90×\94 ש×\94×\99×\90 × ×©×\9c×\97×\94 ×¢×\9cÖ¾ידי דפדפן שבור או שרת פרוקסי עם זיכרון מטמון.',
'createacct-another-realname-tip' => 'השם האמיתי הוא אופציונאלי.
אם תבחרו לספקו, הוא ישמש לייחוס עבודת המשתמש אליו.',
'retypenew' => 'חזרה על הסיסמה החדשה:',
'resetpass_submit' => 'הגדרת הסיסמה וכניסה לחשבון',
'changepassword-success' => 'סיסמתכם שונתה בהצלחה!',
+'changepassword-throttled' => 'ביצעתם לאחרונה ניסיונות רבים מדי להיכנס לחשבון זה.
+אנא המתינו $1 לפני שתנסו שוב.',
'resetpass_forbidden' => 'לא ניתן לשנות סיסמאות.',
'resetpass-no-info' => 'יש להיכנס לחשבון כדי לגשת לדף זה באופן ישיר.',
'resetpass-submit-loggedin' => 'שינוי סיסמה',
'changeemail-password' => 'סיסמה ב{{grammar:תחילית|{{SITENAME}}}}:',
'changeemail-submit' => 'שינוי כתובת הדוא"ל',
'changeemail-cancel' => 'ביטול',
+'changeemail-throttled' => 'ביצעתם ניסיונות רבים מדי להיכנס לחשבון זה.
+אנא המתינו $1 לפני שתנסו שוב.',
# Special:ResetTokens
'resettokens' => 'איפוס אסימונים',
אינכם יכולים להשתמש בתכונת "שליחת דואר אלקטרוני למשתמש זה" אם לא ציינתם כתובת דוא"ל תקפה ב[[Special:Preferences|העדפות המשתמש שלכם]] או אם נחסמתם משליחת דוא"ל.
כתובת ה־IP שלכם היא $3, ומספר החסימה שלכם הוא #$5.
אנא ציינו את כל הפרטים הללו בכל פנייה למפעילי המערכת.',
-'autoblockedtext' => 'כתובת ה־IP שלכם נחסמה באופן אוטומטי כיוון שמשתמש אחר, שנחסם על ידי $1, עשה בה שימוש.
+'autoblockedtext' => 'כתובת ה־IP שלכם נחסמה באופן אוטומטי כיוון שמשתמש אחר, שנחסם על־ידי $1, עשה בה שימוש.
הסיבה שניתנה לחסימה היא:
-:\'\'\'$2\'\'\'
+:<em>$2</em>
* תחילת החסימה: $8
* פקיעת החסימה: $6
* החסימה שבוצעה: $7
-באפשרותכם ליצור קשר עם $1 או עם כל אחד מ[[{{MediaWiki:Grouppage-sysop}}|מפעילי המערכת]] האחרים כדי לדון על החסימה.
-אינכם יכולים להשתמש בתכונת "שליחת דואר אלקטרוני למשתמש זה" אם לא ציינתם כתובת דוא"ל תקפה ב[[Special:Preferences|העדפות המשתמש שלכם]] או אם נחסמתם משליחת דוא"ל.
+באפשרותכם ליצור קשר עם $1 או עם כל אחד מ[[{{MediaWiki:Grouppage-sysop}}|מפעילי המערכת]] האחרים כדי לדון בחסימה.
+
+באפשרותכם להשתמש בתכונת "{{int:emailuser}}", אלא אם לא ציינתם כתובת דוא"ל תקפה ב[[Special:Preferences|העדפות המשתמש שלכם]] או אם נחסמתם משליחת דוא"ל.
+
כתובת ה־IP שלכם היא $3, ומספר החסימה שלכם הוא #$5.
אנא ציינו את כל הפרטים הללו בכל פנייה למפעילי המערכת.',
'blockednoreason' => 'לא ניתנה סיבה',
'''אם זהו ניסיון עריכה לגיטימי, אנא נסו שוב.'''
אם זה לא עוזר, נסו [[Special:UserLogout|לצאת מהחשבון]] ולהיכנס אליו שנית.",
-'token_suffix_mismatch' => "'''ער×\99×\9bת×\9b×\9d × ×\93×\97ת×\94 ×\9b×\99×\95×\95×\9f ש×\94×\93פ×\93פ×\9f ש×\9c×\9b×\9d מחק את תווי הפיסוק באסימון העריכה.'''
+'token_suffix_mismatch' => "'''ער×\99×\9bת×\9a × ×\93×\97ת×\94 ×\9b×\99×\95×\95×\9f ש×\94×\93פ×\93פ×\9f ש×\9c×\9a מחק את תווי הפיסוק באסימון העריכה.'''
העריכה נדחתה כדי למנוע בעיות כאלה בטקסט של הדף.
לעתים התקלה מתרחשת עקב שימוש בשירות פרוקסי אנונימי פגום.",
'edit_form_incomplete' => "'''כמה חלקים מטופס העריכה לא הגיעו לשרת; בדקו היטב שעריכותיכם לא נפגעו ונסו שוב.'''",
'invalid-content-data' => 'מידע שגוי על התוכן',
'content-not-allowed-here' => 'תוכן מסוג "$1" אינו מותר בדף [[$2]]',
'editwarning-warning' => 'עזיבת דף זה עשויה לגרום לאובדן כל השינויים שביצעתם.
-אם אתם מחוברים לחשבון, תוכלו לבטל אזהרה זו בחלק "עריכה" שבהעדפות שלכם.',
+אם אתם מחוברים לחשבון, תוכלו לבטל אזהרה זו בחלק "{{int:prefs-editing}}" שבהעדפות שלכם.',
+'editpage-notsupportedcontentformat-title' => 'סוג התוכן אינו נתמך',
+'editpage-notsupportedcontentformat-text' => 'תוכן מסוג $1 אינו נתמך על־ידי מודל התוכן $2.',
# Content models
'content-model-wikitext' => 'טקסט ויקי',
'showhideselectedversions' => 'הצגת/הסתרת הגרסאות שנבחרו',
'editundo' => 'ביטול',
'diff-empty' => '(אין הבדלים)',
-'diff-multi' => '({{PLURAL:$1|גרסת ביניים אחת|$1 גרסאות ביניים}} של {{PLURAL:$2|משתמש אחד|$2 משתמשים}} {{PLURAL:$1|אינה מוצגת|אינן מוצגות}})',
+'diff-multi-sameuser' => '({{PLURAL:$1|גרסת ביניים אחת|$1 גרסאות ביניים}} ממשתמש אחד אינן מוצגות',
+'diff-multi-otherusers' => '({{PLURAL:$1|גרסת ביניים אחת|$1 גרסאות ביניים}} {{PLURAL:$2|ממשתמש אחד|מ-$2 משתמשים}} אינן מוצגות)',
'diff-multi-manyusers' => '({{PLURAL:$1|גרסת ביניים אחת|$1 גרסאות ביניים}} של יותר {{PLURAL:$2|ממשתמש אחד|מ־$2 משתמשים}} {{PLURAL:$1|אינה מוצגת|אינן מוצגות}})',
'difference-missing-revision' => '{{PLURAL:$2|גרסה אחת|$2 גרסאות}} של ההבדל הזה בין שתי גרסאות ($1) {{PLURAL:$2|לא נמצאה|לא נמצאו}}.
'shown-title' => 'הצגת {{PLURAL:$1|תוצאה אחת|$1 תוצאות}} בדף',
'viewprevnext' => 'צפייה ב: ($1 {{int:pipe-separator}} $2) ($3)',
'searchmenu-exists' => "'''קיים דף בשם \"[[:\$1]]\" באתר זה.'''",
-'searchmenu-new' => "'''יצירת הדף \"[[:\$1]]\" באתר זה.'''",
+'searchmenu-new' => "<strong>'''יצירת הדף \"[[:\$1]]\" באתר זה.'''</strong>
+{{PLURAL:\$2|0=|ראו גם את הדף שנמצא בחיפוש שלכם.|ראו גם את תוצאות החיפוש שלכם.}}",
'searchprofile-articles' => 'דפי תוכן',
'searchprofile-project' => 'עזרה ודפי המיזם',
'searchprofile-images' => 'מולטימדיה',
'search-result-score' => 'רלוונטיוּת: $1%',
'search-redirect' => '(הפניה $1)',
'search-section' => '(פסקה $1)',
+'search-file-match' => '(התאמה בתוכן הקובץ)',
'search-suggest' => 'האם התכוונת ל: $1',
'search-interwiki-caption' => 'מיזמי אחות',
'search-interwiki-default' => 'תוצאות ב{{GRAMMAR:תחילית|$1}}:',
'rows' => 'שורות:',
'columns' => 'עמודות:',
'searchresultshead' => 'חיפוש',
-'resultsperpage' => 'מספר תוצאות בעמוד:',
'stub-threshold' => 'סף לעיצוב <a href="#" class="stub">קישורים</a> לקצרמרים (בתים):',
'stub-threshold-disabled' => 'מבוטל',
'recentchangesdays' => 'מספר הימים שיוצגו בדף השינויים האחרונים:',
'timezonelegend' => 'אזור זמן:',
'localtime' => 'זמן מקומי:',
'timezoneuseserverdefault' => 'ברירת המחדל של האתר ($1)',
-'timezoneuseoffset' => '×\90×\97ר (× ×\90 צ×\99×\99× ×\95 את ההפרש)',
+'timezoneuseoffset' => '×\90×\97ר (×\99ש ×\9cצ×\99×\99×\9f את ההפרש)',
'servertime' => 'השעה הנוכחית בשרת:',
'guesstimezone' => 'קבלה מהדפדפן',
'timezoneregion-africa' => 'אפריקה',
'file-exists-duplicate' => 'קובץ זה זהה {{PLURAL:$1|לקובץ הבא|לקבצים הבאים}}:',
'file-deleted-duplicate' => 'קובץ זהה לקובץ זה ([[:$1]]) נמחק בעבר.
אנא בדקו את היסטוריית המחיקה של הקובץ לפני שתעלו אותו מחדש.',
+'file-deleted-duplicate-notitle' => 'קובץ זהה לקובץ זה נמחק בעבר, והכותרת שלו הוסתרה.
+אנא בקשו ממישהו שיכול לראות מידע על קבצים שהוסתרו לבדוק את המצב לפני שתעלו אותו מחדש.',
'uploadwarning' => 'אזהרת העלאת קבצים',
'uploadwarning-text' => 'אנא שנו את תיאור הקובץ שלמטה ונסו שוב.',
'savefile' => 'שמירת קובץ',
'protectedpages' => 'דפים מוגנים',
'protectedpages-indef' => 'הגנות לזמן בלתי מוגבל בלבד',
'protectedpages-cascade' => 'הגנות מדורגות בלבד',
+'protectedpages-noredirect' => 'הסתרת הפניות',
'protectedpagesempty' => 'אין כרגע דפים מוגנים עם הפרמטרים הללו.',
'protectedtitles' => 'כותרות מוגנות',
'protectedtitlesempty' => 'אין כרגע כותרות מוגנות עם הפרמטרים האלה.',
'allarticles' => 'כל הדפים',
'allinnamespace' => 'כל הדפים (מרחב שם $1)',
'allpagessubmit' => 'הצגה',
-'allpagesprefix' => 'הדפים ששמם מתחיל ב…:',
+'allpagesprefix' => 'הדפים ששמם מתחיל ב:',
'allpagesbadtitle' => 'כותרת הדף שניתנה הייתה בלתי־תקינה או שהייתה בה קידומת של קישור לשפה אחרת או לוויקי אחר.
ייתכן שהיא מכילה תו אחד או יותר האסורים לשימוש בכותרות.',
'allpages-bad-ns' => 'אין מרחב שם בשם "$1".',
'watchlistfor2' => 'עבור $1 $2',
'nowatchlist' => 'אין דפים ברשימת המעקב.',
'watchlistanontext' => 'עליכם $1 כדי לצפות או לערוך פריטים ברשימת המעקב.',
-'watchnologin' => 'לא נכנסתם לחשבון',
+'watchnologin' => 'לא נכנסת לחשבון',
'watchnologintext' => 'עליכם [[Special:UserLogin|להיכנס לחשבון]] כדי לערוך את רשימת המעקב.',
'addwatch' => 'הוספה לרשימת המעקב',
'addedwatchtext' => 'הדף [[:$1]] נוסף ל[[Special:Watchlist|רשימת המעקב]].
'notvisiblerev' => 'הגרסה האחרונה שנוצרה על־ידי משתמש אחר נמחקה',
'watchlist-details' => 'ברשימת המעקב יש {{PLURAL:$1|דף אחד|$1 דפים}} (לא כולל דפי שיחה).',
'wlheader-enotif' => 'הודעות דוא"ל מאופשרות.',
-'wlheader-showupdated' => "×\93פ×\99×\9d ש×\94×©×ª× ×\95 ×\9e×\90×\96 ×\91×\99ק×\95ר×\9b×\9d האחרון בהם מוצגים ב'''הדגשה'''.",
+'wlheader-showupdated' => "×\93פ×\99×\9d ש×\94×©×ª× ×\95 ×\9e×\90×\96 ×\91×\99ק×\95ר×\9a האחרון בהם מוצגים ב'''הדגשה'''.",
'watchmethod-recent' => 'בודק את הדפים שברשימת המעקב לשינויים אחרונים.',
'watchmethod-list' => 'בודק את העריכות האחרונות בדפים שברשימת המעקב',
'watchlistcontains' => 'רשימת המעקב כוללת {{PLURAL:$1|דף אחד|$1 דפים}}.',
'iteminvalidname' => 'בעיה עם $1, שם שגוי…',
-'wlnote' => "להלן {{PLURAL:$1|השינוי האחרון|'''$1''' השינויים האחרונים}} {{PLURAL:$2|בשעה האחרונה|בשעתיים האחרונות|ב־'''$2''' השעות האחרונות}}, עד $4, $3.",
+'wlnote2' => 'להלן השינויים האחרונים ב{{PLURAL:$1|שעה האחרונה|-<strong> $1 </strong> שעות האחרונות}}, מ-$2, $3.',
'wlshowlast' => '(הצגת $1 שעות אחרונות | $2 ימים אחרונים | $3)',
'watchlist-options' => 'אפשרויות ברשימת המעקב',
'exblank' => 'הדף היה ריק',
'delete-confirm' => 'מחיקת $1',
'delete-legend' => 'מחיקה',
-'historywarning' => "'''אזהרה:''' לדף שאתם עומדים למחוק יש היסטוריית שינויים של בערך {{PLURAL:$1|גרסה אחת|$1 גרסאות}}:",
+'historywarning' => "'''אזהרה:''' לדף שאתם עומדים למחוק יש היסטוריית שינויים של {{PLURAL:$1|גרסה אחת|$1 גרסאות}}:",
'confirmdeletetext' => 'אתם עומדים למחוק דף יחד עם כל ההיסטוריה שלו.
אנא אשרו שזה אכן מה שאתם מתכוונים לעשות, שאתם מבינים את התוצאות של מעשה כזה, ושהמעשה מבוצע בהתאם ל[[{{MediaWiki:Policy-url}}|נוהלי האתר]].',
'delete-edit-reasonlist' => 'עריכת סיבות המחיקה',
'delete-toobig' => 'דף זה כולל מעל {{PLURAL:$1|גרסה אחת|$1 גרסאות}} בהיסטוריית העריכות שלו. מחיקת דפים כאלה הוגבלה כדי למנוע פגיעה בביצועי האתר.',
'delete-warning-toobig' => 'דף זה כולל מעל {{PLURAL:$1|גרסה אחת|$1 גרסאות}} בהיסטוריית העריכות שלו. מחיקה שלו עלולה להפריע לפעולות בבסיס הנתונים; אנא שקלו שנית את המחיקה.',
+'deleting-backlinks-warning' => "'''אזהרה:''' דפים אחרים מקשרים לדף שאתם עומדים למחוק או מכלילים אותו.",
# Rollback
'rollback' => 'שחזור עריכות',
'blockipsuccesstext' => '{{GENDER:$1|המשתמש|המשתמשת}} [[Special:Contributions/$1|$1]] {{GENDER:$1|נחסם|נחסמה}}.
ראו את [[Special:BlockList|רשימת החסומים]] כדי לצפות בחסימות.',
-'ipb-blockingself' => '×\90ת×\9d ×¢×\95×\9e×\93×\99×\9d ×\9c×\97ס×\95×\9d ×\90ת עצ×\9e×\9b×\9d! ×\94×\90×\9d ×\90ת×\9d ×\91×\90×\9eת ר×\95צ×\99×\9d ×\9cעש×\95ת ×\90ת ×\96×\94?',
+'ipb-blockingself' => '×\90ת×\9d ×¢×\95×\9e×\93×\99×\9d ×\9c×\97ס×\95×\9d ×\90ת עצ×\9e×\9b×\9d! ×\94×\90×\9d ×\90ת×\9d ×\91×\98×\95×\97×\99×\9d ש×\91רצ×\95× ×\9b×\9d ×\9cעש×\95ת ×\96×\90ת?',
'ipb-confirmhideuser' => 'אתם עומדים לחסום משתמש עם האפשרות "הסתרת משתמש". פעולה זו תסתיר את שם המשתמש בכל הרשימות ופעולות היומן. האם אתם בטוחים שברצונכם לעשות זאת?',
+'ipb-confirmaction' => 'אם אתם באמת בטוחים שברצונכם לעשות זאת, אנא סמנו את השדה "{{int:ipb-confirm}}" שבתחתית.',
'ipb-edit-dropdown' => 'עריכת סיבות החסימה',
'ipb-unblock-addr' => 'הסרת חסימה של $1',
'ipb-unblock' => 'הסרת חסימה של שם משתמש או כתובת IP',
'autoblocker' => 'נחסמתם באופן אוטומטי משום שאתם חולקים את כתובת ה־IP שלכם עם [[User:$1|$1]].
הסיבה שניתנה לחסימת $1 היא "\'\'\'$2\'\'\'"',
'blocklogpage' => 'יומן חסימות',
-'blocklog-showlog' => 'משתמש זה נחסם בעבר. יומן החסימות מוצג למטה:',
-'blocklog-showsuppresslog' => 'משתמש זה נחסם והוסתר בעבר. יומן ההסתרות מוצג למטה:',
+'blocklog-showlog' => 'משתמש זה נחסם בעבר.
+יומן החסימות מוצג להלן:',
+'blocklog-showsuppresslog' => 'משתמש זה נחסם והוסתר בעבר.
+יומן ההסתרות מוצג להלן:',
'blocklogentry' => 'חסם את [[$1]] למשך $2 $3',
'reblock-logentry' => 'שינה את הגדרות החסימה של [[$1]] עם זמן פקיעה של $2 $3',
'blocklogtext' => 'זהו יומן פעולות החסימה והשחרור של משתמשים.
'range_block_disabled' => 'האפשרות לחסום טווח כתובות אינה פעילה.',
'ipb_expiry_invalid' => 'זמן פקיעת החסימה אינו תקין.',
'ipb_expiry_temp' => 'חסימות הכוללות הסתרת שם משתמש חייבות להיות לזמן בלתי מוגבל.',
-'ipb_hide_invalid' => 'לא ניתן להסתיר שם משתמש זה; ייתכן שבוצעו ממנו יותר מדי עריכות.',
+'ipb_hide_invalid' => 'לא ניתן להסתיר שם משתמש זה; {{PLURAL:$1|בוצעה ממנו יותר מעריכה אחת|בוצעו ממנו יותר מ֫־$1 עריכות}}.',
'ipb_already_blocked' => 'המשתמש "$1" כבר נחסם.',
'ipb-needreblock' => '$1 כבר נחסם. האם ברצונכם לשנות את הגדרות החסימה?',
'ipb-otherblocks-header' => '{{PLURAL:$1|חסימה אחרת|חסימות אחרות}}',
'allmessages-prefix' => 'סינון לפי קידומת:',
'allmessages-language' => 'שפה:',
'allmessages-filter-submit' => 'הצגה',
+'allmessages-filter-translate' => 'תרגום',
# Thumbnails
'thumbnail-more' => 'הגדלה',
'tooltip-pt-watchlist' => 'רשימת הדפים שאתם עוקבים אחרי השינויים בהם',
'tooltip-pt-mycontris' => 'רשימת התרומות שלך',
'tooltip-pt-login' => 'מומלץ להירשם, אך אין חובה לעשות כן',
-'tooltip-pt-anonlogin' => 'מומלץ להירשם, אך אין חובה לעשות כן',
'tooltip-pt-logout' => 'יציאה מהחשבון',
'tooltip-ca-talk' => 'שיחה על דף זה',
'tooltip-ca-edit' => 'באפשרותכם לערוך דף זה. אנא השתמשו בלחצן "תצוגה מקדימה" לפני השמירה',
'tooltip-ca-addsection' => 'הוספת פסקה חדשה',
-'tooltip-ca-viewsource' => '×\94×\93×£ ×\94זה מוגן.
-×\91×\90פשר×\95ת×\9b×\9d לצפות בטקסט המקור שלו',
+'tooltip-ca-viewsource' => '×\93×£ זה מוגן.
+×\91×\90פשר×\95ת×\9a לצפות בטקסט המקור שלו',
'tooltip-ca-history' => 'גרסאות קודמות של דף זה',
'tooltip-ca-protect' => 'הגנה על דף זה',
'tooltip-ca-unprotect' => 'שינוי ההגנה על דף זה',
'tooltip-p-logo' => 'ביקור בעמוד הראשי',
'tooltip-n-mainpage' => 'ביקור בעמוד הראשי',
'tooltip-n-mainpage-description' => 'ביקור בעמוד הראשי',
-'tooltip-n-portal' => '×\90×\95×\93×\95ת ×\94×\9e×\99×\96×\9d, ×\90×\99×\9a ת×\95×\9b×\9c×\95 ×\9c×¢×\96×\95ר, ×\90×\99פ×\94 למצוא דברים',
+'tooltip-n-portal' => '×\90×\95×\93×\95ת ×\94×\9e×\99×\96×\9d, ×\9b×\99צ×\93 ת×\95×\9b×\9c×\95 ×\9c×¢×\96×\95ר, ×\94×\99×\9b×\9f למצוא דברים',
'tooltip-n-currentevents' => 'מציאת מידע רקע על האירועים האחרונים',
'tooltip-n-recentchanges' => 'רשימת השינויים האחרונים באתר',
'tooltip-n-randompage' => 'צפייה בדף תוכן אקראי',
'markaspatrolleddiff' => 'סימון השינוי כבדוק',
'markaspatrolledtext' => 'סימון דף זה כבדוק',
'markedaspatrolled' => 'השינוי סומן כבדוק',
-'markedaspatrolledtext' => 'השינוי שבחרתם בדף [[:$1]] סומן כבדוק.',
+'markedaspatrolledtext' => 'השינוי שבחרת בדף [[:$1]] סומן כבדוק.',
'rcpatroldisabled' => 'אפשרות סימון השינויים כבדוקים מבוטלת',
'rcpatroldisabledtext' => 'תכונת סימון שינויים כבדוקים בדף השינויים האחרונים בוטלה.',
'markedaspatrollederror' => 'לא ניתן לסמן כבדוק',
'version-parser-function-hooks' => 'מבנים של פונקציות מפענח',
'version-hook-name' => 'שם ה־Hook',
'version-hook-subscribedby' => 'הפונקציה הרושמת',
-'version-version' => '(גרסה $1)',
-'version-license' => 'רישיון',
+'version-version' => '($1)',
+'version-license' => 'רישיון עבור מדיה־ויקי',
+'version-ext-license' => 'רישיון',
+'version-ext-colheader-name' => 'הרחבה',
+'version-ext-colheader-version' => 'גרסה',
+'version-ext-colheader-license' => 'רישיון',
+'version-ext-colheader-description' => 'תיאור',
+'version-ext-colheader-credits' => 'מחברים',
+'version-license-title' => 'רישיון עבור $1',
+'version-license-not-found' => 'לא נמצא מידע מפורט על הרישיון עבור הרחבה זו.',
+'version-credits-title' => 'תורמים ל{{grammar:תחילית|$1}}',
+'version-credits-not-found' => 'לא נמצא מידע מפורט על התורמים להרחבה זו.',
'version-poweredby-credits' => "אתר הוויקי הזה מופעל על ידי '''[https://www.mediawiki.org/ מדיה־ויקי]''', © 2001–$1 $2.",
'version-poweredby-others' => 'אחרים',
'version-poweredby-translators' => 'מתרגמי translatewiki.net',
'api-error-overwrite' => 'לא מותרת החלפת קובץ קיים.',
'api-error-stashfailed' => 'שגיאה פנימית: השרת נכשל באחסון הקובץ הזמני.',
'api-error-publishfailed' => 'שגיאה פנימית: השרת נכשל בפרסום הקובץ הזמני.',
+'api-error-stasherror' => 'הייתה שגיאה בהעלאת הקובץ למאגר.',
'api-error-timeout' => 'השרת לא השיב בזמן המצופה.',
'api-error-unclassified' => 'אירעה שגיאה בלתי ידועה.',
'api-error-unknown-code' => 'שגיאה בלתי ידועה: "$1".',
'expand_templates_generate_rawhtml' => 'הצגת HTML גולמי',
'expand_templates_preview' => 'תצוגה מקדימה',
+# Unknown messages
+'uploadinvalidxml' => 'לא ניתן לפרש את ה־XML בקובץ שהועלה.',
);
* @author Krinkle
* @author Kumar
* @author Mayur
+ * @author Nikhil.kawale
* @author Odisha1
* @author Omprakash
* @author Pulkitsingh01
* @author Shantanoo
* @author Shirayuki
* @author Shrish
+ * @author Shubhamkanodia
* @author Shyam
* @author Shyam123.ckp
* @author Siddhartha Ghai
* @author Subhashkataria21.90
* @author Sunil Mohan
* @author Taxman
+ * @author Venky2834
* @author Vibhijain
* @author Wikiconference
* @author לערי ריינהארט
$messages = array(
# User preference toggles
'tog-underline' => 'कड़ियाँ अधोरेखन:',
-'tog-justify' => 'परिच्छेद समान करें',
'tog-hideminor' => 'हाल में हुए बदलावों में छोटे बदलाव छिपाएँ',
'tog-hidepatrolled' => 'हाल में हुए बदलावों में परीक्षित बदलाव छिपाएँ',
'tog-newpageshidepatrolled' => 'नए पृष्ठों की सूची में परीक्षित पृष्ठ छिपाएँ',
'tog-numberheadings' => 'शीर्षक स्व-क्रमांकित करें',
'tog-showtoolbar' => 'सम्पादन औज़ारपट्टी दिखाएँ',
'tog-editondblclick' => 'दुगुने क्लिक पर पृष्ठ संपादित करें',
-'tog-editsection' => '[संपादित करें] कड़ियों द्वारा अनुभाग संपादन सक्षम करें',
'tog-editsectiononrightclick' => 'अनुभाग शीर्षक पर दायाँ क्लिक करने पर अनुभाग सम्पादित करें',
-'tog-showtoc' => 'अनुक्रम दर्शायें (जिन पृष्ठों पर तीन से अधिक अनुभाग हों)',
'tog-rememberpassword' => 'इस ब्राउज़र पर मेरा कूटशब्द (अधिकतम $1 {{PLURAL:$1|दिन|दिनों}} तक) याद रखें',
'tog-watchcreations' => 'मेरे द्वारा निर्मित पृष्ठों और मेरी अपलोड की फ़ाइलों को मेरी ध्यानसूची में जोड़ें',
'tog-watchdefault' => 'मेरे द्वारा सम्पादित पृष्ठों और फ़ाइलों को मेरी ध्यानसूची में जोड़ें',
'youhavenewmessages' => 'आपके लिए $1 हैं। ($2)',
'youhavenewmessagesfromusers' => 'आपके लिये {{PLURAL:$3|एक अन्य सदस्य|$3 अन्य सदस्यों}} के $1 हैं। ($2)',
'youhavenewmessagesmanyusers' => 'आपके लिये $1 हैं। ($2)',
-'newmessageslinkplural' => '{{PLURAL:$1|एक नया सन्देश|नये सन्देश}}',
-'newmessagesdifflinkplural' => '{{PLURAL:$1|पिछला|पिछले}} बदलाव',
+'newmessageslinkplural' => '{{PLURAL:$1|एक नया सन्देश|999=नये सन्देश}}',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|पिछला|999=पिछले}} बदलाव',
'youhavenewmessagesmulti' => '$1 पर आपके लिए नया संदेश है',
'editsection' => 'सम्पादन',
'editold' => 'सम्पादन',
'invalidtitle-knownnamespace' => '"$2" नामस्थान और "$3" नाम वाला गलत शीर्षक',
'invalidtitle-unknownnamespace' => 'अज्ञात नामस्थान संख्या $1 और नाम "$2" वाला गलत शीर्षक',
'exception-nologin' => 'लॉग इन नहीं किया है',
-'exception-nologin-text' => 'इस पृष्ठ अथवा कार्य के लिए आपको विकि में लॉग्ड इन होना आवश्यक है।',
+'exception-nologin-text' => 'इस पृष्ठ अथवा कार्य को सक्षम करने के लिए कृपया [[Special:Userlogin|लॉग इन]] करें।',
+'exception-nologin-text-manual' => 'इस पृष्ठ अथवा कार्य को सक्षम करने के लिए कृपया $1 करें।',
# Virus scanner
'virus-badscanner' => "गलत जमाव: अज्ञात वायरस जाँचक: ''$1''",
'yourpasswordagain' => 'कूटशब्द दुबारा लिखें:',
'createacct-yourpasswordagain' => 'कूटशब्द की पुष्टि करें',
'createacct-yourpasswordagain-ph' => 'कूटशब्द पुनः लिखें',
-'remembermypassword' => 'हà¥\8dया बà¥\8dराà¤\89à¤\9cराà¤\9aà¥\87र माà¤\9cà¥\8b लà¥\89à¤\97 à¤\87न याद दवरात (à¤\9aडाà¤\82तà¤\9aड $1 {{PLURAL:$1|दिस|दिसाà¤\82}} à¤\96ातà¥\80र)',
+'remembermypassword' => 'à¤\87स बà¥\8dराà¤\89à¤\9c़र पर मà¥\87रा लà¥\89à¤\97िन याद रà¤\96à¥\87à¤\82 (à¤\85धिà¤\95तम $1 {{PLURAL:$1|दिन|दिनà¥\8bà¤\82}} à¤\95à¥\87 लिà¤\8f)',
'userlogin-remembermypassword' => 'मुझे लॉग्ड इन रखें',
'userlogin-signwithsecure' => 'सुरक्षित कनेक्शन का प्रयोग करें',
'yourdomainname' => 'आपका डोमेन:',
'gotaccount' => "पहले से आपका खाता है? '''$1''' करें।",
'gotaccountlink' => 'लॉग इन',
'userlogin-resetlink' => 'अपनी प्रवेश जानकारी भूल गए हैं?',
-'userlogin-resetpassword-link' => 'à¤\85पना à¤\95à¥\82à¤\9fशबà¥\8dद रà¥\80सà¥\87à¤\9f à¤\95रà¥\87à¤\82',
+'userlogin-resetpassword-link' => 'à¤\85पना पासवरà¥\8dड à¤à¥\82ल à¤\97à¤\8f?',
'helplogin-url' => 'Help:लॉगिंग इन',
'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|लॉग इन करने में सहायता]]',
+'userlogin-loggedin' => 'आप {{GENDER:$1|$1}} के रूप में पहले से लॉग्ड इन हैं।
+किसी अन्य सदस्य के रूप में लॉग इन करने के लिए निम्नलिखित फ़ॉर्म का प्रयोग करें।',
+'userlogin-createanother' => 'एक अन्य खाता खोलें',
'createacct-join' => 'अपनी जानकारी नीचे लिखें',
'createacct-another-join' => 'नए खाते की जानकारी नीचे प्रदान करें।',
'createacct-emailrequired' => 'ई-मेल पता',
'passwordtooshort' => 'आपका कूटशब्द कम से कम {{PLURAL:$1|1 अक्षर|$1 अक्षरों}} का होना चाहिये।',
'password-name-match' => 'आपका कूटशब्द आपके सदस्यनाम से भिन्न होना चाहिए।',
'password-login-forbidden' => 'इस सदस्यनाम और कूटशब्द का उपयोग वर्जित है।',
-'mailmypassword' => 'à¤\88-मà¥\87ल दà¥\8dवारा नया à¤\95à¥\82à¤\9fशबà¥\8dद à¤à¥\87à¤\9cें',
+'mailmypassword' => 'à¤\95à¥\82à¤\9fशबà¥\8dद पà¥\81नà¤\83सà¥\8dथापित à¤\95रें',
'passwordremindertitle' => '{{SITENAME}} के लिये नया अस्थायी कूटशब्द',
'passwordremindertext' => 'किसी ने (शायद आपने ही, $1 आइ॰पी पते से) {{SITENAME}} ($4) पर इस्तेमाल के लिये नया कूटशब्द मँगाया है। सदस्य "$2" के लिए एक अस्थायी कूटशब्द बना दिया गया है, और यह अभी "$3" है। यदि यह आपकी ही मंशा थी, तो अब आपको सत्रारंभ करके एक नया कूटशब्द चुनना होगा।
आपके अस्थायी कूटशब्द की अवधि {{PLURAL:$5|एक दिन|$5 दिनों}} में समाप्त हो जाएगी।
'passwordsent' => '"$1" के ई-मेल पते पर एक नया कूटशब्द भेज दिया गया है।
ई-मेल पाने बाद कृपया दुबारा लॉग इन करें।',
'blocked-mailpassword' => 'आपके आइ॰पी पते को सम्पादन करने से अवरुद्ध कर दिया गया है, और गलत इस्तेमाल रोकने के लिये कूटशब्द पुनः प्राप्ति की सुविधा इस आइ॰पी पर बंद कर दी गई है।',
-'eauthentsent' => 'दर्ज किये हुए ई-मेल पते पर एक सत्यापन ई-मेल भेजा गया है।
-à¤\86पà¤\95à¥\8b à¤\89स à¤\88-मà¥\87ल मà¥\87à¤\82 दियà¥\87 हà¥\81à¤\8f निरà¥\8dदà¥\87शà¥\8bà¤\82 à¤\95à¥\87 à¤\85नà¥\81सार à¤\95à¥\8dरियाà¤\8fà¤\81 à¤\95र à¤\95à¥\87 à¤\88-मà¥\87ल पतà¥\87 à¤\95ा सतà¥\8dयापन à¤\95रना हà¥\8bà¤\97ा, à¤\89सà¤\95à¥\87 पशà¥\8dà¤\9aात हà¥\80 यहाà¤\81 सà¥\87 à¤\95à¥\8bà¤\88 दà¥\82सरा à¤\88-मà¥\87ल à¤à¥\87à¤\9cा à¤\9cाà¤\8fà¤\97ा।',
+'eauthentsent' => 'दरà¥\8dà¤\9c à¤\95ियà¥\87 हà¥\81à¤\8f à¤\88-मà¥\87ल पतà¥\87 पर à¤\8fà¤\95 सतà¥\8dयापन à¤\88-मà¥\87ल à¤à¥\87à¤\9cा दिया à¤\97या हà¥\88।
+आपको उस ई-मेल में दिये हुए निर्देशों के अनुसार ई-मेल पते का सत्यापन करना होगा, उसके पश्चात ही यहाँ से कोई दूसरा ई-मेल भेजा जाएगा।',
'throttled-mailpassword' => 'पिछले {{PLURAL:$1|एक घंटे|$1 घंटों}} के दरमियान एक कूटशब्द स्मरण-पत्र भेजा जा चुका है।
दुरुपयोग से बचाव के लिए हर {{PLURAL:$1|एक घंटे|$1 घंटों}} में एक कूटशब्द स्मरण-पत्र ही भेजा जाता है।',
'mailerror' => 'ई-मेल भेजने में त्रुटि: $1',
'acct_creation_throttle_hit' => 'आपके आइ॰पी पते से आए आगंतुक पिछले चौबीस घंटों में इस विकि पर {{PLURAL:$1|एक खाता|$1 खाते}} बना चुके हैं, इस समयावधि में यही अधिकतम सीमा है।
अतः इस समय इस आइ॰पी पते का प्रयोग करने वाले आगंतुक और खाते नहीं खोल सकेंगे।',
-'emailauthenticated' => 'à¤\86पà¤\95à¥\87 à¤\88-मà¥\87ल पतà¥\87 à¤\95à¥\80 दिनाà¤\82à¤\95 $2 à¤\95à¥\8b $3 बà¤\9cà¥\87 पà¥\81षà¥\8dà¤\9fि हà¥\81à¤\88 थà¥\80।',
+'emailauthenticated' => 'à¤\86पà¤\95ा à¤\88-मà¥\87ल पता $2 à¤\95à¥\8b $3 बà¤\9cà¥\87 सतà¥\8dयापित à¤\95िया à¤\97या।',
'emailnotauthenticated' => 'आपके ई-मेल पते की पुष्टि नहीं हुई है।
नीचे दी किसी भी सुविधा के लिये आपको ई-मेल नहीं भेजा जाएगा।',
'noemailprefs' => 'इन सुविधाओं का प्रयोग करने के लिये अपनी वरीयताओं में ई-मेल पता दें।',
'retypenew' => 'नया कूटशब्द पुन: लिखें:',
'resetpass_submit' => 'कूटशब्द बनाएँ और लॉग इन करें',
'changepassword-success' => 'आपका कूटशब्द बदल दिया गया है!',
+'changepassword-throttled' => 'आपने हाल ही में कई बार लॉग इन करने के प्रयास किये हैं।
+पुनः प्रयास करने से पहले कृपया $1 प्रतीक्षा करें।',
'resetpass_forbidden' => 'कूटशब्द बदले नहीं जा सकते',
'resetpass-no-info' => 'इस पृष्ठ का सीधे प्रयोग करने के लिए आपको लॉग इन करना होगा।',
'resetpass-submit-loggedin' => 'कूटशब्द बदलें',
# Special:PasswordReset
'passwordreset' => 'कूटशब्द रीसेट',
'passwordreset-text-one' => 'अपना कूटशब्द रीसेट करने के लिए यह फ़ॉर्म भरें।',
-'passwordreset-text-many' => '{{PLURAL:$1|à¤\85पना à¤\95à¥\82à¤\9fशबà¥\8dद रà¥\80सà¥\87à¤\9f à¤\95रनà¥\87 à¤\95à¥\87 लिà¤\8f निमà¥\8dन मà¥\87à¤\82 सà¥\87 à¤\95à¥\8bà¤\88 à¤\8fà¤\95 भरें।}}',
+'passwordreset-text-many' => '{{PLURAL:$1|à¤\88मà¥\87ल à¤\95à¥\87 माधà¥\8dयम सà¥\87 à¤\8fà¤\95 à¤\85सà¥\8dथायà¥\80 पासवरà¥\8dड पà¥\8dरापà¥\8dत à¤\95रनà¥\87 à¤\95à¥\87 लिà¤\8f à¤\95à¥\8bà¤\88 à¤\8fà¤\95 डिबà¥\8dबा भरें।}}',
'passwordreset-legend' => 'कूटशब्द रीसेट करें',
'passwordreset-disabled' => 'कूटशब्द रीसेट करना इस विकी पर अक्षम है।',
'passwordreset-emaildisabled' => 'इस विकि पर ई-मेल सुविधा अक्षम कर दी गयी है।',
'changeemail-password' => 'आपका {{SITENAME}} पासवर्ड:',
'changeemail-submit' => 'ई-मेल बदलें',
'changeemail-cancel' => 'रद्द करें',
+'changeemail-throttled' => 'आपने हाल ही में कई बार लॉग इन करने के प्रयास किये हैं।
+पुनः प्रयास करने से पहले कृपया $1 प्रतीक्षा करें।',
# Special:ResetTokens
'resettokens' => 'टोकन रीसेट करें',
'content-not-allowed-here' => '[[$2]] पृष्ठ पर "$1" सामग्री मना है।',
'editwarning-warning' => 'इस पृष्ठ को छोड़ने पर आपके द्वारा किये गए कोई भी बदलाव गायब हो जाएँगे।
यदि आपने लॉग इन किया हुआ है तो आप इस सूचना का दिखना अपनी वरीयताओं के "संपादन" भाग में बंद कर सकते हैं।',
+'editpage-notsupportedcontentformat-title' => 'सामग्री स्वरूप समर्थित नहीं है',
+'editpage-notsupportedcontentformat-text' => '$1 सामग्री स्वरूप $2 सामग्री मॉडल द्वारा समर्थित नहीं है।',
# Content models
'content-model-wikitext' => 'विकिटेक्स्ट',
'cantcreateaccount-text' => "इस आइ॰पी पते ('''$1''') को खाता निर्मित करने से [[User:$3|$3]] ने प्रतिबंधित किया है।
इसके लिये $3 ने ''$2'' कारण दिया है।",
+'cantcreateaccount-range-text' => "'''\$1''' की श्रेणी में आने वाले आई॰पी पतों से, जिसमें आपका आई॰पी पता ('''\$4''') शामिल है, नए खातों की रचना [[User:\$3|\$3]] द्वारा अवरोधित की गयी है।
+
+\$3 द्वारा दिया गया कारण है: \"\$2\"",
# History pages
'viewpagelogs' => 'इस पृष्ठ का लॉग देखें',
'revdelete-text' => "'''हटाए गए अवतरण और इवेंट पृष्ठ इतिहास और लॉग में दिखेंगे, लेकिन उनकी कुछ सामग्री सार्वजनिक नहीं होगी।'''
{{SITENAME}} के अन्य प्रबंधक छिपी हुई सामग्री को देख पाएँगे, और इसी अंतरापृष्ठ के जरिए वे इसकी पुनर्स्थापना भी कर सकते हैं, बशर्ते कि अतिरिक्त प्रतिबंध न लगाए गए हों।",
'revdelete-confirm' => 'पुष्टि करें कि आप यह कार्य करना चाहते हैं, आप इसका परिणाम समझते हैं, और आप ये [[{{MediaWiki:Policy-url}}|नीति]] के अनुसार कर रहे हैं।',
-'revdelete-suppress-text' => "छिपाने का प्रयोग '''केवल''' इन परिस्थितियों में होना चाहिए:
-* बदनाम à¤\95रनà¥\87 वालà¥\80 जानकारी
+'revdelete-suppress-text' => 'छिपाने का प्रयोग <strong>केवल</strong> इन परिस्थितियों में होना चाहिए:
+* सà¤\82à¤à¤¾à¤µà¤¿à¤¤ à¤\85पमानà¤\9cनà¤\95 जानकारी
* अनुपयुक्त निजी जानकारी
-*: ''घर के पते व दूरभाष, सामाजिक सुरक्षा क्रमांक आदि''",
+*: <em>घर के पते व दूरभाष, राष्ट्रीय पहचान क्रमांक आदि।</em>',
'revdelete-legend' => 'दृश्य प्रतिबंध निश्चित करें',
-'revdelete-hide-text' => 'à¤\85वरतण à¤\95ा पाठà¤\9bà¥\81पाà¤\8fà¤\81',
+'revdelete-hide-text' => 'à¤\85वरतण पाठ',
'revdelete-hide-image' => 'फ़ाइल का पाठ छुपाएँ',
'revdelete-hide-name' => 'क्रिया और लक्ष्य को छुपाएँ',
-'revdelete-hide-comment' => 'सà¤\82पादन à¤\9fिपà¥\8dपणà¥\80 à¤\9bà¥\81पाà¤\8fà¤\81',
-'revdelete-hide-user' => 'संपादक का सदस्यनाम/आइ॰पी छुपाएँ',
+'revdelete-hide-comment' => 'सà¤\82पादन साराà¤\82श',
+'revdelete-hide-user' => 'संपादक का सदस्यनाम/आइ॰पी॰ पता',
'revdelete-hide-restricted' => 'प्रबंधक सहित सभी सदस्यों से डाटा छुपाएँ',
'revdelete-radio-same' => '(बदलें नहीं)',
-'revdelete-radio-set' => 'हाà¤\81',
-'revdelete-radio-unset' => 'नहà¥\80à¤\82',
+'revdelete-radio-set' => 'à¤\9bिपा हà¥\81à¤\86',
+'revdelete-radio-unset' => 'दà¥\83शà¥\8dय',
'revdelete-suppress' => 'प्रबंधक सहित सभी सदस्यों से डाटा छुपाएँ',
'revdelete-unsuppress' => 'पुनर्स्थापित अवतरणों पर से प्रतिबन्ध हटाएँ',
'revdelete-log' => 'कारण:',
'showhideselectedversions' => 'चयनित अवतरण दिखाएँ/छिपाएँ',
'editundo' => 'पूर्ववत करें',
'diff-empty' => '(कोई अंतर नहीं)',
-'diff-multi' => '({{PLURAL:$2|एक योगदानकर्ता|$2 योगदानकर्ताओं}} द्वारा {{PLURAL:$1|किया बीच का एक|किए बीच के $1}} अवतरण दर्शाए नहीं हैं।)',
'diff-multi-manyusers' => '({{PLURAL:$2|एक योगदानकर्ता|$2 योगदानकर्ताओं}} द्वारा {{PLURAL:$1|किया बीच का एक|किए बीच के $1}} अवतरण दर्शाए नहीं हैं।)',
'difference-missing-revision' => 'इस अंतर {{PLURAL:$2|का एक अवतरण|के $2 अवतरण}} ($1) नहीं {{PLURAL:$2|पाया गया|पाए गए}}।
'search-result-score' => 'संबद्ध: $1%',
'search-redirect' => '($1 से पुनर्निर्देशित)',
'search-section' => '(अनुभाग $1)',
+'search-file-match' => '(फ़ाइल सामग्री से मेल खाता है)',
'search-suggest' => 'कहीं आपका मतलब $1 तो नहीं था?',
'search-interwiki-caption' => 'अन्य प्रकल्प',
'search-interwiki-default' => '$1 के परिणाम:',
'preferences' => 'मेरी वरीयताएँ',
'mypreferences' => 'पसंद',
'prefs-edits' => 'संपादन संख्या:',
+'prefsnologintext2' => 'अपनी वरीयताओं को बदलने के लिए कृपया $1 करें।',
'prefs-skin' => 'त्वचा',
'skin-preview' => 'झलक',
'datedefault' => 'खा़स पसंद नहीं',
'rows' => 'कतारें:',
'columns' => 'कॉलम:',
'searchresultshead' => 'खोज',
-'resultsperpage' => 'प्रति पृष्ठ हिट्स:',
'stub-threshold' => '<a href="#" class="stub">आधार कड़ियों</a> का अधिकतम आकार (बाइट):',
'stub-threshold-disabled' => 'अक्षम किया गया',
'recentchangesdays' => 'हाल में हुए बदलावों में दर्शाने के दिन:',
'prefs-tokenwatchlist' => 'टोकन',
'prefs-diffs' => 'अंतर',
'prefs-help-prefershttps' => 'यह वरीयता आपके अगले लॉगिन पर प्रभावी होगी।',
+'prefs-tabs-navigation-hint' => 'सुझाव: आप टैब्स सूची में टैब्स के बीच आवागमन करने के लिए बाएँ और दाएँ तीर कुंजियों का उपयोग कर सकते हैं।',
# User preference: email validation using jQuery
'email-address-validity-valid' => 'ई-मेल पता वैध प्रतीत होता है',
'recentchanges-label-minor' => 'यह एक छोटा सम्पादन है',
'recentchanges-label-bot' => 'यह संपादन एक बॉट द्वारा किया गया था',
'recentchanges-label-unpatrolled' => 'यह संपादन अभी जाँचा नहीं गया है',
-'recentchanges-legend-newpage' => '$1 - नया पन्ना',
+'recentchanges-label-plusminus' => 'पृष्ठ आकार इस बाइट संख्या से बदला',
+'recentchanges-legend-heading' => "'''कुंजी:'''",
+'recentchanges-legend-newpage' => '([[विशेष:NewPages|नए पन्नों की सूची]] को भी देखें)',
'rcnotefrom' => "नीचे '''$2''' के बाद से ('''$1''' तक) हुए बदलाव दर्शाए गये हैं।",
'rclistfrom' => '$1 से नये बदलाव दिखाएँ',
'rcshowhideminor' => 'छोटे बदलाव $1',
'rcshowhidebots' => 'बॉट $1',
-'rcshowhideliu' => 'लॉग्ड इन सदस्यों के बदलाव $1',
+'rcshowhideliu' => '$1 पंजीकृत सदस्य',
'rcshowhideanons' => 'आइ॰पी सदस्यों के बदलाव $1',
'rcshowhidepatr' => 'परीक्षित सम्पादन $1',
'rcshowhidemine' => 'मेरे बदलाव $1',
'file-exists-duplicate' => 'यह फ़ाइल निम्नलिखित {{PLURAL:$1|फ़ाइल|फ़ाइलों}} की प्रति है:',
'file-deleted-duplicate' => 'इसी फ़ाइल ([[:$1]]) से हूबहू मेल खाती एक फ़ाइल पहले हटाई जा चुकी है।
इसे फिर से अपलोड करने से पहले आपको पुरानी फ़ाइल का हटाने के इतिहास देख लेना चाहिए।',
+'file-deleted-duplicate-notitle' => 'इससे पहले इस फ़ाइल के समान एक फ़ाइल को हटाया गया है, और शीर्षक छिपा दिया गया है।
+इसे फिर से अपलोड करने से पहले आप किसी ऐसे व्यक्ति से स्थिति की समीक्षा करने के लिए कहें जिसके पास छिपी फ़ाइल का डाटा देखने की क्षमता है।',
'uploadwarning' => 'अपलोड चेतावनी',
'uploadwarning-text' => 'फ़ाइल विवरण को संशोधित कर फिर कोशिश करें।',
'savefile' => 'फ़ाइल संजोयें',
'backend-fail-internal' => 'भंडारण बैकेंड "$1" में कोई अज्ञात त्रुटि उत्पन्न हुई।',
'backend-fail-contenttype' => '"$1" पर संजोने के लिये फ़ाइल का प्रकार नहीं निश्चित किया जा सका।',
'backend-fail-batchsize' => 'भंडारण बैकेंड को $1 फ़ाइल {{PLURAL:$1|कार्य}} दिये गए थे; सीमा {{PLURAL:$2|$2 कार्य|$2 कार्यों}} की है।',
+'backend-fail-usable' => 'फ़ाइल "$1" को पर्याप्त अनुमति या अनुपस्थित डायरेक्ट्रीज़/कंटेनरों के कारण पढ़ा या लिखा नहीं जा सका।',
# File journal errors
'filejournal-fail-dbconnect' => 'भंडारण बैकेंड "$1" के जर्नल डाटाबेस से सम्पर्क नहीं हो पाया।',
'lockmanager-fail-releaselock' => '"$1" के लिए लॉक हटाया नहीं जा सका।',
'lockmanager-fail-db-bucket' => 'बकेट $1 में आवश्यक संख्या में लॉक डाटाबेसों से सम्पर्क नहीं हो पाया।',
'lockmanager-fail-db-release' => 'डाटाबेस $1 से ताला हटाया नहीं जा सका।',
+'lockmanager-fail-svr-acquire' => 'सर्वर $1 पर तालों को प्राप्त नहीं किया जा सका।',
'lockmanager-fail-svr-release' => 'सर्वर $1 से टाला हटाया नहीं जा सका।',
# ZipDirectoryReader
'statistics-users-active-desc' => 'पिछले {{PLURAL:$1|एक दिन|$1 दिनों}} में कुछ गतिविधि रखने वाले सदस्य',
'statistics-mostpopular' => 'सबसे अधिक देखे गए पृष्ठ',
+'pageswithprop' => 'पृष्ठ जिनमें पृष्ठ गुण हैं',
+'pageswithprop-legend' => 'पृष्ठ जिनमें पृष्ठ गुण हैं',
+'pageswithprop-text' => 'यह पृष्ठ पृष्ठ गुण का उपयोग कर रहे पन्नों को सूचीबद्ध करता है।',
+'pageswithprop-prop' => 'गुण का नाम:',
+'pageswithprop-submit' => 'खोजें',
+
'doubleredirects' => 'दुगुने पुनर्निर्देश',
'doubleredirectstext' => 'यह पृष्ठ उन पृष्ठों की सूची देता है जो अन्य पुनर्निर्देशित पृष्ठों की ओर पुनर्निर्देशित हैं।
हर कतार में पहले और दूसरे पुनर्निर्देशन की कड़ियाँ, तथा दूसरे पुनर्निर्देशन का लक्ष्य भी है, आमतौर पर यही "वास्तविक" लक्ष्यित पृष्ठ होगा, और पहला पुनर्देशन वास्तव में इसी को लक्ष्यित होना चाहिए।
'prevpage' => 'पिछला पृष्ठ ($1)',
'allpagesfrom' => 'इस अक्षर से आरंभ होने वाले पृष्ठ दर्शाएँ:',
'allpagesto' => 'इस अक्षर से समाप्त होने वाले पृष्ठ दिखाएँ:',
-'allarticles' => 'सà¤\97ळà¥\80 पाना',
+'allarticles' => 'सà¤à¥\80 पà¥\83षà¥\8dठ',
'allinnamespace' => 'सभी पृष्ठ ($1 नामस्थान)',
'allpagessubmit' => 'जाएँ',
'allpagesprefix' => 'इस उपपद से शुरू होने वाले पृष्ठ दर्शाएँ:',
'watchmethod-list' => 'ध्यानसूची में दिये गये पृष्ठों में हाल में हुए बदलाव देख रहे हैं',
'watchlistcontains' => 'आपकी ध्यानसूची में $1 {{PLURAL:$1|पृष्ठ}} हैं।',
'iteminvalidname' => "'$1' के साथ समस्या, अवैध नाम...",
-'wlnote' => "$3 को $4 बजे तक पिछले '''$2''' {{PLURAL:$2|घंटे|घंटों}} में {{PLURAL:$1|हुआ एक|हुए '''$1'''}} परिवर्तन निम्न {{PLURAL:$1|है|हैं}}।",
+'wlnote2' => '$2,$3 तक आखरी {{PLURAL:$1|घंटे|<strong>$1</strong>घंटों}} में बदलाव निम्नलिखित हैं।',
'wlshowlast' => 'पिछले $1 घंटे $2 दिन $3 देखें',
'watchlist-options' => 'ध्यानसूची विकल्प',
# Namespace 8 related
'allmessages' => 'व्यवस्था संदेश',
-'allmessagesname' => 'नाà¤\82व',
+'allmessagesname' => 'नाम',
'allmessagesdefault' => 'डिफॉल्ट पाठ',
'allmessagescurrent' => 'वर्तमान पाठ',
'allmessagestext' => 'ये मीडियाविकि नामस्थान में उपलब्ध प्रणाली संदेशों की एक सूची है। यदि आप सामान्य मीडियाविकि क्षेत्रीयकरण में योगदान देना चाहें तो कृपया [https://www.mediawiki.org/wiki/Localisation मीडियाविकि क्षेत्रीयकरण] व [//translatewiki.net translatewiki.net] को देखें।',
'allmessages-prefix' => 'उपसर्ग के आधार पर छानें:',
'allmessages-language' => 'भाषा:',
'allmessages-filter-submit' => 'जाएँ',
+'allmessages-filter-translate' => 'अनुवाद करें',
# Thumbnails
'thumbnail-more' => 'बड़ा करें',
'tooltip-pt-watchlist' => 'आपने ध्यान दिये हुए पन्नोंकी सूची',
'tooltip-pt-mycontris' => 'आपके योगदानों की सूची',
'tooltip-pt-login' => 'आपको सत्रारम्भ करने के लिए प्रोत्साहित किया जाता है; लेकिन यह अनिवार्य नहीं है',
-'tooltip-pt-anonlogin' => 'आप लॉग इन करें, जबकि यह अत्यावश्यक नहीं हैं।',
'tooltip-pt-logout' => 'सत्रांत',
'tooltip-ca-talk' => 'सामग्री पृष्ठ के बारे में वार्तालाप',
'tooltip-ca-edit' => 'आप यह पृष्ठ बदल सकते हैं।
'svg-long-desc' => 'SVG फ़ाईल, साधारणत: $1 × $2 पीक्सेल्स, फ़ाईलका आकार: $3',
'svg-long-desc-animated' => 'ऐनिमेटिड एस॰वी॰जी फ़ाइल, $1 × $2 पिक्सेल, फ़ाइल साइज़: $3',
'svg-long-error' => 'अमान्य एस॰वी॰जी फ़ाइल: $1',
-'show-big-image' => 'समà¥\8dपà¥\82रà¥\8dण रिà¤\9c़à¥\8bलà¥\8dयà¥\82शन',
+'show-big-image' => 'मà¥\82ल फ़ाà¤\87ल',
'show-big-image-preview' => 'इस पूर्वावलोकन का आकार: $1 ।',
'show-big-image-other' => 'अन्य {{PLURAL:$2| resolution|resolutions}}: $1 ।',
'show-big-image-size' => '$1 × $2 पिक्सेल',
'expand_templates_generate_xml' => 'XML का पार्स (parse) वृक्ष दर्शायें',
'expand_templates_preview' => 'झलक',
+# Unknown messages
+'uploadinvalidxml' => 'अपलोड की गई फ़ाइल में स्थित XML पार्स नहीं की जा सकी।',
);
$messages = array(
# User preference toggles
'tog-underline' => 'Jorr ke niche line khicho:',
-'tog-justify' => 'Paragraphs ke justify karo',
'tog-hideminor' => 'Chhota aur nawaa badlao ke lukao',
'tog-hidepatrolled' => 'Pahraa dewa gais badlao ke nawaa badlao me se lukao',
'tog-newpageshidepatrolled' => 'Pahraa dewa gais badlao ke nawaa panna me se lukao',
'tog-numberheadings' => 'Sab heading ke apne se number karo',
'tog-showtoolbar' => 'Badle waala toolbar ke dekhao',
'tog-editondblclick' => 'Dugnaa click pe panna ke badlo',
-'tog-editsection' => '[Badlao] ke jorr se section ke badlao se enable karo',
'tog-editsectiononrightclick' => 'Bhaag ke title pe right click kare pe bhaag ke badle ke laabu karo',
-'tog-showtoc' => 'Dhyan suchi dekhao (uu panna khatir jon me tiin se jaada heading hai)',
'tog-rememberpassword' => 'Ii browser me (jaada se jaada $1 {{PLURAL:$1|din|din}}) talak hamaar login ke yaad rakho.',
'tog-watchcreations' => 'Hamaar banawa waala panna aur upload karaa gais file ke hamaar dhyaan suchi me jorro',
'tog-watchdefault' => 'Ham se badla gais panna aur file ke hamaar dhyaan suchi me jorro',
'showhideselectedversions' => 'Chuna gae versions ke dekhao/lukao',
'editundo' => 'Pahile jaise kar do',
'diff-empty' => '(ek rakam)',
-'diff-multi' => '({{PLURAL:$1|Ek biich waala badlao|$1 biich waala badlao}} jiske {{PLURAL:$2|sadasya|$2 sadasya}} karis hae, ke nai dekhawa jae hai.)',
'diff-multi-manyusers' => '({{PLURAL:$1|Ek biich waala badlao|$1 biich waala badlao}} jiske {{PLURAL:$2|sadasya|$2 sadasya}} se jaada log karin hae, ke nai dekhawa jae hai.)',
'difference-missing-revision' => 'Ii badlao ($1) {{PLURAL:$2|was|were}} pe {{PLURAL:$2|One revision|$2 revisions}} nai pawa gais hae
Iske kaaran ii hoe sake hae ki ek mitawa gais panna se link karaa jaawe hae.
'rows' => 'Line:',
'columns' => 'Column:',
'searchresultshead' => 'Khojo',
-'resultsperpage' => 'Panna ke ketna dafe dekha gais hai:',
'stub-threshold' => 'Threshold ke khatir <a href="#" class="stub">stub link</a> formatting (bytes):',
'stub-threshold-disabled' => 'Band kar dewa gais hae',
'recentchangesdays' => 'Nawaa badlao me ketna roj dekhawa jaae:',
'watchmethod-list' => 'dhyan me rakkha gais panna ke nawaa badlao ke khatir check karaa jaawe hai',
'watchlistcontains' => 'Aap ke dhyan suchi me $1 {{PLURAL:$1|panna|panna}} hai.',
'iteminvalidname' => "'$1' chij se kuchh garrbarr hai, galat naam...",
-'wlnote' => "Niche ke {{PLURAL:$1|pahile waala badlao hai| pahile '''$1''' badlao hai}} pichhle {{PLURAL:$2|ghanta|'''$2''' ghanta}} me as of $3, $4..",
'wlshowlast' => 'Pichhla $1 ghanta $2 din $3 ke dekhao',
'watchlist-options' => 'Dhyan suchi ke options',
'tooltip-pt-watchlist' => 'Panna ke suchi jispe aap dhyan rakhaa hae',
'tooltip-pt-mycontris' => 'Aap ke yogdaan ke suchi',
'tooltip-pt-login' => 'Aap log in kartaa tab achchha rahataa; lekin jaruri nai hae.',
-'tooltip-pt-anonlogin' => 'Aap ke login kare ke encourage karaa jaawe hai lekin ii jaruri nai hai',
'tooltip-pt-logout' => 'Log out',
'tooltip-ca-talk' => 'Content waala panna ke baare me salah',
'tooltip-ca-edit' => 'Aap ii panna ke badle sakta hai. Meherbaani kar ke bachae se pahile preview button ke kaam me laana.',
* @author Erythrii
* @author Jose77
* @author Kguirnela
+ * @author Midnight Gambler
* @author Oxyzen
* @author Tagimata
* @author Taylortheturtle
$messages = array(
# User preference toggles
'tog-underline' => 'Kuritan sa idalom ang mga tabid:',
-'tog-justify' => 'Tadlongon ang mga parapo',
'tog-hideminor' => 'Tagu-on ang menor nga gin-islan sa bag-o lang gid na-obra',
'tog-hidepatrolled' => 'Taguon ang mga nabantayan nga na islan na nga bag-o lang gin obra',
'tog-newpageshidepatrolled' => 'Taguon ang mga nabantayan nga pahina sa bag-ong lista sang mga pahina',
'tog-numberheadings' => 'Auto-numero heading',
'tog-showtoolbar' => 'Ipakita ang edit toolbar (nagakilanlan JavaScript)',
'tog-editondblclick' => 'Islan ang pahina kung i-doble klik mo (nagakilanlan JavaScript)',
-'tog-editsection' => 'Sugtan ang pag-ilis sang seksyon paagi sa [ilisan] nga mga tabid',
'tog-editsectiononrightclick' => 'Sugtan ang pag-ilis sang seksyon paagi sa pagtum-ok sang natoo sa mouse sa titulo sang seksyon (nagakinahanglan sang JavaScript)',
-'tog-showtoc' => 'Ipakita ang sinulatan sang nagabug-os (para sang mga panid nga may yara sang masobra sa 3 nga pangolohan)',
'tog-rememberpassword' => 'Dumdumon ang akon password sa sini nga brawser (para sa indi magsobra $1 {{PLURAL:$1|nga adlaw|nga mga adlaw}})',
'tog-watchcreations' => 'Magdugang sang mga panid nga akon buhaton kag mga hilera nga akon igapasaka sa akon mga ginabantayan',
'tog-watchdefault' => 'Idugang ang mga panid kag hilera nga akon ginbag-o sa akon mga ginabantayan',
'compareselectedversions' => 'I-kompara ang pinilian nga mga rebisyon',
'showhideselectedversions' => 'Ipakita/taguon ang mga ginpili nga pagbag-o',
'editundo' => 'bawi-on ang pag ilis',
-'diff-multi' => '({{PLURAL:$1|Isa ka tunga-tunga nga pagbag-o|$1 ka tunga-tunga nga mga pagbag-o}} sang {{PLURAL:$2|isa ka manuggamit|$2 ka mga manuggamit}} nga wala ginpakita)',
'diff-multi-manyusers' => '({{PLURAL:$1|Isa ka tunga-tunga nga pagbag-o|$1 ka tunga-tunga nga mga pagbag-o}} sang masobra $2 ka {{PLURAL:$2|manuggamit|mga manuggamit}} nga wala ginpakita)',
'difference-missing-revision' => 'May {{PLURAL:$2|isa ka pagbag-o|$2 ka mga pagbag-o}} san sini nga kinalain ($1) ang wala makita.
'rows' => 'Mga linya:',
'columns' => 'Mga kulumna:',
'searchresultshead' => 'Pangita-a',
-'resultsperpage' => 'Mga pag-igu kada panid:',
'stub-threshold' => 'Suludlan sang <a href="#" class="stub">stub sang link</a> nga pagkay-o (bytes):',
'stub-threshold-disabled' => 'Gin-untat',
'recentchangesdays' => 'Adlaw nga nabilin sa pagpakita sang mga bag-o nga pag-ilis:',
'rc_categories_any' => 'Bisan ano',
'rc-change-size-new' => '$1 {{PLURAL:$1|byte|mga bytes}} despues sang pagbag-o',
'newsectionsummary' => '/* $1 */ bag-o nga seksyon',
-'rc-enhanced-expand' => 'Ipakita ang mga detalye (nagakilanlan sang JavaScript)',
+'rc-enhanced-expand' => 'Ipakita ang mga detalye',
'rc-enhanced-hide' => 'Tagu-on ang mga detalye',
'rc-old-title' => 'orihinal nga ginhimo bilang "$1"',
'contributions' => 'Mga kontribusyon sang {{GENDER:$1|naga-usar}}',
'contributions-title' => 'Mga Kontribusyon sang Naga-Usar para $1',
'mycontris' => 'Kontribusyon',
-'contribsub2' => 'Para $1 ($2)',
+'contribsub2' => 'Para {{GENDER:$3|$1}} ($2)',
'uctop' => '(ibabaw)',
'month' => 'Halin sa bulan (kag sang timprano):',
'year' => 'Halin sa tu-ig (kag sang timprano):',
'tooltip-pt-watchlist' => 'Ang lista sang mga pahina nga imo ginabantayan para bag-ohon',
'tooltip-pt-mycontris' => 'Lista sang imo kontribusyon',
'tooltip-pt-login' => 'Gina-abi-abi ikaw nga man magsulod paagi sa pag log-in, apang indi ini kinahanglan gid buhaton',
-'tooltip-pt-anonlogin' => 'Ginasuportahan ka nga magsulod, ugaling indi ini kinahanglan.',
'tooltip-pt-logout' => 'Mag guha',
'tooltip-ca-talk' => 'Paghisayranay nahanungod sini nga panid',
'tooltip-ca-edit' => 'Puede nimo islan ang unod sang sini nga panid. Palihog gamit sang preview button antes permanentehon ang gin ilisan.',
* @author Meno25
* @author Mvrban
* @author Nemo bis
+ * @author Phidrho
* @author Roberta F.
* @author SpeedyGonsales
* @author Tivek
$messages = array(
# User preference toggles
'tog-underline' => 'Podcrtane poveznice',
-'tog-justify' => 'Poravnaj odlomke i zdesna',
'tog-hideminor' => 'Sakrij manje izmjene u nedavnim promjenama',
'tog-hidepatrolled' => 'Sakrij pregledane izmjene u nedavnim promjenama',
'tog-newpageshidepatrolled' => 'Sakrij pregledane stranice iz popisa novih stranica',
'tog-numberheadings' => 'Automatski označi naslove brojevima',
'tog-showtoolbar' => 'Prikaži traku s alatima za uređivanje (zahtijeva JavaScript)',
'tog-editondblclick' => 'Dvoklik otvara uređivanje stranice (JavaScript)',
-'tog-editsection' => 'Prikaži poveznice za uređivanje pojedinih odlomaka',
'tog-editsectiononrightclick' => 'Pritiskom na desnu tipku miša otvori uređivanje pojedinih odlomaka (JavaScript)',
-'tog-showtoc' => 'U člancima s više od tri odlomka prikaži tablicu sadržaja.',
'tog-rememberpassword' => 'Zapamti moju lozinku u ovom pregledniku (najduže $1 {{PLURAL:$1|dan|dana|dana}})',
'tog-watchcreations' => 'Dodaj članke koje kreiram na moj popis praćenja',
'tog-watchdefault' => 'Dodaj svaku stranicu koju uredim na moj popis praćenja',
'deletethispage' => 'Izbriši ovu stranicu',
'undeletethispage' => 'Vrati ovu stranicu',
'undelete_short' => 'Vrati {{PLURAL:$1|$1 uređivanje|$1 uređivanja}}',
-'viewdeleted_short' => 'Prikaži $1 {{plural: $1|izbrisano uređivanje|izbrisana uređivanja|izbrisanih uređivanja}}',
+'viewdeleted_short' => 'Prikaži $1 {{PLURAL:$1|izbrisano uređivanje|izbrisana uređivanja|izbrisanih uređivanja}}',
'protect' => 'Zaštiti',
'protect_change' => 'promijeni',
'protectthispage' => 'Zaštiti ovu stranicu',
'showhideselectedversions' => 'Otkrij/sakrij odabrane izmjene',
'editundo' => 'ukloni ovu izmjenu',
'diff-empty' => 'Nema razlike inačica',
-'diff-multi' => '({{PLURAL:$1|Nije prikazana jedna međuinačica|Nisu prikazane $1 međuinačice|Nije prikazano $1 međuinačica}} {{PLURAL:$2|jednog|$2|$2}} suradnika)',
'diff-multi-manyusers' => '({{PLURAL:$1|Nije prikazana jedna međuinačica|Nisu prikazane $1 međuinačice|Nije prikazano $1 međuinačica}} više od {{PLURAL:$2|jednog|$2|$2}} suradnika)',
'difference-missing-revision' => '{{PLURAL:$2|Uređivanje|$2 uređivanja}} sljedeće šifre ($1) ne {{PLURAL:$2|postoji|postoje}}.
'rows' => 'Redova',
'columns' => 'Stupaca',
'searchresultshead' => 'Prikaz rezultata pretrage',
-'resultsperpage' => 'Koliko pogodaka na jednoj stranici',
'stub-threshold' => 'Prag za formatiranje poput <a href="#" class="stub">poveznice mrve</a>:',
'stub-threshold-disabled' => 'Onemogućeno',
'recentchangesdays' => 'Broj dana prikazanih u nedavnim promjenama:',
'linkstoimage-redirect' => '$1 (preusmjeravanje datoteke) $2',
'duplicatesoffile' => '{{PLURAL:$1|Sljedeća datoteka je kopija|$1 sljedeće datoteke su kopije|$1 sljedećih datoteka su kopije}} ove datoteke ([[Special:FileDuplicateSearch/$2|više detalja]]):',
'sharedupload' => 'Ova je datoteka postavljena na $1 i mogu je koristiti ostali projekti.',
-'sharedupload-desc-there' => 'Ova datoteka je s $1 i mogu je koristiti drugi projekti. Pogledajte [$2 stranicu s opisom datoteke] za dodatne informacije.',
+'sharedupload-desc-there' => 'Ova datoteka je s projekta $1 i mogu je koristiti drugi projekti. Pogledajte [$2 stranicu s opisom datoteke] za dodatne informacije.',
'sharedupload-desc-here' => 'Ova datoteka je sa $1 i mogu je koristiti drugi projekti. Opis s njezine [$2 stranice s opisom datoteke] prikazan je ispod.',
'sharedupload-desc-edit' => 'Ova datoteka nalazi se na $1 i može se rabiti na drugim projektima.
Njen opis možete urediti na [$2 stranici opisa datoteke].',
'watchmethod-list' => 'provjera praćanih stranica za nedavne promjene',
'watchlistcontains' => 'Vaš popis praćenja sadrži $1 {{PLURAL:$1|stranicu|stranice|stranica}}.',
'iteminvalidname' => "Problem s izborom '$1', ime nije valjano...",
-'wlnote' => "Ovdje {{PLURAL:$1|je posljednja $1 promjena|su posljednje $1 promjene|je posljednjih $1 promjena}} u {{PLURAL:$2|posljednjem '''$2''' satu|posljednja '''$2''' sata|posljednjih '''$2''' sati}}, od $3, $4.",
'wlshowlast' => 'Prikaži zadnjih $1 sati $2 dana $3',
'watchlist-options' => 'Izbornik popisa praćenja',
'delete-edit-reasonlist' => 'Uredi razloge brisanja',
'delete-toobig' => 'Ova stranica ima veliku povijest uređivanja, preko $1 {{PLURAL:$1|promjene|promjena}}. Brisanje takvih stranica je ograničeno da se onemoguće slučajni problemi u radu {{SITENAME}}.',
'delete-warning-toobig' => 'Ova stranica ima veliku povijest uređivanja, preko $1 {{PLURAL:$1|promjene|promjena}}. Brisanje može poremetiti bazu podataka {{SITENAME}}; postupajte s oprezom.',
+'deleting-backlinks-warning' => "'''Upozorenje:''' brišete stranicu koja je uključena u druge ili druge stranice povezuju na nju.",
# Rollback
'rollback' => 'Ukloni posljednju promjenu',
'tooltip-pt-watchlist' => 'Popis stranica koje pratite.',
'tooltip-pt-mycontris' => 'Popis mojih doprinosa',
'tooltip-pt-login' => 'Predlažemo Vam da se prijavite, ali nije obvezno.',
-'tooltip-pt-anonlogin' => 'Predlažemo Vam da se prijavite, ali nije obvezno.',
'tooltip-pt-logout' => 'Odjavi se',
'tooltip-ca-talk' => 'Razgovor o stranici',
'tooltip-ca-edit' => 'Možete uređivati ovu stranicu. Koristite Pregled kako će izgledati prije nego što snimite.',
'version-hook-name' => 'Ime kuke',
'version-hook-subscribedby' => 'Pretplaćeno od',
'version-version' => '(Inačica $1)',
-'version-license' => 'Licencija',
+'version-license' => 'Licenca',
+'version-ext-license' => 'Licenca',
+'version-ext-colheader-version' => 'Verzija',
+'version-ext-colheader-license' => 'Licenca',
+'version-ext-colheader-description' => 'Opis',
+'version-ext-colheader-credits' => 'Autori',
'version-poweredby-credits' => "Ovaj wiki pogoni '''[https://www.mediawiki.org/ MediaWiki]''', autorska prava © 2001-$1 $2.",
'version-poweredby-others' => 'ostali',
'version-credits-summary' => 'Željeli bismo zahvaliti sljedećim suradnicima na njihovom doprinosu [[Special:Version|MediaWikiju]].',
'redirect-submit' => 'Idi',
'redirect-value' => 'Vrijednost:',
'redirect-user' => 'ID suradnika',
+'redirect-page' => 'ID stranice',
'redirect-file' => 'Datotečno ime',
# Special:FileDuplicateSearch
* @ingroup Language
* @file
*
+ * @author Derbeth
* @author Dundak
* @author J budissin
* @author Kaganer
$messages = array(
# User preference toggles
'tog-underline' => 'Wotkazy podšmórnić:',
-'tog-justify' => 'Tekst w blokowej sadźbje',
'tog-hideminor' => 'Snadne změny w aktualnych změnach schować',
'tog-hidepatrolled' => 'Dohladawane změny w aktualnych změnach schować',
'tog-newpageshidepatrolled' => 'Dohladowane strony z lisćiny nowych stronow schować',
'tog-numberheadings' => 'Nadpisma awtomatisce čisłować',
'tog-showtoolbar' => 'Wobdźěłowansku lajstu pokazać',
'tog-editondblclick' => 'Strony z dwójnym kliknjenjom wobdźěłować',
-'tog-editsection' => 'Wobdźěłowanje jednotliwych wotrězkow přez wotkazy [wobdźěłać] zmóžnić',
'tog-editsectiononrightclick' => 'Wobdźěłowanje wotrězkow přez kliknjenje z prawej tastu na nadpisma wotrězkow zmóžnić',
-'tog-showtoc' => 'Zapis wobsaha pokazać (za strony z wjace hač 3 nadpismami)',
'tog-rememberpassword' => 'Přizjewjenje na tutym wobhladowaku sej spomjatkować (za maksimalnje $1 {{PLURAL:$1|dźeń|dnjej|dny|dnjow}})',
'tog-watchcreations' => 'Strony, kotrež wutworjam a dataje, kotrež nahrawam, swojim wobkedźbowankam přidać',
'tog-watchdefault' => 'Strony a dataje, kotrež wobdźěłuju, swojim wobkedźbowankam přidać',
'tog-ccmeonemails' => 'Mi kopije e-mejlkow pósłać, kotrež druhim wužiwarjam pósćelu',
'tog-diffonly' => 'Jenož rozdźěle pokazać (nic pak zbytny wobsah)',
'tog-showhiddencats' => 'Schowane kategorije pokazać',
+'tog-noconvertlink' => 'Konwertowanje wotkazoweho titula znjemóžnić',
'tog-norollbackdiff' => 'Rozdźěl po wróćostajenju zanjechać',
'tog-useeditwarning' => 'Warnować, hdyž so wobdźěłowanska strona z njeskładowanymi změnami wopušća',
'tog-prefershttps' => 'Po přizjewjenju přeco wěsty zwisk wužiwać',
'returnto' => 'Wróćo k stronje $1.',
'tagline' => 'z {{GRAMMAR:genitiw|{{SITENAME}}}}',
'help' => 'Pomoc',
-'search' => 'pytać',
+'search' => 'Pytać',
'searchbutton' => 'Pytać',
'go' => 'Pytać',
'searcharticle' => 'Pytać',
'retypenew' => 'Nowe hesło wospjetować:',
'resetpass_submit' => 'Hesło posrědkować a so přizjewić',
'changepassword-success' => 'Twoje hesło je so wuspěšnje změniło!',
+'changepassword-throttled' => 'Sy přehusto spytał so přizjewić. Počakaj prošu $1, prjedy hač hišće raz spytaš.',
'resetpass_forbidden' => 'Hesła njedadźa so změnić.',
'resetpass-no-info' => 'Dyrbiš so přizjewić, zo by direktny přistup na tutu stronu měł.',
'resetpass-submit-loggedin' => 'Hesło změnić',
'changeemail-password' => 'Twoje hesło za {{GRAMMAR:akuzatiw|{{SITENAME}}}}',
'changeemail-submit' => 'E-mejlowu adresu změnić',
'changeemail-cancel' => 'Přetorhnyć',
+'changeemail-throttled' => 'Sy přehusto spytał so přizjewić.
+Počakaj prošu $1, prjedy hač hišće raz spytaš.',
# Special:ResetTokens
'resettokens' => 'Tokeny wróćo stajić',
'previewconflict' => 'Tutón přehlad zwobraznja tekst w hornim tekstowym polu, kaž so zjewi, jeli jón składuješ.',
'session_fail_preview' => "'''Njemóžachmy twoju změnu předźěłać, dokelž su so posedźenske daty zhubili.'''
Spytaj prošu hišće raz.
-Jeli to hišće njefunguje, [[Special:UserLogout|wotzjew so]] a přizjew so zaso.",
-'session_fail_preview_html' => "'''Njemóžachmy twoje změnu předźěłać, dokelž su so posedźenske daty zhubili.'''
+Jeli přeco hišće njefunguje, [[Special:UserLogout|wotzjew so]] a přizjew so znowa.",
+'session_fail_preview_html' => "'''Njemóžachmy twoju změnu předźěłać, dokelž su so posedźenske daty zhubili.'''
-''Dokelž we {{GRAMMAR:lokatiw|{{SITENAME}}}} je luty HTML zmóžnił, je přehlad jako wěstotna naprawa přećiwo atakam přez JavaScript schowany.''
+''Dokelž je we {{GRAMMAR:lokatiw|{{SITENAME}}}} luty HTML zmóžnjeny, je přehlad jako wěstotna naprawa přećiwo atakam přez JavaScript schowany.''
-'''Jeli to je legitimny wobdźěłowanski pospyt, spytaj prošu hišće raz. Jeli to hišće njefunguje, [[Special:UserLogout|wotzjew so]] a přizjew so znowa.'''",
+'''Jeli to je chutnje měnjeny wobdźěłowanski pospyt, spytaj prošu hišće raz. Jeli přeco hišće njefunguje, [[Special:UserLogout|wotzjew so]] a přizjew so znowa.'''",
'token_suffix_mismatch' => "'''Twoja změna je so wotpokazała, dokelž twój wobhladowak je znamješka skepsał.
Składowanje móže wobsah strony zničić. Móže so to na přikład přez wopačnje dźěłowacy proksy stać.'''",
'edit_form_incomplete' => "'''Někotre dźěle wobdźěłowanskeho formulara njejsu serwer docpěli; prošu přepruwuj, hač twoje změny su w porjadku a spytaj hišće raz.'''",
'invalid-content-data' => 'Njepłaćiwe wobsahowe daty',
'content-not-allowed-here' => 'Wobsah "$1" njeje na stronje [[$2]] dowoleny',
'editwarning-warning' => 'Hdyž so strona wopušća, móža so změny zhubić, kotrež sy přewjedł. Jeli sy přizjewjeny, móžeš tute warnowanje we wotrězku "Wobdźěłowanje" swojich nastajenjow znjemóžnić.',
+'editpage-notsupportedcontentformat-title' => 'Wobsahowy format so njepodpěruje',
+'editpage-notsupportedcontentformat-text' => 'Wobsahowy format $1 so přez wobsahowy model $2 njepodpěruje.',
# Content models
'content-model-wikitext' => 'wikitekst',
'showhideselectedversions' => 'Wubrane wersije pokazać/schować',
'editundo' => 'cofnyć',
'diff-empty' => '(Žadyn rozdźěl)',
-'diff-multi' => '({{PLURAL:$1|Jedna mjezywersija|$1 mjezywersiji|$1 mjezywersije|$1 mjezywersijow}} wot {{PLURAL:$2|jednoho wužiwarja|$2 wužiwarjow|$2 wužiwarjow|$2 wužiwarjow}} {{PLURAL:$1|njepokazana|njepokazanej|njepokazane|njepokazane}})',
'diff-multi-manyusers' => '({{PLURAL:$1|Jedna mjezywersija|$1 mjezywersiji|$1 mjezywersije|$1 mjezywersijow}} wot wjace hač {{PLURAL:$2|jednoho wužiwarja|$2 wužiwarjow|$2 wužiwarjow|$2 wužiwarjow}} {{PLURAL:$1|njepokazana|njepokazanej|njepokazane|njepokazane}})',
'difference-missing-revision' => '{{PLURAL:$2|Jedna wersija|$2 wersiji|$2 wersije|$2 wersijow}} tutoho rozdźěla ($1) {{PLURAL:$2|njeje so namakała|njejstej so namakałoj|njejsu namakali|njeje so namakało}}.
'search-result-score' => 'Relewanca: $1 %',
'search-redirect' => '(Daleposrědkowanje $1)',
'search-section' => '(wotrězk $1)',
+'search-file-match' => '(wotpowěduje datajowemu wobsahej)',
'search-suggest' => 'Měnješe ty $1?',
'search-interwiki-caption' => 'Sotrowske projekty',
'search-interwiki-default' => '$1 wuslědki:',
'rows' => 'Rjadki:',
'columns' => 'Stołpiki:',
'searchresultshead' => 'Pytać',
-'resultsperpage' => 'Wuslědki za stronu:',
'stub-threshold' => 'Wotkazowe formatowanje <a href="#" class="stub">małych stronow</a> (w bajtach):',
'stub-threshold-disabled' => 'Znjemóžnjeny',
'recentchangesdays' => 'Ličba dnjow w lisćinje aktualnych změnow:',
'fileexists-shared-forbidden' => 'Dataja z tutym mjenom hižo eksistuje w zhromadnej chowarni. Jeli hišće chceš swoju dataju nahrać, dźi prošu wróćo a wužij nowe mjeno. [[File:$1|thumb|center|$1]]',
'file-exists-duplicate' => 'Tuta dataja je duplikat {{PLURAL:$1|slědowaceje dataje|slědowaceju datajow|slědowacych datajow|slědowacych datajow}}:',
'file-deleted-duplicate' => 'Dataja, kotraž je identiska z tutej dataju ([[:$1]]), je so prjedy zničiła. Ty měł stawizny zničenja tuteje dataje přepruwować, prjedy pokročuješ z jeje zasonahrawanjom.',
+'file-deleted-duplicate-notitle' => 'Z tutej dataju identiska dataja je so prjedy zhašała, a titul je so potłóčił. Ty měł so někoho prašeć, kotryž ma móžnosć, sej potłóčene daty wobhladać, zo by situaciju přepruwował, prjedy hač ju znowa nahraješ.',
'uploadwarning' => 'Warnowanje',
'uploadwarning-text' => 'Prošu změń slědowace datajowe wopisanje a spytaj hišće raz.',
'savefile' => 'Dataju składować',
'protectedpages' => 'Škitane strony',
'protectedpages-indef' => 'Jenož strony z njewobmjezowanym škitom',
'protectedpages-cascade' => 'Jenož strony z kaskadowym škitom',
+'protectedpages-noredirect' => 'Dalesposrědkowanja schować',
'protectedpagesempty' => 'Tuchwilu žane.',
'protectedtitles' => 'Škitane titule',
'protectedtitlesempty' => 'Žane titule njejsu tuchwilu z tutymi parametrami škitane.',
'watchmethod-list' => 'Wobkedźbowanki za aktualnymi změnami přepruwować',
'watchlistcontains' => 'Maš $1 {{PLURAL:$1|stronu|stronje|strony|stronow}} w swojich wobkedźbowankach.',
'iteminvalidname' => 'Problem ze zapiskom „$1“, njepłaćiwe mjeno.',
-'wlnote' => "Deleka {{PLURAL:$1|je poslednja změna|stej poslednjej '''$1''' změnje|su poslednje '''$1''' změny|je poslednich '''$1''' změnow}} za {{PLURAL:$2|poslednju hodźinu|poslednje '''$2''' hodźinje|poslednje '''$2''' hodźiny|poslednje '''$2''' hodźin}}, staw : $3, $4.",
'wlshowlast' => 'Poslednje $1 hodź. - $2 dnjow - $3 pokazać',
'watchlist-options' => 'Opcije wobkedźbowankow',
'delete-edit-reasonlist' => 'Přičiny za wušmórnjenje wobdźěłać',
'delete-toobig' => 'Tuta strona ma z wjace hač $1 {{PLURAL:$1|wersiju|wersijomaj|wersijemi|wersijemi}} wulke wobdźěłanske stawizny. Wušmórnjenje tajkich stronow bu wobmjezowane, zo by připadne přetorhnjenje {{SITENAME}} wobešło.',
'delete-warning-toobig' => 'Tuta strona ma z wjace hač $1 {{PLURAL:$1|wersiju|wersijomaj|wersijemi|wersijemi}} wulke wobdźěłanske stawizny. Wušmórnjenje móže operacije datoweje banki {{SITENAME}} přetorhnyć; pokročuj z kedźbliwosću.',
+'deleting-backlinks-warning' => "'''Warnowanje:''' Druhe strony wotkazuja k stronje abo strona je druhdźe zapřijata, kotruž chceš zhašeć.",
# Rollback
'rollback' => 'Změny cofnyć',
Hlej [[Special:BlockList|lisćinu blokowanjow]], zo by zablokowanjow pruwował.',
'ipb-blockingself' => 'Chceš samoho blokować! Chceš to woprawdźe činić?',
'ipb-confirmhideuser' => 'Chceš runje wužiwarja z nastajenjom "wužiwarja schować" blokować. To k tomu dowjedźe, zo mjeno wužiwarja so we wšch lisćinach a protokolowych zapiskach potłóči. Chceš to woprawdźe činić?',
+'ipb-confirmaction' => 'Jeli sy sej wěsty, zo chceš to woprawdźe činić, přepruwuj prošu deleka polo "{{int:ipb-confirm}}".',
'ipb-edit-dropdown' => 'přičiny zablokowanjow wobdźěłać',
'ipb-unblock-addr' => 'zablokowanje wužiwarja „$1“ zběhnyć',
'ipb-unblock' => 'zablokowanje wužiwarja abo IP-adresy zběhnyć',
'range_block_disabled' => 'Kmanosć administratorow, cyłe wobłuki IP-adresow blokować, je znjemóžnjena.',
'ipb_expiry_invalid' => 'Čas spadnjenja je njepłaćiwy.',
'ipb_expiry_temp' => 'Blokowanja schowanych wužiwarskich mjenow maja permanentne być.',
-'ipb_hide_invalid' => 'Njeje móžno tute konto potłóčić; ma snano přewjele změnow.',
+'ipb_hide_invalid' => 'Njeje móžno tute konto potłóčić; ma přez {{PLURAL:$1|jednu změnu|$1 změnje|$1 změny|$1 změnow}}.',
'ipb_already_blocked' => 'Wužiwar „$1” je hižo zablokowany.',
'ipb-needreblock' => '$1 je hižo zablokowany. Chceš nastajenja změnić?',
'ipb-otherblocks-header' => '{{PLURAL:$1|Druhe blokowanje|Druhej blokowani|Druhe blokowanja|Druhe blokowanja}}',
'tooltip-pt-watchlist' => 'lisćina stronow, kotrež wobkedźbuješ',
'tooltip-pt-mycontris' => 'Lisćina twojich přinoškow',
'tooltip-pt-login' => 'Móžeš so woměrje přizjewić, to pak zawjazowace njeje.',
-'tooltip-pt-anonlogin' => 'Móžeš so woměrje přizjewić, to pak zawjazowace njeje.',
'tooltip-pt-logout' => 'so wotzjewić',
'tooltip-ca-talk' => 'diskusija wo stronje',
'tooltip-ca-edit' => 'Móžeš stronu wobdźěłać. Prošu wužij tłóčku „Přehlad” do składowanja.',
'version-hook-name' => 'Mjeno hoki',
'version-hook-subscribedby' => 'Abonowany wot',
'version-version' => '(Wersija $1)',
-'version-license' => 'Licenca',
+'version-license' => 'Licenca MediaWiki',
+'version-ext-license' => 'Licenca',
+'version-ext-colheader-name' => 'Rozšěrjenje',
+'version-ext-colheader-version' => 'Wersija',
+'version-ext-colheader-license' => 'Licenca',
+'version-ext-colheader-description' => 'Wopisanje',
+'version-ext-colheader-credits' => 'Awtorojo',
+'version-license-title' => 'Licenca za $1',
+'version-license-not-found' => 'Za tute rozšěrjenje njejsu so žane nadrobne licencne informacije namakali.',
+'version-credits-title' => 'Dźakprajenja za $1',
+'version-credits-not-found' => 'Za tute rozšěrjenje njejsu žane dźakprajenske informacije namakali.',
'version-poweredby-credits' => "Tutón wiki so wot '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2 podpěruje.",
'version-poweredby-others' => 'druzy',
'version-poweredby-translators' => 'Přełožowarjo na translatewiki.net',
'api-error-overwrite' => 'Přepisowanje eksistowaceje dataje njeje dowolene.',
'api-error-stashfailed' => 'Nutřkowny zmylk: Serwer njemóžeše nachwilnu dataju składować.',
'api-error-publishfailed' => 'Nutřkowny zmylk: Serwer njemóžeše nachwilnu dataju wozjewić.',
+'api-error-stasherror' => 'Při nahrawanju dataje do chowanki je zmylk wusutpił.',
'api-error-timeout' => 'Serwer njeje znutřka wočakowaneho časa wotmołwił.',
'api-error-unclassified' => 'Njeznaty zmylk je wustupił.',
'api-error-unknown-code' => 'Njeznaty zmylk: "$1"',
'duration-minutes' => '$1 {{PLURAL:$1|mjeńšina|mjeńšinje|mjeńšiny|mjeńšin}}',
'duration-hours' => '$1 {{PLURAL:$1|hodźina|hodźinje|hodźiny|hodźin}}',
'duration-days' => '$1 {{PLURAL:$1|dźeń|dnjej|dny|dnjow}}',
-'duration-weeks' => '$1 {{PLURAL: $1|tydźeń|njedźeli|njedźele|njedźel}}',
-'duration-years' => '$1 {{PLURAL: $1|lěto|lěće|lěta|lět}}',
+'duration-weeks' => '$1 {{PLURAL:$1|tydźeń|njedźeli|njedźele|njedźel}}',
+'duration-years' => '$1 {{PLURAL:$1|lěto|lěće|lěta|lět}}',
'duration-decades' => '$1 {{PLURAL:$1|lětdźesatk|lětdźesatkaj|lětdźesatki|lětdźesatkow}}',
'duration-centuries' => '$1 {{PLURAL:$1|lětstotk|lětstotkaj|lětstotki|lětstotkow}}',
'duration-millennia' => '$1 {{PLURAL:$1|lěttysac|lěttysacaj|lěttysacy|lěttysacow}}',
'expand_templates_generate_rawhtml' => 'Hruby HTML pokazać',
'expand_templates_preview' => 'Přehlad',
+# Unknown messages
+'createaccount-hook-aborted' => '$1',
+'uploadinvalidxml' => 'XML w nahratej dataji njeda so parsować.',
);
'Diskisyon_Imaj' => NS_USER_TALK,
);
+// Remove French aliases
+$namespaceGenderAliases = array();
+
$specialPageAliases = array(
'Activeusers' => array( 'ItilizatèAktif' ),
'Allmessages' => array( 'ToutMesaj' ),
$messages = array(
# User preference toggles
'tog-underline' => 'Hivatkozások aláhúzása:',
-'tog-justify' => 'Bekezdések sorkizárása',
'tog-hideminor' => 'Apró változtatások elrejtése a friss változtatások lapon',
'tog-hidepatrolled' => 'Az ellenőrzött szerkesztések elrejtése a friss változtatások lapon',
'tog-newpageshidepatrolled' => 'Ellenőrzött lapok elrejtése az új lapok listájáról',
'tog-numberheadings' => 'Fejezetcímek automatikus számozása',
'tog-showtoolbar' => 'Szerkesztőeszközsor megjelenítése',
'tog-editondblclick' => 'A lapok szerkesztése dupla kattintásra',
-'tog-editsection' => '[szerkesztés] linkek az egyes szakaszok szerkesztéséhez',
'tog-editsectiononrightclick' => 'Szakaszok szerkesztése a szakaszcímre való jobb kattintással',
-'tog-showtoc' => 'Tartalomjegyzék megjelenítése a három fejezetnél többel rendelkező cikkeknél',
'tog-rememberpassword' => 'Emlékezzen rám ezzel a böngészővel (legfeljebb {{PLURAL:$1|egy|$1}} napig)',
'tog-watchcreations' => 'Az általam létrehozott lapok és feltöltött fájlok felvétele a figyelőlistámra',
'tog-watchdefault' => 'Az általam szerkesztett lapok és fájlok felvétele a figyelőlistámra',
'showhideselectedversions' => 'Kiválasztott változatok láthatóságának beállítása',
'editundo' => 'visszavonás',
'diff-empty' => '(Nincs különbség)',
-'diff-multi' => '({{PLURAL:$2|egy|$2}} szerkesztő {{PLURAL:$1|egy|$1}} közbeeső változata nincs mutatva)',
'diff-multi-manyusers' => '({{PLURAL:$1|Egy közbeeső változat|$1 közbeeső változat}} nincs mutatva, amit $2 szerkesztő módosított)',
'difference-missing-revision' => 'A(z) "{{PAGENAME}}" nevű oldal #$1 $2 változata nem létezik.
'rows' => 'Sor',
'columns' => 'Oszlop',
'searchresultshead' => 'Keresés',
-'resultsperpage' => 'Laponként mutatott találatok száma:',
'stub-threshold' => 'A hivatkozások <a href="#" class="stub">csonkként</a> történő formázásának határa (bájtban):',
'stub-threshold-disabled' => 'Kikapcsolva',
'recentchangesdays' => 'A friss változtatásokban mutatott napok száma:',
'recentchanges-label-bot' => 'Ezt a szerkesztést egy bot hajtotta végre',
'recentchanges-label-unpatrolled' => 'Ezt a szerkesztést még nem ellenőrizték',
'recentchanges-label-plusminus' => 'Az oldal mérete ennyi bájttal módosult',
+'recentchanges-legend-heading' => 'Jelmagyarázat:',
'recentchanges-legend-newpage' => '(lásd még: [[Special:NewPages|Új lapok]])',
'rcnotefrom' => 'Alább a <b>$2</b> óta történt változtatások láthatóak (<b>$1</b> db).',
'rclistfrom' => '$1 után történt változtatások megtekintése',
'ninterwikis' => '{{PLURAL:$1|egy|$1}} interwiki',
'nlinks' => '{{PLURAL:$1|egy|$1}} hivatkozás',
'nmembers' => '{{PLURAL:$1|egy|$1}} elem',
+'nmemberschanged' => '$1 → $2 tag',
'nrevisions' => '{{PLURAL:$1|egy|$1}} változat',
'nviews' => '{{PLURAL:$1|egy|$1}} megtekintés',
'nimagelinks' => '{{PLURAL:$1|Egy|$1}} lapon van használva',
'watchmethod-list' => 'a legfrissebb szerkesztésekben található figyelt lapok',
'watchlistcontains' => 'A figyelőlistádon {{PLURAL:$1|egy|$1}} lap szerepel.',
'iteminvalidname' => "Probléma a '$1' elemmel: érvénytelen név...",
-'wlnote' => "Alább az utolsó '''{{PLURAL:$2|egy|$2}}''' óra '''{{PLURAL:$1|egy|$1}}''' változtatása látható. A lap generálásának ideje $3, $4.",
'wlshowlast' => 'Az elmúlt $1 órában | $2 napon | $3 történt változtatások legyenek láthatóak',
'watchlist-options' => 'A figyelőlista beállításai',
'tooltip-pt-watchlist' => 'Az általad figyelemmel kísért oldalak utolsó változtatásai',
'tooltip-pt-mycontris' => 'A közreműködéseid listája',
'tooltip-pt-login' => 'Bejelentkezni javasolt, de nem kötelező.',
-'tooltip-pt-anonlogin' => 'Bejelentkezni javasolt, de nem kötelező.',
'tooltip-pt-logout' => 'Kijelentkezés',
'tooltip-ca-talk' => 'Az oldal tartalmának megvitatása',
'tooltip-ca-edit' => 'Te is szerkesztheted ezt az oldalt. Mentés előtt használd az előnézet gombot.',
'pageinfo-length' => 'Lap hossza (bájtokban)',
'pageinfo-article-id' => 'Lapazonosító',
'pageinfo-language' => 'Laptartalom nyelve',
-'pageinfo-robot-policy' => 'Kereső motor státusz',
-'pageinfo-robot-index' => 'Indexelhető',
-'pageinfo-robot-noindex' => 'Nem indexelhető',
+'pageinfo-robot-policy' => 'Indexelés robottal',
+'pageinfo-robot-index' => 'Engedélyezett',
+'pageinfo-robot-noindex' => 'Nem engedélyezett',
'pageinfo-views' => 'Megtekintések száma',
'pageinfo-watchers' => 'Figyelők száma',
'pageinfo-few-watchers' => 'Kevesebb mint $1 szerkesztő figyeli',
# Human-readable timestamps
'hours-ago' => '$1 {{PLURAL:$1|órával|órával}} ezelőtt',
-'minutes-ago' => '$1 {{PLURAL: $1|perce|perce}}',
+'minutes-ago' => '$1 {{PLURAL:$1|perce|perce}}',
'seconds-ago' => '$1 {{PLURAL:$1|másodperce|másodperce}}',
+'monday-at' => '$1 (hétfő)',
+'tuesday-at' => '$1 (kedd)',
+'wednesday-at' => '$1 (szerde)',
+'thursday-at' => '$1 (csütörtök)',
+'friday-at' => '$1 (péntek)',
+'saturday-at' => '$1 (szombat)',
+'sunday-at' => '$1 (vasárnap)',
+'yesterday-at' => 'Tegnap $1',
# Bad image list
'bad_image_list' => 'A formátum a következő:
# Separators for various lists, etc.
'ellipsis' => '…',
+'quotation-marks' => '„$1”',
# Multipage image navigation
'imgmultipageprev' => '← előző oldal',
'tags-tag' => 'Címke neve',
'tags-display-header' => 'Megjelenése a listákon',
'tags-description-header' => 'Teljes leírás',
+'tags-active-header' => 'Aktív?',
'tags-hitcount-header' => 'Címkézett változtatások',
+'tags-active-yes' => 'Igen',
+'tags-active-no' => 'Nem',
'tags-edit' => 'szerkesztés',
'tags-hitcount' => '{{PLURAL:$1|Egy|$1}} változtatás',
'dberr-problems' => 'Sajnáljuk, de az oldallal technikai problémák vannak.',
'dberr-again' => 'Várj néhány percet, majd frissítsd az oldalt.',
'dberr-info' => '(Nem sikerült kapcsolatot létesíteni az adatbázisszerverrel: $1)',
+'dberr-info-hidden' => '(Nem sikerült kapcsolatot létesíteni az adatbázisszerverrel)',
'dberr-usegoogle' => 'A probléma elmúlásáig próbálhatsz keresni a Google-lel.',
'dberr-outofdate' => 'Fontos tudnivaló, hogy az oldal tartalmáról készített indexeik elavultak lehetnek.',
'dberr-cachederror' => 'Lenn a kért oldal gyorsítótárazott változata látható, és lehet, hogy nem teljesen friss.',
'api-error-verification-error' => 'A fájl feltehetőleg sérült, vagy hibás a kiterjesztése.',
# Durations
-'duration-seconds' => '{{PLURAL: $1|másodperc|másodperc}}',
-'duration-minutes' => '$1 {{PLURAL: $1|perc|perc}}',
+'duration-seconds' => '{{PLURAL:$1|másodperc|másodperc}}',
+'duration-minutes' => '$1 {{PLURAL:$1|perc|perc}}',
'duration-hours' => '{{PLURAL:$1|egy|$1}} óra',
'duration-days' => '{{PLURAL:$1|egy|$1}} nap',
'duration-weeks' => '$1 {{PLURAL:$1|hét|hét}}',
-'duration-years' => '{{PLURAL: $1|Egy év|$1 év}}',
+'duration-years' => '{{PLURAL:$1|Egy év|$1 év}}',
'duration-decades' => '{{PLURAL:$1|egy|$1}} évtized',
'duration-centuries' => '{{PLURAL:$1|egy|$1}} évszázad',
'duration-millennia' => '{{PLURAL:$1|egy|$1}} évezred',
'expand_templates_input' => 'Vizsgálandó szöveg',
'expand_templates_output' => 'Eredmény',
'expand_templates_xml_output' => 'XML kimenet',
+'expand_templates_html_output' => 'Nyers HTML-kimenet',
'expand_templates_ok' => 'OK',
'expand_templates_remove_comments' => 'Megjegyzések eltávolítása',
'expand_templates_remove_nowiki' => '<nowiki> tagek mellőzése az eredményben',
'expand_templates_generate_xml' => 'XML elemzési fa mutatása',
+'expand_templates_generate_rawhtml' => 'Nyers HTML megjelenítése',
'expand_templates_preview' => 'Előnézet',
);
$messages = array(
# User preference toggles
'tog-underline' => 'ընդգծել հղումները՝',
-'tog-justify' => 'Հավասարացնել տեքստը էջի լայնությամբ',
'tog-hideminor' => 'Թաքցնել չնչին խմբագրումները վերջին փոփոխությունների ցանկից',
'tog-hidepatrolled' => 'Թաքցնել պարեկված խմբագրումները վերջին փոփոխությունների ցանկից',
'tog-newpageshidepatrolled' => 'Թաքցնել պարեկված էջերը նոր էջերի ցանկից',
'tog-numberheadings' => 'Ինքնաթվագրել վերնագրերը',
'tog-showtoolbar' => 'Ցույց տալ խմբագրումների գործիքների վահանակը',
'tog-editondblclick' => 'Խմբագրել էջերը կրկնակի մատնահարմամբ',
-'tog-editsection' => 'Ցույց տալ [խմբագրել] հղումը ամեն բաժնի համար',
'tog-editsectiononrightclick' => 'Խմբագրել բաժինները վերնագրի աջ մատնահարմամբ',
-'tog-showtoc' => 'Ցույց տալ բովանդակությունը (3 կամ ավել վերնագրեր ունեցող էջերի համար)',
'tog-rememberpassword' => 'Հիշել իմ մուտքագրված տվյալներն այս համակարգչում ($1 {{PLURAL:$1|օրից}} ոչ ավել ժամկետով)',
'tog-watchcreations' => 'Ավելացնել իմ ստեղծած էջերը և բեռնած նիշքերը հսկացանկին',
'tog-watchdefault' => 'Ավելացնել իմ խմբագրած էջերը և նիշքերը հսկացանկին',
'compareselectedversions' => 'Համեմատել ընտրած տարբերակները',
'showhideselectedversions' => 'Ցուցադրել/թաքցնել ընտրված խմբագրումները',
'editundo' => 'հետ շրջել',
-'diff-multi' => '({{PLURAL:$1|$1 միջանկյալ տարբերակ|$1 միջանկյալ տարբերակ}} ցուցադրված չէ։)',
# Search results
'searchresults' => 'Որոնման արդյունքներ',
'rows' => 'Տողեր`',
'columns' => 'Սյունակներ',
'searchresultshead' => 'Որոնում',
-'resultsperpage' => 'Արդյունքների քանակը մեկ էջում.',
'stub-threshold' => '<a href="#" class="stub">Պատառ հոդվածների հղումների</a> ձևավորման որոշման սահմանը.',
'recentchangesdays' => 'Վերջին փոփոխություններում ցուցադրվող օրերի թիվը՝',
'recentchangesdays-max' => '($1 {{PLURAL:$1|օրից|օրից}} ոչ ավել)',
'watchmethod-list' => 'հսկվող էջերի վերջին փոփոխությունները',
'watchlistcontains' => 'Ձեր հսկացանկում կա $1 {{PLURAL:$1|էջ|էջ}}։',
'iteminvalidname' => 'Խնդիր «$1» տարրի հետ, անթույլատրելի անվանում...',
-'wlnote' => "Ստորև բերված {{PLURAL:$1|է վերջին փոփոխությունը|են վերջին '''$1''' փոփոխությունները}} վերջին <strong>$2</strong> ժամվա ընթացքում։",
'wlshowlast' => 'Ցուցադրել վերջին $1 ժամերը $2 օրերը $3',
'watchlist-options' => 'Հսկացանկի նախընտրություններ',
'tooltip-pt-watchlist' => 'Ձեր հսկողության տակ գտնվող էջերի ցանկը',
'tooltip-pt-mycontris' => 'Ձեր ներդրումների ցանկը',
'tooltip-pt-login' => 'Կոչ ենք անում մտնել համակարգ, սակայն դա պարտադիր չէ',
-'tooltip-pt-anonlogin' => 'Կոչ ենք ձեզ անում մուտք գործել համակարգ, սակայն դա պարտադիր չէ',
'tooltip-pt-logout' => 'Դուրս գալ համակարգից',
'tooltip-ca-talk' => 'Քննարկումներ այս էջի բովանդակության մասին',
'tooltip-ca-edit' => 'Դուք կարող էք խմբագրել այս էջը։ Խնդրում ենք օգտագործել նախադիտման կոճակը հիշելուց առաջ։',
# Special:Version
'version' => 'ՄեդիաՎիքի տարբերակը',
+'version-ext-license' => 'Լիցենզիա',
+'version-ext-colheader-name' => 'Ընդլայնում',
+'version-ext-colheader-version' => 'Տարբերակ',
+'version-ext-colheader-license' => 'Լիցենզիա',
+'version-license-title' => 'Լիցենզիա $1-ի համար',
'version-poweredby-credits' => "Այս վիքին աշխատում է '''[https://www.mediawiki.org/ MediaWiki]'''֊ով, copyright © 2001-$1 $2։",
# Special:FileDuplicateSearch
$messages = array(
# User preference toggles
'tog-underline' => 'Sublinear ligamines:',
-'tog-justify' => 'Justificar paragraphos',
'tog-hideminor' => 'Celar le modificationes minor in le modificationes recente',
'tog-hidepatrolled' => 'Celar le modificationes patruliate in le modificationes recente',
'tog-newpageshidepatrolled' => 'Celar le paginas patruliate del lista de nove paginas',
'tog-numberheadings' => 'Numerar titulos automaticamente',
'tog-showtoolbar' => 'Monstrar instrumentario de modification',
'tog-editondblclick' => 'Modificar paginas con duple clic',
-'tog-editsection' => 'Activar le modification de sectiones con ligamines "[modificar]"',
'tog-editsectiononrightclick' => 'Permitter modification de sectiones con clic-a-dextra sur titulos de section',
-'tog-showtoc' => 'Monstrar tabula de contento (in paginas con plus de 3 sectiones)',
'tog-rememberpassword' => 'Memorar mi contrasigno in iste navigator (pro un maximo de $1 {{PLURAL:$1|die|dies}})',
'tog-watchcreations' => 'Adder le paginas que io crea e le files que io incarga a mi observatorio',
'tog-watchdefault' => 'Adder le paginas e files que io modifica a mi observatorio',
'retypenew' => 'Repete le nove contrasigno:',
'resetpass_submit' => 'Definir contrasigno e aperir un session',
'changepassword-success' => 'Tu contrasigno ha essite cambiate!',
+'changepassword-throttled' => 'Tu ha recentemente facite troppo de tentativas de aperir session.
+Per favor attende $1 ante de probar lo novemente.',
'resetpass_forbidden' => 'Le contrasignos non pote esser cambiate',
'resetpass-no-info' => 'Tu debe aperir un session pro poter acceder directemente a iste pagina.',
'resetpass-submit-loggedin' => 'Cambiar contrasigno',
'changeemail-password' => 'Contrasigno de {{SITENAME}}:',
'changeemail-submit' => 'Cambiar e-mail',
'changeemail-cancel' => 'Cancellar',
+'changeemail-throttled' => 'Tu ha facite troppo de tentativas de aperir session.
+Per favor attende $1 ante de probar lo novemente.',
# Special:ResetTokens
'resettokens' => 'Reinitialisar indicios',
'content-not-allowed-here' => 'Le contento "$1" non es permittite in le pagina [[$2]]',
'editwarning-warning' => 'Quitar iste pagina pote causar le perdita de omne modificationes que tu ha facite.
Si tu ha aperite un session, tu pote disactivar iste aviso in le section "Modification" de tu preferentias.',
+'editpage-notsupportedcontentformat-title' => 'Formato de contento non supportate',
+'editpage-notsupportedcontentformat-text' => 'Le formato de contento $1 non es supportate per le modello de contento $2.',
# Content models
'content-model-wikitext' => 'wikitexto',
'cantcreateaccount-text' => "Le creation de contos desde iste adresse IP ('''$1''') ha essite blocate per [[User:$3|$3]].
Le motivo que $3 dava es ''$2''",
+'cantcreateaccount-range-text' => "Le creation de contos ab le adresses IP in le intervallo '''$1''', le qual include tu adresse IP ('''$4'''), ha essite blocate per [[User:$3|$3]].
+
+Le motivo fornite per $3 es ''$2''",
# History pages
'viewpagelogs' => 'Vider le entratas del registro pro iste pagina',
'showhideselectedversions' => 'Revelar/celar le versiones seligite',
'editundo' => 'disfacer',
'diff-empty' => '(Nulle differentia)',
-'diff-multi' => '({{PLURAL:$1|Un version intermedie|$1 versiones intermedie}} facite per {{PLURAL:$2|un usator|$2 usatores}} non es monstrate)',
'diff-multi-manyusers' => '({{PLURAL:$1|Un version intermedie|$1 versiones intermedie}} facite per plus de $2 {{PLURAL:$2|usator|usatores}} non es monstrate)',
'difference-missing-revision' => '{{PLURAL:$2|Un version|$2 versiones}} de iste differentia ($1) non ha essite trovate.
'search-result-score' => 'Relevantia: $1%',
'search-redirect' => '(redirection ab $1)',
'search-section' => '(section $1)',
+'search-file-match' => '(corresponde al contento del file)',
'search-suggest' => 'Esque tu vole dicer: $1',
'search-interwiki-caption' => 'Projectos fratres',
'search-interwiki-default' => 'Resultatos de $1:',
'rows' => 'Lineas:',
'columns' => 'Columnas:',
'searchresultshead' => 'Recerca',
-'resultsperpage' => 'Resultatos per pagina:',
'stub-threshold' => 'Limite pro formatar le ligamines in <a href="#" class="stub">stilo de peciettas</a> (bytes):',
'stub-threshold-disabled' => 'Disactivate',
'recentchangesdays' => 'Numero de dies a monstrar in modificationes recente:',
Si tu vole totevia incargar iste file, per favor retorna e usa un nove nomine. [[File:$1|thumb|center|$1]]',
'file-exists-duplicate' => 'Iste file es un duplicato del sequente {{PLURAL:$1|file|files}}:',
'file-deleted-duplicate' => 'Un file identic a iste file ([[:$1]]) esseva ja delite anteriormente. Tu deberea verificar le registro de deletiones concernente iste file ante de re-incargar lo.',
+'file-deleted-duplicate-notitle' => 'Un file identic a iste file ha essite delite anteriormente, e le titulo ha essite supprimite. Tu deberea demandar a un persona con le privilegio de vider datos de files supprimite a examinar le situation ante de incargar lo de novo.',
'uploadwarning' => 'Advertimento de incargamento',
'uploadwarning-text' => 'Per favor modifica le description del file ci infra e reproba.',
'savefile' => 'Salveguardar file',
'protectedpages' => 'Paginas protegite',
'protectedpages-indef' => 'Solmente protectiones infinite',
'protectedpages-cascade' => 'Protectiones in cascada solmente',
+'protectedpages-noredirect' => 'Celar redirectiones',
'protectedpagesempty' => 'Nulle paginas es actualmente protegite con iste parametros.',
'protectedtitles' => 'Titulos protegite',
'protectedtitlesempty' => 'Nulle titulos es actualmente protegite con iste parametros.',
'watchmethod-list' => 'cerca modificationes recente in paginas sub observation',
'watchlistcontains' => 'Tu observatorio contine $1 {{PLURAL:$1|pagina|paginas}}.',
'iteminvalidname' => "Problema con entrata '$1', nomine invalide...",
-'wlnote' => "Ecce le ultime {{PLURAL:$1|modification|'''$1''' modificationes}} durante le ultime {{PLURAL:$2|hora|'''$2''' horas}}, a partir del $3 a $4.",
+'wlnote2' => 'Ecce le cambiamentos in le ultime {{PLURAL:$1|hora|<strong>$1</strong> horas}}, a partir del $2 a $3.',
'wlshowlast' => 'Revelar ultime $1 horas $2 dies $3',
'watchlist-options' => 'Optiones del observatorio',
'delete-warning-toobig' => 'Iste pagina ha un grande historia de modificationes con plus de $1 {{PLURAL:$1|version|versiones}}.
Le deletion de illo pote disrumper le operationes del base de datos de {{SITENAME}};
procede con caution.',
+'deleting-backlinks-warning' => "'''Attention:''' Il ha altere paginas que liga a o transclude le pagina que tu es sur le puncto de deler.",
# Rollback
'rollback' => 'Revocar modificationes',
Vide le [[Special:BlockList|lista de blocadas]] pro revider le blocadas.',
'ipb-blockingself' => 'Tu sta super le puncto de blocar te mesme! Es tu secur de voler facer isto?',
'ipb-confirmhideuser' => 'Tu es super le puncto de blocar un usator con le option "celar usator" activate. Isto supprimera le nomine del usator in tote le listas e entratas de registro. Es tu secur de voler facer isto?',
+'ipb-confirmaction' => 'Si tu es absolutemente secur de voler facer lo, marca le quadrato "{{int:ipb-confirm}}" al fundo.',
'ipb-edit-dropdown' => 'Modificar le motivos pro blocar',
'ipb-unblock-addr' => 'Disblocar $1',
'ipb-unblock' => 'Disblocar un nomine de usator o un adresse IP',
'range_block_disabled' => 'Le capacitate del administratores a blocar intervallos de adresses IP es disactivate.',
'ipb_expiry_invalid' => 'Tempore de expiration invalide.',
'ipb_expiry_temp' => 'Le blocadas de nomines de usator celate debe esser permanente.',
-'ipb_hide_invalid' => 'Impossibile supprimer iste conto; illo pote haber troppo de modificationes.',
+'ipb_hide_invalid' => 'Impossibile supprimer iste conto; illo ha plus de {{PLURAL:$1|un modification|$1 modificationes}}.',
'ipb_already_blocked' => '"$1" es ja blocate',
'ipb-needreblock' => '$1 es ja blocate. Esque tu vole cambiar le configurationes?',
'ipb-otherblocks-header' => 'Altere {{PLURAL:$1|blocada|blocadas}}',
'allmessages-prefix' => 'Filtrar per prefixo:',
'allmessages-language' => 'Lingua:',
'allmessages-filter-submit' => 'Va',
+'allmessages-filter-translate' => 'Traducer',
# Thumbnails
'thumbnail-more' => 'Aggrandir',
'importuploaderrortemp' => 'Le incargamento del file de importation ha fallite. Un directorio temporari manca.',
'import-parse-failure' => 'Error syntactic durante importation XML',
'import-noarticle' => 'Nulle pagina a importar!',
-'import-nonewrevisions' => 'Tote le versiones habeva ja essite importate anteriormente.',
+'import-nonewrevisions' => 'Nulle version ha essite importate (totes esseva jam presente o ha essite saltate a causa de errores).',
'xml-error-string' => '$1 al linea $2, col $3 (byte $4): $5',
'import-upload' => 'Incargar datos XML',
'import-token-mismatch' => 'Perdita del datos del session. Per favor reprova.',
'import-error-special' => 'Le pagina "$1" non es importate perque illo pertine a un spatio de nomines special que non permitte paginas.',
'import-error-invalid' => 'Le pagina "$1" non es importate perque su nomine es invalide.',
'import-error-unserialize' => 'Le version $2 del pagina "$1" non pote esser disserialisate. Il ha essite reportate que iste version usa le modello de contento $3 serialisate como $4.',
+'import-error-bad-location' => 'Le version $2 que usa le modello de contento $3 non pote esser immagazinate in "$1" in iste wiki, perque iste modello non es supportate in iste pagina.',
'import-options-wrong' => 'Mal {{PLURAL:$2|option|optiones}}: <nowiki>$1</nowiki>',
'import-rootpage-invalid' => 'Le pagina radice specificate es un titulo invalide.',
'import-rootpage-nosubpage' => 'Le spatio de nomines "$1" del pagina radice non permitte subpaginas.',
'tooltip-pt-watchlist' => 'Le lista de paginas del quales tu seque le modificationes',
'tooltip-pt-mycontris' => 'Lista de tu contributiones',
'tooltip-pt-login' => 'Nos recommenda que tu te authentica, ma non es obligatori.',
-'tooltip-pt-anonlogin' => 'Nos recommenda que tu te authentica, ma non es obligatori.',
'tooltip-pt-logout' => 'Clauder session',
'tooltip-ca-talk' => 'Discussiones a proposito del pagina de contento',
'tooltip-ca-edit' => 'Tu pote modificar iste pagina.
Es possibile adder un motivo in le summario.',
'tooltip-preferences-save' => 'Confirmar preferentias',
'tooltip-summary' => 'Entra un curte summario',
+'interlanguage-link-title' => '$1 (in $2)',
# Stylesheets
'common.css' => '/* Le CSS placiate hic se applicara a tote le stilos */',
Si le file ha essite modificate ab su stato original, es possibile que alcun detalios non reflecte completemente le file modificate.',
'metadata-expand' => 'Revelar detalios extense',
'metadata-collapse' => 'Celar detalios extense',
-'metadata-fields' => 'Le campos de metadatos de imagine listate in iste message essera includite in le visualisation del pagina de imagine quando le tabula de metadatos es plicate.
+'metadata-fields' => 'Le campos de metadatos de imagine listate in iste message essera includite in le visualisation del pagina de imagine quando le tabella de metadatos es plicate.
Le alteres essera initialmente celate.
* make
* model
'version-hook-name' => 'Nomine del uncino',
'version-hook-subscribedby' => 'Subscribite per',
'version-version' => '(Version $1)',
-'version-license' => 'Licentia',
+'version-license' => 'Licentia pro MediaWiki',
+'version-ext-license' => 'Licentia',
+'version-ext-colheader-name' => 'Extension',
+'version-ext-colheader-version' => 'Version',
+'version-ext-colheader-license' => 'Licentia',
+'version-ext-colheader-description' => 'Description',
+'version-ext-colheader-credits' => 'Autores',
+'version-license-title' => 'Licentia pro $1',
+'version-license-not-found' => 'Nulle information detaliate de licentia ha essite trovate pro iste extension.',
+'version-credits-title' => 'Recognoscentias pro $1',
+'version-credits-not-found' => 'Nulle information detaliate de recognoscentia ha essite trovate pro iste extension.',
'version-poweredby-credits' => "Iste wiki es actionate per '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
'version-poweredby-others' => 'alteres',
'version-poweredby-translators' => 'Traductores de translatewiki.net',
'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath Cammino al script]',
# Special:Redirect
-'redirect' => 'Rediriger per nomine de file, ID de usator o ID de version',
+'redirect' => 'Rediriger per nomine de file, ID de usator, ID de pagina o ID de version',
'redirect-legend' => 'Rediriger a un file o pagina',
-'redirect-summary' => 'Iste pagina special redirige a un file (si es date le nomine de un file), a un pagina (si es date un ID de version) o a un pagina de usator (si es date un ID de usator numeric). Usage: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]] o [[{{#Special:Redirect}}/user/101]].',
+'redirect-summary' => 'Iste pagina special redirige a un file (si es date le nomine de un file), a un pagina (si es date un ID de version o ID de pagina) o a un pagina de usator (si es date un ID de usator numeric). Usage: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]] o [[{{#Special:Redirect}}/user/101]].',
'redirect-submit' => 'Va',
'redirect-lookup' => 'Cercar:',
'redirect-value' => 'Valor:',
'redirect-user' => 'ID de usator',
+'redirect-page' => 'ID del pagina',
'redirect-revision' => 'Version de pagina',
'redirect-file' => 'Nomine de file',
'redirect-not-exists' => 'Valor non trovate',
'api-error-overwrite' => 'Superscriber un file existente non es permittite.',
'api-error-stashfailed' => 'Error interne: le servitor non poteva immagazinar le file temporari.',
'api-error-publishfailed' => 'Error interne: le servitor non poteva publicar le file temporari.',
+'api-error-stasherror' => 'Un error ha occurrite durante le incargamento del file in "stash".',
'api-error-timeout' => 'Le servitor non ha respondite intra le tempore expectate.',
'api-error-unclassified' => 'Un error incognite ha occurrite.',
'api-error-unknown-code' => 'Error incognite: "$1"',
'expand_templates_generate_rawhtml' => 'Monstrar HTML brute',
'expand_templates_preview' => 'Previsualisation',
+# Unknown messages
+'uploadinvalidxml' => 'Le codice XML in le file incargate non pote esser interpretate.',
);
* @author Remember the dot
* @author Rex
* @author Rv77ax
+ * @author StefanusRA
* @author Urhixidur
* @author William Surya Permana
* @author לערי ריינהארט
$messages = array(
# User preference toggles
'tog-underline' => 'Garis bawahi pranala:',
-'tog-justify' => 'Ratakan paragraf',
'tog-hideminor' => 'Sembunyikan suntingan kecil di perubahan terbaru',
'tog-hidepatrolled' => 'Sembunyikan suntingan terpatroli di perubahan terbaru',
'tog-newpageshidepatrolled' => 'Sembunyikan halaman terpatroli dari daftar halaman baru',
'tog-numberheadings' => 'Beri nomor judul secara otomatis',
'tog-showtoolbar' => 'Tampilkan bilah alat penyuntingan',
'tog-editondblclick' => 'Sunting halaman dengan klik ganda',
-'tog-editsection' => 'Fungsikan penyuntingan subbagian melalui pranala [sunting]',
'tog-editsectiononrightclick' => 'Fungsikan penyuntingan bagian dengan mengeklik kanan pada judul bagian',
-'tog-showtoc' => 'Perlihatkan daftar isi (untuk halaman yang mempunyai lebih dari 3 subbagian)',
'tog-rememberpassword' => 'Ingat kata sandi saya di peramban ini (selama $1 {{PLURAL:$1|hari}})',
'tog-watchcreations' => 'Tambahkan halaman yang saya buat ke daftar pantauan',
'tog-watchdefault' => 'Tambahkan halaman yang saya sunting ke daftar pantauan',
'showhideselectedversions' => 'Tampilkan/sembunyikan versi terpilih',
'editundo' => 'balikkan',
'diff-empty' => '(Tidak ada perbedaan)',
-'diff-multi' => '({{PLURAL:$1|Satu|$1}} revisi antara oleh {{PLURAL:$2|satu|$2}} pengguna tak ditampilkan)',
'diff-multi-manyusers' => '({{PLURAL:$1|Satu|$1}} revisi antara oleh lebih dari $2 {{PLURAL:$2|satu|$2}} pengguna tak ditampilkan)',
'difference-missing-revision' => '{{PLURAL:$2|Satu revisi|$2 revisi}} dari perbedaan ini ($1) {{PLURAL:$2|tidak|tidak}} ditemukan.
'rows' => 'Baris:',
'columns' => 'Kolom:',
'searchresultshead' => 'Cari',
-'resultsperpage' => 'Hasil per halaman:',
'stub-threshold' => 'Ambang batas untuk format <a href="#" class="stub">pranala rintisan</a>:',
'stub-threshold-disabled' => 'Dinonaktifkan',
'recentchangesdays' => 'Jumlah hari yang ditampilkan di perubahan terbaru:',
'prefs-tokenwatchlist' => 'Tanda',
'prefs-diffs' => 'Beda',
'prefs-help-prefershttps' => 'Preferensi ini akan diaktifkan kali berikutnya Anda masuk log.',
-'prefs-tabs-navigation-hint' => 'Tip: Anda dapat menggunakan tomboh panah kiri dan kanan untuk bernavigasi antartab di dalam daftar tab.',
+'prefs-tabs-navigation-hint' => 'Tip: Anda dapat menggunakan tombol panah kiri dan kanan untuk bernavigasi antartab di dalam daftar tab.',
# User preference: email validation using jQuery
'email-address-validity-valid' => 'Alamat surel tampaknya sah',
'userrights-changeable-col' => 'Kelompok yang dapat Anda ubah',
'userrights-unchangeable-col' => 'Kelompok yang tidak dapat Anda ubah',
'userrights-irreversible-marker' => '$1*',
-'userrights-conflict' => 'Konflik perubahan hak pengguna! Silakan tinjau ulang dan konfirmasi perubahan anda.',
+'userrights-conflict' => 'Konflik perubahan hak pengguna! Silakan tinjau ulang dan konfirmasi perubahan Anda.',
'userrights-removed-self' => 'Anda berhasil mencabut hak-hak Anda. Anda tidak bisa lagi mengakses halaman ini.',
# Groups
'rclistfrom' => 'Perlihatkan perubahan terbaru sejak $1',
'rcshowhideminor' => '$1 suntingan kecil',
'rcshowhidebots' => '$1 bot',
-'rcshowhideliu' => '$1 pengguna masuk log',
+'rcshowhideliu' => '$1 pengguna-pengguna terdaftar',
'rcshowhideanons' => '$1 pengguna anon',
'rcshowhidepatr' => '$1 suntingan terpatroli',
'rcshowhidemine' => '$1 suntingan saya',
'watchmethod-list' => 'periksa halaman yang dipantau terhadap perubahan terbaru',
'watchlistcontains' => 'Daftar pantauan Anda berisi $1 {{PLURAL:$1|halaman|halaman}}.',
'iteminvalidname' => "Ada masalah dengan '$1', namanya tidak sah...",
-'wlnote' => "Di bawah ini adalah {{PLURAL:$1|perubahan|'''$1''' perubahan}} terakhir dalam '''$2''' jam terakhir, per $3, $4.",
'wlshowlast' => 'Tampilkan $1 jam $2 hari terakhir $3',
'watchlist-options' => 'Opsi daftar pantauan',
'tooltip-pt-watchlist' => 'Daftar halaman yang saya pantau.',
'tooltip-pt-mycontris' => 'Daftar kontribusi Anda',
'tooltip-pt-login' => 'Anda disarankan untuk masuk log, meskipun hal itu tidak diwajibkan.',
-'tooltip-pt-anonlogin' => 'Anda disarankan untuk masuk log, meskipun hal itu tidak diwajibkan.',
'tooltip-pt-logout' => 'Keluar log',
'tooltip-ca-talk' => 'Pembicaraan halaman isi',
'tooltip-ca-edit' => 'Anda dapat menyunting halaman ini. Gunakan tombol pratayang sebelum menyimpan',
'duration-minutes' => '{{PLURAL:$1||}}$1 menit',
'duration-hours' => '{{PLURAL:$1||}}$1 jam',
'duration-days' => '{{PLURAL:$1||}}$1 hari',
-'duration-weeks' => '{{PLURAL: $1||}}$1 minggu',
-'duration-years' => '{{PLURAL: $1||}}$1 tahun',
+'duration-weeks' => '{{PLURAL:$1||}}$1 minggu',
+'duration-years' => '{{PLURAL:$1||}}$1 tahun',
'duration-decades' => '{{PLURAL:$1||}}$1 dekade',
'duration-centuries' => '{{PLURAL:$1||}}$1 abad',
'duration-millennia' => '{{PLURAL:$1||}}$1 milenium',
* @author Kaganer
* @author Makuba
* @author Malafaya
+ * @author Minisarm
* @author Reedy
* @author Remember the dot
* @author Renan
$messages = array(
# User preference toggles
'tog-underline' => 'Ultracatenun:',
-'tog-justify' => 'Justificar paragrafes',
'tog-hideminor' => 'Ocultar redactiones minori in nov changes',
'tog-hidepatrolled' => 'Ocultar redactiones vigilat in nov changes',
'tog-newpageshidepatrolled' => 'Ocultar págines vigilat de liste de nov págines',
'tog-numberheadings' => 'Auto-numerar rublicas',
'tog-showtoolbar' => 'Monstrar barre de redactional utensiles',
'tog-editondblclick' => 'Redacter págines per duplic clacca',
-'tog-editsection' => 'Permisser redaction de division usant catenunes [redacter]',
'tog-editsectiononrightclick' => 'Redacter singul sectiones per dextri clacca',
-'tog-showtoc' => 'Monstrar tabelle de contenetes (por págines che plu de 3 divisiones)',
'tog-rememberpassword' => 'Memorar mi registre in ti computator (por um max de $1 {{PLURAL:$1|die|dies}})',
'tog-watchcreations' => 'Automaticmen viligar págines e files, queles yo ha creat.',
'tog-watchdefault' => 'Automaticmen vigilar págines e files, queles yo ha redactet.',
'next' => 'prox',
'last' => 'ant',
'page_first' => 'prim',
-'page_last' => 'ultim',
+'page_last' => 'ultima',
'histlegend' => "Diferenties de selection: marca li buxes de radio de li revisiones por comparar e batte \"intrar\" o li buton in li funde.<br />
Legende: '''({{int:cur}})''' = diferenties che ultim revision, '''({{int:last}})''' = diferenties que antecede li revision, '''{{int:minoreditletter}}''' = redaction minori.",
'history-fieldset-title' => 'Historie de navigation',
'lineno' => 'Linea $1:',
'compareselectedversions' => 'Comparar revisiones selectet',
'editundo' => 'anullar',
-'diff-multi' => '({{PLURAL:$1|Un revision intermediari|$1 revisiones intermediari}} per {{PLURAL:$2|un usator|$2 usatores}} ne monstrat)',
# Search results
'searchresults' => 'Serch-resultates',
'watchmethod-recent' => 'controlant nov redactiones por págines vigilat',
'watchmethod-list' => 'controlant págines vigilat por nov redactiones',
'watchlistcontains' => 'Tui liste de págines vigilat contene $1 {{PLURAL:$1|págine|págines}}.',
-'wlnote' => "Infra {{PLURAL:$1|es li ultim change|es li ultim '''$1''' changes}} in li ultim {{PLURAL:$2|hor|'''$2''' hores}}.",
'wlshowlast' => 'Monstra ultim $1 hores $2 dies $3',
'watchlist-options' => 'Optiones de liste de págines vigilat',
'tooltip-pt-watchlist' => 'Liste de vigilat págines',
'tooltip-pt-mycontris' => 'Liste de tui contributiones',
'tooltip-pt-login' => 'Tu es incorrageat crear un conto, ma to ne es un deventie.',
-'tooltip-pt-anonlogin' => 'Vu es incorageat por crear un conto; támen, it ne esser mandatorio',
'tooltip-pt-logout' => 'Surtir',
'tooltip-ca-talk' => 'Discussion pri li articul.',
'tooltip-ca-edit' => 'Redacter ti págine. Ples usar li buton de prevision antequam conservar.',
$messages = array(
# User preference toggles
'tog-underline' => 'Okpürụ ahiri jikodo:',
-'tog-justify' => 'Tinyé ndelita na ọkwa',
'tog-hideminor' => 'Zonari orü ntàkírí na nwerue mẹrẹ ogẹ nsó',
'tog-hidepatrolled' => 'Zonari orü ha hụrụ na nwerue mẹrẹ ogẹ nsó',
'tog-newpageshidepatrolled' => 'Zonari orü ha hụrụ shí ndetu ihü ohúrù',
'tog-numberheadings' => 'Onuogụgụ-otu anyi mere ya maka ishi edemede',
'tog-showtoolbar' => 'Zi igbe orü (Í gí nwere JavaScript)',
'tog-editondblclick' => 'Rüwá na élu ihü mgbe I kpạtạrạ (ö chọrọ JavaScript)',
-'tog-editsection' => 'Gbanyé orürü nkeji shi [rüwá] jikodo',
'tog-editsectiononrightclick' => 'Kpa na áká nri Í gbanyé orürü nkeji na ishi nkeji (ö chọrọ JavaScript)',
-'tog-showtoc' => 'Zi agada ihe níle (maka ihü nwere ishis ká áto)',
'tog-rememberpassword' => 'Chetá edemede éjim a banyé na orunótuá (nke ukwu nke rürü {{PLURAL:$1|chi|chi}} $1)',
'tog-watchcreations' => 'Tinyé ihüm na eké na ndetu ihem ne lé',
'tog-watchdefault' => 'Tinyé ihü m na rüoru élu na ndetu ihem ne lé',
'rows' => 'Ǹdịlị:',
'columns' => 'Ogìdì:',
'searchresultshead' => 'Chọwa',
-'resultsperpage' => 'Nlé na ihü:',
'stub-threshold-disabled' => 'Ápụgị òkò',
'timezonelegend' => 'Nkeji ogẹ:',
'localtime' => 'Ogẹ ebeanọr:',
$messages = array(
# User preference toggles
'tog-underline' => 'Pinag-ugisan ti silpo:',
-'tog-justify' => 'Limpiaen dagiti parapo',
'tog-hideminor' => 'Ilemmeng dagiti bassit a panagbaliw kadagiti naudi a sinuk-sukatan',
'tog-hidepatrolled' => 'Ilemmeng dagiti napatruliaan nga inurnos kadagiti naudi a sinuk-sukatan',
'tog-newpageshidepatrolled' => 'Ilemmeng dagiti napatruliaan a panid manipud ti baro a listaan ti panid',
'tog-numberheadings' => 'Automatiko a pabilangan dagiti paulo',
'tog-showtoolbar' => 'Ipakita ti baras ti ramit ti panag-urnos',
'tog-editondblclick' => 'Urnosen dagiti panid iti mamindua a panagpindut',
-'tog-editsection' => 'Pakabaelan ti panag-urnos ti paset babaen kadagiti silpo nga [urnosen]',
'tog-editsectiononrightclick' => 'Pakabaelan ti panag-urnos ti paset babaen ti kanawan a panagpindut kadagiti titulo ti paset',
-'tog-showtoc' => 'Ipakita ti tabla dagiti linaon (para kadagiti panid nga adda ti ad-adu ngem dagiti 3 a paulo)',
'tog-rememberpassword' => 'Laglagipem ti iseserrekko iti daytoy a pagbasabasa (iti kapaut nga $1 {{PLURAL:$1|aldaw|al-aldaw}})',
'tog-watchcreations' => 'Agnayon kadagiti panid a pinartuatko ken papeles nga inkargak idiay listaan ti bambantayak',
'tog-watchdefault' => 'Agnayon kadagiti panid ken papeles nga inurnosko idiay listaan ti bambantayak',
'showhideselectedversions' => 'Ipakita/ilemmeng dagiti napili a nabaliwan',
'editundo' => 'ibabawi',
'diff-empty' => '(Awan ti paggiddiatan)',
-'diff-multi' => '({{PLURAL:$1|Maysa nga agtengnga a panangbalbaliw|Dagiti $1 nga agtennga a panangbalbaliw}} babaen {{PLURAL:$2|ti agararamat|dagiti $2 nga agararamat}} ti saan a naipakita)',
'diff-multi-manyusers' => '({{PLURAL:$1|Maysa nga agtengnga a panangbalbaliw|Dagiti $1 nga agtengnga a panangbalbaliw}} babaen ti ad-adu ngem $2 {{PLURAL:$2|nga agar-aramat|kadagiti agar-aramat}} ti saan a naipakita)',
'difference-missing-revision' => '{{PLURAL:$2|Maysa a panagbalbaliw|$2 kadagiti panagbalbaliw}} iti daytoy a paggiddiatan ($1) {{PLURAL:$2|ket ti|ket dagiti}} saan a naburikan.
'rows' => 'Ar-aray:',
'columns' => 'Tuk-tukol:',
'searchresultshead' => 'Biruken',
-'resultsperpage' => 'Nabirukan ti tunggal maysa a panid:',
'stub-threshold' => 'Pagpatinggaan para iti panagporma ti <a href="#" class="stub">pungol a silpo</a> (dagiti byte):',
'stub-threshold-disabled' => 'Nabaldado',
'recentchangesdays' => 'Al-aldaw nga ipakita dagiti kinaudi a binalbaliwan:',
'watchmethod-list' => 'kitkitaen dagiti bambantayan a panid kadagiti kinaudi nga inurnos',
'watchlistcontains' => 'Ti listaan ti bambantayam ket aglaon ti $1 {{PLURAL:$1|a panid|a pampanid}}.',
'iteminvalidname' => "Parikut iti banag '$1', imbalido a nagan...",
-'wlnote' => "Adda dita baba {{PLURAL:$1|ti kaudian a panagsukat|dagiti kaudian a '''$1''' a panagsukat}} iti napalabas a {{PLURAL:$2|nga oras|'''$2''' nga or-oras}}, manipud idi $3, $4.",
'wlshowlast' => 'Ipakita dagiti naudi a $1 nga or-oras $2 nga al-aldaw $3',
'watchlist-options' => 'Dagiti pagpilian ti listaan a bambantayan',
'tooltip-pt-watchlist' => 'Listaan dagiti panid a sipsiputem para iti panakabalbaliw',
'tooltip-pt-mycontris' => 'Listaan dagiti inaramidmo',
'tooltip-pt-login' => 'Maisingasing a sumrekka; nupay kasta, daytoy ket saan a maipapilit',
-'tooltip-pt-anonlogin' => 'Maisingasing a sumrekka; nupay kasta, daytoy ket saan a maipapilit',
'tooltip-pt-logout' => 'Rummuar',
'tooltip-ca-talk' => 'Pagtungtungan a maipapan ti linaon ti panid',
'tooltip-ca-edit' => 'Mabalinmo nga urnosen daytoy a panid. Pangngaasi nga aramatem ti buton ti panagipadas sakbay nga agidulin',
$messages = array(
# User preference toggles
'tog-underline' => 'Ӏинкаш белгалде:',
-'tog-justify' => 'Яздам оагӀува шоралца хьанийсде',
'tog-hideminor' => 'ЗӀамига хувцамаш керда хувцаман дагарленашках къайлаяккха',
'tog-hidepatrolled' => 'Керда хувцаман дагарленач дӀанийсаяь хувцамаш къайладаккха',
'tog-newpageshidepatrolled' => 'Керда оагӀувна дагарленач дӀанийсаяь хувцамаш къайладаккха',
'tog-numberheadings' => 'Корталенашт аланза таьрахьал де',
'tog-showtoolbar' => 'ГӀалатнийcдара юкъе лакхера гӀорсан гартакх хьахьокха (JavaScript)',
'tog-editondblclick' => 'Шозза цлицакацa oагӀув хувца (JavaScript)',
-'tog-editsection' => 'ХӀара дакъа "хувца" яха Ӏинк хьахьокха',
'tog-editsectiononrightclick' => 'Декъам хувца кертмугӀа аьтта цлицака я (JavaScript)',
-'tog-showtoc' => 'Кортанче хьокха (кхьаннена дукхагӀа кертмугӀанаш йoлa оагӀувна)',
-'tog-rememberpassword' => '(укх $1 {{PLURAL:$1|ден|деношк}}) мара са чувалара/ялара дагалоаца дезаш дац',
+'tog-rememberpassword' => '(укх $1 {{PLURAL:$1|1=ден|деношк}}) мара са чувалара/ялара дагалоаца дезаш дац',
'tog-watchcreations' => 'Аз яь йола оагӀувнаш теркама дагарле йолач чуяьккха',
'tog-watchdefault' => 'Аз хийца йола оагӀувнаш теркама дагарле йолач чуяьккха',
'tog-watchmoves' => 'Аз цӀи хийца йола оагӀувнаш теркама дагарле йолач чуяьккха',
'dec' => 'Чант.',
# Categories related messages
-'pagecategories' => '{{PLURAL:$1|Катаг|Катагаш}}',
+'pagecategories' => '{{PLURAL:$1|1=Катаг|Катагаш}}',
'category_header' => '"$1" Катагачар оагӀувнаш',
'subcategories' => 'Чуракатагаш',
'category-media-header' => '"$1" Катагачар паьлаш',
'category-empty' => "''Укх катагчоа цхьаккха оагӀувнаш е паьлаш яц.''",
-'hidden-categories' => '{{PLURAL:$1|Къайла катаг|Къайла катагаш}}',
+'hidden-categories' => '{{PLURAL:$1|1=Къайла катаг|Къайла катагаш}}',
'hidden-category-category' => 'Къайла катагаш',
-'category-subcat-count' => '{{PLURAL:$2|Йола катаг тӀехьара бухкатаг чулоаца.|{{PLURAL:$1|$1 бухкатаг хьахьекха я|$1 бухкатагаш хьахьекха я}} $2 йолачара.}}',
-'category-subcat-count-limited' => 'Укх катагий {{PLURAL:$1|$1 кӀалкатаг|$1 кӀалкатагаш}}.',
-'category-article-count' => '{{PLURAL:$2|Йола цатег цхьа оагӀув мара чулоацац.|{{PLURAL:$1|$1 оагӀув хьахекха я|$1 оагӀувнаш хьахекха я}} укх цатега $2 йолачарах.}}',
-'category-article-count-limited' => 'Укх катагач {{PLURAL:$1|$1 оагӀув|$1 оагӀувнаш|}}.',
-'category-file-count' => '{{PLURAL:$2|Укх цатего ца паьла мара чулоацац.|{{PLURAL:$1|$1 паьла хьахьекха я|$1 паьлаш хьахьекха я}} укх цатегий $2 долачаьрахь.}}',
-'category-file-count-limited' => 'Укх катагач {{PLURAL:$1|$1 паьл|$1 паьлаш}}.',
+'category-subcat-count' => '{{PLURAL:$2|Йола катаг тӀехьара бухкатаг чулоаца.|{{PLURAL:$1|1=$1 бухкатаг хьахьекха я|$1 бухкатагаш хьахьекха я}} $2 йолачара.}}',
+'category-subcat-count-limited' => 'Укх катагий {{PLURAL:$1|1=$1 кӀалкатаг|$1 кӀалкатагаш}}.',
+'category-article-count' => '{{PLURAL:$2|Йола цатег цхьа оагӀув мара чулоацац.|{{PLURAL:$1|1=$1 оагӀув хьахекха я|$1 оагӀувнаш хьахекха я}} укх цатега $2 йолачарах.}}',
+'category-article-count-limited' => 'Укх катагач {{PLURAL:$1|1=$1 оагӀув|$1 оагӀувнаш}}.',
+'category-file-count' => '{{PLURAL:$2|Укх цатего ца паьла мара чулоацац.|{{PLURAL:$1|1=$1 паьла хьахьекха я|$1 паьлаш хьахьекха я}} укх цатегий $2 долачаьрахь.}}',
+'category-file-count-limited' => 'Укх катагач {{PLURAL:$1|1=$1 паьл|$1 паьлаш}}.',
'listingcontinuesabbrev' => 'дӀахо',
'index-category' => 'ДIахьожаман оагӀувнаш',
'noindex-category' => 'ДIахьожаманза оагӀувнаш',
'create-this-page' => 'Ep oагӀув хьае',
'delete' => 'ДӀадаккха',
'deletethispage' => 'Ер оагӀув дӀаяьккха',
-'undelete_short' => 'Меттаоттае {{PLURAL:$1|хувцам|$1 хувцамаш}}',
-'viewdeleted_short' => 'БӀаргтасса {{PLURAL:$1|дӀадаьккха хувцам тӀа|$1 дӀадаьккха хувцамаш тӀа}}',
+'undelete_short' => 'Меттаоттае {{PLURAL:$1|1=хувцам|$1 хувцамаш}}',
+'viewdeleted_short' => 'БӀаргтасса {{PLURAL:$1|1=дӀадаьккха хувцам тӀа|$1 дӀадаьккха хувцамаш тӀа}}',
'protect' => 'Лораде',
'protect_change' => 'хувца',
'protectthispage' => 'Лорае ер оагӀув',
'redirectedfrom' => '($1 тӀера хьадейта да)',
'redirectpagesub' => 'ДӀа-хьа дайта оагӀув',
'lastmodifiedat' => 'Укх оагӀув тӀехьара хувцам: $2, $1.',
-'viewcount' => 'Укх оагӀув тӀа бӀаргтасса хиннад {{PLURAL:$1|цхьазза|$1 шозза}}.',
+'viewcount' => 'Укх оагӀув тӀа бӀаргтасса хиннад {{PLURAL:$1|1=цхьазза|$1 шозза}}.',
'protectedpage' => 'Лорама оагӀув',
'jumpto' => 'Укхаза дехьа гӀо:',
'jumptonavigation' => 'никътохкарг',
'badaccess' => 'Чуваларa гӀалат',
'badaccess-group0' => 'Оаш хьадийха дулархIам шун де йишяц.',
-'badaccess-groups' => 'Дахта кхоачашдар {{PLURAL:$2|тоабачара|тоабашкара}} $1 дакъалаьцархой мара де бокъо яц.',
+'badaccess-groups' => 'Дахта кхоачашдар {{PLURAL:$2|1=тоабачара|тоабашкара}} $1 дакъалаьцархой мара де бокъо яц.',
'versionrequired' => '$1 MediaWiki доржам эша',
'versionrequiredtext' => 'Укх оагӀув бeлха MediaWiki доржамаш эша $1. Хьажа [[Special:Version|version page]].',
'collapsible-expand' => 'хьадоаржаде',
'thisisdeleted' => '$1 бӀаргтасса е юхаметтаоттаде?',
'viewdeleted' => '$1 бӀаргтасса?',
-'restorelink' => '{{PLURAL:$1|дӀаяьккха хувцам|$1 дӀаяьккха хувцамаш}}',
+'restorelink' => '{{PLURAL:$1|1=дӀаяьккха хувцам|$1 дӀаяьккха хувцамаш}}',
'feedlinks' => 'Цу тайпара:',
'site-rss-feed' => '$1 RSS мугӀ',
'site-atom-feed' => '$1 Atom мугӀ',
'yourname' => 'Дакъалаьцархочунна цӀи:',
'yourpassword' => 'КъайладIоагӀа:',
'yourpasswordagain' => 'КъайладIоагӀа юха Ӏоязаде:',
-'remembermypassword' => '(укх $1 {{PLURAL:$1|ден|деношкахь}}) мара са чувалара/чуялара дагалоаца дезаш дац',
+'remembermypassword' => '(укх $1 {{PLURAL:$1|1=ден|деношкахь}}) мара са чувалара/чуялара дагалоаца дезаш дац',
'yourdomainname' => 'Шун цӀеноагӀув:',
'login' => 'Чувала/яла',
'nav-login-createaccount' => 'ЦӀи яьккха/Ший oагӀув ела',
Наггахь санна шоай яздамаш пурам доацаш мала волашву саго хувца е кхы дола моттиге яздердолаш, безам беци, укхаз Ӏочуцаяздеча, дикаьгӀа да.<br />
Оаш дош лу, даь дола хувцама да волга/йолга, е оаш пурам долаш Ӏочуяздеш да кхычера меттигара шоай яздамаш/хоамаш.
'''Яздархой бокъоца лорадеш дола хӀамаш, цара пурам доацаш, Ӏочумаязаде!'''",
-'templatesused' => 'Укх бӀаргоагӀувни оагӀув тӀа лелаяь {{PLURAL:$1|Куцкеп|Куцкепаш}}:',
-'templatesusedpreview' => 'Хьалхе бӀаргтассама оагӀув тӀа леладеш дола {{PLURAL:$1|Куцкеп|Куцкепаш}}:',
+'templatesused' => 'Укх бӀаргоагӀувни оагӀув тӀа лелаяь {{PLURAL:$1|1=Куцкеп|Куцкепаш}}:',
+'templatesusedpreview' => 'Хьалхе бӀаргтассама оагӀув тӀа леладеш дола {{PLURAL:$1|1=Куцкеп|Куцкепаш}}:',
'template-protected' => '(лорам лаьца)',
'template-semiprotected' => '(дакъа-лорам)',
-'hiddencategories' => 'Ер оагӀув укх {{PLURAL:$1|къайла цатегаца|къайла цатегашца}} дакъа лоаца:',
-'permissionserrorstext-withaction' => '$2 де бокъо яц {{PLURAL:$1|из бахьан долаш|из бахьанаш долаш}}:',
+'hiddencategories' => 'Ер оагӀув укх {{PLURAL:$1|1=къайла цатегаца|къайла цатегашца}} дакъа лоаца:',
+'permissionserrorstext-withaction' => '$2 де бокъо яц {{PLURAL:$1|1=из бахьан долаш|из бахьанаш долаш}}:',
'recreate-moveddeleted-warn' => "'''Зем бе! Шо хьалххе дIайоаккхаш хинна оагӀув хьае гӀерта.'''
Хьажа, бокъонцахь езаш йолга.
'lineno' => 'МугI $1:',
'compareselectedversions' => 'Хьаржа доржамаша тарона тIа хьажа',
'editundo' => 'юхавала/яла',
-'diff-multi' => '({{PLURAL:$1|$1 юкъара доржам хьахьекха дац|$1 юкъара доржамаш хьахьекха дац}} {{PLURAL:$2|$2 дакъалаьцархочунна|$2 дакъалаьцархоший}})',
# Search results
'searchresults' => 'Тохкама гIулакхахилар',
'notextmatches' => 'ОагIувнаша яздамий вIашагIакхетараш дац',
'prevn' => '{{PLURAL:$1|хьалхйоаг|ар $1|хьалхйоаг|араш $1|хьалхйоаг|араш $1}}',
'nextn' => '{{PLURAL:$1|тlехьайоагlар $1|тlехьайоагlараш $1|тlехьайоагlараш $1}}',
-'prevn-title' => '{{PLURAL:$1|$1 хьалхара йоазув|$1 хьалхара йоазувнаш}}',
-'nextn-title' => '{{PLURAL:$1|$1 тIехьара йоазув|$1 тIехьара йоазувнаш}}',
-'shown-title' => 'Укх оагIувни $1 {{PLURAL:$1|йоазув|йоазувнаш}} хьахьокха',
+'prevn-title' => '{{PLURAL:$1|1=$1 хьалхара йоазув|$1 хьалхара йоазувнаш}}',
+'nextn-title' => '{{PLURAL:$1|1=$1 тIехьара йоазув|$1 тIехьара йоазувнаш}}',
+'shown-title' => 'Укх оагIувни $1 {{PLURAL:$1|1=йоазув|йоазувнаш}} хьахьокха',
'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3) хьажа',
'searchmenu-exists' => "'''Укх масса-хьахьоадайтамач ер оаг|ув \"[[:\$1]]\" я'''",
'searchmenu-new' => "'''Укх \"[[:\$1]]\" масса-хьахоадайтамач оагIув хьае!'''",
'searchprofile-images-tooltip' => 'Паьлий лахар',
'searchprofile-everything-tooltip' => 'Массадола оагIувний лахар (дувцама оагIувнаш чулоацаш)',
'searchprofile-advanced-tooltip' => 'Iочуязаяь цIераренашках лаха',
-'search-result-size' => ' $1 ({{PLURAL:$2|1 дош|$2 дешаш}})',
-'search-result-category-size' => '{{PLURAL:$1|$1 дакъа|$1 дакъаш}} ({{PLURAL:$2|$2 кIалцатег|$2 кIалцатегаш}}, {{PLURAL:$3|$3 паьла|$3 паьлий|$3 паьлий}})',
+'search-result-size' => ' $1 ({{PLURAL:$2|1=1 дош|$2 дешаш}})',
+'search-result-category-size' => '{{PLURAL:$1|1=$1 дакъа|$1 дакъаш}} ({{PLURAL:$2|1=$2 кIалцатег|$2 кIалцатегаш}}, {{PLURAL:$3|1=$3 паьла|$3 паьлий}})',
'search-redirect' => '($1 дехьачуяьккхар)',
'search-section' => ' (дакъа $1)',
'search-suggest' => 'Iа лохар из хила мега: $1',
'search-relatedarticle' => 'шоайл дола',
'searchrelated' => 'гаргара',
'searchall' => 'деррига',
-'showingresultsheader' => "{{PLURAL:$5|'''$1''' толамче укх '''$3''' долачарах|'''$1 — $2''' толамчаш укх '''$3''' долачарах}} '''$4'''а",
+'showingresultsheader' => "{{PLURAL:$5|1='''$1''' толамче укх '''$3''' долачарах|'''$1 — $2''' толамчаш укх '''$3''' долачарах}} '''$4'''а",
'search-nonefound' => 'ДIахаттама нийсамаш корадаьдац.',
'powersearch-legend' => ' Доккха тахкар',
'powersearch-ns' => ' ЦIерий аренашкахь лахар',
'action-edit' => 'Ер оагIув хувца',
# Recent changes
-'nchanges' => '$1 {{PLURAL:$1|хувцам|хувцамаш}}',
+'nchanges' => '$1 {{PLURAL:$1|1=хувцам|хувцамаш}}',
'recentchanges' => 'Керда хувцамаш',
'recentchanges-legend' => 'Керда хувцамий оттамаш',
'recentchanges-summary' => 'КIалхагIа лоарамий доаламе тIехьара оагIувний хувцамаш дIаязадаь да{{grammar:genitive|{{SITENAME}}}}.',
'filehist-comment' => 'ХIамоалар',
'filehist-missing' => 'Паьла йоацаш я',
'imagelinks' => 'Паьлий пайда эца',
-'linkstoimage' => '{{PLURAL:$1|ТIехьайоагIа $1 оагIув Iинк ду|ТIехьайоагIа $1 оагIувнаш Iинкаш ду}} укх паьла тIа:',
+'linkstoimage' => '{{PLURAL:$1|1=ТIехьайоагIа $1 оагIув Iинк ду|ТIехьайоагIа $1 оагIувнаш Iинкаш ду}} укх паьла тIа:',
'nolinkstoimage' => 'Йола паьла тIа Iинк ю оагIувнаш дац',
'sharedupload' => 'Ер паьла $1чера я, кхыча хьахьоадайтамча хьахайраде йийшайолаш я.',
'sharedupload-desc-here' => 'Ер паьл $1чара я, кхыдола хьахьоадайтамача хайрамбе йийш йолаш да.
'withoutinterwiki-submit' => 'Хьахьокха',
# Miscellaneous special pages
-'nbytes' => '$1 {{PLURAL:$1|бIат|бIаташ}}',
-'nmembers' => '$1 {{PLURAL:$1|дакъалаьцархо|дакъалаьцархой}}',
+'nbytes' => '$1 {{PLURAL:$1|1=бIат|бIаташ}}',
+'nmembers' => '$1 {{PLURAL:$1|1=дакъалаьцархо|дакъалаьцархой}}',
'prefixindex' => 'ОагIувнаший хьалхера цIи хьагойтар',
'shortpages' => 'Лоаца оагIувнаш',
'longpages' => 'Доккхий оагIувнаш',
'newpages' => 'Керда оагIувнаш',
'move' => 'ЦIи хувца',
'movethispage' => 'Укх оагIува цIи хувца',
-'pager-newer-n' => '{{PLURAL:$1|кеÑ\80дагIа даÑ\80а|кеÑ\80дагIа даÑ\80аÑ\88|кеÑ\80дагIа долаÑ\87аÑ\8cÑ\80аÑ\85Ñ\8c}} $1',
-'pager-older-n' => '{{PLURAL:$1|кÑ\8aаÑ\8cнаÑ\80а даÑ\80а|кÑ\8aаÑ\8cнаÑ\80а даÑ\80аÑ\88|кÑ\8aаÑ\8cнаÑ\80а долaÑ\87аÑ\8cÑ\80аÑ\85Ñ\8c}} $1',
+'pager-newer-n' => '{{PLURAL:$1|кеÑ\80дагIа даÑ\80а|кеÑ\80дагIа долаÑ\87аÑ\8cÑ\80аÑ\85Ñ\8c|кеÑ\80дагIа даÑ\80аÑ\88}} $1',
+'pager-older-n' => '{{PLURAL:$1|кÑ\8aаÑ\8cнаÑ\80а даÑ\80а|кÑ\8aаÑ\8cнаÑ\80а долaÑ\87аÑ\8cÑ\80аÑ\85Ñ\8c|кÑ\8aаÑ\8cнаÑ\80а даÑ\80аÑ\88}} $1',
# Book sources
'booksources' => 'Китабий гIувам',
'watch' => 'Тохкам бе',
'watchthispage' => 'Укх оагIува теркам бе',
'unwatch' => 'Лора ма де',
-'watchlist-details' => 'Шун теркама дагарченгахь йола $1 {{PLURAL:$1|оагIув|оагIувнаш}}, дувцама оагIувнаш ца лоархIаш.',
+'watchlist-details' => 'Шун теркама дагарченгахь йола $1 {{PLURAL:$1|1=оагIув|оагIувнаш}}, дувцама оагIувнаш ца лоархIаш.',
'wlshowlast' => 'Тlехьара $1 сахьаташ $2 денош $3 хьахьокха',
'watchlist-options' => 'Зем баккха дагарена хувцамаш',
'protect_expiry_old' => 'Чакхайоала ха - яха зама я.',
'protect-text' => "'''$1''' укхаз шоана шоай оагIув лорамлагIа хувца a бIаргтасса a йийш хургья.",
'protect-locked-access' => "Шун лархIама йоазуви нидза кхоачаш бац оагIувни лорама лагIа хувца. '''$1''' оагIувни дIаоттамаш:",
-'protect-cascadeon' => '{{PLURAL:$1|КIалхахь хьагойташ йола оагIувчу|КIалхахь хьагойташ йола оагIувнашчу}} ер оагIув чуяккха халарахь, лорам Iоттая я, хурхала лорам Iоттая я. Укх оагIувни лорама лагIа хувца йийш йолаш я, амма хурхала лорам хувцлургдац.',
+'protect-cascadeon' => '{{PLURAL:$1|1=КIалхахь хьагойташ йола оагIувчу|КIалхахь хьагойташ йола оагIувнашчу}} ер оагIув чуяккха халарахь, лорам Iоттая я, хурхала лорам Iоттая я. Укх оагIувни лорама лагIа хувца йийш йолаш я, амма хурхала лорам хувцлургдац.',
'protect-default' => 'Лорамза',
'protect-fallback' => '"$1" пурам эша',
'protect-level-autoconfirmed' => 'Керда а, дакъалаьцабоацачаьрахь а лораде',
'isredirect' => 'дIа-хьа оагIув',
'istemplate' => 'чудаккхар',
'isimage' => 'паьла Iинк',
-'whatlinkshere-prev' => '{{PLURAL:$1|хьалхайоагIа|хьалхайоагIараш}} $1',
-'whatlinkshere-next' => '{{PLURAL:$1|тIехьайоагIа|тIехьайоагIараш}} $1',
+'whatlinkshere-prev' => '{{PLURAL:$1|1=хьалхайоагIа|хьалхайоагIараш}} $1',
+'whatlinkshere-next' => '{{PLURAL:$1|1=тIехьайоагIа|тIехьайоагIараш}} $1',
'whatlinkshere-links' => '← Iинкаш',
'whatlinkshere-hideredirs' => '$1 дIа-хьа чуяьккхамаш',
'whatlinkshere-hidetrans' => '$1 чуяьккхамаш',
'tags-tag' => 'Йоазон цIи',
'tags-hitcount-header' => 'Белгалаяь хувцамаш',
'tags-edit' => 'хувца',
-'tags-hitcount' => '$1 {{PLURAL:$1|хувцам|хувцамаш}}',
+'tags-hitcount' => '$1 {{PLURAL:$1|1=хувцам|хувцамаш}}',
# Special:ComparePages
'compare-page1' => '1. ОагIув',
$messages = array(
# User preference toggles
'tog-underline' => 'Sub-strekizez ligili:',
-'tog-justify' => 'Adjustigez paragrafi',
'tog-hideminor' => 'Celez mikra redaktaji de recenta chanji',
'tog-hidepatrolled' => 'Celez patroliita redakti en recenta chanji',
'tog-newpageshidepatrolled' => 'Celez patroliita pagini en la listo di nova pagino',
'tog-numberheadings' => 'Autonumerez tituli',
'tog-showtoolbar' => 'Montrez redaktilo (JavaScript bezonesas)',
'tog-editondblclick' => 'Redaktez pagini kande on klikus dufoye (JavaScript bezonesas)',
-'tog-editsection' => 'Kapabligez redakto di secioni per [redaktar]-ligamini',
'tog-editsectiononrightclick' => 'Kapabligez redakto di secioni kande on dextra-klikus tituli di secioni (JavaScript bezonesas)',
-'tog-showtoc' => 'Montrez indexo (por pagini havanta plu multa kam 3 tituli)',
'tog-rememberpassword' => "Memorez mea pasovorto en ca ''browser'' (maxime $1 {{PLURAL:$1|dio|dii}})",
'tog-watchcreations' => 'Adjuntez pagini kreota da me ad mea surveyaji',
'tog-watchdefault' => 'Adjuntez pagini redaktota da me ad mea surveyaji',
'rows' => 'Linei:',
'columns' => 'Kolumni:',
'searchresultshead' => 'Preferaji di la rezultaji dil sercho',
-'resultsperpage' => 'Trovaji po pagino:',
'recentchangesdays' => 'Dii montrota en la recenta chanji:',
'recentchangesdays-max' => 'Maximo $1 {{PLURAL:$1|dio|dii}}',
'recentchangescount' => 'Quanto de redakti montrota kustume:',
'watchmethod-list' => 'serchante recenta redakti en la listo di surveyaji',
'watchlistcontains' => 'Vua listo di surveyaji kontenas $1 {{PLURAL:$1|pagino|pagini}}.',
'iteminvalidname' => "Problemo en la artiklo '$1', nevalida nomo...",
-'wlnote' => "Infre esas la lasta {{PLURAL:$1|chanjo|'''$1''' chanji}} dum la lasta {{PLURAL:$2|horo|'''$2''' hori}}.",
'wlshowlast' => 'Montrar la lasta $1 hori $2 dii $3',
'watchlist-options' => 'Surveryo-listo selekti',
$messages = array(
# User preference toggles
'tog-underline' => 'Undirstrika tengla:',
-'tog-justify' => 'Jafna málsgreinar',
'tog-hideminor' => 'Fela minniháttar breytingar í nýlegum breytingum',
'tog-hidepatrolled' => 'Fela yfirfarnar breytingar í nýlegum breytingum',
'tog-newpageshidepatrolled' => 'Fela yfirfarnar breytingar í listanum yfir nýjar síður',
'tog-numberheadings' => 'Númera fyrirsagnir sjálfkrafa',
'tog-showtoolbar' => 'Sýna breytingarverkfærastiku',
'tog-editondblclick' => 'Breyta síðum þegar tvísmellt er',
-'tog-editsection' => 'Virkja hlutabreytingu með [breyta] tenglum',
'tog-editsectiononrightclick' => 'Virkja hlutabreytingu með því að hægrismella á hlutafyrirsagnir',
-'tog-showtoc' => 'Sýna efnisyfirlit (fyrir síður með meira en 3 fyrirsagnir)',
'tog-rememberpassword' => 'Muna innskráninguna mína í þessum vafra (í allt að $1 {{PLURAL:$1|dag|daga}})',
'tog-watchcreations' => 'Bæta síðum sem ég bý til og skrám sem ég hleð inn á vaktlistann minn',
'tog-watchdefault' => 'Bæta síðum og skrám sem ég breyti á vaktlistann minn',
'hidden-category-category' => 'Faldir flokkar',
'category-subcat-count' => '{{PLURAL:$2|Þessi flokkur hefur einungis eftirfarandi undirflokk.|Þessi flokkur hefur eftirfarandi {{PLURAL:$1|undirflokk|$1 undirflokka}}, af alls $2.}}',
'category-subcat-count-limited' => 'Þessi flokkur hefur eftirfarandi {{PLURAL:$1|undirflokk|$1 undirflokka}}.',
-'category-article-count' => '{{PLURAL:$2|Þessi flokkur inniheldur aðeins eftirfarandi síðu.|Eftirfarandi {{PLURAL:$1|síða er|síður eru}} í þessum flokki, af alls $1.}}',
+'category-article-count' => 'Þessi flokkur inniheldur {{PLURAL:$1|$1 síðu|$1 síður}}, af alls {{PLURAL:$2|$2}}.',
'category-article-count-limited' => 'Eftirfarandi {{PLURAL:$1|síða er|$1 síður eru}} í þessum flokki.',
-'category-file-count' => '{{PLURAL:$2|Þessi flokkur inniheldur einungis eftirfarandi skrá.|Eftirfarandi {{PLURAL:$1|skrá er|$1 skrár eru}} í þessum flokki, af alls $2.}}',
+'category-file-count' => 'Þessi flokkur inniheldur {{PLURAL:$1|$1 skrá|$1 skrár}}, af alls {{PLURAL:$2|$2}}.',
'category-file-count-limited' => 'Eftirfarandi {{PLURAL:$1|skrá er|$1 skrár eru}} í þessum flokki.',
'listingcontinuesabbrev' => 'frh.',
'index-category' => 'Raðaðar skrár',
'noindex-category' => 'Óraðaðar skrár',
-'broken-file-category' => 'Síður með brotna myndatengla',
+'broken-file-category' => 'Síður með brotna skráartengla',
'about' => 'Um',
'article' => 'Efnissíða',
'delete' => 'Eyða',
'deletethispage' => 'Eyða þessari síðu',
'undeletethispage' => 'Endurvekja þessa síðu',
-'undelete_short' => 'Endurvekja {{PLURAL:$1|eina breytingu|$1 breytingar}}',
+'undelete_short' => 'Endurvekja {{PLURAL:$1|$1 breytingu|$1 breytingar}}',
'viewdeleted_short' => 'Skoða {{PLURAL:$1|eina eydda breytingu|$1 eyddar breytingar}}',
'protect' => 'Vernda',
'protect_change' => 'breyta',
'youhavenewmessages' => 'Þú hefur fengið $1 ($2).',
'youhavenewmessagesfromusers' => 'Þú hefur $1 frá {{PLURAL:$3|öðrum notanda|$3 notendum}} ($2)',
'youhavenewmessagesmanyusers' => 'Þú hefur $1 frá mörgum notendum ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|ein|}} ný skilaboð',
+'newmessageslinkplural' => '{{PLURAL:$1|ný}} skilaboð',
'newmessagesdifflinkplural' => '{{PLURAL:$1|síðasta breyting|síðustu breytingar}} spjallsíðunnar',
'youhavenewmessagesmulti' => 'Þín bíða ný skilaboð á $1',
'editsection' => 'breyta',
'collapsible-expand' => 'Sýna',
'thisisdeleted' => 'Endurvekja eða skoða $1?',
'viewdeleted' => 'Skoða $1?',
-'restorelink' => '{{PLURAL:$1|eina eydda breytingu|$1 eyddar breytingar}}',
+'restorelink' => '$1 {{PLURAL:$1|eydd breyting|eyddar breytingar}}',
'feedlinks' => 'Streymi:',
'feed-invalid' => 'Röng tegund áskriftarstreymis.',
'feed-unavailable' => 'Samræmisstreymi eru ekki fáanlegt',
Engin skýring gefin.',
'badtitle' => 'Slæmur titill',
'badtitletext' => 'Umbeðin síðutitill er ógildur.',
-'perfcached' => 'Eftirfarandi er afrit af umbeðinni síðu og gæti því ekki verið nýjasta útgáfa hennar. Allt að {{PLURAL:$1|ein niðurstaða er aðgengileg|$1 niðurstöður eru aðgengilegar}} í skyndiminninu.',
-'perfcachedts' => 'Eftirfarandi gögn eru í skyndiminninu, og voru síðast uppfærð $1. Allt að {{PLURAL:$4|ein niðurstaða er aðgengileg|$4 niðurstöður eru aðgengilegar}} í skyndiminninu.',
+'perfcached' => 'Eftirfarandi er afrit af umbeðinni síðu og gæti því ekki verið nýjasta útgáfa hennar. Allt að $1 {{PLURAL:$1|niðurstaða er aðgengileg|niðurstöður eru aðgengilegar}} í skyndiminninu.',
+'perfcachedts' => 'Eftirfarandi gögn eru í skyndiminninu, og voru síðast uppfærð $1. Allt að $4 {{PLURAL:$4|niðurstaða er aðgengileg|niðurstöður eru aðgengilegar}} í skyndiminninu.',
'querypage-no-updates' => 'Lokað er fyrir uppfærslur af þessari síðu. Gögn sett hér munu ekki vistast.',
'viewsource' => 'Skoða efni',
'viewsource-title' => 'Skoða efni $1',
'login-userblocked' => 'Þessi notandi hefur verið settur í bann. Innskráning ekki leyfð.',
'wrongpassword' => 'Uppgefið lykilorð er rangt. Vinsamlegast reyndu aftur.',
'wrongpasswordempty' => 'Lykilorðsreiturinn var auður. Vinsamlegast reyndu aftur.',
-'passwordtooshort' => 'Lykilorð skal vera að minnsta kosti {{plural: $1 |einn stafur|$1 stafir}}.',
+'passwordtooshort' => 'Lykilorð skal vera að minnsta kosti $1 {{PLURAL:$1|stafur|stafir}}.',
'password-name-match' => 'Þarf að lykilorð þitt sé öðruvísi notandanafni þínu',
'password-login-forbidden' => 'Notkun þessa notendanafns og lykilorðs er ekki leyfileg.',
'mailmypassword' => 'Endurstilla lykilorð',
'passwordremindertext' => 'Einhver (líklegast þú, á vistfanginu $1) hefur beðið um að fá nýtt
lykilorð fyrir {{SITENAME}} ($4). Tímabundið lykilorð fyrir notandann „$2“
hefur verið búið til og er núna „$3“. Ef þetta er það sem þú vildir, þarfu að skrá
-þig inn og velja nýtt lykilorð. Þetta tímabundna lykilorð rennur út eftir {{PLURAL:$5|einn dag|$5 daga}}.
+þig inn og velja nýtt lykilorð. Þetta tímabundna lykilorð rennur út eftir $5 {{PLURAL:$5|dag|daga}}.
Ef það var ekki þú sem fórst fram á þetta, eða ef þú mannst lykilorðið þitt,
-og vilt ekki lengur breyta því, skaltu hunsa þetta skilaboð og
+og vilt ekki lengur breyta því, skaltu hunsa þessi skilaboð og
halda áfram að nota gamla lykilorðið.',
'noemail' => 'Það er ekkert netfang skráð fyrir notandan "$1".',
'noemailcreate' => 'Þú verður að skrá gilt netfang',
'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.
+'acct_creation_throttle_hit' => 'Því miður, hafa verið búnir til {{PLURAL:$1|$1 nýr aðgangur|$1 nýjir 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.',
'emailauthenticated' => 'Netfang þitt var staðfest þann $2 klukkan $3.',
'emailnotauthenticated' => 'Tölvupóstfang þitt hefur ekki enn verið staðfest. Enginn póstur verður sendur af neinum af eftirfarandi eiginleikum.',
$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 þetta er það sem þú vildir, þarftu að skrá þig inn og velja nýtt lykilorð. {{PLURAL:$3|Tímabundna lykilorðið rennur|Tímabundnu lykilorðin renna}} út eftir $5 {{PLURAL:$5|dag|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 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 þetta er það sem þú vildir, þarftu að skrá þig inn og velja nýtt lykilorð. {{PLURAL:$3|Tímabundna lykilorðið rennur|Tímabundnu lykilorðin renna}} út eftir $5 {{PLURAL:$5|dag|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-emailelement' => 'Notendanafn: $1
Ef þú vilt ekki að textanum verði breytt skaltu ekki senda hann inn hér.<br />
Þú lofar okkur einnig að þú hafir skrifað þetta sjálfur, að efnið sé í almannaeigu eða að það heyri undir frjálst leyfi. (sjá $1).
'''EKKI SENDA INN HÖFUNDARRÉTTARVARIÐ EFNI ÁN LEYFIS RÉTTHAFA!'''",
-'longpageerror' => "'''VILLA: Textinn sem þú sendir inn er {{PLURAL:$1|eitt kílóbæti|$1 kílóbæti}} að lengd, en hámarkið er {{PLURAL:$2|eitt kílóbæti|$2 kílóbæti}}. Ekki er hægt að vista textann.'''",
+'longpageerror' => "'''VILLA: Textinn sem þú sendir inn er $1 {{PLURAL:$1|kílóbæti}} að lengd, en hámarkið er $2 {{PLURAL:$2|kílóbæti}}. Ekki er hægt að vista textann.'''",
'readonlywarning' => "'''AÐVÖRUN: Gagnagrunninum hefur verið læst til að unnt sé að framkvæma viðhaldsaðgerðir, svo þú getur ekki vistað breytingar þínar núna.'''
Þú ættir að klippa og líma textann yfir í textaskjal til þess að geyma hann til seinni tíma.
# Parser/template warnings
'expensive-parserfunction-warning' => "'''Viðvörun:''' Þessi síða inniheldur of mörg vinnslufrek aðgerðar þáttunar köll.
-Hún ætti að innihalda minna en $2 {{PLURAL:$2|kall|köll}}, en {{PLURAL:$1|er nú eitt kall|eru nú $1 köll}}.",
+Hún ætti að innihalda minna en $2 {{PLURAL:$2|kall|köll}}, en {{PLURAL:$1|er nú $1 kall|eru nú $1 köll}}.",
'expensive-parserfunction-category' => 'Síður með of mörg vinnslufrek aðgerðar þáttunar köll',
'post-expand-template-inclusion-warning' => "'''Viðvörun:''' Sniðið tekur of mikið pláss.
Hluti sniðsins verður ekki með.",
'showhideselectedversions' => 'Sýna/fela valdar breytingar',
'editundo' => 'Taka aftur þessa breytingu',
'diff-empty' => '(Enginn munur)',
-'diff-multi' => '({{PLURAL:$1|Ein millibreyting ekki sýnd|$1 millibreytingar ekki sýndar}} frá {{PLURAL:$2|notanda|$2 notendum}}.)',
-'diff-multi-manyusers' => '({{PLURAL:$1|Ein millibreyting ekki sýnd|$1 millibreytingar ekki sýndar}} frá fleiri en {{PLURAL:$2|einum notanda|$2 notendum}}.)',
-'difference-missing-revision' => '{{PLURAL:$2|Ein útgáfa|$2 útgáfur}} samanburðarins ($1) {{PLURAL:$2|fannst|fundust}} ekki.
+'diff-multi-manyusers' => '($1 {{PLURAL:$1|millibreyting ekki sýnd|millibreytingar ekki sýndar}} frá fleiri en $2 {{PLURAL:$2|notanda|notendum}}.)',
+'difference-missing-revision' => '$2 {{PLURAL:$2|útgáfa|útgáfur}} samanburðarins ($1) {{PLURAL:$2|fannst|fundust}} ekki.
Þetta gerist oftast þegar úreldur samanburðartengill tengir á síðu sem hefur verið eytt.
Frekari upplýsingar eru í [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} eyðingarskránni].',
'searcheverything-enable' => 'Leita í öllum nafnrýmum',
'searchrelated' => 'tengt',
'searchall' => 'öllum',
-'showingresults' => "Sýni {{PLURAL:$1|'''1''' niðurstöðu|'''$1''' niðurstöður}} frá og með #'''$2'''.",
+'showingresults' => 'Sýni <strong>$1</strong> {{PLURAL:$1|niðurstöðu|niðurstöður}} frá og með #<strong>$2</strong>.',
'showingresultsnum' => "Sýni {{PLURAL:$3|'''$3''' niðurstöðu|'''$3''' niðurstöður}} frá og með #<b>$2</b>.",
'showingresultsheader' => "{{PLURAL:$5|Niðurstaða '''$1''' af '''$3'''|Niðurstöður'''$1 - $2''' af '''$3'''}} fyrir '''$4'''",
'search-nonefound' => 'Engar niðurstöður pössuðu við fyrirspurnina.',
'rows' => 'Raðir',
'columns' => 'Dálkar',
'searchresultshead' => 'Leit',
-'resultsperpage' => 'Niðurstöður á síðu',
'stub-threshold' => 'Þröskuldur fyrir <a href="#" class="stub">stubbatengla</a> (bæt):',
'stub-threshold-disabled' => 'Óvirkt',
'recentchangesdays' => 'Fjöldi daga sem nýlegar breytingar ná yfir:',
'backend-fail-closetemp' => 'Mistókst að loka tímabundinni skrá.',
'backend-fail-read' => 'Mistókst að lesa skrá $1.',
'backend-fail-create' => 'Mistókst að skrifa skrá $1.',
-'backend-fail-maxsize' => 'Mistókst að skrifa skránna $1 því hún er stærri en {{PLURAL:$2|eitt bæti|$2 bæti}}.',
+'backend-fail-maxsize' => 'Mistókst að skrifa skránna „$1” því hún er stærri en $2 {{PLURAL:$2|bæti}}.',
'backend-fail-readonly' => 'Gagnabankann "$1" er engöngu hægt að lesa í augnablikinu. Ástæðan sem var gefin er: "\'\'$2\'\'"',
'backend-fail-synced' => 'Skráin $1 er í ósamkvæmu ástandi innan innri geymslubakenda',
'backend-fail-connect' => 'Mistókst að tengjast gagnabankanum "$1".',
'watchmethod-list' => 'leita að breytingum í vöktuðum síðum',
'watchlistcontains' => 'Vaktlistinn þinn inniheldur {{PLURAL:$1|$1 síðu|$1 síður}}.',
'iteminvalidname' => 'Vandamál með „$1“, rangt nafn...',
-'wlnote' => "Hér fyrir neðan {{PLURAL:$1|er síðasta breyting|eru síðustu '''$1''' breytingar}} {{PLURAL:$2|síðastliðinn klukkutímann|síðastliðna '''$2''' klukkutímana}}, frá $3, $4.",
'wlshowlast' => 'Sýna síðustu $1 klukkutíma, $2 daga, $3',
'watchlist-options' => 'Vaktlistastillingar',
'undeletecomment' => 'Ástæða:',
'undeletedrevisions' => '$1 {{PLURAL:$1|breyting endurvakin|breytingar endurvaktar}}',
'undeletedrevisions-files' => '$1 {{PLURAL:$1|breyting|breytingar}} og $2 {{PLURAL:$2|skrá|skrár}} endurvaktar',
-'undeletedfiles' => '{{PLURAL:$1|Ein skrá endurvakin|$1 skrár endurvaktar}}',
+'undeletedfiles' => '$1 {{PLURAL:$1|skrá endurvakin|skrár endurvaktar}}',
'cannotundelete' => 'Ekki var hægt að afturkalla eyðingu.
$1',
'undeletedpage' => "'''$1 var endurvakin'''
'movepage-max-pages' => 'Hámarkinu, $1 {{PLURAL:$1|síða|síður}}, hefur verið náð og verða engar fleiri færðar sjálfvirkt.',
'movelogpage' => 'Flutningaskrá',
'movelogpagetext' => 'Þetta er listi yfir síður sem nýlega hafa verið færðar.',
-'movesubpage' => '{{Plural:$1|Undirsíða|Undirsíður}}',
+'movesubpage' => '{{PLURAL:$1|Undirsíða|Undirsíður}}',
'movesubpagetext' => 'Þessi síða hefur {{PLURAL:$1|eina undirsíðu|$1 undirsíður}} sem {{PLURAL:$1|er sýnd|eru sýndar}} hér fyrir neðan.',
'movenosubpage' => 'Þessi síða hefur engar undirsíður.',
'movereason' => 'Ástæða:',
'tooltip-pt-watchlist' => 'Listi yfir síður sem þú fylgist með breytingum á',
'tooltip-pt-mycontris' => 'Listi yfir framlög þín',
'tooltip-pt-login' => 'Þú ert hvattur/hvött til að innskrá þig, það er hinsvegar ekki skylda.',
-'tooltip-pt-anonlogin' => 'Þú ert hvattur/hvött til að innskrá þig, það er hinsvegar ekki nauðsynlegt.',
'tooltip-pt-logout' => 'Útskráning',
'tooltip-ca-talk' => 'Spallsíða þessarar síðu',
'tooltip-ca-edit' => 'Þú getur breytt síðu þessari, vinsamlegast notaðu „forskoða“ hnappinn áður en þú vistar',
'notacceptable' => 'Wiki vefþjónninn getur ekki útvegað gögn á því formi sem biðlarinn þinn getur lesið.',
# Attribution
-'anonymous' => '{{PLURAL:$1|Óþekktur notandi|Óþekktir notendur}} á {{SITENAME}}',
+'anonymous' => '$1 {{PLURAL:$1|óþekktur notandi|óþekktir notendur}} á {{SITENAME}}',
'siteuser' => '{{SITENAME}} notandi $1',
'anonuser' => '{{SITENAME}} nafnlaus notandi $1',
'lastmodifiedatby' => 'Þessari síðu var síðast breytt $1 klukkan $2 af $3.',
# Special:NewFiles
'newimages' => 'Myndasafn nýlegra skráa',
-'imagelisttext' => 'Hér fyrir neðan er {{PLURAL:$1|einni skrá|$1 skrám}} raðað $2.',
+'imagelisttext' => 'Hér fyrir neðan er $1 {{PLURAL:$1|skrá|skrám}} raðað $2.',
'newimages-summary' => 'Þessi kerfissíða sýnir nýlega innhlaðnar skrár.',
'newimages-legend' => 'Sía',
'newimages-label' => 'Skráarnafn (eða hluti þess):',
'lag-warn-high' => 'Vegna mikils álags á vefþjónanna, kunna breytingar yngri en $1 {{PLURAL:$1|sekúnda|sekúndur}} ekki að vera á þessum lista.',
# Watchlist editor
-'watchlistedit-numitems' => 'Á vaktlista þínum {{PLURAL:$1|er 1 síða|eru $1 síður}}, að undanskildum spjallsíðum.',
+'watchlistedit-numitems' => 'Á vaktlista þínum {{PLURAL:$1|er $1 síða|eru $1 síður}}, að undanskildum spjallsíðum.',
'watchlistedit-noitems' => 'Vaktlistinn þinn inniheldur enga titla.',
'watchlistedit-normal-title' => 'Breyta vaktlistanum',
'watchlistedit-normal-legend' => 'Fjarlægja titla af vaktlistanum',
'watchlistedit-normal-explain' => 'Titlarnir á vaktlistanum þínum er sýndir fyrir neðan.
Til að fjarlægja titil hakaðu í kassann við hliðina á honum og smelltu á „{{int:Watchlistedit-normal-submit}}“. Þú getur einnig [[Special:EditWatchlist/raw|breytt honum opnum]].',
'watchlistedit-normal-submit' => 'Fjarlægja titla',
-'watchlistedit-normal-done' => '{{PLURAL:$1|Ein síða var fjarlægð|$1 síður voru fjarlægðar}} af vaktlistanum þínum:',
+'watchlistedit-normal-done' => '$1 {{PLURAL:$1|síða var fjarlægð|síður voru fjarlægðar}} af vaktlistanum þínum:',
'watchlistedit-raw-title' => 'Breyta opnum vaktlistanum',
'watchlistedit-raw-legend' => 'Breyta opnum vaktlistanum',
'watchlistedit-raw-explain' => 'Titlarnir á vaktlistanum þínum eru sýndir hér fyrir neðan og þeim er hægt að breyta með því að bæta við og taka út af honum;
'watchlistedit-raw-titles' => 'Titlar:',
'watchlistedit-raw-submit' => 'Uppfæra vaktlistann',
'watchlistedit-raw-done' => 'Vaktlistinn þinn hefur verið uppfærður.',
-'watchlistedit-raw-added' => '{{PLURAL:$1|Einum titli|$1 titlum}} var bætt við:',
-'watchlistedit-raw-removed' => '{{PLURAL:$1|1 titill var fjarlægður|$1 titlar voru fjarlægðir}}:',
+'watchlistedit-raw-added' => '$1 {{PLURAL:$1|titli|titlum}} var bætt við:',
+'watchlistedit-raw-removed' => '$1 {{PLURAL:$1|titill var fjarlægður|titlar voru fjarlægðir}}:',
# Watchlist editing tools
'watchlisttools-view' => 'Sýna viðeigandi breytingar',
* @author Raoli
* @author Remember the dot
* @author Rippitippi
+ * @author Rosh
* @author S.Örvarr.S
* @author SabineCretella
* @author Sannita
$messages = array(
# User preference toggles
'tog-underline' => 'Sottolinea i collegamenti:',
-'tog-justify' => 'Allineamento giustificato dei paragrafi',
'tog-hideminor' => 'Nascondi le modifiche minori nelle ultime modifiche',
'tog-hidepatrolled' => 'Nascondi le modifiche verificate nelle ultime modifiche',
'tog-newpageshidepatrolled' => "Nascondi le pagine verificate dall'elenco delle pagine più recenti",
'tog-numberheadings' => 'Numerazione automatica dei titoli di sezione',
'tog-showtoolbar' => 'Mostra la barra degli strumenti di modifica',
'tog-editondblclick' => 'Modifica delle pagine tramite doppio clic',
-'tog-editsection' => 'Modifica delle sezioni tramite il collegamento [modifica]',
'tog-editsectiononrightclick' => 'Modifica delle sezioni tramite clic destro sul titolo',
-'tog-showtoc' => "Mostra l'indice (per le pagine con più di 3 sezioni)",
'tog-rememberpassword' => 'Ricorda la password su questo browser (per un massimo di $1 {{PLURAL:$1|giorno|giorni}})',
'tog-watchcreations' => 'Aggiungi le pagine create e i file caricati agli osservati speciali',
'tog-watchdefault' => 'Aggiungi le pagine e i file modificati agli osservati speciali',
'retypenew' => 'Riscrivi la nuova password:',
'resetpass_submit' => 'Imposta la password e accedi al sito',
'changepassword-success' => 'La password è stata modificata correttamente!',
+'changepassword-throttled' => 'Sono stati effettuati troppi tentativi di accesso in breve tempo.
+Attendi $1 e riprova in seguito.',
'resetpass_forbidden' => 'Non è possibile modificare le password',
'resetpass-no-info' => "Devi aver effettuato l'accesso per accedere a questa pagina direttamente.",
'resetpass-submit-loggedin' => 'Cambia password',
'changeemail-password' => 'La password su {{SITENAME}}:',
'changeemail-submit' => 'Modifica e-mail',
'changeemail-cancel' => 'Annulla',
+'changeemail-throttled' => 'Sono stati effettuati troppi tentativi di accesso.
+Attendi $1 e riprova in seguito.',
# Special:ResetTokens
'resettokens' => 'Reimposta token',
'preview' => 'Anteprima',
'showpreview' => 'Visualizza anteprima',
'showlivepreview' => "Funzione ''Live preview''",
-'showdiff' => 'Mostra cambiamenti',
+'showdiff' => 'Mostra modifiche',
'anoneditwarning' => "'''Attenzione:''' Accesso non effettuato. Nella cronologia della pagina verrà registrato il tuo indirizzo IP.",
'anonpreviewwarning' => "''Non è stato eseguito il login. Salvando la pagina, il proprio indirizzo IP sarà registrato nella cronologia.''",
'missingsummary' => "'''Attenzione:''' non è stato specificato l'oggetto di questa modifica. Premendo di nuovo \"{{int:savearticle}}\" la modifica verrà salvata con l'oggetto vuoto.",
'invalid-content-data' => 'Dati contenuti non validi',
'content-not-allowed-here' => 'Contenuto in "$1" non consentito nella pagine [[$2]]',
'editwarning-warning' => 'Lasciare questa pagina potrebbe causare la perdita di tutte le modifiche fatte.
-Se hai effettuato l\'accesso, puoi disattivare questo avviso nella sezione "Casella di modifica" delle tue preferenze.',
+Se hai effettuato l\'accesso, puoi disattivare questo avviso nella sezione "{{int:prefs-editing}}" delle tue preferenze.',
+'editpage-notsupportedcontentformat-title' => 'Formato contenuto non supportato',
+'editpage-notsupportedcontentformat-text' => 'Il formato del contenuto $1 non è supportato dal modello di contenuto $2.',
# Content models
'content-model-wikitext' => 'wikitesto',
'showhideselectedversions' => 'Mostra/nascondi versioni selezionate',
'editundo' => 'annulla',
'diff-empty' => '(Nessuna differenza)',
-'diff-multi' => '({{PLURAL:$1|Una revisione intermedia|$1 revisioni intermedie}} di {{PLURAL:$2|un utente|$2 utenti}} non {{PLURAL:$1|mostrata|mostrate}})',
-'diff-multi-manyusers' => '({{PLURAL:$1|Una revisione intermedia|$1 revisioni intermedie}} di oltre $2 {{PLURAL:$2|utente|utenti}} non {{PLURAL:$1|mostrata|mostrate}})',
+'diff-multi-sameuser' => '({{PLURAL:$1|Una versione intermedia|$1 versioni intermedie}} di uno stesso utente non sono mostrate )',
+'diff-multi-otherusers' => '({{PLURAL:$1|Una versione intermedia|$1 versioni intermedie}} di {{PLURAL:$2|un altro utente|$2 utenti}} non mostrate)',
+'diff-multi-manyusers' => '({{PLURAL:$1|Una versione intermedia|$1 versioni intermedie}} di oltre $2 {{PLURAL:$2|utente|utenti}} non {{PLURAL:$1|mostrata|mostrate}})',
'difference-missing-revision' => '{{PLURAL:$2|Una versione|$2 versioni}} di questa differenza ($1) {{PLURAL:$2|non è stata trovata|non sono state trovate}}.
Questo si verifica solitamente seguendo un collegamento obsoleto di un diff a una pagina cancellata.
'shown-title' => 'Mostra {{PLURAL:$1|un risultato|$1 risultati}} per pagina',
'viewprevnext' => 'Vedi ($1 {{int:pipe-separator}} $2) ($3).',
'searchmenu-exists' => "'''Sul sito esiste una pagina il cui nome è \"[[:\$1]]\"'''",
-'searchmenu-new' => 'Crea la pagina "[[:$1]]" su questo sito',
+'searchmenu-new' => '<strong>Crea la pagina "[[:$1]]" su questo wiki!</strong> {{PLURAL:$2|0=|Vedi anche la pagina trovata con la tua ricerca|Vedi anche i risultati della ricerca}}',
'searchprofile-articles' => 'Pagine di contenuti',
'searchprofile-project' => 'Pagine di aiuto e relative al progetto',
'searchprofile-images' => 'Multimedia',
'search-result-score' => 'Rilevanza: $1%',
'search-redirect' => '(redirect $1)',
'search-section' => '(sezione $1)',
+'search-file-match' => '(corrispondenza nel contenuto del file)',
'search-suggest' => 'Forse cercavi: $1',
'search-interwiki-caption' => 'Progetti fratelli',
'search-interwiki-default' => 'Risultati da $1:',
'rows' => 'Righe:',
'columns' => 'Colonne:',
'searchresultshead' => 'Ricerca',
-'resultsperpage' => 'Numero di risultati per pagina:',
'stub-threshold' => 'Valore minimo per i <a href="#" class="stub">collegamenti agli stub</a>, in byte:',
'stub-threshold-disabled' => 'Disattivato',
'recentchangesdays' => 'Numero di giorni da mostrare nelle ultime modifiche:',
'fileexists-shared-forbidden' => "Un file con questo nome esiste già nell'archivio di risorse multimediali condivise. Se si desidera ancora caricare il file, tornare indietro e modificare il nome con il quale caricare il file. [[File:$1|thumb|center|$1]]",
'file-exists-duplicate' => 'Questo file è un duplicato {{PLURAL:$1|del seguente|dei seguenti}} file:',
'file-deleted-duplicate' => 'Un file identico a questo ([[:$1]]) è stato cancellato in passato. Verificare la cronologia delle cancellazioni prima di caricarlo di nuovo.',
+'file-deleted-duplicate-notitle' => 'Un file identico a questo è stato cancellato in passato, ed il titolo è stato soppresso. Chiedi a qualcuno che ha la possibilità di vedere i file soppressi di esaminare la situazione prima di procedere nuovamente al caricamento.',
'uploadwarning' => 'Avviso di caricamento',
'uploadwarning-text' => 'Per favore modifica qui sotto la descrizione del file e prova di nuovo.',
'savefile' => 'Salva file',
'protectedpages' => 'Pagine protette',
'protectedpages-indef' => 'Solo protezioni infinite',
'protectedpages-cascade' => 'Solo protezioni ricorsive',
+'protectedpages-noredirect' => 'Nascondi redirect',
'protectedpagesempty' => 'Al momento non vi sono pagine protette',
'protectedtitles' => 'Titoli protetti',
'protectedtitlesempty' => 'Al momento non esistono titoli protetti con i parametri specificati.',
'watchmethod-list' => 'controllo degli osservati speciali per modifiche recenti',
'watchlistcontains' => 'La lista degli osservati speciali contiene {{PLURAL:$1|una pagina|$1 pagine}}.',
'iteminvalidname' => "Problemi con la pagina '$1', nome non valido...",
-'wlnote' => "Di seguito {{PLURAL:$1|è elencata la modifica più recente apportata|sono elencate le '''$1''' modifiche più recenti apportate}} {{PLURAL:$2|nella scorsa ora|nelle scorse '''$2''' ore}}; i dati sono aggiornati alle $4 del $3.",
+'wlnote2' => "Di seguito le modifiche {{PLURAL:$1|nell'ultima ora|nelle ultime <strong>$1</strong> ore}}, da $2, $3.",
'wlshowlast' => 'Mostra le ultime $1 ore $2 giorni $3',
'watchlist-options' => 'Opzioni osservati speciali',
'delete-edit-reasonlist' => 'Modifica i motivi di cancellazione',
'delete-toobig' => 'La cronologia di questa pagina è molto lunga (oltre $1 {{PLURAL:$1|revisione|revisioni}}). La sua cancellazione è stata limitata per evitare di creare accidentalmente dei problemi di funzionamento al database di {{SITENAME}}.',
'delete-warning-toobig' => 'La cronologia di questa pagina è molto lunga (oltre $1 {{PLURAL:$1|revisione|revisioni}}). La sua cancellazione può creare dei problemi di funzionamento al database di {{SITENAME}}; procedere con cautela.',
+'deleting-backlinks-warning' => "'''Attenzione:''' altre pagine contengono collegamenti o inclusioni alla pagina che stai per cancellare.",
# Rollback
'rollback' => 'Annulla le modifiche',
'ipb-confirmhideuser' => 'Si sta per bloccare un utente con l\'opzione "Nascondi utente" abilitata.
In questo modo si evita che il nome utente compaia in tutte le liste e le voci di registro.
Sei sicuro di voler continuare?',
+'ipb-confirmaction' => 'Se sei sicuro di volerlo fare davvero, controlla il campo "{{int:ipb-confirm}}" in basso.',
'ipb-edit-dropdown' => 'Modifica i motivi per il blocco',
'ipb-unblock-addr' => 'Sblocca $1',
'ipb-unblock' => 'Sblocca un utente o un indirizzo IP',
'range_block_disabled' => 'La possibilità di bloccare intervalli di indirizzi IP non è attiva al momento.',
'ipb_expiry_invalid' => 'Durata o scadenza del blocco non valida.',
'ipb_expiry_temp' => 'I blocchi dei nomi utenti nascosti dovrebbero essere infiniti',
-'ipb_hide_invalid' => "Impossibile cancellare l'account; potrebbe avere troppe modifiche.",
+'ipb_hide_invalid' => 'Impossibile sopprimere questa utenza; ha più di {{PLURAL:$1|una modifica|$1 modifiche}}.',
'ipb_already_blocked' => 'L\'utente "$1" è già bloccato',
'ipb-needreblock' => "L'utente $1 è già bloccato. Modificare le impostazioni?",
'ipb-otherblocks-header' => '{{PLURAL:$1|Altro blocco|Altri blocchi}}',
'allmessages-prefix' => 'Filtra per prefisso:',
'allmessages-language' => 'Lingua:',
'allmessages-filter-submit' => 'Vai',
+'allmessages-filter-translate' => 'Traduci',
# Thumbnails
'thumbnail-more' => 'Ingrandisci',
'importuploaderrortemp' => "Caricamento del file per l'importazione non riuscito. Manca una cartella temporanea.",
'import-parse-failure' => "Errore di analisi nell'importazione XML",
'import-noarticle' => 'Nessuna pagina da importare.',
-'import-nonewrevisions' => 'Tutte le revisioni sono già state importate in precedenza.',
+'import-nonewrevisions' => 'Nessuna versione importata (erano già tutte presenti, o saltate a causa di errori)',
'xml-error-string' => '$1 a riga $2, colonna $3 (byte $4): $5',
'import-upload' => 'Carica dati XML',
'import-token-mismatch' => 'I dati relativi alla sessione sono andati persi. Riprovare.',
'import-error-special' => 'La pagina "$1" non viene importata perché appartiene a un namespace speciale che non permette pagine.',
'import-error-invalid' => 'La pagina "$1" non viene importata perché il suo nome non è valido.',
'import-error-unserialize' => 'La versione $2 della pagina "$1" non può essere de-serializzata. La versione è stata segnalata per utilizzare il modello di contenuto $3 serializzato come $4.',
+'import-error-bad-location' => 'La versione $2 usa un modello di contenuto $3 che non può essere memorizzato in "$1" di questo wiki, poiché la pagina non supporta questo modello.',
'import-options-wrong' => '{{PLURAL:$2|Opzione sbagliata|Opzioni sbagliate}}: <nowiki>$1</nowiki>',
'import-rootpage-invalid' => 'La pagina principale fornita non è un titolo valido.',
'import-rootpage-nosubpage' => 'Il namespace "$1" della pagina principale non permette di avere sottopagine.',
'tooltip-pt-watchlist' => 'La lista delle pagine che stai tenendo sotto osservazione',
'tooltip-pt-mycontris' => 'Elenco dei tuoi contributi',
'tooltip-pt-login' => 'La registrazione è consigliata, anche se non obbligatoria',
-'tooltip-pt-anonlogin' => 'La registrazione è consigliata, anche se non obbligatoria',
'tooltip-pt-logout' => 'Uscita (logout)',
'tooltip-ca-talk' => 'Vedi le discussioni relative a questa pagina',
'tooltip-ca-edit' => 'Puoi modificare questa pagina. Per favore usa il pulsante di anteprima prima di salvare',
'print.css' => "/* Gli stili CSS inseriti qui si applicano all'output in stampa */",
'noscript.css' => '/ * Gli stili CSS inseriti qui si applicano agli utenti che hanno JavaScript disabilitato * /',
'group-autoconfirmed.css' => '/ * Gli stili CSS inseriti qui si applicheranno solo ad utenti autoconvalidati * /',
+'group-user.css' => '/ * Gli stili CSS inseriti qui si applicheranno solo ad utenti registrati * /',
'group-bot.css' => '/ * Gli stili CSS inseriti qui si applicheranno solo ai bot * /',
'group-sysop.css' => '/ * Gli stili CSS inseriti qui si applicheranno solo agli amministratori/sysop * /',
'group-bureaucrat.css' => '/ * Gli stili CSS inseriti qui si applicheranno solo ai burocrati * /',
'modern.js' => '/* Il codice JavaScript inserito qui viene caricato dagli utenti che usano la skin Modern */',
'vector.js' => '/* Il codice JavaScript inserito qui viene caricato dagli utenti che usano la skin Vector */',
'group-autoconfirmed.js' => '/ * Il codice JavaScript inserito qui viene caricato solo per gli utenti autoconvalidati * /',
+'group-user.js' => '/ * Il codice JavaScript inserito qui viene caricato solo per gli utenti registrati * /',
'group-bot.js' => '/ * Il codice JavaScript inserito qui viene caricato solo per i bot * /',
'group-sysop.js' => '/ * Il codice JavaScript inserito qui viene caricato solo per gli amministratori/sysop * /',
'group-bureaucrat.js' => '/ * Il codice JavaScript inserito qui viene caricato solo per i burocrati * /',
'version-parser-function-hooks' => 'Hook per funzioni del parser',
'version-hook-name' => "Nome dell'hook",
'version-hook-subscribedby' => 'Sottoscrizioni',
-'version-version' => '(Versione $1)',
-'version-license' => 'Licenza',
+'version-version' => '($1)',
+'version-license' => 'Licenza MediaWiki',
+'version-ext-license' => 'Licenza',
+'version-ext-colheader-name' => 'Estensione',
+'version-ext-colheader-version' => 'Versione',
+'version-ext-colheader-license' => 'Licenza',
+'version-ext-colheader-description' => 'Descrizione',
+'version-ext-colheader-credits' => 'Autori',
+'version-license-title' => 'Licenza per $1',
+'version-license-not-found' => 'Per questa estensione non è stata trovata alcuna informazione dettagliata sulla licenza.',
+'version-credits-title' => 'Crediti per $1',
+'version-credits-not-found' => 'Per questa estensione non è stata trovata alcuna informazione dettagliata sui crediti.',
'version-poweredby-credits' => "Questo wiki è realizzato con '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
'version-poweredby-others' => 'altri',
'version-poweredby-translators' => 'traduttori di translatewiki.net',
'api-error-overwrite' => 'Sovrascrivere un file esistente non è consentito.',
'api-error-stashfailed' => 'Errore interno: il server non è riuscito a memorizzare il documento temporaneo.',
'api-error-publishfailed' => 'Errore interno: il server non è riuscito a pubblicare il documento temporaneo.',
+'api-error-stasherror' => 'Si è verificato un errore durante il caricamento del file in stash.',
'api-error-timeout' => 'Il server non ha risposto entro il tempo previsto.',
'api-error-unclassified' => 'Si è verificato un errore sconosciuto.',
'api-error-unknown-code' => 'Errore sconosciuto: "$1"',
'expand_templates_generate_rawhtml' => 'Mostra HTML',
'expand_templates_preview' => 'Anteprima',
+# Unknown messages
+'uploadinvalidxml' => 'Il codice XML nel file caricato non può essere elaborato.',
);
$messages = array(
# User preference toggles
'tog-underline' => 'リンクの下線:',
-'tog-justify' => '段落に均等割り付けを設定',
'tog-hideminor' => '最近の更新に細部の編集を表示しない',
'tog-hidepatrolled' => '最近の更新に巡回済みの編集を表示しない',
'tog-newpageshidepatrolled' => '新しいページの一覧に巡回済みのページを表示しない',
'tog-numberheadings' => '見出しに番号を自動的に振る',
'tog-showtoolbar' => '編集用のツールバーを表示',
'tog-editondblclick' => 'ダブルクリックでページを編集',
-'tog-editsection' => '[編集]リンクから節を編集できるようにする',
'tog-editsectiononrightclick' => '節見出しの右クリックで節を編集できるようにする',
-'tog-showtoc' => '目次を表示 (ページに見出しが4つ以上ある場合)',
'tog-rememberpassword' => 'このブラウザーにログイン情報を保存 (最長 $1 {{PLURAL:$1|日|日間}})',
'tog-watchcreations' => '自分が作成したページやアップロードしたファイルをウォッチリストに追加',
'tog-watchdefault' => '自分が編集したページやファイルをウォッチリストに追加',
'category_header' => 'カテゴリ「$1」にあるページ',
'subcategories' => '下位カテゴリ',
'category-media-header' => 'カテゴリ「$1」にあるメディア',
-'category-empty' => "''このカテゴリには現在、ページやメディアが何もありません。''",
+'category-empty' => '<em>このカテゴリには現在、ページやメディアが何もありません。</em>',
'hidden-categories' => '{{PLURAL:$1|隠しカテゴリ}}',
'hidden-category-category' => '隠しカテゴリ',
'category-subcat-count' => '{{PLURAL:$2|このカテゴリには以下の下位カテゴリのみが含まれています。|このカテゴリには $2 下位カテゴリが含まれており、そのうち以下の {{PLURAL:$1|$1 下位カテゴリ}}を表示しています。}}',
'databaseerror-query' => 'クエリ: $1',
'databaseerror-function' => '関数: $1',
'databaseerror-error' => 'エラー: $1',
-'laggedslavemode' => "'''警告:''' ページに最新の編集が反映されていない可能性があります。",
+'laggedslavemode' => '<strong>警告:</strong> ページに最新の編集が反映されていない可能性があります。',
'readonly' => 'データベースがロックされています',
'enterlockreason' => 'ロックの理由とロック解除の予定を入力してください',
'readonlytext' => 'データベースは現在、新しいページの追加や編集を受け付けない「ロック状態」になっています。これはおそらくデータベースの定期メンテナンスのためで、メンテナンス終了後は正常な状態に復帰します。
少し時間をおいてからもう一度操作してください。',
'protectedpagetext' => 'このページは編集や他の操作ができないように保護されています。',
'viewsourcetext' => 'このページのソースの閲覧やコピーができます:',
-'viewyourtext' => "このページへの'''あなたの編集'''のソースの閲覧やコピーができます:",
+'viewyourtext' => 'このページへの<strong>あなたの編集</strong>のソースの閲覧やコピーができます:',
'protectedinterface' => 'このページにはこのウィキのソフトウェアのインターフェイスに使用されるテキストが保存されており、いたずらなどの防止のために保護されています。
すべてのウィキに対して翻訳を追加/変更する場合は、MediaWiki の地域化プロジェクト [//translatewiki.net/ translatewiki.net] を使用してください。',
-'editinginterface' => "'''警告:''' ソフトウェアのインターフェイスに使用されるテキストのページを編集しています。
+'editinginterface' => '<strong>警告:</strong> ソフトウェアのインターフェイスに使用されるテキストのページを編集しています。
このページを変更すると、このウィキの他の利用者のユーザーインターフェイスの外観に影響します。
-すべてのウィキに対して翻訳を追加/変更する場合は、MediaWiki の地域化プロジェクト [//translatewiki.net/wiki/Main_Page?setlang=ja translatewiki.net] を使用してください。",
+すべてのウィキに対して翻訳を追加/変更する場合は、MediaWiki の地域化プロジェクト [//translatewiki.net/wiki/Main_Page?setlang=ja translatewiki.net] を使用してください。',
'cascadeprotected' => 'このページは、「カスケード保護」が指定された状態で保護されている以下の{{PLURAL:$1|ページ|ページ群}}で読み込まれているため、編集できないように保護されています:
$2',
-'namespaceprotected' => "'''$1'''名前空間にあるページを編集する権限がありません。",
+'namespaceprotected' => '<strong>$1</strong>名前空間にあるページを編集する権限がありません。',
'customcssprotected' => 'この CSS ページは他の利用者の個人設定を含んでいるため、あなたには編集する権限がありません。',
'customjsprotected' => 'この JavaScript ページは他の利用者の個人設定を含んでいるため、あなたには編集する権限がありません。',
'mycustomcssprotected' => 'あなたには CSS ページを編集する権限がありません。',
'myprivateinfoprotected' => 'あなたには自身の非公開情報を編集する権限がありません。',
'mypreferencesprotected' => 'あなたには自身の個人設定を編集する権限がありません。',
'ns-specialprotected' => '特別ページは編集できません。',
-'titleprotected' => "[[User:$1|$1]]によりこのページ名を持つページの作成は保護されています。
-理由は「''$2''」です。",
+'titleprotected' => '[[User:$1|$1]]によりこのページ名を持つページの作成は保護されています。
+理由は「<em>$2</em>」です。',
'filereadonlyerror' => 'ファイルリポジトリ「$2」が読み取り専用の状態にあるため、ファイル「$1」を変更できません。
読み取り専用に設定した管理者からの説明:「$3」',
'exception-nologin-text-manual' => 'このページまたは操作にアクセスできるようにするには$1してください。',
# Virus scanner
-'virus-badscanner' => "環境設定が不適合です: 不明なウイルス対策ソフトウェア: ''$1''",
+'virus-badscanner' => '環境設定が不適合です: 不明なウイルス対策ソフトウェア: <em>$1</em>',
'virus-scanfailed' => 'スキャンに失敗しました (コード $1)',
'virus-unknownscanner' => '不明なウイルス対策ソフトウェア:',
# Login and logout pages
-'logouttext' => "'''ログアウトしました。'''
+'logouttext' => '<strong>ログアウトしました。</strong>
-ページによっては、ブラウザーのキャッシュをクリアするまで、ログインしているかのように表示され続ける場合があるためご注意ください。",
+ページによっては、ブラウザーのキャッシュをクリアするまで、ログインしているかのように表示され続ける場合があるためご注意ください。',
'welcomeuser' => 'ようこそ、$1さん!',
'welcomecreation-msg' => 'アカウントが作成されました。
お好みで[[Special:Preferences|{{SITENAME}}の個人設定]]を変更できます。',
'nocookiesforlogin' => '{{int:nocookieslogin}}',
'noname' => '利用者名を正しく指定していません。',
'loginsuccesstitle' => 'ログイン成功',
-'loginsuccess' => "'''{{SITENAME}}に「$1」としてログインしました。'''",
+'loginsuccess' => '<strong>{{SITENAME}}に「$1」としてログインしました。</strong>',
'nosuchuser' => '「$1」という名前の利用者は見当たりません。
利用者名では大文字と小文字を区別します。
綴りが正しいことを確認するか、[[Special:UserLogin/signup|新たにアカウントを作成]]してください。',
'retypenew' => '新しいパスワードを再入力:',
'resetpass_submit' => '再設定してログイン',
'changepassword-success' => 'パスワードを変更しました!',
+'changepassword-throttled' => '最近のログインの試行回数が多すぎます。
+$1待ってから再度試してください。',
'resetpass_forbidden' => 'パスワードは変更できません',
'resetpass-no-info' => 'このページに直接アクセスするためにはログインしている必要があります。',
'resetpass-submit-loggedin' => 'パスワードを変更',
'changeemail-password' => '{{SITENAME}}のパスワード:',
'changeemail-submit' => 'メールアドレスを変更',
'changeemail-cancel' => '中止',
+'changeemail-throttled' => 'ログインの試行回数が多すぎます。
+$1待ってから再度試してください。',
# Special:ResetTokens
'resettokens' => 'トークンの再設定',
'showpreview' => 'プレビューを表示',
'showlivepreview' => 'ライブプレビュー',
'showdiff' => '差分を表示',
-'anoneditwarning' => "'''警告:''' ログインしていません。
-編集すると、IPアドレスがこのページの編集履歴に記録されます。",
-'anonpreviewwarning' => "''ログインしていません。投稿を保存すると、ご使用中のIPアドレスがこのページの履歴に記録されます。''",
-'missingsummary' => "'''注意:''' 編集内容の要約が空欄です。
-「{{int:savearticle}}」をもう一度クリックすると、編集内容は要約なしで保存されます。",
+'anoneditwarning' => '<strong>警告:</strong> ログインしていません。
+編集すると、IPアドレスがこのページの編集履歴に記録されます。',
+'anonpreviewwarning' => '<em>ログインしていません。投稿を保存すると、ご使用中のIPアドレスがこのページの履歴に記録されます。</em>',
+'missingsummary' => '<strong>注意:</strong> 編集内容の要約が空欄です。
+「{{int:savearticle}}」をもう一度クリックすると、編集内容は要約なしで保存されます。',
'missingcommenttext' => '以下にコメントを入力してください。',
-'missingcommentheader' => "'''注意:''' このコメントに対する題名/見出しが空欄です。
-「{{int:savearticle}}」ボタンをもう一度押すと、空のまま編集が保存されます。",
+'missingcommentheader' => '<strong>注意:</strong> このコメントに対する題名/見出しが空欄です。
+「{{int:savearticle}}」ボタンをもう一度押すと、空のまま編集が保存されます。',
'summary-preview' => '要約のプレビュー:',
'subject-preview' => '題名/見出しのプレビュー:',
'blockedtitle' => '利用者はブロックされています',
-'blockedtext' => "'''この利用者名またはIPアドレスはブロックされています。'''
+'blockedtext' => '<strong>この利用者名またはIPアドレスはブロックされています。</strong>
ブロックは$1によって実施されました。
-ブロックの理由は ''$2'' です。
+ブロックの理由は <em>$2</em> です。
* ブロック開始日時: $8
* ブロック解除予定: $6
このブロックについて、$1もしくは他の[[{{MediaWiki:Grouppage-sysop}}|管理者]]に問い合わせることができます。
ただし、[[Special:Preferences|個人設定]]で有効なメールアドレスが登録されていない場合、またはメール送信機能の使用がブロックされている場合、「この利用者にメールを送信」の機能は使えません。
現在ご使用中のIPアドレスは$3、このブロックIDは#$5です。
-お問い合わせの際には、上記の情報を必ず書いてください。",
-'autoblockedtext' => "このIPアドレスは、$1によりブロックされた利用者によって使用されたため、自動的にブロックされています。
+お問い合わせの際には、上記の情報を必ず書いてください。',
+'autoblockedtext' => 'このIPアドレスは、$1によりブロックされた利用者によって使用されたため、自動的にブロックされています。
理由は次の通りです。
-:''$2''
+:<em>$2</em>
* ブロック開始日時: $8
* ブロック解除予定: $6
$1または他の[[{{MediaWiki:Grouppage-sysop}}|管理者]]にこのブロックについて問い合わせることができます。
-ã\81\9fã\81 ã\81\97ã\80\81[[Special:Preferences|å\80\8b人è¨å®\9a]]ã\81«æ£ã\81\97ã\81\84ã\83¡ã\83¼ã\83«ã\82¢ã\83\89ã\83¬ã\82¹ã\81\8cç\99»é\8c²ã\81\95ã\82\8cã\81¦ã\81\84ã\81ªã\81\84å ´å\90\88ã\80\81ã\81¾ã\81\9fã\81¯ã\83¡ã\83¼ã\83«é\80\81ä¿¡ã\81\8cã\83\96ã\83ã\83\83ã\82¯ã\81\95ã\82\8cã\81¦ã\81\84ã\82\8bå ´å\90\88ã\80\81ã\83¡ã\83¼ã\83«é\80\81ä¿¡æ©\9fè\83½ã\81\8c使ã\81\88ないことに注意してください。
+ã\81\9fã\81 ã\81\97ã\80\81[[Special:Preferences|å\80\8b人è¨å®\9a]]ã\81«æ£ã\81\97ã\81\84ã\83¡ã\83¼ã\83«ã\82¢ã\83\89ã\83¬ã\82¹ã\81\8cç\99»é\8c²ã\81\95ã\82\8cã\81¦ã\81\84ã\81ªã\81\84å ´å\90\88ã\80\81ã\81¾ã\81\9fã\81¯ã\83¡ã\83¼ã\83«é\80\81ä¿¡ã\81\8cã\83\96ã\83ã\83\83ã\82¯ã\81\95ã\82\8cã\81¦ã\81\84ã\82\8bå ´å\90\88ã\80\81ã\80\8cã\81\93ã\81®å\88©ç\94¨è\80\85ã\81«ã\83¡ã\83¼ã\83«ã\82\92é\80\81ä¿¡ã\80\8dæ©\9fè\83½ã\82\92使ç\94¨ã\81§ã\81\8dないことに注意してください。
現在ご使用中のIPアドレスは$3 、このブロックIDは#$5です。
-お問い合わせの際は、上記の情報を必ず書いてください。",
+お問い合わせの際は、上記の情報を必ず書いてください。',
'blockednoreason' => '理由が設定されていません',
'whitelistedittext' => 'このページを編集するには$1してください。',
'confirmedittext' => 'ページの編集を始める前にメールアドレスの確認をする必要があります。
'loginreqlink' => 'ログイン',
'loginreqpagetext' => '他のページを閲覧するには$1してください。',
'accmailtitle' => 'パスワードをお送りしました',
-'accmailtext' => "[[User talk:$1|$1]]のために無作為に生成したパスワードを、$2に送信しました。パスワードは、ログインした際に''[[Special:ChangePassword|パスワード変更]]''ページで変更できます。",
+'accmailtext' => '[[User talk:$1|$1]]のために無作為に生成したパスワードを、$2に送信しました。パスワードは、ログインした際に<em>[[Special:ChangePassword|パスワード変更]]</em>ページで変更できます。',
'newarticle' => '(新)',
-'newarticletext' => "まだ存在しないページへのリンクをたどりました。
+'newarticletext' => 'まだ存在しないページへのリンクをたどりました。
このページを新規作成するには、ページの内容を以下のボックスに記入してください (詳しくは[[{{MediaWiki:Helppage}}|ヘルプページ]]を参照してください)。
-誤ってこのページにたどり着いた場合には、ブラウザーの'''戻る'''ボタンで前のページに戻ってください。",
-'anontalkpagetext' => "----
-''このページはアカウントをまだ作成していないか使用していない匿名利用者のための議論ページです。''
+誤ってこのページにたどり着いた場合には、ブラウザーの<strong>戻る</strong>ボタンで前のページに戻ってください。',
+'anontalkpagetext' => '----
+<em>このページはアカウントをまだ作成していないか使用していない匿名利用者のための議論ページです。</em>
-匿名利用者を識別するために、利用者名の代わりにIPアドレスが使用されています。IP アドレスは複数の利用者で共有されている場合があります。もし、あなたが匿名利用者であり、自分に関係のないコメントが寄せられていると考えられる場合は、[[Special:UserLogin/signup|アカウントを作成する]]か[[Special:UserLogin|ログインして]]他の匿名利用者と間違えられないようにしてください。",
+匿名利用者を識別するために、利用者名の代わりにIPアドレスが使用されています。IP アドレスは複数の利用者で共有されている場合があります。もし、あなたが匿名利用者であり、自分に関係のないコメントが寄せられていると考えられる場合は、[[Special:UserLogin/signup|アカウントを作成する]]か[[Special:UserLogin|ログインして]]他の匿名利用者と間違えられないようにしてください。',
'noarticletext' => '現在このページには内容がありません。
他のページ内で[[Special:Search/{{PAGENAME}}|このページ名を検索]]、
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} 関連する記録を検索]、
'userpage-userdoesnotexist-view' => '利用者アカウント「$1」は登録されていません。',
'blocked-notice-logextract' => 'この利用者は現在ブロックされています。
参考のために最新のブロック記録項目を以下に表示します:',
-'clearyourcache' => "'''注意:''' 保存後、変更を確認するにはブラウザーのキャッシュを消去する必要がある場合があります。
-* '''Firefox / Safari:''' ''Shift'' を押しながら ''再読み込み'' をクリックするか、''Ctrl-F5'' または ''Ctrl-R'' を押してください (Mac では ''⌘-R'')
-* '''Google Chrome:''' ''Ctrl-Shift-R'' を押してください (Mac では ''⌘-Shift-R'')
-* '''Internet Explorer:''' ''Ctrl'' を押しながら ''最新の情報に更新'' をクリックするか、''Ctrl-F5'' を押してください
-* '''Opera:''' ''ツール → 設定'' からキャッシュをクリアしてください。",
-'usercssyoucanpreview' => "'''ヒント:'''「{{int:showpreview}}」ボタンを使うと、保存前に新しいCSSを試験できます。",
-'userjsyoucanpreview' => "'''ヒント:'''「{{int:showpreview}}」ボタンを使うと、保存前に新しいJavaScriptを試験できます。",
-'usercsspreview' => "'''利用者CSSをプレビューしているだけに過ぎません。'''
-'''まだ保存されていません!'''",
-'userjspreview' => "'''利用者JavaScriptを試験/プレビューしているだけに過ぎません。'''
-'''まだ保存されていません!'''",
-'sitecsspreview' => "'''ここでは、CSSをプレビューしているだけに過ぎません。'''
-'''まだ保存されていません!'''",
-'sitejspreview' => "'''ここでは、JavaScriptをプレビューしているだけに過ぎません。'''
-'''まだ保存されていません!'''",
-'userinvalidcssjstitle' => "'''警告:'''「$1」という外装はありません。
-カスタム .css/.js ページではページ名を小文字にしてください。例: {{ns:user}}:Hoge/Vector.css ではなく {{ns:user}}:Hoge/vector.css",
+'clearyourcache' => '<strong>注意:</strong> 保存後、変更を確認するにはブラウザーのキャッシュを消去する必要がある場合があります。
+* <strong>Firefox / Safari:</strong> <em>Shift</em> を押しながら <em>再読み込み</em> をクリックするか、<em>Ctrl-F5</em> または <em>Ctrl-R</em> を押してください (Mac では <em>⌘-R</em>)
+* <strong>Google Chrome:</strong> <em>Ctrl-Shift-R</em> を押してください (Mac では <em>⌘-Shift-R</em>)
+* <strong>Internet Explorer:</strong> <em>Ctrl</em> を押しながら <em>最新の情報に更新</em> をクリックするか、<em>Ctrl-F5</em> を押してください
+* <strong>Opera:</strong> <em>ツール → 設定</em> からキャッシュをクリアしてください。',
+'usercssyoucanpreview' => '<strong>ヒント:</strong>「{{int:showpreview}}」ボタンを使うと、保存前に新しいCSSを試験できます。',
+'userjsyoucanpreview' => '<strong>ヒント:</strong>「{{int:showpreview}}」ボタンを使うと、保存前に新しいJavaScriptを試験できます。',
+'usercsspreview' => '<strong>利用者CSSをプレビューしているだけに過ぎません。</strong>
+<strong>まだ保存されていません!</strong>',
+'userjspreview' => '<strong>利用者JavaScriptを試験/プレビューしているだけに過ぎません。</strong>
+<strong>まだ保存されていません!</strong>',
+'sitecsspreview' => '<strong>ここでは、CSSをプレビューしているだけに過ぎません。</strong>
+<strong>まだ保存されていません!</strong>',
+'sitejspreview' => '<strong>ここでは、JavaScriptをプレビューしているだけに過ぎません。</strong>
+<strong>まだ保存されていません!</strong>',
+'userinvalidcssjstitle' => '<strong>警告:</strong>「$1」という外装はありません。
+カスタム .css/.js ページではページ名を小文字にしてください。例: {{ns:user}}:Hoge/Vector.css ではなく {{ns:user}}:Hoge/vector.css',
'updated' => '(更新)',
-'note' => "'''お知らせ:'''",
-'previewnote' => "'''これはプレビューです。'''
-変更内容はまだ保存されていません!",
+'note' => '<strong>お知らせ:</strong>',
+'previewnote' => '<strong>これはプレビューです。</strong>
+変更内容はまだ保存されていません!',
'continue-editing' => '編集を続行',
'previewconflict' => 'これは、上の編集エリアの文章を保存した場合にどう表示されるかを示すプレビューです。',
-'session_fail_preview' => "'''申し訳ありません! セッションデータが消失したため編集を処理できませんでした。'''
+'session_fail_preview' => '<strong>申し訳ありません! セッションデータが消失したため編集を処理できませんでした。</strong>
もう一度やり直してください。
-それでも失敗する場合、[[Special:UserLogout|ログアウト]]してからログインし直してください。",
-'session_fail_preview_html' => "'''申し訳ありません! セッション データが消失したため編集を処理できませんでした。'''
+それでも失敗する場合、[[Special:UserLogout|ログアウト]]してからログインし直してください。',
+'session_fail_preview_html' => '<strong>申し訳ありません! セッション データが消失したため編集を処理できませんでした。</strong>
-''{{SITENAME}}では生のHTMLが有効であり、JavaScriptでの攻撃を予防するためにプレビューを表示していません。''
+<em>{{SITENAME}}では生のHTMLが有効であり、JavaScriptでの攻撃を予防するためにプレビューを表示していません。</em>
-'''この編集が問題ない場合はもう一度保存してください。'''
-それでもうまくいかない場合は一度[[Special:UserLogout|ログアウト]]して、ログインし直してみてください。",
-'token_suffix_mismatch' => "'''ご使用中のクライアントが編集トークン内の句読点を正しく処理していないため、編集を受け付けられません。'''
+<strong>この編集が問題ない場合はもう一度保存してください。</strong>
+それでもうまくいかない場合は一度[[Special:UserLogout|ログアウト]]して、ログインし直してみてください。',
+'token_suffix_mismatch' => '<strong>ご使用中のクライアントが編集トークン内の句読点を正しく処理していないため、編集を受け付けられません。</strong>
ページ本文の破損を防ぐため、編集は反映されません。
-問題のある匿名プロキシ サービスを使用していると、これが発生する場合があります。",
-'edit_form_incomplete' => "'''編集フォームの一部がサーバーに届きませんでした。ご確認の上、そのまま再度投稿してください。'''",
+問題のある匿名プロキシ サービスを使用していると、これが発生する場合があります。',
+'edit_form_incomplete' => '<strong>編集フォームの一部がサーバーに届きませんでした。ご確認の上、そのまま再度投稿してください。</strong>',
'editing' => '「$1」を編集中',
'creating' => '「$1」を作成中',
'editingsection' => '「$1」を編集中 (節単位)',
'editingcomment' => '「$1」を編集中 (新しい節)',
'editconflict' => '編集競合: $1',
-'explainconflict' => "このページを編集し始めた後に、他の誰かがこのページを変更しました。
+'explainconflict' => 'このページを編集し始めた後に、他の誰かがこのページを変更しました。
上側のテキスト領域は現在の最新の状態です。
編集していた文章は下側のテキスト領域に示されています。
編集していた文章を、上側のテキスト領域の、既存の文章に組み込んでください。
-上側のテキスト領域の内容'''だけ'''が、「{{int:savearticle}}」をクリックした時に実際に保存されます。",
+上側のテキスト領域の内容<strong>だけ</strong>が、「{{int:savearticle}}」をクリックした時に実際に保存されます。',
'yourtext' => '編集中の文章',
'storedversion' => '保存された版',
-'nonunicodebrowser' => "'''警告: ご使用中のブラウザーは Unicode に未対応です。'''
-安全にページを編集する回避策を表示しています: 編集ボックス内の非 ASCII 文字を 16 進数コードで表現しています。",
-'editingold' => "'''警告: このページの古い版を編集しています。'''
-保存すると、この版以降になされた変更がすべて失われます。",
+'nonunicodebrowser' => '<strong>警告: ご使用中のブラウザーは Unicode に未対応です。</strong>
+安全にページを編集する回避策を表示しています: 編集ボックス内の非 ASCII 文字を 16 進数コードで表現しています。',
+'editingold' => '<strong>警告: このページの古い版を編集しています。</strong>
+保存すると、この版以降になされた変更がすべて失われます。',
'yourdiff' => '差分',
-'copyrightwarning' => "{{SITENAME}}への投稿は、すべて$2 (詳細は$1を参照) のもとで公開したと見なされることにご注意ください。
+'copyrightwarning' => '{{SITENAME}}への投稿は、すべて$2 (詳細は$1を参照) のもとで公開したと見なされることにご注意ください。
あなたが投稿したものを、他人がよって遠慮なく編集し、それを自由に配布するのを望まない場合は、ここには投稿しないでください。<br />
また、投稿するのは、あなたが書いたものか、パブリック ドメインまたはそれに類するフリーな資料からの複製であることを約束してください。
-'''著作権保護されている作品を、許諾なしに投稿しないでください!'''",
-'copyrightwarning2' => "{{SITENAME}}へのすべての投稿は、他の利用者によって編集、変更、除去される場合があります。
+<strong>著作権保護されている作品を、許諾なしに投稿しないでください!</strong>',
+'copyrightwarning2' => '{{SITENAME}}へのすべての投稿は、他の利用者によって編集、変更、除去される場合があります。
あなたの投稿を、他人が遠慮なく編集するのを望まない場合は、ここには投稿しないでください。<br />
また、投稿するのは、あなたが書いたものか、パブリック ドメインまたはそれに類するフリーな資料からの複製であることを約束してください (詳細は$1を参照)。
-'''著作権保護されている作品を、許諾なしに投稿してはいけません!'''",
-'longpageerror' => "'''エラー: 投稿された文章は {{PLURAL:$1|$1 KB}} の長さがあります。これは投稿できる最大の長さ {{PLURAL:$2|$2 KB}} を超えています。'''
-この編集内容は保存できません。",
-'readonlywarning' => "'''警告: データベースがメンテナンスのためロックされており、現在は編集内容を保存できません。'''
+<strong>著作権保護されている作品を、許諾なしに投稿してはいけません!</strong>',
+'longpageerror' => '<strong>エラー: 投稿された文章は {{PLURAL:$1|$1 KB}} の長さがあります。これは投稿できる最大の長さ {{PLURAL:$2|$2 KB}} を超えています。</strong>
+この編集内容は保存できません。',
+'readonlywarning' => '<strong>警告: データベースがメンテナンスのためロックされており、現在は編集内容を保存できません。</strong>
必要であれば文章をコピー&ペーストしてテキストファイルとして保存し、後ほど保存をやり直してください。
-データベースをロックした管理者による説明は以下の通りです: $1",
-'protectedpagewarning' => "'''警告: このページは保護されているため、管理者権限を持つ利用者のみが編集できます。'''
-参考として以下に最後の記録を表示します:",
-'semiprotectedpagewarning' => "'''注意:''' このページは保護されているため、登録利用者のみが編集できます。
-参考として以下に最後の記録を表示します:",
-'cascadeprotectedwarning' => "'''警告:''' このページはカスケード保護されている以下の{{PLURAL:$1|ページ|ページ群}}から読み込まれているため、管理者権限を持つ利用者のみが編集できるように保護されています:",
-'titleprotectedwarning' => "'''警告: このページは保護されているため、作成には[[Special:ListGroupRights|特定の権限]]が必要です。'''
-参考として以下に最後の記録を表示します:",
+データベースをロックした管理者による説明は以下の通りです: $1',
+'protectedpagewarning' => '<strong>警告: このページは保護されているため、管理者権限を持つ利用者のみが編集できます。</strong>
+参考として以下に最後の記録を表示します:',
+'semiprotectedpagewarning' => '<strong>注意:</strong> このページは保護されているため、登録利用者のみが編集できます。
+参考として以下に最後の記録を表示します:',
+'cascadeprotectedwarning' => '<strong>警告:</strong> このページはカスケード保護されている以下の{{PLURAL:$1|ページ|ページ群}}から読み込まれているため、管理者権限を持つ利用者のみが編集できるように保護されています:',
+'titleprotectedwarning' => '<strong>警告: このページは保護されているため、作成には[[Special:ListGroupRights|特定の権限]]が必要です。</strong>
+参考として以下に最後の記録を表示します:',
'templatesused' => 'このページで使用されている{{PLURAL:$1|テンプレート}}:',
'templatesusedpreview' => 'このプレビューで使用されている{{PLURAL:$1|テンプレート}}:',
'templatesusedsection' => 'この節で使用されている{{PLURAL:$1|テンプレート}}:',
'permissionserrors' => '権限エラー',
'permissionserrorstext' => 'あなたにはこの操作を行う権限はありません。{{PLURAL:$1|理由}}は以下の通りです:',
'permissionserrorstext-withaction' => 'あなたには「$2」を行う権限はありません。{{PLURAL:$1|理由}}は以下の通りです:',
-'recreate-moveddeleted-warn' => "'''警告: 以前削除されたページを再作成しようとしています。'''
+'recreate-moveddeleted-warn' => '<strong>警告: 以前削除されたページを再作成しようとしています。</strong>
このページの編集を続行するのが適切かどうかご確認ください。
-参考までに、このページの削除と移動の記録を以下に示します:",
+参考までに、このページの削除と移動の記録を以下に示します:',
'moveddeleted-notice' => 'このページは削除されています。
参考のため、このページの削除と移動の記録を以下に表示します。',
'log-fulllog' => '完全な記録を閲覧',
'invalid-content-data' => '本文データが無効です',
'content-not-allowed-here' => 'ページ [[$2]] では、「$1」コンテンツは許可されていません',
'editwarning-warning' => 'このページを離れると、あなたが行なった変更がすべて失われてしまうかもしれません。
-ログインしている場合、個人設定の「編集」タブでこの警告を表示しないようにすることができます。',
+ログインしている場合、個人設定の「{{int:prefs-editing}}」タブでこの警告を表示しないようにすることができます。',
+'editpage-notsupportedcontentformat-title' => '対応していないコンテンツ形式',
+'editpage-notsupportedcontentformat-text' => 'コンテンツ モデル $2 は、コンテンツ形式 $1 に対応していません。',
# Content models
'content-model-wikitext' => 'ウィキテキスト',
'content-model-css' => 'CSS',
# Parser/template warnings
-'expensive-parserfunction-warning' => "'''警告:''' このページでは、高負荷なパーサー関数の呼び出し回数が多過ぎます。
+'expensive-parserfunction-warning' => '<strong>警告:</strong> このページでは、高負荷なパーサー関数の呼び出し回数が多過ぎます。
-{{PLURAL:$2|呼び出しを $2 回}}未満にしてください ({{PLURAL:$1|現在は $1 回}})。",
+{{PLURAL:$2|呼び出しを $2 回}}未満にしてください ({{PLURAL:$1|現在は $1 回}})。',
'expensive-parserfunction-category' => '高負荷な構文解析関数の呼び出しが多過ぎるページ',
-'post-expand-template-inclusion-warning' => "'''警告:''' テンプレートの読み込みサイズが大き過ぎます。
-いくつかのテンプレートは読み込まれません。",
+'post-expand-template-inclusion-warning' => '<strong>警告:</strong> テンプレートの読み込みサイズが大き過ぎます。
+いくつかのテンプレートは読み込まれません。',
'post-expand-template-inclusion-category' => 'テンプレート読み込みサイズが制限値を越えているページ',
-'post-expand-template-argument-warning' => "'''警告:''' このページは、展開後のサイズが大きすぎるテンプレート引数を少なくとも 1 つ含んでいます。
-これらの引数を省略しました。",
+'post-expand-template-argument-warning' => '<strong>警告:</strong> このページは、展開後のサイズが大きすぎるテンプレート引数を少なくとも 1 つ含んでいます。
+これらの引数を省略しました。',
'post-expand-template-argument-category' => '省略されたテンプレート引数を含むページ',
'parser-template-loop-warning' => 'テンプレートのループを検出しました: [[$1]]',
'parser-template-recursion-depth-warning' => 'テンプレートの再帰の深さ ($1) が上限を超えました',
# Account creation failure
'cantcreateaccounttitle' => 'アカウントを作成できません',
-'cantcreateaccount-text' => "この IP アドレス ('''$1''') からのアカウント作成は、[[User:$3|$3]] によってブロックされています。
+'cantcreateaccount-text' => 'この IP アドレス (<strong>$1</strong>) からのアカウント作成は、[[User:$3|$3]] によってブロックされています。
-$3 が示した理由: ''$2''",
+$3 が示した理由: <em>$2</em>',
'cantcreateaccount-range-text' => "この IP アドレス ('''$4''') を含む、IP アドレス範囲 '''$1''' からのアカウント作成は、[[User:$3|$3]] によってブロックされています。
$3 が示した理由: ''$2''",
'last' => '前',
'page_first' => '先頭',
'page_last' => '末尾',
-'histlegend' => "差分の選択: 比較したい版のラジオボタンを選択し、Enterキーを押すか、下部のボタンを押します。<br />
-凡例: '''({{int:cur}})'''=最新版との比較、'''({{int:last}})'''=直前の版との比較、'''{{int:minoreditletter}}'''=細部の編集",
+'histlegend' => '差分の選択: 比較したい版のラジオボタンを選択し、Enterキーを押すか、下部のボタンを押します。<br />
+凡例: <strong>({{int:cur}})</strong>=最新版との比較、<strong>({{int:last}})</strong>=直前の版との比較、<strong>{{int:minoreditletter}}</strong>=細部の編集',
'history-fieldset-title' => '履歴の閲覧',
'history-show-deleted' => '削除済みのみ',
'histfirst' => '最古',
'rev-deleted-user' => '(利用者名は除去されています)',
'rev-deleted-event' => '(記録は除去されています)',
'rev-deleted-user-contribs' => '[利用者名またはIPアドレスは除去されました - その編集は投稿記録で非表示にされています]',
-'rev-deleted-text-permission' => "この版は'''削除されています'''。
-[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 削除記録]に詳細情報があるかもしれません。",
-'rev-deleted-text-unhide' => "この版は'''削除されています'''。
+'rev-deleted-text-permission' => 'この版は<strong>削除されています</strong>。
+[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 削除記録]に詳細情報があるかもしれません。',
+'rev-deleted-text-unhide' => 'この版は<strong>削除されています</strong>。
[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 削除記録]に詳細情報があるかもしれません。
-このまま[$1 この版を閲覧]できます。",
-'rev-suppressed-text-unhide' => "この版は'''秘匿されています'''。
+このまま[$1 この版を閲覧]できます。',
+'rev-suppressed-text-unhide' => 'この版は<strong>秘匿されています</strong>。
[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} 秘匿記録]に詳細情報があるかもしれません。
-このまま[$1 この版を閲覧]できます。",
-'rev-deleted-text-view' => "この版は'''削除されています'''。
-内容を閲覧できます。[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 削除記録]に詳細情報があるかもしれません。",
-'rev-suppressed-text-view' => "この版は'''秘匿されています'''。
-内容を閲覧できます。[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} 秘匿記録]に詳細情報があるかもしれません。",
-'rev-deleted-no-diff' => "どちらかの版が'''削除されているため'''、差分表示できません。
-[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 削除記録]に詳細情報があるかもしれません。",
-'rev-suppressed-no-diff' => "どちらかの版が'''削除されているため'''、差分表示できません。",
-'rev-deleted-unhide-diff' => "この差分の一方の版は'''削除されています'''。
+このまま[$1 この版を閲覧]できます。',
+'rev-deleted-text-view' => 'この版は<strong>削除されています</strong>。
+内容を閲覧できます。[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 削除記録]に詳細情報があるかもしれません。',
+'rev-suppressed-text-view' => 'この版は<strong>秘匿されています</strong>。
+内容を閲覧できます。[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} 秘匿記録]に詳細情報があるかもしれません。',
+'rev-deleted-no-diff' => 'どちらかの版が<strong>削除されているため</strong>、差分表示できません。
+[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 削除記録]に詳細情報があるかもしれません。',
+'rev-suppressed-no-diff' => 'どちらかの版が<strong>削除されているため</strong>、差分表示できません。',
+'rev-deleted-unhide-diff' => 'この差分の一方の版は<strong>削除されています</strong>。
[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 削除記録]に詳細情報があるかもしれません。
-このまま[$1 この差分を閲覧]できます。",
-'rev-suppressed-unhide-diff' => "この差分の一方の版は'''秘匿されています'''。
+このまま[$1 この差分を閲覧]できます。',
+'rev-suppressed-unhide-diff' => 'この差分の一方の版は<strong>秘匿されています</strong>。
[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} 秘匿記録]に詳細情報があるかもしれません。
-このまま[$1 この差分を閲覧]できます。",
-'rev-deleted-diff-view' => "この差分の一方の版は'''削除されています'''。
-この差分を閲覧できます。[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 削除記録]に詳細情報があるかもしれません。",
-'rev-suppressed-diff-view' => "この差分の一方の版は'''秘匿されています'''。
-この差分を閲覧できます。[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} 秘匿記録]に詳細情報があるかもしれません。",
+このまま[$1 この差分を閲覧]できます。',
+'rev-deleted-diff-view' => 'この差分の一方の版は<strong>削除されています</strong>。
+この差分を閲覧できます。[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 削除記録]に詳細情報があるかもしれません。',
+'rev-suppressed-diff-view' => 'この差分の一方の版は<strong>秘匿されています</strong>。
+この差分を閲覧できます。[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} 秘匿記録]に詳細情報があるかもしれません。',
'rev-delundel' => '表示/非表示',
'rev-showdeleted' => '表示',
'revisiondelete' => '版の削除と復元',
'revdelete-no-file' => '指定されたファイルは存在しません。',
'revdelete-show-file-confirm' => 'ファイル「<nowiki>$1</nowiki>」の削除された$2$3の版を本当に閲覧しますか?',
'revdelete-show-file-submit' => 'はい',
-'revdelete-selected' => "'''[[:$1]] の{{PLURAL:$2|選択された版}}:'''",
-'logdelete-selected' => "'''{{PLURAL:$1|選択された記録項目}}:'''",
-'revdelete-text' => "'''削除された版や記録項目は引き続きページの履歴や記録に表示されますが、一般利用者はその内容の一部を取得できなくなります。'''
-追加の制限がかけられない限り、{{SITENAME}}の他の管理者は同じインターフェイスを使って非表示の内容の取得や復元ができます。",
+'revdelete-selected' => '<strong>[[:$1]] の{{PLURAL:$2|選択された版}}:</strong>',
+'logdelete-selected' => '<strong>{{PLURAL:$1|選択された記録項目}}:</strong>',
+'revdelete-text' => '<strong>削除された版や記録項目は引き続きページの履歴や記録に表示されますが、一般利用者はその内容の一部を取得できなくなります。</strong>
+追加の制限がかけられない限り、{{SITENAME}}の他の管理者は同じインターフェイスを使って非表示の内容の取得や復元ができます。',
'revdelete-confirm' => 'この操作を行おうとしていること、その結果を理解していること、[[{{MediaWiki:Policy-url}}|方針]]に従っていること、を確認してください。',
-'revdelete-suppress-text' => "秘匿は、'''以下の場合に限って'''使用すべきです:
+'revdelete-suppress-text' => '秘匿は、<strong>以下の場合に限って</strong>使用すべきです:
* 名誉毀損のおそれがある記述
* 非公開個人情報
-*: ''自宅の住所、電話番号、個人を識別できる公的な番号など''",
+*: <em>自宅の住所、電話番号、個人を識別できる公的な番号など</em>',
'revdelete-legend' => '閲覧レベル制限を設定',
'revdelete-hide-text' => '版の本文',
'revdelete-hide-image' => 'ファイル内容を隠す',
'revdelete-unsuppress' => '復元版に対する制限を除去',
'revdelete-log' => '理由:',
'revdelete-submit' => '選択された{{PLURAL:$1|版}}に適用',
-'revdelete-success' => "'''版の閲覧レベルを更新しました。'''",
-'revdelete-failure' => "'''版の閲覧レベルを更新できませんでした:'''
-$1",
-'logdelete-success' => "'''記録の閲覧レベルを変更しました。'''",
-'logdelete-failure' => "'''記録の閲覧レベルを設定できませんでした。'''
-$1",
+'revdelete-success' => '<strong>版の閲覧レベルを更新しました。</strong>',
+'revdelete-failure' => '<strong>版の閲覧レベルを更新できませんでした:</strong>
+$1',
+'logdelete-success' => '<strong>記録の閲覧レベルを変更しました。</strong>',
+'logdelete-failure' => '<strong>記録の閲覧レベルを設定できませんでした。</strong>
+$1',
'revdel-restore' => '閲覧レベルを変更',
'pagehist' => 'ページの履歴',
'deletedhist' => '削除された履歴',
'revdelete-modify-no-access' => '$1$2の項目の修正に失敗しました: この項目には「制限付き」の印が付いています。
アクセス権限がありません。',
'revdelete-modify-missing' => '版 ID $1 の項目の変更に失敗しました: データベース内にありません!',
-'revdelete-no-change' => "'''警告:''' $1$2の項目には要求された閲覧レベルが既に設定されています。",
+'revdelete-no-change' => '<strong>警告:</strong> $1$2の項目には要求された閲覧レベルが既に設定されています。',
'revdelete-concurrent-change' => '$1$2の項目の変更に失敗しました: あなたが変更しようとしている間に、他の誰かが変更したようです。
記録を確認してください。',
'revdelete-only-restricted' => '$1$2の項目の版指定削除に失敗しました: 他の閲覧レベルの選択肢のうちどれかをさらに選択しなければ、管理者から項目を秘匿できません。',
'difference-title' => '「$1」の版間の差分',
'difference-title-multipage' => 'ページ「$1」と「$2」の間の差分',
'difference-multipage' => '(ページ間の差分)',
-'lineno' => '$1行:',
+'lineno' => '行$1:',
'compareselectedversions' => '選択した版同士を比較',
'showhideselectedversions' => '選択した版を表示/非表示',
'editundo' => '取り消し',
'diff-empty' => '(相違点なし)',
-'diff-multi' => '({{PLURAL:$2|$2人の利用者}}による、{{PLURAL:$1|間の$1版}}が非表示)',
+'diff-multi-sameuser' => '(同じ利用者による、{{PLURAL:$1|間の$1版}}が非表示)',
+'diff-multi-otherusers' => '({{PLURAL:$2|他の1人の利用者|$2人の利用者}}による、{{PLURAL:$1|間の$1版}}が非表示)',
'diff-multi-manyusers' => '({{PLURAL:$2|$2人を超える利用者}}による、{{PLURAL:$1|間の$1版}}が非表示)',
'difference-missing-revision' => '指定された{{PLURAL:$2|$2版}}の差分 ($1) が見つかりませんでした。
'nextn-title' => '次の{{PLURAL:$1|$1件}}',
'shown-title' => 'ページあたり{{PLURAL:$1|$1件の結果}}を表示',
'viewprevnext' => '($1{{int:pipe-separator}}$2) ($3 件) を表示',
-'searchmenu-exists' => "'''このウィキには「[[:$1]]」という名前のページがあります。'''{{PLURAL:$2|0=|検索で見つかった他のページも参照してください。}}",
-'searchmenu-new' => "'''このウィキでページ「[[:$1]]」を新規作成しましょう。'''{{PLURAL:$2|0=|検索で見つかった他のページも参照してください。}}",
+'searchmenu-exists' => '<strong>このウィキには「[[:$1]]」という名前のページがあります。</strong>{{PLURAL:$2|0=|検索で見つかった他のページも参照してください。}}',
+'searchmenu-new' => '<strong>このウィキでページ「[[:$1]]」を新規作成しましょう。</strong>{{PLURAL:$2|0=|検索で見つかった他のページも参照してください。}}',
'searchprofile-articles' => '本文ページ',
'searchprofile-project' => 'ヘルプとプロジェクトページ',
'searchprofile-images' => 'マルチメディア',
'search-result-score' => '関連度: $1%',
'search-redirect' => '($1からのリダイレクト)',
'search-section' => '($1の節)',
+'search-file-match' => '(ファイルの内容との一致)',
'search-suggest' => 'もしかして: $1',
'search-interwiki-caption' => '姉妹プロジェクト',
'search-interwiki-default' => '$1の結果:',
'searcheverything-enable' => 'すべての名前空間を検索',
'searchrelated' => '関連',
'searchall' => 'すべて',
-'showingresults' => "'''$2''' 件目以降の最大 {{PLURAL:$1|'''$1''' 件の結果}}を表示しています。",
-'showingresultsnum' => "'''$2''' 件目以降の {{PLURAL:$3|'''$3''' 件の結果}}を表示しています。",
-'showingresultsheader' => "「'''$4'''」の検索結果 {{PLURAL:$5|'''$3''' 件中の '''$1''' 件目|'''$3''' 件中の '''$1''' 件目から '''$2''' 件目}}",
+'showingresults' => '<strong>$2</strong> 件目以降の最大 {{PLURAL:$1|<strong>$1</strong> 件の結果}}を表示しています。',
+'showingresultsnum' => '<strong>$2</strong> 件目以降の {{PLURAL:$3|<strong>$3</strong> 件の結果}}を表示しています。',
+'showingresultsheader' => '「<strong>$4</strong>」の検索結果 {{PLURAL:$5|<strong>$3</strong> 件中の <strong>$1</strong> 件目|<strong>$3</strong> 件中の <strong>$1</strong> 件目から <strong>$2</strong> 件目}}',
'search-nonefound' => '問い合わせに合致する検索結果はありませんでした。',
'powersearch-legend' => '高度な検索',
'powersearch-ns' => '名前空間を指定して検索:',
'rows' => '行数:',
'columns' => '列数:',
'searchresultshead' => '検索',
-'resultsperpage' => '1 ページあたりの表示件数:',
'stub-threshold' => '<a href="#" class="stub">スタブリンク</a>として表示する閾値 (バイト):',
'stub-threshold-disabled' => '無効',
'recentchangesdays' => '最近の更新に表示する日数:',
'userrights-lookup-user' => '利用者グループを管理',
'userrights-user-editname' => '利用者名を入力:',
'editusergroup' => '利用者グループを編集',
-'editinguser' => "利用者''' [[User:$1|$1]]''' $2 の権限を変更",
+'editinguser' => '利用者<strong> [[User:$1|$1]]</strong> $2 の権限を変更',
'userrights-editusergroup' => '利用者グループを編集',
'saveusergroups' => '利用者グループを保存',
'userrights-groupsmember' => '所属グループ:',
'recentchanges-label-plusminus' => 'ページ サイズの増減 (バイト単位)',
'recentchanges-legend-heading' => "'''凡例:'''",
'recentchanges-legend-newpage' => '([[Special:NewPages|新しいページ一覧]]も参照)',
-'recentchanges-legend-plusminus' => "(''±123'')",
-'rcnotefrom' => "以下は'''$2'''以降の更新です (最大 '''$1''' 件)。",
+'recentchanges-legend-plusminus' => '(<em>±123</em>)',
+'rcnotefrom' => '以下は<strong>$2</strong>以降の更新です (最大 <strong>$1</strong> 件)。',
'rclistfrom' => '$1以降の更新を表示する',
'rcshowhideminor' => '細部の編集を$1',
'rcshowhidebots' => 'ボットを$1',
'recentchangeslinked-feed' => '関連ページの更新状況',
'recentchangeslinked-toolbox' => '関連ページの更新状況',
'recentchangeslinked-title' => '「$1」と関連する変更',
-'recentchangeslinked-summary' => "これは指定したページからリンクされている (または指定したカテゴリに含まれている) ページの最近の変更の一覧です。
-[[Special:Watchlist|自分のウォッチリスト]]にあるページは'''太字'''で表示されます。",
+'recentchangeslinked-summary' => 'これは指定したページからリンクされている (または指定したカテゴリに含まれている) ページの最近の変更の一覧です。
+[[Special:Watchlist|自分のウォッチリスト]]にあるページは<strong>太字</strong>で表示されます。',
'recentchangeslinked-page' => 'ページ名:',
'recentchangeslinked-to' => 'このページへのリンク元での変更の表示に切り替え',
'upload_directory_missing' => 'アップロード先ディレクトリ ($1) が見つかりませんでした。ウェブ サーバーによる作成もできませんでした。',
'upload_directory_read_only' => 'アップロード先ディレクトリ ($1) には、ウェブサーバーが書き込めません。',
'uploaderror' => 'アップロードのエラー',
-'upload-recreate-warning' => "'''警告: その名前のファイルは、以前に削除または移動されています。'''
+'upload-recreate-warning' => '<strong>警告: その名前のファイルは、以前に削除または移動されています。</strong>
-参考のため、このページの削除と移動の記録を以下に示します:",
-'uploadtext' => "ファイルをアップロードするには、以下のフォームを使用してください。
+参考のため、このページの削除と移動の記録を以下に示します:',
+'uploadtext' => 'ファイルをアップロードするには、以下のフォームを使用してください。
以前にアップロードされたファイルの表示と検索には[[Special:FileList|{{int:listfiles}}]]を使用してください。(再) アップロードは[[Special:Log/upload|アップロード記録]]に、削除は[[Special:Log/delete|削除記録]]にも記録されます。
ページにファイルを入れるには、以下の書式のリンクを使用してください:
-* '''<code><nowiki>[[</nowiki>{{ns:file}}:<nowiki>File.jpg]]</nowiki></code>''' とすると、ファイルが完全なままで使用されます。
-* '''<code><nowiki>[[</nowiki>{{ns:file}}:<nowiki>File.png|200px|thumb|left|代替文]]</nowiki></code>''' とすると、200ピクセルの幅に修正された状態で、左寄せの枠内に、「代替文」が説明として使用されます。
-* '''<code><nowiki>[[</nowiki>{{ns:media}}:<nowiki>File.ogg]]</nowiki></code>''' とすると、ファイルを表示せずにそのファイルに直接リンクします。",
+* <strong><code><nowiki>[[</nowiki>{{ns:file}}:<nowiki>File.jpg]]</nowiki></code></strong> とすると、ファイルが完全なままで使用されます。
+* <strong><code><nowiki>[[</nowiki>{{ns:file}}:<nowiki>File.png|200px|thumb|left|代替文]]</nowiki></code></strong> とすると、200ピクセルの幅に修正された状態で、左寄せの枠内に、「代替文」が説明として使用されます。
+* <strong><code><nowiki>[[</nowiki>{{ns:media}}:<nowiki>File.ogg]]</nowiki></code></strong> とすると、ファイルを表示せずにそのファイルに直接リンクします。',
'upload-permitted' => '許可されているファイル形式: $1。',
'upload-preferred' => '推奨されているファイル形式: $1。',
'upload-prohibited' => '禁止されているファイル形式: $1。',
'filetype-mime-mismatch' => 'ファイルの拡張子「$1」がMIMEタイプ「$2」と一致しません。',
'filetype-badmime' => 'MIMEタイプ「$1」のファイルのアップロードは許可されていません。',
'filetype-bad-ie-mime' => '許可されていない潜在的危険性のあるファイル形式「$1」としてInternet Explorerに認識されてしまうため、このファイルをアップロードできません。',
-'filetype-unwanted-type' => "'''「.$1」'''は好ましくないファイル形式です。
-推奨される{{PLURAL:$3|ファイル形式}}は $2 です。",
-'filetype-banned-type' => "'''「.$1」''' は許可されていないファイル形式です{{PLURAL:$4|}}。
-許可されているファイル形式{{PLURAL:$3|}}は$2です。",
+'filetype-unwanted-type' => '<strong>「.$1」</strong>は好ましくないファイル形式です。
+推奨される{{PLURAL:$3|ファイル形式}}は $2 です。',
+'filetype-banned-type' => '<strong>「.$1」</strong> は許可されていないファイル形式です{{PLURAL:$4|}}。
+許可されているファイル形式{{PLURAL:$3|}}は$2です。',
'filetype-missing' => 'ファイル名に「.jpg」のような拡張子がありません。',
'empty-file' => '送信されたファイルは空でした。',
'file-too-large' => '送信されたファイルは大きすぎます。',
* アップロード中のファイルの名前: <strong>[[:$1]]</strong>
* 既存ファイルの名前: <strong>[[:$2]]</strong>
違う名前を選択してください。',
-'fileexists-thumbnail-yes' => "このファイルは元の画像から縮小されたもの ''(サムネイル)'' のようです。
+'fileexists-thumbnail-yes' => 'このファイルは元の画像から縮小されたもの <em>(サムネイル)</em> のようです。
[[$1|thumb]]
ファイル <strong>[[:$1]]</strong> を確認してください。
-確認したファイルが同じ画像の元のサイズの版の場合は、サムネイルを別途アップロードする必要はありません。",
-'file-thumbnail-no' => "ファイル名が <strong>$1</strong> で始まっています。
-他の画像から縮小されたもの ''(サムネイル)'' のようです。
-より高精細な画像をお持ちの場合はそれをアップロードしてください。お持ちではない場合はファイル名を変更してください。",
+確認したファイルが同じ画像の元のサイズの版の場合は、サムネイルを別途アップロードする必要はありません。',
+'file-thumbnail-no' => 'ファイル名が <strong>$1</strong> で始まっています。
+他の画像から縮小されたもの <em>(サムネイル)</em> のようです。
+より高精細な画像をお持ちの場合はそれをアップロードしてください。お持ちではない場合はファイル名を変更してください。',
'fileexists-forbidden' => 'この名前のファイルは既に存在しており、上書きできません。
アップロードを継続したい場合は、前のページに戻り、別のファイル名を使用してください。
[[File:$1|thumb|center|$1]]',
'file-exists-duplicate' => 'このファイルは以下の{{PLURAL:$1|ファイル|ファイル群}}と重複しています:',
'file-deleted-duplicate' => 'このファイル ([[:$1]]) と同一のファイルが以前に削除されています。
再度アップロードをする前に、以前削除されたファイルの削除記録を確認してください。',
+'file-deleted-duplicate-notitle' => 'このファイルと同一のファイルが、以前に削除されページ名が秘匿されました。
+再度アップロードをする前に、秘匿されたファイルのデータを閲覧する権限を持った利用者に連絡して、状況を精査してもらってください。',
'uploadwarning' => 'アップロード警告',
'uploadwarning-text' => '下記のファイル解説を修正して再試行してください。',
'savefile' => 'ファイルを保存',
'watchthisupload' => 'このファイルをウォッチ',
'filewasdeleted' => 'この名前のファイルは一度アップロードされ、その後削除されています。
再度アップロードする前に$1を確認してください。',
-'filename-bad-prefix' => "アップロードしようとしているファイルの名前が'''「$1」'''から始まっていますが、これはデジタルカメラによって自動的に付与されるような具体性を欠いた名前です。
-ファイルの内容をより具体的に説明する名前を使用してください。",
+'filename-bad-prefix' => 'アップロードしようとしているファイルの名前が<strong>「$1」</strong>から始まっていますが、これはデジタルカメラによって自動的に付与されるような具体性を欠いた名前です。
+ファイルの内容をより具体的に説明する名前を使用してください。',
'filename-prefix-blacklist' => ' #<!-- この行はそのままにしておいてください --> <pre>
# 構文は以下の通り:
# * "#" 記号から行末まではすべてがコメント
'backend-fail-read' => 'ファイル「$1」から読み取れませんでした。',
'backend-fail-create' => 'ファイル「$1」に書き込めませんでした。',
'backend-fail-maxsize' => 'サイズが {{PLURAL:$2|$2 バイト}}を超えているため、ファイル「$1」に書き込めませんでした。',
-'backend-fail-readonly' => "ストレージバックエンド「$1」は現在読み取り専用です。理由:「''$2''」",
+'backend-fail-readonly' => 'ストレージバックエンド「$1」は現在読み取り専用です。理由:「<em>$2</em>」',
'backend-fail-synced' => 'ファイル「$1」は、ストレージバックエンド内部で不一致の状態にあります',
'backend-fail-connect' => 'ストレージバックエンド「$1」に接続できませんでした。',
'backend-fail-internal' => 'ストレージバックエンド「$1」内で不明なエラーが発生しました。',
# File reversion
'filerevert' => '$1を差し戻す',
'filerevert-legend' => 'ファイルを差し戻す',
-'filerevert-intro' => "ファイル'''[[Media:$1|$1]]'''を[$4 $2$3版]に差し戻そうとしています。",
+'filerevert-intro' => 'ファイル<strong>[[Media:$1|$1]]</strong>を[$4 $2$3版]に差し戻そうとしています。',
'filerevert-comment' => '理由:',
'filerevert-defaultcomment' => '$1$2の版へ差し戻し',
'filerevert-submit' => '差し戻す',
-'filerevert-success' => "'''[[Media:$1|$1]]'''は[$4 $2$3の版]に差し戻されました。",
+'filerevert-success' => '<strong>[[Media:$1|$1]]</strong>は[$4 $2$3の版]に差し戻されました。',
'filerevert-badversion' => 'このファイルに指定された時刻印を持つ過去の版はありません。',
# File deletion
'filedelete' => '$1の削除',
'filedelete-legend' => 'ファイルの削除',
-'filedelete-intro' => "'''[[Media:$1|$1]]'''をすべての履歴とともに削除しようとしています。",
-'filedelete-intro-old' => "'''[[Media:$1|$1]]'''の[$4 $2$3の版]を削除しようとしています。",
+'filedelete-intro' => '<strong>[[Media:$1|$1]]</strong>をすべての履歴とともに削除しようとしています。',
+'filedelete-intro-old' => '<strong>[[Media:$1|$1]]</strong>の[$4 $2$3の版]を削除しようとしています。',
'filedelete-comment' => '理由:',
'filedelete-submit' => '削除',
-'filedelete-success' => "'''$1''' を削除しました。",
-'filedelete-success-old' => "'''[[Media:$1|$1]]'''の$2$3の版を削除しました。",
-'filedelete-nofile' => "'''$1'''は存在しません。",
-'filedelete-nofile-old' => "指定された属性を持つ'''$1'''の古い版は存在しません。",
+'filedelete-success' => '<strong>$1</strong> を削除しました。',
+'filedelete-success-old' => '<strong>[[Media:$1|$1]]</strong>の$2$3の版を削除しました。',
+'filedelete-nofile' => '<strong>$1</strong>は存在しません。',
+'filedelete-nofile-old' => '指定された属性を持つ<strong>$1</strong>の古い版は存在しません。',
'filedelete-otherreason' => '他の、または追加の理由:',
'filedelete-reason-otherlist' => 'その他の理由',
'filedelete-reason-dropdown' => '*よくある削除理由
'protectedpages' => '保護されているページ',
'protectedpages-indef' => '無期限保護のみ',
'protectedpages-cascade' => 'カスケード保護のみ',
+'protectedpages-noredirect' => 'リダイレクトを隠す',
'protectedpagesempty' => '指定した条件で保護中のページは現在ありません。',
'protectedtitles' => '作成保護されているページ名',
'protectedtitlesempty' => 'これらの引数で現在保護されているページはありません。',
'notvisiblerev' => '別の利用者による最終版は削除されました',
'watchlist-details' => 'ウォッチリストには {{PLURAL:$1|$1 ページ}}が登録されています (トークページを除く)。',
'wlheader-enotif' => 'メール通知が有効になっています。',
-'wlheader-showupdated' => "最終訪問以降に変更されたページは、'''太字'''で表示されます。",
+'wlheader-showupdated' => '最終訪問以降に変更されたページは、<strong>太字</strong>で表示されます。',
'watchmethod-recent' => '最近の更新内のウォッチされているページを確認中',
'watchmethod-list' => 'ウォッチされているページ内の最近の更新を確認中',
'watchlistcontains' => 'ウォッチリストには {{PLURAL:$1|$1 ページ}}が登録されています。',
'iteminvalidname' => '項目「$1」には問題があります。名前が無効です...',
-'wlnote' => "$3 $4 までの{{PLURAL:$2|'''$2'''時間}}になされた{{PLURAL:$1|'''$1'''件の変更}}は以下の通りです。",
+'wlnote2' => '以下は $2 $3 までの {{PLURAL:$1|<strong>$1</strong> 時間}}でなされた変更です。',
'wlshowlast' => '次の期間で表示: $1時間、$2日間、$3',
'watchlist-options' => 'ウォッチリストのオプション',
'exblank' => '白紙ページ',
'delete-confirm' => '「$1」の削除',
'delete-legend' => '削除',
-'historywarning' => "'''警告:''' 削除しようとしているページには、約$1版の履歴があります:",
+'historywarning' => '<strong>警告:</strong> 削除しようとしているページには、約$1版の履歴があります:',
'confirmdeletetext' => 'ページをすべての履歴とともに削除しようとしています。
本当にこの操作を行いたいか、操作の結果を理解しているか、およびこの操作が[[{{MediaWiki:Policy-url}}|方針]]に従っているかどうか、確認してください。',
'actioncomplete' => '操作を完了しました',
'delete-warning-toobig' => 'このページには、 $1版を超える編集履歴があります。
削除すると、{{SITENAME}}のデータベース処理に大きな負荷がかかります。
十分に注意してください。',
+'deleting-backlinks-warning' => "'''警告:''' 削除しようとしているページは、他のページからリンクまたは参照読み込みされています。",
# Rollback
'rollback' => '編集を巻き戻し',
'protect_expiry_invalid' => '有効期間が正しくありません。',
'protect_expiry_old' => '有効期限が過去の時刻です。',
'protect-unchain-permissions' => '追加保護オプションをロック解除',
-'protect-text' => "ここでは、ページ '''$1''' に対する保護レベルの表示と操作ができます。",
-'protect-locked-blocked' => "ブロックされている間は、保護レベルを変更できません。
-ページ '''$1''' の現在の状態は以下の通りです:",
-'protect-locked-dblock' => "データベースのロックが有効なため、保護レベルを変更できません。
-ページ '''$1''' の現在の状態は以下の通りです:",
-'protect-locked-access' => "アカウントに、ページの保護レベルを変更する権限がありません。
-ページ '''$1''' の現在の状態は以下の通りです:",
+'protect-text' => 'ここでは、ページ <strong>$1</strong> に対する保護レベルの表示と操作ができます。',
+'protect-locked-blocked' => 'ブロックされている間は、保護レベルを変更できません。
+ページ <strong>$1</strong> の現在の状態は以下の通りです:',
+'protect-locked-dblock' => 'データベースのロックが有効なため、保護レベルを変更できません。
+ページ <strong>$1</strong> の現在の状態は以下の通りです:',
+'protect-locked-access' => 'アカウントに、ページの保護レベルを変更する権限がありません。
+ページ <strong>$1</strong> の現在の状態は以下の通りです:',
'protect-cascadeon' => 'このページは現在、カスケード保護が有効になっている以下の{{PLURAL:$1|ページ|ページ群}}から読み込まれているため、保護されています。
このページの保護レベルを変更できますが、カスケード保護には影響しません。',
'protect-default' => 'すべての利用者に許可',
# Undelete
'undelete' => '削除されたページを表示',
'undeletepage' => '削除されたページの表示と復元',
-'undeletepagetitle' => "'''以下は[[:$1|$1]]の削除された版です'''。",
+'undeletepagetitle' => '<strong>以下は[[:$1|$1]]の削除された版です</strong>。',
'viewdeletedpage' => '削除されたページを表示',
'undeletepagetext' => '以下の{{PLURAL:$1|削除されたページ| $1 件の削除されたページ}}は、保存版に残っているため復元できます。
保存版は定期的に消去される可能性があります。',
'undelete-fieldset-title' => '削除された版の復元',
-'undeleteextrahelp' => "すべての版を復元する場合は、どのボックスにもチェックを入れていない状態で'''''{{int:undeletebtn}}'''''をクリックしてください。
-特定の版を復元する場合は、復元する版のボックスにチェックを入れた状態で'''''{{int:undeletebtn}}'''''をクリックしてください。",
+'undeleteextrahelp' => 'すべての版を復元する場合は、どのボックスにもチェックを入れていない状態で<strong><em>{{int:undeletebtn}}</em></strong>をクリックしてください。
+特定の版を復元する場合は、復元する版のボックスにチェックを入れた状態で<strong><em>{{int:undeletebtn}}</em></strong>をクリックしてください。',
'undeleterevisions' => '保存版に$1{{PLURAL:$1|版}}あります',
'undeletehistory' => 'ページを復元すると、すべての版が履歴に復元されます。
削除後に同じ名前で新しいページが作成されている場合、復元された版はそれに先行する履歴として表示されます。',
'undeletedfiles' => '{{PLURAL:$1|$1ファイル}}を復元しました',
'cannotundelete' => '復元に失敗しました:
$1',
-'undeletedpage' => "'''$1を復元しました。'''
+'undeletedpage' => '<strong>$1を復元しました。</strong>
-最近の削除と復元の記録については[[Special:Log/delete|削除記録]]を参照してください。",
+最近の削除と復元の記録については[[Special:Log/delete|削除記録]]を参照してください。',
'undelete-header' => '最近削除されたページは[[Special:Log/delete|削除記録]]で確認できます。',
'undelete-search-title' => '削除されたページの検索',
'undelete-search-box' => '削除されたページの検索',
'whatlinkshere' => 'リンク元',
'whatlinkshere-title' => '「$1」へリンクしているページ',
'whatlinkshere-page' => 'ページ:',
-'linkshere' => "以下のページが、'''[[:$1]]''' にリンクしています:",
-'nolinkshere' => "'''[[:$1]]''' にリンクしているページはありません。",
-'nolinkshere-ns' => "指定した名前空間内に、'''[[:$1]]''' にリンクしているページはありません。",
+'linkshere' => '以下のページが、<strong>[[:$1]]</strong> にリンクしています:',
+'nolinkshere' => '<strong>[[:$1]]</strong> にリンクしているページはありません。',
+'nolinkshere-ns' => '指定した名前空間内に、<strong>[[:$1]]</strong> にリンクしているページはありません。',
'isredirect' => '転送ページ',
'istemplate' => '参照読み込み',
'isimage' => 'ファイルへのリンク',
[[Special:BlockList|ブロックの一覧]]を参照してください。',
'ipb-blockingself' => '自分自身をブロックしようとしています! 本当に実行しますか?',
'ipb-confirmhideuser' => '利用者名の秘匿を有効にしてブロックしようとしています。実行すると、すべての一覧や記録項目で利用者名が表示されません。本当に実行しますか?',
+'ipb-confirmaction' => '本当に実行する場合は、下の「{{int:ipb-confirm}}」欄にチェックを入れてください。',
'ipb-edit-dropdown' => 'ブロック理由を編集',
'ipb-unblock-addr' => '$1のブロックを解除',
'ipb-unblock' => '利用者またはIPアドレスのブロックを解除',
'change-blocklink' => '設定を変更',
'contribslink' => '投稿記録',
'emaillink' => 'メールを送信',
-'autoblocker' => "この IP アドレスを「[[User:$1|$1]]」が最近使用したため、自動ブロックされています。
-$1 のブロックの理由は「''$2''」です。",
+'autoblocker' => 'この IP アドレスを「[[User:$1|$1]]」が最近使用したため、自動ブロックされています。
+$1 のブロックの理由は「<em>$2</em>」です。',
'blocklogpage' => 'ブロック記録',
'blocklog-showlog' => 'この利用者は以前にブロックされたことがあります。
参考のため、ブロック記録を以下に示します:',
'range_block_disabled' => '範囲ブロックを作成する管理者機能は無効化されています。',
'ipb_expiry_invalid' => '有効期限が無効です。',
'ipb_expiry_temp' => '利用者名秘匿のブロックは、無期限ブロックになります。',
-'ipb_hide_invalid' => 'このアカウントを秘匿できません。編集回数が非常に多いためだと思われます。',
+'ipb_hide_invalid' => 'このアカウントを秘匿できません。編集回数が{{PLURAL:$1|$1回}}を超えています。',
'ipb_already_blocked' => '「$1」は既にブロックされています。',
'ipb-needreblock' => '$1 は既にブロックされています。設定を変更しますか?',
'ipb-otherblocks-header' => 'その他の{{PLURAL:$1|ブロック}}',
# Move page
'move-page' => '「$1」の移動',
'move-page-legend' => 'ページの移動',
-'movepagetext' => "下のフォームを使用すると、ページ名を変更でき、そのページの履歴も変更先に移動できます。
+'movepagetext' => '下のフォームを使用すると、ページ名を変更でき、そのページの履歴も変更先に移動できます。
移動元のページは移動先への転送ページになります。
移動元のページへの転送ページを自動的に修正できます。
[[Special:DoubleRedirects|二重転送]]や[[Special:BrokenRedirects|迷子のリダイレクト]]を確認する必要があります。
リンクを正しく維持するのは移動した人の責任です。
-移動先のページが既に存在する場合は、その移動先が転送ページであり、かつ過去の版を持たない場合以外は移動'''できません'''。
+移動先のページが既に存在する場合は、その移動先が転送ページであり、かつ過去の版を持たない場合以外は移動<strong>できません</strong>。
つまり、間違えてページ名を変更した場合には元に戻せます。また移動によって既存のページを上書きしてしまうことはありません。
-'''注意!'''
+<strong>注意!</strong>
よく閲覧されるページや、他の多くのページからリンクされているページを移動すると予期しない結果が起こるかもしれません。
-ページの移動に伴う影響をよく考えてから踏み切るようにしてください。",
-'movepagetext-noredirectfixer' => "下のフォームを使用すると、ページ名を変更でき、そのページの履歴も変更先に移動できます。
+ページの移動に伴う影響をよく考えてから踏み切るようにしてください。',
+'movepagetext-noredirectfixer' => '下のフォームを使用すると、ページ名を変更でき、そのページの履歴も変更先に移動できます。
移動元のページは移動先への転送ページになります。
自動的な修正を選択しない場合は、[[Special:DoubleRedirects|二重転送]]や[[Special:BrokenRedirects|迷子のリダイレクト]]を確認する必要があります。
つながるべき場所にリンクがつながるよう維持するのは移動した人の責任です。
-移動先が既に存在する場合は、そのページが転送ページであり、かつ過去の版を持たない場合を除いて移動'''できません'''。
+移動先が既に存在する場合は、そのページが転送ページであり、かつ過去の版を持たない場合を除いて移動<strong>できません</strong>。
つまり、間違えてページ名を変更した場合には元に戻せます。また移動によって既存のページを上書きしてしまうことはありません。
-'''警告!'''
+<strong>警告!</strong>
多く閲覧されるページや多くリンクされているページを移動すると、予期しない大きな変化が起こるかもしれないことにご注意ください。
-ページの移動に伴う影響をよく考えてから移動してください。",
-'movepagetalktext' => "関連付けられたトークページも一緒に、自動的に移動されます。ただし、'''以下の場合を除きます:'''
+ページの移動に伴う影響をよく考えてから移動してください。',
+'movepagetalktext' => '関連付けられたトークページも一緒に、自動的に移動されます。ただし、<strong>以下の場合を除きます:</strong>
* 移動先に、空ではないトークページが既に存在する場合
* 下のボックスのチェックを消した場合
-これらの場合、必要に応じて、トークページを移動または統合する必要があります。",
+これらの場合、必要に応じて、トークページを移動または統合する必要があります。',
'movearticle' => '移動するページ:',
-'moveuserpage-warning' => "'''警告:''' 利用者ページを移動しようとしています。この操作ではページのみが移動され、利用者名は''変更されない''点に注意してください。",
+'moveuserpage-warning' => '<strong>警告:</strong> 利用者ページを移動しようとしています。この操作ではページのみが移動され、利用者名は<em>変更されない</em>点に注意してください。',
'movenologintext' => 'ページを移動するためには、登録利用者でありかつ、[[Special:UserLogin|ログイン]]している必要があります。',
'movenotallowed' => 'ページを移動する権限がありません。',
'movenotallowedfile' => 'ファイルを移動する権限がありません。',
'move-watch' => '移動元と移動先ページをウォッチ',
'movepagebtn' => 'ページを移動',
'pagemovedsub' => '移動に成功しました',
-'movepage-moved' => "'''「$1」は「$2」へ移動されました'''",
+'movepage-moved' => '<strong>「$1」は「$2」へ移動されました</strong>',
'movepage-moved-redirect' => '転送ページを作成しました。',
'movepage-moved-noredirect' => '転送ページは作成されませんでした。',
'articleexists' => '指定された移動先には既にページが存在するか、名前が不適切です。
'imageinvalidfilename' => '対象ファイル名が無効です',
'fix-double-redirects' => 'このページへのリダイレクトがあればそのリダイレクトを修正',
'move-leave-redirect' => '移動元に転送ページを作成する',
-'protectedpagemovewarning' => "'''警告:''' このページは保護されているため、管理者権限を持つ利用者のみが移動できます。
-参考として以下に最後の記録を表示します:",
-'semiprotectedpagemovewarning' => "'''注意:''' このページは保護されているため、登録利用者のみが移動できます。
-参考として以下に最後の記録を表示します:",
+'protectedpagemovewarning' => '<strong>警告:</strong> このページは保護されているため、管理者権限を持つ利用者のみが移動できます。
+参考として以下に最後の記録を表示します:',
+'semiprotectedpagemovewarning' => '<strong>注意:</strong> このページは保護されているため、登録利用者のみが移動できます。
+参考として以下に最後の記録を表示します:',
'move-over-sharedrepo' => '== ファイルが存在します ==
[[:$1]]は共有リポジトリ上に存在します。ファイルをこの名前に移動すると共有ファイルを上書きします。',
'file-exists-sharedrepo' => '選ばれたファイル名は既に共有リポジトリ上で使用されています。
後者の場合ではリンクの形で使うこともできます。例えば、[[{{#Special:Export}}/{{MediaWiki:Mainpage}}]]はページ「[[{{MediaWiki:Mainpage}}]]」が対象になります。',
'exportall' => 'すべてのページを書き出し',
'exportcuronly' => '完全な履歴は含めず、最新版のみを含める',
-'exportnohistory' => "----
-'''注意:''' 処理能力上の理由により、このフォームによるページの完全な履歴の書き出しは無効化されています。",
+'exportnohistory' => '----
+<strong>注意:</strong> 処理能力上の理由により、このフォームによるページの完全な履歴の書き出しは無効化されています。',
'exportlistauthors' => '各ページの投稿者の完全な一覧を含める',
'export-submit' => '書き出し',
'export-addcattext' => '指定したカテゴリ内のページを追加:',
'allmessagescurrent' => '現在のメッセージ文',
'allmessagestext' => 'これは MediaWiki 名前空間で利用できるシステム メッセージの一覧です。
MediaWiki 全般のローカライズ (地域化) に貢献したい場合は、[https://www.mediawiki.org/wiki/Localisation/ja MediaWiki のローカライズ]や [//translatewiki.net?setlang=ja translatewiki.net] をご覧ください。',
-'allmessagesnotsupportedDB' => "'''\$wgUseDatabaseMessages'''が無効のため、このページを使用できません。",
+'allmessagesnotsupportedDB' => '<strong>$wgUseDatabaseMessages</strong>が無効のため、このページを使用できません。',
'allmessages-filter-legend' => '絞り込み',
'allmessages-filter' => '変更状態により絞り込む:',
'allmessages-filter-unmodified' => '変更なし',
'allmessages-prefix' => '名前の先頭部分で絞り込む:',
'allmessages-language' => '言語:',
'allmessages-filter-submit' => '表示',
+'allmessages-filter-translate' => '翻訳',
# Thumbnails
'thumbnail-more' => '拡大',
'tooltip-pt-watchlist' => '変更をウォッチしているページの一覧',
'tooltip-pt-mycontris' => '自分の投稿の一覧',
'tooltip-pt-login' => 'ログインすることを推奨します。ただし、必須ではありません。',
-'tooltip-pt-anonlogin' => 'ログインすることを推奨します。ただし、必須ではありません。',
'tooltip-pt-logout' => 'ログアウト',
'tooltip-ca-talk' => '本文ページについての議論',
'tooltip-ca-edit' => 'このページを編集できます。保存前にプレビューボタンを使用してください。',
'spam_reverting' => '$1へのリンクを含まない最新の版に差し戻し',
'spam_blanking' => 'すべての版が$1へのリンクを含んでいます。白紙化します。',
'spam_deleting' => 'すべての版が$1へのリンクを含んでいます。削除します。',
-'simpleantispam-label' => "スパム攻撃防止用のチェックです。
-ここに値を決して入力'''しない'''でください。",
+'simpleantispam-label' => 'スパム攻撃防止用のチェックです。
+ここに値を決して入力<strong>しない</strong>でください。',
# Info page
'pageinfo-title' => '「$1」の情報',
'nextdiff' => '新しい編集→',
# Media information
-'mediawarning' => "'''警告:''' この種類のファイルは、悪意があるコードを含んでいる可能性があります。
-実行するとシステムが危険にさらされるおそれがあります。",
-'imagemaxsize' => "画像のサイズ制限: <br />''(ファイルページに対する)''",
+'mediawarning' => '<strong>警告:</strong> この種類のファイルは、悪意があるコードを含んでいる可能性があります。
+実行するとシステムが危険にさらされるおそれがあります。',
+'imagemaxsize' => '画像のサイズ制限: <br /><em>(ファイルページに対する)</em>',
'thumbsize' => 'サムネイルの大きさ:',
'widthheight' => '$1 × $2',
'widthheightpage' => '$1 × $2、$3 {{PLURAL:$3|ページ}}',
'file-info-png-looped' => '繰り返し',
'file-info-png-repeat' => '$1 {{PLURAL:$1|回再生しました}}',
'file-info-png-frames' => '$1 {{PLURAL:$1|フレーム}}',
-'file-no-thumb-animation' => "'''注意: 技術的な制限により、このファイルのサムネイルはアニメーションされません。'''",
-'file-no-thumb-animation-gif' => "'''注意: 技術的な制限により、この画像のような高解像度の GIF 画像の、サムネイルはアニメーションされません。'''",
+'file-no-thumb-animation' => '<strong>注意: 技術的な制限により、このファイルのサムネイルはアニメーションされません。</strong>',
+'file-no-thumb-animation-gif' => '<strong>注意: 技術的な制限により、この画像のような高解像度の GIF 画像の、サムネイルはアニメーションされません。</strong>',
# Special:NewFiles
'newimages' => '新しいファイルのギャラリー',
-'imagelisttext' => "以下は、'''$1'''{{PLURAL:$1|ファイル}}の$2で並べ替えた一覧です。",
+'imagelisttext' => '以下は、<strong>$1</strong>{{PLURAL:$1|ファイル}}の$2で並べ替えた一覧です。',
'newimages-summary' => 'この特別ページでは、最近アップロードされたファイルを表示します。',
'newimages-legend' => '絞り込み',
'newimages-label' => 'ファイル名 (またはその一部):',
'scarytranscludetoolong' => '[URLが長すぎます]',
# Delete conflict
-'deletedwhileediting' => "'''警告:''' このページが、編集開始後に削除されました!",
-'confirmrecreate' => "あなたが編集を開始した後、[[User:$1|$1]] ([[User talk:$1|トーク]]) がこのページを以下の理由で削除しました:
-: ''$2''
-このままこのページを本当に再作成していいか確認してください。",
+'deletedwhileediting' => '<strong>警告:</strong> このページが、編集開始後に削除されました!',
+'confirmrecreate' => 'あなたが編集を開始した後、[[User:$1|$1]] ([[User talk:$1|トーク]]) がこのページを以下の理由で削除しました:
+: <em>$2</em>
+このままこのページを本当に再作成していいか確認してください。',
'confirmrecreate-noreason' => 'あなたが編集を開始した後、[[User:$1|$1]] ([[User talk:$1|トーク]]) がこのページを削除しました。このページを本当に再作成していいかご確認ください。',
'recreate' => '再作成する',
通常のプレビューを試してください。',
# Friendlier slave lag warnings
-'lag-warn-normal' => 'この一覧には、$1 {{PLURAL:$1|秒}}より前の変更が表示されていない可能性があります。',
-'lag-warn-high' => 'データベースサーバー遅延のため、この一覧には、$1 {{PLURAL:$1|秒}}より前の変更が表示されていない可能性があります。',
+'lag-warn-normal' => 'この一覧には $1 {{PLURAL:$1|秒}}前以降の変更内容が表示されていないおそれがあります。',
+'lag-warn-high' => 'データベースサーバーの大幅な遅延のため、この一覧には $1 {{PLURAL:$1|秒}}前以降の変更内容が表示されていないおそれがあります。',
# Watchlist editor
'watchlistedit-numitems' => 'ウォッチリストには {{PLURAL:$1|$1 件のページ}}が登録されています (トークページを除く)。',
# Core parser functions
'unknown_extension_tag' => '不明な拡張機能タグ「$1」です',
-'duplicate-defaultsort' => "'''警告:''' 既定のソートキー「$2」が、その前に書かれている既定のソートキー「$1」を上書きしています。",
+'duplicate-defaultsort' => '<strong>警告:</strong> 既定のソートキー「$2」が、その前に書かれている既定のソートキー「$1」を上書きしています。',
# Special:Version
'version' => 'バージョン情報',
'version-hook-name' => 'フック名',
'version-hook-subscribedby' => '使用個所',
'version-version' => '(バージョン $1)',
-'version-license' => 'ライセンス',
-'version-poweredby-credits' => "このウィキは、'''[https://www.mediawiki.org/ MediaWiki]''' (copyright © 2001-$1 $2) で動作しています。",
+'version-license' => 'MediaWiki のライセンス',
+'version-ext-license' => 'ライセンス',
+'version-ext-colheader-name' => '拡張機能',
+'version-ext-colheader-version' => 'バージョン',
+'version-ext-colheader-license' => 'ライセンス',
+'version-ext-colheader-description' => '説明',
+'version-ext-colheader-credits' => '作者',
+'version-license-title' => '$1 のライセンス',
+'version-license-not-found' => 'この拡張機能には詳細なライセンス情報がありません。',
+'version-credits-title' => '$1 への貢献者情報',
+'version-credits-not-found' => 'この拡張機能には詳細な貢献者情報がありません。',
+'version-poweredby-credits' => 'このウィキは、<strong>[https://www.mediawiki.org/ MediaWiki]</strong> (copyright © 2001-$1 $2) で動作しています。',
'version-poweredby-others' => 'その他',
'version-poweredby-translators' => 'translatewiki.net の翻訳者たち',
'version-credits-summary' => '[[Special:Version|MediaWiki]] に貢献した以下の人たちに感謝します。',
'api-error-overwrite' => '既存のファイルへの上書きは許可されていません。',
'api-error-stashfailed' => '内部エラー: サーバーは一時ファイルを格納できませんでした。',
'api-error-publishfailed' => '内部エラー: サーバーは一時ファイルを発行できませんでした。',
+'api-error-stasherror' => 'ファイルをスタッシュにアップロードする際にエラーが発生しました。',
'api-error-timeout' => 'サーバーが決められた時間内に応答しませんでした。',
'api-error-unclassified' => '不明なエラーが発生しました。',
'api-error-unknown-code' => '不明なエラー:「$1」',
'expand_templates_generate_rawhtml' => 'HTML ソースを表示',
'expand_templates_preview' => 'プレビュー',
+# Unknown messages
+'uploadinvalidxml' => 'アップロードされたファイルに含まれる XML が構文解析できませんでした。',
);
$messages = array(
# User preference toggles
'tog-underline' => 'Garisen ngisoré pranala:',
-'tog-justify' => 'Ratakaké paragrap',
'tog-hideminor' => 'Dhelikaké suntingan cilik ing owah-owahan pungkasan',
'tog-hidepatrolled' => 'Dhelikaké suntingan kapanto ing owah-owahan pungkasan',
'tog-newpageshidepatrolled' => 'Dhelikaké kaca kapanto saka daptar kaca anyar',
'tog-extendwatchlist' => 'Jembaraké daptar pangawasan kanggo nuduhaké kabèh owahan, ora mung sing paling anyar',
-'tog-usenewrc' => 'Owah-owahané paguyuban miturut kaca nèng owah-owahan anyar lan daptar panto (mbutuhaké JavaScript)',
+'tog-usenewrc' => 'Owah-owahané paguyuban miturut kaca nèng owah-owahan anyar lan daptar panto',
'tog-numberheadings' => 'Wènèhana nomer judul secara otomatis',
'tog-showtoolbar' => 'Tuduhna <em>toolbar</em> (batang piranti) panyuntingan (mbutuhaké JavaScript)',
'tog-editondblclick' => 'Sunting kaca nganggo klik ping loro (mbutuhaké JavaScript)',
-'tog-editsection' => 'Fungsèkna panyuntingan sub-bagian ngliwati pranala [sunting]',
'tog-editsectiononrightclick' => 'Fungsèkna panyuntingan sub-bagian mawa klik-tengen ing judul bagian (mbutuhaké JavaScript)',
-'tog-showtoc' => 'Tuduhna daftar isi (kanggo kaca sing nduwé luwih saka 3 sub-bagian)',
'tog-rememberpassword' => 'Émut tembung sandi kula ing peramban punika (salebeting $1 {{PLURAL:$1|dinten|dinten}})',
'tog-watchcreations' => 'Tambahaké kaca sing tak gawé lan berkas sing tak unggah nèng daptar pangawasan',
'tog-watchdefault' => 'Tambahaké kaca lan berkas sing tak sunting nèng daptar pangawasan',
'tog-showhiddencats' => 'Tuduhna kategori sing didelikaké',
'tog-norollbackdiff' => 'Lirwaaké prabédan sawusé nglakokaké sawijining pambalikan.',
'tog-useeditwarning' => 'Èlingaké kula yèn kula ninggalaké suntingan sing durung kasimpen',
+'tog-prefershttps' => 'Nganggo sambungan sing aman rikala mlebet log',
'underline-always' => 'Tansah',
'underline-never' => 'Ora',
'oct' => 'Okt',
'nov' => 'Nov',
'dec' => 'Des',
+'january-date' => 'Januari $1',
+'february-date' => 'Februari $1',
+'march-date' => 'Maret $1',
+'april-date' => 'April $1',
'may-date' => '$1 Mèi',
+'june-date' => 'Juni $1',
+'july-date' => 'Juli $1',
+'august-date' => 'Agustus $1',
'september-date' => '$1 Sèptèmber',
+'october-date' => 'Oktober $1',
'november-date' => '$1 Novèmber',
'december-date' => '$1 Dèsèmber',
'articlepage' => 'nDeleng artikel',
'talk' => 'Dhiskusi',
'views' => 'Tampilan',
-'toolbox' => 'Kothak piranti',
+'toolbox' => 'Piranti',
'userpage' => 'Ndeleng kaca panganggo',
'projectpage' => 'Ndeleng kaca proyèk',
'imagepage' => 'Deleng kaca berkas',
'youhavenewmessages' => 'Panjenengan kagungan $1 ($2).',
'youhavenewmessagesfromusers' => 'Sampéyan nduwé $1 saka {{PLURAL:$3|panganggo liya|$3 panganggo}} ($2).',
'youhavenewmessagesmanyusers' => 'Sampéyang nduwé $1 saka akèh panganggo ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|layang anyar|layang anyar}}',
-'newmessagesdifflinkplural' => '{{PLURAL:$1|owahan|owahan}} pungkasan',
+'newmessageslinkplural' => '{{PLURAL:$1|layang anyar|999=layang anyar}}',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|owahan|999=owahan}} pungkasan',
'youhavenewmessagesmulti' => 'Panjenengan olèh pesen-pesen anyar $1',
'editsection' => 'sunting',
'editold' => 'sunting',
'nstab-main' => 'Artikel',
'nstab-user' => 'Panganggo',
'nstab-media' => 'Media',
-'nstab-special' => 'Istiméwa',
+'nstab-special' => 'Astamiwa',
'nstab-project' => 'Proyek',
'nstab-image' => 'Gambar',
'nstab-mediawiki' => 'Pariwara',
# General errors
'error' => 'Kasalahan',
'databaseerror' => 'Kasalahan database',
+'databaseerror-text' => 'Ana kerusakan ing basis data (query error).
+
+Mungkin ana masalah ing software-e.',
+'databaseerror-textcl' => 'Ana kerusakan ing basis data (query error).',
+'databaseerror-query' => 'Query: $1',
+'databaseerror-function' => 'Function: $1',
+'databaseerror-error' => 'Error: $1',
'laggedslavemode' => 'Pènget: Kaca iki mbokmenawa isiné dudu pangowahan pungkasan.',
'readonly' => 'Database dikunci',
'enterlockreason' => 'Lebokna alesan panguncèn, kalebu uga prakiran kapan kunci bakal dibuka',
'cannotdelete-title' => 'Ora bisa mbusak kaca "$1"',
'delete-hook-aborted' => "Pambusakan dibatalaké déning ''hook''.
Ora ana alesané.",
+'no-null-revision' => 'Ora isa nggawe revisi \'null\' anyar kanggo kaca "$1"',
'badtitle' => 'Judhulé ora sah',
'badtitletext' => 'Judhul kaca sing panjenengan ora bisa dituduhaké, kosong, utawa dadi judhul antar-basa utawa judhul antar-wiki. Iku bisa uga ana sawijining utawa luwih aksara sing ora bisa didadèkaké judhul.',
'perfcached' => 'Data iki mung dijupuk saka papan singgahan lan mungkin ora kaanyaran. Maksimum {{PLURAL:$1|sak asil|$1 asil}} sumadhiya nèng papan singgahan.',
'customcssprotected' => 'Sampéyan ora dililakaké nyunting kaca CSS iki amarga kaisi pangaturan pribadi saka panganggo liya.',
'customjsprotected' => 'Sampéyan ora dililakaké nyunting kaca JavaScript iki amarga kaisi pangaturan pribadi saka panganggo liya.',
'mycustomcssprotected' => 'Sampèyan ora duwé idin kanggo ngowah kaca CSS iki.',
+'mycustomjsprotected' => 'Sampèyan ora duwé idin kanggo ngowah kaca JavaScript iki.',
+'myprivateinfoprotected' => 'Sampèyan ora duwé idin kanggo ngowah informasi privat sampèyan.',
+'mypreferencesprotected' => 'Sampèyan ora duwé idin kanggo ngowah preferensi sampèyan.',
'ns-specialprotected' => 'Kaca ing bilik nama astaméwa utawa kusus, ora bisa disunting.',
'titleprotected' => "Irah-irahan iki direksa ora olèh digawé déning [[User:$1|$1]].
Alesané yaiku ''$2''.",
'invalidtitle-knownnamespace' => 'Irah-irahan ora sah mawa bilik jeneng "$2" lan tèks "$3"',
'invalidtitle-unknownnamespace' => 'Judhul ora sah mawa angka $1 lan tèks "$2" bilik jeneng sing ora dingertèni',
'exception-nologin' => 'Durung mlebu log',
-'exception-nologin-text' => 'Kaca utawa kelakon iki mbutuhaké mlebu log nèng wiki iki dhisik.',
+'exception-nologin-text' => 'Tulung [[Special:Userlogin|mlebu log]] dhisik kanggo ngakses kaca utawa kelakon iki.',
+'exception-nologin-text-manual' => 'Tulung $1 kanggo ngakses kaca utawa kelakon iki.',
# Virus scanner
'virus-badscanner' => "Kasalahan konfigurasi: pamindai virus ora dikenal: ''$1''",
# Login and logout pages
'logouttext' => "'''Sampéyan wis metu log'''
-Sampéyan isa nganggo {{SITENAME}} sacara anonim, utawa isa <span class='plainlinks'>[$1 mlebu log manèh]</span> kanthi jeneng panganggo sing padha utawa beda.
-
Cathet yèn sapérangan kaca mungkin isih nampilaké kayata sampéyan isih mlebu log, kuwi bisa ilang yèn sampéyan ngresiki ''cache'' pramban sampéyan.",
'welcomeuser' => 'Sugeng Rawuh, $1!',
'welcomecreation-msg' => 'Akun panjenengan wis kacipta. Aja lali nata konfigurasi [[Special:Preferences|preferensi {{SITENAME}}]] panjenengan.',
'yourname' => 'Asma pangangeman',
'userlogin-yourname' => 'Jeneng panganggo',
'userlogin-yourname-ph' => 'Lebokaké jenengné panganggo',
+'createacct-another-username-ph' => 'Lebokna jeneng panganggo:',
'yourpassword' => 'Tembung sandhi:',
+'userlogin-yourpassword' => 'Tembung sandhi',
+'userlogin-yourpassword-ph' => 'Lebokna tembung sandhi',
+'createacct-yourpassword-ph' => 'Lebokna tembung sandhi',
'yourpasswordagain' => 'Balènana tembung sandhi',
+'createacct-yourpasswordagain' => 'Konfirmasi tembung sandhi',
+'createacct-yourpasswordagain-ph' => 'Lebokna tembung sandhi maneh',
'remembermypassword' => 'Émut tembung sandi kula (salebeting $1 {{PLURAL:$1|dinten|dinten}})',
+'userlogin-remembermypassword' => 'Gawe supaya aku tetep mlebet log terus',
+'userlogin-signwithsecure' => 'Nganggo koneksi aman',
'yourdomainname' => 'Dhomain panjenengan',
'password-change-forbidden' => 'Sampéyan ora bisa ngganti tembung sandhi nèng wiki iki.',
'externaldberror' => 'Ana kasalahan otèntikasi basis dhata èksternal utawa panjenengan ora pareng nglakoni pemutakhiran marang akun èksternal panjenengan.',
'logout' => 'Oncat',
'userlogout' => 'Metu log',
'notloggedin' => 'Durung mlebu log',
+'userlogin-noaccount' => 'Durung kagungan akun?',
+'userlogin-joinproject' => 'Gabung {{SITENAME}}',
'nologin' => "Durung kagungan asma panganggo? '''$1'''.",
'nologinlink' => 'Ndaftaraké akun anyar',
'createaccount' => 'Nggawé akun anyar',
'gotaccount' => "Wis kagungan akun? '''$1'''.",
'gotaccountlink' => 'Mlebu',
'userlogin-resetlink' => 'Lali rincian mlebu log Sampéyan?',
+'userlogin-resetpassword-link' => 'Sampéyan kélangan tembung sandhi?',
+'helplogin-url' => 'Help:Mlebet log',
+'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Pitulung kangge mlebet log]]',
+'userlogin-loggedin' => 'Sampeyan sampun mlebet log dadi {{GENDER:$1|$1}}.
+Gunakna formulir ing ngisor iki kanggo mlebet log dadi panganggo liyane.',
+'userlogin-createanother' => 'Gawé akun anyar',
+'createacct-join' => 'Lebokna informasi sampeyan ing ngisor iki.',
+'createacct-another-join' => 'Lebokna informasi akun anyar ing ngisor iki.',
+'createacct-emailrequired' => 'Alamat layang èlèktronik',
+'createacct-emailoptional' => 'Alamat layang èlèktronik (ora kudu)',
+'createacct-email-ph' => 'Lebokna alamat layang èlèktronik sampeyan',
+'createacct-another-email-ph' => 'Lebokna alamat layang èlèktronik',
'createaccountmail' => 'Nganggoa sandi sauntara sembarang lan kirimna liwat layang e-mail ing ngisor iki',
+'createacct-realname' => 'Jeneng asli (ora kudu)',
'createaccountreason' => 'Alesan:',
+'createacct-reason' => 'Alesan',
+'createacct-reason-ph' => 'Kenapa sampeyan nggawe akun liyane',
+'createacct-captcha' => 'Periksa kamanan',
+'createacct-imgcaptcha-ph' => 'Lebokna tulisan ing dhuwur',
+'createacct-submit' => 'Gawé akun',
+'createacct-another-submit' => 'Gawé akun anyar',
+'createacct-benefit-heading' => '{{SITENAME}} digawe karo wong-wong kaya sampeyan.',
+'createacct-benefit-body1' => '{{PLURAL:$1|owahan|owahan}}',
+'createacct-benefit-body2' => '{{PLURAL:$1|kaca|kaca}}',
+'createacct-benefit-body3' => '{{PLURAL:$1|kontributor|kontributor}} keri dhewe',
'badretype' => 'Sandhi panjenengan ora gathuk',
'userexists' => 'Jeneng panganggo sing dilebokaké lagi dianggo.
Mangga pilih jeneng liya.',
'loginerror' => 'Kasalahan mlebu log',
+'createacct-error' => 'Ora isa nggawe akun',
'createaccounterror' => 'Ora bisa nyipta akun: $1',
'nocookiesnew' => "Rékening utawa akun panganggo panjenengan wis digawé, nanging panjenengan durung mlebu log. {{SITENAME}} nggunakaké ''cookies'' kanggo log panganggo. ''Cookies'' ing panjlajah wèb panjengengan dipatèni. Mangga diaktifaké lan mlebu log manèh mawa jeneng panganggo lan tembung sandhi panjenengan.",
'nocookieslogin' => "{{SITENAME}} nggunakaké ''cookies'' kanggo log panganggoné. ''Cookies'' ing panjlajah wèb panjenengan dipatèni. Mangga ngaktifaké manèh lan coba manèh.",
'noemailcreate' => 'Panjenengan kudu maringi alamat e-mail sing absah',
'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.',
+'eauthentsent' => 'Sawijining layang élèktronik (e-mail) kanggo ndhedhes (konfirmasi) wis dikirim menyang alamat layang élèktronik sampeyan.
+
+Sadhurunge layang élèktronik liyane dikirim menyang akun kuwi, sampeyan kudu melu parentah ing layang kuwi, kanggo mastikne yen alamat layang kuwi bener-bener dhuweke sampeyan.',
'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.',
-'emailauthenticated' => 'Alamat layang élèktronik (e-mail) panjenengan wis didhedhes (dikonfirmasi) ing $3, $2.',
-'emailnotauthenticated' => 'Alamat layang élèktronik panjenengan durung didhedhes (dikonfirmasi). Sadurungé didhedhes, panjenengan ora bisa nganggo fitur layang élèktronik (e-mail).',
+'emailauthenticated' => 'Alamat layang élèktronik (e-mail) panjenengan wis didhedhes (dikonfirmasi) ing tanggal $2, jam $3.',
+'emailnotauthenticated' => 'Alamat layang élèktronik panjenengan durung didhedhes (dikonfirmasi).
+
+Sadurungé didhedhes, panjenengan ora bisa nganggo fitur layang élèktronik (e-mail) ing ngisor iki.',
'noemailprefs' => 'Panjenengan kudu milih alamat e-mail supaya bisa nganggo fitur iki.',
'emailconfirmlink' => 'Ndhedhes (konfirmasi) alamat e-mail panjenengan',
'invalidemailaddress' => 'Alamat e-mail iki ora bisa ditampa amarga formaté ora bener. Tulung lebokna alamat mawa format sing bener utawa kosongaké waé isèn kasebut.',
'cannotchangeemail' => 'Alamat layang èlèktronik akun ora bisa diganti nèng wiki iki.',
'emaildisabled' => 'Situs iki ora bisa ngirim layang èlèktronik.',
'accountcreated' => 'Akun wis kacipta.',
-'accountcreatedtext' => 'Akun panganggo kanggo $1 wis digawé.',
+'accountcreatedtext' => 'Akun panganggo kanggo [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|wicara]]) wis digawé.',
'createaccount-title' => 'Gawé rékening kanggo {{SITENAME}}',
'createaccount-text' => 'Ana wong sing nggawé sawijining akun utawa rékening kanggo alamat e-mail panjenengan ing {{SITENAME}} ($4) mawa jeneng "$2" lan tembung sandi "$3". Panjenengan disaranaké kanggo mlebu log lan ngganti tembung sandi panjenengan saiki.
Panjenengan bisa nglirwakaké pesen iki yèn akun utawa rékening iki digawé déné sawijining kaluputan.',
'usernamehasherror' => 'Jeneng panganggo ora bisa ngandhut tandha pager',
'login-throttled' => 'Panjenengan wis kakèhan njajal mlebu log.
-Tulung nunggu dhisik sadurungé njajal manèh.',
+Tulung nunggu dhisik $1 sadurungé njajal manèh.',
'login-abort-generic' => 'Sampéyan ora suksès mlebu log - Dibatalaké',
'loginlanguagelabel' => 'Basa: $1',
'suspicious-userlogout' => 'Panjaluk panjenengan supaya metu ditolak amarga katoné panjlajah internt utawa proksi panyinggah.',
+'createacct-another-realname-tip' => 'Jeneng asli ora kudu dilebokake.
+
+Yen sampeyan milih nglebokake jeneng asli, jeneng kuwi bakal dinggo ngwenehi atribusi kanggo karya-karyane.',
# Email sending
'php-mail-error-unknown' => 'Kasalahan ora dingertèni nèng piguna mail() PHP.',
'newpassword' => 'Tembung sandi anyar:',
'retypenew' => 'Ketik ulang tembung sandi anyar:',
'resetpass_submit' => 'Nata tembung sandhi lan mlebu log',
-'changepassword-success' => 'Tembung sandhi panjenengan wis suksès diowahi! Saiki mrosès mlebu log panjenengan...',
+'changepassword-success' => 'Tembung sandhi panjenengan wis suksès diowahi!',
'resetpass_forbidden' => 'Tembung sandhi ora bisa diganti',
'resetpass-no-info' => 'Panjenengan kudu mlebu log kanggo ngaksès kaca iki sacara langsung.',
'resetpass-submit-loggedin' => 'Ganti tembung sandi',
# Special:PasswordReset
'passwordreset' => 'Balèni setèl tembung sandhi',
+'passwordreset-text-one' => 'Lengkapana formulir iki kanggo nampa tembung sandhi sementara lewat layang elektronik.',
+'passwordreset-text-many' => '{{PLURAL:$1|Isinen salah sijine kotak ing ngisor iki kanggo nampa tembung sandhi sementara lewat layang elektronik.}}',
'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-emaildisabled' => 'Fitur layang elektronik wis dipateni ing wiki iki.',
'passwordreset-username' => 'Jeneng panganggo:',
'passwordreset-domain' => 'Domain:',
'passwordreset-capture' => 'Delok layang èlèktronik sing diasilaké?',
Tembung sandhi sawetara: $2',
'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',
+'passwordreset-emailerror-capture' => 'Layang èlèktronik pangèling tembung sandhi wis digawe, yaiku sing ditampilaké nèng ngisor iki, nanging ora kasil dikirim ing {{GENDER:$2|panganggo}}: $1',
# Special:ChangeEmail
'changeemail' => 'Ganti alamat layang èlèktronik',
'changeemail-submit' => 'Ganti layang èlèktronik',
'changeemail-cancel' => 'Batal',
+# Special:ResetTokens
+'resettokens' => 'Reset token',
+'resettokens-text' => 'Anda dapat me-reset Token yang memungkinkan akses ke data pribadi tertentu yang terkait dengan akun Anda di sini.
+
+Anda harus melakukannya jika Anda secara tidak sengaja berbagi dengan seseorang atau jika akun Anda telah disusupi.',
+'resettokens-no-tokens' => 'Ora ana token sing bisa direset.',
+'resettokens-legend' => 'Reset token',
+'resettokens-tokens' => 'Token:',
+'resettokens-token-label' => '$1 (nilai saiki: $2)',
+'resettokens-watchlist-token' => 'Token kangge sindikasi web (Atom/RSS) saking [[Special:Watchlist|pangowahan ing daptar pangawasan sampeyan]]',
+'resettokens-done' => 'Reset token.',
+'resettokens-resetbutton' => 'Reset token sing dipilih',
+
# Edit page toolbar
'bold_sample' => 'Tèks iki bakal dicithak kandel',
'bold_tip' => 'Cithak kandel',
Katoné kaca iki wis dibusak.',
'edit-conflict' => 'Konflik panyuntingan.',
'edit-no-change' => 'Suntingan panjenengan dilirwakaké amerga panjenengan ora nglakoni pangowahan apa-apa ing tèks.',
+'postedit-confirmation' => 'Pangowahan sampéyan wis disimpen!',
'edit-already-exists' => 'Ora bisa nggawé kaca anyar.
Amerga wis ana.',
'defaultmessagetext' => 'Tèks layang gawan',
'content-failed-to-parse' => 'Gagal menjabarkan konten $2 untuk model $1: $3',
'invalid-content-data' => 'Data konten ora sah',
'content-not-allowed-here' => 'Konten "$1" ora oleh ing kaca [[$2]]',
+'editwarning-warning' => 'Yen sampeyan ninggalake kaca niki, pangowahan sampeyan bakal ilang.
+Yen sampeyan wis mlebet log, sampeyan saged mateni peringatan niki lewat preferensi "Panyuntingan" sampeyan.',
# Content models
'content-model-wikitext' => 'teks wiki',
'undo-failure' => 'Suntingan iki ora bisa dibatalakén amerga ana konflik panyuntingan antara.',
'undo-norev' => 'Suntingan iki ora bisa dibatalaké amerga ora ana utawa wis dibusak.',
'undo-summary' => '←Mbatalaké revisi $1 déning [[Special:Contributions/$2|$2]] ([[User talk:$2|Dhiskusi]])',
+'undo-summary-username-hidden' => 'Batalna revisi $1 saking panganggo kang didhelikake',
# Account creation failure
'cantcreateaccounttitle' => 'Akun ora bisa digawé',
'cantcreateaccount-text' => "Saka alamat IP iki ('''$1''') ora diparengaké nggawé akun utawa rékening. Sing mblokir utawa ora marengaké iku [[User:$3|$3]].
Alesané miturut $3 yaiku ''$2''",
+'cantcreateaccount-range-text' => 'Nggawe akun saking alamat IP "$1", sing termasuk IP sampeyan (\'\'\'$4\'\'\'), sampun diblokir kaliyan [[User:$3|$3]].
+
+Alesan pamblokiran yaiku "$2"',
# History pages
'viewpagelogs' => 'Mirsani log kaca iki',
Pangurus {{SITENAME}} liyané bakal tetep bisa ngaksès isi sing kadhelikaké iku lan bisa mbatalaké pambusakan ngliwati antarmuka sing padha, kajaba ana pawatesan liya saka operator situs.",
'revdelete-confirm' => 'Mangga pesthèkaké yèn Sampéyan pancèn kudu nglakoni iki, yèn Sampéyan ngerti akibaté, lan yèn Sampéyan ngakoni iki cocok karo [[{{MediaWiki:Policy-url}}|kawicakan]].',
'revdelete-suppress-text' => "Pandhelikan révisi '''mung''' bisa dipigunakaké kanggo kasus ing ngisor:
+* Informasi sing kagolong pitnah
* Informasi pribadi sing kurang pantes
-*: ''alamat omah lan nomer telepon, nomer kartu idhèntitas, lan sapanunggalané.''",
+*: ''alamat omah lan nomer telepon, nomer kartu idhèntitas, lsp..''",
'revdelete-legend' => 'Atur watesan:',
-'revdelete-hide-text' => 'Dhelikna tèks revisi',
+'revdelete-hide-text' => 'Tèks revisi',
'revdelete-hide-image' => 'Dhelikna isi berkas',
'revdelete-hide-name' => 'Dhelikna tindhakan lan targèt',
-'revdelete-hide-comment' => 'Tudhuhna/dhelikan ringkesan suntingan',
-'revdelete-hide-user' => 'Dhelikan jeneng panganggo/IP penyunting',
+'revdelete-hide-comment' => 'Ringkesan suntingan',
+'revdelete-hide-user' => 'Jeneng panganggo/alamat IP',
'revdelete-hide-restricted' => 'Uga dhelikna data saka pangurus lan panganggo liyané',
'revdelete-radio-same' => '(Aja diowahi)',
-'revdelete-radio-set' => 'Ya',
-'revdelete-radio-unset' => 'Ora',
+'revdelete-radio-set' => 'Kadhelikake',
+'revdelete-radio-unset' => 'Kethok',
'revdelete-suppress' => 'Uga dhelikan saka pangurus',
'revdelete-unsuppress' => 'Busak watesan ing revisi sing dibalèkaké',
'revdelete-log' => 'Alesan:',
'compareselectedversions' => 'Bandhingna vèrsi kapilih',
'showhideselectedversions' => 'Tampilaké/dhelikaké révisi kapilih',
'editundo' => 'batalna',
-'diff-multi' => '({{PLURAL:$1Siji rèvisi sedhengan|$1 rèvisi sedhengan}} déning {{PLURAL:$2|sak panganggo|$2 panganggo}} ora dituduhaké)',
+'diff-empty' => '(Ora ana bedane)',
'diff-multi-manyusers' => '({{PLURAL:$1Siji rèvisi sedhengan|$1 rèvisi sedhengan}} déning luwih saka $2 {{PLURAL:$2|panganggo|panganggo}} ora dituduhaké)',
'difference-missing-revision' => '{{PLURAL:$2|Sak pambenahan|$2 pambenahan}} saka prabédan iki ($1) {{PLURAL:$2|ora ditemokaké|ora ditemokaké}}.
'powersearch-togglenone' => 'Ora ana',
'search-external' => 'Panggolèkan èkstèrnal',
'searchdisabled' => 'Sawetara wektu iki panjenengan ora bisa nggolèk mawa fungsi golèk {{SITENAME}}. Kanggo saiki mangga panjenengan bisa golèk nganggo Google. Nanging isi indèks Google kanggo {{SITENAME}} bisa waé lawas lan durung dianyari.',
+'search-error' => 'Ana kasalahan wektu nggoleki: $1',
# Preferences page
'preferences' => 'Preferensi (pilihan)',
'mypreferences' => 'Préferènsi',
'prefs-edits' => 'Gunggungé suntingan:',
+'prefsnologintext2' => 'Tulung $1 kanggo ngganti preferensi sampeyan.',
'prefs-skin' => 'Kulit',
'skin-preview' => 'Pratilik',
'datedefault' => 'Ora ana préferènsi',
'rows' => 'Larikan:',
'columns' => 'Kolom:',
'searchresultshead' => 'Panggolèkan',
-'resultsperpage' => 'Cacahing klik saben kaca:',
'stub-threshold' => 'Ambang wates kanggo format <a href="#" class="stub">pranala rintisan</a>:',
'stub-threshold-disabled' => 'Dipatèni',
'recentchangesdays' => 'Cacahé dina sing dituduhaké ing owah-owahan pungkasan:',
'recentchangesdays-max' => '(maksimum $1 {{PLURAL:$1|dina|dina}})',
'recentchangescount' => 'Cacahé suntingan sing ditampilaké:',
'prefs-help-recentchangescount' => 'Iki klebu owah-owahan pungkasan, kaca sajarah, lan log.',
+'prefs-help-watchlist-token2' => 'Ini adalah kunci rahasia (token) ke web feed dari daftar pantauan Anda.
+Siapa saja yang tahu akan dapat melihat daftar pantauan Anda, jadi jangan dibagikan.
+[[Special:ResetTokens|Klik di sini jika Anda perlu menyetel ulang]].',
'savedprefs' => 'Préferènsi Panjenengan wis disimpen',
'timezonelegend' => 'Zona wektu:',
'localtime' => 'Wektu saenggon:',
'prefs-dateformat' => 'Format tanggal',
'prefs-timeoffset' => 'Format wektu',
'prefs-advancedediting' => 'Pilihan sabanjuré',
+'prefs-editor' => 'Panyunting',
+'prefs-preview' => 'Pratayang',
'prefs-advancedrc' => 'Opsi lanjutan',
'prefs-advancedrendering' => 'Opsi lanjutan',
'prefs-advancedsearchoptions' => 'Opsi lanjutan',
'prefs-displayrc' => 'Opsi tampilan',
'prefs-displaysearchoptions' => 'Opsi tampilan',
'prefs-displaywatchlist' => 'Opsi tampilan',
+'prefs-tokenwatchlist' => 'Token',
'prefs-diffs' => 'Prabédan',
+'prefs-help-prefershttps' => 'Preferensi niki bakal diaktifne yen sampeyan mlebet log sabanjure.',
+'prefs-tabs-navigation-hint' => 'Tip: Sampeyan isa nganggo dapat menggunakan tombol panah kiwa lan tengen kanggo navigasi tab-tab ing daftar tab.',
# User preference: email validation using jQuery
'email-address-validity-valid' => 'Alamat layang èlèktronik kayané sah',
'userrights-notallowed' => 'Sampéyan ora nduwé idin kanggo nambah utawa nyuda hak-hak panganggo.',
'userrights-changeable-col' => 'Grup sing bisa panjenengan owahi',
'userrights-unchangeable-col' => 'Grup sing ora bisa diowahi panjenengan',
+'userrights-conflict' => 'Konflik pangowahan hak-hak panganggo! Tulung ditinjau maneh lan konfirmasi Pangowahan sampeyan.',
+'userrights-removed-self' => 'Sampeyan wis berhasil ngilangake hak-hak sampeyan. Nuli, sampeyan ora isa ngakses kaca niki malih.',
# Groups
'group' => 'Kelompok:',
'right-unblockself' => 'Bukak blokirané dhéwéké',
'right-protect' => 'Ganti undhaking pangreksan lan owah kaca-kaca sing direksa',
'right-editprotected' => 'Owah kaca-kaca sing direksa (tanpa pangreksan runtun)',
+'right-editsemiprotected' => 'Owah kaca-kaca sing direksa dadi "{{int:protect-level-autoconfirmed}}"',
'right-editinterface' => 'Sunting interface (antarmuka) panganggo',
'right-editusercssjs' => 'Sunting berkas-berkas CSS lan JS panganggo liya',
'right-editusercss' => 'Sunting berkas-berkas CSS panganggo liya',
'right-edituserjs' => 'Sunting berkas-berkas JS panganggo liya',
+'right-editmyusercss' => 'Owahi berkas CSS panganggo sampeyan',
+'right-editmyuserjs' => 'Owahi berkas JavaScript panganggo sampeyan',
+'right-viewmywatchlist' => 'Dheleng daftar pangawasan sampeyan',
+'right-editmywatchlist' => 'Owahi daftar pangawasan sampeyan. Cathetan: ana cara liyane kanggo nambahi kaca menyang daftar, sanadyan ora duwe hak iki.',
+'right-viewmyprivateinfo' => 'Dheleng data pribadi sampeyan (kayata alamat layang elektronik, jeneng asli)',
+'right-editmyprivateinfo' => 'Owahi data pribadi sampeyan (kayata alamat layang elektronik, jeneng asli)',
+'right-editmyoptions' => 'Owahi preferensi sampeyan',
'right-rollback' => 'Sacara gelis mbalèkaké panganggo pungkasan sing nyunting kaca tartamtu',
'right-markbotedits' => 'Tandhanana suntingan pambalèkan minangka suntingan bot',
'right-noratelimit' => 'Ora dipengaruhi déning wates cacahing suntingan.',
'action-userrights-interwiki' => 'ngowahi hak aksès saka panganggo ing wiki liya',
'action-siteadmin' => 'ngunci utawa mbukak kunci basis data',
'action-sendemail' => 'kirim layang èlèktronik',
+'action-editmywatchlist' => 'owahi daftar pantauan sampeyan',
+'action-viewmywatchlist' => 'dheleng daftar pantauan sampeyan',
+'action-viewmyprivateinfo' => 'dheleng informasi pribadi sampeyan',
+'action-editmyprivateinfo' => 'owahi informasi pribadi sampeyan',
# Recent changes
'nchanges' => '$1 {{PLURAL:$1|pangowahan|owah-owahan}}',
+'enhancedrc-since-last-visit' => '$1 {{PLURAL:$1|saka keri dhewe mrene}}',
+'enhancedrc-history' => 'sajarah',
'recentchanges' => 'Owah-owahan',
'recentchanges-legend' => 'Pilihan owah-owahan pungkasan',
'recentchanges-summary' => 'Runutna owah-owahan pungkasan ing wiki iki ing kaca iki.',
+'recentchanges-noresult' => 'Ora ana pangowahan ing periode sing diwiwiti kriteria iki.',
'recentchanges-feed-description' => "Urutna owah-owahan anyar ing wiki ing ''feed'' iki.",
'recentchanges-label-newpage' => 'Suntingan iki gawé kaca anyar',
'recentchanges-label-minor' => 'Iki suntingan sithik',
'recentchanges-label-bot' => 'Suntingan iki diayahi déning bot',
'recentchanges-label-unpatrolled' => 'Suntingan iki durung dipatroli',
-'recentchanges-legend-newpage' => '$1 - kaca anyar',
+'recentchanges-label-plusminus' => 'Gedhene kaca wis diowahi segede niki.',
+'recentchanges-legend-heading' => "'''Katrangan:'''",
+'recentchanges-legend-newpage' => '(dhelengen uga: [[Special:NewPages|daftar kaca anyar]])',
+'recentchanges-legend-plusminus' => "(''±123'')",
'rcnotefrom' => 'Ing ngisor iki owah-owahan wiwit <strong>$2</strong> (kapacak nganti <strong>$1</strong> owah-owahan).',
'rclistfrom' => 'Saiki nuduhaké owah-owahan wiwit tanggal $1',
'rcshowhideminor' => '$1 suntingan sithik',
'rcshowhidebots' => '$1 bot',
-'rcshowhideliu' => '$1 panganggo mlebu log',
+'rcshowhideliu' => '$1 panganggo sing wis ndaptar',
'rcshowhideanons' => '$1 panganggo anonim',
'rcshowhidepatr' => '$1 suntingan sing dipatroli',
'rcshowhidemine' => '$1 suntinganku',
'rc-old-title' => 'wigatiné digawé minangka "$1"',
# Recent changes linked
-'recentchangeslinked' => 'Pranala Pilihan',
-'recentchangeslinked-feed' => 'Pranala Pilihan',
-'recentchangeslinked-toolbox' => 'Pranala Pilihan',
+'recentchangeslinked' => 'Pangowahan sing terkait',
+'recentchangeslinked-feed' => 'Pangowahan sing terkait',
+'recentchangeslinked-toolbox' => 'Pangowahan sing terkait',
'recentchangeslinked-title' => 'Owah-owahan sing ana gandhèngané karo "$1"',
'recentchangeslinked-summary' => "Kaca astaméwa (kaca kusus) iki mènèhi daftar owah-owahan pungkasan ing kaca-kaca sing kagandhèng (utawa anggota sawijining kateogri). Kaca sing [[Special:Watchlist|panjenengan awasi]] ditandhani '''kandel'''.",
'recentchangeslinked-page' => 'Jeneng kaca:',
'reuploaddesc' => 'Bali ing formulir pamotan',
'upload-tryagain' => 'Kirim déskripsi berkas sing wis diowah',
'uploadnologin' => 'Durung mlebu log',
-'uploadnologintext' => 'Sampéyan kudu [[Special:UserLogin|mlebu log]] supaya bisa ngunggah berkas.',
+'uploadnologintext' => 'Sampéyan kudu $1 supaya bisa ngunggah berkas.',
'upload_directory_missing' => 'Direktori pamunggahan ($1) ora ditemokaké lan ora bisa digawé déning server wèb.',
'upload_directory_read_only' => 'Dirèktori pangunggahan ($1) ora bisa ditulis déning server wèb.',
'uploaderror' => 'Kaluputan pangunggahan berkas',
'listfiles_size' => 'Ukuran (bita)',
'listfiles_description' => 'Dèskripsi',
'listfiles_count' => 'Vèrsi',
+'listfiles-show-all' => 'Termasuk gambar versi lawas',
+'listfiles-latestversion' => 'Versi saiki',
+'listfiles-latestversion-yes' => 'Iya',
+'listfiles-latestversion-no' => 'Ora',
# File description page
'file-anchor-link' => 'Gambar',
'randompage' => 'Sembarang kaca',
'randompage-nopages' => 'Ora ana kaca ing {{PLURAL:$2||}}bilik jeneng iki:$1.',
+# Random page in category
+'randomincategory' => 'Sembarang kaca ing kategori',
+'randomincategory-invalidcategory' => '"$1" dudu jeneng kategori sing apik.',
+'randomincategory-nopages' => 'Ora ana kaca ing kategori [[:Category:$1|$1]].',
+'randomincategory-selectcategory' => 'Dheleng kaca sembarang saking kategori: $1 $2.',
+'randomincategory-selectcategory-submit' => 'Golèk',
+
# Random redirect
'randomredirect' => 'Pangalihan sembarang',
'randomredirect-nopages' => 'Ora ana pangalihan ing bilik jeneng "$1".',
'pageswithprop-text' => 'Kaca iki njlèntèhaké kaca-kaca sing nganggo ubarampé astamiwa.',
'pageswithprop-prop' => 'Arané ubarampé:',
'pageswithprop-submit' => 'Nuju',
+'pageswithprop-prophidden-long' => 'nilai properti teks dawa didhelikake ($1 kilobita)',
+'pageswithprop-prophidden-binary' => 'nilai properti biner didhelikake ($1 kilobita)',
'doubleredirects' => 'Pangalihan dobel',
'doubleredirectstext' => 'Kaca iki ngandhut daftar kaca sing ngalih ing kaca pangalihan liyané.
'ninterwikis' => '$1 {{PLURAL:$1|interwiki|interwiki}}',
'nlinks' => '$1 {{PLURAL:$1|pranala|pranala}}',
'nmembers' => '$1 {{PLURAL:$1|anggota|anggota}}',
+'nmemberschanged' => '$1 → $2 {{PLURAL:$2|anggota|anggota}}',
'nrevisions' => '$1 {{PLURAL:$1|revisi|revisi}}',
'nviews' => 'Wis kaping $1 {{PLURAL:$1|dituduhaké|dituduhaké}}',
'nimagelinks' => 'Kanggo nèng {{PLURAL:$1|kaca|kaca}}',
'mostrevisions' => 'Kaca mawa pangowahan sing akèh dhéwé',
'prefixindex' => 'Kabèh kaca mawa ater-ater',
'prefixindex-namespace' => 'Kabèh kaca mawa ater-ater (bilik jeneng $1)',
+'prefixindex-strip' => 'Hapus awalan saking daftar',
'shortpages' => 'Kaca cendhak',
'longpages' => 'Kaca dawa',
'deadendpages' => 'Kaca-kaca buntu (tanpa pranala)',
'protectedpages' => 'Kaca sing direksa',
'protectedpages-indef' => 'Namung pangreksan ora langgeng waé',
'protectedpages-cascade' => 'Amung kaca rineksan kang runtut',
+'protectedpages-noredirect' => 'Dhelikna alihan',
'protectedpagesempty' => 'Saat ini tidak ada halaman yang sedang dilindungi.',
'protectedtitles' => 'Irah-irahan sing direksa',
'protectedtitlesempty' => 'Ora ana irah-irahan utawa judhul sing direksa karo paramèter-paramèter iki.',
'listusers' => 'Daftar panganggo',
'listusers-editsonly' => 'Tampilaké mung panganggo sing nduwèni kontribusi',
'listusers-creationsort' => 'Urut miturut tanggal digawé',
+'listusers-desc' => 'Urutna mudhun',
'usereditcount' => '$1 {{PLURAL:$1|suntingan|suntingan}}',
'usercreated' => '{{GENDER:$3|Digawé}} $1 wanci $2',
'newpages' => 'Kaca anyar',
'notanarticle' => 'Dudu kaca artikel',
'notvisiblerev' => 'Révisi wis dibusak',
'watchlist-details' => 'Ngawasaké {{PLURAL:$1|$1 kaca|$1 kaca}}, ora kalebu kaca-kaca dhiskusi.',
-'wlheader-enotif' => 'Notifikasi e-mail diaktifaké.',
+'wlheader-enotif' => 'Notifikasi layang elektronik diaktifaké.',
'wlheader-showupdated' => "Kaca-kaca sing wis owah wiwit ditiliki panjenengan kaping pungkasan, dituduhaké mawa '''aksara kandel'''",
'watchmethod-recent' => 'priksa daftar owah-owahan anyar kanggo kaca sing diawasi',
'watchmethod-list' => 'priksa kaca sing diawasi kanggo owah-owahan anyar',
'watchlistcontains' => 'Daftar pangawasan panjenengan isiné ana $1 {{PLURAL:$1|kaca|kaca}}.',
'iteminvalidname' => "Ana masalah karo '$1', jenengé ora absah...",
-'wlnote' => "Ngisor iki {{PLURAL:$1|owahan pungkasan|'''$1''' owahan pungkasan}} {{PLURAL:$2|jam|'''$2''' jam}} kapungkur, per $3, $4.",
'wlshowlast' => 'Tuduhna $1 jam $2 dina $3 pungkasan',
'watchlist-options' => 'Opsi daftar pangawasan',
'deleteotherreason' => 'Alesan liya utawa tambahan:',
'deletereasonotherlist' => 'Alesan liya',
'deletereason-dropdown' => '*Alesan pambusakan
-** Disuwun sing nulis
+** Spam
+** Vandalisme
** Nglanggar hak cipta
-** Vandalisme',
+** Disuwun sing nulis
+** Pangalihan rusak',
'delete-edit-reasonlist' => 'Sunting alesan pambusakan',
'delete-toobig' => 'Kaca iki ndarbèni sajarah panyuntingan sing dawa, yaiku ngluwihi $1 {{PLURAL:$1|revision|révisi}}.
Pambusakan kaca sing kaya mangkono mau wis ora diparengaké kanggo menggak anané karusakan ing {{SITENAME}}.',
'delete-warning-toobig' => 'Kaca iki duwé sajarah panyuntingan sing dawa, luwih saka $1 {{PLURAL:$1|révisi|révisi}}.
Mbusak kaca iki bisa ngrusak operasi basis data ing {{SITENAME}};
kudu ngati-ati.',
+'deleting-backlinks-warning' => "'''Awas:''' Kaca liyane mungkin ana sing nautake ing kaca sing arep sampeyan busak.",
# Rollback
'rollback' => 'Mbalèkaké suntingan',
Suntingan pungkasan dilakoni déning [[User:$3|$3]] ([[User talk:$3|Wicara]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
'editcomment' => "Ringkesan suntingan yaiku: \"''\$1''\".",
'revertpage' => 'Suntingan [[Special:Contributions/$2|$2]] ([[User talk:$2|dhiskusi]]) dipunwangsulaken dhateng ing vèrsi pungkasan déning [[User:$1|$1]]',
-'revertpage-nouser' => 'Suntingan dibalèkaké déning (jeneng panganggo dibusak) nèng benahan pungkasan déning [[User:$1|$1]]',
+'revertpage-nouser' => 'Suntingan déning panganggo sing didhelikake, dibalèkaké nèng benahan pungkasan déning [[User:$1|$1]]',
'rollback-success' => 'Suntingan dibalèkaké déning $1;
diowahi bali menyang vèrsi pungkasan déning $2.',
'contributions' => 'Sumbangan {{GENDER:$1|panganggo}}',
'contributions-title' => 'Kontribusi panganggo kanggo $1',
'mycontris' => 'Kontribusi',
-'contribsub2' => 'Kanggo $1 ($2)',
+'contribsub2' => 'Kanggo {{GENDER:$3|$1}} ($2)',
'nocontribs' => 'Ora ditemokaké owah-owahan sing cocog karo kritéria kasebut iku.',
'uctop' => '(saiki)',
'month' => 'Wiwit sasi (lan sadurungé):',
Mangga ngubungi sing nyedyakaké dines internèt panjenengan utawa pitulungan tèknis lan aturana masalah kaamanan sérius iki.",
'sorbsreason' => "Alamat IP panjenengan didaftar minangka ''open proxy'' ing DNSBL.",
'sorbs_create_account_reason' => "Alamat IP panjenengan didaftar minangka ''open proxy'' ing DNSBL. Panjenengan ora bisa nggawé akun utawa rékening.",
+'xffblockreason' => 'Sebuah alamat IP di kepala X-Forwarded-For, entah milik Anda atau server proxy yang Anda pakai, telah diblokir. Alasan pemblokirannya adalah: $1',
'cant-see-hidden-user' => 'Panganggo sing Sampéyan coba blokir wis kablokir lan didhelikaké.
Amarga Sampéyan ora nduwé hak ndhelikaké panganggo, Sampéyan ora bisa ndelok utawa nyunting blokiran panganggo.',
'ipbblocked' => 'Sampéyan ora bisa mblokir utawa mbukak blokiran panganggo liya amarga Sampéyan dhéwé diblokir',
'thumbnail-more' => 'Gedhèkna',
'filemissing' => 'Berkas ora ditemokaké',
'thumbnail_error' => "Kaluputan nalika nggawé gambar cilik (''thumbnail''): $1",
+'thumbnail_error_remote' => 'Peringatan kasalahan saka $1:
+$2',
'djvu_page_error' => "Kaca DjVu ana ing sajabaning ranggèhan (''range'')",
'djvu_no_xml' => 'Ora bisa njupuk XML kanggo berkas DjVu',
'thumbnail-temp-create' => 'Ora bisa nggawé berkas gambar mini sawetara',
'tooltip-pt-watchlist' => 'Daftar kaca sing tak-awasi.',
'tooltip-pt-mycontris' => 'Daftar kontribusi panjenengan',
'tooltip-pt-login' => 'Panjenengan diaturi mlebu log, nanging ora dikudokaké.',
-'tooltip-pt-anonlogin' => 'Panjenengan disaranaké mlebu log, nanging ora diwajibaké.',
'tooltip-pt-logout' => 'Log metu (oncat)',
'tooltip-ca-talk' => 'Dhiskusi perkara isi',
'tooltip-ca-edit' => 'Sunting kaca iki. Nganggoa tombol pratayang sadurungé nyimpen.',
'spam_blanking' => 'Kabèh révisi sing duwé pranala menyang $1, pangosongan',
'spam_deleting' => 'Kabèh benahan sing nduwé pranala nèng $1, dibusaki',
'simpleantispam-label' => "Pamariksan anti-spam.
-'''Aja''' diisèkaké!",
+'''AJA''' diisèkaké!",
# Info page
'pageinfo-title' => 'Inpormasi kanggo "$1"',
'pageinfo-length' => 'Panjang halaman (dalam bita)',
'pageinfo-article-id' => 'ID kaca',
'pageinfo-language' => 'Bahasa isi halaman',
-'pageinfo-robot-policy' => 'Status mesin pencari',
-'pageinfo-robot-index' => 'Dapat diindeks',
-'pageinfo-robot-noindex' => 'Tidak dapat diindeks',
+'pageinfo-content-model' => 'Model isi kaca',
+'pageinfo-robot-policy' => 'Diindeks karo robot',
+'pageinfo-robot-index' => 'Entuk',
+'pageinfo-robot-noindex' => 'Ora entuk',
'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-redirects-name' => 'Jumlah pangalihan menyang kaca iki',
'pageinfo-subpages-name' => 'Subhalaman halaman ini',
'pageinfo-subpages-value' => '$1 ($2 {{PLURAL:$2|pengalihan|pengalihan}}; $3 {{PLURAL:$3|non-pengalihan|non-pengalihan}})',
'pageinfo-firstuser' => 'Pembuat halaman',
'svg-long-desc' => 'Berkas SVG, nominal $1 × $2 piksel, gedhené berkas: $3',
'svg-long-desc-animated' => 'Berkas SVG, nominal $1 × $2 piksel, gedhené berkas: $3',
'svg-long-error' => 'Berkas SVG ora sah: $1',
-'show-big-image' => 'Résolusi kebak',
+'show-big-image' => 'Berkas asli',
'show-big-image-preview' => 'Gedhéné pratayang iki: $1',
'show-big-image-other' => '{{PLURAL:$2|Résolusi|Résolusi}} liya: $1.',
'show-big-image-size' => '$1 × $2 piksel',
'minutes' => '{{PLURAL:$1|$1 menit|$1 menit}}',
'hours' => '{{PLURAL:$1|$1 jam|$1 jam}}',
'days' => '{{PLURAL:$1|$1 dina|$1 dina}}',
+'weeks' => '{{PLURAL:$1|minggu|minggu}}',
'months' => '{{PLURAL:$1|$1 sasi|$1 sasi}}',
'years' => '{{PLURAL:$1|$1 taun|$1 taun}}',
'ago' => '$1 kapungkur',
'just-now' => 'baru saja',
+# Human-readable timestamps
+'hours-ago' => '$1 {{PLURAL:$1|jam|jam}} kapungkur',
+'minutes-ago' => '$1 {{PLURAL:$1|menit|menit}} kapungkur',
+'seconds-ago' => '$1 {{PLURAL:$1|detik|detik}} kapungkur',
+'monday-at' => 'Senin jam $1',
+'tuesday-at' => 'Selasa jam $1',
+'wednesday-at' => 'Rabu jam $1',
+'thursday-at' => 'Kemis jam $1',
+'friday-at' => 'Jumuah jam $1',
+'saturday-at' => 'Septu jam $1',
+'sunday-at' => 'Minggu jam $1',
+'yesterday-at' => 'Dhek wingi jam $1',
+
# Bad image list
'bad_image_list' => "Formaté kaya mengkéné:
'exif-compression-4' => 'CCITT Group 4 fax encoding',
'exif-copyrighted-true' => 'Mawa hak cipta',
-'exif-copyrighted-false' => 'Domain umum',
+'exif-copyrighted-false' => 'Status hak cipta durung ditemtokake',
'exif-unknowndate' => 'Tanggal ora dingertèni',
'confirm-unwatch-button' => 'Oké',
'confirm-unwatch-top' => 'Singkiraké kaca iki saka daptar pangawasan Sampéyan?',
+# Separators for various lists, etc.
+'quotation-marks' => '"$1"',
+
# Multipage image navigation
'imgmultipageprev' => '← kaca sadurungé',
'imgmultipagenext' => 'kaca sabanjuré →',
'imgmultigo' => 'Golèk!',
'imgmultigoto' => 'Lungaa menyang kaca $1',
+# Language selector for translatable SVGs
+'img-lang-default' => '(basa gawan)',
+'img-lang-info' => 'Dadekna gambar iki ing $1, $2',
+'img-lang-go' => 'Nuju',
+
# Table pager
'ascending_abbrev' => 'unggah',
'descending_abbrev' => 'mudhun',
'version-hook-name' => 'Jeneng canthèlan',
'version-hook-subscribedby' => 'Dilanggani déning',
'version-version' => '(Vèrsi $1)',
-'version-license' => 'Lisènsi',
+'version-license' => 'Lisènsi MediaWiki',
+'version-ext-license' => 'Lisènsi',
+'version-ext-colheader-name' => 'Ekstensi',
+'version-ext-colheader-version' => 'Vèrsi',
+'version-ext-colheader-license' => 'Lisènsi',
+'version-ext-colheader-description' => 'Dèskripsi',
+'version-ext-colheader-credits' => 'Pangarang',
+'version-license-title' => 'Lisensi kanggo $1',
+'version-license-not-found' => 'Ora ana info lisensi kanggo ekstensi iki.',
+'version-credits-title' => 'Kredit kanggo $1',
+'version-credits-not-found' => 'Ora ana info kredit kanggo ekstensi iki.',
'version-poweredby-credits' => "Wiki iki disengkuyung déning '''[https://www.mediawiki.org/ MediaWiki]''', hak cipta © 2001-$1 $2.",
'version-poweredby-others' => 'liyané',
+'version-poweredby-translators' => 'panerjemah translatewiki.net',
'version-credits-summary' => 'Kami ingin mengakui orang-orang berikut atas kontribusinya terhadap [[Special:Version|MediaWiki]].',
'version-license-info' => 'MediaWiki adalah perangkat lunak bebas; Anda diperbolehkan untuk mendistribusikan dan/atau memodfikasinya dengan persyaratan Lisensi Publik Umum GNU yang diterbitkan oleh Free Software Foundation; versi 2 atau terbaru.
'version-entrypoints-header-entrypoint' => 'Tithik lebon',
'version-entrypoints-header-url' => 'URL',
+# Special:Redirect
+'redirect' => 'Dialihake dening gambar, panganggo, kaca, utawa ID revisi',
+'redirect-legend' => 'Dialihake menyang gambar utawa kaca',
+'redirect-summary' => 'Kaca astamiwa iki dialihake menyang gambar (jeneng gambar diwenehi), kaca (ID revisi utama ID kaca diwenehi), utawa kaca panganggo (ID panganggo diwenehi). Cara nganggo: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], or [[{{#Special:Redirect}}/user/101]].',
+'redirect-submit' => 'Nuju',
+'redirect-lookup' => 'Golek:',
+'redirect-value' => 'Aji:',
+'redirect-user' => 'ID panganggo',
+'redirect-page' => 'ID kaca',
+'redirect-revision' => 'Revisi kaca',
+'redirect-file' => 'Jeneng berkas',
+'redirect-not-exists' => 'Nilai ora ditemokaké',
+
# Special:FileDuplicateSearch
'fileduplicatesearch' => 'Golèk berkas duplikat',
'fileduplicatesearch-summary' => 'Golèk duplikat berkas adhedhasar biji hash-é.',
'fileduplicatesearch-noresults' => 'Ora ana berkas mawa jeneng "$1" ditemokaké.',
# Special:SpecialPages
-'specialpages' => 'Kaca istiméwa',
+'specialpages' => 'Kaca astamiwa',
+'specialpages-note-top' => 'Katrangan',
'specialpages-note' => '* Kaca astamiwa biasa.
* <span class="mw-specialpagerestricted">Kaca astamiwa kawatesan.</span>',
'specialpages-group-maintenance' => 'Lapuran pangopènan',
'tags' => 'Tag pangowahan sing absah',
'tag-filter' => 'Filter [[Special:Tags|Tag]]:',
'tag-filter-submit' => 'Penyaring',
+'tag-list-wrapper' => '([[Special:Tags|{{PLURAL:$1|Tag|Tag}}]]: $2)',
'tags-title' => 'Tag',
'tags-intro' => 'Kaca iki ndhaptar tag sing bisa ditandhani déning piranti alus tumrap sawijining suntingan lan maknané.',
'tags-tag' => 'Jeneng tag',
'tags-display-header' => 'Tampilan ing dhaptar owah-owahan',
'tags-description-header' => 'Dhèskripsi pepak saka makna',
+'tags-active-header' => 'Aktif?',
'tags-hitcount-header' => 'Owah-owahan mawa tag',
+'tags-active-yes' => 'Iya',
+'tags-active-no' => 'Ora',
'tags-edit' => 'sunting',
'tags-hitcount' => '$1 {{PLURAL:$1|pangowahan|pangowahan}}',
'dberr-problems' => 'Nyuwun ngapura! Situs iki ngalami masalah tèknis.',
'dberr-again' => 'Coba nunggu sawetara menit lan unggahna manèh.',
'dberr-info' => '(Ora bisa nyambung menyang peladèn basis data: $1)',
+'dberr-info-hidden' => '(Ora bisa nyambung menyang peladèn basis data)',
'dberr-usegoogle' => 'Panjenengan bisa nyoba nggolèki nganggo Google kanggo sauntara wektu.',
'dberr-outofdate' => 'Perlu diweruhi yèn indhèks isi kita manawa wis kadaluwarsa.',
'dberr-cachederror' => 'Iki sawijining salinan kasimpen kaca sing dijaluk, lan manawa dudu sing paling anyar.',
'htmlform-submit' => 'Kirim',
'htmlform-reset' => 'Batalna pangowahan',
'htmlform-selectorother-other' => 'Liya',
+'htmlform-no' => 'Ora',
+'htmlform-yes' => 'Iya',
+'htmlform-chosen-placeholder' => 'Pilih pilihan',
# SQLite database support
'sqlite-has-fts' => '$1 mawa sengkuyungan golèkan tèks jangkep',
'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-suppress-delete' => '$1 neken kaca $3',
-'logentry-suppress-event' => '$1 ndhelik-ndhelik ngganti patampilan saka {{PLURAL:$5|sak kadadéan log|$5 kadadéan log}} nèng $3: $4',
-'logentry-suppress-revision' => '$1 ndhelik-ndhelik ngganti patampilan saka {{PLURAL:$5|sak pambenahan|$5 pambenahan}} nèng kaca $3: $4',
-'logentry-suppress-event-legacy' => '$1 ndhelik-ndhelik ngganti patampilan saka kadadéan log nèng $3',
-'logentry-suppress-revision-legacy' => '$1 ndhelik-ndhelik ngganti patampilan saka pambenahan nèng kaca $3',
+'logentry-delete-revision' => '$1 {{GENDER:$2|ngganti}} patampilan {{PLURAL:$5|sak pambenahan|$5 pambenahan}} nèng kaca $3: $4',
+'logentry-delete-event-legacy' => '$1 {{GENDER:$2|ngganti}} patampilan saka kadadéan log nèng $3',
+'logentry-delete-revision-legacy' => '$1 {{GENDER:$2|ngganti}} patampilan saka pambenahan nèng kaca $3',
+'logentry-suppress-delete' => '$1 {{GENDER:$2|neken}} kaca $3',
+'logentry-suppress-event' => '$1 ndhelik-ndhelik {{GENDER:$2|ngganti}} patampilan saka {{PLURAL:$5|sak kadadéan log|$5 kadadéan log}} nèng $3: $4',
+'logentry-suppress-revision' => '$1 ndhelik-ndhelik {{GENDER:$2|ngganti}} patampilan saka {{PLURAL:$5|sak pambenahan|$5 pambenahan}} nèng kaca $3: $4',
+'logentry-suppress-event-legacy' => '$1 ndhelik-ndhelik {{GENDER:$2|ngganti}} patampilan saka kadadéan log nèng $3',
+'logentry-suppress-revision-legacy' => '$1 ndhelik-ndhelik {{GENDER:$2|ngganti}} patampilan saka pambenahan nèng kaca $3',
'revdelete-content-hid' => 'kontèn didhelikaké',
'revdelete-summary-hid' => 'ringkesan suntingan didhelikaké',
'revdelete-uname-hid' => 'jeneng panganggo didhelikaké',
'revdelete-uname-unhid' => 'jeneng panganggo dituduhaké',
'revdelete-restricted' => 'rèstriksi ditrapaké marang para opsis',
'revdelete-unrestricted' => 'rèstriksi marang para opsis dijabel',
-'logentry-move-move' => '$1 mindhahaké kaca $3 nèng $4',
-'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-move-move' => '$1 {{GENDER:$2|mindhahaké}} kaca $3 nèng $4',
+'logentry-move-move-noredirect' => '$1 {{GENDER:$2|mindhahaké}} kaca $3 nèng $4 tanpa ninggalaké pangalihan',
+'logentry-move-move_redir' => '$1 {{GENDER:$2|mindhahaké}} kaca $3 nèng $4 nindesi pangalihan liyane',
+'logentry-move-move_redir-noredirect' => '$1 {{GENDER:$2|mindhahaké}} kaca $3 nèng $4 nindesi pangalihan liyane tanpa nginggalaké pangalihan',
'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é',
-'logentry-newusers-create2' => 'Akun panganggo $3 digawé déning $1',
-'logentry-newusers-byemail' => 'Akun pengguna $3 dibuat oleh $1 dan kata sandi dikirim melalui e-mail',
-'logentry-newusers-autocreate' => 'Akun $1 digawé otomatis',
+'logentry-patrol-patrol-auto' => '$1 otomatis {{GENDER:$2|nandhani}} benahan $4 saka kaca $3 kaawasake',
+'logentry-newusers-newusers' => 'Akun panganggo $1 {{GENDER:$2|digawé}}',
+'logentry-newusers-create' => 'Akun panganggo $1 {{GENDER:$2|digawé}}',
+'logentry-newusers-create2' => 'Akun panganggo $3 {{GENDER:$2|digawé}} déning $1',
+'logentry-newusers-byemail' => 'Akun panganggo $3 {{GENDER:$2|digawé}} déning $1 lan tembung sandhine dikirim lewat layang elektronik',
+'logentry-newusers-autocreate' => 'Akun $1 {{GENDER:$2|digawé}} otomatis',
'logentry-rights-rights' => '$1 {{GENDER:$2|ngganti}} kaanggotan kelompok kanggo $3 saka $4 dadi $5',
-'logentry-rights-rights-legacy' => '$1 mengubah keanggotaan grup $3',
-'logentry-rights-autopromote' => 'otomatis ditawakaké saka $4 nèng $5',
+'logentry-rights-rights-legacy' => '$1 {{GENDER:$2|ngganti}} kanggotaan grup kanggo $3',
+'logentry-rights-autopromote' => '$1 otomatis {{GENDER:$2|dipromosikne}} saka $4 nèng $5',
'rightsnone' => '(ora ana)',
# Feedback
'api-error-overwrite' => 'Nibani berkas sing wis ana ora dililakaké.',
'api-error-stashfailed' => 'Kasalahan njero: Sasana gagal nyèlèhaké berkas sawetara.',
'api-error-publishfailed' => 'Kasalahan njero: Sasana gagal nyèlèhaké berkas sawetara.',
+'api-error-stasherror' => 'Ana kasalahan wektu ngunggah berkas.',
'api-error-timeout' => 'Sasana ora nanggepi nèng wektu sing karepaké.',
'api-error-unclassified' => 'Ana masalah sing ora dingertèni.',
'api-error-unknown-code' => 'Kasalahan ora dingertèni: "$1".',
# Image rotation
'rotate-comment' => 'Gambar diubengaké $1 {{PLURAL:$1|drajat|drajat}} sak arah domé jam',
+# Limit report
+'limitreport-title' => 'Parser profiling data:',
+'limitreport-cputime' => 'CPU time usage',
+'limitreport-cputime-value' => '$1 {{PLURAL:$1|detik|detik}}',
+'limitreport-walltime' => 'Penggunaan waktu riil',
+'limitreport-walltime-value' => '$1 {{PLURAL:$1|detik|detik}}',
+'limitreport-ppvisitednodes' => 'Preprocessor visited node count',
+'limitreport-ppgeneratednodes' => 'Preprocessor generated node count',
+'limitreport-postexpandincludesize' => 'Post-expand include size',
+'limitreport-postexpandincludesize-value' => '$1/$2 {{PLURAL:$2|bita|bita}}',
+'limitreport-templateargumentsize' => 'Template argument size',
+'limitreport-templateargumentsize-value' => '$1/$2 {{PLURAL:$2|bita|bita}}',
+'limitreport-expansiondepth' => 'Highest expansion depth',
+'limitreport-expensivefunctioncount' => 'Expensive parser function count',
+
# Special:ExpandTemplates
'expandtemplates' => 'Cithakan dikembangaké',
'expand_templates_intro' => 'Kaca astaméwa iki njupuk sawetara tèks lan ngembangaké kabèh cithakan sajroning iku sacara rékursif.
Kaca iki uga ngembangaké fungsi parser kaya ta
<nowiki>{{</nowiki>#language:…}}, lan variabel kaya ta
-<nowiki>{{</nowiki>CURRENTDAY}}—sajatiné mèh kabèh sing ana ing antara rong tandha kurung akolade.
-Perkara iki dilakokaké caranémawa nyeluk tahapan parser sing rélévan saka MediaWiki dhéwé.',
+<nowiki>{{</nowiki>CURRENTDAY}}—sajatiné mèh kabèh sing ana ing antara rong tandha kurung akolade.',
'expand_templates_title' => 'Irah-irahan kontèks, kanggo {{FULLPAGENAME}} lan sabanjuré:',
'expand_templates_input' => 'Tèks sumber:',
'expand_templates_output' => 'Pituwas (kasil)',
'expand_templates_xml_output' => 'Pituwas XML',
+'expand_templates_html_output' => 'Raw HTML output',
'expand_templates_ok' => 'OK',
'expand_templates_remove_comments' => 'Busaken komentar',
'expand_templates_remove_nowiki' => 'Brèdèl tag <nowiki> nèng asilé',
'expand_templates_generate_xml' => 'Tuduhna uwit parser XML',
+'expand_templates_generate_rawhtml' => 'Show raw HTML',
'expand_templates_preview' => 'Pratayang',
);
$messages = array(
# User preference toggles
'tog-underline' => 'ბმულების ხაზგასმა:',
-'tog-justify' => 'გაასწორე პარაგრაფები',
'tog-hideminor' => 'დამალე მცირე რედაქტირება ბოლო ცვლილებებში',
'tog-hidepatrolled' => 'დამალეთ შესწორებული რედაქტირებები ბოლო ცვლილებებში',
'tog-newpageshidepatrolled' => 'დამალეთ შემოწმებული გვერდები ახალი გვერდების სიიდან',
'tog-numberheadings' => 'ავტომატურად დანომრე ქვესათაურები',
'tog-showtoolbar' => 'რედაქტირების პანელის ჩვენება',
'tog-editondblclick' => 'გვერდების რედაქტირება ორმაგი დაწკაპუნებით',
-'tog-editsection' => 'სექციის რედაქტირების ნებართვა [რედაქტირებული] ბმულების გავლით',
'tog-editsectiononrightclick' => 'სექციის რედაქტირების ნებართვა სათაურებზე მარჯვენა ღილაკზე დაჭერით',
-'tog-showtoc' => 'აჩვენე სარჩევი (სამ ქვესათაურზე მეტის მქონე გვერდებისთვის)',
'tog-rememberpassword' => 'დამიმახსოვრე ამ კომპიუტერზე (მაქსიმუმ $1 {{PLURAL:$1|დღე|დღე}})',
'tog-watchcreations' => 'დაამატე ჩემი კონტროლის სიას ჩემს მიერ შექმნილი გვერდები და ატვირთული ფაილები',
'tog-watchdefault' => 'დაამატე ჩემი კონტროლის სიას ჩემს მიერ რედაქტირებული გვერდები და ფაილები',
'showhideselectedversions' => 'ჩვენება/დამალვა არჩეული ვერსიებისა',
'editundo' => 'გაუქმება',
'diff-empty' => '(განსხვავება არ არის)',
-'diff-multi' => '({{PLURAL:$2|ერთი მომხმარებლის|$2 მომხმარებლების}} {{PLURAL:$1|ერთი შუალედური ვერსია|$1 შუალედური ვერსიები}} არ არის ნაჩვენები.)',
'diff-multi-manyusers' => '({{PLURAL:$2|ერთი მომხმარებლის|$2 მომხმარებლების}} {{PLURAL:$1|ერთი შუალედური ვერსია|$1 შუალედური ვერსიები}}, რომლებიც არ არის ნაჩვენები.)',
'difference-missing-revision' => '{{PLURAL:$2|$2 ვერსია}} ამ შედარებისათვის ($1) {{PLURAL:$2|ვერ მოიძებნა}}.
'rows' => 'რიგები:',
'columns' => 'სვეტები',
'searchresultshead' => 'ძიება',
-'resultsperpage' => 'შედეგები გვერდის მიხედვით:',
'stub-threshold' => 'გაფორმების გასაუმჯობესებლად <a href="#" class="stub"> მოცემულია ესკიზების ბმულები</a> (ბაიტებში):',
'stub-threshold-disabled' => 'გათიშულია',
'recentchangesdays' => 'ბოლო ცვლილებებში საჩვენებელი დღეები:',
'recentchanges-label-bot' => 'ეს არის ბოტის რედაქტირება',
'recentchanges-label-unpatrolled' => 'ეს რედაქტირება გადაუმოწმებელია',
'recentchanges-label-plusminus' => 'ცვლილებების ზომა ბაიტებში',
+'recentchanges-legend-heading' => "'''ლეგენდა:'''",
'recentchanges-legend-newpage' => '(იხ. აგრეთვე [[Special:NewPages|ახალი გვერდების სია]])',
'rcnotefrom' => "ქვემოთ მოყვანილია ცვლილებები '''$2'''-დან (ნაჩვენებია '''$1''').",
'rclistfrom' => 'ახალი ცვლილებების ჩვენება დაწყებული $1-დან',
'watchmethod-list' => 'მიმდინარეობს თქვენი კონტროლის ქვეშ მყოფი გვერდების შემოწმება უახლესი შესწორებების მიხედვით.',
'watchlistcontains' => 'თქვენი კონტროლის სია შეიცავს $1 გვერდს.',
'iteminvalidname' => '„$1-ს“ პრობლემა აქვს, სახელი არასწორია...',
-'wlnote' => "ქვემოთ {{PLURAL:$1|ნაჩვენებია ბოლო ცვლილება|ნაჩვენებია ბოლო '''$1''' ცვლილება}} უკანასკნელი {{PLURAL:$2|საათის|'''$2''' საათის}} მანძილზე, $3, $4 მდგომარეობით.",
'wlshowlast' => 'აჩვენე ბოლო $1 საათის $2 დღის $3',
'watchlist-options' => 'კონტროლის სიის პარამეტრები',
'delete-warning-toobig' => 'ამ გვერდს ძალიან გრძელი ისტორია გააჩნია, $1 {{PLURAL:$1|ვერსიაზე|ვერსიიებზე|ვერსიებზე}} მეტი.
მისმა წაშლამ შესაძლოა გამოიწვიოს საიტის მონაცემთა ბაზის {{SITENAME}} არაკორექტული მუშაობა;
იმოქმედეთ სიფრთხილით.',
+'deleting-backlinks-warning' => "'''გაფრთხილება:''' რამდენიმე სხვა გვერდი დაკავშირებულია ამ წასაშლელ გვერდთან.",
# Rollback
'rollback' => 'ცვლილებების გაუქმება',
'tooltip-pt-watchlist' => 'გვერდების სია, რომელთა ცვლილებებს თქვენ უთვალთვალებთ',
'tooltip-pt-mycontris' => 'თქვენი წვლილის სია',
'tooltip-pt-login' => 'სასურველია დარეგისტრირდეთ, თუმცა აუცილებელია არაა.',
-'tooltip-pt-anonlogin' => 'აქ შეიძლება რეგისტრაციის გავლა, თუმცა ეს სავალდებულო არ არის',
'tooltip-pt-logout' => 'გასვლა',
'tooltip-ca-talk' => 'შიგთავსის გვერდის განხილვა',
'tooltip-ca-edit' => 'თქვენ შეგიძლიათ ამ გვერდის რედაქტირება. გთხოვთ გამოიყენოთ წინასწარი ხედვის ღილაკი სანამ გვერდს შეინახავთ.',
# Auto-summaries
'autosumm-blank' => 'გვერდის შიგთავსი დაცარიელდა',
-'autosumm-replace' => "შინაარსი შეიცვალა '$1'-ით",
+'autosumm-replace' => 'შინაარსი შეიცვალა „$1“-ით',
'autoredircomment' => 'გადამისამართება [[$1]]-ზე',
'autosumm-new' => 'ახალი გვერდი: $1',
'version-hook-subscribedby' => 'ჩაწერილია',
'version-version' => '(ვერსია $1)',
'version-svn-revision' => '(r$2)',
-'version-license' => 'ლიცენზია',
+'version-license' => 'á\83\9bá\83\94á\83\93á\83\98á\83\90á\83\95á\83\98á\83\99á\83\98á\83¡ á\83\9aá\83\98á\83ªá\83\94á\83\9cá\83\96á\83\98á\83\90',
'version-poweredby-credits' => "ეს ვიკი მუშაობს '''[https://www.mediawiki.org/ MediaWiki]'''-ს ძრავზე, copyright © 2001-$1 $2.",
'version-poweredby-others' => 'სხვები',
'version-poweredby-translators' => 'translatewiki.net-ის მთარგმნელები',
$messages = array(
# User preference toggles
'tog-underline' => "Siltewdin' astın sız:",
-'tog-justify' => "Tekstti bettin' ken'ligi boyınsha tuwrılaw",
'tog-hideminor' => "Aqırg'ı o'zgerislerden kishilerin jasır",
'tog-extendwatchlist' => "Baqlaw dizimin barlıq o'zgerislerdi ko'rsetetug'ın qılıp ken'eyt (tek aqırg'ıların emes)",
'tog-usenewrc' => "Ken'eytilgen jaqındag'ı o'zgerislerdi qollan (JavaScript bolıwın talap etedi)",
'tog-numberheadings' => 'Atamalardı avtomat nomerle',
'tog-showtoolbar' => "O'zgertiw a'sbapların ko'rset (JavaScript)",
'tog-editondblclick' => "Eki ma'rte basıp o'zgertiw (JavaScript)",
-'tog-editsection' => "Bo'limlerdi [o'zgertiw] siltew arqalı o'zgertiwdi qos",
'tog-editsectiononrightclick' => "Bo'lim atamasın on' jaqqa basıp o'zgertiwdi qos (JavaScript)",
-'tog-showtoc' => "Mazmunın ko'rset (3-ten artıq bo'limi bar betlerge)",
'tog-rememberpassword' => "Menin' kirgenimdi usı kompyuterde saqlap qal (en' ko'bi menen $1 {{PLURAL:$1|ku'nge|ku'nge}} shekem)",
'tog-watchcreations' => 'Men jaratqan betlerdi baqlaw dizimime qos',
'tog-watchdefault' => "Men o'zgeris kiritken betlerdi baqlaw dizimime qos",
'lineno' => 'Qatar No $1:',
'compareselectedversions' => "Saylang'an nusqalardı salıstırıw",
'editundo' => 'qaytar',
-'diff-multi' => "({{PLURAL:$2|bir paydalanıwshı|$2 paydalanıwshı}} ta'repinen {{PLURAL:$1|aralıq bir nusqa|aralıq $1 nusqa}} ko'rsetilmeydi.)",
# Search results
'searchresults' => "İzlew na'tiyjeleri",
'watchlist-details' => "Baqlaw dizimin'izde (sa'wbet betlerin esapqa almag'anda) {{PLURAL:$1|1 bet|$1 bet}} bar.",
'wlheader-enotif' => "E-mail arqalı eskertiw qosılg'an.",
'watchlistcontains' => "Sizin' baqlaw dizimin'izde {{PLURAL:$1|1 bet|$1 bet}} bar.",
-'wlnote' => "To'mende aqırg'ı {{PLURAL:$2|saattag'ı|'''$2''' saattag'ı}} {{PLURAL:$1|aqırg'ı o'zgeris bar|aqırg'ı '''$1''' o'zgeris bar}}.",
'wlshowlast' => "Aqırg'ı $1 saat, $2 ku'n, $3 ko'rset",
'watchlist-options' => "Baqlaw diziminin' sazlawları",
'tooltip-pt-watchlist' => "O'zgerislerin baqlap turg'an betler dizimi",
'tooltip-pt-mycontris' => "Sizin' u'lesler dizimin'iz",
'tooltip-pt-login' => "Kiriwin'iz usınıladı, biraq ma'jbu'riy bolmag'an xalda.",
-'tooltip-pt-anonlogin' => "Kiriwin'iz usınıladı, biraq ma'jbu'riy bolmag'an xalda.",
'tooltip-pt-logout' => "Shıg'ıw",
'tooltip-ca-talk' => "Mag'lıwmat beti haqqında diskussiya",
'tooltip-ca-edit' => "Siz bul betti o'zgertiwin'izge boladi. Iltimas betti saqlawdan aldın ko'rip shig'ıw knopkasın paydalanın'.",
$messages = array(
# User preference toggles
'tog-underline' => 'Derrer izdayen:',
-'tog-justify' => 'Err tehri ger wawalen kif-kif',
'tog-hideminor' => 'Ffer ibeddlen ifessasen deg yibeddlen imaynuten',
'tog-hidepatrolled' => 'Ffer ibeddlen iεessan deg yibeddlen imaynuten',
'tog-newpageshidepatrolled' => 'Ffer isebtaren iɛessan gar umuɣ n isebtaren imaynuten',
'tog-numberheadings' => 'Izwal ɣur-sen imḍanen mebla ma serseɣ-iten',
'tog-showtoolbar' => 'Ssken tafeggagt n ifecka n ubeddel',
'tog-editondblclick' => 'Beddel isebtar mi wekkiɣ snat n tikwal',
-'tog-editsection' => 'Eǧǧ abeddel n umur s yizdayen [beddel]',
'tog-editsectiononrightclick' => 'Ssermed abeddel n tigezmi s ukliki ayeffus ɣef izwal',
-'tog-showtoc' => 'Ssken agbur (i isebtar i yesɛan kter n 3 izwalen)',
'tog-rememberpassword' => 'Cfu ɣef yisem n umseqdac inu di uselkim-agi (i afellay n $1 {{PLURAL:$1|ass|ussan}})',
'tog-watchcreations' => 'Rnu isebtar i xelqeɣ deg wumuɣ n uɛessi inu',
'tog-watchdefault' => 'Rnu isebtar i ttbeddileɣ deg wumuɣ n uɛessi inu',
'tog-enotifrevealaddr' => 'Ssken e-mail inu asmi yettwazen email n talɣut',
'tog-shownumberswatching' => 'Ssken geddac yellan n yimseqdacen iɛessasen',
'tog-oldsig' => 'Azmul yellan :',
-'tog-fancysig' => 'ǧǧ azmul am yettili (war azday awurman)',
+'tog-fancysig' => 'Eǧǧ azmul am yettili (war azday awurman)',
'tog-uselivepreview' => 'Sseqdec askan arurad (Experimental)',
'tog-forceeditsummary' => 'Ini-iyi-d mi sskecmeɣ agzul amecluc',
'tog-watchlisthideown' => 'Ffer ibeddlen inu seg wumuɣ n uɛessi inu',
# General errors
'error' => 'Agul',
'databaseerror' => 'Agul n database',
+'databaseerror-text' => 'Tuccḍa n tuttra deg taffa n isefka teḍra-d. Ahat yella afuqes deg useɣẓan.',
+'databaseerror-textcl' => 'Tuccḍa n tuttra deg taffa n isefka teḍra-d.',
+'databaseerror-query' => 'Tuttra : $1',
'databaseerror-function' => 'Tawuri: $1',
'databaseerror-error' => 'Tuccḍa: $1',
'laggedslavemode' => 'Aɣtal: Ahat asebter ur yesɛi ara akk ibeddlen imaynuten.',
'cannotdelete-title' => 'Ulamek an kkes asebter « $1 »',
'delete-hook-aborted' => 'Tukkesa tesemmet s usiɣzef.
Ulac asefru ɣef wagi.',
+'no-null-revision' => 'Ur nezmer ara ad n-snulfu tacaggart tilemnt tamaynut i usebtar « $1 »',
'badtitle' => 'Azwel ur yelhi',
'badtitletext' => 'Asebter i testeqsiḍ fell-as mačči ṣaḥiḥ, d ilem, neɣ yella ugul deg wezday seg wikipedia s tutlayt tayeḍ neɣ deg wezday n wiki nniḍen. Ahat tesɛa asekkil ur yezmir ara ad yettuseqdac deg wezwel.',
'perfcached' => 'Talɣut deg ukessar seg lkac u waqila mačči d tasiwelt taneggarut. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
'actionthrottled' => 'Tigawt tesɛa talast',
'actionthrottledtext' => 'Iwakken an ewwet mgal tira yerkan (SPAM), tigawt agi tesɛa talast n amḍan n tikwalt deg akud awezzlan. talast agi t-ɛedda.
Ɛred tikkelt nniḍen deg kra n dqiqa.',
-'protectedpagetext' => 'Asebter-agi d amsekker.',
+'protectedpagetext' => 'Asebter-agi yetwaḥrez i uqareɛ n ubeddel neɣ tigawin nniḍen.',
'viewsourcetext' => 'Tzemreḍ ad twaliḍ u txedmeḍ alsaru n uɣbalu n usebter-agi:',
'viewyourtext' => 'Tzemṛeḍ ad ẓṛeḍ dɣa ad nɣeleḍ agbur n "ibeddlen inek/inem" deg usebter agi :',
'protectedinterface' => 'Asebter-agi d amsekker axaṭer yettuseqdac i weḍris n software.',
'namespaceprotected' => "Ur tesɛiḍ ara turagt iwakken ad beddeleḍ isebtar n tallunt n isemawen \"'''\$1'''\".",
'customcssprotected' => 'Ur tesɛiḍ ara turagt iwakken ad beddeleḍ asebter agi n CSS, acku tesɛa iɣewwaren n yiwen useqdac nniḍen.',
'customjsprotected' => 'Ur tesɛiḍ ara turagt iwakken ad beddeleḍ asebter agi n Javascript, acku tesɛa iɣewwaren n yiwen useqdac nniḍen.',
+'mycustomcssprotected' => 'Ur tesɛiḍ ara turagt i ubeddel n usebtar agi CSS.',
+'mycustomjsprotected' => 'Ur tesɛiḍ ara turagt i ubeddel n usebtar agi JavaScript.',
+'myprivateinfoprotected' => 'Ur tesɛiḍ ara turagt ad beddeleḍ tilɣa inek(em) tusligtin.',
+'mypreferencesprotected' => 'Ur tesɛiḍ ara turagt ad beddeleḍ iɣewwaren inek(em).',
'ns-specialprotected' => 'Ur t-zemred ara ad beddeleḍ isebtar usligen',
'titleprotected' => "Azwel agi yegdel deg usnulfu ɣef [[User:$1|$1]].
Taɣẓint id yenna : ''$2''",
'invalidtitle-knownnamespace' => 'Azwel ur i ɣbel ara s tallunt n isemawen « $2 » dɣa d-uglam « $3 »',
'invalidtitle-unknownnamespace' => 'Azwel ur i ɣbel ara s uṭṭun n tallunt n isemawen $1 dɣa d-uglam « $2 » warisem',
'exception-nologin' => 'Ur tekcimeḍ ara',
-'exception-nologin-text' => 'I usebter agi naɣ i tigawt agi, ilaq ad qqeneḍ ɣef wiki agi.',
+'exception-nologin-text' => 'Ilaq ad [[Special:Userlogin|qqeneḍ]] iwakken ad kecmeḍ ar usebtar neɣ tawuri agi.',
+'exception-nologin-text-manual' => '$1 iwakken ad kecmeḍ ar asebtar neɣ tigawt agi.',
# Virus scanner
'virus-badscanner' => "Yir tawila : anafraḍ n infafaden warisem : ''$1''",
# Login and logout pages
'logouttext' => "'''Tura tesensereḍ.'''
-Tzemreḍ ad tesseqdceḍ {{SITENAME}} d udrig, <span class='plainlinks'>[$1 ad tkecmeḍ daɣen]</span> s yisem n wemseqdac inek (neɣ nniḍen).
-Kra n isebtar zemren ad sskanen belli mazal-ik s yisem n wemseqdac inek armi temḥuḍ lkac.",
+Kra n isebtar zemren ad sskanen belli mazal-ik s yisem n wemseqdac inek armi temḥuḍ tazarkatut.",
+'welcomeuser' => 'Anṣuf, $1 !',
+'welcomecreation-msg' => 'Amian inek(em) yesnulfad.
+Tzemreḍ ad beddeleḍ {{SITENAME}} [[Special:Preferences|ismenyifen]] inek(em) ma tebɣiḍ.',
'yourname' => 'Isem n wemseqdac',
+'userlogin-yourname' => 'Isem n useqdac',
+'userlogin-yourname-ph' => 'Sekcem isem-ik(im) n useqdac',
+'createacct-another-username-ph' => 'Sekcem isem n useqdac',
'yourpassword' => 'Awal n tbaḍnit',
+'userlogin-yourpassword' => 'Awal n uɛeddi',
+'userlogin-yourpassword-ph' => 'Sekcem awal-ik(im) n uɛeddi',
+'createacct-yourpassword-ph' => 'Sekcem awal n uɛeddi',
'yourpasswordagain' => 'Ɛiwed ssekcem awal n tbaḍnit',
+'createacct-yourpasswordagain' => 'Sergeg awal n uɛeddi',
+'createacct-yourpasswordagain-ph' => 'Sekcem awal n uɛeddi tikelt nniḍen',
'remembermypassword' => 'Cfu ɣef wawal n tbaḍnit inu di uselkim-agi (i afellay n $1 {{PLURAL:$1|ass|ussan}})',
+'userlogin-remembermypassword' => 'Eǧǧ taɣimit inu turmidt',
+'userlogin-signwithsecure' => 'Seqdec tuqqna yettwaḥerzen',
'yourdomainname' => 'Taɣult inek',
'password-change-forbidden' => 'Ur zemreḍ ara ad beddeleḍ awalen n uɛaddi ɣef uwiki agi.',
'externaldberror' => 'Yella ugul aberrani n database neɣ ur tettalaseḍ ara ad tbeddleḍ isem an wemseqdac aberrani inek.',
'logout' => 'Ffeɣ',
'userlogout' => 'Ffeɣ',
'notloggedin' => 'Ur tekcimeḍ ara',
+'userlogin-noaccount' => 'Ur tesɛiḍ ara amiḍan ?',
+'userlogin-joinproject' => 'Ddukkel ar {{SITENAME}}',
'nologin' => "Ur tesɛiḍ ara isem n umseqdac? '''$1'''.",
'nologinlink' => 'Xleq isem n wemseqdac',
'createaccount' => 'Xleq isem n wemseqdac',
'gotaccount' => "Tesɛiḍ yagi isem n wemseqdac? '''$1'''.",
'gotaccountlink' => 'Kcem',
'userlogin-resetlink' => 'Ettuḍ tilɣa n tuqqna ?',
-'createaccountmail' => 's e-mail',
+'userlogin-resetpassword-link' => 'Ettuḍ awal n uɛaddi ?',
+'helplogin-url' => 'Help:Tuqqna',
+'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Tallalt i tuqqna]]',
+'userlogin-loggedin' => 'Teqqneḍ yakan am {{GENDER:$1|$1}}. Seqdec tiferkit ddaw-agi iwakken ad teqqneḍ s umiḍan nniḍen.',
+'userlogin-createanother' => 'Snulfud amiḍan nniḍen',
+'createacct-join' => 'Sekcem tilɣa inek(m) ddaw-agi.',
+'createacct-another-join' => 'Sekcem tilɣa n umiḍan amaynut ddaw-agi.',
+'createacct-emailrequired' => 'Tansa email',
+'createacct-emailoptional' => 'Tansa email (axetṛan)',
+'createacct-email-ph' => 'Sekcem tansa email inek(m)',
+'createacct-another-email-ph' => 'Sekcem tansa email',
+'createaccountmail' => 'Seqdec awal n uɛaddi agacuran akudan dɣa ceggeε-it ar tansa email yemlen',
+'createacct-realname' => 'Isem n tidets (axetṛan)',
'createaccountreason' => 'Ayɣer',
+'createacct-reason' => 'Taɣẓint',
+'createacct-reason-ph' => 'Ayɣer ad snulfuḍ amiḍan nniḍen',
+'createacct-captcha' => 'Asenqed n taɣellist',
+'createacct-imgcaptcha-ph' => 'Sekcem aḍris i tezṛiḍ ddaw-agi',
+'createacct-submit' => 'Snulfud amiḍan inek(m)',
+'createacct-another-submit' => 'Snulfud amiḍan nniḍen',
+'createacct-benefit-heading' => '{{SITENAME}} yetwexdem sɣur medden am kečč/kem.',
+'createacct-benefit-body1' => '{{PLURAL:$1|abeddel|ibeddilen}}',
+'createacct-benefit-body2' => '{{PLURAL:$1|asebter|isebtar}}',
+'createacct-benefit-body3' => '{{PLURAL:$1|atekki amaynut|ittekkiyen imaynuten}}',
'badretype' => 'Awal n tbaḍnit amezwaru d wis sin mačči d kif-kif.',
'userexists' => 'Isem n wemseqdac yeddem-as amdan wayeḍ. Fren yiwen nniḍen.',
'loginerror' => 'Agul n ukcam',
+'createacct-error' => 'Tuccda deg usnulfu n umiḍan',
'createaccounterror' => 'Ulamek ad nesnulfu amiḍan : $1',
'nocookiesnew' => 'Isem n wemseqdac-agi yettwaxleq, meɛna ur tekcimeḍ ara. {{SITENAME}} yesseqdac ikukiyen (cookies) iwakken ad tkecmeḍ. Tekseḍ ikukiyen-nni. Eǧǧ-aten, umbeɛd kecm s yisem n wemseqdac akk d wawal n tbaḍnit inek.',
'nocookieslogin' => '{{SITENAME}} yesseqdac ikukiyen (cookies) iwakken ad tkecmeḍ. Tekseḍ ikukiyen-nni. Eǧǧ-aten iwakken ad tkecmeḍ.',
'passwordtooshort' => 'Awal-ik (im) n uɛaddi ilaq ad i sɛu adday {{PLURAL:$1|1 asekkil|$1 isekkilen}}.',
'password-name-match' => 'Ilaq awal n uɛaddi ad yili imeẓli s-isem n useqdac.',
'password-login-forbidden' => 'aseqdac agi d awal n uɛaddi agi d-izenbigen.',
-'mailmypassword' => 'Awal n tbaḍnit n e-mail',
+'mailmypassword' => 'Awennez tikkelt nniḍen n awal uɛaddi',
'passwordremindertitle' => 'Asmekti n wawal n tbaḍnit seg {{SITENAME}}',
'passwordremindertext' => 'Amdan (waqila d kečč/kem, seg tansa IP $1) yesteqsa iwakken a nazen
Awal n uɛaddi amaynut i {{SITENAME}} ($4). Awal n uɛaddi i wemseqdac "$2" yuɣal-d tura "$3".
G leɛnaya-k, kcem tikelt nniḍen yis-s.',
'blocked-mailpassword' => 'Tansa n IP inek tɛekkel, ur tezmireḍ ara ad txedmeḍ abeddel,
ur tezmireḍ ara ad tesɛuḍ awal n tbaḍnit i tettuḍ.',
-'eauthentsent' => 'Yiwen e-mail yettwazen-ak iwakken ad tsenteḍ.
-Qbel kulci, ḍfer ayen yenn-ak deg e-mail,
-iwakken ad tbeyyneḍ belli tansa n email inek.',
-'throttled-mailpassword' => 'Asmekti n wawal n uɛaddi yettwazen yagi deg {{PLURAL:$1|asrag agi aneggaru| $1 isragen agi ineggura}}. Asmekti n wawal n uɛaddi yettwazen tikelt kan mkul $1 swayeɛ. deg {{PLURAL:$1|asrag|azilal n $1 isragen}}.',
+'eauthentsent' => 'Yiwen email yetweceggeε ar tansa id efkeḍ.
+Uqbel ad n-ceggeε email nniḍen, ilaq ad ḍfereḍ ayen yellan deg email dɣa ad sergegeḍ amiḍan agi d win inek(m).',
+'throttled-mailpassword' => 'Neceggɛed yakan tirawt n uwennez i awal-ik/im n uɛaddi deg {{PLURAL:$1|asrag agi aneggaru|$1 isragen agi ineggura}}. Awennez n uwal n uɛaddi yettwaceggaɛ tikelt kan deg {{PLURAL:$1|asrag|$1 isragen}}.',
'mailerror' => 'Agul asmi yettwazen e-mail: $1',
'acct_creation_throttle_hit' => 'Amdan i seqdacen tansa IP inek/inem yesnulfud {{PLURAL:$1|yiwen amiḍan|$1 imiḍanen}} deg 24 izragen agi ineggura, negweḍ ar talast n turagt deg azilal agi n wakud.',
-'emailauthenticated' => 'Tansa e-mail inek/inem tesesteb ass n $2 af $3.',
-'emailnotauthenticated' => 'Tansa e-mail inek mazal ur tettuɛqel. Ḥedd e-mail ur ttwazen i ulaḥedd n iḍaɣaren-agi.',
+'emailauthenticated' => 'Tansa e-mail inek/inem tesergeg ass n $2 af $3.',
+'emailnotauthenticated' => 'Tansa email inek mazal ur tettuɛqel. Ur d netceggaɛ ara email i yal tiseɣnin agi.',
'noemailprefs' => 'Efk tansa e-mail iwakken ad leḥḥun iḍaɣaren-nni.',
'emailconfirmlink' => 'Sentem tansa e-mail inek',
'invalidemailaddress' => 'Tansa e-mail-agi ur telhi, ur tesɛi ara taseddast n lɛali. Ssekcem tansa e-mail s taseddast n lɛali neɣ ur tefkiḍ acemma.',
'cannotchangeemail' => 'Ur t-zemreḍ ara ad beddeleḍ tansa e-mail deg uwiki agi.',
'emaildisabled' => 'Asmel agi ur yezmer ara ad i cegaɛ e-mail.',
'accountcreated' => 'Isem n wemseqdac yettwaxleq',
-'accountcreatedtext' => 'Isem n wemseqdac i $1 yettwaxleq.',
+'accountcreatedtext' => 'Amiḍan n umseqdac i [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|amyannan]]) yexelqed.',
'createaccount-title' => 'Asnulfu n umiḍan i {{SITENAME}}',
'createaccount-text' => 'Albeɛḍ yesnulfu-d amiḍan i tansa e-amil inek/inem ɣef {{SITENAME}} ($4) s-isem n-useqdac « $2 », s awal n uɛaddi « $3 ».
Ilaq tura ad lldiḍ taɣimit dɣa ad beddeleḍ awal ik/im n uɛaddi.',
'usernamehasherror' => 'Isem n useqdac ur yezmer ara ad i sɛu isekkilen n ugeddeḥ',
'login-throttled' => 'Tɛerdeḍ ad qqeneḍ aṭas tiqwal deg dqiqat agi iɛddan.
-Ilaq ad rǧuḍ ciṭaḥ uqbel ad ɛerdeḍ tikkelt nniḍen.',
+Ilaq ad rǧuḍ $1 uqbel ad ɛerdeḍ tikkelt nniḍen.',
'login-abort-generic' => 'Taremt ik/im n tuqqna tebrir',
'loginlanguagelabel' => 'Tutlayt: $1',
'suspicious-userlogout' => 'Asuter n usenser yugwi acku yella ugur s iminig naɣ s tazarkatut n uqeddac proxy.',
+'createacct-another-realname-tip' => '* Isem n ṣṣeḥ d-axeṭran.
+Ma teɛzemeḍ a t-tefkeḍ, ad yettuseqdac iwakken ad snen medden anwa yuran tikkin inek.',
# Email sending
'php-mail-error-unknown' => 'anezri warisem deg tawuri mail() n PHP',
'user-mail-no-addy' => 'Ɛred ad icegaɛ e-mail war tansa e-mail',
+'user-mail-no-body' => 'Arram n uceggaɛ email s tafekka tilemt neɣ d-awezlan aṭas.',
# Change password dialog
'changepassword' => 'Beddel awal n tbaḍnit',
'newpassword' => 'Awal n tbaḍnit amaynut:',
'retypenew' => 'Ɛiwed ssekcem n tbaḍnit amaynut:',
'resetpass_submit' => 'Eg awal n tbaḍnit u kcem',
-'changepassword-success' => 'Awal n tbaḍnit yettubeddel! Qrib ad tkecmeḍ...',
+'changepassword-success' => 'Awal n uɛaddi yettubeddel s lerbaḥ !',
+'changepassword-throttled' => 'Tɛerdeḍ ad qqeneḍ aṭas tiqwal deg dqiqat agi iɛddan.
+Ilaq ad rǧuḍ $1 uqbel ad ɛerdeḍ tikkelt nniḍen.',
'resetpass_forbidden' => 'Ur zemreḍ ara ad beddeleḍ awalen n uɛaddi',
'resetpass-no-info' => 'Ilaq ad qqeneḍ iwakken ad ẓṛeḍ asebter agi.',
'resetpass-submit-loggedin' => 'Beddel awal n uɛaddi',
'resetpass-wrong-oldpass' => 'Awal n uɛaddi ur i seɣbel ara.
Ahat ilaq ad beddeleḍ awal ik/im n uɛaddi naɣ ad ssutereḍ awal n uɛaddi amaynut.',
'resetpass-temp-password' => 'Awal n uɛaddi amakud',
+'resetpass-abort-generic' => 'Asiɣzef yesemmewet abeddel n uwal n uɛaddi.',
# Special:PasswordReset
'passwordreset' => 'Awennez tikkelt nniḍen n awal uɛaddi',
+'passwordreset-text-one' => 'Ččur tiferkit agi iwakken ad wennezeḍ awal-ik/im n uɛaddi.',
+'passwordreset-text-many' => '{{PLURAL:$1|Čcur yiwet n tiɣwezza iwakken ad rmeseḍ awal n uɛaddi uɛḍil deg tirawt.}}',
'passwordreset-legend' => 'Awennez tikkelt nniḍen n awal uɛaddi',
'passwordreset-disabled' => 'Awennez n awal uɛaddi yensa deg uwiki agi.',
+'passwordreset-emaildisabled' => 'Tiseɣnin email nsant ɣef wiki agi.',
'passwordreset-username' => 'Isem n useqdac',
'passwordreset-domain' => 'Talɣut :',
'passwordreset-capture' => 'Ẓeṛ tirawt ?',
'passwordreset-capture-help' => 'Lukan ad tekkiḍ ɣef texxamt agi, tirawt (deg-es awal n uɛaddi akudan) att beqqeḍ dɣa ad tetwetceggaɛ i useqdac.',
'passwordreset-email' => 'Tansa e-mail :',
'passwordreset-emailtitle' => 'Tilɣa n umiḍan ɣef {{SITENAME}}',
-'passwordreset-emailtext-ip' => 'Yiwen (Ahat kečč/kem, seg tansa IP $1) yessutered asiwel n tilɣa n umiḍan inek/inem i {{SITENAME}} ($4). {{PLURAL:$3|Amiḍan n useqdac agi yedrew|imiḍanen n iseqdacen agi drewen}} s tansa e-mail agi :
+'passwordreset-emailtext-ip' => 'Yiwen (Ahat kečč/kem, seg tansa IP $1) yessutered awennez n awal n uɛaddi i {{SITENAME}} ($4). {{PLURAL:$3|Amiḍan n useqdac agi yeqqen|imiḍanen n iseqdacen agi qqenen}} s tansa e-mail agi :
$2
-{{PLURAL:$3|Awal n uɛaddi agi ad i aff tasewti-s|Awalen n uɛaddi agi ad affen taseweti nsen}} deg {{PLURAL:$5|yiwen ass|$5 ussan}}. Ilaq tura ad qqeneḍ dɣa ad freneḍ awal n uɛaddi amaynut. Lukan mačči d kečč/kem i xedmen asuter agi, naɣ tecfiḍ tura i awal n uɛaddi inek/inem, tzemreḍ ad eǧǧeḍ izen agi.',
-'passwordreset-emailtext-user' => 'Aseqdac $1 ɣef {{SITENAME}} yessutered asiwel n tilɣa n umiḍan inek/inem i {{SITENAME}} ($4). {{PLURAL:$3|Amiḍan n useqdac agi yedrew|imiḍanen n iseqdacen agi drewen}} s tansa e-mail agi :
+{{PLURAL:$3|Awal n uɛaddi uɛḍil agi ad i aff tasewti-s|Awalen n uɛaddi uɛḍilen agi ad affen taseweti nsen}} deg {{PLURAL:$5|yiwen ass|$5 ussan}}. Ilaq tura ad qqeneḍ dɣa ad freneḍ awal n uɛaddi amaynut. Lukan mačči d kečč/kem i xedmen asuter agi, naɣ tecfiḍ tura i awal n uɛaddi inek/inem, tzemreḍ ad eǧǧeḍ izen agi.',
+'passwordreset-emailtext-user' => 'Aseqdac $1 ɣef {{SITENAME}} yessutered awennez n awal n uɛaddi i {{SITENAME}} ($4). {{PLURAL:$3|Amiḍan n useqdac agi yeqqen|imiḍanen n iseqdacen agi qqenen}} s tansa e-mail agi :
$2
-{{PLURAL:$3|Awal n uɛaddi agi ad i aff tasewti-s|Awalen n uɛaddi agi ad affen taseweti nsen}} deg {{PLURAL:$5|yiwen ass|$5 ussan}}. Ilaq tura ad qqeneḍ dɣa ad freneḍ awal n uɛaddi amaynut. Lukan mačči d kečč/kem i xedmen asuter agi, naɣ tecfiḍ tura i awal n uɛaddi inek/inem, tzemreḍ ad eǧǧeḍ izen agi.',
+{{PLURAL:$3|Awal n uɛaddi uɛḍil agi ad i aff tasewti-s|Awalen n uɛaddi uɛḍilen agi ad affen taseweti nsen}} deg {{PLURAL:$5|yiwen ass|$5 ussan}}. Ilaq tura ad qqeneḍ dɣa ad freneḍ awal n uɛaddi amaynut. Lukan mačči d kečč/kem i xedmen asuter agi, naɣ tecfiḍ tura i awal n uɛaddi inek/inem, tzemreḍ ad eǧǧeḍ izen agi.',
'passwordreset-emailelement' => 'Isem n useqdac : $1
Awal n uɛddi akudan : $2',
-'passwordreset-emailsent' => 'Tirawt n usmekti tetwazen.',
-'passwordreset-emailsent-capture' => 'Tirawt n usmekti tetwazen, ẓeṛ-itt ddaw agi.',
-'passwordreset-emailerror-capture' => 'Tirawt n usmekti t-arewed, ẓeṛ-itt ddaw agi, lamaɛna azen yefkad anezri (tirawt ur tru ara) : $1',
+'passwordreset-emailsent' => 'Tirawt n uwennez n awal n uɛaddi tetwaceggaɛ.',
+'passwordreset-emailsent-capture' => 'Tirawt n uwennez n awal n uɛaddi tetwaceggaɛ, ẓeṛ-itt ddaw agi.',
+'passwordreset-emailerror-capture' => 'Tirawt n uwennez n awal n uɛaddi t-arewed, ẓeṛ-itt ddaw agi, lamaɛna aceggaɛ i {{GENDER:$2|umseqdac}} yefkad anezri : $1',
# Special:ChangeEmail
'changeemail' => 'Beddel tansa n e-mail',
'changeemail-oldemail' => 'Tansa e-mail n tura :',
'changeemail-newemail' => 'Tansa e-mail tamaynut :',
'changeemail-none' => '(ulac)',
+'changeemail-password' => 'Awal-ik/im n uɛaddi ɣef {{SITENAME}} :',
'changeemail-submit' => 'Beddel tansa e-mail',
'changeemail-cancel' => 'Semmewet',
+'changeemail-throttled' => 'Tɛerdeḍ ad qqeneḍ aṭas tiqwal.
+Ilaq ad rǧuḍ $1 uqbel ad ɛerdeḍ tikkelt nniḍen.',
+
+# Special:ResetTokens
+'resettokens' => 'Wennez tiddas',
+'resettokens-text' => 'D-agi tzemreḍ ad twennezeḍ tiddas i ɛemmeden ad kecmeḍ ar isefka usligen i qqenen ar amiḍan inek/inem.
+
+Ilaq ad twennezeḍ tiddas ma tferqeḍ-ten s tuccḍa s umseqdac nniḍen neɣ ma amiḍan inek/inem yexṣer.',
+'resettokens-no-tokens' => 'Ulac tiddas an wennez.',
+'resettokens-legend' => 'Wennez tiddas',
+'resettokens-tokens' => 'Tiddas :',
+'resettokens-token-label' => '$1 (azal amiran : $2)',
+'resettokens-watchlist-token' => 'Tiddest i usuddem (Atom/RSS) web n [[Special:Watchlist|ibeddilen n isebtar n umuɣ inek/inem n uḍfar]]',
+'resettokens-done' => 'Tiddas i wennezen.',
+'resettokens-resetbutton' => 'Wennez tiddas i fernen',
# Edit page toolbar
'bold_sample' => 'Aḍris aberbuz',
'loginreqlink' => 'Kcem',
'loginreqpagetext' => 'Yessefk $1 iwakken ad teẓriḍ isebtar wiyaḍ.',
'accmailtitle' => 'Awal n tbaḍnit yettwazen.',
-'accmailtext' => "Awal n uɛaddi id yuran s ugacur i [[User talk:$1|$1]] yetwecgaɛ i $2.
-Awal n uɛaddi i umiḍan agi amaynut yezmer ad yetbeddel ɣef usebter n ''[[Special:ChangePassword|ubeddel n awal uɛddi]]'' sakin tuqqna.",
+'accmailtext' => 'Awal n uɛaddi id yuran s ugacur i [[User talk:$1|$1]] yetweceggaɛ i $2.
+Yezmer ad yetbeddel ɣef usebtar [[Special:ChangePassword|Abeddel n awal uɛddi]] sakin tuqqna.',
'newarticle' => '(Amaynut)',
'newarticletext' => 'Tḍefreḍ azday ɣer usebter mazal ur yettwaxleq ara.
Akken ad txelqeḍ asebter-nni, aru deg tenkult i tella deg ukessar
'''Cfut, ttagi d azar-timeẓriwt kan.'''
Ibeddlen mazal ur ttusmektin ara!",
-'continue-editing' => 'Kemmel abeddel',
+'continue-editing' => 'Ṛuḥ ar taɣzut n ubeddel',
'previewconflict' => 'Pre-timeẓriwt-agi tesskan aḍris i yellan deg usawen lemmer tebɣiḍ a tt-tesmektiḍ.',
'session_fail_preview' => "'''Suref-aɣ! ur nezmir ara a nesmekti abeddil inek axaṭer yella ugur.
G leɛnayek ɛreḍ tikelt nniḍen. Lukan mazal yella ugur, ffeɣ umbeɛd kcem.'''",
'nocreate-loggedin' => 'Ur tesɛiḍ ara turagt i usnulfu n isebtar imaynuten.',
'sectioneditnotsupported-title' => 'Abeddel n tigezmi agi ur yezmer ara',
'sectioneditnotsupported-text' => 'Abeddel n tigezmi ur yezmer ara deg usebtar agi n ubeddel.',
-'permissionserrors' => 'Anezri n turagt',
+'permissionserrors' => 'Agul n turagt',
'permissionserrorstext' => 'Ur tesɛiḍ ara turagt iwakken ad xedmeḍ wayagi i {{PLURAL:$1|taɣẓint|tiɣẓinin}} agi :',
'permissionserrorstext-withaction' => 'Ur sɛiḍ ara ttesriḥ af $2, i {{PLURAL:$1|taɣẓint|tiɣẓinin}} agi :',
'recreate-moveddeleted-warn' => "'''Ɣur-wet : asebter agi i tebɣam ad snulfum, yetwekkes uqbel.'''
Ahat yetwemḥa.',
'edit-conflict' => 'Amgirred n ubeddel.',
'edit-no-change' => 'Abeddel inek/inem ur yetwexdam ara acku ur di ban ara abeddel deg uḍris.',
+'postedit-confirmation' => 'Abeddel inek/inem yetwakles.',
'edit-already-exists' => 'Asebter amaynut ur d yesnufu ara.
Yella yakan.',
'defaultmessagetext' => 'Izen s lexṣas',
'content-failed-to-parse' => 'Tasleṭ n ugbur n $2 i talɣa $1 texseṛ : $3',
'invalid-content-data' => 'Isefka n ugbur ur ɣbelen ara',
'content-not-allowed-here' => 'Agbur "$1" ur yesɛa ara turagt ɣef usebter [[$2]]',
+'editwarning-warning' => 'Ma ad teffeɣeḍ deg usebtar agi, akkw ibeddilen id xeddemeḍ ad sṛuḥen.
+
+Ma teqqeneḍ, tzemreḍ ad senseḍ alɣu agi deg tigezmi « Abeddel » n ismenyifen inek/inem.',
+'editpage-notsupportedcontentformat-title' => 'Amasal n ugbur ur d-yetwarfed ara',
+'editpage-notsupportedcontentformat-text' => 'Amasal n ugbur $1 ur d-yetwarfed ara sɣur talɣa n ugbur $2.',
# Content models
'content-model-wikitext' => 'wikiaḍris',
'undo-failure' => 'Ur yezmir ara ad issefu abeddel axaṭer yella amennuɣ abusari deg ubeddel.',
'undo-norev' => 'Abeddel ur yezmer ara ad yetwekkes acku ulac-itt naɣ tetwekkes yakan',
'undo-summary' => 'Ssefsu tasiwelt $1 sɣur [[Special:Contributions/$2|$2]] ([[User talk:$2|Meslay]])',
+'undo-summary-username-hidden' => 'Semmewet tacaggart $1 sɣur amseqdac yeffren',
# Account creation failure
'cantcreateaccounttitle' => 'Ur yezmir ara ad yexleq isem n wemseqdac',
'cantcreateaccount-text' => "Asnulfu n umiḍan seg tansa IP (<b>$1</b>) tekyef sɣur [[User:$3|$3]].
Taɣẓint n $3 : ''$2''",
+'cantcreateaccount-range-text' => "Asnulfu n umiḍan seg tansiwin IP deg tagrumma '''$1''', i sseddan tansa inek/inem IP ('''$4'''), twawḥelen sɣur [[User:$3|$3]].
+
+Taɣẓint i-d yefka/tefka $3 : ''$2''",
# History pages
'viewpagelogs' => 'Ẓer aɣmis n usebter-agi',
(amgirred) = amgirred akk d tasiwelt ssabeq, M = abeddel afessas.',
'history-fieldset-title' => 'Inig deg umazray',
'history-show-deleted' => 'Ekkes kan',
-'histfirst' => 'Tikkin timezwura',
-'histlast' => 'Tikkin tineggura',
+'histfirst' => 'tiqdimin',
+'histlast' => 'timaynutin',
'historysize' => '({{PLURAL:$1|1 atamḍan|$1 itamḍanen}})',
'historyempty' => '(amecluc)',
'revdelete-text' => 'Ileqman d tidyanin yettumḥan ad qqimen deg umezruy n usebter dɣa deg iɣmisen, maca agbur nsen ur i sɛu ara tuffart i uzayez."
Inedbalen wiyaḍ deg {{SITENAME}} zemren ad ẓṛen imuren i yettwafren u zemren a ten-mḥan, ḥaca ma llan icekkilen.',
'revdelete-confirm' => 'Sergeg ma tebɣiḍ ad xedmeḍ tigawt agi, fehmeḍ inalkamen, dɣa temtawiḍ s [[{{MediaWiki:Policy-url}}|ilugan]].',
-'revdelete-suppress-text' => "Ilaq tukksa at illi kan deg tijṛa agi :
-* tilɣa n yiwen ur ezgan ara
-*: ''tansa, uṭṭun n tilifun, uṭṭun n taɣellist tamettit, …''",
+'revdelete-suppress-text' => "Ilaq tukksa att illi \"kan\" deg tijṛa agi :
+* Tilɣa ahat tinergamin
+* Tilɣa ur sɛant ara amkan d-agi
+*: ''tansa, uḍḍun n tilifun, uḍḍun n taɣellist tamettit, …''",
'revdelete-legend' => 'Sbebd akref n tamuɣli',
-'revdelete-hide-text' => 'Ffer aḍris n tsiwelt',
+'revdelete-hide-text' => 'Aḍris n tacaggart',
'revdelete-hide-image' => 'Ffer ayen yellan deg ufaylu',
'revdelete-hide-name' => 'Ffer tigawt d nnican',
-'revdelete-hide-comment' => 'Ffer abeddel n uwennit',
-'revdelete-hide-user' => 'Ffer Isem n wemseqdac/IP n umeskar',
+'revdelete-hide-comment' => 'Beddel agzul',
+'revdelete-hide-user' => 'Isem n umseqdac/Tansa IP n umaẓrag',
'revdelete-hide-restricted' => 'Mḥu isefka agi i inedbalen d yimdanen wiyaḍ',
'revdelete-radio-same' => '(ur beddel ara)',
-'revdelete-radio-set' => 'Ih',
-'revdelete-radio-unset' => 'Ala',
+'revdelete-radio-set' => 'Udrig',
+'revdelete-radio-unset' => 'Yeban',
'revdelete-suppress' => 'Kkes talɣut seg inedbalen d yimdanen wiyaḍ',
'revdelete-unsuppress' => 'Kkes icekkilen ɣef tisiwal i yuɣalen-d',
'revdelete-log' => 'Ayɣer',
'compareselectedversions' => 'Ẓer imgerraden ger tisiwal i textareḍ',
'showhideselectedversions' => 'Ssken/Ffer ileqman i xtiṛen',
'editundo' => 'ssefsu',
-'diff-multi' => '({{PLURAL:$1|Yiwet tasiwelt tabusarit|$1 n tisiwal tibusarin}} af {{PLURAL:$2|amseqdac|$2 imseqdacen}} {{PLURAL:$1|ur ttumlal ara|ur ttumlalent ara}})',
+'diff-empty' => '(Ulac amgerrad)',
'diff-multi-manyusers' => '({{PLURAL:$1|Yiwen lqem agrawan|$1 ileqman igrawanen}} af {{PLURAL:$2|aseqdac|$2 iseqdacen}} {{PLURAL:$1|yeffer|ffren}})',
'difference-missing-revision' => '{{PLURAL:$1|Yiwet tacaggart|$1 ticaggartin}} n tameẓla agi ($1) {{PLURAL:$2|ur tella ara (ulac)|ur llant ara (ulac)}}.
'search-result-score' => 'Taflest : $1%',
'search-redirect' => '(asemmimeḍ $1)',
'search-section' => '(tigezmi $1)',
+'search-file-match' => '(yzega i ugbur n ufaylu)',
'search-suggest' => 'D awal $1 i tnadiḍ ?',
'search-interwiki-caption' => 'Isenfaren atmaten',
'search-interwiki-default' => 'Igemmaḍ ɣef $1 :',
'powersearch-togglenone' => 'Ulac',
'search-external' => 'Anadi yeffɣen',
'searchdisabled' => 'Anadi deg {{SITENAME}} yettwakkes. Tzemreḍ ad tnadiḍ s Google. Meɛna ur tettuḍ ara, tasmult n google taqdimt.',
+'search-error' => 'Tella tuccḍa deg unadi n : $1',
# Preferences page
'preferences' => 'Isemyifiyen',
-'mypreferences' => 'Isemyifiyen inu',
+'mypreferences' => 'Isemyifiyen',
'prefs-edits' => 'Amḍan n ibeddlilen :',
+'prefsnologintext2' => 'Ilaq ad $1 iwakken ad sbaduḍ ismenyifen inek/inem.',
'prefs-skin' => 'Aglim',
'skin-preview' => 'Pre-timeẓriwt',
'datedefault' => 'Ur sɛiɣ ara asemyifi',
'prefs-email' => 'Tixtiṛiyin n tira',
'prefs-rendering' => 'Tummant',
'saveprefs' => 'Smekti',
-'restoreprefs' => 'Err akkw azalen s lexṣas',
+'restoreprefs' => 'Err akkw iɣewwaren s lexṣas (deg akkw tigezmiwin)',
'prefs-editing' => 'Abedddil',
'rows' => 'Ijerriḍen:',
'columns' => 'Tigejda:',
'searchresultshead' => 'Anadi',
-'resultsperpage' => 'Geddac n tiririyin i mkul asebter:',
'stub-threshold' => 'Talast timinegt i <a href="#" class="stub">izdayen ɣer ibegzan</a> (itamḍanen) :',
'stub-threshold-disabled' => 'Yensa',
'recentchangesdays' => 'Amḍan n ussan an beqqeḍ deg ibeddilen ineggura.',
'recentchangesdays-max' => 'Afellay $1 {{PLURAL:$1|ass|ussan}}',
'recentchangescount' => 'Amḍan n ibeddilen i ubeqqeḍ s lexṣas :',
'prefs-help-recentchangescount' => 'Wagi yesɛa deg-es ibeddilen ineggura, isebtar n umezruy d iɣmisen.',
+'prefs-help-watchlist-token2' => 'Hattan tasarut tufurt n usuddem Web n umuɣ inek/inem n uḍfar.
+Akkw amḍan yesɛan tasarut agi, ad yezmer ad i ɣer umuɣ inek/inem n uḍfar, ur d-sselɣu ara tasarut agi ihi.
+[[Special:ResetTokens|Nqer d-agi ma tebɣiḍ ad wennezeḍ tasarut agi]].',
'savedprefs' => 'Isemyifiyen inek yettusmektan.',
'timezonelegend' => 'Iẓḍi n ukud :',
'localtime' => 'Asrag adigan :',
Wagi ur yezmer ara ad yetwekkes.',
'prefs-emailconfirm-label' => 'Aragag n tirawt :',
'youremail' => 'E-mail *:',
-'username' => 'Isem n wemseqdac:',
-'uid' => 'Amseqdac ID:',
-'prefs-memberingroups' => 'Aεeggal n {{PLURAL:$1|ugraw|igrawen}} :',
+'username' => '{{GENDER:$1|Isem n umseqdac|Isem n tamseqdact}} :',
+'uid' => 'Uḍḍun n {{GENDER:$1|umseqdac|tamseqdact}}:',
+'prefs-memberingroups' => '{{GENDER:$2|Aεeggal|Taɛggalt}} n {{PLURAL:$1|ugraw|igrawen}} :',
'prefs-registration' => 'Azmez n tiggezt :',
'yourrealname' => 'Isem n ṣṣeḥ *:',
'yourlanguage' => 'Tutlayt:',
'badsig' => 'Azmul mačči d ṣaḥiḥ; Ssenqed tags n HTML.',
'badsiglength' => 'Azmul inek/inem, teɣwzi-s tameqqṛant aṭas.
Ur ilaq ara ad i sɛu ugar n $1 {{PLURAL:$1|asekkil|isekkilen}}.',
-'yourgender' => 'Tawsit :',
-'gender-unknown' => 'Ulac tumlin',
-'gender-male' => 'Amalay',
-'gender-female' => 'Untay',
-'prefs-help-gender' => 'Axetṛan : yetseqdec iwakken ad yefk tawsit i inzan n ugrudem. Talɣut agi at illi tazayert.',
+'yourgender' => 'Amek i tebɣiḍ ad n-ini fellak(m) ?',
+'gender-unknown' => 'Ur bɣiɣ ara ad iniɣ',
+'gender-male' => 'Yebeddel isebtar n wiki',
+'gender-female' => 'Tebeddel isebtar n wiki',
+'prefs-help-gender' => 'Sbadu asmenyif agi d-afrayan.
+Aseɣẓan agi yetseqdac azal-is iwakken ad yemeslay s kečč/kem dɣa ad yefk isem-ik/im i wiyaḍ nniḍen s useqdac n tawsit tajeṛṛumant.
+Talɣut agi attili d-tazayezt.',
'email' => 'E-mail',
'prefs-help-realname' => '* Isem n ṣṣeḥ (am tebɣiḍ): ma textareḍ a t-tefkeḍ, ad yettuseqdac iwakken ad snen medden anwa yura tikkin inek.',
'prefs-help-email' => '* E-mail (am tebɣiḍ): Teǧǧi imseqdacen wiyaḍ a k-aznen email mebla ma ẓren tansa email inek.',
'prefs-signature' => 'Azmul',
'prefs-dateformat' => 'Amasal n izemzan',
'prefs-timeoffset' => 'Asekḥer n usrag',
-'prefs-advancedediting' => 'Tixtiṛiyin timahlanin',
+'prefs-advancedediting' => 'Tixtiṛiyin timuta',
+'prefs-editor' => 'Amaẓrag',
+'prefs-preview' => 'Azarskan',
'prefs-advancedrc' => 'Tixtiṛiyin timahlanin',
'prefs-advancedrendering' => 'Tixtiṛiyin timahlanin',
'prefs-advancedsearchoptions' => 'Tixtiṛiyin timahlanin',
'prefs-displayrc' => 'Tixtiṛiyin n ubeqqeḍ',
'prefs-displaysearchoptions' => 'Tixtiṛiyin n ubeqqeḍ',
'prefs-displaywatchlist' => 'Tixtiṛiyin n ubeqqeḍ',
+'prefs-tokenwatchlist' => 'Tiddest',
'prefs-diffs' => 'Timeẓliwin',
+'prefs-help-prefershttps' => 'Asmenyif agi, ad yelḥu ar tuqqna ay d-yetteddun.',
+'prefs-tabs-navigation-hint' => 'Taxbalut : Tzemreḍ ad seqdeceḍ tineccabin n uzelmaḍ d uyeffus iwakken ad ssileleḍ gar iccaren.',
# User preference: email validation using jQuery
'email-address-validity-valid' => 'E-mail agi teɣbel',
'userrights-no-interwiki' => 'Ur tesɛiḍ ara turagt iwakken ad beddeleḍ izerfan n iseqdacen ɣef wiki nniḍen.',
'userrights-nodatabase' => 'Taffa n isefka « $1 » ulac itt naɣ mačči d tadigant.',
'userrights-nologin' => 'Ilaq ad [[Special:UserLogin|qqeneḍ]] s yiwen umiḍan anedbal iwakken ad beddeleḍ izerfan n useqdac.',
-'userrights-notallowed' => 'Amiḍan inek/inem ur yesɛa ara turagt iwakken ad beddeleḍ izerfan n useqdac.',
+'userrights-notallowed' => 'Ur tesɛiḍ ara turagt ad rnuḍ neɣ ad ekkeseḍ izerfan n umseqdac.',
'userrights-changeable-col' => 'Igrawen i tzemreḍ ad beddeleḍ',
'userrights-unchangeable-col' => 'Igrawen ur tzemreḍ ara ad beddeleḍ',
+'userrights-conflict' => 'Ccwal n ubeddel n izerfan n umseqdac ! Ilaq ad ɛzemeḍ tikelt nniḍen dɣa ad sergegeḍ ibeddilen.',
+'userrights-removed-self' => 'Tekkeseḍ s lerbaḥ izerfan inek/inem. Tura ur tzemreḍ ara ad kecmeḍ ar usebtar agi.',
# Groups
'group' => 'Adrum:',
'right-reupload-shared' => 'Ɛefes deg udigan afaylu yellan ɣef azadur azduklan',
'right-upload_by_url' => 'Kter afaylu seg tansa URL',
'right-purge' => 'Senger tazarkatut n isebtar war asuter n uragag',
-'right-autoconfirmed' => 'Beddel isebtar azinsegdelen',
+'right-autoconfirmed' => 'Ur i tilli ara yeswaɣ sɣur tilisa n uktum yeqqenen ar tansiwin IP',
'right-bot' => 'Ad yilli yesniret am ukala yeswurmen',
'right-nominornewtalk' => 'Ur ndeḥ ara tazmilt n inzan imaynuten ma neseqdac abeddel amectuḥ ɣef usebtar n umeslay n yiwen useqdac',
'right-apihighlimits' => 'Seqdec tilisa tid ɛlayen deg tuttriwin API',
'right-hideuser' => 'Kyef aseqdac s tuffra n isem-is ar udem n uzayez',
'right-ipblock-exempt' => 'Zizdew tansiwin IP yekyefen, ikyafen iwurmanen d ikyafen n tagrummiwin IP',
'right-proxyunbannable' => 'Zizdew ikyafen iwurmanen n iqeddacen proxy',
-'right-unblockself' => 'Ad ekkesen akyaf imanen nsen',
-'right-protect' => 'Beddel aswir n umesten n isebtar dɣa beddel isebtar i gdelen',
-'right-editprotected' => 'Beddel isebtar i gdelen (war asegdel s uceṛcuṛ)',
+'right-unblockself' => 'Ad yekkes akyaf iman-is',
+'right-protect' => 'Beddel iswiren n umesten dɣa beddel isebtar i gdelen s uceṛcuṛ',
+'right-editprotected' => 'Beddel isebtar i gdelen s « {{int:protect-level-sysop}} »',
+'right-editsemiprotected' => 'Beddel isebtar i gdelen s « {{int:protect-level-autoconfirmed}} »',
'right-editinterface' => 'Beddel agrudem n useqdac',
'right-editusercssjs' => 'Beddel ifuyla CSS d JavaScript n iseqdacen nniḍen',
'right-editusercss' => 'Beddel ifuyla CSS n iseqdacen nniḍen',
'right-edituserjs' => 'Beddel ifuyla JavaScript n iseqdacen nniḍen',
+'right-editmyusercss' => 'Beddel ifuyla CSS n umseqdac inek/inem',
+'right-editmyuserjs' => 'Beddel ifuyla Javascript n umseqdac inek/inem',
+'right-viewmywatchlist' => 'Zeṛ umuɣ inek/inem n uḍfar',
+'right-editmywatchlist' => 'Beddel umuɣ inek/inem n uḍfar. Ger tamawt af kra n tigawin ad rnunt isebtar nniḍen war azref agi.',
+'right-viewmyprivateinfo' => 'Zeṛ isefka udmawanen inek/inem (amedya : tansa email, isem n tiddet)',
+'right-editmyprivateinfo' => 'Beddel isefka udmawanen inek/inem (amedya : tansa email, isem n tiddet)',
+'right-editmyoptions' => 'Beddel ismenyifen inek/inem',
'right-rollback' => 'Ekkes s urured ibeddilen n umedraw aneggaru deg yiwen asebter',
'right-markbotedits' => 'Creḍ ibeddilen yetwekkesen am aken d aṛubut i tni beddelen.',
'right-noratelimit' => 'Ur i tilli ara yeswaɣ sɣur tilisa n utug',
'action-block' => 'Kyef deg tira aseqdac agi',
'action-protect' => 'beddel iswiren n umesten i usebter agi',
'action-rollback' => 'ekkes s urured ibeddilen n umedraw aneggaru yebeddelen yiwen usebter',
-'action-import' => 'Kter asebter agi seg wiki nniḍen',
-'action-importupload' => 'Kter asebter agi seg ufaylu n wezdam (upload)',
+'action-import' => 'kter isebtar agi seg wiki nniḍen',
+'action-importupload' => 'kter isebtar agi seg ufaylu n wezdam',
'action-patrol' => 'Creḍ abeddel n wiyaḍ nniḍen am aken tesɛa tacaggart',
'action-autopatrol' => 'ad sɛuḍ tacaggart i ubeddil ik',
'action-unwatchedpages' => 'Sken-d tabdart n isebtaren ur yettwalan ara.',
'action-userrights-interwiki' => 'Ẓreg izerfan n umseqdac deg wikis wiyaḍ',
'action-siteadmin' => 'sekkweṛ naɣ kkes aseḍru i taffa n isefka',
'action-sendemail' => 'Ceggaɛ tira',
+'action-editmywatchlist' => 'beddel umuɣ inek uḍfar',
+'action-viewmywatchlist' => 'zeṛ umuɣ inek/inem n uḍfar',
+'action-viewmyprivateinfo' => 'zeṛ tilɣa inek tusligin',
+'action-editmyprivateinfo' => 'beddel tilɣa inek tusligin',
# Recent changes
'nchanges' => '$1 {{PLURAL:$1|Abeddel|Ibeddlen}}',
+'enhancedrc-since-last-visit' => '$1 {{PLURAL:$1|seg tarzaft taneggarut}}',
+'enhancedrc-history' => 'amezruy',
'recentchanges' => 'Ibeddilen imaynuten',
'recentchanges-legend' => 'Tifranin n ibeddilen imaynuten',
'recentchanges-summary' => 'Ḍfer ibeddilen imaynuten n {{SITENAME}}.',
+'recentchanges-noresult' => 'Ulac abeddel yecban ayen i ttnadiḍ ɣef tallit id efkeḍ.',
'recentchanges-feed-description' => 'Ḍfer ibeddilen imaynuten n wiki-yagi deg usuddem-agi.',
'recentchanges-label-newpage' => 'Abeddel agi ad yesnulfu asebter amaynut',
'recentchanges-label-minor' => 'Wagi d-abeddel amectuḥ',
'recentchanges-label-bot' => 'D-arubut id yeseqdacen abeddel agi',
'recentchanges-label-unpatrolled' => 'Abeddel agi mazal yesɛa aselken.',
+'recentchanges-label-plusminus' => 'Tiddi n usebtar tetwebeddel s umḍan agi n itamḍanen.',
+'recentchanges-legend-heading' => "'''Aglam :'''",
+'recentchanges-legend-newpage' => '(zeṛ daɣen [[Special:NewPages|umuɣ n isebtar imaynuten]]).',
+'recentchanges-legend-plusminus' => "(''± 123'')",
'rcnotefrom' => "Deg ukessar llan ibeddlen seg wasmi '''$2''' (ar '''$1''').",
'rclistfrom' => 'Ssken ibeddlen imaynuten seg $1',
'rcshowhideminor' => '$1 ibeddlen ifessasen',
'rcshowhidebots' => '$1 irubuten',
-'rcshowhideliu' => '$1 n yimseqdacen i ikecmen',
+'rcshowhideliu' => '$1 imseqdacen imseklesen',
'rcshowhideanons' => '$1 n yimseqdacen udrigen',
'rcshowhidepatr' => '$1 n yibeddlen yettwassenqden',
'rcshowhidemine' => '$1 ibeddlen inu',
'rc_categories_any' => 'Ulayɣer',
'rc-change-size-new' => '$1 {{PLURAL:$1|atamḍan|itamḍanen}} sakin abeddel',
'newsectionsummary' => '/* $1 */ tigezmi tamaynut',
-'rc-enhanced-expand' => 'Ẓeṛ tilɣa (yeḥwaǧ JavaScript)',
+'rc-enhanced-expand' => 'Ẓeṛ ttfaṣil',
'rc-enhanced-hide' => 'Ffer tilɣa',
'rc-old-title' => 'yesnulfad s uzwel « $1 »',
'reuploaddesc' => 'Semmewet dɣa uɣaled ar tiferkit n tuznin.',
'upload-tryagain' => 'Ceggaɛ aglam n ufaylu ibeddelen',
'uploadnologin' => 'Ur tekcimeḍ ara',
-'uploadnologintext' => 'Yessefk [[Special:UserLogin|ad tkecmeḍ]]
-iwakken ad tazneḍ afaylu.',
+'uploadnologintext' => 'Ilaq ad $1 iwakken ad ketreḍ ifuyla.',
'upload_directory_missing' => 'Akaram n taktert n ufaylu ($1) ulac-it dɣa ur d-yesnulfa ara sɣur aqeddac web.',
-'upload_directory_read_only' => 'Weserver/serveur Web ur yezmir ara ad yaru deg ($1).',
+'upload_directory_read_only' => 'Akaram n taktert n ifuyla ($1) ur yezmer ara ad yetbeddel seg aqeddac web.',
'uploaderror' => 'Agul deg usekcam',
'upload-recreate-warning' => "'''Ɣur-wet : Afaylu s isem agi yetwekkes naɣ yetembiwel.'''
Aɣmis n tukksiwin d win n ittembiwilen n usebter agi beqqeḍen d-agi i tilɣa :",
[[File:$1|thumb|center|$1]]',
'file-exists-duplicate' => 'Afaylu agi d-asleg n {{PLURAL:$1|ufaylu agi|ifuyla agi}} :',
'file-deleted-duplicate' => 'Afaylu am wagi ([[:$1]]) yetwekkes yakan. Ilaq ad selkeneḍ aɣmis n tukksiwin n ufaylu agi uqbel atid ktereḍ tikkelt nniḍen.',
+'file-deleted-duplicate-notitle' => 'Afaylu yesɛan isem am wagi yetwumḥa, ula d-azwel ines.
+Ilaq ad ssutereḍ i yiwen aterras ma yezmer ad yessenqed aɣmis n ufaylu agi yetwumḥan iwakken ad yessekyed addad uqbel at-id ktereḍ tikelt nniḍen.',
'uploadwarning' => 'Aɣtal deg wazan n ufayluwen',
'uploadwarning-text' => 'Beddel aglam n ufaylu dɣa ɛreḍ tikkelt nniḍen',
'savefile' => 'Smekti afaylu',
'backend-fail-notsame' => 'Afaylu imeẓli yella yakan i $1.',
'backend-fail-invalidpath' => '$1 mačči d abrid n uḥraz iɣbelen.',
'backend-fail-delete' => 'Ulamek an mḥu afaylu "$1".',
+'backend-fail-describe' => 'Ulamek an beddel adferisefka n ufaylu "$1".',
'backend-fail-alreadyexists' => 'Afaylu $1 yella yakan.',
'backend-fail-store' => 'Ulamek an ḥrez afaylu $1 deg $2.',
'backend-fail-copy' => 'Ulamek an nɣel afaylu $1 deg $2.',
'upload_source_file' => ' (afaylu deg uselkim inek)',
# Special:ListFiles
-'listfiles-summary' => 'Asebter agi uslig i εemmed ad yefk umu n akkw ifuyla i kteren.
-Ma aseqdac as yernu tastayt, ala ifuyla s lqem taneggarut id yekter aseqdac nni ad beqqeḍen.',
+'listfiles-summary' => 'Asebter agi uslig i εemmed ad yefk umu n akkw ifuyla i kteren.',
'listfiles_search_for' => 'Nadi ɣef yisem n tugna:',
'imgfile' => 'afaylu',
'listfiles' => 'Umuɣ n tugniwin',
'listfiles_size' => 'Tiddi (bytes/octets)',
'listfiles_description' => 'Aglam',
'listfiles_count' => 'Ileqman',
+'listfiles-show-all' => 'Sseddu ileqman iqdimen n tugniwin',
+'listfiles-latestversion' => 'Lqem amiran',
+'listfiles-latestversion-yes' => 'Ih',
+'listfiles-latestversion-no' => 'Ala',
# File description page
'file-anchor-link' => 'Afaylu',
'randompage' => 'Asebter menwala',
'randompage-nopages' => 'Ulac isebtar deg {{PLURAL:$2|tallunt n isemawen|tallunin n isemawen}} : $1.',
+# Random page in category
+'randomincategory' => 'Asebtar s ugacur deg taggayt',
+'randomincategory-invalidcategory' => '« $1 » mačči d-isem n taggayt yeɣblen.',
+'randomincategory-nopages' => 'Ulac asebtar deg [[:Category:$1]].',
+'randomincategory-selectcategory' => 'Ddem asebtar s ugacur deg taggayt : $1 $2.',
+'randomincategory-selectcategory-submit' => 'Ruḥ',
+
# Random redirect
'randomredirect' => 'Asemmimeḍ menwala',
'randomredirect-nopages' => 'Ulac asebter n alsanamad deg tallunt n isemawen « $1 ».',
'statistics-users-active-desc' => 'Iseqdacen yesɛan xersum yiwet tigawt seg {{PLURAL:$1|ass agi aneggaru|$1 ussan agi ineggura}}',
'statistics-mostpopular' => 'isebtar mmeẓren aṭṭas',
+'pageswithprop' => 'Isebtar s ayla n usebtar',
+'pageswithprop-legend' => 'Isebtar s ayla n usebtar',
+'pageswithprop-text' => 'Asebtar agi, yefked umuɣ n isebtar yeseqdacen ayla n usebtar amaẓlay',
+'pageswithprop-prop' => 'Isem n ayla :',
+'pageswithprop-submit' => 'Ruḥ',
+'pageswithprop-prophidden-long' => 'azal n ayla n uḍris aɣezfan yeffren ($1)',
+'pageswithprop-prophidden-binary' => 'azal n ayla imisin yeffren ($1)',
+
'doubleredirects' => 'Asemmimeḍ yeḍra snat tikwal',
'doubleredirectstext' => 'Mkull ajerriḍ yesɛa azday ɣer asmimeḍ amezwaru akk d wis sin, ajerriḍ amezwaru n uḍris n usebter wis sin daɣen, iwumi yefkan asmimeḍ ṣaḥiḥ i yessefk ad sɛan isebtar azday ɣur-s.',
'double-redirect-fixed-move' => 'Alsanamud agi, ɣef ayed asaḍas [[$1]] yetwebeddel isem, yetawi tura ɣer [[$2]].',
'ninterwikis' => '$1 {{PLURAL:$1|interwiki|interwikis}}',
'nlinks' => '$1 {{PLURAL:$1|azday|izdayen}}',
'nmembers' => '$1 {{PLURAL:$1|amaslad|imasladen}}',
+'nmemberschanged' => '$1 → $2 {{PLURAL:$2|amaslad|imasladen}}',
'nrevisions' => '$1 {{PLURAL:$1|tasiwelt|tisiwal}}',
'nviews' => '$1 {{PLURAL:$1|timeẓriwt|tuẓrin}}',
'nimagelinks' => 'Yetseqdec ɣef $1 {{PLURAL:$1|asebter|isebtar}}',
'mostrevisions' => 'Isebtar i yettubedlen aṭas',
'prefixindex' => 'Akk isebtaren s yisekkilen imezwura',
'prefixindex-namespace' => 'Akkw isebtar s adat (tallunt n isemawe $1)',
+'prefixindex-strip' => 'Ekkes azwir deg umuɣ',
'shortpages' => 'isebtar imecṭuḥen',
'longpages' => 'Isebtar imeqqranen',
'deadendpages' => 'isebtar mebla izdayen',
'protectedpages' => 'isebtar yettwaḥerzen',
'protectedpages-indef' => 'Imestenen imeɣlalen kan',
'protectedpages-cascade' => 'Imestenen s uceṛcuṛ kan',
+'protectedpages-noredirect' => 'Ffer isemmimḍen',
'protectedpagesempty' => 'isebtar-agi ttwaḥerzen s imsektayen -agi.',
'protectedtitles' => 'Izwal ugdilen',
'protectedtitlesempty' => 'Ulac azwel yesɛan asegdel s iɣewwaren agi.',
'listusers' => 'Umuɣ n yimseqdacen',
'listusers-editsonly' => 'Sekned kan iseqdacen yesɛan asekcem naɣ ugar',
'listusers-creationsort' => 'Fren s azmez n usnulfu',
+'listusers-desc' => 'Fren deg amizzwer amadar',
'usereditcount' => '$1 {{PLURAL:$1|abeddel|ibeddilen}}',
'usercreated' => '{{GENDER:$3|Yesnulfu-d}} ass n $1 ar $2',
'newpages' => 'isebtar imaynuten',
'linksearch-pat' => 'Anadi n tanfalit :',
'linksearch-ns' => 'Talluntin n isemawen :',
'linksearch-ok' => 'Nadi',
-'linksearch-text' => 'Tzemreḍ ad seqdeceḍ isekkilen imeẓliyen am « *.wikipedia.org ».
+'linksearch-text' => 'Isekkilen imeẓliyen am « *.wikipedia.org » zemren ad wetseqdecen.
Ilaq-asen deg udday taɣult n uswir imineg, am amedya « *.org ».<br />
-Ineggafen imazdayen : <code>$1</code> (ur d-renu acemma deg unadi inek/inem)',
+{{PLURAL:$2|Aneggaf yettwaɛqelen|Ineggafen yettwaɛqelen}}: <code>$1</code> (http:// s lexṣas ma ulac aneggaf).',
'linksearch-line' => '$1 yeqqen seg $2',
'linksearch-error' => 'Tzemreḍ ad seqdeceḍ isekkilen usligen ala deg tazzwara n taɣult uselkim.',
# Special:ActiveUsers
'activeusers' => 'Umuɣ n iseqdacen urmiden',
'activeusers-intro' => 'Wagi d umuɣ n iseqdacen yexedmen armud deg {{PLURAL:$1|ass agi aneggaru|$1 ussan agi ineggura}}.',
-'activeusers-count' => '$1 {{PLURAL:$1|abeddel n ussan agi ineggura|ibeddilen n ussan agi ineggura}} deg {{PLURAL:$3|ass aneggaru|$3 ussan ineggura}}',
+'activeusers-count' => '$1 {{PLURAL:$1|tigawt|tigawin}} deg {{PLURAL:$3|ass aneggaru|$3 ussan ineggura}}',
'activeusers-from' => 'Ssken iseqdacen seg :',
'activeusers-hidebots' => 'Ffer iṛubuten',
'activeusers-hidesysops' => 'Ffer inedbalen',
'listgrouprights' => 'Izerfan n igrawen n iseqdacen',
'listgrouprights-summary' => 'Asebter agi yesɛa yiwen umuɣ n igrawen i sengelen deg wiki agi dɣa izerfan n wadduf i qqenen.
Zemrent ad ilint [[{{MediaWiki:Listgrouprights-helppage}}|tilɣa nniḍen]] ɣef izerfan n yiwen.',
-'listgrouprights-key' => '*<span class="listgrouprights-granted">Izerfan sefkan</span>
+'listgrouprights-key' => 'Aglam :
+*<span class="listgrouprights-granted">Izerfan sefkan</span>
*<span class="listgrouprights-revoked">Izerfan ekkesen</span>',
'listgrouprights-group' => 'Agraw',
'listgrouprights-rights' => 'Izerfan',
'emailuser-title-target' => 'Ceggaɛ tirawt i {{GENDER:$1|aseqdac agi|taseqdact agi}}',
'emailuser-title-notarget' => 'Ceggaɛ tirawt i useqdac',
'emailpage' => 'Ceggaɛ tirawt i useqdac',
-'emailpagetext' => 'Tzemreḍ ad seqdeceḍ tiferkit ddaw agi iwakken ad ceggɛeḍ tirawt i useqdac agi.
+'emailpagetext' => 'Tzemreḍ ad seqdeceḍ tiferkit ddaw agi iwakken ad ceggɛeḍ tirawt i {{GENDER:$1|umseqdac|tamseqdact}} agi.
Tansa e-mail id ekfeḍ deg [[Special:Preferences|iɣewwaren inek/inem]] ad tban deg urti "Amceggaɛ" n izen ; akka, anermas ad yezmer ak/akem yefk tiririt.',
'usermailererror' => 'Yella ugul deg uzwel n email:',
'defemailsubject' => '{{SITENAME}} tirawt n useqdac « $1 »',
'usermessage-editor' => 'Ameskar n unagraw',
# Watchlist
-'watchlist' => 'Umuɣ n uɛessi inu',
-'mywatchlist' => 'Umuɣ n uɛessi inu',
+'watchlist' => 'Umuɣ n uɛessi',
+'mywatchlist' => 'Umuɣ n uɛessi',
'watchlistfor2' => 'I $1 $2',
'nowatchlist' => 'Umuɣ n uɛessi inek d ilem.',
'watchlistanontext' => 'G leɛnaya-k $1 iwakken ad twalaḍ neɣ tbeddleḍ iferdas deg wumuɣ n uɛessi inek.',
'watchnologin' => 'Ur tekcimeḍ ara',
'watchnologintext' => 'Yessefk ad [[Special:UserLogin|tkecmeḍ]] iwakken ad tbeddleḍ umuɣ n uɛessi inek.',
'addwatch' => 'Rnu i umuɣ n uɛassi',
-'addedwatchtext' => "Asebter \"[[:\$1]]\" yettwarnu deg [[Special:Watchlist|wumuɣ n uɛessi]] inek.
-Ma llan ibeddlen deg usebter-nni neɣ deg usbtar umyennan ines, ad banen dagi,
-Deg [[Special:RecentChanges|wumuɣ n yibeddlen imaynuten]] ad banen s '''yisekkilen ibberbuzen''' (akken ad teẓriḍ).
-
-Ma tebɣiḍ ad tekkseḍ asebter seg wumuɣ n uɛessi inek, wekki ɣef \"Fakk aɛessi\".",
+'addedwatchtext' => 'Asebter "[[:$1]]" yettwarnu deg [[Special:Watchlist|wumuɣ n uḍfar]] inek/inem.
+Ibeddlen id-yetteddun deg usebter-agi neɣ deg usbtar umyennan ines, ad banen dagi.',
'removewatch' => 'Ekkes seg umuɣ n uɛassi',
'removedwatchtext' => '!!Asebter "[[:$1]]" yettwakkes seg [[Special:Watchlist|umuɣ n uɛessi]] inek.',
'watch' => 'Ɛass',
'notanarticle' => 'Mačči d amagrad',
'notvisiblerev' => 'Lqem tetwemḥa',
'watchlist-details' => 'ttɛassaɣ {{PLURAL:$1|$1 usebter|$1 n isebtaren}} mebla isebtaren "amyannan".',
-'wlheader-enotif' => 'Yeǧǧa Email n talɣut.',
-'wlheader-showupdated' => "Isebtar ttubeddlen segwasmi tkecmeḍ tikelt taneggarut ttbanen-d s '''uḍris aberbuz'''",
+'wlheader-enotif' => 'Talɣut s email yessermed.',
+'wlheader-showupdated' => "Isebtar ttubeddlen segwasmi tkecmeḍ tikelt taneggarut ttbanen-d s uḍris '''aberbuz'''.",
'watchmethod-recent' => 'yessenqed ibeddlen imaynuten n isebtar i ttɛasseɣ',
'watchmethod-list' => 'yessenqed isebtar i ttɛassaɣ i ibeddlen imaynuten',
'watchlistcontains' => 'Umuɣ n uɛessi inek ɣur-s $1 n {{PLURAL:$1|usebter|isebtar}}.',
'iteminvalidname' => "Agnu akk d uferdis '$1', isem mačči ṣaḥiḥ...",
-'wlnote' => "Ddaw agi {{PLURAL:$1|yella abeddel aneggaru|llan '''$1''' ibeddilen ineggura}} n {{PLURAL:$2|usrag aneggaru|'''$2''' isragen ineggura}}, seg $3 af $4.",
+'wlnote2' => 'Ddaw agi ibeddilen deg {{PLURAL:$1|asrag aneggaru|<strong>$1</strong> isragen ineggura}}, seg $2, $3.',
'wlshowlast' => 'Ssken $1 n swayeɛ $2 n wussan neɣ $3 ineggura',
'watchlist-options' => 'Tifranin n umuɣ n uɛessi',
'enotif_mailer' => 'Email n talɣut n {{SITENAME}}',
'enotif_reset' => 'Rcem akk isebtar mmeẓren',
'enotif_impersonal_salutation' => 'Amseqdac n {{SITENAME}}',
+'enotif_subject_deleted' => 'Asebtar $1 ɣef {{SITENAME}} yetwakkes sɣur {{GENDER:$2|$2}}',
+'enotif_subject_created' => 'Asebtar $1 ɣef {{SITENAME}} yetwaxleq sɣur {{GENDER:$2|$2}}',
+'enotif_subject_moved' => 'Asebtar $1 ɣef {{SITENAME}} yetwabeddel isem sɣur {{GENDER:$2|$2}}',
+'enotif_subject_restored' => 'Asebtar $1 ɣef {{SITENAME}} yetwerr sɣur {{GENDER:$2|$2}}',
+'enotif_subject_changed' => 'Asebtar $1 ɣef {{SITENAME}} yetwabeddel sɣur {{GENDER:$2|$2}}',
+'enotif_body_intro_deleted' => 'Asebtar $1 ɣef {{SITENAME}} yetwasfeḍ ass n $PAGEEDITDATE sɣur {{GENDER:$2|$2}}, zeṛ $3 i lqem amiran',
+'enotif_body_intro_created' => 'Asebtar $1 ɣef {{SITENAME}} yetwaxleq ass n $PAGEEDITDATE sɣur {{GENDER:$2|$2}}, zeṛ $3 i lqem amiran.',
+'enotif_body_intro_moved' => 'Asebtar $1 ɣef {{SITENAME}} yetwabeddel isem ass n $PAGEEDITDATE sɣur {{GENDER:$2|$2}}, zeṛ $3 i lqem amiran.',
+'enotif_body_intro_restored' => 'Asebtar $1 ɣef {{SITENAME}} yetwerr ass n $PAGEEDITDATE sɣur {{GENDER:$2|$2}}, zeṛ $3 i lqem amiran.',
+'enotif_body_intro_changed' => 'Asebtar $1 ɣef {{SITENAME}} yetwabeddel ass n $PAGEEDITDATE sɣur {{GENDER:$2|$2}}, zeṛ $3 i lqem amiran.',
'enotif_lastvisited' => 'Ẓer $1 i akk ibeddlen segwasmi tkecmeḍ tikelt taneggarut.',
'enotif_lastdiff' => 'Ẓer $1 akken ad tmuqleḍ abeddel.',
'enotif_anon_editor' => 'aseqdac ur i siggezen ara $1',
'enotif_body' => 'Ay $WATCHINGUSERNAME,
-Asebter « $PAGETITLE » n {{SITENAME}} $CHANGEDORCREATED ass n $PAGEEDITDATE sɣur « $PAGEEDITOR », ẓeṛ $PAGETITLE_URL iwakken ad ẓṛeḍ lqem n tura.
-
-$NEWPAGE
+$PAGEINTRO $NEWPAGE
-Abeddel n wegzul: $PAGESUMMARY $PAGEMINOREDIT
+Agzul n umttekki : $PAGESUMMARY $PAGEMINOREDIT
-Meslay s umbeddel:
-e-mail: $PAGEEDITOR_EMAIL
-wiki: $PAGEEDITOR_WIKI
+Meslay s umttekki :
+e-mail : $PAGEEDITOR_EMAIL
+wiki : $PAGEEDITOR_WIKI
-Ur yelli ara email n talɣut asmi llan ibeddlen deg usebter ala lukan teẓreḍ asebter-nni.
-Tzemreḍ ad awennezeḍ akkw isenǧaqen n talɣut i akkw isebtar yellan deg umuɣ inek/inem n uɛassi.
+Ur yelli ara email n talɣut asmi ad illin ibeddlen deg usebter ala lukan tekcmeḍ deg usebtar-agi sakin teqqneḍ. Tzemreḍ ad wennezeḍ tikbabin n talɣut i akkw isebtar yellan deg umuɣ inek/inem n uḍfar.
- Anagraw inek/inem n talɣut n {{SITENAME}}
+Anagraw inek/inem n talɣut n {{SITENAME}}
--
Iwakken ad beddeleḍ iɣewwaren n talɣut deg tirawt, ẓeṛ
{{canonicalurl:{{#special:Preferences}}}}
-Iwakken ad beddeleḍ iɣewwaren n umuɣ inek/inem n uɛassi, ẓeṛ
+Iwakken ad beddeleḍ iɣewwaren n umuɣ inek/inem n uḍfar, ẓeṛ
{{canonicalurl:{{#special:EditWatchlist}}}}
-Iwakken ad mḥuḍ asebter deg umuɣ inek/inem n uɛassi, ẓeṛ
+Iwakken ad mḥuḍ asebtar deg umuɣ inek/inem n uḍfar, ẓeṛ
$UNWATCHURL
Tuɣalin d tadhelt :
'deleteotherreason' => 'Taɣẓint nniḍen / taɣzint tamarnant :',
'deletereasonotherlist' => 'Taɣẓint nniḍen',
'deletereason-dropdown' => '* Tiɣẓinin n umḥu id t-uɣalen aṭas tikkwal
+** Spam
+** Ixṣaren
+** Akukel n Copyright
** Asuter n useqdac
-** Akukel n izerfan umeskar
-** Asfata',
+** Azday yerẓan',
'delete-edit-reasonlist' => 'Beddel tiɣẓinin n umḥu n usebter',
'delete-toobig' => 'Asebter agi yesɛa amezruy ameqqṛan aṭas n ibeddilen, yugar $1 {{PLURAL:$1|lqem|ileqman}}.
Amḥu n isebtar am wagi yesɛa akref iwakken {{SITENAME}} ur yesɛu ara arway.',
+'delete-warning-toobig' => 'Asebtar agi yesɛa amezruy axatar n ibeddilen, ugaren $1 {{PLURAL:$1|lqem|ileqman}}.
+Tukksa-s tezmer ad terwi tiddit n taffa n isefka n {{SITENAME}} ;
+ilaq ad seqdeceḍ s-leɛqel.',
+'deleting-backlinks-warning' => "'''Ɣur-wet :''' Isebtar nniḍen sɛan azday ɣer asebtar i tebɣiḍ ad ekkeseḍ.",
# Rollback
'rollback' => 'Semmet ibeddilen',
'rollbacklinkcount-morethan' => 'semmet ugar n $1 {{PLURAL:$1|abeddel|ibeddilen}}',
'rollbackfailed' => 'Asemmet yexseṛ',
'cantrollback' => 'Ur yezmir ara ad yessuɣal; yella yiwen kan amseqdac iwumi ibeddel/yexleq asebter-agi.',
+'alreadyrolled' => 'Ulamek an semmet abeddel aneggaru n usebtar « [[:$1]] » yetwaxeddemen sɣur [[User:$2|$2]] ([[User talk:$2|Mmeslay]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) ;
+wayeḍ nniḍen yebeddel yakan neɣ yesemmet asebtar nni.
+
+Abeddel aneggaru n usebtar yetwaxeddemen sɣur [[User:$3|$3]] ([[User talk:$3|Discuter]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
'editcomment' => "Agzul n ubeddel yella: \"''\$1''\".",
'revertpage' => 'Yessuɣal ibeddlen n [[Special:Contributions/$2|$2]] ([[User talk:$2|Meslay]]); yettubeddel ɣer tasiwelt taneggarut n [[User:$1|$1]]',
+'revertpage-nouser' => 'Tiririt n ibeddilen sur amseqdac yeffren ar lqem aneggaru sɣur {{GENDER:$1|[[User:$1|$1]]}}',
+'rollback-success' => 'Asemmet n ibeddilen yetwaxeddemen sɣur $1 ;
+tuqqla ar lqem aneggaru sɣur $2.',
# Edit tokens
'sessionfailure-title' => 'Anezri n tɣimit',
# Protect
'protectlogpage' => 'Aɣmis n wemḥay',
+'protectlogtext' => 'Atan umuɣ n ibeddilen n immestan n isebtar.
+Zeṛ [[Special:ProtectedPages|umuɣ n isebtar yettwaḥerzen]] i umuɣ n immestan timiranin.',
'protectedarticle' => '"[[$1]]" yettwaḥrez',
'modifiedarticleprotection' => 'yebeddel aswir n usegdel n « [[$1]] »',
'unprotectedarticle' => 'yekkes asegdel n « [[$1]] »',
'prot_1movedto2' => '[[$1]] yettusmimeḍ ar [[$2]]',
'protect-badnamespace-title' => 'Tallunt n isemawen ur nezmer ara an segdel',
'protect-badnamespace-text' => 'Isebtar deg tallunt agi n isemawen ur zemren ara ad sɛun asegdel.',
+'protect-norestrictiontypes-text' => 'Asebtar agi ur yezmer ara ad yettwaḥerzen acku ulac tawsit n usewḥel yestufan.',
+'protect-norestrictiontypes-title' => 'Asebtar ur yettwaḥerzen ara',
'protect-legend' => 'Sentem tiḥḥerzi',
'protectcomment' => 'Taɣẓint :',
'protectexpiry' => 'Azmez n tasewti :',
'protect_expiry_invalid' => 'Azmez n tasewti ur yeɣbel ara.',
'protect_expiry_old' => 'Azmez n tasewti i ɛedda.',
'protect-unchain-permissions' => 'Kkes aseḍru i aṭas n tixtiṛiyin n usegdel',
+'protect-text' => "Tzemreḍ ad zṛeḍ dɣa ad beddeleḍ aswir n ummesten n usebtar '''$1'''.",
+'protect-locked-blocked' => "Ur tzemreḍ ara ad beddeleḍ iswiren n ummesten skud tewḥeleḍ.
+Zeṛ iɣewwaren imiranen n usebtar '''$1''' :",
+'protect-locked-dblock' => "Aswir n ummesten ur yezmer ara ad yetbeddel acku taffa n isefka tesekkweṛ.
+Zeṛ iɣewwaren imiranen n usebtar '''$1''' :",
+'protect-locked-access' => "Ur tesɛiḍ ara izerfan iḍulliyen iwakken ad beddeleḍ iswiren n ummesten n isebtar.
+Zeṛ iɣewwaren imiranen n usebtar '''$1''' :",
+'protect-cascadeon' => 'Asebtar agi yettwaḥerz acku yessedda-d deg {{PLURAL:$1|usebtar uḍfiṛ, yettwaḥerzen|isebtar uḍfiṛ, yettwaḥerzen}} s taxtiṛit « ammesten s uceṛcuṛ » yessermeden. Tzemreḍ ad beddeleḍ aswir n ummesten n usebtar agi war ad yebeddel ammesten s uceṛcuṛ.',
'protect-default' => '(ameslugen)',
-'protect-fallback' => 'Yeḥweǧ atrug « $1 »',
-'protect-level-sysop' => 'Inedbalen kan',
+'protect-fallback' => 'Ssireg kan imseqdacen s uzref « $1 »',
+'protect-level-autoconfirmed' => 'Ssireg kan imseqdacen i sergegen iman-nsen',
+'protect-level-sysop' => 'Ssireg inedbalen kan',
'protect-summary-cascade' => 'acercur',
'protect-expiring' => 'yemmut deg $1 (UTC)',
'protect-expiring-local' => 'ad i neffeṛ ass n $1',
'protect-expiry-indefinite' => 'ifeḍ',
+'protect-cascade' => 'Mmesten isebtar i sseddan deg ttagi (ammesten s uceṛcuṛ)',
+'protect-cantedit' => 'Ur tzemreḍ ara ad beddeleḍ iswiren n ummesten n usebtar agi acku ur tesɛiḍ ara turagt att beddeleḍ.',
'protect-othertime' => 'Azmez nniḍen n tasewti :',
'protect-othertime-op' => 'azmez nniḍen n tasewti',
'protect-existing-expiry' => 'Yella azmez n tasewti : $2 af $3',
'protect-otherreason' => 'Taɣẓint nniḍen / taɣzint tamarnant :',
'protect-otherreason-op' => 'Taɣẓint nniḍen',
+'protect-dropdown' => '* Tiɣẓinin n ummesten tunnimin
+** Axṣar s uzerray
+** Emails yerkan
+** Ccwal n ibeddilen yellan mgal-tiffursa
+** Asebtar s uɛeddi ameqran',
'protect-edit-reasonlist' => 'Beddel tiɣẓinin n usegdel',
'protect-expiry-options' => '1 asrag:1 hour,1 ass:1 day,1 imalas:1 week,2 imalasen:2 weeks,1 aggur:1 month,3 agguren:3 months,6 agguren:6 months,1 assegwas:1 year,adfi:infinite',
'restriction-type' => 'Turagt',
'undeletepage' => 'Ẓeṛ dɣa erred isebtar yetwekkesen',
'undeletepagetitle' => "'''Umuɣ agi yesɛa ileqman yetwekkesen n [[:$1|$1]]'''.",
'viewdeletedpage' => 'Ẓer isebtar yettumḥan',
+'undeletepagetext' => '{{PLURAL:$1|Asebtar agi uḍfiṛ yetwekkes, tura atan|Isebtar agi uḍfiṛen tetwekkesen, tura aten-id}} deg taffa n isefka n
+weɣbaṛ, anda {{PLURAL:$1|yezmer ad yesɛu tiririt|zemren ad sɛun tiririt}}.
+Aɣbaṛ yezmer ad yetssizedig s tallit.',
'undelete-fieldset-title' => 'Erred ileqman',
+'undeleteextrahelp' => "Iwakken ad erreḍ amezruy ummid n usebtar agi, ilaq ad eǧǧeḍ akkw tinkulin war amidag dɣa senned ɣef '''''Tiririt'''''.
+Iwakken ad xeddemeḍ tiririt i yiwen aḥric kan, rnud amidag deg tinkulin n ileqman i tebɣiḍ ad erreḍ, dɣa senned ɣef '''''Tiririt'''''.",
'undeleterevisions' => '$1 {{PLURAL:$1|lqem i ɣbeṛen|ileqman i ɣbeṛen}}',
+'undeletehistory' => 'Ma tebɣiḍ ad erreḍ asebtar, akkw ileqman ad erren deg umezruy.
+Ma asebtar amaynut yexelqed s isem am winna seg tukksa, ileqman yetwerran ad illin beqqeḍen deg umezruy uzwir dɣa lqem amiran ur d yetbeddel ara s uwurman.',
+'undeleterevdel' => 'Tiririt ur tezmer ara att illi ma, Deg tagara, lqem aneggaru n usebtar neɣ n ufaylu ad yeqqim yetwakkes s uzgen.
+Deg tajṛut am ttagi, ilaq ad ekkseḍ amidag deg tankult neɣ ad ekkseḍ tagelmust ileqman ineggura yetumḥan (deg uqerru n umuɣ).',
+'undeletehistorynoadmin' => 'Asebtar agi yetwekkes.
+Taɣzint n tukksa att affeḍ deg ugzul ddaw-agi, s ttfaṣil n imseqdacen i tbeddelen uqbel ad yetwekkes.
+Agbur n ileqman yetwekksen ad wettwadaf kan i inedbalen.',
+'undelete-revision' => 'Lqem yetwekksen n $1 (lqem n $4 af $5) sɣur $3 :',
+'undeleterevision-missing' => 'Lqem arameɣtu neɣ ulac-it.
+Ahat tesɛiḍ azday arameɣtu, neɣ lqem yetwerr neɣ yetwekkes seg aɣbaṛ.',
+'undelete-nodiff' => 'Ur d-n-uffa ara lqem aneggaru.',
+'undeletebtn' => 'Err-it',
'undeletelink' => 'ẓeṛ/uɣaled',
'undeleteviewlink' => 'ẓeṛ',
'undeleteinvert' => 'Snegdam ayen textareḍ',
'undeletecomment' => 'Taɣẓint :',
+'undeletedrevisions' => '$1 {{PLURAL:$1|lqem yetwerren|ileqman yetwerren}}',
+'undeletedrevisions-files' => '$1 {{PLURAL:$1|lqem|ileqman}} d $2 {{PLURAL:$2|afaylu|ifuyla}} {{PLURAL:$2|yetwerr|twerren}}',
+'undeletedfiles' => '$1 {{PLURAL:$1|afaylu yetwerr|ifuyla twerren}}',
+'cannotundelete' => 'Abrir n tiririt :
+$1',
+'undeletedpage' => "'''Asebtar $1 yetwerr.'''
+
+Zeṛ [[Special:Log/delete|aɣmis n tukksiwin]] iwakken ad zṛeḍ umuɣ n tukksiwin d tiririyin timaynutin.",
'undelete-header' => 'Ẓer [[Special:Log/delete|aɣmis n umḥay]] i isebtar ttumḥan tura.',
'undelete-search-title' => 'Nadi ɣef isebtar yettumḥan',
'undelete-search-box' => 'Nadi ɣef isebtar yettumḥan',
'undelete-search-prefix' => 'Ssken isebtar i yebdan s:',
'undelete-search-submit' => 'Nadi',
'undelete-no-results' => 'Ur yufi ara ulaḥedd n wawalen i tnadiḍ ɣef isebtar deg iɣbaren.',
+'undelete-filename-mismatch' => 'Ulamek an err lqem n ufaylu n wass n $1 : isem n ufaylu ur yezga ara.',
+'undelete-bad-store-key' => 'Ulamek an err lqem n ufaylu n wass n $1 : afaylu ulac-it uqbel tukksa.',
+'undelete-cleanup-error' => 'Tuccḍa deg tukksa n ufaylu n weɣbaṛ ur yetseqdacen ara « $1 ».',
+'undelete-missing-filearchive' => 'Ulamek an err afaylu n weɣbaṛ s tamagit $1 acku ulac it deg taffa n isefka.
+Ahat yetwerr yakan.',
+'undelete-error' => 'Asebtar n tuccḍa n usemmet',
+'undelete-error-short' => 'Tuccḍa deg tiririt n ufaylu : $1',
+'undelete-error-long' => 'LLant tuccḍiwin deg tiririt n ufaylu:
+
+$1',
'undelete-show-file-confirm' => 'Tebɣriḍ ad ẓṛeḍ lqem yemḥan n ufaylu « <nowiki>$1</nowiki> » n $2 af $3 ?',
'undelete-show-file-submit' => 'Ih',
# Namespace form on various pages
'namespace' => 'Talluntin n isemawen :',
'invert' => 'Snegdam ayen textareḍ',
+'tooltip-invert' => 'Sekcem amidag deg tankult agi iwakken ad ffereḍ ibeddilen n isebtar deg tallunt n isemawen yettwafren (dɣa tallunt n isemawen yeqqnen ma yella amidag deg tankult)',
+'namespace_association' => 'Tallunt n isemawen yeqqenen',
+'tooltip-namespace_association' => 'Sekcem amidag deg tankult agi iwakken ad rnuḍ daɣen tallunt n isemawen n umyannan yeqqnen ar tallunt n isemawen yettwafren',
'blanknamespace' => '(Amenzawi)',
# Contributions
-'contributions' => 'Tikkin n wemseqdac',
+'contributions' => 'Ittekkiyen n {{GENDER:$1|umseqdac|tamseqdact}}',
'contributions-title' => 'Umuɣ n tikkin n umseqdac $1',
-'mycontris' => 'Tikkin inu',
-'contribsub2' => 'n $1 ($2)',
+'mycontris' => 'Ittekkiyen',
+'contribsub2' => 'I {{GENDER:$3|$1}} ($2)',
'nocontribs' => 'Ur yufi ara abddel i tebɣiḍ.',
-'uctop' => '(taneggarut)',
+'uctop' => '(amiran)',
'month' => 'Seg uggur (d wid uqbel) :',
'year' => 'Seg useggwas (d wid uqbel) :',
'sp-contributions-newbies' => 'Ssken tikkin n yimseqdacen imaynuten kan',
'sp-contributions-newbies-sub' => 'I yisem yimseqdacen imaynuten',
+'sp-contributions-newbies-title' => 'Ittekkiyen n imseqdacen gar imiḍanen imaynuten',
'sp-contributions-blocklog' => 'Aɣmis n uɛeṭṭil',
'sp-contributions-deleted' => 'isekcam yemḥan',
'sp-contributions-uploads' => 'izdamen',
'whatlinkshere-hideredirs' => '$1 aceggeε ɣer',
'whatlinkshere-hidetrans' => '$1 aseddu',
'whatlinkshere-hidelinks' => '$1 izdayen',
-'whatlinkshere-hideimages' => '$1 tugniwin i qqenen',
+'whatlinkshere-hideimages' => '$1 ifuyla iqqenen',
'whatlinkshere-filters' => 'Tistaytin',
# Block/unblock
+'autoblockid' => 'Asewḥel awurman #$1',
'block' => 'Ɛekkel aseqdac',
+'unblock' => 'Aksasewḥel n umseqdac',
'blockip' => 'Ɛekkel aseqdac',
'blockip-legend' => 'Ɛekkel aseqdac',
+'blockiptext' => 'Seqdec tiferkit ddaw-agi iwakken ad sewḥeleḍ ineɛruḍen n ubeddel seg yiwet tansa IP tulmist neɣ n yiwen isem umseqdac.
+Asket am wagi, ur ilaq ad yetwexddem kan iwakken ad yeεeggen axeṣṣar dɣa ilaq ad yemtawi s [[{{MediaWiki:Policy-url}}|ilugan igensanen]].
+Efked ddaw-agi taɣẓint tusdidt (amedya : efked isebtar yetwaxeṣṣren).',
'ipadressorusername' => 'Tansa IP neɣ isem n wemseqdac',
+'ipbexpiry' => 'Tanzagt uqbel aneffeṛ :',
'ipbreason' => 'Ayɣer',
+'ipbreason-dropdown' => '* Tiɣẓinin n ukyaf id ttuɣalen aṭas tikwal
+** Taguri n tilɣa n ukellax
+** Tukksa war assefhem n ugbur n isebtar
+** Taguri s uɛiwed n izdayen uffiɣen ɣer idellilen (abluleɣ)
+** Taguri n ugbur war anamek d tursaḍ deg isebtar
+** Aneɛruḍ n umsiged neɣ ubbezbax
+** Tafuli n useqdac n aṭas imiḍanen
+** Isem n umseqdac ur nezmer ara an qbel, d-anergam neɣ d-abucemmat',
+'ipb-hardblock' => 'Qareɛ imseqdacen yeqqnen ad beddelen s tansa IP agi',
+'ipbcreateaccount' => 'Qareɛ asnulfu n umiḍan',
+'ipbemailban' => 'Qareɛ amseqdac ad yecggaɛ e-mails',
+'ipbenableautoblock' => 'Sewḥel s-uwurman tansa IP taneggarut yetseqdacen sɣur amseqdac d akk IP ines nniḍen ay d-yetteddun',
'ipbsubmit' => 'Ɛekkel amseqdac-agi',
+'ipbother' => 'Tanzagt nniḍen :',
'ipboptions' => '2 isragen:2 hours,1 ass:1 day,3 ussan:3 days,1 imalas:1 week,2 imalasen:2 weeks,1 aggur:1 month,3 agguren:3 months,6 agguren:6 months,1 aseggwas:1 year,afdi:infinite',
+'ipbhidename' => 'Ffer isem n useqdac deg ibeddilen d umuγen',
+'ipbwatchuser' => 'Ḍfer isebtar n iseqdacen d idiwenniyen n useqdac agi',
+'ipb-disableusertalk' => 'Qareɛ amseqdac ad yebeddel asebtar-is n umyannan mi yella asewḥel',
+'ipb-change-block' => 'Sewḥel tikkelt nniḍen amseqdac agi s iɣewwaren agi',
+'ipb-confirm' => 'Sergeg asewḥel',
'badipaddress' => 'Tansa IP mačči d ṣaḥiḥ',
+'blockipsuccesssub' => 'Asewḥel yetwexddem',
+'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] {{GENDER:$1|yetsewḥel|tetsewḥel|}}.<br />
+Zeṛ [[Special:BlockList|umuɣ n isewḥal]] iwakken ad zṛeḍ isewḥal.',
+'ipb-blockingself' => '{{GENDER:|Aqlak|Aqlakem}}-id ad sewḥeleḍ iman-{{GENDER:|ik|im}}',
+'ipb-confirmhideuser' => '{{GENDER:|Aqlak|Aqlakem}}-id ad sewḥeleḍ amseqdac s « ffer amseqdac » yessermed. Waya ad yekkes isem n umseqdac deg akkw umuɣen d isekcam n uɣmis. Tebɣiḍ ad xeddemeḍ aya ?',
+'ipb-confirmaction' => 'Ma teḥsiḍ tebɣiḍ at xeddemeḍ, ilaq ad rnuḍ amidag deg tankult « {{int:ipb-confirm}} » ddaw-agi.',
+'ipb-edit-dropdown' => 'Beddel tiɣẓinin n usewḥel s lexṣas',
+'ipb-unblock-addr' => 'Aksasewḥel $1',
+'ipb-unblock' => 'Aksasewḥel amiḍan n umseqdac neɣ tansa IP',
+'ipb-blocklist' => 'Zeṛ isewḥelen yellan',
+'ipb-blocklist-contribs' => 'Ittekkiyen i $1',
+'unblockip' => 'Ekkes asewḥel n umseqdac',
+'unblockiptext' => 'Seqdec tiferkit ddaw-agi iwakken ad erreḍ addaf i ibeddilen seg yiwet tansa IP neɣ yiwen isem n umseqdac.',
'ipusubmit' => 'Ekkes akyaf agi',
'unblocked' => 'Yetwekkes akyaf n [[User:$1|$1]]',
'unblocked-range' => 'Yetwekkes akyaf n $1',
'change-blocklink' => 'beddel asewḥel',
'contribslink' => 'tikkin',
'emaillink' => 'Ceggaɛ e-mail',
+'autoblocker' => 'Tetsewḥeleḍ s uwurman acku tansa IP inek/inem yeseqdac-itt « [[User:$1|$1]] ». Taɣzint id efkan i usewḥel agi d : « $2 ».',
'blocklogpage' => 'Aɣmis n isewḥelen',
+'blocklog-showlog' => 'Amseqdac agi, yetseweḥel uqbel. Ad affeḍ aɣmis n isewḥal ddaw-agi :',
+'blocklog-showsuppresslog' => 'Amseqdac agi, yetseweḥel dɣa yeweffer uqbel. Ad affeḍ aɣmis n tukksiwin ddaw-agi :',
'blocklogentry' => 'yesewḥel [[$1]] ; alama : $2 $3',
+'reblock-logentry' => 'yebeddel iɣewwaren n usewḥel n [[$1]] s tasewtit ar $2 $3',
+'blocklogtext' => 'Wagi d-aɣmis n tigawin n usewḥel d aksusewḥel n imseqdacen.
+Tansiwin IP yestsuwḥelen s-uwurman ulac-itent deg umuɣ agi.
+Ẓer [[Special:BlockList|umuɣ n isewḥal]] iwakken ad ẓṛeḍ iḍeggiren d isewḥal yellan tura.',
+'unblocklogentry' => 'yekkes asewḥel n $1',
'block-log-flags-anononly' => 'Imseqdacen udrigen kan',
'block-log-flags-nocreate' => 'asnulfu n umiḍan yessegdel',
+'block-log-flags-noautoblock' => 'akyaf awurman yensa',
+'block-log-flags-noemail' => 'e-mail yekyef',
+'block-log-flags-nousertalk' => 'ur yezmer ara ad yebeddel asebter-is n umeslay',
+'block-log-flags-angry-autoblock' => 'manasewḥel yesselhan yesermed',
+'block-log-flags-hiddenname' => 'isem n umseqdac yeffer',
+'range_block_disabled' => 'Azref n unedbal i usnulfu n isewḥal n tagrummiwin IP yensa.',
+'ipb_expiry_invalid' => 'Tanzagt n tasewti ur teɣbel ara.',
+'ipb_expiry_temp' => 'Isewḥal n isemawen n imseqdacen yeffren ilaq ad illin d-imeɣlalen.',
+'ipb_hide_invalid' => 'Ulamek an ekkes amiḍan agi ; yesɛa ugar n {{PLURAL:$1|yiwen abeddel|$1 ibeddilen}}.',
+'ipb_already_blocked' => '« $1 » yesewḥel yakan',
+'ipb-needreblock' => '« $1 » yesewḥel yakan. Tebɣiḍ ad beddeleḍ iɣewwaren ?',
+'ipb-otherblocks-header' => '{{PLURAL:$1|Asewḥel nniḍen|Isewḥelen nniḍen}}',
+'unblock-hideuser' => 'Ur tzemreḍ ara ad sewḥeleḍ amseqdac agi, acku isem-is n umseqdac yetweffer.',
+'ipb_cant_unblock' => 'Tuccḍa : ID n usewḥel $1 ulac-it.
+Ahat asewḥel yetwekkes yakan.',
+'ipb_blocked_as_range' => 'Tuccḍa : tansa IP $1 ur t-uwḥel ara srid dɣa ulamek an ekkes asewḥel.
+Lamaɛna tezga deg tagrumma $2 i nezmer an ekkes asewḥel.',
+'ip_range_invalid' => 'Tagrumma IP artameɣtut',
+'ip_range_toolarge' => 'Isewḥal n tagrummiwin i ugaren /$1 ur sɛan ara assireg.',
+'proxyblocker' => 'Amsewḥel n proxy',
'proxyblockreason' => 'Tansa n IP inek teɛkel axaṭer nettat "open proxy". G leɛnayek, meslay akk d provider inek.',
'sorbsreason' => 'Tansa IP inek/inem tella deg yiwen umuɣ am "open proxy" deg DNSBL yettuseqdac deg {{SITENAME}}.',
'sorbs_create_account_reason' => 'Tansa IP inek/inem tella deg yiwen umuɣ am "open proxy" deg DNSBL yettuseqdac deg {{SITENAME}}.
Ur tezmireḍ ara ad snulfuḍ amiḍan.',
+'xffblockreason' => 'Yiwet tansa IP deg tasenṭit X-Forwarded-For header, tin inek/inem neɣ tin n uqeddac proxy i tseqeddeceḍ ,tesewḥel. Taɣzint n usewḥel amezrwaru : $1',
+'cant-see-hidden-user' => "Amseqdac i tebɣiḍ ad sewḥeleḍ yetsewḥel yakan dɣa yetweffer. Imi ur tesɛiḍ ara azref ''hideuser'', ur tzemreḍ ara ad ẓṛeḍ neɣ ad beddeleḍ asewḥel n umseqdac agi.",
+'ipbblocked' => 'Ur tzemreḍ ada ad sewḥeleḍ neɣ ad aksewḥeleḍ imseqdacen nniḍen, acku ula d-kečč/kem tsewḥeleḍ.',
+'ipbnounblockself' => 'Ur tesɛiḍ ara assireg ad aksewḥeleḍ iman-ik/im.',
# Developer tools
'lockdb' => 'Sekker database',
+'unlockdb' => 'Kkes aseḍru n taffa n isefka',
+'lockdbtext' => 'Askaṛ n taffa n isefka ad yeqareɛ akkw imseqdacen ad beddelen isebtar, ad ḥerzen ismenyifen nsen, ad beddelen umuɣ nsen n uḍfar dɣa ad xeddmen akkw tigawin nniḍen yeḥwaǧen ibeddilen deg taffa n isefka.
+Ilaq ad sergegeḍ d-ayen yebɣiḍ ad xeddemeḍ dɣa ad ekkseḍ azekṛun deg taffa sakin tigawt inek/inem n ibeddi att fak.',
+'unlockdbtext' => 'Aksaskaṛ n taffa n isefka ad yeɛemmed i akkw imseqdacen ad beddelen isebtar, ad beddelen ismenyifen nsen, ad beddelen umuɣ nsen n uḍfar dɣa ad xeddmen akkw tigawin nniḍen yeḥwaǧen ibeddilen deg taffa n isefka.
+
+Ilaq ad sergegeḍ d-ayen yebɣiḍ ad xeddemeḍ.',
+'lockconfirm' => 'Ih, bɣiɣ ad sekṛeɣ taffa n isefka.',
+'unlockconfirm' => 'Ih, bɣiɣ ad ekkeseɣ aksskeṛeɣ taffa n isefka.',
+'lockbtn' => 'Sekker taffa n isefka',
+'unlockbtn' => 'Kkes aseḍru n taffa n isefka',
+'locknoconfirm' => 'Ur d-sekcemeḍ ara amidag deg tanaka n aragag.',
+'lockdbsuccesssub' => 'Askaṛ n taffa n isefka yetwexddem',
+'unlockdbsuccesssub' => 'Asewḥel n taffa n isefka yetwekkes',
+'lockdbsuccesstext' => 'Taffa n isefka teskeṛ.<br />
+Ur tettu ara ad ekkeseḍ [[Special:UnlockDB|askaṛ]] ma tfukeḍ tamhelt inek/inem n ibeddi.',
+'unlockdbsuccesstext' => 'Askaṛ n taffa n isefka yetwekkes.',
+'lockfilenotwritable' => 'Ur tzemreḍ ara ad aruḍ deg ufaylu n uskaṛ n taffa n isefka.
+Ma tebɣiḍ ad sewḥeleḍ neɣ ad ekkseḍ asewḥel ɣef taffa n isefka, ilaq aqeddac web ad yezmer ad yaru deg ufaylu agi.',
+'databasenotlocked' => 'Taffa n isefka ur tesɛa ara askar.',
+'lockedbyandtime' => '(sɣur $1 ass n $2 af $3)',
# Move page
+'move-page' => 'Beddel isem n $1',
'move-page-legend' => 'Smimeḍ asebter',
-'movepagetext' => "Seqdec tiferkit ddaw agi iwakken ad beddeleḍ isem n usebter, s usiweḍ n akkw amezruy is ɣer isem amaynut. Azwel aqbur ad yuɣal d asebter n usemmime ɣer azwel amaynut. Tzemreḍ ad mucceḍeḍ s uwurman isemmimen amiran i sweṛen ɣer azwel amezwaru. Ma ur tebɣiḍ ara at sexdemeḍ wagi, ilaq ad selkeneḍ akkw [[Special:DoubleRedirects|Asemmimeḍ yeḍran snat tikwal]] naɣ [[Special:BrokenRedirects|asmmimeḍ yerẓan]]. Ilaq ad sɛuḍ talkint belli izdayen tsweṛen ɣer aserken is.
+'movepagetext' => "Seqdec tiferkit ddaw agi iwakken ad beddeleḍ isem n usebter, s usiweḍ n akkw umezruy-is ɣer isem amaynut. Azwel aqbur ad yuɣal d asebter n usemmime ɣer azwel amaynut. Tzemreḍ ad mucceḍeḍ s uwurman isemmimen imiranen i sweṛen ɣer azwel amezwaru. Ma ur tebɣiḍ ara at sexdemeḍ wagi, ilaq ad selkeneḍ akkw [[Special:DoubleRedirects|Asemmimeḍ yeḍran snat tikwal]] neɣ [[Special:BrokenRedirects|asmmimeḍ yerẓan]]. Ilaq ad sɛuḍ talkint belli izdayen tsweṛen ɣer aserken is.
+
+Abeddel n isem <strong>ur</strong> yezmer <strong>ara</strong> ad yilli ma yella yakan asebter s isem agi, ḥaca ma ulac amezruy deg-es. Waya yetɛemmed an beddel isem n usebtar ɣer addud ines amezwaru ma tiggit d tuccḍit, dɣa ulamek an mzey yiwen asebtar yellan.
+
+'''Ɣur-wet !'''
+Wagi yezmer ad yexdem abeddel ameqqṛan i asebter s aṭas timerziwin ; ilaq ad fehmeḍ uqbel ad beddeleḍ asebter.",
+'movepagetext-noredirectfixer' => "Seqdec tiferkit ddaw agi iwakken ad beddeleḍ isem n usebter, s usiweḍ n akkw amezruy is ɣer isem amaynut. Azwel aqbur ad yuɣal d asebter n usemmime ɣer azwel amaynut.
+Ilaq ad selkeneḍ akkw [[Special:DoubleRedirects|Asemmimeḍ yeḍran snat tikwal]] naɣ [[Special:BrokenRedirects|asmmimeḍ yerẓan]].
+Ilaq ad sɛuḍ talkint belli izdayen tsweṛen ɣer aserken is.
-Abeddel n isem ur yezmer ara ad yilli ma yella yakan asebter s isem agi, ḥaca ma ulac amezruy deg-es.
+Abeddel n isem ur yezmer ara ad yilli ma yella yakan asebter s isem agi, ḥaca ma ulac amezruy deg-es dɣa yuɣal d-asebtar n usemmim. Waya yetɛemmed an beddel isem n usebtar ɣer addud ines amezwaru ma tiggit d tuccḍit, dɣa ulamek an mzey yiwen asebtar yellan.
'''Ɣur-wet !'''
Wagi yezmer ad yexdem abeddel ameqqṛan i asebter s aṭas timerziwin ; ilaq ad fehmeḍ uqbel ad beddeleḍ asebter.",
Lukan akka, yessefk a t-tedmeḍ weḥdek.",
'movearticle' => 'Smimeḍ asebter',
+'moveuserpage-warning' => "'''Ɣur-wet !''' Atan ad beddeleḍ isem n usebtar n umseqdac. Ilaq ad fehmeḍ, isem n usebtar ad yetbeddel, maca isem n umseqdac '''ur''' d-yetbeddel '''ara'''.",
'movenologintext' => 'Yessefk ad tesɛuḍ isem n wemseqdac u [[Special:UserLogin|tkecmeḍ]]
iwakken ad tesmimḍeḍ asebter.',
+'movenotallowed' => 'Ur tesɛiḍ ara turagt ad beddeleḍ isem n isebtar.',
+'movenotallowedfile' => 'Ur tesɛiḍ ara turagt ad beddeleḍ isem n ifuyla.',
+'cant-move-user-page' => 'Ur tesɛiḍ ara turagt ad beddeleḍ isem n isebtar igejdanen n imseqdacen',
+'cant-move-to-user-page' => 'Ur tesɛid ara assireg iwakken ad beddeleḍ isem n usebtar ɣer asebtar n umseqdac (haca ma d-adu-asebtar).',
'newtitle' => 'Ar azwel amaynut',
'move-watch' => 'Ɛass asebter-agi',
'movepagebtn' => 'Smimeḍ asebter',
'pagemovedsub' => 'Asemmimeḍ yekfa',
+'movepage-moved' => "'''« $1 » yetwabeddel isem ar « $2 »'''",
+'movepage-moved-redirect' => 'Abeddel n isem seg isem aqbur yetxelqed.',
+'movepage-moved-noredirect' => 'Asnulfu n ubeddel n isem seg isem aqbur yetsemmet.',
'articleexists' => 'Yella yagi yisem am wagi, neɣ
isem ayen textareḍ mačči d ṣaḥiḥ.
Xtar yiwen nniḍen.',
+'cantmove-titleprotected' => 'Ur tzemreḍ ara ad ssiweḍeḍ asebtar ɣer amkan agi acku asnulfu n usebtar s uzwel agi amaynut yetweḥrez',
'movetalk' => 'Smimeḍ asebter n umyannan (n umagrad-nni)',
+'move-subpages' => 'Beddel isem n adu-isebtar (alma d $1 {{PLURAL:$1|asebtar|isebtar}})',
+'move-talk-subpages' => 'Beddel adu-isebtar n usebtar n amyannan (alma d $1 isebtar)',
+'movepage-page-exists' => 'Asebtar $1 yella yakan dɣa ur nezmer ara at n-mzey s uwurman.',
+'movepage-page-moved' => 'Asebtar $1 yetwabeddel isem-is ar $2.',
+'movepage-page-unmoved' => 'Asebtar $1 ur nezmer ara an beddel isem-is ar $2.',
+'movepage-max-pages' => 'Afellay n $1 {{PLURAL:$1|asebtar|isebtar}} s isem ibeddelen yetwuɛa dɣa tura ur d-yetilli ara abeddel n isem s-uwurman.',
'movelogpage' => 'Aɣmis n usemmimeḍ',
'movelogpagetext' => 'Akessar yella wumuɣ n isebtar yettusmimeḍen.',
+'movesubpage' => '{{PLURAL:$1|Adu-asebtar|Adu-isebtar}}',
+'movesubpagetext' => 'Asebtar agi yesɛa $1 {{PLURAL:$1|adu-asebtar yebeqqeḍen|adu-isebtar yebeqqeḍen}} ddaw-agi.',
+'movenosubpage' => 'Asebtar agi ur yesɛ ara adu-asebtar',
'movereason' => 'Ayɣer',
'revertmove' => 'Uɣal ar tasiwelt ssabeq',
'delete_and_move' => 'Mḥu u smimeḍ',
'delete_and_move_confirm' => 'Ih, mḥu asebter',
'delete_and_move_reason' => 'Asebter yemḥa iwakken yeqqim-d wemkan i usmimeḍ seg "[[$1]]"',
'selfmove' => 'Izwal amezwaru d uneggaru kif-kif; ur yezmir ara ad yesmimeḍ asebter ɣur iman-is.',
+'immobile-source-namespace' => 'Ur tzemreḍ ara ad beddeleḍ isem n isebtar deg tallunt n isemawen « $1 »',
+'immobile-target-namespace' => 'Ur tzemreḍ ara ad beddeleḍ isem n isebtar ɣer tallunt n isemawen « $1 »',
+'immobile-target-namespace-iw' => 'Izdayen interwiki mačči d iswi ameɣtu i imussa.',
+'immobile-source-page' => 'Ulamek ad beddeleḍ isem n usebtar agi.',
+'immobile-target-page' => 'Ur tzemreḍ ara ad beddeleḍ isem n usebtar ɣer azwel agi.',
+'bad-target-model' => 'Aserken i tebɣiḍ yetseqdac talɣa nniḍen n ugbur. Ulamek an beddel seg $1 ɣer $2.',
+'imagenocrossnamespace' => 'Ulamek an beddeleḍ isem n ufaylu ɣer tallunt n isemawen nniḍen wala afaylu',
+'nonfile-cannot-move-to-file' => 'Ulamek an beddeleḍ ayen nniḍen wala afaylu ɣer tallunt n isemawen n ufaylu',
+'imagetypemismatch' => 'Asiɣzef amaynut n ufaylu agi ur yaɛdil ara s tawsit ines.',
+'imageinvalidfilename' => 'Isem n ufaylu iswi ur yaɛdil ara',
+'fix-double-redirects' => 'Mucceḍ inegzumen yetruḥun ɣer azwel amezwaru',
+'move-leave-redirect' => 'Eǧǧ anegzum ɣer azwel amaynut',
+'protectedpagemovewarning' => "'''ƔUR-WET :''' Asebter-agi yettwaḥrez iwakken imseqdacen kan yesɛan izerfan n unedbal ad zemren ad beddlen isem-is.
+Asekcem aneggaru n uɣmis yella ddaw-agi :",
+'semiprotectedpagemovewarning' => "'''Tamawt :''' Asebter-agi yettwaḥrez iwakken imseqdacen kan yesɛan amiḍan kan i zemren ad beddlen isem-is.
+Asekcem aneggaru n uɣmis yella ddaw-agi :",
+'move-over-sharedrepo' => '== Afaylu yella yakan ==
+[[:$1]] yella yakan ɣef azadur anmili. Abeddel n isem n ufaylu agi ad yarreẓ azday ɣer ufaylu seg azadur anmili.',
+'file-exists-sharedrepo' => 'Isem agi yetseqdac yakan sɣur afaylu ɣef azadur anmili.
+Xtir isem nniḍen.',
# Export
'export' => 'Ssufeɣ isebtar',
+'exporttext' => 'Tzemreḍ ad ssifeḍeḍ s XML aḍris d umezruy n yiwen usebtar neɣ tagrumma n isebtar ;
+agemmuḍ yezmer ihi ad yetkter deg wiki nniḍen yetseqdacen aseɣẓan MediaWiki s [[Special:Import|usebtar n taktert]].
+
+Iwakken ad ssifeḍeḍ isebtar, sekcem izwal nsen deg tanaka n uḍris ddaw agi, yiwen azwel s yiwen azagg. Fren, ma tebɣiḍ neɣ ala, lqem amiran s akkw ileqman iqdimen, s izaggen n umezruy n usebtar, neɣ asebtar amiran kan s tilɣa ɣef abeddil aneggaru.
+
+Deg tajṛut agi taneggarut tzemreḍ daɣen ad seqdeceḍ azday, am [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] i usebtar [[{{MediaWiki:Mainpage}}]].',
+'exportall' => 'Ssufeɣ akkw isebtar',
'exportcuronly' => 'Ssekcem tasiwelt n tura kan, mačči akk amezruy-is',
+'exportnohistory' => "----
+'''Tamawt :''' assifeḍ n umezruy ummid n isebtar s tallalt n tiferkit yetwensa i ṣṣwabat n tamellit.",
+'exportlistauthors' => 'Sseddu umuɣ ummid n ittekkiyen i yal asebtar',
'export-submit' => 'Ssufeɣ',
'export-addcattext' => 'Rnu isebtar seg taggayt:',
'export-addcat' => 'Rnu',
'export-addns' => 'Rnu',
'export-download' => 'Ḥrez deg ufaylu',
'export-templates' => 'Sekcem tiɣlatin',
+'export-pagelinks' => 'Sseddu isebtar i qqenen s talqayt n :',
# Namespace 8 related
'allmessages' => 'Izen n system',
Ẓeṛ [https://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] dɣa [//translatewiki.net translatewiki.net] ma tebɣiḍ ad ɛiweneḍ i usideg imcettel n MediaWiki.',
'allmessagesnotsupportedDB' => "'''{{ns:special}}:Allmessages''' ut yezmir ara ad yettuseqdac axaṭer '''\$wgUseDatabaseMessages''' yettwakkes.",
'allmessages-filter-legend' => 'Tastayt',
+'allmessages-filter' => 'Ṣeffi s addad n ubeddil :',
'allmessages-filter-unmodified' => 'Ur yebeqqeḍ ara',
'allmessages-filter-all' => 'Akkw',
'allmessages-filter-modified' => 'Yebeddel',
'allmessages-prefix' => 'Tastayt s adat :',
'allmessages-language' => 'Tutlayt :',
'allmessages-filter-submit' => 'Ruḥ',
+'allmessages-filter-translate' => 'Ssuqqel',
# Thumbnails
'thumbnail-more' => 'Ssemɣer',
'filemissing' => 'Afaylu ulac-it',
'thumbnail_error' => 'Agul asmi yexleq tugna tamecṭuḥt: $1',
+'thumbnail_error_remote' => 'Izen n tuccḍa n $1 :
+$2',
'djvu_page_error' => 'Asebter DjVu yeffeɣ seg tilisa',
+'djvu_no_xml' => 'Ulamek an err XML i ufaylu DjVu',
+'thumbnail-temp-create' => 'Ulamek ad nesnulfu afaylu n tignit akudan',
+'thumbnail-dest-create' => 'Ulamek an kles tignit ɣef aserken',
+'thumbnail_invalid_params' => 'Iɣewwaren n tignit ur ɣeblen ara',
+'thumbnail_dest_directory' => 'Ulamek ad nesnulfu akaram n userken',
+'thumbnail_image-type' => 'Tawsit n tugna ur teɣbel ara',
+'thumbnail_gd-library' => 'Tawila tagermazt n tamkarḍit GD : ulac tasɣent $1',
+'thumbnail_image-missing' => 'Afaylu agi ulac-it : $1',
# Special:Import
'import' => 'Ssekcem isebtar',
'importinterwiki' => 'Assekcem n transwiki',
+'import-interwiki-text' => 'Fren yiwen wiki d yiwen azwel n usebtar ad ketreḍ.
+Izemzen n ileqman d isemawen n ittekkiyen ad qqimen.
+Akkw tigawin n taktert ager-wiki ad illint deg [[Special:Log/import|umezruy n tiketrin]].',
+'import-interwiki-source' => 'Wiki d usebtar n taɣbalut',
'import-interwiki-history' => 'Xdem alsaru n akk tisiwal umezruy n usebter-agi',
+'import-interwiki-templates' => 'Sekcem akkw talɣiwin',
'import-interwiki-submit' => 'Ssekcem',
'import-interwiki-namespace' => 'Azen isebtar ar isem n taɣult:',
+'import-interwiki-rootpage' => 'Asebtar azaṛ n userken (axetṛan) :',
'import-upload-filename' => 'Isem n ufaylu :',
'import-comment' => 'Awennit :',
+'importtext' => 'Ilaq ad ssifeḍeḍ afaylu seg wiki aneṣli s useqdac n [[Special:Export|ufecku ines n ussifeḍ]].',
'importstart' => 'Asekcem n isebtar...',
'import-revision-count' => '$1 {{PLURAL:$1|tasiwelt|tisiwal}}',
'importnopages' => 'Ulac isebtar iwakken ad ttussekcmen.',
+'imported-log-entries' => '$1 {{PLURAL:$1|anekcum|inekcumen}} n uɣmis yekteren.',
'importfailed' => 'Asekcem yexser: $1',
'importunknownsource' => 'Anaw n uɣbalu n usekcem mačči d mechur',
'importcantopen' => 'Ur yezmir ara ad yexdem asekcem n ufaylu',
'importhistoryconflict' => 'Amennuɣ ger tisiwal n umezruy (ahat asebter-agi yettwazen yagi)',
'importnosources' => 'Asekcam n transwiki ur yexdim ara u amezruy n usekcam yettwakkes.',
'importnofile' => 'ulaḥedd afaylu usekcam ur yettwazen.',
+'importuploaderrorsize' => 'Taktert n ufaylu texṣer.
+Tiddi ines t-ugar afellay i ssiregen i taktert n ufaylu.',
+'importuploaderrorpartial' => 'Taktert n ufaylu texṣer.
+Agbur ines yetweccegaɛ s-umur kan.',
+'importuploaderrortemp' => 'Taktert n ufaylu texṣer.
+Ulac yiwen akaram akudan.',
+'import-parse-failure' => 'Axṣar deg tasleṭ n XML an kter',
+'import-noarticle' => 'Ulac isebtar ad nekter.',
+'import-nonewrevisions' => 'Ulac iceggiṛen yetwaketren (akkw tetwaketren yakan, neɣ tetwassinfen acku llant tuccḍiwin).',
+'xml-error-string' => '$1 ar azagg $2, ajgu $3 (atamḍan $4) : $5',
+'import-upload' => 'Taktert n isefka XML',
+'import-token-mismatch' => 'Azella n isefka n tɣimit. Ɛreḍ tikkelt nniḍen.',
+'import-invalid-interwiki' => 'Ulamek an kter seg wiki i efkeḍ.',
+'import-error-edit' => 'Asebtar « $1 » ur d-yekter ara acku ur tesɛiḍ ara turagt iwakken at beddeleḍ.',
+'import-error-create' => 'Asebtar « $1 » ur d-yekter ara acku ur tesɛiḍ ara turagt iwakken at snulfuḍ.',
+'import-error-interwiki' => 'Asebtar « $1 » ur d-yekter ara acku isem-is yettwaṭṭef i uzday yeffɣen (interwiki).',
+'import-error-special' => 'Asebtar « $1 » ur d-yekter ara acku yeqqen s tallunt n isemawen uslig ur yebɣan ara isebtar.',
+'import-error-invalid' => 'Asebtar « $1 » ur d-yekter ara acku isem-is ur yeɣbel ara.',
+'import-error-unserialize' => 'Aceggeṛ $2 n usebtar « $1 » ur nezmer ara as n-ekkes amazrar ines. Aceggeṛ yetwamel am aken yetseqdac talɣa n ugbur $3 yesɛan amazrar s $4.',
+'import-error-bad-location' => 'Tacaggart $2 yetseqdacen talɣa n ugbur $3 teṣer deg ukalas ɣef « $1 » ɣef wiki agi, acku talɣa agi ur tezmer ara att illi deg usebtar agi.',
+'import-options-wrong' => 'Yir {{PLURAL:$2|afran|ifranen}} : <nowiki>$1</nowiki>',
+'import-rootpage-invalid' => 'Asebtar aẓar id efkeḍ d-azwel ur ɣblen ara.',
+'import-rootpage-nosubpage' => 'Tallunt n isemawen « $1 » n usebtar aẓar ur yeqbel ara adu-isebtar.',
# Import log
'importlogpage' => 'Aɣmis n usekcam',
'import-logentry-interwiki' => '$1 s transwiki',
'import-logentry-interwiki-detail' => '$1 {{PLURAL:$1|lqem|ileqman}} seg $2',
+# JavaScriptTest
+'javascripttest' => 'Tarmit n JavaScript',
+'javascripttest-title' => 'Asselkem n tirmitin $1',
+'javascripttest-pagetext-noframework' => 'Asebtar agi yeḥeṛṛ i usselkem n tirmitin JavaScript.',
+'javascripttest-pagetext-unknownframework' => 'Tamṣuka « $1 » warisem.',
+'javascripttest-pagetext-frameworks' => 'Ilaq ad xetreḍ yiwet n timṣukyin n tarmit agi : $1',
+'javascripttest-pagetext-skins' => 'Xter agwlim s anwa ad xeddemeḍ tarmit :',
+'javascripttest-qunit-intro' => 'Zeṛ [$1 tumlin n tarmit] ɣef mediawiki.org.',
+'javascripttest-qunit-heading' => 'Azrar n tarmit QUnit n JavaScript ɣef MediaWiki',
+
# Tooltip help for the actions
'tooltip-pt-userpage' => 'Asebter n umseqdac inu',
'tooltip-pt-anonuserpage' => 'Asebter n wemseqdac n IP wukud tekkiḍ',
'tooltip-pt-watchlist' => 'Umuɣ n uɛessi n isebtar i ttɛessaɣ',
'tooltip-pt-mycontris' => 'Umuɣ n tikkin inu',
'tooltip-pt-login' => 'Lukan tkecmeḍ xir, meɛna am tebɣiḍ.',
-'tooltip-pt-anonlogin' => 'Lukan tkecmeḍ xir, meɛna am tebɣiḍ.',
'tooltip-pt-logout' => 'Ffeɣ',
'tooltip-ca-talk' => 'Amyannan ɣef wayen yella deg usebter',
'tooltip-ca-edit' => 'Tzemreḍ ad tbeddleḍ asebter-agi. Sseqdec pre-timeẓriwt qbel.',
'tooltip-ca-viewsource' => 'Asebter-agi yettwaḥrez. Tzemreḍ ad twaliḍ aɣbalu-ines.',
'tooltip-ca-history' => 'Tisiwal ssabeq n usebter-agi.',
'tooltip-ca-protect' => 'Ḥrez asebter-agi',
+'tooltip-ca-unprotect' => 'Beddel amesten n usebtar-agi',
'tooltip-ca-delete' => 'Mḥu asebter-agi',
'tooltip-ca-undelete' => 'Err akk ibeddlen n usebter-agi i yellan uqbel ad yettwamḥu usebter',
'tooltip-ca-move' => 'Smimeḍ asebter-agi',
'tooltip-diff' => 'Ssken ayen tbeddleḍ deg uḍris.',
'tooltip-compareselectedversions' => 'Ẓer amgirred ger snat tisiwlini (i textareḍ) n usebter-agi.',
'tooltip-watch' => 'Rnu asebter-agi i wumuɣ n uɛessi inu',
+'tooltip-watchlistedit-normal-submit' => 'Kkes izwal',
+'tooltip-watchlistedit-raw-submit' => 'Amucceḍ n umuɣ n uḍfar',
'tooltip-recreate' => 'Ɛiwed xleq asebter ɣas akken yettumḥu',
+'tooltip-upload' => 'Beddu taktert',
'tooltip-rollback' => '« Semmet » yesemmet s-yiwen asenned akk d-acu amseqdac aneggaru yebeddel deg usebter',
'tooltip-undo' => '« Ssefsu » yesemmet abeddel agi dɣa i ldi asfaylu n ubeddel deg uskar n azaraskan. I ɛemmed an uɣal ar lqem n uqbel dɣa an rnu taɣẓint deg tanaka n ugzul.',
+'tooltip-preferences-save' => 'Ḥrez isemyifiyen',
'tooltip-summary' => 'Sekcem agzul awezzlan',
+'interlanguage-link-title' => '$1 — $2',
+
+# Metadata
+'notacceptable' => 'Aqeddac wiki agi ur yezmer ara ad yefk isefka deg amasal ur yezmer ara ad yeɣar amsaɣ inek/inem.',
# Attribution
'anonymous' => '{{PLURAL:$1|Aseqdac udrig|Iseqdacen udrigen}} ɣef {{SITENAME}}',
'siteuser' => '{{SITENAME}} amseqdac $1',
+'anonuser' => 'amseqdac abnabak $1 n {{SITENAME}}',
'lastmodifiedatby' => 'Tikkelt taneggarut asmi yettubeddel asebter-agi $2, $1 sɣur $3.',
'othercontribs' => 'Tikkin ɣef umahil n $1.',
'others' => 'wiyaḍ',
'siteusers' => '{{PLURAL:$2|aseqdac|iseqdacen}} $1 n {{SITENAME}}',
+'anonusers' => '{{PLURAL:$2|amseqdac abnabak|imseqdacen amseqdac abnabak}} $1 n {{SITENAME}}',
'creditspage' => 'Win ixedmen asebter',
'nocredits' => 'Ulac talɣut ɣef wayen ixedmen asebter-agi.',
'spamprotectiontitle' => 'Aḥraz amgel "Spam"',
'spamprotectiontext' => "Asebter i tebɣiḍ ad tesmektiḍ iɛekkel-it ''aḥraz mgel \"Spam\"''. Ahat yella wezday aberrani.",
'spamprotectionmatch' => 'Aḍris-agi ur t-iɛeǧ \'\'"aḥraz mgel "Spam"\'\': $1',
+'spambot_username' => 'Assizdeg n spam sɣur MediaWiki',
'spam_reverting' => 'Asuɣal i tasiwel taneggarut i ur tesɛi ara izdayen ɣer $1',
'spam_blanking' => 'Akk tisiwal sɛan izdayen ɣer $1, ad yemḥu',
+'spam_deleting' => 'Akkw ileqman yesɛan izdayen ɣer $1, tukksa',
+'simpleantispam-label' => "Assefqed mgal e-mail yerkan.
+Ur-d t-aru '''ACEMMA''' d-agi !",
# Info page
'pageinfo-title' => 'Tilɣa i « $1 »',
+'pageinfo-not-current' => 'Ssurfet-aɣ, ulamek ad n-efk talɣut i ileqman iqdimen.',
'pageinfo-header-basic' => 'Tilɣa n udasil',
'pageinfo-header-edits' => 'Amezruy n ibeddilen',
'pageinfo-header-restrictions' => 'Amesten n usebter',
'pageinfo-default-sort' => 'Tasarut n ufran s lexṣas',
'pageinfo-length' => 'Tiddi n usebter (s itamḍanen)',
'pageinfo-article-id' => 'Uṭṭun n usebter',
-'pageinfo-robot-policy' => 'Aẓayer n umsadday n unadi',
-'pageinfo-robot-index' => 'Ṭwamatar',
-'pageinfo-robot-noindex' => 'Arṭwamatar',
+'pageinfo-language' => 'Tutlayt n ugbur n usebtar',
+'pageinfo-content-model' => 'Talɣa n ugbur n usebtar',
+'pageinfo-robot-policy' => 'Asbeddi sɣur iṛubuten',
+'pageinfo-robot-index' => 'Tessireg',
+'pageinfo-robot-noindex' => 'Tegdel',
'pageinfo-views' => 'Amḍan n timuɣliwin',
'pageinfo-watchers' => 'Amḍan n imttekkiyen yesɛan asebter agi deg umuɣ nsen n uɛassi',
+'pageinfo-few-watchers' => 'Kkes-as $1 {{PLURAL:$1|amanay|imanayen}}',
+'pageinfo-redirects-name' => 'Amḍan n izdayen ɣer asebtar agi',
'pageinfo-subpages-name' => 'Adu-isebtar n usebter agi',
+'pageinfo-subpages-value' => '$1 ($2 {{PLURAL:$2|anegzum|inegzumen}}; $3 {{PLURAL:$3|ur-anegzum|ur-inegzumen}})',
+'pageinfo-firstuser' => 'Ameslal n usebtar',
+'pageinfo-firsttime' => 'Azmez n usnulfu n usebtar',
+'pageinfo-lastuser' => 'Atekki aneggaru',
+'pageinfo-lasttime' => 'Azmez n ubeddel aneggaru',
+'pageinfo-edits' => 'Amḍan aɣrud n ibeddilen',
+'pageinfo-authors' => 'Amḍan aɣrud n imeskaren iwḥiden',
+'pageinfo-recent-edits' => 'Amḍan n ibeddilen imaynuten (deg $1 ineggura)',
+'pageinfo-recent-authors' => 'Amḍan n imeskaren iwḥiden imaynuten',
+'pageinfo-magic-words' => '{{PLURAL:$1|Awal n tiḥḥerga|Awalen n tiḥḥerga}} ($1)',
+'pageinfo-hidden-categories' => '{{PLURAL:$1|Taggayt yeffren|Taggayin yeffren}} ($1)',
+'pageinfo-templates' => '{{PLURAL:$1|Talɣa i seddan|Talɣiwin i seddan}} ($1)',
+'pageinfo-transclusions' => '{{PLURAL:$1|Asebtar|Isebtar}} ayyes tesekcem ($1)',
+'pageinfo-toolboxlink' => 'Tilɣa ɣef usebtar',
+'pageinfo-redirectsto' => 'Ceggaɛ ɣer',
+'pageinfo-redirectsto-info' => 'tiɣa',
+'pageinfo-contentpage' => 'Yetweḥseb am asebtar n ugbur',
'pageinfo-contentpage-yes' => 'Ih',
+'pageinfo-protect-cascading' => 'Imestan tetwakksen seg d-agi',
'pageinfo-protect-cascading-yes' => 'Ih',
+'pageinfo-protect-cascading-from' => 'Imestan tetwakksen seg',
+'pageinfo-category-info' => 'Tilɣa ɣef taggayt',
+'pageinfo-category-pages' => 'Amḍan n isebtar',
+'pageinfo-category-subcats' => 'Amḍan n adutaggayin',
+'pageinfo-category-files' => 'Amḍan n ifuyla',
# Patrolling
'markaspatrolleddiff' => 'Rcem "yettwassenqden"',
'markedaspatrollederror' => 'Ur yezmir ara ad yercem "yettwassenqden"',
'markedaspatrollederrortext' => 'Yessefk ad textareḍ tasiwelt akken a tt-trecmeḍ "yettwassenqden".',
'markedaspatrollederror-noautopatrol' => 'Ur tezmireḍ ara ad trecmeḍ ibeddilen inek "yettwassenqden".',
+'markedaspatrollednotify' => 'Abeddel agi n $1 yetwacṛeḍ am aken yetwalsɣer.',
+'markedaspatrollederrornotify' => 'Axṣar n ucṛaḍ am aken yetsenqed.',
# Patrol log
'patrol-log-page' => 'Aɣmis n usenqad',
+'patrol-log-header' => 'Atan amezruy n ileqman yetwalsɣren.',
+'log-show-hide-patrol' => '$1 amezruy n alstiɣuryin',
# Image deletion
'deletedrevision' => 'Tasiwelt taqdimt $1 tettumḥa.',
+'filedeleteerror-short' => 'Tuccḍ deg tukksa n ufaylu : $1',
+'filedeleteerror-long' => 'Llant tuccḍiwin deg tukksa n ufaylu :
+
+$1',
+'filedelete-missing' => 'Afaylu « $1 » ur yezmer ara ad yetwekkes acku ulac-it.',
+'filedelete-old-unregistered' => 'Lqem n ufaylu « $1 » ulac-it deg taffa n isefka.',
+'filedelete-current-unregistered' => 'Afaylu « $1 » ulac-it deg taffa n isefka.',
+'filedelete-archive-read-only' => 'Akaram n aɣbaṛ « $1 » ur yezmer ara ad yetbeddel sɣur aqeddac.',
# Browsing diffs
'previousdiff' => '← Amgirred ssabeq',
Lukan a t-tesseqdceḍ yezmer ad yexsser aselkim inek/inem.",
'imagemaxsize' => "Tiddi tafellayt n tugniwin :<br />''(i isebtar n weglam ufaylu)''",
'thumbsize' => 'Tiddi n tugna tamecṭuḥt:',
+'widthheightpage' => '$1 × $2, $3 {{PLURAL:$3|asebtar|isebtar}}',
'file-info' => 'tiddi n ufaylu: $1, anaw n MIME: $2',
'file-info-size' => '$1 × $2 pixel, tiddi n ufaylu: $3, anaw n MIME: $4',
+'file-info-size-pages' => '$1 × $2 iferdisen, tiddi n ufaylu : $3, tawsit MIME : $4, $5 {{PLURAL:$5|asebtar|isebtar}}',
'file-nohires' => 'Ulac resolution i tameqqrant fell-as.',
'svg-long-desc' => 'Afaylu SVG, tabadut n $1 × $2 pixel, lqedd : $3',
-'show-big-image' => 'Resolution tameqqrant',
+'svg-long-desc-animated' => 'Afaylu SVG yettewliwilen , tiddi $1 x $2 iferdisen, tiddi n ufaylu : $3',
+'svg-long-error' => 'Afaylu SVG ur yeɣbel ara : $1',
+'show-big-image' => 'Afaylu aneṣli',
+'show-big-image-preview' => 'Tiddi n azaraskan agi : $1.',
+'show-big-image-other' => '{{PLURAL:$2|Tabadut|Tibuda}} nniḍen : $1.',
+'show-big-image-size' => '$1 × $2 iferdisen',
+'file-info-gif-looped' => 'deg taglult',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|tugna|tugniwin}}',
+'file-info-png-looped' => 'deg taglult',
+'file-info-png-repeat' => 'yetwurar {{PLURAL:$1|tikelt|tikwal}}',
+'file-info-png-frames' => '$1 {{PLURAL:$1|tugna|tugniwin}}',
+'file-no-thumb-animation' => "'''Tamawt : Ɣef ljal n tilisa titiknitin, tugniwin n ufaylu agi ur sɛunt ara amray.'''",
+'file-no-thumb-animation-gif' => "'''Tamawt : Ɣef ljal n tilisa titiknitin, tugniwin n ifuyla GIF deg tabadut tameqṛant am ttagi ur sɛunt ara amray.'''",
# Special:NewFiles
'newimages' => 'Umuɣ n ifayluwen imaynuten',
'imagelisttext' => "Deg ukessar yella wumuɣ n '''$1''' {{PLURAL:$1|ufaylu|yifayluwen}} $2.",
+'newimages-summary' => 'Asebtar agi uslig yebeqqeḍ ifuyla ineggura i kteren.',
'newimages-legend' => 'Tastayt',
'newimages-label' => 'Isem n ufaylu (naɣ aḥric ines) :',
'showhidebots' => '($1 iṛubuten)',
'minutes' => '{{PLURAL:$1|$1 tamrect|$1 timercin}}',
'hours' => '{{PLURAL:$1|$1 asrag|$1 isragen}}',
'days' => '{{PLURAL:$1|$1 ass|$1 ussan}}',
+'weeks' => '{{PLURAL:$1|$1 imalas|$1 imalasen}}',
+'months' => '{{PLURAL:$1|$1 aggur|$1 agguren}}',
+'years' => '{{PLURAL:$1|$1 aseggwas|$1 iseggwasen}}',
'ago' => '$1 aya',
'just-now' => 'Tura kan',
'exif-jpeginterchangeformatlength' => 'Tiddi s itamḍanen n isefka JPEG',
'exif-whitepoint' => 'Tiniskit n uqqa amellal',
'exif-primarychromaticities' => 'Tiniskit n tizwaranin',
+'exif-ycbcrcoefficients' => 'Imuskiren YCbCr',
'exif-referenceblackwhite' => 'Azalen n tamselɣut aberkan d umellal',
'exif-datetime' => 'Azmez n ubeddel',
'exif-imagedescription' => 'Aglam n tugna',
'exif-exposuretime-format' => '$1 tas ($2 tas)',
'exif-fnumber' => 'Alday',
'exif-exposureprogram' => 'Ahil n timzikent',
+'exif-spectralsensitivity' => 'Aḥalfu n uylal',
+'exif-isospeedratings' => 'Aḥalfu ISO',
+'exif-shutterspeedvalue' => 'Azzal n urjal n APEX',
'exif-aperturevalue' => 'Alday n APEX',
+'exif-brightnessvalue' => 'Asaddi APEX',
'exif-exposurebiasvalue' => 'Aseɣti n timzikent',
'exif-maxaperturevalue' => 'Alday afellay',
'exif-subjectdistance' => 'Ameccaq n usentel',
'exif-sensingmethod' => 'Tawsit n umaṭṭaf',
'exif-filesource' => 'Aɣbal n ufaylu',
'exif-scenetype' => 'Tawsit n usayes',
+'exif-customrendered' => 'Agmuḍ asagan',
+'exif-exposuremode' => 'askar n timzikent',
+'exif-whitebalance' => 'Tisistelt n imellalen',
+'exif-digitalzoomratio' => 'Afmiḍi n zoom umḍin',
+'exif-focallengthin35mmfilm' => 'Teɣzef n usaḍas i usaru 35 mm',
+'exif-scenecapturetype' => 'Tawsit n tuddma n usayes',
+'exif-gaincontrol' => 'Aḥkam n urrbeḥ',
+'exif-contrast' => 'Amyeẓli',
+'exif-saturation' => 'Aserhwu',
+'exif-sharpness' => 'Tezdeg',
+'exif-devicesettingdescription' => 'Aglam n tawila n allal',
+'exif-subjectdistancerange' => 'Ameccaq n tamsalt',
+'exif-imageuniqueid' => 'Asulay asuf n tugna',
+'exif-gpsversionid' => 'Lqem n ticṛeṭ GPS',
+'exif-gpslatituderef' => 'Tamselɣut i tafeltirit',
+'exif-gpslatitude' => 'Tafeltirit',
+'exif-gpslongituderef' => 'Tamselɣut i tazegrart',
+'exif-gpslongitude' => 'Tazegrart',
+'exif-gpsaltituderef' => 'Tamselɣut n usawen (0=asawen, 1=talqayt)',
+'exif-gpsaltitude' => 'Talqayt',
+'exif-gpstimestamp' => 'Asrag GPS (tamasragt tabelkamit)',
+'exif-gpssatellites' => 'Igensaten yetseqdacen i akat',
+'exif-gpsstatus' => 'Addad n unermas',
+'exif-gpsmeasuremode' => 'askar n akat',
+'exif-gpsdop' => 'Tiseddi n akat',
+'exif-gpsspeedref' => 'Aferdis n tazzla n unermas GPS',
+'exif-gpsspeed' => 'Tazzla n unermas GPS',
+'exif-gpstrackref' => 'Tamesɣult i tanila n uwliwel',
+'exif-gpstrack' => 'Tanila n uwliwel',
+'exif-gpsimgdirectionref' => 'Tamesɣult i tanila n tugna',
+'exif-gpsimgdirection' => 'Tanila n tugna',
+'exif-gpsmapdatum' => 'Anagraw akalɣa yetseqdacen',
+'exif-gpsdestlatituderef' => 'Tamesɣult i turrut n userken',
+'exif-gpsdestlatitude' => 'Turrut n userken',
+'exif-gpsdestlongituderef' => 'Tamesɣult i tazegrart n userken',
+'exif-gpsdestlongitude' => 'Tazegrart n userken',
+'exif-gpsdestbearingref' => 'Tamesɣult i anker n userken',
+'exif-gpsdestbearing' => 'Anker n userken',
+'exif-gpsdestdistanceref' => 'Tamesɣult i umeccaq ar userken',
+'exif-gpsdestdistance' => 'Ameccaq ar userken',
+'exif-gpsprocessingmethod' => 'Isem n tarrayt n usekker n GPS',
+'exif-gpsareainformation' => 'Isem n taɣzut GPS',
+'exif-gpsdatestamp' => 'Azmez GPS',
+'exif-gpsdifferential' => 'Aseɣti aneẓlay GPS',
+'exif-jpegfilecomment' => 'Awennit n ufaylu JPEG',
+'exif-keywords' => 'Awalen yufraren',
+'exif-worldregioncreated' => 'Aẓi n Umaḍal deg anwa tawlaft agi tetwadem',
+'exif-countrycreated' => 'Tamurt deg anta tawlaft agi tetwadem',
+'exif-countrycodecreated' => 'Angal n tamurt deg anta tawlaft agi tetwadem',
+'exif-provinceorstatecreated' => 'Tamnaḍt neɣ Awanak deg anwa tawlaft agi tetwadem',
+'exif-citycreated' => 'Tamdint deg anta tawlaft agi tetwadem',
+'exif-sublocationcreated' => 'Amur n temdint deg anwa tawlaft agi tetwadem',
'exif-worldregiondest' => 'Timnaḍin n umaḍal yebeqqeḍen',
'exif-countrydest' => 'Timura yebeqqeḍen',
'exif-countrycodedest' => 'Tangalt n tamurt yebeqqeḍen',
'exif-fixtureidentifier' => 'Isem n uferdis aslagan',
'exif-locationdest' => 'Amḍiq yebeqqeḍen',
'exif-locationdestcode' => 'Tangalt n umḍiq yebeqqeḍen',
+'exif-objectcycle' => 'Taswiɛt n wass i amedia agi yessefra-d',
'exif-contact' => 'Tilɣa n unermis',
'exif-writer' => 'Ameskar',
'exif-languagecode' => 'Tutlayt',
'exif-datetimereleased' => 'Tuffɣa ass n',
'exif-originaltransmissionref' => 'Tangalt n usideg n tuzzna tamezwarut',
'exif-identifier' => 'Asulay',
+'exif-lens' => 'Tilintit yetseqdacen',
+'exif-serialnumber' => 'Uṭṭun n umazrar n timseknewt',
+'exif-cameraownername' => 'Amli n timseknewt',
+'exif-label' => 'Aglam',
+'exif-datetimemetadata' => 'Azmez n abeddil aneggaru n adferisefka',
+'exif-nickname' => 'Isem aralɣawi n tugna',
+'exif-rating' => 'Tazmilt (ɣef 5)',
+'exif-rightscertificate' => 'Aselkin n usefrek n izerfan',
+'exif-copyrighted' => 'Aẓayer n uzref n umeskar',
+'exif-copyrightowner' => 'Amaway n uzref n umeskar',
+'exif-usageterms' => 'Tawtilt n usseqdec',
+'exif-webstatement' => 'Taseɣrut n copyright askar uqqin',
+'exif-originaldocumentid' => 'ID awḥid n taftart taneṣlit',
+'exif-licenseurl' => 'URL n turagt',
+'exif-morepermissionsurl' => 'Tilɣa ɣef turagin timlellayin',
+'exif-attributionurl' => 'Deg alsasseqdec n tawuri agi, ilaq ad qqeneḍ ar',
+'exif-preferredattributionname' => 'Deg alsasseqdec n tawuri agi, ilaq ad snemmer',
+'exif-pngfilecomment' => 'Awennit n ufaylu PNG',
+'exif-disclaimer' => 'Ur-tamasit',
+'exif-contentwarning' => 'Alɣu ɣef ugbur',
+'exif-giffilecomment' => 'Awennit n ufaylu GIF',
+'exif-intellectualgenre' => 'Tawsit n uferdis',
+'exif-subjectnewscode' => 'Angal n usentel',
+'exif-scenecode' => 'Angal n usayes IPTC',
+'exif-event' => 'Tadyant yetsnazelen',
+'exif-organisationinimage' => 'Tuddsa yetsnazelen',
+'exif-personinimage' => 'Aterras yetsnazelen',
+'exif-originalimageheight' => 'Tafelleyt n tugna uqbel att ili tetwalssurret',
+'exif-originalimagewidth' => 'Tehri n tugna uqbel att ili tetwalssurret',
+
+# Exif attributes
+'exif-compression-1' => 'War asekkusem',
+'exif-compression-2' => 'CCITT Agraw 3 Teɣzef n usettengel Huffman yetbeddlen n tasekta 1',
+'exif-compression-3' => 'CCITT Agraw 3 asettengel n fax',
+'exif-compression-4' => 'CCITT Agraw 4 asettengel n fax',
'exif-copyrighted-true' => 'Ddaw azref n umeskar',
-'exif-copyrighted-false' => 'Taɣuly tazayezt',
+'exif-copyrighted-false' => 'Addad n izerfan n umeskar ur yesbadu ara',
'exif-unknowndate' => 'Azmez warisem',
# Flash modes
'exif-flash-fired-0' => 'Lebṛaq ur yendeḥ ara',
'exif-flash-fired-1' => 'Lebṛaq yendeḥ',
+'exif-flash-return-0' => 'ula d yiwen n strub ur d-yerra ara tasɣent n tifin',
+'exif-flash-return-2' => 'strub ur-d i t-aff ara tafat id yuɣalen',
+'exif-flash-return-3' => 'strub yuffad tuqqla n tafat',
'exif-flash-mode-1' => 'Tafat n lebaq yuwren',
'exif-flash-mode-2' => 'Tukksa n lebaq yuwren',
'exif-flash-mode-3' => 'askar awurman',
'exif-subjectdistancerange-0' => 'Warisem',
'exif-subjectdistancerange-1' => 'Amɣer',
+'exif-subjectdistancerange-2' => 'Imeẓri iqerrben',
+'exif-subjectdistancerange-3' => 'Imeẓri ibɛeden',
+
+# Pseudotags used for GPSLatitudeRef and GPSDestLatitudeRef
+'exif-gpslatitude-n' => 'Agafa',
+'exif-gpslatitude-s' => 'Anẓul',
+
+# Pseudotags used for GPSLongitudeRef and GPSDestLongitudeRef
+'exif-gpslongitude-e' => 'Agmuḍ',
+'exif-gpslongitude-w' => 'Amalu',
+
+# Pseudotags used for GPSAltitudeRef
+'exif-gpsaltitude-above-sealevel' => '$1 {{PLURAL:$1|lmitra}} nnig aswir n ilel',
+'exif-gpsaltitude-below-sealevel' => '$1 {{PLURAL:$1|lmitra}} ddaw aswir n ilel',
+
+'exif-gpsstatus-a' => 'Akat imir',
+'exif-gpsstatus-v' => 'Agertiddit n akat',
+
+'exif-gpsmeasuremode-2' => 'Akat s 2 tisektiwin',
+'exif-gpsmeasuremode-3' => 'Akat s 3 tisektiwin',
# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'Kilometr deg ssaɛa',
'exif-urgency-normal' => 'Alugen ($1)',
'exif-urgency-low' => 'Anammum ($1)',
'exif-urgency-high' => 'Afella ($1)',
+'exif-urgency-other' => 'Lḥir id yefka amseqdac ($1)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'akk',
$5
Angal n usentem-agi ad yemmut ass $4.',
+'confirmemail_body_changed' => 'Amdan, ahat d kečč/kem, seg tansa IP $1,
+yebeddel tansa email yeqqenen ar umiḍan "$2" n {{SITENAME}}.
+
+Iwakken ad sergegeḍ amiḍan agi d-win-inek/inem dɣa iwakken
+an sermed tiwura n tirawt deg {{SITENAME}},
+ilaq ad lkemeḍ aseɣwen agi deg iminig :
+
+$3
+
+Ma mačči d *kečč/kem*, ilaq ad lkemeḍ aseɣwen agi deg iminig :
+
+$5
+
+Angal n usentem-agi ad yemmut ass $4.',
+'confirmemail_body_set' => 'Amdan, ahat d kečč/kem, seg tansa IP $1,
+yebeddel tansa email n umiḍan "$2" s ttagi ɣef {{SITENAME}}.
+
+Iwakken ad sergegeḍ amiḍan agi d-win-inek/inem dɣa iwakken
+an sermed tiwura n tirawt deg {{SITENAME}},
+ilaq ad lkemeḍ aseɣwen agi deg iminig :
+
+$3
+
+Ma amiḍan agi mačči d * aylak/aylam*, ilaq ad lkemeḍ aseɣwen agi deg iminig :
+
+$5
+
+Angal n usentem-agi ad yemmut ass $4.',
+'confirmemail_invalidated' => 'Aragag n tansa email yettusemmet',
+'invalidateemail' => 'Semmet aragag n tansa email',
# Scary transclusion
'scarytranscludedisabled' => '[Yettwakkes assekcam n isebtar seg wiki tiyaḍ]',
'scarytranscludefailed' => '[Ur yezmir ara a d-yawi talɣa n $1]',
+'scarytranscludefailed-httpstatus' => '[Abrir n tiririt n talɣa i $1 : HTTP $2]',
'scarytranscludetoolong' => '[URL agi uffay aṭas]',
# Delete conflict
'confirmrecreate' => "Amseqdac [[User:$1|$1]] ([[User talk:$1|Meslay]]) yemḥu asebter-agi beɛd ad tebdiḍ abeddel axaṭer:
: ''$2''
G leɛnaya-k sentem belli ṣaḥḥ tebɣiḍ ad tɛiwedeḍ axlaq n usebter-agi.",
+'confirmrecreate-noreason' => 'Amseqdac [[User:$1|$1]] ([[User talk:$1|Meslay]]) yemḥu asebter-agi wannag tebedduḍ att beddeleḍ. Ilaq ad sergegeḍ tebɣiḍ ad snulfuḍ tikkelt nniḍen asebtar agi.',
'recreate' => 'Ɛiwed xleq',
# action=purge
'confirm_purge_button' => 'Seɣbel',
'confirm-purge-top' => 'Mḥu lkac n usebter-agi?',
+'confirm-purge-bottom' => 'Asenger n usebtar yetwekkes-it seg tazarkatut n ubeqqeḍ dɣa yetḥettem lqem ines aneggaru ad yetbeqqeḍ.',
# action=watch/unwatch
'confirm-watch-button' => 'Seɣbel',
+'confirm-watch-top' => 'Rnu asebter-agi i wumuɣ n uɛessi inek ?',
'confirm-unwatch-button' => 'Seɣbel',
+'confirm-unwatch-top' => 'Ekkes asebter-agi seg wumuɣ n uɛessi inek ?',
# Multipage image navigation
'imgmultipageprev' => '← asebter ssabeq',
'imgmultipagenext' => 'asebter ameḍfir →',
'imgmultigo' => 'Ruḥ!',
+'imgmultigoto' => 'Ruḥ ar usebtar $1',
+
+# Language selector for translatable SVGs
+'img-lang-default' => '(tutlayt s lexṣas)',
+'img-lang-info' => 'Beqqeḍ tugna agi s $1 $2.',
+'img-lang-go' => 'Ruḥ',
# Table pager
'ascending_abbrev' => 'asawen',
'table_pager_first' => 'Asebtar amezwaru',
'table_pager_last' => 'Asebtar aneggaru',
'table_pager_limit' => 'Ssken $1 n yiferdas di mkul asebtar',
+'table_pager_limit_label' => 'Agemmuḍ deg usebtar :',
'table_pager_limit_submit' => 'Ruḥ',
'table_pager_empty' => 'Ulac igmad',
'watchlistedit-normal-done' => '{{PLURAL:$1|1 wezwel yettwakkes|$1 yizwal ttwakksen}} seg wumuɣ n uɛessi inek:',
'watchlistedit-raw-title' => 'Beddel umuɣ n uɛessi (raw)',
'watchlistedit-raw-legend' => 'Beddel umuɣ n uɛessi (raw)',
+'watchlistedit-raw-explain' => 'Izwal n umuɣ inek/inem n uɛassi llan beqqeḍen ddaw agi dɣa tzemreḍ ad ten beddeleḍ s timerniwt neɣ tukksa seg umuɣ (yiwen azwel s azagg).
+Ma tfukeḍ, senned ɣef taqeffalt « {{int:Watchlistedit-raw-submit}} » ddaw agi.
+Tzemreḍ daɣen [[Special:EditWatchlist|ad seqdeceḍ amaẓrag amagnu]].',
'watchlistedit-raw-titles' => 'Izwal:',
+'watchlistedit-raw-submit' => 'Amucceḍ n umuɣ n uɛassi',
'watchlistedit-raw-done' => 'Umuɣ n uɛessi inek yettubeddel.',
'watchlistedit-raw-added' => '{{PLURAL:$1|1 wezwel |$1 yizwal}} nnernan:',
'watchlistedit-raw-removed' => '{{PLURAL:$1|1 wezwel yettwakkes|$1 yizwal ttwakksen}}:',
'watchlisttools-edit' => 'Ẓer u beddel umuɣ n uɛessi',
'watchlisttools-raw' => 'Beddel umuɣ n uɛessi (raw)',
+# Signatures
+'signature' => '[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|amyannan]])',
+
# Core parser functions
+'unknown_extension_tag' => 'Ticṛeṭ n usiɣzef « $1 » warisem',
'duplicate-defaultsort' => 'Ɣur-wet : tasarut n ufran m-ulac « $2 » atsefεej tasarut n uqbel « $1 ».',
# Special:Version
'version' => 'Lqem',
+'version-extensions' => 'Isiɣzaf i serkeben',
'version-specialpages' => 'isebtar usligen',
+'version-parserhooks' => 'Imguden n umsisleḍ n taseddast',
+'version-variables' => 'Imuttiyen',
+'version-antispam' => 'Aḥezzeb n spam',
+'version-skins' => 'Igelman',
+'version-other' => 'Nniḍen',
+'version-mediahandlers' => 'Amsqerdec n imediaten',
+'version-hooks' => 'Imguden',
+'version-parser-extensiontags' => 'Ticraḍ yeẓẓlen n umsisleḍ n taseddast',
+'version-parser-function-hooks' => 'Tiseɣnin yeẓẓlen n umsisleḍ n taseddast',
+'version-hook-name' => 'Isem n umgud',
+'version-hook-subscribedby' => 'Imeltaɣen :',
+'version-version' => '(lqem $1)',
+'version-license' => 'Turagt MediaWiki',
+'version-ext-license' => 'Turagt',
+'version-ext-colheader-name' => 'Asiɣzef',
+'version-ext-colheader-version' => 'Lqem',
+'version-ext-colheader-license' => 'Turagt',
+'version-ext-colheader-description' => 'Aglam',
+'version-ext-colheader-credits' => 'Imeskaren',
+'version-license-title' => 'Turagt i $1',
+'version-license-not-found' => 'Ur d-n-uffa ara talɣut tummidt n turagt i usiɣzef agi.',
+'version-credits-title' => 'Isnemmiren i $1',
+'version-credits-not-found' => 'Ur d-n-uffa ara talɣut tummidt n isnemmiren i usiɣzef agi.',
+'version-poweredby-credits' => "Wiki agi yetelḥu s '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
+'version-poweredby-others' => 'nniḍen',
+'version-poweredby-translators' => 'imsuqqlen n translatewiki.net',
+'version-credits-summary' => 'Nebɣa an snemmer imdanen agi i uttekki nsen ar [[Special:Version|MediaWiki]].',
+'version-license-info' => 'MediaWiki d aseɣẓan ilelli, Tzemreḍ at alsferqeḍ neɣ at beddeleḍ ɣef leḥsab n irmawen n Turagt Tazayezt Tamatut GNU aken i ttid suffeɣ Free Software Foundation ; ihi lqem 2 n turagt, neɣ (aken i tebɣiḍ) akkw lqem taqdimt.
+
+MediaWiki yetwafreq iwakken ad yenfeɛ, maca ULAC AḌMAN, war aḍman n TANEZZUT neɣ ASSEZGI I ASSEQDEC AMAẒLAY. Zeṛ Turagt Tazayezt Tamatut GNU i tilɣa tummidin.
+
+Ahat teḍḍfeḍ [{{SERVER}}{{SCRIPTPATH}}/COPYING anɣel n Turagt Tazayezt Tamatut GNU] s ahil agi, mulac, aru i Free Software Foundation, Inc., 51, aɣlad Franklin, annag wis 5, Boston, MA 02110-1301, Iwunak Yeddukklen n Temrikt neɣ [//www.gnu.org/licenses/old-licenses/gpl-2.0.html ɣer-itt uqqin].',
'version-software' => 'Iseɣẓanen i serkeben',
'version-software-product' => 'Afaris',
'version-software-version' => 'Lqem',
'version-entrypoints-header-entrypoint' => 'Ired n wekcam',
'version-entrypoints-header-url' => 'Tansa URL',
+# Special:Redirect
+'redirect' => 'Alssniled s ufaylu, amseqdac, asebtar neɣ ID n tacaggart',
+'redirect-legend' => 'Alsnil ɣer asebtar neɣ afaylu',
+'redirect-summary' => 'Asebtar agi uslig yetalssnil ɣeṛ ufaylu (isem n ufaylu yetwefked), asebtar (ID n tacaggart neɣ n usebtar id yetwafken) neɣ asebtar n umseqdac (ID umḍin n umseqdac yetwefked). Asseqdec : [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], neɣ [[{{#Special:Redirect}}/user/101]].',
+'redirect-submit' => 'Ruḥ',
+'redirect-lookup' => 'Anadi :',
+'redirect-value' => 'Azal :',
+'redirect-user' => 'ID n umseqdac',
+'redirect-page' => 'Uṭṭun n usebter',
+'redirect-revision' => 'Tacaggart n usebtar',
+'redirect-file' => 'Isem n ufaylu',
+'redirect-not-exists' => 'Azal ulac-it',
+
+# Special:FileDuplicateSearch
+'fileduplicatesearch' => 'Anadi n allusen',
+'fileduplicatesearch-summary' => 'Anadi n ineɣlan n ifuyla kifkif ɣef leḥsab n udsil nsen n udway.',
+'fileduplicatesearch-legend' => 'Nadi allus',
+'fileduplicatesearch-filename' => 'Isem n ufaylu :',
+'fileduplicatesearch-submit' => 'Nadi',
+'fileduplicatesearch-info' => '$1 × $2 pixel<br />Tiddi n ufaylu : $3<br />Anaw MIME : $4',
+'fileduplicatesearch-result-1' => 'Afaylu « $1 » ur yesɛa ara allus.',
+'fileduplicatesearch-result-n' => 'Afaylu « $1 » yesɛa {{PLURAL:$2|1 allus|$2 allusen}}.',
+'fileduplicatesearch-noresults' => 'Ulac afaylu s isem « $1 ».',
+
# Special:SpecialPages
'specialpages' => 'isebtar usligen',
+'specialpages-note-top' => 'Aglam',
+'specialpages-note' => '* Isebtar usligen imugna.
+* <span class="mw-specialpagerestricted">Isebtar usligen ukrifen.</span>',
+'specialpages-group-maintenance' => 'Iṛabulen n ibeddi',
+'specialpages-group-other' => 'Isebtar usligen nniḍen',
+'specialpages-group-login' => 'Asulu / assiggez',
+'specialpages-group-changes' => 'Ibeddilen imaynuten d iɣmisen',
+'specialpages-group-media' => 'Iṛabulen d taktert n ifuyla media',
+'specialpages-group-users' => 'Imseqdacen d izerfan yeqqnen',
+'specialpages-group-highuse' => 'Isebtar n usseqdec n waṭas',
+'specialpages-group-pages' => 'Umuɣen n isebtar',
+'specialpages-group-pagetools' => 'Ifecka i isebtar',
+'specialpages-group-wiki' => 'Isefka d ifecka',
+'specialpages-group-redirects' => 'Isebtar usligen yetsiwzelen',
+'specialpages-group-spam' => 'Ifecka mgal e-mail yerkan',
+
+# Special:BlankPage
+'blankpage' => 'Asebtar ilem',
+'intentionallyblankpage' => 'Asebtar agi, yetweǧǧ (qrib) d-ilem s lebɣi.',
# External image whitelist
'external_image_whitelist' => ' #Eǧǧ ajeṛṛiḍ agi aken yella.<pre>
#Ger akk tifersa n tinfaliyin timeɣẓanin nnig ajeṛṛiḍ agi. Eǧǧ ajeṛṛiḍ agi aken yella.</pre>',
# Special:Tags
+'tags' => 'Ticṛaḍ n ibeddilen sɣeblent',
'tag-filter' => 'Astay n [[Special:Tags|ticraḍ]] :',
+'tag-filter-submit' => 'Sti',
+'tag-list-wrapper' => '([[Special:Tags|{{PLURAL:$1|Ticṛeṭ|Ticraḍ}}]] : $2)',
+'tags-title' => 'Ticraḍ',
+'tags-intro' => 'Asebtar agi yettaked umuɣ n ticraḍ ay aseɣẓan yezmer ad yeseqdec iwakken ad yecreḍ abeddel d anamek i yal abeddel.',
+'tags-tag' => 'Isem n ticṛeṭ',
+'tags-display-header' => 'Tummant deg umuɣen n ibeddilen',
+'tags-description-header' => 'Aglam ummid n ticṛeṭ',
+'tags-active-header' => 'Urmid ?',
+'tags-hitcount-header' => 'Ibeddilen yesɛan ticraḍ',
+'tags-active-yes' => 'Ih',
+'tags-active-no' => 'Ala',
+'tags-edit' => 'beddel',
+'tags-hitcount' => '$1 {{PLURAL:$1|abeddel|ibeddlen}}',
+
+# Special:ComparePages
+'comparepages' => 'Qaren isebtar',
+'compare-page1' => 'Asebtar 1',
+'compare-page2' => 'Asebtar 2',
+'compare-rev1' => 'Lqem 1',
+'compare-rev2' => 'Lqem 2',
+'compare-submit' => 'Qaren',
+'compare-invalid-title' => 'Azwel id efkiḍ ur yeɣbel ara.',
+'compare-title-not-exists' => 'Azwel id efkiḍ ulac-it.',
+'compare-revision-not-exists' => 'Lqem id efkiḍ ulac-it.',
+
+# Database error messages
+'dberr-header' => 'Wiki agi yesɛa ugur',
+'dberr-problems' => 'Ssurfet-aɣ ! Asmel agi yemliled ilɣiten itikniten.',
+'dberr-again' => 'Ɛreḍ ad arǧuḍ kra n tisdidin dɣa sismeḍ.',
+'dberr-info' => '(Ulamek an qqen ar uqeddac n taffa n isefka : $1)',
+'dberr-info-hidden' => '(Ulamek an qqen ar uqeddac n taffa n isefka)',
+'dberr-usegoogle' => 'Tzemreḍ ad ɛreḍeḍ anadi s Google deg ukud agi.',
+'dberr-outofdate' => 'Ani i imataren nsen n ugbur nneɣ zemren ad yetwagaren',
+'dberr-cachederror' => 'Wagi d anɣel yeffren n usebtar i tebɣiḍ, yezmer ad yetwagar.',
+
+# HTML forms
+'htmlform-invalid-input' => 'Igna nnulfan-d s kra n azalen',
+'htmlform-select-badoption' => 'Azal id efkeḍ mačči d taxtiṛit i ɣeblen.',
+'htmlform-int-invalid' => 'Azal id efkeḍ mačči d amḍan ummid.',
+'htmlform-float-invalid' => 'Azal id efkeḍ mačči d amḍan.',
+'htmlform-int-toolow' => 'Azal id efkeḍ d-amectuḥ ugar adday n $1',
+'htmlform-int-toohigh' => 'Azal id efkiḍ yugar afellay n $1',
+'htmlform-required' => 'Ilaq azal agi',
+'htmlform-submit' => 'Ssumer',
+'htmlform-reset' => 'Ekkes ibeddilen',
+'htmlform-selectorother-other' => 'Nniḍen',
+'htmlform-no' => 'Ala',
+'htmlform-yes' => 'Ih',
+'htmlform-chosen-placeholder' => 'Fren taxtiṛit',
+
+# SQLite database support
+'sqlite-has-fts' => '$1 s anadi deg uḍris ummid yezmer',
+'sqlite-no-fts' => '$1 war anadi deg uḍris ummid yezmer',
# New logging system
+'logentry-delete-delete' => '$1 {{GENDER:$2|yemḥa}} asebtar $3',
+'logentry-delete-restore' => '$1 {{GENDER:$2|yerred|terred}} asebtar $3',
+'logentry-delete-event' => '$1 {{GENDER:$2|yebeddel|tebeddel}} tabanit {{PLURAL:$5|n tadyant n uɣmis|n $5 tidyanin n uɣmis}} ɣef $3: $4',
+'logentry-delete-revision' => '$1 {{GENDER:$2|yebeddel|tebeddel}} tabani {{PLURAL:$5|n lqem|n $5 ileqman}} ɣef usebtar $3: $4',
+'logentry-delete-event-legacy' => '$1 {{GENDER:$2|yebeddel|tebeddel}} tabanit n tidyanin n uɣmis ɣef $3',
+'logentry-delete-revision-legacy' => '$1 {{GENDER:$2|yebeddel|tebeddel}} tabanit n ileqman ɣef usebtar $3',
+'logentry-suppress-delete' => '$1 {{GENDER:$2|yemḥa|temḥa}} asebtar $3',
+'logentry-suppress-event' => '$1 {{GENDER:$2|yebeddel s lbaḍna|tebeddel s lbaḍna}} tabanit {{PLURAL:$5|n tadyant n uɣmis|n $5 tidyanin n uɣmis}} ɣef $3: $4',
+'logentry-suppress-revision' => '$1 {{GENDER:$2|yebeddel s lbaḍna|tebeddel s lbaḍna}} tabani {{PLURAL:$5|n lqem|n $5 ileqman}} ɣef usebtar $3: $4',
+'logentry-suppress-event-legacy' => '$1 {{GENDER:$2|yebeddel s lbaḍna|tebeddel s lbaḍna}} tabanit n tidyanin n uɣmis ɣef $3',
+'logentry-suppress-revision-legacy' => '$1 {{GENDER:$2|yebeddel s lbaḍna|tebeddel s lbaḍna}} tabanit n ileqman ɣef usebtar $3',
+'revdelete-content-hid' => 'agbur yeffren',
+'revdelete-summary-hid' => 'agzul n ubeddil yeffren',
+'revdelete-uname-hid' => 'isem n umseqdac yeffren',
+'revdelete-content-unhid' => 'agbur yebeqqeḍen',
+'revdelete-summary-unhid' => 'agzul n ubeddil yebeqqeḍen',
+'revdelete-uname-unhid' => 'isem n umseqdac yebeqqeḍen',
+'revdelete-restricted' => 'ikrafen snesen i inedbalen',
+'revdelete-unrestricted' => 'ikrafen tetwakksen i inedbalen',
+'logentry-move-move' => '$1 {{GENDER:$2|yebeddel isem|tebeddel isem}} n usebtar seg $3 ar $4',
+'logentry-move-move-noredirect' => '$1 {{GENDER:$2|yebeddel isem|tebeddel isem}} n usebtar seg $3 ar $4 war anegzum',
+'logentry-move-move_redir' => '$1 {{GENDER:$2|yesiweḍ|tesiweḍ}} asebtar seg $3 ar $4 nnig anegzum',
+'logentry-move-move_redir-noredirect' => '$1 {{GENDER:$2|yesiweḍ|tesiweḍ}} asebtar $3 ar $4 nnig anegzum war tuǧǧin n unegzum',
+'logentry-patrol-patrol' => '$1 {{GENDER:$2|yecṛeḍ|tecṛeḍ}} tacaggart $4 n usebtar $3 am aken tetwalsɣer',
+'logentry-patrol-patrol-auto' => '$1 {{GENDER:$2|yecṛeḍ|tecṛeḍ}} s uwurman tacaggart $4 n usebtar $3 am aken tetwalsɣer',
+'logentry-newusers-newusers' => 'Amiḍan n umseqdac $1 {{GENDER:$2|yetwaxleq}}',
+'logentry-newusers-create' => 'Amiḍan n umseqdac $1 {{GENDER:$2|yetwaxleq}}',
+'logentry-newusers-create2' => 'Amiḍan n umseqdac $3 {{GENDER:$2|yetwaxleq}} sɣur $1',
+'logentry-newusers-byemail' => 'Amiḍan n umseqdac $3 {{GENDER:$2|yetwaxleq}} sɣur $1 dɣa awal n uɛaddi yetwaceggaɛ deg email',
+'logentry-newusers-autocreate' => 'Amiḍan n umseqdac $1 {{GENDER:$2|yetwaxleq}} s uwurman',
+'logentry-rights-rights' => '$1 {{GENDER:$2|yebeddel|tebeddel}} amyili ar ugraw i $3 n $4 ar $5',
+'logentry-rights-rights-legacy' => '$1 {{GENDER:$2|yebeddel|tebeddel}} amyili ar ugraw i $3',
+'logentry-rights-autopromote' => '$1 {{GENDER:$2|yettwasmel|tettwasmel}} s uwurman seg $4 ar $5',
'rightsnone' => '(ulaḥedd)',
# Feedback
+'feedback-bugornote' => 'Ma teḥgiḍ iman-ik/im ad gelmeḍ agnu atekni i tilɣa tummidtin, [$1 ɛeyyen ɣef anezri].
+Mulac, tzemreḍ ad seqdeceḍ tiferkit ddaw agi. Awennit inek/inem ad yetwernu ar usebtar « [$3 $2] », s isem-ik/im n umseqdac d iminig i tseqdeceḍ.',
'feedback-subject' => 'Asentel :',
'feedback-message' => 'Izen :',
'feedback-cancel' => 'Semmewet',
'feedback-submit' => 'Ceggaɛ iwenniten',
'feedback-adding' => 'Rnud iwenniten inek/inem ar usebter...',
+'feedback-error1' => 'Tuccḍa : Agmuḍ n API ur yetwaɛqel ara',
+'feedback-error2' => 'Tuccḍa : abeddel yexṣer',
+'feedback-error3' => 'Tuccḍa : Ulac tamrarut n API',
+'feedback-thanks' => 'Tanemmirt ! Awennit inek/inem yeffeɣ-d ɣef usebtar "[$2 $1]".',
+'feedback-close' => 'D ayen',
+'feedback-bugcheck' => 'D ayen igerrzen ! Senqed kan ma mačči d yiwen n [$1 inezriyen i n-sen yakan].',
+'feedback-bugnew' => 'Senqedeɣ. Ɛeyyen anezri amaynut',
+
+# Search suggestions
+'searchsuggest-search' => 'Nadi',
+'searchsuggest-containing' => 'yesɛan...',
+
+# API errors
+'api-error-badaccess-groups' => 'Ur tesɛiḍ ara turagt ad smireḍ ifuyla ɣef wiki agi.',
+'api-error-badtoken' => 'Tuccḍa tagensit : yir « tiddest ».',
+'api-error-copyuploaddisabled' => 'Issenɣal seg URL nsan ɣef aqeddac agi.',
+'api-error-duplicate' => '{{PLURAL:$1|[Yella yakan $2 afaylu nniḍen]|[Llan yakan $2 ifuyla nniḍen]}} ɣef asmel agi s ugbur am winna.',
+'api-error-duplicate-archive' => '{{PLURAL:$1|[Yella yakan $2 afaylu nniḍen]|[Llan yakan $2 ifuyla nniḍen]}} ɣef asmel agi s ugbur am winna, maca {{PLURAL:$1|yetwekkes|tetwekksen}}.',
+'api-error-duplicate-archive-popup-title' => 'Sleg {{PLURAL:$1|afaylu|ifuyla}} yetwekksen yakan.',
+'api-error-duplicate-popup-title' => '{{PLURAL:$1|Afaylu|Ifuyla}} islagen.',
+'api-error-empty-file' => 'Afaylu id ceggɛeḍ d-ilem.',
+'api-error-emptypage' => 'Asnulfu n isebtar ilemawen ur yareg ara.',
+'api-error-fetchfileerror' => 'Tuccḍa tagensit : Yella kra ur yaɛeddan ara s luwqem deg tiririt n ufaylu.',
+'api-error-fileexists-forbidden' => 'Afaylu s isem "$1" yella yakan, dɣa ur nezmer ara at n-mzey.',
+'api-error-fileexists-shared-forbidden' => 'Afaylu s isem "$1" yella yakan deg ukaram n ifuyla yettwacerken, dɣa ur nezmer ara at n-mzey.',
+'api-error-file-too-large' => 'Afaylu id cegɛed d-ameqqṛan aṭas.',
+'api-error-filename-tooshort' => 'Isem n ufaylu d-awezzlan aṭas.',
+'api-error-filetype-banned' => 'Tawsit agi n ufaylu d-tazanbagt.',
+'api-error-filetype-banned-type' => "''' « .$1 » '''mačči d {{PLURAL:$4|tawit n ufaylu yesɛan turagt|tiwsatin n ufaylu yesɛan turagt}}.
+{{PLURAL:$3|Tawit n ufaylu yesɛan turagt d-wagi :|Tiwsatin n ufaylu yesɛan turagt d-wigi :}} $2.",
+'api-error-filetype-missing' => 'Asiɣzef n ufaylu agi ulac-it.',
+'api-error-hookaborted' => 'Abeddel i ɛerdeḍ ad xedmeḍ yetweḥbes s tamdeyt n usiɣzef.',
+'api-error-http' => 'Tuccḍa tagensit : ur yezmer ara ad yeqqen ar uqeddac.',
+'api-error-illegal-filename' => 'Isem n ufaylu agi ur yeɣbel ara.',
+'api-error-internal-error' => 'Tuccḍa tagensit : Yella kra ur yelḥa ara s luwqem deg usekker n taktert inek/inem ɣef wiki agi.',
+'api-error-invalid-file-key' => 'Tuccḍa tagensit : ulac afaylu deg uḥraz akudan.',
+'api-error-missingparam' => 'Tuccḍa tagensit : Xuṣṣen iɣewwaren deg tuttra inek/inem.',
+'api-error-missingresult' => 'Tuccḍa tagensit : Ur nezmer ara ad n-ini ma anɣel yetwaxeddem.',
+'api-error-mustbeloggedin' => 'Ilaq ad qqeneḍ iwakken ad zdemeḍ ifuyla.',
+'api-error-mustbeposted' => 'Tuccḍa tagensit : Tuttra agi teḥwaǧ tarrayt HTTP POST.',
+'api-error-noimageinfo' => 'Azdam yetwaxdam, maca aqeddac ur d-yefka ara tilɣa ɣef ufaylu.',
+'api-error-nomodule' => 'Tuccḍa tagensit : Ulac azegrir n ussenɣel.',
+'api-error-ok-but-empty' => 'Tuccḍa tagensit : Ulac tamrarut seg uqeddac.',
+'api-error-overwrite' => 'Asefxes n ufaylu yellan ur yeɣbel ara.',
+'api-error-stashfailed' => 'Tuccḍa tagensit : aqeddac ur yezmer ara ad yekles afaylu uɛḍil.',
+'api-error-publishfailed' => 'Tuccḍa tagensit : Aqeddac yexṣer imi yebɣa ad yessuffeɣ afaylu akudan.',
+'api-error-stasherror' => 'Tella tuccḍa imi d-zdemeḍ afaylu iwakken ad yetweffer.',
+'api-error-timeout' => 'Aqeddac ur d-yerra ara awal deg ukud yeḥeṛṛen.',
+'api-error-unclassified' => 'Yefkad anezri warisem.',
+'api-error-unknown-code' => 'Tuccḍa warisem : « $1 »',
+'api-error-unknown-error' => 'Tuccḍa tagensit : Yella kra yexṣren deg ussenɣel n ufaylu inek.',
+'api-error-unknown-warning' => 'Alɣu warisem : "$1".',
+'api-error-unknownerror' => 'Tuccḍa warisem : « $1 »',
+'api-error-uploaddisabled' => 'Azdam yensa ɣef wiki agi.',
+'api-error-verification-error' => 'Ahat afaylu agi yefsed, neɣ asiɣzef ines ur yeɣbel ara.',
# Durations
'duration-seconds' => '$1 {{PLURAL:$1|tasint|tisinin}}',
'duration-centuries' => '$1 {{PLURAL:$1|timiḍi|timiḍa}}',
'duration-millennia' => '$1 {{PLURAL:$1|agimseggwas|agimseggwasen}}',
+# Image rotation
+'rotate-comment' => 'Tugna tesseblelli s $1 {{PLURAL:$1|tafesna|tifesniwin}} deg tanila n tisegnatin n tamrint',
+
+# Limit report
+'limitreport-title' => 'Isefka n asekkey n umsisleḍ :',
+'limitreport-cputime' => 'Akud CPU n usseqdac',
+'limitreport-cputime-value' => '$1 {{PLURAL:$1|tasint|tisinin}}',
+'limitreport-walltime' => 'Akud ilaw n usseqdac',
+'limitreport-walltime-value' => '$1 {{PLURAL:$1|tasint|tisinin}}',
+'limitreport-ppvisitednodes' => 'Amḍan n tikerwas n azarsekkar i rezzan',
+'limitreport-ppgeneratednodes' => 'Amḍan n tikerwas n azarsekkar yettarewen',
+'limitreport-postexpandincludesize' => 'Tiddi n isekcam sakin aderrec',
+'limitreport-postexpandincludesize-value' => '$1/$2 {{PLURAL:$2|atamḍan|itamḍanen}}',
+'limitreport-templateargumentsize' => 'Tiddi n tiɣiret n talɣa',
+'limitreport-templateargumentsize-value' => '$1/$2 {{PLURAL:$2|atamḍan|itamḍanen}}',
+'limitreport-expansiondepth' => 'Talqayt n aderrec tameqrant ugaren tiyaḍ',
+'limitreport-expensivefunctioncount' => 'Amḍan n tiwura n tasleṭ ɣlayen',
+
+# Special:ExpandTemplates
+'expandtemplates' => 'Aderrec n talɣiwin',
+'expand_templates_intro' => "Asebtar agi uslig yeqbel aḍris wiki dɣa i tɛemmed ad xeddemeḍ aderrec n talɣiwin yellan deg-es.
+Yetexddem daɣen aderrec n tiseɣnin n parser am
+<code><nowiki>{{</nowiki>#language:...}}</code> dɣa imuttiyen am
+<code><nowiki>{{</nowiki>CURRENTDAY}}</code>.
+Yetexddem aderrec n akkw ayen yella yesegrer s <nowiki>'''{{ }}'''</nowiki>.",
+'expand_templates_title' => 'Azwel n usebtar, ma angal yetseqdac {{FULLPAGENAME}}, etc. :',
+'expand_templates_input' => 'Aḍris wiki source :',
+'expand_templates_output' => 'Aḍris wiki id yefka sakin aderrec',
+'expand_templates_xml_output' => 'Agemmuḍ agrawan n tasleṭ, deg umasal XML',
+'expand_templates_html_output' => 'Asuffeɣ s HTML aneṣli',
+'expand_templates_ok' => 'Seɣbel',
+'expand_templates_remove_comments' => 'Ekkes iwenniten',
+'expand_templates_remove_nowiki' => 'Yetkkes ticraḍ <nowiki> deg ugemmuḍ',
+'expand_templates_generate_xml' => 'Zeṛ talɣa n useklu n tasleṭ XML',
+'expand_templates_generate_rawhtml' => 'Beqqeḍ HTML aneṣli',
+'expand_templates_preview' => 'Azaraskan',
+
+# Unknown messages
+'uploadinvalidxml' => 'XML deg ufaylu yekteren ur d-yetwesleḍ ara.',
);
$messages = array(
# User preference toggles
'tog-underline' => 'ربطو خط کشیدگی',
-'tog-justify' => 'خطان برابری',
'tog-hideminor' => 'موجودہ وختہ بیرو تبدیلیان موژار معمولی ترمیماتن کھوشتاؤے',
'tog-hidepatrolled' => 'موجودہ وختہ بیرو تبدیلیان موژار گشتی ترمیماتن کھوشتاؤے',
'tog-newpageshidepatrolled' => 'جدید صفحاتی فہرستہ گشتی صفحاتن کھوشاوے',
'tog-numberheadings' => 'سرخیانتے تان لمبار دیت',
'tog-showtoolbar' => 'تدوینی اوزاردانن پشاؤے ( JavaScript ضرورت بوی)',
'tog-editondblclick' => 'کلکہ صفحاتن ترمیم (JavaScript ضرورت بوی)',
-'tog-editsection' => '[ترمیم] روابطان ذریعا سطری ترمیم کاریو فعال کورے',
'tog-editsectiononrightclick' => 'سطری عنواناتا فروسکی کلکو ذریعا سطری ترمیم کاریو فعال ساؤزاوے',
-'tog-showtoc' => 'فہرستِ مندرجات پشاؤے (3 زیات سرخی والا صفحاتن بچے)',
'tog-rememberpassword' => 'ھیہ کمپیوٹرا مہ داخل کاردو معلوماتن یاد لاکھے(کم از کم $1 {{PLURAL:$1|بس|بس}})',
'tog-watchcreations' => 'مہ مرتب کاردو صفحاتن مہ زیرِنظرفہرستہ شامل کورے',
'tog-watchdefault' => 'مہ ترمیم کاردو صفحاتن مہ زیرِنظرفہرستہ شامل کورے',
'hidden-category-category' => 'کھوشت زمرہ جات',
'category-subcat-count' => '{{PLURAL:$2|اِس زمرہ میں صرف درج ذیل ذیلی زمرہ ہے.|اِس زمرہ میں درج ذیل {{PLURAL:$1|ذیلی زمرہ|$1 ذیلی زمرہ جات}}, کل $2 میں سے.}}',
'category-subcat-count-limited' => 'ھیہ زمرا درج ذیل {{PLURAL:$1|ذیلی زمرہ ہے|$1 ذیلی زمرہ جات شینی}}.',
-'category-article-count' => '{{Plural:$2|مضمون شینی|{{Plural:$1|صفحا|صفحا}} $2 ھیہ زمرا مضمون شینی}}',
+'category-article-count' => '{{PLURAL:$2|مضمون شینی|{{PLURAL:$1|صفحا|صفحا}} $2 ھیہ زمرا مضمون شینی}}',
'category-article-count-limited' => 'The following {{PLURAL:$1|صفحا|$1 صفحات}} in the current category.',
-'category-file-count' => '{{Plural:$2|مضمون شینی|{{Plural:$1|صفحا|صفحا}} $2 ھیہ زمرا مضمون شینی}}',
+'category-file-count' => '{{PLURAL:$2|مضمون شینی|{{PLURAL:$1|صفحا|صفحا}} $2 ھیہ زمرا مضمون شینی}}',
'category-file-count-limited' => 'The following {{PLURAL:$1|file is|$1 files are}} in the current category.',
'listingcontinuesabbrev' => 'جاری',
'index-category' => 'نو انڈیکس صفحات',
'lineno' => 'لکیر $1:',
'compareselectedversions' => 'منتخب متـنو موازنہ',
'editundo' => 'استرجع',
-'diff-multi' => '({{PLURAL:$1|One intermediate revision|$1 intermediate revisions}} by {{PLURAL:$2|one user|$2 users}} not shown)',
# Search results
'searchresults' => 'تلاشو نتیجہ',
'isredirect' => 'خور ژاغا آلدو صفحہ',
'istemplate' => 'ٹرانسکلوژن',
'isimage' => 'ھوٹوان لنک',
-'whatlinkshere-prev' => '{{Plural:$1|سابقہ|سابقہ $1}}',
+'whatlinkshere-prev' => '{{PLURAL:$1|سابقہ|سابقہ $1}}',
'whatlinkshere-next' => '{{PLURAL:$1|پروشٹیو|پروشٹیو$1}}',
'whatlinkshere-links' => '← لنکس',
'whatlinkshere-hideredirs' => '$1 رجوع مکرر',
$messages = array(
# User preference toggles
-'tog-underline' => 'Bınê girey de xete bıonce:',
-'tog-justify' => 'Paragrafu ayar ke',
+'tog-underline' => 'Bınê gırey de xete bonce:',
'tog-hideminor' => 'Vurnayisunê senıku pela vurnayisunê peyênu de wedare',
'tog-hidepatrolled' => 'Vurnayisunê qontrolkerdu pela vurnayisê peyêni de wedare',
'tog-newpageshidepatrolled' => 'Pelunê qontrolkerdu lista pelunê newu de wedare',
-'tog-extendwatchlist' => 'Lista şêrkerdene hira bıke ke vurnayişi pêro bıasê, teyna tewr peyêni nê',
-'tog-usenewrc' => 'Pele be vurnayisunê grube de vurnayisê peyêni u lista şêrkerdişi (JavaScript lazımo)',
+'tog-extendwatchlist' => 'Lista şêrkerdene hira bıke ke vurnayişi pêro basê, teyna tewr peyêni nê',
+'tog-usenewrc' => 'Vurnayisê ke pela vurnayisunê peyênun u lista şêrkerdişi derê inu grube ke.',
'tog-numberheadings' => 'Sernustu be ho numra cı sane',
'tog-showtoolbar' => 'Gozagunê hacetunê vurnayişi bıasne (JavaScript lazımo)',
'tog-editondblclick' => 'Pê dı rey teqnayene pele sero bıguriye (JavaScript lazımo)',
-'tog-editsection' => 'Vurnayena qısımi ebe gireyunê [bıvurne] ra feal ke',
'tog-editsectiononrightclick' => 'Qısımu be teqnayena serrêze ra ebe gozaga raste bıvurne (JavaScript lazımo)',
-'tog-showtoc' => 'Tablowê tedeestewu bıasne (de pelunê be hirê sernustu ra jêdêri de)',
'tog-rememberpassword' => 'Parola mı nê cıcêrawoği de bia ho viri (serba tewr jêde $1 {{PLURAL:$1|roze|rozu}}).',
'tog-watchcreations' => 'Pelê ke mı afernê u dosyê ke mı bar kerdê lista mına şêrkerdişi ke',
'tog-watchdefault' => 'Pel u dosyê ke mı vurnê lista mına şêrkerdişi ke',
'tog-shownumberswatching' => 'Amorê karberunê şêrkerdoğu bıasne',
'tog-oldsig' => 'İmza mewcude:',
'tog-fancysig' => 'İmza rê mamelê wikimeqaley bıke (bê girewo otomatik)',
-'tog-uselivepreview' => 'Verqayto cande bıgurene (JavaScript) (hona cerrebnayene dero)',
+'tog-uselivepreview' => 'Verqayto cınde bıgurene (cerrebane)',
'tog-forceeditsummary' => 'Mı ke xulasa kerde cı vira, hay be mı ser de',
'tog-watchlisthideown' => 'Vurnayisunê mı lista mına şêrkerdişi de wedare',
'tog-watchlisthidebots' => 'Vurnayisunê boti lista mına şêrkerdişi de wedare',
'pool-errorunknown' => 'Xeta nêzanıtiye',
# 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).
-'aboutsite' => 'Heqdé {{SITENAME}}',
+'aboutsite' => 'Heqa {{SITENAME}} de',
'aboutpage' => 'Project:Heqa',
'copyright' => 'Zerrek bınê $1 dero.',
'copyrightpage' => '{{ns:project}}:Telifheqiye',
'lineno' => 'Rêza $1i:',
'compareselectedversions' => 'Varyantunê weçinıtun têver sane',
'editundo' => 'peyser bia',
-'diff-multi' => '({{PLURAL:$1|Jü çımraviarnaena wertey|$1 çımraviarnaena wertey}} terefê {{PLURAL:$2|zu karberi|$2 karberu}} ra nêasnino)',
# Search results
'searchresults' => 'Neticê cıfeteliyaene',
'rows' => 'Rêji:',
'columns' => 'Ustıni:',
'searchresultshead' => 'Cıcêre',
-'resultsperpage' => 'Pelgê be vênıtun:',
'stub-threshold' => 'Tertibê şêmıga <a href="#" class="stub">stub link</a> (\'\'bytes\'\'):',
'recentchangesdays' => 'Rozê ke vurnaisunê peyênun de asenê:',
'recentchangesdays-max' => 'Maksimum $1 {{PLURAL:$1|roze|roji}}',
'contributions-title' => '$1 de iştırakê karberi',
'mycontris' => 'İştıraqi',
'contribsub2' => 'Serba $1 ($2)',
-'uctop' => '(ser)',
+'uctop' => '(rocane)',
'month' => 'Asme ra (u ravêr):',
'year' => 'Serre ra (u ravêr):',
'tooltip-pt-watchlist' => 'Lista pelunê ke to guretê şêrkerdene',
'tooltip-pt-mycontris' => 'Lista iştıraqunê sıma',
'tooltip-pt-login' => 'Serba cıkotene sıma rê sılaiya; hama, na zeruriye niya',
-'tooltip-pt-anonlogin' => 'Serba cıkotene sıma rê sılaiya, hama na zeruriye niya.',
'tooltip-pt-logout' => 'Veciye',
'tooltip-ca-talk' => 'Pela tedeesteu sero hurênais',
'tooltip-ca-edit' => 'Tı şikina na pele bıvurnê.
$messages = array(
# User preference toggles
'tog-underline' => 'سىلتەمەنىڭ استىن سىز:',
-'tog-justify' => 'ەجەلەردى ەنى بويىنشا تۋرالاۋ',
'tog-hideminor' => 'جۋىقتاعى وزگەرىستەردەن شاعىن وڭدەمەلەردى جاسىر',
'tog-extendwatchlist' => 'باقىلاۋ ٴتىزىمدى ۇلعايت (بارلىق جارامدى وزگەرىستەردى كورسەت)',
'tog-usenewrc' => 'كەڭەيتىلگەن جۋىقتاعى وزگەرىستەر (JavaScript)',
'tog-numberheadings' => 'باس جولداردى وزدىكتىك نومىرلە',
'tog-showtoolbar' => 'وڭدەۋ قۋرالدار جولاعىن كورسەت (JavaScript)',
'tog-editondblclick' => 'قوس نۇقىمداپ وڭدەۋ (JavaScript)',
-'tog-editsection' => 'بولىمدەردى [وڭدەۋ] سىلتەمەسىمەن وڭدەۋىن قوس',
'tog-editsectiononrightclick' => 'ٴبولىم تاقىرىبىن وڭ نۇقۋمەن وڭدەۋىن قوس (JavaScript)',
-'tog-showtoc' => 'مازمۇنىن كورسەت (3-تەن ارتا ٴبولىمى بارىلارعا)',
'tog-rememberpassword' => 'كىرگەنىمدى وسى كومپيۋتەردە ۇمىتپا (for a maximum of $1 {{PLURAL:$1|day|days}})',
'tog-watchcreations' => 'مەن باستاعان بەتتەردى باقىلاۋ تىزىمىمە ۇستە',
'tog-watchdefault' => 'مەن وڭدەگەن بەتتەردى باقىلاۋ تىزىمىمە ۇستە',
'lineno' => 'جول ٴنومىرى $1:',
'compareselectedversions' => 'بولەكتەنگەن نۇسقالاردى سالىستىرۋ',
'editundo' => 'جوققا شىعارۋ',
-'diff-multi' => '(اراداعى $1 تۇزەتۋ كورسەتىلمەگەن.)',
# Search results
'searchresults' => 'ىزدەۋ ناتىيجەلەرى',
'rows' => 'جولدار:',
'columns' => 'باعاندار:',
'searchresultshead' => 'ىزدەۋ',
-'resultsperpage' => 'بەت سايىن ناتىيجە سانى:',
'stub-threshold' => '<a href="#" class="stub">بىتەمە سىلتەمەسىن</a> پىشىمدەۋ تابالدىرىعى (بايت):',
'recentchangesdays' => 'جۇىقتاعى وزگەرىستەرىندە كورسەتپەك كۇن سانى:',
'recentchangescount' => 'جۋىقتاعى وزگەرىستەردىندە, تارىيح جانە جۋرنال بەتتەرىندە كورسەتپەك وڭدەمە سانى:',
'watchmethod-list' => 'جۋىقتاعى وزگەرىستەر ٴۇشىن باقىلاۋلى بەتتەردى تەكسەرۋ',
'watchlistcontains' => 'باقىلاۋ تىزىمىڭىزدە $1 بەت بار.',
'iteminvalidname' => "'$1' دانادا اقاۋ بار — جارامسىز اتاۋ…",
-'wlnote' => "تومەندە سوڭعى {{PLURAL:$2|ساعاتتا|'''$2''' ساعاتتا}} بولعان, {{PLURAL:$1|جۋىقتاعى وزگەرىس|جۋىقتاعى '''$1''' وزگەرىس}} كورسەتىلەدى.",
'wlshowlast' => 'سوڭعى $1 ساعاتتاعى, $2 كۇندەگى, $3 بولعان وزگەرىستى كورسەتۋ',
# Displayed when you click the "watch" button and it is in the process of watching
'tooltip-pt-watchlist' => 'وزگەرىستەرىن باقىلاپ تۇرعان بەتتەر ٴتىزىمىم.',
'tooltip-pt-mycontris' => 'ۇلەستەرىمدىڭ ٴتىزىمى',
'tooltip-pt-login' => 'كىرۋىڭىزدى ۇسىنامىز, ول مىندەتتى ەمەس.',
-'tooltip-pt-anonlogin' => 'كىرۋىڭىزدى ۇسىنامىز, بىراق, ول مىندەتتى ەمەس.',
'tooltip-pt-logout' => 'شىعۋ',
'tooltip-ca-talk' => 'ماعلۇمات بەتتى تالقىلاۋ',
'tooltip-ca-edit' => 'بۇل بەتتى وڭدەي الاسىز. ساقتاۋدىڭ الدىندا «قاراپ شىعۋ» باتىرماسىن نۇقىڭىز.',
*
* @author AlefZet
* @author Alibek Kisybay
+ * @author Amangeldy
* @author Arystanbek
* @author Bakytgul Salykhova
* @author Daniyar
$messages = array(
# User preference toggles
'tog-underline' => 'Сілтеменің астын сызу:',
-'tog-justify' => 'Ежелерді ені бойынша туралау',
'tog-hideminor' => 'Жуықтағы өзгерістерден шағын өңдемелерді жасыру',
'tog-hidepatrolled' => 'Тексерілген өңдеулерді соңғы өзгерістер тізімінде көрсетпеу',
'tog-newpageshidepatrolled' => 'Тексерілген беттерді жаңа беттер тізімінде көрсетпеу',
'tog-extendwatchlist' => 'Бақылау тізімді ұлғайту (барлық жарамды өзгерістерді көрсету)',
'tog-usenewrc' => 'Кеңейтілген жуықтағы өзгерістер (JavaScript)',
'tog-numberheadings' => 'Мазмұн тақырыптарын автоматты нөмірлеу',
-'tog-showtoolbar' => 'Өңдеу құралдары орналасқан аспаптар жақтауын көрсету (JavaScript-ті қажет етеді)',
-'tog-editondblclick' => 'Қос шерту арқылы бетті өңдеу (JavaScript)',
-'tog-editsection' => 'Бөлімдерді [өңдеу] сілтемесімен өңдеуін қос',
-'tog-editsectiononrightclick' => 'Бөлім тақырыбын оң нұқумен өңдеуін қос (JavaScript)',
-'tog-showtoc' => 'Мазмұнын көрсету (3-тен астам бөлімі болған жағдайда ғана)',
+'tog-showtoolbar' => 'Өңдеу құралдарын көрсету',
+'tog-editondblclick' => 'Қос шерту арқылы бетті өңдеу',
+'tog-editsectiononrightclick' => 'Бөлім тақырыбын оң нұқумен бөлім өңдеуін қосу',
'tog-rememberpassword' => 'Тіркелгімді осы браузерде ұмытпа (ең көбі $1 {{PLURAL:$1|күн|күн}})',
'tog-watchcreations' => 'Мен бастаған беттерді бақылау тізіміне қос',
'tog-watchdefault' => 'Мен өңдеген беттерді бақылау тізіміне қос',
'tog-shownumberswatching' => 'Бақылап тұрған қатысушылардың санын көрсет',
'tog-oldsig' => 'Ағымдағы қолтаңбаңыз:',
'tog-fancysig' => 'Қолтаңбаны уикимәтін ретінде қарастыру (автоматты сілтеме қойылмайды)',
-'tog-uselivepreview' => 'Тура қарап шығуды қолдану (JavaScript) (Сынақтама)',
+'tog-uselivepreview' => 'Тура қарап шығуды қолдану (сынақтық)',
'tog-forceeditsummary' => 'Өңдеменің қысқаша мазмұндамасы бос қалғанда маған ескерт',
'tog-watchlisthideown' => 'Өңдемелерімді бақылау тізімінен жасыр',
'tog-watchlisthidebots' => 'Бот өңдемелерін бақылау тізімінен жасыр',
'categorypage' => 'Санат бетін қарау',
'viewtalkpage' => 'Талқылау бетін қарау',
'otherlanguages' => 'Басқа тілдерде',
-'redirectedfrom' => '($1 беÑ\82Ñ\96нен айдаÑ\82Ñ\8bлған)',
+'redirectedfrom' => '($1 беÑ\82Ñ\96нен баÒ\93Ñ\8bÑ\82Ñ\82алған)',
'redirectpagesub' => 'Айдату беті',
'lastmodifiedat' => 'Бұл беттің соңғы өзгертілген кезі: $2, $1.',
'viewcount' => 'Бұл бет {{PLURAL:$1|бір рет|$1 уақыт}} қатыналған.',
'error' => 'Қате',
'databaseerror' => 'Дерекқор қатесі',
'databaseerror-query' => 'Сұрау:$1',
+'databaseerror-function' => 'Әрекет: $1',
'databaseerror-error' => 'Қате:$1',
'laggedslavemode' => "'''Ескерту:''' Бетте жуықтағы жаңартулар болмауы мүмкін.",
'readonly' => 'Дерекқоры құлыпталған',
'cannotdelete-title' => '«$1» бетін жою мүмкін емес',
'delete-hook-aborted' => 'Түзету ілмек арқылы тоқтатылды.
Қосымша түсіндірмелер көрсетілмеген.',
+'no-null-revision' => '"$1" беті үшін жаңа бос нұсқасын бастау мүмкін болмады.',
'badtitle' => 'Жарамсыз тақырып аты',
'badtitletext' => 'Сұралған бет тақырыбының аты жарамсыз, бос, тіларалық сілтемесі не уики-аралық тақырып аты бұрыс енгізілген.
Мында тақырып атында қолдалмайтын бірқатар таңбалар болуы мүмкін.',
'userlogin-resetpassword-link' => 'Құпия сөздіңізді ұмыттыңыз ба?',
'helplogin-url' => 'Help:Тіркелу',
'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Тіркелуге көмек]]',
+'userlogin-loggedin' => '{{GENDER:$1|$1}} ретінде әлдеқашан кіргенсіз.
+Төмендегі пішінді басқа қатысушы кіруі ретінде қолданыңыз.',
'userlogin-createanother' => 'Басқа тіркелгі жасау',
'createacct-join' => 'Төменге өзіңіз туралы ақпарат енгізіңіз.',
'createacct-another-join' => 'Төменге жаңа тіркелгі туралы ақпарат енгізіңіз.',
'showhideselectedversions' => 'Бөлектенген нұсқаларды көрсет/жасыр',
'editundo' => 'жоққа шығару',
'diff-empty' => '(айырмашылығы жоқ)',
-'diff-multi' => '($2 қатысушының арадағы $1 түзетуі көрсетілмеген)',
# Search results
'searchresults' => 'Іздеу нәтижелері',
'rows' => 'Жолдар:',
'columns' => 'Бағандар:',
'searchresultshead' => 'Іздеу',
-'resultsperpage' => 'Бет сайын нәтиже саны:',
'stub-threshold' => '<a href="#" class="stub">Бастама сілтемесін</a> пішімдеу табалдырығы (байт):',
'stub-threshold-disabled' => 'Ажыратылған',
'recentchangesdays' => 'Жуықтағы өзгерістерде көрсетілетін күн саны:',
'recentchanges-label-plusminus' => 'Байт бойынша беттің өзгеріс мөлшері',
'recentchanges-legend-heading' => "'''Шартты белгілер:'''",
'recentchanges-legend-newpage' => 'қ. [[Special:NewPages|бөлек бетте]]',
+'recentchanges-legend-plusminus' => "(''±123'')",
'rcnotefrom' => "Төменде '''$2''' кезінен бергі ('''$1''' жеткенше дейін) өзгерістер көрсетіледі.",
'rclistfrom' => '$1 кезінен бергі жаңа өзгерістерді көрсет.',
'rcshowhideminor' => 'Шағын өңдемелерді $1',
'rcshowhidebots' => 'Боттарды $1',
-'rcshowhideliu' => 'Ð\9aÑ\96Ñ\80гендерді $1',
+'rcshowhideliu' => 'ТÑ\96Ñ\80келгендерді $1',
'rcshowhideanons' => 'Кірмегендерді $1',
'rcshowhidepatr' => 'Зерттелген өңдемелерді $1',
'rcshowhidemine' => 'Өңдемелерімді $1',
'ninterwikis' => '$1 {{PLURAL:$1|интеруики|интеруикилер}}',
'nlinks' => '$1 {{PLURAL:$1|сілтеме|сілтемелер}}',
'nmembers' => '$1 {{PLURAL:$1|мүше|мүше}}',
+'nmemberschanged' => '$1 → $2 {{PLURAL:$2|мүше|мүше}}',
'nrevisions' => '$1 {{PLURAL:$1|түзету|түзету}}',
'nviews' => '$1 {{PLURAL:$1|қаралу|қаралу}}',
'nimagelinks' => '$1 {{PLURAL:$1|бетінде|беттерінде}} қолданылады',
'watchmethod-list' => 'жуықтағы өзгерістер үшін бақылаулы беттерді тексеру',
'watchlistcontains' => 'Бақылау тізіміңізде $1 бет бар.',
'iteminvalidname' => "'$1' данада ақау бар — жарамсыз атау…",
-'wlnote' => "Төменде $3, $4 кезіне дейінгі соңғы {{PLURAL:$2|сағатта|'''$2''' сағатта}} болған, {{PLURAL:$1|жуықтағы өзгеріс|жуықтағы '''$1''' өзгеріс}} көрсетіледі.",
'wlshowlast' => 'Соңғы $1 сағаттағы, $2 күндегі, $3 болған өзгерісті көрсету',
'watchlist-options' => 'Бақылау тізімінің баптаулары',
'delete-warning-toobig' => 'Бұл бетте үлкен өңдеу тарихы бар, $1 {{PLURAL:$1|түзетуден|түзетуден}} астам.
Бұның жоюы {{SITENAME}} торабындағы дерекқор әрекеттерді үзіп тастауын мүмкін;
бұны абайлап өткізіңіз.',
+'deleting-backlinks-warning' => "'''Ескерту:''' Сіз жоймақшы болған мақалаға басқа беттерден сілтенген.",
# Rollback
'rollback' => 'Өңдемелерді шегіндіру',
Ал мақаланың атауын өзгертем деп мағлұматын қолмен көшіруге болмайды, себебі беттің түзету тарихын өшіреді.",
'movearticle' => 'Ағымдағы бет атауы:',
+'moveuserpage-warning' => '<strong>Ескерту:</strong> Сіз қатысушы бетін жылжытпақшысыз. Назар аударыңыз, қатысушы беті ғана жылжытылуы мүмкін және қатысушы аты <em>өзгертілмейді</em>.',
'movenologintext' => 'Бетті жылжыту үшін тіркелген болуыңыз және [[{{#special:UserLogin}}|кіруіңіз]] жөн.',
'movenotallowed' => '{{SITENAME}} жобасында беттерді жылжытуға рұқсатыңыз жоқ.',
'newtitle' => 'Жаңа бет атауы:',
'imagetypemismatch' => 'Файлдың жаңа кеңейтімі бұның түріне сәйкес емес',
'imageinvalidfilename' => 'Файл атауы жарамсыз',
'move-leave-redirect' => 'Ескі бетте айдату сілтемесін қалдыру',
+'protectedpagemovewarning' => '<strong>Ескерту:</strong> Бұл бет қорғалғандықтан бұны тек әкімшілер ғана атауын өзгерте алады.
+Төменде ең соңғы журнал жазбасы көрсетілген:',
'semiprotectedpagemovewarning' => "'''Ескерту:''' Бұл бет жылжытудан қорғалған оны тек тіркелген қатысушылар ғана жылжытыта алады.
Төменде ең соңғы журнал енгізілімі көрсетілген:",
'allmessages-filter-unmodified' => 'Өзгертілмегендер',
'allmessages-filter-all' => 'Барлығы',
'allmessages-filter-modified' => 'Өзгертілгендер',
+'allmessages-prefix' => 'Префикс бойынша сүзгі',
'allmessages-language' => 'Тілі:',
'allmessages-filter-submit' => 'Өту',
'tooltip-pt-watchlist' => 'Өзгерістерін бақылап тұрған беттер тізімім.',
'tooltip-pt-mycontris' => 'Өңдеулеріңіздің тізімі',
'tooltip-pt-login' => 'Кіруіңізді ұсынамыз, ол міндетті емес.',
-'tooltip-pt-anonlogin' => 'Кіруіңізді ұсынамыз, бірақ, ол міндетті емес.',
'tooltip-pt-logout' => 'Шығу',
'tooltip-ca-talk' => 'Мағлұмат бетті талқылау',
'tooltip-ca-edit' => 'Бұл бетті өңдей аласыз. Сақтаудың алдында «Қарап шығу» батырмасын нұқыңыз.',
'svg-long-desc' => 'SVG файлы, кесімді $1 × $2 нүкте, файл мөлшері: $3',
'svg-long-desc-animated' => 'SVG қозғалысты файлы, кесімді $1 × $2 нүкте, файл өлшемі: $3',
'svg-long-error' => 'жарамсыз SVG файлы: $1',
-'show-big-image' => 'Ð\96оÒ\93аÑ\80Ñ\8b ажÑ\8bÑ\80аÑ\82Ñ\8bлÑ\8bмдÑ\8b',
+'show-big-image' => 'ТүпнұÑ\81Ò\9bа Ñ\84айл',
'show-big-image-preview' => 'Бұл қарап шығудағы өлшемі: $1.',
'show-big-image-other' => 'Басқа {{PLURAL:$2|ажыратылымдық|ажыратылымдық}}: $1.',
'show-big-image-size' => '$1 × $2 нүкте',
'exif-ycbcrpositioning-1' => 'Орталықты',
+'exif-dc-contributor' => 'Үлескерлер',
'exif-dc-date' => 'Күн(дер)',
'exif-dc-publisher' => 'Жариялаушы',
'exif-dc-relation' => 'Қатысты медиа',
# Separators for various lists, etc.
'semicolon-separator' => ';',
'colon-separator' => ': ',
+'quotation-marks' => '"$1"',
# Multipage image navigation
'imgmultipageprev' => '← алдыңғы бетке',
'imgmultigoto' => '$1 бетіне өту',
# Language selector for translatable SVGs
+'img-lang-default' => '(әдепкі тіл)',
'img-lang-go' => 'Өту',
# Table pager
'version-hook-subscribedby' => 'Тұзақ тартқыштары',
'version-version' => '(Нұсқасы: $1)',
'version-license' => 'Лицензиясы',
+'version-ext-license' => 'Лицензия',
+'version-ext-colheader-credits' => 'Автор(лары)',
'version-poweredby-others' => 'басқалар',
'version-software' => 'Орнатылған бағдарламалық жасақтама',
'version-software-product' => 'Өнім',
'revdelete-restricted' => 'әкімшілерге тиымдар қолдады',
'revdelete-unrestricted' => 'әкімшілерден тиымдарды аластады',
'logentry-move-move' => '$1 $3 бетін $4 бетіне {{GENDER:$2|жылжытты}}',
-'logentry-move-move-noredirect' => '$1 $3 бетін $4 бетіне {{GENDER:$2|жылжытты}} (айдатқыш қалдырылмады)',
+'logentry-move-move-noredirect' => '$1 $3 бетін $4 бетіне {{GENDER:$2|жылжытты}} (айдатқыш қалдырмады)',
'logentry-move-move_redir' => '$1 $3 бетін $4 деген айдатқыш үстіне {{GENDER:$2|жылжытты}}',
'logentry-move-move_redir-noredirect' => '$1 $3 бетін $4 деген айдатқыш үстіне {{GENDER:$2|жылжытты}} (айдатқыш қалдырылмады)',
'logentry-newusers-newusers' => '$1 жаңадан қатысушы тіркелгісін {{GENDER:$2|жасады}}',
'duration-millennia' => '$1 {{PLURAL:$1|мың жылдық|мың жылдық}}',
# Limit report
+'limitreport-cputime-value' => '$1 {{PLURAL:$1|секунт|секунт}}',
+'limitreport-walltime' => 'Нақты уақытта қолданылуы',
+'limitreport-walltime-value' => '$1 {{PLURAL:$1|секунт|секунт}}',
'limitreport-postexpandincludesize-value' => '$1/$2 {{PLURAL:$1|байт|байт}}',
'limitreport-templateargumentsize-value' => '$1/$2 {{PLURAL:$2|байт|байт}}',
$messages = array(
# User preference toggles
'tog-underline' => 'Siltemeniñ astın sız:',
-'tog-justify' => 'Ejelerdi eni boýınşa twralaw',
'tog-hideminor' => 'Jwıqtağı özgeristerden şağın öñdemelerdi jasır',
'tog-extendwatchlist' => 'Baqılaw tizimdi ulğaýt (barlıq jaramdı özgeristerdi körset)',
'tog-usenewrc' => 'Keñeýtilgen jwıqtağı özgerister (JavaScript)',
'tog-numberheadings' => 'Bas joldardı özdiktik nomirle',
'tog-showtoolbar' => 'Öñdew qwraldar jolağın körset (JavaScript)',
'tog-editondblclick' => 'Qos nuqımdap öñdew (JavaScript)',
-'tog-editsection' => 'Bölimderdi [öñdew] siltemesimen öñdewin qos',
'tog-editsectiononrightclick' => 'Bölim taqırıbın oñ nuqwmen öñdewin qos (JavaScript)',
-'tog-showtoc' => 'Mazmunın körset (3-ten arta bölimi barılarğa)',
'tog-rememberpassword' => 'Kirgenimdi osı komp′ywterde umıtpa (for a maximum of $1 {{PLURAL:$1|day|days}})',
'tog-watchcreations' => 'Men bastağan betterdi baqılaw tizimime üste',
'tog-watchdefault' => 'Men öñdegen betterdi baqılaw tizimime üste',
'lineno' => 'Jol nömiri $1:',
'compareselectedversions' => 'Bölektengen nusqalardı salıstırw',
'editundo' => 'joqqa şığarw',
-'diff-multi' => '(Aradağı $1 tüzetw körsetilmegen.)',
# Search results
'searchresults' => 'İzdew nätïjeleri',
'rows' => 'Joldar:',
'columns' => 'Bağandar:',
'searchresultshead' => 'İzdew',
-'resultsperpage' => 'Bet saýın nätïje sanı:',
'stub-threshold' => '<a href="#" class="stub">Biteme siltemesin</a> pişimdew tabaldırığı (baýt):',
'recentchangesdays' => 'Jüıqtağı özgeristerinde körsetpek kün sanı:',
'recentchangescount' => 'Jwıqtağı özgeristerdinde, tarïx jäne jwrnal betterinde körsetpek öñdeme sanı:',
'watchmethod-list' => 'jwıqtağı özgerister üşin baqılawlı betterdi tekserw',
'watchlistcontains' => 'Baqılaw tizimiñizde $1 bet bar.',
'iteminvalidname' => "'$1' danada aqaw bar — jaramsız ataw…",
-'wlnote' => "Tömende soñğı {{PLURAL:$2|sağatta|'''$2''' sağatta}} bolğan, {{PLURAL:$1|jwıqtağı özgeris|jwıqtağı '''$1''' özgeris}} körsetiledi.",
'wlshowlast' => 'Soñğı $1 sağattağı, $2 kündegi, $3 bolğan özgeristi körsetw',
# Displayed when you click the "watch" button and it is in the process of watching
'tooltip-pt-watchlist' => 'Özgeristerin baqılap turğan better tizimim.',
'tooltip-pt-mycontris' => 'Ülesterimdiñ tizimi',
'tooltip-pt-login' => 'Kirwiñizdi usınamız, ol mindetti emes.',
-'tooltip-pt-anonlogin' => 'Kirwiñizdi usınamız, biraq, ol mindetti emes.',
'tooltip-pt-logout' => 'Şığw',
'tooltip-ca-talk' => 'Mağlumat betti talqılaw',
'tooltip-ca-edit' => 'Bul betti öñdeý alasız. Saqtawdıñ aldında «Qarap şığw» batırmasın nuqıñız.',
$messages = array(
# User preference toggles
'tog-underline' => 'គូសបន្ទាត់ក្រោមតំណភ្ជាប់៖',
-'tog-justify' => 'តម្រឹមកថាខណ្ឌ',
'tog-hideminor' => 'លាក់កំណែប្រែតិចតួចពីបញ្ជីបន្លាស់ប្ដូរថ្មីៗ',
'tog-hidepatrolled' => 'លាក់កំណែប្រែដែលបានល្បាតពីបញ្ជីបន្លាស់ប្ដូរថ្មីៗ',
'tog-newpageshidepatrolled' => 'លាក់ទំព័រដែលបានល្បាតពីបញ្ជីទំព័រថ្មី',
'tog-numberheadings' => 'ដាក់លេខចំណងជើងរងដោយស្វ័យប្រវត្តិ',
'tog-showtoolbar' => 'បង្ហាញរបារឧបករណ៍កែប្រែ',
'tog-editondblclick' => 'កែប្រែទំព័រដោយចុចពីរដងជាប់គ្នា',
-'tog-editsection' => 'អនុញ្ញាតអោយកែប្រែផ្នែកណាមួយតាមរយៈតំណភ្ជាប់ [កែប្រែ]',
'tog-editsectiononrightclick' => 'អនុញ្ញាតអោយកែប្រែផ្នែកណាមួយ ដោយចុចកណ្តុរស្ដាំលើចំណងជើងរបស់វា',
-'tog-showtoc' => 'បង្ហាញតារាងមាតិកា (សម្រាប់ទំព័រដែលមានចំណងជើងរងលើសពី៣)',
'tog-rememberpassword' => 'ចងចាំការកត់ឈ្មោះចូលរបស់ខ្ញុំលើកុំព្យូទ័រនេះ (សំរាប់រយៈពេលយ៉ាងយូរ$1 {{PLURAL:$1|ថ្ងៃ|ថ្ងៃ}})',
'tog-watchcreations' => 'បន្ថែមទំព័រទាំងឡាយដែលខ្ញុំបង្កើតទៅបញ្ជីតាមដានរបស់ខ្ញុំ',
'tog-watchdefault' => 'បន្ថែមទំព័រទាំងឡាយដែលខ្ញុំកែប្រែទៅបញ្ជីតាមដានរបស់ខ្ញុំ',
'monday' => 'ថ្ងៃច័ន្ទ',
'tuesday' => 'ថ្ងៃអង្គារ',
'wednesday' => 'ថ្ងៃពុធ',
-'thursday' => 'á\9e\90á\9f\83á\9f\92á\9e\84ព្រហស្បតិ៍',
+'thursday' => 'á\9e\90á\9f\92á\9e\84á\9f\83ព្រហស្បតិ៍',
'friday' => 'ថ្ងៃសុក្រ',
'saturday' => 'ថ្ងៃសៅរ៍',
'sun' => 'អា',
'cancel' => 'បោះបង់',
'moredotdotdot' => 'បន្ថែមទៀត...',
'morenotlisted' => 'បញ្ជីនេះមិនទាន់ពេញលេញទេ។',
-'mypage' => 'ទំព័រខ្ញុំ',
+'mypage' => 'ទំព័រ',
'mytalk' => 'ការពិភាក្សា',
'anontalk' => 'ទំព័រពិភាក្សាសំរាប់ IP នេះ',
'navigation' => 'ការណែនាំ',
'updatedmarker' => 'ត្រូវបានបន្ទាន់សម័យបន្ទាប់ពីពេលខ្ញុំចូលមើលចុងក្រោយ',
'printableversion' => 'ទម្រង់សម្រាប់បោះពុម្ភ',
'permalink' => 'តំណភ្ជាប់អចិន្ត្រៃយ៍',
-'print' => 'á\9e\94á\9f\84á\9f\87á\9e\96á\9e»á\9e\98á\9f\92á\9e\97',
+'print' => 'á\9e\94á\9f\84á\9f\87á\9e\96á\9e»á\9e\98á\9f\92á\9e\96',
'view' => 'មើល',
'edit' => 'កែប្រែ',
'create' => 'បង្កើត',
'undelete_short' => 'ឈប់លុប{{PLURAL:$1|កំណែប្រែមួយ|កំណែប្រែចំនួន$1}}វិញ',
'viewdeleted_short' => 'មើល{{PLURAL:$1|កំណែប្រែមួយដែលត្រូវបានលុបចោល|កំណែប្រែចំនួន $1 ដែលត្រូវបានលុបចោល}}',
'protect' => 'ការពារ',
-'protect_change' => 'ផ្លាស់ប្តូរការការពារ',
+'protect_change' => 'ផ្លាស់ប្តូរ',
'protectthispage' => 'ការពារទំព័រនេះ',
'unprotect' => 'ប្ដូរការការពារ',
'unprotectthispage' => 'ផ្លាស់ប្ដូរការការពារទំព័រនេះ',
'policy-url' => 'Project:គោលការណ៍',
'portal' => 'ផតថលសហគមន៍',
'portal-url' => 'Project:ផតថលសហគមន៍',
-'privacy' => 'គោលការណ៍ភាពឯកជន',
+'privacy' => 'គោលការណ៍នៃភាពឯកជន',
'privacypage' => 'Project:គោលការណ៍ភាពឯកជន',
'badaccess' => 'បញ្ហាច្បាប់អនុញ្ញាត',
'sort-ascending' => 'តម្រៀបតាមលំដាប់ឡើង',
# Short words for each namespace, by default used in the namespace tab in monobook
-'nstab-main' => 'á\9e¢á\9e\8fá\9f\92á\9e\90á\9e\94á\9e\91',
+'nstab-main' => 'á\9e\91á\9f\86á\9e\96á\9f\90á\9e\9a',
'nstab-user' => 'ទំព័រអ្នកប្រើប្រាស់',
'nstab-media' => 'ទំព័រមេឌា',
'nstab-special' => 'ទំព័រពិសេស',
'passwordtooshort' => 'ពាក្យសម្ងាត់ត្រូវមានយ៉ាងតិចណាស់ {{PLURAL:$1|១ តួអក្សរ|$1តួអក្សរ}}។',
'password-name-match' => 'ពាក្យសម្ងាត់ត្រូវតែខុសគ្នាពីអត្តនាមរបស់អ្នក។',
'password-login-forbidden' => 'ហាមប្រាមមិនអោយប្រើអត្តនាមនិងពាក្យសម្ងាត់នេះ។',
-'mailmypassword' => 'á\9e\95á\9f\92á\9e\89á\9e¾á\9e¢á\9f\8aá\9e¸á\9e\98á\9f\82á\9e\9bá\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9e\98á\9f\92á\9e\84á\9e¶á\9e\8fá\9f\8bá\9e\90á\9f\92á\9e\98á\9e¸',
+'mailmypassword' => 'á\9e\80á\9f\86á\9e\8eá\9e\8fá\9f\8bâ\80\8bá\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9e\98á\9f\92á\9e\84á\9e¶á\9e\8fá\9f\8bâ\80\8bá\9e\9fá\9e¶á\9e¡á\9e¾á\9e\84á\9e\9cá\9e·á\9e\89',
'passwordremindertitle' => 'ពាក្យសម្ងាត់បណ្តោះអាសន្នថ្មីសម្រាប់{{SITENAME}}',
'passwordremindertext' => 'មានអ្នកណាម្នាក់ (ប្រហែលជាអ្នក, ពីអាសយដ្ឋាន IP $1) បានស្នើសុំពាក្យសម្ងាត់ថ្មីមួយពី {{SITENAME}} ($4)។
ពាក្យសម្ងាត់បណ្ដោះអាសន្នមួយសម្រាប់អ្នកប្រើប្រាស់ "$2" ត្រូវបានប្ដូរទៅជា "$3"។ បើសិនជានេះជាចេតនារបស់អ្នក សូមអ្នកកត់ឈ្មោះចូលហើយជ្រើសប្រើពាក្យសម្ងាត់ថ្មី។
# Special:PasswordReset
'passwordreset' => 'កំណត់ពាក្យសម្ងាត់សាឡើងវិញ',
'passwordreset-text-one' => 'បំពេញសំណុំបែបបទនេះដើម្បីស្ដារពាក្យសម្ងាត់របស់អ្នក។',
-'passwordreset-text-many' => '{{PLURAL:$1|á\9e\9fá\9e¼á\9e\98á\9e\94á\9f\86á\9e\96á\9f\81á\9e\89á\9e\80á\9f\92á\9e\93á\9e»á\9e\84á\9e\94á\9f\92á\9e\9aá\9e¢á\9e\94á\9f\8bá\9e\98á\9e½á\9e\99á\9e\80á\9f\92á\9e\93á\9e»á\9e\84á\9e\85á\9f\86á\9e\8eá\9f\84á\9e\98á\9e\94á\9f\92á\9e\9aá\9e¢á\9e\94á\9f\8bá\9e\81á\9e¶á\9e\84á\9e\80á\9f\92á\9e\9aá\9f\84á\9e\98á\9e\8aá\9e¾á\9e\98á\9f\92á\9e\94á\9e¸á\9e\80á\9f\86á\9e\8eá\9e\8fá\9f\8bá\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9e\98á\9f\92á\9e\84á\9e¶á\9e\8fá\9f\8bá\9e\9aá\9e\94á\9e\9fá\9f\8bá\9e¢á\9f\92á\9e\93á\9e\80á\9e¡á\9e¾á\9e\84á\9e\9cá\9e·á\9e\89។}}',
+'passwordreset-text-many' => '{{PLURAL:$1|á\9e\9fá\9e¼á\9e\98á\9e\94á\9f\86á\9e\96á\9f\81á\9e\89á\9e\80á\9f\92á\9e\93á\9e»á\9e\84á\9e\94á\9f\92á\9e\9aá\9e¢á\9e\94á\9f\8bá\9e\98á\9e½á\9e\99á\9e\80á\9f\92á\9e\93á\9e»á\9e\84á\9e\85á\9f\86á\9e\8eá\9f\84á\9e\98á\9e\94á\9f\92á\9e\9aá\9e¢á\9e\94á\9f\8bá\9e\81á\9e¶á\9e\84á\9e\80á\9f\92á\9e\9aá\9f\84á\9e\98á\9e\8aá\9e¾á\9e\98á\9f\92á\9e\94á\9e¸á\9e\91á\9e\91á\9e½á\9e\9bá\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9e\98á\9f\92á\9e\84á\9e¶á\9e\8fá\9f\8bá\9e\94á\9e\8eá\9f\92á\9e\8aá\9f\84á\9f\87á\9e¢á\9e¶á\9e\9fá\9e\93á\9f\92á\9e\93á\9e\98á\9e½á\9e\99á\9e\8fá\9e¶á\9e\98á\9e\9aá\9e\99á\9f\88á\9e¢á\9f\8aá\9e¸á\9e\98á\9f\82á\9e\9b។}}',
'passwordreset-legend' => 'កំណត់ពាក្យសម្ងាត់សាឡើងវិញ',
'passwordreset-disabled' => 'មុខងារប្ដូរទៅពាក្យសម្ងាត់ដើមត្រូវបានបិទមិនអោយប្រើនៅលើវិគីនេះ។',
'passwordreset-emaildisabled' => 'មុខងារអ៊ីមែលត្រូវបានបិទមិនអោយប្រើនៅលើវិគីនេះ។',
'revdelete-selected' => "'''{{PLURAL:$2|កំណែប្រែដែលបានជ្រើសយក}}របស់[[:$1]]:'''",
'logdelete-selected' => "'''{{PLURAL:$1|ព្រឹត្តិការណ៍កំណត់ហេតុដែលបានជ្រើសយក}}:'''",
'revdelete-suppress-text' => "ការហាមឃាត់គួរត្រូវបានអនុវត្តិលើករណីដូចខាងក្រោមនេះប៉ុណ្ណោះ៖
-* ព័ត៌មានផ្ទាល់ខ្លួន ឯកជនមិនសមរម្យ
-*: ''អាសយដ្ឋាននៃគេហដ្ឋាន លេខទូរស័ព្ទ និងលេខសន្តិសុខសង្គមជាដើម''",
+* ព័ត៌មានបង្ខូចកេរ្ដិ៍ឈ្មោះធ្ងន់ធ្ងរ
+* ព័ត៌មានផ្ទាល់ខ្លួនមិនសមរម្យ
+*: ''អាសយដ្ឋាននៃគេហដ្ឋាន លេខទូរស័ព្ទ និងលេខអត្តសញ្ញាណប័ណ្ឌជាដើម''",
'revdelete-legend' => 'ដាក់កំហិតគំហើញ',
'revdelete-hide-text' => 'បិទបាំងអត្ថបទកំណែប្រែ',
'revdelete-hide-image' => 'បិទបាំងខ្លឹមសារនៃឯកសារ',
'showhideselectedversions' => 'បង្ហាញ/លាក់កំណែប្រែដែលបានជ្រើសយក',
'editundo' => 'មិនធ្វើវិញ',
'diff-empty' => '(គ្មានភាពខុសគ្នា)',
-'diff-multi' => '({{PLURAL:$1|កំណែប្រែកម្រិតបង្គួរមួយ|កំណែប្រែកម្រិតបង្គួរចំនួន $1}}មិនត្រូវបានបង្ហាញ)',
'diff-multi-manyusers' => '({{PLURAL:$1|កំណែប្រែកម្រិតបង្គួរមួយ|កំណែប្រែកម្រិតបង្គួរចំនួន $1}}មិនត្រូវបានបង្ហាញ)',
'difference-missing-revision' => ' {{PLURAL:$2|រកមិនឃើញ|រកមិនឃើញ}}{{PLURAL:$2|កំណែមួយ|កំណែចំនួន $2}} របស់ភាពខុសគ្នានេះ ($1) ទេ។
'rows' => 'ជួរដេក៖',
'columns' => 'ជួរឈរ៖',
'searchresultshead' => 'ស្វែងរក',
-'resultsperpage' => 'ចំនួនលទ្ធផលក្នុងមួយទំព័រ៖',
'stub-threshold' => 'ទំហំអប្បបរមាសំរាប់ដាក់ជាទំរង់<a href="#" class="stub">តំណភ្ជាប់ទៅទំព័រកំប៉ិចកំប៉ុក</a> (គិតជាបៃ)៖',
'stub-threshold-disabled' => 'មិនប្រើ',
'recentchangesdays' => 'ចំនួនថ្ងៃបង្ហាញក្នុងទំព័របន្លាស់ប្តូរថ្មីៗ៖',
'right-reupload-own' => 'សរសេរលុបពីលើឯកសារមានស្រាប់ដែលត្រូវបានផ្ទុកឡើងដោយម្ចាស់ដើម',
'right-reupload-shared' => 'សរសេរលុបពីលើឯកសារនៅក្នុងថតមេឌារួមរបស់វិគីនេះ',
'right-upload_by_url' => 'ផ្ទុកឡើងឯកសារមួយពីអាសយដ្ឋាន URL មួយ',
-'right-autoconfirmed' => 'á\9e\80á\9f\82á\9e\94á\9f\92á\9e\9aá\9f\82á\9e\91á\9f\86á\9e\96á\9f\90á\9e\9aá\9e\96á\9e¶á\9e\80á\9f\8bá\9e\80á\9e\8eá\9f\92á\9e\8aá\9e¶á\9e\9bá\9e\80á\9e¶á\9e\9aá\9e\96á\9e¶á\9e\9aá\9e\93á\9e¶á\9e\93á\9e¶',
+'right-autoconfirmed' => 'á\9e\98á\9e·á\9e\93á\9e\91á\9e\91á\9e½á\9e\9bá\9e\9aá\9e\84á\9e¥á\9e\91á\9f\92á\9e\92á\9e·á\9e\96á\9e\9bá\9e\96á\9e¸á\9e\80á\9e¶á\9e\9aá\9e\8aá\9e¶á\9e\80á\9f\8bá\9e\80á\9f\86á\9e á\9e·á\9e\8fá\9e\9bá\9f\92á\9e\94á\9e¿á\9e\93á\9e\8fá\9e¶á\9e\98IP',
'right-bot' => 'ទុកជាដំណើរការស្វ័យប្រវត្តិមួយ',
'right-nominornewtalk' => 'មិនបង្ហាញសាររំលឹក ពេលធ្វើកំនែតិចតួចនៅលើទំព័រពិភាក្សានានា',
'right-writeapi' => 'ការប្រើប្រាស់ API សម្រាប់សរសេរ',
'nchanges' => '$1 {{PLURAL:$1|បន្លាស់ប្ដូរ|បន្លាស់ប្ដូរ}}',
'enhancedrc-since-last-visit' => '$1 {{PLURAL:$1|គិតតាំងពីការបើកមើលចុងក្រោយ}}',
'enhancedrc-history' => 'ប្រវត្តិ',
-'recentchanges' => 'á\9e\94á\9e\93á\9f\92á\9e\9bá\9e¶á\9e\9fá\9f\8bá\9e\94á\9f\92á\9e\8aá\9e¼á\9e\9aâ\80\8bថ្មីៗ',
+'recentchanges' => 'á\9e\94á\9f\86á\9e\9bá\9e¶á\9e\9fá\9f\8bá\9e\94á\9f\92á\9e\8aá\9e¼á\9e\9aថ្មីៗ',
'recentchanges-legend' => 'ជម្រើសនានា សម្រាប់ការបង្ហាញបន្លាស់ប្ដូរថ្មីៗ',
'recentchanges-summary' => 'តាមដានរាល់បំលាស់ប្ដូរថ្មីៗបំផុតចំពោះវិគីនៅលើទំព័រនេះ។',
'recentchanges-feed-description' => 'តាមដានបន្លាស់ប្ដូរថ្មីៗបំផុតនៃវិគីនេះក្នុងមតិព័ត៌មាននេះ។',
'recentchanges-label-minor' => 'នេះជាការកែប្រែតិចតួចមួយប៉ុណ្ណោះ',
'recentchanges-label-bot' => 'ការកែប្រែនេះត្រូវបានធ្វើឡើងដោយរូបយន្ត',
'recentchanges-label-unpatrolled' => 'ការកែប្រែនេះមិនទាន់ត្រូវបានល្បាតទេ',
-'recentchanges-legend-newpage' => '$1 - ទំព័រថ្មី',
+'recentchanges-label-plusminus' => 'ទំហំទំព័រត្រូវបានផ្លាស់ប្ដូរគិតជាចំនួនបៃ',
+'recentchanges-legend-heading' => "''កំណត់សម្គាល់៖'''",
+'recentchanges-legend-newpage' => '(មើលផងដែរនូវ [[Special:NewPages|បញ្ជីទំព័រថ្មី]])',
'rcnotefrom' => "ខាងក្រោមនេះជាបន្លាស់ប្ដូរនានាគិតចាប់តាំងពី '''$2''' (បង្ហាញអតិបរមាចំនួន '''$1''')។",
'rclistfrom' => 'បង្ហាញបន្លាស់ប្ដូរថ្មីៗចាប់តាំងពី $1',
'rcshowhideminor' => '$1កំណែប្រែតិចតួច',
'rcshowhidebots' => '$1រូបយន្ត',
-'rcshowhideliu' => '$1á\9e¢á\9f\92á\9e\93á\9e\80á\9e\94á\9f\92á\9e\9aá\9e¾á\9e\94á\9f\92á\9e\9aá\9e¶á\9e\9fá\9f\8bá\9e\8aá\9f\82á\9e\9bá\9e\94á\9e¶á\9e\93á\9e\80á\9e\8fá\9f\8bá\9e\88á\9f\92á\9e\98á\9f\84á\9f\87á\9e\85á\9e¼á\9e\9b',
+'rcshowhideliu' => '$1á\9e¢á\9f\92á\9e\93á\9e\80á\9e\94á\9f\92á\9e\9aá\9e¾á\9e\94á\9f\92á\9e\9aá\9e¶á\9e\9fá\9f\8bá\9e\8aá\9f\82á\9e\9bá\9e\94á\9e¶á\9e\93á\9e\85á\9e»á\9f\87á\9e\88á\9f\92á\9e\98á\9f\84á\9f\87á\9e\9aá\9e½á\9e\85',
'rcshowhideanons' => '$1អ្នកប្រើប្រាស់អនាមិក',
'rcshowhidepatr' => '$1កំណែប្រែដែលបានល្បាត',
'rcshowhidemine' => '$1កំណែប្រែរបស់ខ្ញុំ',
អ្នកគួរតែសាកល្បងនៅពេលដែលវិបសាយនេះមិនសូវរវល់។',
-'license' => 'á\9e¢á\9e¶á\9e\87á\9f\92á\9e\89á\9e¶á\9e\94á\9f\90á\9e\8eá\9f\92á\9e\8e',
+'license' => 'អាជ្ញាបណ្ណ',
'license-header' => 'ការដាក់អាជ្ញាប័ណ្ណ',
'nolicense' => 'គ្មាន',
'license-nopreview' => '(មិនទាន់មានការបង្ហាញការមើលជាមុនទេ)',
'watchmethod-list' => 'ឆែកមើលទំព័រត្រូវបានតាមដានចំពោះកំណែប្រែថ្មីៗ',
'watchlistcontains' => 'បញ្ជីតាមដាន របស់អ្នក មាន $1 {{PLURAL:$1|ទំព័រ|ទំព័រ}}។',
'iteminvalidname' => "មានបញ្ហាជាមួយនឹង'$1'។ ឈ្មោះគឺមិនត្រឹមត្រូវ...",
-'wlnote' => "ខាងក្រោមនេះជា {{PLURAL:$1|បំលាស់ប្តូរចុងក្រោយ|'''$1'''បំលាស់ប្តូរចុងក្រោយ}}ក្នុងរយះពេល{{PLURAL:$2|'''$2'''ម៉ោង}}ចុងក្រោយ គិតចាប់ពី $3, $4។",
'wlshowlast' => 'បង្ហាញ $1ម៉ោងចុងក្រោយ $2ថ្ងៃចុងក្រោយ ឬ$3',
'watchlist-options' => 'ជម្រើសនានាក្នុងបញ្ជីតាមដាន',
អ៊ីមែល៖ $PAGEEDITOR_EMAIL
វិគី៖ $PAGEEDITOR_WIKI
-នឹងមិនមានការផ្ដល់ដំណឹងជាលាយលក្សណ៍អក្សរផ្សេងទៀតពេលមានសកម្មភាពលើសពីនេះទេ លើកលែងតែអ្នកចូលមើលទំព័រនេះរួចសិន។ អ្នកក៏អាចកំណត់ឡើងវិញអំពីការផ្ដល់ដំណឹងសម្រាប់ទំព័រដែលអ្នកកំពុងតាមដានផងដែរ។
+á\9e\93á\9e¹á\9e\84á\9e\98á\9e·á\9e\93á\9e\98á\9e¶á\9e\93â\80\8bá\9e\80á\9e¶á\9e\9aá\9e\95á\9f\92á\9e\8aá\9e\9bá\9f\8bá\9e\8aá\9f\86á\9e\8eá\9e¹á\9e\84â\80\8bá\9e\87á\9e¶á\9e\9bá\9e¶á\9e\99á\9e\9bá\9e\80á\9f\92á\9e\9fá\9e\8eá\9f\8dá\9e¢á\9e\80á\9f\92á\9e\9fá\9e\9aâ\80\8bá\9e\95á\9f\92á\9e\9fá\9f\81á\9e\84á\9e\91á\9f\80á\9e\8fá\9e\96á\9f\81á\9e\9bá\9e\98á\9e¶á\9e\93á\9e\9fá\9e\80á\9e\98á\9f\92á\9e\98á\9e\97á\9e¶á\9e\96á\9e\9bá\9e¾á\9e\9fá\9e\96á\9e¸á\9e\93á\9f\81á\9f\87á\9e\91á\9f\81 á\9e\9bá\9e¾á\9e\80á\9e\9bá\9f\82á\9e\84á\9e\8fá\9f\82â\80\8bá\9e¢á\9f\92á\9e\93á\9e\80á\9e\85á\9e¼á\9e\9bá\9e\98á\9e¾á\9e\9bâ\80\8bá\9e\91á\9f\86á\9e\96á\9f\90á\9e\9aá\9e\93á\9f\81á\9f\87á\9e\8aá\9f\84á\9e\99á\9e\80á\9e\8fá\9f\8bá\9e\88á\9f\92á\9e\98á\9f\84á\9f\87á\9e\85á\9e¼á\9e\9bá\9e\9aá\9e½á\9e\85á\9e\9fá\9e·á\9e\93á\9f\94 á\9e¢á\9f\92á\9e\93á\9e\80á\9e\80á\9f\8fá\9e¢á\9e¶á\9e\85á\9e\80á\9f\86á\9e\8eá\9e\8fá\9f\8bá\9e¡á\9e¾á\9e\84á\9e\9cá\9e·á\9e\89á\9e¢á\9f\86á\9e\96á\9e¸á\9e\80á\9e¶á\9e\9aá\9e\95á\9f\92á\9e\8aá\9e\9bá\9f\8bá\9e\8aá\9f\86á\9e\8eá\9e¹á\9e\84á\9e\9fá\9e\98á\9f\92á\9e\9aá\9e¶á\9e\94á\9f\8bâ\80\8bá\9e\91á\9f\86á\9e\96á\9f\90á\9e\9aá\9e\8aá\9f\82á\9e\9bá\9e¢á\9f\92á\9e\93á\9e\80á\9e\80á\9f\86á\9e\96á\9e»á\9e\84á\9e\8fá\9e¶á\9e\98á\9e\8aá\9e¶á\9e\93á\9e\95á\9e\84á\9e\8aá\9f\82á\9e\9aá\9f\94
ពីប្រព័ន្ធផ្តល់ដំណឹង {{SITENAME}}
'deletecomment' => 'មូលហេតុ៖',
'deleteotherreason' => 'មូលហេតុបន្ថែមផ្សេងទៀត៖',
'deletereasonotherlist' => 'មូលហេតុផ្សេងទៀត',
-'deletereason-dropdown' => '*ហេតុផលទូទៅ
-** សំណើរបស់អ្នកនិពន្ធ
+'deletereason-dropdown' => '* មូលហេតុលុបចោលទូទៅ
+** ស្ប៉ាម
+** អំពើបំផ្លាញទ្រព្យសម្បត្តិឯកជនឬសាធារណៈ
** បំពានកម្មសិទ្ធិបញ្ញា
-** អំពើបំផ្លាញទ្រព្យសម្បត្តិឯកជនឬសាធារណៈ',
+** សំណើរបស់អ្នកនិពន្ធ
+** ការបញ្ជូនបន្តដែលខូច',
'delete-edit-reasonlist' => 'ពិនិត្យផ្ទៀងផ្ទាត់ហេតុផលនៃការលុប',
'delete-toobig' => 'ទំព័រនេះមានប្រវត្តិកែប្រែធំលើសពី $1 {{PLURAL:$1|កំណែ|កំណែ}}។
# Move page
'move-page' => 'ប្តូរទីតាំង $1',
'move-page-legend' => 'ប្តូរទីតាំងទំព័រ',
-'movepagetext' => "ការប្រើប្រាស់ទម្រង់ខាងក្រោមនឹងប្តូរឈ្មោះទំព័រ ប្តូរទីតាំងគ្រប់ប្រវត្តិរបស់វាទៅឈ្មោះថ្មី។
-á\9e\85á\9f\86á\9e\8eá\9e\84á\9e\87á\9e¾á\9e\84â\80\8bá\9e\85á\9e¶á\9e\9fá\9f\8bâ\80\8bá\9e\93á\9e¹á\9e\84â\80\8bá\9e\80á\9f\92á\9e\9bá\9e¶á\9e\99á\9e\87á\9e¶â\80\8bá\9e\91á\9f\86á\9e\96á\9f\90á\9e\9aâ\80\8bá\9e\94á\9f\92á\9e\8fá\9e¼á\9e\9aá\9e\91á\9e·á\9e\9fទៅចំណងជើងថ្មី។
-á\9e\8fá\9f\86á\9e\8eá\9e\97á\9f\92á\9e\87á\9e¶á\9e\94á\9f\8bâ\80\8bá\9e\91á\9f\85â\80\8bá\9e\85á\9f\86á\9e\8eá\9e\84á\9e\87á\9e¾á\9e\84 á\9e\93á\9f\83â\80\8bá\9e\91á\9f\86á\9e\96á\9f\90á\9e\9aá\9e\85á\9e¶á\9e\9fá\9f\8bâ\80\8bá\9e\93á\9e¹á\9e\84â\80\8bá\9e\98á\9e·á\9e\93â\80\8bá\9e\94á\9e¶á\9e\93â\80\8bá\9e\8fá\9f\92á\9e\9aá\9e¼á\9e\9câ\80\8bá\9e\95á\9f\92á\9e\9bá\9e¶á\9e\9fá\9f\8bá\9e\94á\9f\92á\9e\8fá\9e¼á\9e\9a; á\9e\9fá\9e¼á\9e\98â\80\8bá\9e\96á\9e·á\9e\93á\9e·á\9e\8fá\9f\92á\9e\99á\9e\98á\9e¾á\9e\9b á\9e\80á\9e¶á\9e\9aá\9e\94á\9f\92á\9e\8fá\9e¼á\9e\9aá\9e\91á\9e·á\9e\9f á\9e\98á\9e·á\9e\93á\9e\94á\9e¶á\9e\93á\9e\94á\9e\84á\9f\92á\9e\80á\9e¾á\9e\8f á\9e\91á\9f\86á\9e\96á\9f\90á\9e\9aá\9e\94á\9f\92á\9e\8fá\9e¼á\9e\9aá\9e\91á\9e·á\9e\9fá\9e\91á\9f\92á\9e\9cá\9f\81 á\9e¬ á\9e\91á\9f\86á\9e\96á\9f\90á\9e\9aá\9e\94á\9f\92á\9e\8fá\9e¼á\9e\9aá\9e\91á\9e·á\9e\9fá\9e\94á\9e¶á\9e\80á\9f\8b á\9f\94
-á\9e¢á\9f\92á\9e\93á\9e\80á\9e\8fá\9f\92á\9e\9aá\9e¼á\9e\9cá\9e\8fá\9f\82á\9e\92á\9e¶á\9e\93á\9e¶á\9e\94á\9f\92á\9e\9aá\9e¶á\9e\80á\9e\8a á\9e\90á\9e¶â\80\8bá\9e\8fá\9f\86á\9e\8eá\9e\97á\9f\92á\9e\87á\9e¶á\9e\94á\9f\8bá\9e\91á\9e¶á\9f\86á\9e\84á\9e\93á\9f\84á\9f\87 á\9e\94á\9e\93á\9f\92á\9e\8fá\9e\9fá\9f\86á\9e\8aá\9f\85â\80\8bá\9e\91á\9f\85â\80\8bá\9e\82á\9f\84á\9e\9bá\9e\8aá\9f\85á\9e\94á\9e¶á\9e\93á\9e\9fá\9e\93á\9f\92á\9e\98á\9e\8f។
+'movepagetext' => "ការប្រើប្រាស់សំណុំបែបបទខាងក្រោមនឹងប្តូរឈ្មោះទំព័រ និងប្តូរទីតាំងប្រវត្តិទាំងអស់របស់វាទៅឈ្មោះថ្មីនោះ។
+á\9e\85á\9f\86á\9e\8eá\9e\84á\9e\87á\9e¾á\9e\84â\80\8bá\9e\85á\9e¶á\9e\9fá\9f\8bâ\80\8bá\9e\93á\9e¹á\9e\84â\80\8bá\9e\80á\9f\92á\9e\9bá\9e¶á\9e\99á\9e\87á\9e¶â\80\8bá\9e\91á\9f\86á\9e\96á\9f\90á\9e\9aâ\80\8bá\9e\94á\9e\89á\9f\92á\9e\87á\9e¼á\9e\93á\9e\94á\9e\93á\9f\92á\9e\8fទៅចំណងជើងថ្មី។
+á\9e¢á\9f\92á\9e\93á\9e\80á\9e¢á\9e¶á\9e\85á\9e\94á\9e\93á\9f\92á\9e\91á\9e¶á\9e\93á\9f\8bá\9e\9fá\9e\98á\9f\90á\9e\99á\9e\80á\9e¶á\9e\9aá\9e\94á\9e\89á\9f\92á\9e\87á\9e¼á\9e\93á\9e\94á\9e\93á\9f\92á\9e\8fá\9e\8aá\9f\82á\9e\9bá\9e\9fá\9f\86á\9e\8aá\9f\85á\9e\91á\9f\85á\9e\9aá\9e\80á\9e\85á\9f\86á\9e\8eá\9e\84á\9e\87á\9e¾á\9e\84á\9e\85á\9e¶á\9e\9fá\9f\8bá\9e\8aá\9f\84á\9e\99á\9e\9fá\9f\92á\9e\9cá\9f\90á\9e\99á\9e\94á\9f\92á\9e\9aá\9e\9cá\9e\8fá\9f\92á\9e\8fá\9e·á\9f\94 á\9e\94á\9e¾á\9e\9fá\9e·á\9e\93á\9e\87á\9e¶á\9e¢á\9f\92á\9e\93á\9e\80á\9e\87á\9f\92á\9e\9aá\9e¾á\9e\9fá\9e\9aá\9e¾á\9e\9fá\9e\98á\9e·á\9e\93á\9e\92á\9f\92á\9e\9cá\9e¾á\9e\94á\9f\82á\9e\94á\9e\93á\9f\81á\9f\87 á\9e\9fá\9e¼á\9e\98á\9e\80á\9e»á\9f\86á\9e\97á\9f\92á\9e\9bá\9f\81á\9e\85á\9e\96á\9e·á\9e\93á\9e·á\9e\8fá\9f\92á\9e\99 [[Special:DoubleRedirects|á\9e\80á\9e¶á\9e\9aá\9e\94á\9e\89á\9f\92á\9e\87á\9e¼á\9e\93á\9e\94á\9e\93á\9f\92á\9e\8fá\9e\91á\9f\92á\9e\9cá\9f\81á\9e\8aá\9e\84]] á\9e\93á\9e·á\9e\84[[Special:BrokenRedirects|á\9e\80á\9e¶á\9e\9aá\9e\94á\9e\89á\9f\92á\9e\87á\9e¼á\9e\93á\9e\94á\9e\93á\9f\92á\9e\8fá\9e\8aá\9f\82á\9e\9bá\9e\8aá\9e¶á\9e\85á\9f\8b]]á\9f\94
+á\9e¢á\9f\92á\9e\93á\9e\80á\9e\98á\9e¶á\9e\93á\9e\97á\9e¶á\9e\9aá\9f\88á\9e\92á\9f\92á\9e\9cá\9e¾á\9e¢á\9f\84á\9e\99á\9e\94á\9f\92á\9e\9aá\9e¶á\9e\80á\9e\8aá\9e\90á\9e¶á\9e\8fá\9f\86á\9e\8eá\9e\97á\9f\92á\9e\87á\9e¶á\9e\94á\9f\8bá\9e\91á\9e¶á\9f\86á\9e\84á\9e\93á\9f\84á\9f\87á\9e\93á\9f\85á\9e\8fá\9f\82á\9e\94á\9e\93á\9f\92á\9e\8fá\9e\9fá\9f\86á\9e\8aá\9f\85â\80\8bá\9e\91á\9f\85â\80\8bá\9e\80á\9e¶á\9e\93á\9f\8bá\9e\91á\9f\86á\9e\96á\9f\90á\9e\9aá\9e\82á\9f\84á\9e\9bá\9e\8aá\9f\85á\9e\8fá\9f\92á\9e\9aá\9e¹á\9e\98á\9e\8fá\9f\92á\9e\9aá\9e¼á\9e\9c។
-ទំព័រចាស់ នឹង'''មិន'''ត្រូវ បានប្តូរទីតាំង កាលបើមានទំព័រក្នុងចំណងជើងថ្មី។ បើគ្មានទំព័រក្នុងចំណងជើងថ្មី, ទំព័ចាស់នឹងទទេ ឬ ជាទំព័រប្តូរទិស និងគ្មានប្រវត្តិកំណែប្រែ។ វាមានន័យថា អ្នកអាចប្តូរឈ្មោះទំព័រទៅទីតាំងដើម ករណីអ្នកបានធ្វើកំហុស, និង ដែលអ្នកមិនអាច សរសេរជាន់ពីលើ ទំព័រមានស្រាប់។
+ទំព័រចាស់នឹង'''មិន'''ត្រូវ បានប្តូរទីតាំង កាលបើមានទំព័រក្នុងចំណងជើងថ្មីរួចហើយ លើកលែងតែក្នុងករណីទំព័រក្នុងចំណងជើងថ្មីជាទំព័របញ្ជូនបន្តហើយគ្មានប្រវត្តិកែប្រែពីមុន។ វាមានន័យថា អ្នកអាចប្តូរឈ្មោះទំព័រទៅទីតាំងដើម ករណីអ្នកបានធ្វើខុសដោយអចេនតនា ហើយអ្នកមិនអាចសរសេរជាន់ពីលើ ទំព័រមានស្រាប់។
'''ប្រយ័ត្ន!'''
-វាអាចជា បំលាស់ប្តូរដល់ឫសគល់ និងមិននឹកស្មានជាមុន ចំពោះទំព័រប្រជាប្រិយ។ អ្នកត្រូវតែដឹងប្រាកដអំពីផលវិបាកទាំងអស់ មុននឹងបន្តទង្វើនេះ។",
+វាអាចជាបន្លស់ប្តូរដល់ឫសគល់និងមិននឹកស្មានជាមុន សម្រាប់ទំព័រប្រជាប្រិយ។ អ្នកត្រូវតែដឹងប្រាកដអំពីផលវិបាកទាំងអស់ មុននឹងបន្តទង្វើនេះ។",
'movepagetalktext' => "ទំព័រសហពិភាក្សាបើមាន នឹងត្រូវបានប្តូរទៅឈ្មោះថ្មីជាមួយគ្នាដោយស្វ័យប្រវត្តិ '''លើកលែងតែ៖'''
*ទំព័រពិភាក្សាមិនទទេនិងមានរួចរាល់ក្រោមឈ្មោះថ្មី ឬ
*អ្នកដោះប្រអប់ធីកខាងក្រោម។
'tooltip-pt-watchlist' => 'បញ្ជីនៃទំព័រដែលអ្នកកំពុងត្រួតពិនិត្យរកបន្លាស់ប្ដូរ',
'tooltip-pt-mycontris' => 'បញ្ជីនៃការរួមចំណែករបស់អ្នក',
'tooltip-pt-login' => 'អ្នកត្រូវបានលើកទឹកចិត្តឱ្យកត់ឈ្មោះចូល។ ប៉ុន្តែនេះមិនមែនជាការបង្ខំទេ។',
-'tooltip-pt-anonlogin' => 'អ្នកត្រូវបានលើកទឹកចិត្តឱ្យកត់ឈ្មោះចូល មិនមែនជាការបង្ខំទេ។',
'tooltip-pt-logout' => 'កត់ឈ្មោះចេញ',
'tooltip-ca-talk' => 'ការពិភាក្សាអំពីទំព័រខ្លឹមសារនេះ',
'tooltip-ca-edit' => "អ្នកអាចកែប្រែទំព័រនេះ ។ សូមប្រើប្រាស់ប៊ូតុង 'បង្ហាញការមើលមុន' មុននឹងរក្សាទុកវា ។",
'tooltip-t-contributions' => 'បង្ហាញបញ្ជីរួមចំណែករបស់អ្នកប្រើប្រាស់នេះ',
'tooltip-t-emailuser' => 'ផ្ញើអ៊ីមែលទៅកាន់អ្នកប្រើប្រាស់នេះ',
'tooltip-t-upload' => 'ឯកសារផ្ទុកឡើង',
-'tooltip-t-specialpages' => 'á\9e\94á\9e\89á\9f\92á\9e\87á\9e¸á\9e\91á\9f\86á\9e\96á\9f\90á\9e\9aá\9e\96á\9e·á\9e\9fá\9f\81á\9e\9fá\9f\97á\9e\91á\9e¶á\9f\86á\9e\84á\9e¢á\9e\9fá\9f\8b',
+'tooltip-t-specialpages' => 'á\9e\94á\9e\89á\9f\92á\9e\87á\9e¸á\9e\91á\9f\86á\9e\96á\9f\90á\9e\9aá\9e\96á\9e·á\9e\9fá\9f\81á\9e\9fá\9f\97á\9e\91á\9e¶á\9f\86á\9e\84á\9e\98á\9e¼á\9e\9b',
'tooltip-t-print' => 'ទម្រង់សម្រាប់បោះពុម្ភរបស់ទំព័រនេះ',
'tooltip-t-permalink' => 'តំណភ្ជាប់អចិន្ត្រៃយ៍ដែលភ្ជាប់មកកំណែនៃទំព័រនេះ',
'tooltip-ca-nstab-main' => 'មើលទំព័រមាតិកា',
'minutes' => '{{PLURAL:$1|$1 នាទី|$1 នាទី}}',
'hours' => '{{PLURAL:$1|$1 ម៉ោង|$1 ម៉ោង}}',
'days' => '{{PLURAL:$1|$1 ថ្ងៃ|$1 ថ្ងៃ}}',
-'weeks' => '{{PLURAL: $1|$1 សប្តាហ៍|$1 សប្តាហ៍}}',
+'weeks' => '{{PLURAL:$1|$1 សប្តាហ៍|$1 សប្តាហ៍}}',
'months' => '{{PLURAL:$1|$1 ខែ|$1 ខែ}}',
'years' => '{{PLURAL:$1|$1 ឆ្នាំ|$1 ឆ្នាំ}}',
'ago' => '$1 មុន',
'exif-copyrightowner' => 'ម្ចាស់កម្មសិទ្ធិបញ្ញា',
'exif-usageterms' => 'លក្ខខណ្ឌប្រើប្រាស់',
'exif-webstatement' => 'សេចក្ដីប្រកាសកម្មសិទ្ធបញ្ញាលើអ៊ីនធើណិត',
-'exif-licenseurl' => 'URL á\9e\9fá\9f\86á\9e\9aá\9e¶á\9e\94á\9f\8bá\9e¢á\9e¶á\9e\87á\9f\92á\9e\89á\9e¶á\9e\94á\9e\8eá\9f\92á\9e\8cá\9e\80á\9e\98á\9f\92á\9e\98á\9e\9fá\9e·á\9e\91á\9f\92á\9e\92បញ្ញា',
-'exif-morepermissionsurl' => 'ព័ត៌មានអាជ្ញាបណ្ឌជំនួស',
+'exif-licenseurl' => 'URL á\9e\9fá\9e\98á\9f\92á\9e\9aá\9e¶á\9e\94á\9f\8bâ\80\8bá\9e¢á\9e¶á\9e\87á\9f\92á\9e\89á\9e¶á\9e\94á\9e\8eá\9f\92á\9e\8eâ\80\8bá\9e\80á\9e\98á\9f\92á\9e\98á\9e\9fá\9e·á\9e\91á\9f\92á\9e\92á\9e·â\80\8bបញ្ញា',
+'exif-morepermissionsurl' => 'ព័ត៌មានអាជ្ញាបណ្ណជំនួស',
'exif-attributionurl' => 'នៅពេលកែច្នៃស្នាដៃនេះយកទៅប្រើ សូមដាក់តំណភ្ជាប់ទៅ',
'exif-preferredattributionname' => 'នៅពេលកែច្នៃស្នាដៃនេះយកទៅប្រើ សូមថ្លែងអំណរគុណដល់ម្ចាស់ដើម',
'exif-pngfilecomment' => 'វិចារលើឯកសារ PNG',
'confirmemail_body_set' => 'នរណាម្នាក់ ប្រហែលជាខ្លួនអ្នកផ្ទាល់ មកពីអាស័យដ្ឋានIP $1,
បានដាក់ភ្ជាប់អាស័យដ្ឋានអ៊ីមែលរបស់គណនី "$2" ជាមួយនឹងអាស័យដ្ឋានអ៊ីមែលនេះនៅលើ{{SITENAME}}។
-á\9e\8aá\9e¾á\9e\98á\9f\92á\9e\94á\9e¸á\9e\94á\9e\89á\9f\92á\9e\87á\9e¶á\9e\80á\9f\8bá\9e\90á\9e¶á\9e\93á\9f\81á\9f\87á\9e\96á\9e·á\9e\8fá\9e\87á\9e¶á\9e\82á\9e\8eá\9e\93á\9e¸á\9e\95á\9f\92á\9e\91á\9e¶á\9e\9bá\9f\8bá\9e\9aá\9e\94á\9e\9fá\9f\8bá\9e¢á\9f\92á\9e\93á\9e\80á\9e\98á\9f\82á\9e\93 á\9e\93á\9e·á\9e\84á\9e\8aá\9f\86á\9e\8eá\9e¾á\9e\9aá\9e\80á\9e¶á\9e\9aá\9e\98á\9e»á\9e\81á\9e\84á\9e¶á\9e\9aá\9e¢á\9f\8aá\9e¸á\9e\98á\9f\82á\9e\9bá\9e\80á\9f\92á\9e\93á\9e»á\9e\84{{SITENAME}}á\9e¡á\9e¾á\9e\84á\9e\9cá\9e·á\9e\89
+á\9e\8aá\9e¾á\9e\98á\9f\92á\9e\94á\9e¸á\9e\94á\9e\89á\9f\92á\9e\87á\9e¶á\9e\80á\9f\8bá\9e\90á\9e¶á\9e\93á\9f\81á\9f\87á\9e\96á\9e·á\9e\8fá\9e\87á\9e¶á\9e\82á\9e\8eá\9e\93á\9e¸á\9e\95á\9f\92á\9e\91á\9e¶á\9e\9bá\9f\8bá\9e\9aá\9e\94á\9e\9fá\9f\8bá\9e¢á\9f\92á\9e\93á\9e\80á\9e\98á\9f\82á\9e\93 á\9e\93á\9e·á\9e\84á\9e\94á\9e¾á\9e\80á\9e\8aá\9f\86á\9e\8eá\9e¾á\9e\9aá\9e\80á\9e¶á\9e\9aá\9e\98á\9e»á\9e\81á\9e\84á\9e¶á\9e\9aá\9e¢á\9f\8aá\9e¸á\9e\98á\9f\82á\9e\9bá\9e\80á\9f\92á\9e\93á\9e»á\9e\84{{SITENAME}}
សូមបើកតំណភ្ជាប់ខាងក្រោមនេះក្នុងកម្មវិធីរាយរកអ៊ីនធើណិតរបស់អ្នក៖
$3
'imgmultigo' => 'ទៅ!',
'imgmultigoto' => 'ទៅកាន់ទំព័រ$1',
+# Language selector for translatable SVGs
+'img-lang-go' => 'ទៅ',
+
# Table pager
'ascending_abbrev' => 'លំដាប់ឡើង',
'descending_abbrev' => 'លំដាប់ចុះ',
'version-hook-name' => 'ឈ្មោះ Hook',
'version-hook-subscribedby' => 'បានជាវ ជាប្រចាំ ដោយ',
'version-version' => '(កំណែ $1)',
-'version-license' => 'អាជ្ញាប័ណ្ណ',
+'version-license' => 'អាជ្ញាបណ្ណមេឌាវិគី',
+'version-ext-license' => 'អាជ្ញាបណ្ណ',
+'version-ext-colheader-version' => 'កំណែ',
+'version-ext-colheader-license' => 'អាជ្ញាបណ្ណ',
+'version-ext-colheader-description' => 'ការពិពណ៌នា',
+'version-ext-colheader-credits' => 'អ្នកនិពន្ធ',
+'version-license-title' => 'អាជ្ញាបណ្ណសម្រាប់ $1',
'version-poweredby-credits' => "វិគីនេះឧបត្ថម្ភដោយ '''[https://www.mediawiki.org/ មេឌាវិគី]''', រក្សាសិទ្ធ © ២០០១-$1 $2។",
'version-poweredby-others' => 'អ្នកដទៃទៀត',
+'version-poweredby-translators' => 'អ្នកបកប្រែ translatewiki.net',
'version-software' => 'ផ្នែកទន់ដែលបានដំឡើង',
'version-software-product' => 'ផលិតផល',
'version-software-version' => 'កំណែ',
'version-entrypoints-header-url' => 'URL',
+# Special:Redirect
+'redirect-submit' => 'ទៅ',
+'redirect-value' => 'តម្លៃ៖',
+'redirect-user' => 'អត្តលេខអ្នកប្រើប្រាស់',
+'redirect-page' => 'អត្តលេខទំព័រ',
+'redirect-file' => 'ឈ្មោះឯកសារ',
+'redirect-not-exists' => 'តម្លៃររកមិនឃើញ',
+
# Special:FileDuplicateSearch
'fileduplicatesearch' => 'ស្វែងរកឯកសារដូចគ្នាបេះបិទ',
'fileduplicatesearch-legend' => 'ស្វែងរកឯកសារដូចគ្នាបេះបិទ',
# Special:SpecialPages
'specialpages' => 'ទំព័រពិសេសៗ',
'specialpages-note' => '* ទំព័រពិសេសៗធម្មតា។
-* <span class="mw-specialpagerestricted">ទំព័រពិសេសៗដែលមានការដាក់កំហិត។</span>
-* <span class="mw-specialpagecached">ទំព័រពិសេសៗសំរាប់រក្សាទុក។</span>',
+* <span class="mw-specialpagerestricted">ទំព័រពិសេសៗដែលមានការដាក់កំហិត។</span>',
'specialpages-group-maintenance' => 'របាយការណ៍នានាអំពីតំហែទាំ',
'specialpages-group-other' => 'ទំព័រពិសេសៗផ្សេងៗទៀត',
'specialpages-group-login' => 'កត់ឈ្មោះចូល / បង្កើតគណនី',
'tags-tag' => 'ឈ្មោះស្លាក',
'tags-display-header' => 'Appearance លើបញ្ជីបំលាស់ប្ដូរ',
'tags-description-header' => 'បរិយាយពេញលេញនៃអត្ថន័យ',
+'tags-active-header' => 'សកម្ម?',
'tags-hitcount-header' => 'បំលាស់ប្ដូរដែលមានស្លាក',
+'tags-active-yes' => 'បាទ/ចាស',
+'tags-active-no' => 'ទេ',
'tags-edit' => 'កែប្រែ',
'tags-hitcount' => '$1 {{PLURAL:$1|បំលាស់ប្ដូរ|បំលាស់ប្ដូរ}}',
'duration-minutes' => '$1 {{PLURAL:$1|នាទី|នាទី}}',
'duration-hours' => '$1 {{PLURAL:$1|ម៉ោង|ម៉ោង}}',
'duration-days' => '$1 {{PLURAL:$1|ថ្ងៃ|ថ្ងៃ}}',
-'duration-weeks' => '$1 {{PLURAL: $1|សប្តាហ៍|សប្តាហ៍}}',
+'duration-weeks' => '$1 {{PLURAL:$1|សប្តាហ៍|សប្តាហ៍}}',
'duration-years' => '$1 {{PLURAL:$1|ឆ្នាំ|ឆ្នាំ}}',
'duration-decades' => '$1 {{PLURAL:$1|ទសវត្សរ៍|ទសវត្សរ៍}}',
'duration-centuries' => '$1 {{PLURAL:$1|សតវត្សរ៍|សតវត្សរ៍}}',
$messages = array(
# User preference toggles
'tog-underline' => 'ಲಿಂಕುಗಳ ಕೆಳಗೆ ಗೆರೆ ತೋರಿಸಿ',
-'tog-justify' => 'ಪರಿಚ್ಛೇದಗಳ ಬದಿಗಳನ್ನು ಸಮನಾಗಿಸು',
'tog-hideminor' => 'ಚಿಕ್ಕಪುಟ್ಟ ಬದಲಾವಣೆಗಳನ್ನು ಅಡಗಿಸಿ',
'tog-hidepatrolled' => 'ಪಹರೆಯಲ್ಲಿ ಆದ ಸಂಪಾದನೆಗಳನ್ನು ಇತ್ತೀಚೆಗಿನ ಬದಲಾವಣೆಗಳಲ್ಲಿ ಅಡಗಿಸು',
'tog-newpageshidepatrolled' => 'ಪಹರೆಯಲ್ಲಿ ಆದ ಪುಟಗಳನ್ನು ಹೊಸ ಪುಟಗಳ ಪಟ್ಟಿಯಲ್ಲಿ ಅಡಗಿಸು',
'tog-numberheadings' => 'ತಲೆಬರಹಗಳಿಗೆ ಅಂಕಿಗಳನ್ನು ತೋರಿಸು',
'tog-showtoolbar' => 'ಸಂಪಾದನೆಯ ಉಪಕರಣಗಳ ಪಟ್ಟಿಯನ್ನು ತೋರು',
'tog-editondblclick' => 'ಎರಡು ಬಾರಿ ಕ್ಲಿಕ್ ಮಾಡಿದಾಗ ಪುಟವು ಸಂಪಾದಿಸುವಂತಾಗಲಿ',
-'tog-editsection' => 'ಪುಟದ ವಿಭಾಗಗಳನ್ನು [ಬದಲಾಯಿಸು] ಕೊಂಡಿಗಳನ್ನು ಒತ್ತುವುದರಿಂದ ಸಂಪಾದನೆ ಮಾಡುವಂತೆ ಇರಲಿ',
'tog-editsectiononrightclick' => 'ಪುಟದ ವಿಭಾಗಗಳನ್ನು ಅವುಗಳ ಶೀರ್ಷಿಕೆಯನ್ನು ಎರಡು ಬಾರಿ ಕ್ಲಿಕ್ ಮಾಡಿ ಸಂಪಾದನೆ ಮಾಡುವಂತೆ ಇರಲಿ',
-'tog-showtoc' => 'ಪರಿವಿಡಿಯನ್ನು ತೋರಿಸು (ಮೂರಕ್ಕಿಂತ ಹೆಚ್ಚು ತಲೆಬರಹಗಳನ್ನು ಹೊಂದಿರುವ ಪುಟಗಳಿಗೆ)',
'tog-rememberpassword' => 'ಈ ಗಣಕಯಂತ್ರದಲ್ಲಿ ನನ್ನ ಲಾಗಿನ್ ನೆನಪಿನಲ್ಲಿಟ್ಟುಕೊ (ಗರಿಷ್ಠ $1 {{PLURAL:$1|ದಿನದ|ದಿನಗಳ}}ವರೆಗೆ)',
'tog-watchcreations' => 'ನಾನು ಪ್ರಾರಂಭಿಸುವ ಲೇಖನಗಳನ್ನು ನನ್ನ ವೀಕ್ಷಣಾಪಟ್ಟಿಗೆ ಸೇರಿಸು',
'tog-watchdefault' => 'ನಾನು ಸಂಪಾದಿಸುವ ಪುಟಗಳನ್ನು ವೀಕ್ಷಣಾಪಟ್ಟಿಗೆ ಸೇರಿಸು',
'compareselectedversions' => 'ಆಯ್ಕೆ ಮಾಡಿದ ಆವೃತ್ತಿಗಳನ್ನು ಹೊಂದಾಣಿಕೆ ಮಾಡಿ ನೋಡಿ',
'showhideselectedversions' => 'ಆಯ್ದ ಆವೃತ್ತಿಗಳನ್ನು ತೋರಿಸು/ಅಡಗಿಸು',
'editundo' => 'ಹಿಂದಿನಂತೆ',
-'diff-multi' => '(ಮಧ್ಯದಲ್ಲಿ {{PLURAL:$2|ಒಬ್ಬ|$2}} ಸದಸ್ಯರಿಂದ ಆಗಿರುವ {{PLURAL:$1|೧ ಬದಲಾವಣೆಯನ್ನು|$1 ಬದಲಾವಣೆಗಳನ್ನು}} ತೋರಿಸಲಾಗಿಲ್ಲ.)',
# Search results
'searchresults' => 'ಶೋಧನೆಯ ಫಲಿತಾಂಶಗಳು',
'prefs-editing' => 'ಸಂಪಾದನೆ',
'rows' => 'ಸಾಲುಗಳು:',
'searchresultshead' => 'ಹುಡುಕು',
-'resultsperpage' => 'ಪ್ರತಿ ಪುಟದಲ್ಲಿ ಫಲಿತಾಂಶಗಳು:',
'recentchangesdays' => 'ಇತ್ತೀಚಿನ ಬದಲಾವಣೆಗಳಲ್ಲಿ ತೋರಿಸಬೇಕಾದ ದಿನಗಳು:',
'recentchangescount' => 'ಇತ್ತೀಚೆಗಿನ ಬದಲಾವಣೆಗಳಲ್ಲಿರುವ ವಿಷಯಗಳ ಸಂಖ್ಯೆ',
'savedprefs' => 'ನಿಮ್ಮ ಇಚ್ಛೆಗಳನ್ನು ಉಳಿಸಲಾಯಿತು.',
* @author ITurtle
* @author Idh0854
* @author Jmkim dot com
+ * @author Jskang
* @author Kaganer
* @author Klutzy
* @author Kwj2772
* @author LFM
+ * @author Leehoy
* @author Mintz0223
* @author Pi.C.Noizecehx
* @author Priviet
$messages = array(
# User preference toggles
'tog-underline' => '링크에 밑줄:',
-'tog-justify' => '문단 정렬하기',
'tog-hideminor' => '최근 바뀜에서 사소한 편집을 숨기기',
'tog-hidepatrolled' => '최근 바뀜에서 검토한 편집을 숨기기',
'tog-newpageshidepatrolled' => '새 문서 목록에서 검토한 문서를 숨기기',
'tog-extendwatchlist' => '주시문서 목록에서 가장 최근의 편집만이 아닌 모든 편집을 보기',
-'tog-usenewrc' => 'ìµ\9cê·¼ ë°\94ë\80\9cê³¼ 주ì\8b\9c문ì\84\9c 목ë¡\9dì\97\90ì\84\9c 문서별 그룹 바뀜',
-'tog-numberheadings' => '머릿글 번호 매기기',
+'tog-usenewrc' => 'ìµ\9cê·¼ ë°\94ë\80\9cê³¼ 주ì\8b\9c문ì\84\9c 목ë¡\9dì\9d\98 문서별 그룹 바뀜',
+'tog-numberheadings' => '자동으로 머릿글 번호 매기기',
'tog-showtoolbar' => '편집에 툴바 보이기',
'tog-editondblclick' => '더블 클릭으로 문서 편집하기',
-'tog-editsection' => '[편집] 링크로 부분 편집하기',
'tog-editsectiononrightclick' => '제목을 오른쪽 클릭해서 문단 편집하기 활성화',
-'tog-showtoc' => '문서의 차례 보여주기 (머릿글이 4개 이상인 경우)',
-'tog-rememberpassword' => '이 브라우저에서 로그인 상태를 저장하기 (최대 $1{{PLURAL:$1|일}})',
+'tog-rememberpassword' => '이 브라우저에 로그인 상태를 저장하기(최대 $1{{PLURAL:$1|일}})',
'tog-watchcreations' => '내가 만드는 문서와 내가 올린 파일을 주시문서 목록에 추가',
'tog-watchdefault' => '내가 편집하는 문서와 파일을 주시문서 목록에 추가',
'tog-watchmoves' => '내가 이동하는 문서와 파일을 주시문서 목록에 추가',
'tog-watchdeletion' => '내가 삭제하는 문서와 파일을 주시문서 목록에 추가',
-'tog-minordefault' => '사소한 편집을 기본적으로 선택하기',
-'tog-previewontop' => '편집 상자 앞에 미리 보기 보기',
-'tog-previewonfirst' => '처음 편집할 때 미리 보기 보기',
+'tog-minordefault' => '모든 편집에 기본적으로 사소한 편집을 표시',
+'tog-previewontop' => '편집 상자 앞에 미리 보기 보이기',
+'tog-previewonfirst' => '처음 편집할 때 미리 보기 보이기',
'tog-enotifwatchlistpages' => '주시문서 목록에 속한 문서나 파일이 바뀌면 이메일로 알림',
'tog-enotifusertalkpages' => '내 토론 문서가 바뀌면 이메일로 알림',
'tog-enotifminoredits' => '문서나 파일의 사소한 편집도 이메일로 알림',
'tog-enotifrevealaddr' => '알림 메일에 내 이메일 주소를 밝히기',
-'tog-shownumberswatching' => '주시 ì\82¬ì\9a©ì\9e\90 ì\88\98 보기',
+'tog-shownumberswatching' => '주시í\95\98ë\8a\94 ì\82¬ì\9a©ì\9e\90 ì\88\98 ë³´ì\9d´ê¸°',
'tog-oldsig' => '현재 서명:',
'tog-fancysig' => '서명을 위키텍스트로 취급 (자동으로 링크를 걸지 않음)',
'tog-uselivepreview' => '실시간 미리 보기 사용하기 (실험 기능)',
'tog-watchlisthidepatrolled' => '주시문서 목록에서 검토한 편집을 숨기기',
'tog-ccmeonemails' => '이메일을 보낼 때 내 이메일로 복사본을 보내기',
'tog-diffonly' => '편집 차이를 비교할 때 문서 내용을 보지 않기',
-'tog-showhiddencats' => '숨은 분류 보기',
+'tog-showhiddencats' => '숨은 분류 보이기',
'tog-noconvertlink' => '링크 제목 변환을 비활성화',
-'tog-norollbackdiff' => 'ë\90\98ë\8f\8c리기 í\9b\84 ì°¨ì\9d´ë¥¼ ë³´ì\9d´ì§\80 ì\95\8a기',
+'tog-norollbackdiff' => '되돌리기 후 차이를 보지 않기',
'tog-useeditwarning' => '바꾼 내용을 저장하지 않고 편집 페이지를 벗어날 때 알림',
'tog-prefershttps' => '로그인할 때 항상 보안 연결 사용',
'underline-always' => '항상',
-'underline-never' => '치지 않음',
-'underline-default' => '스킨 또는 브라우저 설정을 따르기',
+'underline-never' => '항상 치지 않기',
+'underline-default' => '스킨 또는 브라우저 기본 값을 따르기',
# Font style option in Special:Preferences
-'editfont-style' => '편집창의 글꼴:',
-'editfont-default' => '브라우저 설정을 따르기',
+'editfont-style' => '편집 창의 글꼴:',
+'editfont-default' => '브라우저 기본 값을 따르기',
'editfont-monospace' => '고정폭 글꼴',
-'editfont-sansserif' => '산세리프ì²´',
-'editfont-serif' => '세리프ì²´',
+'editfont-sansserif' => '산세리프 ê¸\80ê¼´',
+'editfont-serif' => '세리프 ê¸\80ê¼´',
# Dates
'sunday' => '일요일',
'listingcontinuesabbrev' => '(계속)',
'index-category' => '색인된 문서',
'noindex-category' => '색인에서 제외되는 문서',
-'broken-file-category' => '잘못된 파일 링크가 포함된 문서',
+'broken-file-category' => '깨진 파일 링크가 포함된 문서',
'about' => '소개',
'article' => '본문',
'morenotlisted' => '이 목록은 완성되지 않았습니다.',
'mypage' => '문서',
'mytalk' => '토론',
-'anontalk' => '익명 사용자 토론',
+'anontalk' => '익명 사용자와 토론',
'navigation' => '둘러보기',
'and' => ',',
'delete' => '삭제',
'deletethispage' => '이 문서 삭제하기',
'undeletethispage' => '이 문서를 되살리기',
-'undelete_short' => '{{PLURAL:$1|편집 $1개}} 되살리기',
-'viewdeleted_short' => '{{PLURAL:$1|삭제된 편집 $1개}} 보기',
+'undelete_short' => '{{PLURAL:$1|편집}} $1개 되살리기',
+'viewdeleted_short' => '{{PLURAL:$1|삭제된 편집}} $1개 보기',
'protect' => '보호',
'protect_change' => '보호 수준 바꾸기',
'protectthispage' => '이 문서 보호하기',
'jumpto' => '이동:',
'jumptonavigation' => '둘러보기',
'jumptosearch' => '검색',
-'view-pool-error' => '서버가 과부하에 걸렸습니다.
+'view-pool-error' => '현재 서버에 과부하가 걸렸습니다.
너무 많은 사용자가 이 문서를 보려고 하고 있습니다.
이 문서를 다시 열기 전에 잠시만 기다려주세요.
$1',
'pool-timeout' => '잠금 대기 중 타임아웃',
-'pool-queuefull' => '풀 큐가 가득 찼습니다',
+'pool-queuefull' => '풀 대기열이 가득 찼습니다',
'pool-errorunknown' => '알 수 없는 오류',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage).
'privacypage' => 'Project:개인 정보 정책',
'badaccess' => '권한 오류',
-'badaccess-group0' => 'ì\9a\94ì²í\95\9c ë\8f\99ì\9e\91을 실행할 권한이 없습니다.',
-'badaccess-groups' => 'ì\9a\94ì²í\95\9c ë\8f\99ì\9e\91은 {{PLURAL:$2|다음|다음 중 하나의}} 권한을 가진 사용자에게만 가능합니다: $1',
+'badaccess-group0' => 'ì\9a\94ì²í\95\9c ëª\85ë ¹을 실행할 권한이 없습니다.',
+'badaccess-groups' => 'ì\9a\94ì²í\95\9c ëª\85ë ¹은 {{PLURAL:$2|다음|다음 중 하나의}} 권한을 가진 사용자에게만 가능합니다: $1',
'versionrequired' => '미디어위키 $1 버전 필요',
'versionrequiredtext' => '이 문서를 사용하려면 $1 버전 미디어위키가 필요합니다.
'ok' => '확인',
'retrievedfrom' => '원본 주소 "$1"',
-'youhavenewmessages' => '다른 사용자가 남긴 $1가 있습니다. ($2)',
-'youhavenewmessagesfromusers' => '{{PLURAL:$3|다른 사용자가|사용자 $3명이}} 남긴 $1가 있습니다. ($2)',
-'youhavenewmessagesmanyusers' => '여러 사용자가 남긴 $1가 있습니다. ($2)',
+'youhavenewmessages' => '다른 사용자가 $1를 {{PLURAL:$3|남겼습니다}}. ($2)',
+'youhavenewmessagesfromusers' => '{{PLURAL:$3|다른 사용자가|사용자 $3명이}} $1를 {{PLURAL:$4|남겼습니다}}. ($2)',
+'youhavenewmessagesmanyusers' => '여러 사용자가 $1를 남겼습니다. ($2)',
'newmessageslinkplural' => '{{PLURAL:$1|새 메시지}}',
'newmessagesdifflinkplural' => '마지막으로 {{PLURAL:$1|바뀐 내용}}',
'youhavenewmessagesmulti' => '다른 사용자가 $1에 남긴 새 메시지가 있습니다',
'collapsible-expand' => '펼치기',
'thisisdeleted' => '$1 문서를 보거나 되살리겠습니까?',
'viewdeleted' => '$1 문서를 보겠습니까?',
-'restorelink' => '{{PLURAL:$1|삭제된 편집 $1개}}',
+'restorelink' => '{{PLURAL:$1|삭제된 편집}} $1개',
'feedlinks' => '피드:',
'feed-invalid' => '잘못된 구독 피드 방식입니다.',
-'feed-unavailable' => 'í\94¼ë\93\9c ì\84\9cë¹\84ì\8a¤ë\8a\94 ì \9cê³µí\95\98ì§\80 ì\95\8a습니다',
+'feed-unavailable' => 'í\94¼ë\93\9c ì\84\9cë¹\84ì\8a¤ë¥¼ ì\82¬ì\9a©í\95 ì\88\98 ì\97\86습니다',
'site-rss-feed' => '$1 RSS 피드',
'site-atom-feed' => '$1 Atom 피드',
'page-rss-feed' => '"$1" RSS 피드',
'nstab-category' => '분류',
# Main script and global functions
-'nosuchaction' => 'í\95´ë\8b¹í\95\98ë\8a\94 ë\8f\99ì\9e\91이 없습니다.',
-'nosuchactiontext' => 'URL로 요청한 동작이 잘못되었습니다.
+'nosuchaction' => 'í\95´ë\8b¹í\95\98ë\8a\94 ëª\85ë ¹이 없습니다.',
+'nosuchactiontext' => 'URL이 지정한 명령이 잘못되었습니다.
URL을 잘못 입력하였거나, 잘못된 링크를 따라갔을 수 있습니다.
{{SITENAME}}의 버그일 수도 있습니다.',
'nosuchspecialpage' => '해당하는 특수 문서가 없습니다.',
'error' => '오류',
'databaseerror' => '데이터베이스 오류',
'databaseerror-text' => '데이터베이스 쿼리에 오류가 발생했습니다.
-ì\86\8cí\94\84í\8a¸ì\9b¨ì\96´ì\9d\98 버그가 있을 수 있습니다.',
+ì\86\8cí\94\84í\8a¸ì\9b¨ì\96´ì\97\90 버그가 있을 수 있습니다.',
'databaseerror-textcl' => '데이터베이스 쿼리에 오류가 발생했습니다.',
'databaseerror-query' => '쿼리: $1',
'databaseerror-function' => '함수: $1',
'databaseerror-error' => '오류: $1',
-'laggedslavemode' => "'''ê²½ê³ :''' 문ì\84\9cê°\80 ìµ\9cê·¼ì\97\90 ë°\94ë\80\90 ë\82´ì\9a©ì\9d´ ì\95\84ë\8b\90 수도 있습니다.",
+'laggedslavemode' => "'''ê²½ê³ :''' 문ì\84\9cê°\80 ìµ\9cê·¼ì\97\90 ë°\94ë\80\90 ë\82´ì\9a©ì\9d\84 í\8f¬í\95¨í\95\98ì§\80 ì\95\8aì\9d\84 수도 있습니다.",
'readonly' => '데이터베이스 잠김',
'enterlockreason' => '데이터베이스를 잠그는 이유와 예상되는 기간을 적어 주세요.',
'readonlytext' => '데이터베이스가 잠겨 있어서 문서를 편집할 수 없습니다. 데이터베이스 관리가 끝난 후에는 정상으로 돌아올 것입니다.
'readonly_lag' => '슬레이브 데이터베이스가 마스터 서버의 자료를 새로 고치는 중입니다. 데이터베이스가 자동으로 잠겨 있습니다.',
'internalerror' => '내부 오류',
'internalerror_info' => '내부 오류: $1',
-'fileappenderrorread' => 'ë\82´ì\9a©ì\9d\84 ë\8d§ë¶\99ì\9d´ë\8b¤ê°\80 "$1" í\8c\8cì\9d¼ì\9d\84 ì\9d½ì\9d\84 ì\88\98 ì\97\86습니다.',
+'fileappenderrorread' => 'ë\82´ì\9a©ì\9d\84 ë\8d§ë¶\99ì\9d´ë\8a\94 ë\8f\84ì¤\91 "$1" í\8c\8cì\9d¼ì\9d\84 ì\9d½ì\9d\84 ì\88\98 ì\97\86ì\97\88습니다.',
'fileappenderror' => '"$1" 파일을 "$2"에 덧붙일 수 없습니다.',
'filecopyerror' => '"$1" 파일을 "$2"로 복사할 수 없습니다.',
'filerenameerror' => '"$1" 파일을 "$2"로 옮길 수 없습니다.',
'filedeleteerror' => '"$1" 파일을 삭제할 수 없습니다.',
'directorycreateerror' => '"$1" 디렉터리를 만들 수 없습니다.',
'filenotfound' => '"$1" 파일을 찾을 수 없습니다.',
-'fileexistserror' => '"$1" 파일이 이미 있어 여기에 쓸 수 없습니다.',
-'unexpected' => '예상되지 않은 값: "$1"="$2"',
+'fileexistserror' => '"$1" 파일이 이미 있어서 쓸 수 없습니다.',
+'unexpected' => '예기치 못한 값: "$1"="$2"',
'formerror' => '오류: 양식을 제출할 수 없습니다.',
-'badarticleerror' => '지금의 명령은 이 문서에서는 실행할 수 없습니다.',
+'badarticleerror' => '해당 명령은 이 문서에서 실행할 수 없습니다.',
'cannotdelete' => '"$1" 문서나 파일을 삭제할 수 없습니다.
이미 삭제되었을 수도 있습니다.',
'cannotdelete-title' => '"$1" 문서를 삭제할 수 없습니다.',
-'delete-hook-aborted' => 'í\9b\85ì\97\90 ì\9d\98í\95´ ì\82ì \9cê°\80 ì¤\91ë\8b¨ë\90\98ì\97\88ì\8aµë\8b\88ë\8b¤.
+'delete-hook-aborted' => 'í\9b\85ì\9d´ ì\82ì \9c를 ì¤\91ë\8b¨í\96\88ì\8aµë\8b\88ë\8b¤.
아무런 설명도 주어지지 않았습니다.',
'no-null-revision' => '"$1" 문서에 대한 새 빈 판을 만들 수 없습니다',
'badtitle' => '잘못된 제목',
'badtitletext' => '요청한 문서 제목이 잘못되었거나, 비어있거나, 잘못된 인터위키 제목으로 링크했습니다.
문서 제목에 사용할 수 없는 문자를 사용했을 수 있습니다.',
-'perfcached' => '다음 자료는 캐시된 것이므로 현재 상황을 반영하지 않을 수 있습니다. 캐시에 최대 {{PLURAL:$1|결과 $1개}}가 있습니다.',
+'perfcached' => '다음 자료는 캐시된 것이므로 새로 바뀐 내용을 반영하지 못할 수도 있습니다. 캐시에 최대 {{PLURAL:$1|$1개의 결과}}가 있습니다.',
'perfcachedts' => '다음 자료는 캐시된 것으로, $1에 마지막으로 새로 고쳐졌습니다. 캐시에 최대 {{PLURAL:$4|결과 $4개}}가 있습니다.',
'querypage-no-updates' => '이 문서의 새로 고침이 현재 비활성화되어 있습니다.
-ì\9e\90ë£\8cê°\80 ì\9e ì\8b\9c 새로 고치지 않을 것입니다.',
+ì\9d´ 문ì\84\9cì\9d\98 ì\9e\90ë£\8c를 ì\9e ì\8b\9c ë\8f\99ì\95\88 새로 고치지 않을 것입니다.',
'viewsource' => '원본 보기',
'viewsource-title' => '$1 문서 원본 보기',
'actionthrottled' => '동작 중지',
-'actionthrottledtext' => '스팸을 막기 위해 짧은 시간 안에 이 작업을 너무 많이 하는 것을 막고 있습니다.
+'actionthrottledtext' => '스팸을 막기 위해 짧은 시간 동안 이 작업을 너무 많이 수행하는 것을 막고 있습니다.
제한을 넘었으니 몇 분 뒤에 새로 시도하세요.',
-'protectedpagetext' => '이 문서는 편집하거나 다른 행동을 할 수 없도록 보호되어 있습니다.',
+'protectedpagetext' => '이 문서는 편집하거나 다른 명령을 할 수 없도록 보호되어 있습니다.',
'viewsourcetext' => '문서의 원본을 보거나 복사할 수 있습니다:',
'viewyourtext' => "이 문서에 남긴 '''내 편집''' 내용을 보거나 복사할 수 있습니다:",
'protectedinterface' => '이 문서는 이 위키의 소프트웨어 인터페이스에 쓰이는 문서로, 부정 행위를 막기 위해 보호되어 있습니다.
'invalidtitle-knownnamespace' => '제목 오류: "$2" 이름공간과 "$3" 텍스트',
'invalidtitle-unknownnamespace' => '제목 오류: 알 수 없는 $1 이름공간 번호와, "$2" 텍스트',
'exception-nologin' => '로그인하지 않음',
-'exception-nologin-text' => '이 행동을 하거나 이 문서에 접근하려면 [[Special:Userlogin|로그인]]하십시오.',
-'exception-nologin-text-manual' => '이 문서에 접근하거나 이 행동을 하려면 $1하십시오.',
+'exception-nologin-text' => '이 문서에 접근하거나 이 명령을 수행하려면 [[Special:Userlogin|로그인]]하세요.',
+'exception-nologin-text-manual' => '이 문서에 접근하거나 이 명령을 수행하려면 $1하세요.',
# Virus scanner
'virus-badscanner' => "잘못된 설정: 알 수 없는 바이러스 검사기: '''$1'''",
'virus-scanfailed' => '검사 실패 (코드 $1)',
-'virus-unknownscanner' => '알려지지 않은 백신:',
+'virus-unknownscanner' => '알 수 없는 백신 소프트웨어:',
# Login and logout pages
'logouttext' => "'''지금 로그아웃했습니다.'''
-브라우저 캐시를 지우지 않으면 일부 문서에서 로그인이 되어 있는 것처럼 보일 수 있다는 점을 참고하세요.",
-'welcomeuser' => '$1, 환영합니다!',
+브라우저 캐시를 지우지 않으면 일부 문서에서 로그인이 되어 있는 것처럼 보일 수 있습니다.",
+'welcomeuser' => '$1 님, 환영합니다!',
'welcomecreation-msg' => '계정이 만들어졌습니다.
[[Special:Preferences|{{SITENAME}} 사용자 환경 설정]]을 바꿀 수 있습니다.',
'yourname' => '사용자 이름:',
'userlogin-noaccount' => '계정이 없나요?',
'userlogin-joinproject' => '{{SITENAME}}에 가입하세요',
'nologin' => '계정이 없나요? $1.',
-'nologinlink' => 'ê³\84ì \95ì\9d\84 ë§\8cë\93¤ê¸°',
+'nologinlink' => 'ê³\84ì \95ì\9d\84 ë§\8cë\93\9cì\84¸ì\9a\94',
'createaccount' => '계정 만들기',
'gotaccount' => '계정이 이미 있다면, $1.',
'gotaccountlink' => '로그인하세요',
'userlogin-resetpassword-link' => '비밀번호를 잊으셨나요?',
'helplogin-url' => 'Help:로그인',
'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|로그인에 관한 도움말]]',
-'userlogin-loggedin' => 'ì\9d´ë¯¸ $1ë¡\9c ë¡\9cê·¸ì\9d¸ë\90\98ì\96´ ì\9e\88ì\8aµë\8b\88ë\8b¤. ì\95\84ë\9e\98ì\9d\98 ì\96\91ì\8b\9dì\9c¼ë¡\9c 다른 계정으로 로그인하세요.',
+'userlogin-loggedin' => 'ì\9d´ë¯¸ $1ë¡\9c ë¡\9cê·¸ì\9d¸ë\90\98ì\96´ ì\9e\88ì\8aµë\8b\88ë\8b¤. ì\95\84ë\9e\98ì\9d\98 ì\96\91ì\8b\9dì\9d\84 ì\82¬ì\9a©í\95\98ì\97¬ 다른 계정으로 로그인하세요.',
'userlogin-createanother' => '다른 계정 만들기',
'createacct-join' => '아래에 정보를 입력하세요.',
'createacct-another-join' => '아래에 새 계정의 정보를 입력하세요.',
'createacct-submit' => '계정 만들기',
'createacct-another-submit' => '다른 계정 만들기',
'createacct-benefit-heading' => '{{SITENAME}}(은)는 여러분과 같은 사람으로 이루어집니다.',
-'createacct-benefit-body1' => '{{PLURAL:$1|편집 수}}',
-'createacct-benefit-body2' => '{{PLURAL:$1|문서 수}}',
+'createacct-benefit-body1' => '{{PLURAL:$1|편집}}',
+'createacct-benefit-body2' => '{{PLURAL:$1|문서}}',
'createacct-benefit-body3' => '최근 {{PLURAL:$1|기여자}}',
'badretype' => '입력한 비밀번호가 일치하지 않습니다.',
'userexists' => '입력하신 사용자 이름이 이미 등록되어 있습니다.
# Email sending
'php-mail-error-unknown' => 'PHP의 mail() 함수에서 알 수 없는 오류가 발생했습니다.',
-'user-mail-no-addy' => '받는이의 이메일 주소가 없으면 이메일을 보낼 수 없습니다.',
+'user-mail-no-addy' => '받는 이의 이메일 주소가 없으면 이메일을 보낼 수 없습니다.',
'user-mail-no-body' => '비어 있거나 지나치게 짧은 본문으로 이메일을 보내려고 했습니다.',
# Change password dialog
'retypenew' => '새 비밀번호 재입력:',
'resetpass_submit' => '비밀번호를 설정하고 로그인하기',
'changepassword-success' => '비밀번호가 성공적으로 바뀌었습니다!',
+'changepassword-throttled' => '로그인에 연속으로 실패하였습니다.
+$1 기다렸다가 다시 시도하세요.',
'resetpass_forbidden' => '비밀번호를 바꿀 수 없습니다',
'resetpass-no-info' => '이 특수 문서에 직접 접근하려면 반드시 로그인해야 합니다.',
'resetpass-submit-loggedin' => '비밀번호 바꾸기',
'passwordreset-capture' => '발송 결과 이메일을 보시겠습니까?',
'passwordreset-capture-help' => '이 상자에 체크하면 이메일이 발송된 즉시 임시 비밀번호가 담긴 이메일을 볼 수 있습니다.',
'passwordreset-email' => '이메일 주소:',
-'passwordreset-emailtitle' => '{{SITENAME}} 계정 자세한 정보',
+'passwordreset-emailtitle' => '{{SITENAME}} 계정에 대한 자세한 정보',
'passwordreset-emailtext-ip' => '$1 IP 주소를 사용하는 누군가가 아마 자신이 {{SITENAME}} ($4)의 비밀번호 재설정을 요청하였습니다.
이 이메일 주소와 연관된 {{PLURAL:$3|계정}}의 목록입니다:
'changeemail-password' => '{{SITENAME}} 비밀번호:',
'changeemail-submit' => '이메일 주소 바꾸기',
'changeemail-cancel' => '취소',
+'changeemail-throttled' => '로그인에 연속으로 너무 많이 실패하였습니다.
+$1 기다렸다가 다시 시도하세요.',
# Special:ResetTokens
'resettokens' => '토큰 재설정',
'italic_sample' => '기울인 글씨',
'italic_tip' => '기울인 글씨',
'link_sample' => '링크 제목',
-'link_tip' => 'ì\95\88쪽 ë§\81í\81¬',
+'link_tip' => 'ë\82´ë¶\80 ê³ ë¦¬',
'extlink_sample' => 'http://www.example.com 사이트 이름',
'extlink_tip' => '바깥 링크 (주소 앞에 http://가 있어야 합니다)',
'headline_sample' => '제목',
# Edit pages
'summary' => '요약:',
'subject' => '주제/제목:',
-'minoredit' => '사소한 편집',
+'minoredit' => '사소한 편집입니다',
'watchthis' => '이 문서 주시하기',
'savearticle' => '저장',
'preview' => '미리 보기',
다시 \"{{int:savearticle}}\" 버튼을 클릭하면 글이 제목 없이 저장됩니다.",
'summary-preview' => '요약 미리 보기:',
'subject-preview' => '주제/제목 미리 보기:',
-'blockedtitle' => '차단됨',
+'blockedtitle' => 'ì\82¬ì\9a©ì\9e\90ê°\80 ì°¨ë\8b¨ë\90¨',
'blockedtext' => "'''사용자 계정 또는 IP 주소가 차단되었습니다.'''
차단한 사람은 $1입니다.
$1 또는 [[{{MediaWiki:Grouppage-sysop}}|다른 관리자]]에게 차단에 대해 문의할 수 있습니다.
[[Special:Preferences|계정 환경 설정]]에 올바른 이메일 주소가 있어야만 '이메일 보내기' 기능을 사용할 수 있습니다. 또 이메일 보내기 기능이 차단되어 있으면 이메일을 보낼 수 없습니다.
-지금 당신의 IP 주소는 $3이고, 차단 ID는 #$5입니다.
+현재 당신의 IP 주소는 $3이고, 차단 ID는 #$5입니다.
문의할 때에 이 정보를 같이 알려주세요.",
'autoblockedtext' => '당신의 IP 주소는 $1 사용자가 차단한 사용자가 사용했던 IP이기 때문에 자동으로 차단되었습니다.
차단된 이유는 다음과 같습니다:
'loginreqlink' => '로그인',
'loginreqpagetext' => '다른 문서를 보기 위해서는 $1해야 합니다.',
'accmailtitle' => '비밀번호를 보냈습니다',
-'accmailtext' => '[[User talk:$1|$1]] 사용자의 비밀번호가 임의로 만들어져 $2(으)로 보냈습니다. 로그인하고 나서 [[Special:ChangePassword|비밀번호를 바꿀]] 수 있습니다.',
+'accmailtext' => '[[User talk:$1|$1]] 사용자의 비밀번호를 임의로 만들어 $2(으)로 보냈습니다. 로그인하고 나서 [[Special:ChangePassword|비밀번호를 바꿀]] 수 있습니다.',
'newarticle' => '(새 문서)',
'newarticletext' => "아직 없는 문서의 링크를 따라왔습니다.
새 문서를 만들려면 아래 상자에 내용을 입력하면 됩니다. (자세한 내용은 [[{{MediaWiki:Helppage}}|도움말 문서]]를 참고하세요)
'nocreatetext' => '{{SITENAME}}에서 새로운 문서를 만드는 것은 제한되어 있습니다.
이미 존재하는 다른 문서를 편집하거나, [[Special:UserLogin|로그인하거나 계정을 만들]] 수 있습니다.',
'nocreate-loggedin' => '새 문서를 만들 권한이 없습니다.',
-'sectioneditnotsupported-title' => '부분 편집 지원 안됨',
+'sectioneditnotsupported-title' => '부분 편집 지원 안 됨',
'sectioneditnotsupported-text' => '이 문서에서는 문단 편집을 지원하지 않습니다.',
'permissionserrors' => '권한 오류',
'permissionserrorstext' => '해당 명령을 수행할 권한이 없습니다. 다음 {{PLURAL:$1|이유}}를 확인해보세요:',
'invalid-content-data' => '잘못된 내용 데이터입니다',
'content-not-allowed-here' => '"$1" 내용은 [[$2]] 문서예 허용하지 않습니다',
'editwarning-warning' => '이 페이지에서 벗어나면 저장하지 않은 바뀜이 모두 사라집니다.
-로그인을 했다면, 환경 설정의 "편집 상자"에서 이 경고를 띄우지 않도록 설정할 수 있습니다.',
+로그인을 했다면, 환경 설정의 "{{int:편집 상자}}"에서 이 경고를 띄우지 않도록 설정할 수 있습니다.',
+'editpage-notsupportedcontentformat-title' => '지원하지 않는 컨텐츠 형식',
+'editpage-notsupportedcontentformat-text' => '컨텐츠 모델 $2 에서는 컨텐츠형식 $1을 지원하지 않습니다.',
# Content models
'content-model-wikitext' => '위키텍스트',
'post-expand-template-inclusion-warning' => "'''경고:''' 틀 포함 크기가 너무 큽니다.
일부 틀은 포함되지 않을 수 있습니다.",
'post-expand-template-inclusion-category' => '사용한 틀의 크기가 지나치게 큰 문서의 목록',
-'post-expand-template-argument-warning' => "'''경고:''' 이 문서는 전개하면 크기가 너무 큰 틀 변수가 하나 이상 포함되어 있습니다.
-이 변수는 생략했습니다.",
+'post-expand-template-argument-warning' => "'''경고:''' 이 문서는 전개하면 크기가 너무 큰 틀 인수가 하나 이상 포함되어 있습니다.
+이 인수는 생략했습니다.",
'post-expand-template-argument-category' => '생략된 틀 변수를 포함한 문서',
'parser-template-loop-warning' => '재귀적인 틀이 발견되었습니다: [[$1]]',
-'parser-template-recursion-depth-warning' => '틀 반복 횟수 제한을 초과함($1)',
+'parser-template-recursion-depth-warning' => '틀 반복 깊이 제한을 초과함 ($1)',
'language-converter-depth-warning' => '언어 변환기 실행 제한 초과($1)',
'node-count-exceeded-category' => '문서가 노드 횟수를 초과하였습니다.',
'node-count-exceeded-warning' => '문서가 노드 수를 초과하였습니다.',
'revdelete-legend' => '보이기 제한을 설정',
'revdelete-hide-text' => '판 내용',
'revdelete-hide-image' => '파일을 숨기기',
-'revdelete-hide-name' => '기록 내용과 대상을 숨기기',
+'revdelete-hide-name' => '명령 내용과 대상을 숨기기',
'revdelete-hide-comment' => '편집 요약',
'revdelete-hide-user' => '편집자의 사용자 이름/IP 주소',
'revdelete-hide-restricted' => '관리자도 보지 못하게 숨기기',
'revdelete-radio-same' => '(바꾸지 않음)',
'revdelete-radio-set' => '숨겨짐',
-'revdelete-radio-unset' => 'ë³´ì\97¬ì§\90',
+'revdelete-radio-unset' => 'ë³´ì\9e\84',
'revdelete-suppress' => '문서 내용을 관리자에게도 보이지 않게 숨기기',
'revdelete-unsuppress' => '되살린 판에 대한 제한을 해제',
'revdelete-log' => '이유:',
'showhideselectedversions' => '선택한 판을 보이기/숨기기',
'editundo' => '편집 취소',
'diff-empty' => '(차이 없음)',
-'diff-multi' => '({{PLURAL:$2|한 사용자의|사용자 $2명의}} {{PLURAL:$1|중간의 편집 $1개}} 숨겨짐)',
+'diff-multi-sameuser' => '(같은 사용자에 의한 {{PLURAL:$1|하나의 중간 편집|$1개의 중간 편집}}이 숨겨짐)',
+'diff-multi-otherusers' => '({{PLURAL:$2|한 명의 사용자|$2명의 사용자}}에 의한 {{PLURAL:$1|$1개의 중간 편집}}이 숨겨짐)',
'diff-multi-manyusers' => '({{PLURAL:$2|한 사용자의|사용자 $2명 이상의}} {{PLURAL:$1|중간의 편집 $1개}} 숨겨짐)',
'difference-missing-revision' => '문서 비교에서 {{PLURAL:$2|하나|$2개}}의 판($1)을 찾을 수 {{PLURAL:$2|없습니다}}.
'shown-title' => '쪽마다 {{PLURAL:$1|결과}} $1개씩 보기',
'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3) 보기',
'searchmenu-exists' => "'''이 위키에 \"[[:\$1]]\"의 이름을 가진 문서가 있습니다.'''",
-'searchmenu-new' => "'''이 위키에 \"[[:\$1]]\" 문서를 만드세요!'''",
+'searchmenu-new' => '<strong>이 위키에 "[[:$1]]" 문서를 만드세요!</strong>
+{{PLURAL:$2|0=|검색으로 찾은 문서들을 참조하세요.}}',
'searchprofile-articles' => '본문',
'searchprofile-project' => '도움말 및 프로젝트 문서',
'searchprofile-images' => '멀티미디어',
'searchprofile-articles-tooltip' => '$1에서 검색',
'searchprofile-project-tooltip' => '$1에서 검색',
'searchprofile-images-tooltip' => '파일 검색',
-'searchprofile-everything-tooltip' => '토론 문서를 포함한 모든 문서 검색',
+'searchprofile-everything-tooltip' => '모든 문서 검색(토론 문서를 포함)',
'searchprofile-advanced-tooltip' => '다음 설정한 이름공간에서 검색',
'search-result-size' => '$1 ({{PLURAL:$2|1 단어|$2 단어}})',
'search-result-category-size' => '{{PLURAL:$1|문서 1개|문서 $1개}}, {{PLURAL:$2|하위 분류 1개|하위 분류 $2개}}, {{PLURAL:$3|파일 1개|파일 $3개}}',
'search-result-score' => '유사도: $1%',
'search-redirect' => '($1에서 넘어옴)',
'search-section' => '($1 문단)',
+'search-file-match' => '(내용이 일치하는 파일 있음)',
'search-suggest' => '$1 문서를 찾고 있으신가요?',
'search-interwiki-caption' => '자매 프로젝트',
'search-interwiki-default' => '$1 결과:',
'searchall' => '모두',
'showingresults' => "'''$2'''번 부터의 {{PLURAL:$1|결과 '''1'''개|결과 '''$1'''개}}입니다.",
'showingresultsnum' => "'''$2'''번 부터의 {{PLURAL:$3|결과 '''1'''개|결과 '''$3'''개}} 입니다.",
-'showingresultsheader' => "'''$4''' ê²\80ì\83\89ì\96´ì\97\90 ë\8c\80í\95\98ì\97¬ {{PLURAL:$5|ê²°ê³¼ '''$3'''ê°\9c ì¤\91 '''$1'''ê°\9c|ê²°ê³¼ '''$3'''ê°\9c ì¤\91 '''$1 - $2'''ë²\88째}}를 ë³´ì\97¬ ì£¼ê³ ì\9e\88ì\8aµë\8b\88ë\8b¤",
+'showingresultsheader' => "'''$4''' ê²\80ì\83\89ì\96´ì\97\90 ë\8c\80í\95\9c {{PLURAL:$5|ê²°ê³¼ '''$3'''ê°\9c ì¤\91 '''$1'''ê°\9c|ê²°ê³¼ '''$3'''ê°\9c ì¤\91 '''$1 - $2'''ë²\88째}}",
'search-nonefound' => '검색어와 일치하는 결과가 없습니다.',
'powersearch-legend' => '고급 검색',
'powersearch-ns' => '다음 이름공간에서 검색:',
'powersearch-togglelabel' => '확인:',
'powersearch-toggleall' => '모두',
'powersearch-togglenone' => '모두 제외',
-'search-external' => '바깥 검색',
+'search-external' => '바깥에서 검색',
'searchdisabled' => '{{SITENAME}} 검색이 비활성화되어 있습니다.
검색이 작동하지 않는 동안에는 Google(구글)을 통해 검색할 수 있습니다.
검색 엔진의 내용은 최신이 아닐 수 있다는 점을 참고하세요.',
'prefsnologintext2' => '사용자 환경 설정을 설정하려면 $1하십시오.',
'prefs-skin' => '스킨',
'skin-preview' => '미리 보기',
-'datedefault' => '기본값',
+'datedefault' => '기본 값',
'prefs-beta' => '베타 기능',
'prefs-datetime' => '날짜와 시각',
'prefs-labs' => '실험 중인 기능',
'rows' => '줄 수:',
'columns' => '열 수:',
'searchresultshead' => '검색',
-'resultsperpage' => '쪽마다 보이는 결과 수:',
'stub-threshold' => '링크를 <a href="#" class="stub">토막글</a> 형식으로 보여줄 문서 크기 (바이트 수):',
'stub-threshold-disabled' => '비활성화됨',
'recentchangesdays' => '최근 바뀜에 보여줄 날짜 수:',
'savedprefs' => '설정을 저장했습니다.',
'timezonelegend' => '시간대:',
'localtime' => '현지 시각:',
-'timezoneuseserverdefault' => '위키 기본값($1)을 사용',
+'timezoneuseserverdefault' => '위키 기본 값($1)을 사용',
'timezoneuseoffset' => '기타 (시차를 입력해주세요)',
'servertime' => '서버 시각:',
'guesstimezone' => '웹 브라우저 설정에서 가져오기',
'prefs-searchoptions' => '검색',
'prefs-namespaces' => '이름공간',
'defaultns' => '다음 이름공간에서 검색:',
-'default' => '기본값',
+'default' => '기본 값',
'prefs-files' => '파일',
'prefs-custom-css' => '사용자 CSS',
'prefs-custom-js' => '사용자 자바스크립트',
'prefs-common-css-js' => '모든 스킨에 대한 공통 CSS/자바스크립트:',
-'prefs-reset-intro' => '이 사이트의 기본값으로 환경 설정을 재설정할 수 있습니다.
+'prefs-reset-intro' => '이 사이트의 기본 값으로 환경 설정을 재설정할 수 있습니다.
재설정한 환경 설정은 되돌릴 수 없습니다.',
'prefs-emailconfirm-label' => '이메일 인증:',
'youremail' => '이메일:',
HTML 태그를 확인하세요.',
'badsiglength' => '서명이 너무 깁니다.
서명은 $1 {{PLURAL:$1|글자}}보다 짧아야 합니다.',
-'yourgender' => 'ì\96´ë\96»ê²\8c ì\84±ë³\84ì\9d\84 ì\95\8cë ¤ì£¼ê³ ì\8b¶ì\8aµ니까?',
-'gender-unknown' => '자세히 알려주기 싫습니다',
+'yourgender' => 'ì\96´ë\96¤ ì\84±ë³\84ë¡\9c í\91\9cì\8b\9cë\90\98ë\8a\94 ê²\83ì\9d\84 ì\84 í\98¸í\95©니까?',
+'gender-unknown' => '밝히고 싶지 않습니다.',
'gender-male' => '위키 문서를 편집하는 남자입니다',
'gender-female' => '위키 문서를 편집하는 여자입니다',
-'prefs-help-gender' => '이 사용자 환경 설정을 설정하는 것은 선택 사항입니다.
-ì\86\8cí\94\84í\8a¸ì\9b¨ì\96´ë\8a\94 ë\8b¤ë¥¸ ì\82¬ì\9a©ì\9e\90ì\97\90ê²\8c í\99\94ë©´ì\9d\84 ë³´ì\97¬ì£¼ì\96´ ë\8b¹ì\8b ì\9d\84 ì\96¸ê¸\89í\95 ë\95\8c ì \81ì \88í\95\9c ì\84±ë³\84 문ë²\95ì\9d\84 ì\82¬ì\9a©í\95\98ë\8a\94 ë\8d° ì\9d´ ê°\92ì\9d\84 ì\82¬ì\9a©í\95©ë\8b\88ë\8b¤.
-이 정보는 공개됩니다.',
+'prefs-help-gender' => '이 항목은 선택 사항입니다.
+ì \81ì \88í\95\9c 문ë²\95ì \81 ì\84±ë³\84ì\9d\84 ì\82¬ì\9a©í\95\98ì\97¬ ë\8b¹ì\8b ì\9d\84 ì§\80ì¹í\95\98ê±°ë\82\98 ë\8b¤ë¥¸ ì\82¬ë\9e\8cë\93¤ì\97\90ê²\8c ë\8b¹ì\8b ì\9d\84 ì\96¸ê¸\89í\95\98ë\8a\94 ê²½ì\9a°ì\97\90 ì\9d´ í\95목ì\9d\98 ê°\92ì\9d´ ì\82¬ì\9a©ë\90©ë\8b\88ë\8b¤.
+이것은 공개 항목입니다.',
'email' => '이메일',
'prefs-help-realname' => '실명은 선택 사항입니다.
실명을 입력하면 문서 기여에 자신의 이름이 들어가게 됩니다.',
-'prefs-help-email' => '이메일 주소 입력은 선택 사항입니다. 다만 비밀번호를 잊었을 때 비밀번호 바꾸기를 위해 필요합니다.',
+'prefs-help-email' => '이메일 주소 입력은 선택 사항입니다. 다만 비밀번호를 잊었을 때 비밀번호를 재설정하기 위해 필요합니다.',
'prefs-help-email-others' => '자신의 문서나 토론 문서에 있는 이메일 보내기 링크로 다른 사용자가 연락할 수 있게 할 수도 있습니다.
이 경우에도 이메일 주소는 다른 사용자가 연락할 때 공개되지 않습니다.',
'prefs-help-email-required' => '이메일 주소가 필요합니다.',
'prefs-displaywatchlist' => '보이기 설정',
'prefs-tokenwatchlist' => '토큰',
'prefs-diffs' => '차이',
-'prefs-help-prefershttps' => '이 사용자 환경 설정은 다음 로그인에 적용됩니다.',
+'prefs-help-prefershttps' => '이 사용자 환경 설정은 다음 로그인부터 적용됩니다.',
'prefs-tabs-navigation-hint' => '팁: 탭 목록에서 탭 사이를 둘러보려면 왼쪽과 오른쪽 화살표 키를 사용할 수 있습니다.',
# User preference: email validation using jQuery
'userrights-changeable-col' => '바꿀 수 있는 권한',
'userrights-unchangeable-col' => '바꿀 수 없는 권한',
'userrights-conflict' => '사용자 권한 바꾸기가 충돌합니다! 바뀜을 검토하고 확인하세요.',
-'userrights-removed-self' => 'ì\9e\90ì\8b ì\9d\98 ê¶\8cí\95\9cì\9d\84 ì\84±ê³µì \81ì\9c¼ë¡\9c ì \9cê±°했습니다. 따라서 더 이상 이 문서에 접근할 수 없습니다.',
+'userrights-removed-self' => 'ì\9e\90ì\8b ì\9d\98 ê¶\8cí\95\9cì\9d\84 ì \9cê±°í\95\98ë\8a\94 ë\8d° ì\84±ê³µ했습니다. 따라서 더 이상 이 문서에 접근할 수 없습니다.',
# Groups
'group' => '그룹:',
'right-createpage' => '문서 만들기 (토론 문서 제외)',
'right-createtalk' => '토론 문서 만들기',
'right-createaccount' => '새 계정 만들기',
-'right-minoredit' => '사소한 편집 사용 가능',
+'right-minoredit' => '사소한 편집으로 표시',
'right-move' => '문서 이동',
'right-move-subpages' => '문서와 하위 문서 이동하기',
'right-move-rootuserpages' => '최상위 사용자 문서 이동',
'right-movefile' => '파일 옮기기',
-'right-suppressredirect' => '문ì\84\9c ì\9d´ë\8f\99í\95 ë\95\8c ì\9d´ì \84 ì\9d´ë¦\84ì\9c¼ë¡\9c ë\90\9c ë\84\98겨주기를 ë\82¨ê¸°지 않기',
+'right-suppressredirect' => '문ì\84\9c ì\9d´ë\8f\99í\95 ë\95\8c ì\9d´ì \84 ì\9d´ë¦\84ì\9c¼ë¡\9c ë\90\9c ë\84\98겨주기를 ë§\8cë\93¤지 않기',
'right-upload' => '파일 올리기',
'right-reupload' => '이미 존재하는 파일을 다시 올리기',
'right-reupload-own' => '자신이 이미 올린 파일 덮어쓰기',
'right-writeapi' => 'API 작성',
'right-delete' => '문서 삭제',
'right-bigdelete' => '문서 역사가 긴 문서를 삭제',
-'right-deletelogentry' => '특정 기록 항목을 삭제하고 되살리기',
-'right-deleterevision' => '문서의 특정 판을 삭제하고 되살리기',
+'right-deletelogentry' => '특정 기록 항목을 삭제 및 되살리기',
+'right-deleterevision' => '문서의 특정 판을 삭제 및 되살리기',
'right-deletedhistory' => '삭제된 문서의 내용을 제외한 역사를 보기',
'right-deletedtext' => '삭제된 문서의 내용과 편집상의 차이를 보기',
'right-browsearchive' => '삭제된 문서 검색',
'right-undelete' => '삭제된 문서 되살리기',
-'right-suppressrevision' => '관리자도 보지 못하도록 숨겨진 판을 검토하고 되살리기',
+'right-suppressrevision' => '관리자가 보지 못하도록 숨겨진 판을 검토하고 되살리기',
'right-suppressionlog' => '숨겨진 기록을 보기',
-'right-block' => '다른 사용자를 편집을 못하도록 차단',
+'right-block' => '다른 사용자가 편집을 못하도록 차단',
'right-blockemail' => '다른 사용자가 이메일을 보내지 못하도록 차단',
'right-hideuser' => '사용자 이름을 차단하고 숨김',
'right-ipblock-exempt' => 'IP 차단, 자동 차단, 광역 차단을 무시',
'action-undelete' => '이 문서 되살리기',
'action-suppressrevision' => '이 숨겨진 판을 검토하고 되살릴',
'action-suppressionlog' => '비공개 기록 보기',
-'action-block' => '이 사용자를 편집하지 못하도록 차단',
+'action-block' => '이 사용자가 편집하지 못하도록 차단',
'action-protect' => '이 문서의 보호 설정을 바꾸기',
'action-rollback' => '특정 문서를 마지막으로 편집한 사용자의 모든 편집을 간편하게 되돌리기',
'action-import' => '다른 위키에서 문서 가져오기',
-'action-importupload' => 'í\8c\8cì\9d¼ ì\98¬ë¦¬ê¸°ë¥¼ í\86µí\95´ 문ì\84\9c를 ê°\80ì ¸ì\98¬',
+'action-importupload' => 'í\8c\8cì\9d¼ ì\98¬ë¦¬ê¸°ë¥¼ í\86µí\95´ 문ì\84\9c를 ê°\80ì ¸ì\98¤ê¸°',
'action-patrol' => '다른 사용자의 편집을 검토된 것으로 표시하기',
'action-autopatrol' => '자신의 편집을 검토된 것으로 표시할',
'action-unwatchedpages' => '주시되지 않은 문서 목록 보기',
'recentchanges-summary' => '위키의 최근 바뀜이 나와 있습니다.',
'recentchanges-noresult' => '지정한 조건과 일치하는 주어진 기간 동안 바뀜이 없습니다.',
'recentchanges-feed-description' => '위키의 최근 바뀜이 나와 있습니다.',
-'recentchanges-label-newpage' => '새로운 문서',
+'recentchanges-label-newpage' => '새 문서',
'recentchanges-label-minor' => '사소한 편집',
'recentchanges-label-bot' => '봇의 편집',
-'recentchanges-label-unpatrolled' => '아직 검토하지 않은 편집',
+'recentchanges-label-unpatrolled' => '아직 순찰하지 않은 편집',
'recentchanges-label-plusminus' => '바이트로 표기된 바뀐 문서 크기',
'recentchanges-legend-heading' => "'''범례:'''",
-'recentchanges-legend-newpage' => '([[Special:NewPages|새 문서 목록]]도 참고)',
+'recentchanges-legend-newpage' => '([[Special:NewPages|새 문서 목록]]도 보세요)',
'recentchanges-legend-plusminus' => "(''±123'')",
'rcnotefrom' => "다음은 '''$2'''에서부터 바뀐 문서 '''$1'''개입니다.",
'rclistfrom' => '$1 이래로 새로 바뀐 문서 보기',
'rcshowhidebots' => '봇을 $1',
'rcshowhideliu' => '등록된 사용자를 $1',
'rcshowhideanons' => '익명 사용자를 $1',
-'rcshowhidepatr' => '검토된 편집을 $1',
+'rcshowhidepatr' => '순찰된 편집을 $1',
'rcshowhidemine' => '내 편집을 $1',
'rclinks' => '최근 $2일간의 $1개 바뀐 문서 보기<br />$3',
'diff' => '비교',
'recentchangeslinked-summary' => "여기를 가리키는 문서(분류일 경우 이 분류에 포함된 문서)에 대한 최근 바뀜이 나와 있습니다.
[[Special:Watchlist|주시하는 문서]]는 '''굵은''' 글씨로 나타납니다.",
'recentchangeslinked-page' => '문서 이름:',
-'recentchangeslinked-to' => '해당 문서를 링크한 문서의 바뀜 보기',
+'recentchangeslinked-to' => '해당 문서를 가리키는 문서의 바뀜 보기',
# Upload
'upload' => '파일 올리기',
문서에 파일을 넣으려면 아래 방법 중 하나를 사용하세요.
* '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.jpg]]</nowiki></code>''' 파일의 온전한 모양을 사용하고자 할 때
-* '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.png|200í\94½ì\85\80|ì\84¬ë\84¤ì\9d¼|ì\99¼ìª½|ì\84¤ëª\85]]</nowiki></code>''' í\8c\8cì\9d¼ì\9d\98 ë\84\93ì\9d´를 200픽셀로 하고 왼쪽 정렬하며 '설명' 이라는 주석을 파일 밑에 달 때
+* '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.png|200í\94½ì\85\80|ì\84¬ë\84¤ì\9d¼|ì\99¼ìª½|ì\84¤ëª\85]]</nowiki></code>''' í\8c\8cì\9d¼ì\9d\98 ë\84\88ë¹\84를 200픽셀로 하고 왼쪽 정렬하며 '설명' 이라는 주석을 파일 밑에 달 때
* '''<code><nowiki>[[</nowiki>{{ns:media}}<nowiki>:File.ogg]]</nowiki></code>''' 파일을 직접 보여주지 않고 파일로 바로 링크할 때",
'upload-permitted' => '허용하는 파일 확장자: $1',
'upload-preferred' => '권장하는 파일 확장자: $1',
'filename' => '파일 이름',
'filedesc' => '파일의 설명',
'fileuploadsummary' => '요약:',
-'filereuploadsummary' => '파일 바뀜에 대한 요약:',
+'filereuploadsummary' => '파일의 바뀜:',
'filestatus' => '저작권 상태:',
'filesource' => '출처:',
'uploadedfiles' => '파일 올리기',
'ignorewarning' => '경고를 무시하고 파일 저장',
'ignorewarnings' => '모든 경고 무시하기',
'minlength1' => '파일 이름은 적어도 1글자 이상이어야 합니다.',
-'illegalfilename' => 'í\8c\8cì\9d¼ ì\9d´ë¦\84 "$1"ì\97\90ë\8a\94 문ì\84\9c ì \9c목ì\9c¼ë¡\9c 허용되지 않는 글자가 포함되어 있습니다.
+'illegalfilename' => 'í\8c\8cì\9d¼ ì\9d´ë¦\84 "$1"ì\97\90ë\8a\94 문ì\84\9c ì \9c목ì\97\90 허용되지 않는 글자가 포함되어 있습니다.
이름을 바꾸어 다시 시도해 주세요.',
'filename-toolong' => '파일 이름은 240바이트를 넘을 수 없습니다.',
'badfilename' => '파일 이름이 "$1"로 바뀌었습니다.',
-'filetype-mime-mismatch' => '".$1" 파일 확장자와 이 파일의 MIME($2)가 일치하지 않습니다.',
-'filetype-badmime' => '"$1" MIME을 가진 파일은 올릴 수 없습니다.',
-'filetype-bad-ie-mime' => 'ì\9d¸í\84°ë\84· ì\9dµì\8a¤í\94\8cë¡\9cë\9f¬ê°\80 ì\9e ì\9e¬ì \81ì\9c¼ë¡\9c ì\9c\84í\97\98í\95\9c í\8c\8cì\9d¼ í\98\95ì\8b\9dì\9c¼ë¡\9c í\8c\90ë\8b¨ë\90\98ì\96´ ì\82¬ì\9a©ì\9d´ ê¸\88ì§\80ë\90\9c "$1"ë¡\9c ì\9d¸ì\8b\9dí\95 ì\88\98 ì\9e\88기 ë\95\8c문ì\97\90 ì\9d´ í\8c\8cì\9d¼ì\9d\84 ì\98¬ë¦´ ì\88\98 ì\97\86습니다.',
-'filetype-unwanted-type' => "'''\".\$1\"''' 확장자는 추천하지 않습니다.
-추천하는 {{PLURAL:\$3|파일 확장자}}는 \$2입니다.",
+'filetype-mime-mismatch' => '".$1" 파일 확장자와 이 파일의 MIME 형식($2)이 일치하지 않습니다.',
+'filetype-badmime' => '"$1" MIME 형식을 가진 파일은 올릴 수 없습니다.',
+'filetype-bad-ie-mime' => 'ì\9d´ í\8c\8cì\9d¼ì\9d\84 ì\98¬ë¦´ ì\88\98 ì\97\86ì\8aµë\8b\88ë\8b¤. ì\9d¸í\84°ë\84· ì\9dµì\8a¤í\94\8cë¡\9cë\9f¬ê°\80 ì\9e ì\9e¬ì \81ì\9c¼ë¡\9c ì\9c\84í\97\98í\95\9c í\8c\8cì\9d¼ í\98\95ì\8b\9dì\9c¼ë¡\9c í\8c\90ë\8b¨í\95\98ì\97¬ ì\82¬ì\9a©ì\9d´ ê¸\88ì§\80ë\90\9c "$1"ë¡\9c ì\9d¸ì\8b\9dí\95 ì\88\98 ì\9e\88습니다.',
+'filetype-unwanted-type' => "'''\".\$1\"''' 확장자는 권장하지 않습니다.
+권장하는 {{PLURAL:\$3|파일 확장자}}는 \$2입니다.",
'filetype-banned-type' => '\'\'\'".$1"\'\'\' {{PLURAL:$4|형식의 파일은 올릴 수 없습니다}}.
$2 {{PLURAL:$3|형식만 사용할 수 있습니다}}.',
'filetype-missing' => '파일에 확장자(".jpg" 등)가 없습니다.',
'unknown-error' => '알 수 없는 오류가 발생했습니다.',
'tmp-create-error' => '임시 파일을 만들 수 없습니다.',
'tmp-write-error' => '임시 파일을 작성하는 데 오류가 발생했습니다.',
-'large-file' => '파일 크기는 $1을 넘지 않는 것을 추천합니다.
+'large-file' => '파일 크기는 $1을 넘지 않는 것을 권장합니다.
이 파일의 크기는 $2입니다.',
'largefileserver' => '이 파일의 크기가 서버에서 허용된 설정보다 큽니다.',
'emptyfile' => '올리려는 파일이 빈 파일입니다.
[[File:$1|thumb|center|$1]]',
'file-exists-duplicate' => '현재 올리고 있는 {{PLURAL:$1|파일}}이 아래 파일과 중복됩니다:',
'file-deleted-duplicate' => '이 파일과 같은 파일 ([[:$1]])이 이전에 삭제된 적이 있습니다. 파일을 다시 올리기 전에 문서의 삭제 기록을 확인해 주시기 바랍니다.',
+'file-deleted-duplicate-notitle' => '이 파일과 같은 파일이 삭제된 이력이 있습니다. 업로드하기에 앞서, 삭제된 파일의 이력을 확인할 수 있는 권한을 가진 담당자에게 먼저 문의하기 바랍니다.',
'uploadwarning' => '올리기 경고',
'uploadwarning-text' => '아래의 파일 설명을 수정하고 다시 시도해 주세요.',
'savefile' => '파일 저장',
'overwroteimage' => '사용자가 "[[$1]]" 파일의 새 판을 올렸습니다.',
'uploaddisabled' => '올리기 비활성화됨',
'copyuploaddisabled' => 'URL로 파일 올리기가 비활성화되어 있습니다.',
-'uploadfromurl-queued' => '올리기 명령이 기록되었습니다.',
+'uploadfromurl-queued' => '올리기 명령이 대기열에 추가됐습니다.',
'uploaddisabledtext' => '파일 올리기 기능이 비활성화되어 있습니다.',
'php-uploaddisabledtext' => 'PHP 파일 올리기가 비활성화되었습니다. 파일 올리기 설정을 확인하십시오.',
'uploadscripted' => '이 파일에는 HTML이나 다른 스크립트 코드가 포함되어 있어, 웹 브라우저에서 오류를 일으킬 수 있습니다.',
'uploadvirus' => '파일이 바이러스를 포함하고 있습니다!
자세한 설명: $1',
'uploadjava' => '이 ZIP 파일은 자바의 .class 파일을 포함하고 있습니다.
-보안을 위한 제한을 우회할 수 있기 때문에 자바 파일을 올리는 것이 허용되지 않습니다.',
+보안 규제를 우회할 수 있기 때문에 자바 파일을 올리는 것이 허용되지 않습니다.',
'upload-source' => '원본 파일',
'sourcefilename' => '원본 파일 이름:',
'sourceurl' => '출처 URL:',
'upload-misc-error-text' => '파일을 올리는 중 알 수 없는 오류가 발생했습니다.
URL이 올바르고 접근 가능한지를 확인하고 다시 시도하세요.
문제가 계속되면 [[Special:ListUsers/sysop|관리자]]에게 연락해주세요.',
-'upload-too-many-redirects' => 'URL이 너무 많은 넘겨주기에 연결되어 있습니다.',
+'upload-too-many-redirects' => 'URL이 너무 많은 넘겨주기를 포함하고 있습니다.',
'upload-unknown-size' => '크기를 알 수 없음',
'upload-http-error' => 'HTTP 오류 발생: $1',
'upload-copy-upload-invalid-domain' => '이 도메인에 속하지 않는 웹사이트의 파일을 올릴 수 없습니다.',
'filehist-current' => '현재',
'filehist-datetime' => '날짜/시간',
'filehist-thumb' => '섬네일',
-'filehist-thumbtext' => '$1 판의 파일',
+'filehist-thumbtext' => '$1 판의 섬네일',
'filehist-nothumb' => '섬네일 없음',
'filehist-user' => '사용자',
'filehist-dimensions' => '크기',
'filerevert-defaultcomment' => '$1 $2 버전으로 되돌림',
'filerevert-submit' => '되돌리기',
'filerevert-success' => "'''[[Media:$1|$1]]''' 파일을 [$4 $2 $3 버전]으로 되돌렸습니다.",
-'filerevert-badversion' => '주ì\96´ì§\84 í\83\80ì\9e\84ì\8a¤í\83¬í\94\84를 가진 파일의 로컬 버전이 없습니다.',
+'filerevert-badversion' => 'ì\9e\85ë ¥ë\90\9c ì\8b\9cê°\84 기ë¡\9dì\9d\84 가진 파일의 로컬 버전이 없습니다.',
# File deletion
'filedelete' => '$1 삭제하기',
'mimesearch' => 'MIME 검색',
'mimesearch-summary' => 'MIME 유형에 해당하는 파일을 검색합니다.
다음 형태로 입력해주세요: 내용종류/하위종류, 예를 들어 <code>image/jpeg</code>',
-'mimetype' => 'MIME 종류:',
+'mimetype' => 'MIME 형식:',
'download' => '다운로드',
# Unwatched pages
'protectedpages' => '보호된 문서 목록',
'protectedpages-indef' => '오른쪽 조건에 맞는 보호만 보기',
'protectedpages-cascade' => '연쇄적 보호만 보기',
+'protectedpages-noredirect' => '넘겨주기 숨김',
'protectedpagesempty' => '보호되어 있는 문서가 없습니다.',
'protectedtitles' => '만들기 보호된 표제어 목록',
'protectedtitlesempty' => '해당 조건에 맞는 만들기 금지 표제어가 없습니다.',
'listusers' => '사용자 목록',
'listusers-editsonly' => '기여가 있는 사용자만 보기',
-'listusers-creationsort' => '계정을 만든 날짜 순으로 정렬',
+'listusers-creationsort' => '계정을 만든 날짜순으로 정렬',
'listusers-desc' => '내림차순으로 정렬',
'usereditcount' => '{{PLURAL:$1|편집}} $1회',
'usercreated' => '$1 $2에 계정 {{GENDER:$3|만들어짐}}',
'listusers-blocked' => '(차단됨)',
# Special:ActiveUsers
-'activeusers' => '활동적인 사용자 목록',
+'activeusers' => '활동하는 사용자 목록',
'activeusers-intro' => '다음은 최근 $1{{PLURAL:$1|일}} 동안 활동한 사용자의 목록입니다.',
'activeusers-count' => '마지막 {{PLURAL:$3|$3일}} 사이의 {{PLURAL:$1|활동}} $1회',
'activeusers-from' => '다음으로 시작하는 사용자를 보기:',
'noemailtext' => '이 사용자는 올바른 이메일 주소를 입력하지 않았습니다.',
'nowikiemailtitle' => '이메일이 허용되지 않음',
'nowikiemailtext' => '이 사용자는 다른 사용자로부터의 이메일을 받지 않도록 설정하였습니다.',
-'emailnotarget' => '받는이로 없는 사용자를 지정하였거나 사용자 이름이 잘못되었습니다.',
+'emailnotarget' => '없는 사용자를 받는 이로 지정하였거나 사용자 이름이 잘못되었습니다.',
'emailtarget' => '수신자 사용자 이름 입력',
'emailusername' => '사용자 이름:',
'emailusernamesubmit' => '확인',
'watchmethod-list' => '최근 편집을 확인하고자 주시된 문서 확인',
'watchlistcontains' => '{{PLURAL:$1|문서 $1개}}를 주시하고 있습니다.',
'iteminvalidname' => "'$1' 항목에 문제가 발생했습니다. 이름이 잘못되었습니다...",
-'wlnote' => "다음은 최근 {{PLURAL:$2|'''$2'''시간}} 동안 {{PLURAL:$1|바뀐 문서 '''$1'''개 입니다}}. ($3 $4 기준)",
+'wlnote2' => '아래는 $2, $3 기준으로 지난 {{PLURAL:$1|hour|<strong>$1</strong> 시간}} 동안의 바뀜입니다.',
'wlshowlast' => '최근 $1시간 $2일 또는 $3 동안에 바뀐 문서 보기',
'watchlist-options' => '주시문서 목록 설정',
'delete-warning-toobig' => '이 문서에는 {{PLURAL:$1|편집 역사}}가 $1개 있습니다.
편집 역사가 긴 문서를 삭제하면 {{SITENAME}} 데이터베이스 동작에 큰 영향을 줄 수 있습니다.
주의해 주세요.',
+'deleting-backlinks-warning' => "'''경고:''' 삭제하려는 문서가 다른 문서에 연결되거나 삽입되어 있습니다.",
# Rollback
'rollback' => '편집 되돌리기',
'protect-expiring' => '$1 (UTC)에 만료',
'protect-expiring-local' => '$1에 해제',
'protect-expiry-indefinite' => '무기한',
-'protect-cascade' => '연쇄적 보호 - 이 문서에서 사용되는 다른 문서를 함께 보호합니다.',
+'protect-cascade' => '연쇄적 보호 - 이 문서가 포함하고 있는 다른 문서를 함께 보호합니다.',
'protect-cantedit' => '이 문서의 보호 설정을 바꿀 권한이 없습니다.',
'protect-othertime' => '다른 기간:',
'protect-othertime-op' => '다른 기간',
# Undelete
'undelete' => '삭제된 문서 보기',
'undeletepage' => '삭제된 문서를 보거나 되살리기',
-'undeletepagetitle' => "'''아래는 [[:$1|$1]]의 삭제된 판입니다'''.",
+'undeletepagetitle' => "'''아래는 [[:$1|$1]] 판의 삭제된 판입니다'''.",
'viewdeletedpage' => '삭제된 문서 보기',
'undeletepagetext' => '다음 {{PLURAL:$1|문서는 삭제되었지만|문서 $1개는 삭제되었지만}} 아직 보관되어 있고 되살릴 수 있습니다.
보관된 문서는 주기적으로 삭제될 것입니다.',
'nolinkshere' => "'''[[:$1]]''' 문서를 가리키는 문서가 없습니다.",
'nolinkshere-ns' => "선택한 이름공간에는 '''[[:$1]]''' 문서를 가리키는 문서가 없습니다.",
'isredirect' => '넘겨주기 문서',
-'istemplate' => '포함',
+'istemplate' => '끼워넣기',
'isimage' => '파일 사용 중',
'whatlinkshere-prev' => '{{PLURAL:$1|이전|이전 $1개}}',
'whatlinkshere-next' => '{{PLURAL:$1|다음|다음 $1개}}',
차단된 사용자 목록은 [[Special:BlockList|여기]]에서 볼 수 있습니다.',
'ipb-blockingself' => '자기 자신을 차단하려고 합니다! 정말로 실행할까요?',
'ipb-confirmhideuser' => '사용자를 차단하면서 "사용자 숨기기" 설정을 선택했습니다. 모든 기록에서 이 사용자의 사용자 이름을 숨기게 됩니다. 정말로 계정을 숨기시겠습니까?',
+'ipb-confirmaction' => '그것을 정말로 하기 원한다면 아래에 있는 "{{int:ipb-confirm}}" 부분에 체크하세요',
'ipb-edit-dropdown' => '차단 이유 목록 편집하기',
'ipb-unblock-addr' => '$1 차단 해제하기',
'ipb-unblock' => '사용자 또는 IP 주소 차단 해제하기',
'range_block_disabled' => 'IP 범위 차단 기능이 비활성화되어 있습니다.',
'ipb_expiry_invalid' => '차단 기간이 잘못되었습니다.',
'ipb_expiry_temp' => '사용자 이름을 숨기는 차단은 반드시 무기한이어야 합니다.',
-'ipb_hide_invalid' => '해당 계정은 막을 수 없습니다. 기여량이 너무 많습니다.',
+'ipb_hide_invalid' => '해당 계정은 막을 수 없습니다. {{PLURAL:$1|1회|$1회}} 이상 편집했습니다.',
'ipb_already_blocked' => '"$1" 사용자는 이미 차단되었습니다',
'ipb-needreblock' => '$1 사용자는 이미 차단되었습니다. 차단 설정을 바꾸시겠습니까?',
'ipb-otherblocks-header' => '다른 {{PLURAL:$1|차단}} 기록',
'allmessages-prefix' => '접두어로 거르기:',
'allmessages-language' => '언어:',
'allmessages-filter-submit' => '보기',
+'allmessages-filter-translate' => '번역',
# Thumbnails
'thumbnail-more' => '실제 크기로',
임시 폴더가 존재하지 않습니다.',
'import-parse-failure' => 'XML 문서 분석 실패',
'import-noarticle' => '가져올 문서가 없습니다!',
-'import-nonewrevisions' => '이전에 이미 모든 판을 가져왔습니다.',
+'import-nonewrevisions' => '가져온 판 없음(모든 판이 이미 존재하거나 오류로 인해 건너뛰었을 수도 있습니다.)',
'xml-error-string' => '$3단 $2줄 (바이트 $4)에서 $1: $5',
'import-upload' => 'XML 데이터 올리기',
'import-token-mismatch' => '세션 데이터가 손실되었습니다.
'import-error-interwiki' => '"$1" 문서는 제목이 바깥 링크(인터위키)용으로 할당되어 있기 때문에 가져오지 않습니다.',
'import-error-special' => '"$1" 문서는 특수 문서에 속해 있기 때문에 가져오지 않습니다.',
'import-error-invalid' => '"$1" 문서는 제목이 잘못되었기 때문에 가져오지 않습니다.',
-'import-error-unserialize' => '"$1" 문서의 $2 판이 일렬적이지 않습니다. $3 콘텐츠 모델을 사용하여 $4 형식으로 일렬화되도록 판을 보고했습니다.',
+'import-error-unserialize' => '"$1" 문서의 $2 판이 일렬적이지 않습니다. $3 내용 모델을 사용하여 $4 형식으로 일렬화되도록 판을 보고했습니다.',
+'import-error-bad-location' => '$3 내용 모델을 사용하는 $2 판을 이 위키의 "$1"에 저장할 수 없습니다. 모델을 문서에서 지원하지 않습니다.',
'import-options-wrong' => '잘못된 {{PLURAL:$2|선택 사항}}: <nowiki>$1</nowiki>',
'import-rootpage-invalid' => '주어진 루트 문서는 잘못된 제목입니다.',
'import-rootpage-nosubpage' => '루트 문서의 "$1" 이름공간은 하위 문서를 허용하지 않습니다.',
'tooltip-pt-watchlist' => '주시문서에 대한 바뀜 목록',
'tooltip-pt-mycontris' => '내 기여의 목록',
'tooltip-pt-login' => '꼭 로그인해야 하는 것은 아니지만, 로그인을 권장합니다.',
-'tooltip-pt-anonlogin' => '꼭 필요한 것은 아니지만, 로그인을 하면 편리한 점이 많습니다.',
'tooltip-pt-logout' => '로그아웃',
'tooltip-ca-talk' => '문서의 내용에 대한 토론 문서',
'tooltip-ca-edit' => '문서를 편집할 수 있습니다. 저장하기 전에 미리 보기를 해주세요.',
'tooltip-n-portal' => '프로젝트에 대해 여러분이 할 수 있고, 정보를 찾을 수 있는 곳',
'tooltip-n-currentevents' => '최근의 소식 알아 보기',
'tooltip-n-recentchanges' => '위키의 최근 바뀜 목록',
-'tooltip-n-randompage' => '임의 문서 읽기',
+'tooltip-n-randompage' => '임의 문서 불러오기',
'tooltip-n-help' => '도움말',
-'tooltip-t-whatlinkshere' => '여기를 링크한 모든 위키 문서의 목록',
+'tooltip-t-whatlinkshere' => '여기를 가리키는 모든 위키 문서의 목록',
'tooltip-t-recentchangeslinked' => '이 문서에서 링크한 문서의 최근 바뀜',
'tooltip-feed-rss' => '이 문서의 RSS 피드',
'tooltip-feed-atom' => '이 문서의 Atom 피드',
'tooltip-save' => '바뀐 내용 저장하기',
'tooltip-preview' => '바뀜을 미리 봅니다. 저장하기 전에 미리 보기를 해주세요!',
'tooltip-diff' => '자신이 바꾼 내용 보기',
-'tooltip-compareselectedversions' => '이 문서에서 선택한 두 판간의 차이를 비교',
+'tooltip-compareselectedversions' => '이 문서에서 선택한 두 판 간의 차이를 비교',
'tooltip-watch' => '이 문서를 주시문서 목록에 추가',
'tooltip-watchlistedit-normal-submit' => '항목 제거하기',
'tooltip-watchlistedit-raw-submit' => '주시문서 목록 새로 고침',
'pageinfo-length' => '문서 길이 (바이트)',
'pageinfo-article-id' => '문서 ID',
'pageinfo-language' => '문서 내용 언어',
-'pageinfo-content-model' => '문서 콘텐츠 모델',
+'pageinfo-content-model' => '문서 내용 모델',
'pageinfo-robot-policy' => '로봇에 의한 색인',
'pageinfo-robot-index' => '허용됨',
'pageinfo-robot-noindex' => '불허됨',
'markaspatrolleddiff' => '검토한 문서로 표시',
'markaspatrolledtext' => '이 문서를 검토한 것으로 표시',
'markedaspatrolled' => '검토한 문서로 표시',
-'markedaspatrolledtext' => '[[:$1]] 문서의 선택한 판을 검토한 것으로 표시하였습니다.',
+'markedaspatrolledtext' => '[[:$1]] 문서의 선택한 판을 순찰한 것으로 표시하였습니다.',
'rcpatroldisabled' => '최근 바뀜 검토 기능 비활성화됨',
'rcpatroldisabledtext' => '최근 바뀜 검토 기능은 현재 비활성화되어 있습니다.',
'markedaspatrollederror' => '검토한 것으로 표시할 수 없습니다.',
# Special:NewFiles
'newimages' => '새 파일 목록',
-'imagelisttext' => "{{PLURAL:$1|파일}} '''$1'''개를 $2 순으로 정렬한 목록입니다.",
+'imagelisttext' => "{{PLURAL:$1|파일}} '''$1'''개를 $2순으로 정렬한 목록입니다.",
'newimages-summary' => '이 특수 문서는 최근에 올라온 파일을 나열하고 있습니다.',
'newimages-legend' => '필터',
'newimages-label' => '파일 이름 (또는 그 일부분):',
# Metadata
'metadata' => '메타데이터',
-'metadata-help' => '이 파일은 그 파일을 만들거나 디지털화하는 데 사용되는 카메라나 스캐너에서 기록한 부가 정보를 가지고 있습니다.
-í\94\84ë¡\9cê·¸ë\9e¨ì\97\90ì\84\9c í\8c\8cì\9d¼ì\9d\84 í\8e¸ì§\91í\95 경우, 새로 저장한 파일에 일부 부가 정보가 빠질 수 있습니다.',
+'metadata-help' => '이 파일은 카메라나 스캐너가 파일을 만들거나 디지털화하는 데 사용하기위해 기록한 부가 정보를 포함하고 있습니다.
+í\94\84ë¡\9cê·¸ë\9e¨ì\97\90ì\84\9c í\8c\8cì\9d¼ì\9d\84 í\8e¸ì§\91í\95\9c 경우, 새로 저장한 파일에 일부 부가 정보가 빠질 수 있습니다.',
'metadata-expand' => '자세한 정보 보이기',
'metadata-collapse' => '자세한 정보 숨기기',
'metadata-fields' => '파일 메타데이터 표가 접혀 있을 때, 이 메시지에 올라와 있는 다음 속성값만이 기본적으로 보이게 됩니다.
# Live preview
'livepreview-loading' => '불러오는 중...',
-'livepreview-ready' => '불러 오는 중... 준비!',
+'livepreview-ready' => '불러오는 중... 준비!',
'livepreview-failed' => '실시간 미리 보기 실패!
일반 미리 보기를 이용하세요.',
'livepreview-error' => '연결에 실패하였습니다: $1 "$2"
'version-hook-name' => '훅 이름',
'version-hook-subscribedby' => '훅이 사용된 위치',
'version-version' => '(버전 $1)',
-'version-license' => '라이선스',
+'version-license' => '미디어위키 라이선스',
+'version-ext-license' => '라이선스',
+'version-ext-colheader-name' => '확장기능',
+'version-ext-colheader-version' => '버전',
+'version-ext-colheader-license' => '라이선스',
+'version-ext-colheader-description' => '설명',
+'version-ext-colheader-credits' => '저자',
+'version-license-title' => '$1용 라이센스',
+'version-license-not-found' => '이 확장기능에 대한 라이선스 세부 정보가 없습니다.',
+'version-credits-title' => '$1의 작성자',
+'version-credits-not-found' => '이 확장기능에 대한 크레딧 세부 정보가 없습니다.',
'version-poweredby-credits' => "이 위키는 '''[https://www.mediawiki.org/ MediaWiki]'''(미디어위키)를 기반으로 작동합니다. Copyright © 2001-$1 $2.",
'version-poweredby-others' => '그 외 다른 개발자',
'version-poweredby-translators' => 'translatewiki.net 번역자',
#모든 정규 표현식은 이 줄 위에 넣어 주십시오. 그리고 이 줄은 그대로 두십시오.</pre>',
# Special:Tags
-'tags' => 'ì\9c í\9a¨í\95\9c 편집 태그',
+'tags' => 'ì\98¬ë°\94른 편집 태그',
'tag-filter' => '[[Special:Tags|태그]] 필터:',
'tag-filter-submit' => '필터',
'tag-list-wrapper' => '([[Special:Tags|{{PLURAL:$1|태그}}]]: $2)',
'api-error-overwrite' => '이미 있는 파일을 덮어쓸 수 없습니다.',
'api-error-stashfailed' => '내부 오류: 서버가 임시 파일을 저장하지 못했습니다.',
'api-error-publishfailed' => '내부 오류: 서버가 임시 파일을 게시하지 못했습니다.',
+'api-error-stasherror' => '파일을 안전한 곳으로 업로드 하는 동안 오류가 발생했습니다.',
'api-error-timeout' => '서버가 제 시간 내에 응답하지 않았습니다.',
'api-error-unclassified' => '알 수 없는 오류가 발생했습니다.',
'api-error-unknown-code' => '알 수 없는 오류: "$1"',
'expand_templates_generate_rawhtml' => '원본 HTML 보이기',
'expand_templates_preview' => '미리 보기',
+# Unknown messages
+'createaccount-hook-aborted' => '$1',
+'uploadinvalidxml' => '업로드된 파일의 XML의 구문을 분석할 수 없습니다.',
);
$messages = array(
# User preference toggles
'tog-underline' => 'Джибериулени черт:',
-'tog-justify' => 'Текстни бетни кенглигине кёре тиз',
'tog-hideminor' => 'Джангы тюрлениулени тизмесинде гитче тюрлениулени кёргюзме',
'tog-hidepatrolled' => 'Джангы тюрлениулени тизмесинде тинтилген тюрлениулени кёргюзме',
'tog-newpageshidepatrolled' => 'Джангы бетлени тизмесинде тинтилген бетлени кёргюзме',
'tog-extendwatchlist' => 'Кёзде тургъан тизмени, къуру ахыр тюл, бютеу тюрлениулени кёрюр ючюн кенгерт',
-'tog-usenewrc' => 'Ахыр тюрлениуледе эм кёздеги тизмеде бетлени къауум тюрлениулери (JavaScript керекди)',
+'tog-usenewrc' => 'Ахыр тюрлениуледе эм кёздеги тизмеде бетлени тюрлениулерин къауумлашдыр',
'tog-numberheadings' => 'Башлыкъланы (бёлюмлени атлары) автомат номерленсинле',
-'tog-showtoolbar' => 'Тюрлендирген сагъатда, башындагъы адыр панелни кёргюз (JavaScript)',
-'tog-editondblclick' => 'Эки басыу бла тюрлендириу бет ачылсын (JavaScript)',
-'tog-editsection' => 'Хар бёлюмге «тюрлендир» джибериуню кёргюз',
-'tog-editsectiononrightclick' => 'Бёлюмлени бёлюм башлыкъгъа басханлай тюрлендириу бетин ач',
-'tog-showtoc' => 'Башларын кёргюз (3-ден кёб бёлюм башлыгъы болгъан бетлеге)',
-'tog-rememberpassword' => 'Бу компьютерде мени тергеў джазыўуму сакъла (эм кёб $1 {{PLURAL:$1|кюн|кюн}})',
+'tog-showtoolbar' => 'Тюрлендириу адыр панелни кёргюз',
+'tog-editondblclick' => 'Эки басыу бла бетлени тюрлендир',
+'tog-editsectiononrightclick' => 'Бёлюмлени бёлюм башлыкъгъа басханлай тюрлендир',
+'tog-rememberpassword' => 'Бу браузерде мени тергеў джазыўуму сакъла (эм кёб: $1 {{PLURAL:$1|бир кюн|кюн}})',
'tog-watchcreations' => 'Мен къурагъан (башлагъан) бетлени эм мен джюклеген файлланы кёзюмде тургъан тизмеме къош',
'tog-watchdefault' => 'Мен тюрлендирген бетлени эм файлланы кёзюмде тургъан тизмеме къош',
'tog-watchmoves' => 'Мен атларын ауушдургъан бетлени эм файлланы кёзюмде тургъан тизмеме къош',
'tog-showhiddencats' => 'Джашыртын категорияланы кёргюз',
'tog-norollbackdiff' => 'Къайтарыудан сора версияланы башхалыкъларын кёргюзме',
'tog-useeditwarning' => 'Тюрлендириулени сакълатмай редакторлау бетден кетген сагъатымда билдир',
+'tog-prefershttps' => 'Системагъа киргенден сора джакъланнган байламны хаманда хайырландыр',
'underline-always' => 'Хаманда',
'underline-never' => 'Бир заманда да',
'hidden-categories' => '{{PLURAL:$1|Джашырылгъан категория|Джашырылгъан категорияла}}',
'hidden-category-category' => 'Джашыртын категорияла',
'category-subcat-count' => '{{PLURAL:$2|Бу категориягъа къуру баргъан тюбкатегория киреди.|$2 тюбкатегориядан $1 киреди бу категориягъа.}}',
-'category-subcat-count-limited' => 'Бу категорияда {{PLURAL:$1|$1 тюбкатегория}} барды.',
-'category-article-count' => '{{PLURAL:$2|Бу категорияда къуру бир бет барды.|Бу категориядагъы $2 бетден $1 кёргюзюлгенди.}}',
+'category-subcat-count-limited' => 'Бу категорияда {{PLURAL:$1|тюбкатегория|$1 тюбкатегория}} барды.',
+'category-article-count' => '{{PLURAL:$2|Бу категорияда къуру бир бет барды.|Бу категориядагъы $2 бетден {{PLURAL:$1|бет|$1 бет}} кёргюзюлгенди.}}',
'category-article-count-limited' => 'Бу категорияда {{PLURAL:$1|$1 бет}} барды.',
-'category-file-count' => '{{PLURAL:$2|Бу категорияда къуру бир файл барды.|Категориядагъы $2 файлдан {{PLURAL:$1|$1 файлы кёргюзюлгенди}}.}}',
+'category-file-count' => '{{PLURAL:$2|Бу категорияда къуру бир файл барды.|Категориядагъы $2 файлдан {{PLURAL:$1|бир файл|$1 файлы}} кёргюзюлгенди.}}',
'category-file-count-limited' => 'Бу категория да {{PLURAL:$1|$1 файл}} барды.',
'listingcontinuesabbrev' => '(баргъаны)',
'index-category' => 'Индексленнген бетле',
'create-this-page' => 'Бу бетни къура',
'delete' => 'Кетер',
'deletethispage' => 'Бу бетни кетер',
-'undelete_short' => '$1 {{PLURAL:$1|тюрлендириуню}} къайтар',
-'viewdeleted_short' => '{{PLURAL:$1|1|$1}} кетерилген тюрлендириуге къарау',
+'undeletethispage' => 'Бу бетни ызына сал',
+'undelete_short' => '{{PLURAL:$1|Бир тюрлендириуню$1 тюрлендириуню}} ызына сал',
+'viewdeleted_short' => '{{PLURAL:$1|Бир кетерилген тюрлендириуню|$1 кетерилген тюрлендириуню}} кёрюу',
'protect' => 'Джакъла',
'protect_change' => 'тюрлендир',
'protectthispage' => 'Бу бетни джакъла',
'redirectedfrom' => '(«$1» бетден джиберилгенди)',
'redirectpagesub' => 'Башха бетге джибериучю бет',
'lastmodifiedat' => 'Бу бетни ахыр тюрленнгени: $2, $1.',
-'viewcount' => 'Бу бетге {{PLURAL:$1|1|$1}} кере киргендиле.',
+'viewcount' => 'Бу бетге {{PLURAL:$1|бир|$1}} кере киргендиле.',
'protectedpage' => 'Джакъланнган бет',
'jumpto' => 'Бери кёчерге:',
'jumptonavigation' => 'навигация',
'badaccess' => 'Кириуню халаты',
'badaccess-group0' => 'Сизни соргъан амалны этерге эркинлигигиз джокъду.',
-'badaccess-groups' => 'Сиз соргъан амалны къуру $1 {{PLURAL:$2|группаны|группаланы}} къошулуучуларыны этерге мадарлары барды.',
+'badaccess-groups' => 'Сиз соргъан амалны къуру $1 {{PLURAL:$2|1=группаны|группаланы}} къошулуучуларыны этерге мадарлары барды.',
'versionrequired' => 'MediaWiki-ни $1 версиясы керекди',
'versionrequiredtext' => 'Бу бетде ишлер ючюн MediaWiki-ни $1 версиясы керекди. [[Special:Version|Хайырладырылгъан программаны версияларыны юсюнден информациягъа]] къара.',
'ok' => 'ОК',
'retrievedfrom' => 'Чыкъгъаны — «$1»',
'youhavenewmessages' => 'Сизге $1 келдиле ($2).',
-'youhavenewmessagesfromusers' => '{{PLURAL:$3|Башха бир къошулуучудан|$3 къошулуучудан}} сеннге $1 келди ($2).',
+'youhavenewmessagesfromusers' => '{{PLURAL:$3|1=Башха бир къошулуучудан|$3 къошулуучудан}} сеннге $1 келди ($2).',
'youhavenewmessagesmanyusers' => 'Талай къошулуучудан $1 барды. ($2)',
-'newmessageslinkplural' => '{{PLURAL:$1|джангы билдириу|джангы билдириуле}}',
+'newmessageslinkplural' => '{{PLURAL:$1|1=джангы билдириу|джангы билдириуле}}',
'newmessagesdifflinkplural' => 'ахыр {{PLURAL:$1|тюрлениу}}',
'youhavenewmessagesmulti' => '$1 бетде джангы билдириуле бардыла.',
'editsection' => 'тюрлендир',
'collapsible-expand' => 'кёргюз',
'thisisdeleted' => '$1 къараргъа неда къайтарыргъа (тургъузтургъа)?',
'viewdeleted' => '$1 къараймыса?',
-'restorelink' => 'кетерилген {{PLURAL:$1|1|$1}} тюрлендириу',
+'restorelink' => 'кетерилген {{PLURAL:$1|1=1|$1}} тюрлендириу',
'feedlinks' => 'Бу кёрюмде:',
'feed-invalid' => 'Джазылыу каналны типи терсди.',
'feed-unavailable' => 'Синдикация лентала табылынмайла бусагъатда',
'badtitle' => 'Джарамагъан ат',
'badtitletext' => 'Сорулгъан бетни аты терсди, бошду, неда интервики аты терс джазылгъанды. Келишмеген (хайырланыргъа болмагъан) символла хайырланыргъада боллукъдула атында.',
'perfcached' => 'Бу информация кэшден алыннганды, ахыр тюрлениулени кёргюзмезге боллукъду. Кэшде максимум {{PLURAL:$1|джазыу}} сакъланады.',
-'perfcachedts' => 'Бу кэшден алыннган информацияды, ахыр кере ол $1 джангыртылыннганды. Кэшде эм кёбю бла {{PLURAL:$4|джазыу|джазыу}} сакъланады.',
+'perfcachedts' => 'Бу кэшден алыннган информацияды, ахыр кере ол $1 джангыртылыннганды. Кэшде эм кёбю бла {{PLURAL:$4|1=джазыу|джазыу}} сакъланады.',
'querypage-no-updates' => 'Бу бетни бусагъатда джангыртыргъа болмайды.
Мында келтирилген информация къабыл этилинник тюйюлдю.',
'viewsource' => 'Къарау',
'protectedinterface' => 'Бу бетде программаны интерфейс билдириую барды.
Бютеу викиледе да бу билдириуню кёчюрмесин къошар неда тюрлендирир ючюн MediaWiki-ни локализациясыны сайты [//translatewiki.net/ translatewiki.net]-ни хайырландырыгъыз.',
'editinginterface' => "'''Эс бёл:''' Сен системаны интерфейс бетин тюрлендире тураса. Бу, викини башха къошулуучуларына да тиерик затды. Кёчюрюр ючюн неда кёчюрмелени тюрлендирир ючюн, MediaWiki-ни локализация этиу проекти [//translatewiki.net/ translatewiki.net]-ни хайырландырыгъыз.",
-'cascadeprotected' => 'Бу бет тюрлениуледен джакъланыбды, ол каскадлы джакълау къабыл этилиннген {{PLURAL:$1|бетге|бетлеге}} киргени ючюндю:
+'cascadeprotected' => 'Бу бет тюрлениуледен джакъланыбды, ол каскадлы джакълау къабыл этилиннген {{PLURAL:$1|1=бетге|бетлеге}} киргени ючюндю:
$2',
'namespaceprotected' => '«$1» ат аламда бетлени тюрлендирирге эркинлигигиз джокъду.',
'customcssprotected' => 'Бу CSS-бетни тюрлендирирге эркинлигигиз джокъду, бу бетде башха къошулуучуну энчи джарашдырыулары барды.',
'yourpasswordagain' => 'Паролну джангыдан джаз:',
'createacct-yourpasswordagain' => 'Паролну бегит',
'createacct-yourpasswordagain-ph' => 'Паролну энтда бир кере джаз',
-'remembermypassword' => 'Ð\91Ñ\83 компÑ\8cÑ\8eÑ\82еÑ\80де мени Ñ\82еÑ\80геÑ\9e джазÑ\8bÑ\9eÑ\83мÑ\83 Ñ\83нÑ\83Ñ\82ма (Ñ\8dм кÑ\91б $1 {{PLURAL:$1|кюн|кюн}})',
+'remembermypassword' => 'Ð\91Ñ\83 компÑ\8cÑ\8eÑ\82еÑ\80де мени Ñ\82еÑ\80геÑ\9e джазÑ\8bÑ\9eÑ\83мÑ\83 Ñ\81акÑ\8aлаб Ñ\82Ñ\83Ñ\80 (Ñ\8dм кÑ\91б: $1 {{PLURAL:$1|биÑ\80 кюн|кюн}})',
'userlogin-remembermypassword' => 'Системада туруу',
'userlogin-signwithsecure' => 'Джакъланнган байлам',
'yourdomainname' => 'Сизни доменигиз:',
'password-change-forbidden' => 'Бу викиде паролугъузну тюрлендиреллик тюлсюз.',
'externaldberror' => 'Тыш информация базаны болушлугъу бла аутентификация, халатлы болду, неда тыш аккаунтугъузну тюрлендирирге хакъларагъыз джетмейди.',
-'login' => 'Ð\9aириу',
-'nav-login-createaccount' => 'Ð\9aиÑ\80иÑ\83 / Ñ\80егиÑ\81Ñ\82Ñ\80аÑ\86иÑ\8f Ñ\8dÑ\82иу',
+'login' => 'СиÑ\81Ñ\82емагÑ\8aа кириу',
+'nav-login-createaccount' => 'СиÑ\81Ñ\82емагÑ\8aа киÑ\80иÑ\83 / Ð\90ккаÑ\83нÑ\82 кÑ\8aÑ\83Ñ\80ау',
'loginprompt' => '{{SITENAME}} сайтха кирир ючюн «cookies» эркин этерге керексиз.',
'userlogin' => 'Кир / регистрация эт',
'userloginnocreate' => 'Кириу',
'userlogin-joinproject' => '{{SITENAME}} сайтха къошул',
'nologin' => 'Тергеу джазыуугъуз (аккаунтугъуз) джокъмуду? $1.',
'nologinlink' => 'Тергеу джазыу (аккаунт) къурагъыз',
-'createaccount' => 'Ð\94жангÑ\8b кÑ\8aоÑ\88Ñ\83лÑ\83Ñ\83Ñ\87Ñ\83нÑ\83 Ñ\80егиÑ\81Ñ\82Ñ\80аÑ\86иÑ\8f Ñ\8dÑ\82',
+'createaccount' => 'Ð\90ккаÑ\83нÑ\82 кÑ\8aÑ\83Ñ\80аÑ\83',
'gotaccount' => 'Тергеу джазыуугъуз (аккаунтугъуз) энди бармыды? $1.',
-'gotaccountlink' => 'Ð\9aиÑ\80иÑ\83',
+'gotaccountlink' => 'СиÑ\81Ñ\82емагÑ\8aа киÑ\80',
'userlogin-resetlink' => 'Кирир ючюн билгилеригизни унутхан этгенмисиз?',
'userlogin-resetpassword-link' => 'Паролну джибериу',
'helplogin-url' => 'Help:Кириу',
'badretype' => 'Джазгъан паролларыгъыз бир-бирине келишмейдиле.',
'userexists' => 'Джазылгъан ат хайырландырылады.
Башха ат сайлагъыз.',
-'loginerror' => 'Кириу хата',
+'loginerror' => 'Кириуде халат',
'createacct-error' => 'Тергеу джазыу къурауда халат',
'createaccounterror' => 'Быллай тергеу джазыу (аккаунт) къураргъа болмайды: $1',
'nocookiesnew' => 'Къошлуучу регистрацияны ётгенди, алай кирмегенди. {{SITENAME}} къошулуучуланы таныр ючюн «cookies»-ни хайырландырады. Сиз «cookies»-ни эркин этмегенсиз. «Cookies»-ни эркин этигиза да, андан сора джангы атыгъыз эм паролюгъуз бла киригиз.',
'passwordtooshort' => '$1 {{PLURAL:$1|символдан}} аз болмазгъа керекди пароль.',
'password-name-match' => 'Пароль къошулуучу атдан башха тюрлю болургъа керекди.',
'password-login-forbidden' => 'Бу къошулуучу ат бла паролну хайырландыргъан джарамайды.',
-'mailmypassword' => 'Ð\9cеннге e-mail бла джангÑ\8b паÑ\80олÑ\8c джибер',
+'mailmypassword' => 'Ð\9fаÑ\80олнÑ\83 джибер',
'passwordremindertitle' => '{{SITENAME}} къошулуучугъа джангы болджаллы пароль',
'passwordremindertext' => 'Ким эседа (сиз болургъа боллукъсуз, IP-адрес: $1) {{SITENAME}} ($4) къошулуучугъа джангы пароль къураргъа соргъанды. $2 къошулуучугъа джангы пароль: $3. Сорууну джиберген сиз болгъан эсегиз, системагъа кирирге эм паролну алышдырыргъа тыйычлыды. Джангы паролну $5 {{PLURAL:$5|кюнню}} ичинде амалы боллукъду.
Паролну алгъандан сора, джангыдан киригиз системагъа.',
'blocked-mailpassword' => 'Сизни IP-адресигиз блокланыб турады, аны бла паролну къайтарыу функцияда.',
'eauthentsent' => 'Джазылгъан электрон почтагъа адресни тюрлениуюн бегитирге соруу джиберилгенди. Письмода бу сизни электрон почтагъызны адреси болгъанын бегитир ючюн не этерге керек болгъаны да чертилгенди.',
-'throttled-mailpassword' => 'Паролну билдириу амал {{PLURAL:$1|ахыр $1 сагъатны}} ичинде бир кере хайырланылгъанды.
+'throttled-mailpassword' => 'Паролну билдириу амал {{PLURAL:$1|1=ахыр $1 сагъатны}} ичинде бир кере хайырланылгъанды.
Джорукъдан чыгъыудан сакъланыр ючюн $1 {{PLURAL:$1|сагъатны}} ичинде къуру бир билдириу алыргъа болады.',
'mailerror' => 'Почта джибериу хата: $1',
'acct_creation_throttle_hit' => 'Кюн бла кечеге сизни IP-адресигизден {{PLURAL:$1|$1 тергеу джазыу (аккаунт)}} къуралгъанды. Бу амал энди бусагъатда джабыкъды.',
'nosuchsectiontext' => 'Сиз болмагъан бетни тюрлендирирге кюрешесиз.
Бу бетге къарагъан заманыгъызда, кетерилирге неда башха джерге кёчюрюлюрге боллукъду.',
'loginreqtitle' => 'Кирирге керекди',
-'loginreqlink' => 'Ð\9aириу',
+'loginreqlink' => 'кириу',
'loginreqpagetext' => 'Сиз башха бетлеге къарар ючюн $1 керексиз.',
'accmailtitle' => 'Пароль джиберилди',
'accmailtext' => "[[User talk:$1|$1]] къошулуучугъа къуралгъан пароль $2 адресине джиберилгенди.
Башхала сизни текстлеригизни тюрлендиргенлерин излемей эсегиз, былайгъа салмагъыз.<br />
Сиз дагъыда этген къошакъларыгъызны автору болгъаныгъызны неда информацияны чыкъгъан джери эркин джаяргъа эм тюрлендирирге къойгъанын аны бегитесиз (къарагъыз: $1).
'''ЭРКИНЛИКСИЗ АВТОР ХАКЪ БЛА ДЖАКЪЛАННГАН МАТЕРИАЛЛА САЛМАГЪЫЗ БЫЛАЙГЪА!'''",
-'longpageerror' => "'''ХАЛАТ: сиз сакълатхан текстни {{PLURAL:$1|бир килобайт|$1 килобайт}} ёлчеми барды, ол {{PLURAL:$2|бир килобайт|$2 килобайт}} чекден кёбдю. Бет сакъланныкъ тюлдю.'''",
+'longpageerror' => "'''ХАЛАТ: сиз сакълатхан текстни {{PLURAL:$1|1=бир килобайт|$1 килобайт}} ёлчеми барды, ол {{PLURAL:$2|1=бир килобайт|$2 килобайт}} чекден кёбдю. Бет сакъланныкъ тюлдю.'''",
'readonlywarning' => "'''Эсгертиу. Кереклилерин тындырыу ишле себебли, билгилени базасы бусагъатда киритленибди. Ол себебден тюрлениулеригизни бусагъатда сакълаталлыкъ тюлсюз.''' Джазгъанларыгъызны башха бир текст файлда сакълаб, кечирек къошаргъа боллукъсуз. Киритлеген администратор бу билдириуню къойгъанды: $1",
'protectedpagewarning' => "'''Эсгертиу: бу бет тюрлениуледен джакъланыбды, къуру администарторла тюрлендирелликдиле'''
Тюбюнде, билги ючюн журналдагъы ахыр джазыу берилгенди:",
'semiprotectedpagewarning' => "'''Эсгертиу:''' бу бетни джангыз регистрация этген къошулуучула тюрлендирелликдиле.
Тюбюнде, билги ючюн журналны ахыр джазыуу берилгенди:",
-'cascadeprotectedwarning' => "'''Эсгертиу:''' Бу бетни къуру Администраторла къауумдагъы къошулуучула тюрлендирирге боллукъду. Каскад джакълау {{PLURAL:$1|бетде|бетде}} хайырланнганы себебли:",
+'cascadeprotectedwarning' => "'''Эсгертиу:''' Бу бетни къуру Администраторла къауумдагъы къошулуучула тюрлендирирге боллукъду. Каскад джакълау {{PLURAL:$1|1=бетде|бетде}} хайырланнганы себебли:",
'titleprotectedwarning' => "'''Эсгертиу: Бу бет джакъланыбды. Джангыз [[Special:ListGroupRights|энчи хакълары]] болгъанла текстни салыргъа боллукъдула.'''
Тюбюнде, билги ючюн журналдан ахыр джазыу берилгенди:",
'templatesused' => 'Бу бетде хайырланылгъан {{PLURAL:$1|шаблон|шаблонла}}:',
-'templatesusedpreview' => 'Ал къаралыучу бетде хайырланнган {{PLURAL:$1|шаблон|шаблонла}}:',
-'templatesusedsection' => 'Бу бетде хайырланнган {{PLURAL:$1|шаблон|шаблонла}}:',
+'templatesusedpreview' => 'Ал къаралыучу бетде хайырланнган {{PLURAL:$1|1=шаблон|шаблонла}}:',
+'templatesusedsection' => 'Бу бетде хайырланнган {{PLURAL:$1|1=шаблон|шаблонла}}:',
'template-protected' => '(джакъланнган)',
'template-semiprotected' => '(джарты джакъланыбды)',
-'hiddencategories' => 'Бу бет $1 {{PLURAL:$1|1 джашырылыннган категориягъа|$1 джашырылыннган категориялагъа}} киреди:',
+'hiddencategories' => 'Бу бет $1 {{PLURAL:$1|1 джашырылгъан категориягъа|$1 джашырылгъан категориягъа}} киреди:',
'edittools' => '<!-- Былайда орналгъан текст тюрлениу эмда джюклениу формада кёрюннюкдю. -->',
'nocreatetext' => 'Бу сайтда джангы бет къуралыу тыйылгъанды.
Ызына къайтыб болгъан бетни тюрлендирирге боллукъсуз, [[Special:UserLogin|системагъа кесигизни танытыргъа неда джангы тергеу джазыу (аккаунт) къураргъа]].',
'sectioneditnotsupported-title' => 'Бёлюмлени тюрлендирир мадар джокъду.',
'sectioneditnotsupported-text' => 'Бу бетде бёлюмлени тюрлендирирге болмайды.',
'permissionserrors' => 'Эркинликлени халатлары',
-'permissionserrorstext' => 'Былайдагъы {{PLURAL:$1|чурум|чурумла}} ючюн, буну этерге хакъыгъыз джокъду:',
-'permissionserrorstext-withaction' => "«'''$2'''» этерге амалыгъыз джокъду. {{PLURAL:$1|Чуруму|Чурумлары}}:",
+'permissionserrorstext' => 'Былайдагъы {{PLURAL:$1|1=чурум|чурумла}} ючюн, буну этерге хакъыгъыз джокъду:',
+'permissionserrorstext-withaction' => "«'''$2'''» этерге амалыгъыз джокъду. {{PLURAL:$1|1=Чуруму|Чурумлары}}:",
'recreate-moveddeleted-warn' => "'''Эс бёлюгюз! Сиз алгъын кетерилген бетни джангыдан къураргъа излейсиз'''
Бетни джангыдан къураргъа кереклигине сагъыш этигиз.
# Parser/template warnings
'expensive-parserfunction-warning' => "'''Эсгериу:''' Бу бетде асыры кёб къайнакълы функция барды.
-Бу $2 чакъырыудан аз болургъа керекди, бусагъатда {{PLURAL:$1|1 чакъырыу барды|$1 чакъырыу барды}}.",
+Бу $2 чакъырыудан аз болургъа керекди, бусагъатда {{PLURAL:$1|1=1 чакъырыу барды|$1 чакъырыу барды}}.",
'expensive-parserfunction-category' => 'Асыры кёб къайнакълы функциялары болгъан бетле',
'post-expand-template-inclusion-warning' => "'''Эсгериу:''' къошулгъан шаблонланы ёлчеми асыры уллуду.
Бир-бир шаблонла бетге къошуллукъ тюлдюле.",
'histlegend' => "Ангылатыула: '''({{int:cur}})''' — бусагъатдагъы версиядан башхалыгъы, '''({{int:last}})''' — алдагъы версиядан башхалыгъы; '''({{int:last}})''' — гитче тюрлениу",
'history-fieldset-title' => 'Тарихине къара',
'history-show-deleted' => 'Къуру кетерилгенле',
-'histfirst' => 'Эм эски',
-'histlast' => 'Эм джангы',
-'historysize' => '($1 {{PLURAL:$1|байт|байт}})',
+'histfirst' => 'эм эскиле',
+'histlast' => 'эм джангыла',
+'historysize' => '($1 {{PLURAL:$1|1=байт|байт}})',
'historyempty' => '(бош)',
# Revision feed
'revdelete-no-file' => 'Белгиленнген файл джокъду.',
'revdelete-show-file-confirm' => '«<nowiki>$1</nowiki>» файлны $2 $3 датада кетерилген версиясына къараргъа излегенигизге ишексизмисиз?',
'revdelete-show-file-submit' => 'Хоу',
-'revdelete-selected' => "'''[[:$1]] бетни {{PLURAL:$2|Сайланнган версия|сайланнган версиялары}}:'''",
-'logdelete-selected' => "'''Журналны {{PLURAL:$1|Сайланнган джазыу|сайланнган джазыулары}}:'''",
+'revdelete-selected' => "'''[[:$1]] бетни {{PLURAL:$2|1=Сайланнган версия|сайланнган версиялары}}:'''",
+'logdelete-selected' => "'''Журналны {{PLURAL:$1|1=Сайланнган джазыу|сайланнган джазыулары}}:'''",
'revdelete-text' => "'''Кетерилге версияла бла болуула алкъын бетни тарихи бла журналлада кёрюннюкдю, алай а бир кесеги тюз кириучюледен джашырыллыкъды.'''
{{SITENAME}} сайтдагъы башха администраторла джашырылгъан ичге кирирге эмда аны ызына салыргъа боллукъдула.",
'revdelete-confirm' => 'Тилейбиз, буну этерге излегенигизни, эсеблерин ангылагъаныгъызны, эм буну [[{{MediaWiki:Policy-url}}|джорукълагъа]] кёре этгенигизни билдиригиз.',
'revdelete-suppress' => 'Администраторладан да джашыра тур билгилени',
'revdelete-unsuppress' => 'Ызына къайтарылгъан версияладан тыйгъычланы кетер',
'revdelete-log' => 'Чурум:',
-'revdelete-submit' => '{{PLURAL:$1|Сайланнган версия|Сайланнган версиялада}} хайырлан',
+'revdelete-submit' => '{{PLURAL:$1|1=Сайланнган версия|Сайланнган версиялада}} хайырлан',
'revdelete-success' => "'''Версияны кёрюнюую джетишимли тюрлендирилгенди'''",
'revdelete-failure' => "'''Версияны кёрюнюую тюрленеллик тюлдю'''
$1",
'mergehistory-go' => 'Бирлешиннген тюрлендириулени кёргюз',
'mergehistory-submit' => 'Тюрлениулени бирлештир',
'mergehistory-empty' => 'Бирлешдирир ючюн тюрлениуле табылмагъандыла',
-'mergehistory-success' => '[[:$1]] бетни $3 {{PLURAL:$3|тюрлендириую|тюрлендириую}} тыйыншлы [[:$2]] ичинде бирлешдирилди.',
+'mergehistory-success' => '[[:$1]] бетни $3 {{PLURAL:$3|1=тюрлендириую|тюрлендириую}} тыйыншлы [[:$2]] ичинде бирлешдирилди.',
'mergehistory-fail' => 'Бетлине тарихлери бирлешемеди, тилейбиз бетни эмда заманны параметрлерин джангыдан сынагъыз.',
'mergehistory-no-source' => '$1 тамал бет джокъду',
'mergehistory-no-destination' => '$1 нюзюр бет джокъду',
'compareselectedversions' => 'Сайланнган версияланы тенглешдириу',
'showhideselectedversions' => 'Сайланнган версияланы кёргюз/джашыр',
'editundo' => 'ызына алыу',
-'diff-multi' => '({{PLURAL:$2|Бир къошулуучу|$2 къошулуучу}} этген {{PLURAL:$1|$1 аралыкъ тюрлениу|$1 аралыкъ тюрлениу}} кёргюзюлмегенди)',
-'diff-multi-manyusers' => '($2 къошулуучудан кёб {{PLURAL:$2|Бир къошулуучу|къошулуучу}} этген {{PLURAL:$1|бир аралыкъ тюрлениу|$1 аралыкъ тюрлениу}} кёргюзюлмегенди)',
-'difference-missing-revision' => 'Бу тенглешдириу ($1) ючюн {{PLURAL:$2|$2 версия}} {{PLURAL:$2|табылмады}}.
+'diff-multi-manyusers' => '($2 къошулуучудан кёб {{PLURAL:$2|1=Бир къошулуучу|къошулуучу}} этген {{PLURAL:$1|1=бир аралыкъ тюрлениу|$1 аралыкъ тюрлениу}} кёргюзюлмегенди)',
+'difference-missing-revision' => 'Бу тенглешдириу ($1) ючюн {{PLURAL:$2|1=$2 версия}} {{PLURAL:$2|табылмады}}.
Бу, эскирген джибериу бла кетерилген бетни версияларын тенглешдириуге кёчген сагъатда кёбюсюне болады.
'prevn' => 'алдагъы {{PLURAL:$1|$1}}',
'nextn' => 'эндиги {{PLURAL:$1|$1}}',
'prevn-title' => 'Алдагъы $1 {{PLURAL:$1|эсеб|эсеб}}',
-'nextn-title' => 'Ð\90Ñ\80Ñ\82дагÑ\8aÑ\8b $1 {{PLURAL:$1|эсеб|эсеб}}',
+'nextn-title' => 'Ðндиги $1 {{PLURAL:$1|эсеб|эсеб}}',
'shown-title' => 'Бетде $1 {{PLURAL:$1|джазыуну}} кёргюз',
'viewprevnext' => 'Къара: ($1 {{int:pipe-separator}} $2) ($3)',
'searchmenu-exists' => "'''Бу викиде «[[:$1]]» бет барды'''",
'searchprofile-images-tooltip' => 'Файлланы изле',
'searchprofile-everything-tooltip' => 'Бютеу бетледе изле (сюзюу бетледе да)',
'searchprofile-advanced-tooltip' => 'Энчи ат аланладада изле',
-'search-result-size' => '$1 ({{PLURAL:$2|$2 сёз}})',
-'search-result-category-size' => '{{PLURAL:$1|1 элемент|$1 элемент}} ({{PLURAL:$2|1 тюбкатегория|$2 тюбкатегория}}, {{PLURAL:$3|1 файл|$3 файл}})',
+'search-result-size' => '$1 ({{PLURAL:$2|1 сёз|$2 сёз}})',
+'search-result-category-size' => '{{PLURAL:$1|1=1 элемент|$1 элемент}} ({{PLURAL:$2|1=1 тюбкатегория|$2 тюбкатегория}}, {{PLURAL:$3|1=1 файл|$3 файл}})',
'search-result-score' => 'Келишиулюк: $1%',
'search-redirect' => '(Джиберилиниу $1)',
'search-section' => '($1 бёлюм)',
'searcheverything-enable' => 'Атланы бютеу аламларында изле',
'searchrelated' => 'бейламлы',
'searchall' => 'бютеу',
-'showingresults' => 'Тюбюрек № <strong>$2</strong> башлаб <strong>$1</strong> {{PLURAL:$1|эсеб|эсебле}} {{PLURAL:$1|кёргюзюлгенди|кёргюзюлгендиле}}.',
-'showingresultsnum' => 'Тюбюрек № <strong>$2</strong> башлаб <strong>$3</strong> {{PLURAL:$3|эсеб|эсебле}} {{PLURAL:$3|кёргюзюлгенди|кёргюзюлгендиле}}.',
-'showingresultsheader' => "'''$4''' ючюн {{PLURAL:$5|'''$3''' эсебден '''$1'''|'''$1 — $2''' арасы '''$3''' эсеб}}",
+'showingresults' => 'Тюбюрек № <strong>$2</strong> башлаб <strong>$1</strong> {{PLURAL:$1|1=эсеб|эсебле}} {{PLURAL:$1|1=кёргюзюлгенди|кёргюзюлгендиле}}.',
+'showingresultsnum' => 'Тюбюрек № <strong>$2</strong> башлаб <strong>$3</strong> {{PLURAL:$3|1=эсеб|эсебле}} {{PLURAL:$3|1=кёргюзюлгенди|кёргюзюлгендиле}}.',
+'showingresultsheader' => "'''$4''' ючюн {{PLURAL:$5|1='''$3''' эсебден '''$1'''|'''$1 — $2''' арасы '''$3''' эсеб}}",
'search-nonefound' => 'Соруу бла келишген эсеб джокъду',
'powersearch-legend' => 'Кенг излеу',
'powersearch-ns' => 'Атла аламда излеу:',
'prefs-rc' => 'Ахыр тюрлениуле',
'prefs-watchlist' => 'Кёзде тургъан тизме',
'prefs-watchlist-days' => 'Кёзде тургъан тизмеде кёргюзюллюк кюнлени саны:',
-'prefs-watchlist-days-max' => 'Максимум $1 {{PLURAL:$1|кюн|кюн}}',
+'prefs-watchlist-days-max' => 'Максимум $1 {{PLURAL:$1|1=кюн|кюн}}',
'prefs-watchlist-edits' => 'Кёзде тургъан тизмени кенглешдирилген вариантында кёргюзюллюк тюрлениулени саны:',
'prefs-watchlist-edits-max' => 'Максимум саны:1000',
'prefs-watchlist-token' => 'Кёзде тургъан тизмени токени:',
'rows' => 'Тизгинле:',
'columns' => 'Колонкала:',
'searchresultshead' => 'Излеу',
-'resultsperpage' => 'Бетде кёргюзюллюк табылгъан джазыуланы саны:',
'stub-threshold' => '<a href="#" class="stub">Стаблагъа джибериуню</a> формат этер ючюн марда (байтлада):',
'stub-threshold-disabled' => 'Джукъланыбды',
'recentchangesdays' => 'Ахыр тюрлениуледе кёргюзюллюк кюнле:',
-'recentchangesdays-max' => '(максимум $1 {{PLURAL:$1|кюн|кюн}})',
+'recentchangesdays-max' => '(максимум $1 {{PLURAL:$1|1=кюн|кюн}})',
'recentchangescount' => 'Тынгылау бла кёргюзюллюк тюрлениулени саны:',
'prefs-help-recentchangescount' => 'Бу, ахыр тюрлениулени, бетни тарихлерин эмда журналланы ичине къошады.',
'savedprefs' => 'Джарашдырыуларыгъыз сакъландыла.',
'youremail' => 'Электрон почта:',
'username' => '{{GENDER:$1|Къошулуучу ат}}:',
'uid' => '{{GENDER:$1|Къошулуучуну}} коду:',
-'prefs-memberingroups' => '{{PLURAL:$1|Группаны|Группаланы}} {{GENDER:$2|члени}}:',
+'prefs-memberingroups' => '{{PLURAL:$1|1=Группаны|Группаланы}} {{GENDER:$2|члени}}:',
'prefs-memberingroups-type' => '$1',
'prefs-registration' => 'Регистрацияны этилген заманы:',
'prefs-registration-date-time' => '$1',
'badsig' => 'Джараусуз къол салыныу.
HTML теглени осмакълагъыз.',
'badsiglength' => 'Къол салыуугъуз бек узунду.
-$1 {{PLURAL:$1|символдан|символладан}} кеб болургъа болмайды.',
+$1 {{PLURAL:$1|1=символдан|символладан}} кеб болургъа болмайды.',
'yourgender' => 'Эркиши/Тиширыу:',
'gender-unknown' => 'Белгиленмегенди',
'gender-male' => 'эркиши',
'recentchanges-label-minor' => 'Бу гитче тюрлениудю',
'recentchanges-label-bot' => 'Бу тюрлендириуню бот этгенди',
'recentchanges-label-unpatrolled' => 'Бу тюрлендириу алкъын патруль этилинмегенди',
-'recentchanges-legend-newpage' => '$1 — джангы бет',
+'recentchanges-label-plusminus' => 'Бетни ёлчеми быллай бир байтха тюрленнгенди',
+'recentchanges-legend-newpage' => '(къарагъыз: [[Special:NewPages|джангы бетлени тизмеси]])',
'rcnotefrom' => 'Тюбюрекде <strong>$2</strong> башлаб (<strong>$1</strong> дери) тюрлендириуле кёрюнедиле',
'rclistfrom' => '$1 башлаб джангы тюрлениулени кёргюз',
'rcshowhideminor' => 'гитче тюрлендириулени $1',
'rcshowhidebots' => 'ботланы $1',
-'rcshowhideliu' => 'кирген къошулуучуланы $1',
+'rcshowhideliu' => '$1 системагъа кирген къошулуучу',
'rcshowhideanons' => 'анонимлени $1',
'rcshowhidepatr' => '$1 патруль этилиннген тюрлендириуле',
'rcshowhidemine' => 'кесими тюрлендириулерими $1',
'rc-change-size' => '$1',
'rc-change-size-new' => 'Тюрлениуден сора ёлчеми: $1 {{PLURAL:$1|байт}}',
'newsectionsummary' => '/* $1 */ Джангы бёлюм',
-'rc-enhanced-expand' => 'Ð\9aÑ\8aоÑ\88акÑ\8aланÑ\8b кÑ\91Ñ\80гÑ\8eз (JavaScript Ñ\85айÑ\8bÑ\80ланадÑ\8b)',
+'rc-enhanced-expand' => 'ТолÑ\83Ñ\81Ñ\83 бла кÑ\91Ñ\80гÑ\8eз',
'rc-enhanced-hide' => 'Къошакъланы джашыр',
'rc-old-title' => 'биринчи «$1» деб къуралгъан',
# Recent changes linked
'recentchangeslinked' => 'Байламлы тюрлениуле',
-'recentchangeslinked-feed' => 'Ð\91айламлÑ\8b Ñ\82Ñ\8eÑ\80лендиÑ\80иÑ\83ле',
-'recentchangeslinked-toolbox' => 'Байламлы тюрлендириуле',
+'recentchangeslinked-feed' => 'Байламлы тюрлениуле',
+'recentchangeslinked-toolbox' => 'Байлам тюрлениуле',
'recentchangeslinked-title' => '$1 бет бла байламлы тюрлендириуле',
'recentchangeslinked-summary' => "Белгиленнген бет (неда белгиленнген категориягъа киргенле) джиберген бетледе джангы тюрлениулени тизмеси.
[[Special:Watchlist|Кёзде тургъан тизмеге]] кирген бетле '''чертилибдиле'''.",
'filetype-badmime' => '«$1» MIME типли файлланы джюклениуюне эркинлик берлимейди.',
'filetype-bad-ie-mime' => 'Internet Explorer, буну эркинлик берилмеген эмда потенциал заран берлик «$1» файл тип кибик таныгъаны ючюн бу файл джюклениллик тюлдю.',
'filetype-unwanted-type' => "'''\".\$1\"''' изленмеген файл типиди.
-Изленнген {{PLURAL:\$3|файл тип|файл типле}} \$2.",
-'filetype-banned-type' => "'''«.$1»''' — {{PLURAL:$4|джасакъланнган файл типди|джасакъланнган файл типледиле}}.
-Эркинлик берилген {{PLURAL:$3|файл тип|файл типле}}: $2.",
+Изленнген {{PLURAL:\$3|1=файл тип|файл типле}} \$2.",
+'filetype-banned-type' => "'''«.$1»''' — {{PLURAL:$4|1=джасакъланнган файл типди|джасакъланнган файл типледиле}}.
+Эркинлик берилген {{PLURAL:$3|1=файл тип|файл типле}}: $2.",
'filetype-missing' => 'Файлны кенглешиуу джокъду (сёз ючюн, «.jpg» кибик)',
'empty-file' => 'Сиз ийген файл бошду.',
'file-too-large' => 'Сиз ийген файл асыры уллуду.',
Файлыгъызны джангыдан джюклерге излей эсегиз, ызына къайтыб джангы ат хайырланыгъыз. [[File:$1|thumb|center|$1]]',
'fileexists-shared-forbidden' => 'Быллай атлы файл файлланы сакълауну джеринде барды.
Дагъыда файлыгъызны джюклерге излей эсегиз, ызына къайтыб джангы ат хайырланыгыз. [[File:$1|thumb|center|$1]]',
-'file-exists-duplicate' => 'Бу файл эндиги {{PLURAL:$1|файлны|файлланы}} дубликатыды:',
+'file-exists-duplicate' => 'Бу файл эндиги {{PLURAL:$1|1=файлны|файлланы}} дубликатыды:',
'file-deleted-duplicate' => 'Бу файлны ушашы болгъан башха файл ([[:$1]]) алгъаракъ кетерилгенди. Бу файлны джангыдан джюклерни аллы бла файлны кетериуюню тарихи бла танышыгъыз.',
'uploadwarning' => 'Эсгертиу',
'uploadwarning-text' => 'Файлны тюбюрекде келтирилген ачыкълауун тюрлендиригиз да джангыдан кёрюгюз.',
'backend-fail-closetemp' => 'Болджаллы файлны джабалмайды.',
'backend-fail-read' => '«$1» файлны окъуялмады.',
'backend-fail-create' => '«$1» файлны джазалмады.',
-'backend-fail-maxsize' => 'Ёлчеми {{PLURAL:$2|бир байт|$2 байт}}дан кёб болгъаны себебли «$1» файл джазылмады.',
+'backend-fail-maxsize' => 'Ёлчеми {{PLURAL:$2|1=бир байт|$2 байт}}дан кёб болгъаны себебли «$1» файл джазылмады.',
# Special:UploadStash
'uploadstash' => 'Джашыртын джюклеу',
'filehist-comment' => 'Эсгериу',
'filehist-missing' => 'Файл джокъду',
'imagelinks' => 'Файлны хайырланыуу',
-'linkstoimage' => 'Бу файлгъа {{PLURAL:$1|бет|$1 бет}} джибередиле:',
+'linkstoimage' => 'Бу файлгъа {{PLURAL:$1|1=бет|$1 бет}} джибередиле:',
'linkstoimage-more' => '$1 дегенден артыкъ {{PLURAL:$1|бет}} бу файлгъа джибериу береди.
Бу тизмеде бу файлгъа {{PLURAL:$1|къуру $1 джибериу}} кёргюзюледи.
[[Special:WhatLinksHere/$2|Толу тизме]] да барды.',
'nolinkstoimage' => 'Бу файлгъа джиберген бет джокъду.',
'morelinkstoimage' => 'Бу файлгъа [[Special:WhatLinksHere/$1|къалгъан джибериулеге]] къара.',
'linkstoimage-redirect' => '$1 (файл редирект) $2',
-'duplicatesoffile' => '{{PLURAL:$1|файл|$1 файл}}, бу файлны дубликатыды ([[Special:FileDuplicateSearch/$2|анданда кёб ангылатыу]]):',
+'duplicatesoffile' => '{{PLURAL:$1|1=файл|$1 файл}}, бу файлны дубликатыды ([[Special:FileDuplicateSearch/$2|анданда кёб ангылатыу]]):',
'sharedupload' => 'Бу файл $1денди эм башха проектледе хайырландыргъа боллукъду.',
'sharedupload-desc-there' => 'Бу файл $1 базадан башха проектледе хайырландырыргъа боллукъду.
Андан кёб билги ючюн [$2 файлны ангылатыу бетге] къарагъыз.',
# Random page
'randompage' => 'Эсде болмагъан бет',
-'randompage-nopages' => '{{PLURAL:$2|Ат аланында|Ат аланында}} чырт бир бет джокъду: $1.',
+'randompage-nopages' => '{{PLURAL:$2|1=Ат аланында|Ат аланында}} чырт бир бет джокъду: $1.',
# Random redirect
'randomredirect' => 'Сакъланмагъан джибериу',
'statistics-views-peredit' => 'Тюрлендириуге къарауну саны',
'statistics-users' => 'Регистрация этилген [[Special:ListUsers|къошулуучула]]',
'statistics-users-active' => 'Актив къошулуучула',
-'statistics-users-active-desc' => 'Ахыр {{PLURAL:$1|1 кюнде|$1 кюнде}} ишлеме этген къошулуучула',
+'statistics-users-active-desc' => 'Ахыр {{PLURAL:$1|1=1 кюнде|$1 кюнде}} ишлеме этген къошулуучула',
'statistics-mostpopular' => 'Эм кёб къаралгъан бетле',
'pageswithprop-submit' => 'Таб',
'fewestrevisions' => 'Эм аз версиясы болгъан бетле',
# Miscellaneous special pages
-'nbytes' => '$1 {{PLURAL:$1|байт}}',
-'ncategories' => '$1 {{PLURAL:$1|категория|категорияла}}',
-'nlinks' => '$1 {{PLURAL:$1|джибериу|джибериу}}',
-'nmembers' => '$1 {{PLURAL:$1|объект}}',
-'nrevisions' => '$1 {{PLURAL:$1|версия|версия}}',
-'nviews' => '$1 {{PLURAL:$1|къарау|къарау}}',
-'nimagelinks' => '$1 {{PLURAL:$1|бетде|бетде}} хайырланады',
-'ntransclusions' => '$1 {{PLURAL:$1|бетде|бетде}} хайырланады',
+'nbytes' => '$1 {{PLURAL:$1|байт|байт}}',
+'ncategories' => '$1 {{PLURAL:$1|1=категория|категорияла}}',
+'nlinks' => '$1 {{PLURAL:$1|1=джибериу|джибериу}}',
+'nmembers' => '$1 {{PLURAL:$1|объект|объект}}',
+'nrevisions' => '$1 {{PLURAL:$1|1=версия|версия}}',
+'nviews' => '$1 {{PLURAL:$1|1=къарау|къарау}}',
+'nimagelinks' => '$1 {{PLURAL:$1|1=бетде|бетде}} хайырланады',
+'ntransclusions' => '$1 {{PLURAL:$1|1=бетде|бетде}} хайырланады',
'specialpage-empty' => 'Сорма эсеб келтирмеди.',
'lonelypages' => 'Ёксюз бетле',
'lonelypagestext' => 'Тюбюндеги бетлеге {{SITENAME}} сайтдагъы башха бетледен джибериу берилмегенди неда ала башха бетлеге къошулмагъандыла.',
'listusers' => 'Къошулуучуланы тизмеси',
'listusers-editsonly' => 'Къуру тюрлендириу этген къошлуучуланы кёргюз',
'listusers-creationsort' => 'Къуралгъан заманына кёре сафла',
-'usereditcount' => '$1 {{PLURAL:$1|тюрлендириу|тюрлендириу}}',
+'usereditcount' => '$1 {{PLURAL:$1|1=тюрлендириу|тюрлендириу}}',
'usercreated' => '$1 $2 заманда {{GENDER:$3|регистрацияны ётгенди}}',
'newpages' => 'Джангы бетле',
'newpages-username' => 'Къошулуучуну аты:',
# Special:Categories
'categories' => 'Категорияла',
-'categoriespagetext' => 'Ызындан келген {{PLURAL:$1|категория|категорияла}} бет неда медия-файл тутадыла.
+'categoriespagetext' => 'Ызындан келген {{PLURAL:$1|1=категория|категорияла}} бет неда медия-файл тутадыла.
[[Special:UnusedCategories|Хайырланмагъан категорияла]] былайда кёргюзюлмегендиле.
Дагъыда [[Special:WantedCategories|изленнген категорияла]] гъакъарагъыз.',
'categoriesfrom' => 'Бу бла башланнган категорияланы кёргюз:',
# Special:ActiveUsers
'activeusers' => 'Актив къошулуучуланы тизмеси',
-'activeusers-intro' => 'Бу, ахыр $1 {{PLURAL:$1|кюнде|кюнде}} къаллайда болсун ишлетме кёргюзген къошлуучуланы тизмесиди.',
-'activeusers-count' => 'Ахыр {{PLURAL:$3|кюнде|$3 кюнде}} $1 {{PLURAL:$1|тюрлендириу|тюрлендириу}}',
+'activeusers-intro' => 'Бу, ахыр $1 {{PLURAL:$1|1=кюнде|кюнде}} къаллайда болсун ишлетме кёргюзген къошлуучуланы тизмесиди.',
+'activeusers-count' => 'Ахыр {{PLURAL:$3|1=кюнде|$3 кюнде}} $1 {{PLURAL:$1|1=тюрлендириу|тюрлендириу}}',
'activeusers-from' => 'Бу бла башланнган къошлуучуланы кёргюз:',
'activeusers-hidebots' => 'Ботланы джашыр',
'activeusers-hidesysops' => 'Администраторланы джашыр',
'listgrouprights-members' => '(къауумну тизмеси)',
'listgrouprights-right-display' => '<span class="listgrouprights-granted">$1 <code>($2)</code></span>',
'listgrouprights-right-revoked' => '<span class="listgrouprights-revoked">$1 <code>($2)</code></span>',
-'listgrouprights-addgroup' => '{{PLURAL:$2|Къауум|Къауум}} къошаргъа боллукъду: $1',
-'listgrouprights-removegroup' => 'бу {{PLURAL:$2|къауумдан|къауумладан}} къыстаргъа боллукъду: $1',
+'listgrouprights-addgroup' => '{{PLURAL:$2|1=Къауум|Къауум}} къошаргъа боллукъду: $1',
+'listgrouprights-removegroup' => 'бу {{PLURAL:$2|1=къауумдан|къауумладан}} къыстаргъа боллукъду: $1',
'listgrouprights-addgroup-all' => 'Бютеу къауумлагъа къошаргъа боллукъду',
'listgrouprights-removegroup-all' => 'бютеу къауумладан къыстаргъа боллукъду',
-'listgrouprights-addgroup-self' => 'кесини тергеу джазыууна {{PLURAL:$2|къауум|къауумла}} къошаллыкъды: $1',
-'listgrouprights-removegroup-self' => 'кесини тергеу джазыуундан {{PLURAL:$2|къауум|къауумланы}} къораталлыкъды: $1',
+'listgrouprights-addgroup-self' => 'кесини тергеу джазыууна {{PLURAL:$2|1=къауум|къауумла}} къошаллыкъды: $1',
+'listgrouprights-removegroup-self' => 'кесини тергеу джазыуундан {{PLURAL:$2|1=къауум|къауумланы}} къораталлыкъды: $1',
'listgrouprights-addgroup-self-all' => 'Бютеу къауумланы кесини тергеу джазыууна къошаллыкъды',
'listgrouprights-removegroup-self-all' => 'Кесини тергеу джазыуундан бютеу къауумланы къораталлыкъды',
'usermessage-editor' => 'Система билдириучю',
# Watchlist
-'watchlist' => 'Кёзюмде тургъан тизмем',
+'watchlist' => 'Кёздеги тизме',
'mywatchlist' => 'Кёздеги тизме',
'watchlistfor2' => '$1 ючюн $2',
'nowatchlist' => 'Кёзюгюзде тургъан тизмегиз бошду.',
'unwatchthispage' => 'Кёзде тутууну тохтат',
'notanarticle' => 'Статья тюлдю',
'notvisiblerev' => 'Версия кетерилгенди',
-'watchlist-details' => 'Кёзюгюзде тургъан тизмегизде, сюзюу бетлери саналмай {{PLURAL:$1|$1 бет|$1 бет}} барды.',
+'watchlist-details' => 'Кёздеги тизмегизде сюзюу бетлери саналмай {{PLURAL:$1|бет|бет}} барды.',
'wlheader-enotif' => 'Эл. почта бла хапар бериу джандырылыбды.',
'wlheader-showupdated' => "Ахыр кириуюгюзден сора бетни тюрлениулери '''къалын''' джазыу бла кёргюзюлгенди.",
'watchmethod-recent' => 'кёзде тургъан бетледе этилген ахыр тюрлениуле кёрюу',
'watchmethod-list' => 'кёзде тургъан бетледе этилген ахыр тюрлениуле кёрюу',
-'watchlistcontains' => 'Кёзюгюзде тургъан тизмегизде $1 {{PLURAL:$1|бет|бет}} барды.',
+'watchlistcontains' => 'Кёзюгюзде тургъан тизмегизде $1 {{PLURAL:$1|1=бет|бет}} барды.',
'iteminvalidname' => "'$1' элемент бла проблемала, джараусуз ат...",
-'wlnote' => "Тюбюндеди кёргюзюлгенди: ахыр '''$2''' сагъатха этилген ахыр '''$1''' тюрлениу, $3 $4 заманнга дери.",
'wlshowlast' => 'Арт $1 сагъат $2 кюннге $3 кёргюз',
'watchlist-options' => 'Кёзде тургъан тизмени джарашдырыулары',
'exblank' => 'бет бош эди',
'delete-confirm' => '«$1» — кетериу',
'delete-legend' => 'Кетер',
-'historywarning' => "'''Эсгериу:''' кетериле тургъан бетни $1 {{PLURAL:$1|версиялы|версиялы}} тарихи барды:",
+'historywarning' => "'''Эсгериу:''' кетериле тургъан бетни $1 {{PLURAL:$1|1=версиялы|версиялы}} тарихи барды:",
'confirmdeletetext' => 'Сиз бетни (неда суратны) бютеу тюрлениу тарихи бла толу кетерирге соргъансыз.
Алай этерге керти излегенигизни эм [[{{MediaWiki:Policy-url}}кетериу политика]] бёлюмде ачыкъланнган джорукъла бла этгенигизни, бегитигиз.',
'actioncomplete' => 'Этим толтурулду',
** Автор хакъланы бузуу
** Вандализм',
'delete-edit-reasonlist' => 'Чурумланы тизмесин тюрлендир',
-'delete-toobig' => 'Бу бетни, $1 {{PLURAL:$1|версияла|версияла}} бла бек узун тарихи барды.
+'delete-toobig' => 'Бу бетни, $1 {{PLURAL:$1|1=версияла|версияла}} бла бек узун тарихи барды.
Быллай бетлени кетерилиую, {{SITENAME}} сайтны бузмаз ючюн чекленгенди.',
-'delete-warning-toobig' => 'Бу бетни уллу тюрлендириу тарихи барды, $1 {{PLURAL:$1|версиядан|версиядан}} артыкъ.
+'delete-warning-toobig' => 'Бу бетни уллу тюрлендириу тарихи барды, $1 {{PLURAL:$1|1=версиядан|версиядан}} артыкъ.
Буну кетериу {{SITENAME}} ишлеулени асхатыргъа боллукъду;
эсгере андан ары ишлегиз.',
'protect-locked-dblock' => "Актив билги базаны киритленнгени себебли, коъруулау параметрлени тюрлендиреллик тюлсюз.
'''$1''' бет ючюн бусагъатдагъы параметрле:",
'protect-locked-access' => "Сизге хакъ джетмейди бетни джакълау дараджасын тюрлендирирге. '''$1''' бетни бусагъатдагъы джакълау джарашдырыулары:",
-'protect-cascadeon' => 'Бу бет {{PLURAL:$1|тюбюнде белгиленнген бетге|тюбюнде белгиленнген бетлеге}} къошулгъаны ючюн джакъланыбды. Ол {{PLURAL:$1|бетде|бетледе}} каскадлы джакълау салыныб турады. Сиз бу бетни джакълау дараджасын тюрлендирирге боллукъсуз, алай а ол каскад джакълауну тюрледирлик тюлдю.',
+'protect-cascadeon' => 'Бу бет {{PLURAL:$1|1=тюбюнде белгиленнген бетге|тюбюнде белгиленнген бетлеге}} къошулгъаны ючюн джакъланыбды. Ол {{PLURAL:$1|1=бетде|бетледе}} каскадлы джакълау салыныб турады. Сиз бу бетни джакълау дараджасын тюрлендирирге боллукъсуз, алай а ол каскад джакълауну тюрледирлик тюлдю.',
'protect-default' => 'Джакълаусуз',
'protect-fallback' => '«$1» эркинлик керекди',
'protect-level-autoconfirmed' => 'Джангы эм регистрация этмеген къошулуучуладан джакъла',
'undeletepage' => 'Кетерилген бетлени къара эмда ызына къайтар.',
'undeletepagetitle' => "'''Тюбюнде [[:$1|$1]] бетни кетерилген версиялары кёрюннгенди'''.",
'viewdeletedpage' => 'Кетерилген бетлеге къара',
-'undeletepagetext' => 'Тюбюндеги {{PLURAL:$1|бет|$1 бет}} кетерилгенди, алай а алкъыр архивдеди эм ызына къайтарыр мадар барды.
+'undeletepagetext' => 'Тюбюндеги {{PLURAL:$1|1=бет|$1 бет}} кетерилгенди, алай а алкъыр архивдеди эм ызына къайтарыр мадар барды.
Архив кёзюулю ариуланыргъа болады.',
'undelete-fieldset-title' => 'Версияны ызына джюкле',
'undeleteextrahelp' => "Бетле бла бирге тарихини ызына къайтарыр ючюн бютеу белгилени бош къоюгъузда '''Ызына къайтар''' тиекден басыгъыз. Бетни тарихини башха-башха къайтарыр ючюн къайтарыргъа излеген тюрлендириулени белгилеб '''Ызына къайтар''' тиекден басыгъыз. Сайланнган белгилени эм комментарийлени кетерир ючюн '''Ариула''' тиекден басыгъыз.",
-'undeleterevisions' => '$1 {{PLURAL:$1|версия|версия}} архив этилди',
+'undeleterevisions' => '$1 {{PLURAL:$1|1=версия|версия}} архив этилди',
'undeletehistory' => 'Сиз бетни ызына къайтарсагъыз, аны тюрлендириу тарихи да ызына къайтады.
Кетерилгенден сора ол ат бла джангы бет къуралса, ызына къайтхан версияла джангы версиланы аллында тюрлендириуню тарихинде чыгъарыкъдыла.',
'undeleterevdel' => 'Ызына къайтарыу, ахыр версияны неда файлны бузаргъа болса, тохтатыллыкъды.
'undeleteviewlink' => 'кёргюз',
'undeleteinvert' => 'Сайлауну ызына бур',
'undeletecomment' => 'Чурум:',
-'undeletedrevisions' => '$1 {{PLURAL:$1|тюрлендириу|тюрлендириу}} ызына къайтарылды',
-'undeletedrevisions-files' => '{{PLURAL:$1|1 версия|$1 версия}} бла {{PLURAL:$2|1 файл|$2 файл}} ызына къайтарылды',
-'undeletedfiles' => '{{PLURAL:$1|1 файл|$1 файл}} ызына къайтарылды',
+'undeletedrevisions' => '$1 {{PLURAL:$1|1=тюрлендириу|тюрлендириу}} ызына къайтарылды',
+'undeletedrevisions-files' => '{{PLURAL:$1|1=1 версия|$1 версия}} бла {{PLURAL:$2|1=1 файл|$2 файл}} ызына къайтарылды',
+'undeletedfiles' => '{{PLURAL:$1|1=1 файл|$1 файл}} ызына къайтарылды',
'cannotundelete' => 'Бетни неда медианы сизден алгъа башха къошулуучу ызына къайтаргъаны себебли сизини ызына къайтарыу ишлемигиз джараусузду.',
'undeletedpage' => "'''$1 бет ызына къайтарылды '''
'blanknamespace' => '(Баш)',
# Contributions
-'contributions' => 'Къошулуучуну къошханы',
+'contributions' => '{{GENDER:$1|Къошулуучуну}} къошуму',
'contributions-title' => '$1 къошулуучуну къошагъы',
'mycontris' => 'Къошум',
-'contribsub2' => '$1 ($2) къошакъ',
+'contribsub2' => '{{GENDER:$3|$1}} къошуму ($2)',
'nocontribs' => 'Бу критерийлеге келишген тюрлениуле табылмадыла',
-'uctop' => '(аÑ\85Ñ\8bÑ\80гъы)',
+'uctop' => '(бÑ\83Ñ\81агÑ\8aаÑ\82дагъы)',
'month' => 'Айдан башлаб (эм алгъаракъ):',
'year' => 'Джылдан башлаб (эм алгъаракъ):',
'sp-contributions-submit' => 'Таб',
# What links here
-'whatlinkshere' => 'Былайгъа джибериуле',
+'whatlinkshere' => 'Бетге джибериуле',
'whatlinkshere-title' => '«$1» бетге джиберген бетле',
'whatlinkshere-page' => 'Бет:',
'linkshere' => "'''[[:$1]]''' битге джиберген бетле:",
'blocklist-reason' => 'Чурум',
'ipblocklist-submit' => 'Таб',
'ipblocklist-localblock' => 'Локал блокга салыу',
-'ipblocklist-otherblocks' => 'Башха {{PLURAL:$1|блокга салыу|блокга салыула}}',
+'ipblocklist-otherblocks' => 'Башха {{PLURAL:$1|1=блокга салыу|блокга салыула}}',
'infiniteblock' => 'Болджалсыз блокга салыу',
'expiringblock' => '$1 $2 бошаллыкъды',
'anononlyblock' => 'къуру анонимле',
'ipb_hide_invalid' => 'Бу тергеу джазыуну джашырыр мадар джокъду; асыры кёб тюрлендириу болургъа болур.',
'ipb_already_blocked' => '«$1» блокга салыныбды',
'ipb-needreblock' => '$1 алайсызда тыйылыбды. Джарашдырыуланы тюрлендирирге излеймисиз?',
-'ipb-otherblocks-header' => 'Башха {{PLURAL:$1|блок|блокла}}',
+'ipb-otherblocks-header' => 'Башха {{PLURAL:$1|1=блок|блокла}}',
'ipb_cant_unblock' => 'Халат: Блок ID $1 табылмагъанды.
Блок къоратылгъан болур.',
'ipb_blocked_as_range' => 'Халат: $1 IP-адрес ачыкъдан тыйылмагъаны себебли, блокдан чыгъараллыкъ тюлсюз.
'movepage-page-exists' => '$1 статья алайсызда барды эмда автомат халда джангыдан джазылалмаз.',
'movepage-page-moved' => '$1 бет $2 бетге атын ауушдурду.',
'movepage-page-unmoved' => '$1 бет $2 бетге атын ауушдуралмаз.',
-'movepage-max-pages' => 'Эм кёб $1 {{PLURAL:$1|бет|бет}} атын тюрлендирди эм андан асламы автомат халда атын тюрлендирелмез.',
+'movepage-max-pages' => 'Эм кёб $1 {{PLURAL:$1|бет}} атын тюрлендирди эм андан асламы автомат халда атын тюрлендирелмез.',
'movelogpage' => 'Атла тюрлениуню журналы',
'movelogpagetext' => 'Тюбюнде болгъан тизме аты тюрлендирилген бетлени кёргюзеди.',
-'movesubpage' => '{{PLURAL:$1|Subpage|Бет тюбле}}',
-'movesubpagetext' => 'Бу бетни тюбюнде кёргюзюлген $1 {{PLURAL:$1|бет тюбю|бет тюбю}} барды.',
+'movesubpage' => '{{PLURAL:$1|1=Subpage|Бет тюбле}}',
+'movesubpagetext' => 'Бу бетни тюбюнде кёргюзюлген $1 {{PLURAL:$1|1=бет тюбю|бет тюбю}} барды.',
'movenosubpage' => 'Бу бетни тюб бети джокъду.',
'movereason' => 'Чурум:',
'revertmove' => 'ызына къайтыу',
'import-comment' => 'Эсгериу:',
'importtext' => 'Бетни къайнакъ викиден [[Special:Export|адырны хайырландырыб]] эскпорт этигиз. Файлны дискде сакълагъыз эм былайгъа джюклегиз.',
'importstart' => 'Файлла импорт этиле турадыла...',
-'import-revision-count' => '$1 {{PLURAL:$1|версия|версия}}',
+'import-revision-count' => '$1 {{PLURAL:$1|1=версия|версия}}',
'importnopages' => 'Импорт этиллик бет джокъду',
-'imported-log-entries' => 'Журналны {{PLURAL:$1|джазыуу|джазыуу}} импорт этилинди.',
+'imported-log-entries' => 'Журналны {{PLURAL:$1|1=джазыуу|джазыуу}} импорт этилинди.',
'importfailed' => '$1 импорту джетишимсиз бошалды',
'importunknownsource' => 'Билинмеген импорт къайнакъ типи',
'importcantopen' => 'Импорт этилген файл ачылалмады',
'importlogpage' => 'Импортну журналы',
'importlogpagetext' => 'Башха викиледен бетлени тюрлендириу тарихин администраторланы импорт этиую.',
'import-logentry-upload' => '[[$1]] файл джюклениую бла импорт этилди',
-'import-logentry-upload-detail' => '$1 {{PLURAL:$1|версия|версия}}',
+'import-logentry-upload-detail' => '$1 {{PLURAL:$1|1=версия|версия}}',
'import-logentry-interwiki' => '$1 трансвикиленди',
-'import-logentry-interwiki-detail' => '$2 бетден $1 {{PLURAL:$1|весрия|версия}}',
+'import-logentry-interwiki-detail' => '$2 бетден $1 {{PLURAL:$1|1=весрия|версия}}',
# JavaScriptTest
'javascripttest' => 'JavaScript тинтилиую',
'tooltip-pt-watchlist' => 'Сиз кёзюгюзде тутхан бетлени тизмеси',
'tooltip-pt-mycontris' => 'Сизни тюрлендириулеригизни тизмеси',
'tooltip-pt-login' => 'Былайда системада регистрация этерге боллукъду, алай а ол ажымсыз керекли тюйюлдю',
-'tooltip-pt-anonlogin' => 'Былайда сисетмагъа регистрация этерге боллукъду, алай а бу зорунлу тюлдю.',
'tooltip-pt-logout' => 'Чыгъыу',
'tooltip-ca-talk' => 'Бетни ичиндегин сюзюу',
'tooltip-ca-edit' => 'Бу бетни тюрлендирирге болады. Сакълагъынчы ал къарауну хайырландырыгъыз.',
'notacceptable' => 'Бу вики-сервер сизни браузеригиз излеген форматда билгиле берелмейди.',
# Attribution
-'anonymous' => 'сайтны аноним {{PLURAL:$1|къошулуучулары|къошулуучулары}}',
+'anonymous' => 'сайтны аноним {{PLURAL:$1|1=къошулуучулары|къошулуучулары}}',
'siteuser' => '{{SITENAME}} къошулуучу $1',
'anonuser' => '{{SITENAME}} аноним къошулуучу $1',
'lastmodifiedatby' => 'Бет эм ахыр $3 джанындан $2, $1 заманда тюрлендирилгенди.',
'othercontribs' => '$1 джанындан этилген ишге тамалланады.',
'others' => 'башхала',
-'siteusers' => '{{SITENAME}} {{PLURAL:$2|къошулуучу|къошулуучула}} $1',
-'anonusers' => '{{SITENAME}} аноним {{PLURAL:$2|къошулуучу|къошулуучула}} $1',
+'siteusers' => '{{SITENAME}} {{PLURAL:$2|1=къошулуучу|къошулуучула}} $1',
+'anonusers' => '{{SITENAME}} аноним {{PLURAL:$2|1=къошулуучу|къошулуучула}} $1',
'creditspage' => 'Бетни кредитлери',
'nocredits' => 'Бу къошулуучу ючюн кредит билги джокъду.',
'imagemaxsize' => "Суратны ёлчемини чеги:<br />''(файлны ангылытыу бетле ючюн)''",
'thumbsize' => 'Гитче ёлчем:',
'widthheight' => '$1 × $2',
-'widthheightpage' => '$1 × $2, $3 {{PLURAL:$3|бет|бет}}',
+'widthheightpage' => '$1 × $2, $3 {{PLURAL:$3|1=бет|бет}}',
'file-info' => 'файлны ёлчеми: $1, MIME типи: $2',
'file-info-size' => '$1 × $2 пиксель, файлны ёлчеми: $3, MIME типи: $4',
'file-nohires' => 'Мындан ары ачыкъланнган версиясы джокъду',
'svg-long-desc' => 'SVG файл, шартлы $1 × $2 пиксель, файлны ёлчеми: $3',
-'show-big-image' => 'ТолÑ\83 аÑ\87Ñ\8bкÑ\8aлаÑ\83',
+'show-big-image' => 'ЧÑ\8bкÑ\8aгÑ\8aан Ñ\84айл',
'show-big-image-preview' => 'Ал къарауда уллулугъу: $1.',
'show-big-image-size' => '$1 × $2 пиксель',
'file-info-gif-looped' => 'тогъайланнганды',
-'file-info-gif-frames' => '$1 {{PLURAL:$1|фрейм|фрейм}}',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|1=фрейм|фрейм}}',
'file-info-png-looped' => 'тогъайланнганды',
-'file-info-png-repeat' => '$1 {{PLURAL:$1|кере|кере}} ойнатылды',
-'file-info-png-frames' => '$1 {{PLURAL:$1|фрейм|фрейм}}',
+'file-info-png-repeat' => '$1 {{PLURAL:$1|1=кере|кере}} ойнатылды',
+'file-info-png-frames' => '$1 {{PLURAL:$1|1=фрейм|фрейм}}',
# Special:NewFiles
'newimages' => 'Джангы файлланы галереясы',
-'imagelisttext' => "Тюбюрекде $2 кёре тизилген '''$1''' {{PLURAL:$1|файл|файл}} кёрюнеди.",
+'imagelisttext' => "Тюбюрекде $2 кёре тизилген '''$1''' {{PLURAL:$1|1=файл|файл}} кёрюнеди.",
'newimages-summary' => 'Бу къуллукъ бет, кёб болмай джюкленнген файлланы кёргюзеди.',
'newimages-legend' => 'Фильтр',
'newimages-label' => 'Файлны аты (неда кесеги):',
'sp-newimages-showfrom' => '$1, $2 замандан башлаб джангы файлланы кёргюз',
# Video information, used by Language::formatTimePeriod() to format lengths in the above messages
-'seconds' => '{{PLURAL:$1|$1 секунд|$1 секунд}}',
-'minutes' => '{{PLURAL:$1|$1 минут|$1 минут}}',
-'hours' => '{{PLURAL:$1|$1 сагъат|$1 сагъат}}',
-'days' => '{{PLURAL:$1|$1 кюн|$1 кюн}}',
+'seconds' => '{{PLURAL:$1|1=$1 секунд|$1 секунд}}',
+'minutes' => '{{PLURAL:$1|1=$1 минут|$1 минут}}',
+'hours' => '{{PLURAL:$1|1=$1 сагъат|$1 сагъат}}',
+'days' => '{{PLURAL:$1|1=$1 кюн|$1 кюн}}',
'weeks' => '{{PLURAL:$1|ыйыкъ}}',
'months' => '{{PLURAL:$1|ай}}',
'years' => '{{PLURAL:$1|джыл}}',
'exif-gpslongitude-w' => 'Кюнбатыш узунлукъ',
# Pseudotags used for GPSAltitudeRef
-'exif-gpsaltitude-above-sealevel' => '$1 {{PLURAL:$1|метрге|метрге}} тенгизден мийик',
-'exif-gpsaltitude-below-sealevel' => '$1 {{PLURAL:$1|метрге|метрге}} тенгизден алаша',
+'exif-gpsaltitude-above-sealevel' => '$1 {{PLURAL:$1|1=метрге|метрге}} тенгизден мийик',
+'exif-gpsaltitude-below-sealevel' => '$1 {{PLURAL:$1|1=метрге|метрге}} тенгизден алаша',
'exif-gpsstatus-a' => 'Ёлчелеу бошалмагъанды',
'exif-gpsstatus-v' => 'Ёлчелеу бошалгъанды',
Нормал ал къарауну хайырланыгъыз.',
# Friendlier slave lag warnings
-'lag-warn-normal' => '$1 {{PLURAL:$1|секундан|секундан}} джангы тюрлендириуле бу тизмеде кёрюнмезге боллукъдула.',
-'lag-warn-high' => 'Билги базаны сервериндеги бек кечигиу себебли, $1 {{PLURAL:$1|секундан|секундан}} джангы тюрлендириуле бу тизмеде кёрюнмей къалыргъа болур.',
+'lag-warn-normal' => '$1 {{PLURAL:$1|1=секундан|секундан}} джангы тюрлендириуле бу тизмеде кёрюнмезге боллукъдула.',
+'lag-warn-high' => 'Билги базаны сервериндеги бек кечигиу себебли, $1 {{PLURAL:$1|1=секундан|секундан}} джангы тюрлендириуле бу тизмеде кёрюнмей къалыргъа болур.',
# Watchlist editor
-'watchlistedit-numitems' => 'Кёзде тургъан тизмеде {{PLURAL:$1|1 джазылгъан|$1 джазылгъан}} барды, сюзюу бетлени тышында.',
+'watchlistedit-numitems' => 'Кёзде тургъан тизмеде {{PLURAL:$1|1=1 джазылгъан|$1 джазылгъан}} барды, сюзюу бетлени тышында.',
'watchlistedit-noitems' => 'Кёзюгюзде тургъан тизмегизде бир джазылгъан да джокъду.',
'watchlistedit-normal-title' => 'Чынчыкълау спизокню тюрлендир',
'watchlistedit-normal-legend' => 'Кёзюгюзде тургъан тизмегизден джазылгъанланы кетериу',
Джазылгъанланы кетерир ючюн, къатындагъы тёртгюлчюкде белгилеб, «{{int:Watchlistedit-normal-submit}}» тиекден басыгъыз.
Сиз дагъыда [[Special:EditWatchlist/raw|тизмени текст кибик тюрлендирирге]] боллукъсуз.',
'watchlistedit-normal-submit' => 'Башлыкъланы кетер',
-'watchlistedit-normal-done' => '{{PLURAL:$1|1 джазылгъан|$1 джазылгъан}}, кёзюгюзде тургъан тизмегизден кетерилди:',
+'watchlistedit-normal-done' => '{{PLURAL:$1|1=1 джазылгъан|$1 джазылгъан}}, кёзюгюзде тургъан тизмегизден кетерилди:',
'watchlistedit-raw-title' => 'Кёзде тургъан «чий» тизмени тюрлендир',
'watchlistedit-raw-legend' => 'Кёзде тургъан «чий» тизмени тюрлендир',
'watchlistedit-raw-explain' => 'Кёзюгюзде тургъан тизмегиздеги бетле тюбюнде кёрюнедиле. Хар тизгинде бир башлыкъ болады, бетлени къошуб неда кетериб тизмени тюрлендирирге боллукъсуз.
'watchlistedit-raw-titles' => 'Башлыкъла:',
'watchlistedit-raw-submit' => 'Кёзде тургъан тизмени сакъла',
'watchlistedit-raw-done' => 'Кёзюгюзде тургъан тизмегиз сакъланнганды.',
-'watchlistedit-raw-added' => '{{PLURAL:$1|1 башлыкъ|$1 башлыкъ}} къошулду:',
-'watchlistedit-raw-removed' => '{{PLURAL:$1|1 башлыкъ|$1 башлыкъ}} кетерилди:',
+'watchlistedit-raw-added' => '{{PLURAL:$1|1=1 башлыкъ|$1 башлыкъ}} къошулду:',
+'watchlistedit-raw-removed' => '{{PLURAL:$1|1=1 башлыкъ|$1 башлыкъ}} кетерилди:',
# Watchlist editing tools
'watchlisttools-view' => 'Тизмеден бетледе тюрлениуле',
# Special:Version
'version' => 'Версия',
'version-extensions' => 'Салыннган кенгертиуле',
-'version-specialpages' => 'Къуллукъчу бетле',
+'version-specialpages' => 'Къуллукъ бетле',
'version-parserhooks' => 'Синтаксис анализаторну тутуучула',
'version-variables' => 'Тюрленнгенле',
'version-antispam' => 'Антиспам',
'fileduplicatesearch-submit' => 'Таб',
'fileduplicatesearch-info' => '$1 × $2 пиксель<br />Файлны ёлчеми: $3<br />MIME-тип: $4',
'fileduplicatesearch-result-1' => '«$1» файлны келишген дубликаты джокъду',
-'fileduplicatesearch-result-n' => '«$1» файлны {{PLURAL:$2|1 келишген дубликатыi|$2 келишген дубликаты}} барды.',
+'fileduplicatesearch-result-n' => '«$1» файлны {{PLURAL:$2|1=1 келишген дубликатыi|$2 келишген дубликаты}} барды.',
'fileduplicatesearch-noresults' => '«$1» деген файл табылмады.',
# Special:SpecialPages
-'specialpages' => 'Къуллукъчу бетле',
+'specialpages' => 'Къуллукъ бетле',
'specialpages-note' => '* Тюз къуллукъчу бетле.
* <span class="mw-specialpagerestricted">Кирирге эркинлик чекленнген къуллукъчу бетле.</span>
* <span class="mw-specialpagecached">Кэш этилген къуллукъчу бетле (эски болургъа боллукъдула).</span>',
'specialpages-group-maintenance' => 'Техника баджарыуну отчетлары',
'specialpages-group-other' => 'Башха къуллукъчу бетле',
-'specialpages-group-login' => 'Ð\9aиÑ\80 / Ñ\80егиÑ\81Ñ\82Ñ\80аÑ\86иÑ\8f Ñ\8dÑ\82',
+'specialpages-group-login' => 'СиÑ\81Ñ\82емагÑ\8aа киÑ\80иÑ\83 / Ð\90ккаÑ\83нÑ\82 кÑ\8aÑ\83Ñ\80аÑ\83',
'specialpages-group-changes' => 'Ахыр тюрлендириуле бла журналла',
'specialpages-group-media' => 'Медиа-материалланы юсюнден отчетла бла джюклеуле',
'specialpages-group-users' => 'Къошулуучула эм хакълары',
'tags-description-header' => 'Магъананы толу ангылтыуу',
'tags-hitcount-header' => 'Белгиленнген тюрлендириуле',
'tags-edit' => 'тюрлендир',
-'tags-hitcount' => '$1 {{PLURAL:$1|тюрлениу|тюрлениу}}',
+'tags-hitcount' => '$1 {{PLURAL:$1|1=тюрлениу|тюрлениу}}',
# Special:ComparePages
'comparepages' => 'Бетлени тенглешдир',
# API errors
'api-error-badtoken' => 'Ич халат: терс токен.',
-'api-error-duplicate-popup-title' => ' {{PLURAL:$1|Файлны|Файлны}} дубликаты',
+'api-error-duplicate-popup-title' => ' {{PLURAL:$1|1=Файлны|Файлны}} дубликаты',
'api-error-empty-file' => 'Сиз ийген файлны ичи бошду.',
'api-error-emptypage' => 'Ичи бош болгъан джангы бетле къураргъа болмайды.',
'api-error-file-too-large' => 'Сиз ийген файл асыры уллуду.',
'api-error-filename-tooshort' => 'Файлны аты асыры къысхады.',
'api-error-filetype-banned' => 'Быллай типли файлла джасакъланыбдыла.',
-'api-error-filetype-banned-type' => '$1 — {{PLURAL:$4|джасакъланнган файл типди|джасакъланнган файл типледиле}}. {{PLURAL:$3|Эркинлик берилген файл тип —|Эркинлик берилген файл типле:}} $2.',
+'api-error-filetype-banned-type' => '$1 — {{PLURAL:$4|1=джасакъланнган файл типди|джасакъланнган файл типледиле}}. {{PLURAL:$3|1=Эркинлик берилген файл тип —|Эркинлик берилген файл типле:}} $2.',
'api-error-filetype-missing' => 'Файлны кенгериую джокъду.',
'api-error-hookaborted' => 'Сиз теджеген тюрлендириуню кенгертиуню сюзюучю джасакълагъанды.',
'api-error-illegal-filename' => 'Джарамагъан файл ат.',
$messages = array(
# User preference toggles
'tog-underline' => 'Dun de Links ungerstriche:',
-'tog-justify' => 'Dun de Avschnedde em Blocksatz aanzeije',
'tog-hideminor' => 'Dun de klein Mini-Änderunge (<strong>M</strong>) en de Liss met „{{int:Recentchanges}}“ <strong>nit</strong> aanzeije',
'tog-hidepatrolled' => 'Dun de nohjeloorte Änderunge en de „{{int:recentchanges}}“ eez ens <strong>nit</strong> aanzeije',
'tog-newpageshidepatrolled' => 'Dun de nohjeloorte Änderunge en de Leß „{{int:newpages}}“ eez ens <strong>nit</strong> aanzeije',
'tog-numberheadings' => 'Dun de Üvverschrefte automatisch nummereere',
'tog-showtoolbar' => 'De Wärkzüchleß zom Ändere aanzeije',
'tog-editondblclick' => 'Sigge met Dubbel-Klicke ändere',
-'tog-editsection' => 'Maach [{{int:Editsection}}]-Links aan de Avschnedde dran',
'tog-editsectiononrightclick' => 'Afschnedde met Räächs-Klecke op de Üvverschrefte ändere',
-'tog-showtoc' => 'Zeich en Enhaldsüvversich bei Sigge met mieh wie drei Üvverschrefte dren',
'tog-rememberpassword' => 'Op Duur enlogge op dämm Kompjuter un för dää Brauser (hält {{PLURAL:$1|för eine Daach|bes op $1 Dääsch|bloß för hück}})',
'tog-watchcreations' => 'Donn Sigge beim neu Aanlääje automattesch för ming Oppaßlėß vörschlonn',
'tog-watchdefault' => 'Donn Sigge beim Ändere automattesch för ming Oppaßlėß vörschlonn',
'viewtalkpage' => 'Klaaf aanluure',
'otherlanguages' => 'En ander Schprooche',
'redirectedfrom' => '(Ömjeleit vun $1)',
-'redirectpagesub' => 'Ömleitungssigg',
+'redirectpagesub' => 'Ömleidongssigg',
'lastmodifiedat' => 'Heh di Sigg es et letz aam $1 öm $2 Uhr jeändert woode.',
'viewcount' => 'De Sigg es bes jetz {{PLURAL:$1|eimol|$1 Mol|keijmol}} avjerofe woode.',
'protectedpage' => 'Jeschötzte Sigg',
'invalidtitle-unknownnamespace' => '„$2“ es ene onjöltijje Tittel för e Appachtemang met dä verkehte Nommer $1.',
'exception-nologin' => 'Nit enjelogg',
'exception-nologin-text' => 'Heh di Sigg udder heh dä Opdraach jeiht blooß, wann De heh em Wiki enjelogg bes.',
+'exception-nologin-text-manual' => 'De mööds ald $1, öm heh di Sigg udder di Axjuhn zohjriife ze dörve.',
# Virus scanner
'virus-badscanner' => "Fääler en de Enstellunge: Dat Projramm ''$1'' fö noh Kompjuterwiere ze söke, dat kenne mer nit.",
'showhideselectedversions' => 'De ußjewählte Versione aanzeije udder vershteiche',
'editundo' => 'De letzte Änderung zeröck nämme',
'diff-empty' => '(Keine Ongerscheid)',
-'diff-multi' => '(Mer don hee {{PLURAL:$1|eij Version|$1 Versione|keij Version}} dozwesche beim Verjliesche översprenge. Di sin vun jesamp {{PLURAL:$2|einem Metmaacher|$2 Metmaachere|keinem Metmaacher}} jemaat woode)',
'diff-multi-manyusers' => '({{PLURAL:$1|Ein Version|$1 Versione|kei Version}} dozwesche vun mieh wi {{PLURAL:$2|einem Metmaacher|$2 Metmaachere|keinem Metmaacher}} wääde nit jezeish)',
'difference-missing-revision' => '{{PLURAL:$2|Ein Version|$2 Versione}} vun heh däm Verjlisch zwesche Versione ($1) {{PLURAL:$2|hammer}} nit jefonge.
'search-nonefound' => 'Mer han nix zopaß jefonge för Ding Aanfrohch.',
'powersearch-legend' => 'Extra Söhke',
'powersearch-ns' => 'Söök en de Apachtemangs:',
-'powersearch-redir' => 'Ömleidunge aanzeije',
+'powersearch-redir' => 'Ömleidonge aanzeije',
'powersearch-togglelabel' => ' ',
'powersearch-toggleall' => 'Övverall Höhksche draan maache',
'powersearch-togglenone' => 'All Höhksche fott nämme',
'rows' => 'Reihe:',
'columns' => 'Spalte:',
'searchresultshead' => 'Beim Söhke',
-'resultsperpage' => 'Zeich Treffer pro Sigg:',
'stub-threshold' => 'Links passend för <a href="#" class="stub">klein Sigge</a> fomateere av esu vill Bytes:',
'stub-threshold-disabled' => 'Ußjeschalldt',
'recentchangesdays' => 'Aanzahl Dage en de Liss met de „Neuste Änderunge“ — als Standad:',
'right-move-subpages' => 'Sigge, un ier Ungersigge, zosamme ömnenne',
'right-move-rootuserpages' => '(Houp)-Metmaacher-Sigg Ömnänne',
'right-movefile' => 'Dateie ömnenne',
-'right-suppressredirect' => 'Kein automatesche Ömleidung aanlääje beim Ömnenne',
+'right-suppressredirect' => 'Kein automatesche Ömleidong aanlääje beim Ömnenne',
'right-upload' => 'Dateie huhlade',
'right-reupload' => 'En Datei ußtuusche, di ussem Wiki kütt',
'right-reupload-own' => 'En selvs huhjelade Datei ußtuusche',
'right-unblockself' => 'Retuur nämme, wam_mer sellver jesperrt woode es',
'right-protect' => 'Sigge schöze, jeschözde Sigge änndere, un der iere Schoz widder ophevve',
'right-editprotected' => 'Sigge ändere, di met „{{int:protect-level-sysop}}“ jezöz sin',
+'right-editsemiprotected' => 'Sigge met däm Schoz „{{int:protect-level-autoconfirmed}}“ ändere',
'right-editinterface' => 'Sigge met de Texte ändere, die et Wiki kallt',
'right-editusercssjs' => 'Anderlücks CSS- un JS-Dateie ändere',
'right-editusercss' => 'Anderlücks CSS-Dateie ändere',
'right-editmyusercss' => 'De eije <i lang="en" xml:lang="en">CSS</i> Datteije aanlääje un ändere',
'right-editmyuserjs' => 'Eije JaavaSkrepp-Datteije aanlääje un ändere',
'right-viewmywatchlist' => 'De eije Oppaßleß beloore',
+'right-editmywatchlist' => 'De eije Oppaßleß ändere. Opjepaß: e paa axjuhne donn Sigge en di Liss-eren, och der ohne dat Rääsch.',
'right-viewmyprivateinfo' => 'ding eije päsöhnlesche Dahte belohre, wi de Adräß för de <i lang="en" xml:lang="en">e-mail</i> udder Dinge ääschte Nahme',
'right-editmyprivateinfo' => 'ding eije päsöhnlesche Dahte ändere, wi de Adräß för de <i lang="en" xml:lang="en">e-mail</i> udder der ääschte Nahme',
'right-editmyoptions' => 'De eije Enschtällonge ändere',
'recentchanges-label-bot' => 'Di Änderung es fun enem Bot jemaat woode',
'recentchanges-label-unpatrolled' => 'Heh di Änderung es noch nit nohjeloort',
'recentchanges-label-plusminus' => 'Der Ömvang vun dä Sigg hät sesch öm di Aanzahl Bytes verändert.',
+'recentchanges-legend-heading' => "'''Lejänd:'''",
'recentchanges-legend-newpage' => '(Loor och noh de [[Special:NewPages|Leß met de neue Sigge]])',
+'recentchanges-legend-plusminus' => "(''±123'')",
'rcnotefrom' => 'Hee {{PLURAL:$1|es ein|sin bes op <strong>$1</strong>|es keine}} fun de Änderunge zick dem <strong>$3</strong> öm <strong>$4</strong> Uhr opjelėß.',
'rclistfrom' => 'Zeich de Änderunge vum $1 aan',
'rcshowhideminor' => '$1 klein Mini-Änderunge',
# Random page in category
'randomincategory' => 'En zohfälleje Sigg us ener Saachjropp',
+'randomincategory-invalidcategory' => '„$1“ es keine jölteje Nahme för en Saachjropp.',
'randomincategory-nopages' => 'et sinn er kein Sigge en dä Saachjropp [[:Category:$1|$1]] dren.',
'randomincategory-selectcategory' => 'Holl en zohfälleje Sigg us dä Saachjropp: $1 $2.',
'randomincategory-selectcategory-submit' => 'Lohß Jonn!',
# Random redirect
'randomredirect' => 'Zofällije Ömleitung',
-'randomredirect-nopages' => 'En däm Appachtemang „$1“ sin ja kein Ömleidunge dren.',
+'randomredirect-nopages' => 'En däm Appachtemang „$1“ sin ja kein Ömleidonge dren.',
# Statistics
'statistics' => 'Schtatistike',
<del>Ußjeshtreshe</del> Reije sin ald äleedesh.
Met däm „(Ändere)“-Link kanns De de eetste Sigg tirek aanpacke.
Tipp: Merk Der dä Tittel vun dä Sigg dovör.',
-'double-redirect-fixed-move' => 'dubbel Ömleidung nohm Ömnenne automattesch opjelös: [[$1]] → [[$2]]',
-'double-redirect-fixed-maintenance' => 'De dubbelte Ömleidung vun [[$1]] noh [[$2]] wood opjelühß.',
+'double-redirect-fixed-move' => 'dubbel Ömleidong nohm Ömnenne automattesch opjelös: [[$1]] → [[$2]]',
+'double-redirect-fixed-maintenance' => 'De dubbelte Ömleidong vun [[$1]] noh [[$2]] wood opjelühß.',
'double-redirect-fixer' => '(Opjaveleß)',
'brokenredirects' => 'Ömleitunge, die en et Leere jonn',
'protectedpages' => 'Jeschötzte Sigge',
'protectedpages-indef' => 'Nor de Sigge zeije, woh alleins de Wiki-Köbesse draan dörrve',
'protectedpages-cascade' => 'Nur Sigge en ener Schotz-Kaskad',
+'protectedpages-noredirect' => 'Ömleidonge verschteische',
'protectedpagesempty' => 'Op di Aat sin jrad kein Sigge jeschötz.',
'protectedtitles' => 'Verbodde Titele för Sigge',
'protectedtitlesempty' => 'Op di Aat sin jrad kein Sigge jäje et neu Aanlääje jeschötz.',
'listusers' => 'De Metmaacherleß',
'listusers-editsonly' => 'Donn nor Metmaacher zeije, di och ens jät jeschrevve han.',
'listusers-creationsort' => 'Noh em Dattum vum Aanmellde zoteere',
+'listusers-desc' => 'Vun onge noch bove zoteere',
'usereditcount' => '{{PLURAL:$1|Ein Änderung|$1 Änderunge|Nix jedonn}}',
'usercreated' => '{{GENDER:$3|}}Aanjemelldt aam $1 öm $2 Uhr',
'newpages' => 'Neu Sigge',
'allpagesbadtitle' => 'Dä Siggename es nit ze jebruche. Dä hät e Köözel för en Sproch oder för ne Interwiki Link am Aanfang, oder et kütt e Zeiche dren för, wat en Siggename nit jeiht, villeich och mieh wie
eins vun all däm op eimol.',
'allpages-bad-ns' => "Dat Appachtemeng „$1“ ha'mer nit.",
-'allpages-hide-redirects' => 'Ömleidunge fott lohße',
+'allpages-hide-redirects' => 'Ömleidonge fott lohße',
# SpecialCachedPage
'cachedspecial-viewing-cached-ttl' => 'Dat heh küdd ussem Zewescheschpeischer un kann bes op $1 alt sin.',
'watchmethod-list' => 'Ben de Oppassliss am pröfe, noh de letzte Änderung',
'watchlistcontains' => 'En dä Oppassliss {{PLURAL:$1|es ein Sigg|sinner <strong>$1</strong> Sigge|sinner <strong>kein</strong> Sigge}}.',
'iteminvalidname' => 'Dä Endrach „$1“ hät ene kapodde Name.',
-'wlnote' => '{{PLURAL:$1|Hee es de letzte Änderung us|Hee sin de letzte <strong>$1</strong> Änderunge us|Mer han kein Äbderunge en}} de letzte {{PLURAL:$2|Stund|<strong>$2</strong> Stunde|<strong>noll</strong> Stunde}} zigg em $3 öm $4 Uhr.',
'wlshowlast' => 'Zeich de letzte | $1 | Stunde | $2 | Dage | $3 | aan, dun',
'watchlist-options' => 'Eijeschaffte fun de Oppassless',
'linkshere' => 'Dat sin de Sigge, die op <strong>„[[:$1]]“</strong> linke dun:',
'nolinkshere' => 'Kein Sigg link noh <strong>„[[:$1]]“</strong>.',
'nolinkshere-ns' => 'Nix link op <strong>„[[:$1]]“</strong> en dämm Appachtemang.',
-'isredirect' => 'Ömleidungssigg',
+'isredirect' => 'Ömleidongssigg',
'istemplate' => 'weed enjeföch',
'isimage' => 'weed aanjezeisch',
'whatlinkshere-prev' => 'de vörijje {{PLURAL:$1||$1|noll}} zeije',
'whatlinkshere-next' => 'de nächste {{PLURAL:$1||$1|noll}} zeije',
'whatlinkshere-links' => '← Links',
-'whatlinkshere-hideredirs' => '$1 de Ömleidunge',
+'whatlinkshere-hideredirs' => '$1 de Ömleidonge',
'whatlinkshere-hidetrans' => '$1 de Oproofe',
'whatlinkshere-hidelinks' => '$1 de nommale Links',
'whatlinkshere-hideimages' => '$1 de Links op Dateie',
Alsu bes secher, dat De verschteihs, wat De heh am maache bes, ih dat De et mähs!",
'movepagetext-noredirectfixer' => "Heh kanns De en Sigg ömnenne.
Domet kritt die Sigg ene neue Name, un all vörherije Versione vun dä Sigg och.
-Unger däm ahle Tittel weed automatisch en Ömleitung op dä neue Tittel enjedrage.
+Onger däm ahle Tittel weed automatisch en Ömleidong op dä neue Tittel enjedrare.
-Links op dä ahle Tittel blieve ävver, wie se wore.
-Dat heiß, Do muss selver nohluure, ov do jetz [[Special:DoubleRedirects|dubbelde]] oder [[Special:BrokenRedirects|kapodde Ömleidunge]] bei eruskumme.
-Wann De en Sigg ömnenne deis, häs Do och doför ze sorje, dat de betroffe Links do henjonn, wo se hen jonn solle.
-Alsu holl Der de Liss „Wat noh heh link“ fun dä Sigg heh un jangk se durch!
+Lenks op dä ahle Tittel bliive ävver, wie se wohre.
+Dat heiß, Do moß selver nohloore, ov doh jetz [[Special:DoubleRedirects|dubbelde]] oder [[Special:BrokenRedirects|kapodde Ömleidonge]] bei eruskumme.
+Wann De en Sigg ömnenne deiß, häs Do och doför ze sorje, dat de betroffe Links doh henjonn, wo se hen jonn solle.
+Alsu holl Der di Liss „Wat noh heh link“ fun dä Sigg heh un jangk se dorsch!
-De Sigg weed '''nit''' ömjenannt, wann et met däm neue Tittel ald en Sigg jitt, '''ußer''' do es nix drop, oder et es en Ömleitung un se es noch nie jeändert woode.
-Esu kam_mer en Sigg jlich widder retuur ömnenne, wam_mer sich mem Ömnenne verdonn hät, un mer kann och kein Sigge kapottmaache, wo ald jet drop steiht.
+Di Sigg weed '''nit''' ömjenannt, wann et met däm neue Tittel ald en Sigg jitt, '''ußer''' doh es nix drop, oder et es en Ömleidong un se es noch nie jeändert woode.
+Esu kam_mer en Sigg jlich widder retuur ömnänne, wam_mer sich mem Ömnänne verdonn hät, un mer kann och kein Sigge kapottmaache, wo ald jet drop schteiht.
-'''Oppjepass!'''
-Wat beim Ömnenne erus kütt, künnt en opfällije un villeich stürende Änderung aam Wiki sin, besönders bei öff jebruchte Sigge.
-Alsu bes secher, dat De versteihs, wat De heh am maache bes, ih dat De et mähs!",
+'''Oppjepaß!'''
+Wat beim Ömnänne erus kütt, künnt en opfällije un villeich stührende Änderung aam Wikki sin, besönders bei öff jebruchte Sigge.
+Alsu bes secher, dat De verschteihs, wat De heh am maache bes, ih dat De et mähs!",
'movepagetalktext' => "Dä Sigg ehr Klaafsigg, wann se ein hät, weed automatisch met ömjenannt, '''usser''' wann:
* de Sigg en en ander Appachtemeng kütt,
* en Klaafsigg met däm neue Name ald do es, un et steiht och jet drop,
'movepagebtn' => 'Ömnenne',
'pagemovedsub' => 'Dat Ömnenne hät jeflupp',
'movepage-moved' => "'''De Sigg „$1“ es jez en „$2“ ömjenannt.'''",
-'movepage-moved-redirect' => 'En Ömleidung es aanjelaat woode.',
-'movepage-moved-noredirect' => 'Kein Ömleidung woodt aanjelaat.',
+'movepage-moved-redirect' => 'En Ömleidong es aanjelaat woode.',
+'movepage-moved-noredirect' => 'Kein Ömleidong woodt aanjelaat.',
'articleexists' => "De Sigg met däm Name jitt et ald, oder dä Name ka'mer oder darf mer nit bruche.<br />Do muss Der ene andere Name ussöke.",
'cantmove-titleprotected' => 'Die Sigg ömzenänne es esu nit möjjelesch, dänn dä neu Name vun dä Sigg es jäje et Neu-Aanlääje jeschötz.',
'movetalk' => 'dä ehr Klaafsigg met ömnenne, wat et jeiht',
'nonfile-cannot-move-to-file' => 'Mer kann nix uußer Datteije esu ömnänne, dat et em Appachtemang „{{ns:file}}“ landt',
'imagetypemismatch' => 'De neu Datei-Endong moß met däm Datei-Tüp zesamme passe',
'imageinvalidfilename' => 'Dä Ziel-Name för de Datei es verkeht',
-'fix-double-redirects' => 'Don noh em Ömnenne de Ömleidunge automattesch ändere, di noch op dä ahle Tittel zeije, also de neu entshtande dubbelte Ömleidunge oplöse.',
-'move-leave-redirect' => 'Donn en Ömleidung doför ennreschte',
+'fix-double-redirects' => 'Don noh em Ömnenne de Ömleidonge automattesch ändere, di noch op dä ahle Tittel zeije, also de neu entshtande dubbelte Ömleidonge oplöse.',
+'move-leave-redirect' => 'Donn en Ömleidong doför ennreschte',
'protectedpagemovewarning' => "'''Opjepaß:''' Heh di Sigg es jespert su dat blooß de Wiki-Kööbeße se ömnänne künne.
Heh kütt der neuste Enndrach em Logbooch doh drövver:",
'semiprotectedpagemovewarning' => "'''Opjepaß:''' Heh di Sigg es jespert su dat blooß aanjemeldte Metmaacher se ömnänne künne.
'tooltip-pt-watchlist' => 'De Liss met de Sigge en Dinge eije Oppassliss',
'tooltip-pt-mycontris' => 'en Liss met Dinge eije Beidräch',
'tooltip-pt-login' => 'Do moß Desch nit Enlogge, kannz_E ävver jähn maache!',
-'tooltip-pt-anonlogin' => 'Wöhr nett wann De enlogge dääts, moß ävver nit.',
'tooltip-pt-logout' => 'Ußlogge',
'tooltip-ca-talk' => 'Dun die Sigg met däm Klaaf övver heh de Sigg aanzeije',
'tooltip-ca-edit' => 'De kanns die Sigg heh ändere — für em Avspeichere, donn eetß ens enen Bleck op de Vör-Aansich',
'spam_reverting' => 'De letzte Version ohne de Links op „$1“ widder zerröckjehollt.',
'spam_blanking' => 'All die Versione hatte Links op „$1“, die sin jetz erus jemaht.',
'spam_deleting' => 'All di Versione met Lenks op „$1“ wääde fott jeschmeße',
-'simpleantispam-label' => 'SPAMschotz — donn hee nix endraare!',
+'simpleantispam-label' => 'Donn heh nix endraare!',
# Info page
'pageinfo-title' => 'Övver di Sigg: „$1“',
'imgmultigoto' => 'Jang noh de Sigg „$1“',
# Language selector for translatable SVGs
+'img-lang-default' => '(Schtandatt_Schprohch)',
+'img-lang-info' => 'Zeisch heh dat Beld aan en $1. $2',
'img-lang-go' => 'Lohß Jonn!',
# Table pager
'version-hook-name' => 'De Schnettstelle ier Name',
'version-hook-subscribedby' => 'Opjeroofe vun',
'version-version' => '(Väsjohn $1)',
-'version-license' => 'Lėzänz',
+'version-license' => 'MediaWiki sing Lėzänz',
+'version-ext-license' => 'Lėzänz',
+'version-ext-colheader-name' => 'Zohsazprojramm',
+'version-ext-colheader-version' => 'Väsjohn',
+'version-ext-colheader-license' => 'Lėzänz',
+'version-ext-colheader-description' => 'Beschrevve',
+'version-ext-colheader-credits' => 'Schriiver',
+'version-license-title' => 'Lėzänz för $1',
'version-poweredby-credits' => "Dat Wiki heh löp met '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001–$1 $2.",
'version-poweredby-others' => 'sönß wää',
'version-poweredby-translators' => 'de Övversäzer em translatewiki.net',
'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath Der Pad noh de Skrepte]',
# Special:Redirect
-'redirect' => 'Ömleite op en Dattei, ene Metmaacher udder de Väsjohn vun ener Sigg',
+'redirect' => 'Ömleide op en Dattei, ene Metmaacher udder de Väsjohn vun ener Sigg',
'redirect-legend' => 'Ömleide ob_en Dattei udder Sigg',
'redirect-summary' => 'Heh di {{int:specialpage}} leidt öm ob_en Dattei — doh mößd_Er ene Nahme aanjävve — udder en Sigg — doh mößd_Er en Kännong för en Väsjoh aanjävve — udder en Metmaachersigg — doh mößd_Er enem Metmaacher sing Kännong aanjävve.',
'redirect-submit' => 'Lohß Jonn!',
# Special:SpecialPages
'specialpages' => '{{int:nstab-special}}e',
+'specialpages-note-top' => 'Lejänd',
'specialpages-note' => '* {{int:nstab-special}}e för jede Metmaacher.
* <span class="mw-specialpagerestricted">{{int:nstab-special}}e för Metmaacher met besönder Räächde.</span>
* <span class="mw-specialpagecached">Em Zwescheshpeisher jehallde {{int:nstab-special}}e. Di künnte ovverhollt sind.</span>',
'tags-tag' => 'Dä Makeerung iere Name',
'tags-display-header' => 'Kennzeiche en de Leßte met Änderunge',
'tags-description-header' => 'Bedüggtening',
+'tags-active-header' => 'Aktiiv?',
'tags-hitcount-header' => 'Makeete Änderunge',
'tags-active-yes' => 'Joh',
'tags-active-no' => 'Näh',
'dberr-problems' => 'Deit uns leid, die Sigg heh häd för der Momang e teschnisch Problem.',
'dberr-again' => 'Versök eijfach en e paa Menutte, norr_ens die Sigg afzeroofe.',
'dberr-info' => '(Mer han kei Verbindung noh_m Datebank-ẞööver krijje künne: $1)',
+'dberr-info-hidden' => '(Mer han kei Verbindung noh_m Datebank-ẞööver krijje künne)',
'dberr-usegoogle' => 'De künnß zweschedorsch ad met <i lang="en">Google</i> söke.',
'dberr-outofdate' => 'Müjjelesch, dat dat Verzeichnes vun uns Sigge do nit janß om neuste Shtannd es.',
'dberr-cachederror' => 'Wat heh noh kütt es en Kopi vum Zwescheshpeisher vun dä Sigg,
'duration-minutes' => '{{PLURAL:$1|ein Menot|$1 Menotte|kein Menot}}',
'duration-hours' => '{{PLURAL:$1|en Schtond|$1 Schtonde|kein Schtond}}',
'duration-days' => '{{PLURAL:$1|ene Daach|$1 Dääsch|keine Daach}}',
-'duration-weeks' => '{{PLURAL: $1|en Woch|$1 Woche|kein Woch}}',
+'duration-weeks' => '{{PLURAL:$1|en Woch|$1 Woche|kein Woch}}',
'duration-years' => '{{PLURAL:$1|e Johr|$1 Johre|kei Johr}}',
'duration-decades' => '{{PLURAL:$1|zehn Johre|$1 Johzehnte|kei Johzehnt}}',
'duration-centuries' => '{{PLURAL:$1|e Johhondert|$1 Johhonderte|kei Johhondert}}',
'expand_templates_input' => 'Wat De üvverpröfe wells:',
'expand_templates_output' => 'Wat erus kütt es',
'expand_templates_xml_output' => 'XML ußjevve',
+'expand_templates_html_output' => 'Röh HTML Ußjaav',
'expand_templates_ok' => 'Lohß Jonn!',
'expand_templates_remove_comments' => 'De ėnner Kommentare fottloohße',
'expand_templates_remove_nowiki' => 'Donn de <nowiki>-Befähle ongerdröcke en dämm, wadd_eruß kütt',
'expand_templates_generate_xml' => 'Och dä XML-Parser-Boum zeije',
+'expand_templates_generate_rawhtml' => 'Donn de Röh HTML Ußjaav aanzeije',
'expand_templates_preview' => 'Vör-Aansich',
);
$messages = array(
# User preference toggles
'tog-underline' => 'Xetekê di bin girêdanê de çêke:',
-'tog-justify' => 'Gotar bi forma "block"',
'tog-hideminor' => 'Guherandinên biçûk ji listêya guherandinên dawî veşêre',
'tog-hidepatrolled' => 'Guherandinên hatine kontrolkirin ji nav guherandinên dawî veşêre',
'tog-newpageshidepatrolled' => 'Rûpelên hatine kontrolkirin ji lîsteya rûpelên nû veşêre',
'tog-numberheadings' => 'Sernavan otomatîk bihejmêre',
'tog-showtoolbar' => 'Tiştên guherandinê bibîne (JavaScript bibîne)',
'tog-editondblclick' => 'Rûpelan bi du klîkan biguherîne (Java Script gireke)',
-'tog-editsection' => 'Girêdanan ji bo guherandina beşan biweşîne',
'tog-editsectiononrightclick' => 'Beşekê bi rast-klîkekê biguherîne (JavaScript gireke)',
-'tog-showtoc' => 'Tabloya naverokê nîşan bide (ji bo rûpelan zêdetirî sê sernavan)',
'tog-rememberpassword' => 'Qeyda min di vê komputerê de biparêze (herî zêde ji bo $1 {{PLURAL:$1|rojekê|rojan}})',
'tog-watchcreations' => 'Rûpelên min çêkirin, têxe nav lîsteya min a şopandinê',
'tog-watchdefault' => 'Rûpelên min guhertin, têxe nav lîsteya min a şopandinê',
'compareselectedversions' => 'Guhertoyan bide ber hev',
'showhideselectedversions' => 'Revîzyonên bijartî nîşan bide/veşêre',
'editundo' => 'betal bike',
-'diff-multi' => '({{PLURAL:$1|Guhertoyeke|Guhertoyên {{PLURAL:$2|bikarhêner|bikarhêneran}} di navbera herduyan de}} {{PLURAL:$1|nayê|nayên}} dîtin.)',
# Search results
'searchresults' => 'Encamên lêgerînê',
'wlheader-enotif' => 'Agahdariya E-nameyê pêk tê.',
'wlheader-showupdated' => "Ev rûpela hatî guhertin dema te lê meyzand bi '''nivîsa stûr''' tê xuyakirin.",
'watchlistcontains' => 'Di lîsteya şopandina te de {{PLURAL:$1|rûpelek heye|$1 rûpel hene}}.',
-'wlnote' => "Niha {{PLURAL:$1|xeyrandinê|'''$1''' xeyrandinên}} dawî yê {{PLURAL:$2|seetê|'''$2''' seetên}} dawî {{PLURAL:$1|tê|tên}} dîtin.",
'wlshowlast' => 'Guhertinên berî $1 saetan, $2 rojan, ya $3 nîşan bide',
'watchlist-options' => 'Vebijarkên lîsteya şopandinê',
'tog-numberheadings' => 'Awto-nivera pennlinennow',
'tog-showtoolbar' => 'Diskwedhes an toulvar chanjya (res yw JavaScript)',
'tog-editondblclick' => 'Chanjya folennow ow tobyl-glyckya (res yw JavaScript)',
-'tog-editsection' => 'Galosegi chanjya trehow der an kevrennow [chanjya]',
'tog-editsectiononrightclick' => 'Galosegi chanjya trehow dre dhyhow-glyckya war ditlys an trehow (res yw JavaScript)',
'tog-rememberpassword' => "Perthi kov a'm omgelmi war an beurel-ma (rag $1 {{PLURAL:$1|dydh}} dhe'n moyha)",
'tog-watchcreations' => "Keworra folennow gwruthys genev ha restrennow ughkergys genev dhe'm rol golyas",
'unwatch' => 'Diswolya',
'watchlist-details' => 'Yma {{PLURAL:$1|$1 folen}} war agas rol wolya, marnas folennow keskows.',
'wlheader-showupdated' => "Yn '''tew''' y tiskwedhir folennow re beu chanjyes a-dhia agas vysytyans diwettha.",
-'wlnote' => "A-woles yma an {{PLURAL:$1|chanj diwettha|'''$1''' chanj diwettha}} y'n {{PLURAL:$2|our|'''$2''' our}} diwettha, a-dhia $3, $4.",
'wlshowlast' => 'Diskwedhes an $1 our diwettha, an $2 dydh diwettha, po $3',
'watchlist-options' => 'Etholyow an rol wolya',
$messages = array(
# User preference toggles
'tog-underline' => 'Шилтемелердин алдын сызуу:',
-'tog-justify' => 'Текстти барактын эни боюнча түздөө',
'tog-hideminor' => 'Соңку өзгөрүүлөрдүн тизмесинен майда өзгөрүүлөрдү жашыруу',
'tog-hidepatrolled' => 'Соңку өзгөрүүлөрдүн тизмесинен күзөттөлгөн оңдоолорду жашыруу',
'tog-newpageshidepatrolled' => 'Жаңы барактар тизмесинен күзөттөлгөн барактарды жашыруу',
'tog-numberheadings' => 'Башжазууларды автоматтык түрдө номердөө',
'tog-showtoolbar' => 'Оңдоо учурунда аспаптар тактасын көрсөтүү (JavaScript талап кылынат)',
'tog-editondblclick' => 'Эки басып баракты оңдоо (JavaScript талап кылынат)',
-'tog-editsection' => 'Ар бир бөлүм үчүн «оңдоо» шилтемесин көрсөтүү',
'tog-editsectiononrightclick' => 'Бөлүмдүн башжазуусун чычкандын оң баскычы менен басканда оңдоп-түзөө бөлүгүн ачуу (JavaScript талап кылынат)',
-'tog-showtoc' => 'Мазмунду көрсөтүү (3 мазмундан артык барактар үчүн)',
'tog-rememberpassword' => 'Бул браузердин эсинде эсеп жазуумду ($1 {{PLURAL:$1|күн}}) сактоо',
'tog-watchcreations' => 'Көзөмөл тизмеме мен жараткан барактарды жана мен жүктөгөн файлдарды кошуу',
'tog-watchdefault' => 'Мен өзгөрткөн барактарды жана файлдарды көзөмөл тизмеме кошуу',
'compareselectedversions' => 'Тандалган версияларды салыштыруу',
'showhideselectedversions' => 'Тандалган версияларды көрсөтүү/жашыруу',
'editundo' => 'жокко чыгаруу',
-'diff-multi' => '({{PLURAL:$2|колдонуучу}} тарабынан жасалган {{PLURAL:$1|аралык версия}} көрсөтүлгөн жок)',
# Search results
'searchresults' => 'Издөө жыйынтыктары',
$messages = array(
# User preference toggles
'tog-underline' => 'Versores linea denotandi:',
-'tog-justify' => 'Iustificare paragrapha',
'tog-hideminor' => 'Celare recensiones minores in indice nuper mutatorum',
'tog-hidepatrolled' => 'Redactiones censae inter nuper mutatas celandae',
'tog-newpageshidepatrolled' => 'Paginae censae inter nouissime creatas celandae',
'tog-numberheadings' => 'Subtituli numeris adornandi',
'tog-showtoolbar' => 'Affigere trabem redigentem',
'tog-editondblclick' => 'Percussus duplex redactionem hortetur',
-'tog-editsection' => 'Paginarum segmenta [redigere] hortari',
'tog-editsectiononrightclick' => 'Paginarum segmenta dextero percussu in titulis redigenda',
-'tog-showtoc' => 'Indicem plurium quam III segmentorum paginis praebere',
'tog-rememberpassword' => 'Memorare tesserae meae hoc in navigatro inter conventa ({{PLURAL:$1|die|diebus}} $1 tenus)',
'tog-watchcreations' => 'Paginas quas creo et fasciculos quos impono in paginarum custoditarum indicem addere',
'tog-watchdefault' => 'Paginas et fasciculos quos recenseo in paginarum custoditarum indicem addere',
Haec pagina deleta esse videtur.',
'edit-conflict' => 'Contentio recensionis.',
'edit-no-change' => 'Recensio tua non servata est, quia contenta paginae non mutavisti.',
+'postedit-confirmation' => 'Recensio tua servata est.',
'edit-already-exists' => 'Non potui paginam novam creare
quia haec pagina iam est.',
'showhideselectedversions' => 'Monstrare/celare emendationes selectas',
'editundo' => 'abrogare',
'diff-empty' => '(Nulla dissimilitudo)',
-'diff-multi' => '(Inter has {{PLURAL:$1|una emendatio|$1 emendationes}} ab {{PLURAL:$2|uno usore|$2 usoribus}} {{PLURAL:$1|facta|factae}} non {{PLURAL:$1|videtur|videntur}})',
# Search results
'searchresults' => 'Eventum investigationis',
'rows' => 'Lineae:',
'columns' => 'Columnae:',
'searchresultshead' => 'Figuratio eventorum investigationis',
-'resultsperpage' => 'Eventus per paginam:',
'recentchangesdays' => 'Quot dies in nuper mutatis monstrandi:',
'recentchangescount' => 'Quantum rerum in nuper mutatis, historiis et actis:',
'savedprefs' => 'Praeferentiae tuae servatae sunt.',
'watchmethod-list' => 'paginas custoditas quaerens pro recensitis recentibus',
'watchlistcontains' => 'Index paginarum custoditarum tuus $1 {{PLURAL:$1|paginam|paginas}} habet.',
'iteminvalidname' => "Aerumna cum pagina '$1', nomen non est rectum...",
-'wlnote' => "Subter {{PLURAL:$1|est mutatio proxima|sunt '''$1''' mutationes proximae}} in {{PLURAL:$2|proxima hora|proximis '''$2''' horis}} ex $4, $3.",
'wlshowlast' => 'Monstrare proximas $1 horas $2 dies $3',
'watchlist-options' => 'Indicis paginarum custoditarum praeferentiae',
'tooltip-pt-watchlist' => 'Paginae quae custodis ut eorum mutationes facilius vides',
'tooltip-pt-mycontris' => 'Index conlationum tuarum',
'tooltip-pt-login' => 'Te conventum aperire hortamur, non autem requisitum',
-'tooltip-pt-anonlogin' => 'Te conventum aperire hortamur, non autem requisitum',
'tooltip-pt-logout' => 'Conventum concludere',
'tooltip-ca-talk' => 'Disputatio de hac pagina',
'tooltip-ca-edit' => 'Hanc paginam recensere potes. Quaesumus praevisum inspice antequam servas.',
'version-parser-function-hooks' => 'Extensiones functionum programmatis analysis lexicalis',
'version-hook-name' => 'Nomen extensionis',
'version-hook-subscribedby' => 'Subscriptum ab',
-'version-version' => '(Versio $1)',
+'version-version' => '($1)',
'version-license' => 'Permissio',
'version-software-product' => 'Productum',
'version-software-version' => 'Versio',
* @author ILVI
* @author Jewbask
* @author Maor X
+ * @author Menachem.Moreira
* @author Remember the dot
* @author Runningfridgesrule
* @author Taichi
$messages = array(
# User preference toggles
'tog-underline' => 'Suliñar los atamientos:',
-'tog-justify' => 'Arrimar los paraggrafos de dos vandas',
-'tog-hideminor' => 'Esconder los trocamientos chiquiticos en la hoja de los "trocamientos freskos"',
+'tog-hideminor' => 'Esconder los trocamientos chikos en la hoja de los "trocamientos freskos"',
'tog-hidepatrolled' => 'Esconder los trocamientos surveyados en la hoja de los "trocamientos freskos"',
'tog-newpageshidepatrolled' => 'Esconder las hojas surveyadas de la lista de las hojas muevas',
'tog-extendwatchlist' => 'Anchar mi lista de akavidamiento afín de àmostrar todos los trocamientos, no sólo los muevos',
-'tog-usenewrc' => 'Usar el modo adelantado (JavaScript es menester)',
-'tog-numberheadings' => 'Numerotar otomatika mente los títůlos de los kapítůlos',
-'tog-showtoolbar' => 'Àmostrar el chibuk de aparatos (JavaScript es menester)',
-'tog-editondblclick' => 'Trocar las hojas con doble klik (JavaScript es menester)',
-'tog-editsection' => 'Ofrir la possibilidad de trocar los kapítůlos con el atamiento [trocar]',
-'tog-editsectiononrightclick' => 'Pueder trocar los kapítůlos, en pizando el botón derecho del ratón encima el títůlo (JavaScript es menester)',
-'tog-showtoc' => 'Àmostrar el cuadro de contènidos (para las hojas que tienen más de 3 títůlos de capítůlo)',
+'tog-usenewrc' => 'Agrupar kambios por pajinas en kambios resiente y lista',
+'tog-numberheadings' => 'Numerotar otomatika mente los títolos de los kapítolos',
+'tog-showtoolbar' => 'Amostrar el chibuk de aparatos',
+'tog-editondblclick' => 'Trocar las hojas con doble klik',
+'tog-editsectiononrightclick' => 'Pueder trocar los kapítůlos, en pizando el botón derecho del ratón encima el títůlo',
'tog-rememberpassword' => 'Acordarse de mi entrada en este navigador (a lo más muńcho $1 {{PLURAL:$1|día|días}})',
-'tog-watchcreations' => 'Akavidar las hojas que crîo',
-'tog-watchdefault' => 'Akavidar las hojas que troco',
-'tog-watchmoves' => 'Akavidar las hojas que taxireo',
-'tog-watchdeletion' => 'Akavidar las hojas que efasso',
+'tog-watchcreations' => 'Anyadir lad pajinas ke kree i archivos ke karge a mi lista',
+'tog-watchdefault' => 'Anyadir pajinas i archivos ke edite a mi lista',
+'tog-watchmoves' => 'Anyadir pajinas i archivo ke move a mi lista',
+'tog-watchdeletion' => 'Anyadir pajinas i archivos que efasso a mi lista',
'tog-minordefault' => 'Yir marcando todos los trocamientos como chiquiticos',
'tog-previewontop' => 'Àmostar el previsteo enriva del cuadro de trocamiento',
'tog-previewonfirst' => 'Àmostar el previsteo al primer trocamiento',
-'tog-enotifwatchlistpages' => 'Cada vez que y ay un trocamiento en una hoja que está en mi lista de akavidamiento, mándame una letral (e-mail)',
+'tog-enotifwatchlistpages' => 'Embiame un korreo elektroniko kuando una pajina o archivo kambia en mi lista',
'tog-enotifusertalkpages' => 'Cuando y ay un trocamineto en mi hoja de diskusyón, mándame una letral (e-mail)',
-'tog-enotifminoredits' => 'I para los trocamientos chiquiticos de las hojas, mándame una letral (e-mail)',
+'tog-enotifminoredits' => 'Tambien embiame un korreo elektroniko para los trocamientos chiquiticos de pajnas i archivos',
'tog-enotifrevealaddr' => 'En las letrales de avizo, amóstrame á mi el adresso de letral mío',
'tog-shownumberswatching' => 'Àmostrar el kadhar de usadores que están akavidando las hojas',
'tog-oldsig' => 'La firma presente',
'tog-fancysig' => 'Tratar la firma como un vikiteksto (sin un atamiento otomatiko)',
-'tog-uselivepreview' => 'Usar el "previsteo bivo" (JavaScript es menester) (eksperimental)',
+'tog-uselivepreview' => 'Usar el "previsteo bivo" (eksperimental)',
'tog-forceeditsummary' => 'Avizarme cuando dexo el somaryo vazío',
'tog-watchlisthideown' => 'Esconder mis trocamientos en mi lista de akavidamiento',
'tog-watchlisthidebots' => 'Esconder trocamientos de bot en mi lista de akavidamiento',
'tog-diffonly' => 'No amostrar el contenido de la hoja debaxo las diffes (diferencias entre los trocamientos)',
'tog-showhiddencats' => 'Amostrar las katēggorías escondidas',
'tog-norollbackdiff' => 'No amostrar la diff doeśpués de aboltar',
+'tog-useeditwarning' => 'Avirteme kuando desho la pajina sin guardar los kambios',
+'tog-prefershttps' => 'Siempre uza un koneksyon segura kuando entra al sistema',
'underline-always' => 'Siempre',
'underline-never' => 'Nunca',
-'underline-default' => 'Que dessidde el navigador',
+'underline-default' => 'Aspekto o opsyon prederminada del navegador',
# Font style option in Special:Preferences
'editfont-style' => 'Modo de tipografía de la rējión de trocamiento',
'editfont-serif' => 'Tipografía serif',
# Dates
-'sunday' => 'Aljhad',
+'sunday' => 'Alkhad',
'monday' => 'Lunes',
'tuesday' => 'Martes',
'wednesday' => 'Miércoles',
'thursday' => 'Juğeves',
'friday' => 'Viernes',
'saturday' => 'Shabbath',
-'sun' => 'Aljh',
+'sun' => 'Alḥ',
'mon' => 'Lun',
'tue' => 'Mar',
'wed' => 'Mie',
'thu' => 'Juğ',
'fri' => 'Vie',
'sat' => 'Shab',
-'january' => 'Enero',
-'february' => 'Hevrero',
+'january' => 'Jenero',
+'february' => 'Febrero',
'march' => 'Março',
'april' => 'Abril',
'may_long' => 'Mayo',
'june' => 'Juño',
-'july' => 'Jullo',
+'july' => 'Julio',
'august' => 'Agosto',
'september' => 'Setiembre',
-'october' => 'Ochòvre',
+'october' => 'Ochobre',
'november' => 'Noviembre',
-'december' => 'Deziembre',
-'january-gen' => 'Enero',
-'february-gen' => 'Hevrero',
+'december' => 'Diziembre',
+'january-gen' => 'Jenero',
+'february-gen' => 'Febrero',
'march-gen' => 'Março',
'april-gen' => 'Abril',
'may-gen' => 'Mayo',
'june-gen' => 'Juño',
-'july-gen' => 'Jullo',
+'july-gen' => 'Julio',
'august-gen' => 'Agosto',
'september-gen' => 'Setiembre',
-'october-gen' => 'Ochòvre',
+'october-gen' => 'Ochobre',
'november-gen' => 'Noviembre',
-'december-gen' => 'Deziembre',
-'jan' => 'Ene',
-'feb' => 'Hev',
+'december-gen' => 'Diziembre',
+'jan' => 'Jen',
+'feb' => 'Feb',
'mar' => 'Mar',
'apr' => 'Abr',
'may' => 'May',
'jun' => 'Juñ',
-'jul' => 'Jull',
+'jul' => 'Jul',
'aug' => 'Ago',
'sep' => 'Set',
-'oct' => 'Och',
+'oct' => 'Ocho',
'nov' => 'Nov',
-'dec' => 'Dez',
+'dec' => 'Diz',
+'january-date' => 'Jenero $1',
+'february-date' => 'Fevrero $1',
+'march-date' => 'Marso $1',
+'april-date' => 'Avril $1',
+'may-date' => 'Mayo $1',
+'june-date' => 'Junio $1',
+'july-date' => 'Djulio $1',
+'august-date' => 'Agosto $1',
+'september-date' => 'Sietembre $1',
+'october-date' => 'Oktubre $1',
+'november-date' => 'Noviembre $1',
+'december-date' => 'Disiembre $1',
# Categories related messages
-'pagecategories' => '{{PLURAL:$1|Kateggoría|Kateggorías}}',
-'category_header' => 'Artíkolos en la kateggoría "$1"',
-'subcategories' => 'Sòkateggorías',
-'category-media-header' => 'Arxivos de multimedya en la kateggoría "$1"',
-'category-empty' => "''Esta katēggoría oy día, no contiene ni artícůlos ni arxivos de multimedya''",
-'hidden-categories' => '{{PLURAL:$1|Kateggoría escondida|Kateggorías escondidas}}',
+'pagecategories' => '{{PLURAL:$1|Kategoría|Kategorías}}',
+'category_header' => 'Artíkolos en la kategoría "$1"',
+'subcategories' => 'Sòkategorías',
+'category-media-header' => 'Dosyas de multimedya en la kategoría "$1"',
+'category-empty' => "''Esta kategoría oy día, no contiene ni hojas ni dosyas de multimedya''",
+'hidden-categories' => '{{PLURAL:$1|Kategoría escondida|Kategorías escondidas}}',
'hidden-category-category' => 'Katēggorías escondidas',
'category-subcat-count' => '{{PLURAL:$2|Esta katēggoría contiene sólo una baxo-katēggoría:|Esta katēggoría contiene {{PLURAL:$1|esta baxo-katēggoría aquí abaxo|$1 baxo-katēggorías aquí abaxo}}, de un total de $2 baxo-katēggorías:}}',
'category-subcat-count-limited' => 'Esta katēggoría contiene {{PLURAL:$1|la baxo-katēggoría venidera|$1 baxo-katēggorías venideras}}.',
'article' => 'Artícůlo de contenido',
'newwindow' => '(Se avre en una mueva ventana)',
'cancel' => 'Anular',
-'moredotdotdot' => 'Más...',
-'mypage' => 'Mi hoja',
+'moredotdotdot' => 'Mas...',
+'morenotlisted' => 'Esta lista no esta kompleta',
+'mypage' => 'Hoja',
'mytalk' => 'Mi diskusyon',
'anontalk' => 'Diskusyón para este adresso de IP',
'navigation' => 'Navigación',
-'and' => ' y',
+'and' => ' i',
# Cologne Blue skin
'qbfind' => 'Topar',
'faqpage' => 'Project:DDS',
# Vector skin
-'vector-action-addsection' => 'Àjustar sujeto',
+'vector-action-addsection' => 'Ajustar sujeto',
'vector-action-delete' => 'Efassar',
-'vector-action-move' => 'Taxirear',
-'vector-action-protect' => 'Guardar',
+'vector-action-move' => 'Taşirear',
+'vector-action-protect' => 'Guadrar',
'vector-action-undelete' => 'Traer atrás',
-'vector-action-unprotect' => 'No guardar',
-'vector-simplesearch-preference' => 'Aktivar consejos de búsqueda adelantada (sólo pelejo Vector)',
+'vector-action-unprotect' => 'Trocar proteksyon',
+'vector-simplesearch-preference' => 'Aktivar barra de buskida simplifikada (solamente kon aspekto Vector)',
'vector-view-create' => 'Criar',
'vector-view-edit' => 'Trocar',
'vector-view-history' => 'Ver la istoria',
'namespaces' => 'Espacios de nombres',
'variants' => 'Formas diferentes',
+'navigation-heading' => 'Menu de navigasyon',
'errorpagetitle' => 'Yerro',
'returnto' => 'Tornar a $1.',
'tagline' => 'De {{SITENAME}}',
'help' => 'Ayudo',
-'search' => 'Busca',
-'searchbutton' => 'Busca',
-'go' => 'Vate',
-'searcharticle' => 'Vate',
-'history' => 'La îstoria de la hoja',
+'search' => 'Buxcar',
+'searchbutton' => 'Buxcar',
+'go' => 'Ir',
+'searcharticle' => 'Ir',
+'history' => 'La istoria de la hoja',
'history_short' => 'Istoria',
'updatedmarker' => 'trocado desde mi visita de alcavo',
-'printableversion' => 'Forma apropiada para imprimir',
+'printableversion' => 'La forma parâ imprimir',
'permalink' => 'Atamiento permanente',
'print' => 'Imprimir',
'view' => 'Ver',
'edit' => 'Trocar',
'create' => 'Criar',
'editthispage' => 'Trocar esta hoja',
-'create-this-page' => 'Crîar esta hoja',
+'create-this-page' => 'Criar esta hoja',
'delete' => 'Efaçar',
'deletethispage' => 'Efassar esta hoja',
+'undeletethispage' => 'Restorar esta pajina',
'undelete_short' => 'Traer atrás $1 {{PLURAL:$1|trocamientos|trocamientos}}',
'viewdeleted_short' => 'Ver {{PLURAL:$1|un trocamiento efassado|$1 trocamientos efassados}}',
-'protect' => 'Guardar',
-'protect_change' => 'troca el guardadijo',
+'protect' => 'Guadrar',
+'protect_change' => 'trocar el guardadijo',
'protectthispage' => 'Guardar esta hoja',
'unprotect' => 'Trocar guardadijo',
'unprotectthispage' => 'Trocar el guardadijo desta hoja',
'articlepage' => 'Ver el artícůlo de contenido',
'talk' => 'Diskusyón',
'views' => 'Vistas',
-'toolbox' => 'Cuadro de aparates',
+'toolbox' => 'Aparates',
'userpage' => 'Ver la hoja del usador',
'projectpage' => 'Ver la hoja del projeto',
'imagepage' => 'Ver la hoja de la dosya',
'otherlanguages' => 'En otras linguas',
'redirectedfrom' => '(Redirigido desde $1)',
'redirectpagesub' => 'Hoja redirigida',
-'lastmodifiedat' => 'Esta hoja fue trocada por la dal cavo vez el $1, a las $2.',
+'lastmodifiedat' => 'Esta hoja fue trocada por la vez dalcavo en el $1, a las $2.',
+'viewcount' => 'Este pajina fue vijitado {{PLURAL:$1|una vez|$1 vezes}}.',
'protectedpage' => 'Hoja guardada',
-'jumpto' => 'Salta a:',
+'jumpto' => 'Saltar a:',
'jumptonavigation' => 'navigación',
-'jumptosearch' => 'búsquida',
+'jumptosearch' => 'buxcar',
+'view-pool-error' => 'Diskulpe, los servidores estan sovrekargado en est momento.
+Ay demaziado usuarios estan aprovando a ver esta pajina.
+Aspera un momento antes de aprovar esta pajina de muevo.
+
+$1',
+'pool-timeout' => 'Tiempo de asperar esta asperando por el kandado',
+'pool-queuefull' => 'Kola de lavoro esta yeno',
+'pool-errorunknown' => 'Yerro deskonosido',
# 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).
-'aboutsite' => 'Encima de la {{SITENAME}}',
+'aboutsite' => 'Encima de {{SITENAME}}',
'aboutpage' => 'Project:Encima de',
-'copyright' => 'El contenido se puede topar debaxo de la <i>$1</i>',
+'copyright' => 'El kontenido se puede topar debasho de la $1 salvo ke indika al kontrario.',
'copyrightpage' => '{{ns:project}}:Derechos de autor',
'currentevents' => 'Novedades',
'currentevents-url' => 'Project:Novedades',
-'disclaimers' => 'Refuso de responsabilitá',
-'disclaimerpage' => 'Project:Refuso de responsabilitá jeneral',
+'disclaimers' => 'Refuzo de responsabilitá',
+'disclaimerpage' => 'Project:Refuzo de responsabilitá jeneral',
'edithelp' => '¿Cómo se la troca?',
'helppage' => 'Help:Contènidos',
'mainpage' => 'La Primera Hoja',
'policy-url' => 'Project:Politikas',
'portal' => 'Portal de la komunitá',
'portal-url' => 'Project:Portal de la komunitá',
-'privacy' => 'Principio de particòlaridad',
-'privacypage' => 'Project:Principio de particòlaridad',
+'privacy' => 'Prencipio de partikolaridad',
+'privacypage' => 'Project:Prencipio de partikolaridad',
'badaccess' => 'Yerro de permissión',
+'badaccess-group0' => 'No estas autorizado a egzekutir el aksyon que a demandado.',
+'badaccess-groups' => 'El aksyon ke a demandado esta limitado a los usuarios ke estan en {{PLURAL:$2|el grupo|uno de los grupos}}: $1',
+
+'versionrequired' => 'Se nesesite la versyon $1 de MediaWiki',
+'versionrequiredtext' => 'Se nesesita versyon $1 de MediaWiki para uzar este pajina. Ver [[Special:Version|La pajina de versyon]].',
'ok' => 'DE ACORDDO',
-'retrievedfrom' => 'Acòjido del adhresso "$1"',
-'youhavenewmessages' => 'Tienes $1 ($2).',
+'retrievedfrom' => 'Acojido del adresso "$1"',
+'youhavenewmessages' => '{{PLURAL:$3|Tienes}} $1 ($2).',
+'youhavenewmessagesfromusers' => '{{PLURAL:$4|Tiene}} $1 de {{PLURAL:$3|otro usuario|$3 usuarios}}($2).',
+'youhavenewmessagesmanyusers' => 'Tiene $1 de munchos usuarios ($2).',
+'newmessageslinkplural' => '{{PLURAL:$1|un muevo mesaje|999=mesajes muevos}}',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|ulitmo kambio|999=ultimos kambios}}',
'youhavenewmessagesmulti' => 'Tienes messajes nuevos en $1',
-'editsection' => 'troca',
-'editold' => 'troca',
+'editsection' => 'trocar',
+'editold' => 'trocar',
'viewsourceold' => 'Ver su manadero',
'editlink' => 'trocar',
'viewsourcelink' => 'ver su manadero',
'toc' => 'Contènidos',
'showtoc' => 'Amostrar',
'hidetoc' => 'esconder',
+'collapsible-collapse' => 'Eskonder',
+'collapsible-expand' => 'Revelar',
'thisisdeleted' => 'Ver o restorar $1?',
'viewdeleted' => 'Desea ver $1?',
+'restorelink' => '{{PLURAL:$1|un edisyon efasada|$1 edisyones efasadas}}',
+'feedlinks' => 'Kanal:',
+'feed-invalid' => 'Tipo de kanal de subskripsyon es invalido.',
+'feed-unavailable' => 'Kanales de subskripsyon no estan disponibles',
'site-rss-feed' => 'Fuente de RSS de $1',
-'site-atom-feed' => 'Alimentela de Atom de $1',
+'site-atom-feed' => 'Canal Atomo de $1',
'page-rss-feed' => '"$1" Fuente RSS',
'page-atom-feed' => '"$1" Subscripción Atom',
-'red-link-title' => '$1 (esta hoja no egziste)',
+'red-link-title' => '$1 (la hoja no egziste)',
+'sort-descending' => 'Atakanar en orden desendente',
+'sort-ascending' => 'Atakanar en orden asendente',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'Hoja',
-'nstab-user' => 'Hoja de empleador',
+'nstab-user' => 'Hoja de kullaneador',
'nstab-media' => 'Hoja de Meddia',
'nstab-special' => 'Hoja especial',
'nstab-project' => 'Hoja del proyecto',
'nstab-image' => 'Dosya',
'nstab-mediawiki' => 'Messaj',
-'nstab-template' => 'Xablón',
+'nstab-template' => 'Şablón',
'nstab-help' => 'Ayudo',
-'nstab-category' => 'Kateggoría',
+'nstab-category' => 'Kategoría',
# Main script and global functions
+'nosuchaction' => 'No egziste esa aksyon',
+'nosuchactiontext' => 'La aksyon espesefikada por el URL es invalido.
+Es posivle ke el URL fue eskrito mal, o ke segite un enlase inkorrecto.
+Tambiem puede indikar un yerro en la programa uzado por {{SITENAME}}.',
'nosuchspecialpage' => 'No ay tala hoja especial',
+'nospecialpagetext' => '<strong>Demandaste una pajina espesial invalida.</strong>
+
+Puede topar una lista de pajinas espesiales validas en[[Special:SpecialPages|{{int:specialpages}}]].',
# General errors
'error' => 'Yerro',
'databaseerror' => 'Yerro de la Databasa',
-'missing-article' => 'La basa de dados no topó el teksto de la hoja llamada "$1" $2.
-
-En lo mas muncho, esto se cavsa de un "dif" anakróniko ou de un atamiento a la istoria de una hoja que se efaçó.
-
-Si esto no es el cavso, puede ser que topates una chincha en el lojikal.
-Si puede ser mete un [[Special:ListUsers/sysop|administrador]] en corriente y también anota la URL.',
+'databaseerror-text' => 'Afito un yerro en la demanda del base de data.
+Esto puede indikar un yerro en la programa.',
+'databaseerror-textcl' => 'Afito un yerro en la demanda del base de data.',
+'databaseerror-query' => 'Demanda: $1',
+'databaseerror-function' => 'Fonksyon: $1',
+'databaseerror-error' => 'Yerro: $1',
+'laggedslavemode' => "'''Aviso:''' Puede ke la pajina no kontiene las aktualizasyones mas resientes.",
+'readonly' => 'Base de datos blokeada',
+'enterlockreason' => 'Eskrive un razon por el blokeo,incluyendo un estimasyon de kuando libera el blokeo',
+'readonlytext' => 'La base de datos esta blokeada a muevas entradas i otras modifikasyones,probablemente para mantenemento rutinas, Kuando akava se enkontra dispozible.
+
+El administrador ke blokeo dio esta esplikasyon: $1',
+'missing-article' => 'La basa de dados no topó el teksto de una hoja llamada "$1" $2.
+
+En lo mas muncho esto passa por cavsa de un atamiento (link) istoriko a una hoja efaçada.
+
+Si esto no es el cavso, puede ser que topates una chincha (un yerro) en el lojikal (la proǵrama).
+Alora, házemos el plazer de avisar un [[Special:ListUsers/sysop|administrador]] y también de escrivirlo la URL (el adresso). Mercí muncho.',
'missingarticle-rev' => '(nº. de revisión: $1)',
'missingarticle-diff' => '(Dif.: $1, $2)',
+'readonly_lag' => 'La base de datos se a blokeado mientres los servidores se sinkronizan',
+'internalerror' => 'Yerro enterno',
+'internalerror_info' => 'Yerro enterno: $1',
+'fileappenderrorread' => 'No se pudo meldar "$1" durante enkashyon.',
+'fileappenderror' => 'No se pudo enkashar "$1" a "$2".',
'filecopyerror' => 'No se pudo copiar el arxiv "$1" a "$2".',
-'badtitle' => 'Titolo malo',
+'filerenameerror' => 'No se pudo renombrar archivo "$1" a "$2".',
+'filedeleteerror' => 'No se pudo efasar archivo "$1".',
+'directorycreateerror' => 'No se pudo krear direktorio "$1".',
+'filenotfound' => 'No se pudo topar archivo "$1".',
+'fileexistserror' => 'No se pudo eskrivir al archivo "$1": Archivo ya egziste.',
+'unexpected' => 'Valor enasperado: "$1"="$2".',
+'formerror' => 'Yerro: No se pudo embiar fomulario.',
+'badarticleerror' => 'No se puede azer esta aksyon en este pajina.',
+'cannotdelete' => 'No pudo efasar esta pajina o archivo "$1".
+Puede ser ke ya a efasado otra persona.',
+'cannotdelete-title' => 'No se puede efasar pajina "$1"',
+'delete-hook-aborted' => 'Efasyon fue anulado por "hook".',
+'no-null-revision' => 'No pudo krear la mueva revizyon nula para la pajina "$1"',
+'badtitle' => 'Titolo negro',
'badtitletext' => 'El título de la hoja demandada está vazío, no es valible, o es un link interlingua o interwiki incorrecto.
Puede ser que contiene uno o más caracteres que no se pueden usar en los títulos.',
+'perfcached' => 'Los sigiente datos se enkontra en el cache i puede ser ke no esta aktualizada. Un maksimo de {{PLURAL:$1|un resultado esta|$1 resultados estan}} enkontrado en el cache.',
+'perfcachedts' => 'Los sigiente datos se enkontra en el cache, i fue aktualizado $1. Un maksimo de {{PLURAL:$4|un resultado esta|$1 resultados estan}} enkontrado en el cache.',
+'querypage-no-updates' => 'Las aktualizasyones de esta pajina esta desaktivado.
+Las datos no va aktualizar agora.',
'viewsource' => 'Ver su manadero',
+'viewsource-title' => 'Ver la fuente de $1',
+'actionthrottled' => 'Aksyon limitada',
+'actionthrottledtext' => 'Komo prekosyon kontra el spam, ay un limite de kuanto vezes puede azer este aksyon en poko tiempo, i sovrepasaste este limite.
+Aprovar de muevo en unos minutos.',
+'protectedpagetext' => 'La pajina esta guardado kontra esdisyones i otras aksyones.',
+'viewsourcetext' => 'Puede ver i kopiar la fuente de este pajina:',
+'viewyourtext' => 'Puede ver i kopiar la fuente de "tus edisyones" a esta pajina:',
+'protectedinterface' => 'Esta pajina abastese teksto de la interfaz para la programa de este viki, i es guardado para empedir abuso.
+Para anyadir o kambiar traduksyones para todos los vikis, uza [//translatewiki.net/translatewiki.net], el projecto de lokalizasyon de MediaWiki.',
+'editinginterface' => "'''Aviso:''' Estas editando una pajina uzada para abasteser teksto de la interfaz para la programa.
+Kambios a esta pajina afectara la aparesemiento de la interfaz de usuario para los otros usuarios en este viki.
+Para anyadir o kambiar traduksyones para todos los vikis, uza [//translatewiki.net/translatewiki.net], el projecto de lokalizasyon de MediaWiki.",
+
+# Virus scanner
+'virus-unknownscanner' => 'antivirus deskonosido:',
# Login and logout pages
-'yourname' => 'Su nombre de usuario',
-'yourpassword' => 'Parola',
-'yourpasswordagain' => 'Entra de muevo la parola',
-'remembermypassword' => 'Acórdate de mi entrada de usador en este bilgisayar/orddênador (por un maksimum de {{PLURAL:$1|día|días}})',
+'welcomeuser' => 'Bienvinidos, $1',
+'yourname' => 'Nombre de kullaneador:',
+'userlogin-yourname' => 'Nombre de usuario',
+'userlogin-yourname-ph' => 'Eskrive tu nombre de usuario',
+'createacct-another-username-ph' => 'Eskrive el nombre de usuario',
+'yourpassword' => 'Kóddiche:',
+'userlogin-yourpassword' => 'Kontrasenya',
+'userlogin-yourpassword-ph' => 'Eskriva tu kontrasenya',
+'createacct-yourpassword-ph' => 'Eskriva una kontrasenya',
+'yourpasswordagain' => 'Entra de muevo el kóddiche:',
+'createacct-yourpasswordagain' => 'Konfirme contrasenya',
+'createacct-yourpasswordagain-ph' => 'Eskrive la kontrasenya de muevo',
+'remembermypassword' => 'Acódrate de mi entrada de kullaneador en este navigador (por un maksimum de {{PLURAL:$1|día|días}})',
+'yourdomainname' => 'Tu dominyo:',
+'password-change-forbidden' => 'No se puede kambiar contrasenyas en este viki.',
'login' => 'Entrar',
-'nav-login-createaccount' => 'Entrar / Criar un cuento',
+'nav-login-createaccount' => 'Entrar / criar un cuento',
'loginprompt' => 'Kale tener "cookies" aktivadas enel navegador para enrejistrarse en {{SITENAME}}',
-'userlogin' => 'Entrar / Registrarse',
+'userlogin' => 'Entrar / Criar cuento',
'logout' => 'Salir',
'userlogout' => 'Salir',
+'userlogin-noaccount' => 'No tiene un kuento?',
+'userlogin-joinproject' => 'Abonar {{SITENAME}}',
'nologin' => "¿No tienes un cuento? '''$1'''.",
-'nologinlink' => 'Crea un cuento',
-'createaccount' => 'Crea un nuevo cuento',
+'nologinlink' => 'Criar un kuento',
+'createaccount' => 'Criar un cuento',
'gotaccount' => "¿Ya tienes un cuento? '''$1'''.",
'gotaccountlink' => 'Entrar',
'userlogin-resetlink' => 'Olvidates tus detalyos de akseso?',
-'createaccountmail' => 'por una letra electrónica',
-'userexists' => 'El nombre que entrates ya se usa.
-Si puede ser, escoge un otro nombre.',
+'userlogin-resetpassword-link' => 'Olvidaste tu kontrasenya?',
+'userlogin-createanother' => 'Krear otro kuento',
+'createacct-join' => 'Eskrive abasho tu informasyon',
+'createacct-emailrequired' => 'Adreso de korreo elektroniko',
+'createacct-emailoptional' => 'Korreo elektroniko (opsyonal)',
+'createacct-email-ph' => 'Eskrive tu adreso de korreo elektroniko',
+'createacct-another-email-ph' => 'Eskrive el adreso de korreo elektronico',
+'createaccountmail' => 'Uzar una contrasenya temporal y embiarla al korreo elektronico espesificado',
+'createacct-realname' => 'Nombre verdadero (opsyonal)',
+'createaccountreason' => 'Razon:',
+'createacct-reason' => 'Razon',
+'createacct-submit' => 'Krear tu cuento',
+'createacct-another-submit' => 'Krear otro kuento',
+'createacct-benefit-heading' => '{{SITENAME}} es izo por djente komo tu.',
+'createacct-benefit-body1' => '{{PLURAL:$1|edisyon|edisyones}}',
+'createacct-benefit-body2' => '{{PLURAL:$1|pajina|pajinas}}',
+'userexists' => 'El nombre de usuario que eskrivites ya se uza.
+Eskoje un nombre diferente.',
+'createacct-error' => 'Yerro de kreasyon de kuento',
'createaccounterror' => 'No se pudo crear el cuento: $1',
-'mailmypassword' => 'Embiar una nueva koddiche por e-mail',
+'password-name-match' => 'Tu contrasenya kale ser diferente de tu usuario.',
+'mailmypassword' => 'Restableser kóddiche',
+'mailerror' => 'Falta al embiar korreo: $1',
'emailconfirmlink' => 'Confirma su adderesso de letra electrónica',
'accountcreated' => 'Cuento creado',
-'accountcreatedtext' => 'El cuento del usuario para $1 fue creado.',
+'accountcreatedtext' => 'El kuento de usuario para [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|talk]]) fue kreado.',
'loginlanguagelabel' => 'Lingua: $1',
# Change password dialog
'changepassword' => 'Trocar el kóddiche',
+'resetpass_header' => 'Kambiar kontrasenya del kuento',
'oldpassword' => 'Kóddiche viejo:',
'newpassword' => 'Kóddiche muevo:',
+'retypenew' => 'Eskrive de muevo la kontrasenya mueva',
+'resetpass_forbidden' => 'No se puede kambiar las kontrasenyas',
+'resetpass-submit-loggedin' => 'Kambiar kontrasenya',
'resetpass-submit-cancel' => 'Anular',
# Special:PasswordReset
+'passwordreset' => 'Restableser kontrasenya',
+'passwordreset-legend' => 'Restableser kontrasenya',
'passwordreset-username' => 'Nombre de usador:',
'passwordreset-domain' => 'Dominio:',
'passwordreset-email' => 'Adresso de letral:',
+'passwordreset-emailelement' => 'Usuario: $1
+Kontrasenya temporal: $2',
# Special:ChangeEmail
+'changeemail' => 'Kambiar adreso de korreo elektroniko',
+'changeemail-header' => 'Kambiar adreso de korreo elektroniko de kuento',
+'changeemail-oldemail' => 'Adreso de korreo elektroniko aktual:',
+'changeemail-newemail' => 'Muevo adreso de korreo elektroniko:',
+'changeemail-none' => '(dinguno)',
+'changeemail-password' => 'Tu kontrasenya en {{SITENAME}}:',
'changeemail-submit' => 'Trocar letral',
'changeemail-cancel' => 'Anular',
+# Special:ResetTokens
+'resettokens-token-label' => '$1(valor aktual: $2)',
+
# Edit page toolbar
-'bold_sample' => 'Teksto gordo',
-'bold_tip' => 'Teksto gordo',
-'italic_sample' => 'Teksto cursivo',
-'italic_tip' => 'Teksto en cursiva',
-'link_sample' => 'Título del link',
+'bold_sample' => 'Teksto reforçado',
+'bold_tip' => 'Teksto reforçado',
+'italic_sample' => 'Teksto aladado',
+'italic_tip' => 'Teksto aladado',
+'link_sample' => 'Títolo del atamiento',
'link_tip' => 'Link interno',
-'extlink_sample' => 'http://www.example.com Título del link',
+'extlink_sample' => 'http://www.example.com Títolo del atamiento',
'extlink_tip' => 'Link eksterno (acόrdate de ajustar el prefiks http://)',
-'headline_sample' => 'Escrituria de títůlo',
+'headline_sample' => 'Escritura de títolo',
'headline_tip' => 'Titular de nivel 2',
'nowiki_sample' => 'Escribid aquí texto sin formato',
'nowiki_tip' => 'Iñorar el formato wiki',
'image_tip' => 'Imagen incorporada',
-'media_tip' => 'Link al arxivo multimedia',
+'media_tip' => 'Atamiento de la dosya',
'sig_tip' => 'Firma, data i ora',
'hr_tip' => 'Liña orizontala (úsala de vez en cuando)',
'minoredit' => 'Esta es una edición chiquitica',
'watchthis' => 'Cudia esta hoja',
'savearticle' => 'Enrejistra la hoja',
-'preview' => 'Previsualizar',
+'preview' => 'Echar una ojada',
'showpreview' => 'Mostrar la previsualización',
'showlivepreview' => 'Previsteo bivo',
'showdiff' => 'Amostrar los trocamientos',
'blockedtitle' => 'El usador está blokeado',
'blockednoreason' => 'La razόn no se diό',
'whitelistedittext' => 'Tienes que $1 para pueder trocar artículos.',
+'nosuchsectiontitle' => 'No se puede topar seksyon',
'loginreqtitle' => 'Entrar es menester',
'loginreqlink' => 'entrar',
'loginreqpagetext' => 'Tienes que $1 para pueder ver otras hojas.',
'accmailtitle' => 'La kontrasenya ha sido embiada.',
-'accmailtext' => 'La kontrasenya para "$1" se ha embiado a $2.',
-'newarticle' => '(Nuevo)',
+'accmailtext' => "Se a embiado a $2 una kontrasenya jenerado por [[User talk:$1|$1]]. Se puede kambiar en la pajina ''[[Special:ChangePassword|cambiar kontrasenya]]'' al entrar.",
+'newarticle' => '(Muevo)',
'newarticletext' => 'Arrivates a una hoja que daínda no egziste.
Para crear esta hoja, empeça a escribir en la caxa de abaxo. Mira [[{{MediaWiki:Helppage}}|la hoja de ayudo]] para saber más.
Si venites aquí por yerro, torna a la hoja de antes.',
'noarticletext' => 'En este momento no ay teksto en esta hoja.
-Puedes [[Special:Search/{{PAGENAME}}|buscar el títolo de esta hoja]] en otras hojas,
-<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} buscar en los rejistros relatados],
-ou [{{fullurl:{{FULLPAGENAME}}|action=edit}} trocar esta hoja]</span>.',
+Puedes [[Special:Search/{{PAGENAME}}|buxcar el títolo desta hoja]] en otras hojas,
+<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} buxcar en los rejistros],
+u [{{fullurl:{{FULLPAGENAME}}|action=edit}} trocar esta hoja]</span>.',
'noarticletext-nopermission' => 'No ay teksto en esta oja.
Puedes [[Special:Search/{{PAGENAME}}|bushkar este titolo de oja]] en otras pajinas,
o <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} bushkar en los rejistros relasyonados]</span>.',
'userpage-userdoesnotexist-view' => 'El cuento del usador $1 no está enrejistrado.',
+'updated' => '(Aktualizado)',
'note' => "'''Nota:'''",
'previewnote' => "¡Akórdate ke esto es sólo una previsualizasion i aínda no se enrejistró!'''
Los tus trokamientos no se tienen guadrados!",
'yourtext' => 'Tu teksto',
'yourdiff' => 'Diferencias',
'copyrightwarning' => "Si puede ser, observa que todas las contribuciones a {{SITENAME}} se consideran hechas públicas abaxo la $2 (ver detalyos en $1). Si no queres que la gente endereche tus tekstos escritos sin piadad i los esparta libberamente, alora no los metas aquí. También nos estás asegurando ansí que escribites este teksto tu mismo i sos el dueño de los derechos de autor, o lo copiates desde el dominio público u otra fuente libbero.'''¡QUE N0 USES TEKSTOS ESCRITOS CON COPYRIGHT SIN PERMISSIÓN!'''<br />",
-'templatesused' => '{{PLURAL:$1|El xabblón usado|Los xabblones usados}} en esta hoja:',
+'templatesused' => '{{PLURAL:$1|El şablón usado|Los şablones usados}} en esta hoja:',
'templatesusedpreview' => '{{PLURAL:$1|El xabblón usado|Los xabblones usados}} en esta vista:',
-'template-protected' => '(guardada)',
-'template-semiprotected' => '(media guardada)',
-'hiddencategories' => 'Esta hoja es un miembro de {{PLURAL:$1|1 kateggoría escondida|$1 kateggorías escondidas}}:',
+'template-protected' => '(guadrada)',
+'template-semiprotected' => '(media guadrada)',
+'hiddencategories' => 'Esta hoja es un miembro de {{PLURAL:$1|1 kategoría escondida|$1 kategorías escondidas}}:',
'nocreate-loggedin' => 'No tienes el permisso de creas hojas nuevas.',
'permissionserrorstext-withaction' => 'No tienes el permiso para $2, por las {{PLURAL:$1|razón|razones}} venideras:',
'recreate-moveddeleted-warn' => "'''Aviso: Estas kriando una oja la kuala fue efassada antes.'''
El enrejistro de efassado i taxireado para esta oja puede ser meldado aki:",
'moveddeleted-notice' => "Esta ója fue efassada.
El ''log'' de efassado i taxireado de la ója es amostrado abasho para dar referensia.",
+'edit-already-exists' => 'No se puede krear una pajina mueva.
+Ya egziste.',
+'defaultmessagetext' => 'Teksto de mesaje predeterminado',
+
+# Content models
+'content-model-wikitext' => 'vikiteksto',
+'content-model-text' => 'teksto simple',
+'content-model-javascript' => 'JavaScript',
+'content-model-css' => 'CSS',
# Parser/template warnings
'post-expand-template-inclusion-warning' => "'''Avizo:''' La contenencia de xablon está muy grande.
Este o estos kampos no van ser amostrados",
'post-expand-template-argument-category' => 'Ojas ke tienen xablones kon parametros no uzados',
+# Account creation failure
+'cantcreateaccounttitle' => 'No se puede krear el kuento',
+
# History pages
'viewpagelogs' => 'Ver los registros de esta hoja',
'currentrev' => "Enderechamiento d'al cavo",
'revisionasof' => 'Enderechamiento a las $1',
'revision-info' => 'Revision en data $1 por $2',
'previousrevision' => '← Enderechamiento de antes',
-'nextrevision' => 'Rêvisión venidera →',
+'nextrevision' => 'Revizión venidera →',
'currentrevisionlink' => 'Revisión actual',
'cur' => 'act',
'next' => 'venidero',
-'last' => 'de alcabo',
+'last' => 'de alcavo',
'page_first' => 'primeras',
'page_last' => 'de alcabo',
'histlegend' => "Selección de diferencias: marca los selectores de las versiones a comparar y pulsa ''enter'' o el botón de abajo.<br />
Leyenda: (act) = diferencias con la versión actual,
(prev) = diferencias con la versión previa, M = edición menor",
-'history-fieldset-title' => 'Buscar en la istoria',
+'history-fieldset-title' => 'Navegar en la istoria',
'history-show-deleted' => 'Sólamente efassado',
-'histfirst' => 'Primeras',
-'histlast' => 'De alcabo',
+'histfirst' => 'Lo mas viejo',
+'histlast' => 'Lo mas muevo',
'historysize' => '({{PLURAL:$1|1 byte|$1 bytes}})',
'historyempty' => '(vazío)',
'history-feed-item-nocomment' => '$1 en $2',
# Revision deletion
+'rev-deleted-user' => '(se kito el nombre de usuario)',
'rev-delundel' => 'mostra/esconde',
'rev-showdeleted' => 'mostra',
-'revdelete-show-file-submit' => 'Sí',
+'revdelete-show-file-submit' => 'Si',
+'revdelete-hide-image' => 'Eskonder el kontenido de archivo',
+'revdelete-hide-user' => 'Nombre de usuario/adreso de IP del Redaktor',
'revdelete-radio-same' => '(no troques)',
-'revdelete-radio-set' => 'Sí',
-'revdelete-radio-unset' => 'No',
-'revdelete-log' => 'Razón:',
-'revdel-restore' => 'troca la visibilitá',
+'revdelete-radio-set' => 'Eskondido',
+'revdelete-radio-unset' => 'Visible',
+'revdelete-log' => 'Razon:',
+'revdel-restore' => 'trocar la vizibilitá',
'pagehist' => 'La storia de la hoja',
+'revdelete-otherreason' => 'Otro razon/razon adisiyonal',
'revdelete-reasonotherlist' => 'Otra razón',
# History merging
-'mergehistory-reason' => 'Razón:',
+'mergehistory-from' => 'Pajina de orijen',
+'mergehistory-reason' => 'Razon:',
# Merge log
'revertmerge' => 'Apartar',
# Diffs
'history-title' => 'Istorya de trokamientos para «$1»',
'lineno' => 'Liña $1:',
-'compareselectedversions' => 'Comparar versiones escogidas',
-'editundo' => 'des-haze',
-'diff-multi' => '(No {{PLURAL:$1|es amostrado un trokamiento intermedio echo|son amostrados $1 trokamientos intermedios echos}} por {{PLURAL:$2|un usador|$2 usadores}})',
+'compareselectedversions' => 'Comparar versiones escojidas',
+'editundo' => 'des-hazer',
# Search results
-'searchresults' => 'Resultados de la búsquida',
-'searchresults-title' => 'Resultados de la búsquida de «$1»',
+'searchresults' => 'Resultados de la búxquida',
+'searchresults-title' => 'Resultados de la búxquida de «$1»',
'notextmatches' => 'No se pudo topar en dinguna hoja.',
'prevn' => '{{PLURAL:$1|$1}} de antes',
'nextn' => '{{PLURAL:$1|$1}} venideras',
'shown-title' => 'Amostrar $1 {{PLURAL:$1|resultado|resultados}} por hoja',
'viewprevnext' => 'Ver ($1 {{int:pipe-separator}} $2) ($3).',
'searchmenu-exists' => 'Egziste una oja yamada "[[:$1]]" en esta viki',
-'searchmenu-new' => "'''Crîar la hoja «[[:$1]]» en esta viki!'''",
+'searchmenu-new' => '<strong>Criar la hoja «[[:$1]]» en este viki!</strong>{{PLURAL:$2|0=|También ver la hoja topada con tu búxquida.|También ver las resultas de tu búxquida.}}',
'searchprofile-articles' => 'Hojas de contènido',
'searchprofile-project' => 'Hojas de ayudo y hojas de projeto',
'searchprofile-images' => 'Multimedya',
'searchprofile-everything' => 'Todo',
'searchprofile-advanced' => 'Adelantado',
-'searchprofile-articles-tooltip' => 'Buscar en $1',
-'searchprofile-project-tooltip' => 'Buscar en $1',
-'searchprofile-images-tooltip' => 'Buscar las dosyas',
-'searchprofile-everything-tooltip' => 'Buscar en todo el contènido (y también hojas de diskusyón)',
-'searchprofile-advanced-tooltip' => 'Buscar en espacios de nombres particůlares',
+'searchprofile-articles-tooltip' => 'Buxcar en $1',
+'searchprofile-project-tooltip' => 'Buxcar en $1',
+'searchprofile-images-tooltip' => 'Buxcar dosyas',
+'searchprofile-everything-tooltip' => 'Buxca en todo el contènido (y mismo en las hojas de diskusyón)',
+'searchprofile-advanced-tooltip' => 'Buxcar en espacios de nombres partikolares',
'search-result-size' => '$1 ({{PLURAL:$2|1 biervo|$2 biervos}})',
'search-result-category-size' => '{{PLURAL:$1|1 miembro|$1 miembros}} ({{PLURAL:$2|1 basho-kateggoria|$2 basho-kateggoria}}, {{PLURAL:$3|1 dossia|$3 dossias}})',
-'search-redirect' => '(direksión desde $1)',
+'search-redirect' => '(redireksión de la hoja $1)',
'search-section' => '(kapítolo $1)',
'search-suggest' => 'Quijites dezir: $1',
'search-interwiki-caption' => 'Proyectos hermanos',
'search-interwiki-default' => 'Los resultados de $1:',
-'search-interwiki-more' => '(más)',
+'search-interwiki-more' => '(mas)',
'searchrelated' => 'lisionado',
'searchall' => 'todos',
-'showingresultsheader' => "{{PLURAL:$5|Resultado '''$1''' de '''$3'''|Resultados '''$1-$2''' de '''$3'''}} para '''$4'''",
-'search-nonefound' => 'No ay resultados que acumplan los criterios de la búsqueda.',
+'showingresultsheader' => "{{PLURAL:$5|Resultado '''$1''' de '''$3'''|Resultados '''$1-$2''' de '''$3'''}} parâ '''$4'''",
+'search-nonefound' => 'No ay resultados que acumplan los criterios de la búxquida.',
'powersearch-legend' => 'Búsqueda adelantada',
'powersearch-ns' => 'Busca en los espacios de nombres:',
'powersearch-redir' => 'Mostra las redirecciones',
'powersearch-toggleall' => 'Todos',
+'powersearch-togglenone' => 'dingun',
'search-external' => 'Búsqueda eksterna',
# Preferences page
'preferences' => 'Preferencias',
-'mypreferences' => 'Las mis preferensias',
+'mypreferences' => 'Preferencias',
+'prefs-edits' => 'Numero de edisyones:',
'prefs-skin' => 'Vista',
'skin-preview' => 'Previstear',
+'prefs-datetime' => 'Data i ora',
+'prefs-user-pages' => 'Pajinas de usuario',
+'prefs-personal' => 'Profil de usuario',
'prefs-rc' => 'Los Trocamientos de Alcabo',
'prefs-watchlist' => 'Lista de los Trocamientos Preferidos',
'prefs-watchlist-days' => 'El número de los días a mostrar en la lista de los trocamientos preferidos:',
-'prefs-watchlist-days-max' => '$1 {{PLURAL:$1|días|días}} a lo más muncho',
+'prefs-watchlist-days-max' => '$1 {{PLURAL:$1|diya|diyas}} a lo más muncho',
'prefs-resetpass' => 'Trocar la parola',
+'prefs-changeemail' => 'Kambiar adreso de korreo elektroniko',
'prefs-rendering' => 'Vista',
'saveprefs' => 'Enrejistrar',
+'searchresultshead' => 'Bushkar',
'timezoneregion-africa' => 'África',
'timezoneregion-america' => 'América',
'timezoneregion-antarctica' => 'Antárctica',
+'timezoneregion-arctic' => 'Artiko',
'timezoneregion-asia' => 'Asia',
+'timezoneregion-atlantic' => 'Oseano Atlantiko',
'timezoneregion-australia' => 'Ostralia',
'timezoneregion-europe' => 'Europa',
+'timezoneregion-indian' => 'Oseano Indiko',
+'timezoneregion-pacific' => 'Oseano Pasifiko',
+'prefs-searchoptions' => 'Bushkar',
'prefs-files' => 'Dosyas',
-'youremail' => 'El adderesso de tu letra electrόnica:',
-'username' => 'Nombre de usuario:',
+'youremail' => 'Letral:',
+'username' => '{{GENDER:$1|Nombre de usuario}}:',
'yourrealname' => 'Nombre verdadero:',
-'yourlanguage' => 'Lingua:',
+'yourlanguage' => 'Lengua:',
'yournick' => 'Firma mueva:',
-'email' => 'Letral',
-'prefs-help-email' => 'El adreso de e-posta es menester para alimpiar la tu parola, si la olvidates',
+'gender-unknown' => 'Prefiero no dezir',
+'gender-male' => 'El redakto pajinas de viki',
+'gender-female' => 'Eya redakto pajinas de viki',
+'email' => 'Korreo elektroniko',
+'prefs-help-email' => 'El adreso de korreo elektroniko es opsional, ma es menester para alimpiar la tu kontrasenya, si la olvidates',
'prefs-help-email-others' => 'Endemas puedes eskojer si keres dar pueder a otros usadores de azer kontakto kon ti por modre de e-posta, a traverso de un atamiento en tus ojas de usador i de diskusyon.',
+'prefs-help-email-required' => 'Se nesesita adreso de korreo elektroniko.',
+'prefs-info' => 'Informasyon basiko',
+'prefs-i18n' => 'Internasionalisasyion',
'prefs-signature' => 'Firma',
+'prefs-editor' => 'Redaktor',
+
+# User rights
+'userrights-groupsmember' => 'Miembro de:',
+'userrights-reason' => 'Razon:',
# Groups
+'group' => 'Grupo:',
'group-user' => 'Usadorers',
+'group-bot' => 'Bots',
'group-sysop' => 'Administradores',
+'group-bureaucrat' => 'Burokratos',
'group-all' => '(todos)',
+'group-user-member' => '{{GENDER:$1|usuario}}',
+'group-bot-member' => '{{GENDER:$1|bot}}',
+'group-bureaucrat-member' => '{{GENDER:$1|burokrato}}',
+
+'grouppage-user' => '{{ns:project}}:Usuarios',
+'grouppage-bot' => '{{ns:project}}:Bots',
'grouppage-sysop' => '{{ns:project}}:Administradores',
+'grouppage-bureaucrat' => '{{ns:project}}:Burokratos',
# Rights
+'right-read' => 'Meldar pajinas',
'right-edit' => 'Trocar las hojas',
+'right-createpage' => 'Krear pajinas (ke no son pajinas de diskusyon)',
+'right-createtalk' => 'Krear pajinas de diskusyon',
+'right-createaccount' => 'Krear muevos kuentos de usuarios',
'right-minoredit' => 'Marcar trocamientos como "chiquiticos"',
+'right-move' => 'Mover pajinas',
+'right-movefile' => 'Mover archivo',
'right-delete' => 'Efassar hojas',
+'right-sendemail' => 'Embiar korreo elektroniko a otro usuario',
# Special:Log/newusers
'newuserlogpage' => 'Registro de creación de usuarios',
'action-read' => 'meldar esta hoja',
'action-edit' => 'trocar esta hoja',
'action-createpage' => 'crear hojas',
+'action-createtalk' => 'Krear pajinas de diskusyon',
+'action-createaccount' => 'Krear este kuento de usuario',
+'action-minoredit' => 'sinyalar este kambio komo chiko',
'action-delete' => 'efassar esta hoja',
+'action-sendemail' => 'embiar korreo elektronikos',
# Recent changes
'nchanges' => '$1 {{PLURAL:$1|trocamiento|trocamientos}}',
+'enhancedrc-history' => 'istoria',
'recentchanges' => 'Trocamientos freskos',
'recentchanges-legend' => 'Opciones encima de los trocamientos frescos',
'recentchanges-summary' => 'Perseguid en esta hoja, los trocamientos de alcabo realizados en la Viki.',
'recentchanges-feed-description' => 'Perseguir los trocamientos más nuevos en el viki en este feed.',
-'recentchanges-label-newpage' => 'Este trokamiento krio una mueva ója',
+'recentchanges-label-newpage' => 'Este trocamiento crió una mueva hoja',
'recentchanges-label-minor' => 'Esta es un trocamiento chiquitico',
'recentchanges-label-bot' => 'Este trokamiento fue echo por un bot',
-'recentchanges-label-unpatrolled' => 'Estre trokamiento no esta akavidado',
+'recentchanges-label-unpatrolled' => 'Este trocamiento no está akavidado',
+'recentchanges-legend-plusminus' => "(''±123'')",
'rcnotefrom' => "Debasho se amostran los trokamientos desde '''$2''' (amostrados fina <b>$1</b>)",
'rclistfrom' => 'Mostra los trocamientos nuevos empeçando desde $1',
'rcshowhideminor' => '$1 trocamientos chiquiticos',
'rcshowhidebots' => '$1 bots',
-'rcshowhideliu' => '$1 empleadores enrējjistrados',
-'rcshowhideanons' => '$1 empleadores anonimes',
-'rcshowhidepatr' => '$1 trokamientos akavidados',
+'rcshowhideliu' => '$1 kullaneadores enrezhistrados',
+'rcshowhideanons' => '$1 kullaneadores anonimes',
+'rcshowhidepatr' => '$1 trocamientos akavidados',
'rcshowhidemine' => '$1 mis ediciones',
-'rclinks' => 'Ver los dal cabo $1 trocamientos en los dal cabo $2 días.<br />$3',
+'rclinks' => 'Ver los dal cavo $1 trocamientos en los dal cavo $2 días.<br />$3',
'diff' => 'dif',
'hist' => 'ist',
'hide' => 'Esconder',
-'show' => 'Àmostrar',
+'show' => 'Amostrar',
'minoreditletter' => 'ch',
'newpageletter' => 'N',
'boteditletter' => 'b',
-'rc-enhanced-expand' => 'Mostra los detalyos (cale JavaScript)',
+'rc_categories_any' => 'Kualkyer',
+'rc-enhanced-expand' => 'Amostrar los detalyos',
'rc-enhanced-hide' => 'Guarda los detalyos',
# Recent changes linked
'recentchangeslinked' => 'Trocamientos conectados',
'recentchangeslinked-feed' => 'Trocamientos conectados',
-'recentchangeslinked-toolbox' => 'Trocamientos relatados',
+'recentchangeslinked-toolbox' => 'Trocamientos atados',
'recentchangeslinked-title' => 'Los trocamientos relacionados con "$1"',
-'recentchangeslinked-summary' => "Esto es la lista de los trocamientos de alcavo de las hojas que relatan á una hoja spēcifik (ou de los miembros de la katēggoría spēcifikada).
-Las hojas en tu [[Special:Watchlist|lista de akavidamiento]] son escritas '''con letras grexas'''.",
+'recentchangeslinked-summary' => "Esto es la lista de los trocamientos dalcavo de las hojas que relatan a una hoja particòlar (o de los miembros de la kategoría particòlar).
+Las hojas en tu [[Special:Watchlist|lista de akavidamiento]] son '''reforçadas'''.",
'recentchangeslinked-page' => 'Nombre de la hoja',
-'recentchangeslinked-to' => 'Mostra los trocamientos freskos en lugar de la hoja indicada',
+'recentchangeslinked-to' => 'Amostra los trocamientos freskos en lugar de la hoja indicada',
# Upload
'upload' => 'Suvir una dosya',
'uploadlogpage' => 'Subidas de arxivos',
+'filename' => 'Nombre de archivo',
'filedesc' => 'Somario',
-'uploadedimage' => 'subió «[[$1]]»',
+'filereuploadsummary' => 'Kambios de archivo:',
+'filesource' => 'Fuente:',
+'filename-tooshort' => 'El nombre del archivo es muy kurto.',
+'savefile' => 'Guardar archivo',
+'uploadedimage' => 'suvió «[[$1]]»',
-'license' => 'Lesensia:',
+# File backend
+'backend-fail-notexists' => 'El archivo $1 no egziste.',
+'backend-fail-alreadyexists' => 'El archivo "$1" ya egziste.',
+
+# img_auth script messages
+'img-auth-nofile' => 'El archivo "$1" no egziste.',
+
+'license' => 'Lecencia:',
'license-header' => 'Lesensiamyénto',
# Special:ListFiles
+'imgfile' => 'archivo',
+'listfiles' => 'Lista de archivos',
+'listfiles_thumb' => 'Minyatura',
+'listfiles_date' => 'Data',
'listfiles_name' => 'Nombre',
'listfiles_user' => 'Usuario',
'listfiles_size' => 'Boy',
+'listfiles-latestversion-yes' => 'Si',
+'listfiles-latestversion-no' => 'No',
# File description page
-'file-anchor-link' => 'Archivo',
+'file-anchor-link' => 'Dosya',
'filehist' => 'La istoria de la dosya',
-'filehist-help' => 'Klika encima de una data/ora para vel el arxivo de esta data.',
+'filehist-help' => 'Klika encima de una data/ora para vel la dosya desta data.',
'filehist-revert' => 'aboltar',
'filehist-current' => 'actual',
'filehist-datetime' => 'Data/Ora',
'filehist-thumb' => 'Minyatura',
'filehist-thumbtext' => 'Minyatura de la versión á las $1',
-'filehist-user' => 'Usador',
+'filehist-nothumb' => 'Sin minyatura',
+'filehist-user' => 'Kullaneador',
'filehist-dimensions' => 'Dimensiones',
'filehist-filesize' => 'El boy de la dosya',
'filehist-comment' => 'Comentario',
-'imagelinks' => 'El uso del dosya',
-'linkstoimage' => '{{PLURAL:$1|La hoja venidera da link|Las hojas venideras dan link}} a este arxivo:',
-'nolinkstoimage' => 'Dinguna ója tiene atamientos a esta imej',
+'filehist-missing' => 'No se topa el archivo',
+'imagelinks' => 'Usos de la dosya',
+'linkstoimage' => '{{PLURAL:$1|La hoja venidera da link|Las hojas venideras dan link}} a esta dosya:',
+'nolinkstoimage' => 'No ay hojas con atamientos a esta dosya.',
'sharedupload' => 'Este arxivo es de $1 i puede ser usado por otros proyectos.',
'sharedupload-desc-here' => 'Esta hoja es de $1 y puede ser usado por otros projetos.
La descripción en su [$2 hoja de descripción del arxivo] está amostrada debaxo.',
+'filepage-nofile' => 'No egziste dingun archivo de este nombre.',
'uploadnewversion-linktext' => 'Subir una nueva versión de este arxivo',
+'shared-repo-from' => 'de $1',
+
+# File reversion
+'filerevert-comment' => 'Razon:',
+
+# File deletion
+'filedelete-comment' => 'Razon:',
+'filedelete-nofile' => "'''$1''' no egziste.",
+'filedelete-otherreason' => 'Otra razon/razon adisiyonal',
+'filedelete-reason-otherlist' => 'Otra razon',
+
+# MIME search
+'mimesearch' => 'bushkida por MIME',
+'download' => 'deskargar',
+
+# Unused templates
+'unusedtemplateswlh' => 'otros enlases',
# Random page
-'randompage' => 'Hoja por asardo',
+'randompage' => 'Hoja por azardo',
+
+# Random page in category
+'randomincategory-selectcategory-submit' => 'Ir',
# Statistics
'statistics' => 'Estatísticas',
+'statistics-articles' => 'Pajinas de kontenido',
+'statistics-pages' => 'Pajinas',
+'statistics-users-active' => 'Usuarios aktivos',
+
+'pageswithprop-submit' => 'Ir',
+
+'doubleredirects' => 'Redireksyones dobles',
+
+'brokenredirects-edit' => 'trocar',
+'brokenredirects-delete' => 'efasar',
+
+'withoutinterwiki' => 'Pajinas sin enlases de lenguas',
+'withoutinterwiki-submit' => 'Amostrar',
# Miscellaneous special pages
'nbytes' => '$1 {{PLURAL:$1|bayt|baytes}}',
+'ninterwikis' => '$1 {{PLURAL:$1|interwiki|interwikis}}',
+'nlinks' => '$1 {{PLURAL:$1|enlase|enlases}}',
'nmembers' => '$1 {{PLURAL:$1|miembro|miembros}}',
+'nmemberschanged' => '$1 → $2 {{PLURAL:$2|miembro|miembros}}',
+'nimagelinks' => 'Uzado en $1 {{PLURAL:$1|pajina|pajinas}}',
+'ntransclusions' => 'uzado en $1 {{PLURAL:$1|pajina|pajinas}}',
'prefixindex' => 'Todas las hojas con prefixo',
+'shortpages' => 'Pajinas kurtas',
+'longpages' => 'Pajinas largas',
+'listusers' => 'Lista de usuario',
'usercreated' => '{{GENDER:$3|Enrejistrado|Enrejistrada}} el $1 a las $2',
'newpages' => 'Hojas muevas',
+'newpages-username' => 'Nombre de usuario:',
'ancientpages' => 'Artikolos mas viejos',
-'move' => 'taxirea',
+'move' => 'taşirear',
'movethispage' => 'Tashirea esta hoja',
'pager-newer-n' => '{{PLURAL:$1|1 venidero|$1 venideros}}',
'pager-older-n' => '{{PLURAL:$1|1 de antes|$1 de antes}}',
# Book sources
-'booksources' => 'Fuentes de libros',
+'booksources' => 'Fuentes de livros',
'booksources-search-legend' => 'Buscar fuentes de libros',
-'booksources-go' => 'Yir',
+'booksources-go' => 'Ir',
# Special:Log
-'log' => 'Registros',
+'log' => 'Rejistros',
# Special:AllPages
'allpages' => 'Todas las hojas',
'alphaindexline' => '$1 a $2',
+'nextpage' => 'La sigiente pajina ($1)',
'prevpage' => 'Hoja de antés ($1)',
'allpagesfrom' => 'Mostrar hojas que empecen por:',
'allpagesto' => 'Mostrar hojas escapadas con:',
-'allarticles' => 'Todos los artikolos',
+'allarticles' => 'Todas las hojas',
'allinnamespace' => 'Todas las pajinas (espasio $1)',
-'allpagessubmit' => 'Àmostrar la lista',
+'allpagessubmit' => 'Amostrar la lista',
# Special:Categories
'categories' => 'Kategorías',
'special-categories-sort-abc' => 'ordenar alefbeticamente',
# Special:LinkSearch
-'linksearch' => 'Linkes eksternos',
-'linksearch-line' => 'Atamiento para $1 en la ója $2',
+'linksearch' => 'Bushkida de enlases eksternos',
+'linksearch-ok' => 'Bushkar',
+'linksearch-line' => 'Atamiento para $1 en la hoja $2',
+
+# Special:ListUsers
+'listusers-submit' => 'Amostrar',
+'listusers-noresult' => 'No se topo usuario',
+
+# Special:ActiveUsers
+'activeusers-hidebots' => 'Eskonder bots',
+'activeusers-noresult' => 'No se toparon usuario.',
# Special:ListGroupRights
+'listgrouprights' => 'Derechos del grupo de usuario',
+'listgrouprights-group' => 'Grupo',
+'listgrouprights-rights' => 'Derechos',
+'listgrouprights-helppage' => 'Help:Derechos de grupo',
'listgrouprights-members' => '(ver los miembros de este grupo)',
+'listgrouprights-addgroup' => 'Anyadir {{PLURAL:$2|grupo|grupos}}: $1',
+'listgrouprights-removegroup' => 'Kitar {{PLURAL:$2|grupo|grupos}}: $1',
+'listgrouprights-addgroup-all' => 'Anyadir todos los grupos',
+'listgrouprights-removegroup-all' => 'Kitar todos los grupos',
# Email user
-'emailuser' => 'Embia e-mail a este usuario',
+'emailuser' => 'Embia korreo elektroniko a este usuario',
+'emailuser-title-target' => 'Embiar un korreo elektroniko a {{Gender:$1|este usuario|esta usuaria}}',
+'emailuser-title-notarget' => 'Embiar un korreo elektroniko a un usuario',
+'emailpage' => 'Embiar un korreo elektroniko a un usuario',
+'defemailsubject' => 'Korreo elektroniko del usuario "$1" de {{SITENAME}}',
+'emailusername' => 'Nombre de usuario:',
+'emailfrom' => 'De:',
+'emailto' => 'Para:',
+'emailsubject' => 'Sujeto:',
+'emailmessage' => 'Mesaje:',
+'emailsend' => 'Embiar',
+'emailsent' => 'Korreo elektroniko embiado',
# Watchlist
'watchlist' => 'Lista de akavidamiento',
-'mywatchlist' => 'La mi lista de akavidamientos',
+'mywatchlist' => 'Mi lista de akavidamientos',
'watchlistfor2' => 'Para $1 $2',
-'addedwatchtext' => "La hoja «[[:$1]]» fue ajustada a tu [[Special:Watchlist|lista de escogidas]]. Los trocamientos venideros en esta hoja i en tu hoja de diskussión associada se van indicar aí, i la hoja va aparecer '''gordo''' en la hoja de [[Special:RecentChanges|trocamientos freskos]] para hazerla más kolay de detektar.
-
-Cuando queres eliminar la hoja de tu lista de escogidas, piza «Dexar de cudiar» en el menú.",
+'addedwatchtext' => 'La pajina "[[:$1]]" fue anyadido a tu [[Special:Watchlist|lista de escogidas]]. Los trocamientos venideros en esta pajina i en tu pajina de diskusyon assosiada va apareser ayi.',
'removedwatchtext' => 'La hoja «[[:$1]]» fue eliminada de tu [[Special:Watchlist|lista de escogidas]].',
-'watch' => 'cudia',
+'watch' => 'cudiar',
'watchthispage' => 'Cudia esta hoja',
'unwatch' => 'dexa de cudiar',
'watchlist-details' => '{{PLURAL:$1|$1 hoja|$1 hojas}} en tu lista de escogidas, sin contar las de la diskussión.',
'watching' => 'Cudiando...',
'unwatching' => 'Dexando de cudiar...',
+'enotif_impersonal_salutation' => '{{SITENAME}} usuario',
+
# Delete
'deletepage' => 'Efassar esta hoja',
'confirmdeletetext' => 'Estás al punto de efassar una hoja
Si puede ser, confirma que de verdad queres hazer esto, que estás entendiendo las
resultados, i que lo estás haziendo de acorddo con las [[{{MediaWiki:Policy-url}}|Políticas]].',
'actioncomplete' => 'Aksion kompleta',
-'actionfailed' => 'Aksiyon sin reushitá',
+'actionfailed' => 'Aksión sin reuşitá',
'deletedtext' => '"$1" fue efassado.
Mira $2 para un registro de los efassados nuevos.',
'dellogpage' => 'Registro de efassados',
'deletecomment' => 'Razón:',
-'deleteotherreason' => 'Otra razón:',
+'deleteotherreason' => 'Otra razon/razon adisiyonal:',
'deletereasonotherlist' => 'Otra razón',
-'deletereason-dropdown' => '* Motivos generales de efassamientos
-** La demanda del criador de la hoja
-** Violación de copyright
-** Vandalismo',
+'deletereason-dropdown' => '* Razones komunes de efassamientos
+** Spam
+** Vandalismo
+** Violasyon del derecho de otor
+** Demande del otor mizmo
+** Redireksyon rota',
# Rollback
-'rollbacklink' => 'abolta',
+'rollbacklink' => 'hazer aboltar',
# Protect
'protectlogpage' => 'Protecciones de las hojas',
'protectedarticle' => 'guardó «[[$1]]»',
'modifiedarticleprotection' => 'trocó el nivel de protección de «[[$1]]»',
'prot_1movedto2' => '[[$1]] trasladado a [[$2]]',
-'protectcomment' => 'Razón:',
+'protectcomment' => 'Razon:',
'protectexpiry' => 'Escapa:',
'protect_expiry_invalid' => 'Tiempo de escapación yerrado.',
'protect_expiry_old' => 'El tiempo de escapación está en el passado.',
A continuación se mostran las opciones actuales de la hoja '''$1''':",
'protect-cascadeon' => 'Esta hoja está guardada en momento porque está incluida en {{PLURAL:$1|la hoja venidera|las hojas venideras}}, que tienen activada la opción de protección en grados. Puedes trocar el nivel de protección de esta hoja, ma no va afectar a la protección en grados.',
'protect-default' => 'Permitir todos los usuarios',
-'protect-fallback' => 'Tiene menester del permiso «$1»',
-'protect-level-autoconfirmed' => 'Bloquear usuarios nuevos y no registrados',
-'protect-level-sysop' => 'Sólo administradores',
+'protect-fallback' => 'Solo permitir usuarios kon permiso "$1"',
+'protect-level-autoconfirmed' => 'Solo permitir usuarios otokonfirmados',
+'protect-level-sysop' => 'Solo permitir administradores',
'protect-summary-cascade' => 'con grados',
'protect-expiring' => 'caduca el $1 (UTC)',
'protect-cascade' => 'Protección en cascada - guardar todas las hojas incluidas en ésta.',
'protect-cantedit' => 'No puedes trocar el nivel de protección porque no tienes permissión para hazer ediciones.',
+'protect-otherreason' => 'Otra razon/razon adisiyonal',
+'protect-otherreason-op' => 'Otra razon',
+'protect-expiry-options' => '1 ora:1 hour,1 diya:1 day,1 semana:1 week,2 semanas:2 weeks,1 mez:1 month,3 mezes:3 months,6 mezes:6 months,1 anyo:1 year,para siempre:infinite',
'restriction-type' => 'Permiso:',
'restriction-level' => 'Nivel de restricción:',
+# Restrictions (nouns)
+'restriction-create' => 'Krear',
+
# Undelete
-'undeletelink' => 've/trae atrás',
-'undeleteviewlink' => 've',
+'undeletelink' => 'ver/traer atrás',
+'undeleteviewlink' => 'ver',
+'undeletecomment' => 'Razon:',
+'undelete-search-submit' => 'Bushkar',
+'undelete-show-file-submit' => 'Si',
# Namespace form on various pages
'namespace' => 'Espacio de nombres:',
'invert' => 'Invertir selección',
-'blanknamespace' => '(Principal)',
+'blanknamespace' => '(Prencipal)',
# Contributions
-'contributions' => 'Ajustamientos {{GENDER:$1|del usador|de la usadora}}',
+'contributions' => 'Ajustamientos {{GENDER:$1|del kullaneador|de la kullaneadera}}',
'contributions-title' => 'Ajustamientos {{GENDER:$1|del usuario|de la usuaria}} $1',
-'mycontris' => 'Mis dados',
-'contribsub2' => '$1 ($2)',
-'uctop' => '(última modificación)',
+'mycontris' => 'Mis donos',
+'contribsub2' => 'Para {{GENDER:$3|$1}}($2)',
+'uctop' => '(korriente)',
'month' => 'Desde el mes (i antes):',
-'year' => 'Desde el año (i antes):',
+'year' => 'Desde el anyo (i antes):',
'sp-contributions-newbies' => 'Mostrar solo las ajustamientos de los usuarios nuevos',
'sp-contributions-blocklog' => 'registro de bloqueos',
'sp-contributions-uploads' => 'suvidas',
'sp-contributions-logs' => 'enrejistros',
'sp-contributions-talk' => 'Diskusyón',
-'sp-contributions-search' => 'Buscar ajustamientos',
-'sp-contributions-username' => 'Dirección IP o nombre de usuario:',
+'sp-contributions-search' => 'Buxcar ajustamientos',
+'sp-contributions-username' => 'Adreso de IP o nombre de usuario:',
'sp-contributions-toponly' => "Amostrar solo revisiones d'alkavo",
-'sp-contributions-submit' => 'Buscar',
+'sp-contributions-submit' => 'Buxcar',
# What links here
-'whatlinkshere' => 'Atamientos a esta hoja',
+'whatlinkshere' => 'Hojas atadas',
'whatlinkshere-title' => 'Hojas que dan link a "$1"',
'whatlinkshere-page' => 'Hoja:',
'linkshere' => "Las hojas venideras dan link a '''[[:$1]]''':",
'nolinkshere' => "Dinguna ója tiene atamientos kon '''[[:$1]]'''",
'isredirect' => 'Hoja redirigida',
'istemplate' => 'inclusión',
-'isimage' => 'Atamiento de la dossia',
+'isimage' => 'atamiento de la dosya',
'whatlinkshere-prev' => '{{PLURAL:$1|de antes|de antes $1}}',
'whatlinkshere-next' => '{{PLURAL:$1|venidera|venideras $1}}',
-'whatlinkshere-links' => '← linkes',
+'whatlinkshere-links' => '← atamientos',
'whatlinkshere-hideredirs' => '$1 redirecciones',
'whatlinkshere-hidetrans' => '$1 inclusiones',
-'whatlinkshere-hidelinks' => '$1 linkes',
-'whatlinkshere-hideimages' => '$1 atamientos a imejes',
+'whatlinkshere-hidelinks' => '$1 atamientos',
+'whatlinkshere-hideimages' => '$1 atamientos a dosyas',
'whatlinkshere-filters' => 'Filtres',
# Block/unblock
'blockip' => 'Bloquear usuario',
+'ipadressorusername' => 'Adreso de IP o nombre de usuario:',
+'ipbreason' => 'Razon:',
'ipboptions' => '2 oras:2 hours,1 día:1 day,3 días:3 days,1 semana:1 week,2 semanas:2 weeks,1 mes:1 month,3 meses:3 months,6 meses:6 months,1 año:1 year,para siempre:infinite',
-'ipblocklist' => 'Usadores bloqueados',
-'blocklink' => 'bloka',
-'unblocklink' => 'quita el bloko',
-'change-blocklink' => 'troca el bloko',
-'contribslink' => 'donos',
-'blocklogpage' => 'Bloqueos de usuarios',
-'blocklogentry' => 'bloqueó a [[$1]] $3 durante un tiempo de $2',
+'badipaddress' => 'Adreso de IP invalido',
+'ipblocklist' => 'Usuarios blokeados',
+'blocklist-reason' => 'Razon',
+'ipblocklist-submit' => 'Bushkar',
+'infiniteblock' => 'para siempre',
+'blocklink' => 'blokar',
+'unblocklink' => 'quitar el bloko',
+'change-blocklink' => 'trocar el bloko',
+'contribslink' => 'kontribüsyones',
+'emaillink' => 'embiar korreo elektroniko',
+'blocklogpage' => 'Blokos de kullaneadores',
+'blocklogentry' => 'blokó a [[$1]] $3 durante un tiempo de $2',
'unblocklogentry' => 'desbloqueó a "$1"',
-'block-log-flags-nocreate' => 'desactivada la creación de cuentos',
+'block-log-flags-nocreate' => 'desactivada la kreasyon de kuentos',
+'block-log-flags-hiddenname' => 'nombre de usuario eskondido',
+
+# Developer tools
+'lockedbyandtime' => '(por {{GENDER:$1|$1}} el $2 a la $3)',
# Move page
-'movepagetext' => "Usando el formulario venidero se va renombrar una hoja, quitando todo su istoria a su nuevo nombre.
-El título de antes se va convertir en una redirección al nuevo título.
-Los linkes al antiguo título de la hoja no se van trocar.
-Asegúrate de no dexar [[Special:DoubleRedirects|redirecciones dobles]] o [[Special:BrokenRedirects|rotas]].
-Tú sos responsable de aranjjar los linkes de manera menesterosa.
-
-Acórdate que la hoja '''no''' va ser renombrada si ya egziste una hoja con esta nuevo título, a no ser que sea una hoja vazía o una redirección sin istoria.
-Esto siñifica que vas pueder renombrar una hoja a su título original si hazes un yerro, ma que no vas pueder sobrescribir una hoja que ya existe.
-
-'''¡Atansión!'''
-Este puede ser un trocamiento muy muy emportante e inesperado para una hoja popular;
-si puede ser, asegúrate de entender las resultados del lo que hazes antes de yir endelantre.",
+'movepagetext' => "Uzando el sigiente formulario va renombrar una pajina, kitando todo su istoria a su nuevo nombre.
+El titulo orijinal se va convertir en una redireksyon al muevo titulo.
+Puede aktualizar otomatikamente las redireksyones al titulo orijinal.
+Si eskoje no azerlo, asegurate de verifikar ke no ay [[Special:DoubleRedirects|redireksyones dobles]] o [[Special:BrokenRedirects|rotas]].
+Tú sos responsable de asegurar ke los enlases funksyonan korrectamente.
+
+Nota ke la pajina '''no''' va ser renombrada si ya egziste una hoja con esta muevo título, a no ser que sea una redireksyon sin istoria.
+Esto sinyifica que vas pueder renombrar una pajina a su titulo orijinal si hazes un yerro, ma que no vas pueder sobreskrivir una pajina que ya existe.
+
+'''Aviso!'''
+Este puede ser un trocamiento muy muy emportante e inesperado para una pajina popular;
+asegurate de entender las resultados del lo que azes antes de ir endelantre.",
'movepagetalktext' => "La hoja de diskussión associada, si egziste, va ser renombrada otomáticamente '''a menos que:'''
*Esté renombrando la hoja entre espacios de nombres diferentes,
*Una hoja de diskussión no vazía ya egziste con el nombre nuevo, o
Si puede ser, escoge otro nombre.',
'movetalk' => 'Renombrar la hoja de diskussión también, si es possible.',
'movelogpage' => 'Registro de traslados',
-'movereason' => 'Razón:',
-'revertmove' => 'abolta',
+'movereason' => 'Razon:',
+'revertmove' => 'aboltar',
# Export
'export' => 'Eksportar las hojas',
+'export-addcat' => 'Anyadir',
+'export-addns' => 'Anyadir',
+'export-download' => 'Guardar komo archivo',
# Namespace 8 related
'allmessages' => 'Mesajes del sistema',
'allmessagesname' => 'Nombre',
'allmessagesdefault' => 'Teksto por defekto',
'allmessagescurrent' => 'Teksto aktual',
+'allmessages-filter-all' => 'Todos',
+'allmessages-language' => 'Lengua:',
+'allmessages-filter-submit' => 'Ir',
# Thumbnails
-'thumbnail-more' => 'Engrandece',
-'thumbnail_error' => 'Yerro kriando la imej chika: $1',
+'thumbnail-more' => 'Engrandecer',
+'thumbnail_error' => 'Yerro kriando la minyatura: $1',
+
+# Special:Import
+'import-interwiki-submit' => 'Importar',
+'import-upload-filename' => 'Nombre de archivo:',
+'importnopages' => 'No ay pajinas para importar.',
# Tooltip help for the actions
'tooltip-pt-userpage' => 'Tu hoja de usador',
'tooltip-pt-mytalk' => 'Tu hoja de diskusyón',
'tooltip-pt-preferences' => 'Mis preferencias',
-'tooltip-pt-watchlist' => 'La lista de los trocamientos acontècidos en las hojas akavidadas.',
-'tooltip-pt-mycontris' => 'La lista de tus àjustamientos',
+'tooltip-pt-watchlist' => 'Una lista de trocamientos en las hojas que escojites parâ cudiar u süivar (seguir)',
+'tooltip-pt-mycontris' => 'La lista de tus kontribüsyones',
'tooltip-pt-login' => 'Te encorajamos de entrar ma no estás obligado',
-'tooltip-pt-logout' => 'Salir',
+'tooltip-pt-logout' => 'Sal de tu cuento',
'tooltip-ca-talk' => 'Diskusyón encima del artíkolo',
-'tooltip-ca-edit' => 'Puedes trocar esta hoja. Te rogamos, antes de enrejistrarla, echa una ojada en kullaneando el botón de previsteo',
-'tooltip-ca-addsection' => 'Empeça una nueva sección',
-'tooltip-ca-viewsource' => 'Esta hoja está guardada.
+'tooltip-ca-edit' => 'Puedes trocar esta hoja. Ma te rogamos para que eches una ojada (previsteo) antes de enrejistrarla.',
+'tooltip-ca-addsection' => 'Empeça a un muevo kapítolo',
+'tooltip-ca-viewsource' => 'Esta hoja está guadrada.
Puedes ver su manadero',
-'tooltip-ca-history' => 'Enderechamientos passados de esta hoja',
+'tooltip-ca-history' => 'Enderechamientos passados desta hoja',
'tooltip-ca-protect' => 'Guardar esta hoja',
'tooltip-ca-delete' => 'Efassar esta hoja',
'tooltip-ca-move' => 'Taxirea (renombra) esta hoja',
'tooltip-ca-watch' => 'Ajustar esta hoja a tu lista de akavidamientos',
-'tooltip-ca-unwatch' => 'Quita esta hoja de tu lista de escogidos',
-'tooltip-search' => 'Busca en {{SITENAME}}',
-'tooltip-search-go' => 'Si ay una hoja con este nombre egzakto, vate allá.',
-'tooltip-search-fulltext' => 'Busca este teksto en las hojas',
-'tooltip-p-logo' => 'Vate a la primera hoja',
-'tooltip-n-mainpage' => 'Vate a la primera hoja',
-'tooltip-n-mainpage-description' => 'Vate a la primera hoja',
-'tooltip-n-portal' => 'Encima del projeto, lo que puedes hazer y ánde topar todo',
-'tooltip-n-currentevents' => 'Jhaberes y acontècimientos de oy día',
-'tooltip-n-recentchanges' => 'Lista de los trocamientos muevos en el viki',
-'tooltip-n-randompage' => 'Carga una hoja por asardo',
-'tooltip-n-help' => 'Para saver mas',
-'tooltip-t-whatlinkshere' => 'La lista de todas las hojas del viki que se atan con esta hoja',
-'tooltip-t-recentchangeslinked' => 'Los trocamientos muevos en las hojas atadas con esta hoja',
+'tooltip-ca-unwatch' => 'Quita esta hoja de tu lista de escojidos',
+'tooltip-search' => 'Buxca en {{SITENAME}}',
+'tooltip-search-go' => 'Ir a la hoja con este nombre egzakto, si egziste.',
+'tooltip-search-fulltext' => 'Buxca este teksto en las hojas',
+'tooltip-p-logo' => 'Vijita la primera hoja',
+'tooltip-n-mainpage' => 'Vijita la primera hoja',
+'tooltip-n-mainpage-description' => 'Vijita la primera hoja',
+'tooltip-n-portal' => 'Encima del projeto, lo que puedes hazer y ande topar todo',
+'tooltip-n-currentevents' => 'Jhaberes de oy día en ancho',
+'tooltip-n-recentchanges' => 'Lista de los trocamientos dalcavo en el viki',
+'tooltip-n-randompage' => 'Carga una hoja por azardo',
+'tooltip-n-help' => 'Ambézate y topa ayudo',
+'tooltip-t-whatlinkshere' => 'Una lista de todas las hojas del viki que tienen atamientos a esta hoja',
+'tooltip-t-recentchangeslinked' => 'Los trocamientos dalcavo de las hojas atadas a la ésta',
'tooltip-feed-rss' => 'Sindicación RSS de esta hoja',
'tooltip-feed-atom' => "Fuente de Atom d'esta hoja",
'tooltip-t-contributions' => 'Ver la lista de ajustamientos de este usuario',
'tooltip-t-emailuser' => 'A este usuario, mándale una letra electrόnica (ímey)',
-'tooltip-t-upload' => 'Suve las dosyas por aquí',
+'tooltip-t-upload' => 'Suve dosyas',
'tooltip-t-specialpages' => 'Lista de todas las hojas especiales',
-'tooltip-t-print' => 'Forma apropiada para imprimir esta hoja',
-'tooltip-t-permalink' => 'Atamiento permanente a este enderechamiento de la hoja',
-'tooltip-ca-nstab-main' => 'Ve el artíkolo de contènido',
-'tooltip-ca-nstab-user' => 'Ve la hoja de usuario',
+'tooltip-t-print' => 'La forma apropiada parâ imprimir esta hoja',
+'tooltip-t-permalink' => 'Atamiento permanente (fikso) a este enderechamiento de la hoja',
+'tooltip-ca-nstab-main' => 'Ve el artíkolo',
+'tooltip-ca-nstab-user' => 'Ver la pajina de usuario',
'tooltip-ca-nstab-special' => 'Esta es una hoja especial, la hoja ya no se puede trocar',
'tooltip-ca-nstab-project' => 'Ver la hoja del prodjekto',
'tooltip-ca-nstab-image' => 'Ver la hoja de la dosya',
-'tooltip-ca-nstab-template' => 'Ver el xabblón',
+'tooltip-ca-nstab-template' => 'Ve el şablón',
'tooltip-ca-nstab-category' => 'Ve la hoja de categoría',
'tooltip-minoredit' => 'Márcalo como un trocamiento chiquitico',
-'tooltip-save' => 'Guardar los trocamientos',
+'tooltip-save' => 'Guadrar los trocamientos',
'tooltip-preview' => 'Que previzualize sus trocamientos, ¡si puede ser, que use esto antes de enregistrar!',
'tooltip-diff' => 'Mostra los trocamientos que él/ella hizo en el texhto.',
'tooltip-compareselectedversions' => 'Ve las diferencias entre las dos versiones escogidas de esta hoja.',
-'tooltip-watch' => 'Ajusta esta hoja a tu lista de escogidas',
-'tooltip-rollback' => '«Abolta» abolta todas los trocamientos del usador de alcavo, sólo en klikando una vez.',
-'tooltip-undo' => '«Deshaze» abolta este trocamiento y la avre en el modo de previsteo. Permete ajustar una razón en el somario.',
+'tooltip-watch' => 'Ajusta esta hoja a tu lista de escojidas',
+'tooltip-rollback' => '«Hazer aboltar» haze aboltar todos los trocamientos del usador dalcavo, sólo en klikando una vez.',
+'tooltip-undo' => '«Des-hazer» abolta este trocamiento y lo avre en el modo de previsteo. Permete ajustar una razón en el somario.',
'tooltip-summary' => 'Entrar un somaryo kurto',
# Attribution
'anonymous' => '{{PLURAL:$1|Uzuario anonimo|Uzuarios anonimos}} de {{SITENAME}}',
+# Info page
+'pageinfo-contentpage-yes' => 'Si',
+'pageinfo-protect-cascading-yes' => 'Si',
+
# Browsing diffs
'previousdiff' => '← Trocamiento más antiguo',
'nextdiff' => 'Edición más nueva →',
# Media information
-'file-info-size' => '$1 × $2 píkseles; boy del arxivo: $3; tipo MIME: $4',
+'file-info-size' => '$1 × $2 píkseles; boy de la dosya: $3; tipo MIME: $4',
'file-nohires' => 'No disponible a mayor resolución.',
'svg-long-desc' => 'arxivo SVG, nominalmente $1 × $2 píkseles, boy del arxivo: $3',
-'show-big-image' => 'Resolución original',
+'show-big-image' => 'Dosya orijinal',
+
+# Special:NewFiles
+'showhidebots' => '($1 bots)',
+'ilsubmit' => 'Bushkar',
+'bydate' => 'por data',
+
+# Video information, used by Language::formatTimePeriod() to format lengths in the above messages
+'seconds' => '{{PLURAL:$1|$1 segundo|$1 segundos}}',
+'minutes' => '{{PLURAL:$1|$1 minuto|$1 minutos}}',
+'hours' => '{{PLURAL:$1|$1 ora|$1 oras}}',
+'days' => '{{PLURAL:$1|$1 diya|$1 diyas}}',
+'weeks' => '{{PLURAL:$1|$1 semana|$1 semanas}}',
+'months' => '{{PLURAL:$1|$1 mez|$1 mezes}}',
+'years' => '{{PLURAL:$1|$1 anyo|$1 anyos}}',
+'ago' => 'aze $1',
+'just-now' => 'endagora',
+
+# Human-readable timestamps
+'hours-ago' => 'aze $1{{PLURAL:$1|ora|oras}}',
+'minutes-ago' => 'aze {{PLURAL:$1|minuto|minutos}}',
+'seconds-ago' => 'aze {{PLURAL:$1|segundo|segundos}}',
+'monday-at' => 'El lunes a la $1',
+'tuesday-at' => 'El martes a la $1',
+'wednesday-at' => 'El mierkoles a la $1',
+'thursday-at' => 'El djuves a la $1',
+'friday-at' => 'El viernes a la $1',
+'saturday-at' => 'El shabat a la $1',
+'sunday-at' => 'El alhad a la $1',
+'yesterday-at' => 'Ayer a la $1',
# Bad image list
'bad_image_list' => 'El formato es ansina:
Sólo elementos de lista (liñas empeçando con *) se toman en konsidherasyón.
-El primer atamiento de cada liña deve de atarse con una dosya negra (la dosya que se quere blokar).
-Los atamientos venideros que están en la misma liña se konsidheran como eksepsiones (yaani hojas ande la dosya puede aparecer encaxada en la liña)',
+El primer atamiento de cada liña se deve de atar a una dosya negra (la dosya que se quere blokar).
+Los atamientos venideros que están en la misma liña se konsidheran como eksepsiones (hojas, ande la dosya puede aparecer en la liña, ande se puede kulanear la dosya).',
# Metadata
'metadata' => 'Metadatos',
-'metadata-help' => 'Este arxivo contiene enformación adicional (metadatos), probablemente ajustada por la cámara digital, el escáner o el programa usado para crearlo o digitalizarlo. Si el arxivo fue modificado desde su estado original, puede aver perdido algunos detalyos.',
+'metadata-help' => 'Esta dosya contiene mas información (metadatos), probablemente ajustada por la kamera dizhital, el eskáner o la proǵrama kullaneado para criarlo o dizhitalizarlo. Si la dosya fue trocada de su estado orizhinal, puede aver pèryido algunos detalyos.',
'metadata-expand' => 'Mostra los detalyos ekstendidos',
'metadata-collapse' => 'Esconder los detalyos ekstendidos',
'metadata-fields' => 'Los campos de metadatos que se listan en este messaje se van a amostrar en la hoja de la deskripsión de la foto daínda cuando la tabla de metadatos está cerrada.
* gpsaltitude',
# Exif tags
+'exif-artist' => 'Otor',
'exif-filesource' => 'Manadéro de archivo',
'exif-gpstimestamp' => 'Tiémpo GPS (óra atómica)',
'exif-gpsdatestamp' => 'Dáta GPS',
+'exif-languagecode' => 'Lengua',
+
+'exif-copyrighted-true' => 'Kon derechos del otor',
+
+'exif-componentsconfiguration-0' => 'no egziste',
+
+'exif-exposureprogram-1' => 'Giya',
'exif-meteringmode-255' => 'Otro',
'exif-iimcategory-hth' => 'Salud',
'exif-iimcategory-lab' => 'Lavoro',
+'exif-iimcategory-sci' => 'Sensiya i teknolojiya',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'todos',
'monthsall' => '(todos)',
# Email address confirmation
-'confirmemail' => 'Konfirmar direksion e-pósta',
+'confirmemail' => 'Konfirmar adreso de korreo elektronika',
'confirmemail_send' => 'Embiar el kodigo de konfirmasion.',
'confirmemail_sent' => 'Konfirmasion de pósta embiada.',
-'confirmemail_success' => 'Su direksion de pósta a sido konfirmada. Agóra puedes registrarse e kolaborar en el wiki.',
+'confirmemail_success' => 'Su adreso de korreo elektronika a sido konfirmada. Agóra puedes [[Special:UserLogin|entrar]] e kolaborar en el wiki.',
# Delete conflict
'recreate' => 'Krear de muevo',
# action=purge
'confirm_purge_button' => 'Akseptár',
+# action=watch/unwatch
+'confirm-watch-button' => "D'akodro",
+'confirm-unwatch-button' => "D'akodro",
+
+# Separators for various lists, etc.
+'quotation-marks' => '"$1"',
+
# Multipage image navigation
'imgmultipageprev' => '← pajina anterior',
'imgmultipagenext' => 'siguiente pajina →',
'imgmultigo' => 'Ir!',
+# Language selector for translatable SVGs
+'img-lang-go' => 'Ir',
+
# Table pager
'table_pager_next' => 'Pajina siguiente',
'table_pager_prev' => 'Pajina anterior',
# Auto-summaries
'autoredircomment' => 'Redireksionado a [[$1]]',
-'autosumm-new' => 'Pajina mueva: $1',
+'autosumm-new' => 'Pajina kreado con "$1"',
# Live preview
'livepreview-loading' => 'Cargando...',
'version-specialpages' => 'Pajinas espesiales',
'version-other' => 'Otros',
'version-version' => '(Versión $1)',
+'version-ext-colheader-credits' => 'Otores',
'version-poweredby-others' => 'otros',
'version-software-version' => 'Versión',
+'version-entrypoints-header-url' => 'URL',
+
+# Special:Redirect
+'redirect-submit' => 'Ir',
+'redirect-value' => 'Valor:',
+'redirect-file' => 'Nombre de archivo',
# Special:FileDuplicateSearch
-'fileduplicatesearch-submit' => 'Buscar',
+'fileduplicatesearch-filename' => 'Nombre de archivo:',
+'fileduplicatesearch-submit' => 'Bushkar',
# Special:SpecialPages
'specialpages' => 'Hojas especiales',
# Special:Tags
'tag-filter' => 'Filtro de [[Special:Tags|etiquetas]]:',
'tag-filter-submit' => 'Filtro',
+'tags-active-yes' => 'Si',
+'tags-active-no' => 'No',
'tags-edit' => 'trocar',
+'tags-hitcount' => '$1 {{PLURAL:$1|kambio|kambios}}',
# Special:ComparePages
'compare-page1' => 'Hoja 1',
# HTML forms
'htmlform-selectorother-other' => 'Otro',
+'htmlform-no' => 'No',
+'htmlform-yes' => 'Si',
# New logging system
-'logentry-newusers-autocreate' => 'El cuento $1 fue crîado otomatika mente',
+'logentry-newusers-autocreate' => 'El cuento de usuario $1 fue {{GENDER:$2|kreado}} otomatikamente',
+'rightsnone' => '(dinguno)',
# Feedback
'feedback-subject' => 'Sujeto',
'feedback-message' => 'Messaje',
'feedback-cancel' => 'Anular',
+# Search suggestions
+'searchsuggest-search' => 'Bushkar',
+
+# Durations
+'duration-seconds' => '$1{{PLURAL:$1|segundo|segundos}}',
+'duration-minutes' => '$1{{PLURAL:$1|minuto|minutos}}',
+'duration-hours' => '$1{{PLURAL:$1|ora|oras}}',
+'duration-days' => '$1{{PLURAL:$1|diya|diyas}}',
+'duration-weeks' => '$1{{PLURAL:$1|semana|semanas}}',
+'duration-years' => '$1{{PLURAL:$1|anyo|anyos}}',
+'duration-decades' => '$1{{PLURAL:$1|syekolo|syekolos}}',
+'duration-centuries' => '$1{{PLURAL:$1|syekolo|syekolos}}',
+
+# Limit report
+'limitreport-cputime-value' => '$1{{PLURAL:$1|segundo|segundos}}',
+'limitreport-walltime-value' => '$1{{PLURAL:$1|segundo|segundos}}',
+
+# Special:ExpandTemplates
+'expand_templates_ok' => "D'akodro",
+
);
$messages = array(
# User preference toggles
'tog-underline' => 'Linken ënnersträichen:',
-'tog-justify' => "Ränner vum Text riichten (''justify'')",
'tog-hideminor' => 'Kleng Ännerungen an de rezenten Ännerunge verstoppen',
'tog-hidepatrolled' => 'Iwwerkuckten Ännerungen an de "Rezenten Ännerungen" verstoppen',
'tog-newpageshidepatrolled' => 'Iwwerkuckte Säiten op der Lëscht vun den "Neie Säite" verstoppen',
'tog-numberheadings' => 'Iwwerschrëften automatesch numeréieren',
'tog-showtoolbar' => 'Ännerungstoolbar weisen',
'tog-editondblclick' => 'Säite mat Duebelklick änneren',
-'tog-editsection' => "Linke fir d'Ännere vun eenzelnen Abschnitter weisen",
'tog-editsectiononrightclick' => 'Eenzel Abschnitter mat Rietsklick änneren',
-'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-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',
'retypenew' => 'Neit Passwuert nach eemol antippen:',
'resetpass_submit' => 'Passwuert aginn an aloggen',
'changepassword-success' => 'Äert Passwuert gouf geännert!',
+'changepassword-throttled' => 'Dir hutt rezent zevill dacks versicht Iech anzeloggen.
+Waart w.e.g. $1 ier Dir et nach eng Kéier probéiert.',
'resetpass_forbidden' => 'Passwierder kënnen net geännert ginn.',
'resetpass-no-info' => 'Dir musst ageloggt sinn, fir direkt op dës Säit ze kommen.',
'resetpass-submit-loggedin' => 'Passwuert änneren',
'changeemail-password' => 'Äert {{SITENAME}}-Passwuert:',
'changeemail-submit' => 'Mailadress änneren',
'changeemail-cancel' => 'Ofbriechen',
+'changeemail-throttled' => 'Dir hutt zevill dacks versicht Iech anzeloggen.
+Waart w.e.g. $1 ier Dir et nach eng Kéier probéiert.',
# Special:ResetTokens
'resettokens' => 'Token zrécksetzen',
'invalid-content-data' => 'Donnéeë vum Inhalt sinn net valabel',
'content-not-allowed-here' => '"$1"-Inhalt ass op der Säit [[$2]] net erlaabt',
'editwarning-warning' => 'Wann Dir dës Säit verloosst kann dat dozou féieren datt Dir all Ännerungen, déi Dir gemaach hutt, verléiert.
-Wann Dir ageloggt sidd, kënnt Dir dës Warnung an der Sektioun "Änneren" vun Ären Astellungen ausschalten.',
+Wann Dir ageloggt sidd, kënnt Dir dës Warnung an der Sektioun "{{int:prefs-editing}}" vun Ären Astellungen ausschalten.',
+'editpage-notsupportedcontentformat-title' => 'Format vum Inhalt gëtt net ënnerstëtzt',
+'editpage-notsupportedcontentformat-text' => 'De Format vum Inhalt $1 gëtt net vum Modell vum Inhalt $2 ënnerstëtzt.',
# Content models
'content-model-wikitext' => 'Wikitext',
'cantcreateaccount-text' => 'D\'Opmaache vu Benotzerkonten vun dëser IP Adress (\'\'\'$1\'\'\') gouf vum [[User:$3|$3]] gespaart.
De Benotzer $3 huet "$2" als Grond uginn.',
+'cantcreateaccount-range-text' => "D'Uleeë vu Benotzerkonte vun IP-Adressen aus dem Beräich \"\$1\", zu deem Är IP-Adress ('''\$4''') gehéiert, gouf vum [[User:\$3|\$3]] gespaart.
+
+De Grond den den \$3 uginn huet ass ''\$2''",
# History pages
'viewpagelogs' => 'Logbicher fir dës Säit weisen',
'showhideselectedversions' => 'Erausgesicht Versioune weisen/verstoppen',
'editundo' => 'zréck',
'diff-empty' => '(Keen Ënnerscheed)',
-'diff-multi' => '({{PLURAL:$1|Eng Tëscheversioun|$1 Tëscheversioune}} vun {{PLURAL:$2|engem|$2}} Benotzer {{PLURAL:$1|gëtt|ginn}} net gewisen)',
+'diff-multi-sameuser' => '({{PLURAL:$1|Eng Tëscheversioun|$1 Tëscheversioune}} vun deemselwechte Benotzer net gewisen)',
+'diff-multi-otherusers' => '({{PLURAL:$1|Eng Tëscheversioun|$1 Tëscheversioune}} vun {{PLURAL:$2|engem anere|$2}} Benotzer {{PLURAL:$1|gëtt|ginn}} net gewisen)',
'diff-multi-manyusers' => '({{PLURAL:$1|Eng Tëscheversioun|$1 Tëscheversioune}} vu méi wéi $2 {{PLURAL:$2|Benotzer|Benotzer}} ginn net gewisen)',
'difference-missing-revision' => '{{PLURAL:$2|Eng Versioun|$2 Versioune}} vun dëser Differenz ($1) {{PLURAL:$2|gouf|goufen}} net fonnt.
'shown-title' => '$1 {{PLURAL:$1|Resultat|Resultater}} pro Säit weisen',
'viewprevnext' => 'Weis ($1 {{int:pipe-separator}} $2) ($3)',
'searchmenu-exists' => "* Säit '''[[$1]]'''",
-'searchmenu-new' => "'''Opmaache vun der Säit ''[[:$1|$1]]'' op dëser Wiki!'''",
+'searchmenu-new' => "<strong>Opmaache vun der Säit ''[[:$1]]'' op dëser Wiki!</strong> {{PLURAL:$2|0=|Kuckt och d'Säit déi Dir beim siche fonnt hutt.|Kuckt och d'Resultater déi Dir beim siche fonnt hutt.}}",
'searchprofile-articles' => 'Säite mat Inhalt',
'searchprofile-project' => 'Hëllef a Projetssäiten',
'searchprofile-images' => 'Multimedia',
'rows' => 'Zeilen',
'columns' => 'Kolonnen',
'searchresultshead' => 'Sichen',
-'resultsperpage' => 'Zuel vun de Resultater pro Säit:',
'stub-threshold' => 'Maximum (a Byte) bei deem e Link nach ëmmer am <a href="#" class="stub">Skizze-Format</a> gewise gëtt:',
'stub-threshold-disabled' => 'Desaktivéiert',
'recentchangesdays' => 'Deeg déi an de Rezenten Ännerungen ugewise ginn:',
'protectedpages' => 'Gespaart Säiten',
'protectedpages-indef' => 'Nëmme onbegrenzt-gespaarte Säite weisen',
'protectedpages-cascade' => 'Nëmme Säiten déi duerch Kaskade gespaart sinn',
+'protectedpages-noredirect' => 'Viruleedunge verstoppen',
'protectedpagesempty' => 'Elo si keng Säite mat dëse Parameteren gespaart.',
'protectedtitles' => 'Gespaarten Titel',
'protectedtitlesempty' => 'Zur Zäit si mat de Parameteren déi Dir uginn hutt keng Säite fir neit Uleeë gespaart.',
'watchmethod-list' => 'Iwwerwaachte Säite ginn op rezent Ännerungen iwwerpréift',
'watchlistcontains' => 'Op ärer Iwwerwaachungslëscht $1 {{PLURAL:$1|steet $1 Säit|stinn $1 Säiten}}.',
'iteminvalidname' => "Problem mam Element '$1', ongëltegen Numm ...",
-'wlnote' => "Hei {{PLURAL:$1|ass déi lescht Ännerung|sinn déi lescht '''$1''' Ännerunge}} vun {{PLURAL:$2|der leschter Stonn|de leschte(n) '''$2''' Stonnen}}, Stand: $3 ëm $4 Auer.",
+'wlnote2' => 'Hei sinn déi lescht Ännerunge aus {{PLURAL:$1|der leschter Stonn|de leschte(n) <strong>$1</strong> Stonnen}}, Stand: $2 ëm $3 Auer.“',
'wlshowlast' => "D'Ännerunge vun de leschte(n) $1 Stonnen, $2 Deeg oder $3 (an de leschten 30 Deeg) weisen.",
'watchlist-options' => 'Optioune vun der Iwwerwaachungslëscht',
'delete-warning-toobig' => "Dës Säit huet eng laang Versiounsgeschicht, méi wéi $1 {{PLURAL:$1|Versioun|Versiounen}}.
D'Läschen dovu kann zu Stéierungen am Fonctionnement vun {{SITENAME}} féieren;
dës Aktioun soll mat Virsiicht gemaach ginn.",
+'deleting-backlinks-warning' => "'''Opgepasst:''' Aner Säite linken op déi Säit déi Dir am Gaang sidd ze läschen oder déi säit Déi Dir am Gaang sidd ze läschen ass an aner Säiten agebonn.",
# Rollback
'rollback' => 'Ännerungen zrécksetzen',
Kuckt d'[[Special:BlockList|Spär-Lëscht]] fir all Spären nozekucken.",
'ipb-blockingself' => 'Dir sidd am gaang Iech selwer ze spären! Sidd Dir sécher datt Dir dat maache wëllt?',
'ipb-confirmhideuser' => 'Dir sidd am Gaang e Benotzer ze späre mat der Funktioun "Benotzer verstoppen" ageschalt. Dëst hëlt den Numm vum Benotzer aus alle Lëschten a Logbicher eraus. Sidd Dir sécher datt Dir dat maache wëllt?',
+'ipb-confirmaction' => 'Wann Dir sécher sidd datt Dir dat wierklech maache wëllt da markéiert w.e.g. d\'"{{int:ipb-confirm}}" hei drënner.',
'ipb-edit-dropdown' => 'Spärgrënn änneren',
'ipb-unblock-addr' => 'Spär vum $1 ophiewen',
'ipb-unblock' => 'Spär vun enger IP-Adress oder engem Benotzer ophiewen',
'range_block_disabled' => 'Dem Administrateur seng Fähegkeet fir ganz Adressberäicher ze spären ass ausser Kraaft.',
'ipb_expiry_invalid' => "D'Dauer déi Dir uginn hutt ass ongülteg.",
'ipb_expiry_temp' => 'Verstoppt Späre vu Benotzernimm solle permanent sinn.',
-'ipb_hide_invalid' => 'Dëse Benotzerkont kann net geläscht ginn; et ka sinn datt zevill Ännerunge vun deem Benotzer gemaach goufen.',
+'ipb_hide_invalid' => 'Dëse Benotzerkont kann net geläscht ginn; de Benotzer huet méi wéi {{PLURAL:$1|eng Ännerung|$1 Ännerunge}} gemaach.',
'ipb_already_blocked' => '"$1" ass scho gespaart.',
'ipb-needreblock' => "$1 ass scho gespaart. Wëllt Dir d'Parametere vun der Spär änneren?",
'ipb-otherblocks-header' => 'Aner {{PLURAL:$1|Spär|Spären}}',
'allmessages-prefix' => 'Nom Prefix filteren:',
'allmessages-language' => 'Sprooch:',
'allmessages-filter-submit' => 'Lass',
+'allmessages-filter-translate' => 'Iwwersetzen',
# Thumbnails
'thumbnail-more' => 'vergréisseren',
'importuploaderrortemp' => "D'Eropluede vum Fichier huet net funktionéiert. En temporäre Repertoire feelt.",
'import-parse-failure' => 'Feeler bei engem XML-Import',
'import-noarticle' => "Keng Säit fir z'importéieren!",
-'import-nonewrevisions' => "All d'Versioune goufe scho virdrunn importéiert.",
+'import-nonewrevisions' => 'Et goufe keng Versiounen importéiert (se waren al entweder scho virdrun importéiert ginn oder se goufen iwwersprong well Feeler dra waren).',
'xml-error-string' => '$1 an der Zeil $2, Spalt $3, (Byte $4): $5',
'import-upload' => 'XML-Daten importéieren',
'import-token-mismatch' => "D'Date vun ärer Sessioun si verluer gaang. Versicht et w.e.g. nach eemol.",
'tooltip-pt-watchlist' => 'Lëscht vu Säiten, bei deenen Dir op Ännerungen oppasst',
'tooltip-pt-mycontris' => 'Lëscht vun Äre Kontributiounen',
'tooltip-pt-login' => 'Sech umelle gëtt gäre gesinn, Dir musst et awer net maachen.',
-'tooltip-pt-anonlogin' => 'Et wier gutt, Dir géift Iech aloggen, och wann et keng Musse-Saach ass.',
'tooltip-pt-logout' => 'Ofmellen',
'tooltip-ca-talk' => 'Diskussioun iwwer de Säiteninhalt',
'tooltip-ca-edit' => 'Dës Säit ka geännert ginn. Maacht vun der Méiglechkeet Gebrauch fir ze "kucken ouni ofzespäicheren" a kuckt ob alles an der Rei ass ier der ofspäichert.',
'minutes' => '{{PLURAL:$1|enger Minutt|$1 Minutten}}',
'hours' => '{{PLURAL:$1|enger Stonn|$1 Stonnen}}',
'days' => '{{PLURAL:$1|engem Dag|$1 Deeg}}',
-'weeks' => '{{PLURAL: $1|eng Woch|$1 Wochen}}',
+'weeks' => '{{PLURAL:$1|eng Woch|$1 Wochen}}',
'months' => '{{PLURAL:$1|ee Mount|$1 Méint}}',
'years' => '{{PLURAL:$1|ee Joer|$1 Joer}}',
'ago' => 'viru(n) $1',
'exif-gpslongitude-w' => 'westlech Längt',
# Pseudotags used for GPSAltitudeRef
-'exif-gpsaltitude-above-sealevel' => '$1 {{plural:$1|Meter|Meter}} iwwer dem Niveau vum Mier',
-'exif-gpsaltitude-below-sealevel' => '$1 {{plural:$1|Meter|Meter}} ënner dem Niveau vum Mier',
+'exif-gpsaltitude-above-sealevel' => '$1 {{PLURAL:$1|Meter}} iwwer dem Niveau vum Mier',
+'exif-gpsaltitude-below-sealevel' => '$1 {{PLURAL:$1|Meter}} ënner dem Niveau vum Mier',
'exif-gpsstatus-a' => 'Miessung am Gaang',
'exif-gpsstatus-v' => 'Interoperabilitéit vu der Miessung',
'version-hook-name' => 'Numm vun der Klamer',
'version-hook-subscribedby' => 'Opruff vum',
'version-version' => '(Versioun $1)',
-'version-license' => 'Lizenz',
+'version-license' => 'MediaWiki-Lizenz',
+'version-ext-license' => 'Lizenz',
+'version-ext-colheader-name' => 'Erweiderung',
+'version-ext-colheader-version' => 'Versioun',
+'version-ext-colheader-license' => 'Lizenz',
+'version-ext-colheader-description' => 'Beschreiwung',
+'version-ext-colheader-credits' => 'Auteuren',
+'version-license-title' => 'Lizenz fir $1',
+'version-credits-title' => 'E spezielle Merci fir $1',
'version-poweredby-credits' => "Dës Wiki funktionéiert mat '''[https://www.mediawiki.org/ MediaWiki]''', Copyright © 2001-$1 $2.",
'version-poweredby-others' => 'anerer',
'version-poweredby-translators' => 'translatewiki.net Iwwersetzer',
'duration-minutes' => '$1 {{PLURAL:$1|Minutt|Minutten}}',
'duration-hours' => '$1 {{PLURAL:$1|Stonn|Stonnen}}',
'duration-days' => '$1 {{PLURAL:$1|Dag|Deeg}}',
-'duration-weeks' => '$1 {{PLURAL: $1|Woch|Wochen}}',
+'duration-weeks' => '$1 {{PLURAL:$1|Woch|Wochen}}',
'duration-years' => '$1 {{PLURAL:$1|Joer|Joer}}',
'duration-decades' => '$1 {{PLURAL:$1|Joerzéngt|Joerzéngten}}',
'duration-centuries' => '$1 {{PLURAL:$1|Joerhonnert|Joerhonnerten}}',
'expand_templates_generate_rawhtml' => 'HTML-Format weisen',
'expand_templates_preview' => 'Kucken ouni ofzespäicheren',
+# Unknown messages
+'createaccount-hook-aborted' => '$1',
);
$messages = array(
# User preference toggles
'tog-underline' => 'ЭлячӀунрин кӀаникай цӀар чӀугун',
-'tog-justify' => 'Ччинин гьяркьуьвилихъ текст дуьзрун',
'tog-hideminor' => 'Мукьвара хьайи дегишвилера авай гъвечӀи дуьзар хъувунар чуьнуьхун',
'tog-hidepatrolled' => 'Мукьвара хьайи дегишвилера авай къаравулвал авунвай дуьзар хъувунар чуьнуьхун',
'tog-newpageshidepatrolled' => 'ЦӀийи ччинрин сиягьда къаравулвал авунвай ччинар чуьнуьхун',
'tog-numberheadings' => 'Кьилин цӀарариз автоматдаказ номерар эцигун',
'tog-showtoolbar' => 'Дуьзар хъувунин алатрин кьвати къалура (JavaScript)',
'tog-editondblclick' => 'Ччинар кьве тӀампӀуналди дуьзар хъувун (JavaScript герекзава)',
-'tog-editsection' => 'Пай [дуьзар хъувун] патал элячӀун къалура',
'tog-editsectiononrightclick' => 'Пайдин кьилинцӀардиз эрчӀи патан тӀампӀ авуна пайдин дуьзар хъувуниз мумкинвал гун (JavaScript герекзава)',
-'tog-showtoc' => 'Къенеавайбурун сиягь къалурун (3-й гзаф кьилинцӀарар авай ччинар патал)',
-'tog-rememberpassword' => 'И браузерда зи логин рикӀел хуьхь (лап гзаф $1 {{PLURAL:$1|югъ|йикъар}})',
+'tog-rememberpassword' => 'И браузерда зи логин рикӀел хуьхь (лап гзаф $1 {{PLURAL:$1|1=югъ|йикъар}})',
'tog-watchcreations' => 'За туькӀуьрнавай ччинар зи гуьзетунин сиягьдиз алава авун',
'tog-watchdefault' => 'За дуьзар хъувунвай ччинар зи гуьзетунин сиягьдиз алава авун',
'tog-watchmoves' => 'За тӀвар эхцигай ччинар зи гуьзетунин сиягьдиз алава авун',
'dec' => 'дек',
# Categories related messages
-'pagecategories' => '{{PLURAL:$1|Категория|Категорияр}}',
+'pagecategories' => '{{PLURAL:$1|1=Категория|Категорияр}}',
'category_header' => '«$1» категориядин ччинар',
'subcategories' => 'агъакатегорияр',
'category-media-header' => '"$1" категориядин медиа',
'category-empty' => "''Алай чӀава и категория ичӀи я.\"",
-'hidden-categories' => '{{PLURAL:$1|Чуьнуьхай категория|Чуьнуьхай категорияр}}',
+'hidden-categories' => '{{PLURAL:$1|1=Чуьнуьхай категория|Чуьнуьхай категорияр}}',
'hidden-category-category' => 'Чуьнуьхай категорияр',
-'category-subcat-count' => '{{PLURAL:$2|И категорияда анжах гуьгъуьна авай подкатегория ава.|$2-кай {{PLURAL:$1|агъакатегория|$1 агъакатегорияр}} къалурнава }}',
-'category-subcat-count-limited' => 'И категорияда {{PLURAL:$1|агъакатегория|$1 агъакатегорияр}} ава.',
-'category-article-count' => '{{PLURAL:$2|И категорияда анжах гуьгъуьна авайди ччин ава |$2-кай къалурнавай {{PLURAL:$1|ччин|$1 ччин}} гьа а категориядин ччин я}}',
-'category-article-count-limited' => 'И категорияда {{PLURAL:$1|ччин|$1 ччин}} ава.',
-'category-file-count' => '{{PLURAL:$2|И категорияда анжах гуьгъуьна авайди файл ава |$2-кай къалурнавай {{PLURAL:$1|файл|$1 файлар}} гьа а категориядин файл я}}',
-'category-file-count-limited' => 'И категорияда {{PLURAL:$1|файл|$1 файлар}} ава.',
+'category-subcat-count' => '{{PLURAL:$2|И категорияда анжах гуьгъуьна авай подкатегория ава.|$2-кай {{PLURAL:$1|1=агъакатегория|$1 агъакатегорияр}} къалурнава }}',
+'category-subcat-count-limited' => 'И категорияда {{PLURAL:$1|1=агъакатегория|$1 агъакатегорияр}} ава.',
+'category-article-count' => '{{PLURAL:$2|И категорияда анжах гуьгъуьна авайди ччин ава |$2-кай къалурнавай {{PLURAL:$1|1=ччин|$1 ччин}} гьа а категориядин ччин я}}',
+'category-article-count-limited' => 'И категорияда {{PLURAL:$1|1=ччин|$1 ччин}} ава.',
+'category-file-count' => '{{PLURAL:$2|И категорияда анжах гуьгъуьна авайди файл ава |$2-кай къалурнавай {{PLURAL:$1|1=файл|$1 файлар}} гьа а категориядин файл я}}',
+'category-file-count-limited' => 'И категорияда {{PLURAL:$1|1=файл|$1 файлар}} ава.',
'listingcontinuesabbrev' => '(кьатӀ)',
'index-category' => 'Индексавунвай ччинар',
'noindex-category' => 'Индекстежезвай ччин',
'create-this-page' => 'И ччин туькӀуьрун',
'delete' => 'Алудун',
'deletethispage' => 'И ччин алудун',
-'undelete_short' => '$1 {{PLURAL:$1|дуьзар хъувун|дуьзар хъувунар}} туьхкӀуьрун',
-'viewdeleted_short' => '{{PLURAL:$1|дуьзар хъувуниз|$1 дуьзар хъувунриз}} килигун',
+'undelete_short' => '$1 {{PLURAL:$1|1=дуьзар хъувун|дуьзар хъувунар}} туьхкӀуьрун',
+'viewdeleted_short' => '{{PLURAL:$1|1=дуьзар хъувуниз|$1 дуьзар хъувунриз}} килигун',
'protect' => 'Xуьн',
'protect_change' => 'масакӀа авун',
'protectthispage' => 'И ччин блокарун',
'yourname' => 'Уртахдин тӀвар',
'yourpassword' => 'Парол',
'yourpasswordagain' => 'Парол кхьин хъувун:',
-'remembermypassword' => 'И браузерда зи логин рикӀел хуьхь (лап гзаф $1 {{PLURAL:$1|югъ|йикъар}})',
+'remembermypassword' => 'И браузерда зи логин рикӀел хуьхь (лап гзаф $1 {{PLURAL:$1|1=югъ|йикъар}})',
'yourdomainname' => 'Куь домен',
'login' => 'Гьахьун',
'nav-login-createaccount' => 'Гьахьун/аккаунт туькӀуьрун',
'createaccounterror' => 'И аккаунт туькӀуьриз мумкин ттуш: $1',
'loginsuccesstitle' => 'Агалкьунралди гьахьун',
'wrongpasswordempty' => 'Тавакъу ийида, ичӀи тушир парол ттур.',
-'mailmypassword' => 'ЦÓ\80ийи паÑ\80ол Ñ\8d-мейлдиз кÑ\8aаÑ\87ун',
+'mailmypassword' => 'Ð\9fаÑ\80ол алÑ\83дна гадÑ\80ун',
'mailerror' => 'Чар ракъурунин гъалатӀ: $1',
'emailconfirmlink' => 'Куь электрон почтунин адрес тестикьун.',
'accountcreated' => 'Аккаунт туькӀуьрнава',
Квез куьне кхьенвайбур азаддаказ чкIун ва гьар са кас патахъай дуьзар хъувун кIанзавачтIа, а кхьенвайбур иниз эцигмир.<br />
ГЬакIни, куьне тестикьзава хьи, кутазвай алавайрин автор кьун я, я тахьайтIа, куьне а алаваяр чпин къенеавайбур азад чкIунни дегишун ихтияр гузвай чешмедикай ччин къачунва.<br />
'''АВТОРДИН ИХТИЯР ХУЬЗВАЙ МАЛУМАТАР ИХТИЯР ГАЛАЧИЗ ЭЦИГМИР!'''",
-'templatesused' => 'И ччина кардик кутунвай {{PLURAL:$1|Чешне|Чешнеяр}}:',
-'templatesusedpreview' => '{{PLURAL:$1|Шаблон|Шаблонар}},илемишзавай дуьз клигунра:',
+'templatesused' => 'И ччина кардик кутунвай {{PLURAL:$1|1=Чешне|Чешнеяр}}:',
+'templatesusedpreview' => '{{PLURAL:$1|1=Шаблон|Шаблонар}},илемишзавай дуьз клигунра:',
'template-protected' => '(хвенвай)',
'template-semiprotected' => '(са кьадар хвенва)',
-'hiddencategories' => 'И ччин {{PLURAL: $1 | чуьнуьхай категориядиз | $1 чуьнуьхай категорийриз}} талукь я:',
+'hiddencategories' => 'И ччин {{PLURAL:$1 | чуьнуьхай категориядиз | $1 чуьнуьхай категорийриз}} талукь я:',
'permissionserrors' => 'ГЬахьнин гъалатlар',
-'permissionserrorstext-withaction' => 'Квез и {{PLURAL:$1|себебдалди|себебралди}} $2 йиз ихтияр авайд туш:',
+'permissionserrorstext-withaction' => 'Квез и {{PLURAL:$1|1=себебдалди|себебралди}} $2 йиз ихтияр авайд туш:',
'recreate-moveddeleted-warn' => "'''Дикъет! Куьне виликда алуднавай ччин туьхкlуьриз алахъзава.'''
Квевай и ччинин туьхкlуьрунин гереквилиз килигиз тIалабзава.
Агъадихъ и ччинин алудун ва тIвар эхцигунин журнал къалурнава.",
'lineno' => 'ЦIар $1:',
'compareselectedversions' => 'Хкягъай жуьреяр гекъигун',
'editundo' => 'гьич авун',
-'diff-multi' => '({{PLURAL:$2|Са уртах|$2 уртахар}} патал авунвай {{PLURAL:$1|са арадин жуьре|$1 арадин жуьреяр}} къалурнавач)',
# Search results
'searchresults' => 'Къекъуьнрин нетижаяр',
'notextmatches' => 'Авач чарчин кьил матчар',
'prevn' => 'Вилик фейи {{PLURAL:$1|$1}}',
'nextn' => 'Гуьгъуьнин {{PLURAL:$1|$1}}',
-'prevn-title' => 'Вилик фейи $1 {{PLURAL:$1|нетижа|нетижаяр}}',
-'nextn-title' => 'КЪведай $1 {{PLURAL:$1|нетижа|нетижаяр}}',
-'shown-title' => 'Ччина $1 {{PLURAL:$1|нетижа|нетижа}} къалурун',
+'prevn-title' => 'Вилик фейи $1 {{PLURAL:$1|1=нетижа|нетижаяр}}',
+'nextn-title' => 'КЪведай $1 {{PLURAL:$1|1=нетижа|нетижаяр}}',
+'shown-title' => 'Ччина $1 {{PLURAL:$1|1=нетижа|нетижа}} къалурун',
'viewprevnext' => 'Килигун ($1 {{int:pipe-separator}} $2) ($3)',
'searchmenu-exists' => "'''И вики-проектда \"[[:\$1]]\" тlвар алай ччин ава.'''",
'searchmenu-new' => "'''И вики-проектда «[[:$1]]» ччин туькӀуьрун!'''",
'searchprofile-images-tooltip' => 'Файлар жугъура',
'searchprofile-everything-tooltip' => 'Вири ччинра къекъуьгъ (веревирдрин ччинар кваз)',
'searchprofile-advanced-tooltip' => 'Ганвай тlварарин генгвилера къекъуьгъ',
-'search-result-size' => '$1 ({{PLURAL:$2|1 гаф|$2 гаф}})',
-'search-result-category-size' => '{{PLURAL:$1|1 элемент|$1 элементар}} ({{PLURAL:$2|1 агъакатегория|$2 агъакатегорияр}}, {{PLURAL:$3|1 файл|$3 файлар}})',
+'search-result-size' => '$1 ({{PLURAL:$2|1=1 гаф|$2 гаф}})',
+'search-result-category-size' => '{{PLURAL:$1|1=1 элемент|$1 элементар}} ({{PLURAL:$2|1=1 агъакатегория|$2 агъакатегорияр}}, {{PLURAL:$3|1=1 файл|$3 файлар}})',
'search-redirect' => '(рахкъурун $1)',
'search-section' => '(пай $1)',
'search-suggest' => 'Мумкин я хьи, куьне им фикирда кьуна: $1',
'search-relatedarticle' => 'Галкlанавай',
'searchrelated' => 'Галкlанавай',
'searchall' => 'вири',
-'showingresultsheader' => "'''$4''' патал {{PLURAL:$5|'''$3''' - кай '''$1''' нетижа|'''$3''' - кай '''$1 - $2''' нетижаяр}}",
+'showingresultsheader' => "'''$4''' патал {{PLURAL:$5|1='''$3''' - кай '''$1''' нетижа|'''$3''' - кай '''$1 - $2''' нетижаяр}}",
'search-nonefound' => 'Тlалабдив кьадай са нетижани жагъанвач.',
'powersearch-legend' => 'Гегьенш жугъурун',
'powersearch-ns' => 'Жугъурун тlварарин генгвилера:',
'rows' => 'ЦIарар',
'columns' => 'Гулар:',
'searchresultshead' => 'Ахтармишун',
-'resultsperpage' => 'Са ччиниз талукь тир жагъанвай нетижаяр',
'stub-threshold-disabled' => 'Галуднава',
'timezonelegend' => 'Вахтунин минзил',
'localtime' => 'Чкадин вахт',
'action-undelete' => 'и ччин туькIуьр хъувун',
# Recent changes
-'nchanges' => '$1 {{PLURAL:$1|масакIавал|масакIавилер}}',
+'nchanges' => '$1 {{PLURAL:$1|1=масакIавал|масакIавилер}}',
'recentchanges' => 'Mукьвара хьайи масакӀавилер',
'recentchanges-legend' => 'Цlийи масакIавилерин низамарунар',
'recentchanges-summary' => 'Викида хьанвай эхиримжи масакIавилер и ччина гуьзетун',
'filehist-comment' => 'Къейд',
'filehist-missing' => 'Файл авачиз я',
'imagelinks' => 'Файл кардик кутун',
-'linkstoimage' => 'Къведай {{PLURAL: $1 | ччин | $1 ччинар}} гьа и файлдиз элячlзава',
+'linkstoimage' => 'Къведай {{PLURAL:$1 | ччин | $1 ччинар}} гьа и файлдиз элячlзава',
'nolinkstoimage' => 'И файлдиз элячlзавай ччинар авайд туш',
'sharedupload' => 'И шикил $1 масса хакъидайра ишлемишатlа жезава.',
'sharedupload-desc-here' => 'И файл $1-кай я ва ам маса проектра кардик кутаз жеда.
'withoutinterwiki-submit' => 'Къалурун',
# Miscellaneous special pages
-'nbytes' => '$1 {{PLURAL:$1|байт|байтар}}',
-'nmembers' => '$1 {{PLURAL:$1|уьзви|уьзвияр}}',
+'nbytes' => '$1 {{PLURAL:$1|1=байт|байтар}}',
+'nmembers' => '$1 {{PLURAL:$1|1=уьзви|уьзвияр}}',
'lonelypages' => 'Eтим xъувун',
'prefixindex' => 'Префикс галай вири ччинар',
'shortpages' => 'Куьруь хъувун',
'ancientpages' => 'виридалайни цIуру ччинар',
'move' => 'ТӀвар эхцигун',
'movethispage' => 'Юзун и хъувун',
-'pager-newer-n' => '{{PLURAL:$1|мадни цIийи 1|мадни цIийи $1}}',
-'pager-older-n' => '{{PLURAL:$1|мадни цIуру 1|мадни цIуру $1}}',
+'pager-newer-n' => '{{PLURAL:$1|1=мадни цIийи 1|мадни цIийи $1}}',
+'pager-older-n' => '{{PLURAL:$1|1=мадни цIуру 1|мадни цIуру $1}}',
'suppress' => 'Чуьнуьхун',
# Book sources
'categories' => 'Категорияр',
# Special:LinkSearch
-'linksearch' => 'КЪецепатан элячIунар жугъурун',
+'linksearch' => 'Къецепатан элячӀунар жугъурун',
'linksearch-ns' => 'Тlварарин генгвал:',
'linksearch-ok' => 'Ахтармишун',
'linksearch-line' => '$2-ай $1-аз элячlун',
'watch' => 'Вилив хуьн',
'watchthispage' => 'Гелкъуьн и хъувун',
'unwatch' => 'Вилив хуьмир',
-'watchlist-details' => 'Куь вилив хуьнин сиягьда {{PLURAL:$1|$1 ччин|$1 ччин}} авайди я, веревирдрин ччинар квачиз.',
+'watchlist-details' => 'Куь вилив хуьнин сиягьда {{PLURAL:$1|1=$1 ччин|$1 ччин}} авайди я, веревирдрин ччинар квачиз.',
'wlshowlast' => 'Эхиримжи $1 сят $2 югъ $3 къалура',
'watchlist-options' => 'Вилив хуьнин сиягьдин низамарунар',
'protect_expiry_old' => 'Вахтун кьадар алатай заманда.',
'protect-text' => "Квевай клигайтlа ва дегишарайтlа жеза хуьнин къайда чарчин '''$1'''.",
'protect-locked-access' => "Квез ахтияр авач дегишариз чарчин хуьн къайда. Ингье физвай туькlуьрунар чарчиз '''$1''':",
-'protect-cascadeon' => 'Хуьн авун чарар къараул ийизвай алай вахтунда, гьама ктуна{{PLURAL:$1|чар, гьама|чарар, гьабур}} галай галай хуьн куькlуьрна.Куьвай жеза дегишариз хуьнин кьадар чарчин, гьама кядач галай галай хуьнив.',
+'protect-cascadeon' => 'Хуьн авун чарар къараул ийизвай алай вахтунда, гьама ктуна{{PLURAL:$1|1=чар, гьама|чарар, гьабур}} галай галай хуьн куькlуьрна.Куьвай жеза дегишариз хуьнин кьадар чарчин, гьама кядач галай галай хуьнив.',
'protect-default' => ' Эхтияр гуз вири ишлемишчийриз',
'protect-fallback' => 'Тlалабун "$1" эхтияр',
'protect-level-autoconfirmed' => 'Къаб цlийи ва кхьитунавай ишлемишчияр',
'contributions-title' => '$1 уртахди кутур крар',
'mycontris' => 'Кутур кар',
'contribsub2' => '($1)-ин кутур пай ($2)',
-'uctop' => '(вини кьил)',
+'uctop' => 'алай',
'month' => ' Вацралай (ва адалай вилик)',
'year' => 'Иисалай (ва адалай вилик):',
'isredirect' => 'Рахкъурунин ччин',
'istemplate' => 'кутун',
'isimage' => 'Файлдин элячlун',
-'whatlinkshere-prev' => '{{PLURAL:$1|вилик фейи|вилик фейи $1}}',
-'whatlinkshere-next' => '{{PLURAL:$1|гуьгъуьнин|гуьгъуьнин $1}}',
+'whatlinkshere-prev' => '{{PLURAL:$1|1=вилик фейи|вилик фейи $1}}',
+'whatlinkshere-next' => '{{PLURAL:$1|1=гуьгъуьнин|гуьгъуьнин $1}}',
'whatlinkshere-links' => '← элячlунар',
'whatlinkshere-hideredirs' => '$1 рахкъурунар',
'whatlinkshere-hidetrans' => '$1 кутунар',
$messages = array(
# User preference toggles
'tog-underline' => 'Enyunzi ebengako olukoloboze?',
-'tog-justify' => "Ennyiriri z'enkanankanye",
'tog-hideminor' => 'Kisa nkyukakyuka entono ezakakolebwa',
'tog-hidepatrolled' => "Kisa nkyukakyuka ezakakolebwa ezimaz'okulawunibwa",
'tog-newpageshidepatrolled' => "Mu lukalala olw'empapula mpya tolaga ezimaz'okulawunibwa",
'tog-numberheadings' => "Emitwe gy'emiko ku mpapula gibengako ennamba",
'tog-showtoolbar' => "Amapeesa g'ebiyamba mu kuwandika galabikenga (kino kyetaagisa JavaScript)",
'tog-editondblclick' => "Okunyiga eppeesa emirundi ebiri kubikkulenga w'okyusiza olupapula (kyetaagisa 'JavaScript')",
-'tog-editsection' => "Emiko ku mpapula gibengako enyunzi eza '[kyusa]' ezikuggusa w'osobolera okugikyusiza.",
'tog-editsectiononrightclick' => "Okunyiga ku omutwe gw'omuko ku lupapula n'eppeesa erya ddyo kubikkulenga w'ogukyusiza (kyetaagisa 'JavaScript')",
-'tog-showtoc' => 'Teekawo endagiriro (singa ku lupapula kubaako emitwe gisukka mu esatu)',
'tog-rememberpassword' => 'Tereka ekigambo kyange ekikuumi ku kompyuta eno (okumala {{PLURAL:$1|olunaku|ennaku ezitasukka mu}} $1)',
'tog-watchcreations' => "Empapula zenkolawo ziteekebwenga ku lukalala lw'ezo zengoberera",
'tog-watchdefault' => "Empapula zenkyusamu ziteekebwenga ku lukalala lw'ezo zengoberera",
$messages = array(
# User preference toggles
'tog-underline' => 'Links óngersjtriepe',
-'tog-justify' => 'Paragrafe oetvölle',
'tog-hideminor' => 'Versjtaek klein bewirkinge bie recènte verangeringe',
'tog-hidepatrolled' => 'Gemarkeerde wieziginge verberge in recente wieziginge',
'tog-newpageshidepatrolled' => "Gemarkeerde pagina's verberge in de lies mit nuuj pagina's",
'tog-numberheadings' => 'Köpkes automatisch nummere',
'tog-showtoolbar' => 'Laot edit toolbar zeen',
'tog-editondblclick' => "Bewirk pagina's bie 'ne dobbelklik (JavaScript)",
-'tog-editsection' => 'Bewirke van secties via [bewirke] links',
'tog-editsectiononrightclick' => "Secties bewirke mit 'ne rechtermoesklik op sectietitels (JavaScript nudig)",
-'tog-showtoc' => "Inhaudsopgaaf veur pagina's mit mie es 3 köpkes",
'tog-rememberpassword' => 'Mien wachwaord onthouwe veur later sessies (hoegstens $1 {{PLURAL:$1|daag|daag}})',
'tog-watchcreations' => "Volg autematis pagina's die ich aanmaak en bestenj die ich upload",
'tog-watchdefault' => "Voog pagina's em bestenj die se bewirks toe aan dien volglies",
'compareselectedversions' => 'Vergeliek geselecteerde versies',
'showhideselectedversions' => 'Tuin/versjtaek geselecteerde versies',
'editundo' => 'maak óngedaon',
-'diff-multi' => '({{PLURAL:$1|Ein tusseligkende versie|$1 Tusseligkende versies}} dórch {{PLURAL:$2|eine gebroeker|$2 gebroekers}} {{PLURAL:$1|weurt|waere}} neet getuund)',
'diff-multi-manyusers' => '($1 tösseligkende versies door mier es $2 gebroekers waere neet waergaeve)',
# Search results
'rows' => 'Regels',
'columns' => 'Kolomme',
'searchresultshead' => 'Insjtèllinge veur zeukresultate',
-'resultsperpage' => 'Aantal te tuine zeukresultate per pagina',
'stub-threshold' => 'Drempel veur markering <a href="#" class="stub">begske</a>:',
'stub-threshold-disabled' => 'Oetgezatj',
'recentchangesdays' => 'Aantal daag te tuine in de recènte verangeringe:',
'watchmethod-list' => "controlere van gevolgde pazjena's veur recènte verangeringe",
'watchlistcontains' => "Dien volglies bevat $1 {{PLURAL:$1|pazjena|pazjena's}}.",
'iteminvalidname' => "Probleem mit object '$1', ongeljige naam...",
-'wlnote' => "Hieónger {{PLURAL:$1|steit de lètste verangering|staon de lètste $1 verangeringe}} van {{PLURAL:$2|'t lètste oer|de lètste <b>$2</b> oer}} óp $3 óm $4.",
'wlshowlast' => 'Tuin lètste $1 ore $2 daag $3',
'watchlist-options' => 'Opties veur volglies',
'tooltip-pt-watchlist' => "De lies van gevolgde pagina's.",
'tooltip-pt-mycontris' => 'Lies van dien biedrage',
'tooltip-pt-login' => "De weurs aangemeudig om d'ch aan te melje, meh 't is neet verplich.",
-'tooltip-pt-anonlogin' => 'De weurs aangemodigd om in te logge, meh t is neet verplich.',
'tooltip-pt-logout' => 'Aafmelde',
'tooltip-ca-talk' => 'Euverlèk euver dit artikel',
'tooltip-ca-edit' => 'De kins dees pagina verangere.',
$messages = array(
# User preference toggles
'tog-underline' => 'Sottolineâ i collegamenti',
-'tog-justify' => 'Alliniamento di paragrafi giustificòu',
'tog-hideminor' => 'asconde e modifiche minori inte ùrtime modifiche',
'tog-hidepatrolled' => 'Ascondi e modifiche verificæ inte ùrtime modifiche',
'tog-newpageshidepatrolled' => "Ascondi e paggine verificæ da l'elenco de paggine ciù reçenti",
'tog-numberheadings' => 'Nùmeraçion aotomàtica di tìtoli de seçión',
'tog-showtoolbar' => 'Fanni vedde a barra di strumenti de modìffica (serve JavaScript)',
'tog-editondblclick' => 'Modifica e paggine co-o doggio clic (serve Javascrpt)',
-'tog-editsection' => 'Modifica e seçión co-o colegamento [modifica]',
'tog-editsectiononrightclick' => 'Modifica e seçión co-o clic drito in sciô tìtolo (serve Javascipt)',
-'tog-showtoc' => "Fanni védde l'indiçe pe-e pàgine con ciù de 3 seçioìn",
'tog-rememberpassword' => "Arregorda a mæ paròlla d'ordine (a-o màscimo pe $1 {{PLURAL:$1|day|days}})",
'tog-watchcreations' => 'Azonzi e paggine che creo e i file che carrego a-i oservæ speciâli',
'tog-watchdefault' => 'Azonzi e paggine e i files che modiffico a-i mæ sotta oservaçion',
'lineno' => 'Linia $1:',
'compareselectedversions' => 'Confronta e verscioîn selessionæ',
'editundo' => 'Anùlla',
-'diff-multi' => '({{PLURAL:$1|Inna revixón intermedia|$1 de revixoìn intermedie}} de {{PLURAL:$2|un utente|$2 utenti}} no son mostræ)',
# Search results
'searchresults' => 'Resultati da reçerca',
'protect_expiry_old' => ' Loppõmiz āiga um lǟndzāigas.',
'protect-text' => "Täs võid vaņtlõ ja mõitiņtõ līed '''$1''' kaitsõmiz-ildõmt.",
'protect-locked-access' => "Täddõn äb ūo õigõmt mõitiņtõ līed kaitsõmiz-ildõmt. Allõ-pūol ātõ līed '''$1''' paldīž joūdõs vȯlbizt ulzõ-vēļimizt:",
-'protect-cascadeon' => 'Se lēḑ um kaitstõd, sīepierāst ku tǟnda um kȭlbatõd {{PLURAL:$1|page, which has|pages, which have}} {{PLURAL:$1|sīesõ līeds, |lēḑis}} {{plural:$1| sīesõ līeds| nēši lēḑis}}, mis ātõ īž kaskād kaitsõmiz allõ. Sa sōd mõitiņtõ sīe līed kaitsõmizt, bet se äb mõitiņt kaskād kaitsõmizt.',
+'protect-cascadeon' => 'Se lēḑ um kaitstõd, sīepierāst ku tǟnda um kȭlbatõd {{PLURAL:$1|page, which has|pages, which have}} {{PLURAL:$1|sīesõ līeds, |lēḑis}} {{PLURAL:$1| sīesõ līeds| nēši lēḑis}}, mis ātõ īž kaskād kaitsõmiz allõ. Sa sōd mõitiņtõ sīe līed kaitsõmizt, bet se äb mõitiņt kaskād kaitsõmizt.',
'protect-default' => 'Āndagid lubā āmādõn kȭlbatijiztõn',
'protect-fallback' => 'Ma tōb "$1" õigõmḑi',
'protect-level-autoconfirmed' => 'Blokīerõgid ūd ja bäz pa-kēratõmõt kȭlbatijizt',
$messages = array(
# User preference toggles
'tog-underline' => 'Sutulinia i ligam',
-'tog-justify' => 'Paràgraf: giüstifigaa',
'tog-hideminor' => 'Scund i mudifegh men impurtant in di "cambiament recent"',
'tog-hidepatrolled' => 'Scund i mudifegh verifegaa intra i ültem mudifegh',
'tog-newpageshidepatrolled' => 'Scund i paginn verifegaa de la lista di paginn növ',
'tog-numberheadings' => 'Utu-nümerazión di paragraf',
'tog-showtoolbar' => 'Fá vidé ai butún da redataziún (JavaScript)',
'tog-editondblclick' => 'Redatá i pagin cun al dópi clich (JavaScript)',
-'tog-editsection' => 'Abilità edizion di seczion par ligam',
'tog-editsectiononrightclick' => 'Abilitá redatazziún dai sezziún cun al clic<br />
süi titul dai sezziún (JavaScript)',
-'tog-showtoc' => "Fà vidè l'indes per i paginn cun püssee de 3 sezión",
'tog-rememberpassword' => "Regòrdass la mè paròla d'urdin (for a maximum of $1 {{PLURAL:$1|day|days}})",
'tog-watchcreations' => "Giunta i paginn ch'hoo creaa mì a la lista di paginn che tegni sot ögg",
'tog-watchdefault' => "Gjüntá i pagin redataa in dala lista dii pagin tegnüü d'öcc",
'rows' => 'Riich:',
'columns' => 'Culònn:',
'searchresultshead' => 'Cerca',
-'resultsperpage' => 'Resültaa pər pagina:',
'recentchangescount' => "Nümer de mudifegh da mustrà per ''default'':",
'savedprefs' => 'I preferenz hinn stai salvaa.',
'timezonelegend' => 'Lucalitaa',
$fallback = 'fr';
+// Remove French aliases
+$namespaceGenderAliases = array();
+
$linkPrefixExtension = true;
# Same as the French (bug 8485)
* @ingroup Language
* @file
*
+ * @author Bonevarluri
* @author Mogoeilor
*/
$messages = array(
# User preference toggles
'tog-underline' => 'هوم پیوند زیرخط دار:',
-'tog-justify' => 'فاصله نيائن سی پاراگرافيا',
'tog-hideminor' => 'قام كردن ويرايشتيا كؤچك مئن آلشتيا تازه',
'tog-hidepatrolled' => 'قام كردن ويرايشتيا تیه دیار کرده مئن آلشتيا تازه',
'tog-newpageshidepatrolled' => 'بلگیا تیه دیار کرده نه مئن نوم گه بلگیا تازه قام کو',
'tog-numberheadings' => 'سربلگه خود شماره گر',
'tog-showtoolbar' => 'نوار اوزار ويرايشت نشون بيه',
'tog-editondblclick' => 'بلگيا نه وا دوبار پورنين ويرايشت بكيد',
-'tog-editsection' => 'ممكن بيئن ويرايشت بشخيا وا [ويرايشت]',
'tog-editsectiononrightclick' => 'بهر ویرایشت نه وا راس کلیک کردن د بهر عنوانیا فعال کو',
-'tog-showtoc' => 'چیا مئن جدول نشو بیه',
'tog-rememberpassword' => 'اومائن وا مئن منه د ای مرورگر د ویر داشتو(سی بیشترین$1{{PLURAL:$1|day|days}})',
'tog-watchcreations' => 'بلگیایی که مه راس کمه و فایلیایی که مه سوار کمه اضاف کو د سیل برگه مه',
'tog-watchdefault' => 'بلگیا و فایلایی که مه ویرایشت کمه اضاف کو د سیل برگم',
'tog-minordefault' => 'همه ویرایشتیا کؤچک نه وا پیش فرض بیئن نشو دار کو.',
'tog-previewontop' => 'پیش سیل نه دما جعوه ویرایشت نشو بیئه',
'tog-previewonfirst' => 'پیش سیل نه د اولین ویرایشت نشو بیئه',
+'tog-enotifwatchlistpages' => 'اوسه که یه گل بلگه یا فایلی د سیل برگ مه آلشت بوئه منه وا ایمیل خور کو',
'tog-enotifusertalkpages' => 'وختی که بلگه گپسن کارور آلشت پیدا کرد منه وا ایمیل خور کو',
+'tog-enotifminoredits' => 'همچنو اوسه که ویرایشتیا کؤچکی د بلگیا یا فایلیا انجوم بوئه منه خور کو',
+'tog-enotifrevealaddr' => 'نشونی ایمیل منه د ایمیل اشگار نشو بیه',
'tog-shownumberswatching' => 'انازه کاروریایی که د حالت دیئنن نشو بیه',
'tog-oldsig' => 'امضايی هيئش:',
+'tog-fancysig' => 'وا امضا چی ویکی متن برخورد کو',
'tog-uselivepreview' => 'د پیش سیل زنه استفاده کو',
+'tog-forceeditsummary' => 'منه وختی که یه گل چکسه ویرایشت حالی وارد بوئه سریع خور کو',
'tog-watchlisthideown' => 'قام كو ويرايشت منه د',
+'tog-watchlisthidebots' => 'ویرایشت یا بوت نه د سیل برگ قام کو',
'tog-watchlisthideminor' => 'قام كو ويرايشت کؤچک منه د',
+'tog-watchlisthideliu' => 'ویرایشت یا کاروریا وامئن سیستم نه د سیل برگ قام کو',
+'tog-watchlisthideanons' => 'ویرایشت یا کاروریا ناشناس نه د سیل برگ قام کو',
+'tog-watchlisthidepatrolled' => 'ویرایش تیا د تی رس نه د سیل برگ قام کو',
+'tog-ccmeonemails' => 'کپی ایمیل یا منه که سی کسونا تر می فرسنم سیم کل کو',
'tog-diffonly' => 'بلگیایی که شومل فرخیا هارن نشون نیه',
'tog-showhiddencats' => 'دسه يا قام بيئنه نشون بيه',
+'tog-norollbackdiff' => 'فرخیا نه د بین بوریت نها یه گل عقو گرد کردن',
+'tog-useeditwarning' => 'وختی که آلشتیا ذخیره نبیه د بلگه ویرایشت وه جا می نم خورم کو',
+'tog-prefershttps' => 'همیشه وختی که مه وامئن هئم د ارتواط امن استفاده کو',
'underline-always' => 'هميشه',
'underline-never' => 'هيژوخت',
'category-empty' => 'ای دسه واقعن شومل هیژ بلگه ای یا رسانه ای نی',
'hidden-categories' => '{{PLURAL:$1|دسته قام بيه|دسته يا قام بيه}}',
'hidden-category-category' => 'دسه یا قام بیه',
-'category-subcat-count' => '{{جمی:$2|ای دسه شومل بلگه نهاییه .| {{جمی:$1| بلگه هئ|$1 بلگیا هئن}} د ای زیردسه, خارج د $2 کل.}}',
+'category-subcat-count' => '{{جمی:$2|ای دسه فقط زیر دسه دینداگر هان دش .|ای دسه {{جمی:$1| زیردسه|$1 زیردسه یا}}هئ , خارج د $2 کل.}}',
+'category-subcat-count-limited' => 'ای دسه وا دمال {{جمی:$1|زیردسه|$1زیردسه یا}} بوئه',
'category-article-count' => '{{جمی:$2|ای دسه شومل بلگه نهاییه .| {{جمی:$1| بلگه هئ|$1 بلگیا هئن}} د ای دسه, خارج د $2 کل.}}',
+'category-article-count-limited' => 'نها {{جمی:$1|بلگه هئ|$1بلگیا هئن}} د دسه ایسنی .',
+'category-file-count' => '{{جمی:$2|ای دسه فقط شامل فایل نهایی هئ file.| نهایی {{جمی:$1|فایل هئ|$1 فایلیا هئن}} د ای دسه, وه در د کل $2 .}}',
+'category-file-count-limited' => ' {{جمی:$1|[جانیا هئ|1$جانیایا هئن}}نهایی هان د دسه ایسنی.',
'listingcontinuesabbrev' => 'دماله',
'index-category' => 'بلگيا سيائه دار',
'noindex-category' => 'بلگيا بی سيائه',
'vector-action-protect' => 'حمايت بكيد',
'vector-action-undelete' => 'حذف نبيئني',
'vector-action-unprotect' => 'حمايت آلشت بكيد',
+'vector-simplesearch-preference' => 'یه گل اوزار پی جوری ساده نه دروس بکید',
'vector-view-create' => 'راس كردن',
'vector-view-edit' => 'ويرايشت',
'vector-view-history' => 'ديئن ويرگار',
'delete' => 'حذف كردن',
'deletethispage' => 'ای بلگه نه حذف بكيد',
'undeletethispage' => 'ای بلگه نه حذف نكيد',
-'undelete_short' => 'پاک نکو {{جمی:$1|یه گل ویرایشت|$1 ویرایشتیا}}',
+'undelete_short' => 'زنه کردن {{جمی:$1|یه گل ویرایشت|$1 ویرایشتیا}}',
+'viewdeleted_short' => 'بوینیت {{[جمی:$1|یه گل ویرایشت پاک بیه|$1ویرایشتیا پاک بیه}}',
'protect' => 'حمايت بكيد',
'protect_change' => 'آلشت بكيد',
'protectthispage' => 'ای بلگه نه حفاظت بكيد',
'toolbox' => 'اوزاريا',
'userpage' => 'ديئن بلگه كارور',
'projectpage' => 'ديئن بلگه پروجه',
-'imagepage' => 'ديئن بلگه فايل',
+'imagepage' => 'ديئن بلگه جانیا',
'mediawikipage' => 'ديئن بلگه پيغوم',
'templatepage' => 'ديئن بلگه قالو',
'viewhelppage' => 'ديئن بلگه هومياری',
'jumpto' => 'پئرستن د',
'jumptonavigation' => 'ناوگشتن',
'jumptosearch' => 'پی جوری',
+'pool-timeout' => 'وخت سی تیه وه ره منن سی قلف بیئن تموم بی',
+'pool-queuefull' => 'ذخیره گی گرتن پر بیه',
'pool-errorunknown' => 'خطا ناشناس',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage).
'aboutsite' => 'دباره {{SITENAME}}',
'aboutpage' => 'پروجه:دباره',
-'copyrightpage' => '{{ns:پروجه}}:کپی رایت',
+'copyright' => 'محتوا د دسرس هئ سی $1 مر وه شلک هنی نوشته بوئه',
+'copyrightpage' => '{{ان اس:پروجه}}:کپی رایت',
'currentevents' => 'پيشومدل تازه باو',
'currentevents-url' => 'پروجه:پيشومدل تازه باو',
'disclaimers' => 'منكرون',
'disclaimerpage' => 'پروجه:منكر بيئن كاروريا',
'edithelp' => 'هومياری سی ويرايشت',
-'helppage' => 'هومياری:محتوا',
+'helppage' => 'هومياری:مینونه',
'mainpage' => 'سرآسونه',
'mainpage-description' => 'سرآسونه',
'policy-url' => 'پروجه:خط و مش',
'badaccess' => 'خطا :اجازه بئیر',
'badaccess-group0' => 'شما اجازه انجوم کاری که حاستیت نارین',
+'badaccess-groups' => 'ای کاری که شما هاستیته سی کاروریا د {{جمی:$2|گرو|یکی د گرویا}}: $1 مئدود بیه',
'versionrequired' => 'یه نسقه د نیازمنیا ویکی رسانه
$1',
+'versionrequiredtext' => 'نسقه $1 ویکی مدیا سی استفاده د ای بلگه لازم هئی .
+وه نه بوینیت [[ویجه:نسقه|نسقه بلگه]].',
'ok' => 'خوئه',
'retrievedfrom' => 'بازيافته د"$1"',
'youhavenewmessages' => 'شما داريت $1($2)',
+'youhavenewmessagesfromusers' => '{{جمی:$4|شما }} $1 د {{جمی:$3|کارور هنی|$3 کاروریا}}داریتو($2).',
'youhavenewmessagesmanyusers' => 'شما $1 د خيلی كاروريا داريت ($2).',
-'newmessagesdifflinkplural' => 'آخر {{PLURAL:$1|change|changes}}',
+'newmessageslinkplural' => '{{جمی:$1|یه گل پیغوم تازه|999=پیغوم ئل تازه}}',
+'newmessagesdifflinkplural' => 'آخر {{جمی:$1|آلشت|آلشتیا}}',
'youhavenewmessagesmulti' => 'شما یه گل پیغوم تازه د $1 داریتو',
'editsection' => 'ويرايشت',
'editold' => 'ويرايشت',
'collapsible-expand' => 'وا كردن',
'thisisdeleted' => 'دیئن یا ورگنين $1?',
'viewdeleted' => 'دیئن$1?',
+'restorelink' => '{{جمی:$1|یه گل ویرایشت پاک بیه|$1 ویرایشتیا پاک بیه}}',
'feedlinks' => 'غذا دهنه:',
'feed-invalid' => 'نوع مشترک بین خورحو نامعتور',
+'feed-unavailable' => 'خور حونیا د دسرس نئین',
'site-rss-feed' => 'خورخو RSS سی $1',
'site-atom-feed' => 'خور حون Atom سی $1',
'page-rss-feed' => 'خورخو RSS سی «$1»',
'nstab-media' => 'بلگه رسانه',
'nstab-special' => 'بلگيا ويجه',
'nstab-project' => 'بلگه پروجه',
-'nstab-image' => 'فاين',
+'nstab-image' => 'جانیا',
'nstab-mediawiki' => 'پيغوم',
'nstab-template' => 'قالو',
'nstab-help' => 'بلگه هومياری',
# Main script and global functions
'nosuchaction' => 'چنو كاری وجود ناره',
+'nosuchactiontext' => 'کاری که وا یو آر ال مشقص بیه معتور نئ.
+شایت شما یو آر ال نه دروس ننشتیته، یا یه گل هوم پیوند نادرست وارد بیه.
+وه شاید وه یه گل باگ د نرم افزار استفاده بیه وا {{نوم مالگه}} هشاره داشتوه.',
'nosuchspecialpage' => 'چنو بلگه خاصی وجود ناره',
+'nospecialpagetext' => '<strong>شما سی یه گل بلگه نامعتور درحاست داشتیته.</strong>
+یه گل نوم گه سی اعتوار بلگه یا بوئه د [[ویجه:بلگه یا ویجه|{{رقم:بلگه یا ویجه}}]] پیدا با.',
# General errors
'error' => 'خطا',
'databaseerror-error' => 'خطا: $1',
'laggedslavemode' => 'زنهار:بلگه شايت شومل روزامديا تازه باو نبوئه',
'readonly' => 'جاگه دونسمنيا بسه بيه',
-'missing-article' => 'پاگا داده نتونه بلگه ای با پیدا بکه بجوره.که نومش $1 و $2 هئ.
+'enterlockreason' => 'دلیل قلف کردن نه بنیست،یه وختی سی وا کردن قلف د ویر داشتویت.',
+'readonlytext' => 'پایگا دونسمنیا ایسه سی دئن ورودی یا تازه یا آلشتگریا هنی قلف بیه،شایت سی منن معمولی پایگا دونسمنی نها وه که ورئرده وه حالت عادیش.
+مدیری که ونه قلف کرده ونه گوته:$1',
+'missing-article' => 'پاگا دونمسمنی نتونه بلگه ای با پیدا بکه بجوره.که نومش $1 و $2 هئ.
معمولند یه سی یه که فرخ ویرگار رئته دش بیه پاک بیه.',
'missingarticle-rev' => '(دوواره ديئن#: $1)',
'missingarticle-diff' => '(فرخ: $1، $2)',
+'readonly_lag' => 'ای پاگا دونسمنی قلف بیه تا اوسه که سرور پایگا دونسمنیا وه مینجاون برسه.',
'internalerror' => 'خطا داخلی',
'internalerror_info' => 'خطا داخلی:$1',
+'fileappenderrorread' => 'نبوئه $1 نه اوسه که پیوست بوئه بحونیت.',
+'fileappenderror' => 'نبوئه فایل $1 د $2 پیوست بوئه',
'filecopyerror' => 'نبوئه فایل $1 د $2 کپی بوئه',
'filerenameerror' => 'نبوئه فایل $1 د $2 نوم آلشت بوئه',
'filedeleteerror' => 'نبوئه فایل $1 پاک بوئه',
+'directorycreateerror' => 'نبوئه سردسه $1 راس بوئه.',
'filenotfound' => 'نتونیت فایل $1 پیدا بکید',
+'fileexistserror' => 'نبوئه د فایل "$1" بنیسید:فایل هئیش',
+'unexpected' => 'ارزایشت ناحاسته: "$1"="$2".',
'formerror' => 'خطا:نبوئه فرم وه مو بئيت',
+'badarticleerror' => 'ای انجوم دئنی د ای بلگه انجوم نگره.',
+'cannotdelete' => 'بلگه یا فایل$1 نبوئه پاک با.
+شایت یه ایسه وا کسی هنی پاک بیه.',
'cannotdelete-title' => 'نبوئه بلگه $1 حذف بو',
+'delete-hook-aborted' => 'پاک بیئن وا قلاو جلوگری بیه.
+هیچ توضیئ سیش نئ.',
+'no-null-revision' => 'سی بلگه$1 دوواره خنثی دیئن راس بکید',
'badtitle' => 'موضو گن',
'badtitletext' => 'عنوان بلگه حاسته بیه معتور نی،یا یه گل مئن زونی یا مئن ویکی عنوان غلطه.
یه شایت شومل یکی با یا بیشتر کاراکتریا نبوئه سی ای موضوعیا استفاده بوئن',
'viewsource' => 'سرچشمه نه بوينيت',
'viewsource-title' => 'سرچشمه $1 بوينيت',
+'actionthrottled' => 'عمل جلوگئری بیه',
+'protectedpagetext' => 'دای بلگه نبوئه ویرایشت یا کاریا هنی بکید',
+'viewsourcetext' => 'شما تونیت سرچشمه ای بلگه نه بوینیت و دش ورداریت:',
+'viewyourtext' => 'شما تونیت سرچشمه ویرایشتیا تونه ای د بلگه بوینیت و دشو ورداریت',
'mycustomcssprotected' => 'شما حق ناریت ای بلگه سی اس اس نه ویرایشت بکید',
'mycustomjsprotected' => 'شما حق ناریت ای بلگه جاوا اسکریپت نه ویرایشت بکید',
'myprivateinfoprotected' => 'شما حق ناریت دونسمنیا خصوصی نه ویرایشت بکید',
'mypreferencesprotected' => 'شما حق ناریت ویجگی یا هنی تونه ویرایشت بکید',
'ns-specialprotected' => 'بلگیا ویجه نتونن ویرایشت بوئن',
'exception-nologin' => 'نبوئه وارد بوئيد',
+'exception-nologin-text-manual' => 'خواهشمنیدم که $1 تونسه بوئه د ای بلگه دسرسی داشتوه یا کاری انجوم بیئه.',
# Virus scanner
-'virus-scanfailed' => 'زل گشتن شکست حرد',
+'virus-scanfailed' => 'زل بیئن شکست حرد($1)',
'virus-unknownscanner' => 'ويروس كش ناآشگار',
# Login and logout pages
'gotaccount' => 'ایسنی حساو کاروری داریتو؟$1',
'gotaccountlink' => 'اومائن',
'userlogin-resetlink' => 'جزییات وامین اومائن تونه د ویر بردیته',
-'userlogin-resetpassword-link' => 'Ù\87Ù\86Û\8c رÙ\85ز Ù\88ارد بÙ\83Ù\8aد',
+'userlogin-resetpassword-link' => 'پاسÙ\88رد د Ù\88Û\8cرتÙ\88 رئتÙ\87Ø\9f',
'helplogin-url' => 'هومياری:د حالت اومائن د سيستم',
+'userlogin-helplink' => '[[{{مدیاویکی:هومیاری وامئن اومائن-یو آر ال}}|هومیاری وا مئن اومائن]]',
'userlogin-createanother' => 'يه گل حساوهنی راست بكيد',
'createacct-join' => 'دونسمنيا دباره خوتونه د هار وارد بكيد',
'createacct-another-join' => 'دونسمنیا یه گل حساو د هار وارد بکید',
'createacct-emailoptional' => 'نشونی ايميل',
'createacct-email-ph' => 'نوم نشون ايميلتونه وارد بكيت',
'createacct-another-email-ph' => 'يه گل ايميل وارد بكيت',
+'createaccountmail' => 'د یه گل پاسورد موقتیه بختکی استفاده بکید و ونه سی یه گل نشونی ایمیل ویجه بفرسنیت',
'createacct-realname' => 'نوم راستكی(مژبوری نيئ)',
'createaccountreason' => 'دليل',
'createacct-reason' => 'دليل',
'createacct-submit' => 'حساو خوتونه راس بكيد',
'createacct-another-submit' => 'يه گل حساوهنی راست بكيد',
'createacct-benefit-heading' => '{{نوم مالگه}} وه دس خلکی چی شما راس بیه.',
-'createacct-benefit-body1' => '{{جمی:$1|ویرایشت|ویرایشتا}}',
-'createacct-benefit-body2' => '{{جمی:$1|بلگه|بلگیا}}',
+'createacct-benefit-body1' => '{{جمی:$1|ویرایشت|ویرایشتیا}}',
+'createacct-benefit-body2' => '{{جمی:$1|بلگه|بلگه یا}}',
+'createacct-benefit-body3' => 'تازه{{جمی:$1|هومیار|هومیارا}}',
'badretype' => 'پاسوردی که شما دئیته مطاوقت ناره',
'userexists' => 'کارور نوم که وارد بیه د ایسه استفاده بوئه.
لطف بکید یه گل نوم هنی انتخاو بکید',
'loginerror' => 'خطا اومائن د سيستم',
'createacct-error' => 'خطا راس كردن حساو',
'createaccounterror' => 'نبوئه حساو راس بكيد:$1',
+'nocookiesnew' => 'حساو کاروری راس بی،اما شما وامئن نیامایئته.{{نوم مالگه}} د کوکیا سی اومائن د سیستم کاروریا استفاده می که.کوکیا شما د کار افتائه.لطفن وا کارشو بونیت، اوسه وا نوم کاروری تازه و پسورد هنی بیایت وا مئن.',
+'nocookieslogin' => '{{نوم مالگه}} د کوکیا سی وامئن اومائن کاروریا استفاده می که. کوکیا شما د کار افتائه.
+لطف بکید د کارشو بونیت و دوواره تلاش بکید.',
+'nocookiesfornew' => 'حساو کاروری راس نبیه، سی یه ایما نتونیم سرچشمه ونه مئکم بکیم.
+مطمئن بوئیت که کوکیا فعال بینه، ای بلگه نه د نو سوار بکید و د نو تلاش بکید.',
'noname' => 'شما یه گل نوم کاروری خو ناریت',
'loginsuccesstitle' => 'اومائن د سيستم موفق بی',
'loginsuccess' => 'شما ایسه وارد بیته {{SITENAME}} د دعنوان "$1".\'',
+'nosuchuser' => 'چنی کاروری و نوم "$1" نئیش.
+نوم کاروری وه حرفیا حساس هئ.
+روشت نیسنن تونه وارسی بکید،یا [[ویجه:وامین اومائن کارور/ثوت نام کردن|یه گل حساو تازه راس بکید]].',
'nosuchusershort' => 'چنو کاروری وا ای نوم $1 نی ئیش.
نیسنن تونه دوواره نئری بکیتو',
'nouserspecified' => 'شما باید یه نوم کارور اختصاص بئیتو',
'passwordtooshort' => 'پاسورد با حداقل {{PLURAL:$1|1 character|$1 characters}} با',
'password-name-match' => 'پاسوردتو با د نوم کاروریتو فرخ داشتوه',
'password-login-forbidden' => 'وه کار گرتن ای پاسوردو نوم کاروری ممنو بیه.',
-'mailmypassword' => 'رÙ\85ز Ù\87Ù\86Û\8c Ù\86Ù\87 اÙ\8aÙ\85Ù\8aÙ\84 بÙ\83Ù\8aد',
+'mailmypassword' => 'د Ù\86Û\88 Ù\88ارد Ù\83ردÙ\86 رÙ\85ز',
'passwordremindertitle' => 'پاسورد موقت تازه سی {{SITENAME}}',
'noemail' => 'هیچ نشونی ایمیلی سی کارور $1 ضفط نبیه.',
'noemailcreate' => 'شما باید یه نشونی نومه معتور فراهم بکید',
'mailerror' => 'خطا داره کل موئه:$1',
+'emailauthenticated' => 'نشونی ایمیلتو د $2 سی 3$ مئکم بیه.',
'emailconfirmlink' => 'نشونی ايملتو نه محكم بكيد',
+'cannotchangeemail' => 'نشونی ایمیل حساو نتونه د ای ویکی آلشت بوئه.',
'emaildisabled' => 'ای مالگه نتونه ایمیل بفرسنه',
'accountcreated' => 'حساو راس بی',
'createaccount-title' => 'حساو راس کرده سی {{SITENAME}}',
'usernamehasherror' => 'نوم کاربری نتونه شومل نیسه یا هش بوئه',
+'login-throttled' => 'شما ایسنی فره سی وامین اومائن تلاش کردیته.
+$1 لطفن سی تلاش هنی صبر بکید',
'login-abort-generic' => 'اومائن وامین تو شکست حرد-شکست حرده',
'loginlanguagelabel' => 'زون:$1',
'resetpass_submit' => 'پاسور بنیت و وامین بیایت',
'changepassword-success' => 'پاسورد شما وا موفقیت آلشت بی',
'resetpass_forbidden' => 'پاسوردیا نتونن آلشت بوئن',
+'resetpass-no-info' => 'شما با بیایت د سیستم تا د ای بلگه دسرسی داشتویت',
'resetpass-submit-loggedin' => 'پاسورد نه آلشت بكيت',
'resetpass-submit-cancel' => 'رد كردن',
'resetpass-temp-password' => 'رمز موقت:',
# Special:PasswordReset
'passwordreset' => 'د نۈ وارد كردن رمز',
'passwordreset-legend' => 'د نۈ وارد كردن رمز',
+'passwordreset-disabled' => 'نو کرد پاسورد د ای ویکی غیرفعال بیه.',
+'passwordreset-emaildisabled' => 'چی یا هنی ایمیل د ای ویکی غیرفعال بیه.',
'passwordreset-username' => 'نوم كاروری:',
'passwordreset-domain' => 'پوشگیر',
'passwordreset-capture' => 'ایمیل نتیجه نه بوینیتو؟',
+'passwordreset-capture-help' => 'ار شما ای جعوه نه وارسی بکید. ایمیل و خوئی اوسه که سی کارور کل بیه بوئه بوینیتش.',
'passwordreset-email' => 'نشونی ايميل',
+'passwordreset-emailtitle' => 'جزئیات حساو ها د {{نوم مالگه}}',
+'passwordreset-emailelement' => 'نوم کاروری: $1
+پاسورد موقتی: $2',
'passwordreset-emailsent' => 'پاسورد هنی سی ایمیل کل بیه.',
+'passwordreset-emailsent-capture' => 'پاسورد تازه تو د ایمیلتو که د هار نشو دئه بیه کل بیه',
# Special:ChangeEmail
'changeemail' => 'ایمیل تو نه آلشت بکید',
'changeemail-header' => 'ایمیل حساوتونه آلشت بکید',
+'changeemail-no-info' => 'شما با بیایت د سیستم تا د ای بلگه دسرسی داشتویت',
'changeemail-oldemail' => 'نشونی ایمیل تازه باو:',
'changeemail-newemail' => 'نشونی ایمیل تازه',
'changeemail-none' => '(هيش كوم)',
'changeemail-submit' => 'آلشت کردن ایمیل',
'changeemail-cancel' => 'رد كردن',
+# Special:ResetTokens
+'resettokens' => 'تازه کردن نشونه یا',
+'resettokens-no-tokens' => 'هیژ نشونه ای سی تازه کردن نئ.',
+'resettokens-legend' => 'تازه کردن نشونه یا',
+'resettokens-tokens' => 'نشونه یا:',
+'resettokens-token-label' => '$1 (ارزشت تازه: $2)',
+'resettokens-done' => 'نشونه یا تازه بیه.',
+'resettokens-resetbutton' => 'نشونه یا انتخاو بیه تازه بوئن',
+
# Edit page toolbar
'bold_sample' => 'متن توپر بيه',
'bold_tip' => 'متن توپر بيه',
'headline_tip' => 'قدم 2 خط سر ون',
'nowiki_sample' => 'د ایچه یه گل متن بی شلک وارد بکید',
'nowiki_tip' => 'شلک ویکی نه ندید بگر',
-'image_tip' => 'فایل محاط بيه',
+'image_tip' => 'جانیا محاط بيه',
'media_tip' => 'فایل هوم پیوند',
'sig_tip' => 'امضا شما و برچسو وخت',
'hr_tip' => 'خط افق ونه(سوا سوا دش استفاده کو)',
# Edit pages
'summary' => 'چكسته',
+'subject' => 'موضو/سر خط:',
'minoredit' => 'يه ويرايشت كؤچكيه',
'watchthis' => 'ديئن ای بلگه',
'savearticle' => 'بلگه ضبط بوئه',
نشونی آی پی تو د ویرگار ویرایشت ای بلگه ضفط بوئه',
'missingcommenttext' => 'لطفن د ایچه نظر بیئتو',
'summary-preview' => 'چکسته پیش سیل:',
+'subject-preview' => 'پیش سیل موضو سرخط',
'blockedtitle' => 'كارور قلف بيه',
'blockednoreason' => 'هیژ دلیلی دئه نبیه',
'whitelistedittext' => 'شما باید $1 سی ویرایشت بلگیا',
'nosuchsectiontitle' => 'نبوئه بشخ پیدا بوئه',
'loginreqtitle' => 'وامین اومائن لازمه',
'loginreqlink' => 'اومائن',
+'loginreqpagetext' => '$1 لطف بکید بلگه یا هنی نه بوینیت',
'accmailtitle' => 'پاسورد کل بی',
'newarticle' => 'تازه',
'newarticletext' => 'شما وادما هوم پیوندی هئیت که وجود ناره.
[{{fullurl:{{FULLPAGENAME}}|action=edit}} یای ای بلگه نه ویرایشت بکیدpage]</span>.',
'noarticletext-nopermission' => 'د تازه یا د ای بلگه متن نی.
شما تونید د[[Special:Search/{{PAGENAME}}|search for this page title]] بگردید د ای بلگه یا د بلگیا هنی یا<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} د هنی پی جوری بوئه logs]</span> اما شما حق ناریتو ای بلگه نه راس بکیت',
+'userpage-userdoesnotexist-view' => 'حساو کارور"$1" ثوت نبیه.',
+'blocked-notice-logextract' => 'ای کارور ایسنی دسرسی ناره.
+آخری نشون قلف ورودی د هار ایچه سی سرچشمه آماده بیه:',
'updated' => '(تازه بيه)',
'note' => "'''نيسنن:'''",
'previewnote' => 'فقط ای پیش سیل د ویرتو با.
'creating' => 'راس كردن $1',
'editingsection' => 'د حال ویرایشت$1(بشخ)',
'editingcomment' => 'د حال ویرایشت$1(بشخ تازه)',
+'editconflict' => 'تضاد د ویرایشت:$1',
+'explainconflict' => 'داوسه که شما شرو د ویرایشت ای بلگه کردیته، یه نفر هنی ای بلگه نه آلشت دئه.
+راساگه روئی متن بلگه متن نه چی یه که وجود داشتوه د ور میئره.
+آلشتیا شما د متن هاری نشو دئه هئ.
+شما با آلشتیاتونه د متن که هئش یکی بکید.
+فقط متنی که ها د رو د وختی که شما"{{رقم:ذخیره گوتار}}" نه گزارشت می کید ذخیره بوئه',
'yourtext' => 'متن شما',
+'storedversion' => 'دوواره دیئن انبار بیه.',
'yourdiff' => 'فرخيا',
'templatesused' => '{{جمی:$1|قالو|قالویا}}د ای بلگه استفاده بیه:',
+'templatesusedpreview' => '{{جمی:$1|قالو|قالویا}}استفاده بیه د ای پیش سیل:',
+'templatesusedsection' => '{{جمی:$1|قالو|قالویا}} استفاده بیه د ای بخش:',
'template-protected' => '(حمايت بيه)',
'template-semiprotected' => '(نيم-حفاظت بيه)',
'hiddencategories' => 'ای بلگه يه اندوم د{{PLURAL:$1|1 hidden category|$1 hidden categories}}: هئ',
+'nocreatetext' => '{{نوم مالگه}} سی راس کردن بلگه یا تازه محدود بیه.
+شما تونید روئیت وادما و بلگه ای که هئیش ویرایشت بکید ، یا [[ویجه:وامین اومائن کارور|بیایت وامین یا یه گل حساو بسازیت]].',
+'nocreate-loggedin' => 'شما حق ناریت که بلگه یا تازه نه راس بکید.',
+'sectioneditnotsupported-title' => 'ویرایشت بخش حمایت نبوئه',
+'sectioneditnotsupported-text' => 'ویرایشت بشقی د ای بلگه نئیش.',
'permissionserrors' => 'خطا اجازه دئین',
+'permissionserrorstext' => 'شما حق ناریت ونه انجوم بیئت, سی{{جمی:$1|دلیل|دلیلیا}} نهایی:',
'permissionserrorstext-withaction' => 'شما سی $2 اجازه ناریت
سی دمال کردن{{PLURAL:$1|reason|reasons}}:',
'recreate-moveddeleted-warn' => "'''زنهار شما بلگه ای که وادما پاک بیه هنی راس کردیته'''
پاک بیئن و جمشت سی ای بلگه سی راحتی تو فراهم بیه:",
'moveddeleted-notice' => 'ای بلگه پاک بیه.
پاک بین و جمشت ای بلگه سی سرچشمه دئین فراهم بیه',
+'log-fulllog' => 'دیئن همه پهرستنومه یا',
'edit-conflict' => 'مخالفت نه ویرایشت بکید',
'postedit-confirmation' => 'ویرایشتتو ذخیره بی',
+'edit-already-exists' => 'نبوئه یه گل بلگه تازه راس بکید.
+وه هئیش.',
'defaultmessagetext' => 'متن پیغوم پیش فرض',
+'content-failed-to-parse' => 'د یک تیچیسن چیا مئن $2 د مدل $1:$3',
+'invalid-content-data' => 'دنسمنی مینونه نامعتور',
+'content-not-allowed-here' => ' مینونه"$1" سی بلگه [[$2]] اجازه نه دئه بیه',
+'editpage-notsupportedcontentformat-title' => 'شلک مینونه دماگری نبیه',
# Content models
'content-model-wikitext' => 'ويكی متن',
'post-expand-template-argument-warning' => 'زنهار ای بلگه شومل حداقل یه قالو سی چک چنه یه که انازه فره گپه.
گپسنیا پاک بینه.',
'post-expand-template-argument-category' => 'بلگه شومل قالو چک چنیا د بین رئته',
+'parser-template-loop-warning' => 'حلقه قالو کشف بیه:[[$1]]',
+
+# Account creation failure
+'cantcreateaccounttitle' => 'نبوئه حساو راس بکید',
# History pages
'viewpagelogs' => 'سی ای بلگه بوینتو.',
+'nohistory' => 'هیچ ویرگار ویرایشتی د ای بلگه نئ.',
'currentrev' => 'آخرین دوواره دیئن',
'currentrev-asof' => 'آخرين دووار ديئن چی $1',
'revisionasof' => 'دوواره ديئن $1',
'last' => 'دمايی',
'page_first' => 'اولی',
'page_last' => 'آخر',
+'histlegend' => "انتخاو فرخدار:جعویا رادیو نه سی دوواره دیئن و وارسی نشو دار بکید و یا ری رئتن کلیک بکید .<br />
+شرح نوشته: '''({{int:cur}})''' = وا آخری دوواره دیئن فرخ داره '''({{ int:last}})'''= وا دواره دیئن انجوم دئنی فرخ داره '''{{int:minoreditletter}}''' =ویرایشت کؤچک.",
'history-fieldset-title' => 'ویرگار مرور ون',
'history-show-deleted' => 'فقط پاك بيه',
'histfirst' => 'قديمي تري',
'histlast' => 'تازه تري',
+'historysize' => '({{جمی:$1|1 بایت|$1 بایتیا}})',
'historyempty' => '(حالی)',
# Revision feed
'history-feed-title' => 'ویرگار دوواره دیئن',
+'history-feed-description' => 'دوواره دیئن ویرگار سی بلگه د ویکی',
'history-feed-item-nocomment' => '$1 د
$2',
+'history-feed-empty' => 'بلگه حاسته بیه وجود ناره.
+شایت وه د ویکی پاک بیه، یا نومش آلشت بیه.
+سی بلگیا مرتوط تازه [[ویجه:پی جوری|پی جوری د ویکی]] کوششت بکید.',
# Revision deletion
+'rev-deleted-comment' => '(ویرایشت چکسته جا وه جا بیه)',
+'rev-deleted-user' => '(نوم کاروری جا وه جا بیه)',
+'rev-deleted-event' => '(انجوم گر پهرستنومه جا وه جا بیه)',
+'rev-deleted-user-contribs' => '[نوم کاروری یا نشونی آی پی جا وه جا بیه - چیا قام بیه د ور هوم یاریانه ویرایشت بکید]',
'rev-delundel' => 'آلشت وضئيت ديئن',
'rev-showdeleted' => 'نشو دائن',
+'revisiondelete' => 'پاک کردن/زنه کردن وانئریا',
+'revdelete-no-file' => 'فایل مشقص بیه وجود ناره.',
'revdelete-show-file-submit' => 'هری',
+'revdelete-selected' => "'''{{جمی:$2|وانیری انتخاو بیه|وانیریا انتخاو بیه}} د[[:$1]]:'''",
+'revdelete-hide-text' => 'متن دوواره دیئن',
+'revdelete-hide-image' => 'چی یا مئن فایل قام کو',
+'revdelete-hide-name' => 'آرمون و انجوم گر نه قام بکید',
'revdelete-hide-comment' => 'چکسه نه ویرایشت بکید',
+'revdelete-hide-user' => 'نوم کاروری ویرایشتگر/نشونی آی پی',
'revdelete-radio-same' => 'آلشت نکید',
'revdelete-radio-set' => 'قام بیه',
'revdelete-radio-unset' => 'دیینی',
+'revdelete-unsuppress' => 'محدودیتیانه د وانیریا امباربیه جا وه جا بکید',
'revdelete-log' => 'دلیل:',
+'revdelete-submit' => 'سی {{جمی:$1|وانیری|وانیریا}} انتخاو بیه وه کار بوریتو',
+'revdelete-success' => "'''دیئن وانیری وه خوئی وه هنگوم بی.'''",
+'revdelete-failure' => "'''دیئن وانیری وه خوئی وه هنگوم نبی:'''$1",
'revdel-restore' => 'آلشت وضئيت ديئن',
'pagehist' => 'ويرگار بلگه',
'deletedhist' => 'ویرگار پاک بیه',
'revdelete-otherreason' => 'دلیل هنی:',
'revdelete-reasonotherlist' => 'دلیل هنی',
'revdelete-edit-reasonlist' => 'دلیلیا پاک کردنه نه ویرایشت بکید',
+'revdelete-offender' => 'نیسنه وانیری:',
# History merging
+'mergehistory' => 'ویرگاریا بلگه نه یکی بکید',
+'mergehistory-header' => 'ای بلگه وه شما اجازه می ئه که وانیریانه ویرگار سرچشمه بلگه نه د یه گل بلگه تازه سریک سازی بکید.
+مطمئن بویت که ای آلشت د لحاظ ویرگاری د مین بلگه موندگار هئ.',
+'mergehistory-box' => 'دوواره دیئن دوبلگه ای نه سر یک سازی کو:',
'mergehistory-from' => 'بلگه سرچشمه:',
'mergehistory-into' => 'بلگه مقصد:',
+'mergehistory-list' => 'ویرگار ویرایشت سر یک سازی بیئنی',
+'mergehistory-go' => 'ویرایشتیایی که سریک سازی بوئن نشو بیئه',
+'mergehistory-submit' => 'سر یک سازی دوواره دیئنیا',
+'mergehistory-empty' => 'هیپ دوواره دیئنی نبوئه یکی سازی بوئه.',
+'mergehistory-success' => '$3 {{جمی:$3|وانیری|وانیریا}} د [[:$1]] وه خوئی د [[:$2]] سریک سازی بی.',
+'mergehistory-fail' => 'سریک سازی ویرگار انجوم نبوئه، لطفن پینیاریا زمون و بلگه نه د نو وارسی بکید.',
+'mergehistory-no-source' => 'سرچشمه بلگه $1 وجود ناره.',
+'mergehistory-no-destination' => 'بلگه مقصد $1 وجود ناره.',
+'mergehistory-invalid-source' => 'نوم ون بلگه سرچشمه با معتور بوئه.',
+'mergehistory-invalid-destination' => 'نوم ون بلگه سرچشمه با معتور بوئه.',
+'mergehistory-autocomment' => ' [[:$1]]وا[[:$2]] یکی بیه',
+'mergehistory-comment' => ' [[:$1]]وا[[:$2]] یکی بیه:$3',
+'mergehistory-same-destination' => 'سرچشمه و بلگه یا مقصد نبوئه یکی بوئن',
'mergehistory-reason' => 'دليل:',
# Merge log
+'mergelog' => 'سریک سازی پهرستنومه',
+'pagemerge-logentry' => ' [[$1]] وا [[$2]] سریک سازی بی (وانیریا که د $3 فره تر هئن)',
'revertmerge' => 'بی لوئه',
# Diffs
'history-title' => 'دوواره دیئن ویرگار$1',
+'difference-title' => 'فرخ مینجا وانیریا "$1"',
+'difference-title-multipage' => 'فرخ مینجا بلگه یا "$1" و "$2"',
+'difference-multipage' => '(فرخ مینجا بلگه یا)',
'lineno' => 'خط $1:',
'compareselectedversions' => 'دوبار دیئنیایی که انتخاو بینه مقایسه بکیتو',
+'showhideselectedversions' => 'شلک دیئن وانیریا انتخاو بیه نه آلشت بکید',
'editundo' => 'رد كردن',
'diff-empty' => '(بی فرق)',
-'diff-multi' => '({{جمی:$1|یه گل دوواره دیئن مینجایی|$1مینجا دوواره دیئنیا}} وا {{جمی:$2|یه کارور|$2 کاروریا}} نشو دئه نی)',
+'diff-multi-manyusers' => '({{جمی:$1|یه گل وانیری مینجاگرته|$1وانیریا مینجا گرته}} بیشتر د $2 {{جمی:$2|کارور|کاروریا}} نشو دئه نبیه)',
# Search results
'searchresults' => 'نتيجه يا پی جوری',
'nextn' => 'نيايی {{PLURAL:$1|$1}}',
'prevn-title' => 'پيشتر $1 {{PLURAL:$1|نتيجه|نتيجيا}}',
'nextn-title' => 'نيايی $1 {{PLURAL:$1|نتيجه|نتيجيا}}',
-'shown-title' => 'Ù\86Ø´Ù\88Ù\86 دائÙ\86 $1 {{PLURAL:$1|Ù\86تÙ\8aجÙ\87|Ù\86تÙ\8aجÙ\87}} سÛ\8c Ù\87Ù\85Ù\87 بلگه',
+'shown-title' => 'Ù\86Ø´Ù\88Ù\86 دئÙ\86 $1 {{جÙ\85Û\8c:$1|Ù\86تÙ\8aجÙ\87|Ù\86تÙ\8aجÙ\87}} سÛ\8c Ù\87ر بلگه',
'viewprevnext' => 'ديئن ($1 {{int:pipe-separator}} $2) ($3)',
'searchmenu-exists' => "'''ایچه بلگه ای هئ وه نوم\"[[:\$1]]\" که ها د ای ویکی'''",
'searchmenu-new' => "'''ای بلگه نه راس كو \"[[:\$1]]\" د ای ويكي!'''",
'searchprofile-images-tooltip' => 'بگرد سی فايليا',
'searchprofile-everything-tooltip' => 'همه محتوا نه پی جوری كو (شاملا بلگيا چك چنه)',
'searchprofile-advanced-tooltip' => 'نوم جايا نوم ديار بگرد',
-'search-result-size' => '$1 ({{PLURAL:$2|بی واچه يل|واچه تكی|واچه يل|$2 واچه يل|$2 واچه}})',
-'search-result-category-size' => '{{جمی:$1|1 اندوم|$1 اندومیا}} ({{جمی:$2|1 زیردسه|$2 زیردسه یا}}, {{جمی:$3|1 فایل|$3 فایلیا}})',
+'search-result-size' => '$1 ({{جمی:$2|بی واچه يل|واچه تكی|واچه يل|$2 واچه يل|$2 واچه}})',
+'search-result-category-size' => '{{جمی:$1|1 اندوم|$1 اندومیا}} ({{جمی:$2|1 زیردسه|$2 زیردسه یا}}, {{جمی:$3|1 جانیا|$3 جانیایا}}',
'search-redirect' => '(ورگشتن $1)',
'search-section' => '(بشق $1)',
+'search-file-match' => '(یکی کردن مینونه جانیا)',
'search-suggest' => 'منظورت يه بی:$1',
+'search-interwiki-caption' => 'پروجه یا خوئر',
+'search-interwiki-default' => '$1 نتیجه یا:',
'search-interwiki-more' => '(بیشتر)',
'search-relatedarticle' => 'مرتوط',
+'searcheverything-enable' => 'همه نوم جايا نوم ديار بگرد',
'searchrelated' => 'مرتوط',
'searchall' => 'همه',
'showingresultsheader' => "{{PLURAL:$5|نتيجه '''$1''' د'''$3'''|نتيجه يا '''$1 - $2''' د'''$3'''}} سيli'''$4'''",
'search-nonefound' => 'هیژ نتیجه یی سی پی جست تو مطاوقت نکرده',
'powersearch-legend' => 'پی جوری پیشبرده',
+'powersearch-ns' => 'نوم جايا نوم ديار بگرد:',
'powersearch-togglelabel' => 'چك كردن:',
'powersearch-toggleall' => 'همه',
'powersearch-togglenone' => 'هيش كوم',
'prefs-personal' => 'پروفایل کارور',
'prefs-rc' => 'آلشتیا تازه باو',
'prefs-watchlist' => 'سیل برگ',
+'prefs-watchlist-days' => 'روزیا نه د سیل برگ نشو دئه بو:',
+'prefs-watchlist-edits-max' => 'فره تری شماره:1000',
'prefs-misc' => 'شيوسن',
'prefs-resetpass' => 'پاسورد نه آلشت بكيت',
'prefs-changeemail' => 'نشونی ایمیل تو نه آلشت بکید',
+'prefs-setemail' => 'يه گل ايميل بنیت',
+'prefs-rendering' => 'شلک و ری',
'saveprefs' => 'ذخيره كردن',
'prefs-editing' => 'د حالت ويرايشت',
'rows' => 'رديفيا:',
'columns' => 'ستينا:',
'searchresultshead' => 'پی جوری',
'stub-threshold-disabled' => 'د كار ونن',
+'recentchangesdays' => 'روزیا آلشتیا تازه باو نه نشو بیه:',
+'recentchangesdays-max' => 'فره ترین $1 {{جمی:$1|روز|روزیا}}',
+'prefs-help-recentchangescount' => 'یه شامل آلشتیا تازه،ویرگاریا بلگه و پهرستنومه یا هئ.',
+'savedprefs' => 'ویجه گیا هنی تو ذخیره بیه.',
'timezonelegend' => 'وخت راساگه',
'localtime' => 'وخت ولاتی:',
'timezoneuseserverdefault' => 'وخت راساگه',
'servertime' => 'وخت سرور:',
+'guesstimezone' => 'وا جاگرد پر بوئه',
'timezoneregion-africa' => 'افرقا',
'timezoneregion-america' => 'امركا',
'timezoneregion-antarctica' => 'قطو هار ونه',
'timezoneregion-europe' => 'اوروپا',
'timezoneregion-indian' => 'جهوناو هند',
'timezoneregion-pacific' => 'جهوناو آروم',
+'allowemail' => 'ایمیل سی کاروریا هنی فعال کو',
'prefs-searchoptions' => 'پی جوری',
'prefs-namespaces' => 'نوم جایا',
'default' => 'پيش فرض',
'prefs-files' => 'فايلا',
+'prefs-emailconfirm-label' => 'مئکم کردن ایمیل:',
'youremail' => 'ايميل:',
+'username' => '{{جنس:$1|نوم کاروری}}:',
+'uid' => '{{جنس:$1|کارور}}آی دی:',
+'prefs-memberingroups' => '{{جنس:$2|اندوم}} {{جمی:$1|گرویا|گرویا}}:',
+'prefs-registration' => 'موقع ثوت نام:',
'yourrealname' => 'نوم راستكی:',
'yourlanguage' => 'زون:',
+'yourvariant' => 'محتوا آلشتگر زون:',
'yournick' => 'امضا تازه:',
+'yourgender' => 'شما بیشتر میهایت که چه جوری گوته بوئه؟',
+'gender-unknown' => 'مه میهام چی یی نموئم',
+'gender-male' => 'وه(پیا) بلگه یا ویکی نه ویرایشت می که',
+'gender-female' => 'وه(زئنه)بلگه یا ویکی نه ویرایشت می که',
'email' => 'پیومک برقی',
'prefs-help-email' => 'نشونی ایمیل اختیاری هئ.اما سی بازجست پاسورد دش نیاز بوئه.شما باید پاسوردتونه د ویر بوریت',
'prefs-help-email-others' => 'شما می تونید سی پیوند گرتن تو وا نهایین ایمیل مئن یه هوم پیوند د بلگه کاروری یا بلگه چک چنه تو انتخاو بکید.
نشونی ایمیلتو وختی که کاروریا هنی وا تو پیوند می گرن دیار نی.',
+'prefs-help-email-required' => 'نشونی ایمیل لازم هئ.',
+'prefs-info' => 'دونسمنیا اولیه',
+'prefs-i18n' => 'جهون ولاتمنی',
+'prefs-signature' => 'امضا',
+'prefs-dateformat' => 'شلک وخت',
+'prefs-advancedediting' => 'گزینه یا عمومی',
'prefs-editor' => 'ويرايشتگر',
'prefs-preview' => 'پیش سیل',
+'prefs-advancedrc' => 'گزینه یا پیشکرده',
+'prefs-advancedrendering' => 'گزینه یا پیشکرده',
+'prefs-advancedsearchoptions' => 'گزینه یا پیشکرده',
+'prefs-advancedwatchlist' => 'گزینه یا پیشکرده',
+'prefs-displayrc' => 'گزینه یا نه نشو بیه',
+'prefs-displaysearchoptions' => 'گزینه یا نه نشو بیه',
+'prefs-displaywatchlist' => 'گزینه یا نه نشو بیه',
'prefs-diffs' => 'فرخیا',
+# User preference: email validation using jQuery
+'email-address-validity-valid' => 'نشونی ایمیل دیار بیه خوئه',
+'email-address-validity-invalid' => 'یه گل نشونی ایمیل خو وارد بکید',
+
# User rights
'userrights-user-editname' => 'نوم كاروری ته وارد كو',
'editusergroup' => 'ویرایشت گرویا کاروری',
'saveusergroups' => 'ذخیره کرد گرویا کاروری',
'userrights-groupsmember' => 'اندوم:',
'userrights-reason' => 'دليل:',
+'userrights-no-interwiki' => 'شما سی ویرایشت حقوق کارور د ویکی یا هنی دسرسی ناریت.',
+'userrights-nodatabase' => 'پاگا دونسمنی $1 یا نیئش یا د ولاتنشین نئ.',
+'userrights-notallowed' => 'شما سی اضاف کردن حقوق کارور یا ورداشتنش دسرسی ناریت.',
+'userrights-changeable-col' => 'گرویایی که شما تونیت ویرایشت بکید',
+'userrights-unchangeable-col' => 'گرویایی که شما نتونیت ویرایشت بکید',
# Groups
'group' => 'گرو',
'group-bureaucrat' => 'بروکراتیا',
'group-all' => '(همه)',
+'group-user-member' => '{{جنس:$1|کارور}}',
+'group-bot-member' => '{{حنس:$1|بوت}}',
+'group-sysop-member' => '{{جنس:$1|مدیر}}',
+'group-bureaucrat-member' => '{{جنس:$1|بروکرات}}',
+
+'grouppage-user' => '{{ns:project}}:کاروریا',
+'grouppage-bot' => '{{ns:project}}:بوت یا',
+'grouppage-bureaucrat' => '{{ns:project}}:دیوونداریا',
+
# Rights
'right-read' => 'حنن بلگیا',
'right-edit' => 'ویرایشت بلگیا',
+'right-move' => 'بلگه یا جا وه جا کو',
+'right-move-subpages' => 'بلگه یا و زیر بلگه یا شونه جا وه جا کو',
+'right-move-rootuserpages' => 'بلگه یا ریشه ای کارور نه جا وه جا کو',
+'right-movefile' => 'فایلیا نه جا وه جا کو',
+'right-upload' => 'سوار کردن فايلا',
+'right-upload_by_url' => 'سوار کرد فایلیا د یو آر ال',
+'right-writeapi' => 'د نیسنن ای پی آی استفاده بکید',
+'right-delete' => 'بلگیا نه پاک کو',
+'right-browsearchive' => 'بلگه یا پاک بیه نه پی جوری کو',
+'right-undelete' => 'ای بلگه نه حذف نكيد',
+'right-suppressionlog' => 'دیئن پهرستنومه یا خصوصی',
+'right-unblockself' => 'خوشه قلف نکید',
+'right-editinterface' => 'راوط کارور نه ویرایشت کو',
+'right-editusercssjs' => 'فایلیا جاوا اسکریپت و سی اس اس کاروریا هنی نه ویرایشت کو',
+'right-editusercss' => 'فایلیا سی اس اس کاروریا هنی نه ویرایشت کو',
+'right-edituserjs' => 'فایلیا جاوا اسکریپت کاروریا هنی نه ویرایشت کو',
+'right-editmyusercss' => 'فایلیا سی اس اس کارور خوتو نه ویرایشت کو',
+'right-editmyuserjs' => 'فایلیا جاوا اسکریپت کارور خوتو نه ویرایشت کو',
+'right-viewmywatchlist' => 'سیل برگ خوتونه بوینیت',
+'right-viewmyprivateinfo' => 'دونسمنیا شصقی خوتونه بوینیت(چی نشونی ایمیل،نوم راستکی)',
+'right-editmyprivateinfo' => 'دونسمنیا شصقی خوتونه ویرایشت بکید(چی نشونی ایمیل،نوم راستکی)',
+'right-importupload' => 'دئن بلگه یا د یه گل جانیا سوار بیه',
+'right-unwatchedpages' => 'دیئن نوم گه بلگه یا دیئه نبیه',
+'right-siteadmin' => 'پاگا دونسمنی نه قلف بکید یا نکید',
+'right-sendemail' => 'سی کاروریا هنی ایمیل کل بکید',
+'right-passwordreset' => 'پاسورد ایمیلیا د نو دئه بیه نه بوینیت',
# Special:Log/newusers
'newuserlogpage' => 'راس بیه وا کارور',
+'newuserlogpagetext' => 'یه پهرستنومه راس بیئن کارور هئ.',
+
+# User rights log
+'rightslogtext' => 'یه پهرستنومه آلشتیا حقوق کارور هئ.',
# Associated actions - in the sentence "You do not have permission to X"
'action-read' => 'ای بلگه نه بحون',
'action-edit' => 'ای بلگه نه ويرايشت بكيد',
'action-createpage' => 'راس کردن بلگیا',
+'action-createtalk' => 'بلگه یا چک چنه نه راس بکید',
+'action-createaccount' => 'حساو ای کارور نه راس بکید',
+'action-minoredit' => 'ای ویرایشت نه چی یه حیرده ویرایشت نشو بیئت',
'action-move' => 'لی بلگه جا وه جا کو',
+'action-move-subpages' => 'ای بلگه و زیر بلگه یاشه جا وه جا بکید',
+'action-move-rootuserpages' => 'بلگه یا ریشه ای کارور نه جا وه جا بکید',
+'action-movefile' => 'ای فایل جا وه جا بکید',
+'action-upload' => 'ای فایل سوار بکید',
+'action-upload_by_url' => 'ای فایله نه د یو آر ال سوار بکید',
+'action-writeapi' => 'د نیسنن ای پی آی استفاده بکید',
'action-delete' => 'ای بلگه نه پاک کو',
'action-deleterevision' => 'ای بازدئین پاک کو',
+'action-deletedhistory' => 'ویرگار پاک بیه ای بلگه نه بوینیت',
+'action-browsearchive' => 'بلگه یا پاک بیه نه پی جوری بکید',
'action-undelete' => 'ای بلگه نه پاک نکو',
+'action-suppressionlog' => 'ای پهرستنومه خصوصی نه بوینیت',
+'action-block' => 'ای کارور نه د ویرایشت کردن منع کو',
+'action-protect' => 'ریترازیا حفاظت د ای بلگه نه آلشت بکید',
+'action-import' => 'بلگه یا نه د ویکی هنی وارد بکید',
+'action-importupload' => 'بلگه یا نه د فایل سوار بیه وارد بکید',
+'action-unwatchedpages' => 'دیئن نوم گه بلگه یا دیئه نبیه',
+'action-siteadmin' => 'پاگا دونسمنی نه قلف بکید یا نکید',
'action-sendemail' => 'ایمیلیانه کل کو',
+'action-editmywatchlist' => 'سیل برگ خوتونه ویرایشت بکید',
+'action-viewmywatchlist' => 'سیل برگ خوتونه بوینیت',
+'action-viewmyprivateinfo' => 'دونسمنیا خوتونه بوینیت',
+'action-editmyprivateinfo' => 'دونسمنیا شصقی خوتونه ویرایشت بکید',
# Recent changes
'nchanges' => '$1 {{جمی:$1|آلشت|آلشتیا}}',
+'enhancedrc-since-last-visit' => '$1 {{جمی:$1|د آخری دیئن}}',
'enhancedrc-history' => 'ويرگار',
'recentchanges' => 'تغيريا تازه',
'recentchanges-legend' => 'گزينه يا آلشتيا تازه',
'recentchanges-label-minor' => 'يه ويرايشت كؤچكيه',
'recentchanges-label-bot' => 'ای ويرايشت نه يه بوت انجوم ديئه',
'recentchanges-label-unpatrolled' => 'ای ويرايشت هنی تيه واداشت نبيه',
+'recentchanges-legend-newpage' => '(همچنو بوینیت [[ویجه:بلگیا تازه|نوم گه بلگیا تازه]])',
'rcnotefrom' => 'د هار آلشتیا د $2 هیئن(د بال د $1 نشون دئه بیه)',
'rclistfrom' => 'آلشتیا تازه ایی که وا $1 شرو بیه نشونش بئه',
'rcshowhideminor' => 'ويرايشتيا کؤچک $1',
'rcshowhidebots' => '$1 رواتيا یا بوتيا',
-'rcshowhideliu' => '$1 کارورياداخل بيه',
+'rcshowhideliu' => '$1 کاروريا ثوت نام کرده',
'rcshowhideanons' => '$1 کاروريا ناشناس',
'rcshowhidepatr' => '$1 ویرایشتیا تیه پرس بیه',
'rcshowhidemine' => 'ويرايشتيا مه$1',
'minoreditletter' => 'م',
'newpageletter' => 'ن',
'boteditletter' => 'ب',
+'number_of_watching_users_pageview' => '[$1 دینه {{جمی:$1|کارور|کاروریا}}]',
+'rc_categories' => 'دسه یا نه محدود کو(وا "|" جگا بوئن',
'rc_categories_any' => 'هرکوم',
+'rc-change-size-new' => '$1 {{جمی:$1|بایت|بایتیا}} نها آلشت',
+'newsectionsummary' => '/* $1 */ بخش تازه',
'rc-enhanced-expand' => 'جزيات نشون بيئه',
'rc-enhanced-hide' => 'جزياته قام كو',
+'rc-old-title' => 'ذاتا چی "$1" راس بیه',
# Recent changes linked
'recentchangeslinked' => 'تغيريا مرتبط',
+'recentchangeslinked-feed' => 'آلشتیا مرتبط',
'recentchangeslinked-toolbox' => 'تغيريا مرتبط',
'recentchangeslinked-title' => 'آلشتيا مرتوط وا $1',
'recentchangeslinked-summary' => 'ای نوم گه تازه د بلگیایی که وا بلگیا ویجه هوم پیوند بینه آلشت بیه(یا سی اندومیا دسه بنی بیه)
# Upload
'upload' => 'بلم گير كردن فايلا',
+'uploadbtn' => 'سوار کردن فایل',
+'reuploaddesc' => 'سوار کردن نه رد بکید و د ورئردیت جابلگ سوارکرد',
+'uploadnologin' => 'وارد نبیه',
+'uploadnologintext' => 'لطفن $1 سی سوارکرد جانیایا.',
+'uploaderror' => 'خطا د سوار کردن',
+'uploadlog' => 'پهرستنومه سوارکرد',
'uploadlogpage' => 'سوارکرد',
'filename' => 'نوم فایل',
'filedesc' => 'چكسته',
'fileuploadsummary' => 'چکسه',
+'filereuploadsummary' => 'آلشتیا فایل:',
'filesource' => 'سرچشمه:',
+'uploadedfiles' => 'جانیایا سواربیه',
+'badfilename' => 'نوم جانیا د "$1" آلشت بیه.',
+'empty-file' => 'فایلی که دئی ته حالی بیه.',
+'file-too-large' => 'فایلی که دئی ته فره گپ بی.',
+'filename-tooshort' => 'نوم فایل فره کؤچکه.',
+'illegal-filename' => 'نوم فایل اجاره ندئه بیه.',
+'unknown-error' => 'یه گل خطا نادیار ری ون کرده.',
+'savefile' => 'جانیا نه ذخیره کو',
'uploadedimage' => 'سوارکرد"[[$1]]"',
+'overwroteimage' => 'یه گل نسقه تازه د "[[$1]]" سوار بیه',
+'uploaddisabled' => 'سوار کردن د کار نئ.',
+'copyuploaddisabled' => 'سوار کردن وا یو آر ال د کار نئ.',
+'uploadfromurl-queued' => 'سوارکرد تو ها د گئ.',
+'uploaddisabledtext' => 'سوار کرد فایلیا د کار نئ.',
'upload-source' => 'سرچشمه فایل',
+'sourcefilename' => 'سرچشمه نوم جانیا:',
+'sourceurl' => 'سرچشمه يو آر ال:',
+'destfilename' => 'نوم فایل مقصد:',
+'watchthisupload' => 'ای جانیا نه بوینیت',
+'upload-success-subj' => 'سوار کرد خوش سرانجوم',
+'upload-success-msg' => 'سوارکرد شما سی [$2] خوو بی.وه د ایچه هئش:[[:{{ns:file}}:$1]]',
+'upload-failure-subj' => 'مشگل د سوارکردن',
+'upload-failure-msg' => 'یه گل مشلگل د سوارکردتو سی [$2] بی:$1',
+
+'upload-proto-error' => 'پروتکل نادروس',
+'upload-file-error' => 'خطا مینونه',
+'upload-misc-error' => 'خطا سوار کرد ناشناخته',
+'upload-unknown-size' => 'انازه نادیار',
+'upload-copy-upload-invalid-domain' => 'ورداشتن سوارکردیا د ای پوشگئر د دسرس نئ.',
+
+# File backend
+'backend-fail-notexists' => 'فایل $1 وجود ناره.',
+'backend-fail-delete' => 'نبوئه جانیا $1 پاک بوئه',
+'backend-fail-describe' => 'نبوئه گپ دونسمنیا سی جانیا"$1" آلشت بوئه.',
+'backend-fail-store' => 'نبوئه جانیا "$1" د "$2" امبار بوئه.',
+'backend-fail-move' => 'نبوئه جانیا "$1" د "$2" جا وه جا بوئه',
+'backend-fail-opentemp' => 'نبوئه جانیا موقتی وا بوئه.',
+'backend-fail-writetemp' => 'نبوئه د جانیا موقتی چی بنیسیت.',
+'backend-fail-read' => 'نبوئه جانیا"$1" حنه بوئه.',
+
+# Lock manager
+'lockmanager-fail-closelock' => 'نبوئه قلف جانیا سی "$1" بسه بوئه.',
+'lockmanager-fail-openlock' => 'نبوئه قلف جانیا سی "$1" وا بوئه.',
+
+# Special:UploadStash
+'uploadstash-refresh' => 'نومه گه جانیایا نه د نو تازه کو',
# img_auth script messages
'img-auth-accessdenied' => 'دسرسی منع بی',
+'img-auth-nofile' => 'فایل $1 وجود ناره.',
+
+# HTTP errors
+'http-invalid-url' => 'یو آر ال نامعتور:$1',
+'http-read-error' => 'خطا د حنن اچ تی تی پی.',
+
+# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
+'upload-curl-error28' => 'تموم بیئن مئلت سی سوار کرد',
'license' => 'ليانس دار بيئن',
'license-header' => 'د شكل ليسانس دار بيئن',
+'nolicense' => 'هیچی انتخاو نبیه',
+'license-nopreview' => '(پیش سیل د دسرس نئ)',
+'upload_source_file' => '(یه گل فایل د انجومیار تو)',
# Special:ListFiles
+'listfiles-summary' => 'ای بلگه یا ویجه همه جانیایا سوار بیه نه نشو می ئین.',
+'listfiles_search_for' => 'پی جوری سی نوم رسانه:',
'imgfile' => 'فايل',
+'listfiles' => 'نوم گه فایل',
'listfiles_thumb' => 'بن کلکی',
'listfiles_date' => 'تاريخ',
'listfiles_name' => 'نوم',
'filehist-datetime' => 'ويرگار/وخت',
'filehist-thumb' => 'عسگ كؤچك بيه',
'filehist-thumbtext' => 'كؤچك كردن سی نسقه چی $1',
+'filehist-nothumb' => 'هیچ بن کلیکی نئ',
'filehist-user' => 'كارور',
'filehist-dimensions' => 'بعديا',
'filehist-filesize' => 'انازه فایل',
'filehist-comment' => 'نظر',
+'filehist-missing' => 'گم بیئن جانیا',
'imagelinks' => 'استفاده د فايل',
'linkstoimage' => 'دمال بيه {{PLURAL:$1|ديس ونيا بلگه|$1 ديس ون بلگيا}} دای فایل:',
'nolinkstoimage' => 'ایچه هیژ بلگه ای سی هوم پیوند بیئن وا ای فایل نی',
+'morelinkstoimage' => ' [[ویجه:چه هوم پیوندی ها ایچه/$1|هوم پیوندیا هنی]]سی ای فایل بونیت.',
+'sharedupload' => 'ای جانیا که د $1 هئ شایت د پروجه یا هنی استفاده بیه.',
'sharedupload-desc-here' => 'فایلی که د $1 شایت د مئن پروجیا هنی استفاده بیه.
توضی دباره[$2 file description page] د هار نشو دئئه بیه',
+'filepage-nofile' => 'چنو فایلی وا ای نوم نئ.',
+'uploadnewversion-linktext' => 'یه گل نسقه تازه د ای جانیا سوار بکید',
+'shared-repo-from' => 'د $1',
+
+# File reversion
+'filerevert-comment' => 'دليل:',
+'filerevert-submit' => 'ورگنین',
# File deletion
+'filedelete' => '$1 پاک کو',
+'filedelete-legend' => 'فایل نه پاک کو',
'filedelete-comment' => 'دليل:',
'filedelete-submit' => 'پاك كردن',
+'filedelete-success' => '$1 پاک بیه.',
+'filedelete-nofile' => "'''$1''' وجود ناره.",
+'filedelete-otherreason' => 'دلیل هنی:',
+'filedelete-reason-otherlist' => 'دليل هنی',
+'filedelete-edit-reasonlist' => 'دلیلیا پاک کردنه نه ویرایشت بکید',
+'filedelete-maintenance-title' => 'نبوئه ای فایل پاک بوئه',
# MIME search
+'mimesearch' => 'پی جوری ام آی ام ای',
'download' => 'گرتن',
+# Unwatched pages
+'unwatchedpages' => 'بلگه یا ندئیه بیه',
+
# Unused templates
+'unusedtemplates' => 'قالویا وه کار نبرده بیه.',
'unusedtemplateswlh' => 'هوم پیوندیا هنی',
# Random page
'randompage' => 'بلگه بختكی',
# Random page in category
+'randomincategory' => 'بلگه بختی د ای دسه',
+'randomincategory-invalidcategory' => '"$1" نوم دسه معتوری نئ.',
+'randomincategory-nopages' => 'هیچ بلگه ای د ای [[:دسه نئ:$1|$1]] دسه.',
'randomincategory-selectcategory-submit' => 'رو',
# Statistics
'statistics' => 'آماريا',
+'statistics-header-pages' => 'بلگه آماریا',
+'statistics-header-edits' => 'آماریا نه ویرایشت بکید',
+'statistics-header-views' => 'آماریا نه بوینیت',
+'statistics-header-users' => 'آماریا کارور',
+'statistics-header-hooks' => 'آماریا هنی',
+'statistics-articles' => 'بلگه یا مینونه',
'statistics-pages' => 'بلگیا',
+'statistics-files' => 'جانیا یا سوار بیه',
+'statistics-views-total' => 'همه نه بوینیت',
+'statistics-views-peredit' => 'هر ویرایشت نه بوینیت',
+'statistics-users' => 'ثوت نام بیه [[ویجه:نوم گه کاروریا|کاروریا]]',
'statistics-users-active' => 'کاروریا کارکو',
+'statistics-mostpopular' => 'بلگه یایی که بیشتر دیئه بینه',
'pageswithprop-submit' => 'رو',
'brokenredirects-edit' => 'ویرایشت',
'brokenredirects-delete' => 'پاك كردن',
+'withoutinterwiki' => 'بلگه یایی که هوم پیوند زون نارن',
'withoutinterwiki-legend' => 'پیشون',
'withoutinterwiki-submit' => 'نشون دائن',
# Miscellaneous special pages
-'nbytes' => '$1{{PLURAL:$1|كلی|بايت|بايت}}',
+'nbytes' => '$1{{جمی:$1|كلی|بايت|بايت}}',
+'ncategories' => '{{جمی:$1|دسه|دسه يا}}',
+'ninterwikis' => '$1 {{جمی:$1|مئن ویکی|مئن ویکیا}}',
+'nlinks' => '$1 {{جمی:$1|هوم پیوند|هوم پیوندیا}}',
'nmembers' => '$1 {{PLURAL:$1|اندوم|اندوميا}}',
+'nmemberschanged' => '$1 → $2 {{جمی:$2|اندوم|اندومیا}}',
+'nviews' => '$1 {{جمی:$1|دیئن|دیئنیا}}',
+'nimagelinks' => '$1 {{جمی:$1|بلگه|بلگيا}} استفاده بیه',
+'ntransclusions' => '$1 {{جمی:$1|بلگه|بلگيا}} استفاده بیه',
+'lonelypages' => 'بلگه یا تک منه',
+'uncategorizedpages' => 'بلگه یا دسه بنی نبیه',
+'uncategorizedcategories' => 'دسه یا دسه بنی نبیه',
+'uncategorizedimages' => 'فایلیا دسه بنی نبیه',
+'uncategorizedtemplates' => 'قالویا دسه بنی نبیه',
+'unusedcategories' => 'دسه یا استفاده نبیه',
+'unusedimages' => 'فایلیا استفاده نبیه',
+'popularpages' => 'بلگه یا حاستنی',
+'wantedcategories' => 'بلگه یا حاستنی',
+'wantedpages' => 'بلگه یا حاستنی',
+'wantedfiles' => 'فایلیا حاستنی',
+'wantedtemplates' => 'قالویا حاستنی',
+'mostlinked' => 'بلگه یا که بیشتر هوم پیوند بینه',
+'mostlinkedcategories' => 'دسه یایی که بیشتر هوم پیوند بیه',
+'mostlinkedtemplates' => 'قالویایی که بیشتر هوم پیوند بینه',
+'mostcategories' => 'بلگه یا که بیشتر دسه بنی بینه',
+'mostimages' => 'فایلیایی که بیشتر هوم پیوند بینه',
'prefixindex' => 'همه بلگيا وا پيشون',
+'shortpages' => 'بلگه یا کؤچک',
+'longpages' => 'بلگه یا گپ',
+'protectedpages' => 'بلگه یا حفاظت بيه',
+'listusers' => 'نوم گه کارور',
+'listusers-editsonly' => 'فقط کاروریایی که ویرایشت می کن نشو بیه',
'usercreated' => '{{جنسیت:$3|راس بیه}}د $1 at $2',
'newpages' => 'بلگيا نو',
+'newpages-username' => 'نوم كاروری:',
'move' => 'جاوه جا بوئيت',
+'movethispage' => 'ای بگله نه جا وه جا كو',
'pager-newer-n' => '{{جمی:$1|وانها تر 1وانها تر $1}}',
'pager-older-n' => '{{جمی:$1|گپسالتر 1|گپسالتر $1}}',
'booksources-search-legend' => 'پی جوری سی سرچشمه یا کتاو',
'booksources-go' => 'رو',
+# Special:Log
+'log' => 'نیسنن رخ ونیا',
+'all-logs-page' => 'همه پهرستنومه یا عمومی',
+
# Special:AllPages
'allpages' => 'همه بلگيا',
'alphaindexline' => '$1 د
$2',
'allarticles' => 'همه بلگيا',
'allpagessubmit' => 'رو',
+'allpagesbadtitle' => 'عنوان بلگه حاسته بیه معتور نی،یا یه گل مئن زونی یا مئن ویکی عنوان غلطه.
+یه شایت شومل یکی با یا بیشتر کاراکتریا نبوئه که سی ای موضوعیا استفاده بوئن',
# Special:Categories
'categories' => 'دسه يا',
+# Special:DeletedContributions
+'deletedcontributions' => 'هومیاریا پاک بیه کارور',
+
# Special:LinkSearch
+'linksearch-ns' => 'نوم جا:',
'linksearch-line' => '$1 داره د $2 هوم پیوند بوئه',
+# Special:ListUsers
+'listusers-noresult' => 'هیچ کاروری پیدا نبی',
+
+# Special:ActiveUsers
+'activeusers' => 'نوم گه کاروریا کارکو',
+'activeusers-noresult' => 'هیچ کاروری پیدا نبی',
+
# Special:ListGroupRights
'listgrouprights-members' => '(نوم گه اندومیا)',
# Email user
'emailuser' => 'ای كارور نه ايميل كو',
+'emailuser-title-target' => 'ایمیل سی ای {{جنس:$1|کارور}}',
+'emailpage' => 'ایمیل کارور',
+'emailusername' => 'نوم كاروری:',
# Watchlist
'watchlist' => 'سیل برگ',
'mywatchlist' => 'سیل برگ',
'watchlistfor2' => 'سي $1 $2',
+'watchnologin' => 'وارد نبیه',
+'watchnologintext' => 'شما سی آلشت دئن سیل برگتو با [[ویجه:وامین اومائن کارور|وامین اومائه]]',
'watch' => 'سيل كردن',
'unwatch' => 'ديه نبيه',
+'notanarticle' => 'مینونه هیچ بلگه ای نئ',
'watchlist-details' => '{{جمی:$1|$1 بلگه|$1 بلگیا}} د سیل برگتو هیش بلگه قسه کردن نی .',
+'wlheader-enotif' => 'وارسیاری ایمیل فعال بیه.',
'wlshowlast' => 'آخرین$1 ساعتیا $2و روزیا $3 نشو بیئه',
'watchlist-options' => 'گزینیا سیل برگ',
+'enotif_mailer' => '{{نوم سیلجا}} وارسیاری ایمیل زننه',
+'enotif_impersonal_salutation' => '{{نوم سیلجا}} کارور',
+
# Delete
+'excontent' => 'مینونه :"$1" بی',
+'exbeforeblank' => 'مینونه حالی دمایی:"$1" بی',
'actioncomplete' => 'عملكرد كامل بيه',
'actionfailed' => 'عملكرد شكست حرده',
'dellogpage' => 'لاگ پاك كردن',
+'deletionlog' => 'پهرستنومه پاک بیئن',
# Rollback
'rollbacklink' => 'ورگشتن',
+# Edit tokens
+'sessionfailure-title' => 'شکست حردن نشینگه',
+
# Protect
'protectlogpage' => 'حفاظت کردن',
'protectedarticle' => 'حفاظت بيه [[$1]]',
+'modifiedarticleprotection' => 'ریتراز حفاظت د "[[$1]]" آلشت بیه',
+'protect-title' => 'ریتراز حفاظت د "$1" آلشت بیه',
+'prot_1movedto2' => '[[$1]] د [[$2]] جا وه جا بی',
+'protect-default' => 'همه کاروریا اجازه دارن',
+'protect-othertime' => 'وخت هنی:',
+'restriction-type' => 'دسرسی:',
+
+# Restrictions (nouns)
+'restriction-move' => 'جاوه جا بوئيت',
+'restriction-upload' => 'سوار کرد',
+
+# Restriction levels
+'restriction-level-all' => 'هر ریترازی',
# Undelete
'undeletelink' => 'بوين/دوواره آماده با',
'undeleteviewlink' => 'ديئن',
+'cannotundelete' => 'زنه کردن انجوم نبی:$1',
+'undelete-error-short' => 'خطا پاک نبیئن جانیا:$1',
# Namespace form on various pages
'namespace' => 'نوم جا:',
'sp-contributions-newbies' => 'فقط هومیاری یایی که د حساو تازه بیه نشون بئه',
'sp-contributions-blocklog' => 'قلف',
'sp-contributions-uploads' => 'سواركرديا',
+'sp-contributions-logs' => 'نیسنن رخ ونیا',
'sp-contributions-talk' => 'چك چنه',
'sp-contributions-search' => 'سی هومیاریا پی جور با',
'sp-contributions-username' => 'نوم نشون آی پی يا نوم كاروری:',
'whatlinkshere-filters' => 'فيلتريا',
# Block/unblock
+'block' => 'منع کارور',
+'blockip' => 'منع کارور',
+'ipbother' => 'وخت هنی:',
'ipboptions' => '2 ساعتیا:2 ساعت,1 رو:1 رو,3 روزا:3 رو,1 هفته:1 هفته,2 هفته یا:2 هفته,1 ما:1 ما,3 ما:3 میا,6 ما:6 مایا,1 سال:1سال,حد ناره:حد ناره',
+'ipbhidename' => 'نوم کاروری نه سی ویرایشت یا و نوم گه یا قام کو',
+'unblockip' => 'کارور منع نبیه',
+'blocklist' => 'كاروريا منع بيه',
'ipblocklist' => 'كاروريا منع بيه',
+'ipblocklist-legend' => 'یه گل کارور منع بیه بجوریت',
+'blocklist-timestamp' => 'چسب ون وخت',
+'blocklist-nousertalk' => 'نبوئه بلگه چک چنه خوتونه ویرایشت بکید',
+'ipblocklist-empty' => 'جاگه نوم گه حالیه',
'blocklink' => 'بسته بوئه',
'unblocklink' => 'بی قطی',
'change-blocklink' => 'اجازه نديئن سی آلشت',
'blocklogpage' => 'قلف',
'blocklogentry' => ' [[$1]] وا یه گل وخت تموم بیئن $2 و $3 قلف بیه',
'block-log-flags-nocreate' => 'حساو راس کردن عاجز بیه.',
+'block-log-flags-nousertalk' => 'نبوئه بلگه چک چنه خوتونه ویرایشت بکید',
# Move page
+'move-page' => '$1 جا وه جا کو',
+'movenotallowed' => 'شما وه جا وه جا کردن بلگه دسرسی ناریت',
+'movenotallowedfile' => 'شما وه جا وه جا کردن جانیایا دسرسی ناریت',
+'movepagebtn' => 'بلگه جا وه جا کو',
'movelogpage' => 'جاوه جا کردن',
+'movelogpagetext' => 'د هار یه گل نوم گه د جا وه جایی یا بلگه هئ',
'revertmove' => 'لرستن',
+'delete_and_move' => 'پاک و جا وه جا بوئه',
# Export
'export' => 'وه صحرا ديئن بلگيا',
+'export-download' => 'ذخیره کردن جانیا',
# Namespace 8 related
'allmessagesname' => 'نوم',
'allmessagesdefault' => 'سفارشت متنی پيش فرض',
+'allmessages-language' => 'زون:',
+'allmessages-filter-submit' => 'رو',
# Thumbnails
'thumbnail-more' => 'گپ كردن',
+'filemissing' => 'گم بیئن جانیا',
'thumbnail_error' => 'خطا د راس بیئن بن کلئکی:$1',
+# Special:Import
+'import-upload-filename' => 'نوم جانیا:',
+'import-comment' => 'ویر و باور:',
+'importcantopen' => 'نبوئه جانیا دئه بیه نه وا بکید',
+'importnofile' => 'هیچ جانیا دئه بیه ای سوار نبیه.',
+'import-upload' => 'سوار کرد دونسمنیا ایکس ام ال',
+'import-token-mismatch' => 'کمبود د دونسمنیا نشینگه.
+لطفن هنی کوششت بکید.',
+
+# Import log
+'importlogpage' => 'پهرستنومه دئن',
+
# Tooltip help for the actions
'tooltip-pt-userpage' => 'بلگه كارورتو',
'tooltip-pt-mytalk' => 'بلگه قسه كردن شما',
'tooltip-diff' => 'آلشتیا نه که شما د ای متن راس کردیته نشو بیئه',
'tooltip-compareselectedversions' => 'فرخیا مینجا دو تا د دو بار دیئن ای بلگه نه بوینیت',
'tooltip-watch' => 'ای بلگه نه د سیل برگتو اضاف بکید',
+'tooltip-upload' => 'شرو د سوار کرد',
'tooltip-rollback' => '"ورگشتن" لرستن د حالت اول سی ای بلگه که سی يه كه هومياری نيايی اصلاح بيه وا يه پورنسن',
'tooltip-undo' => 'انجوم نگرتن ای ویرایشت ورگن و همه فرمیا ویرایشت تانه که حالت پیش سیل واکو.یه اجازه میئه سی اضاف کردن یه دلیل د چکسته.',
'tooltip-summary' => 'يه چكسته كؤچك وارد بكيد',
'interlanguage-link-title' => '$1-$2',
+# Info page
+'pageinfo-language' => 'بلگه مینونه زون',
+'pageinfo-content-model' => 'شلگ مینونه بلگه',
+'pageinfo-category-files' => 'شماره جانیایا',
+
+# Patrol log
+'patrol-log-page' => 'پهرستنومه گشتن',
+
+# Image deletion
+'filedeleteerror-short' => 'خطا پاک نبیئن جانیا:$1',
+
# Browsing diffs
'previousdiff' => '← ويرايشت كۈهنه تر',
'nextdiff' => 'ويرايشت تازه تر',
'file-info-size' => '$1 × $2 پیکسل, انازه فایل: $3, MIME نوع: $4',
'file-nohires' => 'عسك ون بالاتري دش ني',
'svg-long-desc' => 'اس وی جی فايل.نومنا $1 $2 پيكسل',
-'show-big-image' => 'تموم رخ ون',
+'show-big-image' => 'فایل اصلی',
+'file-info-png-repeat' => '$1 بازی کرده{{جمی:$1|وخت|وختیا}}',
+
+# Special:NewFiles
+'newimages' => 'عسگدونی جانیایا تازه',
+'newimages-summary' => 'ای بلگه یا ویجه همه جانیایا سوار بیه نه نشو می ئین.',
+'newimages-label' => 'نوم جانیا(یا بشقی د وه):',
+'sp-newimages-showfrom' => 'جانیایا تازه نه که $2 ، $2 شرو بینه نشو بیه',
+
+# Human-readable timestamps
+'monday-at' => 'دوشمه د $1',
# Bad image list
'bad_image_list' => 'دونسمنديانه وه ای شلگ وارد بكيت:
*جی پی اس گپ حالت
*جی پی اس همه حالت',
+# Exif tags
+'exif-datetime' => 'آلشت دئن وخت و دمون جانیا',
+'exif-make' => 'سازنه دیربین',
+'exif-usercomment' => 'ویر و باوریا کارور',
+'exif-relatedsoundfile' => 'جانیا دنگ دار مرتوط',
+'exif-datetimeoriginal' => 'دمون و وخت راس بیئن دونسمنیا',
+'exif-filesource' => 'سرچشمه جانیا',
+'exif-gpstimestamp' => 'وخت جی پی اس (ساعت اتمی)',
+'exif-jpegfilecomment' => 'ویر و باور فایل پی ان جی',
+'exif-citycreated' => 'شهری که عسگ دش گرته بیه',
+'exif-citydest' => 'شهر دیار بیه',
+'exif-languagecode' => 'زون',
+'exif-datetimeexpires' => 'وا نها دش استفاده نبوئه',
+'exif-pngfilecomment' => 'ویر و باور فایل جی پی ان جی',
+'exif-giffilecomment' => 'ویر و باور فایل جی آی اف',
+
+'exif-componentsconfiguration-0' => 'نی یش',
+
+'exif-exposureprogram-1' => 'دسی',
+
+# Pseudotags used for GPSAltitudeRef
+'exif-gpsaltitude-above-sealevel' => '$1 {{جمی:$1|متر|متریا}} وارؤ د ریتراز دریا',
+'exif-gpsaltitude-below-sealevel' => '$1 {{جمی:$1|متر|متریا}} وارؤ د ریتراز دریا',
+
+'exif-gpsdop-good' => 'خو ($1)',
+
+'exif-iimcategory-ace' => 'هنریا، رهزیشت و زیستگه',
+
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'همه شو',
'namespacesall' => 'همه شو',
'monthsall' => 'همه',
+# Multipage image navigation
+'imgmultigo' => 'رؤ!',
+
+# Language selector for translatable SVGs
+'img-lang-go' => 'رو',
+
+# Table pager
+'table_pager_limit_submit' => 'رو',
+
+# Auto-summaries
+'autosumm-replace' => 'مینونه وا "َ$1" جاگزین بی',
+
# Watchlist editing tools
'watchlisttools-view' => 'آلشتیا مرتوط نه بوینیت',
'watchlisttools-edit' => 'سیل برگ بوینیتو و ویرایشت بکید',
# Core parser functions
'duplicate-defaultsort' => 'زنهار کلیت پیش فرض جور بیه $2 تازه ای یا کلید پیش فرض جوربیه $1 رد بیه.',
+# Special:Version
+'version-ext-license' => 'ليسانس',
+'version-ext-colheader-version' => 'نسقه',
+'version-ext-colheader-license' => 'ليسانس',
+'version-ext-colheader-credits' => 'نیسنه یا',
+
+# Special:Redirect
+'redirect-submit' => 'رو',
+'redirect-file' => 'نوم جانیا',
+
+# Special:FileDuplicateSearch
+'fileduplicatesearch-filename' => 'نوم جانیا:',
+
# Special:SpecialPages
'specialpages' => 'بلگيا ويجه',
+'specialpages-group-changes' => 'آلشتیا تازه و پهرستنومه یا',
+'specialpages-group-media' => 'گزارشتیا رسانه و سوارکردیا',
+'specialpages-group-users' => 'کاروریا و حقوق',
+'specialpages-group-pages' => 'نوم گه بلگه یا',
# External image whitelist
'external_image_whitelist' => 'یه خط نه ول بکید چی وه<pre>',
# Special:Tags
'tag-filter' => 'فيلتر [[Special:Tags|Tag]]:',
+'tags-display-header' => 'دیاری کردن د نوم گه آلشتیا',
+
+# Special:ComparePages
+'compare-title-not-exists' => 'سرون مشقص بیه وجود ناره.',
+'compare-revision-not-exists' => 'وانئری که شما تی دیار کردیته وجود ناره.',
+
+# New logging system
+'revdelete-content-hid' => 'مینونه قام بیه',
+'revdelete-uname-hid' => 'نوم کاروری قام بیه',
+'revdelete-content-unhid' => 'مینونه قام نبیه',
+'revdelete-uname-unhid' => 'نوم کاروری قام نبیه',
+
+# Feedback
+'feedback-close' => 'انجوم بی',
+
+# API errors
+'api-error-badaccess-groups' => 'شما سی سوار کرد جانیایا د ای ویکی اجازه ناریت.',
+'api-error-copyuploaddisabled' => 'سوار کردن وا یو آر ال دی ای سرور غیرفعال بیه.',
+'api-error-filename-tooshort' => 'نوم جانیا فره کؤچکه.',
+'api-error-illegal-filename' => 'نوم جانیا اجازه دئه نئ.',
+'api-error-mustbeloggedin' => 'شما سی سوارکردن فایلیا با بیایت وامین',
+
+# Special:ExpandTemplates
+'expand_templates_remove_comments' => 'جا وه جا بیئن ویر و باوریا',
+# Unknown messages
+'uploadinvalidxml' => 'ایکس ام الی که سوار بیه نبوئه نوتیج با.',
);
$messages = array(
# User preference toggles
'tog-underline' => 'Pabraukti nuorodas:',
-'tog-justify' => 'Lygiuoti pastraipas pagal abi puses',
'tog-hideminor' => 'Slėpti smulkius pakeitimus naujausių keitimų sąraše',
'tog-hidepatrolled' => 'Slėpti patikrintus keitimus paskutinių keitimų sąraše',
'tog-newpageshidepatrolled' => 'Slėpti patikrintus puslapius iš naujausių straipsnių sąrašo',
'tog-numberheadings' => 'Automatiškai numeruoti skyrelius',
'tog-showtoolbar' => 'Rodyti redagavimo įrankinę (JavaScript)',
'tog-editondblclick' => 'Puslapių redagavimas dvigubu spustelėjimu (JavaScript)',
-'tog-editsection' => 'Įjungti skyrelių redagavimą naudojant nuorodas [taisyti]',
'tog-editsectiononrightclick' => 'Įjungti skyrelių redagavimą paspaudus skyrelio pavadinimą dešiniuoju pelės klavišu (JavaScript)',
-'tog-showtoc' => 'Rodyti turinį, jei puslapyje daugiau nei 3 skyreliai',
'tog-rememberpassword' => 'Prisiminti prisijungimo informaciją šioje naršyklėje (daugiausiai $1 {{PLURAL:$1|dieną|dienas|dienų}})',
'tog-watchcreations' => 'Pridėti puslapius, kuriuos aš sukuriu, į stebimų sąrašą',
'tog-watchdefault' => 'Pridėti puslapius, kuriuos aš redaguoju, į stebimų sąrašą',
'compareselectedversions' => 'Palyginti pasirinktas versijas',
'showhideselectedversions' => 'Rodyti/slėpti pasirinktas versijas',
'editundo' => 'atšaukti',
-'diff-multi' => '($2 {{PLURAL:$2|naudotojo|naudotojų|naudotojų}} $1 {{PLURAL:$1|tarpinis keitimas nėra rodomas|tarpiniai keitimai nėra rodomi|tarpinių keitimų nėra rodoma}})',
'diff-multi-manyusers' => '(daugiau nei $2 {{PLURAL:$2|naudotojo|naudotojų|naudotojų}} $1 {{PLURAL:$1|tarpinis keitimas nėra rodomas|tarpiniai keitimai nėra rodomi|tarpinių keitimų nėra rodoma}})',
# Search results
'rows' => 'Eilutės:',
'columns' => 'Stulpeliai:',
'searchresultshead' => 'Paieškos nustatymai',
-'resultsperpage' => 'Rezultatų puslapyje:',
'stub-threshold' => 'Puslapį žymėti <a href="#" class="stub">nebaigtu</a>, jei mažesnis nei:',
'stub-threshold-disabled' => 'Išjungtas',
'recentchangesdays' => 'Rodomos dienos paskutinių keitimų sąraše:',
'watchmethod-list' => 'ieškoma naujausių keitimų stebimuose puslapiuose',
'watchlistcontains' => 'Jūsų stebimųjų sąraše yra $1 {{PLURAL:$1|puslapis|puslapiai|puslapių}}.',
'iteminvalidname' => 'Problema su elementu „$1“, neteisingas vardas...',
-'wlnote' => "{{PLURAL:$1|Rodomas '''$1''' paskutinis pakeitimas, atliktas|Rodomi '''$1''' paskutiniai pakeitimai, atlikti|Rodoma '''$1''' paskutinių pakeitimų, atliktų}} per '''$2''' {{PLURAL:$2|paskutinę valandą|paskutines valandas|paskutinių valandų}}, nuo $3 $4.",
'wlshowlast' => 'Rodyti paskutinių $1 valandų, $2 dienų ar $3 pakeitimus',
'watchlist-options' => 'Stebimųjų sąrašo parinktys',
'tooltip-pt-watchlist' => 'Puslapių sąrašas, kuriuos jūs pasirinkote stebėti.',
'tooltip-pt-mycontris' => 'Jūsų darytų keitimų sąrašas',
'tooltip-pt-login' => 'Rekomenduojame prisijungti, nors tai nėra privaloma.',
-'tooltip-pt-anonlogin' => 'Rekomenduojame prisijungti, nors tai nėra privaloma.',
'tooltip-pt-logout' => 'Atsijungti',
'tooltip-ca-talk' => 'Puslapio turinio aptarimas',
'tooltip-ca-edit' => 'Jūs galite redaguoti šį puslapį. Nepamirškite paspausti peržiūros mygtuką prieš išsaugodami.',
$messages = array(
# User preference toggles
'tog-underline' => 'Zawmna hnuairinna',
-'tog-justify' => 'Hlawm tinte tlang tirual rawh',
'tog-hideminor' => 'Siamţhatna tenau tihdanglam thar zingah tilang suh',
'tog-hidepatrolled' => 'Siamţhat venhim tihdanglam thar zingah tilang suh',
'tog-newpageshidepatrolled' => 'Phêk venhim phêk thar tlarah tilang suh',
'tog-numberheadings' => 'A thupuite amahin nambar inpêktir rawh',
'tog-showtoolbar' => 'Siamṭhatna hmanraw-liang tilang rawh (JavaScript a ngai)',
'tog-editondblclick' => 'Hmehphìrin phêk siamṭha rawh (JavaScript a ngai)',
-'tog-editsection' => 'Hlawm hrang siamṭhatna [siamṭhatna] zawmna hmangin awmtir rawh',
'tog-editsectiononrightclick' => 'Hlawm thupui ding-hmeh hmangin hlawm siamţhat theihna awmtir rawh (JavaScript a ngai)',
-'tog-showtoc' => 'A chhunga thu awm te tilang rawh (thupui 3 aia tam phêk tan)',
'tog-rememberpassword' => 'He ka rangpuifannaah hian min hre reng rawh (a rei berah ni $1 {{PLURAL:$1}})',
'tog-watchcreations' => 'Ka phêk siamte leh ka taksa hlankaite ka ralvèn zing-ah telh rawh',
'tog-watchdefault' => 'Ka phêk siamţhatte ka ralvèn zing-ah telh rawh',
'category-subcat-count' => '{{PLURAL:$2|He pawl hian he pawlpeng chauh hi a nei. |He pawl hian heng {{PLURAL:$1|pawlpéng|pawlpéng $1-te}} hi a nei, avaia $2 zingah.}}',
'category-subcat-count-limited' => "He pawl hian {{PLURAL:$1|hë pawlpéng chauh|$1 hê'ng pawlpéngte}} hi a nei.",
'category-article-count' => "{{PLURAL:$2|He pawl hian hemi phêk chauh hi a nei. | Hê'ng phek {{PLURAL:$1||$1-te}} hi he pawlah hian a awm, avaia $2 zingah.}}",
-'category-article-count-limited' => '{{PLURAL: $1 |$1He|$1 Heng}} phekte hi hë pawl, i en mékah hian a awm.',
+'category-article-count-limited' => '{{PLURAL:$1 |$1He|$1 Heng}} phekte hi hë pawl, i en mékah hian a awm.',
'category-file-count' => '{{PLURAL:$2|He pawl hian hë taksa chauh hi a kengtel.|{{PLURAL:$1|He taksa $1 |Heng taksa $1-te}} hi he pawlah hian a awm, a vaia $2 zingah}}',
'category-file-count-limited' => '{{PLURAL:$1|He taksa|$1Heng taksate}} hi hemi pawl, i en mékah hian a awm.',
'listingcontinuesabbrev' => 'chhunz.',
'lineno' => 'Tlar $1:',
'compareselectedversions' => 'Ennawnna i thlan tâkte khaikhin rawh le',
'editundo' => 'tihletna',
-'diff-multi' => '(Hmangtu {{PLURAL:$2|1-in|$2-ten}} a karlaka {{PLURAL:$2|a|an}} ennawnna {{PLURAL:$1|1|$1-te}} tihlan a ni lo)',
# Search results
'searchresults' => 'Zawn hmuhte',
'rows' => 'Tlar:',
'columns' => 'Thlur:',
'searchresultshead' => 'Zawnna',
-'resultsperpage' => 'Phêk khat tawh zât:',
'stub-threshold-disabled' => 'Tihnun a ni lo',
'recentchangesdays' => 'Tihdanglam thar ni tihlan tùr chin:',
'recentchangesdays-max' => 'A tam berah ni $1 {{PLURAL:$1||}}',
'tooltip-pt-watchlist' => 'Tihdanglam tùra i ruahman phêkte',
'tooltip-pt-mycontris' => 'I kutthawhna-ho ziahchhuahna',
'tooltip-pt-login' => 'Inziak lut tura duh i ni; amaherawhchu a ţül kher lo.',
-'tooltip-pt-anonlogin' => 'Inziak lut tura duh i ni; amaherawhchu, a ţül kher lo',
'tooltip-pt-logout' => 'Chhuahna',
'tooltip-ca-talk' => 'He phêk chungchang sawihona',
'tooltip-ca-edit' => 'Hemi phek hi i siamţha thei.
$messages = array(
# User preference toggles
'tog-underline' => 'Pasvītrot saites:',
-'tog-justify' => 'Izlīdzināt rindkopām abas malas',
'tog-hideminor' => 'Paslēpt maznozīmīgus labojumus pēdējo izmaiņu lapā',
'tog-hidepatrolled' => 'Slēpt apstiprinātās izmaņas pēdējo izmaiņu sarakstā',
'tog-newpageshidepatrolled' => 'Paslēpt pārbaudītās lapas jauno lapu sarakstā',
'tog-numberheadings' => 'Automātiski numurēt virsrakstus',
'tog-showtoolbar' => 'Rādīt rediģēšanas rīkjoslu',
'tog-editondblclick' => 'Atvērt lapu rediģēšanai ar dubultklikšķi',
-'tog-editsection' => 'Rādīt sadaļām izmainīšanas saiti "[labot]"',
'tog-editsectiononrightclick' => "Atvērt sadaļas rediģēšanas lapu, uzklikšķinot ar labo peles pogu uz sadaļas virsraksta (izmanto ''JavaScript'')",
-'tog-showtoc' => 'Parādīt satura rādītāju (lapām, kurās ir vairāk par 3 virsrakstiem)',
'tog-rememberpassword' => 'Atcerēties manu lietotājvārdu pēc pārlūka aizvēršanas (ne vairāk kā $1 {{PLURAL:$1|diena|dienas}}).',
'tog-watchcreations' => 'Pievienot manis radītās lapas un manis augšuplādētos failus uzraugāmo lapu sarakstam',
'tog-watchdefault' => 'Pievienot manis izmainītās lapas un failus uzraugāmo lapu sarakstam',
'tog-shownumberswatching' => 'Rādīt uzraudzītāju skaitu',
'tog-oldsig' => 'Pašreizējais paraksts:',
'tog-fancysig' => 'Vienkāršs paraksts (bez automātiskās saites)',
-'tog-uselivepreview' => "Lietot tūlītējo priekšskatījumu (izmanto ''JavaScript''; eksperimentāla iespēja)",
+'tog-uselivepreview' => 'Lietot tūlītējo priekšskatījumu (eksperimentāla iespēja)',
'tog-forceeditsummary' => 'Atgādināt man, ja kopsavilkuma ailīte ir tukša',
'tog-watchlisthideown' => 'Paslēpt manus labojumus uzraugāmo lapu sarakstā',
'tog-watchlisthidebots' => 'Paslēpt botu labojumus uzraugāmo lapu sarakstā',
'ok' => 'Labi',
'retrievedfrom' => 'Saturs iegūts no "$1"',
'youhavenewmessages' => 'Tev ir $1 (skatīt $2).',
-'newmessageslinkplural' => '{{PLURAL:$1|jauns vēstījums|jauni vēstījumi}}',
-'newmessagesdifflinkplural' => '{{PLURAL:$1|pēdējā izmaiņa|pēdējās izmaiņas}}',
+'youhavenewmessagesmanyusers' => 'Jums ir $1 no daudziem lietotājiem ($2).',
+'newmessageslinkplural' => '{{PLURAL:$1|jauns vēstījums|999=jauni vēstījumi}}',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|pēdējā izmaiņa|999=pēdējās izmaiņas}}',
'youhavenewmessagesmulti' => 'Tev ir jauns ziņojums: $1',
'editsection' => 'labot',
'editold' => 'labot',
# General errors
'error' => 'Kļūda',
'databaseerror' => 'Datu bāzes kļūda',
+'databaseerror-text' => 'Datu bāzes vaicājuma kļūda.
+Iespējams, tā ir programmatūras kļūda.',
'databaseerror-textcl' => 'Datu bāzes vaicājuma kļūda.',
'databaseerror-query' => 'Vaicājums: $1',
'databaseerror-function' => 'Funkcija: $1',
Tajā jābūt vismaz {{PLURAL:$1|1 zīmei|$1 zīmēm}}.',
'password-name-match' => 'Tava parole nedrīkst būt tāda pati kā tavs lietotājvārds.',
'password-login-forbidden' => 'Šī lietotājvārda un paroles izmantošana ir aizliegta.',
-'mailmypassword' => 'Atsūtīt man jaunu paroli',
+'mailmypassword' => 'Atiestatīt paroli',
'passwordremindertitle' => 'Jauna pagaidu parole no {{SITENAME}}s',
'passwordremindertext' => 'Kads (iespejams, Tu pats, no IP adreses $1)
ludza, lai nosutam Tev jaunu {{SITENAME}} ($4) paroli.
'content-not-allowed-here' => '"$1" saturs nav atļauts lapā [[$2]]',
'editwarning-warning' => 'Atstājot šo lapu tu zaudēsi izdarītās izmaiņas.
Ja esi pieteicies, jūs vari atspējot šo brīdinājumu savās izvēlēs sadaļā "rediģēšana"',
+'editpage-notsupportedcontentformat-title' => 'Satura formāts nav atbalstīts',
# Content models
'content-model-wikitext' => 'vikiteksts',
'rev-suppressed-no-diff' => "Tu nevari aplūkot šīs izmaiņas, jo viena no versijām ir '''dzēsta'''.",
'rev-delundel' => 'rādīt/slēpt',
'rev-showdeleted' => 'parādīt',
-'revisiondelete' => 'Dzēst / atjaunot versijas',
+'revisiondelete' => 'Dzēst/atjaunot versijas',
'revdelete-nooldid-title' => 'Nederīga mērķa versija',
'revdelete-no-file' => 'Norādītais fails neeksistē.',
'revdelete-show-file-submit' => 'Jā',
+'revdelete-selected' => "'''[[:$1]] {{PLURAL:$2|izvēlētā versija|izvēlētās versijas}}:'''",
+'logdelete-selected' => "'''{{PLURAL:$1|Izvēlētais reģistra ieraksts|Izvēlētie reģistra ieraksti}}:'''",
+'revdelete-text' => "'''Lapu hronoloģijā un reģistros izdzēstās versijas vēl joprojām būs redzamas, tomēr daļa informācijas nebūs pieejama publiski.''' Citi {{SITENAME}} administratori varēs apskatīt spēlto saturu un varēs to atslēpt, ja vien nav papildu ierobežojumi.",
+'revdelete-confirm' => 'Lūdzu apstiprini, ka Tu zini, ko dari, Tu apzinies sekas, tāpat Tu to dari saskaņā ar vadlīnijām.',
+'revdelete-suppress-text' => "Paslēpšanu izmantot vienīgi šādos gadījumos:
+* potenciāli apmelojoša informācija
+* nepiemērotā personīgā informācija
+*: ''mājas adrese, telefona numuri u.c.''",
'revdelete-legend' => 'Uzstādīt redzamības ierobežojumus',
-'revdelete-hide-text' => 'Paslēpt versijas tekstu',
+'revdelete-hide-text' => 'Versijas teksts',
'revdelete-hide-image' => 'Paslēpt faila saturu',
'revdelete-hide-name' => 'Paslēpt darbību un tās objektu',
-'revdelete-hide-comment' => 'Paslēpt kopsavilkumu',
-'revdelete-hide-user' => 'Paslēpt autora lietotājvārdu/IP adresi',
+'revdelete-hide-comment' => 'Kopsavilkums',
+'revdelete-hide-user' => 'Autora lietotājvārds/IP adrese',
'revdelete-hide-restricted' => 'Paslēpt datus arī no administratoriem',
'revdelete-radio-same' => '(nemainīt)',
-'revdelete-radio-set' => 'Jā',
-'revdelete-radio-unset' => 'Nē',
+'revdelete-radio-set' => 'Slēpts',
+'revdelete-radio-unset' => 'Redzams',
'revdelete-suppress' => 'Paslēpt datus arī no administratoriem',
'revdelete-unsuppress' => 'Atcelt ierobežojumus atjaunotajām versijām',
'revdelete-log' => 'Iemesls:',
$1",
'revdel-restore' => 'mainīt redzamību',
'pagehist' => 'Lapas vēsture',
-'deletedhist' => 'Vēsture dzēsta',
+'deletedhist' => 'Dzēstā vēsture',
'revdelete-modify-missing' => 'Kļūda, mainot vienumu ar ID $1: tas ir pazudis no datubāzes!',
'revdelete-reason-dropdown' => '*Biežākie dzēšanas iemesli
** autortiesību pārkāpums
** nepiemērota personīgā informācija
+** nepiemērots lietotāja vārds
** potenciāli apmelojoša informācija',
'revdelete-otherreason' => 'Cits/papildu iemesls:',
'revdelete-reasonotherlist' => 'Cits iemesls',
'showhideselectedversions' => 'Rādīt/slēpt izvēlētās versijas',
'editundo' => 'atcelt',
'diff-empty' => '(Nav atšķirību)',
-'diff-multi' => '({{PLURAL:$1|Viena starpversija|$1 starpversijas}} no {{PLURAL:$2|viena lietotāja|$2 lietotājiem}} nav parādīta)',
# Search results
'searchresults' => 'Meklēšanas rezultāti',
'prefs-email' => 'E-pasta uzstādījumi',
'prefs-rendering' => 'Izskats',
'saveprefs' => 'Saglabāt',
-'restoreprefs' => 'Atjaunot noklusētos uzstādījumus',
+'restoreprefs' => 'Atjaunot noklusētos uzstādījumus (visās sadaļās)',
'prefs-editing' => 'Rediģēšana',
'rows' => 'Rindiņu skaits:',
'columns' => 'Simbolu skaits rindiņā:',
'searchresultshead' => 'Meklēšana',
-'resultsperpage' => 'Lappusē parādāmo rezultātu skaits',
'stub-threshold' => 'Slieksnis <a href="#" class="stub">aizmetņa saites</a> formatēšanai (baiti):',
'stub-threshold-disabled' => 'Atslēgts',
'recentchangesdays' => 'Dienu skaits, kuru rādīt pēdējās izmaiņās:',
'rclistfrom' => 'Parādīt jaunas izmaiņas kopš $1',
'rcshowhideminor' => '$1 maznozīmīgos',
'rcshowhidebots' => '$1 botus',
-'rcshowhideliu' => '$1 reģistrētos',
+'rcshowhideliu' => '$1 reģistrētos lietotājus',
'rcshowhideanons' => '$1 anonīmos',
'rcshowhidepatr' => '$1 pārbaudītie labojumi',
'rcshowhidemine' => '$1 manus',
'protectedpages' => 'Aizsargātās lapas',
'protectedpages-indef' => 'Tikai bezgalīgas aizsardzības',
'protectedpages-cascade' => 'Tikai kaskādes aizsardzības',
+'protectedpages-noredirect' => 'Paslēpt pāradresācijas',
'protectedtitles' => 'Aizsargātie nosaukumi',
'protectedtitlesempty' => 'Pagaidām nevienas lapas nosaukums nav aizsargāts ar šiem paraametriem.',
'listusers' => 'Lietotāju uzskaitījums',
'delete-edit-reasonlist' => 'Izmainīt dzēšanas iemeslus',
'delete-toobig' => 'Šai lapai ir liela izmaiņu hronoloģija, vairāk nekā $1 {{PLURAL:$1|versija|versijas}}.
Šādu lapu dzēšana ir atslēgta, lai novērstu nejaušus traucējumus {{grammar:lokatīvs|{{SITENAME}}}}.',
+'deleting-backlinks-warning' => "'''Brīdinājums:''' uz lapu, ko grasies izdzēst, ved saites no citām lapām.",
# Rollback
'rollback' => 'Novērst labojumus',
'sp-contributions-newbies' => 'Rādīt jauno lietotāju devumu',
'sp-contributions-newbies-sub' => 'Jaunie lietotāji',
'sp-contributions-blocklog' => 'Bloķēšanas reģistrs',
-'sp-contributions-deleted' => 'Izdzēstais lietotāju devums',
+'sp-contributions-deleted' => 'Izdzēstais lietotāja devums',
'sp-contributions-uploads' => 'augšupielādes',
'sp-contributions-logs' => 'reģistri',
'sp-contributions-talk' => 'diskusija',
'allmessages-prefix' => 'Filtrēt pēc prefiksa:',
'allmessages-language' => 'Valoda:',
'allmessages-filter-submit' => 'Parādīt',
+'allmessages-filter-translate' => 'Tulkot',
# Thumbnails
'thumbnail-more' => 'Palielināt',
'tooltip-pt-watchlist' => 'Tevis uzraudzītās lapas',
'tooltip-pt-mycontris' => 'Tavs devums',
'tooltip-pt-login' => 'Aicinām tevi ieiet {{grammar:lokatīvs|{{SITENAME}}}}, tomēr tas nav obligāti.',
-'tooltip-pt-anonlogin' => 'Aicinām tevi ieiet {{grammar:lokatīvs|{{SITENAME}}}}, tomēr tas nav obligāti.',
'tooltip-pt-logout' => 'Iziet',
'tooltip-ca-talk' => 'Diskusija par šī raksta lapu',
'tooltip-ca-edit' => 'Izmainīt šo lapu. Lūdzam izmantot pirmskatu pirms lapas saglabāšanas.',
'spamprotectionmatch' => 'Spama filtram radās iebildumi pret šo tekstu: $1',
'spambot_username' => 'MediaWiki surogātpasta tīrīšana',
'spam_reverting' => 'Atjauno iepriekšējo versiju, kas nesatur saiti uz $1',
-'simpleantispam-label' => "Pretspama pārbaude.
- '''NEAIZPILDĪT!'''",
+'simpleantispam-label' => 'Pretspama pārbaude.
+<strong>Neaizpildiet</strong> šo!',
# Info page
'pageinfo-title' => 'Informācija par "$1"',
'file-nohires' => 'Augstāka izšķirtspēja nav pieejama.',
'svg-long-desc' => 'SVG fails, definētais izmērs $1 × $2 pikseļi, faila izmērs: $3',
'svg-long-error' => 'Nederīgs SVG fails: $1',
-'show-big-image' => 'Pilnā izmērā',
+'show-big-image' => 'Sākotnējais fails',
'show-big-image-preview' => 'Šī priekšskata izmērs: $1.',
'show-big-image-other' => '{{PLURAL:$2|Cits izmērs|Citi izmēri}}: $1.',
'show-big-image-size' => '$1 × $2 pikseļi',
'version-hooks' => 'Aizķeres',
'version-hook-name' => 'Aizķeres nosaukums',
'version-version' => '(Versija $1)',
-'version-license' => 'Licence',
+'version-license' => 'MediaWiki licence',
'version-poweredby-credits' => "Šis viki darbojas ar '''[https://www.mediawiki.org/ MediaWiki]''' programmatūru, autortiesības © 2001-$1 $2.",
'version-poweredby-others' => 'citi',
'version-poweredby-translators' => 'translatewiki.net tulkotāji',
# Limit report
'limitreport-title' => 'Parsētāja profilēšanas dati:',
-'limitreport-postexpandincludesize-value' => '$1/$2 baiti',
+'limitreport-postexpandincludesize-value' => '$1/$2 {{PLURAL:$2|baits|baiti}}',
'limitreport-templateargumentsize' => 'Veidnes argumenta izmērs',
'limitreport-templateargumentsize-value' => '$1/$2 {{PLURAL:$2|baits|baiti}}',
$messages = array(
# User preference toggles
'tog-underline' => '鏈墊線:',
-'tog-justify' => '齊段落',
'tog-hideminor' => '隱近校',
'tog-hidepatrolled' => '隱近巡',
'tog-newpageshidepatrolled' => '隱新巡',
'tog-numberheadings' => '生章數',
'tog-showtoolbar' => '多寶列見(JavaScript)',
'tog-editondblclick' => '纂頁雙擊(JavaScript)',
-'tog-editsection' => '纂段擊鏈',
'tog-editsectiononrightclick' => '纂段右擊標(JavaScript)',
-'tog-showtoc' => '四章見目',
'tog-rememberpassword' => '符節通越(達至$1日)',
'tog-watchcreations' => '哨己撰',
'tog-watchdefault' => '哨己纂',
'compareselectedversions' => '辨二擇',
'showhideselectedversions' => '示/藏之擇',
'editundo' => '悔',
-'diff-multi' => '($2作未示之審有$1)',
'diff-multi-manyusers' => '($2多作未示之審有$1)',
# Search results
'rows' => '行數:',
'columns' => '列數:',
'searchresultshead' => '尋',
-'resultsperpage' => '頁示尋',
'stub-threshold' => '<a href="#" class="stub">短頁連</a>格式門檻(位元組):',
'stub-threshold-disabled' => '禁',
'recentchangesdays' => '近易示日:',
'watchmethod-list' => '報近易…',
'watchlistcontains' => '共$1哨。',
'iteminvalidname' => "'$1'謬名。",
-'wlnote' => '近<b>$2</b>時有$1者易。',
'wlshowlast' => '見近$1時、$2天、$3時易',
'watchlist-options' => '哨項',
'tooltip-pt-watchlist' => '收矚目、治眼線、賞萌茂',
'tooltip-pt-mycontris' => '刻勛功、追作續、慰苦勞',
'tooltip-pt-login' => '設書齋、錄功績、廣放哨',
-'tooltip-pt-anonlogin' => '設書齋、錄功績、廣放哨',
'tooltip-pt-logout' => '凡事盡,乘雲飄',
'tooltip-ca-talk' => '求異見、辯是非、妥紛擾',
'tooltip-ca-edit' => '拓文意、校誤謬、潤辭藻',
$messages = array(
# User preference toggles
'tog-underline' => 'लिंककेँ रेखांकित करू:',
-'tog-justify' => 'सुगढ़ बनाऊ',
'tog-hideminor' => 'सन्निकट परिवर्त्तनमे छोट परिवर्त्तन नुकाऊ',
'tog-hidepatrolled' => 'सन्निकट परिवर्त्तनमे छोट परिवर्त्तन नुकाऊ',
'tog-newpageshidepatrolled' => 'नियंत्रित सम्पादनकेँ नव पन्ना सूचीसँ नुकाऊ',
'tog-numberheadings' => 'शीर्षक स्वयं-क्रमांकित करू',
'tog-showtoolbar' => 'संपादन ओजारपेटी देखाऊ (जावास्क्रीप्ट)',
'tog-editondblclick' => 'दू बेर क्लीक कए पन्ना संपादित करू (जावास्क्रीप्ट)',
-'tog-editsection' => '[संपादित करू] श्रृंखला द्वारा विभाग संपादनक आज्ञा दिअ',
'tog-editsectiononrightclick' => 'ऐ खण्डक सम्पादन खण्डक शीर्षकेँ दहिन क्लिक कऽ सम्भव (जावास्क्रिप्ट चाही)',
-'tog-showtoc' => 'अनुक्रम देखाऊ (जाहि पृष्ठ पर तीनसँ बेशी विभाग होए)',
'tog-rememberpassword' => 'ऐ गवेषकपर हमर कूटशब्द (बेशीसं बेशी $1 {{PLURAL:$1|दिन धरि| कएक दिन धरि}}) मोन राखू',
'tog-watchcreations' => 'हमर बनाओल पृष्ठ हमर साकांक्ष सूचीमे राखू',
'tog-watchdefault' => 'हमर संपादित पृष्ठ हमर साकांक्ष सूचीमे देखाऊ',
'compareselectedversions' => 'चयन कएल संशोधन सभक तुलना करू',
'showhideselectedversions' => 'देखाउ/ नुकाउ चयनित संशोधन सभ',
'editundo' => 'असंपादन',
-'diff-multi' => '({{PLURAL:$1|मध्यबला संशोधन|$1 मध्यबला संशोधन सभ}} द्वारा {{PLURAL:$2|एकटा प्रयोक्ता|$2 प्रयोक्ता सभ}} नै देखाएल)',
'diff-multi-manyusers' => '({{PLURAL:$1|एकटा मध्यस्थ संशोधन|$1 मध्यस्थ संशोधन सभ}} $2 सँ बेसी {{PLURAL:$2|प्रयोक्ता|प्रयोक्ता सभ}} नै देखाएल)',
# Search results
'rows' => 'पाँती सभ',
'columns' => 'स्तम्भ सभ',
'searchresultshead' => 'ताकू',
-'resultsperpage' => 'एक पन्ना एतेक बेर देखल गेल:',
'stub-threshold' => 'सीमा <a href="#" class="stub">काटल लागि</a> सँचियाएल (अष्टक):',
'stub-threshold-disabled' => 'अशक्त कएल',
'recentchangesdays' => 'आइ-काल्हिक परिवर्तनमे कतेक दिन देखाएल गेल:',
'watchmethod-list' => 'साकांक्ष-सूचीक हालक सम्पादनकेँ देखि रहल छी',
'watchlistcontains' => 'अहाँक साकांक्ष-सूचीमे अछि $1 {{PLURAL:$1|पन्ना|पन्ना}}।',
'iteminvalidname' => "'$1' क संग समस्या, अमान्य नाम ...",
-'wlnote' => "नीचाँ {{PLURAL:$1|is the last change|are the last '''$1''' changes}} अन्तिम {{PLURAL:$2|hour|'''$2''' hours}} $3, $4 जेना।",
'wlshowlast' => 'देखाउ अन्तिम $1 घण्टा $2 दिन $3',
'watchlist-options' => 'साकांक्षसूचीक विकल्प सभ',
'tooltip-pt-watchlist' => 'पन्ना सभ जकर परिवर्त्तन पर अहाँक नजरि अछि',
'tooltip-pt-mycontris' => 'अहाँक योगदानक सूची',
'tooltip-pt-login' => 'लॉग इन करब नीक, परञ्च आवश्यक नहि.',
-'tooltip-pt-anonlogin' => 'सम्प्रवेश करब नीक, परञ्च, आवश्यक नै।',
'tooltip-pt-logout' => 'फेर आयब',
'tooltip-ca-talk' => 'विषयसूचीक पन्नाक संबंधमे वर्त्तालाप',
'tooltip-ca-edit' => 'अहाँ एहि पन्नाकेँ संपादित कए सकैत छी। कृपया सुरक्षित करबासँ पहिने पूर्वप्रदर्शन बटम उपयोग करू।',
$messages = array(
# User preference toggles
'tog-underline' => 'Garisen ngisoré pranala:',
-'tog-justify' => 'Ratakna paragraf',
'tog-hideminor' => 'Umpetna suntingan cilik nang owahan anyar',
'tog-hidepatrolled' => 'Umpetna suntingan sing wis dipatroli nang owahan anyar',
'tog-newpageshidepatrolled' => 'Umpetna kaca sing wis dipatroli sekang daftar kaca anyar',
'tog-numberheadings' => 'Aweh nomer judul secara otomatis',
'tog-showtoolbar' => 'Tidhokna bilah alat penyuntingan',
'tog-editondblclick' => 'Nyunting kaca nganggo dobel klik (mbutuhna JavaScript)',
-'tog-editsection' => 'Aktifna penyuntingan subbagian ngliwati pranala [sunting]',
'tog-editsectiononrightclick' => 'Aktifna penyuntingan subbagian nganggo klik-tengen nang judul bagian (mbutuhna JavaScript)',
-'tog-showtoc' => 'Tidhokna daftar isine (kanggo kaca sing duwe lewih sekang 3 subbagian)',
'tog-rememberpassword' => 'Emutna data login-ne inyong nang peramban kiye (kanggo paling suwe $1 {{PLURAL:$1|dina|dina}})',
'tog-watchcreations' => 'Tambahna kaca gaweanne inyong lan berkas sing tek unggah nang daptar pangawasanne inyong',
'tog-watchdefault' => 'Tambahna kaca lan berkas sing tek-sunting maring daptar pangawasanne inyong',
'createacct-another-submit' => 'Gawe akun liyane',
'createacct-benefit-heading' => '{{SITENAME}} kuwe digawe nang wong kaya Rika.',
'createacct-benefit-body1' => '{{PLURAL:$1|suntingan|suntingan}}',
-'createacct-benefit-body2' => '{{PLURAL:$1|kaca|kaca}}',
-'createacct-benefit-body3' => '{{PLURAL:$1|kontributor|kontributor}} anyaran',
+'createacct-benefit-body2' => '{{PLURAL:$1|kaca}}',
+'createacct-benefit-body3' => '{{PLURAL:$1|kontributor}} anyaran',
'badretype' => 'Tembung sandhi sing Rika lebokna ora gathuk.',
'userexists' => 'Jeneng panganggo sing dilebokna uwis ana sing nganggo.
Monggo pilih jeneng liyane.',
'passwordtooshort' => 'Tembung sandhi kuwe paling ora cacahe {{PLURAL:$1|1 karakter|$1 karakter}}.',
'password-name-match' => 'Tembung sandhi Rika kudu sejen karo jeneng panganggone Rika.',
'password-login-forbidden' => 'Jeneng panganggo lan tembung sandhi kiye ora olih dienggo.',
-'mailmypassword' => 'Imelna tembung sandhi anyar',
+'mailmypassword' => 'Tembung sandhi di-reset',
'passwordremindertitle' => 'Tembung sandi anyar temporer kanggo {{SITENAME}}',
'passwordremindertext' => 'Ana wong (ndeyane Rika dhewek, sekang alamat IP $1) sing njaluk
tembung sandhi anyar kanggo {{SITENAME}} ($4). Tembung sandhi sawetara nggo panganggo
Monggoo mlebu log maning seuwise Rika nampa imel kuwe.',
'blocked-mailpassword' => "Alamat IP-ne Rika diblokir sekang panyuntingan, mulane kuwe Rika ora olih nganggo fungsi pèngetan tembung sandhi kanggo ''mencegah penyalahgunaan''.",
'eauthentsent' => 'Pesen imel konfirmasi wis dikirim maring alamat imele Rika.
-Rika kudu ngetutna instruksi nang imel kuwe mau nggo mastekna nek alamat kuwe pancen imele Rika dhewek. {{SITENAME}} ora bakal ngaktifna fitur imel angger langkah kiye durung dilakokna.',
+Sedurunge imel liyane teyeng dikirim maring akun kuwe, Rika kudu ngetutna instruksi nang imel kuwe, nggo mastekna nek alamat kuwe pancen imele Rika dhewek.',
'throttled-mailpassword' => 'Sawijining imel kanggo mbalekna tembung sandhi wis dikirim, jroning {{PLURAL:$1|jam|$1 jam}} pungkasan kiye.
Kanggo nyegah salah-guna, mung siji imel tembung sandi thok sing teyeng dikirim saben {{PLURAL:$1|jam|$1 jam}}.',
'mailerror' => 'Kasalahan dong ngirim imel: $1',
'accmailtitle' => 'Tembung sandhi wis dikirim.',
'accmailtext' => "Tembung sandhi acak kanggo [[User talk:$1|$1]] wis digawe lan dikirim maring $2.
-Tembung sandhi kanggo akun anyarkiye teyeng diganti nang kaca ''[[Special:ChangePassword|ganti tembung sandhi]]'' seuwise mlebu log.",
+Tembung sandhi kanggo akun anyar kiye teyeng diganti nang kaca ''[[Special:ChangePassword|ganti tembung sandhi]]'' seuwise mlebu log.",
'newarticle' => '(Anyar)',
'newarticletext' => "Rika ngetutna pranala maring kaca sing durung ana.
Kanggo nggawe kaca kuwe,molai baen ngetik nang kotak nang ngisor kiye (deleng [[{{MediaWiki:Helppage}}|kaca pitulung]] kanggo informasi lewih detil).
'revdelete-no-file' => 'Berkas sing dituju ora ana.',
'revdelete-show-file-confirm' => 'Apa rika wis mantep arep ndeleng revisi sing wis dibusek nggone berkas "<nowiki>$1</nowiki>" sekang tanggal $2 jam $3?',
'revdelete-show-file-submit' => 'Ya',
-'revdelete-selected' => "'''{{PLURAL:$2|Revisi kepilih|Revisi kepilih}} sekang '''$1''''''",
+'revdelete-selected' => "'''{{PLURAL:$2|Revisi kepilih}} sekang [[:$1]]:'''",
'logdelete-selected' => "'''{{PLURAL:$1|Log kepilih|Log kepilih}} kanggo:'''",
'revdelete-legend' => 'Atur watesan',
-'revdelete-hide-text' => 'Umpetna tèks revisi',
+'revdelete-hide-text' => 'Tèks revisi',
'revdelete-hide-image' => 'Umpetna isi berkas',
'revdelete-hide-name' => 'Umpetna tindakan lan target',
-'revdelete-hide-comment' => 'Umpetna ringkesan suntingan',
-'revdelete-hide-user' => 'Umpetna jeneng panganggo/alamat IP penyunting',
+'revdelete-hide-comment' => 'ringkesan suntingan',
+'revdelete-hide-user' => 'Jeneng panganggo/alamat IP penyunting',
'revdelete-hide-restricted' => 'Uga umpetna data sekang pangurus lan panganggo liyané',
'revdelete-radio-same' => '(aja diowahi)',
-'revdelete-radio-set' => 'Ya',
-'revdelete-radio-unset' => 'Ora',
+'revdelete-radio-set' => 'Umpetna',
+'revdelete-radio-unset' => 'Keton',
'revdelete-suppress' => 'Uga umpetna data sekang pangurus lan panganggo liyané',
'revdelete-unsuppress' => 'Busak watesan nang revisi sing dibalèkna',
'revdelete-log' => 'Alesan:',
'compareselectedversions' => 'Bandingna revisi kapilih',
'showhideselectedversions' => 'Tidokna/umpetna revisi kapilih',
'editundo' => 'batalna',
-'diff-multi' => 'Ana ({{PLURAL:$1|Siji|$1}} revisi antara sekang {{PLURAL:$2|siji|$2}} panganggo sing ora ditidokna)',
'diff-multi-manyusers' => 'Ana ({{PLURAL:$1|Siji|$1}} revisi antara gaweane lewih sekang {{PLURAL:$2|siji|$2}} panganggo sing ora ditidokna)',
# Search results
'prefs-email' => 'Opsi imel',
'prefs-rendering' => 'Tampilan',
'saveprefs' => 'Simpen',
-'restoreprefs' => 'Balekna kabeh setelan gawane',
+'restoreprefs' => 'Balekna kabeh setelan gawane (nang kabeh bagiyan)',
'prefs-editing' => 'Panyuntingan',
'rows' => 'Baris:',
'searchresultshead' => 'Goleti',
-'resultsperpage' => 'Hasil saben kaca:',
'stub-threshold' => 'Ambang wates kanggo format <a href="#" class="stub">pranala rintisan</a> (bita):',
'stub-threshold-disabled' => 'Dinonaktifna',
'recentchangesdays' => 'Jumlah dina sing ditidokna nang Owahan anyar:',
'timezoneregion-indian' => 'Samodra Hindia',
'timezoneregion-pacific' => 'Samodra Pasifik',
'allowemail' => 'Aktifna fitur nggo nampa imel sekang pangganggo liyane',
-'prefs-searchoptions' => 'Pilihan panggoletan',
+'prefs-searchoptions' => 'Goleti',
'prefs-namespaces' => 'Bilik jeneng',
'defaultns' => 'Utawa goleti nang bilik jeneng kiye:',
'default' => 'baku',
Pambalikan kiye ora teyeng dibatalna.',
'prefs-emailconfirm-label' => 'Konfirmasi imel:',
'youremail' => 'Imel:',
-'username' => 'Jeneng panganggo:',
-'uid' => 'ID panganggo:',
-'prefs-memberingroups' => 'Anggota {{PLURAL:$1|klompok|klompok-klompok}}:',
+'username' => '{{GENDER:$1|Jeneng panganggo}}:',
+'uid' => '{{GENDER:$1|ID panganggo}}:',
+'prefs-memberingroups' => '{{GENDER:$2|Anggota}}
+{{PLURAL:$1|klompok|klompok-klompok}}:',
'prefs-registration' => 'Wektu régistrasi:',
'yourrealname' => 'Jeneng asli:',
'yourlanguage' => 'Basa:',
$messages = array(
# User preference toggles
'tog-underline' => 'Сюлмафкснень алга китькстамс:',
-'tog-justify' => 'Тиемс сёрматфть фкакс ушедоматнень лопать кувалмова',
'tog-hideminor' => 'Од полафтоматнень эса кяшемс ёмланя видептематне',
'tog-hidepatrolled' => 'Кяшемс лувонь кирдихнень видептемаснон мекольце полафнематнень эса',
'tog-newpageshidepatrolled' => 'Кяшемс лувонь кирдихнень эса видептьф лопат од лопань лувса',
'tog-numberheadings' => 'Сёрмадома коняксс лувомтяшксне эслек путовихть',
'tog-showtoolbar' => 'Кядьёнкс седяфксть няфтемс сёрмадомбачк (JavaScript)',
'tog-editondblclick' => 'Кафксть люпштазь сувамс сёрматфть петнема (JavaScript)',
-'tog-editsection' => 'Няфтемс сюлмафксть [петемс] эрь пяльксонди',
'tog-editsectiononrightclick' => 'Петнемс пялькстне: люпштамс сёрмадомбяльксть лемонц лангс видешире пуняса (JavaScript)',
-'tog-showtoc' => 'Няфтемс сёрматфть потмакс (лопатнень, конатнень эса 3 сёрмадома конякста лама)',
'tog-rememberpassword' => 'Ванфтомс монь сувама лемозе тя содаммашинаса (сяда кувать $1 {{PLURAL:$1|ши|шит}})',
'tog-watchcreations' => 'Сувафтомс лопатнень, конатнень тиине ди файлат, конатнень тонгине мельгеваномазон',
'tog-watchdefault' => 'Сувафтомс лопатнень ди файлатнень, конатнень петнесайне мельгеваномазон',
'lineno' => 'Кикссь $1:',
'compareselectedversions' => 'Путомс кочкаф верзиетнень ваксс',
'editundo' => 'валхтомс',
-'diff-multi' => '({{PLURAL:$1|ёткопингонь верзие, конась|$1 ёткопингонь верзиет, конатне}} {{PLURAL:$2|тии тизе|$2 тиихть тизь}} апак няфтек)',
# Search results
'searchresults' => 'Мезе мувсь',
'rows' => 'Луфт (строкат):',
'columns' => 'Орват (столбанят):',
'searchresultshead' => 'Вешендема',
-'resultsperpage' => 'Муфкст фкя лопаса:',
'stub-threshold' => 'Оторсь (лимитсь) <a href="#" class="stub">-нь керф сюлмафкснень</a> латцемаснонды (байтт):',
'recentchangesdays' => 'Мъзяра шит няфтемс мекольце полафнемаса:',
'recentchangesdays-max' => '(максимум $1 {{PLURAL:$1|ши|шит}})',
'watchmethod-list' => 'мекольце петнематнень коряс мельге ванома ала лопат ванондома',
'watchlistcontains' => 'Тонь мельгеваномасот $1 {{PLURAL:$1|лопа|лопат}}.',
'iteminvalidname' => "Прябала '$1'-ть мархть, лемоц аф кондясти...",
-'wlnote' => "Ала {{PLURAL:$1|мекольце полафнема|'''$1''' мекольце полафнемат}} ётай {{PLURAL:$2| ойста (часста)|'''$2''' ойста (часста)}}.",
'wlshowlast' => 'Няфтемс мекольце $1 ойхть (част) $2 шит $3',
'watchlist-options' => 'Мельгеваномать латцемасна',
'tooltip-pt-watchlist' => 'Лопатне конатнень мельге тон ванат полафнематнень коряс',
'tooltip-pt-mycontris' => 'Тонь путкстнень лувомасна',
'tooltip-pt-login' => 'Тяса ули кода сёрматфтомс аньцек тя аф эрявикс.',
-'tooltip-pt-anonlogin' => 'Тонь анайхть сувамс лопас, интай тя аф кошардомась.',
'tooltip-pt-logout' => 'Лисемс',
'tooltip-ca-talk' => 'Лопапотмонь колга корхнема',
'tooltip-ca-edit' => 'Тя лопать петневи. Эняльттяма, нолдак тевс васень няфтема пуня лопать ванфтомада инголе.',
'Discussion_Catégorie' => NS_CATEGORY_TALK,
);
+// Remove French aliases
+$namespaceGenderAliases = array();
+
$specialPageAliases = array(
'Activeusers' => array( 'Mpikambana_mavitrika' ),
'Allmessages' => array( 'Hafatra_rehetra' ),
$messages = array(
# User preference toggles
'tog-underline' => 'Hanipika ny rohy:',
-'tog-justify' => 'Hanitsy ny andiany',
-'tog-hideminor' => "Hanitsika ny fanovana madinika ao amin'ny fanovana farany",
-'tog-hidepatrolled' => "Hanitrika ny fanovana voaara-maso ao amin'ny fanovana farany",
+'tog-hideminor' => "Hanitsika ny fiovana madinika ao amin'ny fiovana farany",
+'tog-hidepatrolled' => "Hanitrika ny fiovana voaara-maso ao amin'ny fiovana farany",
'tog-newpageshidepatrolled' => "Hanitsika ny pejy voaara-maso ao amin'ny pejy vaovao",
'tog-extendwatchlist' => 'Hanitatra ny lisitra fanaraham-pejy mba haneho ny fanovana rehetra fa tsy ny vaovao indrindra fotsiny',
-'tog-usenewrc' => "Hamondrona ny fanovana araky ny pejy ao amin'ny fanovana farany ary ao amin'ny lisitry ny pejy arahana",
+'tog-usenewrc' => "Hampivondrona ny fiovana araky ny pejy ao amin'ny fiovana farany ary ao amin'ny lisitry ny pejy arahana",
'tog-numberheadings' => 'Asio laharany ny lohateny',
'tog-showtoolbar' => 'Haneho ny toolbar fanovana',
'tog-editondblclick' => "Hanova pejy amin'ny alalan'ny tsindrim-boalavo roa misesy",
-'tog-editsection' => "Ataovy mety ny fanovana fizaràna amin'ny alalan'ny rohy [hanova]",
'tog-editsectiononrightclick' => "Hampiasa ny fanovana fizarana amin'ny tsindry havanana eo amin'ny lohatenim-pizarana.",
-'tog-showtoc' => "Asehoy ny fanoroan-takila (ho an'ny pejy misy lohateny mihoatra ny 3)",
'tog-rememberpassword' => "Tadidio ny tenimiafiko eto amin'ity solosaina ity (mandritry ny andro $1 fara-fahabetsany){{PLURAL:}}",
'tog-watchcreations' => 'Hanaraka ny pejy foronoko ary ny rakitra ampidiriko',
'tog-watchdefault' => 'Hanaraka ny pejy ary ny rakitra ovaiko',
'youhavenewmessages' => 'Manana $1 ($2).',
'youhavenewmessagesfromusers' => "Manana $1 avy amin'ny mpikambana {{PLURAL:$3|hafa|$3}} ($2).",
'youhavenewmessagesmanyusers' => "Manana $1 avy amin'ny mpikambana maro ($2).",
-'newmessageslinkplural' => '{{PLURAL:$1|hafatra iray|hafatra maro}}',
-'newmessagesdifflinkplural' => 'fanovana farany{{PLURAL:$1}}',
+'newmessageslinkplural' => '{{PLURAL:$1|hafatra iray |hafatra maro}} vaovao',
+'newmessagesdifflinkplural' => 'fiovana {{PLURAL:$1|farany|999=farany}}',
'youhavenewmessagesmulti' => "Manana hafatra vaovao ianao eo amin'ny $1.",
'editsection' => 'hanova',
'editold' => 'hanova',
'badtitletext' => "Tsy mety io anaram-pejy nangatahinao io na tsy misy n'inon'inona na rohy dikan-teny vahiny misy diso tsipelina.",
'perfcached' => "Ao amin'ny voatakona ireo data manaraka ireo ary mety tsy voavao. $1{{PLURAL:}} ihany no isan'ireo zavatra voatahiry ao amin'ny voatakona",
'perfcachedts' => "Ao amin'ny voatakona (cache) ny data aseho, ary tamin'ny $1 izy no navaozina farany. $4{{PLURAL:}} no isan'ny valim-pikarohana ao amin'ilay voatakona.",
-'querypage-no-updates' => "Tsy nalefa ny ''mise à jour'' (update) hoan'ity pejy ity.
-Mety tsy misy fifandraisana amin'ny zavamisy ankehitriny ny zavamisy ao anatin'ity pejy ity..",
+'querypage-no-updates' => "Amin'izao fotoana izao dia tsy havaozina ny votoatin'ity pejy ity. Noho izany dia tsy mitaratra ny tena zava-misy ny votoatiny ato.",
'viewsource' => 'Hijery fango',
'viewsource-title' => "Hijery ny fangon'i $1",
'actionthrottled' => 'Tao voafetra',
'invalidtitle-knownnamespace' => 'Lohateny tsy miady amin\'ny fepetra miaraka amin\'ny anaram-balam-pejy "$2" ary soratra "$3"',
'invalidtitle-unknownnamespace' => 'Lohateny tsy ekena miaraka amin\'ny laharana anaran-tsehatra $1 ary soratra "$2"',
'exception-nologin' => 'Tsy tafiditra',
-'exception-nologin-text' => "Mila tafiditra eo amin'ilay wiki vao afaka manao ilay tao.",
+'exception-nologin-text' => '[[Special:Userlogin|Midira]] mba hahafahanao manao ilay asa na hahafahanao mijery ity pejy ity',
# Virus scanner
'virus-badscanner' => "Diso : Tsy fantatray ny mpitady virus ''$1''",
'gotaccount' => "Efa manana kaonty? '''$1'''.",
'gotaccountlink' => 'Midira',
'userlogin-resetlink' => "Adinonavo ve ny antsipihan'ny fidiranao ?",
-'userlogin-resetpassword-link' => 'Hamerina ny tenimiafinao',
+'userlogin-resetpassword-link' => 'Hadino ny tenimiafina?',
'helplogin-url' => 'Help:Fidirana',
'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Fanoroana mikasika ny fidirana]]',
'userlogin-createanother' => 'Hamorona kaonty hafa',
Farafahakeliny tokony hisy litera $1 ny tenimiafina.',
'password-name-match' => 'Tsy maintsy samihafa ny solonanaranao sy ny tenimiafinao tompoko.',
'password-login-forbidden' => 'Norarana ny fampiasana io anaram-pikambana ary io tenimiafina io.',
-'mailmypassword' => 'Alefaso imailaka ny tenimiafiko',
+'mailmypassword' => 'Hamerina ny tenimiafina',
'passwordremindertitle' => "Fampatsiahivana tenimiafina avy amin'i {{SITENAME}}",
'passwordremindertext' => 'Nisy olona, izay ianao ihany angamba, avy tamin\'ny adiresy IP $1, nangataka
ny handefasanay tenimiafina vaovao ho an\'ny sehatra {{SITENAME}} ao amin\'ny
'invalid-content-data' => "Data anaty votoatiny tsy miady amin'ny fepetra",
'content-not-allowed-here' => "Votoatiny ''$1'' voarara eo amin'ny pejy [[$2]]",
'editwarning-warning' => "Mety hahavery ny fanovana nataonao ny fialanao amin'ity pejy ity.
-Raha tafiditra ianao dia azonao esorina ity fampitandremana ity ao amin'ny fizarana \"Fanovàna\" ao amin'ny safidinao",
+Raha tafiditra ianao dia azonao esorina ity fampitandremana ity ao amin'ny fizarana \"{{int:prefs-editing}}\" ao amin'ny safidinao.",
# Content models
'content-model-wikitext' => 'wiki-soratra',
'currentrev' => 'Votoatiny ankehitriny',
'currentrev-asof' => "Endrika tamin'ity $1 ity",
'revisionasof' => "Endrik'io pejy io tamin'ny $1",
-'revision-info' => "Santiônan'i $1 nataon'i $2",
-'previousrevision' => '←Votoatiny antitra kokoa',
-'nextrevision' => 'Fanovana vao haingana→',
-'currentrevisionlink' => 'Endrika-ny ankehitriny',
+'revision-info' => "Endrika tamin'ny $1 nataon'i $2",
+'previousrevision' => '← Endrika tranainy kokoa',
+'nextrevision' => 'Endrika vaovao kokoa →',
+'currentrevisionlink' => 'Endrika farany indrindra',
'cur' => 'ank',
'next' => 'manaraka',
'last' => 'farany',
'page_first' => 'voalohany',
'page_last' => 'farany',
-'histlegend' => "
-Fifidianana ny votoatiny hampitahaina: mariho eo anilan'ny versions hampitahaina dia tsindrio ny bokotra Entrée na ny bokotra etsy ambany.<br />
-Tadidio: (ank) = fampitahana amin'ny votoatin'ny pejy ankehitriny,
-(farany) = fampitahana amin'ny version talohan'ity, M = fanovana madinika",
+'histlegend' => "Fisafidianana ny votoatiny hohampitahaina: Mario ny bokotra radiôn'ny fiovana hampitahazay ary tsintrio ny bokotra fanekena amin'ny faram-pejy<br />
+Maribolana: '''(ank)''' = fampitahana amin'ny votoatin'ny pejy ankehitriny,
+'''(farany)''' = fampitahana amin'ny version talohan'ity, M = fanovana madinika",
'history-fieldset-title' => 'Karohy ny tantara',
'history-show-deleted' => 'Voafafa ihany',
'histfirst' => 'antitra indrindra',
'rev-deleted-user-contribs' => "[anaram-pikambana na adiresy IP voafafa - fanovana nasitria teo amin'ny fandraisan'anjara modification]",
'rev-deleted-text-permission' => "'''Voafafa''' ny santiônan'ity pejy ity.
Mety misy ny antsipirihany angamba ny [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAME}}}} laogy momban'ny famafàna pejy].",
-'rev-deleted-text-unhide' => "Ity santiônan'ity pejy ity dia '''voafafa'''.
+'rev-deleted-text-unhide' => "Ity versionan'ity pejy ity dia '''voafafa'''.
Hita ao amin'ny [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} laogim-pamafana] ny antsipirihany.
-Afaka [$1 mijery ilay santiôna] ianao raha tianao.",
-'rev-suppressed-text-unhide' => "'''Nofafana''' ity santiônam-pejy ity.
+Afaka [$1 mijery ilay versiona] ianao raha tianao.",
+'rev-suppressed-text-unhide' => "'''Nofafana''' ity versiom-pejy ity.
Azo jerena ao amin'ny [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} laogim-pamafana] ny antsipirihany.
Azonao [$1 jerena foana ilay santiôna] raha tianao.",
-'rev-deleted-text-view' => "'''Nofafana''' ity santiônam-pejy ity.
+'rev-deleted-text-view' => "'''Nofafana''' ity versiom-pejy ity.
Azonao jerena ity santiôna voafafa ity ; misy antsipirihany ao amin'ny [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} laogim-pamafana].",
-'rev-suppressed-text-view' => "'''Nofafana''' ity santiônam-pejy ity.
-Azonao jerena ilay santiôna voafafa ; ny antsipirihany dia ao amin'ny [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} laogim-pamafana].",
+'rev-suppressed-text-view' => "'''Nofafana''' ity versiom-pejy ity.
+Azonao jerena ilay versiona voafafa ; ny antsipirihany dia ao amin'ny [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} laogim-pamafana].",
'rev-deleted-no-diff' => "Tsy afaka mijery anio diff io ianao satria misy santôna '''voafafa''' ao aminy.
Mety any amin'ny [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAME}}}} laogy momban'ny famafàna pejy] ny antsipirihany.",
'rev-suppressed-no-diff' => "Tsy azo jerenao io diff io satria '''voafafa''' ny iraika amin'ny reviziônany.",
'rev-deleted-unhide-diff' => "Nisy '''voafafa''' ny iraika amin'ny reviziôna an'ity diff ity.
Ny antsipirihany dia mety hita ao amin'ny [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} laogin'ny famafana].
[$1 Azonao jerena foana ilay diff] raha tianao.",
-'rev-suppressed-unhide-diff' => "Nisy '''voafafa''' ny iraika amin'ny santiôna an'ity diff ity.
+'rev-suppressed-unhide-diff' => "Nisy '''voafafa''' ny iraika amin'ny versiona an'ity diff ity.
Ny antsipirihany dia mety hita ao amin'ny [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} laogin'ny famafana].
[$1 Azonao jerena foana ilay diff] raha tianao.",
'rev-deleted-diff-view' => "Nisy '''voafafa''' ny iraika amin'ny reviziôna an'ity diff ity.
Azonao jerena ilay diff ; ao amin'ny [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} tatitry ny famafana] ny antsipirihany.",
'rev-delundel' => 'aseho/asitrika',
'rev-showdeleted' => 'aseho',
-'revisiondelete' => 'Hamafa na hamerina santiôna',
-'revdelete-nooldid-title' => 'Santiôna tanjona tsy mameno fetra.',
-'revdelete-nooldid-text' => 'Tsy voalazanao ny santiôna tanjona hanaovana ity tao ity,
+'revisiondelete' => 'Hamafa na hamerina versiona',
+'revdelete-nooldid-title' => 'versiona tanjona tsy azo ekena.',
+'revdelete-nooldid-text' => 'Tsy voalazanao ny versiona tanjona hanaovana ity tao ity,
tsy misy ilay izy, na ny santiôna ankehitriny no andramana asitrika.',
'revdelete-no-file' => 'Tsy misy ilay rakitra hofafàna.',
'revdelete-show-file-confirm' => "Tapa-kevitra hamafa ny ''revision''-n'i rakitra <nowiki>$1</nowiki> tamin'ny $2 tamin'ny $3 ve ianao ?",
'revdelete-show-file-submit' => 'Eny',
'revdelete-selected' => "'''{{PLURAL:$2|Votoatiny nosafidiana|Votoatiny nosafidiana}}n'i '''[[:$1]]''' :'''",
'logdelete-selected' => "'''{{PLURAL:$1||}}Laogy voafidy :'''",
-'revdelete-text' => "'''Mbola ao amin'ny laogy ny santiôna voafafa, fa tsy afaka jeren'ny vahoaka ny lahatsoratra ao aminy.'''
-Afaka mijery ny lahatsoratra nasitrika sy mamerina azy ny mpandrindra hafa ny {{SITENAME}} amin'ity interface ity, raha tsy misy \"restriction\" hafa koa.",
+'revdelete-text' => "'''Mbola ho ao amin'ny laogim-pejy ary ao amin'ny logy ny versiona ary zava-nitranga voaesotra, fa tsy ho hitan'ny mason'ny vahoaka ny votoatin'izy ireo.'''
+Mbola afaka jeren'ireo mpandrindran'i {{SITENAME}} foana ny votoatiny voafina ary azony atao ho hitan'ny vahoaka indray ilay izy amin'ny alalan'ity pejy fanaovan-tsafidy ity, raha tsy misy fepetra apetraka.",
'revdelete-confirm' => 'Amafiso eto ny hevitrao raha hanao io ianao, raha azonao sary an-tsaina ny mety ho vokany, ary raha araka ny [[{{MediaWiki:Policy-url}}|fepetra mihatra]] ny zavatra ataonao.',
'revdelete-suppress-text' => "Ny famafàna pejy dia ampiasaina rehefa :
* Misy information tsy sarababem-bahoaka tsy metimety
'revdelete-radio-set' => 'Eny',
'revdelete-radio-unset' => 'Tsia',
'revdelete-suppress' => "Manitrika ny votoatiny ho an'ny mpandrindra",
-'revdelete-unsuppress' => "Hanala ny fepetra eo amin'ny santiôna naverina",
+'revdelete-unsuppress' => "Hanala ny fepetra eo amin'ny versiona naverina",
'revdelete-log' => 'Antony :',
-'revdelete-submit' => "Ahàtra amin'ny santiôna nofidiana {{PLURAL:$1}}",
-'revdelete-success' => "'''Voaova soa aman-tsara ny fahitana ny santiôna.'''",
-'revdelete-failure' => "'''Ny fisehon'ity santiôna ity dia tsy afaka natao update'''
+'revdelete-submit' => "Hampiharina amin'ny versiona nofidiana {{PLURAL:$1}}",
+'revdelete-success' => "'''Voaova soa aman-tsara ny fahitana ny versiona.'''",
+'revdelete-failure' => "'''Ny fisehon'ity versiona ity dia tsy afaka natao update'''
$1",
'logdelete-success' => "'''Voaova soa aman-tsara ny fisehon'ny tatitr’asa.'''",
'logdelete-failure' => "'''Tsy afaka novaina ny fisehon'ny tatitr’asa'''
'mergehistory-go' => 'Hijery ny fanovàna mety hatsonika',
'mergehistory-submit' => 'atsonika ny version',
'mergehistory-empty' => 'tsy misy version azo hatambarana',
-'mergehistory-success' => "$3 version{{PLURAL:$3||s}} de [[:$1]] fusionnée{{PLURAL:$3||s}} dans [[:$2]].
-
-$3 santiôna{{PLURAL:}} natsonika tamin'ny [[:$2]]",
+'mergehistory-success' => "{{PLURAL:$3|}}Versiona $3 an'i [[:$1]] no natsonika tamin'ny [[:$2]]",
'mergehistory-fail' => "Tsy afaka manatambatra ny tantara(n'asa). Avereno checheo ny pejy sy ny daty.",
'mergehistory-no-source' => "Tsy misy ny pejy avy amin'ny $1.",
'mergehistory-no-destination' => 'Tsy misy ilay pejy tanjona $1.',
# Diffs
'history-title' => "Tantaran'ny endrik'i « $1 »",
-'difference-title' => "$1 : Fahasamihafan'ny santiôna roa",
+'difference-title' => "$1 : Fahasamihafan'ny versiona roa",
'difference-title-multipage' => 'Fahasamihafan\'ny pejy "$1" ary "$2"',
'difference-multipage' => "(Fahasamihafan'ny pejy)",
-'lineno' => 'Andalana $1:',
+'lineno' => 'Andalana faha-$1:',
'compareselectedversions' => 'Ampitahao ireo version voafidy',
-'showhideselectedversions' => 'Aseho/asitrika ireo ny santiôna nofidiana',
+'showhideselectedversions' => 'Aseho/asitrika ireo ny versiona voasafidy',
'editundo' => 'esory',
'diff-empty' => '(Tsy misy mahasamihafa)',
-'diff-multi' => "({{PLURAL:$1|Famerenana tokana|Famerenana $1}} nataon'ny {{PLURAL:$2|mpikambana iray|mpikambana $2}} tsy miseho)",
'diff-multi-manyusers' => "Tsy naseho ny antiôna $1{{PLURAL:}} nataon'ny mpikambana $2.",
# Search results
'rows' => 'Filaharana :',
'columns' => 'Tsanganana/Tioba :',
'searchresultshead' => 'Fikarohana',
-'resultsperpage' => "Isa ny valiny isakin'ny pejy :",
'stub-threshold' => 'Fetra ambony ho an\'i <a href="#" class="stub">rohim-bangovango</a> (oktety):',
'stub-threshold-disabled' => 'Tsy alefa',
'recentchangesdays' => "Isa ny andro ho ampiseho eo amin'ny fanovàna farany",
'recentchangesdays-max' => '($1 andro{{PLURAL:$1||}} fara-faha betsany)',
'recentchangescount' => "Isan'ny fanovana haseho (tsipalotra) :",
-'prefs-help-recentchangescount' => 'Misy ny fanovana farany, ny tantaram-pejy ary ny laogy',
+'prefs-help-recentchangescount' => 'Misy ny fiovana farany, ny tantaram-pejy ary ny laogy',
'savedprefs' => 'Voatahiry ny mombamomba anao.',
'timezonelegend' => "Faritr'ora :",
'localtime' => 'Ora an-toerana',
'right-deletelogentry' => "Hamafa ary hamerina iditra manokana ao amin'ny laogy.",
'right-deleterevision' => 'Mamafa ny version manokana-na pejy iray',
'right-deletedhistory' => 'Mijery ny tantaram-pejy voafafa fa tsy lahatsorany',
-'right-deletedtext' => "Mijery ny lahatsoratra voafafa sy ny fampitahana anelanelan'ny santiôna voafafa",
+'right-deletedtext' => "Mijery ny lahatsoratra voafafa sy ny fampitahana anelanelan'ny versiona voafafa",
'right-browsearchive' => 'Mitady pejy voafafa',
'right-undelete' => 'Mamerina pejy voafafa',
'right-suppressrevision' => "Mandinika sy mamerina ny version asitrika amin'ny mpandrindra",
'right-importupload' => 'mampiditra na manafatra pejy avy amina rakitra iray',
'right-patrol' => "Manamarina ny fanovan'ny hafa",
'right-autopatrol' => 'Manamarika ny fanovany efa nomarihana',
-'right-patrolmarks' => "Mijery ny mariky ny fanamarihana any amin'ny fanovana farany",
+'right-patrolmarks' => "Mijery ny mariky ny fanamarihana any amin'ny fiovana farany",
'right-unwatchedpages' => 'Mijery ny lisitry ny pejy tsy arahina',
'right-mergehistory' => 'Manatsonika ny tantaram-pejy',
'right-userrights' => "Manova ny fahefan'ny mpikambana",
'nchanges' => '{{PLURAL:$1|fanovana|fanovana}} $1',
'enhancedrc-since-last-visit' => '$1 ({{PLURAL:$1|hatry ny famangiana farany}})',
'enhancedrc-history' => 'tantara',
-'recentchanges' => 'Fanovana farany',
+'recentchanges' => 'Fiovana farany',
'recentchanges-legend' => 'Safidy ny fanovàna farany',
'recentchanges-summary' => "Jereo eto amin'ity pejy ity izay vao niova vao haingana teto amin'ity wiki ity.",
'recentchanges-noresult' => "Tsy misy fanovana miady amin'ny fepe-potoana napetraka.",
'uploadwarning-text' => "Ovay ny fanoritan' ilay rakitra ary andrao fanindroany.",
'savefile' => 'Tehirizo ny rakitra',
'uploadedimage' => 'tonga ny rakitra"[[$1]]"',
-'overwroteimage' => "nampiditra santiôna vaovao an'ny « [[$1]] »",
+'overwroteimage' => 'nampiditra versiona vaovao ny «[[$1]]»',
'uploaddisabled' => 'Miala tsiny! Tsy azo atao ny mandefa rakitra.',
'copyuploaddisabled' => "Tsy alefa ny fandefasan-drakitra amin'ny alalan'ny URL.",
'uploadfromurl-queued' => 'Ao am-piandrasana ny fandefasan-drakitrao.',
'license' => 'Lisansy:',
'license-header' => "Navoaka tambanin'ny lisansy",
'nolicense' => 'Tsy misy safidy',
-'license-nopreview' => '(Topi-maso tsy misy)',
+'license-nopreview' => '(Tsy misy topi-maso)',
'upload_source_url' => " (URL misy ary azo vangian'ny daholobe)",
'upload_source_file' => " (rakitra eo amin'ny milinao)",
'filerevert-defaultcomment' => "Voaverina ny santiônan'ny $1 tamin'ny $2",
'filerevert-submit' => 'Hamerina',
'filerevert-success' => "Naverina tamin' [$4 ny santiôn'ny $2 tamin'ny $3] i '''[[Media:$1|$1]]'''",
-'filerevert-badversion' => "An-toerana, tsy misy santiôna nialoha io rakitra io miankina amin'ny daty voatoro.",
+'filerevert-badversion' => "An-toerana, tsy misy versiona nialoha io rakitra io miankina amin'ny daty voatoro.",
# File deletion
'filedelete' => 'Hamafa $1',
'filedelete-legend' => 'Fafao ilay rakitra',
'filedelete-intro' => "Ampamafana ny rakitra '''[[Media:$1|$1]]''' ianao miaraka amin'ny tantarany rehetra.",
-'filedelete-intro-old' => "Am-pamafana ny santiôna '''[[Media:$1|$1]]''' tamin'ny [$4 $2 tamin'ny $3] ianao.",
+'filedelete-intro-old' => "Am-pamafana ny versiona '''[[Media:$1|$1]]''' tamin'ny [$4 $2 tamin'ny $3] ianao.",
'filedelete-comment' => 'Antony :',
'filedelete-submit' => 'Hamafa',
'filedelete-success' => "voafafa '''$1'''.",
'filedelete-success-old' => "Voafafa ny santiônan'ny '''[[Media:$1|$1]]''' tamin'ny $2 tamin'ny $3.",
'filedelete-nofile' => "Tsy misy '''$1'''.",
-'filedelete-nofile-old' => "Tsy nisy santiôna voatahirin'i '''$1''' miaraka amin'ny mahasamihafa naseho.",
+'filedelete-nofile-old' => "Tsy nisy versiona voatahirin'i '''$1''' miaraka amin'ny mahasamihafa naseho.",
'filedelete-otherreason' => 'Antony fanampiny :',
'filedelete-reason-otherlist' => 'Antony hafa',
'filedelete-reason-dropdown' => '* Antom-pamafàna rakitra miasa matetika
'unwatch' => 'Aza arahana intsony',
'unwatchthispage' => 'Aza arahana intsony',
'notanarticle' => 'Tsy votoatim-pejy ity pejy ity',
-'notvisiblerev' => 'Voafafa ilay santiôna',
+'notvisiblerev' => 'Voafafa ilay versiona farany nataom-pikambana hafa',
'watchlist-details' => "Pejy $1{{PLURAL:}} ao amin'ny lisitry ny pejy arahanao, tsy isaina ny pejin-dresaka.",
'wlheader-enotif' => "Alefa ny fampilazana amin'ny mailaka.",
'wlheader-showupdated' => "Aseho '''sorabaventy''' ny pejy niova taorian'ny famangianao azy farany.",
-'watchmethod-recent' => 'fanamarinana ny fanovana farany hahitana pejy arahana',
-'watchmethod-list' => 'fanamarinana ny pejy arahana ahitana fanovana farany',
+'watchmethod-recent' => 'fanamarinana ny fiovana farany hahitana pejy arahana',
+'watchmethod-list' => 'fanamarinana ny pejy arahana hahitana fiovana vao haingana',
'watchlistcontains' => "Ao amin'ny pejy arahanao dia ahitana pejy $1{{PLURAL:}}.",
'iteminvalidname' => "Olana amin'ny zavatra « $1 » : tsy ara-dalàna ny anarana...",
-'wlnote' => "Eo ambany dia ahitana ny {{PLURAL:$1|fanovana farany indrindra|ny fanovana ''$1'' farany}} natao tanatin'ny adin'ny {{PLURAL:$2|iray|'''$2'''}}, nanomboka ny $3, $4.",
'wlshowlast' => 'Haneho ny $1 ora farany, ny $2 andro farany na $3',
'watchlist-options' => 'Safidy ny lisitry ny pejy arahana',
** Tsi-fanajana ny zom-pamorona
** Fandotoana",
'delete-edit-reasonlist' => 'Hanova ny antony amafana pejy',
-'delete-toobig' => 'Ity pejy ity dia manana tantaram-panovana be, mihoatra ny santiôna {{PLURAL:$1}} $1.
-Ny famafana ireo pejy ireto dia voafetra mba tsy hikorontana {{SITENAME}}.',
+'delete-toobig' => "Ity pejy ity dia manana tantaram-panovana lava be, izany hoe manana versiona {{PLURAL:$1}} $1.
+Noferana mba tsy hikorontana ny fandehanan'i {{SITENAME}} ny famafana ireo pejy ireo.{{PLURAL:$1|}}",
'delete-warning-toobig' => "Lava be mihitsy ny tantaram-piovan'ity pejy ity, mihoatra santiôna $1{{PLURAL:}}.
Mety hitondra fikorontanana ao amin'ny banky angon'i {{SITENAME}} ny famafana azy ;
ataovy am-pitandremana ity tao ity.",
'rollbacklink' => 'foano',
'rollbacklinkcount' => 'hamoana fanovana{{PLURAL:$1}} $1',
'rollbackfailed' => "Tsy voaverina amin'ny teo aloha",
-'cantrollback' => "Tsy afaka iverenana ny fanovana; ny mpanova farany ihany no tompon'ny pejy.",
-'alreadyrolled' => "Tsy afaka foanana ny fanovana ny pejy « [[:$1]] » nataon'i [[User:$2|$2]] ([[User talk:$2|Dinika]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]])
+'cantrollback' => "Tsy afaka iverenana ny fiovana; ny mpanova farany ihany no tompon'ny pejy.",
+'alreadyrolled' => "Tsy afaka foanana ny fiovan'ny pejy « [[:$1]] » nataon'i [[User:$2|$2]] ([[User talk:$2|Dinika]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]])
-Efa nataon'i [[User:$3|$3]] ([[User talk:$3|dinika]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]) ny fanovana farany.",
+Efa nataon'i [[User:$3|$3]] ([[User talk:$3|dinika]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]) ny fiovana farany.",
'editcomment' => "Toy izao no fanamarihana momba io fanovana io: \"''\$1''\".",
'revertpage' => "Voafafa ny fanovana ny [[Special:Contributions/$2|$2]] ([[User talk:$2|Dinika]]); voaverina amin'ny votoatiny teo aloha nataon'i [[User:$1|$1]]",
'revertpage-nouser' => "Manala ny fanovana (nataom-pikambana voaafina), miverina any amin'ny filaza faran'i [[User:$1|$1]]",
-'rollback-success' => "Fanalàna ny fanovana nataon'i $1 ;
-miverina any amin'ny santiôna farany nataon'i $2.",
+'rollback-success' => "Fanesorana ny fiovana nataon'i $1 ;
+fiverenana amin'ny fiovana farany nataon'i $2.",
# Edit tokens
'sessionfailure-title' => 'Tsi-fetezaka mikasika ny kaonty idirana',
# Undelete
'undelete' => 'Jereo ny pejy voafafa',
'undeletepage' => 'Hijery sy hamerina ny pejy efa voafafa',
-'undeletepagetitle' => "'''Ahitana ny santiôna voafafan'i [[:$1|$1]] ity lisitra manaraka.'''",
+'undeletepagetitle' => "'''Ahitana ny versiona voafafan'i [[:$1|$1]] ity lisitra manaraka.'''",
'viewdeletedpage' => 'Hijery ny pejy efa nofafana',
'undeletepagetext' => "Ireto pejy ireto dia efa voafafa nefa mbola voatahiry ao amin'ny tahiry ihany,
ary mbola afaka averina, mandra-pifafan'ny tahiry. Mety ho voafafa matetitetika
ihany ny tahiry {{PLURAL:$1}}.",
-'undelete-fieldset-title' => 'Hamerina ny santiôna',
+'undelete-fieldset-title' => 'Hamerina versiona',
'undeleterevisions' => "{{PLURAL:$1|fanovana|fanovana}} $1 voatahiry any amin'ny arsiva",
'undeletehistory' => "
Raha averinao ity pejy ity dia hiverina hiaraka aminy koa ny tantaran'ny
noforonina taorian'ny namafana azy, dia hitambatra amin'ny tantaran'io
pejy vaovao io ny tantaran'ity pejy voafafa ity, fa tsy ho voafafa akory.",
'undeletehistorynoadmin' => "Efa voafafa io lahatsoratra io. Ny antony namafana azy dia io miseho ambangovangony eo ambany eo io, miaraka amin'ny fampahalalana antsipirihany momba ny mpikambana nikitika io pejy io talohan'ny namafana azy. Ny votoatin'ny pejy izay efa nofafana ireo dia ny mpitantana ihany no afaka mahita azy ankehitriny.",
-'undelete-revision' => "Santiôna voafafa an'i $1 (santiôna tamin'ny $4 tamin'ny $5) nataon'i $3 :",
-'undeleterevision-missing' => "Santiôna diso na tsy misy.
+'undelete-revision' => "Versiona voafafa an'i $1 (versiona tamin'ny $4 tamin'ny $5) nataon'i $3:",
+'undeleterevision-missing' => "Versiona diso na tsy misy.
Mety rohy tsy izy no anananao, na mety voafafa na naverina tamin'ny tahiry ilay santiôna.",
-'undelete-nodiff' => 'Tsy nahitana santiôna nialoha.',
+'undelete-nodiff' => 'Tsy nahitana versiona nialoha.',
'undeletebtn' => 'Avereno!',
'undeletelink' => 'Topi-maso/averina',
'undeleteviewlink' => 'hijery',
'undelete-error-long' => 'Nisy tsi-fetezana nitranga teo am-pamerenana ilay rakitra :
$1',
-'undelete-show-file-confirm' => "Tapa-kevitra ny hamafa ny santiôna voafafan'ny rakitra <nowiki>$1</nowiki> tamin'ny $2 tamin'ny $3 ve ianao ?",
+'undelete-show-file-confirm' => "Tapa-kevitra ny hamafa ny versiona voafafan'ny rakitra <nowiki>$1</nowiki> tamin'ny $2 tamin'ny $3 ve ianao ?",
'undelete-show-file-submit' => 'Eny',
# Namespace form on various pages
'contributions' => "Fandraisan'anjaran'ny mpikambana{{GENDER:$1}}",
'contributions-title' => "Fandraisan'anjaran'i $1",
'mycontris' => "Fandraisan'anjara",
-'contribsub2' => "Ho an'ny $1 ($2)",
+'contribsub2' => "Ho an'i {{GENDER:$3|$1}} ($2)",
'nocontribs' => "Tsy misy fanovana mifanaraka amin'ireo critères ireo.",
'uctop' => '(ankehitriny)',
'month' => "Tamin'ny volana (sy teo aloha) :",
Aseho eo ambany ny iditra farany ao amin'ny laogim-panakanana mba hampahalala :",
'sp-contributions-search' => "Hikaroka fandraisan'anjara",
'sp-contributions-username' => 'Adiresy IP na anaram-pikambana :',
-'sp-contributions-toponly' => 'Fanovana izay farany eo ihany no aseho',
+'sp-contributions-toponly' => 'Fiovana izay farany ihany no aseho',
'sp-contributions-submit' => 'Hikaroka',
# What links here
# Export
'export' => 'Hamoaka pejy',
-'exporttext' => "Afaka manondrana ny lahatsoratra miaraka amin'ny tantaram-panovana ny pejy na vondrom-pejy maromaro ianao.
-Aoriana dia mety hafaran'ny wiki iray mandeha amin'ny rindrankajy MediaWiki izany, na dia mbola tsy afaka
-atao aza izany amin'izao fotoana izao.
+'exporttext' => "Afaka mamoaka lahatsoratra ary tantaram-piovana amin'ny pejy tokana, na vondrom-pejy mifonona anaty XML ianao.
+Azo ampidirina amy wiki hafa izany amin'ny alalan'ny [[Special:Import|pejy fanafarana]].
-Ny fomba fanondranana pejy dia, manomeza lohateny izay na maromaro eto amin'ny boaty ety ambany eto, lohateny iray isaky ny andalana,
-ary safidio na ny votoatiny ankehitriny ihany no ilainao na miaraka amin'ny endriky ny pejy rehetra taloha, sy hoe ny votoatiny ankehitriny
-miampy fampahalalana momba ny fanovana farany fotsiny ve sa miaraka amin'ny tantaran'ny fanovana rehetra.
+Raha hamoaka pejy iray dia atso tsohy eo amin'ny boaty eo ambany ny lohatenin'ny pejinao, andalana iray isaky ny pejy, ary ataovy ny safidy: maka ny tantaram-piovany, na ny fiovana farany ihany.
-Etsy amin'ny toerana farany dia afaka mampiasa rohy ihany koa ianao, ohatra [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] ho an'ny [[{{MediaWiki:Mainpage}}]].",
+Ho an'ny tranga voalaza farany, dia azonao ampaisaina ny rohy, ohatra [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] ho an'ny pejy \"[[{{MediaWiki:Mainpage}}]]\".",
'exportall' => 'Hamoaka ny pejy rehetra',
'exportcuronly' => "Ny votoatiny ankehitriny ihany no haondrana fa tsy miaraka amin'ny tantarany iray manontolo",
'exportnohistory' => "
'import-upload-filename' => 'Anaran-drakitra :',
'import-comment' => 'Resaka :',
'importstart' => 'Am-pampidirana ny pejy…',
-'import-revision-count' => '$1 santiôna{{PLURAL:$1||}}',
+'import-revision-count' => 'Versiona $1{{PLURAL:$1||}}',
'importnopages' => 'Tsy misy pejy ho ampidirana.',
'importfailed' => "Tsy fetezan' ilay fampidirana : <nowiki>$1</nowiki>",
'importunknownsource' => "Karazana tsy fantatra an'ilay fango ho ampidirina",
Tsy hita ny rakitra miserana.',
'import-parse-failure' => 'Tsy fetezana teo am-pandinihana ny XML ho ampidirina',
'import-noarticle' => 'Tsy misy pejy ho ampidirina !',
-'import-nonewrevisions' => 'Efa nampidirina taloha daholo ny santiôna rehetra.',
+'import-nonewrevisions' => 'Efa nampidirina taloha daholo ny versiona rehetra.',
'xml-error-string' => "$1 eo amin'ny andininy faha $2, tsanganana faha $3 (oktety $4) : $5",
'import-upload' => 'Fandrefasana data XML',
'import-token-mismatch' => 'Very ny fampahalalàna momba ny kaonty.
'tooltip-pt-watchlist' => 'Ny lisitra ny pejy arahanao-maso',
'tooltip-pt-mycontris' => "Lisitra ny fandraisan'anjaranao",
'tooltip-pt-login' => 'Tsara aminao no miditra na misoratra anarana, fa tsy voatery ianao.',
-'tooltip-pt-anonlogin' => 'Tsara aminao no miditra na misoratra anarana, fa tsy voatery ianao.',
'tooltip-pt-logout' => 'Hidio',
'tooltip-ca-talk' => 'resaka momba io takelaka io',
'tooltip-ca-edit' => "Azonao atao no manova n'ity pejy ity.
'spamprotectiontext' => "Voasakan'ny sivana mpiaro amin'ny spam ny pejy saika hotahirizinao. Mety ho anton'izany ny fisian'ny rohy mankany amin'ny sehatra ivelan'ity wiki ity.",
'spamprotectionmatch' => "Izao teny izao: $1 ; no nanaitra ny sivana mpiaro amin'ny spam",
'spambot_username' => "Fanadiovana ny spam amin'i MediaWiki.",
-'spam_reverting' => "Famerenana an'ilay santiôna farany tsy misy ny rohy mankany amin'ny $1",
-'spam_blanking' => "Voafotsy ny santiôna misy ny rohy mankany amin'ny $1",
+'spam_reverting' => "Famerenana an'ilay versiona farany tsy misy ny rohy mankany amin'ny $1",
+'spam_blanking' => "Voafotsy ny versiona misy ny rohy mankany amin'ny $1",
# Info page
'pageinfo-title' => 'Fampahalalana ho an\'i "$1"',
'pageinfo-firstuser' => 'Mpamorona ilay pejy',
'pageinfo-firsttime' => 'Daty namoronana ilay pejy',
'pageinfo-lastuser' => 'Mpanova farany',
-'pageinfo-lasttime' => "Datin'ny fanovana farany",
+'pageinfo-lasttime' => 'Daty niovàna farany',
'pageinfo-edits' => "Isa manontolon'ny fanovana",
'pageinfo-authors' => "Isa manontolon'ny mpandray anjara",
'pageinfo-recent-edits' => "Fanovana vao haingana (natao tanatin'ny $1)",
'markaspatrolleddiff' => 'Marihana ho voamarina',
'markaspatrolledtext' => 'Marihana ho hita sy voatsara',
'markedaspatrolled' => 'Voamarina',
-'markedaspatrolledtext' => "Ny santiôna voafidy an'ny [[:$1]] dia voamarika ho voamarina.",
-'rcpatroldisabled' => "Tsy nalefa ny fanamarinana ao amin'ny fanovana farany.",
+'markedaspatrolledtext' => "Nomarihana ho voamarina ny versiona voafidy an'ny [[:$1]].",
+'rcpatroldisabled' => "Tsy nalefa ny fanamarinana ao amin'ny fiovana farany.",
'rcpatroldisabledtext' => 'Tsy atao ankehitriny ny fanamarinana ny pejy novaina farany.',
'markedaspatrollederror' => 'Tsy afaka marihana ho voamarina',
'markedaspatrollederrortext' => 'Tsy maintsy misafidy santiôna iray ianao mba hahafahanao manamarika azy ho voamarina.',
# Patrol log
'patrol-log-page' => "Laogin'ny fanovana voamarina",
'patrol-log-header' => "Ity dia laogy mikasikan'ny fanovana voamarina.",
-'log-show-hide-patrol' => "$1 ny laogy mikasikan'ny santiôna voamarina",
+'log-show-hide-patrol' => "$1 ny laogy mikasikan'ny versiona voamarina",
# Image deletion
'deletedrevision' => "Fanovana an'i $1 taloha voafafa.",
'filedelete-archive-read-only' => "Ny petra-drakitra fitehirizana « $1 » dia tsy afaka ovain'ny lohamilina.",
# Browsing diffs
-'previousdiff' => '← Ilay fampitahana teo arina',
-'nextdiff' => 'fampitahana manaraka →',
+'previousdiff' => '← Fiovana taloha',
+'nextdiff' => 'Fiovana manaraka →',
# Media information
'mediawarning' => "'''Fampitandremana''': Mety misy renifango manao ratsy io karazan-drakitra io.
'file-info' => 'Haben-drakitra : $1, karazana MIME : $2',
'file-info-size' => "$1 × $2 teboka, haben'ilay rakitra : $3, endrika MIME : $4",
'file-info-size-pages' => '$1 × $2 teboka, haben-drakitra : $3, karazana MIME $4, pejy $5 {{PLURAL:}}',
-'file-nohires' => "Tsy misy sary ngeza non'io",
+'file-nohires' => 'Tsy misy sary lehiba noho io.',
'svg-long-desc' => 'rakitra SVG, habe $1 × $2 teboka, habe : $3',
'svg-long-error' => 'Rakitra SVG tsy ekena : $1',
-'show-big-image' => "Hijery ny tena haben'ny sary",
+'show-big-image' => 'Rakitra niaviana',
'show-big-image-preview' => "Haben'ny topi-maso: $1.",
'show-big-image-other' => 'Habe hafa: $1{{PLURAL:$2}}',
'show-big-image-size' => '$1 × $2 teboka',
'exif-software' => 'Rindrankajy nampiasaina',
'exif-artist' => 'Mpaka azy',
'exif-copyright' => 'Mpanana ilay copyright',
-'exif-exifversion' => 'Santiôna EXIF',
-'exif-flashpixversion' => 'Santiôna FlashPix',
+'exif-exifversion' => 'Versiona EXIF',
+'exif-flashpixversion' => 'Versiona FlashPix',
'exif-colorspace' => 'Valan-doko',
'exif-pixelydimension' => 'Haavon-tsary',
'exif-pixelxdimension' => 'Halala-tsary',
'duplicate-defaultsort' => '\'\'\'Tandremo\'\'\' : manitsaka ny sort key taloha "$1" ilay sort key ankehitriny "$2".',
# Special:Version
-'version' => 'Santiôna',
+'version' => 'Versiona',
'version-extensions' => 'Fanitarana nampidirina',
'version-specialpages' => 'Pejy manokana',
'version-variables' => 'Miova',
'version-poweredby-others' => 'hafa',
'version-software' => 'Rindrankahy voapetraka',
'version-software-product' => 'Vokatra',
-'version-software-version' => 'Santiôna',
+'version-software-version' => 'Versiona',
# Special:FileDuplicateSearch
'fileduplicatesearch' => 'Hitady rakitra mitovy endrika',
'specialpages-group-maintenance' => 'laogy hikojakojana',
'specialpages-group-other' => 'Pejy manokana hafa',
'specialpages-group-login' => 'Hiditra / hisoratra anarana',
-'specialpages-group-changes' => 'Fanovana farany sy laogy',
+'specialpages-group-changes' => 'Fiovana farany sy laogy',
'specialpages-group-media' => 'Laogy sy fampidirana rakitra media.',
'specialpages-group-users' => 'Mpikambana sy satany',
'specialpages-group-highuse' => 'Pejy ampiasaina mafy',
'comparepages' => 'Hampitaha pejy',
'compare-page1' => 'Pejy 1',
'compare-page2' => 'Pejy 2',
-'compare-rev1' => 'Santiôna 1',
-'compare-rev2' => 'Santiôna 2',
+'compare-rev1' => 'Versiona 1',
+'compare-rev2' => 'Versiona 2',
'compare-submit' => 'Ampitahao',
# Database error messages
$messages = array(
# User preference toggles
'tog-underline' => 'Кузе кылвер-влакым ӱлычын удыралаш?',
-'tog-justify' => 'Абзацым лопкыт дене тӧрлаш',
'tog-hideminor' => 'Пытартыш тӧрлатымаш-влак радам гыч изи тӧрлатымаш-влакым кораҥдаш',
'tog-hidepatrolled' => 'Тергыме тӧрлатымаш-влакым пытартыш тӧрлатымаш лӱмерыште шылташ',
'tog-newpageshidepatrolled' => 'Тергыме лаштык-влакым у лаштык лӱмерыште шылташ',
'tog-usenewrc' => 'У тӧрлатымаш саемдыме лӱмерым кучылташ (JavaScript кӱлеш)',
'tog-numberheadings' => 'Вуймутым автоматик йӧн дене радамлаш',
'tog-showtoolbar' => 'Тӧрлатымаш ӱзгараҥам ончыкташ',
-'tog-showtoc' => 'Вуймут радамым ончыкташ (3 деч шуко вуймутан лаштык-влаклан)',
-'tog-rememberpassword' => 'Тиде компьютерышто мыйын шолыпмутым шарнаш (эн шуко $1 {{PLURAL:$1|кечылын|кечылан}})',
+'tog-rememberpassword' => 'Тиде компьютерышто мыйын шолыпмутым шарнаш (эн шуко $1 {{PLURAL:$1|1=кечылын|кечылан}})',
'tog-watchcreations' => 'Мыйын ыштыме лаштык-влакым эскерыме лӱмерыш ешараш',
'tog-watchdefault' => 'Мыйын тӧрлатыме лаштык-влакым эскерыме лӱмерыш ешараш',
'tog-watchmoves' => 'Мыйын лӱмым вашталтыме лаштык-влакым эскерыме лӱмерыш ешараш',
'dec' => 'Теле',
# Categories related messages
-'pagecategories' => '{{PLURAL:$1|Категорий|Категорий}}',
+'pagecategories' => '{{PLURAL:$1|1=Категорий|Категорий}}',
'category_header' => '"$1" категорийыште лаштык-влак',
'subcategories' => 'Ӱлылкатегорий-влак',
'category-media-header' => '"$1" категорийыште файл-влак',
'category-empty' => "''Ты жаплан тиде категорийыште нимоат уке.''",
-'hidden-categories' => '{{PLURAL:$1|Шылтыме категорий|Шылтыме категорий-влак}}',
+'hidden-categories' => '{{PLURAL:$1|1=Шылтыме категорий|Шылтыме категорий-влак}}',
'hidden-category-category' => 'Шылтымо категорий-влак',
-'category-subcat-count' => '{{PLURAL:$2|Тиде категорийыш ик ӱлылкатегорий гына пура.|{{PLURAL:$1|Тыгай $1 ӱлылкатегорий|Тыгане $1 ӱлылкатегорий-влак}} тиде категорийыште, чыла $2.}}',
-'category-article-count' => '{{PLURAL:$2|Тиде категорийыш ик лаштык гына пура.|{{PLURAL:$1|Тыгай $1 лаштык|Тыгане $1 лаштык-влак}} тиде категорийыште, чыла $2.}}',
-'category-file-count' => '{{PLURAL:$2|Тиде категорийыш ик лаштык гына пура.|{{PLURAL:$1|$1 лаштык|$1 лаштык}} тиде категорийыште, чылажге $2.}}',
+'category-subcat-count' => '{{PLURAL:$2|Тиде категорийыш ик ӱлылкатегорий гына пура.|{{PLURAL:$1|1=Тыгай $1 ӱлылкатегорий|Тыгане $1 ӱлылкатегорий-влак}} тиде категорийыште, чыла $2.}}',
+'category-article-count' => '{{PLURAL:$2|Тиде категорийыш ик лаштык гына пура.|{{PLURAL:$1|1=Тыгай $1 лаштык|Тыгане $1 лаштык-влак}} тиде категорийыште, чыла $2.}}',
+'category-file-count' => '{{PLURAL:$2|Тиде категорийыш ик лаштык гына пура.|{{PLURAL:$1|1=$1 лаштык|$1 лаштык}} тиде категорийыште, чылажге $2.}}',
'listingcontinuesabbrev' => '(умбакыжым)',
'noindex-category' => 'Шотыш налдыме лаштык-влак',
'yourpasswordagain' => 'Шолыпмутым угыч пуртымаш:',
'createacct-yourpasswordagain' => 'Шолыпмутым пеҥгыдемде',
'createacct-yourpasswordagain-ph' => 'Шолыпмутым угыч пурто',
-'remembermypassword' => 'Тиде компьютерыште мыйым шарнаш (эн шуко $1 {{PLURAL:$1|кечылан|кечылан}})',
+'remembermypassword' => 'Тиде компьютерыште мыйым шарнаш (эн шуко $1 {{PLURAL:$1|1=кечылан|кечылан}})',
'yourdomainname' => 'Тендан домен:',
'login' => 'Шке денет палдаре',
'nav-login-createaccount' => 'Пураш/Регистрацийым эрте',
Эше ик гана ыштен ончо.',
'wrongpasswordempty' => 'Тый яра шолыпмутым пуртенат.
Эше ик гана ыштен ончо.',
-'passwordtooshort' => 'Шолыпмут {{PLURAL:$1|1 символ|$1 символ}} деч шагал огыл лийшаш.',
+'passwordtooshort' => 'Шолыпмут {{PLURAL:$1|1=1 символ|$1 символ}} деч шагал огыл лийшаш.',
'mailmypassword' => 'У шолыпмутым колташ',
'passwordremindertitle' => '{{SITENAME}} сайтлан жаплан ыштыме у шолыпмут',
'passwordremindertext' => '{{SITENAME}} сайтлан ($4) $1 IP адрес гыч ала кӧ (але тый шкеак) у шолыпмутым йодын. "$2" пайдаланышылан жаплан ыштыме у шолыпмутым ыштыме да "$3" электрон адресыш колтымо. Тидым тый йодынат гын, системыш у шолыпмут дене пуро.
'previewnote' => "'''Тиде ончылгоч ончымаш гына;
вашталтыш-влакым эше аралыме огыл!'''",
'editing' => 'Тӧрлаталтеш $1',
-'creating' => '$1 лаштыкым ыштемаш',
+'creating' => '$1 лаштыкым ыштымаш',
'editingsection' => 'Тӧрлаталтеш $1 (ужаш)',
'yourtext' => 'Тендан текст',
'yourdiff' => 'Ойыртем',
Возыметым нигӧлан пайдаланаш, тӧрлаташ ынет пу гын тышке тудым ит шыҥдаре.<br />
Тыгак текстым шке возымо але тудым эрыкан вер гыч налме шотышто мутым пуэт.<br />
'''АВТОР АЛЕ ТУДЫН ПРАВАМ АРАЛЫШЕ-ВЛАК ДЕЧ ЙОДДЕ МАТЕРИАЛЫМ ИТ ШЫҤДАРЕ!'''",
-'templatesused' => 'Тиде лаштыкыште кучылтмо {{PLURAL:$1|ямдылык|ямдылык-влак}}:',
-'templatesusedpreview' => 'Тиде лаштыкыште кучылтмо {{PLURAL:$1|ямыдылык|ямдылык-влак}}:',
+'templatesused' => 'Тиде лаштыкыште кучылтмо {{PLURAL:$1|1=ямдылык|ямдылык-влак}}:',
+'templatesusedpreview' => 'Тиде лаштыкыште кучылтмо {{PLURAL:$1|1=ямыдылык|ямдылык-влак}}:',
'template-protected' => '(тӧрлаташ чарыме)',
'template-semiprotected' => '(верын аралыме)',
-'hiddencategories' => 'Тиде лаштык $1 {{PLURAL:$1|шылтыме категорийыш|шылтыме категорийыш}} лектеш:',
-'permissionserrorstext-withaction' => "Тыйын '''$2''' кертмашет шагал. Тиде {{PLURAL:$1|амал ден|амал дене}}:",
+'hiddencategories' => 'Тиде лаштык $1 {{PLURAL:$1|1=шылтыме категорийыш|шылтыме категорийыш}} лектеш:',
+'permissionserrorstext-withaction' => "Тыйын '''$2''' кертмашет шагал. Тиде {{PLURAL:$1|1=амал ден|амал дене}}:",
'recreate-moveddeleted-warn' => "'''Йолташ, тиде лаштыкым тиддеч ончыч шӧреныт.''' Тудым илаҥдарыме деч ончыч, тыгай лаштык кӱлешак мо - тергыман. Ӱлнырак шӧрымаш да лӱм вашталтымаш журнал-влакым шергал лекташ лиеш.",
'moveddeleted-notice' => 'Тиде лаштык шӧралтын.
Лаштыклан шӧрымӧ да кусарыме нерген журнал ӱлнӧ ончыктымо.',
'lineno' => '$1 корно:',
'compareselectedversions' => 'Ойырымо версий-влакым таҥастараш',
'editundo' => 'чараш',
-'diff-multi' => '({{PLURAL:$1|не показана $1 промежуточная версия|не показаны $1 промежуточные версии|не показаны $1 промежуточных версий}} {{PLURAL:$2|$2 участника|$2 участников}})',
# Search results
'searchresults' => 'Кычалын мумо',
'nextn' => 'весе {{PLURAL:$1|$1}}',
'prevn-title' => 'Кодшо $1 {{PLURAL:$1|результат}}',
'nextn-title' => 'Весе $1 {{PLURAL:$1|результат}}',
-'shown-title' => 'Лаштыкыште $1 {{PLURAL:$1|возымаш|возымашым}} ончыкташ',
+'shown-title' => 'Лаштыкыште $1 {{PLURAL:$1|1=возымаш|возымашым}} ончыкташ',
'viewprevnext' => 'Ончал ($1 {{int:pipe-separator}} $2) ($3)',
'searchmenu-new' => "'''Тиде вики-проектыште «[[:$1]]» лӱман лаштыкым ышташ!'''",
'searchprofile-articles' => 'Возымо лаштык-влак',
'searchprofile-images-tooltip' => 'Файл-влакым кычалмаш',
'searchprofile-everything-tooltip' => 'Чыла лаштык-влакыште кычалаш (каҥашымаш лаштык-влакыштат)',
'searchprofile-advanced-tooltip' => 'Искать в заданных пространствах имён',
-'search-result-size' => '$1 ({{PLURAL:$2|$2 мут|$2 мут}})',
-'search-result-category-size' => '$1 {{PLURAL:$1|вхождение|вхождения|вхождений}} ($2 {{PLURAL:$2|подкатегория|подкатегории|подкатегорий}}, $3 {{PLURAL:$3|файл|файла|файлов}}).',
+'search-result-size' => '$1 ({{PLURAL:$2|1=$2 мут|$2 мут}})',
+'search-result-category-size' => '$1 {{PLURAL:$1|вхождение|вхождений|вхождения}} ($2 {{PLURAL:$2|подкатегория|подкатегорий|подкатегории}}, $3 {{PLURAL:$3|файл|файлов|файла}}).',
'search-redirect' => '($1 вес вере колтымаш)',
'search-section' => '(ужаш $1)',
'search-suggest' => 'Але те $1 возынеда ыле',
'search-interwiki-more' => '(эше)',
'searchrelated' => 'кылдалтше',
'searchall' => 'чыла',
-'showingresultsheader' => "'''$4'''лан {{PLURAL:$5|'''$3''' гыч '''$1''' результат|'''$3''' гыч '''$1 - $2''' результат}}",
+'showingresultsheader' => "'''$4'''лан {{PLURAL:$5|1='''$3''' гыч '''$1''' результат|'''$3''' гыч '''$1 - $2''' результат}}",
'search-nonefound' => 'Тыйын йодышет почеш нимо муалтын огыл',
'powersearch-legend' => 'Сайынрак кычалаш',
'powersearch-ns' => 'Кычалаш тиде лӱм-влакын кумдыкышт-влакыште:',
'youremail' => 'Электрон почто:',
'username' => '{{GENDER:$1|Пайдаланышын лӱмжӧ|Пайдаланышын лӱмжӧ}}:',
'uid' => '{{GENDER:$1|Пайдаланышын}} ID-же:',
-'prefs-memberingroups' => '{{PLURAL:$1|Тӱшкаште шогышо|Тӱшка-влакыште шогышо}}:',
+'prefs-memberingroups' => '{{PLURAL:$1|1=Тӱшкаште шогышо|Тӱшка-влакыште шогышо}}:',
'yourrealname' => 'Чын лӱмжӧ:',
'yourlanguage' => 'Йылме:',
'yournick' => 'Кидпале:',
'filehist-filesize' => 'Файлын кугытшо',
'filehist-comment' => 'Файл нерген:',
'imagelinks' => 'Файлым кучылтмаш',
-'linkstoimage' => 'Тиде {{PLURAL:$1|$1 лаштык саде файл дене кылдалтын|$1 лаштык-влак саде файл дене кылдалтыныт}}:',
+'linkstoimage' => 'Тиде {{PLURAL:$1|1=$1 лаштык саде файл дене кылдалтын|$1 лаштык-влак саде файл дене кылдалтыныт}}:',
'nolinkstoimage' => 'Тиде файл дене кылдалтше ик лаштыкат уке.',
'sharedupload' => 'Тиде файлын верже: $1, туге гынат, тудым моло веренат кучылташ лиеш.',
'uploadnewversion-linktext' => 'Тиде файлын у тӱрлыкшым пурташ',
'statistics-views-peredit' => 'Ик тӧрлатымашлан ончымо',
'statistics-users' => 'Регистрацийым эртыше [[Special:ListUsers|пайдаланыше-влак]]',
'statistics-users-active' => 'Чӱчкыдын пайдаланыше-влак',
-'statistics-users-active-desc' => 'Пытартыш {{PLURAL:$1|кечыште|$1 кечыште}} иктаж-мом ыштыше пайдаланыше-влак',
+'statistics-users-active-desc' => 'Пытартыш {{PLURAL:$1|1=кечыште|$1 кечыште}} иктаж-мом ыштыше пайдаланыше-влак',
'statistics-mostpopular' => 'Эн чӱчкыдын ончымо лаштык-влак',
'brokenredirects' => 'Пудыртымо вес вере колтымаш-влак',
'withoutinterwiki-submit' => 'ончыкташ',
# Miscellaneous special pages
-'nbytes' => '$1 {{PLURAL:$1|байт|байт}}',
-'nmembers' => '$1 {{PLURAL:$1|лаштык|лаштык-влак}}',
-'nviews' => '$1 {{PLURAL:$1|ончымо|ончымо-влак}}',
+'nbytes' => '$1 {{PLURAL:$1|1=байт|байт}}',
+'nmembers' => '$1 {{PLURAL:$1|1=лаштык|лаштык-влак}}',
+'nviews' => '$1 {{PLURAL:$1|1=ончымо|ончымо-влак}}',
'lonelypages' => 'Тулык лаштык-влак',
'wantedcategories' => 'Ыштыман категорий-влак',
'wantedpages' => 'Ыштышаш лаштык-влак',
'newpages-username' => 'Пайдаланышын лӱмжӧ:',
'move' => 'Кусараш',
'movethispage' => 'Тиде лаштыкым кусараш',
-'pager-newer-n' => '{{PLURAL:$1|вес|вес}}',
-'pager-older-n' => '{{PLURAL:$1|ончычсо|ончычсо}}',
+'pager-newer-n' => '{{PLURAL:$1|1=вес|вес}}',
+'pager-older-n' => '{{PLURAL:$1|1=ончычсо|ончычсо}}',
# Book sources
'booksources' => 'Негызым пыштыше кнага-влак',
# Special:ActiveUsers
'activeusers' => 'Чӱчкыдын пайдаланыше-влак',
-'activeusers-count' => 'Пытартыш $3 {{PLURAL:$3|кечыште|кечылаште}} $1 {{PLURAL:$1|тӧрлатымаш|тӧрлатымаш-влак}}',
+'activeusers-count' => 'Пытартыш $3 {{PLURAL:$3|1=кечыште|кечылаште}} $1 {{PLURAL:$1|1=тӧрлатымаш|тӧрлатымаш-влак}}',
'activeusers-hidebots' => 'Бот-влакым шылташ',
'activeusers-hidesysops' => 'Сайтвиктарыше-влакым шылташ',
'unwatch' => 'Эскерыман огыл',
'unwatchthispage' => 'Эскерымым чарнаш',
'watchlist-details' => 'Эскерымаш лӱмерыштет $1 {{PLURAL:$1|лаштык}}, каҥашымаш лаштык-влакым шотлыде',
-'watchlistcontains' => 'Тыйын лӱмерыште $1 {{PLURAL:$1|лаштык|лаштык}}.',
+'watchlistcontains' => 'Тыйын лӱмерыште $1 {{PLURAL:$1|1=лаштык|лаштык}}.',
'wlshowlast' => 'Пытартыш $1 шагат $2 кечылан $3 ончыкташ',
'watchlist-options' => 'Эскерыме лӱмерын келыштарымаш',
'isredirect' => 'вес вере колтышо лаштык',
'istemplate' => 'пуртымаш',
'isimage' => 'файллан кылвер',
-'whatlinkshere-prev' => '{{PLURAL:$1|ончычсо|$1 ончычсо}}',
-'whatlinkshere-next' => '{{PLURAL:$1|вес|$1 вес}}',
+'whatlinkshere-prev' => '{{PLURAL:$1|1=ончычсо|$1 ончычсо}}',
+'whatlinkshere-next' => '{{PLURAL:$1|1=вес|$1 вес}}',
'whatlinkshere-links' => '← кылвер-влак',
'whatlinkshere-hideredirs' => 'вес вере колтымаш-влакым $1',
'whatlinkshere-hidetrans' => 'пуртымашым $1',
'nextdiff' => 'Вес тӧрлатымаш →',
# Media information
-'widthheightpage' => '$1 × $2, $3 {{PLURAL:$3|лаштык|лаштык}}',
+'widthheightpage' => '$1 × $2, $3 {{PLURAL:$3|1=лаштык|лаштык}}',
'file-info-size' => '$1 × $2 пиксел, файлын кугытшо: $3, MIME-тип: $4',
'file-nohires' => 'Кугурак чаплык уке.',
'svg-long-desc' => 'SVG файл, шкенжын кугытшо: $1 × $2 пиксел, файлын кугытшо: $3',
$messages = array(
# User preference toggles
'tog-underline' => 'Garih bawahi tautan:',
-'tog-justify' => 'Ratokan paragraf',
'tog-hideminor' => 'Suruakan suntiangan ketek di parubahan baru',
'tog-hidepatrolled' => 'Suruakan suntiangan nan lah dipatroli di parubahan tabaru',
'tog-newpageshidepatrolled' => 'Suruakan laman nan lah dipatroli dari daftar laman baru',
'tog-numberheadings' => 'Agiah nomor judul sacaro otomatis',
'tog-showtoolbar' => 'Tunjuakan bilah panyuntiangan (paralu JavaScript)',
'tog-editondblclick' => 'Suntiang laman jo klik duo kali (paralu JavaScript)',
-'tog-editsection' => 'Aktipan panyuntiangan subbagian malalui pautan [suntiang]',
'tog-editsectiononrightclick' => 'Aktipan bagian panyuntiangan jo mangklik kanan pado judul bagian (paralu JavaScript)',
-'tog-showtoc' => 'Tunjuakan daftar isi (untuak laman nan labiah dari 3 subbagian)',
'tog-rememberpassword' => 'Ingek log masuak denai di paramban ko (salamo $1 {{PLURAL:$1|hari}})',
'tog-watchcreations' => 'Tambahan laman nan den buek jo gambar nan den unggah ka daftar pantau',
'tog-watchdefault' => 'Tambahan laman jo gambar nan den suntiang ka daftar pantau',
'compareselectedversions' => 'Bandiangan versi tapiliah',
'showhideselectedversions' => 'Tunjuakan/suruakan versi tapiliah',
'editundo' => 'batal',
-'diff-multi' => '({{PLURAL:$1|$1 revisi antaro}} dek {{PLURAL:$2|$2 pangguno}} indak ditampilan)',
# Search results
'searchresults' => 'Hasil pancarian',
'rows' => 'Barih:',
'columns' => 'Kolom:',
'searchresultshead' => 'Cari',
-'resultsperpage' => 'Hasil per laman:',
'stub-threshold' => 'Ambang bateh untuak format <a href="#" class="stub">pautan rancangan</a>:',
'stub-threshold-disabled' => 'Nonaktifkan',
'recentchangesdays' => 'Jumlah hari nan ditunjuakan di parubahan baru:',
'unwatchthispage' => 'Batal pantau laman ko',
'watchlist-details' => '{{PLURAL:$1|$1 laman}} dalam daftar pantau Sanak, indak tamasuak laman rundiangnyo.',
'wlheader-showupdated' => "Laman nan alah barubah sajak kunjuangan tarakhia Sanak ditunjuakan jo '''hurup taba'''",
-'wlnote' => "Di bawah ko ado $1 {{PLURAL:$1|parubahan}} dalam {{PLURAL:$2|'''$2''' jam}} iko, sampai tanggal $3, pukua $4.",
'wlshowlast' => 'Tunjuakan $1 jam parubahan dalam $2 hari tarakhia $3',
'watchlist-options' => 'Piliahan daftar pantau',
'tooltip-pt-watchlist' => 'Daftar laman nan dipantau.',
'tooltip-pt-mycontris' => 'Daftar jariah Sanak',
'tooltip-pt-login' => 'Sanak disaranan untuak masuak log; walaupun indak wajib',
-'tooltip-pt-anonlogin' => 'Sanak disaranan untuak masuak log; walaupun indak wajib',
'tooltip-pt-logout' => 'Kalua log',
'tooltip-ca-talk' => 'Parudiangan tantang isi laman',
'tooltip-ca-edit' => 'Angku dapek manyuntiang laman ko. Silakan gunoan tombol pratonton sabalun manyimpan',
'duration-minutes' => '$1 {{PLURAL:$1|minik}}',
'duration-hours' => '$1 {{PLURAL:$1|jam}}',
'duration-days' => '$1 {{PLURAL:$1|ari}}',
-'duration-weeks' => '{{PLURAL: $1|}}$1 pakan',
+'duration-weeks' => '{{PLURAL:$1|}}$1 pakan',
'duration-years' => '$1 {{PLURAL:$1|taun}}',
'duration-decades' => '$1 {{PLURAL:$1|dekade}}',
'duration-centuries' => '$1 {{PLURAL:$1|abaik}}',
$messages = array(
# User preference toggles
'tog-underline' => 'Потцртување на врски:',
-'tog-justify' => 'Порамнување на пасусите по ширината на страницата',
'tog-hideminor' => 'Скривај ги ситните уредувања во скорешните промени',
'tog-hidepatrolled' => 'Скриј испатролирани уредувања во скорешните промени',
'tog-newpageshidepatrolled' => 'Скриј испатролирани страници од списокот на нови страници',
'tog-numberheadings' => 'Нумерирај ги заглавијата',
'tog-showtoolbar' => 'Прикажи алатник за уредување',
'tog-editondblclick' => 'Уредување на страници при двоен стисок',
-'tog-editsection' => 'Овозможи уредување на заглавија преку врските [уреди]',
'tog-editsectiononrightclick' => 'Уредување на заглавија со десно копче од глушецот на нивниот наслов',
-'tog-showtoc' => 'Покажи содржина (за страници со повеќе од 3 заглавија)',
'tog-rememberpassword' => 'Запомни ме на овој прелистувач (највеќе до $1 {{PLURAL:$1|ден|дена}})',
'tog-watchcreations' => 'Додавај ги страниците што ги создавам и податотеките што ги подигам во списокот на набљудувања',
'tog-watchdefault' => 'Додавај ги страниците и податотеките што ги уредувам во списокот на набљудувања',
'retypenew' => 'Повторете ја новата лозинка:',
'resetpass_submit' => 'Поставете лозинка и најавете се',
'changepassword-success' => 'Вашата лозинка е успешно сменета!',
+'changepassword-throttled' => 'Имате премногу обиди за најава за кратко време.
+Почекајте $1 пред да се обидете повторно.',
'resetpass_forbidden' => 'Лозинките не може да се менуваат',
'resetpass-no-info' => 'Мора да сте најавени ако сакате да имате директен пристап до оваа страница.',
'resetpass-submit-loggedin' => 'Смени лозинка',
'changeemail-password' => 'Вашата лозинка на {{SITENAME}}:',
'changeemail-submit' => 'Смени е-пошта',
'changeemail-cancel' => 'Откажи',
+'changeemail-throttled' => 'Имате премногу обиди за најава за кратко време.
+Почекајте $1 пред да се обидете повторно.',
# Special:ResetTokens
'resettokens' => 'Врати одново шифри',
'headline_sample' => 'Наслов',
'headline_tip' => 'Поднаслов',
'nowiki_sample' => 'Овде внесете неформатиран текст',
-'nowiki_tip' => 'Занемари вики-форматирање',
+'nowiki_tip' => 'Занемари викиформатирање',
'image_sample' => 'Пример.jpg',
'image_tip' => 'Вметната слика',
'media_sample' => 'Пример.ogg',
'template-semiprotected' => '(полузаштитен)',
'hiddencategories' => 'Оваа страница припаѓа на {{PLURAL:$1|1 скриена категорија|$1 скриени категории}}:',
'edittools' => '<!-- Овој текст ќе се прикаже под обрасците за уредување и подигање. -->',
+'edittools-upload' => '-',
'nocreatetext' => '{{SITENAME}} ја има ограничено можноста за создавање нови страници.
Можете да се вратите назад и да уредувате постоечка страница или [[Special:UserLogin|најавете се или создајте нова корисничка сметка]].',
'nocreate-loggedin' => 'Немате дозвола да создавате нови страници.',
'invalid-content-data' => 'Неважечки податоци од содржината',
'content-not-allowed-here' => 'Содржините од моделот „$1“ не се допуштени на страницата [[$2]]',
'editwarning-warning' => 'Ако ја напуштите страницата ќе ги изгубите сите промени кои сте ги направиле.
-Ако сте најавени, можете да го исклучите ова предупредување во одделот „Уредување“ во вашите нагодувања.',
+Ако сте најавени, можете да го исклучите ова предупредување во одделот „{{int:prefs-editing}}“ во вашите нагодувања.',
+'editpage-notsupportedcontentformat-title' => 'Форматот на содржината не е поддржан',
+'editpage-notsupportedcontentformat-text' => 'Форматот $1 is не е поддржан од содржинскиот модел $2.',
# Content models
'content-model-wikitext' => 'викитекст',
'showhideselectedversions' => 'Прикажи/скриј избрани ревизии',
'editundo' => 'откажи',
'diff-empty' => '(нема разлика)',
-'diff-multi' => '({{PLURAL:$1|Не е прикажана една меѓувремена ревизија|Не се прикажани $1 меѓувремени ревизии}} од {{PLURAL:$2|еден корисник|$2 корисници}})',
+'diff-multi-sameuser' => '({{PLURAL:$1|Не е прикажана една меѓувремена ревизија|Не се прикажани $1 меѓувремени ревизии}} од истиот корисник)',
+'diff-multi-otherusers' => '({{PLURAL:$1|Не е прикажана една меѓувремена ревизија|Не се прикажани $1 меѓувремени ревизии}} од {{PLURAL:$2|еден друг корисник|$2 корисници}})',
'diff-multi-manyusers' => '({{PLURAL:$1|Не е прикажана една меѓувремена ревизија направена|Не се прикажани $1 меѓувремени ревизии направени}} од повеќе од $2 {{PLURAL:$2|корисник|корисници}})',
'difference-missing-revision' => 'Не пронајдов {{PLURAL:$2|една ревизија|$2 ревизии}} од оваа разлика ($1).
'shown-title' => 'Прикажи $1 {{PLURAL:$1|резултат|резултати}} на страница',
'viewprevnext' => 'Погледајте ($1 {{int:pipe-separator}} $2) ($3).',
'searchmenu-exists' => "'''На ова вики има страница со наслов „[[:$1]]“'''",
-'searchmenu-new' => "Создајте ја страницата „[[:$1]]“ на ова вики!'''",
+'searchmenu-new' => '<strong>Создајте ја страницата „[[:$1]]“ на ова вики!</strong> {{PLURAL:$2|0=|Погледајте ја и страницата најдена со пребарувањето.|Погледајте ги и најдените резултати од пребарувањето.}}',
'searchprofile-articles' => 'Статии',
'searchprofile-project' => 'Помош и проектни страници',
'searchprofile-images' => 'Податотеки',
'search-result-score' => 'Релевантност: $1%',
'search-redirect' => '(пренасочување $1)',
'search-section' => '(пасус $1)',
+'search-file-match' => '(се совпаѓа со содржината на податотеката)',
'search-suggest' => 'Дали мислевте на: $1',
'search-interwiki-caption' => 'Збратимени проекти',
'search-interwiki-default' => 'Најдено на $1:',
'rows' => 'Редови:',
'columns' => 'Колони:',
'searchresultshead' => 'Пребарување',
-'resultsperpage' => 'Резултати по страница:',
'stub-threshold' => 'Праг за <a href="#" class="stub">никулци</a> (бајти):',
'stub-threshold-disabled' => 'Оневозможено',
'recentchangesdays' => 'Денови за приказ во скорешните промени:',
'right-upload' => 'Подигни податотеки',
'right-reupload' => 'Заменување на постоечки податотеки',
'right-reupload-own' => 'Преснимување на постоечка податотека подигната од вас',
-'right-reupload-shared' => 'Ð\9dаложÑ\83ваÑ\9aе на едни подаÑ\82оÑ\82еки вÑ\80з дÑ\80Ñ\83ги на заедниÑ\87каÑ\82а мÑ\83лÑ\82имедиÑ\98ална Ñ\80изниÑ\86а локално',
+'right-reupload-shared' => 'Ð\9fÑ\80езапиÑ\81 на едни подаÑ\82оÑ\82еки вÑ\80з дÑ\80Ñ\83ги на заедниÑ\87коÑ\82о мÑ\83лÑ\82имедиÑ\98ално Ñ\81кладиÑ\88Ñ\82е локално',
'right-upload_by_url' => 'Подигање на податотека од URL-адреса',
'right-purge' => 'Бришење од опслужувачки кеш на страницата без барање потврда за тоа',
'right-autoconfirmed' => 'Без ограничувања на стапки за IP-адреса',
Ако ја имате оваа слика во изворна големина, подигнете ја неја. Во спротивно сменете го името на податотеката.",
'fileexists-forbidden' => 'Податотека со тоа име веќе постои и не може да биде заменета.
Ако и понатаму сакате да ја подигнете вашата податотеката, ве молиме вратете се назад и подигнете ја под друго име. [[File:$1|thumb|center|$1]]',
-'fileexists-shared-forbidden' => 'Податотека со ова име веќе постои во заедничката ризница.
-Ако и понатаму сакате да ја подигнете податотеката, ве молиме вратете се и повторно подигнете ја податотеката со ново име. [[File:$1|thumb|center|$1]]',
+'fileexists-shared-forbidden' => 'Во заедничкото складиште веќе постои податотека со ова име.
+Ако и понатаму сакате да ја подигнете, вратете се и подигнете ја под друго име.
+[[File:$1|thumb|center|$1]]',
'file-exists-duplicate' => 'Оваа податотека е дупликат со {{PLURAL:$1|следнава податотека|следниве податотеки}}:',
'file-deleted-duplicate' => 'Податотека индентична со податотеката ([[:$1]]) претходно била избришана. Треба да проверите во дневникот на бришења за оваа податотека пред повторно да ја подигнете.',
+'file-deleted-duplicate-notitle' => 'Податотека сосем иста како оваа била претходно избришана, а насловот бил притаен.
+Треба да побарате од некој што има можност да гледа податоци за притаени податотеки да ја разгледа ситуацијата пред да продолжите со преподигањето.',
'uploadwarning' => 'Предупредување при подигање',
'uploadwarning-text' => 'Изменете го описот на податотеката подолу и обидете се повторно.',
'savefile' => 'Зачувај податотека',
'uploadnewversion-linktext' => 'Подигни нова верзија на податотекава',
'shared-repo-from' => 'од $1',
'shared-repo' => 'заедничко складиште',
-'shared-repo-name-wikimediacommons' => 'Ð\97аедниÑ\87каÑ\82а РизниÑ\86а',
+'shared-repo-name-wikimediacommons' => 'РизниÑ\86аÑ\82а',
'filepage.css' => '/* Тука поставените каскадни стилски страници (CSS) се вклучени во страницата за опис на податотеката, како и на клиентските викија */',
'upload-disallowed-here' => 'Нажалост, не можете да презапишете врз сликава.',
'protectedpages' => 'Заштитени страници',
'protectedpages-indef' => 'Само бесконечни заштити',
'protectedpages-cascade' => 'Само каскадни заштити',
+'protectedpages-noredirect' => 'Скриј пренасочувања',
'protectedpagesempty' => 'Во моментов нема заштитени страници со параметрите кои ги зададовте.',
'protectedtitles' => 'Заштитени наслови',
'protectedtitlesempty' => 'Во овој момент нема заштитени наслови кои ги задоволуваат наведените критериуми.',
'watchmethod-list' => 'Проверерка на набљудуваните страници во скорешните уредувања',
'watchlistcontains' => 'Вашиот список на набљудувања содржи $1 {{PLURAL:$1|страница|страници}}.',
'iteminvalidname' => "Проблем со елементот '$1', неважечко име...",
-'wlnote' => "Подолу {{PLURAL:$1|е прикажана последната промена|се прикажани последните '''$1''' промени}} во {{PLURAL:$2|последниов час|последниве '''$2''' часа}}, заклучно со $3, $4 ч.",
+'wlnote2' => 'Подолу се прикажани промените направени во {{PLURAL:$1|последниов час|последните <strong>$1</strong> часа}}, согласно $2, $3.',
'wlshowlast' => 'Прикажи ги последните $1 часа, $2 дена, $3',
'watchlist-options' => 'Поставки за список на набљудувања',
'delete-warning-toobig' => 'Оваа страница има долга историја на уредување, преку $1 {{PLURAL:$1|ревизија|ревизии}}.
Бришењето може да предизвика проблеми при работењето на базата на податоци на {{SITENAME}};
продолжете доколку сте сигруни дека треба тоа да го сторите.',
+'deleting-backlinks-warning' => "'''Предупредување:''' До страницата што сакате да ја избришете водат други страници или се превметнуваат во неа.",
# Rollback
'rollback' => 'Отповикај промени',
Блоковите можете да ги прегледате на [[Special:BlockList|списокот на блокови]].',
'ipb-blockingself' => 'Се спремате да се блокирате самите себеси! Сигурни сте дека го сакате ова?',
'ipb-confirmhideuser' => 'Сакате да блокирате корисник со можноста „скриј корисник“. Ова ќе го затаи името на корисникот во сите списоци и дневнички записи. Дали сте сигурни дека сакате да го направите тоа?',
+'ipb-confirmaction' => 'Ако сте сигурни дека навистина сакате да го направите ова, штиклирајте го полето „{{int:ipb-confirm}}“ најдолу.',
'ipb-edit-dropdown' => 'Наведи причина за блокирање',
'ipb-unblock-addr' => 'Одблокирај го $1',
'ipb-unblock' => 'Одблокирај корисник или IP-адреса',
'range_block_disabled' => 'Администраторската можност да блокираат IP групи е исклучена.',
'ipb_expiry_invalid' => 'Погрешен рок на истекување.',
'ipb_expiry_temp' => 'Скриените блокирања на корисникот мора да бидат перманентни.',
-'ipb_hide_invalid' => 'Ð\9eваа Ñ\81меÑ\82ка не може да Ñ\81е поÑ\82иÑ\81не; можеби има пÑ\80емногÑ\83 Ñ\83Ñ\80едÑ\83ваÑ\9aа.',
+'ipb_hide_invalid' => 'Ð\9eваа Ñ\81меÑ\82ка не може да Ñ\81е поÑ\82иÑ\81не; има {{PLURAL:$1|повеÑ\9cе од едно Ñ\83Ñ\80едÑ\83ваÑ\9aе|пÑ\80екÑ\83 $1 Ñ\83Ñ\80едÑ\83ваÑ\9aа}}..',
'ipb_already_blocked' => '„$1“ е веќе блокиран',
'ipb-needreblock' => '$1 е веќе блокиран. Дали сакате да направите промена?',
'ipb-otherblocks-header' => '{{PLURAL:$1|Друго блокирање|Други блокирања}}',
'allmessages-prefix' => 'Филтрирај по префикс:',
'allmessages-language' => 'Јазик:',
'allmessages-filter-submit' => 'Оди',
+'allmessages-filter-translate' => 'Преведување',
# Thumbnails
'thumbnail-more' => 'Зголеми',
Проблеми со привремена папка за податотеки.',
'import-parse-failure' => 'Погрешно XML парсирање',
'import-noarticle' => 'Нема страница за увоз!',
-'import-nonewrevisions' => 'СиÑ\82е Ñ\80евизии Ñ\81е пÑ\80еÑ\82Ñ\85одно Ñ\83везени.',
+'import-nonewrevisions' => 'Ð\9dе Ñ\83везов ниедна Ñ\80евизиÑ\98а (Ñ\81иÑ\82е Ñ\81е веÑ\9cе пÑ\80иÑ\81Ñ\83Ñ\82ни или изоÑ\81Ñ\82авени поÑ\80ади гÑ\80еÑ\88ки)',
'xml-error-string' => '$1 во ред $2, колона $3 (бајт $4): $5',
'import-upload' => 'Подигни XML податоци',
'import-token-mismatch' => 'Губење на сесиските податоци. Обидете се повторно.',
'import-error-special' => 'Страницата „$1“ не е увезена бидејќи припаѓа на посебен именски простор што не дозволува страници.',
'import-error-invalid' => 'Страницата „$1“ не е увезена бидејќи името ѝ е неважечко.',
'import-error-unserialize' => 'Ревизијата $2 на страницата „$1“ не може да се отсеријализира. Утврдено е дека користи содржинскиот модел $3 што е серијализиран како $4.',
+'import-error-bad-location' => 'Ревизијата $2 што го користи содржинскиот модел $3 не може да се складира во „$1“ на ова вики бидејќи тој модел не е поддржан на таа страница.',
'import-options-wrong' => '{{PLURAL:$2|Погрешна можност|Погрешни можности}}: <nowiki>$1</nowiki>',
'import-rootpage-invalid' => 'Укажаната основна страница е неважечки наслов.',
'import-rootpage-nosubpage' => 'Именскиот простор „$1“ на основната страница не допушта потстраници.',
'tooltip-pt-watchlist' => 'Список на страници кои сте избрале да ги набљудувате.',
'tooltip-pt-mycontris' => 'Список на ваши придонеси',
'tooltip-pt-login' => 'Ви препорачуваме да се најавите, иако тоа не е задолжително.',
-'tooltip-pt-anonlogin' => 'Ви препорачуваме да се најавите, иако тоа не е задолжително.',
'tooltip-pt-logout' => 'Одјавете се',
'tooltip-ca-talk' => 'Разговор за страницата',
'tooltip-ca-edit' => 'Можете да ја уредите оваа страница. Ве молиме користете го копчето за преглед пред зачувување.',
'print.css' => '/* Тука поставениот CSS ќе се применува во верзијата за печатење */',
'noscript.css' => '/* Тука поставениот CSS се однесува на корисниците што имаат оневозможено JavaScript */',
'group-autoconfirmed.css' => '/* Тука поставениот CSS ќе се применува само на автопотврдените корисници */',
+'group-user.css' => '/* Тука поставениот CSS ќе се применува само врз регистрираните корисници */',
'group-bot.css' => '/* Тука поставениот CSS ќе се применува само врз ботовите */',
'group-sysop.css' => '/* Тука поставениот CSS ќе се применува само врз системските оператори */',
'group-bureaucrat.css' => '/* Тука поставениот CSS ќе се применува само врз бирократите */',
'modern.js' => '/* Било која Јава скрипта поставена овде ќе биде вчитана за сите корисници што го користат рувото Современо */',
'vector.js' => '/* Тука поставениот JavaScript ќе им се вчитува на корисниците што го користат рувото „Векторско“ */',
'group-autoconfirmed.js' => '/* Тука поставениот JavaScript ќе им се вчитува само на автопотврдените корисници */',
+'group-user.js' => '/* Тука поставениот JavaScript ќе им се вчитува само на регистрираните корисници */',
'group-bot.js' => '/* Тука поставениот JavaScript ќе им се вчитува само на ботовите */',
'group-sysop.js' => '/* Тука поставениот JavaScript ќе им се вчитува само на системските оператори */',
'group-bureaucrat.js' => '/* Тука поставениот JavaScript ќе им се вчитува само на бирократите */',
# Multipage image navigation
'imgmultipageprev' => '← претходна страница',
'imgmultipagenext' => 'следна страница →',
-'imgmultigo' => 'Оди!',
+'imgmultigo' => 'Отвори',
'imgmultigoto' => 'Оди на страница $1',
# Language selector for translatable SVGs
# Special:Version
'version' => 'Верзија',
-'version-extensions' => 'Ð\98нÑ\81Ñ\82алиÑ\80ани додатоци',
+'version-extensions' => 'Ð\92оÑ\81поÑ\81Ñ\82авени додатоци',
'version-specialpages' => 'Специјални страници',
'version-parserhooks' => 'Парсерски куки',
'version-variables' => 'Променливи',
'version-antispam' => 'Спречување на спам',
'version-skins' => 'Рува',
+'version-api' => 'Прилози',
'version-other' => 'Друго',
'version-mediahandlers' => 'Ракувачи со мултимедијални содржини',
'version-hooks' => 'Куки',
'version-hook-subscribedby' => 'Претплатено од',
'version-version' => '(Верзија $1)',
'version-svn-revision' => '(рев. $2)',
-'version-license' => 'Лиценца',
+'version-license' => 'Лиценца на МедијаВики',
+'version-ext-license' => 'Лиценца',
+'version-ext-colheader-name' => 'Додаток',
+'version-ext-colheader-version' => 'Верзија',
+'version-ext-colheader-license' => 'Лиценца',
+'version-ext-colheader-description' => 'Опис',
+'version-ext-colheader-credits' => 'Автори',
+'version-license-title' => 'Лиценца за $1',
+'version-license-not-found' => 'Не најдов подробни лиценцни информации за овој додаток.',
+'version-credits-title' => 'Заслуги за $1',
+'version-credits-not-found' => 'Не најдов подробни информации за заслужните за овој додаток.',
'version-poweredby-credits' => "Ова вики работи на '''[https://www.mediawiki.org/ МедијаВики]''', авторски права © 2001-$1 $2.",
'version-poweredby-others' => 'други',
'version-poweredby-translators' => 'преведувачи на translatewiki.net',
МедијаВики се нуди со надеж дека ќе биде од корист, но БЕЗ БИЛО КАКВА ГАРАНЦИЈА; дури и без подразбраната гаранција за ПРОДАЖНА ВРЕДНОСТ или ПОГОДНОСТ ЗА ДАДЕНА ЦЕЛ. За повеќе информации, погледајте ја ГНУ-овата општа јавна лиценца.
Заедно со програмов треба да имате добиено [{{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' => 'Ð\98нÑ\81Ñ\82алиÑ\80ана програмска опрема',
+'version-software' => 'Ð\92оÑ\81поÑ\81Ñ\82авена програмска опрема',
'version-software-product' => 'Производ',
'version-software-version' => 'Верзија',
'version-entrypoints' => 'URL-а на влезните точки',
'api-error-overwrite' => 'Презапишувањето врз постоечки податотеки не е дозволено.',
'api-error-stashfailed' => 'Внатрешна грешка: Опслужувачот не успеа да ја складира привремената податотека.',
'api-error-publishfailed' => 'Внатрешна грешка: Опслужувачот не успеа да ја објави привремената податотека.',
+'api-error-stasherror' => 'Се јави грешка при подигањето на податотеката во складот.',
'api-error-timeout' => 'Опслужувачот не одговори во очекуваното време.',
'api-error-unclassified' => 'Се појави непозната грешка.',
'api-error-unknown-code' => 'Непозната грешка: „$1“',
'duration-hours' => '$1 {{PLURAL:$1|час|часа}}',
'duration-days' => '$1 {{PLURAL:$1|ден|дена}}',
'duration-weeks' => '$1 {{PLURAL:$1|недела|недели}}',
-'duration-years' => '{{PLURAL: $1|година|години}}',
+'duration-years' => '{{PLURAL:$1|година|години}}',
'duration-decades' => '$1 {{PLURAL:$1|деценија|децении}}',
'duration-centuries' => '$1 {{PLURAL:$1|век|века}}',
'duration-millennia' => '$1 {{PLURAL:$1|милениум|милениуми}}',
'expand_templates_generate_rawhtml' => 'Прикажувај сиров HTML',
'expand_templates_preview' => 'Преглед',
+# Unknown messages
+'uploadinvalidxml' => 'Не можев да го парсирам XML-от што се наоѓа во подигнатата податотека.',
);
$messages = array(
# User preference toggles
'tog-underline' => 'കണ്ണികൾക്ക് അടിവരയിടുക:',
-'tog-justify' => 'ഖണ്ഡികകളുടെ അരികുകൾ നേരെയാക്കുക',
'tog-hideminor' => 'പുതിയ മാറ്റങ്ങളുടെ പട്ടികയിൽ ചെറിയ തിരുത്തുകൾ പ്രദർശിപ്പിക്കാതിരിക്കുക',
'tog-hidepatrolled' => 'റോന്തുചുറ്റിയ തിരുത്തുകൾ പുതിയമാറ്റങ്ങളിൽ പ്രദർശിപ്പിക്കാതിരിക്കുക',
'tog-newpageshidepatrolled' => 'റോന്തുചുറ്റപ്പെട്ട താളുകൾ പുതിയതാളുകളുടെ പട്ടികയിൽ പ്രദർശിപ്പിക്കാതിരിക്കുക',
'tog-numberheadings' => 'ഉപവിഭാഗങ്ങൾക്ക് ക്രമസംഖ്യ കൊടുക്കുക',
'tog-showtoolbar' => 'തിരുത്തൽ റ്റൂൾബാർ പ്രദർശിപ്പിക്കുക',
'tog-editondblclick' => 'താളുകളിൽ ഇരട്ട ക്ലിക്ക് ചെയ്യുമ്പോൾ തിരുത്താനനുവദിക്കുക',
-'tog-editsection' => '[തിരുത്തുക] എന്ന കണ്ണിയുപയോഗിച്ച് ഉപവിഭാഗങ്ങൾ തിരുത്താനനുവദിക്കുക',
'tog-editsectiononrightclick' => 'ഉപവിഭാഗങ്ങളുടെ തലക്കെട്ടിൽ റൈറ്റ് ക്ലിക്ക് ചെയ്യുന്നതു വഴി തിരുത്താനനുവദിക്കുക',
-'tog-showtoc' => 'ഉള്ളടക്കപ്പട്ടിക പ്രദർശിപ്പിക്കുക (മൂന്നിൽ കൂടുതൽ ഉപശീർഷകങ്ങളുള്ള താളുകൾക്കു മാത്രം)',
'tog-rememberpassword' => 'എന്റെ പ്രവേശനം ഈ ബ്രൗസറിൽ ({{PLURAL:$1|ഒരു ദിവസം|$1 ദിവസം}}) ഓർത്തുവെക്കുക',
'tog-watchcreations' => 'ഞാൻ സൃഷ്ടിക്കുന്ന താളുകളും ഞാൻ അപ്ലോഡ് ചെയ്യുന്ന പ്രമാണങ്ങളും ശ്രദ്ധിക്കുന്ന താളുകളുടെ പട്ടികയിൽ ചേർക്കുക',
'tog-watchdefault' => 'ഞാൻ തിരുത്തുന്ന താളുകളും പ്രമാണങ്ങളും ശ്രദ്ധിക്കുന്ന താളുകളുടെ പട്ടികയിൽ ചേർക്കുക',
'retypenew' => 'പുതിയ രഹസ്യവാക്ക് ഉറപ്പിക്കുക:',
'resetpass_submit' => 'രഹസ്യവാക്ക് സജ്ജീകരിച്ചശേഷം ലോഗിൻ ചെയ്യുക',
'changepassword-success' => 'താങ്കളുടെ രഹസ്യവാക്ക് വിജയകരമായി മാറ്റിയിരിക്കുന്നു!',
+'changepassword-throttled' => 'കുറഞ്ഞ സമയത്തിനുള്ളിൽ താങ്കൾ നിരവധി തവണ പ്രവേശിക്കാൻ ശ്രമിച്ചിരിക്കുന്നു.
+വീണ്ടും ശ്രമിക്കുന്നതിനു മുമ്പ് ദയവായി $1 കാത്തിരിക്കുക.',
'resetpass_forbidden' => 'രഹസ്യവാക്കുകൾ മാറ്റുന്നത് അനുവദിക്കുന്നില്ല',
'resetpass-no-info' => 'ഈ താൾ നേരിട്ടു കാണുന്നതിന് താങ്കൾ ലോഗിൻ ചെയ്തിരിക്കണം.',
'resetpass-submit-loggedin' => 'രഹസ്യവാക്ക് മാറ്റുക',
'changeemail-password' => 'താങ്കളുടെ {{SITENAME}} രഹസ്യവാക്ക്:',
'changeemail-submit' => 'ഇമെയിലിൽ മാറ്റംവരുത്തുക',
'changeemail-cancel' => 'റദ്ദാക്കുക',
+'changeemail-throttled' => 'താങ്കൾ നിരവധി തവണ പ്രവേശിക്കാൻ ശ്രമിച്ചിരിക്കുന്നു.
+വീണ്ടും ശ്രമിക്കുന്നതിനു മുമ്പ് ദയവായി $1 കാത്തിരിക്കുക.',
# Special:ResetTokens
'resettokens' => 'ചീട്ടുകൾ പുനഃസജ്ജീകരിക്കുക',
ഇതു താങ്കൾത്തന്നെ എഴുതിയതാണെന്നും, അതല്ലെങ്കിൽ പകർപ്പവകാശ നിയമങ്ങളുടെ പരിധിയിലില്ലാത്ത ഉറവിടങ്ങളിൽനിന്നും പകർത്തിയതാണെന്നും ഉറപ്പാക്കുക (കുടുതൽ വിവരത്തിനു $1 കാണുക).
'''പകർപ്പവകാശ സംരക്ഷണമുള്ള സൃഷ്ടികൾ ഒരു കാരണവശാലും ഇവിടെ പ്രസിദ്ധീകരിക്കരുത്!'''",
'longpageerror' => "'''പിഴവ്: താങ്കൾ സമർപ്പിച്ച എഴുത്തുകൾക്ക് {{PLURAL:$1|ഒരു കിലോബൈറ്റ്|$1 കിലോബൈറ്റ്സ്}} വലിപ്പമുണ്ട്. പരമാവധി അനുവദനീയമായ വലിപ്പം {{PLURAL:$2|ഒരു കിലോബൈറ്റ്|$2 കിലോബൈറ്റ്സ്}} ആണ്. അതിനാലിതു സേവ് ചെയ്യാൻ സാദ്ധ്യമല്ല.'''",
-'readonlywarning' => "'''à´®àµ\81à´¨àµ\8dനറിയിപàµ\8dà´ªàµ\8d: à´¡àµ\87à´±àµ\8dറാബàµ\87à´¸àµ\8d പരിപാലനതàµ\8dതിനàµ\81 à´µàµ\87à´£àµ\8dà´\9fà´¿ ബനàµ\8dധിà´\9aàµ\8dà´\9aà´¿à´°à´¿à´\95àµ\8dà´\95àµ\81à´¨àµ\8dà´¨àµ\81, à´\85à´¤àµ\81à´\95àµ\8aà´£àµ\8dà´\9fàµ\8d താà´\99àµ\8dà´\95ളിപàµ\8dà´ªàµ\8bൾ വരàµ\81à´¤àµ\8dതിയ മാറàµ\8dà´±à´\99àµ\8dà´\99ൾ à´¸àµ\87à´µàµ\8d à´\9aàµ\86à´¯àµ\8dയാൻ സാദàµ\8dà´§àµ\8dയമലàµ\8dà´².''' താà´\99àµ\8dà´\95ൾ വരàµ\81à´¤àµ\8dതിയ മാറàµ\8dà´±à´\99àµ\8dà´\99ൾ à´\92à´°àµ\81 à´\9fàµ\86à´\95àµ\8dà´¸àµ\8dà´±àµ\8dà´±àµ\8d à´ªàµ\8dരമാണതàµ\8dതിലàµ\87à´\95àµ\8dà´\95àµ\8d à´ªà´\95ർതàµ\8dതി (à´\95àµ\8bà´ªàµ\8dപി & à´ªàµ\87à´¸àµ\8dà´±àµ\8dà´±àµ\8d) പിനàµ\8dà´¨àµ\80à´\9fàµ\81à´³àµ\8dà´³ à´\89പയàµ\8bà´\97à´¤àµ\8dതിനായി à´¸àµ\87à´µàµ\8d à´\9aàµ\86à´¯àµ\8dà´¯àµ\81à´µാൻ താല്പര്യപ്പെടുന്നു. ഡേറ്റാബേസ് ബന്ധിച്ച അഡ്മിനിസ്ട്രേറ്റർ നൽകിയ വിശദീകരണം: $1",
+'readonlywarning' => "'''à´®àµ\81à´¨àµ\8dനറിയിപàµ\8dà´ªàµ\8d: à´¡àµ\87à´±àµ\8dറാബàµ\87à´¸àµ\8d പരിപാലനതàµ\8dതിനàµ\81 à´µàµ\87à´£àµ\8dà´\9fà´¿ ബനàµ\8dധിà´\9aàµ\8dà´\9aà´¿à´°à´¿à´\95àµ\8dà´\95àµ\81à´¨àµ\8dà´¨àµ\81, à´\85à´¤àµ\81à´\95àµ\8aà´£àµ\8dà´\9fàµ\8d താà´\99àµ\8dà´\95ളിപàµ\8dà´ªàµ\8bൾ വരàµ\81à´¤àµ\8dതിയ മാറàµ\8dà´±à´\99àµ\8dà´\99ൾ à´¸àµ\87à´µàµ\8d à´\9aàµ\86à´¯àµ\8dയാൻ സാദàµ\8dà´§àµ\8dയമലàµ\8dà´².''' താà´\99àµ\8dà´\95ൾ വരàµ\81à´¤àµ\8dതിയ മാറàµ\8dà´±à´\99àµ\8dà´\99ൾ à´\92à´°àµ\81 à´\9fàµ\86à´\95àµ\8dà´¸àµ\8dà´±àµ\8dà´±àµ\8d ഫയലിലàµ\87à´\95àµ\8dà´\95àµ\8d à´ªà´\95ർതàµ\8dതി (à´\95àµ\8bà´ªàµ\8dപി & à´ªàµ\87à´¸àµ\8dà´±àµ\8dà´±àµ\8d) പിനàµ\8dà´¨àµ\80à´\9fàµ\81പയàµ\8bà´\97à´¿à´\95àµ\8dà´\95àµ\81à´¨àµ\8dനതിനായി à´\95à´°àµ\81തിവà´\95àµ\8dà´\95ാൻ താല്പര്യപ്പെടുന്നു. ഡേറ്റാബേസ് ബന്ധിച്ച അഡ്മിനിസ്ട്രേറ്റർ നൽകിയ വിശദീകരണം: $1",
'protectedpagewarning' => "'''മുന്നറിയിപ്പ്: ഈ താൾ കാര്യനിർവാഹക പദവിയുള്ളവർക്കു മാത്രം തിരുത്താൻ സാധിക്കാവുന്ന തരത്തിൽ സംരക്ഷിക്കപ്പെട്ടിരിക്കുന്നു.''' അവലംബമായി രേഖകളിൽ ലഭ്യമായ ഏറ്റവും പുതിയ വിവരം താഴെ നൽകിയിരിക്കുന്നു:",
'semiprotectedpagewarning' => "'''ശ്രദ്ധിക്കുക:'''അംഗത്വമെടുത്തിട്ടുള്ളവർക്കുമാത്രം തിരുത്താൻ സാധിക്കുന്ന വിധത്തിൽ ഈ താൾ സംരക്ഷിക്കപ്പെട്ടിരിക്കുന്നു. അവലംബമായി രേഖകളിലെ ഏറ്റവും പുതിയ വിവരം താഴെ കൊടുത്തിരിക്കുന്നു:",
'cascadeprotectedwarning' => "'''മുന്നറിയിപ്പ്:''' ഈ താൾ കാര്യനിർവാഹക അവകാശമുള്ളവർക്കു മാത്രം തിരുത്തുവാൻ സാധിക്കുന്ന വിധത്തിൽ സംരക്ഷിക്കപ്പെട്ടിട്ടുള്ളതാണ്. {{PLURAL:$1|താൾ|താളുകൾ}} കാസ്കേഡ് സംരക്ഷണം ചെയ്തപ്പോൾ അതിന്റെ ഭാഗമായി സംരക്ഷിക്കപ്പെട്ടിട്ടുള്ളതാണ് ഈ താൾ.",
'content-not-allowed-here' => '"$1" ഉള്ളടക്കം [[$2]] താളിൽ അനുവദിക്കുന്നില്ല',
'editwarning-warning' => 'ഈ താളിൽ നിന്നും പോകുന്നത് താങ്കൾ വരുത്തിയ മാറ്റങ്ങൾ നഷ്ടപ്പെടാൻ ഇടയാക്കും.
താങ്കൾ ലോഗിൻ ചെയ്തിട്ടുണ്ടെങ്കിൽ, താങ്കളുടെ ക്രമീകരണങ്ങളിൽ "തിരുത്തൽ" എന്ന ഭാഗത്ത് ചെന്ന് ഈ അറിയിപ്പ് പ്രദർശിപ്പിക്കുന്നത് ഒഴിവാക്കാവുന്നതാണ്.',
+'editpage-notsupportedcontentformat-title' => 'ഉള്ളടക്ക ഫോർമാറ്റ് പിന്തുണയ്ക്കുന്നില്ല',
+'editpage-notsupportedcontentformat-text' => 'ഉള്ളടക്കത്തിന്റെ ഫോർമാറ്റ് ആയ $1 ഉള്ളടക്ക രീതിയായ $2 പിന്തുണയ്ക്കുന്നില്ല.',
# Content models
'content-model-wikitext' => 'വിക്കിഎഴുത്ത്',
'cantcreateaccount-text' => "ഈ ഐ.പി. ('''$1''') വിലാസത്തിൽ നിന്നു അംഗത്വം സൃഷ്ടിക്കുന്നത് [[User:$3|$3]] നിരോധിച്ചിരിക്കുന്നു.
$3 അതിനു കാണിച്ചിരിക്കുന്ന കാരണം ''$2'' ആണ്.",
-'cantcreateaccount-range-text' => "താങ്കളുടെ ഐ.പി. വിലാസം ('''$4''') ഉൾപ്പെടുന്ന '''$1''' എന്ന പരിധിയിലെ ഐ.പി. വിലാസങ്ങളിൽ നിന്ന് അംഗത്വമെടുക്കുന്നത് [[User:$3|$3]] തടഞ്ഞിരിക്കുകയാണ്.",
+'cantcreateaccount-range-text' => "താങ്കളുടെ ഐ.പി. വിലാസം ('''$4''') ഉൾപ്പെടുന്ന '''$1''' എന്ന പരിധിയിലെ ഐ.പി. വിലാസങ്ങളിൽ നിന്ന് അംഗത്വമെടുക്കുന്നത് [[User:$3|$3]] തടഞ്ഞിരിക്കുകയാണ്.
+
+$3 നൽകിയിരിക്കുന്ന കാരണം ''$2'' എന്നാണ്",
# History pages
'viewpagelogs' => 'ഈ താളുമായി ബന്ധപ്പെട്ട രേഖകൾ കാണുക',
'showhideselectedversions' => 'തിരഞ്ഞെടുത്ത മാറ്റങ്ങൾ പ്രദർശിപ്പിക്കുക/മറയ്ക്കുക',
'editundo' => 'മാറ്റം തിരസ്ക്കരിക്കുക',
'diff-empty' => '(വ്യത്യാസം ഇല്ല)',
-'diff-multi' => '(ഇടയ്ക്ക് {{PLURAL:$2|ഒരു ഉപയോക്താവ്|$2 ഉപയോക്താക്കൾ}} ചെയ്ത {{PLURAL:$1|ഒരു പതിപ്പ്|$1 പതിപ്പുകൾ}} പ്രദർശിപ്പിക്കുന്നില്ല.)',
'diff-multi-manyusers' => '(ഇടയ്ക്ക് {{PLURAL:$2|ഒന്നിലധികം|$2 എണ്ണത്തിലധികം}} ഉപയോക്താക്കൾ ചെയ്തിട്ടുള്ള {{PLURAL:$1|ഒരു പതിപ്പ്|$1 പതിപ്പുകൾ}} പ്രദർശിപ്പിക്കുന്നില്ല.)',
'difference-missing-revision' => 'ഈ വ്യത്യാസത്തിൽ ($1) {{PLURAL:$2|ഒരു നാൾപ്പതിപ്പ്|$2 നാൾപ്പതിപ്പുകൾ}} കാണാനായില്ല.
'search-result-score' => 'സാംഗത്യം: $1%',
'search-redirect' => '(തിരിച്ചുവിടൽ താൾ $1)',
'search-section' => '(വിഭാഗം $1)',
+'search-file-match' => '(പ്രമാണ ഉള്ളടക്കവുമായി ഒത്തുപോകുന്നുണ്ട്)',
'search-suggest' => 'താങ്കൾ ഉദ്ദേശിച്ചത് $1 എന്നാണോ',
'search-interwiki-caption' => 'സഹോദര സംരംഭങ്ങൾ',
'search-interwiki-default' => '$1 ഫലങ്ങൾ:',
'rows' => 'വരി:',
'columns' => 'നിര:',
'searchresultshead' => 'തിരയൂ',
-'resultsperpage' => 'ഒരു താളിലുള്ള ശരാശരി സന്ദർശനം:',
'stub-threshold' => '<a href="#" class="stub">അപൂർണ്ണമായ കണ്ണിയെന്നു</a> സ്ഥാപിക്കാനുള്ള ത്വരകം (ബൈറ്റുകൾ):',
'stub-threshold-disabled' => 'നിർജ്ജീവമാക്കപ്പെട്ടിരിക്കുന്നു',
'recentchangesdays' => 'പുതിയ മാറ്റങ്ങളിൽ കാണിക്കേണ്ട ദിവസങ്ങളുടെ എണ്ണം:',
'file-exists-duplicate' => 'ഈ പ്രമാണം ഇനി പറയുന്ന {{PLURAL:$1|പ്രമാണത്തിന്റെ|പ്രമാണങ്ങളുടെ}} പകർപ്പാണ്:',
'file-deleted-duplicate' => 'ഈ പ്രമാണത്തിനു സദൃശമായ പ്രമാണം ([[:$1]]) മുമ്പ് മായ്ക്കപ്പെട്ടിട്ടുണ്ട്.
ആ പ്രമാണത്തിന്റെ മായ്ക്കൽ ചരിത്രം എടുത്തു പരിശോധിച്ച ശേഷം മാത്രം വീണ്ടും അപ്ലോഡ് ചെയ്യുക.',
+'file-deleted-duplicate-notitle' => 'ഈ പ്രമാണത്തിന് സദൃശമായ ഒന്ന് മുമ്പ് മായ്ക്കപ്പെട്ടിട്ടുണ്ട്, ആ തലക്കെട്ടിന്റെ ഉപയോഗം ഒതുക്കിയിരിക്കുന്നു.
+പുനർ-അപ്ലോഡിങ് ചെയ്യുന്നതിനു മുമ്പ് ഒതുക്കപ്പെട്ട പ്രമാണവിവരങ്ങൾ സംശോധനം ചെയ്ത് സാഹചര്യം വിശകലനം ചെയ്യാൻ അനുമതിയുള്ള ആരെയെങ്കിലും സമീപിച്ച് പ്രവൃത്തി ഉറപ്പാക്കുക.',
'uploadwarning' => 'അപ്ലോഡ് മുന്നറിയിപ്പ്',
'uploadwarning-text' => 'ദയവായി താഴെയുള്ള പ്രമാണ വിവരണങ്ങൾ പുതുക്കി വീണ്ടും ശ്രമിക്കുക.',
'savefile' => 'പ്രമാണം കാത്ത് സൂക്ഷിക്കുക',
'protectedpages' => 'സംരക്ഷിക്കപ്പെട്ടിരിക്കുന്ന താളുകൾ',
'protectedpages-indef' => 'അനന്തകാലത്തേയ്ക്ക് സംരക്ഷിക്കപ്പെട്ടവ മാത്രം',
'protectedpages-cascade' => 'നിർഝരിത സംരക്ഷണങ്ങൾ മാത്രം',
+'protectedpages-noredirect' => 'തിരിച്ചുവിടലുകൾ മറയ്ക്കുക',
'protectedpagesempty' => 'ഈ ചരങ്ങൾ ഉപയോഗിച്ചു താളുകൾ ഒന്നും തന്നെ സംരക്ഷിക്കപ്പെട്ടിട്ടില്ല.',
'protectedtitles' => 'സംരക്ഷിക്കപ്പെട്ടിരിക്കുന്ന തലക്കെട്ടുകൾ',
'protectedtitlesempty' => 'ഈ ചരങ്ങൾ ഉപയോഗിച്ചു തലക്കെട്ടുകൾ ഒന്നും തന്നെ സംരക്ഷിക്കപ്പെട്ടിട്ടില്ല.',
'watchmethod-list' => 'ശ്രദ്ധിക്കുന്ന താളുകളിലെ പുതിയ മാറ്റങ്ങൾ പരിശോധിക്കുന്നു',
'watchlistcontains' => 'താങ്കൾ {{PLURAL:$1|താൾ|താളുകൾ}} ശ്രദ്ധിക്കുന്നുണ്ട്.',
'iteminvalidname' => "ഇനം '$1' ൽ പിഴവ്, അസാധുവായ പേര്...",
-'wlnote' => "$3, $4-നു കഴിഞ്ഞ {{PLURAL:$2|മണിക്കൂറിൽ|'''$2''' മണിക്കൂറിൽ}} നടന്ന {{PLURAL:$1|ഒരു പുതിയ മാറ്റം|'''$1''' പുതിയ മാറ്റങ്ങൾ}} താഴെ പ്രദർശിപ്പിച്ചിരിക്കുന്നു.",
+'wlnote2' => '$2, $3-നു കഴിഞ്ഞ {{PLURAL:$1|ഒരു മണിക്കൂറിലെ|<strong>$1</strong> മണിക്കൂറുകളിലെ}} മാറ്റങ്ങൾ താഴെക്കൊടുത്തിരിക്കുന്നു.',
'wlshowlast' => 'ഒടുവിലത്തെ $1 മണിക്കൂറുകൾ $2 ദിനങ്ങൾ, $3 പ്രദർശിപ്പിക്കുക',
'watchlist-options' => 'ശ്രദ്ധിക്കുന്ന താളുകളുടെ സജ്ജീകരണങ്ങൾ',
'enotif_reset' => 'എല്ലാ താളുകളും സന്ദർശിച്ചതായി രേഖപ്പെടുത്തുക',
'enotif_impersonal_salutation' => '{{SITENAME}} ഉപയോക്താവ്',
'enotif_subject_deleted' => '{{SITENAME}} സംരംഭത്തിലെ $1 എന്ന താൾ {{gender:$2|$2}} മായ്ച്ചിരിക്കുന്നു',
-'enotif_subject_created' => '{{SITENAME}} സംരംഭത്തിl $1 എന്ന താൾ {{gender:$2|$2}} സൃഷ്ടിച്ചിരിക്കുന്നു',
+'enotif_subject_created' => '{{SITENAME}} സംരംഭത്തിൽ $1 എന്ന താൾ {{gender:$2|$2}} സൃഷ്ടിച്ചിരിക്കുന്നു',
'enotif_subject_moved' => '{{SITENAME}} സംരംഭത്തിലെ $1 എന്ന താൾ {{gender:$2|$2}} മാറ്റിയിരിക്കുന്നു',
'enotif_subject_restored' => '{{SITENAME}} സംരംഭത്തിലെ $1 എന്ന താൾ {{gender:$2|$2}} പുനഃസ്ഥാപിച്ചിരിക്കുന്നു',
'enotif_subject_changed' => '{{SITENAME}} സംരംഭത്തിലെ $1 എന്ന താളിൽ {{gender:$2|$2}} മാറ്റം വരുത്തിയിരിക്കുന്നു',
'delete-edit-reasonlist' => 'മായ്ക്കലിന്റെ കാരണം തിരുത്തുക',
'delete-toobig' => 'ഈ താളിനു വളരെ വിപുലമായ തിരുത്തൽ ചരിത്രമുണ്ട്. $1 മേൽ {{PLURAL:$1|പതിപ്പുണ്ട്|പതിപ്പുകളുണ്ട്}}. ഇത്തരം താളുകൾ മായ്ക്കുന്നതു {{SITENAME}} സംരംഭത്തിന്റെ നിലനില്പ്പിനെ തന്നെ ബാധിക്കുമെന്നതിനാൽ ഈ താൾ മായ്ക്കുന്നതിനുള്ള അവകാശം പരിമിതപ്പെടുത്തിയിരിക്കുന്നു.',
'delete-warning-toobig' => 'ഈ താളിനു വളരെ വിപുലമായ തിരുത്തൽ ചരിത്രമുണ്ട്. അതായത്, ഇതിനു് $1 മേൽ {{PLURAL:$1|പതിപ്പുണ്ട്|പതിപ്പുകളുണ്ട്}}. ഇത്തരം താളുകൾ മായ്ക്കുന്നതു {{SITENAME}} സംരംഭത്തിന്റെ ഡാറ്റാബേസ് ഓപ്പറേഷനെ ബാധിച്ചേക്കാം. അതിനാൽ വളരെ ശ്രദ്ധാപൂർവ്വം തുടർനടപടികളിലേക്കു നീങ്ങുക.',
+'deleting-backlinks-warning' => "'''മുന്നറിയിപ്പ്:''' മറ്റു താളുകളിൽ നിന്നും താളിലേയ്ക്കുള്ള കണ്ണികൾ താങ്കൾ മായ്ക്കാൻ പോവുകയാണ്.",
# Rollback
'rollback' => 'തിരുത്തലുകൾ റോൾബാക്ക് ചെയ്യുക',
തടയൽ പുനഃപരിശോധിക്കാൻ [[Special:BlockList|തടയൽ പട്ടിക]] കാണുക.',
'ipb-blockingself' => 'താങ്കൾ താങ്കളെ തന്നെ തടയാൻ പോകുകയാണ്! അത് ചെയ്യണം എന്ന് താങ്കൾക്കുറപ്പാണോ?',
'ipb-confirmhideuser' => 'താങ്കൾ "ഉപയോക്താവിനെ മറച്ചുകൊണ്ട്" ഒരു തടയൽ ചെയ്യാൻ പോവുകയാണ്. ഇത് എല്ലാ പട്ടികകളിൽ നിന്നും രേഖകളിൽ നിന്നും ഉപയോക്താവിന്റെ പേര് മറച്ച് വെയ്ക്കും. ഇപ്രകാരം വേണമെന്ന് തീർച്ചയാണോ?',
+'ipb-confirmaction' => 'ഇത് ചെയ്തേ മതിയാവൂ എന്നുണ്ടെങ്കിൽ താഴെയുള്ള "{{int:ipb-confirm}}" കാണുക.',
'ipb-edit-dropdown' => 'തടഞ്ഞതിന്റെ കാരണം തിരുത്തുക',
'ipb-unblock-addr' => '$1 അംഗത്വത്തിനുള്ള തടയൽ നീക്കുക',
'ipb-unblock' => 'ഒരു ഐ.പി. വിലാസത്തിനോ ഉപയോക്താവിനോ ഉള്ള തടയൽ നീക്കംചെയ്യുക',
'range_block_disabled' => 'സിസോപ്പിനു റേഞ്ച് ബ്ലോക്കു ചെയ്യാനുള്ള സൗകര്യം ദുർബലപ്പെടുത്തുക.',
'ipb_expiry_invalid' => 'കാലാവധി സമയം അസാധുവാണ്.',
'ipb_expiry_temp' => 'മറയ്ക്കപ്പെട്ട ഉപയോക്തൃനാമങ്ങളിലുള്ള തടയൽ സ്ഥിരമായിരിക്കണം.',
-'ipb_hide_invalid' => 'ഈ അംഗത്വം ഒതുക്കാൻ കഴിയില്ല; അതിന് വളരെയധികം തിരുത്തലുകൾ ഉണ്ട്.',
+'ipb_hide_invalid' => 'ഈ അംഗത്വം ഒതുക്കാൻ കഴിയില്ല; അതിന് {{PLURAL:$1|ഒരു തിരുത്ത്|$1 തിരുത്തുകൾ}} ഉണ്ട്.',
'ipb_already_blocked' => '"$1" ഇതിനകം തന്നെ തടയപ്പെട്ടിരിക്കുന്നു.',
'ipb-needreblock' => '$1 നിലവിൽ തടയപ്പെട്ടതാണ്.<br />
താങ്കൾ സജ്ജീകരണത്തിൽ മാറ്റം വരുത്തുവാൻ ഉദ്ദേശിക്കുന്നുണ്ടോ?',
'allmessages-prefix' => 'പൂർവ്വപദത്തിനനുസരിച്ച് തിരഞ്ഞുവെയ്ക്കുക:',
'allmessages-language' => 'ഭാഷ:',
'allmessages-filter-submit' => 'പോകൂ',
+'allmessages-filter-translate' => 'പരിഭാഷപ്പെടുത്തുക',
# Thumbnails
'thumbnail-more' => 'വലുതാക്കി കാണിക്കുക',
'tooltip-pt-watchlist' => 'താങ്കൾ ശ്രദ്ധിക്കുന്ന താളുകളിലെ മാറ്റങ്ങൾ',
'tooltip-pt-mycontris' => 'താങ്കളുടെ സേവനങ്ങളുടെ പട്ടിക',
'tooltip-pt-login' => 'ലോഗിൻ ചെയ്യുവാൻ താല്പര്യപ്പെടുന്നു; പക്ഷേ നിർബന്ധമല്ല',
-'tooltip-pt-anonlogin' => 'ലോഗിൻ ചെയ്യുവാൻ താല്പര്യപ്പെടുന്നു; പക്ഷേ നിർബന്ധമല്ല',
'tooltip-pt-logout' => 'ലോഗൗട്ട് ചെയ്യാനുള്ള കണ്ണി',
'tooltip-ca-talk' => 'വിവരദായക താളിനെക്കുറിച്ചുള്ള ചർച്ച',
'tooltip-ca-edit' => 'താങ്കൾക്ക് ഈ താൾ തിരുത്താവുന്നതാണ്. തിരുത്തിയ താൾ സേവ് ചെയ്യൂന്നതിനു മുൻപ് പ്രിവ്യൂ കാണുക.',
'version-hook-name' => 'കൊളുത്തിന്റെ പേര്',
'version-hook-subscribedby' => 'വരിക്കാരനായത്',
'version-version' => '(പതിപ്പ് $1)',
-'version-license' => 'അനുമതി',
+'version-license' => 'മീഡിയവിക്കി ഉപയോഗാനുമതി',
+'version-ext-license' => 'അനുമതി',
+'version-ext-colheader-name' => 'അനുബന്ധം',
+'version-ext-colheader-version' => 'പതിപ്പ്',
+'version-ext-colheader-license' => 'ഉപയോഗാനുമതി',
+'version-ext-colheader-description' => 'വിവരണം',
+'version-ext-colheader-credits' => 'രചയിതാക്കൾ',
+'version-license-title' => '$1 ഉപയോഗാനുമതി',
+'version-license-not-found' => 'ഈ അനുബന്ധത്തോടൊപ്പം ഉപയോഗാനുമതി വിവരങ്ങൾ കണ്ടെത്താനായില്ല.',
+'version-credits-title' => '$1 കടപ്പാട്',
+'version-credits-not-found' => 'ഈ അനുബന്ധത്തോടൊപ്പം കടപ്പാട് വിവരങ്ങൾ കണ്ടെത്താനായില്ല.',
'version-poweredby-credits' => "ഈ വിക്കി പ്രവർത്തിക്കാൻ '''[https://www.mediawiki.org/ മീഡിയവിക്കി]''' ഉപയോഗിക്കുന്നു. പകർപ്പവകാശം © 2001-$1 $2.",
'version-poweredby-others' => 'മറ്റുള്ളവർ',
'version-poweredby-translators' => 'പരിഭാഷാവിക്കിയിലെ പരിഭാഷകർ',
'api-error-overwrite' => 'നിലവിലുള്ള പ്രമാണത്തിന്റെ മുകളിൽ സ്ഥാപിക്കൽ അനുവദിച്ചിട്ടില്ല.',
'api-error-stashfailed' => 'ആന്തരിക പിഴവ്: പ്രമാണം താത്കാലികമായി സംഭരിക്കുന്നതിൽ സെർവർ പരാജയപ്പെട്ടു.',
'api-error-publishfailed' => 'ആന്തരിക പിഴവ്: താത്കാലിക പ്രമാണം പ്രസിദ്ധീകരിക്കുന്നതിൽ സെർവർ പരാജയപ്പെട്ടു.',
+'api-error-stasherror' => 'പ്രമാണം സ്റ്റാഷിലേയ്ക്ക് അപ്ലോഡ് ചെയ്യുന്നതിനിടെ പിഴവുണ്ടായി.',
'api-error-timeout' => 'പ്രതീക്ഷിക്കപ്പെട്ട കാലാവധിക്കുള്ളിൽ സെർവർ പ്രതികരിച്ചില്ല.',
'api-error-unclassified' => 'അപരിചിതമായ പിഴവ് സംഭവിച്ചിരിക്കുന്നു',
'api-error-unknown-code' => 'അപരിചിതമായ പിഴവ്: "$1"',
$messages = array(
# User preference toggles
'tog-underline' => 'Линкүүдийн доогуур зураас зур:',
-'tog-justify' => 'Мөрүүдийг тэгшлэх',
'tog-hideminor' => 'Сүүлийн өөрчлөлтүүд дахь бага зэргийн засваруудыг нуух',
'tog-hidepatrolled' => 'Сүүлийн өөрчлөлтүүдэд манагдсан засваруудыг нуух',
'tog-newpageshidepatrolled' => 'Шинэ хуудсуудын жагсаалтаас манагдаж буй хуудсуудыг нуух',
'tog-numberheadings' => 'Гарчигуудыг автоматаар дэс дугаарлах',
'tog-showtoolbar' => 'Засварлах түүлбарыг үзүүлэх (ЖаваСкрипт)',
'tog-editondblclick' => 'Хоёр удаа дараад хуудсыг засварлах (ЖаваСкрипт)',
-'tog-editsection' => '[Засварлах] линкээр хэсгийг засварладаг болгох',
'tog-editsectiononrightclick' => 'Хэсгийн гарчиг дээр баруун товчлуураар дарж засварладаг болгох (ЖаваСкрипт)',
-'tog-showtoc' => 'Агуулгын хүснэгтийг үзүүлэх (3-с илүү хэсэгтэй хуудсуудад)',
'tog-rememberpassword' => 'Энэхүү хөтөч дээрх нэвтрэлтийг санах (хамгийн ихдээ $1 {{PLURAL:$1|өдрийн|өдрийн}} турш)',
'tog-watchcreations' => 'Миний үүсгэсэн хуудсуудыг хянах жагсаалтанд оруулах',
'tog-watchdefault' => 'Миний засварласан хуудсуудыг хянах жагсаалтанд оруулах',
'compareselectedversions' => 'Сонгосон хувилбаруудыг харьцуулах',
'showhideselectedversions' => 'Сонгосон хувилбаруудыг үзүүлэх/нуух',
'editundo' => 'цуцлах',
-'diff-multi' => '({{PLURAL:$2|Нэг хэрэглэгчийн|$2 хэрэглэгчийн}} завсрын {{PLURAL:$1|нэг засварыг|$1 засварыг}} үзүүлээгүй)',
'diff-multi-manyusers' => '($2 гаруй {{PLURAL:$2|хэрэглэгчийн}} {{PLURAL:$1|дундын нэг засварыг|дундын $1 засварыг}} үзүүлсэнгүй)',
# Search results
'rows' => 'Мөр:',
'columns' => 'Багана:',
'searchresultshead' => 'Хайлт',
-'resultsperpage' => 'Хуудас тус бүр дээрх илэрцийн тоо:',
'stub-threshold' => '<a href="#" class="stub">Түүхий холбоосийг</a> форматлах босго (байт):',
'stub-threshold-disabled' => 'Идэвхигүйжүүлсэн',
'recentchangesdays' => 'Сүүлийн өөрчлөлтүүдэд үзүүлэх өдрийн тоо:',
'watchmethod-list' => 'хяналтад буй хуудсуудад саяхан өөрчлөлт орсон эсэхийг шалгаж байна',
'watchlistcontains' => 'Таны хянах жагсаалтанд $1 хуудас байна.',
'iteminvalidname' => "'$1' зүйлд асуудал гарлаа, хүчингүй нэр...",
-'wlnote' => "Энд нь {{PLURAL:$2|цагийн|'''$2''' цагийн}} өмнө хамгийн сүүлд хийсэн {{PLURAL:$1|өөрчлөлт| '''$1''' өөрчлөлтүүд}} байна.",
'wlshowlast' => 'Сүүлийн $1 цагийн $2 өдрийн $3-г харуул',
'watchlist-options' => 'Хянаж буй хуудсуудын жагсаалтны сонголтууд',
'tooltip-pt-watchlist' => 'Засварууд нь хянагдаж буй хуудсуудын жагсаалт',
'tooltip-pt-mycontris' => 'Таны оруулсан хувь нэмрийн жагсаалт',
'tooltip-pt-login' => 'Заавал хийх ёстой зүйл биш боловч таныг нэвтрэхийг зөвлөж байна.',
-'tooltip-pt-anonlogin' => 'Таныг нэвтрэхийг зөвлөж байна, гэхдээ энэ бол заавал хийх ёстой зүйл биш.',
'tooltip-pt-logout' => 'Гарах',
'tooltip-ca-talk' => 'Хуудасны талаарх хэлэлцүүлэг',
'tooltip-ca-edit' => 'Та энэ хуудсыг засварлах боломжтой. Хадгалахынхаа өмнө "Урьдчилан харах" товчлуурыг хэрэглэнэ үү.',
$messages = array(
# User preference toggles
'tog-underline' => 'दुव्यांचे अधोरेखन:',
-'tog-justify' => 'परिच्छेद समान करा',
'tog-hideminor' => 'अलीकडील बदलांत छोटी संपादने लपवा',
'tog-hidepatrolled' => 'पहारा दिलेली संपादने (नित्य पहाण्यात असलेली संपादने) अलीकडील बदलांमधून लपवा',
'tog-newpageshidepatrolled' => 'नवीन पृष्ठ यादीतून पहारा दिलेली पाने (नित्य पहाण्यात असलेली संपादने) लपवा',
'tog-numberheadings' => 'शीर्षके स्वयंक्रमांकित करा',
'tog-showtoolbar' => 'संपादन साधनपट्टी दाखवा',
'tog-editondblclick' => 'दुबार-टिचकुन पान संपादित करा',
-'tog-editsection' => '[संपादन] दुव्यामार्फत विभाग संपादन करणे शक्य करा',
'tog-editsectiononrightclick' => 'विभाग शीर्षकावर उजव्या क्लिकने टिचकुन संपादन करणे शक्य करा',
-'tog-showtoc' => 'अनुक्रमणिका दाखवा(पानात ३ पेक्षा जास्त शीर्षके असल्यास)',
'tog-rememberpassword' => 'माझा सनोंदप्रवेश (लॉग-ईन) या न्याहाळकावर लक्षात ठेवा (जास्तीत जास्त $1 {{PLURAL:$1|दिवसासाठी|दिवसांसाठी}})',
'tog-watchcreations' => 'मी तयार केलेली पाने आणि चढविलेल्या संचिका माझ्या निरीक्षणसूचीत टाका',
'tog-watchdefault' => 'मी संपादित केलेली पाने आणि संचिका माझ्या निरीक्षणसूचीत टाका',
'youhavenewmessagesfromusers' => 'तुमच्यासाठी {{PLURAL:$3|इतर सदस्याकडून|$3 सदस्यांकडून}} $1 आहेत. ($2)',
'youhavenewmessagesmanyusers' => 'तुमच्यासाठी बऱ्याच सदस्यांकडून $1 आहेत. ($2)',
'newmessageslinkplural' => '{{PLURAL:$1|एक नवीन संदेश|९९९=नवीन संदेश}}',
-'newmessagesdifflinkplural' => 'मागील {{PLURAL:$1|बदल}}',
+'newmessagesdifflinkplural' => 'मागील {{PLURAL:$1|999=बदल}}',
'youhavenewmessagesmulti' => '$1 वर तुमच्यासाठी नवीन संदेश आहेत.',
'editsection' => 'संपादन',
'editold' => 'संपादन',
'mailerror' => 'विपत्र पाठवण्यात त्रुटी: $1',
'acct_creation_throttle_hit' => 'माफ करा, तुम्ही आत्तापर्यंत {{PLURAL:$1|१ खाते उघडले आहे|$1 खाती उघडली आहेत}}. तुम्हाला आणखी खाती उघडता येणार नाहीत.',
'emailauthenticated' => 'तुमचा विपत्रपत्ता $2 ला $3 यावेळी तपासण्यात आला आहे.',
-'emailnotauthenticated' => 'तà¥\81मà¤\9aा à¤\88-मà¥\87ल पतà¥\8dता à¤\85दà¥\8dयाप à¤\85धिपà¥\8dरमाणित(à¤\91थà¥\87à¤\82à¤\9fिà¤\95à¥\87à¤\9fà¥\87ड) नाहà¥\80. à¤\96ालà¥\80ल à¤\95à¥\8bणतà¥\8dयाहà¥\80 फिà¤\9aरà¥\8dसà¤\95रिता ई-मेल पाठविला जाणार नाही.',
+'emailnotauthenticated' => 'तà¥\81मà¤\9aà¥\8dया à¤\88-मà¥\87ल पतà¥\8dतà¥\8dयाà¤\9aà¥\80 à¤\85दà¥\8dयाप निशà¥\8dà¤\9aितà¥\80 à¤\9dालà¥\87लà¥\80 नाहà¥\80. à¤\96ालà¥\80ल à¤\95à¥\8bणतà¥\8dयाहà¥\80 फिà¤\9aरà¥\8dससाठà¥\80 ई-मेल पाठविला जाणार नाही.',
'noemailprefs' => 'खालील सुविधा कार्यान्वित करण्यासाठी,पसंतीक्रमात ई-मेल पत्ता नमूद करा.',
'emailconfirmlink' => 'आपला ई-मेल पत्ता निश्चित करा.',
'invalidemailaddress' => 'तुम्ही दिलेला ई-मेल पत्ता चुकीचा आहे, कारण तो योग्यप्रकारे लिहिलेला नाही. कृपया योग्यप्रकारे ई-मेल पत्ता लिहा अथवा ती जागा मोकळी सोडा.',
'showdiff' => 'बदल दाखवा',
'anoneditwarning' => "'''इशारा:''' तुम्ही विकिपीडियाचे सदस्य म्हणून सनोंद-प्रवेश (लॉग-इन) केलेला नाही. या पानाच्या संपादन इतिहासात तुमचा अंकपत्ता (आयपी) नोंदला जाईल.",
'anonpreviewwarning' => "\"'''सावधान:''' तुम्ही विकिपीडियाचे सदस्य म्हणून सनोंद-प्रवेश (लॉग-इन) केलेला नाही. या पानाच्या संपादन इतिहासात तुमचा अंकपत्ता (आय.पी. ॲड्रेस) नोंदला जाईल.\"",
-'missingsummary' => "'''à¤\86ठवण:''' तà¥\81मà¥\8dहà¥\80 सà¤\82पादन साराà¤\82श पà¥\81रवलà¥\87ला नाहà¥\80.à¤\86पण 'à¤\9cतन à¤\95रा' वर पà¥\81नà¥\8dहा à¤\9fिà¤\9aà¤\95à¥\80 मारलà¥\80 तर तà¥\87 तà¥\8dयाशिवाय जतन होईल.",
+'missingsummary' => "'''à¤\86ठवण:''' à¤\86पण सà¤\82पादन साराà¤\82श पà¥\81रवलà¥\87ला नाहà¥\80.à¤\86पण 'à¤\9cतन à¤\95रा' वर पà¥\81नà¥\8dहा à¤\9fिà¤\9aà¤\95à¥\80 मारलà¥\80 तर, तà¥\87 तà¥\8dयाशिवायà¤\9a जतन होईल.",
'missingcommenttext' => 'कृपया खाली प्रतिक्रिया भरा.',
'missingcommentheader' => "'''आठवण:''' आपण या लेखनाकरिता विषय किंवा मथळा दिलेला नाही. आपण पुन्हा \"{{int:savearticle}}\" वर टिचकले तर, तुमचे संपादन त्याशिवायच जतन होईल.",
'summary-preview' => 'आढाव्याची झलक:',
'showhideselectedversions' => 'निवडलेल्या आवृत्त्या दाखवा / लपवा',
'editundo' => 'उलटवा',
'diff-empty' => '(काही फरक नाही)',
-'diff-multi' => '{{PLURAL:$2|सदस्याची|$2 सदस्यांच्या}} ({{PLURAL:$1|आंतरवर्ती आवृत्ती|$1 आंतरवर्ती आवृत्त्या}} दाखवल्या नाहीत)',
'diff-multi-manyusers' => '{{PLURAL:$2|सदस्याची|$2 सदस्यांच्या}} ({{PLURAL:$1|आवृत्ती|$1 आवृत्त्या}} दाखवल्या नाहीत)',
'difference-missing-revision' => 'या लेखाचे/ची ($1) हे {{PLURAL:$2|संस्करण|$2 संस्करणे}} {{PLURAL:$2|सापडले नाही|सापडली नाहीत}}.वगळल्या गेलेल्या लेखपानाच्या जुन्या इतिहास-दुव्याचे अनुसरण केल्यामुळे, शक्यतोवर,असे घडु शकते.याबाबत अधिक तपशील [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} वगळलेल्या नोंदी] येथे बघता येईल.',
'preferences' => 'पसंतीक्रम',
'mypreferences' => 'पसंतीक्रम',
'prefs-edits' => 'संपादनांची संख्या:',
+'prefsnologintext2' => 'आपला पसंतीक्रम बदलण्यास $1 करा',
'prefs-skin' => 'त्वचा',
'skin-preview' => 'झलक',
'datedefault' => 'प्राथमिकता नाही',
'rows' => 'ओळी:',
'columns' => 'स्तंभ:',
'searchresultshead' => 'शोध',
-'resultsperpage' => 'प्रति पान धडका:',
'stub-threshold' => '<a href="#" class="stub">अंकुरीत दुव्यांच्या</a> रचनेची नांदी (बाईट्स):',
'stub-threshold-disabled' => 'अक्षम केले',
'recentchangesdays' => 'अलीकडील बदल मधील दाखवावयाचे दिवस:',
'recentchanges-label-bot' => 'हे संपादन एका सांगकाम्याकडून केले गेले आहे',
'recentchanges-label-unpatrolled' => 'हे संपादन अजून तपासल्या गेले नाही',
'recentchanges-label-plusminus' => 'या पानाचा आकार इतक्या बाइट्स ने बदलला',
+'recentchanges-legend-heading' => "'''विवरण:'''",
'recentchanges-legend-newpage' => '([[Special:NewPages|नविन पानांची यादी]] हेही पाहा)',
+'recentchanges-legend-plusminus' => "(''±१२३'')",
'rcnotefrom' => "खाली <b>$2</b> पासूनचे ('''$1''' पर्यंत) बदल दाखविले आहेत.",
'rclistfrom' => '$1 नंतर केले गेलेले बदल दाखवा.',
'rcshowhideminor' => 'छोटे बदल $1',
'rcshowhidebots' => 'सांगकामे(बॉट्स) $1',
-'rcshowhideliu' => 'सनोंद प्रवेशित सदस्य $1',
+'rcshowhideliu' => '$1नोंदणीकृत सदस्य',
'rcshowhideanons' => 'अनामिक सदस्य $1',
'rcshowhidepatr' => '$1 पहारा असलेली संपादने',
'rcshowhidemine' => 'माझे बदल $1',
# Upload
'upload' => 'संचिका चढवा',
-'uploadbtn' => 'सà¤\82à¤\9aिà¤\95ा à¤\9aढवा',
+'uploadbtn' => 'सà¤\82à¤\9aिà¤\95à¥\87à¤\9aà¥\87 à¤\85पà¤à¤¾à¤°à¤£ à¤\95रा',
'reuploaddesc' => 'अपभारण रद्द करुन ,अपभारणाच्या अर्जाकडे परत जा',
'upload-tryagain' => 'बदललेले संचिका वर्णन पाठवा',
'uploadnologin' => 'सनोंद-प्रवेशित नाही',
'filename-tooshort' => 'संचिकानाम खूपच छोटे आहे',
'filetype-banned' => 'याप्रकारची संचिका प्रतिबंधित आहे.',
'verification-error' => 'संचिका पडताळणीत ही संचिका अनुत्तीर्ण झाली.',
-'hookaborted' => 'तà¥\81मà¥\8dहà¥\80 à¤\95रà¥\82 à¤\87à¤\9aà¥\8dà¤\9bिणारà¥\87 सà¤\82पादन बाहà¥\8dय हà¥\81à¤\95 दà¥\8dवारà¥\87 थंबवण्यात आले.',
+'hookaborted' => 'तà¥\81मà¥\8dहà¥\80 à¤\95रà¥\82 à¤\87à¤\9aà¥\8dà¤\9bिणारà¥\87 बदल विसà¥\8dतारà¤\95ादà¥\8dवारà¥\87 थांबवण्यात आले.',
'illegal-filename' => 'या संचिकानामास परवानगी नाही.',
'overwrite' => 'अस्तित्वात असलेल्या संचिकेवर पुनर्लेखन प्रतिबंधित आहे.',
'unknown-error' => 'एक अज्ञात चूक उद्भवली.',
'tmp-create-error' => 'तात्पुरती संचिका बनवता आली नाही.',
'tmp-write-error' => 'तात्पुरती संचिका लिहीतांना चूकी',
'large-file' => 'संचिका $1 पेक्षा कमी आकाराची असण्याची अपेक्षा आहे, ही संचिका $2 एवढी आहे.',
-'largefileserver' => 'सेवा संगणकावर (सर्वर) निर्धारित केलेल्या आकारापेक्षा या संचिकेचा आकार मोठा आहे.',
+'largefileserver' => 'सà¥\87वा सà¤\82à¤\97णà¤\95ावर (सरà¥\8dवà¥\8dहर) निरà¥\8dधारित à¤\95à¥\87लà¥\87लà¥\8dया à¤\86à¤\95ारापà¥\87à¤\95à¥\8dषा या सà¤\82à¤\9aिà¤\95à¥\87à¤\9aा à¤\86à¤\95ार मà¥\8bठा à¤\86हà¥\87.',
'emptyfile' => 'चढवलेली संचिका रिकामी आहे.असे संचिकानाम चुकीचे लिहिल्याने होउ शकते. कृपया तुम्हाला हीच संचिका चढवायची आहे का ते तपासा.',
'windows-nonascii-filename' => 'या विकिवर विशेष वर्ण असलेल्या संचिकानामाचा आधार घेता येणार नाही.',
'fileexists' => 'या नावाची संचिका आधीच अस्तित्वात आहे, कृपया ही संचिका बदलण्याबद्दल तुम्ही साशंक असाल तर <strong>[[:$1]]</strong> तपासा.
कृपया <strong>[[:$1]]</strong> ही संचिका तपासा.
जर तपासलेली संचिका ही याच आकाराची असेल तर नवीन प्रतिकृती चढविण्याची गरज नाही.",
'file-thumbnail-no' => 'या संचिकेचे नाव <strong>$1</strong> पासून सुरू होत आहे. ही कदाचित झलक असू शकते.
-जर तुमच्या कडे पूर्ण रिझोल्यूशनची संचिका असेल तर चढवा अथवा संचिकेचे नाव बदला.',
-'fileexists-forbidden' => 'या नावाà¤\9aà¥\80 सà¤\82à¤\9aिà¤\95ा à¤\85à¤\97à¥\8bदरà¤\9a à¤\85सà¥\8dतितà¥\8dतà¥\8dवात à¤\86हà¥\87; à¤\95à¥\83पया पà¥\81नà¥\8dहा माà¤\97à¥\87 जाऊन ही संचिका नवीन नावाने चढवा.
+जर तुमच्याकडे पूर्ण रिझोल्यूशनची संचिका असेल तर चढवा अथवा संचिकेचे नाव बदला.',
+'fileexists-forbidden' => 'या नावाà¤\9aà¥\80 सà¤\82à¤\9aिà¤\95ा à¤\85à¤\97à¥\8bदरà¤\9a à¤\85सà¥\8dतितà¥\8dतà¥\8dवात à¤\86हà¥\87; à¤\95à¥\83पया पà¥\81नà¥\8dहा परत जाऊन ही संचिका नवीन नावाने चढवा.
[[File:$1|thumb|center|$1]]',
'fileexists-shared-forbidden' => 'हे नाव असलेली एक संचिका शेअर्ड संचिका कोशात आधी पासून आहे; कृपया परत मागे जा आणि नवीन, वेगळ्या नावाने ही संचिका पुन्हा चढवा. [[File:$1|thumb|center|$1]]',
'file-exists-duplicate' => 'ही संचिका खालील {{PLURAL:$1|संचिकेची|संचिकांची}} प्रत आहे:',
'watchthisupload' => 'या पानावर बदलांसाठी लक्ष ठेवा.',
'filewasdeleted' => 'या नावाची संचिका या पूर्वी एकदा चढवून नंतर वगळली होती.तुम्ही ती पुन्हा चढवण्या अगोदर $1 तपासा.',
'filename-bad-prefix' => "तुम्ही चढवत असलेल्या संचिकेचे नाव '''\"\$1\"''' पासून सुरू होते, जे की अंकीय छाउ (कॅमेरा) ने दिलेले अवर्णनात्मक नाव आहे.कृपया तुमच्या संचिकेकरिता अधिक वर्णनात्मक नाव निवडा.",
-'upload-success-subj' => 'यशसà¥\8dवà¥\80रà¥\80तà¥\8dया à¤\9aढवले',
-'upload-success-msg' => 'तुमचे [$2] येथून्ब चढवणे यशस्वी ठरले. ते येथे उपलब्ध आहे: [[:{{ns:file}}:$1]]',
+'upload-success-subj' => 'यशसà¥\8dवà¥\80रà¥\80तà¥\8dया à¤\85पà¤à¤¾à¤°à¤¿à¤¤ à¤\95à¥\87ले',
+'upload-success-msg' => 'तुमचे [$2] येथून अपभारण यशस्वी ठरले. ते येथे उपलब्ध आहे: [[:{{ns:file}}:$1]]',
'upload-failure-subj' => 'चढवण्यातील त्रूटि:',
'upload-failure-msg' => '[$2] येथून तुमच्या चढवण्यात चूक झाली:
'backend-fail-stream' => '$1 या संचिकेचा स्त्रोत शोधता आला नाही.',
'backend-fail-backup' => '$1 या संचिकेची आधारप्रत बनविता आली नाही.',
'backend-fail-notexists' => '$1 ही संचिका अस्तित्वात नाही.',
-'backend-fail-hashes' => 'तà¥\81लना à¤\95रणà¥\8dयासाठà¥\80 फाà¤\87ल हाशेस मिळाले नाही',
+'backend-fail-hashes' => 'तà¥\81लना à¤\95रणà¥\8dयासाठà¥\80 फाà¤\87ल हà¥\85शेस मिळाले नाही',
'backend-fail-notsame' => ' $1 येथे यापेक्षा विभिन्न असलेली संचिका पूर्वीच विद्यमान आहे',
'backend-fail-invalidpath' => '$1 हा वैध संग्राहक-पथ नाही.',
'backend-fail-delete' => '$1 ही संचिका (फाईल) बनवता आली नाही.',
'backend-fail-closetemp' => 'तात्पुरती संचिका बंद करणे जमले नाही.',
'backend-fail-read' => '$1 ही संचिका वाचता आली नाही.',
'backend-fail-create' => '$1 ही संचिका लिहिता आली नाही.',
-'backend-fail-maxsize' => '$1 ही संचिका लिहिता आली नाही कारण ती {{PLURAL:$2|one byte|$2 bytes}} पेक्षा मोठी आहे.',
+'backend-fail-maxsize' => '$1 ही संचिका लिहिता आली नाही कारण ती {{PLURAL:$2|एक बाइट|$2 बाइट्स}} पेक्षा मोठी आहे.',
'backend-fail-readonly' => 'पार्श्वभौमीक साठवण "$1" “फक्त वाचा” असे आहे. दिलेले कारण "$2" आहे.',
'backend-fail-synced' => 'अंतर्गत पार्श्वभौमीक साठवणीतील फाईल "$1" विसंगत आहे.',
'backend-fail-connect' => 'पार्श्वभौमीक साठा "$1"शी संबंध जोडू शकत नाही.',
'backend-fail-internal' => 'पार्श्वभौमीक साठा "$1" यात अज्ञात चूक झाली आहे.',
'backend-fail-contenttype' => '"$1" मध्ये ठेवलेल्या फाईलचा महितीचा प्रकार कळत नाही',
-'backend-fail-batchsize' => 'पार्श्वभौमीक साठयातील बॅच $1 फाईल{{PLURAL:$1|operation|operations}}; मधे मर्यादित कस्त $२ {{PLURAL:$2|operation|operations}} असू शकते',
+'backend-fail-batchsize' => 'पार्श्वभौमीक साठयातील बॅच $1 फाईल{{PLURAL:$1|क्रियेत|क्रियांमध्ये}}; मर्यादित कस्त $२ {{PLURAL:$2|क्रिया}} असू शकते',
'backend-fail-usable' => 'अपुऱ्या परवानगीमुळे किंवा निर्देशिकेच्या/धारिकेच्या(डिरेक्टरीज/कंटेनर्स) अभावामुळे "$1" संचिका वाचु अथवा लिहू शकत नाही.',
# File journal errors
'lockmanager-fail-acquirelock' => '"$1" साठी लॉक फाइल मिळवू शकत नाही',
'lockmanager-fail-openlock' => '"$1" साठी लॉक फाइल उघडू शकत नाही',
'lockmanager-fail-releaselock' => '"$1" साठी लॉक उघडू शकत नाही',
-'lockmanager-fail-db-bucket' => '$1 बासà¥\8dà¤\95à¥\87à¤\9f मधà¥\80ल à¤\95à¥\81लà¥\82प बà¤\82द डà¥\87à¤\9fाबà¥\87सशà¥\80 पà¥\81रà¥\87सा सà¤\82परà¥\8dà¤\95 हà¥\8bवà¥\82 शà¤\95त नाहà¥\80',
+'lockmanager-fail-db-bucket' => '$1 बà¤\95à¥\87à¤\9f मधà¥\80ल à¤\95à¥\81लà¥\82प बà¤\82द डà¥\87à¤\9fाबà¥\87सशà¥\80 पà¥\81रà¥\87सा सà¤\82परà¥\8dà¤\95 हà¥\8bवà¥\82 शà¤\95त नाहà¥\80.',
'lockmanager-fail-db-release' => '"$1" डाटाबेस वरील लॉक उघडू शकत नाही',
'lockmanager-fail-svr-acquire' => 'सर्व्हर "$1" वरील कुलूप उघडू शकत नाही',
'lockmanager-fail-svr-release' => 'सर्व्हर "$1" वरील् लॉक उघडू शकत नाही',
'zip-wrong-format' => 'ही संचिका "झिप" प्रकारची नाही.',
'zip-bad' => 'ही संचिका दूषित किंवा न वाचता येणारी झिप संचिका आहे.
ती सुरक्षिततेसाठी नीट तपासता आली नाही.',
-'zip-unsupported' => 'हि सà¤\82à¤\9aिà¤\95ा à¤\8fà¤\95 ZIP सà¤\82à¤\9aिà¤\95ा à¤\86हà¥\87 à¤\9cà¥\80 मिडà¥\80याविà¤\95à¥\80 दà¥\8dवरे (support) न केलेले ZIP वैशिष्ट्ये (features) वापरते.
-या संचिकेची सुरक्षा पडताळणीसाठी व्यवस्थितरीत्या होऊ शकत नाही.',
+'zip-unsupported' => 'हà¥\80 सà¤\82à¤\9aिà¤\95ा à¤\8fà¤\95 ZIP सà¤\82à¤\9aिà¤\95ा à¤\86हà¥\87 à¤\9cà¥\80 मिडà¥\80याविà¤\95à¥\80 दà¥\8dवारे (support) न केलेले ZIP वैशिष्ट्ये (features) वापरते.
+या संचिकेची सुरक्षा पडताळणी व्यवस्थितरीत्या होऊ शकत नाही.',
# Special:UploadStash
'uploadstash' => 'चढवणे लपवा',
'uploadstash-summary' => 'या पानावर अश्या संचिका पहावयास् मिळतात ज्या चढवल्या आहेत (अथवा चढवल्या जात आहेत) परंतु अजून विकी वर प्रकाशित केल्या नाहित. या संचिका फक्त त्या सदस्यास् दिसतील ज्याने त्या चढवल्या आहेत, इतर सदस्यांस् त्या दिसणार नाहीत.',
'uploadstash-clear' => 'लपवलेल्या संचिका काढा',
'uploadstash-nofiles' => 'तुमच्याकडे लपवलेल्या संचिका नाहीत.',
-'uploadstash-badtoken' => 'हि कृती अयशस्वी होती. कदाचित आपल्या संपादन अधिकारपत्राची (editing credentials) मुदत संपली.',
+'uploadstash-badtoken' => 'हà¥\80 कृती अयशस्वी होती. कदाचित आपल्या संपादन अधिकारपत्राची (editing credentials) मुदत संपली.',
'uploadstash-errclear' => 'संचिका स्वच्छ करणे अयशस्वी.',
'uploadstash-refresh' => 'संचिकांची यादी ताजीतवानी करा',
'invalid-chunk-offset' => 'अग्राह्य चंक ऑफसेट',
# img_auth script messages
-'img-auth-accessdenied' => 'परवानà¤\97à¥\80 नाहà¥\80',
+'img-auth-accessdenied' => 'पà¥\8bहà¥\8bà¤\9a नाà¤\95ारलà¥\8dया à¤\97à¥\87लà¥\80.',
'img-auth-nopathinfo' => 'मार्ग माहिती आढळली नाही.
आपला सर्व्हर ही माहिती पोचवू शकत नाही.
तो सीजीआय-आधारित व इमेज_ऑथला समर्थन न देऊ शकणारा असू शकतो.
फक्त संचिका वापरण्याची परवानगी आहे.',
'img-auth-streaming' => 'स्ट्रीमिंग "$1".',
'img-auth-public' => 'img_auth.php हे वैयक्तिक विकीमधून माहिती प्रदान करण्याचे कार्य करते.
-हा विकि सार्वजनिक विकि म्हणून सब्चित करण्यात आला आ.े.
-à¤\89à¤\9aित सà¥\81रà¤\95à¥\8dषा à¤\95à¥\87 लिà¤\8f img_auth.php à¤\95à¥\8b निषà¥\8dà¤\95à¥\83य à¤\95िया हà¥\81à¤\86 हà¥\88।',
+हा विकि सार्वजनिक विकि म्हणून सब्चित करण्यात आला आहे.
+à¤\95िमान सà¥\81रà¤\95à¥\8dषà¥\87साठà¥\80 img_auth.php ला à¤\85à¤\95à¥\8dषम à¤\95à¥\87लà¥\87 à¤\86हà¥\87.',
'img-auth-noread' => 'तुम्हाला "$1" वाचण्याची परवानगी नाही',
'img-auth-bad-query-string' => 'या दुव्यामध्ये (URL) अवैध query string आहे.',
'listfiles_search_for' => 'चित्र नावाने शोध:',
'imgfile' => 'संचिका',
'listfiles' => 'चित्र यादी',
-'listfiles_thumb' => 'पà¥\8dरारà¥\81प',
+'listfiles_thumb' => 'नà¤\96à¥\81लà¥\87',
'listfiles_date' => 'दिनांक',
'listfiles_name' => 'नाव',
'listfiles_user' => 'सदस्य',
'filehist-datetime' => 'दिनांक/वेळ',
'filehist-thumb' => 'नखुले',
'filehist-thumbtext' => '$1 च्या आवृत्तीचे नखुले',
-'filehist-nothumb' => 'पà¥\8dरारà¥\81प नाही',
+'filehist-nothumb' => 'नà¤\96à¥\81लà¥\87à¤\9aितà¥\8dर नाही',
'filehist-user' => 'सदस्य',
'filehist-dimensions' => 'आकार',
'filehist-filesize' => 'संचिकेचा आकार (बाईट्स)',
'sharedupload-desc-edit' => "संचिका $1 मधील आहे व ती इतर प्रकल्पांमध्ये वापरली जाऊ शकते.आपणास हवे असल्यास,या पानाच्या[$2 'संचिका वर्णन पान'] येथे,त्याची माहिती संपादु शकता.",
'sharedupload-desc-create' => "संचिका $1 मधील आहे व ती इतर प्रकल्पांमध्ये वापरली जात असल्याची शक्यता आहे.आपणास हवे असल्यास,या पानाच्या[$2 'संचिका वर्णन पान'] येथे,त्याची माहिती संपादु शकता",
'filepage-nofile' => 'या नावाची संचिका अस्तित्वात नाही.',
-'filepage-nofile-link' => 'या नावाà¤\9aà¥\80 सà¤\82à¤\9aिà¤\95ा à¤\85सà¥\8dतितà¥\8dयà¥\8dवात नाहà¥\80, पण तà¥\81मà¥\8dहà¥\80 तà¥\80 [$1 à¤\9aढवà¥\82 शà¤\95ता].',
+'filepage-nofile-link' => 'या नावाची संचिका अस्तित्वात नाही, पण तुम्ही ती [$1 चढवू शकता].',
'uploadnewversion-linktext' => 'या संचिकेची नवीन आवृत्ती चढवा',
'shared-repo-from' => '$1 पासून',
'shared-repo' => 'एक मुक्त कोश',
'filedelete-success-old' => '<span class="plainlinks">$3, $2 वेळी \'\'\'[[Media:$1|$1]]\'\'\' चे आवर्तन वगळण्यात आले आहे .</span>',
'filedelete-nofile' => "'''$1''' अस्तित्वात नाही.",
'filedelete-nofile-old' => "सांगितलेल्या गुणधर्मानुसार '''$1'''चे कोणतेही विदा आवर्तन संचित नाही.",
-'filedelete-otherreason' => 'à¤\87तर/शिवाय à¤\85धिà¤\95 कारण:',
+'filedelete-otherreason' => 'दà¥\81सरà¥\87/à¤\85तिरिà¤\95à¥\8dत कारण:',
'filedelete-reason-otherlist' => 'इतर कारण',
'filedelete-reason-dropdown' => '*वगळण्याची सामान्य कारणे
** प्रताधिकार उल्लंघन
** जुळी संचिका',
'filedelete-edit-reasonlist' => 'वगळण्याची कारणे संपादित करा',
-'filedelete-maintenance' => 'फाà¤\88ल वà¤\97ळनà¥\87 à¤\86णि पà¥\81नà¥\8d:सà¥\8dथापित à¤\95रणà¥\8d',
+'filedelete-maintenance' => 'दà¥\87à¤\96à¤à¤¾à¤²à¥\80दरमà¥\8dयान, सà¤\82à¤\9aिà¤\95ा वà¤\97ळणà¥\87 व पà¥\81नरà¥\8dसà¥\8dथापित à¤\95रणà¥\87 तातà¥\8dपà¥\81रतà¥\87 à¤\85à¤\95à¥\8dषम à¤\95à¥\87लà¥\8dया à¤\97à¥\87लà¥\87 à¤\86हà¥\87.',
'filedelete-maintenance-title' => 'संचिका (फाईल) वगळू शकत नाही.',
# MIME search
'mimesearch-summary' => 'हे पान विविधामाप (माईम)-प्रकारांकरिता संचिकांची चाळणी करण्याची सुविधा पुरवते:
Input:contenttype/subtype, e.g. <code>image/jpeg</code>.',
'mimetype' => 'विविधामाप (माईम) प्रकार:',
-'download' => 'à¤\89तरवा',
+'download' => 'à¤\85धिà¤à¤¾à¤°à¤£ à¤\95रा',
# Unwatched pages
-'unwatchedpages' => 'लà¤\95à¥\8dष नसलेली पाने',
+'unwatchedpages' => 'दà¥\87à¤\96रà¥\87à¤\96 नसलेली पाने',
# List redirects
-'listredirects' => 'पà¥\81नरà¥\8dनिरà¥\8dदà¥\87शनà¥\87 दाà¤\96वा',
+'listredirects' => 'पà¥\81नरà¥\8dनिरà¥\8dदà¥\87शनाà¤\82à¤\9aà¥\80 यादà¥\80',
# Unused templates
'unusedtemplates' => 'न वापरलेले साचे',
'statistics-header-views' => 'सांख्यिकी पहा',
'statistics-header-users' => 'सदस्य सांख्यिकी',
'statistics-header-hooks' => 'इतर सांख्यिकी',
-'statistics-articles' => 'सà¤\82बà¤\82धित पाने',
+'statistics-articles' => 'à¤\86शय पाने',
'statistics-pages' => 'पाने',
'statistics-pages-desc' => 'विकीमधील सर्व पाने, पुनर्निर्देशने, चर्चापानांसहित.',
-'statistics-files' => 'à¤\9aढवलà¥\87लà¥\8dया संचिका',
+'statistics-files' => 'à¤\85पà¤à¤¾à¤°à¥\80त संचिका',
'statistics-edits' => '{{SITENAME}} च्या सुरुवातीपासूनची पानांची संपादने',
'statistics-edits-average' => 'प्रतिपान सरासरी संपादने',
'statistics-views-total' => 'सर्व दाखवते',
-'statistics-views-total-desc' => 'à¤\9cà¥\87 पानà¥\87 यामधà¥\8dदà¥\87 नाहà¥\80त तà¥\87 पाहा à¤\86नि à¤\96ास पानà¥\87 सामिला à¤\95रà¥\82 नà¤\95ा.',
+'statistics-views-total-desc' => 'à¤\85सà¥\8dतितà¥\8dवात नसलà¥\87लà¥\80 पानà¥\87 व विशà¥\87ष पानà¥\87 याà¤\82à¤\9aà¥\80 दà¥\83षà¥\8dयता यात à¤\85à¤\82तरà¥\8dà¤à¥\82त नाहà¥\80',
'statistics-views-peredit' => 'प्रति संपादनामागे पाहणे',
'statistics-users' => 'नोंदणीकृत [[Special:ListUsers|सदस्य]]',
'statistics-users-active' => 'कार्यरत सदस्य',
'pageswithprop-prophidden-binary' => 'बायनरी गुणधर्माची किंमत लपविलेली आहे ($1)',
'doubleredirects' => 'दुहेरी-पुनर्निर्देशने',
-'doubleredirectstext' => 'हे पान अशा पानांची सूची पुरवते की जी पुर्ननिर्देशीत पाने दुसऱ्या पुर्ननिर्देशीत पानाकडे निर्देशित झाली आहेत.प्रत्येक ओळीत पहिल्या आणि दुसऱ्या पुर्ननिर्देशनास दुवा दिला आहे सोबतच दुसरे पुर्ननिर्देशन ज्या पानाकडे पोहचते ते पण दिले आहे, जे की बरोबर असण्याची शक्यता आहे ,ते वस्तुतः पहिल्या पानापासूनचेही पुर्ननिर्देशन असावयास हवे.',
+'doubleredirectstext' => 'हे पान, अशा पानांची यादी पुरवते की जी पाने, दुसऱ्या पुर्ननिर्देशीत पानाकडे पुर्ननिर्देशीत झाली आहेत.प्रत्येक ओळीत पहिल्या आणि दुसऱ्या पुर्ननिर्देशनाचा दुवा दिला आहे,तसेच, दुसऱ्या पुर्ननिर्देशनाचे लक्ष्य पान पण दिले आहे,जे मुळात ते
+लक्ष्यपान आहे ज्याकडे, पहिले पुनर्निर्देशन असावयास हवे.
+
+<del>खोडलेल्या प्रविष्टी</del>समायोजित करण्यात आलेल्या आहेत.',
'double-redirect-fixed-move' => '[[$1]] हलवले गेले आहे.
-ते [[$2]] येथे निर्देशित होते.',
-'double-redirect-fixed-maintenance' => '[[$1]] तà¥\87 [[$2]] हà¥\87 à¤\9aà¥\81à¤\95à¥\80à¤\9aà¥\87 पà¥\81नरà¥\8dनिरà¥\8dदà¥\87शन नà¥\80à¤\9f केले.',
-'double-redirect-fixer' => 'पà¥\81नरà¥\8dनिरà¥\8dदà¥\87शन नà¥\80à¤\9f करणारा',
+ते आता [[$2]] येथे निर्देशित होते.',
+'double-redirect-fixed-maintenance' => '[[$1]] तà¥\87 [[$2]] हà¥\87 à¤\9aà¥\81à¤\95à¥\80à¤\9aà¥\87 पà¥\81नरà¥\8dनिरà¥\8dदà¥\87शन ठिà¤\95ठाà¤\95 केले.',
+'double-redirect-fixer' => 'पà¥\81नरà¥\8dनिरà¥\8dदà¥\87शन ठिà¤\95ठाà¤\95 करणारा',
-'brokenredirects' => 'मà¥\8bडà¤\95à¥\87 पà¥\81नरà¥\8dनिरà¥\8dदà¥\87शन',
+'brokenredirects' => 'मà¥\8bडà¤\95à¥\80 पà¥\81नरà¥\8dनिरà¥\8dदà¥\87शनà¥\87',
'brokenredirectstext' => 'खालील पुनर्निर्देशने अस्तित्वात नसलेली पाने जोडतात:',
'brokenredirects-edit' => 'संपादन',
'brokenredirects-delete' => 'वगळा',
'ninterwikis' => '$1 {{PLURAL:$1|आंतरविकि|आंतरविकि दुवे}}',
'nlinks' => '$1 {{PLURAL:$1|दुवा|दुवे}}',
'nmembers' => '$1 {{PLURAL:$1|सदस्य}}',
+'nmemberschanged' => '$1 → $2 {{PLURAL:$2|सदस्य}}',
'nrevisions' => '$1 {{PLURAL:$1|आवर्तन|आवर्तने}}',
'nviews' => '$1 {{PLURAL:$1|दृषीपथ|दृषीपथ}}',
'nimagelinks' => '$1{{PLURAL:$1|पानावर|पानांवर}}',
'protectedpages' => 'सुरक्षित पाने',
'protectedpages-indef' => 'फक्त अनंत काळासाठी सुरक्षित केलेले',
'protectedpages-cascade' => 'केवळ एकामेकांवर अवलंबून कास्केडींग सुरक्षा (सुरक्षा शिडी)',
+'protectedpages-noredirect' => 'पुनर्निर्देशने लपवा',
'protectedpagesempty' => 'सध्या या नियमावलीने कोणतीही पाने सुरक्षित केलेली नाहीत.',
'protectedtitles' => 'सुरक्षीत शीर्षके',
'protectedtitlesempty' => 'या नियमावलीने सध्या कोणतीही शीर्षके सुरक्षित केलेली नाहीत.',
'listgrouprights-rights' => 'अधिकार',
'listgrouprights-helppage' => 'Help:गट अधिकार',
'listgrouprights-members' => '(सदस्यांची यादी)',
-'listgrouprights-addgroup' => '{{PLURAL:$2|गट|गट}} वाढवा: $1',
-'listgrouprights-removegroup' => '{{PLURAL:$2|गट|गट}} वगळा: $1',
+'listgrouprights-addgroup' => '{{PLURAL:$2|गट}} वाढवा: $1',
+'listgrouprights-removegroup' => '{{PLURAL:$2|गट}} वगळा: $1',
'listgrouprights-addgroup-all' => 'सर्व गट वाढवा',
-'listgrouprights-removegroup-all' => 'सरà¥\8dव समà¥\82ह काढून टाका',
-'listgrouprights-addgroup-self' => 'स्वतःच्या खात्यात हे {{PLURAL:$2|गट|गट}} मिळवा: $1',
-'listgrouprights-removegroup-self' => 'स्वतःच्या खात्यातून हे {{PLURAL:$2|गट|गट}} वगळा: $1',
-'listgrouprights-addgroup-self-all' => 'सरà¥\8dव समà¥\82ह सà¥\8dवतà¤\83à¤\9aà¥\8dया à¤\96ातà¥\8dयात मिळवा',
-'listgrouprights-removegroup-self-all' => 'सरà¥\8dव समà¥\82ह स्वतःच्या खात्यातून काढून टाका',
+'listgrouprights-removegroup-all' => 'सरà¥\8dव à¤\97à¤\9f काढून टाका',
+'listgrouprights-addgroup-self' => 'स्वतःच्या खात्यात हे {{PLURAL:$2|गट}} मिळवा: $1',
+'listgrouprights-removegroup-self' => 'स्वतःच्या खात्यातून हे {{PLURAL:$2|गट}} वगळा: $1',
+'listgrouprights-addgroup-self-all' => 'सरà¥\8dव à¤\97à¤\9f सà¥\8dवतà¤\83à¤\9aà¥\8dया à¤\96ातà¥\8dयात à¤\9cà¥\8bडा',
+'listgrouprights-removegroup-self-all' => 'सरà¥\8dव à¤\97à¤\9f स्वतःच्या खात्यातून काढून टाका',
# Email user
'mailnologin' => 'पाठविण्याचा पत्ता नाही',
'noemailtitle' => 'विपत्र पत्ता नाही',
'noemailtext' => 'या सदस्याने वैध विपत्र पत्ता नमूद केलेला नाही.',
'nowikiemailtitle' => 'विपत्र प्रतिबंधित',
-'nowikiemailtext' => 'हा पà¥\8dरयà¥\8bà¤\95à¥\8dता à¤\85नà¥\8dय पà¥\8dरयà¥\8bà¤\95à¥\8dता à¤\95डà¥\82न à¤\88-मà¥\87ल à¤\98à¥\87à¤\8a à¤\87à¤\9aà¥\8dà¤\9bित नाहà¥\80.',
-'emailnotarget' => 'पà¥\8dरापà¥\8dतà¤\95रà¥\8dता à¤\95रà¥\80ता à¤\85सà¥\8dतितà¥\8dवात नसलà¥\87लà¥\87 à¤\95िà¤\82वा à¤\85वà¥\88ध सदसà¥\8dय',
-'emailtarget' => 'पà¥\8dरापà¥\8dतà¤\95रà¥\8dता पà¥\8dरयà¥\8bà¤\95à¥\8dताà¤\9aà¥\87 नाà¤\82व à¤\9fाà¤\95ा.',
+'nowikiemailtext' => 'या सदसà¥\8dयानà¥\87 à¤\85नà¥\8dय सदसà¥\8dयाà¤\82à¤\95डà¥\82न à¤\88-मà¥\87ल यà¥\87à¤\8a न दà¥\87णà¥\8dयाà¤\9aà¥\87 (à¤\90à¤\9aà¥\8dà¤\9bिà¤\95) निवडलà¥\87 à¤\86हà¥\87.',
+'emailnotarget' => 'पà¥\8dरापà¥\8dतà¤\95रà¥\8dतà¥\8dयाà¤\9aà¥\87 à¤\85सà¥\8dतितà¥\8dवात नसलà¥\87लà¥\87 à¤\95िà¤\82वा à¤\85वà¥\88ध सदसà¥\8dयनाम.',
+'emailtarget' => 'पà¥\8dरापà¥\8dतà¤\95रà¥\8dतà¥\8dयाà¤\9aà¥\87 सदसà¥\8dयनाम à¤\9fाà¤\95ा',
'emailusername' => 'सदस्यनाम:',
'emailusernamesubmit' => 'पाठवा',
-'email-legend' => 'à¤\88मà¥\87ल à¤\85नà¥\8dय सदसà¥\8dयाला पाठवा',
-'emailfrom' => 'प्रेषक',
+'email-legend' => 'à¤\85नà¥\8dय {{SITENAME}} वरà¥\80ल सदसà¥\8dयाला à¤\88मà¥\87ल पाठवा',
+'emailfrom' => 'प्रेषक:',
'emailto' => 'प्रति:',
'emailsubject' => 'विषय:',
'emailmessage' => 'संदेश:',
'emailsend' => 'पाठवा',
-'emailccme' => 'माà¤\9dà¥\8dया सà¤\82दà¥\87शाà¤\9aà¥\80 मला विपतà¥\8dर पà¥\8dरत पाठवा.',
-'emailccsubject' => 'तुमच्या विपत्राची प्रत कडे $1: $2',
+'emailccme' => 'माà¤\9dà¥\8dया सà¤\82दà¥\87शाà¤\9aà¥\80 पà¥\8dरत मला विपतà¥\8dरादà¥\8dवारà¥\87 पाठवा.',
+'emailccsubject' => '$1 ला पाठविलेल्या आपल्या विपत्राची प्रत: $2',
'emailsent' => 'विपत्र पाठवले',
'emailsenttext' => 'तुमचा विपत्र संदेश पाठवण्यात आला आहे.',
-'emailuserfooter' => 'हे विपत्र $1 ने $2 ला {{SITENAME}} वरील "सदस्यास विपत्र पाठवा" वापरुन पाठवले आहे.',
+'emailuserfooter' => '$1 ने $2 ला हे विपत्र, {{SITENAME}} वरील, "सदस्यास विपत्र पाठवा" ही प्रक्रिया वापरुन पाठवले आहे.',
# User Messenger
'usermessage-summary' => 'प्रणाली संदेश देत आहे.',
'watchlistfor2' => '$1 $2 साठी',
'nowatchlist' => 'तुमची पहाऱ्याची सूची रिकामी आहे.',
'watchlistanontext' => 'तुमच्या पहाऱ्याच्या सूचीमधील बाबी पाहण्याकरता किंवा संपादित करण्याकरता, कृपया $1.',
-'watchnologin' => 'पà¥\8dरवà¥\87श à¤\95à¥\87लà¥\87ला नाही',
-'watchnologintext' => 'तà¥\81मà¤\9aà¥\80 पहाऱà¥\8dयाà¤\9aà¥\80 सà¥\82à¤\9aà¥\80 बदलायà¤\9aà¥\80 à¤\85सà¥\87ल तर तà¥\81मà¥\8dहà¥\80 [[Special:UserLogin|पà¥\8dरवà¥\87श à¤\95à¥\87लà¥\87ला]] à¤\85सलाà¤\9a पाहà¥\80à¤\9cà¥\87.',
+'watchnologin' => 'सनà¥\8bà¤\82द-पà¥\8dरवà¥\87शित नाही',
+'watchnologintext' => 'à¤\86पलà¥\80 पहाऱà¥\8dयाà¤\9aà¥\80 सà¥\82à¤\9aà¥\80 बदलवायà¤\9aà¥\80 à¤\85सà¥\87ल तर à¤\86पणास [[Special:UserLogin|सनà¥\8bà¤\82द-पà¥\8dरवà¥\87शित]] à¤\85सावà¥\87 लाà¤\97à¥\87ल.',
'addwatch' => 'पहाऱ्याच्या सूचीमध्ये टाका',
'addedwatchtext' => '"[[:$1]]" हे पान तुमच्या [[Special:Watchlist|\'माझी निरीक्षणसूची\']]मध्ये टाकले आहे. या पानावरील तसेच त्याच्या चर्चा पानावरील भविष्यातील बदल तेथे दाखवले जातील',
'removewatch' => 'पहाऱ्याच्या सूचीतून वगळा',
'watchthispage' => 'या पानावर बदलांसाठी लक्ष ठेवा.',
'unwatch' => 'पहारा काढा',
'unwatchthispage' => 'पहारा काढून टाका',
-'notanarticle' => 'मà¤\9cà¤\95à¥\81र विरहित पान',
+'notanarticle' => 'हà¥\87 à¤\86शयपान नाहà¥\80',
'notvisiblerev' => 'आवृत्ती वगळण्यात आलेली आहे',
'watchlist-details' => 'पहाऱ्याच्या सूचीमधील {{PLURAL:$1|$1 पान|$1 पाने}}, यात चर्चा पाने मोजलेली नाहीत.',
'wlheader-enotif' => 'विपत्र अधिसूचना सुविधा शक्य केली.',
'watchmethod-recent' => 'पहाऱ्यातील पानांकरिता अलीकडील बदलांचा तपास',
'watchmethod-list' => 'अलीकडील बदलांकरिता पहाऱ्यातील पानांचा तपास',
'watchlistcontains' => 'तुमचा $1 {{PLURAL:$1|पानावर|पानांवर}} पहारा आहे.',
-'iteminvalidname' => "'$1'बाबीस समस्या, अमान्य नाव...",
-'wlnote' => "खाली $3, $4 पर्यंतचे गेल्या {{PLURAL:$2| '''१''' तासातील|'''$2''' तासातील}} {{PLURAL:$1|शेवटचा बदल दिला आहे|शेवटाचे '''$1'''बदल दिले आहेत}}.",
+'iteminvalidname' => "'$1'या बाबीसाठी समस्या, अवैध नाव...",
'wlshowlast' => 'मागील $1 तास $2 दिवस $3 पहा',
'watchlist-options' => 'पहाऱ्याच्या सूचीचे पर्याय',
# Displayed when you click the "watch" button and it is in the process of watching
-'watching' => 'पाहताहे...',
+'watching' => 'पहारा दà¥\87त à¤\86हे...',
'unwatching' => 'पहारा काढत आहे...',
'watcherrortext' => '$1 साठीच्या तुमच्या पहाऱ्याच्या सूचीमधील मांडणीत (watchlist settings) बदल करताना त्रुटी आली.',
-'enotif_mailer' => '{{SITENAME}} सूचना विपत्र',
+'enotif_mailer' => '{{SITENAME}} à¤\85धिसà¥\82à¤\9aना विपतà¥\8dर',
'enotif_reset' => 'सर्व पानास भेट दिल्याचे नमूद करा',
'enotif_impersonal_salutation' => '{{SITENAME}} सदस्य',
'enotif_subject_deleted' => '{{SITENAME}} पानाला $1 {{gender:$2|$2}} ने वगळले',
'enotif_body_intro_moved' => '{{SITENAME}} हे $1 या लेखनामाचे पान या $PAGEEDITDATE (या संपादनाच्या तारखेस)$2 ने {{GENDER:$2|हलविले.}} अद्यतन आवृत्तीसाठी कृपया $3 बघा.',
'enotif_body_intro_restored' => '{{SITENAME}} हे $1 या लेखनामाचे पान या $PAGEEDITDATE (या संपादनाच्या तारखेस)$2 ने {{GENDER:$2|पुनर्स्थापित केले.}}अद्यतन आवृत्तीसाठी कृपया $3 बघा.',
'enotif_body_intro_changed' => '{{SITENAME}} हे $1 या लेखनामाचे पान या $PAGEEDITDATE (या संपादनाच्या तारखेस)$2 ने {{GENDER:$2|बदलविले.}} अद्यतन आवृत्तीसाठी कृपया $3 बघा.',
-'enotif_lastvisited' => 'तà¥\81मà¤\9aà¥\8dया शà¥\87वà¤\9fà¤\9aà¥\8dया à¤à¥\87à¤\9fà¥\80नà¤\82तरà¤\9aà¥\87 बदल बà¤\98णयासाठà¥\80 पहा - $1.',
+'enotif_lastvisited' => 'तà¥\81मà¤\9aà¥\8dया शà¥\87वà¤\9fà¤\9aà¥\8dया à¤à¥\87à¤\9fà¥\80नà¤\82तरà¤\9aà¥\87 बदल बà¤\98णà¥\8dयासाठà¥\80 $1 पहा.',
'enotif_lastdiff' => 'हा बदल पहाण्याकरिता $1 पहा.',
-'enotif_anon_editor' => 'à¤\85नामिà¤\95 à¤\89पयà¥\8bà¤\97à¤\95रà¥\8dता $1',
+'enotif_anon_editor' => 'à¤\85नामिà¤\95 सदसà¥\8dय $1',
'enotif_body' => 'प्रिय $WATCHINGUSERNAME,
{{SITENAME}}या लेखनावाचे $PAGETITLE (या मथळ्याचे) पान $PAGEEDITOR ने $PAGEEDITDATE ( या तारखेस) $CHANGEDORCREATED तयार केले किंवा बदलले आहे. सध्याची आवृत्ती पाहण्यासाठी खालील दुव्यावर टिचकी मारा.
'delete-confirm' => '"$1" वगळा',
'delete-legend' => 'वगळा',
'historywarning' => 'सूचना: तुम्ही वगळत असलेल्या पानाला $1 {{PLURAL:$1|आवर्तनाचा|आवर्तनांचा}} इतिहास आहे:',
-'confirmdeletetext' => 'तुम्ही एक लेख त्याच्या सर्व इतिहासासोबत वगळण्याच्या तयारीत आहात.
-कृपया तुम्ही करत असलेली कृती ही मीडियाविकीच्या [[{{MediaWiki:Policy-url}}|नीतीनुसार]] आहे ह्याची खात्री करा. तसेच तुम्ही करित असलेल्या कृतीचे परिणाम कृती करण्यापूर्वी जाणून घ्या.',
+'confirmdeletetext' => 'तुम्ही एक लेखपान त्याच्या सर्व इतिहासासोबत वगळण्याच्या तयारीत आहात.
+कृपया, तुम्ही करीत असलेली कृती ही मीडियाविकीच्या [[{{MediaWiki:Policy-url}}|नीतीनुसार]] आहे ह्याची खात्री करा. तसेच, तुम्ही करीत असलेल्या कृतीचे परिणाम, कृती करण्यापूर्वी जाणून घ्या.',
'actioncomplete' => 'काम पूर्ण',
'actionfailed' => 'कृती अयशस्वी झाली',
'deletedtext' => '"$1" हा लेख वगळला. अलीकडे वगळलेले लेख पाहण्यासाठी $2 पहा.',
** लेखकाची(लेखिकेची) विनंती
** तुटकी पुनर्निर्देशने',
'delete-edit-reasonlist' => 'वगळण्याची कारणे संपादित करा',
-'delete-toobig' => 'या पानाला खूप मोठी इतिहास यादी आहे, तसेच हे पान $1 {{PLURAL:$1|पेक्षा|पेक्षा}}पेक्षा जास्त वेळा बदलण्यात आलेले आहे. अशी पाने वगळणे हे {{SITENAME}} ला धोकादायक ठरू नये म्हणून शक्य केलेले नाही.',
-'delete-warning-toobig' => 'या पानाला खूप मोठी इतिहास यादी आहे, तसेच हे पान $1 {{PLURAL:$1|पेक्षा|पेक्षा}} पेक्षा जास्त वेळा बदलण्यात आलेले आहे.
-अशी पाने वगळणे हे {{SITENAME}} ला धोकादायक ठरू शकते;
-कृपया काळजीपूर्वक हे पान वगळा.',
+'delete-toobig' => 'या पानाला, $1 {{PLURAL:$1|आवृत्ती|आवृत्त्यां}}मुळे तयार झालेला खूप मोठा संपादन इतिहास आहे. {{SITENAME}} वर आकस्मिक होणारी उलथापालथ वाचविण्यासाठी, अश्या पानांचे वगळणे प्रतिबंधित केल्या गेले आहे.',
+'delete-warning-toobig' => 'या पानाला, $1 {{PLURAL:$1|आवृत्ती|आवृत्त्यां}}मुळे तयार झालेला खूप मोठा संपादन इतिहास आहे.त्याचे वगळण्याने {{SITENAME}} वर डाटाबेसच्या क्रियांची उलथापालथ होऊ शकते; सावधगिरीने पुढे जा.',
+'deleting-backlinks-warning' => "'''ईशारा:''' आपण वगळत असणाऱ्या पानास दुसरी पाने जोडलेली किंवा आंतरविन्यासित आहेत.",
# Rollback
'rollback' => 'बदल वेगात माघारी न्या',
'rollback_short' => 'द्रुतमाघार',
'rollbacklink' => 'द्रुतमाघार',
'rollbacklinkcount' => 'उलटवा $1 {{PLURAL:$1|संपादन|संपादने}}',
-'rollbacklinkcount-morethan' => '$1 पेक्षा अधिक उलटवा {{PLURAL:$1|संपादन|संपादने}}',
+'rollbacklinkcount-morethan' => '$1 पेक्षा अधिक {{PLURAL:$1|संपादन|संपादने}} उलटवा',
'rollbackfailed' => 'द्रूतमाघार फसली',
'cantrollback' => 'जुन्या आवृत्तीकडे परतवता येत नाही; शेवटचा संपादक या पानाचा एकमात्र लेखक आहे.',
'alreadyrolled' => '[[User:$2|$2]] ([[User talk:$2|Talk]] [[Special:Contributions/$2|{{int:contribslink}}]])चे शेवटाचे [[:$1]]वे संपादन माघारी परतवता येत नाही; पान आधीच कुणी माघारी परतवले आहे किंवा संपादित केले आहे.
शेवटचे संपादन [[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' => 'लपविलेल्या सदस्याची संपादने उलटवून {{GENDER:$1|[[सदस्य:$1|$1]]}} यांच्या आवृत्तीप्रमाणे पूर्ववत केले.',
+'revertpage-nouser' => 'लपविलेल्या सदस्याची संपादने उलटवून मागील आवृत्तीप्रमाणे पूर्ववत केले{{GENDER:$1|[[सदस्य:$1|$1]]}}',
'rollback-success' => '$1 ने उलटवलेली संपादने;$2 च्या आवृत्तीस परत नेली.',
# Edit tokens
'sessionfailure-title' => 'सत्र त्रुटी',
-'sessionfailure' => 'तुमच्या दाखल सत्रात काही समस्या दिसते;सत्र अपहारणा पासून काळजी घेण्याच्या दृष्टीने ही कृती रद्द केली गेली आहे.कपया आपल्या विचरकाच्या "back" कळीवर टिचकी मारा आणि तुम्ही ज्या पानावरून आला ते पुन्हा चढवा,आणि प्रत प्रयत्न करा.',
+'sessionfailure' => 'तुमच्या दाखल सत्रात काही समस्या दिसते;सत्र अपहारणापासून
+वाचविण्याचे दृष्टीने ही कृती रद्द केल्या गेली आहे.कृपया आपल्या विचरकाच्या "back" कळीवर टिचकी मारा आणि तुम्ही ज्या पानावरून आला ते पुन्हा चढवा,आणि परत प्रयत्न करा.',
# Protect
'protectlogpage' => 'सुरक्षा नोंदी',
'protect-level-sysop' => 'केवळ प्रचालकांना परवानगी आहे',
'protect-summary-cascade' => 'शिडी',
'protect-expiring' => '$1 (UTC) ला संपेल',
-'protect-expiring-local' => '$1 ला समà¥\8dपते',
+'protect-expiring-local' => '$1 ला सà¤\82पते',
'protect-expiry-indefinite' => 'अनंत',
'protect-cascade' => 'या पानात असलेली पाने सुरक्षित करा (सुरक्षा शिडी)',
'protect-cantedit' => 'तुम्ही या पानाची सुरक्षा पातळी बदलू शकत नाही कारण तुम्हाला तसे करण्याची परवानगी नाही.',
'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न्स्थापित करणे शक्य आहेत}}. विदागारातील साठवण ठरावीक कालावधीने स्वच्छ करता येते.',
+'undeletepagetext' => 'à¤\96ालà¥\80ल {{PLURAL:$1|पान वà¤\97ळलà¥\87 à¤\86हà¥\87 तरà¥\80सà¥\81दà¥\8dधा विदाà¤\97ारात à¤\9cतन à¤\86हà¥\87 à¤\86णि पà¥\81नरà¥\8dसà¥\8dथापित à¤\95रणà¥\87 शà¤\95à¥\8dय à¤\86हà¥\87|$1 पानà¥\87 वà¤\97ळलà¥\80 à¤\86हà¥\87त तरà¥\80 सà¥\81दà¥\8dधा विदाà¤\97ारात à¤\9cतन à¤\86हà¥\87त à¤\86णि पà¥\81नर्स्थापित करणे शक्य आहेत}}. विदागारातील साठवण ठरावीक कालावधीने स्वच्छ करता येते.',
'undelete-fieldset-title' => 'आवर्तने पुनर्स्थापित करा',
-'undeleteextrahelp' => "संपूर्ण पान पुनर्स्थापित करण्याकरिता,सारे रकाने रिकामे ठेवा आणि '''''पुनर्स्थापन'''''वर टिचकी मारा. निवडक पुनर्स्थापन करण्याकरिता, ज्या आवर्तनांचे पुनर्स्थापन करावयाचे त्यांचे रकाने निवडा , आणि '''''पुनर्स्थापन'''''वर टिचकी मारा. '''''पुनर्योजन ''''' वर टिचकी मारल्यास सारे रकाने आणि प्रतिक्रिया खिडकी रिकामी होईल.",
+'undeleteextrahelp' => "पानाचा संपूर्ण इतिहास पुनर्स्थापित करण्यासाठी,साऱ्या चौकटपेट्या (चेकबॉक्सेस) रिकाम्या ठेवा
+आणि '''''{{int:undeletebtn}}''''' वर टिचकी मारा. निवडक पुनर्स्थापन करण्याकरिता, ज्या आवर्तनांचे पुनर्स्थापन करावयाचे त्यांचेशी सुसंगत चौकटपेट्या (चेकबॉक्सेस) निवडा , आणि '''''{{int:undeletebtn}}''''' वर टिचकी मारा.",
'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पादित à¤\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र à¤\95à¥\87वळ पà¥\8dरà¤\9aालà¤\95ाà¤\82ना à¤\89पलबà¥\8dध à¤\85सà¥\87ल.',
+'undeletehistorynoadmin' => 'हे पान वगळले गेले आहे.वगळण्याचे कारण खालील आढाव्यात,वगळण्यापूर्वी संपादित करणाऱ्या संपादकांच्या माहिती सोबत,दाखवले आहे. वगळलेल्या आवर्तनांचा नेमका मजकूर केवळ प्रचालकांना उपलब्ध असेल.',
'undelete-revision' => '$1चे($4चे, $5 येथील) आवर्तन $3 ने वगळले:',
-'undeleterevision-missing' => 'अयोग्य अथवा नसापडणारे आवर्तन. तुमचा दुवा कदाचित चुकीचा असेल, किंवा आवर्तन पुनर्स्थापित केले गेले असेल किंवा विदागारातून वगळले असेल.',
+'undeleterevision-missing' => 'अयोग्य अथवा न सापडणारे आवर्तन. तुमचा दुवा कदाचित चुकीचा असेल, किंवा आवर्तन पुनर्स्थापित केले गेले असेल किंवा विदागारातून वगळले गेले असेल.',
'undelete-nodiff' => 'पूर्वीचे कोणतेही आवर्तन आढळले नाही.',
'undeletebtn' => 'वगळण्याची क्रिया रद्द करा',
'undeletelink' => 'पहा/पुनर्स्थापित करा',
'undelete-bad-store-key' => '$1 वेळ दिलेली संचिका आवर्तन पुनर्स्थापित करता येत नाही:संचिका वगळण्यापूर्वी पासून मिळाली नव्हती.',
'undelete-cleanup-error' => 'न वापरलेली विदा संचिका "$1" वगळताना त्रुटी दाखवते.',
'undelete-missing-filearchive' => 'संचिका विदास्मृती ID $1 पुनर्स्थापित करू शकत नाही कारण ती विदागारात उपलब्ध नाही. ती आधीच पुनर्स्थापित केली असण्याची शक्यता सुद्धा असू शकते.',
-'undelete-error' => 'à¤\9cर पाना à¤\95ाढà¥\82न नाहà¥\80 à¤\9fाà¤\95लà¥\87 तर पान शà¥\80रà¥\8dषà¤\95',
+'undelete-error' => 'पान पà¥\81नरà¥\8dसà¥\8dथापनात तà¥\8dरà¥\82à¤\9fà¥\80',
'undelete-error-short' => 'संचिकेचे वगळणे उलटवताना त्रूटी: $1',
'undelete-error-long' => 'संचिकेचे वगळणे उलटवताना त्रुटींचा अडथळा आला:
# Namespace form on various pages
'namespace' => 'नामविश्व:',
'invert' => 'निवडीचा क्रम उलटा करा',
-'tooltip-invert' => 'निवडलेल्या नामविश्वातील (आणि तसे निवडल्यास संबंधित नामविश्वातील) पानांचे बदल अदृष्य करण्या साटी टिचकी मारा',
+'tooltip-invert' => 'निवडलेल्या नामविश्वातील (आणि तसे निवडल्यास संबंधित नामविश्वातील) पानांचे बदल अदृष्य करण्यासाठी टिचकी मारा',
'namespace_association' => 'सहभागी नामविश्वे',
'tooltip-namespace_association' => 'निवडलेल्या नामविश्वासंबधीत विषय अथवा चर्चा नामविश्वसुद्धा आंतर्भूत करण्याकरिता हा बॉक्स टिचकवून चिह्नित करा',
'blanknamespace' => '(मुख्य)',
'whatlinkshere-filters' => 'गाळण्या',
# Block/unblock
-'autoblockid' => '#$1ला स्वयंचलितपणे प्रतिबंधित करा',
+'autoblockid' => 'स्वयंचलितपणे #$1ला प्रतिबंधित करा',
'block' => 'सदस्यास प्रतिबंध करा',
-'unblock' => 'सदस्य सोडवा',
+'unblock' => 'सदस्यप्रतिबंध काढा',
'blockip' => 'हा अंकपत्ता अडवा',
'blockip-legend' => 'सदस्यास प्रतिबंध करा',
'blockiptext' => 'एखाद्या विशिष्ट अंकपत्त्याची किंवा सदस्याची लिहिण्याची क्षमता प्रतिबंधित करण्याकरिता खालील सारणी वापरा.
'ipbwatchuser' => 'या सदस्याच्या सदस्य तसेच चर्चा पानावर पहारा ठेवा',
'ipb-disableusertalk' => 'सदस्यास स्वत:चे चर्चापान संपादण्यापासून प्रतिबंधित करा',
'ipb-change-block' => 'या सेटींग्जसह सदस्यास पुन्हा प्रतिबंधित करा.',
-'ipb-confirm' => 'à¤\85डथाळा सुनिश्चित करा.',
+'ipb-confirm' => 'पà¥\8dरतिबà¤\82ध सुनिश्चित करा.',
'badipaddress' => 'अंकपत्ता बरोबर नाही.',
'blockipsuccesssub' => 'अडवणूक यशस्वी झाली',
'blockipsuccesstext' => '[[Special:Contributions/$1|$1]]ला प्रतिबंधित केले.<br />
'change-blocklink' => 'रोध बदला',
'contribslink' => 'योगदान',
'emaillink' => 'ई-मेल पाठवा.',
-'autoblocker' => 'स्वयंचलितप्रतिबंधन केले गेले कारण तुमचा अंकपत्ता अलीकडे "[[User:$1|$1]]"ने वापरला होता. $1 च्या प्रतिबंधनाकरिता दिलेले कारण: "$2" आहे.',
+'autoblocker' => 'स्वयंचलित प्रतिबंधन केले गेले कारण तुमचा अंकपत्ता अलीकडे "[[User:$1|$1]]"ने वापरला होता. $1 च्या प्रतिबंधनाकरिता दिलेले कारण: "$2" आहे.',
'blocklogpage' => 'रोध नोंदी',
'blocklog-showlog' => 'हा सदस्य पूर्वी प्रतिबंधित अथवा लपविल्या गेला होता.
लपविलेल्या नोंदी संदर्भाकरिता खाली उपलब्ध आहेत.',
'range_block_disabled' => 'प्रचालकांची पल्ला बंधने घालण्याची क्षमता अनुपलब्ध केली आहे.',
'ipb_expiry_invalid' => 'अयोग्य समाप्ती काळ.',
'ipb_expiry_temp' => 'लपविलेले सदस्यनाम प्रतिबंधन कायमस्वरूपी असले पाहिजे.',
-'ipb_hide_invalid' => 'हà¥\87 à¤\96ात दाबनà¥\8dयासाथि à¤\85समरà¥\8dथ: तà¥\87 सà¥\81धà¥\8dदा बदल à¤\95रनà¥\8dयाà¤\9aि सà¤\95तात.',
+'ipb_hide_invalid' => 'हà¥\87 à¤\96ात दाबणà¥\8dयासाठà¥\80 à¤\85समरà¥\8dथ; तà¥\8dयात {{PLURAL:$1|à¤\8fà¤\95 सà¤\82पादन à¤\86हà¥\87|$1 सà¤\82पादनà¥\87 à¤\86हà¥\87त}}.',
'ipb_already_blocked' => '"$1" आधीच अवरूद्ध केलेले आहे.',
'ipb-needreblock' => '$1 आधीच प्रतिबंधित आहे . तुम्हाला त्याची सेटींग्स बदलण्याची इच्छा आहे का ?',
'ipb-otherblocks-header' => '{{PLURAL:$1|दुसरे प्रतिबंधन|इतर प्रतिबंधने}}',
'ipb_cant_unblock' => 'त्रूटी: प्रतिबंधन क्र.$1 मिळाला नाही. त्यावरील प्रतिबंधन कदाचित आधीच उठवले असेल.',
'ipb_blocked_as_range' => 'त्रूटी:अंकपत्ता IP $1 हा प्रत्यक्षपणे प्रतिबंधित केलेला नाही आणि अप्रतिबंधीत करता येत नाही.तो,अर्थात,$2पल्ल्याचा भाग म्हाणून तो प्रतिबंधित केलेला आहे,जो की अप्रतिबंधीत करता येत नाही.',
'ip_range_invalid' => 'अंकपत्ता अयोग्य टप्प्यात.',
-'ip_range_toolarge' => '/$1 पेक्षा मोठ्या Range प्रतिबंधनाची परवानगी नाह् are not allowed.',
-'proxyblocker' => 'प्रातिनिधी(प्रॉक्झी)प्रतिबंधक',
-'proxyblockreason' => 'तुमचा अंकपत्ता प्रतिबंधित केला आहे कारण तो उघड-उघड प्रतिनिधी आहे.कृपया तुमच्या आंतरजाल सेवा दात्यास किंवा तंत्रज्ञास पाचारण संपर्क करा आणि त्यांचे या गंभीर सुरक्षाप्रश्ना कडे लक्ष वेधा.',
+'ip_range_toolarge' => '/$1 पेक्षा मोठ्या रेंज प्रतिबंधनाची परवानगी नाही.',
+'proxyblocker' => 'प्रातिनिधीक(प्रॉक्झी)प्रतिबंधक',
+'proxyblockreason' => 'तुमचा अंकपत्ता प्रतिबंधित केला आहे कारण तो उघड-उघड प्रतिनिधी आहे.कृपया तुमच्या आंतरजाल सेवा दात्यास किंवा तंत्रज्ञास पाचारण संपर्क करा आणि त्यांचे या गंभीर सुरक्षाप्रश्नाकडे लक्ष वेधा.',
'sorbsreason' => '{{SITENAME}}ने वापरलेल्या DNSBL मध्ये तुमच्या अंकपत्त्याची नोंद उघड-उघड प्रतिनिधी म्हणून सूचित केली आहे.',
'sorbs_create_account_reason' => '{{SITENAME}}च्या DNSBLने तुमचा अंकपत्ता उघड-उघड प्रतिनिधी म्हणून सूचित केला आहे.तुम्ही खाते उघडू शकत नाही',
'xffblockreason' => '(X-Forwarded-For header) मधील अंकपत्ता,आपला किंवा आपण वापरत असलेल्या सर्व्हरचा,प्रतिबंधित केल्या गेला आहे.प्रतिबंधित करण्याचे मुळ कारण होते:$1',
-'cant-see-hidden-user' => 'तà¥\81मà¥\8dहà¥\80 पà¥\8dरतिबà¥\8dà¤\82धकरण्याचा प्रयत्न करत असलेले सदस्य खाते आधीपासूनच प्रतिबंधित आणि लपविले गेले आहे.
-तुमच्याकडे सदस्य लपविण्याचे अधिकार नसल्यामुळे , तुम्ही सदस्य प्रतिबंधन पाहू अथवा संपादित करू शकत नाही',
+'cant-see-hidden-user' => 'तà¥\81मà¥\8dहà¥\80 पà¥\8dरतिबà¤\82ध करण्याचा प्रयत्न करत असलेले सदस्य खाते आधीपासूनच प्रतिबंधित आणि लपविले गेले आहे.
+तुमच्याकडे सदस्य लपविण्याचे अधिकार नसल्यामुळे , तुम्ही सदस्य प्रतिबंधन पाहू अथवा संपादित करू शकत नाही.',
'ipbblocked' => 'तुमचे स्वत:चेच खाते प्रतिबंधित असल्यामुळे तुम्ही इतर सदस्यांना प्रतिबंधित किंवा अप्रतिबंधीत करू शकत नाही',
-'ipbnounblockself' => 'तुम्ही स्वतः अप्रतिबंधित करू शकत नाही',
+'ipbnounblockself' => 'तुम्ही स्वतःस अप्रतिबंधित करू शकत नाही',
# Developer tools
'lockdb' => 'विदागारास ताळे ठोका',
'unlockdb' => 'विदागाराचे ताळे उघडा',
'lockdbtext' => 'विदागारास ताळे ठोकल्याने सर्व सदस्यांची संपादन क्षमता, त्यांच्या सदस्य पसंती बदलणे,त्यांच्या पहाऱ्याच्या सूची संपादित करणे,आणि विदेत बदल घडवणाऱ्या इतर गोष्टी संस्थगित होतील.
-à¤\95à¥\83पया तà¥\81मà¥\8dहाला हà¥\87à¤\9a à¤\95रावयाà¤\9aà¥\87 à¤\86हà¥\87 à¤\86णि à¤à¤°à¤£-पà¥\8bषणा नà¤\82तर विदागाराचे ताळे उघडावयाचे आहे हे निश्चित करा.',
+à¤\95à¥\83पया तà¥\81मà¥\8dहाला हà¥\87à¤\9a à¤\95रावयाà¤\9aà¥\87 à¤\86हà¥\87 à¤\86णि à¤\85नà¥\81रà¤\95à¥\8dषणानà¤\82तर (मà¥\87à¤\82à¤\9fà¥\87ननà¥\8dस)विदागाराचे ताळे उघडावयाचे आहे हे निश्चित करा.',
'unlockdbtext' => 'विदागाराचे ताळे उघडल्याने सर्व सदस्यांची संपादन क्षमता, त्यांच्या सदस्य पसंती बदलणे,त्यांच्या पहाऱ्याच्या सूची संपादित करणे,आणि विदेत बदल घडवणाऱ्या इतर गोष्टीची क्षमता पुन्हा उपलब्ध होईल.
कृपया तुम्हाला हेच करावयाचे आहे हे निश्चित करा.',
-'lockconfirm' => 'होय,मला खरेच विदागारास ताळे ठोकायच आहे.',
+'lockconfirm' => 'होय,मला खरेच विदागारास ताळे ठोकायचे आहे.',
'unlockconfirm' => 'होय,मला खरेच विदागाराचे ताळे उघडवयाचे आहे.',
'lockbtn' => 'विदागारास ताळे ठोका',
'unlockbtn' => 'विदागारचे ताळे काढा',
'lockdbsuccesssub' => 'विदागरास ताळे यशस्वी',
'unlockdbsuccesssub' => 'विदागाराचे ताळे काढले',
'lockdbsuccesstext' => 'विदागारास ताळे ठोकण्यात आले आहे.<br />
-तà¥\81मà¤\9aà¥\8dयाà¤\95डà¥\82न à¤à¤°à¤£-पà¥\8bषण पà¥\82रà¥\8dण à¤\9dालà¥\8dया नंतर [[Special:UnlockDB|ताळे उघडण्याचे]] लक्षात ठेवा.',
+तà¥\81मà¤\9aà¥\8dयाà¤\95डà¥\82न à¤\85नà¥\81रà¤\95à¥\8dषण पà¥\82रà¥\8dण à¤\9dालà¥\8dयानंतर [[Special:UnlockDB|ताळे उघडण्याचे]] लक्षात ठेवा.',
'unlockdbsuccesstext' => 'विदागाराचे ताळे उघडण्यात आले आहे.',
'lockfilenotwritable' => 'विदा ताळे संचिका लेखनीय नाही.विदेस ताळे लावण्याकरिता किंवा उघडण्याकरिता, ती आंतरजाल विदादात्याकडून लेखनीय असावयास हवी.',
'databasenotlocked' => 'विदागारास ताळे नही',
'movepagetalktext' => "संबंधित चर्चा पृष्ठ याबरोबर स्थानांतरीत होणार नाही '''जर:'''
* तुम्ही पृष्ठ दुसऱ्या नामविश्वात स्थानांतरीत करत असाल
* या नावाचे चर्चा पान अगोदरच अस्तित्वात असेल तर, किंवा
-* à¤\96ालà¥\80ल à¤\9aà¥\87à¤\95बà¥\89à¤\95à¥\8dस तà¥\81मà¥\8dहà¥\80 à¤\95ाढà¥\82न à¤\9fाà¤\95ला तर.
+* à¤\96ालà¥\80ल à¤\9aà¥\8cà¤\95à¤\9fपà¥\87à¤\9fà¥\80 (à¤\9aà¥\87à¤\95बà¥\89à¤\95à¥\8dस) रिà¤\95ामà¥\80 ठà¥\87वलà¥\80 तर.
या बाबतीत तुम्हाला स्वतःला ही पाने एकत्र करावी लागतील.",
'movearticle' => 'पृष्ठाचे स्थानांतरण',
-'moveuserpage-warning' => "'''सावधान:''' आपण एक सदस्य पान स्थलांतरित करत आहात. कृपया लक्षात घ्या की, फक्त हे पान स्थलांतरित होइल, सदस्य नाम बदलले जणार नाही.",
-'movenologintext' => 'पान सà¥\8dथानाà¤\82तरित à¤\95रणà¥\8dयासाठà¥\80 तà¥\81मà¥\8dहाला [[Special:UserLogin|प्रवेश]] करावा लागेल.',
-'movenotallowed' => '{{SITENAME}}वरà¥\80ल पानà¥\87 सà¥\8dथानाà¤\82तरà¥\80त à¤\95रणà¥\8dयाà¤\9aà¥\80 à¤\86पलà¥\8dयापाशà¥\80 परवानगी नाही.',
-'movenotallowedfile' => 'तà¥\81मà¥\8dहाला दसà¥\8dतावà¥\88à¤\9c स्थानांतरीत करण्याची परवानगी नाही.',
-'cant-move-user-page' => 'तà¥\81मà¥\8dहाला सदसà¥\8dयाà¤\9aà¥\87 दसà¥\8dतावà¥\88à¤\9c सà¥\8dथानाà¤\82तरà¥\80त à¤\95रणà¥\8dयाà¤\9aà¥\80 परवानà¤\97à¥\80 नाहà¥\80.',
+'moveuserpage-warning' => "'''सावधान:''' à¤\86पण à¤\8fà¤\95 सदसà¥\8dय पान सà¥\8dथलाà¤\82तरित à¤\95रत à¤\86हात. à¤\95à¥\83पया लà¤\95à¥\8dषात à¤\98à¥\8dया à¤\95à¥\80, फà¤\95à¥\8dत हà¥\87 पान सà¥\8dथलाà¤\82तरित हà¥\8bà¤\87ल, सदसà¥\8dय नाम बदललà¥\87 à¤\9cाणार नाहà¥\80.",
+'movenologintext' => 'पान सà¥\8dथानाà¤\82तरित à¤\95रणà¥\8dयासाठà¥\80 तà¥\81मà¥\8dहà¥\80 नà¥\8bà¤\82दà¥\80à¤\95à¥\83त सदसà¥\8dय हवà¥\87 व तà¥\81मà¥\8dहाला [[Special:UserLogin|सनà¥\8bà¤\82द-प्रवेश]] करावा लागेल.',
+'movenotallowed' => '{{SITENAME}}वरà¥\80ल पानà¥\87 सà¥\8dथानाà¤\82तरà¥\80त à¤\95रणà¥\8dयाà¤\9aà¥\80 à¤\86पलà¥\8dयास परवानगी नाही.',
+'movenotallowedfile' => 'तà¥\81मà¥\8dहाला सà¤\82à¤\9aिà¤\95ा स्थानांतरीत करण्याची परवानगी नाही.',
+'cant-move-user-page' => 'तà¥\81मà¥\8dहाला सदसà¥\8dयपान सà¥\8dथानाà¤\82तरà¥\80त à¤\95रणà¥\8dयाà¤\9aà¥\80 परवानà¤\97à¥\80 नाहà¥\80.(à¤\89पपानावà¥\8dयतिरिà¤\95à¥\8dत)',
'cant-move-to-user-page' => 'तुम्हाला एखाद्या पानास सदस्य पानांवर (सदस्य उप-पाने सोडून) घेऊन जाण्यास परवानगी नाही.',
'newtitle' => 'नवीन शीर्षकाकडे:',
'move-watch' => 'स्रोत पान व लक्ष पानांवर निगराणी ठेवा',
'pagemovedsub' => 'स्थानांतरण यशस्वी',
'movepage-moved' => '\'\'\'"$1" ला "$2" मथळ्याखाली स्थानांतरीत केले\'\'\'',
'movepage-moved-redirect' => 'एक पुनर्निर्देशन तयार केले आहे.',
-'movepage-moved-noredirect' => 'पà¥\81नà¤\83निरà¥\8dदà¥\87शà¥\80त पान तयार à¤\95à¥\87लà¥\87लà¥\87 नाहà¥\80',
-'articleexists' => 'त्या नावाचे पृष्ठ अगोदरच अस्तित्वात आहे, किंवा तुम्ही निवडलेले
-नाव योग्य नाही आहे.
+'movepage-moved-noredirect' => 'पà¥\81नरà¥\8dनिरà¥\8dदà¥\87शन तयार à¤\95रणà¥\87 दडपणà¥\8dयात à¤\86लà¥\87 à¤\86हà¥\87.',
+'articleexists' => 'त्या नावाचे पृष्ठ अगोदरच अस्तित्वात आहे, किंवा तुम्ही निवडलेले नाव योग्य नाही.
+
कृपया दुसरे नाव शोधा.',
'cantmove-titleprotected' => 'नवे शीर्षक निर्मित करण्या पासून सुरक्षित केलेले असल्यामुळे,तुम्ही या जागी एखादे पान स्थानांतरीत करू शकत नाही.',
-'movetalk' => 'शà¤\95à¥\8dय à¤\85सलà¥\8dयास "à¤\9aरà¥\8dà¤\9aा पà¥\83षà¥\8dठ" स्थानांतरीत करा',
+'movetalk' => 'सà¤\82लà¤\97à¥\8dन "à¤\9aरà¥\8dà¤\9aा पान" स्थानांतरीत करा',
'move-subpages' => 'उपपाने स्थानांतरीत करा (जास्तीतजास्त $1)',
'move-talk-subpages' => 'चर्चा पानाची सर्व उपपाने स्थानांतरीत करा (जास्तीतजास्त $1)',
'movepage-page-exists' => '$1 पान अगोदरच अस्तित्त्वात आहे व त्याच्यावर आपोआप पुनर्लेखन करता येणार नाही.',
'movereason' => 'कारण:',
'revertmove' => 'पूर्वपदास न्या',
'delete_and_move' => 'वगळा आणि स्थानांतरित करा',
-'delete_and_move_text' => '==वगळण्याची आवशकता==
+'delete_and_move_text' => '==वà¤\97ळणà¥\8dयाà¤\9aà¥\80 à¤\86वशà¥\8dयà¤\95ता==
-लक्ष्यपान "[[:$1]]" आधीच अस्तित्वात आहे.स्थानांतराचा मार्ग मोकळाकरण्या करिता तुम्हाला ते वगळावयाचे आहे काय?',
+लक्ष्यपान "[[:$1]]" आधीच अस्तित्वात आहे.स्थानांतराचा मार्ग मोकळा करण्याकरिता तुम्हाला ते वगळावयाचे आहे काय?',
'delete_and_move_confirm' => 'होय, पान वगळा',
'delete_and_move_reason' => '"[[$1]]" पासून वगळून स्थानांतर केले.',
'selfmove' => 'स्रोत आणि लक्ष्य पाने समान आहेत; एखादे पान स्वत:च्याच जागी स्थानांतरीत करता येत नाही.',
'immobile-source-namespace' => 'नामविश्व "$1" मधील पाने हलवता आली नाहीत.',
'immobile-target-namespace' => 'नामविश्व "$1" मध्ये पाने हलवता आली नाहीत.',
-'immobile-target-namespace-iw' => 'पà¥\81ढà¥\87 à¤\9aाल à¤\95रणà¥\8dयासाठà¥\80 हा विà¤\95िà¤\85à¤\82तरà¥\8dà¤\97त दà¥\81वा यà¥\8bà¤\97à¥\8dय लà¤\95à¥\8dष नाहà¥\80',
+'immobile-target-namespace-iw' => 'पान सà¥\8dथानाà¤\82तरासाठà¥\80, हा विà¤\95िà¤\9aा à¤\85à¤\82तरà¥\8dà¤\97त दà¥\81वा यà¥\8bà¤\97à¥\8dय लà¤\95à¥\8dषà¥\8dय नाहà¥\80.',
'immobile-source-page' => 'हे पान हलवता येत नाही',
'immobile-target-page' => 'लक्ष्य मथळा हलवता येत नाही.',
'bad-target-model' => 'तुमचे ईच्छित स्थानक हे वेगळे आशय नमुना (कंटेंट मॉडेल) वापरते. $1 चे $2 मध्ये रुपांतर करु शकत नाही.',
'allmessages-prefix' => 'उपसर्गाने गाळा:',
'allmessages-language' => 'भाषा:',
'allmessages-filter-submit' => 'चला',
+'allmessages-filter-translate' => 'भाषांतर करा',
# Thumbnails
'thumbnail-more' => 'मोठे करा',
'importuploaderrortemp' => 'आयात संचिकेचे चढवणे फसले.एक तात्पुरती धारिका मिळत नाही.',
'import-parse-failure' => 'XML आयात पृथक्करण अयशस्वी',
'import-noarticle' => 'आयात करण्याकरिता पान नाही!',
-'import-nonewrevisions' => 'सारà¥\80 à¤\86वरà¥\8dतनà¥\87 पà¥\82रà¥\8dवà¥\80 à¤\86यात à¤\95à¥\87लà¥\80 हà¥\8bतà¥\80.',
+'import-nonewrevisions' => 'à¤\86वरà¥\8dतनà¥\87 à¤\86यात à¤\95à¥\87लà¥\80 नाहà¥\80त(सरà¥\8dव à¤\8fà¤\95तर पà¥\82रà¥\8dवà¥\80à¤\9a à¤\89पलबà¥\8dध हà¥\8bतà¥\80,à¤\95िà¤\82वा à¤\9aà¥\82à¤\95à¥\80मà¥\81ळà¥\87 निसà¤\9fलà¥\80 हà¥\8bतà¥\80).',
'xml-error-string' => '$1 ओळ $2मध्ये , स्तंभ $3 (बाईट $4): $5',
'import-upload' => 'XML डाटा चढवा',
'import-token-mismatch' => 'अधिवेशन माहितीची हानी.
'tooltip-pt-watchlist' => 'तुम्ही पहारा दिलेल्या पानांची यादी',
'tooltip-pt-mycontris' => 'तुमच्या योगदानांची यादी',
'tooltip-pt-login' => 'आपणांस सदस्यत्व घेण्याची विनंती करण्यात येत आहे. सदस्यत्व घेणे अनिवार्य नाही.',
-'tooltip-pt-anonlogin' => 'आपण खात्यात दाखल व्हावे या करिता प्रोत्साहन देतो, अर्थात ते अत्यावश्यक नाही.',
'tooltip-pt-logout' => 'सनोंद निर्गम',
'tooltip-ca-talk' => 'आशय पानाबद्दलच्या चर्चा',
'tooltip-ca-edit' => 'तुम्ही हे पान बद्लू शकता. कृपया जतन करण्यापूर्वी झलक कळ वापरून पहा.',
'exif-lightsource-255' => 'इतर प्रकाश स्रोत',
# Flash modes
-'exif-flash-fired-0' => 'Flash did not fire
-फ्लॅशदिवा प्रज्ज्वलित झाला नाही',
+'exif-flash-fired-0' => 'फ्लॅशदिवा प्रज्ज्वलित झाला नाही',
'exif-flash-fired-1' => 'क्षणदीप(फ्लेशदिवा)प्रज्ज्वलित झाला',
'exif-flash-return-0' => 'लखलखाट (फ्लॅश) - प्रकाश परावर्तन नोंदणीची सुविधा अनुपलब्ध',
'exif-flash-return-2' => 'लखलखाटाच्या (फ्लॅश) परावर्तन प्रकाशाची नोंद झाली नाही',
'exif-filesource-3' => 'स्थिरचित्र अंकीय छाउ (डिजीटल स्टील कॅमेरा)',
-'exif-scenetype-1' => 'डायरà¥\87à¤\95à¥\8dà¤\9fलà¥\80 छायाचित्रीत चित्र',
+'exif-scenetype-1' => 'थà¥\87à¤\9f छायाचित्रीत चित्र',
'exif-customrendered-0' => 'नियमीत प्रक्रीया',
-'exif-customrendered-1' => 'à¤\86वडà¥\80नà¥\81सार प्रक्रीया',
+'exif-customrendered-1' => 'पारà¤\82पारिà¤\95 प्रक्रीया',
-'exif-exposuremode-0' => 'सà¥\8dवयà¤\82à¤\9aलित à¤\9bायाà¤\82à¤\95न',
+'exif-exposuremode-0' => 'सà¥\8dवयà¤\82à¤\9aलित à¤\85नावरण',
'exif-exposuremode-1' => 'अस्वयंचलित छायांकन',
'exif-exposuremode-2' => 'स्वयंसिद्ध कंस',
'exif-whitebalance-0' => 'ऍटो व्हाईट बॅलेन्स',
'exif-whitebalance-1' => 'मॅन्यूअल व्हाईट बॅलेन्स',
-'exif-scenecapturetype-0' => 'दरà¥\8dà¤\9cा',
+'exif-scenecapturetype-0' => 'दरà¥\8dà¤\9cà¥\87दार',
'exif-scenecapturetype-1' => 'आडवे',
'exif-scenecapturetype-2' => 'उभे',
'exif-scenecapturetype-3' => 'रात्रीचे दृश्य',
'exif-contrast-2' => 'कठीण',
'exif-saturation-0' => 'सर्व साधारण',
-'exif-saturation-1' => 'à¤\95मà¥\80 सà¥\85à¤\9aà¥\82रà¥\87शन',
-'exif-saturation-2' => 'à¤\9cासà¥\8dत सà¥\85à¤\9aà¥\82रà¥\87शन',
+'exif-saturation-1' => 'निमà¥\8dन सà¤\82तà¥\83पà¥\8dति',
+'exif-saturation-2' => 'à¤\89à¤\9aà¥\8dà¤\9a सà¤\82तà¥\83पà¥\8dति',
'exif-sharpness-0' => 'सर्वसाधारण',
'exif-sharpness-1' => 'मृदू',
'exif-gpslongitude-w' => 'पश्चिम रेखांश',
# Pseudotags used for GPSAltitudeRef
-'exif-gpsaltitude-above-sealevel' => 'समुद्रपातळीच्यावर $1 {{PLURAL:$1|मीटर|मीटर}}',
+'exif-gpsaltitude-above-sealevel' => 'समुद्रपातळीच्यावर $1 {{PLURAL:$1|मीटर}}',
'exif-gpsaltitude-below-sealevel' => 'समुद्रपातळीच्याखाली $1 {{PLURAL:$1|मीटर|मीटर}}',
'exif-gpsstatus-a' => 'मोजणी काम चालू आहे',
# action=watch/unwatch
'confirm-watch-button' => 'ठीक आहे',
'confirm-watch-top' => 'हे पान तुमच्या पहारा सूचीमध्ये टाकायचे?',
-'confirm-unwatch-button' => 'ठà¥\80à¤\95',
+'confirm-unwatch-button' => 'ठिà¤\95 à¤\86हà¥\87',
'confirm-unwatch-top' => 'हे पान तुमच्या नित्य पहाण्याच्या सूचीतून काढायचे?',
# Multipage image navigation
'imgmultigo' => 'चला!',
'imgmultigoto' => '$1 पानावर जा',
+# Language selector for translatable SVGs
+'img-lang-default' => '(अविचल भाषा)',
+'img-lang-go' => 'जा',
+
# Table pager
'ascending_abbrev' => 'चढ',
'descending_abbrev' => 'उतर',
'version-parser-function-hooks' => 'पृथकक कार्य अंकुश',
'version-hook-name' => 'अंकुश नाव',
'version-hook-subscribedby' => 'वर्गणीदार',
-'version-version' => '(आवृत्ती $1)',
-'version-license' => 'परवाना',
+'version-version' => '($1)',
+'version-license' => 'मिडियाविकि परवाना',
+'version-ext-license' => 'परवाना',
+'version-ext-colheader-name' => 'विस्तारक',
+'version-ext-colheader-version' => 'आवृत्ती',
+'version-ext-colheader-license' => 'परवाना',
+'version-ext-colheader-description' => 'वर्णन',
+'version-ext-colheader-credits' => 'लेखक',
+'version-license-title' => '$1 साठी परवाना',
+'version-license-not-found' => 'या विस्तारकासाठी विस्तृत परवाना माहिती सापडली नाही.',
'version-poweredby-credits' => "हा विकी '''[https://www.mediawiki.org/ मीडियाविकी]'''द्वारे संचालित आहे, प्रताधिकारित © २००१-$1 $2.",
'version-poweredby-others' => 'इतर',
'version-poweredby-translators' => 'ट्रांसलेटविकि.नेट वरील भाषांतरकार',
# Special:Redirect
'redirect' => 'संचिका,सदस्य किंवा आवृत्ती या ओळखणीनुसार पुनर्निर्देशन',
'redirect-legend' => 'संचिका अथवा पानास पुनर्निर्देशन',
-'redirect-summary' => 'हे विशेष पान एक संचिकेस पुनर्निर्देशित करते(दिलेले संचिकानाम),एक पान(दिलेली आवृत्ती ओळ्खण) किंवा एक सदस्यपान(दिलेला सदस्य अंक).',
+'redirect-summary' => 'हे विशेष पान एक संचिकेस पुनर्निर्देशित करते(दिलेले संचिकानाम),एक पान(दिलेली आवृत्ती किंवा पान ओळखण) किंवा एक सदस्यपान(दिलेला सदस्य अंक).
+वापर:[[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], किंवा [[{{#Special:Redirect}}/user/101]].',
'redirect-submit' => 'जा',
'redirect-lookup' => 'बघा:',
'redirect-value' => 'मुल्य:',
'redirect-user' => 'सदस्यनाम',
+'redirect-page' => 'पृष्ठ-परिचय',
'redirect-revision' => 'पानाची आवृत्ती',
'redirect-file' => 'संचिकानाम',
'redirect-not-exists' => '(योग्य)मुल्य (व्हॅल्यु) सापडले नाही',
# Special:SpecialPages
'specialpages' => 'विशेष पृष्ठे',
+'specialpages-note-top' => 'विवरण',
'specialpages-note' => '* सर्वसाधारण विशेष पृष्ठे.
-* <strong class="mw-specialpagerestricted">प्रतिबंधित विशेष पृष्ठे.</strong>',
+* <span class="mw-specialpagerestricted">प्रतिबंधित विशेष पृष्ठे.</span>',
'specialpages-group-maintenance' => 'व्यवस्थापन अहवाल',
'specialpages-group-other' => 'इतर विशेष पृष्ठे',
'specialpages-group-login' => 'प्रवेश / नवीन सदस्य नोंदणी',
'api-error-overwrite' => 'अस्तित्वात असलेल्या संचिकेवर पुनर्लेखन प्रतिबंधित आहे.',
'api-error-stashfailed' => 'इन्तरिक त्रुटी : विदादाता तात्पुरत्या स्वरूपाच्या संचिका जमा करण्यात अयशस्वी',
'api-error-publishfailed' => 'अंतर्गत त्रूटी:विदादात्यास, या तात्पुरत्या संचिकेच्या प्रकाशनास अपयश आले.',
+'api-error-stasherror' => 'स्टॅचला ही संचिका अपभारणात त्रूटी आली.',
'api-error-timeout' => 'अपेक्षित वेळेत विदागार (server)ने प्रतिसाद दिला नाही.',
'api-error-unclassified' => 'एक अज्ञात चूक उद्भवली.',
'api-error-unknown-code' => 'अज्ञात त्रुटी: "$1"',
'limitreport-cputime-value' => '$1 {{PLURAL:$1|सेकंद}}',
'limitreport-walltime-value' => '$1 {{PLURAL:$1|सेकंद}}',
'limitreport-postexpandincludesize-value' => '$1/$2 {{PLURAL:$2|बाइट|बाइट्स}}',
+'limitreport-templateargumentsize' => 'साचा विधानाचा आकार',
'limitreport-templateargumentsize-value' => '$1/$2 {{PLURAL:$2|बाइट|बाइट्स}}',
# Special:ExpandTemplates
'expandtemplates' => 'साचे वाढवा',
-'expand_templates_intro' => 'हà¥\87 पान à¤\95ाहà¥\80 मà¤\9cà¤\95à¥\82र à¤\98à¥\87à¤\8aन तà¥\8dयातिल सर्व साचे वाढविते. तसेच हे पान पार्सर फंक्शन्स जसे की
+'expand_templates_intro' => 'हà¥\87 पान à¤\95ाहà¥\80 मà¤\9cà¤\95à¥\82र à¤\98à¥\87à¤\8aन à¤\86वरà¥\8dतà¥\80 पदà¥\8dधतà¥\80नà¥\87 तà¥\8dयातà¥\80ल सर्व साचे वाढविते. तसेच हे पान पार्सर फंक्शन्स जसे की
<nowiki>{{</nowiki>#language:...}}, व बदलणार्या किमती (variables) जसे की
-<nowiki>{{</nowiki>CURRENTDAY}}—म्हणजेच दोन ब्रेसेसमधील सर्व मजकूर वाढविते.
-मीडियाविकिमधून पार्सर स्टेज मागवून हे केले जाते.',
+<nowiki>{{</nowiki>CURRENTDAY}}—म्हणजेच दोन ब्रेसेसमधील बरेच काही वाढविते.',
'expand_templates_title' => '{{FULLPAGENAME}} वगैरे करीता, कन्टेक्स्ट शीर्षक:',
'expand_templates_input' => 'इनपुट मजकूर:',
'expand_templates_output' => 'निकाल',
'expand_templates_generate_xml' => 'XML चा पार्स (parse) वृक्ष दाखवा',
'expand_templates_preview' => 'झलक',
+# Unknown messages
+'uploadinvalidxml' => 'अपभारीत संचिकेतील XML पार्स करता आले नाही.',
);
* @author Kurniasan
* @author Meno25
* @author Putera Luqman Tunku Andre
+ * @author SNN95
* @author Urhixidur
* @author Yosri
* @author Zamwan
$messages = array(
# User preference toggles
-'tog-underline' => 'Gariskan pautan:',
-'tog-justify' => 'Laraskan perenggan',
+'tog-underline' => 'Garis bawah pautan:',
'tog-hideminor' => 'Sembunyikan suntingan kecil dalam laman perubahan terkini',
'tog-hidepatrolled' => 'Sorokkan suntingan yang telah dironda daripada senarai perubahan terkini',
'tog-newpageshidepatrolled' => 'Sorokkan laman yang telah dironda daripada senarai laman baru',
'tog-numberheadings' => 'Nomborkan tajuk secara automatik',
'tog-showtoolbar' => 'Tunjukkan palang sunting (perlukan JavaScript)',
'tog-editondblclick' => 'Dwiklik untuk sunting laman (JavaScript)',
-'tog-editsection' => 'Bolehkan penyuntingan bahagian melalui pautan [sunting]',
'tog-editsectiononrightclick' => 'Bolehkan penyuntingan bahagian dengan mengklik kanan pada tajuk bahagian',
-'tog-showtoc' => 'Tunjukkan isi kandungan (bagi rencana yang melebihi 3 tajuk)',
'tog-rememberpassword' => 'Ingat log masuk saya di pelayar ini (tidak melebihi $1 {{PLURAL:$1|hari|hari}})',
'tog-watchcreations' => 'Tambahkan laman yang saya buat dan fail yang saya muat naik ke dalam senarai pantau',
'tog-watchdefault' => 'Tambahkan laman dan fail yang saya sunting ke dalam senarai pantau',
'youhavenewmessages' => 'Anda mempunyai $1 ($2).',
'youhavenewmessagesfromusers' => 'Anda menerima $1 daripada {{PLURAL:$3|seorang|$3 orang}} pengguna lain ($2).',
'youhavenewmessagesmanyusers' => 'Anda menerima $1 daripada ramai pengguna ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|pesanan|pesanan-pesanan}} baru',
-'newmessagesdifflinkplural' => '{{PLURAL:$1|perubahan|perubahan-perubahan}} terkini',
+'newmessageslinkplural' => '{{PLURAL:$1|satu pesanan|999=beberapa pesanan}} baru',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|perubahan|999=beberapa perubahan}} terkini',
'youhavenewmessagesmulti' => 'Anda telah menerima pesanan baru pada $1',
'editsection' => 'sunting',
'editold' => 'sunting',
'invalidtitle-knownnamespace' => 'Tajuk tidak sah dengan ruang nama "$2" dan teks "$3"',
'invalidtitle-unknownnamespace' => 'Tajuk tidak sah dengan nombor ruang nama tidak dikenali $1 dan teks "$2"',
'exception-nologin' => 'Belum log masuk',
-'exception-nologin-text' => 'Halaman atau tindakan ini memerlukan anda untuk log masuk ke dalam wiki ini.',
+'exception-nologin-text' => 'Sila [[Special:Userlogin|log masuk]] untuk dapat mengakses halaman atau tindakan ini.',
+'exception-nologin-text-manual' => 'Sila $1 untuk dapat mengakses halaman atau tindakan ini.',
# Virus scanner
'virus-badscanner' => "Konfigurasi rosak: pengimbas virus yang tidak diketahui: ''$1''",
'gotaccount' => "Sudah mempunyai akaun? '''$1'''.",
'gotaccountlink' => 'Log masuk',
'userlogin-resetlink' => 'Lupa nama pengguna/kata laluan anda?',
-'userlogin-resetpassword-link' => 'Reset kata laluan anda',
+'userlogin-resetpassword-link' => 'Lupa kata laluan anda?',
'helplogin-url' => 'Help:Log masuk',
'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Bantuan untuk log masuk]]',
+'userlogin-loggedin' => 'Anda sudah log masuk sebagai {{GENDER:$1|$1}}. Gunakan borang di bawah untuk log masuk sebagai pengguna lain.',
+'userlogin-createanother' => 'Buka satu lagi akaun',
'createacct-join' => 'Isikan keterangan anda di bawah.',
'createacct-another-join' => 'Masukkan maklumat akaun baru di bawah.',
'createacct-emailrequired' => 'Alamat e-mel',
Sila log masuk semula setelah anda menerima e-mel tersebut.',
'blocked-mailpassword' => 'Alamat IP anda telah disekat daripada sebarang penyuntingan, oleh itu, untuk
mengelak penyalahgunaan, anda tidak dibenarkan menggunakan ciri pemulihan kata laluan.',
-'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.',
+'eauthentsent' => 'Sepucuk e-mel pengesahan telah dikirim kepada alamat e-mel yang dinyatakan.
+Sebelum e-mel lain boleh dikirim kepada alamat tersebut, anda perlu mematuhi arahan-arahan pada e-mel pengesahan tersebut untuk mengesahkan bahawa alamat tersebut benar-benar kepunyaan anda.',
'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.',
'emailauthenticated' => 'Alamat e-mel anda telah disahkan pada $2, $3.',
-'emailnotauthenticated' => 'Alamat e-mel anda belum disahkan. Oleh itu,
-e-mel bagi ciri-ciri berikut tidak boleh dikirim.',
+'emailnotauthenticated' => 'Alamat e-mel anda belum disahkan. Oleh itu, e-mel tidak boleh dikirim bagi ciri-ciri berikut.',
'noemailprefs' => 'Anda perlu menetapkan alamat e-mel terlebih dahulu untuk menggunakan ciri-ciri ini.',
'emailconfirmlink' => 'Sahkan alamat e-mel anda.',
'invalidemailaddress' => 'Alamat e-mel tersebut tidak boleh diterima kerana ia tidak sah. Sila masukkan alamat e-mel yang betul atau kosongkan sahaja ruangan tersebut.',
# Special:PasswordReset
'passwordreset' => 'Set semula kata laluan',
'passwordreset-text-one' => 'Lengkapkan borang ini untuk mengeset semula kata laluan anda.',
-'passwordreset-text-many' => '{{PLURAL:$1|Isi salah satu ruangan untuk mengeset semula kata laluan anda.}}',
+'passwordreset-text-many' => '{{PLURAL:$1|Isi salah satu ruangan berikut untuk menerima kata laluan sementara melalui e-mel.}}',
'passwordreset-legend' => 'Set semula kata laluan',
'passwordreset-disabled' => 'Ciri set semula kata laluan telah dimatikan di wiki ini.',
'passwordreset-emaildisabled' => 'Ciri-ciri e-mel telah dipadamkan di wiki ini.',
'content-not-allowed-here' => 'Kandungan "$1" tidak dibenarkan di halaman [[$2]]',
'editwarning-warning' => 'Meninggalkan laman ini mungkin akan menyebabkan sebarang perubahan yang telah anda lakukan hilang.
Jika anda sudah log masuk, anda boleh melumpuhkan amaran ini di bahagian "Menyunting" dalam keutamaan anda.',
+'editpage-notsupportedcontentformat-title' => 'Format kandungan tidak disokong',
+'editpage-notsupportedcontentformat-text' => 'Format kandungan $1 tidak disokong oleh model kandungan $2.',
# Content models
'content-model-wikitext' => 'wikiteks',
'cantcreateaccounttitle' => 'Akaun tidak dapat dibuka',
'cantcreateaccount-text' => "Pembukaan akaun daripada alamat IP ini (<b>$1</b>) telah disekat oleh [[User:$3|$3]].
+Sebab yang diberikan oleh $3 ialah ''$2''",
+'cantcreateaccount-range-text' => "Pembukaan akaun dari alamat-alamat IP dalam julat '''$1''', termasuk alamat IP anda ('''$4'''), telah disekat oleh [[User:$3|$3]].
+
Sebab yang diberikan oleh $3 ialah ''$2''",
# History pages
'revdelete-text' => "'''Semakan dan peristiwa yang dihapuskan akan tetap muncul dalam sejarah laman dan log, tetapi kandungannya tidak boleh diakses awam.'''
Pentadbir {{SITENAME}} boleh melihat kandungan tersebut dan menyahhapuskannya semula melalui laman ini melainkan mempunyai batasan.",
'revdelete-confirm' => 'Sila sahkan bahawa anda bertujuan melakukan ini, bahawa anda faham akibatnya, dan anda melakukannya menurut [[{{MediaWiki:Policy-url}}| polisi]].',
-'revdelete-suppress-text' => "Pembatasan ini '''hanya''' untuk digunakan dalam kes-kes berikut:
-* Maklumat peribadi tidak sesuai
+'revdelete-suppress-text' => "Sekatan seharusnya digunakan '''hanya''' untuk kes-kes berikut:
+* maklumat yang mungkin berunsur fitnah
+* maklumat peribadi tidak sesuai
*: ''alamat rumah dan nombor telefon, nombor keselamatan sosial, dsbg.''",
'revdelete-legend' => 'Tetapkan batasan:',
-'revdelete-hide-text' => 'Sembunyikan teks semakan',
+'revdelete-hide-text' => 'Teks semakan',
'revdelete-hide-image' => 'Sembunyikan kandungan fail',
'revdelete-hide-name' => 'Sembunyikan tindakan dan sasaran',
-'revdelete-hide-comment' => 'Sembunyikan komen suntingan',
-'revdelete-hide-user' => 'Sembunyikan nama pengguna/IP penyunting',
+'revdelete-hide-comment' => 'Ringkasan suntingan',
+'revdelete-hide-user' => 'Nama pengguna/IP penyunting',
'revdelete-hide-restricted' => 'Sekat data daripada penyelia dan pengguna lain',
'revdelete-radio-same' => '(jangan tukar)',
-'revdelete-radio-set' => 'Ya',
-'revdelete-radio-unset' => 'Tidak',
+'revdelete-radio-set' => 'Tersembunyi',
+'revdelete-radio-unset' => 'Kelihatan',
'revdelete-suppress' => 'Sekat data daripada semua pengguna, termasuk penyelia',
'revdelete-unsuppress' => 'Buang batasan pada semakan yang dipulihkan',
'revdelete-log' => 'Sebab:',
'showhideselectedversions' => 'Tunjukkan/sorokkan versi yang dipilih',
'editundo' => 'batal',
'diff-empty' => '(Tiada perbezaan)',
-'diff-multi' => '($1 {{PLURAL:$1|semakan pertengahan|semakan pertengahan}} oleh $2 {{PLURAL:$2|pengguna|pengguna}} tidak dipaparkan)',
'diff-multi-manyusers' => '($1 {{PLURAL:$1|semakan pertengahan|semakan pertengahan}} oleh lebih daripada $2 {{PLURAL:$2|pengguna|pengguna}} tidak dipaparkan)',
'difference-missing-revision' => '{{PLURAL:$2|Satu semakan|$2 semakan}} bagi perbezaan ini ($1) tidak ditemui.
'search-result-score' => 'Kaitan: $1%',
'search-redirect' => '(pelencongan $1)',
'search-section' => '(bahagian $1)',
+'search-file-match' => '(sepadan dengan kandungan fail)',
'search-suggest' => 'Maksud anda, $1?',
'search-interwiki-caption' => 'Projek-projek lain',
'search-interwiki-default' => 'Keputusan daripada $1:',
'rows' => 'Baris:',
'columns' => 'Lajur:',
'searchresultshead' => 'Cari',
-'resultsperpage' => 'Jumlah padanan bagi setiap halaman:',
'stub-threshold' => 'Ambang bagi pemformatan <a href="#" class="stub">pautan ke rencana ringkas</a> (bait):',
'stub-threshold-disabled' => 'Dimatikan',
'recentchangesdays' => 'Bilangan hari dalam perubahan terkini:',
'recentchanges-label-minor' => 'Ini ialah suntingan kecil',
'recentchanges-label-bot' => 'Suntingan ini dilakukan oleh bot',
'recentchanges-label-unpatrolled' => 'Suntingan ini belum dirondai',
-'recentchanges-legend-newpage' => '$1 - laman baru',
+'recentchanges-label-plusminus' => 'Saiz halaman telah berubah sebanyak jumlah bait ini',
+'recentchanges-legend-heading' => "'''Petunjuk:'''",
+'recentchanges-legend-newpage' => '(lihat juga [[Special:NewPages|senarai halaman baru]])',
'rcnotefrom' => 'Yang berikut ialah semua perubahan sejak <b>$2</b> (sehingga <b>$1</b>).',
'rclistfrom' => 'Papar perubahan sejak $1',
'rcshowhideminor' => '$1 suntingan kecil',
'rcshowhidebots' => '$1 bot',
-'rcshowhideliu' => '$1 pengguna log masuk',
+'rcshowhideliu' => '$1 pengguna berdaftar',
'rcshowhideanons' => '$1 pengguna tanpa nama',
'rcshowhidepatr' => '$1 suntingan dirondai',
'rcshowhidemine' => '$1 suntingan saya',
'fileexists-shared-forbidden' => 'Sebuah fail dengan nama ini telah pun wujud dalam gedung fail kongsi. Jika anda masih mahu memuat naik fail ini, sila kembali ke borang muat naik dan gunakan nama lain. [[File:$1|thumb|center|$1]]',
'file-exists-duplicate' => 'Fail ini adalah salinan bagi {{PLURAL:$1|fail|fail-fail}} berikut:',
'file-deleted-duplicate' => 'Sebuah fail yang serupa dengan fail ini ([[:$1]]) telah pun dihapuskan sebelum ini. Anda seharusnya memeriksa sejarah penghapusan fail itu terlebih dahulu sebelum memuat naiknya sekali lagi.',
+'file-deleted-duplicate-notitle' => 'Satu fail yang seiras dengan fail ini telah dihapuskan dahulu, maka judulnya telah disekat. Anda harus meminta sesiapa yang boleh melihat data fail yang disekat untuk meneliti situasinya sebelum cuba memuat naiknya semula.',
'uploadwarning' => 'Amaran muat naik',
'uploadwarning-text' => 'Sila ubah keterangan fail di bawah dan cuba lagi.',
'savefile' => 'Simpan fail',
'protectedpages' => 'Laman dilindungi',
'protectedpages-indef' => 'Perlindungan tanpa had sahaja',
'protectedpages-cascade' => 'Perlindungan separa sahaja',
+'protectedpages-noredirect' => 'Sorokkan lencongan',
'protectedpagesempty' => 'Tiada laman yang dilindungi dengan kriteria ini.',
'protectedtitles' => 'Tajuk dilindungi',
'protectedtitlesempty' => 'Tiada tajuk yang dilindungi yang sepadan dengan kriteria yang diberikan.',
'watchmethod-list' => 'menyemak suntingan terkini pada laman-laman yang dipantau',
'watchlistcontains' => 'Terdapat $1 laman dalam senarai pantau anda.',
'iteminvalidname' => "Terdapat masalah dengan item '$1', nama tidak sah...",
-'wlnote' => "Berikut ialah {{PLURAL:$1|perubahan|'''$1''' perubahan}} yang terkini dalam {{PLURAL:$2|sejam|'''$2''' jam}} yang lalu, tepat pada $3, $4.",
'wlshowlast' => 'Tunjukkan $1 jam / $2 hari yang lalu / $3.',
'watchlist-options' => 'Pilihan senarai pantau',
mel: $PAGEEDITOR_EMAIL
wiki: $PAGEEDITOR_WIKI
-Tiada lagi pemberitahuan lanjut sekiranya terdapat suntingan selanjutnya melainkan anda mengunjungi halaman berkenaan. Anda juga boleh menetapkan semula tanda-tanda pemberitahuan untuk kesemua halaman dalam senarai pantau anda.
+Tiada lagi pemberitahuan lanjut sekiranya terdapat kegiatan selanjutnya melainkan anda mengunjungi halaman berkenaan apabila log masuk. Anda juga boleh menetapkan semula tanda-tanda pemberitahuan untuk kesemua halaman dalam senarai pantau anda.
- Sistem pemberitahuan {{SITENAME}} yang mesra
+Sistem pemberitahuan {{SITENAME}} yang mesra
--
Untuk mengubah tetapan pemberitahuan melalui e-mel anda, kunjungi
'deleteotherreason' => 'Sebab lain/tambahan:',
'deletereasonotherlist' => 'Sebab lain',
'deletereason-dropdown' => '* Sebab-sebab lazim
-** Permintaan pengarang
+** Spam
+** Vandalisme
** Melanggar hak cipta
-** Vandalisme',
+** Permintaan pengarang
+** Lencongan terputus',
'delete-edit-reasonlist' => 'Ubah sebab-sebab hapus',
'delete-toobig' => 'Laman ini mempunyai sejarah yang besar, iaitu melebihi $1 jumlah semakan. Oleh itu, laman ini dilindungi daripada dihapuskan untuk mengelak kerosakan di {{SITENAME}} yang tidak disengajakan.',
'delete-warning-toobig' => 'Laman ini mempunyai sejarah yang besar, iaitu melebihi $1 jumlah semakan. Menghapuskannya boleh mengganggu perjalanan pangkalan data {{SITENAME}}. Sila berhati-hati.',
+'deleting-backlinks-warning' => "'''Amaran:''' Terdapat halaman-halaman lain yang berpaut atau bertransklusi dengan halaman yang hendak anda hapus itu.",
# Rollback
'rollback' => 'Undurkan suntingan.',
<br />Sila lihat [[Special:BlockList|senarai sekatan]] untuk menyemak sekatan.',
'ipb-blockingself' => 'Anda akan menyekat diri sendiri! Pastikah anda mahu berbuat demikian?',
'ipb-confirmhideuser' => 'Anda akan menyekat seorang pengguna yang menghidupkan "sorokkan pengguna". Ini akan menindaskan nama pengguna itu di semua senarai dan entri log. Pastikah anda mahu berbuat demikian?',
+'ipb-confirmaction' => 'Jika anda benar-benar ingin melakukannya, sila tanda ruangan "{{int:ipb-confirm}}" di bawah.',
'ipb-edit-dropdown' => 'Sunting sebab sekatan',
'ipb-unblock-addr' => 'Nyahsekat $1',
'ipb-unblock' => 'Nyahsekat nama pengguna atau alamat IP',
'range_block_disabled' => 'Kebolehan penyelia untuk membuat sekatan julat dimatikan.',
'ipb_expiry_invalid' => 'Waktu tamat tidak sah.',
'ipb_expiry_temp' => 'Sekatan nama pengguna terselindung sepatutnya kekal.',
-'ipb_hide_invalid' => 'Tidak dapat menahan akaun ini; ia mungkin mempunyai terlalu banyak suntingan.',
+'ipb_hide_invalid' => 'Akaun ini tidak dapat disekat kerana mempunyai lebih daripada $1 suntingan.',
'ipb_already_blocked' => '"$1" sudah disekat',
'ipb-needreblock' => '$1 telah pun disekat Adakah anda mahu menukar tetapan sekatan pengguna ini?',
'ipb-otherblocks-header' => '{{PLURAL:$1|Sekatan|Sekatan-sekatan}} lain',
'tooltip-pt-watchlist' => 'Senarai laman yang anda pantau',
'tooltip-pt-mycontris' => 'Senarai sumbangan anda',
'tooltip-pt-login' => 'Walaupun tidak wajib, anda digalakkan supaya log masuk.',
-'tooltip-pt-anonlogin' => 'Walaupun tidak wajib, anda digalakkan supaya log masuk.',
'tooltip-pt-logout' => 'Log keluar',
'tooltip-ca-talk' => 'Perbincangan mengenai laman kandungan',
'tooltip-ca-edit' => "Anda boleh menyunting laman ini. Sila tekan butang 'pralihat' terlebih dahulu sebelum menyimpan.",
'spam_reverting' => 'Membalikkan kepada versi terakhir yang tidak mengandungi pautan ke $1',
'spam_blanking' => 'Mengosongkan semua semakan yang mengandungi pautan ke $1',
'spam_deleting' => 'Menghapuskan semua semakan yang mengandungi pautan ke $1',
-'simpleantispam-label' => "Pemeriksaan anti-spam. '''JANGAN''' isi ruangan ini!",
+'simpleantispam-label' => "Pemeriksaan anti-spam.
+'''JANGAN''' isi ruangan ini!",
# Info page
'pageinfo-title' => 'Maklumat untuk "$1"',
'pageinfo-length' => 'Kepanjangan halaman (bait)',
'pageinfo-article-id' => 'ID halaman',
'pageinfo-language' => 'Bahasa isi kandungan halaman',
+'pageinfo-content-model' => 'Model kandungan halaman',
'pageinfo-robot-policy' => 'Indeks oleh robot',
'pageinfo-robot-index' => 'Dibenarkan',
'pageinfo-robot-noindex' => 'Tidak dibenarkan',
# Language selector for translatable SVGs
'img-lang-default' => '(bahasa azali)',
+'img-lang-info' => 'Paparkan gambar ini dalam $1. $2',
+'img-lang-go' => 'Jalan',
# Table pager
'ascending_abbrev' => 'menaik',
'version-hook-name' => 'Nama penyangkuk',
'version-hook-subscribedby' => 'Dilanggan oleh',
'version-version' => '(Versi $1)',
-'version-license' => 'Lesen',
+'version-license' => 'Lesen MediaWiki',
+'version-ext-license' => 'Lesen',
+'version-ext-colheader-name' => 'Sambungan',
+'version-ext-colheader-version' => 'Versi',
+'version-ext-colheader-license' => 'Lesen',
+'version-ext-colheader-description' => 'Keterangan',
+'version-ext-colheader-credits' => 'Pengarang',
+'version-license-title' => 'Lesen untuk $1',
+'version-license-not-found' => 'Tidak terdapat maklumat lesen yang terperinci untuk sambungan ini.',
+'version-credits-title' => 'Kredit untuk$1',
+'version-credits-not-found' => 'Tidak terdapat maklumat penghargaan yang terperinci untuk sambungan ini.',
'version-poweredby-credits' => "Wiki ini dikuasakan oleh '''[https://www.mediawiki.org/ MediaWiki]''', hak cipta © 2001-$1 $2.",
'version-poweredby-others' => 'penyumbang-penyumbang lain',
'version-poweredby-translators' => 'para penterjemah translatewiki.net',
'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath Laluan skrip]',
# Special:Redirect
-'redirect' => 'Lencongkan mengikut fail, ID pengguna atau ID semakan',
+'redirect' => 'Lencongkan mengikut ID fail, pengguna, halaman atau semakan',
'redirect-legend' => 'Lencongkan ke fail atau halaman',
-'redirect-summary' => 'Halaman khas ini melencong kepada fail (dengan nama fail), halaman (dengan ID semakan) atau halaman pengguna (dengan ID pengguna berangka).',
+'redirect-summary' => 'Halaman khas ini melencong kepada fail (dengan nama fail), halaman (dengan ID semakan atau ID halaman) atau halaman pengguna (dengan ID pengguna berangka). Penggunaan: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], atau [[{{#Special:Redirect}}/user/101]].',
'redirect-submit' => 'Pergi',
'redirect-lookup' => 'Cari:',
'redirect-value' => 'Nilai:',
'redirect-user' => 'ID Pengguna',
+'redirect-page' => 'ID halaman',
'redirect-revision' => 'Semakan halaman',
'redirect-file' => 'Nama fail',
'redirect-not-exists' => 'Nilai tidak dijumpai',
# Special:SpecialPages
'specialpages' => 'Laman khas',
+'specialpages-note-top' => 'Petunjuk',
'specialpages-note' => '* Laman khas biasa.
-* <span class="mw-specialpagerestricted">Laman khas terhad.</span>
-* <span class="mw-specialpagecached">Laman khas tercache (mungkin lapuk).</span>',
+* <span class="mw-specialpagerestricted">Laman khas terhad.</span>',
'specialpages-group-maintenance' => 'Laporan penyenggaraan',
'specialpages-group-other' => 'Laman khas lain',
'specialpages-group-login' => 'Log masuk / buka akaun',
'tags-tag' => 'Nama label',
'tags-display-header' => 'Rupa dalam senarai perubahan',
'tags-description-header' => 'Keterangan makna',
+'tags-active-header' => 'Aktif?',
'tags-hitcount-header' => 'Perubahan',
+'tags-active-yes' => 'Ya',
+'tags-active-no' => 'Tidak',
'tags-edit' => 'sunting',
'tags-hitcount' => '$1 perubahan',
'api-error-overwrite' => 'Menulis ganti fail yang telah wujud adalah tidak dibenarkan.',
'api-error-stashfailed' => 'Ralat dalaman: pelayan tidak dapat menyimpan fail sementara.',
'api-error-publishfailed' => 'Ralat dalaman: Pelayan tidak dapat menerbitkan fail sementara.',
+'api-error-stasherror' => 'Terdapat ralat ketika menyimpan fail yang dimuat naik.',
'api-error-timeout' => 'Pelayan tidak bergerak balas dalam tempoh yang diharapkan.',
'api-error-unclassified' => 'Berlakunya ralat yang tidak diketahui',
'api-error-unknown-code' => 'Ralat tidak diketahui: "$1"',
'expand_templates_input' => 'Teks input:',
'expand_templates_output' => 'Hasil',
'expand_templates_xml_output' => 'Output XML',
+'expand_templates_html_output' => 'Output HTML mentah',
'expand_templates_ok' => 'OK',
'expand_templates_remove_comments' => 'Buang ulasan',
'expand_templates_remove_nowiki' => 'Sekat tag <nowiki> dalam hasil',
'expand_templates_generate_xml' => 'Papar pepohon hurai XML',
+'expand_templates_generate_rawhtml' => 'Paparkan HTML mentah',
'expand_templates_preview' => 'Pralihat',
+# Unknown messages
+'uploadinvalidxml' => 'XML dalam fail yang dimuat naik ini tidak dapat dihuraikan.',
);
$messages = array(
# User preference toggles
'tog-underline' => 'Ħoloq sottolinjati:',
-'tog-justify' => 'Iġġustifika l-paragrafi',
'tog-hideminor' => 'Aħbi l-modifiki minuri fit-tibdil riċenti',
'tog-hidepatrolled' => 'Aħbi l-modifiki verifikati fit-tibdil riċenti',
'tog-newpageshidepatrolled' => 'Aħbi l-paġni verifikati mil-lista tal-paġni l-ġodda',
'tog-numberheadings' => 'Numerazzjoni awtomatika tat-titli tas-sezzjonijiet',
'tog-showtoolbar' => 'Uri l-kolonna tal-għodda għall-immodifikar (bżonn tal-JavaScript)',
'tog-editondblclick' => "Immodifika l-paġni permezz ta' klikk doppju (bżonn tal-JavaScript)",
-'tog-editsection' => 'L-immodifikar tas-sezzjonijiet permezz tal-ħolqa [editja]',
'tog-editsectiononrightclick' => "L-immodifikar ta' sezzjonijiet bi klikk lemini fuq it-titli tas-sezzjonijiet (bżonn tal-JavaScript)",
-'tog-showtoc' => "Uri l-werrej (għal paġni b'iktar minn 3 sezzjonijiet)",
'tog-rememberpassword' => "Ftakar il-login tiegħi fuq dan il-browżer (għal massimu ta' {{PLURAL:$1|ġurnata|$1 ġurnata}})",
'tog-watchcreations' => "Żid il-paġni li noħloq u l-fajls li ntella' fil-lista ta' osservazzjoni tiegħi",
'tog-watchdefault' => "Żid il-paġni u l-fajls li nimmodifika fil-lista ta' osservazzjoni personali",
'compareselectedversions' => 'Qabbel il-verżjonijiet magħżula',
'showhideselectedversions' => 'Uri/aħbi reviżjonijiet magħżula',
'editundo' => 'ħassar',
-'diff-multi' => '(Mhux qed {{PLURAL:$1|tintwera reviżjoni intermedja|jintwerew $1 reviżjonijit intermedji}} minn {{PLURAL:$2|utent|$2 utenti}})',
'diff-multi-manyusers' => '(Mhux qed {{PLURAL:$1|tintwera reviżjoni intermedja|jintwerew $1 reviżjonijit intermedji}} mingħand iktar minn $2 {{PLURAL:$2|utent|$2 utenti}})',
# Search results
'rows' => 'Fillieri:',
'columns' => 'Kolonni:',
'searchresultshead' => 'Fittex',
-'resultsperpage' => "Numru ta' riżultati għal kull paġna:",
'stub-threshold' => 'Valur minimu għall-<a href="#" class="stub">ħoloq għall-abozzi</a>, f\'bytes:',
'stub-threshold-disabled' => 'Diżattivat',
'recentchangesdays' => "Numru ta' ġranet li għandhom jintwerew fit-tibdil riċenti:",
'recentchanges' => 'Tibdil riċenti',
'recentchanges-legend' => 'Opzjonijiet tat-tibdil riċenti',
'recentchanges-summary' => 'Din il-paġna turi l-modifiki l-aktar riċenti għal kontenut tas-sit.',
+'recentchanges-noresult' => 'L-ebda bidla ma saret matul il-perjodu mogħti li tissodisfa dawn il-kriterji.',
'recentchanges-feed-description' => "Dan il-feed jirraporta l-modifiki l-aktar riċenti fil-kontenut ta' dan is-sit.",
'recentchanges-label-newpage' => 'Din il-modifika ħolqot paġna ġdida',
'recentchanges-label-minor' => 'Din hi modifika minuri',
'recentchanges-label-bot' => 'Din il-modifika ġiet effettwata minn bot',
'recentchanges-label-unpatrolled' => 'Din il-modifika għadha ma ġietx verifikata',
-'recentchanges-legend-newpage' => '$1 - paġna ġdida',
+'recentchanges-label-plusminus' => "Id-daqs tal-paġna nbidel b'dan in-numru ta' bytes",
+'recentchanges-legend-newpage' => '(ara wkoll il-[[Special:NewPages|lista tal-paġni l-ġodda]])',
'rcnotefrom' => "Ħawn taħt jinsabu l-modifiki minn '''$2''' (sa '''$1''').",
'rclistfrom' => 'Uri l-modifiki ġodda jibdew minn $1',
'rcshowhideminor' => '$1 modifiki żgħar',
'watchmethod-list' => 'Kontroll tal-osservati speċjali għal modifiki riċenti',
'watchlistcontains' => "Il-lista ta' osservazzjoni fiha {{PLURAL:$1|paġna|$1 paġni}}.",
'iteminvalidname' => "Problema bil-paġna'$1', l-isem mhux validu...",
-'wlnote' => "Hawn taħt hawn {{PLURAL:$1|l-aħħar modifika|l-aħħar '''$1''' modifiki}} fl-aħħar {{PLURAL:$2|siegħa|'''$2''' siegħat}}, sal-$3, fil-$4.",
'wlshowlast' => 'Uri l-aħħar $1 siegħat $2 ġranet $3',
'watchlist-options' => "Opzjonijiet tal-lista ta' osservazzjoni",
'tooltip-pt-watchlist' => "Il-lista ta' paġni li qiegħed tosserva",
'tooltip-pt-mycontris' => 'Lista tal-kontribuzzjonijiet tiegħek',
'tooltip-pt-login' => 'Tirreġistra ruħek huwa avviżat però mhux obbligatorju.',
-'tooltip-pt-anonlogin' => 'Tirreġistra ruħek huwa avviżat, anki jekk mhux obbligatorju.',
'tooltip-pt-logout' => "Oħroġ (illogja 'l barra)",
'tooltip-ca-talk' => 'Diskussjoni dwar il-kontenut tal-paġna',
'tooltip-ca-edit' => "Tista' timmodifika din il-paġna. Jekk jogħġbok uża l-buttuna tad-dehra proviżorja qabel ma ssalva l-modifiki.",
'rightsnone' => '(xejn)',
# Feedback
+'feedback-bugornote' => 'Jekk int lest biex tiddeskrivi problema teknika fid-dettall, jekk jogħbok [$1 irraporta l-bug].
+Inkella, tista\' tuża l-formola sempliċi t\'hawn taħt. Il-kumment tiegħek se jiżdied mal-paġna "[$3 $2]", flimkien ma\' isem l-utent tiegħek.',
'feedback-subject' => 'Suġġett:',
'feedback-message' => 'Messaġġ:',
'feedback-cancel' => 'Annulla',
-'feedback-submit' => 'Ibgħat r-rispons',
+'feedback-submit' => 'Ibgħat il-messaġġ',
'feedback-error1' => 'Żball: Riżultat mhux rikonoxxut mill-API',
'feedback-error2' => 'Żball: Modifika mhux esegwita',
'feedback-error3' => 'Żball: L-ebda risposta mill-API',
$messages = array(
# User preference toggles
'tog-underline' => 'လင့်ကို မျဉ်းသားသည့် ပုံစံ -',
-'tog-justify' => 'အတိုအရှည်ညှိထားသော စာပိုဒ်များ',
'tog-hideminor' => 'လတ်တလော အပြောင်းအလဲများတွင် အရေးမကြီးသည်များကို ဝှက်ရန်',
'tog-hidepatrolled' => 'လတ်တလော အပြောင်းအလဲများတွင် အရေးမကြီးသည်များကို ဝှက်ရန်',
'tog-newpageshidepatrolled' => 'လက်တလော အပြောင်းလဲများတွင် စာမျက်နှာသစ်များကို ဝှက်ရန်',
'tog-numberheadings' => 'ခေါင်းစဉ်များ အား စေ့ဆော်ချက်အတိုင်း လုပ်ဆောင်ရန်',
'tog-showtoolbar' => 'ပြုပြင်ရန် ကိရိယာများ (JavaScript လိုအပ်သည်)',
'tog-editondblclick' => 'ကလစ်နှစ်ခါနှိပ်လျှင် စာမျက်နှာအားပြုပြင်ပါ (JavaScript လိုအပ်သည်)',
-'tog-editsection' => '[edit] လင့်များဖြင့် အပိုင်းလိုက်တည်းဖြတ်ခြင်းကို အသုံးပြုရန်',
'tog-editsectiononrightclick' => 'အပိုင်းလိုက်ခေါင်းစဉ်များကို ညာကလစ်နှိပ်ခြင်းဖြင့် အပိုင်းလိုက် တည်းဖြတ်ခြင်းကို အသုံးပြုရန်',
-'tog-showtoc' => 'မာတိကာပြရန် (ခေါင်းစဉ် ၃ ခုအထက်ရှိသော စာမျက်နှာများအတွက်)',
'tog-rememberpassword' => 'ဤကွန်ပျူတာတွင် ကျွန်ုပ်ကိုမှတ်ထားရန် (အများဆုံး $1 {{PLURAL:$1|ရက်|ရက်}}ကြာ)',
'tog-watchcreations' => 'ကျွန်ုပ်စတင်ရေးသားခဲ့သည့်စာမျက်နှာများနှင့် အပ်လုပ်တင်ခဲ့သည့် ဖိုင်များကို စောင့်ကြည့်စာရင်းထဲ ပေါင်းထည့်ရန်',
'tog-watchdefault' => 'ကျွန်ုပ် တည်းဖြတ်ခဲ့သည့် စာမျက်နှာများနှင့် ဖိုင်များကို စောင့်ကြည့်စာရင်းသို့ ပေါင်းထည့်ပါ။',
'compareselectedversions' => 'ရွေးချယ်ထားသော မူများကို နှိုင်းယှဉ်ရန်',
'showhideselectedversions' => 'ရွေးချယ်ထားသော မူများကို ပြရန်/ဝှက်ရန်',
'editundo' => 'နောက်ပြန် ပြန်ပြင်ရန်',
-'diff-multi' => '({{PLURAL:$2|အသုံးပြုသူတစ်ဦး|အသုံးပြုသူ $2 ဦး}}၏{{PLURAL:$1|အလယ်အလတ်တည်းဖြတ်မူတစ်ခု|အလယ်အလတ်တည်းဖြတ်မူ $1 ခု}}ကို မပြပါ)',
# Search results
'searchresults' => 'ရှာဖွေမှု ရလဒ်များ',
'rows' => 'အလျားလိုက်တန်း -',
'columns' => 'ဒေါင်လိုက်တန်း -',
'searchresultshead' => 'ရှာဖွေရန်',
-'resultsperpage' => 'စာတစ်မျက်နှာလျှင် ဝင်ကြည့်နှုန်း -',
'stub-threshold-disabled' => 'ပိတ်ထားသည်',
'recentchangesdays' => 'လတ်တလောအပြောင်းအလဲများကို ပြရန်နေ့များ -',
'recentchangesdays-max' => 'အများဆုံး $1 {{PLURAL:$1|ရက်|ရက်}}',
'tooltip-pt-watchlist' => 'အပြောင်းအလဲများအတွက် စောင့်ကြည့်နေသော စာမျက်နှာများ၏ စာရင်း',
'tooltip-pt-mycontris' => 'သင့်ပံ့ပိုးမှုများ၏ စာရင်း',
'tooltip-pt-login' => 'မှတ်ပုံတင်ဖြင့် log in ဝင်ရန် အားပေးပါသည်။ သို့သော် မှတ်ပုံမတင်မနေရ မဟုတ်ပါ။',
-'tooltip-pt-anonlogin' => 'မှတ်ပုံတင်ဖြင့် log in ဝင်ရန် အားပေးပါသည်။ သို့သော် မှတ်ပုံမတင်မနေရ မဟုတ်ပါ။',
'tooltip-pt-logout' => 'ထွက်ပါ',
'tooltip-ca-talk' => 'မာတိကာ စာမျက်နှာအတွက် ဆွေးနွေးချက်များ',
'tooltip-ca-edit' => 'ဤစာမျက်နှာကို တည်းဖြတ်နိုင်သည်။ ကျေးဇူးပြု၍ မသိမ်းခင် နမူနာ ခလုတ်ကိုနှိပ်ပြီး ကြည့်ပေးပါ။',
$messages = array(
# User preference toggles
'tog-underline' => 'Сюлмавома петнень алга черькстамс:',
-'tog-justify' => 'Вейкетстявтомс сёрмадовкс ушодоманть лопанть кувалмга',
'tog-hideminor' => 'Од полавтоматнесэ кекшемс вишинькине витевкстнэнь',
'tog-hidepatrolled' => 'Кекшемс лувонь кирдиень витнеметнень-петнематнень чыяконь полавтнематнестэ',
'tog-newpageshidepatrolled' => 'Кекшемс лувонь кирдиень ванстома лопатнень од лопань керьксэнть эйстэ',
'tog-numberheadings' => 'Сёрмадовксконяксос кадык сынсь ловома валтнэ путовить',
'tog-showtoolbar' => 'Невтемс кедьёнкслазнэнть сёрмадома шкасто',
'tog-editondblclick' => 'Кавксть лепштязь совамс сёрмадовксонь витнеме-петнеме',
-'tog-editsection' => 'Невтемс сюлмавома пенть «витемс» эрьва секциянтень-пельксэнтень',
'tog-editsectiononrightclick' => 'Витнемс секциятнень-пелькстнэнь, лепштямс сёрмадовксонть лемензэ лангс чеерень витьёнсе повнесэ',
-'tog-showtoc' => 'Невтемс сёрмадовкспотмокс (лопатненень, конатнесэ 3-до ламо сёрмадовкст)',
-'tog-rememberpassword' => 'Ледстемс совамо валом те бравзерсэнть (сех кувать $1 {{PLURAL:$1|чи|чить}})',
+'tog-rememberpassword' => 'Ледстемс совамо валом те бравзерсэнть (сех кувать $1 {{PLURAL:$1|1=чи|чить}})',
'tog-watchcreations' => 'Совавтомс ванома лемрисьмезэнь монь теевть лопатнень ды сень, мезе йовкстан',
'tog-watchdefault' => 'Совавтомс монь витевть лопатнень ванома лемрисьмезэнь',
'tog-watchmoves' => 'Совавтомс монь одов лемдявт лопатнень-керьмазтнэнь ванома лемрисьмезэнь',
'december-date' => 'Ацамков $1',
# Categories related messages
-'pagecategories' => '{{PLURAL:$1|Категория|Категорият}}',
+'pagecategories' => '{{PLURAL:$1|1=Категория|Категорият}}',
'category_header' => '"$1" категориясонть лопатне',
'subcategories' => 'Алкскатегорият',
'category-media-header' => '"$1" категориясонть медиясь',
'category-empty' => "''Те категориясонть арасть лопат-медият.''",
-'hidden-categories' => '{{PLURAL:$1|Кекшень категория|Кекшень категорият}}',
+'hidden-categories' => '{{PLURAL:$1|1=Кекшень категория|Кекшень категорият}}',
'hidden-category-category' => 'Кекшень категорият',
-'category-subcat-count' => '{{PLURAL:$2|Те категориясонть вейкине явкс категория.|Те категориясонть {{PLURAL:$1|явкс категория|$1 явкс категорият}}, $2 -тнень эйстэ.}}',
-'category-subcat-count-limited' => 'Те категориясонть {{PLURAL:$1|алкс категория|$1 алкс категорият}}.',
-'category-article-count' => '{{PLURAL:$2|Те категориясонть вейкине лопась вана косо.|{{PLURAL:$1|Те лопась кандови|$1 Не лопатне кандовить}} те категориянтень, категориясонть лопатнеде весемезэ $2.}}',
-'category-article-count-limited' => '{{PLURAL:$1|Те лопась|$1 Не лопатне}} те категориясонть.',
-'category-file-count' => '{{PLURAL:$2|Те категориясонть вейкине файлась вана косо.|{{PLURAL:$1|Те файлась кандови|$1 Не файлатне кандовить}} те категориянтень, категориясонть файлатнеде весемезэ $2.}}',
-'category-file-count-limited' => '{{PLURAL:$1|Те файлась|$1 Не файлатне}} вановиця категориянтень кандови.',
+'category-subcat-count' => '{{PLURAL:$2|Те категориясонть вейкине явкс категория.|Те категориясонть {{PLURAL:$1|1=явкс категория|$1 явкс категорият}}, $2 -тнень эйстэ.}}',
+'category-subcat-count-limited' => 'Те категориясонть {{PLURAL:$1|1=алкс категория|$1 алкс категорият}}.',
+'category-article-count' => '{{PLURAL:$2|Те категориясонть вейкине лопась вана косо.|{{PLURAL:$1|1=Те лопась кандови|$1 Не лопатне кандовить}} те категориянтень, категориясонть лопатнеде весемезэ $2.}}',
+'category-article-count-limited' => '{{PLURAL:$1|1=Те лопась|$1 Не лопатне}} те категориясонть.',
+'category-file-count' => '{{PLURAL:$2|Те категориясонть вейкине файлась вана косо.|{{PLURAL:$1|1=Те файлась кандови|$1 Не файлатне кандовить}} те категориянтень, категориясонть файлатнеде весемезэ $2.}}',
+'category-file-count-limited' => '{{PLURAL:$1|1=Те файлась|$1 Не файлатне}} вановиця категориянтень кандови.',
'listingcontinuesabbrev' => 'поладксозо моли',
'index-category' => 'Индекс марто лопатне',
'noindex-category' => 'Индекстэме лопатне',
'delete' => 'Нардамс',
'deletethispage' => 'Нардамс те лопанть',
'undeletethispage' => 'Вельмевтемс мекев те лопанть',
-'undelete_short' => 'Велявтомс нардазенть {{PLURAL:$1|вейке витнема-петнема|$1 витнемат-петнемат}}',
-'viewdeleted_short' => 'Ваномс {{PLURAL:$1|нардазь вейке витнема-петнема|нардазь $1 витнемат-петнемат}}',
+'undelete_short' => 'Велявтомс нардазенть {{PLURAL:$1|1=вейке витнема-петнема|$1 витнемат-петнемат}}',
+'viewdeleted_short' => 'Ваномс {{PLURAL:$1|1=нардазь вейке витнема-петнема|нардазь $1 витнемат-петнемат}}',
'protect' => 'Аравтомс прянь ванстомас',
'protect_change' => 'полавтомс',
'protectthispage' => 'Аравтомс те лопанть ванстомас',
'redirectedfrom' => '(Ютавтозь $1 вельде)',
'redirectpagesub' => 'Лиясто ютавтозь лопа',
'lastmodifiedat' => 'Те лопанть меельседе витнезь-петнезь $2, $1.',
-'viewcount' => 'Те лопантень совасть {{PLURAL:$1|весть|$1-ксть}}.',
+'viewcount' => 'Те лопантень совасть {{PLURAL:$1|1=весть|$1-ксть}}.',
'protectedpage' => 'Те лопась ванстомасо',
'jumpto' => 'Тёкадемс тей:',
'jumptonavigation' => 'Новигациясь-лездамось',
'badaccess' => 'Меревемань асатыкс',
'badaccess-group0' => 'Тонеть а мерить теемс мезе вешить.',
-'badaccess-groups' => 'Тевтеемась, конань вешить, тееви ансяк «$1» {{PLURAL:$2|куронь|куротнень}} теицятненень.',
+'badaccess-groups' => 'Тевтеемась, конань вешить, тееви ансяк «$1» {{PLURAL:$2|1=куронь|куротнень}} теицятненень.',
'versionrequired' => 'МедияВикинь $1 версиясь эряви',
'versionrequiredtext' => 'МедияВикинь $1 версиясь эряви те лопанть тевс нолдамга.
'collapsible-expand' => 'Келейгавтомс',
'thisisdeleted' => '$1-нть ваномс эли велявтомс мекев?',
'viewdeleted' => 'Ванномс $1?',
-'restorelink' => '{{PLURAL:$1|нардазь вейке витнема-петнема|нардазь $1 витнемат-петнемат}}',
+'restorelink' => '{{PLURAL:$1|1=нардазь вейке витнема-петнема|нардазь $1 витнемат-петнемат}}',
'feedlinks' => 'Максовкс:',
'feed-invalid' => 'А маштови сёрмадстома каналонть сортозо.',
'site-rss-feed' => 'RSS-нть максовкс $1 -нть кисэ',
'yourpasswordagain' => 'Омбоцеде сёрмадык кирдицянь леметь:',
'createacct-yourpasswordagain' => 'Кемекстык салававалонть',
'createacct-yourpasswordagain-ph' => 'Совавтык салававалонть одов',
-'remembermypassword' => 'Ледстемс совамом те бравзерсэнть (сех кувать $1 {{PLURAL:$1|чи|чить}})',
+'remembermypassword' => 'Ледстемс совамом те бравзерсэнть (сех кувать $1 {{PLURAL:$1|1=чи|чить}})',
'userlogin-remembermypassword' => 'Кирдемизь совавтозекс',
'userlogin-signwithsecure' => 'Нолдак тевс ванстозь сюлмавкс',
'yourdomainname' => 'Эсеть доменэть:',
'createacct-submit' => 'Шкик совамотаркат',
'createacct-another-submit' => 'Шкак од совамотарка',
'createacct-benefit-heading' => '«{{SITENAME}}» сайтэнть теизь тонь кондямо ломанть.',
-'createacct-benefit-body2' => '{{PLURAL:$1|лопа|лопат}}',
+'createacct-benefit-body2' => '{{PLURAL:$1|1=лопа|лопат}}',
'badretype' => 'Сёрмадыть салава валот кавксть: сынь аволь вейкеть.',
'userexists' => 'Те лемесь уш саезь.
Арсека эстеть лия, инеськеть.',
'login-userblocked' => 'Те теицясь аравтозь саймас. Совамонзо а мерить.',
'wrongpassword' => 'Аволь истя сёрмадык совамо валот. Варчыка одов.',
'wrongpasswordempty' => 'Салавань валот кадовсь апак сёрмадо. Сёрмадыка одов.',
-'passwordtooshort' => 'Совамо валонть кувалмозо {{PLURAL:$1|улезэ 1 тешкс| улезт $1 тешкст}}, аволь седе аламо.',
+'passwordtooshort' => 'Совамо валонть кувалмозо {{PLURAL:$1|1=улезэ 1 тешкс| улезт $1 тешкст}}, аволь седе аламо.',
'password-name-match' => 'Салава валонтень эряви явовомс теицянь леметь эйстэ.',
'password-login-forbidden' => 'Те теицянь лемесь ды салававалось а мерить нолдамс тевс.',
'mailmypassword' => 'Кучт е-сёрмасо од салававал',
кедьстэнек кучомс теицянь од совамо вал {{SITENAME}} ($4) сайтс совамга.<br />
Теицянтень "$2" кучозь нурькине шкань совамо вал, конась ней "$3".<br />
Бути те тон ульнить, сави ней совамс ды кочкамс од совамо вал эстеть.<br />
-Нурькине шкань совамо валот нолдави тевс {{PLURAL:$5|вейке чи|$5 чить}}.
+Нурькине шкань совамо валот нолдави тевс {{PLURAL:$5|1=вейке чи|$5 чить}}.
Бути аволь тон вешицясь, эли мелезэть ледстик совамо валонть, иля яво мель те пачтямнэнтень. Нолдык тевс мельсэ аштицянть - мельс ледстязенть.',
'noemail' => '"$1" теицянть арась е-сёрмапаргозо.',
Инеськеть, кодак валось пачкоди, совака одов.',
'eauthentsent' => 'Электрононь сёрмапаргозот кучозь кемекстамонь е-сёрмине.<br /> Сонзэ эйсэ сёрмадозь мезе кода теемс. Ансяк седе мейле, зярдо невтик, сёрмапаргось алкукс эсеть, карматано кучомо лия сёрмат.',
'mailerror' => 'Е-сёрма кучомсто ильведькс: $1',
-'acct_creation_throttle_hit' => 'Те викисэ тонь IP адресстэть совасть теицят, конат теисть {{PLURAL:$1|1 сёрмадовкс|$1 сёрмадовкст}} меельсе чынть перть, седе ламо полавтомат а мерить теемс истя зняронь шкань перть.
+'acct_creation_throttle_hit' => 'Те викисэ тонь IP адресстэть совасть теицят, конат теисть {{PLURAL:$1|1=1 сёрмадовкс|$1 сёрмадовкст}} меельсе чынть перть, седе ламо полавтомат а мерить теемс истя зняронь шкань перть.
Тень кисэ, те IP адресэнть коряс седе тов а маштови теемс-шкамс од сёрмадовкст, зярс.',
'emailauthenticated' => 'Е-сёрмапаргот кемекстазель $2 чистэ $3 цяссто.',
'emailconfirmlink' => 'Кемекстык е-сёрмапаргот',
'''ИЛЯ МАКСО ВАНСТОНЬ ВИДЕЧИСЭ ЛОМАНЕНЬ ВАЖОДЕМАНТЬ АПАК КЕВКСТНЕ!'''",
'titleprotectedwarning' => "'''ВАНОК: Те лопась сёлгозь, сонзэ шкамга-теемга [[Special:ListGroupRights|башка видечыть]] эрявить.'''
Журналонь меельсе сёрмадовксось максозь ало, эрявиндеряй сонзэ ваномс.",
-'templatesused' => 'Те лопасонть тевс нолдазь {{PLURAL:$1|лопа парцун|лопа парцунт}}:',
-'templatesusedpreview' => 'Те икелькс вановкссонть тевс нолдазь {{PLURAL:$1|лопа парцун|лопа парцунт}}:',
-'templatesusedsection' => 'Те пелькссэнть тевс нолдазь {{PLURAL:$1|лопа парцунось|лопа парцунтнэ}}:',
+'templatesused' => 'Те лопасонть тевс нолдазь {{PLURAL:$1|1=лопа парцун|лопа парцунт}}:',
+'templatesusedpreview' => 'Те икелькс вановкссонть тевс нолдазь {{PLURAL:$1|1=лопа парцун|лопа парцунт}}:',
+'templatesusedsection' => 'Те пелькссэнть тевс нолдазь {{PLURAL:$1|1=лопа парцунось|лопа парцунтнэ}}:',
'template-protected' => '(ванстозь)',
'template-semiprotected' => '(пельс ванстозь)',
-'hiddencategories' => 'Те лопась совавтови {{PLURAL:$1|кекшень 1 категорияс|кекшень $1 категорияс}}:',
+'hiddencategories' => 'Те лопась совавтови {{PLURAL:$1|1=кекшень 1 категорияс|кекшень $1 категорияс}}:',
'nocreatetext' => 'Те {{SITENAME}} лопасонть пирязь од лопань теемась. Тонь ули мелеть велявтомс удалов ды питнемензе-витнемензе улиця лопанть, али [[Special:UserLogin|совамс али теемс од совама]].',
'nocreate-loggedin' => 'Тонеть а мерить теемс-шкамс од лопат.',
-'permissionserrorstext' => 'Тонеть а мерить теемс тень, вана {{PLURAL:$1|тувталось|тувталтнэ}}:',
-'permissionserrorstext-withaction' => 'Тонеть а мерить теемс $2, {{PLURAL:$1|тувталось|тувталтнэ}} вана:',
+'permissionserrorstext' => 'Тонеть а мерить теемс тень, вана {{PLURAL:$1|1=тувталось|тувталтнэ}}:',
+'permissionserrorstext-withaction' => 'Тонеть а мерить теемс $2, {{PLURAL:$1|1=тувталось|тувталтнэ}} вана:',
'recreate-moveddeleted-warn' => "'''Ванок: Вельмевтят лопа, кона нардазель.'''
Васня арьсек, эряви - а эряви полалемс ды витнемс-петнемс те лопанть.
'history-show-deleted' => 'Ансяк нардазь',
'histfirst' => 'весемеде умонь',
'histlast' => 'Меельце',
-'historysize' => '({{PLURAL:$1|1 байт|$1 байтт}})',
+'historysize' => '({{PLURAL:$1|1=1 байт|$1 байтт}})',
'historyempty' => '(чаво)',
# Revision feed
'revisiondelete' => 'Нардамс/вельмевтемс лиякстомтоматнень',
'revdelete-show-file-confirm' => 'Алкукс ули мелеть ваномс «<nowiki>$1</nowiki>» керьмазонть нардазь ревизиянзо, конась саезь $2-нть эйстэ ды ашти тесэ $3?',
'revdelete-show-file-submit' => 'Ули',
-'revdelete-selected' => "'''[[:$1]]-нь {{PLURAL:$2|Кочкань лиякстомтомась|Кочкань лиякстомтоматне}}:'''",
+'revdelete-selected' => "'''[[:$1]]-нь {{PLURAL:$2|1=Кочкань лиякстомтомась|Кочкань лиякстомтоматне}}:'''",
'revdelete-legend' => 'Аравтомс неявомачынь петне',
'revdelete-hide-text' => 'Кекшемс лиякстомтомань текстэнть',
'revdelete-hide-image' => 'Кекшемс мезе файлатнесэ',
'revdelete-hide-user' => 'Кекшемс витницянть-петницянть теиця лемензэ/IP-нзэ',
'revdelete-radio-same' => '(иляк лиякстомто)',
'revdelete-log' => 'Тувталось:',
-'revdelete-submit' => 'Аравтомс кочказь {{PLURAL:$1|лиякстомтомантень|лиякстомтоматненень}}',
+'revdelete-submit' => 'Аравтомс кочказь {{PLURAL:$1|1=лиякстомтомантень|лиякстомтоматненень}}',
'revdel-restore' => 'Полавтомс неявомачынзэ',
'pagehist' => 'Лопанть икелькс умазо',
'deletedhist' => 'Нардань икелькс умазо',
'lineno' => 'Киксэсь $1:',
'compareselectedversions' => 'Кочказь версиятнень аравтомс карадо-каршо',
'editundo' => 'Велявтомс мекев мезе витнинь-петнинь',
-'diff-multi' => '↓({{PLURAL:$2|Вейке совицясь тейсь {{PLURAL:$1|юткине версия, конась|$1 юткине версият, конатне}}|$2 совицят тейсть {{PLURAL:$1| юткине версия, конась|$1 юткине версият, конатне}}}} апак невте.)',
# Search results
'searchresults' => 'Мезе муевсь',
'notextmatches' => 'Лопанть сёрмадсткэнзэ марто вейтьс прамот арасть',
'prevn' => 'седе икелень {{PLURAL:$1|$1}}',
'nextn' => 'сы {{PLURAL:$1|$1}}',
-'prevn-title' => 'Седе икелень $1 {{PLURAL:$1|савкс|савкст}}',
-'nextn-title' => 'Седе меелень $1 {{PLURAL:$1|савкс|савкст}}',
-'shown-title' => 'Невтть лопазонзо $1 {{PLURAL:$1|савкс|савкст}}',
+'prevn-title' => 'Седе икелень $1 {{PLURAL:$1|1=савкс|савкст}}',
+'nextn-title' => 'Седе меелень $1 {{PLURAL:$1|1=савкс|савкст}}',
+'shown-title' => 'Невтть лопазонзо $1 {{PLURAL:$1|1=савкс|савкст}}',
'viewprevnext' => 'Ванномс ($1 {{int:pipe-separator}} $2) ($3)',
'searchmenu-exists' => "'''Те викисэнть ули \"[[\$1]]\" лем марто лопа'''",
'searchmenu-new' => "'''Шкик \"[[:\$1]]\" лопанть те викисэнть!'''",
'searchprofile-images-tooltip' => 'Вешнемс файлат',
'searchprofile-everything-tooltip' => 'Вешнемс весе лопатнева (кортнема лопатневаяк)',
'searchprofile-advanced-tooltip' => 'Вешнемс башка теезь лемпотмотнестэ',
-'search-result-size' => '$1 ({{PLURAL:$2|1 вал|$2 валт}})',
-'search-result-category-size' => '{{PLURAL:$1|1 совицязо|$1 совицянзо}} ({{PLURAL:$2|1 явкскатегориязо|$2 явкскатегориянзо}}, {{PLURAL:$3|1 файла|$3 файлат}})',
+'search-result-size' => '$1 ({{PLURAL:$2|1=1 вал|$2 валт}})',
+'search-result-category-size' => '{{PLURAL:$1|1=1 совицязо|$1 совицянзо}} ({{PLURAL:$2|1=1 явкскатегориязо|$2 явкскатегориянзо}}, {{PLURAL:$3|1=1 файла|$3 файлат}})',
'search-redirect' => '(йутавтт $1-с)',
'search-section' => '(пелькс $1)',
'search-suggest' => 'Истя мерикскелить: $1',
'searcheverything-enable' => 'Вешнемс весе лем потмотнестэ',
'searchrelated' => 'малавикс',
'searchall' => 'весе',
-'showingresultsheader' => "{{PLURAL:$5|муевсь '''$1''' вана '''$3'''-тнень эйстэ|муевсть '''$1 - $2''' '''$3'''-тнень эйстэ}} '''$4''' вешнеманть лангс",
+'showingresultsheader' => "{{PLURAL:$5|1=муевсь '''$1''' вана '''$3'''-тнень эйстэ|муевсть '''$1 - $2''' '''$3'''-тнень эйстэ}} '''$4''' вешнеманть лангс",
'search-nonefound' => 'Те вешнема лангс мезеяк эзь муеве.',
'powersearch-legend' => 'Седе келейстэ вешнема',
'powersearch-ns' => 'Вешнемс не лемпотмотнестэ:',
'prefs-personal' => 'Теицядо',
'prefs-rc' => 'Чиень полавтнемат-лиякстомтомат',
'prefs-watchlist' => 'Ванома лемрисьме',
-'prefs-watchlist-days-max' => 'Весемеде куватьс $1 {{PLURAL:$1|чис|чис}}',
+'prefs-watchlist-days-max' => 'Весемеде куватьс $1 {{PLURAL:$1|1=чис|чис}}',
'prefs-watchlist-edits-max' => 'Весемеде покш цётось: 1000',
'prefs-misc' => 'Минеть-сюнот',
'prefs-resetpass' => 'Салавань валонь полавтома',
'rows' => 'Валчилькстнэ (строкатне):',
'columns' => 'Палманть:',
'searchresultshead' => 'Вешнема',
-'resultsperpage' => 'Зяроксть вастневи ве лопасо:',
'recentchangesdays' => 'Зяро чить невтемс чиень полавтнематнесэ-лиякстомтоматнесэ:',
-'recentchangesdays-max' => 'Весемеде куватьс $1 {{PLURAL:$1|чис|чис}}',
+'recentchangesdays-max' => 'Весемеде куватьс $1 {{PLURAL:$1|1=чис|чис}}',
'recentchangescount' => 'Васень аравтоматнень коряс зяро витнемат-петнемат невтемс:',
'prefs-help-recentchangescount' => 'Тезэнь совавтозь чиень полавтнемат-лиякстомтомат, лопань лувт-путовкст, журналт.',
'timezonelegend' => 'Шкань зонась:',
'yourlanguage' => 'Келесь:',
'yournick' => 'Кедень путома:',
'badsiglength' => 'Кедень путомат пек кувака.
-Эйсэнзэ иляст уле $1 -до ламо {{PLURAL:$1|тешкст|тешкст}}.',
+Эйсэнзэ иляст уле $1 -до ламо {{PLURAL:$1|1=тешкст|тешкст}}.',
'yourgender' => 'Сыметь (цёрань-тейтерень):',
'gender-unknown' => 'А меревлинь',
'gender-male' => 'Сон витни-петни викилопатнесэ',
'action-sendemail' => 'кучомс е-сёрмат',
# Recent changes
-'nchanges' => '$1 {{PLURAL:$1|полавтнема|полавтнемат}}',
+'nchanges' => '$1 {{PLURAL:$1|1=полавтнема|полавтнемат}}',
'recentchanges' => 'Чыяконь полавтнемат-лиякстомтомат',
'recentchanges-legend' => 'Улконь полавтнематнень аравтнемаст',
'recentchanges-summary' => '',
'file-thumbnail-no' => "Файланть лемезэ ушодови <strong>$1</strong>.
Сонсь маряви вишкалгавтозь фотокуво, покшолмазо ''(кенжешка)''.
Улиндеряй файланть покш верзиязо, йовкстыка сонзэ - арась, полавтыка тетень лемензэ.",
-'file-exists-duplicate' => 'Те кавонзавкс файла вана {{PLURAL:$1|те файланть|неть файлатнень}} эйстэ:',
+'file-exists-duplicate' => 'Те кавонзавкс файла вана {{PLURAL:$1|1=те файланть|неть файлатнень}} эйстэ:',
'uploadwarning' => 'Совавтомадо кардамонь пачтямо',
'savefile' => 'Ванстомс файланть',
'uploadedimage' => 'йовкстазь "[[$1]]"',
'filehist-comment' => 'Мельполадкс',
'filehist-missing' => 'Файлась арась',
'imagelinks' => 'Ков файлась нолдави тевс',
-'linkstoimage' => 'Те файланть марто сюлмавозь вана {{PLURAL:$1|истямо сюлмавома пене|$1 истят сюлмавома пенеть}}:',
+'linkstoimage' => 'Те файланть марто сюлмавозь вана {{PLURAL:$1|1=истямо сюлмавома пене|$1 истят сюлмавома пенеть}}:',
'nolinkstoimage' => 'Арась вейкеяк лопа, кона сюлмавови те файланть марто.',
'sharedupload' => 'Те файлась саезь "$1" файлань пусмосто, сон нолдави тевс лия проектсэяк.',
'sharedupload-desc-here' => 'Те файлась сась истямо $1 таркасто, паряк сон нолдави тевс лия проектсэ.
# Random page
'randompage' => 'Кодамо понгсь лопа',
-'randompage-nopages' => '{{PLURAL:$2|Те лем потмосо|Не лем потмотнесэ}}: $1 лопат арасть.',
+'randompage-nopages' => '{{PLURAL:$2|1=Те лем потмосо|Не лем потмотнесэ}}: $1 лопат арасть.',
# Random redirect
'randomredirect' => 'Апак фатя ёнксось',
'fewestrevisions' => 'Лопат, конатнесэ весемеде аламо лиякстомтомат',
# Miscellaneous special pages
-'nbytes' => '$1 {{PLURAL:$1|байт|байтт}}',
-'ncategories' => '$1 {{PLURAL:$1|категория|категорият}}',
-'nlinks' => '$1 {{PLURAL:$1|невтевкс|невтевкст|невтевкснедэ}}',
-'nmembers' => '$1 {{PLURAL:$1|теиця|теицятне}}',
-'nrevisions' => '$1 {{PLURAL:$1|лиякстомтома|лиякстомтомат}}',
-'nviews' => '$1 {{PLURAL:$1|ванома потмо|ванома потмот}}',
+'nbytes' => '$1 {{PLURAL:$1|1=байт|байтт}}',
+'ncategories' => '$1 {{PLURAL:$1|1=категория|категорият}}',
+'nlinks' => '$1 {{PLURAL:$1|невтевкс|невтевкснедэ|невтевкст}}',
+'nmembers' => '$1 {{PLURAL:$1|1=теиця|теицятне}}',
+'nrevisions' => '$1 {{PLURAL:$1|1=лиякстомтома|лиякстомтомат}}',
+'nviews' => '$1 {{PLURAL:$1|1=ванома потмо|ванома потмот}}',
'lonelypages' => 'Лопаурозкэть',
'uncategorizedpages' => 'Категориявтомо лопат',
'uncategorizedcategories' => 'Категориявтомо категорият',
'listusers' => 'Теицят-кить',
'listusers-editsonly' => 'Невтемс ансяк витнема-петнема марто совийтнень-лисийтнень',
'listusers-creationsort' => 'Аравтомс мельга мельцек шкамо чинь коряс',
-'usereditcount' => '$1 {{PLURAL:$1|витнема-петнема|витнемат-петнемат}}',
+'usereditcount' => '$1 {{PLURAL:$1|1=витнема-петнема|витнемат-петнемат}}',
'usercreated' => '{{GENDER:$3|Шказь}} on $1 чистэ $2 шкасто',
'newpages' => 'Од лопат',
'newpages-username' => 'Теицянь лем:',
'notargettitle' => 'Совавтома лопа арась',
'nopagetitle' => 'Истямо вешема лопа арась',
'nopagetext' => 'Истямо лопа, конань вешить, арась.',
-'pager-newer-n' => '{{PLURAL:$1|седе од 1|седе одт $1}}',
-'pager-older-n' => '{{PLURAL:$1|седе ташто 1|седе таштт $1}}',
+'pager-newer-n' => '{{PLURAL:$1|1=седе од 1|седе одт $1}}',
+'pager-older-n' => '{{PLURAL:$1|1=седе ташто 1|седе таштт $1}}',
'suppress' => 'А ванома',
# Book sources
# Special:Categories
'categories' => 'Категорият',
-'categoriespagetext' => '{{PLURAL:$1|Те категориясонть|Не категориятнесэ}} улить лопат эли медият.
+'categoriespagetext' => '{{PLURAL:$1|1=Те категориясонть|Не категориятнесэ}} улить лопат эли медият.
[[Special:UnusedCategories|тевс апак нолда категориятне]] тесэ а невтевить.
Истяжо ванытя [[Special:WantedCategories|вешень категориятнень]].',
'special-categories-sort-count' => 'аравтомс цётонь коряс',
'unwatch' => 'А ванстнемс тень мельга',
'unwatchthispage' => 'Лоткамс ванстомадонзо',
'notvisiblerev' => 'Лиякстомтомась нардазь',
-'watchlist-details' => 'Ванома лемрисьмесэть {{PLURAL:$1|$1 лопа|$1 лопат}}, апак лово кортнема лопатнень.',
+'watchlist-details' => 'Ванома лемрисьмесэть {{PLURAL:$1|1=$1 лопа|$1 лопат}}, апак лово кортнема лопатнень.',
'wlshowlast' => 'Невтемс мельсе $1 цяст $2 чить $3',
'watchlist-options' => 'Ванома потмонь аравтнемат',
'exblank' => 'лопась чаволь',
'delete-confirm' => 'Нардамс "$1"',
'delete-legend' => 'Нардамс',
-'historywarning' => 'Ванок: Лопанть, конань нардамонзо пурнат, лиякстомтомань икелькс $1 {{PLURAL:$1|умазо|уманзо}}:',
+'historywarning' => 'Ванок: Лопанть, конань нардамонзо пурнат, лиякстомтомань икелькс $1 {{PLURAL:$1|1=умазо|уманзо}}:',
'confirmdeletetext' => 'Кундыть нардамо лопа (эли невтевкс-артовкс) вейтьсэ лиякстомтоматнеде икелькс уманзо марто.<br />
Инеськеть, кемекстык, эсеть мелеть коряс тень тейсак, алкукс содат, мезе лияды теде мейле, ды алкукс теят тень видечинть (правилатьнень) коряс, конат сёрмадозь [[{{MediaWiki:Policy-url}}]].',
'actioncomplete' => 'Тевень теемась топавтовсь',
'protect_expiry_old' => 'Прядома шкась амаштовикс.',
'protect-text' => "Тесэ тынь вансынк ды лиякстомсынк ванстоманть покшолманзо лопаньте '''$1'''.",
'protect-locked-access' => "Кирдицянь совамо таркат а максы видечи лиякстомтомс лопанть ванстома лувонзо. Тесэ вана лопанть уликс путовксонзо-аравтоманзо '''$1''':",
-'protect-cascadeon' => 'Те лопась ванстозь, сон путозь {{PLURAL:$1|невтезезь ало лопаньте, конаньте|невтезезь ало лопатьнене конатьнене}}-те путозь каскадонь ванстомась. Тынь лиякставсынк те ванстома сэренть, ансяк те кодаяк а полавсы каскадонь ванстоманть.',
+'protect-cascadeon' => 'Те лопась ванстозь, сон путозь {{PLURAL:$1|1=невтезезь ало лопаньте, конаньте|невтезезь ало лопатьнене конатьнене}}-те путозь каскадонь ванстомась. Тынь лиякставсынк те ванстома сэренть, ансяк те кодаяк а полавсы каскадонь ванстоманть.',
'protect-default' => 'Весе теицятненень маштови',
'protect-fallback' => 'Вешеви ве мельс прамось «$1»-нть',
'protect-level-autoconfirmed' => 'Саймас аравтомс од ды апак сёрмадстово теицятнень',
'undeleteviewlink' => 'ваномс',
'undeleteinvert' => 'Кочказень таркас апаконь кочкамо',
'undeletecomment' => 'Тувталось:',
-'undeletedrevisions' => '{{PLURAL:$1|1 лиякстомтома|$1 лиякстомтомат}} вельмевтезь',
-'undeletedrevisions-files' => '{{PLURAL:$1|1 лиякстомтома|$1 лиякстомтомат}} ды {{PLURAL:$2|1 файла|$2 файлат}} вельмевтезь',
-'undeletedfiles' => '{{PLURAL:$1|1 файла|$1 файлат}} вельмевтезь',
+'undeletedrevisions' => '{{PLURAL:$1|1=1 лиякстомтома|$1 лиякстомтомат}} вельмевтезь',
+'undeletedrevisions-files' => '{{PLURAL:$1|1=1 лиякстомтома|$1 лиякстомтомат}} ды {{PLURAL:$2|1=1 файла|$2 файлат}} вельмевтезь',
+'undeletedfiles' => '{{PLURAL:$1|1=1 файла|$1 файлат}} вельмевтезь',
'undelete-search-box' => 'Вешнемс нардань лопатнень йутксто',
'undelete-search-prefix' => 'Невтемс лопат тестэ саезь:',
'undelete-search-submit' => 'Вешнэмс',
'isredirect' => 'Лиякс витнинк-петнинк лопанть',
'istemplate' => 'совавтомс',
'isimage' => 'файлань сюлмавома пене',
-'whatlinkshere-prev' => '{{PLURAL:$1|икеле|седе икелень $1}}',
-'whatlinkshere-next' => '{{PLURAL:$1|сыця|сы $1}}',
+'whatlinkshere-prev' => '{{PLURAL:$1|1=икеле|седе икелень $1}}',
+'whatlinkshere-next' => '{{PLURAL:$1|1=сыця|сы $1}}',
'whatlinkshere-links' => '← сюлмавомапеть',
-'whatlinkshere-hideredirs' => '$1 {{PLURAL:$1|тарка йутавты|таркат йутавтыть}} тей',
+'whatlinkshere-hideredirs' => '$1 {{PLURAL:$1|1=тарка йутавты|таркат йутавтыть}} тей',
'whatlinkshere-hidetrans' => '$1 сюлмавозь пелькстнэнь',
'whatlinkshere-hidelinks' => '$1 сюлмавома петь',
'whatlinkshere-hideimages' => '$1 файланть сюлмавомапензэ',
'movepage-page-moved' => '"$1" лопась печтевтезь "$2"-с.',
'movepage-page-unmoved' => 'Лопа $1 эзь печтевтеве $2 лопас.',
'movelogpage' => 'Печтевтемань журнал',
-'movesubpage' => '{{PLURAL:$1|Алкслопа|Алкслопа}}',
-'movesubpagetext' => 'Те лопасонть ало невтеви $1 {{PLURAL:$1|алкслопа|алкслопа}}.',
+'movesubpage' => '{{PLURAL:$1|1=Алкслопа|Алкслопа}}',
+'movesubpagetext' => 'Те лопасонть ало невтеви $1 {{PLURAL:$1|1=алкслопа|алкслопа}}.',
'movenosubpage' => 'Те лопасонть алкслопат арасть.',
'movereason' => 'Тувталось:',
'revertmove' => 'велявтодо',
'import-upload-filename' => 'Файла лемесь:',
'import-comment' => 'Арсемат-мельть:',
'importstart' => 'Лопатне совавтовить...',
-'import-revision-count' => '$1 {{PLURAL:$1|лиякстомтома|лиякстомтомат}}',
+'import-revision-count' => '$1 {{PLURAL:$1|1=лиякстомтома|лиякстомтомат}}',
'importnopages' => 'Ёвкстамс лопат арасть',
'importfailed' => 'Совавтома тевесь эзь лисе: <nowiki>$1</nowiki>',
'importcantopen' => 'Совавтозь файлась эзь панжово',
# Import log
'importlogpage' => 'Импортонть журналось',
-'import-logentry-upload-detail' => '$1 {{PLURAL:$1|лиякстомтома|лиякстомтомат}}',
+'import-logentry-upload-detail' => '$1 {{PLURAL:$1|1=лиякстомтома|лиякстомтомат}}',
# Tooltip help for the actions
'tooltip-pt-userpage' => 'Теицянь лопат',
'tooltip-summary' => 'Сёрмадт нурькинестэ совавтозденть',
# Attribution
-'anonymous' => '{{SITENAME}} сайтэнть лемтеме {{PLURAL:$1|теицязо|теицянзо}}',
+'anonymous' => '{{SITENAME}} сайтэнть лемтеме {{PLURAL:$1|1=теицязо|теицянзо}}',
'siteuser' => '{{SITENAME}}-нь теиця $1',
'lastmodifiedatby' => 'Меельседе те лопанть полавтызе $3 $2, $1.',
'othercontribs' => '$1-нь важодеманзо лангс нежедезь.',
'others' => 'лият',
-'siteusers' => '{{SITENAME}} сайтэнть {{PLURAL:$2|теицязо|теицянзо}} $1',
+'siteusers' => '{{SITENAME}} сайтэнть {{PLURAL:$2|1=теицязо|теицянзо}} $1',
'creditspage' => 'Лопасонть кинь путовксонзо',
# Spam protection
# Media information
'thumbsize' => 'Кенжешканть покшолмазо:',
-'widthheightpage' => '$1 × $2, {{PLURAL:$3|лопа|$3 лопат}}',
+'widthheightpage' => '$1 × $2, {{PLURAL:$3|1=лопа|$3 лопат}}',
'file-info' => 'файлонть-путовксонть сталмозо: $1, MIME типезе: $2',
'file-info-size' => '$1 × $2 пиксельть, файлонть-путовксонть сталмозо: $3, MIME типезе: $4',
'file-nohires' => 'Арась версия покш разрешения марто.',
# Watchlist editor
'watchlistedit-normal-title' => 'Витнемс-петнемс ванстома лопанть',
'watchlistedit-normal-submit' => 'Нардамс конякстнэнь',
-'watchlistedit-normal-done' => '{{PLURAL:$1|1 конякс|$1 конякст}} нардазь ваномань лопастот:',
+'watchlistedit-normal-done' => '{{PLURAL:$1|1=1 конякс|$1 конякст}} нардазь ваномань лопастот:',
'watchlistedit-raw-title' => 'Витнеме-петнеме верек ваномалопанть',
'watchlistedit-raw-legend' => 'Витнеме-петнеме верек ваномалопанть',
'watchlistedit-raw-titles' => 'Конякст:',
'watchlistedit-raw-submit' => 'Мезе мельга ванстнят, спискаст одкстомтомс',
-'watchlistedit-raw-added' => 'Поладозь {{PLURAL:$1|1 конякс|$1 конякст}}:',
-'watchlistedit-raw-removed' => '{{PLURAL:$1|1 конякс нардазь|$1 конякст нардазь}}:',
+'watchlistedit-raw-added' => 'Поладозь {{PLURAL:$1|1=1 конякс|$1 конякст}}:',
+'watchlistedit-raw-removed' => '{{PLURAL:$1|1=1 конякс нардазь|$1 конякст нардазь}}:',
# Watchlist editing tools
'watchlisttools-view' => 'Лиякстоматьне лопатнесэ потмоксстонть',
'api-error-unknownerror' => 'Апак содань ильведевкс: «$1».',
# Durations
-'duration-seconds' => '$1 {{PLURAL:$1|секунда|секундат}}',
-'duration-minutes' => '$1 {{PLURAL:$1|минут|минутт}}',
-'duration-hours' => '$1 {{PLURAL:$1|цяс|цяст}}',
-'duration-days' => '$1 {{PLURAL:$1|чи|чить}}',
-'duration-weeks' => '$1 {{PLURAL:$1|тарго|таргот}}',
-'duration-years' => '$1 {{PLURAL:$1|ие|иеть}}',
-'duration-decades' => '$1 {{PLURAL:$1|кеменьие|кеменьиеть}}',
-'duration-centuries' => '$1 {{PLURAL:$1|пинге|пингеть}}',
-'duration-millennia' => '$1 {{PLURAL:$1|тёжтьие|тёжтьиеть}}',
+'duration-seconds' => '$1 {{PLURAL:$1|1=секунда|секундат}}',
+'duration-minutes' => '$1 {{PLURAL:$1|1=минут|минутт}}',
+'duration-hours' => '$1 {{PLURAL:$1|1=цяс|цяст}}',
+'duration-days' => '$1 {{PLURAL:$1|1=чи|чить}}',
+'duration-weeks' => '$1 {{PLURAL:$1|1=тарго|таргот}}',
+'duration-years' => '$1 {{PLURAL:$1|1=ие|иеть}}',
+'duration-decades' => '$1 {{PLURAL:$1|1=кеменьие|кеменьиеть}}',
+'duration-centuries' => '$1 {{PLURAL:$1|1=пинге|пингеть}}',
+'duration-millennia' => '$1 {{PLURAL:$1|1=тёжтьие|тёжтьиеть}}',
# Special:ExpandTemplates
'expand_templates_preview' => 'Васнянь неевтезэ',
$messages = array(
# User preference toggles
'tog-underline' => 'پیوندون زیر خط دکشی بواشه',
-'tog-justify' => 'بندون تموم چین هاکردن',
'tog-hideminor' => 'نشونندائن کچیک تغییرات تازه دگاردستهئون دله',
'tog-hidepatrolled' => 'جا بدائن دچییهئون پس بخارد تازه دگاردستهئون ِدله',
'tog-newpageshidepatrolled' => 'قایم هکردن گشت بخرد ولگون نو ولگون فهرست جا',
'tog-numberheadings' => 'شماره بشتن خدکار عناوین',
'tog-showtoolbar' => 'دچیین جعبه نوار ابزار ره سِراق هدائن',
'tog-editondblclick' => 'دچی ین ولگون با دتا کلیک (نیازمند جاوااسکریپت)',
-'tog-editsection' => 'به کار دمبدائن تیکهئون دچیین از طریق پیوندون [دچیین]',
'tog-editsectiononrightclick' => 'به کار دمبدائن دچیین قسمتئون با راست کیلیک<br />عناوین قسمتئون ِرو (جاوااسکریپت)',
-'tog-showtoc' => 'نیمایش محتوا<br />(برای مقالهئون با بیشته از ۳ سرفصل)',
'tog-rememberpassword' => 'مه رمز ره (تا حداکثر $1 {{PLURAL:$1|روز|روز}}) این مرورگر دله یاد دار',
'tog-watchcreations' => 'ایضافه بین صفحهئونی که من دِرِس هاکردمه به پیگیریئون ِرج.',
'tog-watchdefault' => 'اضافه هاکردن صفحههایی که چیمبه به منه پیگری ِرج',
'watchlist-details' => 'بدون حیساب گپ ولگئون، {{PLURAL:$1|$1 صفحه|$1 صفحه}} شمه دمبالهاکردنیئون میون قرار {{PLURAL:$1|دارنه|دانه}}.',
'wlheader-enotif' => '*تونی ایمیل جه مطلع بواشین.',
'wlheader-showupdated' => "*صفحهئونی که بعد از آخرین سربزوئنتون عوض بینه '''پر رنگ''' نشون هدائه بیّه.",
-'wlnote' => "ایجه {{PLURAL:$1|پایانی دأچیهن|پایانی '''$1''' دأچیهنئونی}} هأسه که ای $2 ساعت دهله دأکهته.",
'watchlist-options' => 'دمبال هاکردن گوزینهها',
# Displayed when you click the "watch" button and it is in the process of watching
$messages = array(
# User preference toggles
'tog-underline' => 'Mokìnxòîkuilòtzàswis tzòwilistìn:',
-'tog-justify' => 'Mokintêtènyèktlàlis in tlâkuilispaltìn',
'tog-hideminor' => 'Motlàtìs tepỉtzìn tlayèktlàlilistli ìpan welok tlapảtlalistli',
'tog-hidepatrolled' => 'Motlàtìs tlapîpialli tlayèktlàlilistli ìpan welok tlapảtlalistli',
'tog-newpageshidepatrolled' => 'Mokintlàtis tlapîpialtlaìxtlapaltìn ìwikpa ìtlapòpòwaltekpànal in yâyankuik tlaìxtlapaltìn',
'tog-extendwatchlist' => 'Mìxmảnas in tlapòpòwaltekpàntlachialli ìka mỏtas nochi in tlapảtlalistli, âmò in san okachi yankuik.',
-'tog-usenewrc' => 'Colōloāz in tlapatlaiztli īca yancuīc tlapatlaliztli īhuān in tlachiyaliztli tlapōhualāmatl (monequi JavaScript)',
-'tog-showtoolbar' => 'Tiquittāz in tlein motequitiltia tlapatlaliztechcopa (JavaScript)',
-'tog-editondblclick' => 'Tiquimpatlāz zāzaniltin ōme clicca (JavaScript)',
-'tog-showtoc' => 'Tiquittāz in tlein cah zāzotlahcuilōlco',
+'tog-usenewrc' => 'Molōloāzqueh in tlapatlaliztli in yancuīc tlapatlaliztli āmapan īhuān in tlachiyaliztli tlapōhualāmapan (monequi JavaScript)',
+'tog-showtoolbar' => 'Motlaīxtlatīz in tlachihchīhualōni pāntli',
+'tog-editondblclick' => 'Tiquimpatlāz in zāzanilli intlā ōme tiquimpachoa',
'tog-rememberpassword' => 'Ticpiyāz moMotlatequitiltilīltōca īhuān motlahtōlichtacāyo inīn chīuhpōhualhuazco (īxquich {{PLURAL:$1|tōnalli}})',
'tog-watchcreations' => 'Moaquiāz in āmatl mā niquinyōcoya īhuān in tlahcuilōlli mā niquinquetza īpan notlachiyaliz',
'tog-watchdefault' => 'Moaquiāz āmatl īhuān tlahcuilōlli mā niquinpatla in notlachiyaliz',
'articlepage' => 'Xiquittaz in tlahcuilōlli',
'talk' => 'tēixnāmiquiliztli',
'views' => 'Tlachiyaliztli',
-'toolbox' => 'In tlein motequitiltia',
+'toolbox' => 'Tlachihchīhualōni',
'userpage' => 'Xiquitta tlatequitiltilīlli zāzanilli',
'projectpage' => 'Xiquitta tlachīhualiztli zāzanilli',
'imagepage' => 'Tiquittaz in zāzanilli īāma',
# 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).
'aboutsite' => 'Ītechcopa {{SITENAME}}',
'aboutpage' => 'Project:Ītechcopa',
-'copyright' => 'Tlahcuilōltzin cah yōllōxoxouhqui īpan $1',
+'copyright' => 'In tlahcuilōlli cah tlacēcencāhuani īpan $1 tel ahmo intlā īcuepca motēnēhua.',
'copyrightpage' => '{{ns:project}}:Tlachīhualōni ītlapiyaliz',
'currentevents' => 'Āxcāncāyōtl',
'currentevents-url' => 'Project:Āxcāncāyōtl',
'createaccount' => 'Ticchīhuāz cē cuentah',
'gotaccount' => "¿Ye ticpiya cē cuentah? '''$1'''.",
'gotaccountlink' => 'Ximocalaqui',
-'createaccountmail' => 'Ticnemītīz ahmo cemihcac zāzoichtacātlahtōlli nō moēhualtīz in maltzinteyōtl netitlanizyeyāntli',
+'createaccountmail' => 'Ticnemītīz ahmo cemihcac zāzoichtacātlahtōlli nō in tiquēhualtīz in maltzinteyōtl monetitlanizyeyān',
'createaccountreason' => 'Tlèka:',
'badretype' => 'Ahneneuhqui motlahtōlichtacāyo.',
'userexists' => 'In tlatequitiltilīltōcāitl in ōquipehpen ye ia.
Timitztlātlauhtia xicchīhua occeppa.',
'wrongpasswordempty' => 'Ayāc motlahtōlichtacāyo.
Timitztlātlauhtia xicchīhua occeppa.',
-'mailmypassword' => 'Notech moēhualtia maltzinteyōtl netitlaniztica yancuīc ichtacātlahtōlli',
+'mailmypassword' => 'Motlacuepilīz mochtacātlahtōl',
'noemail' => '"$1" ahmo quipiya īe-mailcān.',
'passwordsent' => 'Ōmoihuah yancuīc motlahtōlichtacāyo īhuīc mo e-mail ("$1").
Occeppa xicalaqui niman ticmatīz.',
'mailerror' => 'Ahcuallōtl e-mailcopa: $1',
'emailconfirmlink' => 'Ticchicāhua mo e-mail',
'accountcreated' => 'Cuentah ōmochīuh',
-'accountcreatedtext' => 'Tlatequitiltilīlcuentah ic $1 ōmochīuh.',
+'accountcreatedtext' => 'In ītlatequitiltilīllapōhual in [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|talk]]) ōquiyōcoyalo.',
'createaccount-title' => 'Cuentah ītlachīhualiz ic {{SITENAME}}',
'loginlanguagelabel' => 'Tlâtòlli: $1',
'newpassword' => 'Yancuīc motlahtōlichtacayo:',
'retypenew' => 'Occeppa xiquihcuiloa yancuīc motlahtōlichtacayo:',
'resetpass_submit' => 'Xicpatlāz motlahtōlichtacāyo auh xicalaquīz',
-'changepassword-success' => '¡Cualli ōmopatlac motlahtōlichtacāyo! Āxcān ticalaquicah...',
+'changepassword-success' => 'Mochtacātlahtōl cualli ōtlapatlalo.',
'resetpass_forbidden' => 'Tlahtōlichtacayōtl ahmo mohuelītih mopatlah',
'resetpass-submit-loggedin' => 'Ticpatlāz motlahtōlichtacāyo',
'resetpass-submit-cancel' => 'Ticcuepāz',
'loginreqlink' => 'ximocalaqui',
'loginreqpagetext' => 'Tihuīquilia $1 ic tiquintta occequīntīn zāzaniltin.',
'accmailtitle' => 'Tlahtōlichtacāyōtl ōmoihuah.',
-'accmailtext' => "Cē zāzotlahtōlichtacāyōtl ōcyōcox [[User talk:$1|$1]] moquitītlani īhuīc $2.
-
-In tlahtōlichtacāyōtl īpal inīn yancuīc cuenta hueliti ticpatlalo zāzanilpan ''[[Special:ChangePassword|tlahtōlichtacāyōtl patlaliztli]]'' zatepan ōticalac.",
+'accmailtext' => "Ōquiyōcox zāzochtacātlahtōlli in [[User talk:$1|$1]] auh ōmoquitītlan īhuīc $2. Tihueliti ticpatlaz īpan ''[[Special:ChangePassword|Ticpatlaz in ]]'' in ōticalaco achtopa.",
'newarticle' => '(Yancuīc)',
'newarticletext' => 'Ōtictocac cētiliztli cē zāzanilhuīc oc ahmo ia. Intlā quiēlēhuia quichīhua, xitlahcuiloa niman (nō xiquitta [[{{MediaWiki:Helppage}}|tēpalēhuiliztli zāzanilli]] huehca ōmpa tlapatlaliztli). Intlā ahmo, yāuh achtopa zāzanilli.',
'noarticletext' => 'In āxcān, ahmō onca tlahcuilōlli inīn zāzanilpan.
'hiddencategories' => 'Inīn zāzanilli mopiya {{PLURAL:$1|1 neneuhcāyōc ōmotlāti|$1 neneuhcāyōc ōmotlāti}}:',
'nocreatetext' => 'Inīn huiqui ōquitzacuili tlahuelītiliztli ic tlachīhua yancuīc zāzaniltin. Tichuelīti ticcuepa auh ticpatla cē zāzanilli, [[Special:UserLogin|xicalaqui nozo xicchīhua cē cuentah]].',
'nocreate-loggedin' => 'Ahmo tihuelīti tiquinchīhua yancuīc zāzaniltin.',
-'permissionserrors' => 'Huelītiliztechcopa ahcuallōtl',
+'permissionserrors' => 'Tēmācāhualiztli aiuhcāyōtl',
'permissionserrorstext' => 'Ahmo tihuelīti quichīhua inōn, inīn {{PLURAL:$1|īxtlamatilizpampa}}:',
'permissionserrorstext-withaction' => 'Ahmo tiquihuelīti $2 inīn {{PLURAL:$1|īxtlamatilizpampa}}:',
'moveddeleted-notice' => 'Inīn zāzanilli ōmopolo.
'page_last' => 'xōcoyōc',
'history-fieldset-title' => 'Tictēmōz īpan tlahcuilōlloh',
'history-show-deleted' => 'Zan tlapolōlli',
-'histfirst' => 'Achto',
-'histlast' => 'Yancuīc',
+'histfirst' => 'in achto',
+'histlast' => 'in tlatzaucticah',
'historysize' => '({{PLURAL:$1|1 byte|$1 byte}})',
'historyempty' => '(iztāc)',
'revisiondelete' => 'Tiquimpolōz/ahtiquimpolōz tlachiyaliztli',
'revdelete-show-file-submit' => 'Quēmah',
'revdelete-selected' => "'''{{PLURAL:$2|Tlachiyaliztli ōmoēlēhui|Tlachiyaliztli ōmoēlēhuih}} [[:$1]] ītechcopa:'''",
-'revdelete-hide-text' => 'Tictlātīz tlachiyaliztli ītlahcuilōl',
+'revdelete-hide-text' => 'In tlahtlachiyaliztli ītlahcuilōl',
'revdelete-hide-image' => 'Tictlātīz tlahcuilōlli ītlapiyaliz',
-'revdelete-radio-set' => 'Quēmah',
-'revdelete-radio-unset' => 'Ahmo',
+'revdelete-radio-set' => 'Tlaīnāyalli',
+'revdelete-radio-unset' => 'Ittalōni',
'revdel-restore' => 'Ticpatlāz tlattaliztli',
'pagehist' => 'Zāzanilli tlahcuilōlloh',
'deletedhist' => 'Ōtlapolo tlahcuilōlloh',
'history-title' => '«$1» tlahcuilōlloh ītlaihittaliz',
'lineno' => 'Pāntli $1:',
'editundo' => 'Tichuelōz',
-'diff-multi' => '({{PLURAL:$1|Cē tlapatlaliztli nepantlah ahmo motta in ōquichīuh|$1 Tlapatlaliztli nepantlah ahmo mottah in ōquinchīuh}} {{PLURAL:$2|cē tlatequitiltilīlli|$2 tlatequitiltilīltin}})',
# Search results
'searchresults' => 'Tlatēmoliztli',
'rclistfrom' => 'Xiquinttāz yancuīc tlapatlaliztli īhuīcpa $1',
'rcshowhideminor' => '$1 tlapatlalitzintli',
'rcshowhidebots' => '$1 tepoztlācah',
-'rcshowhideliu' => '$1 tlatequitiltilīlli ōmocalacqueh',
+'rcshowhideliu' => '$1 tēmachiyōmacalli tlatequitiltilīltin',
'rcshowhideanons' => '$1 ahtōcā tlatequitiltilīlli',
'rcshowhidepatr' => '$1 tlapatlaliztli mochiyahua',
'rcshowhidemine' => '$1 notlahcuilōl',
'contributions-title' => 'Tlatequitiltilīlli $1 ītlahcuilōl',
'mycontris' => 'Notlahcuilōl',
'contribsub2' => '$1 ($2)',
-'uctop' => '(ahco)',
+'uctop' => '(āxcān tlapatlaliztli)',
'month' => 'Īhuīcpa mētztli (auh achtopa):',
'year' => 'Xiuhhuīcpa (auh achtopa):',
'tooltip-pt-watchlist' => 'Zāzaniltin tiquintlachiya ic tlapatlaliztli',
'tooltip-pt-mycontris' => 'Notlahcuilōl',
'tooltip-pt-login' => 'Tihuelīti timocalaqui, tēl ahmo tihuīquilia.',
-'tooltip-pt-anonlogin' => 'Tihuelīti timocalaqui, tēl ahmo tihuīquilia.',
'tooltip-pt-logout' => 'Tiquīzāz',
'tooltip-ca-talk' => 'Inīn tlahcuilōlli ītēixnāmiquiliz',
'tooltip-ca-edit' => 'Tihuelīti ticpatla inīn zāzanilli. Timitztlātlauhtiah, tiquiclica achtochīhualizpan achtopa ticpiya.',
'version' => 'Machiyōtzin',
'version-specialpages' => 'Nònkuâkìskàtlaìxtlapaltìn',
'version-other' => 'Occē',
-'version-version' => '(Machiyōtzin $1)',
+'version-version' => '($1)',
'version-software-version' => 'Machiyōtzin',
# Special:FileDuplicateSearch
# General errors
'error' => 'Chhò-gō·',
'databaseerror' => 'Chu-liāu-khò· chhò-gō·',
+'databaseerror-query' => '揣:',
+'databaseerror-function' => '功能:',
+'laggedslavemode' => "'''提醒:'''頁內容可能毋是上新的。",
'readonly' => 'Chu-liāu-khò· só tiâu leh',
'enterlockreason' => 'Phah beh hong-só ê lí-iû, pau-koah ko͘-kè siáⁿ-mi̍h sî-chūn ē kái-tû hong-só.',
'readonlytext' => 'Chu-liāu-khò· hiān-chú-sî só tiâu leh, bô khai-hòng hō· lâng siu-kái. Che tāi-khài sī in-ūi teh pān î-siu khang-khòe, oân-sêng liáu-āu èng-tong tō ē hôe-ho̍k chèng-siông. Hū-chek ê hêng-chèng jîn-oân lâu chit-ê soat-bêng: $1',
Che it-poaⁿ sī in-ūi koè-sî ê cheng-chha ia̍h sī le̍k-sú liân-kiat ê ia̍h í-keng hông thâi tiàu.
Nā m̄-sī hit chióng chêng-hêng, lí khó-lêng tú tio̍h nńg-thé ê chhò-ngō͘. Chhiáⁿ pò hō͘ chi̍t ūi [[Special:ListUsers/sysop|koán-lí-goân]], ūi liân-kiat hiâ khì lâu thong-ti .',
+'missingarticle-rev' => '(修訂版本#:$1)',
+'missingarticle-diff' => '(精差:$1,$2)',
+'readonly_lag' => '佇附屬的資料庫更新到主要資料庫資料的時陣,資料庫會自動鎖定。',
'internalerror' => 'Loē-pō͘ ê chhò-ngō͘',
'internalerror_info' => 'Loē-pō͘ ê chhò-ngō͘: $1',
'fileappenderrorread' => 'Ka-ji̍p(append) ê sî bô-hoat-tō͘ thak "$1".',
'unexpected' => 'Koài-koài ê pió-tat: "$1"="$2"。',
'formerror' => 'Chhò-gō·: bô-hoat-tō· kā pió sàng chhut khì.',
'badarticleerror' => 'Bē-tàng tiàm chit ia̍h chip-hêng chit ê tōng-chok.',
-'cannotdelete' => 'Bô-hoat-tō· kā hit ê ia̍h a̍h-sī iáⁿ-siōng thâi tiāu. (Khó-lêng pa̍t-lâng í-keng kā thâi tiāu ah.)',
+'cannotdelete' => 'Bô-hoat-tō· kā hit ê ia̍h a̍h-sī iáⁿ-siōng 「$1」 thâi tiāu. (Khó-lêng pa̍t-lâng í-keng kā thâi tiāu ah.)',
+'cannotdelete-title' => '無法度共"$1"這頁刣掉。',
'badtitle' => 'M̄-chiâⁿ piau-tê',
'badtitletext' => 'Iau-kiû ê piau-tê sī bô-hāu ê, khang ê, a̍h-sī liân-kiat chhò-gō· ê inter-language/inter-wiki piau-tê.',
'perfcached' => 'Ē-kha ê chu-liāu tùi lâi--ê, só·-í bī-pit oân-choân hoán-èng siōng sin ê chōng-hóng. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
'rows' => 'Chōa:',
'columns' => 'Nôa',
'searchresultshead' => 'Chhiau-chhōe kiat-kó ê siat-tēng',
-'resultsperpage' => '1 ia̍h hián-sī kúi kiāⁿ:',
'recentchangesdays' => 'Hián-sī kúi ji̍t chòe-kīn ê kái-piàn:',
'recentchangesdays-max' => 'siōng-choē $1 {{PLURAL:$1|kang|kang}}',
'recentchangescount' => 'Hián-sī kúi tiâu chòe-kīn ê kái-piàn:',
$messages = array(
# User preference toggles
'tog-underline' => "Sottolinia 'e jonte:",
-'tog-justify' => "Alliniamento d''e paracrafe mpare",
'tog-hideminor' => "Annascunne 'e cagne piccirille 'int'a ll'úrdeme cagne",
'tog-hidepatrolled' => "Annascunne 'e cagne 'verificate' 'int'a ll'úrdeme cagne",
'tog-extendwatchlist' => "Spanne ll'asservate speciale pe fà vedé tutte 'e cagnàmiente, nun solo l'ultimo",
'tog-usenewrc' => 'Urdeme càgnamiente avanzate (JavaScript)',
'tog-numberheadings' => "Annúmmera automatecamente 'e títule",
-'tog-showtoolbar' => "Aspone 'a barra d''e stromiente 'e cagno (JavaScript)",
-'tog-editondblclick' => "Cagna 'e pàggene cliccanno ddoje vote (JavaScript)",
-'tog-editsection' => "Permette 'e cagnà 'e sezzione cu a jonta [cagna]",
-'tog-editsectiononrightclick' => "Permette 'e cangne 'e sezzione cliccanno p''o tasto destro ncopp 'e titule 'e sezzione (JavaScript)",
-'tog-showtoc' => "Mosta ll'innece pe 'e paggene cu cchiù 'e 3 sezzione",
+'tog-showtoolbar' => "Aspone 'a barra d''e stromiente 'e cagno",
+'tog-editondblclick' => "Cagna 'e pàggene cliccanno ddoje vote",
+'tog-editsectiononrightclick' => "Permette 'e cangne 'e sezzione cliccanno p''o tasto destro ncopp 'e titule 'e sezzione",
'tog-rememberpassword' => "Ricurda 'a registrazzione pe' cchiu sessione (ppe 'numassimo 'e $1 {{PLURAL:$1|juorno|juorne}})",
'underline-always' => 'Sèmpe',
'newwindow' => "(s'arape n'ata fenèsta)",
'cancel' => 'Scancèlla',
'moredotdotdot' => 'Cchiù...',
-'morenotlisted' => 'Atro...',
+'morenotlisted' => 'Chisto elenco nun è cumpreto.',
'mypage' => 'Paggena',
'mytalk' => "'E mmie chiàcchieriate",
'anontalk' => 'Chiacchierate pe chisto IP',
# 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).
'aboutsite' => "'Nfrummazione ncòpp'a {{SITENAME}}",
'aboutpage' => "Project:'Nfrummazione",
-'copyright' => "Cuntenuti suggietti a licienza 'e uso $1.",
+'copyright' => "Cuntenute suggiette a licienza 'e auso $1 se nun fuje ritto atro.",
'copyrightpage' => '{{ns:project}}:Copyrights',
'currentevents' => 'Novità',
'currentevents-url' => 'Project:Novità',
'internalerror' => "Errore 'nterno",
'internalerror_info' => "Errore 'nterno: $1",
'filedeleteerror' => 'Nun se pô scancellà \'o file "$1"',
-'cannotdelete' => "Nun è possibbele scassà 'a paggena o 'a fiura addamannata. (Putria éssere stato già scancellato.)",
+'cannotdelete' => "Nun è possibbele scassà 'a paggena o 'a fiura $1 addamannata. Putria éssere stato già scancellato.",
'badtitle' => "'O nnomme nun è jùsto",
'viewsource' => 'Vere sorgente',
'viewsource-title' => "Vere surgente 'e $1",
# Login and logout pages
'logouttext' => "'''Site asciùte.'''
-Putite cuntinuà a ausà {{SITENAME}} comme n'utente senza nomme, o si nò putite trasì n'ata vota, cu 'o stesso nomme o cu n'ato nomme.",
+Nota ca arcune paggene potrebbero cuntinuà ad apparire comme se 'o logout nun fosse avvenuto finché nun venne pulita 'a cache d\"o proprio browser.",
'welcomeuser' => 'Bemmenuto, $1!',
'yourname' => 'Nomme utente',
'userlogin-yourname' => 'Nomme utente',
'loginsuccess' => "'''Si stato cunnesso ô server 'e {{SITENAME}} cu 'o nomme utente 'e \"\$1\".'''",
'nosuchusershort' => 'Nun ce stanno utente cu o nòmme "$1". Cuntrolla si scrivìste buòno.',
'nouserspecified' => "Tiene 'a dìcere nu nomme pricìso.",
-'acct_creation_throttle_hit' => 'Ce dispiace, haje già criato $1 utente. Nun ne pô crià ate.',
+'acct_creation_throttle_hit' => "{{PLURAL:$1|1 registrazzione è già stata effettuata|$1 registrazzione song già state effettuate}} 'e qualcuno cu 'o tujo stisso innerezzo IP dint'ô urdemo juorno: è 'o massimo cunsentito 'n chisto periodo 'e tiempo.
+Perciò, 'e utente ca ausano chisto innerezzo IP nun possono registrarse ppe 'o mumiento.",
'accountcreated' => 'Cunto criato',
'loginlanguagelabel' => 'Lengua: $1',
'loginreqlink' => "aseguì ll'acciesso",
'loginreqpagetext' => "Pe' veré ate ppaggene abbesognate $1.",
'accmailtitle' => "'O password è stato mannato.",
-'accmailtext' => '\'A password pe ll\'utente "$1" fuje mannata ô nnerizzo $2.',
+'accmailtext' => "'Na password gennerata casualmente ppe [[User talk:$1|$1]] è stata mannata a $2. Chista password può essere càgnata dint'â paggena ppe ''[[Special:ChangePassword|càgna 'a password]]'' subbeto doppo l'acciesso.",
'newarticle' => '(Novo)',
'previewnote' => "'''Chesta è sola n'anteprimma; 'e cagnamiénte â paggena nun songo ancora sarvate!'''",
'editing' => "Cagnamiento 'e $1",
'rev-delundel' => 'faje vedé/annascunne',
'rev-showdeleted' => 'faje vedé',
'revdelete-show-file-submit' => 'Sì',
-'revdelete-radio-set' => 'Sì',
-'revdelete-radio-unset' => 'No',
+'revdelete-radio-set' => 'Nasconde',
+'revdelete-radio-unset' => 'Faje vedé',
'revdel-restore' => 'càgna visiblità',
# Diffs
'newpageletter' => 'N',
'boteditletter' => 'b',
'rc_categories_any' => 'Qualònca',
-'rc-enhanced-expand' => 'Fa vede dettaglie (richiede JavaScript)',
+'rc-enhanced-expand' => 'Fa vede dettaglie',
'rc-enhanced-hide' => 'Annascunne dettaglie',
# Recent changes linked
# Special:Categories
'categories' => 'Categurìe',
-'categoriespagetext' => "Lista cumpleta d\"e categurie presente ncopp' 'o sito.
-[[Special:UnusedCategories|Unused categories]] are not shown here.
-Also see [[Special:WantedCategories|wanted categories]].",
+'categoriespagetext' => "{{PLURAL:$1|'A categurìa 'nnecata 'e seguito cuntiene|'E categurìe 'nnecate 'e seguito cuntengono}} paggene o file multimediale.
+'E [[Special:UnusedCategories|categurìe vuote]] nun song mostrate ccà.
+Vere anche 'e [[Special:WantedCategories|categurìe richieste]].",
# Special:LinkSearch
'linksearch-ok' => 'Truova',
# Protect
'protectedarticle' => 'ha prutetto "[[$1]]"',
'prot_1movedto2' => 'ha spustato [[$1]] a [[$2]]',
-'protect-expiry-options' => '2 ore:2 hours,1 juorno:1 day,3 juorne:3 days,1 semmana:1 week,2 semmane:2 weeks,1 mise:1 month,3 mese:3 months,6 mese:6 months,1 anno:1 year,infinito:infinite',
+'protect-expiry-options' => '1 ore:1 hour,1 juorno:1 day,1 semmana:1 week,2 semmane:2 weeks,1 mese:1 month,3 mise:3 months,6 mise:6 months,1 anno:1 year,infinito:infinite',
# Undelete
'viewdeletedpage' => "Vìre 'e ppàggine scancellate",
# Contributions
'contributions' => 'Contribbute {{GENDER:$1|utente}}',
'mycontris' => "'E ffatiche d''e mmeje",
-'contribsub2' => 'Ppe $1 ($2)',
+'contribsub2' => 'Ppe {{GENDER:$3|$1}} ($2)',
'uctop' => '(attuale)',
'month' => 'D"o mese (e primma):',
'year' => "'E ll'anno (e primma):",
'contribslink' => 'contribuzzione',
'blocklogpage' => 'Blocche',
'blocklogentry' => 'ha fermato "[[$1]]" pe\' nu mumento \'e $2 $3',
-'blocklogtext' => "Chesta è 'a lista d''e azzione 'e blocco e sblocco utente. 'E nnerizze IP bloccate automaticamente nun nce so'. Addumannà 'a [[Special:BlockList|lista IP bloccate]] pp' 'a lista d''e nnerizze e nomme utente 'o ca blocco nce sta.",
+'blocklogtext' => "Chesta è 'a lista d''e azzione 'e blocco e sblocco utente. 'E nnerizze IP bloccate automaticamente nun nce so'. Addumannà 'a [[Special:BlockList|lista bloccate]] pp' 'a lista d''e nnerizze e nomme utente 'o ca blocco nce sta.",
# Move page
'movearticle' => "Spusta 'a paggena",
'confirmemail_loggedin' => "'O nnerizzo 'e e-mail è vàleto",
# Delete conflict
-'deletedwhileediting' => 'Attenziòne: quaccherùno have scancellàto chesta pàggena prìmma ca tu accuminciàste â scrìvere!',
+'deletedwhileediting' => 'Attenziòne: quaccherùno have scancellàto chesta pàggena doppo ca tu accuminciàste â scrìvere!',
# Auto-summaries
'autoredircomment' => 'Redirect â paggena [[$1]]',
$messages = array(
# User preference toggles
'tog-underline' => 'Strek under lenker:',
-'tog-justify' => 'Blokkjusterte avsnitt',
'tog-hideminor' => 'Skjul mindre redigeringer i siste endringer',
'tog-hidepatrolled' => 'Skjul patruljerte redigeringer i siste endringer',
'tog-newpageshidepatrolled' => 'Skjul patruljerte sider fra listen over nye sider',
'tog-numberheadings' => 'Autonummerer overskrifter',
'tog-showtoolbar' => 'Vis verktøylinje',
'tog-editondblclick' => 'Rediger sider ved å dobbeltklikke',
-'tog-editsection' => 'Rediger avsnitt ved hjelp av [rediger]-lenke',
'tog-editsectiononrightclick' => 'Rediger avsnitt ved å høyreklikke på avsnittsoverskrift',
-'tog-showtoc' => 'Vis innholdsfortegnelse (for sider med flere enn tre avsnitt)',
'tog-rememberpassword' => 'Husk meg i denne nettleseren (i høyst $1 {{PLURAL:$1|dag|dager}})',
'tog-watchcreations' => 'Legg til sider jeg oppretter og filer jeg laster opp i min overvåkingsliste',
'tog-watchdefault' => 'Legg til sider og filer jeg endrer på i min overvåkingsliste',
Du kan ignorere denne beskjeden dersom kontoen ble opprettet ved en feil.',
'usernamehasherror' => 'Brukernavn kan ikke inneholde nummertegn.',
-'login-throttled' => 'Du har nylig prøvd for mange ganger å logge inn.
-Vær vennlig å vente $1 før du prøver igjen.',
+'login-throttled' => 'Du har prøvd å logge inn for mange ganger.
+Vent $1 før du prøver på nytt.',
'login-abort-generic' => 'Innleggingen ble avbrutt.',
'loginlanguagelabel' => 'Språk: $1',
'suspicious-userlogout' => 'Din forespørsel om å logge ut ble nektet fordi den så ut til å ha bli sendt av en ødelagt nettleser eller en mellomtjener.',
'retypenew' => 'Gjenta nytt passord:',
'resetpass_submit' => 'Angi passord og logg inn',
'changepassword-success' => 'Passordet ditt ble korrekt endret!',
+'changepassword-throttled' => 'Du har foretatt for mange nylige innloggingsforsøk.
+Vær vennlig å vente $1 før du prøver igjen.',
'resetpass_forbidden' => 'Passord kan ikke endres',
'resetpass-no-info' => 'Du må være logget inn for å gå til denne siden direkte',
'resetpass-submit-loggedin' => 'Endre passord',
'changeemail-password' => 'Ditt passord på {{SITENAME}}:',
'changeemail-submit' => 'Endre e-post',
'changeemail-cancel' => 'Avbryt',
+'changeemail-throttled' => 'Du har foretatt for mange innloggingsforsøk. Vær vennlig å vente $1 før du prøver igjen.',
# Special:ResetTokens
'resettokens' => 'Nullstill merker',
'content-failed-to-parse' => 'Klarte ikke å tolke innholdet $2 for innholdsmodellen $1: $3',
'invalid-content-data' => 'Ugyldig innhold',
'content-not-allowed-here' => 'Innholdsmodellen «$1» er ikke tillatt på siden [[$2]]',
-'editwarning-warning' => 'Ved å forlate siden kan du miste alle endringer du har utført. Om du er logget inn kan du slå av denne advarselen under «Redigering»-seksjonen i innstillingene.',
+'editwarning-warning' => 'Ved å forlate siden kan du miste alle endringer du har gjort.
+Hvis du er innlogget, kan du slå av denne advarselen under "{{int:prefs-editing}}"-avsnittet i dine innstillinger.',
+'editpage-notsupportedcontentformat-title' => 'Innholdsformatet er ikke støttet',
+'editpage-notsupportedcontentformat-text' => 'Innholdsformatet $1 er ikke støttet av innholdsmodellen $2.',
# Content models
'content-model-wikitext' => 'WikiTekst',
'cantcreateaccount-text' => "Kontooppretting fra denne IP-adressen ('''$1''') har blitt blokkert av [[User:$3|$3]].
Grunnen som ble oppgitt av $3 er ''$2''",
+'cantcreateaccount-range-text' => "Opprettelsen av en brukerkonto fra IP-adresser i intervallet '''$1''', som inneholder din IP-adresse ('''$4'''), er blitt blokkert av [[User:$3|$3]].
+
+Årsaken angitt av $3 er ''$2''",
# History pages
'viewpagelogs' => 'Vis logger for denne siden',
'showhideselectedversions' => 'Vis/skjul valgte versjoner',
'editundo' => 'fjern',
'diff-empty' => '(Ingen forskjell)',
-'diff-multi' => '({{PLURAL:$1|Én mellomrevisjon|$1 mellomrevisjoner}} av {{PLURAL:$2|én bruker|$2 brukere}} vises ikke)',
'diff-multi-manyusers' => '({{PLURAL:$1|Én mellomrevisjon|$1 mellomrevisjoner}} av mer enn $2 {{PLURAL:$2|bruker|brukere}} vises ikke)',
'difference-missing-revision' => '{{PLURAL:$2|En revisjon|$2 revisjoner}} av denne forskjellen ($1) {{PLURAL:$2|ble|ble}} ikke funnet.
'search-result-score' => 'Relevans: $1 %',
'search-redirect' => '(omdirigering $1)',
'search-section' => '(avsnitt $1)',
+'search-file-match' => '(matcher filinnhold)',
'search-suggest' => 'Mente du: $1',
'search-interwiki-caption' => 'Søsterprosjekter',
'search-interwiki-default' => '$1-resultater:',
'rows' => 'Rader:',
'columns' => 'Kolonner',
'searchresultshead' => 'Søk',
-'resultsperpage' => 'Resultater per side:',
'stub-threshold' => 'Grense for <span class="mw-stub-example">stubblenkeformatering</span>:',
'stub-threshold-disabled' => 'Deaktivert',
'recentchangesdays' => 'Antall dager som skal vises i siste endringer:',
'recentchanges-label-bot' => 'Denne redigeringen ble gjort av en bot',
'recentchanges-label-unpatrolled' => 'Denne redigeringen har ikke blitt patruljert ennå',
'recentchanges-label-plusminus' => 'Sidestørrelsen kan endres med dette antallet bytes',
+'recentchanges-legend-heading' => "'''Tegnforklaring:'''",
'recentchanges-legend-newpage' => '(se også [[Special:NewPages|liste av nye sider]])',
+'recentchanges-legend-plusminus' => '«(±123)»',
'rcnotefrom' => "Nedenfor er endringene siden '''$2''' (opp til '''$1''' vises).",
'rclistfrom' => 'Vis nye endringer med start fra $1',
'rcshowhideminor' => '$1 mindre endringer',
Om du fortsatt ønsker å laste opp filen, gå tilbake og last den opp under et nytt navn. [[File:$1|thumb|center|$1]]',
'file-exists-duplicate' => 'Denne filen er en dublett av følgende {{PLURAL:$1|fil|filer}}:',
'file-deleted-duplicate' => 'En fil identisk med denne filen ([[:$1]]) har tidligere blitt slettet. Du bør sjekke denne filens slettehistorikk før du prøver å laste den opp på nytt.',
+'file-deleted-duplicate-notitle' => 'En annen fil identisk med denne filen har tidligere blitt slettet og tittelen har blitt fjernet. Du bør sjekke med noen som kan se på fjernede fildata å vurdere saken før filen lastes opp igjen.',
'uploadwarning' => 'Opplastingsadvarsel',
'uploadwarning-text' => 'Vennligst endre filbeskrivelsen nedenfor og prøv igjen.',
'savefile' => 'Lagre fil',
# Random page in category
'randomincategory' => 'Tilfeldig side innenfor kategorien',
'randomincategory-invalidcategory' => '«$1» er ikke et gyldig kategorinavn.',
-'randomincategory-nopages' => 'Det finnes ingen sider i [[:Kategori:$1|$1]]-kategorien.',
+'randomincategory-nopages' => 'Det finnes ingen sider i [[:Category:$1|$1]]-kategorien.',
'randomincategory-selectcategory' => 'Hent en tilfeldig side fra kategori: $1 $2.',
'randomincategory-selectcategory-submit' => 'Start',
'protectedpages' => 'Låste sider',
'protectedpages-indef' => 'Kun beskyttelser på ubestemt tid',
'protectedpages-cascade' => 'Kun dypbeskyttelse',
+'protectedpages-noredirect' => 'Skjul omdirigeringer',
'protectedpagesempty' => 'Ingen sider er for øyeblikket låst med disse paramterne.',
'protectedtitles' => 'Beskyttede titler',
'protectedtitlesempty' => 'Ingen titler beskyttes med disse parameterne for øyeblikket.',
'watchmethod-list' => 'sjekker siste endringer for sider i overvåkningslisten',
'watchlistcontains' => 'Overvåkningslisten inneholder $1 {{PLURAL:$1|side|sider}}.',
'iteminvalidname' => 'Problem med «$1», ugyldig navn …',
-'wlnote' => "Nedenfor er {{PLURAL:$1|den siste endringen|de siste '''$1''' endringene}} {{PLURAL:$2|den siste timen|de siste '''$2''' timene}}, fra den $3, kl. $4",
+'wlnote2' => 'Nedenfor er endringene {{PLURAL:$1|den siste timen|de siste <strong>$1</strong> timene}}, per $2 $3.',
'wlshowlast' => 'Vis siste $1 timer $2 dager $3',
'watchlist-options' => 'Alternativ for overvåkningslisten',
'delete-edit-reasonlist' => 'Rediger begrunnelser for sletting',
'delete-toobig' => 'Denne siden har en stor redigeringshistorikk, med over {{PLURAL:$1|$1 revisjon|$1 revisjoner}}. Muligheten til å slette slike sider er begrenset for å unngå utilsiktet forstyrring av {{SITENAME}}.',
'delete-warning-toobig' => 'Denne siden har en stor redigeringshistorikk, med over {{PLURAL:$1|$1 revisjon|$1 revisjoner}}. Sletting av denne siden kan forstyrre databasen til {{SITENAME}}; vær varsom.',
+'deleting-backlinks-warning' => "'''Advarsel:''' Andre sider linker til eller inkluderer siden du er i ferd med å slette.",
# Rollback
'rollback' => 'Fjern redigeringer',
'editcomment' => "Redigeringskommentaren var: «''$1''»",
'revertpage' => 'Tilbakestilte endring av [[Special:Contributions/$2|$2]] ([[User talk:$2|diskusjon]]) til siste versjon av [[User:$1|$1]]',
'revertpage-nouser' => 'Tilbakestilt endringer av skjult bruker til siste versjon av
-{{GENDER:$1|[[Bruker:$1|$1]]}}',
+{{GENDER:$1|[[User:$1|$1]]}}',
'rollback-success' => 'Tilbakestilte endringer av $1; endret til siste versjon av $2.',
# Edit tokens
Se [[Special:BlockList|blokkeringslisten]] for alle blokkeringer.',
'ipb-blockingself' => 'Du er i ferd med å blokkere deg selv! Er du sikker på at du vil gjøre det?',
'ipb-confirmhideuser' => 'Du er i ferd med å blokkere en bruker med «skjul bruker» aktivert. Dette vil skjule brukerens navn i alle lister og loggoppføringer. Er du sikker på at du vil gjøre dette?',
+'ipb-confirmaction' => 'Marker feltet "{{int:ipb-confirm}}" nederst om du er sikker på at du virkelig vil gjøre det.',
'ipb-edit-dropdown' => 'Rediger blokkeringsgrunner',
'ipb-unblock-addr' => 'Avblokker $1',
'ipb-unblock' => 'Avblokker et brukernavn eller en IP-adresse',
'range_block_disabled' => 'Muligheten til å blokkere flere IP-adresser om gangen er slått av.',
'ipb_expiry_invalid' => 'Ugyldig utløpstid.',
'ipb_expiry_temp' => 'For å skjule brukernavnet må blokkeringen være permanent.',
-'ipb_hide_invalid' => 'Kan ikke skjule denne kontoen. Den kan ha for mange redigeringer.',
+'ipb_hide_invalid' => 'Denne kontoen kan ikke skjules; den har mer enn {{PLURAL:$1|én redigering|$1 redigeringer}}.',
'ipb_already_blocked' => '«$1» er allerede blokkert',
'ipb-needreblock' => '$1 er blokkert fra før. Vil du endre innstillingene?',
'ipb-otherblocks-header' => '{{PLURAL:$1|Annen blokkering|Andre blokkeringer}}',
'allmessages-prefix' => 'Filtrer etter prefiks:',
'allmessages-language' => 'Språk:',
'allmessages-filter-submit' => 'Gå',
+'allmessages-filter-translate' => 'Oversett',
# Thumbnails
'thumbnail-more' => 'Forstørr',
'tooltip-pt-watchlist' => 'Liste over sider du overvåker for endringer.',
'tooltip-pt-mycontris' => 'Liste over dine bidrag',
'tooltip-pt-login' => 'Du oppfordres til å logge inn, men det er ikke obligatorisk',
-'tooltip-pt-anonlogin' => 'Du oppfordres til å logge inn, men det er ikke obligatorisk.',
'tooltip-pt-logout' => 'Logg ut',
'tooltip-ca-talk' => 'Diskusjon om innholdssiden',
'tooltip-ca-edit' => 'Du kan redigere denne siden. Vennligst bruk forhåndsvisningsknappen før du lagrer.',
'confirm-unwatch-button' => 'OK',
'confirm-unwatch-top' => 'Fjern denne siden fra overvåkningslisten din?',
+# Separators for various lists, etc.
+'quotation-marks' => '«$1»',
+
# Multipage image navigation
'imgmultipageprev' => '← forrige side',
'imgmultipagenext' => 'neste side →',
# Language selector for translatable SVGs
'img-lang-default' => '(standardspråk)',
-'img-lang-info' => 'Fremstill dette bildet i $1 $2.',
+'img-lang-info' => 'Vis dette bildet i $1.$2',
'img-lang-go' => 'Start',
# Table pager
'version-hook-subscribedby' => 'Brukes av',
'version-version' => '(versjon $1)',
'version-license' => 'Lisens',
+'version-ext-license' => 'Lisens',
+'version-ext-colheader-name' => 'Utvidelse',
+'version-ext-colheader-version' => 'Versjon',
+'version-ext-colheader-license' => 'Lisens',
+'version-ext-colheader-description' => 'Beskrivelse',
+'version-ext-colheader-credits' => 'Forfattere',
+'version-license-title' => 'Lisens for $1',
+'version-license-not-found' => 'Ingen detaljert lisensinformasjon ble funnet for denne utvidelsen.',
+'version-credits-title' => 'Anerkjennelser for $1',
+'version-credits-not-found' => 'Ingen detaljert anerkjennelsesinformasjon ble funnet for denne utvidelsen.',
'version-poweredby-credits' => "Denne wikien er drevet av '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
'version-poweredby-others' => 'andre',
'version-poweredby-translators' => 'translatewiki.net-oversettere',
'version-entrypoints-header-url' => 'URL',
# Special:Redirect
-'redirect' => 'Omdiriger via filnavn, bruker, eller versjonsid',
+'redirect' => 'Omdiriger via filnavn, bruker eller versjonsid',
'redirect-legend' => 'Omdiriger til en fil eller side',
'redirect-summary' => 'Denne spesialsiden omdirigerer til en fil (hvis et filnavn angis), en side (hvis et redigeringsnummer angis) eller en brukerside (hvis en numerisk brukeridentifikator angis).
Eksempler:[[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]], or [[{{#Special:Redirect}}/user/101]].',
'redirect-lookup' => 'Oppslag:',
'redirect-value' => 'Verdi:',
'redirect-user' => 'Bruker-ID',
+'redirect-page' => 'Side-ID',
'redirect-revision' => 'Sideversjon',
'redirect-file' => 'Filnavn',
'redirect-not-exists' => 'Verdi er ikke funnet',
'api-error-overwrite' => 'Det er ikke tillatt å overskrive eksisterende filer.',
'api-error-stashfailed' => 'Internal error: tjeneren greide ikke å lagre midlertidig fil.',
'api-error-publishfailed' => 'Intern feil: Tjeneren greide ikke å publisere midlertidig fil.',
+'api-error-stasherror' => 'Det oppstod en feil mens filen ble lastet opp til stash.',
'api-error-timeout' => 'Serveren svarte ikke innenfor forventet tid.',
'api-error-unclassified' => 'En ukjent feil har oppstått',
'api-error-unknown-code' => 'Ukjent feil: "$1"',
'expand_templates_input' => 'Skriv inn tekst:',
'expand_templates_output' => 'Resultat',
'expand_templates_xml_output' => 'XML-resultat',
+'expand_templates_html_output' => 'Rå HTML-utskrift',
'expand_templates_ok' => 'OK',
'expand_templates_remove_comments' => 'Fjern kommentarer',
'expand_templates_remove_nowiki' => 'Ikke vis <nowiki>-merkelapper i resultatet',
'expand_templates_generate_xml' => 'Vis parsetre som XML',
+'expand_templates_generate_rawhtml' => 'Vis ubehandlet HTML',
'expand_templates_preview' => 'Forhåndsvisning',
+# Unknown messages
+'uploadinvalidxml' => 'XML-en i den opplastede filen kunne ikke tolkes.',
);
$messages = array(
# User preference toggles
'tog-underline' => 'Verwies ünnerstrieken',
-'tog-justify' => 'Text as Blocksatz',
'tog-hideminor' => 'Kene lütten Ännern in letzte Ännern wiesen',
'tog-hidepatrolled' => 'Nakeken Ännern bi „Toletzt ännert“ nich wiesen',
'tog-newpageshidepatrolled' => 'Nakeken Ännern bi „Ne’e Sieden“ nich wiesen',
'tog-numberheadings' => 'Överschrieven automatsch nummereern',
'tog-showtoolbar' => 'Editeer-Warktüüchlist wiesen',
'tog-editondblclick' => 'Sieden mit Dubbelklick ännern (JavaScript)',
-'tog-editsection' => 'Links för dat Ännern vun en Afsatz wiesen',
'tog-editsectiononrightclick' => 'En Afsatz mit en Rechtsklick ännern (Javascript)',
-'tog-showtoc' => "Wiesen vun'n Inholtsverteken bi Sieten mit mehr as dree Överschriften",
'tog-rememberpassword' => 'Duersam inloggen (för maximaal $1 {{PLURAL:$1|Dag|Daag}})',
'tog-watchcreations' => 'Nee schrevene Sieden op miene Oppasslist setten',
'tog-watchdefault' => 'Op ne’e un ännerte Sieden oppassen',
'compareselectedversions' => 'Ünnerscheed twischen den utwählten Versionen wiesen',
'showhideselectedversions' => 'Utwählt Versionen wiesen/versteken',
'editundo' => 'rutnehmen',
-'diff-multi' => '({{PLURAL:$1|Een Twischenversion|$1 Twischenversionen}} von {{PLURAL:$2|een Bruker|$2 Brukers}} warrt nich wiest.)',
'diff-multi-manyusers' => '({{PLURAL:$1|Een Twischenversion|$1 Twischenversionen}} von mehr as $2 {{PLURAL:$2|Bruker|Brukers}} warrt nich wiest)',
# Search results
'rows' => 'Regen',
'columns' => 'Spalten',
'searchresultshead' => 'Söökresultaten',
-'resultsperpage' => 'Treffer pro Siet',
'stub-threshold' => 'Grött ünner de Lenken op <a href="#" class="stub">Stubbens un lütte Sieden</a> farvlich kenntekent warrn schöölt (in Bytes):',
'stub-threshold-disabled' => 'Utstellt',
'recentchangesdays' => 'Daag, de de List vun de „Ne’esten Ännern“ wiesen schall:',
'watchmethod-list' => 'Oppasslist na letzte Ännern nakieken',
'watchlistcontains' => 'Diene Oppasslist bargt {{PLURAL:$1|ene Siet|$1 Sieden}}.',
'iteminvalidname' => "Problem mit den Indrag '$1', ungülligen Naam...",
-'wlnote' => "Ünnen {{PLURAL:$1|steiht de letzte Ännern|staht de letzten $1 Ännern}} vun de {{PLURAL:$2|letzte Stünn|letzten '''$2''' Stünnen}}.",
'wlshowlast' => 'Wies de letzten $1 Stünnen $2 Daag $3',
'watchlist-options' => 'Optionen för de Oppasslist',
'tooltip-pt-watchlist' => 'Mien Oppasslist',
'tooltip-pt-mycontris' => 'List vun dien Bidrääg',
'tooltip-pt-login' => 'Du kannst di geern anmellen, dat is aver nich nödig, dat du Sieden ännern kannst.',
-'tooltip-pt-anonlogin' => 'Du kannst di geern anmellen, dat is aver nich nödig, dat du Sieden ännern kannst.',
'tooltip-pt-logout' => 'Afmellen',
'tooltip-ca-talk' => 'Diskuschoon över disse Siet',
'tooltip-ca-edit' => 'Du kannst disse Siet ännern. Bruuk dat vör dat Spiekern.',
$messages = array(
# User preference toggles
'tog-underline' => 'Verwiezingen onderstrepen',
-'tog-justify' => "Alinea's uutvullen",
'tog-hideminor' => 'Kleine wiezigingen verbargen in "Leste wiezigingen"',
'tog-hidepatrolled' => 'Wiezigingen die emarkeerd bin verbargen in "Leste wiezigingen"',
'tog-newpageshidepatrolled' => 'Ziejen die emarkeerd bin, verbargen in de lieste mit nieje artikels',
'tog-numberheadings' => 'Koppen vanzelf nummeren',
'tog-showtoolbar' => 'Laot de warkbalke zien',
'tog-editondblclick' => 'Mit dubbelklik bewarken',
-'tog-editsection' => 'Mit bewarkgedeelten',
'tog-editsectiononrightclick' => 'Bewarken van deelziejen meugelik maken mit n rechtermuusklik op n tussenkop',
-'tog-showtoc' => 'Samenvatting laoten zien van de zaken die an bod koemen (mit meer as dree onderwarpen)',
'tog-rememberpassword' => 'Vanzelf anmelden (hooguut $1 {{PLURAL:$1|dag|dagen}})',
'tog-watchcreations' => "Spul wa'k anmake op mien volglieste zetten",
'tog-watchdefault' => "Spul wa'k bewarke op mien volglieste zetten",
'showhideselectedversions' => 'Ekeuzen versies bekieken/verbargen',
'editundo' => 'weerummedreien',
'diff-empty' => '(Gien verschil)',
-'diff-multi' => '(Hier {{PLURAL:$1|zit nog 1 versie|zitten nog $1 versies}} van {{PLURAL:$2|1 gebruker|$2 gebrukers}} tussen die der niet bie staon.)',
'diff-multi-manyusers' => '($1 tussenliggende {{PLURAL:$1|versie|versies}} deur meer as $2 {{PLURAL:$2|gebruker|gebrukers}} niet weeregeven)',
'difference-missing-revision' => "{{PLURAL:$2|Eén versie|$2 versies}} van disse verschillen ($1) {{PLURAL:$2|is|bin}} niet evunnen.
'rows' => 'Regels',
'columns' => 'Kolommen',
'searchresultshead' => 'Zeukresultaoten',
-'resultsperpage' => 'Antal zeukresultaoten per zied',
'stub-threshold' => 'Verwiezingsformattering van <a href="#" class="stub">beginnetjes</a>:',
'stub-threshold-disabled' => 'uutezet',
'recentchangesdays' => 'Antal dagen die "Leste wiezigingen" löt zien:',
'watchmethod-list' => 'Kik joew nao volglieste veur de leste wiezigingen',
'watchlistcontains' => 'Der {{PLURAL:$1|steet 1 zied|staon $1 ziejen}} op joew volglieste.',
'iteminvalidname' => "Verkeerde naam '$1'",
-'wlnote' => 'Hieronder {{PLURAL:$1|steet de leste wieziging|staon de leste $1 wiezigingen}} in {{PLURAL:$2|t aofgeleupen ure|de leste $2 uren}} vanaof $3 um $4.',
'wlshowlast' => 'Laot de veurbieje $1 uur $2 dagen $3 zien',
'watchlist-options' => 'Opsies veur de volglieste',
'tooltip-pt-watchlist' => 'Lieste van bladzieden die op miene volglieste stoan',
'tooltip-pt-mycontris' => 'Liest van oew biejdraegen',
'tooltip-pt-login' => 'Iej wördt van harte oetneugd um oe an te melden as gebroeker, mer t is nich verplicht',
-'tooltip-pt-anonlogin' => 'Iej wördt van harte oetneugd um oe an te maelden as gebroeker, mer t is nich verplicht',
'tooltip-pt-logout' => 'Ofmaelden',
'tooltip-ca-talk' => 'Loat n oaverlegtekst oaver disse bladziede zeen',
'tooltip-ca-edit' => 'Bewaerk disse bladziede',
'minutes' => '{{PLURAL:$1|$1 minuut|$1 minuten}}',
'hours' => '{{PLURAL:$1|$1 ure|$1 uren}}',
'days' => '{{PLURAL:$1|$1 dag|$1 dagen}}',
-'weeks' => '{{PLURAL: $1|één weke|$1 weken}}',
+'weeks' => '{{PLURAL:$1|één weke|$1 weken}}',
'months' => '{{PLURAL:$1|een maond|$1 maonden}}',
'years' => '{{PLURAL:$1|één jaor|$1 jaor}}',
'ago' => '$1 eleen',
* @author Ganesh Paudel
* @author Indiver
* @author Kaganer
+ * @author Krish Dulal
* @author Lkhatiwada
+ * @author Nirmal Dulal
* @author RajeshPandey
* @author Reedy
* @author ne.wikipedia.org sysops
$messages = array(
# User preference toggles
'tog-underline' => 'सम्बन्ध निम्न रेखाङ्कन:',
-'tog-justify' => 'अनुच्छेद जस्टिफाइ(justify) गर्ने',
'tog-hideminor' => 'भर्खरका मामूली सम्पादनहरुलाई लुकाउने',
'tog-hidepatrolled' => 'गस्ती(patrolled)सम्पादनहरु हालका परिवर्तनहरुमा लुकाउने',
-'tog-newpageshidepatrolled' => 'गस्ती(patrolled) पृष्ठहरु नयाँ पृष्ठ सूचीबाट लुकाउने',
+'tog-newpageshidepatrolled' => 'गस्ती गरिएका पृष्ठहरू नयाँ पृष्ठ सूचीबाट लुकाउने',
'tog-extendwatchlist' => 'निगरानी सूचीलाई सबै परिवर्तनहरू देखाउने गरी बढाउने , हालैको बाहेक',
'tog-usenewrc' => 'पृष्ठका भर्खरका परिवर्तन र अवलोकन सूचीको आधारमा सामूहिक परिवर्तनहरु ( जाभास्क्रिप्ट चाहिन्छ)',
'tog-numberheadings' => 'शीर्षकहरुलाई स्वत:अङ्कित गर्नुहोस्',
'tog-showtoolbar' => 'सम्पादन औजारबट्टा देखाउने',
'tog-editondblclick' => 'दोहोरो क्लिकमा पृष्ठ सम्पादन गर्ने',
-'tog-editsection' => '[सम्पादन] सम्बन्ध मार्फत हुने खण्ड सम्पादनलाई सक्षम पार्ने',
'tog-editsectiononrightclick' => 'शीर्षकमा दाहिने क्लिकद्वारा खण्ड सम्पादन सक्षम पार्ने',
-'tog-showtoc' => 'सामग्री तालिका हेर्ने (तीन भन्दा बढी शीर्षक भएमा)',
'tog-rememberpassword' => 'यस ब्राउजरमा मेरो प्रवेशलाई सम्झनुहोस् (अधिकतम $1 {{PLURAL:$1|दिन|दिनहरु}} सम्म)',
'tog-watchcreations' => 'मेरो निगरानी सूचीमा मैले सृजना गरेको पृष्ठ र अपलोड जोड्ने',
'tog-watchdefault' => 'मैले सम्पादन गरेको पृष्ठ र फाइल निगरानी सूचीमा थप्ने',
-'tog-watchmoves' => 'मà¥\88लà¥\87 सारà¥\87à¤\95à¥\8b पà¥\83षà¥\8dठहरà¥\81 र फाà¤\87लहरà¥\81लाई निगरानी सूचीमा थप्ने',
-'tog-watchdeletion' => 'मà¥\88लà¥\87 हà¤\9fाà¤\8fà¤\95à¥\8b पà¥\83षà¥\8dठहरà¥\81 र फाà¤\87लहरà¥\81लाई निगरानी सूचीमा थप्ने',
+'tog-watchmoves' => 'मà¥\88लà¥\87 सारà¥\87à¤\95ा पà¥\83षà¥\8dठहरà¥\82 र फाà¤\87लहरà¥\82लाई निगरानी सूचीमा थप्ने',
+'tog-watchdeletion' => 'मà¥\88लà¥\87 हà¤\9fाà¤\8fà¤\95ा पà¥\83षà¥\8dठहरà¥\82 र फाà¤\87लहरà¥\82लाई निगरानी सूचीमा थप्ने',
'tog-minordefault' => 'सबै सम्पादनहरुलाई पूर्वनिर्धारित रुपमा सामान्य चिनो लगाउने',
'tog-previewontop' => 'सम्पादन सन्दुक अगि पूर्वरुप देखाउने',
'tog-previewonfirst' => 'पहिलो सम्पादनमा पूर्वरुप देखाउने',
'tog-enotifwatchlistpages' => 'मेरो निगरानी सूचीमा रहेका पृष्ठ अथवा फाइलहरु परिवर्तन गरिए मलाई ई-मेल गरियोस्',
'tog-enotifusertalkpages' => 'मेरो प्रयोगकर्ता वार्ता पृष्ठ परिवर्तन गरिए मलाई ई-मेल गर्ने',
-'tog-enotifminoredits' => 'पà¥\83षà¥\8dठहरà¥\81 र फाà¤\87लहरà¥\81à¤\95à¥\8b सामान्य सम्पादन भएमा पनि मलाई ई-मेल गरियोस्',
+'tog-enotifminoredits' => 'पà¥\83षà¥\8dठहरà¥\82 र फाà¤\87लहरà¥\82मा सामान्य सम्पादन भएमा पनि मलाई ई-मेल गरियोस्',
'tog-enotifrevealaddr' => 'जानकारी इ-मेलहरुमा मेरो इ-मेल खुलाउने',
'tog-shownumberswatching' => 'निगरानी गरिरहेका प्रयोगकर्ताहरुको संख्या देखाउने',
'tog-oldsig' => 'वर्तमान हस्ताक्षर:',
'december-date' => 'डिसेम्बर $1',
# Categories related messages
-'pagecategories' => '{{PLURAL:$1|शà¥\8dरà¥\87णà¥\80|शà¥\8dरà¥\87णà¥\80हरà¥\81}}',
+'pagecategories' => '{{PLURAL:$1|शà¥\8dरà¥\87णà¥\80|शà¥\8dरà¥\87णà¥\80हरà¥\82}}',
'category_header' => '"$1" श्रेणीमा भएका लेखहरू',
'subcategories' => 'उपश्रेणीहरु',
'category-media-header' => '"$1" श्रेणीमा रहेका मिडियाहरू',
'category-empty' => "''यो श्रेणीमा हाल कुनै पृष्ठ या मिडियाहरु रहेका छैनन् ।''",
-'hidden-categories' => '{{PLURAL:$1|लà¥\81à¤\95ाà¤\87à¤\8fà¤\95à¥\8b शà¥\8dरà¥\87णà¥\80|लà¥\81à¤\95ाà¤\87à¤\8fà¤\95ा शà¥\8dरà¥\87णà¥\80हरà¥\81}}',
-'hidden-category-category' => 'लà¥\81à¤\95ाà¤\87à¤\8fà¤\95ा शà¥\8dरà¥\87णà¥\80हरà¥\81',
-'category-subcat-count' => '{{PLURAL:$2|यà¥\8b शà¥\8dरà¥\87णà¥\80मा निमà¥\8dन à¤\89पशà¥\8dरà¥\87णà¥\80हरà¥\81 मातà¥\8dर à¤\9bनà¥\8d।|यà¥\8b शà¥\8dरà¥\87णà¥\80à¤\95à¥\8b निमà¥\8dन {{PLURAL:$1|à¤\89पशà¥\8dरà¥\87णà¥\80|$1 à¤\89पशà¥\8dरà¥\87णà¥\80हरà¥\81}}, $2 à¤\95à¥\81ल मधà¥\8dयà¥\87 शà¥\8dरà¥\87णà¥\80हरà¥\81 छन् ।}}',
+'hidden-categories' => '{{PLURAL:$1|लà¥\81à¤\95ाà¤\87à¤\8fà¤\95à¥\8b शà¥\8dरà¥\87णà¥\80|लà¥\81à¤\95ाà¤\87à¤\8fà¤\95ा शà¥\8dरà¥\87णà¥\80हरà¥\82}}',
+'hidden-category-category' => 'लà¥\81à¤\95ाà¤\87à¤\8fà¤\95ा शà¥\8dरà¥\87णà¥\80हरà¥\82',
+'category-subcat-count' => '{{PLURAL:$2|यà¥\8b शà¥\8dरà¥\87णà¥\80मा निमà¥\8dन à¤\89पशà¥\8dरà¥\87णà¥\80हरà¥\82 मातà¥\8dर à¤\9bनà¥\8d।|यà¥\8b शà¥\8dरà¥\87णà¥\80à¤\95à¥\8b निमà¥\8dन {{PLURAL:$1|à¤\89पशà¥\8dरà¥\87णà¥\80|$1 à¤\89पशà¥\8dरà¥\87णà¥\80हरà¥\82}}, $2 à¤\95à¥\81ल मधà¥\8dयà¥\87 शà¥\8dरà¥\87णà¥\80हरà¥\82 छन् ।}}',
'category-subcat-count-limited' => 'यो श्रेणीको निम्न {{PLURAL:$1|उपश्रेणी|$1 उपश्रेणीहरु}} छ।',
-'category-article-count' => '{{PLURAL:$2|यà¥\8b शà¥\8dरà¥\87णà¥\80मा à¤\8fà¤\95 मातà¥\8dर पà¥\83षà¥\8dठरहà¥\87à¤\95à¥\8b à¤\9b।|à¤\95à¥\81ल $2 मधà¥\8dयà¥\87 यà¥\8b शà¥\8dरà¥\87णà¥\80मा {{PLURAL:$1|पà¥\83षà¥\8dठ|$1 पà¥\83षà¥\8dठहरà¥\81}} रहेका छन् । }}',
-'category-article-count-limited' => 'निमà¥\8dन {{PLURAL:$1|पà¥\83षà¥\8dठ|$1 पà¥\83षà¥\8dठहरà¥\81}} यस श्रेणीमा रहेको ।',
+'category-article-count' => '{{PLURAL:$2|यà¥\8b शà¥\8dरà¥\87णà¥\80मा à¤\8fà¤\95 मातà¥\8dर पà¥\83षà¥\8dठरहà¥\87à¤\95à¥\8b à¤\9b।|à¤\95à¥\81ल $2 मधà¥\8dयà¥\87 यà¥\8b शà¥\8dरà¥\87णà¥\80मा {{PLURAL:$1|पà¥\83षà¥\8dठ|$1 पà¥\83षà¥\8dठहरà¥\82}} रहेका छन् । }}',
+'category-article-count-limited' => 'निमà¥\8dन {{PLURAL:$1|पà¥\83षà¥\8dठ|$1 पà¥\83षà¥\8dठहरà¥\82}} यस श्रेणीमा रहेको ।',
'category-file-count' => '{{PLURAL:$2|यो श्रेणीमा निम्न फाइल मात्र छ ।|निम्न श्रेणीमा {{PLURAL:$1|फाइल|$1 फाइलहरु}} , कुल $2 मध्ये रहेको ।}}',
'category-file-count-limited' => 'निम्न {{PLURAL:$1|फाइल|$1 फाइलहरु}} यस श्रेणीमा रहेको ।',
'listingcontinuesabbrev' => 'निरन्तरता...',
-'index-category' => 'à¤\95à¥\8dरमाà¤\99à¥\8dà¤\95ित पà¥\83षà¥\8dठहरà¥\81',
-'noindex-category' => 'à¤\95à¥\8dरमाà¤\82à¤\95न नà¤\97रिà¤\8fà¤\95ा पà¥\83षà¥\8dठहरà¥\81',
+'index-category' => 'à¤\95à¥\8dरमाà¤\99à¥\8dà¤\95ित पà¥\83षà¥\8dठहरà¥\82',
+'noindex-category' => 'à¤\95à¥\8dरमाà¤\82à¤\95न नà¤\97रिà¤\8fà¤\95ा पà¥\83षà¥\8dठहरà¥\82',
'broken-file-category' => 'टुटेको फाइल लिंकसितको पृष्ठ',
'about' => 'बारेमा',
'aboutpage' => 'Project:बारेमा',
'copyright' => 'सामाग्री $1 अनुसार उपलब्ध छ, खुलाइएको अवस्था बाहेकको हकमा ।',
'copyrightpage' => '{{ns:project}}:प्रतिलिपी अधिकारहरु',
-'currentevents' => 'हालà¥\88à¤\95ा à¤\98à¤\9fनाहरà¥\81',
-'currentevents-url' => 'Project:हालà¥\88à¤\95ा à¤\98à¤\9fनाहरà¥\81',
+'currentevents' => 'हालà¥\88à¤\95ा à¤\98à¤\9fनाहरà¥\82',
+'currentevents-url' => 'Project:हालà¥\88à¤\95ा à¤\98à¤\9fनाहरà¥\82',
'disclaimers' => 'अस्विकारोक्तिहरु',
'disclaimerpage' => 'Project:सामान्य अस्वीकारोक्ति',
'edithelp' => 'सम्पादन सहायता',
'youhavenewmessages' => 'तपाईंको लागि ($2) मा $1 छ ।',
'youhavenewmessagesfromusers' => 'तपाईंको लागि {{PLURAL:$3|प्रयोगकर्ता|$3 प्रयोगकर्ताहरु}} ($2) बाट $1',
'youhavenewmessagesmanyusers' => 'तपाईँलाई धेरै प्रयोगकर्ताहरू($2) बाट $1 छ ।',
-'newmessageslinkplural' => '{{PLURAL:$1|नयाà¤\81 सनà¥\8dदà¥\87श|नयाँ सन्देशहरू}}',
+'newmessageslinkplural' => '{{PLURAL:$1|à¤\8fà¤\89à¤\9fा नयाà¤\81 सनà¥\8dदà¥\87श|999=नयाँ सन्देशहरू}}',
'newmessagesdifflinkplural' => 'अन्तिम {{PLURAL:$1|सम्पादन|सम्पादनहरू}}',
'youhavenewmessagesmulti' => 'तपाईंको लागि $1 मा नयाँ सन्देशहरू छन्',
'editsection' => 'सम्पादन',
'userlogin' => 'प्रवेश गर्ने / नयाँ खाता बनाउने',
'userloginnocreate' => 'लग इन',
'logout' => 'निर्गमन',
-'userlogout' => 'निरà¥\8dà¤\97मन (लà¤\97 à¤\86à¤\89à¤\89)',
+'userlogout' => 'निरà¥\8dà¤\97मन (लà¤\97 à¤\86à¤\89à¤\9f)',
'notloggedin' => 'प्रवेश (लग ईन) नगरिएको',
'userlogin-noaccount' => 'के खाता छैन ?',
'userlogin-joinproject' => '{{SITENAME}} मा खाता खोल्नुहोस् ।',
'''यसलाइ अहिले सम्म संग्रह गरिएको छैन!'''",
'userjspreview' => "'''याद राख्नुहोस तपाईँले आफ्नो प्रयोगकर्ता JavaScript को पूर्वावलोकन मात्र हेरिरहनु भएको छ। '''
'''यसलाइ अहिले सम्म संग्रह गरिएको छैन!'''",
-'sitecsspreview' => "'''याद राख्नुहोस तपाईँले केवल वैश्विक CSS. को पूर्वावलोकन मात्र अवलोकन गर्नु भएको छ। '''
-'''यसलाà¤\87 à¤\85हिलà¥\87 सम्म संग्रह गरिएको छैन!'''",
+'sitecsspreview' => "'''याद राख्नुहोस् तपाईँले केवल विश्वव्यापी CSS. को पूर्वावलोकन मात्र अवलोकन गर्नुभएको छ। '''
+'''यसलाà¤\88 à¤\85हिलà¥\87सम्म संग्रह गरिएको छैन!'''",
'sitejspreview' => "याद राख्नुहोस तपाईँले केवल JavaScript code को पूर्वावलोकन मात्र हेरिरहनु भएको छ। '''
'''यसलाइ अहिले सम्म संग्रह गरिएको छैन!'''",
'userinvalidcssjstitle' => "'''चेतावनी:''' यहाँ कुनैपनि \"\$1\" नामको स्कीन छैन ।
'editingold' => "''चेतावनी: तपाईं यस पृष्ठको अति पुरनो अप्रचलित संशोधनको सम्पादन गर्नुहुँदैछ।'''
यदि तपाईंले यस परिवर्तनलाई संग्रह गर्नु भयो भनें यस पछिका संशोधनहरु नष्ट हुनेछन्।",
'yourdiff' => 'भिन्नताहरु',
-'copyrightwarning' => "à¤\95à¥\83पया धà¥\8dयान दिनà¥\81हà¥\8bसà¥\8d यस {{SITENAME}}मा दिà¤\87à¤\8fà¤\95ा यà¥\8bà¤\97दानहरà¥\81 $2à¤\95à¥\8b तहत समà¥\8dपादन र पà¥\81नरà¥\8dवितरणà¤\95à¥\8bलाà¤\97ि मà¥\81à¤\95à¥\8dत मानिनà¥\87à¤\9b (विवरणà¤\95à¥\8bलाà¤\97ि $1 हà¥\87रà¥\8dनà¥\81हà¥\8bसà¥\8d) । यदि तपाà¤\88à¤\82à¤\95à¥\8b लà¥\87à¤\96लाà¤\88 समà¥\8dपादन à¤\85थवा पà¥\81नà¤\83 वितरण à¤\97राà¤\89न à¤\9aाहनà¥\81 हà¥\81नà¥\8dन à¤à¤¨à¥\87à¤\82 à¤\95à¥\83पया यहाà¤\81 तपाईंको लेख प्रस्तुत नगर्नुहोस् ।<br />
-यदि तपाà¤\88à¤\82 à¤\95िà¤\9fानसाथ à¤à¤¨à¥\8dनà¥\81हà¥\81नà¥\8dà¤\9b à¤\95ि à¤\95à¥\81नà¥\88 लà¥\87à¤\96 मà¥\88लà¥\87 लà¥\87à¤\96à¥\87à¤\95à¥\8b हà¥\8b à¤\85थवा सारà¥\8dवà¤\9cनिà¤\95 à¤\9cà¥\8dà¤\9eानà¤\95à¥\8dषà¥\87तà¥\8dर à¤\85थवा मà¥\81à¤\95à¥\8dत सà¤\82साधनबाà¤\9f लिà¤\87à¤\8fà¤\95à¥\8b हà¥\8b, '''यसà¥\8dतà¥\8b लà¥\87à¤\96 बिना à¤\95पà¥\80राà¤\87à¤\9f यहाà¤\81 नदिनुहोस्!'''",
+'copyrightwarning' => "à¤\95à¥\83पया धà¥\8dयान दिनà¥\81हà¥\8bसà¥\8d यस {{SITENAME}}मा दिà¤\87à¤\8fà¤\95ा यà¥\8bà¤\97दानहरà¥\82 $2à¤\95à¥\8b à¤\85नà¥\81सार समà¥\8dपादन र पà¥\81नरà¥\8dवितरणà¤\95à¥\8bलाà¤\97ि à¤\96à¥\81ला मानिनà¥\87à¤\9b (विवरणà¤\95à¥\8bलाà¤\97ि $1 हà¥\87रà¥\8dनà¥\81हà¥\8bसà¥\8d) । यदि तपाà¤\88à¤\82à¤\95à¥\8b लà¥\87à¤\96लाà¤\88 समà¥\8dपादन à¤\85थवा पà¥\81नà¤\83 वितरण à¤\97राà¤\89न à¤\9aाहनà¥\81हà¥\81नà¥\8dन à¤à¤¨à¥\87 à¤\95à¥\83पया यहाà¤\81 तपाईंको लेख प्रस्तुत नगर्नुहोस् ।<br />
+यदि तपाà¤\88à¤\82 à¤\95िà¤\9fानसाथ à¤à¤¨à¥\8dनà¥\81हà¥\81नà¥\8dà¤\9b à¤\95ि à¤\95à¥\81नà¥\88 लà¥\87à¤\96 मà¥\88लà¥\87 लà¥\87à¤\96à¥\87à¤\95à¥\8b हà¥\8b à¤\85थवा सारà¥\8dवà¤\9cनिà¤\95 à¤\9cà¥\8dà¤\9eानà¤\95à¥\8dषà¥\87तà¥\8dर à¤\85थवा मà¥\81à¤\95à¥\8dत सà¤\82साधनबाà¤\9f लिà¤\87à¤\8fà¤\95à¥\8b हà¥\8b, '''यसà¥\8dतà¥\8b लà¥\87à¤\96 à¤\95पिराà¤\87à¤\9fबिना यहाà¤\81 नराà¤\96à¥\8dनुहोस्!'''",
'copyrightwarning2' => "कृपया ध्यान दिनुहोस् यस {{SITENAME}}मा दिइएका योगदानहरुलाई अन्य योगदाताहरुद्वारा सम्पादन गरिनेछ, परिवर्तन गरिनेछ अथवा हटाइनेछ। यदि तपाईंको लेखलाई निर्दयता पूर्वक सम्पादन गरेको चाहनुहुन्न भनें त्यो यहाँ नदिनुहोस्।<br />
यदि तपाईं किटानसाथ भन्नुहुन्छ कि यो लेख तपाईं आफै लेखेको हो अथवा सार्वजनिक ज्ञानक्षेत्र अथवा मुक्त संसाधनबाट लिइएको हो (विवरणकोलागि हेर्नुहोस् $1 ).
'''कपीराइट भएको रचना अनुमति बिना यहाँ नदिनुहोस्!'''",
'semiprotectedpagewarning' => "'''सूचना:''' यो पृष्ठलाई सुरक्षित गरिएको हुँदा दर्ता भएका प्रयोगकर्ताहरुले मात्र यसलाई सम्पादन गर्न सक्छन्। संदर्भको लागि नविनतम लग प्रविष्टि तल दिइएको छ:",
'cascadeprotectedwarning' => "'''चेतावनी:''' यस पृष्ठलाई सुरक्षित गरिएको छ यसकारण संशोधन प्रबन्धनको विशेषाधिकार प्राप्त प्रयोगकर्ताले मात्र सम्पादन गर्न सक्नेछन् किन भनें यो {{PLURAL:$1|पृष्ठ|पृष्ठहरु}}को सुरक्षित निम्न सुचिमा सुरक्षित छ :",
'titleprotectedwarning' => "'''चेतावनी:''' यो पृष्ठलाई सुरक्षित गरिएकोछ र यसलाई सृजना गर्न [[Special:ListGroupRights|विशेषाधिकार]] चाहिन्छ । संदर्भको लागि नवीनतम लग प्रविष्टि तल दिइएको छ:",
-'templatesused' => 'यस पà¥\83षà¥\8dठमा पà¥\8dरयà¥\8bà¤\97 à¤à¤\8fà¤\95ा {{PLURAL:$1|Template|à¤\9fà¥\87मà¥\8dपà¥\8dलà¥\87à¤\9f(नमà¥\82ना)हरà¥\81}} :',
-'templatesusedpreview' => 'यस पà¥\83षà¥\8dठमा पà¥\8dरयà¥\8bà¤\97 à¤à¤\8fà¤\95ा {{PLURAL:$1|Template|à¤\9fà¥\87मà¥\8dपà¥\8dलà¥\87à¤\9f(नमà¥\82ना)हरà¥\81}} :',
+'templatesused' => 'यस पà¥\83षà¥\8dठमा पà¥\8dरयà¥\8bà¤\97 à¤à¤\8fà¤\95ा {{PLURAL:$1|Template|à¤\9fà¥\87मà¥\8dपà¥\8dलà¥\87à¤\9f(ढाà¤\81à¤\9aा)हरà¥\82}} :',
+'templatesusedpreview' => 'यस पà¥\83षà¥\8dठमा पà¥\8dरयà¥\8bà¤\97 à¤à¤\8fà¤\95ा {{PLURAL:$1|Template|à¤\9fà¥\87मà¥\8dपà¥\8dलà¥\87à¤\9f(ढाà¤\81à¤\9aा)हरà¥\82}} :',
'templatesusedsection' => '{{PLURAL:$1|ढाँचा प्रयोग गरिएकोछ|ढाँचाहरु प्रयोग गरिएकाछन्}} यस खण्डमा:',
'template-protected' => '(सुरक्षित)',
'template-semiprotected' => '(अर्ध-सुरक्षित)',
-'hiddencategories' => 'यà¥\8b पà¥\83षà¥\8dठनिमà¥\8dन {{PLURAL:$1|1 लà¥\81à¤\95ाà¤\87à¤\8fà¤\95à¥\8b शà¥\8dरà¥\87णà¥\80|$1 लà¥\81à¤\95ाà¤\87à¤\8fà¤\95ा शà¥\8dरà¥\87णà¥\80हरà¥\81}}को सदस्य हो :',
+'hiddencategories' => 'यà¥\8b पà¥\83षà¥\8dठनिमà¥\8dन {{PLURAL:$1|1 लà¥\81à¤\95ाà¤\87à¤\8fà¤\95à¥\8b शà¥\8dरà¥\87णà¥\80|$1 लà¥\81à¤\95ाà¤\87à¤\8fà¤\95ा शà¥\8dरà¥\87णà¥\80हरà¥\82}}को सदस्य हो :',
'edittools' => '<!-- Text here will be shown below edit and upload forms. -->',
'edittools-upload' => '-',
'nocreatetext' => '{{SITENAME}} ले नयाँ पृष्ठ सृजना गर्न सक्ने क्षमतामा रोक लगाएको छ।
# Parser/template warnings
'expensive-parserfunction-warning' => "'''चेतावनी:''' यस पृष्टका अति धेरै संख्याका महँगा पार्सर फंक्सन कल्स (expensive parser function calls) छन्।
यसमा $2 भन्दा कम {{PLURAL:$2|कल|कल्स}} हुनुपर्छ, यहाँ {{PLURAL:$1|अहिले $1 कल छ|अहिले $1 कल्स छ्न्}}.",
-'expensive-parserfunction-category' => "à¤\85ति धà¥\87रà¥\87 मà¥\87हनत परà¥\8dनà¥\87 '''पारà¥\8dसर फà¤\99à¥\8dसन à¤\95ल'''हरà¥\81 à¤à¤\8fà¤\95ा पà¥\83षà¥\8dठहरà¥\81",
+'expensive-parserfunction-category' => "à¤\85ति धà¥\87रà¥\88 मà¥\87हनत परà¥\8dनà¥\87 '''पारà¥\8dसर फà¤\99à¥\8dसन à¤\95ल'''हरà¥\82 à¤à¤\8fà¤\95ा पà¥\83षà¥\8dठहरà¥\82",
'post-expand-template-inclusion-warning' => "'''चेतावनी:''' समेट्नुपर्ने टेम्प्लेट(नमुना) आकार अति ठूलो छ।
केही टेम्प्लेटहरु(नमुनाहरु) समेटिने छैनन् ।",
'post-expand-template-inclusion-category' => 'पृष्ठहरु जहाँ समेटिएको टेम्पलेट आकार हुनुपर्ने भन्दा बढि छ ।',
'post-expand-template-argument-warning' => "'''चेतावनी:''' यो पृष्ठकमा कम्तिमा एक टेम्प्लेट मान रहेको छ जसको धेरै ठूलो बढोत्तरी आकार रहेको छ।
यस्ता मानहरु हटाइएका छन् ।",
-'post-expand-template-argument-category' => 'मà¥\87à¤\9fिà¤\8fà¤\95ा ढाà¤\81à¤\9aाहरà¥\81सà¤\81à¤\97 समà¥\8dबनà¥\8dध रहà¥\87à¤\95ा पà¥\83षà¥\8dठहरà¥\81',
+'post-expand-template-argument-category' => 'मà¥\87à¤\9fिà¤\8fà¤\95ा ढाà¤\81à¤\9aाहरà¥\82सà¤\81à¤\97 समà¥\8dबनà¥\8dध रहà¥\87à¤\95ा पà¥\83षà¥\8dठहरà¥\82',
'parser-template-loop-warning' => 'ढाँचागत ग़ाँठो पर्यो : [[$1]]',
'parser-template-recursion-depth-warning' => 'ढाँचा पुन:चक्र गहिराई सिमा ($1) भन्दा बढि भयो',
'language-converter-depth-warning' => 'भाषा परिवर्तनकर्ता गहिराई ($1) नाघेको छ',
'compareselectedversions' => 'छानिएका संस्करणहरू दाँज्नुहोस्',
'showhideselectedversions' => 'छानिएका पुनरावलोकनहरु देखाउने/लुकाउने',
'editundo' => 'रद्द गर्ने',
-'diff-multi' => '({{PLURAL:$2|एक प्रयोगकर्ता|$2 प्रयोगकर्ताहरु}}द्वारा {{PLURAL:$1|एउटा मध्यवर्ती संशोधन|$1 मध्यवर्ती संशोधनहरू}} नदेखाइएको)',
'diff-multi-manyusers' => '($2 {{PLURAL:$2|भन्दा अधिक प्रयोगकर्ता|भन्दा अधिक प्रयोगकर्ताहरु}}द्वारा {{PLURAL:$1|एउटा मध्यवर्ती संशोधन|$1 मध्यवर्ती संशोधनहरु}} नदेखाइएको)',
# Search results
'viewprevnext' => 'हेर्नुहोस् ($1 {{int:pipe-separator}} $2) ($3)',
'searchmenu-exists' => "''' \"[[:\$1]]\" नाम गरेको पृष्ठ यो विकीमा रहेको छ'''",
'searchmenu-new' => "'''यस विकिमा \"[[:\$1]]\" शीर्षक भएको पृष्ठ बनाउनुहोस् !'''",
-'searchprofile-articles' => 'सामà¤\97à¥\8dरà¥\80 पà¥\83षà¥\8dठहरà¥\81',
+'searchprofile-articles' => 'सामà¤\97à¥\8dरà¥\80 पà¥\83षà¥\8dठहरà¥\82',
'searchprofile-project' => 'सहायता र आयोजना पृष्ठहरु',
'searchprofile-images' => 'मल्टिमिडिया(श्रव्य दृश्य)',
'searchprofile-everything' => 'सब थोक',
'search-section' => '(खण्ड $1)',
'search-suggest' => 'के तपाईको खोजाई : $1 हो?',
'search-interwiki-caption' => 'भगिनी आयोजना',
-'search-interwiki-default' => '$1 नतिà¤\9cाहरà¥\81:',
+'search-interwiki-default' => '$1 नतिà¤\9cाहरà¥\82:',
'search-interwiki-more' => '(अझै)',
'search-relatedarticle' => 'सम्बन्धित',
'searcheverything-enable' => 'सबै नेमस्पेसेजहरुमा खोज्नुहोस्',
'searchrelated' => 'सम्बन्धित',
'searchall' => 'सबै',
-'showingresults' => "दà¥\87à¤\96ाà¤\89दà¥\88 {{PLURAL:$1|'''१''' नतिà¤\9cा|'''$1''' नतिà¤\9cाहरà¥\81 }} , #'''$2''' बाट सुरुहुने ।",
+'showingresults' => "दà¥\87à¤\96ाà¤\89à¤\81दà¥\88 {{PLURAL:$1|'''१''' नतिà¤\9cा|'''$1''' नतिà¤\9cाहरà¥\82 }} , #'''$2''' बाट सुरुहुने ।",
'showingresultsnum' => "तल देखाउदै {{PLURAL:$3|'''१''' नतिजा|'''$3''' नतिजाहरु }}, #'''$2''' बाट सुरुहुने ।",
'showingresultsheader' => "{{PLURAL:$5|नतिजा '''$1''' को '''$3'''|नतिजाहरु '''$1 - $2''' को'''$3'''}} ,'''$4''' को लागि",
'search-nonefound' => 'तपाईँको क्वेरीसँग मेल खाने नतिजाहरू भेटिएनन्',
याद गर्नुहोस् उनीहरुको {{SITENAME}}को सूची सामग्री पुरानो भएको हुनसक्छ ।',
# Preferences page
-'preferences' => 'रà¥\8bà¤\9cाà¤\88हरू',
+'preferences' => 'रà¥\8bà¤\9cाà¤\87हरू',
'mypreferences' => 'प्राथमिकताहरु',
'prefs-edits' => 'सम्पादन संख्या:',
'prefs-skin' => 'काँचुली',
'prefs-labs' => 'प्रयोगशाला गुणहरु',
'prefs-user-pages' => 'प्रयोगकर्ता पृष्ठहरू',
'prefs-personal' => 'प्रयोगकर्ताको विवरण',
-'prefs-rc' => 'नयाà¤\81 परिवरà¥\8dतनहरà¥\81',
+'prefs-rc' => 'नयाà¤\81 परिवरà¥\8dतनहरà¥\82',
'prefs-watchlist' => 'अवलोकन पृष्ठ',
'prefs-watchlist-days' => 'निगरानी सूचीमा देखाउन दिनहरु:',
'prefs-watchlist-days-max' => 'धेरैमा $1 {{PLURAL:$1|दिन|दिन}}',
'prefs-watchlist-edits-max' => 'उच्चतम संख्या : १०००',
'prefs-watchlist-token' => 'अवलोकन सूची टोकन:',
'prefs-misc' => 'साधारण',
-'prefs-resetpass' => 'प्रवेशशव्द परिवर्रतन',
+'prefs-resetpass' => 'प्रवेश शब्द परिवर्तन',
'prefs-changeemail' => 'इमेल परिवर्तन गर्ने',
'prefs-setemail' => 'इमेल ठेगाना प्रविष्ट गर्ने',
'prefs-email' => 'इमेल विकल्पहरु',
'rows' => 'हरफहरु :',
'columns' => 'स्तम्भहरु :',
'searchresultshead' => 'खोज',
-'resultsperpage' => 'प्रति पृष्ठ खोज मेल(hits):',
'stub-threshold' => '<a href="#" class="stub">ठूटो</a> को लागि थ्रेसहोल्ड स्वरूपण (बाइट):',
'stub-threshold-disabled' => 'निष्क्रिय',
'recentchangesdays' => 'हालको परिवर्तनमा देखाउने दिनहरु:',
'right-createtalk' => 'छलफल पृष्ठ सृजना गर्नुहोस्',
'right-createaccount' => 'नयाँ प्रयोगकर्ता खाता सृजना गर्नुहोस्।',
'right-minoredit' => 'सम्पादनलाई सामान्य चिनो लगाउने',
-'right-move' => 'पà¥\83षà¥\8dठहरà¥\81 सार्ने',
+'right-move' => 'पà¥\83षà¥\8dठहरà¥\82 सार्ने',
'right-move-subpages' => 'तिनीहरुको सह-पृष्ठसहित पृष्ठहरु सार्ने',
'right-move-rootuserpages' => 'मूल(root) प्रयोगकर्ताको पृष्ठहरु सार्ने',
'right-movefile' => 'फाइलहरु सार्ने',
'right-bot' => 'स्वाचालित कार्यको रुपमा व्यवहार गर्ने',
'right-apihighlimits' => 'API खोजको लागि उच्च सीमा प्रयोग गर्नुहोस्',
'right-writeapi' => 'लेखन API प्रयोग गर्ने',
-'right-delete' => 'पà¥\83षà¥\8dठहरà¥\81 मेट्ने',
+'right-delete' => 'पà¥\83षà¥\8dठहरà¥\82 मेट्ने',
'right-bigdelete' => 'लामो इतिहासहरु भएको पृष्ठहरु मेट्ने',
'right-deleterevision' => 'खुलाइएको पृष्ठहरु मेटाउने र मेटाएको रद्द गर्ने',
'right-deletedhistory' => 'मेटाइएको इतिहास प्रविष्टीहरु हेर्ने, तिनीहरुसँग सम्बद्ध पाठ बिना',
'right-deletedtext' => 'मेटाइएका संशोधन बीचका मेटाइएका पाठ र परिवर्तनहरु हेर्ने',
-'right-browsearchive' => 'मà¥\87à¤\9fिà¤\8fà¤\95ा पà¥\83षà¥\8dठहरà¥\81 खोज्ने',
+'right-browsearchive' => 'मà¥\87à¤\9fिà¤\8fà¤\95ा पà¥\83षà¥\8dठहरà¥\82 खोज्ने',
'right-undelete' => 'मेटेको पृष्ठ फिर्तागर्ने',
'right-suppressrevision' => 'प्रबन्धकहरुबाट लुकाइएको पुनरावलोकनहरु पूर्वालोकन गर्ने र पुरानो स्थितिमा फर्काउने',
'right-suppressionlog' => 'व्यक्तिगत लगहरु हेर्ने',
'action-minoredit' => 'यस सम्पादनलाई साधारणको रुपमा चिनो लगाउने',
'action-move' => 'यो पृष्ठलाई सर्ने',
'action-move-subpages' => 'यो पृष्ठ र यसका सह पृष्ठहरुलाई सर्ने',
-'action-move-rootuserpages' => 'मà¥\82ल पà¥\8dरयà¥\8bà¤\97à¤\95रà¥\8dता पà¥\83षà¥\8dठहरà¥\81 सार्ने',
+'action-move-rootuserpages' => 'मà¥\82ल पà¥\8dरयà¥\8bà¤\97à¤\95रà¥\8dता पà¥\83षà¥\8dठहरà¥\82 सार्ने',
'action-movefile' => 'यो फाइल सार्ने',
'action-upload' => 'यो फाइल अपलोड गर्ने',
'action-reupload' => 'रहिआएको फाइल अधिलेखन गर्ने',
'action-delete' => 'यो पृष्ठ मेट्ने',
'action-deleterevision' => 'यो पुनरावलोकन मेट्ने',
'action-deletedhistory' => 'यो पृष्ठको मेटाइएको इतिहास हेर्ने',
-'action-browsearchive' => 'मà¥\87à¤\9fिà¤\8fà¤\95ा पà¥\83षà¥\8dठहरà¥\81 खोज्ने',
+'action-browsearchive' => 'मà¥\87à¤\9fिà¤\8fà¤\95ा पà¥\83षà¥\8dठहरà¥\82 खोज्ने',
'action-undelete' => 'यो पृष्ठ लाइ पुन:स्थापना गर्ने',
'action-suppressrevision' => 'यो लुकाइएको पुनरावलोकनको पुर्वालोकन गर्ने र पुनरावृत्ति गर्ने',
'action-suppressionlog' => 'यो व्यक्तिगत लग हेर्ने',
# Recent changes
'nchanges' => '$1 {{PLURAL:$1|परिवर्तन|परिवर्तनहरु}}',
'enhancedrc-history' => 'इतिहास',
-'recentchanges' => 'नयाà¤\81 परिवरà¥\8dतनहरà¥\81',
+'recentchanges' => 'नयाà¤\81 परिवरà¥\8dतनहरà¥\82',
'recentchanges-legend' => 'हालैको परिवर्तन विकल्पहरु',
'recentchanges-summary' => 'विकिका भर्खरका परिवर्तनहरुलाई यस पृष्ठमा पहिल्याउने',
'recentchanges-feed-description' => 'यो फिडमा रहेको विकीको सवैभन्दा अन्तिम परिवर्तनहरुको जानकारी राख्नुहोस्',
'rc-old-title' => 'मौलिक तौरमा "$1" रुपमा बनाइएको',
# Recent changes linked
-'recentchangeslinked' => 'सà¤\82बनà¥\8dधित परिवरà¥\8dतनहरà¥\81',
-'recentchangeslinked-feed' => 'सà¤\82बनà¥\8dधित परिवरà¥\8dतनहरà¥\81',
-'recentchangeslinked-toolbox' => 'सà¤\82बनà¥\8dधित परिवरà¥\8dतनहरà¥\81',
+'recentchangeslinked' => 'समà¥\8dबनà¥\8dधित परिवरà¥\8dतनहरà¥\82',
+'recentchangeslinked-feed' => 'समà¥\8dबनà¥\8dधित परिवरà¥\8dतनहरà¥\82',
+'recentchangeslinked-toolbox' => 'समà¥\8dबनà¥\8dधित परिवरà¥\8dतनहरà¥\82',
'recentchangeslinked-title' => '"$1"सम्वन्धित परिवर्तनसँग',
'recentchangeslinked-summary' => "यो सूची निर्दिष्ट पृष्ठ (वा निर्दिष्ट श्रेणी)सित जोड़िएका भर्खरै परिवर्तन भएका पृष्ठको हो। [[Special:Watchlist|तपाईँको निगरानी सूची]]का पृष्ठहरु '''गाढा अक्षरमा''' छन्।",
'recentchangeslinked-page' => 'पृष्ठ नाम:',
'upload-recreate-warning' => "'''चेतावनी: त्यस नाममा रहेका फाइलहरु सारिएको या हटाइएको छ।'''
यस पृष्ठको सारिएको र हटाइएको लग तपाईको सहजताको लागि दिइएको छ।",
-'uploadtext' => "फाà¤\87ल à¤\89रà¥\8dधà¥\8dवà¤à¤°à¤£ गर्न निम्न फारम प्रयोग गर्नुहोस्।
-हà¥\87रà¥\8dनà¥\81हà¥\8bसà¥\8d- पहिला à¤\89रà¥\8dधà¥\8dवà¤à¤°à¤£ à¤\97रिà¤\8fà¤\95ा [[Special:FileList|फाà¤\87लहरà¥\81à¤\95à¥\8b सà¥\82à¤\9aà¥\80]] , पà¥\81नà¤\83 à¤\89रà¥\8dधà¥\8dवà¤à¤°à¤£ à¤\97रिà¤\8fà¤\95ा [[Special:Log/upload|à¤\89रà¥\8dधà¥\8dवà¤à¤°à¤£ लà¤\97]]मा , मà¥\87à¤\9fिà¤\8fà¤\95ा फाà¤\87लहरà¥\81 [[Special:Log/delete|मेटिएको लग]]मा।
+'uploadtext' => "फाà¤\87ल à¤\85पलà¥\8bड गर्न निम्न फारम प्रयोग गर्नुहोस्।
+हà¥\87रà¥\8dनà¥\81हà¥\8bसà¥\8d- पहिला à¤\85पलà¥\8bड à¤\97रिà¤\8fà¤\95ा [[Special:FileList|फाà¤\87लहरà¥\82à¤\95à¥\8b सà¥\82à¤\9aà¥\80]] , पà¥\81नà¤\83 à¤\85पलà¥\8bड à¤\97रिà¤\8fà¤\95ा [[Special:Log/upload|à¤\85पलà¥\8bड लà¤\97]]मा, मà¥\87à¤\9fिà¤\8fà¤\95ा फाà¤\87लहरà¥\82 [[Special:Log/delete|मेटिएको लग]]मा।
-पà¥\83षà¥\8dठमा फाà¤\87ल सà¤\82लà¤\97à¥\8dन à¤\97रà¥\8dन तल दिà¤\8fà¤\95ा फारमहरà¥\81मध्ये एउटामा लिङ्क गराउनुहोस्:
+पà¥\83षà¥\8dठमा फाà¤\87ल सà¤\82लà¤\97à¥\8dन à¤\97रà¥\8dन तल दिà¤\8fà¤\95ा फारमहरà¥\82मध्ये एउटामा लिङ्क गराउनुहोस्:
* '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.jpg]]</nowiki></code>'''पूर्ण आकारको फाइल प्रयोग गर्न
-* '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.png|200px|thumb|left|alt text]]</nowiki></code>''' 200 पिक्सलको देब्रेपटि मार्जिन गरेर फाइलको बर्णनसहित प्रयोग गर्न
-* '''<code><nowiki>[[</nowiki>{{ns:media}}<nowiki>:File.ogg]]</nowiki></code>''' फाà¤\87ल नदà¥\87à¤\96ाà¤\88 सिधà¥\88 फाà¤\87लसित लिà¤\99à¥\8dà¤\95 à¤\97रि प्रयोग गर्न",
+* '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.png|200px|thumb|left|alt text]]</nowiki></code>''' 200 पिà¤\95à¥\8dसलà¤\95à¥\8b दà¥\87बà¥\8dरà¥\87पà¤\9fà¥\8dà¤\9fि मारà¥\8dà¤\9cिन à¤\97रà¥\87र फाà¤\87लà¤\95à¥\8b बरà¥\8dणनसहित पà¥\8dरयà¥\8bà¤\97 à¤\97रà¥\8dन
+* '''<code><nowiki>[[</nowiki>{{ns:media}}<nowiki>:File.ogg]]</nowiki></code>''' फाà¤\87ल नदà¥\87à¤\96ाà¤\88 सिà¤\82धà¥\88 फाà¤\87लसित लिà¤\99à¥\8dà¤\95 à¤\97रà¥\80 प्रयोग गर्न",
'upload-permitted' => 'अनुमति पाएका फ़ाइल प्रकार:$1.',
'upload-preferred' => 'चाहिएका फ़ाइल प्रकार:$1.',
'upload-prohibited' => 'निषिद्ध फ़ाइल प्रकार:$1.',
'download' => 'डाउनलोड',
# Unwatched pages
-'unwatchedpages' => 'धà¥\8dयान नदिà¤\87à¤\8fà¤\95ा पà¥\83षà¥\8dठहरà¥\81',
+'unwatchedpages' => 'धà¥\8dयान नदिà¤\87à¤\8fà¤\95ा पà¥\83षà¥\8dठहरà¥\82',
# List redirects
'listredirects' => 'अनुप्रेषित सूची',
'statistics-header-pages' => 'पृष्ठहरुको तथ्याङ्क',
'statistics-header-edits' => 'सम्पादनहरुको तथ्याङ्क',
'statistics-header-views' => 'तथ्याङ्क देखाउनुहोस्',
-'statistics-header-users' => 'पà¥\8dरयà¥\8bà¤\97à¤\95रà¥\8dता तथà¥\8dयाà¤\99à¥\8dà¤\95हरà¥\81',
+'statistics-header-users' => 'पà¥\8dरयà¥\8bà¤\97à¤\95रà¥\8dता तथà¥\8dयाà¤\99à¥\8dà¤\95हरà¥\82',
'statistics-header-hooks' => 'अन्य तथ्याङ्कहरु',
-'statistics-articles' => 'सामà¤\97à¥\8dरà¥\80 पà¥\83षà¥\8dठहरà¥\81',
-'statistics-pages' => 'पà¥\83षà¥\8dठहरà¥\81',
-'statistics-pages-desc' => 'विà¤\95िà¤\95ा सबà¥\88 पà¥\83षà¥\8dठहरà¥\81 , वारà¥\8dतापà¤\95ा पà¥\83षà¥\8dठहरà¥\81 समà¥\87त , रिडाà¤\87रà¥\87à¤\95à¥\8dà¤\9f , इत्यादि ।',
+'statistics-articles' => 'सामà¤\97à¥\8dरà¥\80 पà¥\83षà¥\8dठहरà¥\82',
+'statistics-pages' => 'पà¥\83षà¥\8dठहरà¥\82',
+'statistics-pages-desc' => 'विà¤\95िà¤\95ा सबà¥\88 पà¥\83षà¥\8dठहरà¥\82, वारà¥\8dतापà¤\95ा पà¥\83षà¥\8dठहरà¥\82समà¥\87त, रिडाà¤\87रà¥\87à¤\95à¥\8dà¤\9f, इत्यादि ।',
'statistics-files' => 'उर्ध्वभरण गरिएका फाइलहरु',
'statistics-edits' => '{{SITENAME}} स्थापना भए देखिको पृष्ठ सम्पादन',
'statistics-edits-average' => 'प्रतिपृष्ठ औसत सम्पादन',
'brokenredirects-edit' => 'सम्पादन',
'brokenredirects-delete' => 'मेट्ने',
-'withoutinterwiki' => 'à¤à¤¾à¤·à¤¾ नà¤à¤\8fà¤\95à¥\8b पà¥\83षà¥\8dठहरà¥\81',
+'withoutinterwiki' => 'à¤à¤¾à¤·à¤¾ नà¤à¤\8fà¤\95à¥\8b पà¥\83षà¥\8dठहरà¥\82',
'withoutinterwiki-summary' => 'यी पानाहरूले अन्य भाषाका संस्करणहरूमा संबन्ध राखेका छैनन्:',
'withoutinterwiki-legend' => 'पहिले आउने',
'withoutinterwiki-submit' => 'देखाउने',
-'fewestrevisions' => 'थà¥\8bरà¥\88 पà¥\81नरावलà¥\8bà¤\95न à¤à¤\8fà¤\95ा पà¥\83षà¥\8dठहरà¥\81',
+'fewestrevisions' => 'थà¥\8bरà¥\88 पà¥\81नरावलà¥\8bà¤\95न à¤à¤\8fà¤\95ा पà¥\83षà¥\8dठहरà¥\82',
# Miscellaneous special pages
'nbytes' => '$1 {{PLURAL:$1|बाइट|बाइटहरू}}',
'nimagelinks' => '$1 {{PLURAL:$1|पृष्ठ|पृष्ठहरु}}माथि प्रयोग गरिएको',
'ntransclusions' => '$1 {{PLURAL:$1पृष्ठमा प्रयोग गरिएको|पृष्ठहरुमा प्रयोग गरिएका}}',
'specialpage-empty' => 'यो पृष्ठ खाली छ।',
-'lonelypages' => 'à¤\85नाथ पà¥\83षà¥\8dठहरà¥\81',
-'uncategorizedpages' => 'शà¥\8dरà¥\87णà¥\80à¤\95रण नà¤à¤\8fà¤\95ा पà¥\83षà¥\8dठहरà¥\81',
-'uncategorizedcategories' => 'शà¥\8dरà¥\87णà¥\80à¤\95रण नà¤à¤\8fà¤\95ा शà¥\8dरà¥\87णà¥\80हरà¥\81',
+'lonelypages' => 'à¤\85नाथ पà¥\83षà¥\8dठहरà¥\82',
+'uncategorizedpages' => 'शà¥\8dरà¥\87णà¥\80à¤\95रण नà¤à¤\8fà¤\95ा पà¥\83षà¥\8dठहरà¥\82',
+'uncategorizedcategories' => 'शà¥\8dरà¥\87णà¥\80à¤\95रण नà¤à¤\8fà¤\95ा शà¥\8dरà¥\87णà¥\80हरà¥\82',
'uncategorizedimages' => 'श्रेणीकरण नभएका फाइलहरु',
'uncategorizedtemplates' => 'श्रेणीकरण नभएका टेम्प्लेटहरु',
-'unusedcategories' => 'पà¥\8dरयà¥\8bà¤\97 नà¤à¤\8fà¤\95ा शà¥\8dरà¥\87णà¥\80हरà¥\81',
+'unusedcategories' => 'पà¥\8dरयà¥\8bà¤\97 नà¤à¤\8fà¤\95ा शà¥\8dरà¥\87णà¥\80हरà¥\82',
'unusedimages' => 'प्रयोग नभएका फाइलहरु',
'popularpages' => 'धेरै रूचाईएका पृष्ठहरू',
-'wantedcategories' => 'माà¤\97 à¤à¤\8fà¤\95ा शà¥\8dरà¥\87णà¥\80हरà¥\81',
-'wantedpages' => 'à¤\96à¥\8bà¤\9cिà¤\8fà¤\95ा पà¥\83षà¥\8dठहरà¥\81',
+'wantedcategories' => 'माà¤\97 à¤à¤\8fà¤\95ा शà¥\8dरà¥\87णà¥\80हरà¥\82',
+'wantedpages' => 'à¤\96à¥\8bà¤\9cिà¤\8fà¤\95ा पà¥\83षà¥\8dठहरà¥\82',
'wantedpages-badtitle' => 'नतिजा सूचीमा अमान्य शीर्षक:$1',
'wantedfiles' => 'माग भएका फाइलहरु',
'wantedtemplates' => 'माग भएका टेम्प्लेटहरु',
'mostlinked' => 'सबैभन्दा बढि लिंक भएको पृष्ठ',
-'mostlinkedcategories' => 'सबै भन्दा बढी जोडिएको श्रेणीहरु',
+'mostlinkedcategories' => 'सबैभन्दा बढी लिंक भएका श्रेणीहरू',
'mostlinkedtemplates' => 'ढाँचाहरुसित सबैभन्दा बढि लिंक भएको',
'mostcategories' => 'सबैभन्दा धेरै श्रेणीहरू भएका लेखहरू',
'mostimages' => 'सबैभन्दा बढि लिंक भएको चित्र',
'mostrevisions' => 'सबैभन्दा बढी संशोधित लेखहरू',
'prefixindex' => 'प्रिफिक्स सहितका पृष्ठहरु',
-'shortpages' => 'à¤\9bà¥\8bà¤\9fा पà¥\83षà¥\8dठहरà¥\81',
-'longpages' => 'लामà¥\8b पà¥\83षà¥\8dठहरà¥\81',
-'deadendpages' => 'हदà¥\88-à¤\85नà¥\8dतà¤\95ि पà¥\83षà¥\8dठहरà¥\81',
+'shortpages' => 'à¤\9bà¥\8bà¤\9fा पà¥\83षà¥\8dठहरà¥\82',
+'longpages' => 'लामा पà¥\83षà¥\8dठहरà¥\82',
+'deadendpages' => 'मà¥\8dयाद सà¤\95िà¥\87à¤\8fà¤\95ा पà¥\83षà¥\8dठहरà¥\82',
'deadendpagestext' => 'निम्न पृष्ठहरु {{SITENAME}}मा रहेका अरु पृष्ठहरुसँग जोडिदैनन् ।',
-'protectedpages' => 'सà¤\82रà¤\95à¥\8dषित पà¥\83षà¥\8dठहरà¥\81',
+'protectedpages' => 'सà¤\82रà¤\95à¥\8dषित पà¥\83षà¥\8dठहरà¥\82',
'protectedpages-indef' => 'नखुलेको सुरक्षा मात्र',
'protectedpages-cascade' => 'लामबद्ध सुरक्षाहरु मात्रा',
'protectedpagesempty' => 'दिइएको प्यारामिटर प्रयोग गरि सुरक्षा गरिएका पृष्ठहरु छैनन् ।',
'usercreated' => ' $1को $2 मा {{GENDER:$3|सृजना}} गरिएको',
'newpages' => 'नयाँ पृष्ठहरू',
'newpages-username' => 'प्रयोगकर्ता नाम:',
-'ancientpages' => 'सबà¥\88à¤à¤¨à¥\8dदा पà¥\81राना पà¥\83षà¥\8dठहरà¥\81',
+'ancientpages' => 'सबà¥\88à¤à¤¨à¥\8dदा पà¥\81राना पà¥\83षà¥\8dठहरà¥\82',
'move' => 'सार्ने',
'movethispage' => 'यो पृष्ठ सार्नुहोस्',
'notargettitle' => 'कुनैपनि निसाना(टारगेट) छैन',
'log-title-wildcard' => 'पाठबाट सुरुहुने शीर्षकहरु खोज्नुहोस्',
# Special:AllPages
-'allpages' => 'सबà¥\88 पà¥\83षà¥\8dठहरà¥\81',
+'allpages' => 'सबà¥\88 पà¥\83षà¥\8dठहरà¥\82',
'alphaindexline' => '$1 लाई $2 मा',
'nextpage' => 'अर्को पृष्ठ ($1)',
'prevpage' => 'पहिलो पृष्ठ ($1)',
-'allpagesfrom' => 'यहाà¤\81दà¥\87à¤\96ि शà¥\81रà¥\81 हà¥\81नà¥\87 पà¥\83षà¥\8dठहरà¥\81 देखाउनुहोस्:',
-'allpagesto' => 'निमà¥\8dनमा à¤\85नà¥\8dतहà¥\81नà¥\87 पà¥\83षà¥\8dठहरà¥\81 देखाउने:',
-'allarticles' => 'सबà¥\88 लà¥\87à¤\96हरà¥\81',
-'allinnamespace' => 'सबà¥\88 पà¥\83षà¥\8dठहरà¥\81 ($1 नेमस्पेस)',
+'allpagesfrom' => 'यहाà¤\81दà¥\87à¤\96ि शà¥\81रà¥\81 हà¥\81नà¥\87 पà¥\83षà¥\8dठहरà¥\82 देखाउनुहोस्:',
+'allpagesto' => 'निमà¥\8dनमा à¤\85नà¥\8dतहà¥\81नà¥\87 पà¥\83षà¥\8dठहरà¥\82 देखाउने:',
+'allarticles' => 'सबà¥\88 लà¥\87à¤\96हरà¥\82',
+'allinnamespace' => 'सबà¥\88 पà¥\83षà¥\8dठहरà¥\82 ($1 नेमस्पेस)',
'allpagessubmit' => 'जाने',
'allpagesprefix' => 'यी सुरुका अक्षरसहितका पृष्ठहरु हेर्ने:',
'allpagesbadtitle' => 'दिएको पृष्ठ शीर्षक अमान्य, खाली वा गलत रुपमा अन्तर भाषा वा अन्तर विकी सम्बन्ध गरिएको थियो।
# Special:Categories
'categories' => 'श्रेणीहरू',
-'categoriesfrom' => 'शà¥\8dरà¥\87णà¥\80हरà¥\81 देखाउन शुरु हुने यहाँ:',
+'categoriesfrom' => 'शà¥\8dरà¥\87णà¥\80हरà¥\82 देखाउन शुरु हुने यहाँ:',
'special-categories-sort-count' => 'गणना क्रममा राख्नुहोस्',
'special-categories-sort-abc' => 'वर्णानुक्रम अनुसार मिलाउने',
# Special:DeletedContributions
-'deletedcontributions' => 'पà¥\8dरयà¥\8bà¤\97à¤\95रà¥\8dताà¤\95ा मà¥\87à¤\9fिà¤\8fà¤\95ा यà¥\8bà¤\97दानहरà¥\81',
-'deletedcontributions-title' => 'पà¥\8dरयà¥\8bà¤\97à¤\95रà¥\8dताà¤\95ा मà¥\87à¤\9fाà¤\87à¤\8fà¤\95ा यà¥\8bà¤\97दानहरà¥\81',
-'sp-deletedcontributions-contribs' => 'यà¥\8bà¤\97दानहरà¥\81',
+'deletedcontributions' => 'पà¥\8dरयà¥\8bà¤\97à¤\95रà¥\8dताà¤\95ा मà¥\87à¤\9fिà¤\8fà¤\95ा यà¥\8bà¤\97दानहरà¥\82',
+'deletedcontributions-title' => 'पà¥\8dरयà¥\8bà¤\97à¤\95रà¥\8dताà¤\95ा मà¥\87à¤\9fाà¤\87à¤\8fà¤\95ा यà¥\8bà¤\97दानहरà¥\82',
+'sp-deletedcontributions-contribs' => 'यà¥\8bà¤\97दानहरà¥\82',
# Special:LinkSearch
'linksearch' => 'बाह्य लिंक खोज',
'emailpage' => 'प्रयोगकर्तालाई इमेल गर्नुहोस्',
'usermailererror' => 'मेल अब्जेक्टले देखाएको त्रुटि:',
'defemailsubject' => '{{SITENAME}} प्रयपोगकर्ता "$1" बाट इमेल',
-'usermaildisabled' => 'पà¥\8dरयà¥\8bà¤\97à¤\95रà¥\8dता à¤\88-मेल निरस्त गरिएको',
+'usermaildisabled' => 'पà¥\8dरयà¥\8bà¤\97à¤\95रà¥\8dता à¤\87मेल निरस्त गरिएको',
'usermaildisabledtext' => 'यस विकिमा तपाईं अरु प्रयोगकर्तालाई ई-मेल पठाउन सक्नुहुन्न',
'noemailtitle' => 'ईमेल ठेगाना नभएको',
'noemailtext' => 'प्रयोगकर्ताले सही ई-मेल ठेगाना दर्शाएको छैन।',
'watchnologintext' => 'आफ्नो अवलोकनलाइ परिवर्तन गर्नको लागि त तपाइ यसमा [[Special:UserLogin|प्रवेश(लगइन)]] गर्नुपर्छ।',
'addwatch' => 'निगरानी सुचीमा थप्ने',
'addedwatchtext' => '"[[:$1]]" पृष्ठ [[Special:Watchlist|अवलोकनसूची]]मा थपियो
-यो पृष्ठ र यससित सम्बद्ध वार्तालाप पृष्ठमा भविष्यमा हुने परिवर्तन सूचिबद्ध गरिनेछ र यो पृष्ठ [[Special:RecentChanges|नयाँ परिवर्तनहरु]]मा छान्न सजिलोकोलागि गाढा अक्षरमा देखा पर्नेछ।',
+यो पृष्ठ र यससित सम्बद्ध वार्तालाप पृष्ठमा भविष्यमा हुने परिवर्तन सूचिबद्ध गरिनेछ र यो पृष्ठ [[Special:RecentChanges|नयाँ परिवर्तनहरू]]मा छान्न सजिलोकोलागि गाढा अक्षरमा देखा पर्नेछ।',
'removewatch' => 'निगरानी सुचीबाट हटाउने',
'removedwatchtext' => 'पृष्ठ "[[:$1]]" [[Special:Watchlist|तपाईको निगरानी सूची]]बाट हटाइएको छ।',
'watch' => 'अवलोकन',
'watchmethod-list' => 'सम्पदान गरिएका निगरानी सुचीमा रहेका पृष्ठहरुको सम्पादन जाँच्दै',
'watchlistcontains' => 'तपाईको निगरानी सुचीमा $1 {{PLURAL:$1|पृष्ठ|पृष्ठहरु}}रहेका छन् ।',
'iteminvalidname' => "वस्तु '$1'मा समस्या , अमान्य नाम...",
-'wlnote' => "$3 र $4 अनुसार विगत {{PLURAL:$2|घण्टामा|'''$2''' घण्टाहरुमा}} {{PLURAL:$1|गरिएको अन्तिम परिवर्तन तल दिइएकोछ|गरिएका अन्तिम '''$1''' परिवर्तनहरु तल दिइएका छन्}}।",
'wlshowlast' => 'पछिल्ला $2 दिनहरूका $3 $1 घण्टाहरूका देखाउनुहोस्',
'watchlist-options' => 'निगरानि सूची विकल्प',
'restriction-level-all' => 'कुनै स्तर',
# Undelete
-'undelete' => 'मà¥\87à¤\9fिà¤\8fà¤\95ा पà¥\83षà¥\8dठहरà¥\81 हà¥\87रà¥\8dनà¥\81हà¥\8bस',
+'undelete' => 'मà¥\87à¤\9fिà¤\8fà¤\95ा पà¥\83षà¥\8dठहरà¥\82 हà¥\87रà¥\8dनà¥\81हà¥\8bसà¥\8d',
'undeletepage' => 'मेटाइएका पृष्ठहरु हेर्ने अनि पुनर्स्थापित गर्ने',
'undeletepagetitle' => "'''[[:$1|$1]]का मेटाइएका पुनरावलोकनहरु यसभित्र छन् '''।",
'viewdeletedpage' => 'मेटिएका पृष्ठहरू हेर्नुहोस्',
'undeletedpage' => "'''$1लाई पूर्वावस्थामा ल्याइयो'''
भर्खरै मेटाइएको रिकर्डहरु र पुनर्स्थापनाहरु हेर्न [[Special:Log/delete|मेटाइएको लग]]मा जानुहोस्।",
'undelete-header' => 'भर्खर मेटिएका पृष्ठहरु हेर्न [[Special:Log/delete|मेटाइएका लग]]मा जानुहोस्।',
-'undelete-search-title' => 'मà¥\87à¤\9fिà¤\8fà¤\95ा पà¥\83षà¥\8dठहरà¥\81 à¤\96à¥\8bà¤\9cà¥\8dनà¥\81हà¥\8bस',
-'undelete-search-box' => 'मà¥\87à¤\9fिà¤\8fà¤\95ा पà¥\83षà¥\8dठहरà¥\81 à¤\96à¥\8bà¤\9cà¥\8dनà¥\81हà¥\8bस',
+'undelete-search-title' => 'मà¥\87à¤\9fिà¤\8fà¤\95ा पà¥\83षà¥\8dठहरà¥\82 à¤\96à¥\8bà¤\9cà¥\8dनà¥\81हà¥\8bसà¥\8d',
+'undelete-search-box' => 'मà¥\87à¤\9fिà¤\8fà¤\95ा पà¥\83षà¥\8dठहरà¥\82 à¤\96à¥\8bà¤\9cà¥\8dनà¥\81हà¥\8bसà¥\8d',
'undelete-search-prefix' => 'बाट सुरु हुने पृष्ठहरु देखाउनुहोस :',
'undelete-search-submit' => 'खोजी गर्नुहोस्',
'undelete-no-results' => 'मेटिएका पृष्ठहरुको अभिलेखमा कुनै पनि मिल्दो पृष्ठहरु भेटिएन ।',
# Contributions
'contributions' => '{{GENDER:$1|प्रयोगकर्ता}}का योगदानहरू',
-'contributions-title' => '$1à¤\95à¥\8b पà¥\8dरयà¥\8bà¤\97à¤\95रà¥\8dता यà¥\8bà¤\97दानहरà¥\81',
-'mycontris' => 'यà¥\8bà¤\97दानहरà¥\81',
+'contributions-title' => '$1à¤\95à¥\8b पà¥\8dरयà¥\8bà¤\97à¤\95रà¥\8dता यà¥\8bà¤\97दानहरà¥\82',
+'mycontris' => 'यà¥\8bà¤\97दानहरà¥\82',
'contribsub2' => ' {{GENDER:$3|$1}} ($2)को लागि',
'nocontribs' => 'यस मापदण्ड अनुसार परिवर्त पाइएन।',
'uctop' => '(वर्तमान)',
'month' => 'महिना देखि (र पहिले):',
'year' => 'वर्ष देखि( र पहिले):',
-'sp-contributions-newbies' => 'नयाà¤\81 à¤\96ाताà¤\95à¥\8b लाà¤\97ि मातà¥\8dर यà¥\8bà¤\97दानहरà¥\81 देखाउने',
+'sp-contributions-newbies' => 'नयाà¤\81 à¤\96ाताà¤\95à¥\8b यà¥\8bà¤\97दानहरà¥\82 मातà¥\8dर देखाउने',
'sp-contributions-newbies-sub' => 'नयाँ खाताहरुको लागि',
-'sp-contributions-newbies-title' => 'नयाà¤\81 à¤\96ाताहरà¥\81à¤\95à¥\8b लाà¤\97ि पà¥\8dरयà¥\8bà¤\97à¤\95रà¥\8dताà¤\95ा यà¥\8bà¤\97दानहरà¥\81',
+'sp-contributions-newbies-title' => 'नयाà¤\81 à¤\96ाताहरà¥\82à¤\95à¥\8b लाà¤\97ि पà¥\8dरयà¥\8bà¤\97à¤\95रà¥\8dताà¤\95ा यà¥\8bà¤\97दानहरà¥\82',
'sp-contributions-blocklog' => 'रोकावट लग',
-'sp-contributions-deleted' => 'पà¥\8dरयà¥\8bà¤\97à¤\95रà¥\8dताà¤\95ा यà¥\8bà¤\97दानहरà¥\81 मेटाइयो',
+'sp-contributions-deleted' => 'पà¥\8dरयà¥\8bà¤\97à¤\95रà¥\8dताà¤\95ा यà¥\8bà¤\97दानहरà¥\82 मेटाइयो',
'sp-contributions-uploads' => 'उर्ध्वभरणहरु',
'sp-contributions-logs' => 'लगहरु',
'sp-contributions-talk' => 'वार्ता',
नवीनतम रोकाइ गरेको लग प्रविष्टि सन्दर्भको निम्ति तल दिएकोछ:',
'sp-contributions-blocked-notice-anon' => 'यो IP ठेगानालाई अहिले रोक लगाइएको छ।
नवीनतम रोकाइ गरेको लग प्रविष्टि सन्दर्भको निम्ति तल दिएकोछ:',
-'sp-contributions-search' => 'यà¥\8bà¤\97दानहरà¥\81 खोज्नुहोस्',
+'sp-contributions-search' => 'यà¥\8bà¤\97दानहरà¥\82 खोज्नुहोस्',
'sp-contributions-username' => 'IP ठेगाना वा प्रयोगकर्ता नाम :',
'sp-contributions-toponly' => 'नवीनतम संशोधनका सम्पादनहरु देखाउनुहोस्',
'sp-contributions-submit' => 'खोज',
'blocklink' => 'रोक्ने',
'unblocklink' => 'रोक फुकुवा गर्ने',
'change-blocklink' => 'रोकमा परिवर्तन गर्ने',
-'contribslink' => 'यà¥\8bà¤\97दानहरà¥\81',
+'contribslink' => 'यà¥\8bà¤\97दानहरà¥\82',
'emaillink' => 'इमेल पठाउने',
'autoblocker' => 'तपाईंको आई पी ठेगाना "[[User:$1|$1]]" द्वारा भर्खरै प्रयोग गरिएकोले स्वत: बन्देज गरिएको।
$1को बन्देजको कारण : "$2" हो',
'movepage-max-pages' => 'अधिकतम $1 {{PLURAL:$1|पृष्ठ|पृष्ठहरु}} सारिसकिएको छ र अरु स्वत: सारिने छैन ।',
'movelogpage' => 'लग सार्ने',
'movelogpagetext' => 'सबै सारिएका पृष्ठहरुको सूची तल दिइएकोछ।',
-'movesubpage' => '{{PLURAL:$1|à¤\89पपà¥\83षà¥\8dठ|à¤\89पपà¥\83षà¥\8dठहरà¥\81}}',
+'movesubpage' => '{{PLURAL:$1|à¤\89पपà¥\83षà¥\8dठ|à¤\89पपà¥\83षà¥\8dठहरà¥\82}}',
'movesubpagetext' => 'यस पृष्ठको $1 {{PLURAL:$1|सह-पृष्ठ|सह-पृष्ठहरु}} तल देखाइएको :',
'movenosubpage' => 'यस पृष्ठका उप पृष्ठहरु छैनन्।',
'movereason' => 'कारण :',
'move-leave-redirect' => 'अनुप्रेषण (redirect) छोडिराख्ने',
# Export
-'export' => 'पà¥\83षà¥\8dठहरà¥\81 पठाà¤\87ने',
-'exportall' => 'सबà¥\88 पà¥\83षà¥\8dठहरà¥\81 निर्यात गर्ने',
+'export' => 'पà¥\83षà¥\8dठहरà¥\82 निरà¥\8dयात à¤\97रà¥\8dने',
+'exportall' => 'सबà¥\88 पà¥\83षà¥\8dठहरà¥\82 निर्यात गर्ने',
'exportcuronly' => 'हालको संस्करण मात्र थप्ने ,पूरा इतिहास हैन',
'export-submit' => 'निर्यात',
'export-addcattext' => 'श्रेणीबाट पृष्ठ थप्ने :',
'thumbnail_image-missing' => 'फाइल हराएको भान भइरहेछ: $1',
# Special:Import
-'import' => 'पà¥\83षà¥\8dठहरà¥\81 आयात गर्नुहोस्',
+'import' => 'पà¥\83षà¥\8dठहरà¥\82 आयात गर्नुहोस्',
'importinterwiki' => 'Transwiki आयात',
'import-interwiki-source' => 'स्रोत विकि/ पृष्ठ :',
'import-interwiki-history' => 'यो पृष्ठकोलागि सबै इतिहास संशोधनहरु प्रतिलिपि गर्ने',
'tooltip-pt-watchlist' => 'पृष्ठहरूको सूची जसका परिवर्तनहरूलाई तपाईँले निगरानी गरिरहनु भएको छ',
'tooltip-pt-mycontris' => 'तपाईको योगदानको सूची',
'tooltip-pt-login' => 'तपाईँलाई प्रवेशगर्न सुझाव दिइन्छ ; तर यो जरुरी भने छैन',
-'tooltip-pt-anonlogin' => 'तपाईँलाई लग-इन गर्न प्रोत्साहन गरिन्छ, तर यो अनिवार्य चाँही होइन।',
'tooltip-pt-logout' => 'निर्गमन (लग आउट) गर्नुहोस्',
'tooltip-ca-talk' => 'सामग्री पृष्ठबारेमा छलफल',
'tooltip-ca-edit' => 'तपाईँले यो पृष्ठ सम्पादन गर्न सक्नुहुन्छ ।
'tooltip-ca-unwatch' => 'यो पृष्ठलाई तपाईँको अवलोकनसूचीबाट हटाउनुहोस्',
'tooltip-search' => '{{SITENAME}} मा खोज्नुहोस्',
'tooltip-search-go' => 'यदि यो नामको पृष्ठ रहेको छ भने त्यसमा जाने',
-'tooltip-search-fulltext' => 'यà¥\8b पाठà¤\95à¥\8b लाà¤\97ि पà¥\83षà¥\8dठहरà¥\81 खोज्नुहोस्',
+'tooltip-search-fulltext' => 'यà¥\8b पाठà¤\95à¥\8b लाà¤\97ि पà¥\83षà¥\8dठहरà¥\82 खोज्नुहोस्',
'tooltip-p-logo' => 'मुख्य पृष्ठ',
'tooltip-n-mainpage' => 'मुख्य पृष्ठमा जाने',
'tooltip-n-mainpage-description' => 'मुख्य पृष्ठमा जानुहो्स्',
'tooltip-feed-atom' => 'यो पृष्ठको लागि Atom फिड',
'tooltip-t-contributions' => 'यस प्रयोगकर्ताका योगदानहरूको सूची हेर्नुहोस्',
'tooltip-t-emailuser' => 'यो प्रयोगकर्तालाई इमेल पठाउनुहोस्',
-'tooltip-t-upload' => 'फाà¤\87ल à¤\89रà¥\8dधà¥\8dवà¤à¤°à¤£(upload) गर्ने',
+'tooltip-t-upload' => 'फाà¤\87ल à¤\85पलà¥\8bड गर्ने',
'tooltip-t-specialpages' => 'सबै विशेष पृष्ठहरूको सूची',
'tooltip-t-print' => 'यो पृष्ठको मुद्रण योग्य संस्करण',
'tooltip-t-permalink' => 'पृष्ठको यो पुनरावलोकनको लागि स्थाई लिङ्क',
'tooltip-watchlistedit-normal-submit' => 'शीर्षकहरू हटाउने',
'tooltip-watchlistedit-raw-submit' => 'निगरानी सूची अध्यावधि गर्ने',
'tooltip-recreate' => 'मेटिएको भए ता पनि यो पृष्ट पुन:निर्माण गर्नुहोस् ।',
-'tooltip-upload' => 'à¤\89रà¥\8dधà¥\8dवà¤à¤°à¤£(upload) सुरुगर्ने',
-'tooltip-rollback' => '"पà¥\82रà¥\8dवरà¥\81प" लà¥\87 यà¥\8b पà¥\83षà¥\8dठà¤\95à¥\8b समà¥\8dपादन(हरà¥\81) à¤\96ारà¥\87à¤\9c à¤\97रà¥\80 पà¥\83षà¥\8dठलाà¤\88 पà¤\9bिलà¥\8dलà¥\8b समà¥\8dपादनमा à¤\8fà¤\95 à¤\95à¥\8dलिà¤\95मा पà¥\81रà¥\8dâ\80\8dयाà¤\87 दिन्छ',
+'tooltip-upload' => 'à¤\85पलà¥\8bड सुरुगर्ने',
+'tooltip-rollback' => '"पà¥\82रà¥\8dवरà¥\81प" लà¥\87 यà¥\8b पà¥\83षà¥\8dठà¤\95à¥\8b समà¥\8dपादन(हरà¥\82) à¤\96ारà¥\87à¤\9c à¤\97रà¥\80 पà¥\83षà¥\8dठलाà¤\88 à¤\8fà¤\95 à¤\95à¥\8dलिà¤\95मा पà¤\9bिलà¥\8dलà¥\8b समà¥\8dपादनमा पà¥\81रà¥\8dâ\80\8dयाà¤\87दिन्छ',
'tooltip-undo' => '"रद्द"ले पछिल्लो सम्पादन खारेज गरी पूर्वावलोकनमा देखाउँछ ।
यसले सारांशमा कारण राख्न दिनेछ।',
'tooltip-preferences-save' => 'अभिरुचिहरु संग्रह गर्नुहोस्',
'exif-exposureprogram-1' => 'स्वयं',
'exif-exposureprogram-2' => 'साधारण कार्यक्रम',
'exif-exposureprogram-3' => 'एपर्चर प्राथमिकता',
-'exif-exposureprogram-4' => 'शटर प्राथमिकता',
+'exif-exposureprogram-4' => 'सटर प्राथमिकता',
'exif-exposureprogram-5' => 'शृजनात्मक कार्यक्रम(गहिराइसँग बाझिएको)',
'exif-exposureprogram-6' => 'क्रिया कार्यक्रम (तेज शटर गतितर्फ झु्केको)',
* <span class="mw-specialpagerestricted">निषेधित विशेष पृष्ठहरु।</span>
* <span class="mw-specialpagecached">क्याश गरिएका विशेष पृष्ठहरु (अध्यावधिक नहुन सक्छ)।</span>',
'specialpages-group-maintenance' => 'मर्मत प्रतिवेदनहरु',
-'specialpages-group-other' => 'à¤\85रà¥\81 विशà¥\87ष पà¥\83षà¥\8dठहरà¥\81',
+'specialpages-group-other' => 'à¤\85रà¥\82 विशà¥\87ष पà¥\83षà¥\8dठहरà¥\82',
'specialpages-group-login' => 'प्रवेशगर्नुहोस/खाता शृजना गर्नुहोस',
'specialpages-group-changes' => 'भर्खरैका परिवर्तन र लगहरु',
'specialpages-group-media' => 'मेडिया प्रतिवेदन र उर्ध्वभरणहरु',
'specialpages-group-users' => 'प्रयोगकर्ता र अधिकारहरु',
-'specialpages-group-highuse' => 'à¤\89à¤\9aà¥\8dà¤\9a पà¥\8dरयà¥\8bà¤\97 à¤à¤\8fà¤\95ा पà¥\83षà¥\8dठहरà¥\81',
+'specialpages-group-highuse' => 'à¤\89à¤\9aà¥\8dà¤\9a पà¥\8dरयà¥\8bà¤\97 à¤à¤\8fà¤\95ा पà¥\83षà¥\8dठहरà¥\82',
'specialpages-group-pages' => 'पृष्ठहरूको सूची:',
'specialpages-group-pagetools' => 'पृष्ठ उपकरणहरू',
'specialpages-group-wiki' => 'विकि डाटा र औजारहरु',
'specialpages-group-redirects' => 'विशेष पृष्ठमा पठाउने',
-'specialpages-group-spam' => 'सà¥\8dपाम à¤\89पà¤\95रणहरà¥\81',
+'specialpages-group-spam' => 'सà¥\8dपाम à¤\89पà¤\95रणहरà¥\82',
# Special:BlankPage
-'blankpage' => 'à¤\96ालà¥\80 पà¥\83षà¥\8dठहरà¥\81',
+'blankpage' => 'à¤\96ालà¥\80 पà¥\83षà¥\8dठहरà¥\82',
'intentionallyblankpage' => 'यो पृष्ठ जानी जानी खाली राखिएको हो ।',
# External image whitelist
'tags-hitcount' => '$1 {{PLURAL:$1|परिवर्तन|परिवर्तनहरु}}',
# Special:ComparePages
-'comparepages' => 'पà¥\83षà¥\8dठहरà¥\81 दाज्ने',
+'comparepages' => 'पà¥\83षà¥\8dठहरà¥\82 दाà¤\81ज्ने',
'compare-page1' => 'पृष्ठ 1',
'compare-page2' => 'पृष्ठ 2',
'compare-rev1' => 'संशोधन 1',
'dberr-again' => 'केही समय पर्खिएर पुन: लोड हुन दिनुहोस् ।',
'dberr-info' => '(डेटाबेस सर्वर $1सित सम्पर्क साध्न सकिंदैन)',
'dberr-usegoogle' => 'तपाईले अहिले गुगलबाट खोज गर्न प्रयास गर्न सक्नुहुन्छ।',
-'dberr-outofdate' => 'कृपय स्मरणमा राख्नुहोस हाम्रा लेखहरुको सुची जुन उनीहरुले राखेका छन् त्यो अद्यावधिक नहुन सक्छ ।',
+'dberr-outofdate' => 'कृपया स्मरणमा राख्नुहोस् हाम्रा लेखहरूको सूची जुन उनीहरूले राखेका छन् त्यो अद्यावधिक नहुन सक्छ ।',
'dberr-cachederror' => 'यो अनुरोध गरिएको पृष्ठको क्याशमा रहेका प्रतिलिपी हो , र अद्यावधिक नहुन सक्छ ।',
# HTML forms
* @file
*
* @author Annabel
+ * @author Arent
* @author AvatarTeam
* @author B4bol4t
* @author Basvb
* @author Mwpnl
* @author Naudefj
* @author Niels
+ * @author Niknetniko
* @author Paul B
* @author Romaine
* @author SPQRobin
$messages = array(
# User preference toggles
'tog-underline' => 'Koppelingen onderstrepen:',
-'tog-justify' => "Alinea's uitvullen",
'tog-hideminor' => 'Kleine wijzigingen verbergen in recente wijzigingen',
'tog-hidepatrolled' => 'Gemarkeerde wijzigingen verbergen in recente wijzigingen',
'tog-newpageshidepatrolled' => "Gemarkeerde pagina's verbergen in de lijst met nieuwe pagina's",
'tog-numberheadings' => 'Koppen automatisch nummeren',
'tog-showtoolbar' => 'Bewerkingswerkbalk weergeven',
'tog-editondblclick' => 'Dubbelklikken voor bewerken',
-'tog-editsection' => 'Bewerken van deelpagina’s mogelijk maken via [bewerken]-koppelingen',
'tog-editsectiononrightclick' => 'Bewerken van deelpagina’s mogelijk maken met een rechtermuisklik op een tussenkop',
-'tog-showtoc' => 'Inhoudsopgave weergeven (voor pagina’s met minstens 3 tussenkoppen)',
'tog-rememberpassword' => 'Aanmeldgegevens onthouden (maximaal $1 {{PLURAL:$1|dag|dagen}})',
'tog-watchcreations' => "Pagina's die ik aanmaak en bestanden die ik upload automatisch volgen",
'tog-watchdefault' => 'Pagina’s en bestanden die ik bewerk automatisch volgen',
'deletethispage' => 'Deze pagina verwijderen',
'undeletethispage' => 'Pagina terugplaatsen',
'undelete_short' => '$1 {{PLURAL:$1|bewerking|bewerkingen}} terugplaatsen',
-'viewdeleted_short' => '{{PLURAL: $1|Eén geschrapte bewerking |$1 geschrapte bewerkingen}} bekijken',
+'viewdeleted_short' => '{{PLURAL:$1|Eén geschrapte bewerking |$1 geschrapte bewerkingen}} bekijken',
'protect' => 'Beveiligen',
'protect_change' => 'wijzigen',
'protectthispage' => 'Deze pagina beveiligen',
'retypenew' => 'Herhaling nieuwe wachtwoord:',
'resetpass_submit' => 'Wachtwoord instellen en aanmelden',
'changepassword-success' => 'Uw wachtwoord is gewijzigd.',
+'changepassword-throttled' => 'U heeft recentelijk te veel mislukte aanmeldpogingen gedaan.
+Wacht alstublieft $1 voordat u het opnieuw probeert.',
'resetpass_forbidden' => 'Wachtwoorden kunnen niet gewijzigd worden',
'resetpass-no-info' => 'U dient aangemeld zijn voordat u deze pagina kunt gebruiken.',
'resetpass-submit-loggedin' => 'Wachtwoord wijzigen',
'changeemail-password' => 'Uw wachtwoord voor {{SITENAME}}:',
'changeemail-submit' => 'E-mailadres wijzigen',
'changeemail-cancel' => 'Annuleren',
+'changeemail-throttled' => 'U heeft recentelijk te veel mislukte aanmeldpogingen gedaan.
+Wacht alstublieft $1 voordat u het opnieuw probeert.',
# Special:ResetTokens
'resettokens' => 'Tokens opnieuw instellen',
'content-not-allowed-here' => 'De inhoud "$1" is niet toegestaan op pagina [[$2]].',
'editwarning-warning' => 'Als u deze pagina verlaat verliest u mogelijk wijzigingen die u hebt gemaakt.
Als u bent aangemeld, kunt u deze waarschuwing uitschakelen in het tabblad "{{int:prefs-editing}}" in uw voorkeuren.',
+'editpage-notsupportedcontentformat-title' => 'Inhoudsformaat niet ondersteund',
+'editpage-notsupportedcontentformat-text' => 'Het inhoudsformaat $1 wordt niet ondersteund door het inhoudsmodel $2.',
# Content models
'content-model-wikitext' => 'wikitekst',
'cantcreateaccount-text' => "Registreren vanaf dit IP-adres ('''$1''') is geblokkeerd door [[User:$3|$3]].
De door $3 opgegeven reden is ''$2''",
+'cantcreateaccount-range-text' => 'Het aanmaken van gebruikers vanaf IP-adressen in de reeks <strong>$1</strong> is niet mogelijk doordat dit is ingesteld door [[User:$3|$3]]. Uw IP-adres $4 bevindt zich in deze reeks.
+
+De reden voor de blokkade is <em>$2</em>',
# History pages
'viewpagelogs' => 'Logboek voor deze pagina bekijken',
'showhideselectedversions' => 'Geselecteerde versies weergeven/verbergen',
'editundo' => 'ongedaan maken',
'diff-empty' => '(geen verschil)',
-'diff-multi' => '({{PLURAL:$1|Eén tussenliggende versie|$1 tussenliggende versies}} door {{PLURAL:$2|één gebruiker|$2 gebruikers}} {{PLURAL:$1|wordt|worden}} niet weergegeven)',
+'diff-multi-sameuser' => '({{PLURAL:$1|Een tussenliggende revisie|$1 tussenliggende revisies}} door dezelfde gebruiken niet weergegeven)',
+'diff-multi-otherusers' => '({{PLURAL:$1|Een tussenliggende revisie|$1 tussenliggende revisies}} door {{PLURAL:$2|een andere gebruiker|$2 gebruikers}} niet weergegeven)',
'diff-multi-manyusers' => '($1 tussenliggende {{PLURAL:$1|versie|versies}} door meer dan $2 {{PLURAL:$2|gebruiker|gebruikers}} worden niet weergegeven)',
'difference-missing-revision' => '{{PLURAL:$2|Eén versie|$2 versies}} van deze verschillen ($1) {{PLURAL:$2|is|zijn}} niet aangetroffen.
'shown-title' => '$1 {{PLURAL:$1|resultaat|resultaten}} per pagina weergeven',
'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3) bekijken.',
'searchmenu-exists' => "* Pagina '''[[$1]]'''",
-'searchmenu-new' => "'''De pagina \"[[:\$1]]\" aanmaken op deze wiki.'''",
+'searchmenu-new' => '<strong>Maak de pagina "[[:$1]]" op deze wiki!</strong> {{PLURAL:$2|0=|Zie ook de pagina met uw zoekresultaat. |Zie ook de lijst met gevonden zoekresultaten}}',
'searchprofile-articles' => "Inhoudelijke pagina's",
'searchprofile-project' => "Hulp- en projectpagina's",
'searchprofile-images' => 'Multimedia',
'search-result-score' => 'Relevantie: $1%',
'search-redirect' => '(doorverwijzing $1)',
'search-section' => '(subkop $1)',
+'search-file-match' => '(komt overeen met de inhoud van het bestand)',
'search-suggest' => 'Bedoelde u: $1',
'search-interwiki-caption' => 'Zusterprojecten',
'search-interwiki-default' => '$1 resultaten:',
'rows' => 'Regels:',
'columns' => 'Kolommen:',
'searchresultshead' => 'Zoekresultaten',
-'resultsperpage' => 'Resultaten per pagina:',
'stub-threshold' => 'Drempel voor markering als <a href="#" class="stub">beginnetje</a>:',
'stub-threshold-disabled' => 'Uitgeschakeld',
'recentchangesdays' => 'Aantal dagen weer te geven in de recente wijzigingen:',
'file-exists-duplicate' => 'Dit bestand is identiek aan {{PLURAL:$1|het volgende bestand|de volgende bestanden}}:',
'file-deleted-duplicate' => 'Een bestand dat identiek is aan dit bestand ([[:$1]]) is voorheen verwijderd.
Raadpleeg het verwijderingslogboek voordat u verder gaat.',
+'file-deleted-duplicate-notitle' => 'Er is een verwijderd bestand aangetroffen dat identiek is aan dit bestand, en de naam van het bestand is onderdrukt.
+Vraag iemand die onderdrukte bestandsgegevens kan bekijken om de situatie opnieuw te beoordelen voordat u het bestand opnieuw toevoegt.',
'uploadwarning' => 'Uploadwaarschuwing',
'uploadwarning-text' => 'Pas de onderstaande bestandsbeschrijving aan en probeer het daarna opnieuw.',
'savefile' => 'Bestand opslaan',
'protectedpages' => "Beveiligde pagina's",
'protectedpages-indef' => 'Alleen blokkades zonder vervaldatum',
'protectedpages-cascade' => 'Alleen beveiligingen met de cascade-optie',
+'protectedpages-noredirect' => 'Doorverwijzingen verbergen',
'protectedpagesempty' => "Er zijn momenteel geen pagina's beveiligd die aan deze voorwaarden voldoen.",
'protectedtitles' => 'Beveiligde paginanamen',
'protectedtitlesempty' => 'Er zijn geen paginanamen beveiligd die aan deze voorwaarden voldoen.',
'watchmethod-list' => "controleer pagina's op volglijst op wijzigingen",
'watchlistcontains' => "Er {{PLURAL:$1|staat één pagina|staan $1 pagina's}} op uw volglijst.",
'iteminvalidname' => "Probleem met object '$1', ongeldige naam…",
-'wlnote' => 'Hieronder {{PLURAL:$1|staat de laaste wijziging|staan de laatste $1 wijzigingen}} in {{PLURAL:$2|het laatste uur|de laatste $2 uur}} per $3 om $4.',
+'wlnote2' => 'Hieronder staan de veranderingen in {{PLURAL:$1|het|de}} laatste {{PLURAL:$1|uur|<strong> $1 </strong>uren}}, sinds $2, $3.',
'wlshowlast' => 'Laatste $1 uur, $2 dagen bekijken ($3)',
'watchlist-options' => 'Opties voor volglijst',
'delete-warning-toobig' => 'Deze pagina heeft een lange bewerkingsgeschiedenis, meer dan $1 {{PLURAL:$1|versie|versies}}.
Het verwijderen van deze pagina kan de werking van de database van {{SITENAME}} verstoren.
Wees voorzichtig.',
+'deleting-backlinks-warning' => "'''Waarschuwing:''' andere pagina's gebruiken of verwijzen naar de pagina die u wilt verwijderen.",
# Rollback
'rollback' => 'Wijzigingen ongedaan maken',
Zie de [[Special:BlockList|blokkadelijst]] voor recente blokkades.',
'ipb-blockingself' => 'U staat op het punt uzelf te blokkeren. Weet u zeker dat u dat wilt doen?',
'ipb-confirmhideuser' => 'U staat op het punt een verborgen gebruiker te blokkeren. Hiervoor worden gebruikersnamen in alle lijsten en logboekregels verborgen. Weet u het zeker?',
+'ipb-confirmaction' => 'Weet u zeker dat u dit wilt doen? Vink dank het vakje "{{int:ipb-confirm}}" hieronder aan.',
'ipb-edit-dropdown' => 'Lijst van redenen bewerken',
'ipb-unblock-addr' => '$1 deblokkeren',
'ipb-unblock' => 'Een gebruiker of IP-adres deblokkeren',
'range_block_disabled' => 'De mogelijkheid voor beheerders om een groep IP-adressen te blokkeren is uitgeschakeld.',
'ipb_expiry_invalid' => 'Ongeldige duur.',
'ipb_expiry_temp' => 'Blokkades voor verborgen gebruikers moeten permanent zijn.',
-'ipb_hide_invalid' => 'Het is niet mogelijk deze gebruiker te verbergen; mogelijk heeft deze te veel bewerkingen gemaakt.',
+'ipb_hide_invalid' => 'Het is niet mogelijk deze gebruiker te verbergen; deze heeft meer dan {{PLURAL:$1|een bewerking|$1 bewerkingen}} gedaan.',
'ipb_already_blocked' => '"$1" is al geblokkeerd',
'ipb-needreblock' => '$1 is al geblokkeerd.
Wilt u de instellingen wijzigen?',
'allmessages-prefix' => 'Filteren op voorvoegsel:',
'allmessages-language' => 'Taal:',
'allmessages-filter-submit' => 'OK',
+'allmessages-filter-translate' => 'Vertalen',
# Thumbnails
'thumbnail-more' => 'Vergroten',
Een tijdelijke map is niet aanwezig.',
'import-parse-failure' => 'Fout bij het verwerken van de XML-import',
'import-noarticle' => "Er zijn geen te importeren pagina's!",
-'import-nonewrevisions' => 'Alle versies zijn al eerder geïmporteerd.',
+'import-nonewrevisions' => 'Geen revisies geïmporteerd (alle waren al aanwezig, of overgeslagen vanwege fouten).',
'xml-error-string' => '$1 op regel $2, kolom $3 (byte $4): $5',
'import-upload' => 'XML-gegevens uploaden',
'import-token-mismatch' => 'De sessiegegevens zijn verloren gegaan. Probeer het opnieuw.',
'import-error-special' => 'Pagina "$1" is niet geïmporteerd omdat deze is geplaatst in een speciale naamruimte waar geen pagina\'s in geplaatst kunnen worden.',
'import-error-invalid' => 'De pagina" "$1" is niet geïmporteerd omdat de naam ongeldig is.',
'import-error-unserialize' => 'Versie $2 van de pagina "$1" kon niet verwerkt worden. De versie hoort contentmodel $3 te gebruiken met een serialisatie als $4.',
+'import-error-bad-location' => 'Revisie $2 met behulp van model $3 kan niet worden opgeslagen als "$1" op deze wiki, aangezien dat model niet ondersteund wordt op die pagina.',
'import-options-wrong' => 'Verkeerde {{PLURAL:$2|optie|opties}}: <nowiki>$1</nowiki>',
'import-rootpage-invalid' => 'De opgegeven basispagina is ongeldig.',
'import-rootpage-nosubpage' => 'In de naamruimte "$1" van de basispagina is het aanmaken van subpagina\'s niet mogelijk.',
'tooltip-pt-watchlist' => "Overzicht van pagina's die u volgt",
'tooltip-pt-mycontris' => 'Overzicht van uw bijdragen',
'tooltip-pt-login' => 'U wordt van harte uitgenodigd om u aan te melden als gebruiker, maar dit is niet verplicht',
-'tooltip-pt-anonlogin' => 'U wordt van harte uitgenodigd om u aan te melden als gebruiker, maar dit is niet verplicht',
'tooltip-pt-logout' => 'Afmelden',
'tooltip-ca-talk' => 'Overleg over deze pagina',
'tooltip-ca-edit' => 'U kunt deze pagina bewerken. Gebruik de knop "Bewerking ter controle bekijken" voordat u de pagina opslaat',
'pageinfo-firstuser' => 'Gebruiker die de pagina heeft aangemaakt',
'pageinfo-firsttime' => 'Datum waarop de pagina is aangemaakt',
'pageinfo-lastuser' => 'Laatste bewerker',
-'pageinfo-lasttime' => 'Datum van laatste bewerking',
-'pageinfo-edits' => 'Totaal aantal bewerkingen',
-'pageinfo-authors' => 'Totaal aantal verschillende auteurs',
-'pageinfo-recent-edits' => 'Recent aantal bewerkingen (binnen de afgelopen $1).',
-'pageinfo-recent-authors' => 'Recent aantal verschillende auteurs',
+'pageinfo-lasttime' => 'Laatste bewerking',
+'pageinfo-edits' => 'Aantal bewerkingen',
+'pageinfo-authors' => 'Auteurs totaal',
+'pageinfo-recent-edits' => 'Recente bewerkingen (binnen de afgelopen $1)',
+'pageinfo-recent-authors' => 'Recente auteurs',
'pageinfo-magic-words' => '{{PLURAL:$1|Magisch woord|Magische woorden}} ($1)',
'pageinfo-hidden-categories' => 'Verborgen {{PLURAL:$1|categorie|categorieën}} ($1)',
'pageinfo-templates' => '{{PLURAL:$1|Gebruikt sjabloon|Gebruikte sjablonen}} ($1)',
'minutes' => '{{PLURAL:$1|$1 minuut|$1 minuten}}',
'hours' => '{{PLURAL:$1|$1 uur|$1 uur}}',
'days' => '{{PLURAL:$1|$1 dag|$1 dagen}}',
-'weeks' => '{{PLURAL: $1|één week|$1 weken}}',
+'weeks' => '{{PLURAL:$1|één week|$1 weken}}',
'months' => '{{PLURAL:$1|één maand|$1 maanden}}',
'years' => '{{PLURAL:$1|één jaar|$1 jaar}}',
'ago' => '$1 geleden',
'version-hook-name' => 'Hooknaam',
'version-hook-subscribedby' => 'Geabonneerd door',
'version-version' => '(Versie $1)',
-'version-license' => 'Licentie',
+'version-license' => 'Licentie voor MediaWiki',
+'version-ext-license' => 'Licentie',
+'version-ext-colheader-name' => 'Uitbreiding',
+'version-ext-colheader-version' => 'Versie',
+'version-ext-colheader-license' => 'Licentie',
+'version-ext-colheader-description' => 'Beschrijving',
+'version-ext-colheader-credits' => 'Auteurs',
+'version-license-title' => 'Licentie voor $1',
+'version-license-not-found' => 'Er zijn geen gedetaillieerde licentiegegevens aangetroffen voor deze uitbreiding.',
+'version-credits-title' => 'Vermeldingen voor $1',
+'version-credits-not-found' => 'Er zijn geen gedetailleerde meldingen aangetroffen voor deze uitbreiding.',
'version-poweredby-credits' => "Deze wiki wordt aangedreven door '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
'version-poweredby-others' => 'anderen',
'version-poweredby-translators' => 'translatewiki.net-vertalers',
'api-error-overwrite' => 'Het overschrijven van een bestand bestand is niet toegestaan.',
'api-error-stashfailed' => 'Interne fout: de server kon het tijdelijke bestand niet opslaan.',
'api-error-publishfailed' => 'Interne fout: de server kon het tijdelijke bestand niet publiceren.',
+'api-error-stasherror' => 'Er is een fout opgetreden tijdens het uploaden van het bestand naar de tijdelijke opslagruimte.',
'api-error-timeout' => 'De server heeft niet binnen de verwachte tijd geantwoord.',
'api-error-unclassified' => 'Er is een onbekende fout opgetreden',
'api-error-unknown-code' => 'Interne fout: "$1"',
'expand_templates_generate_rawhtml' => 'Ruwe HTML weergeven',
'expand_templates_preview' => 'Voorvertoning',
+# Unknown messages
+'uploadinvalidxml' => 'De XML in het geüploade bestand kon niet worden geparst.',
);
$messages = array(
# User preference toggles
'tog-underline' => 'Strek under lenkjer:',
-'tog-justify' => 'Blokkjusterte avsnitt',
'tog-hideminor' => 'Gøym småplukk i lista over siste endringar',
'tog-hidepatrolled' => 'Gøym patruljerte endringar i lista over siste endringar',
'tog-newpageshidepatrolled' => 'Gøym patruljerte sider frå lista over nye sider',
'tog-numberheadings' => 'Vis nummererte overskrifter',
'tog-showtoolbar' => 'Vis endringsverktøyline',
'tog-editondblclick' => 'Endre sider med dobbeltklikk',
-'tog-editsection' => 'Endre avsnitt ved hjelp av [endre]-lenkje',
'tog-editsectiononrightclick' => 'Endre avsnitt ved å høgreklikke på avsnittsoverskrifter',
-'tog-showtoc' => 'Vis innhaldsliste (for sider med meir enn tre bolkar)',
'tog-rememberpassword' => 'Hugs innlogginga mi med denne nettlesaren (for høgst {{PLURAL:$1|éin dag|$1 dagar}})',
'tog-watchcreations' => 'Legg til sidene eg opprettar og filene eg lastar opp på overvakingslista mi',
'tog-watchdefault' => 'Legg til sidene og filene eg endrar på overvakingslista mi',
'showhideselectedversions' => 'Vis/løyn valde versjonar',
'editundo' => 'angre',
'diff-empty' => '(Ingen skilnad)',
-'diff-multi' => '({{PLURAL:$1|Éin mellomversjon|$1 mellomversjonar}} frå {{PLURAL:$2|éin brukar|$2 brukarar}} er ikkje {{PLURAL:$1|vist|viste}})',
'diff-multi-manyusers' => '({{PLURAL:$1|Ein mellomversjon|$1 mellomversjonar}} av meir enn $2 {{PLURAL:$2|brukar|brukarar}} er ikkje {{PLURAL:$1|vist|viste}})',
'difference-missing-revision' => '{{PLURAL:$2|Éin versjon|$2 versjonar}} av skilnaden ($1) vart ikkje {{PLURAL:$2|funnen|funne}}.
'rows' => 'Rekkjer',
'columns' => 'Kolonnar',
'searchresultshead' => 'Søk',
-'resultsperpage' => 'Resultat per side',
'stub-threshold' => 'Grense (i byte) for at frø/spirer skal formaterast <a href="#" class="stub">slik</a>:',
'stub-threshold-disabled' => 'Deaktivert',
'recentchangesdays' => 'Tal på dagar som viser på siste endringar:',
'watchmethod-list' => 'sjekkar om dei overvaka sidene har blitt endra i det siste',
'watchlistcontains' => 'Overvakingslista di inneheld {{PLURAL:$1|éi side|$1 sider}}.',
'iteminvalidname' => 'Problem med «$1», ugyldig namn...',
-'wlnote' => "Nedanfor er {{PLURAL:$1|den siste endringa|dei siste '''$1''' endringane}} {{PLURAL:$2|den siste timen|dei siste '''$2''' timane}}, for $3, kl. $4.",
'wlshowlast' => 'Vis siste $1 timane $2 dagane $3',
'watchlist-options' => 'Alternativ for overvakingslista',
'tooltip-pt-watchlist' => 'Liste over sidene du overvakar.',
'tooltip-pt-mycontris' => 'Liste over bidraga dine',
'tooltip-pt-login' => 'Det er ikkje obligatorisk å logga inn, men medfører mange fordelar.',
-'tooltip-pt-anonlogin' => 'Det er ikkje obligatorisk å logga inn, men medfører mange fordelar.',
'tooltip-pt-logout' => 'Logg ut',
'tooltip-ca-talk' => 'Diskusjon om innhaldssida',
'tooltip-ca-edit' => 'Du kan endre denne sida. Bruk førehandsvisings-knappen før du lagrar.',
'tog-hideminor' => 'Fihla diphetogo tše nnyenyane',
'tog-showtoolbar' => "Bontšha ''toolbar'' yago fetola (JavaScript)",
'tog-editondblclick' => 'Fetola matlakala ka go thathapa gabedi (JavaScript)',
-'tog-editsection' => 'Dumella go fetola sekgao ka [fetola] hlomaganyo',
'tog-editsectiononrightclick' => 'Dumella go fetola sekgao ka thathapa ka lagoja thaetlele ya sekgao (JavaScript)',
-'tog-showtoc' => 'Bontšha Tatelano ya dikagare (go matlakala a goba le dihlogo tša go feta 3)',
'tog-rememberpassword' => 'Gopola sedi yaka ya go tsena khomphutha ye (bogolo bja $1 bja {{PLURAL:$1| ya letšatši le|ya matšatši}})',
'tog-watchcreations' => 'Tsenya matlaka a mafsa ao ke a ngwalago go lenano laka la ditlhapetšo',
'tog-watchdefault' => 'Tsenya matlaka ao ke a fetolago go lenano laka la ditlhapetšo',
'lineno' => 'Mothalo $1:',
'compareselectedversions' => 'Bapetša diphapang tšeo di kgethilwego',
'editundo' => 'dirolla',
-'diff-multi' => '({{PLURAL:$1|Phetogo ya bjale ye tee|$1 tša diphetogo tša bjale}} tša {{PLURAL:$2|mošumiši o tee|$2 tša bašumiši}} gadi laetšwe)',
# Search results
'searchresults' => 'Sephetho sa go fetleka',
$messages = array(
# User preference toggles
'tog-underline' => 'Soslinhar los ligams :',
-'tog-justify' => 'Justificar los paragrafs',
'tog-hideminor' => 'Amagar los darrièrs cambiaments menors',
'tog-hidepatrolled' => 'Amagar las modificacions susvelhadas dels darrièrs cambiaments',
'tog-newpageshidepatrolled' => 'Amagar las paginas susvelhadas de la lista de las paginas novèlas',
'tog-numberheadings' => 'Numerotar automaticament los títols',
'tog-showtoolbar' => 'Far veire la barra de menú',
'tog-editondblclick' => 'Modificar las paginas amb un clic doble',
-'tog-editsection' => 'Modificar una seccion via los ligams [modificar]',
'tog-editsectiononrightclick' => 'Modificar una seccion en fasent un clic drech suls títols de seccion',
-'tog-showtoc' => "Afichar l'ensenhador (per las paginas de mai de 3 seccions)",
'tog-rememberpassword' => 'Se remembrar de mon senhal sus aqueste ordinator (al mai $1 {{PLURAL:$1|jorn|jorns}})',
'tog-watchcreations' => "Apondre las paginas que creï e los fichièrs qu'impòrti a ma lista de seguiment",
'tog-watchdefault' => "Apondre las paginas que modifiqui e los fichièrs qu'impòrti a ma lista de seguiment",
'oct' => "d'oct",
'nov' => 'de nov',
'dec' => 'de dec',
-'january-date' => '$1 genièr',
-'february-date' => '$1 febrièr',
-'march-date' => '$1 març',
-'april-date' => '$1 abril',
-'may-date' => '$1 mai',
-'june-date' => '$1 junh',
-'july-date' => '$1 julhet',
-'august-date' => '$1 agost',
-'september-date' => '$1 setembre',
-'october-date' => '$1 octobre',
-'november-date' => '$1 novembre',
-'december-date' => '$1 decembre',
+'january-date' => '$1 de genièr',
+'february-date' => '$1 de febrièr',
+'march-date' => '$1 de març',
+'april-date' => "$1 d'abril",
+'may-date' => '$1 de mai',
+'june-date' => '$1 de junh',
+'july-date' => '$1 de julhet',
+'august-date' => "$1 d'agost",
+'september-date' => '$1 de setembre',
+'october-date' => "$1 d'octobre",
+'november-date' => '$1 de novembre',
+'december-date' => '$1 de decembre',
# Categories related messages
'pagecategories' => '{{PLURAL:$1|Categoria|Categorias}}',
'passwordtooshort' => 'Vòstre senhal deu conténer al mens {{PLURAL:$1|1 caractèr|$1 caractèrs}}.',
'password-name-match' => 'Vòstre senhal deu èsser diferent de vòstre nom d’utilizaire.',
'password-login-forbidden' => "L'usatge d'aquestes nom d'utilizaire e senhal es pas autorisat",
-'mailmypassword' => 'Mandar un senhal novèl per corrièr electronic',
+'mailmypassword' => 'Reïnicializar lo senhal',
'passwordremindertitle' => 'Senhal temporari novèl sus {{SITENAME}}',
'passwordremindertext' => "Qualqu'un (probablament vos, amb l'adreça IP $1) a demandat un senhal novèl
per {{SITENAME}} ($4). Un senhal temporari es estat creat per
'cantcreateaccount-text' => "La creacion de compte dempuèi aquesta adreça IP ('''$1''') es estada blocada per [[User:$3|$3]].
La rason balhada per $3 èra ''$2''.",
+'cantcreateaccount-range-text' => "La creacion de compte dempuèi las adressas IP '''$1''', que la vòstra n'es ('''$4''') es estada blocada per [[User:$3|$3]].",
# History pages
'viewpagelogs' => 'Vejatz las operacions per aquesta pagina',
'showhideselectedversions' => 'Afichar/amagar las versions seleccionadas',
'editundo' => 'desfar',
'diff-empty' => '(Pas cap de diferéncia)',
-'diff-multi' => '({{PLURAL:$1|Una revision intermediària amagada|$1 revisions intermediàrias amagadas}}) per ({{PLURAL:$2|un utilizaire pas afichada|$2 utilizaires pas afichadas}})',
'diff-multi-manyusers' => '({{PLURAL:$1|Una revision intermediària amagada|$1 revisions intermediàrias amagadas}}) per ({{PLURAL:$2|un utilizaire pas afichada|$2 utilizaires pas afichadas}})',
'difference-missing-revision' => "{{PLURAL:$2|Una revision|$2 revisions}} d'aquesta diferéncia ($1) {{PLURAL:$2|es pas estada trobada|son pas estadas trobadas}}.
'rows' => 'Rengadas :',
'columns' => 'Colomnas :',
'searchresultshead' => 'Recèrca',
-'resultsperpage' => 'Nombre de responsas per pagina :',
'stub-threshold' => 'Limit superior pels <a href="#" class="stub">ligams cap als esbòsses</a> (octets) :',
'stub-threshold-disabled' => 'Desactivat',
'recentchangesdays' => "Nombre de jorns d'afichar dins los darrièrs cambiaments :",
'recentchanges-label-minor' => 'Aqueste cambiament es menor',
'recentchanges-label-bot' => 'Aqueste cambiament es estat efectuat per un bòt.',
'recentchanges-label-unpatrolled' => 'Aqueste cambiament es pas estat verificat encara.',
-'recentchanges-legend-newpage' => '$1 - pagina novèla',
+'recentchanges-legend-heading' => "'''Legenda :'''",
+'recentchanges-legend-newpage' => '(veire tanben la [[Special:NewPages|lista de las paginas novèlas]]).',
'rcnotefrom' => "Vaquí los cambiaments efectuats dempuèi lo '''$2''' ('''$1''' al maximum).",
'rclistfrom' => 'Afichar las modificacions novèlas dempuèi lo $1.',
'rcshowhideminor' => '$1 los cambiaments menors',
'protectedpages' => 'Paginas protegidas',
'protectedpages-indef' => 'Unicament las proteccions permanentas',
'protectedpages-cascade' => 'Unicament las proteccions en cascada',
+'protectedpages-noredirect' => 'Amagar las redireccions',
'protectedpagesempty' => 'Cap de pagina es pas protegida actualament.',
'protectedtitles' => 'Títols protegits',
'protectedtitlesempty' => 'Cap de títol es pas actualament protegit amb aquestes paramètres.',
'watchmethod-list' => 'verificacion de las paginas seguidas per de modificacions recentas',
'watchlistcontains' => 'Vòstra lista de seguiment conten $1 {{PLURAL:$1|pagina|paginas}}.',
'iteminvalidname' => "Problèma amb l'article « $1 » : lo nom es invalid...",
-'wlnote' => "Çaijós {{PLURAL:$1|se tròba la darrièra modificacion efectuada|se tròban las $1 darrièras modificacions efectuadas}} pendent {{PLURAL:$2|la darrièra ora|las '''$2''' darrièras oras}} dempuèi $3, $4.",
'wlshowlast' => 'Far veire las darrièras $1 oras, los darrièrs $2 jorns, o $3.',
'watchlist-options' => 'Opcions de la lista de seguiment',
'tooltip-pt-watchlist' => 'La lista de las paginas que seguissètz',
'tooltip-pt-mycontris' => 'Lista de vòstras contribucions',
'tooltip-pt-login' => 'Sètz convidat(ada) a vos identificar, mas es pas obligatòri.',
-'tooltip-pt-anonlogin' => 'Sètz convidat(ada) a vos identificar, mas es pas obligatòri.',
'tooltip-pt-logout' => 'Se desconnectar',
'tooltip-ca-talk' => "Discussion a prepaus d'aquesta pagina",
'tooltip-ca-edit' => 'Podètz modificar aquesta pagina. Mercé de previsualizar abans d’enregistrar.',
'imgmultigo' => 'Accedir !',
'imgmultigoto' => 'Anar a la pagina $1',
+# Language selector for translatable SVGs
+'img-lang-default' => '(lenga per defaut)',
+'img-lang-info' => 'Afichar aqueste imatge en $1 $2.',
+'img-lang-go' => 'Amodar',
+
# Table pager
'ascending_abbrev' => 'creissent',
'descending_abbrev' => 'descreissent',
'redirect-lookup' => 'Recèrca :',
'redirect-value' => 'Valor :',
'redirect-user' => "ID de l'utilizaire",
+'redirect-page' => 'ID de pagina',
'redirect-revision' => 'Revision de la pagina',
'redirect-file' => 'Nom del fichièr',
'redirect-not-exists' => 'Valor pas trobada',
# Special:SpecialPages
'specialpages' => 'Paginas especialas',
+'specialpages-note-top' => 'Legenda',
'specialpages-note' => '* Paginas especialas normalas.
-* <span class="mw-specialpagerestricted">Paginas especialas restrenchas.</span>
-* <span class="mw-specialpagecached">Paginas especialas solament en escondedor (poirián èsser obsolètas).</span>',
+* <span class="mw-specialpagerestricted">Paginas especialas restrenchas.</span>',
'specialpages-group-maintenance' => 'Rapòrts de mantenença',
'specialpages-group-other' => 'Autras paginas especialas',
'specialpages-group-login' => "S'identificar / s'inscriure",
'expand_templates_input' => 'Picatz vòstre tèxte aicí :',
'expand_templates_output' => 'Visualizatz lo resultat :',
'expand_templates_xml_output' => 'Sortida XML',
+'expand_templates_html_output' => 'Sortida en HTML sens filtrar',
'expand_templates_ok' => "D'acòrdi",
'expand_templates_remove_comments' => 'Suprimir los comentaris.',
'expand_templates_remove_nowiki' => 'Suprimís los marcadors <nowiki> dins lo resultat',
'expand_templates_generate_xml' => "Veire l'arborescéncia XML",
+'expand_templates_generate_rawhtml' => 'Afichar lo HTML brut',
'expand_templates_preview' => 'Previsualizacion',
);
$messages = array(
# User preference toggles
'tog-underline' => 'ତଳେ ଥିବା ଲିଙ୍କ:',
-'tog-justify' => 'ପାରାଗ୍ରାଫଗୁଡ଼ିକର ବାମ ଡାହାଣ ସମଭାବେ ସଜାଡ଼ିବେ',
'tog-hideminor' => 'ଛୋଟ ଛୋଟ ନଗଦ ବଦଳ ସବୁକୁ ଲୁଚାଇବେ',
'tog-hidepatrolled' => 'ନଗଦ ବଦଳରେ ଥିବା ଜଗାହୋଇଥିବା ବଦଳ ସବୁକୁ ଲୁଚାଇବେ',
'tog-newpageshidepatrolled' => 'ନୂଆ ପୃଷ୍ଠାତାଲିକାରୁ ଜଗାହୋଇଥିବା ବଦଳସବୁକୁ ଲୁଚାଇବେ',
'tog-extendwatchlist' => 'କେବଳ ନଗଦ ନୁହେଁ, ସବୁଯାକ ବଦଳକୁ ଦେଖାଇବା ନିମନ୍ତେ ଦେଖଣାତାଲିକାକୁ ବଢ଼ାଇବେ',
-'tog-usenewrc' => 'ନଗଦ ବଦଳରେ ପୃଷ୍ଠା ଅନୁଯାୟୀ ଗୋଷ୍ଠୀ ବଦଳ ଏବଂ ଦେଖଣା (ଜାଭାସ୍କ୍ରିପ୍ଟ ଲୋଡ଼ା)',
+'tog-usenewrc' => 'ନଗଦ ବଦଳରେ ପୃଷ୍ଠା ଅନୁଯାୟୀ ଗୋଷ୍ଠୀ ବଦଳ ଏବଂ ଦେଖଣା',
'tog-numberheadings' => 'ଆପେଆପେ-ସଂଖ୍ୟାର ନାମଗୁଡ଼ିକ',
-'tog-showtoolbar' => 'ସମ୍ପାଦନା ଟୁଲବାର ଦେଖାଇବେ (ଜାଭାସ୍କ୍ରିପ୍ଟ ଲୋଡ଼ା)',
-'tog-editondblclick' => 'ଦୁଇଥର କ୍ଲିକରେ ପୃଷ୍ଠା ବଦଳାଇବେ (ଜାଭାସ୍କ୍ରିପ୍ଟ ଲୋଡ଼ା)',
-'tog-editsection' => '[ବଦଳାଇବେ] ଲିଙ୍କରେ ବିଭାଗର ସମ୍ପାଦନାକୁ ସଚଳ କରିବେ',
-'tog-editsectiononrightclick' => 'ବିଭାଗ ନାମରେ ଡାହାଣ କ୍ଲିକ କରି ବିଭାଗ ସମ୍ପାଦନାକୁ ସଚଳ କରିବେ (ଜାଭାସ୍କ୍ରିପ୍ଟ ଲୋଡ଼ା)',
-'tog-showtoc' => 'ସୂଚୀପତ୍ର ଦେଖାଇବେ (୩ରୁ ଅଧିକ ମୁଖ୍ୟ ନାମ ଥିଲେ)',
+'tog-showtoolbar' => 'ସମ୍ପାଦନା ଟୁଲବାର ଦେଖାଇବେ',
+'tog-editondblclick' => 'ଦୁଇଥର କ୍ଲିକରେ ପୃଷ୍ଠା ବଦଳାଇବେ',
+'tog-editsectiononrightclick' => 'ବିଭାଗ ନାମରେ ଡାହାଣ କ୍ଲିକ କରି ବିଭାଗ ସମ୍ପାଦନାକୁ ସଚଳ କରିବେ',
'tog-rememberpassword' => 'ଏହି ବ୍ରାଉଜରରେ (ସର୍ବାଧିକ $1 {{PLURAL:$1|day|ଦିନ}}) ପାଇଁ ମୋ ଲଗ-ଇନ ମନେରଖିଥିବେ',
'tog-watchcreations' => 'ମୋ ତିଆରି ପୃଷ୍ଠାସବୁକୁ ଏବଂ ମୋ ଅପଲୋଡ଼ଗୁଡ଼ିକୁ ମୋର ଦେଖଣାତାଲିକାରେ ଯୋଡ଼ନ୍ତୁ',
'tog-watchdefault' => 'ମୁଁ ବଦଳେଇଥିବା ପୃଷ୍ଠା ଏବଂ ଫାଇଲଗୁଡ଼ିକୁ ମୋର ଦେଖଣାତାଲିକାରେ ଯୋଡ଼ନ୍ତୁ',
'tog-shownumberswatching' => 'ଦେଖୁଥିବା ବ୍ୟବହାରକାରୀଙ୍କ ସଂଖ୍ୟା ଦେଖାନ୍ତୁ',
'tog-oldsig' => 'ଏବେକାର ଦସ୍ତଖତ:',
'tog-fancysig' => 'ଦସ୍ତଖତକୁ ଉଇକିଟେକ୍ସଟ ଭାବରେ ଗଣିବେ (ଆପେଆପେ ଥିବା ଲିଙ୍କ ବିନା)',
-'tog-uselivepreview' => 'ସାଥà\87 ସାଥà\87 à¬\9aାଲିଥିବା ଦà\87à¬\96ଣା ବà\8dà\9fବହାର à¬\95ରିବà\87 (à¬\9cାà¬à¬¾à¬¸à\8dà¬\95à\8dରିପà\8dà¬\9f ଲà\8bଡ଼ା)',
+'tog-uselivepreview' => 'ସାଥà\87 ସାଥà\87 à¬\9aାଲିଥିବା ଦà\87à¬\96ଣା ବà\8dà\9fବହାର à¬\95ରିବà\87 (ପରà\80à¬\95à\8dଷାରà\87 à¬\85à¬\9bି)',
'tog-forceeditsummary' => 'ଖାଲି ସମ୍ପାଦନା ସାରକଥାକୁ ଯିବା ବେଳେ ମୋତେ ଜଣାଇବେ',
'tog-watchlisthideown' => 'ମୋ ଦେଖଣା ତାଲିକାରେ ମୋ ନିଜର ସମ୍ପାଦନାଗୁଡ଼ିକ ଲୁଚାଇବେ',
'tog-watchlisthidebots' => 'ଦେଖଣା ତାଲିକାରେ ବଟ ଦେଇ ବଦଳ ଗୁଡ଼ିକ ଲୁଚାଇବେ',
'tog-showhiddencats' => 'ଲୁଚାଯାଇଥିବା ଶ୍ରେଣୀଗୁଡ଼ିକ ଦେଖାଇବେ',
'tog-norollbackdiff' => 'ରୋଲବ୍ୟାକ କଲାପରେ ତୁଳନା ଦେଖାନ୍ତୁ ନାହିଁ',
'tog-useeditwarning' => 'ଯେତେବେଳେ ମୁଁ ଗୋଟିଏ ସାଇତାଯାଇନଥିବା ପୃଷ୍ଠାକୁ ବନ୍ଦ କରିଦିଏ ମୋତେ ଚେତାବନୀ ଦେବେ',
+'tog-prefershttps' => 'ଲଗ ଇନ କଲାପରେ ସର୍ବଦା ସୁରକ୍ଷିତ କନେକ୍ସନ ବ୍ୟବହାର କରିବେ',
'underline-always' => 'ସବୁବେଳେ',
'underline-never' => 'କେବେନୁହେଁ',
'newwindow' => '(ଏହା ନୂଆ ଉଇଣ୍ଡୋରେ ଖୋଲିବ)',
'cancel' => 'ନାକଚ',
'moredotdotdot' => 'ଅଧିକ...',
-'morenotlisted' => 'à¬\85ଧିà¬\95 à¬\95ିà¬\9bି ତାଲିà¬\95ାରà\87 ନାହିà¬\81...',
+'morenotlisted' => 'à¬\8fହା ପà\81ରା ହà\8bà¬\87 ନାହିà¬\81',
'mypage' => 'ପୃଷ୍ଠା',
'mytalk' => 'ଆଲୋଚନା',
'anontalk' => 'ଏହି IP address ଉପରେ ଆଲୋଚନା',
'create-this-page' => 'ଏହି ପୃଷ୍ଠା ତିଆରି କରିବେ',
'delete' => 'ଲିଭାଇବେ',
'deletethispage' => 'ଏହି ପୃଷ୍ଠାଟି ଲିଭାଇବେ',
+'undeletethispage' => 'ଏହି ପୃଷ୍ଠାଟିକୁ ଲିଭାଇବେ ନାହିଁ',
'undelete_short' => '{{PLURAL:$1|ଗୋଟିଏ ବଦଳ|$1ଟି ବଦଳ}} ଯାହା ଲିଭାସରିଛି ତାହାକୁ ପଛକୁ ଫେରାଇଦେବା',
'viewdeleted_short' => '{{PLURAL:$1|ଗୋଟିଏ ଲିଭାଯାଇଥିବା ବଦଳ|$1ଟି ଲିଭାଯାଇଥିବା ବଦଳ}} ଦେଖାଇବେ',
'protect' => 'କିଳିବେ',
# 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).
'aboutsite' => '{{SITENAME}} ବାବଦରେ',
'aboutpage' => 'Project:ବାବଦରେ',
-'copyright' => '$1 ରେ ସର୍ବସ୍ଵତ୍ଵ ସଂରକ୍ଷିତ',
+'copyright' => 'ଅଲଗା ଭାବେ ଉଲ୍ଲେଖ ନ କରାଯିବ ଯାଏଁ ଏହା $1 ରେ ସର୍ବସ୍ଵତ୍ଵ ସଂରକ୍ଷିତ',
'copyrightpage' => '{{ns:project}}:କପିରାଇଟ',
'currentevents' => 'ଏବେକାର ଘଟଣା',
'currentevents-url' => 'Project:ଏବେକାର ଘଟଣା',
'youhavenewmessages' => 'ଆପଣଙ୍କ ପାଇଁ $1 ($2)।',
'youhavenewmessagesfromusers' => 'ଆପଣଙ୍କର {{PLURAL:$3|another user|$3 users}} ($2)ରୁ $1 ଅଛି ।',
'youhavenewmessagesmanyusers' => 'ଆପଣଙ୍କର ବହୁତ ବ୍ୟବହାରକାରୀ($2)ମାନଙ୍କଠାରୁ $1 ଅଛି ।',
-'newmessageslinkplural' => '{{PLURAL:$1|ଏକ ନୂଆ ସନ୍ଦେଶ|ନୂଆ ସନ୍ଦେଶ}}',
-'newmessagesdifflinkplural' => 'ଶେଷ{{PLURAL:$1|change|changes}}',
+'newmessageslinkplural' => '{{PLURAL:$1|ଏକ ନୂଆ ସନ୍ଦେଶ|ନୂଆ ସନ୍ଦେଶଗୁଡିକ}}',
+'newmessagesdifflinkplural' => 'ଶେଷ{{PLURAL:$1|ବଦଳ|ବଦଳଗୁଡିକ}}',
'youhavenewmessagesmulti' => '$1 ତାରିଖରେ ନୂଆ ଚିଠିଟିଏ ଆସିଛି',
'editsection' => 'ସମ୍ପାଦନା',
'editold' => 'ଏହାକୁ ବଦଳାନ୍ତୁ',
# General errors
'error' => 'ଭୁଲ',
'databaseerror' => 'ଡାଟାବେସରେ ଭୁଲ',
+'databaseerror-text' => 'ଡାଟାବେସରେ ତ୍ରୁଟି ଦେଖାଦେଲା ।
+ଏହା ସଫ୍ଟୱେରରେ ଜନିତ ତ୍ରୁଟି ହେଇପାରେ ।',
+'databaseerror-textcl' => 'ଡାଟାବେସରେ ତ୍ରୁଟି ଦେଖାଦେଲା ।',
+'databaseerror-query' => 'ଅନୁରୋଧ :$1',
+'databaseerror-function' => 'ଫଙ୍କସନ : $1',
+'databaseerror-error' => 'ତ୍ରୁଟି: $1',
'laggedslavemode' => "'''ଜାଣିରଖନ୍ତୁ:''' ପୃଷ୍ଠାଟିରେ ବୋଧ ହୁଏ ନଗଦ ବଦଳ ନ ଥାଇପାରେ ।",
'readonly' => 'ଡାଟାବେସଟିରେ ତାଲା ପଡ଼ିଅଛି',
'enterlockreason' => 'କେତେ ଦିନ ଭିତରେ ଏହା ଖୋଲାଯିବ ତାହାର ଅଟକଳ ସହିତ କଞ୍ଚି ପଡ଼ିବାର କାରଣ ଦିଅନ୍ତୁ',
'newarticletext' => "ଆପଣ ଖୋଲିଥିବା ଲିଙ୍କଟିରେ ଏଯାଏଁ କିଛିବି ପୃଷ୍ଠା ନାହିଁ ।
ଏହି ପୃଷ୍ଠାଟିକୁ ତିଆରି କରିବା ପାଇଁ ତଳ ବାକ୍ସରେ ଟାଇପ କରନ୍ତୁ (ଅଧିକ ଜାଣିବା ପାଇଁ [[{{MediaWiki:Helppage}}|ସାହାଯ୍ୟ ପୃଷ୍ଠା]] ଦେଖନ୍ତୁ) ।
ଯଦି ଆପଣ ଏଠାକୁ ଭୁଲରେ ଆସିଯାଇଥାନ୍ତି ତେବେ ଆପଣଙ୍କ ବ୍ରାଉଜରର '''Back''' ପତିଟି ଦବାନ୍ତୁ ।",
-'anontalkpagetext' => "----''ଏହା ଏକ IP ଖାତା ଖୋଲିନଥିବା ବା ଖାତା ବ୍ୟବହାର କରିନଥିବା ଜଣେ ବେନାମି ସଭ୍ୟଙ୍କର ଆଲୋଚନା ପୃଷ୍ଠା ।
-ତà\87ଣà\81 à¬\86ମà\8dà¬à\87 ସà¬\82à¬\96à\8dà\9fା ଦà\87à¬\87 ସà\82à¬\9aà\80ତ IP ଠିà¬\95ଣା ଦà\87à¬\87 ତାହାà¬\99à\8dà¬\95à\81 à¬\9cାଣିବା ।
-ଏହି ପ୍ରକାରର IP ଠିକଣା ବହୁ ସଭ୍ୟଙ୍କ ଦେଇ ବଣ୍ଟା ବି ଯାଇପାରେ ।
-ଯଦି à¬\86ପଣ à¬\9cଣà\87 à¬\85à¬\9cଣା ସà¬à\8dà\9f à¬\93 à¬à¬¾à¬¬à\81à¬\9bନà\8dତି à¬\87à¬\86ଡà\81 ସିà¬\86ଡà\81 ମତାମତ ସବà\81 à¬\86ପଣà¬\99à\8dà¬\95 à¬\89ପରà\87 ଦିà¬\86ଯାà¬\87à¬\9bି ତà\87ବà\87 ଦà\9fାà¬\95ରି [[Special:UserLogin/signup|ନà\82à¬\86 à¬\96ାତାà¬\9fିà¬\8f à¬\96à\8bଲନà\8dତà\81]] à¬\95ିମà\8dବା [[Special:UserLogin|à¬\86à¬\97ରà\81 ଥିବା à¬\96ାତାରà\87 ଲà¬\97 à¬\87ନ à¬\95ରନà\8dତà\81]] ଯାହା ବà\87ନାମି ସà¬à\8dà\9fà¬\99à\8dà¬\95à\81 ନà\87à¬\87 à¬\89ପà\81à¬\9cିଥିବା ଦà\8dଵନà\8dଦର ସମାଧାନ à¬\95ରିବ ।''",
+'anontalkpagetext' => "----''ଏହା ଏକ ଖାତା ଖୋଲିନଥିବା ବା ଖାତା ବ୍ୟବହାର କରିନଥିବା ଜଣେ ବେନାମି ସଭ୍ୟଙ୍କର ଆଲୋଚନା ପୃଷ୍ଠା ।''
+ତେଣୁ ଆମ୍ଭେ ସଂଖ୍ୟା ଦେଇ ସୂଚୀତ IP ଠିକଣା ଦେଇ ତାଙ୍କୁ ଜାଣିବା ।
+ଏହି ପ୍ରକାରର ଗୋଟିଏ IP ଠିକଣା ବହୁ ସଭ୍ୟଙ୍କ ଦେଇ ବ୍ୟବହାର କରାଯାଇପାରେ ।
+ଯଦି à¬\86ପଣ à¬\9cଣà\87 à¬\85à¬\9cଣା ସà¬à\8dà\9f à¬\93 à¬à¬¾à¬¬à\81à¬\9bନà\8dତି à¬\87à¬\86ଡà\81 ସିà¬\86ଡà\81 ମତାମତ ସବà\81 à¬\86ପଣà¬\99à\8dà¬\95 ପାà¬\87à¬\81 ଦିà¬\86ଯାà¬\87à¬\9bି ତà\87ବà\87 ଦà\9fାà¬\95ରି [[Special:UserLogin/signup|ନà\82à¬\86 à¬\96ାତାà¬\9fିà¬\8f à¬\96à\8bଲନà\8dତà\81]] à¬\95ିମà\8dବା [[Special:UserLogin|à¬\86à¬\97ରà\81 ଥିବା à¬\96ାତାରà\87 ଲà¬\97 à¬\87ନ à¬\95ରନà\8dତà\81]] ଯାହା ବà\87ନାମି ସà¬à\8dà\9fà¬\99à\8dà¬\95à\81 ନà\87à¬\87 à¬\89ପà\81à¬\9cିଥିବା ଦà\8dଵନà\8dଦର ସମାଧାନ à¬\95ରିବ ।",
'noarticletext' => 'ଏହି ପୃଷ୍ଠାଟିରେ କିଛି ବି ଲେଖା ନାହିଁ ।
ଆପଣ [[Special:Search/{{PAGENAME}}|ଏହି ଲେଖାଟିର ନାଆଁ]] ବାକି ପୃଷ୍ଠାମାନଙ୍କରେ ଖୋଜି ପାରନ୍ତି,
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}}ରେ ଯୋଡ଼ାଯାଇଥିବା ବାକି ପୃଷ୍ଠାସବୁକୁ ଖୋଜି ପାରନ୍ତି],
'compareselectedversions' => 'ବଛାହୋଇଥିବା ସଙ୍କଳନ ଗୁଡ଼ିକୁ ତଉଲିବେ',
'showhideselectedversions' => 'ବଛା ହୋଇଥିବା ସଙ୍କଳନ ଗୁଡ଼ିକୁ ଦେଖାଇବେ/ଲୁଚାଇବେ',
'editundo' => 'ପଛକୁ ଫେରିବା',
-'diff-multi' => '({{PLURAL:$2|ଜଣେ ବ୍ୟବହାରକାରୀ|$2 ଜଣ ବ୍ୟବହାରକାରୀ}}ଙ୍କ ଦେଇ ହୋଇଥିବା {{PLURAL:$1|ଗୋଟିଏ ମଝି ସଙ୍କଳନ|$1ଟି ମଝି ସଙ୍କଳନ}} ଦେଖାଯାଉନାହିଁ)',
'diff-multi-manyusers' => '($2 {{PLURAL:$2|ଜଣ|ଜଣ}} ସଭ୍ୟଙ୍କ ଦେଇ କରାଯାଇଥିବା {{PLURAL:$1|ଗୋଟିଏ ମଝି ସଂସ୍କରଣ|$1 ଗୋଟି ମଝି ସଂସ୍କରଣମାନ}} ଦେଖାଯାଉ ନାହିଁ)',
'difference-missing-revision' => '($1) {{PLURAL:$2|was|were}}ର ଭିନ୍ନତା {{PLURAL:$2|One revision|$2 revisions}} ମିଳିଲା ନାହିଁ ।
'prefs-email' => 'ଇ-ମେଲ ବିକଳ୍ପମାନ',
'prefs-rendering' => 'ଦେଖଣା',
'saveprefs' => 'ସାଇତିବେ [Save]',
-'restoreprefs' => 'ଆପେଆପେ ଥିବା ମୂଳ ସଜାଣିକୁ ଫେରିଯିବେ',
+'restoreprefs' => '(ସମସ୍ତ ସ୍ଥାନରେ) ଆରମ୍ଭରୁ ଥିବା ମୂଳ ସଜାଣିକୁ ଫେରିଯିବେ',
'prefs-editing' => 'ସମ୍ପାଦନା',
'rows' => 'ଧାଡ଼ି:',
'columns' => 'ସ୍ତମ୍ଭସବୁ:',
'searchresultshead' => 'ଖୋଜିବା',
-'resultsperpage' => 'ପୃଷ୍ଠା ପ୍ରତି ହିଟ:',
'stub-threshold' => '<a href="#" class="stub">ଅସମ୍ପୂର୍ଣ ପୃଷ୍ଠା ଲିଙ୍କ</a> ସଜାଣି (ବାଇଟ) ପାଇଁ ସୀମା:',
'stub-threshold-disabled' => 'ଅଚଳ କରିଦିଆଯାଇଛି',
'recentchangesdays' => 'ନଗଦ ବଦଳରେ ଦେଖାଇବା ପାଇଁ ବାକିଥିବା ଦିନ:',
'emailuser-title-target' => '{{GENDER:$1|user}}କୁ ଇ-ମେଲ କରନ୍ତୁ',
'emailuser-title-notarget' => 'ବ୍ୟବହାରକାରୀ କୁ ଇ-ମେଲ',
'emailpage' => 'ଇ-ମେଲ ବ୍ୟବହାରକାରୀ',
-'emailpagetext' => 'ଥିବା ଫର୍ମ ବ୍ୟବହାର କରି ଆପଣ ଏହି {{GENDER:$1|user}} ଇ-ମେଲ କରିପାରିବେ ।
-[[Special:Preferences|ଆପଣଙ୍କ ପସନ୍ଦ]]ରେ ଥିବା ଇ-ମେଲ ଠିକଣା ପ୍ରେରକ ଭାବରେ ଦେଖାଯିବ, ତେଣୁ ଚିଠି ପାଇଥିବା ସଭ୍ୟ ଆପଣଙ୍କୁ ସିଧା ସଳଖ ଉତ୍ତର ଦେଇପାରିବ ।',
+'emailpagetext' => 'ଆପଣ ତଳେ ଥିବା ଫର୍ମ ବ୍ୟବହାର କରି ଏହି {{GENDER:$1|ସଭ୍ୟ}}ଙ୍କୁ ଇମେଲ କରିପାରିବେ । [[Special:Preferences|ଆପଣଙ୍କ ପସନ୍ଦ]]ରେ ଥିବା ଇମେଲ ଠିକଣା "ପ୍ରେରକ" ଭାବରେ ଦେଖାଯିବ, ତେଣୁ ଇମେଲ ପାଇଥିବା ସଭ୍ୟ ଆପଣଙ୍କୁ ସିଧା ସଳଖ ଉତ୍ତର ଦେଇପାରିବେ ।',
'usermailererror' => 'ମେଲ ଭିତରେ କିଛି ଅସୁବିଧା ଅଛି ବୋଲି ଜାଣିବାକୁ ମିଳିଲା:',
'defemailsubject' => '{{SITENAME}} "$1" ସଭ୍ୟଙ୍କ ଠାରୁ ଇ-ମେଲ କରିବେ',
'usermaildisabled' => 'ବ୍ୟବହାରକାରୀଙ୍କ ଈ-ମେଲ ଅଚଳ କରାଗଲା',
'watchmethod-list' => 'ନଗଦ ବଦଳ ନିମନ୍ତେ ଦେଖାଯାଇଥିବା ପୃଷ୍ଠାମାନ ପରଖୁଛୁଁ',
'watchlistcontains' => 'ଆପଣଙ୍କ ଦେଖଣାତାଲିକାରେ $1 {{PLURAL:$1|ଗୋଟି ପୃଷ୍ଠା|ଗୋଟି ପୃଷ୍ଠା}} ରହିଅଛି ।',
'iteminvalidname' => "'$1' ଯୋଗୁଁ କିଛି ଅସୁବିଧା ହେଉଅଛି, ଭୁଲ ନାମ...",
-'wlnote' => "$3, $4 ସୁଦ୍ଧା ବିଗତ {{PLURAL:$2|ଘଣ୍ଟେ ଭିତରେ|'''$2''' ଘଣ୍ଟା ଭିତରେ}} ଘଟିଥିବା {{PLURAL:$1|ଶେଷ ବଦଳଟି ଅଛି|ଶେଷ '''$1''' ଟି ବଦଳ}} ତଳେ ଦିଆଯାଇଛି ।",
'wlshowlast' => 'ଶେଷ $1 ଘଣ୍ଟା $2 ଦିନ $3 ଦେଖାଇବେ',
'watchlist-options' => 'ଦେଖଣା ବିକଳ୍ପସବୁ',
'tooltip-pt-watchlist' => 'ବଦଳ ପାଇଁ ଆପଣ ଦେଖାଶୁଣା କରୁଥିବା ପୃଷ୍ଠାଗୁଡ଼ିକର ତାଲିକା',
'tooltip-pt-mycontris' => 'ଆପଣଙ୍କ ଅବଦାନ',
'tooltip-pt-login' => 'ଆପଣଙ୍କୁ ଲଗ-ଇନ କରିବାକୁ କୁହାଯାଉଅଛି ସିନା, ବାଧ୍ୟ କରାଯାଉନାହିଁ',
-'tooltip-pt-anonlogin' => 'ଆପଣଙ୍କୁ ଲଗଇନ କରିବାକୁ କୁହାଯାଉଅଛି ସିନା, ବାଧ୍ୟ କରାଯାଉନାହିଁ',
'tooltip-pt-logout' => 'ଲଗଆଉଟ',
'tooltip-ca-talk' => 'ଏହି ପୃଷ୍ଠାଟି ଉପରେ ଆଲୋଚନା',
'tooltip-ca-edit' => 'ଆପଣ ଏହି ପୃଷ୍ଠାଟିରେ ଅଦଳ ବଦଳ କରିପାରିବେ, ତେବେ ସାଇତିବା ଆଗରୁ ଦେଖଣା ଦେଖନ୍ତୁ ।',
'duration-minutes' => '$1 {{PLURAL:$1|ମିନିଟ|ମିନିଟ}}',
'duration-hours' => '$1 {{PLURAL:$1|ଘଣ୍ଟା|ଘଣ୍ଟା}}',
'duration-days' => '$1 {{PLURAL:$1|ଦିନ|ଦିନଗୁଡିକ}}',
-'duration-weeks' => '$1 {{PLURAL: $1|ସପ୍ତାହ|ସପ୍ତାହଗୁଡିକ}}',
+'duration-weeks' => '$1 {{PLURAL:$1|ସପ୍ତାହ|ସପ୍ତାହଗୁଡିକ}}',
'duration-years' => '$1 {{PLURAL:$1|year|years}}',
'duration-decades' => '$1 {{PLURAL:$1|decade|decades}}',
'duration-centuries' => '$1 {{PLURAL:$1|century|centuries}}',
$messages = array(
# User preference toggles
'tog-underline' => 'Æрвитæнты бын хахх:',
-'tog-justify' => 'Æмвæз абзацтæ',
'tog-hideminor' => 'Чысыл ивддзинæдтæ фæстаг ивддзинæдты номхыгъды мауал æвдис',
'tog-hidepatrolled' => 'Айсын бæрæггонд ивдтытæ фæстаг ивдтытæй',
'tog-newpageshidepatrolled' => 'Басгæрст фæрстæ ног фæрсты номхыгъдæй æмбæхс',
'tog-numberheadings' => 'Сæртæн хæдæвзæргæ номыр æвæрын',
'tog-showtoolbar' => 'Æвдисын ивыны панел (домы JavaScript)',
'tog-editondblclick' => 'Фæрстæ дыкъæппæй ив (домы JavaScript)',
-'tog-editsection' => 'Равдис «баив æй» æрвитæн тексты алы хайы дæр',
'tog-editsectiononrightclick' => 'Хайы сæрыл рахис æркъæппæй ивыны фадат баиу кæнын (домы JavaScript)',
-'tog-showtoc' => 'Сæрты номхыгъд æвдисын (æртæйæ фылдæрсæр цы фарсы ис, уым)',
'tog-rememberpassword' => 'Бахъуыды мæ кæнæд ацы браузер ($1 {{PLURAL:$1|бонмæ|бонмæ}})',
'tog-watchcreations' => 'Æз цы фæрстæ аразын æмæ цы файлтæ бавгæнын, уыдон мæ цæстдард уæт.',
'tog-watchdefault' => 'Æз цы фæрстæ æмæ цы файлтæ ивын, уыдон мæ цæстдард уæт',
'passwordtooshort' => 'Паролтæ хъуамæ уой уæддæр {{PLURAL:$1|1 дамгъæйы|$1 дамгъæйы}} дæргъæн.',
'password-name-match' => 'Дæ парол ма хъуамæ уа дæ фæсномыгы хуызæн.',
'password-login-forbidden' => 'Ацы фæсномыг æмæ паролæй нæй гæнæн архайын.',
-'mailmypassword' => 'РаÑ\80виÑ\82 мæм ног пароль',
+'mailmypassword' => 'Ð\91аив пароль',
'passwordremindertitle' => 'Ног рæстæгмæ пароль {{grammar:dative|{{SITENAME}}}}',
'passwordremindertext' => 'Чидæр (æвæццæгæн ды, $1 IP адрисæй) æрдомтта ног парол {{grammar:dative|{{SITENAME}}}} ($4). "$2" архайæгæн арæзт æрцыд рæстæгмæ парол. Парол у "$3". Кæд уый ды уыдтæ, уæд дын ныр хъæудзæн бахизын æмæ равзарын ног парол.
Дæ рæстæгмæ парол ма кусдзæнис {{PLURAL:$5|иу бон|$5 боны}}.
'lineno' => 'Рæнхъ $1:',
'compareselectedversions' => 'Абарын æвзæрст фæлтæртæ',
'editundo' => 'раивын',
-'diff-multi' => '{{PLURAL:$2|1 архайæджы|$2 архайæджы}} {{PLURAL:$1|1 æхсæйнаг фæлтæр æвдыст нæу|$1 æхсæйнаг фæлтæры æвдыст не сты}}',
# Search results
'searchresults' => 'Агуырды фæстиуджытæ',
'rclistfrom' => 'Равдисын ивдтытæ амæй фæстæ: $1',
'rcshowhideminor' => '$1 чысыл ивдтытæ',
'rcshowhidebots' => '$1 роботты',
-'rcshowhideliu' => '$1, йæхи чи бацамыдта, уыцы архайджыты',
+'rcshowhideliu' => '$1 регистрацигонд архайæджы',
'rcshowhideanons' => '$1 æнæном архайджыты',
'rcshowhidepatr' => '$1 бæрæггонд ивдтæ',
'rcshowhidemine' => '$1 мæ ивдтытæ',
'boteditletter' => 'б',
'rc_categories_any' => 'Кæцы фæнды',
'newsectionsummary' => '/* $1 */ ног хай',
-'rc-enhanced-expand' => 'Лæмбынæг информаци равдисын (домы JavaScript)',
+'rc-enhanced-expand' => 'Лæмбынæг информаци равдисын',
'rc-enhanced-hide' => 'Айсын лæмбынæг информаци',
'rc-old-title' => 'фыццаг арæзт æрцыд куыд "$1"',
'unwatch' => 'Нал дарын цæст',
'watchlist-details' => '{{PLURAL:$1|$1 фарсмæ|$1 фарсмæ}} дæ цæст дарыс, тæрхоны фæрстæ нæ нымайгæйæ.',
'watchlistcontains' => 'Дæ цæст $1 {{PLURAL:$1|фарсмæ|фарсмæ}} дарыс.',
-'wlnote' => "Дæлæ афæстаг '''$2 сахаты дæргъы''' цы $1 {{PLURAL:$1|ивддзинад|ивддзинады}} æрцыди.",
'wlshowlast' => 'Фæстæг $1 сахаты, $2 боны дæргъы; $3.',
'watchlist-options' => 'Цæстдард рæгъы фадæттæ',
'file-info-size' => '$1 × $2 пикселы, файлы уæз: $3, MIME тип: $4',
'file-nohires' => 'Нæй ын стырдæр фæлтæр .',
'svg-long-desc' => 'SVG файл, номиналон $1 × $2 пикселы, файлы бæрц: $3',
-'show-big-image' => 'Æнæхъæнæй',
+'show-big-image' => 'Оригиналы файл',
# Special:NewFiles
'newimages' => 'Ног нывты галерей',
$messages = array(
# User preference toggles
'tog-underline' => 'ਲਿੰਕ ਹੇਠ-ਲਾਈਨ:',
-'tog-justify' => 'ਪੈਰਾਗਰਾਫ਼ ਇਕਸਾਰ',
'tog-hideminor' => 'ਤਾਜ਼ਾ ਤਬਦੀਲੀਆਂ ਵਿੱਚੋਂ ਛੋਟੀਆਂ ਸੋਧਾਂ ਲੁਕਾਓ',
'tog-hidepatrolled' => 'ਤਾਜ਼ਾ ਤਬਦੀਲੀਆਂ ਵਿੱਚੋਂ ਜਾਂਚੀਆਂ ਸੋਧਾਂ ਲੁਕਾਓ',
'tog-newpageshidepatrolled' => 'ਨਵੀਂ ਸਫ਼ਾ ਸੂਚੀ ਵਿੱਚੋਂ ਜਾਂਚੇ ਸਫ਼ੇ ਲੁਕਾਓ',
'tog-numberheadings' => 'ਆਟੋ-ਨੰਬਰ ਸਿਰਨਾਵੇਂ',
'tog-showtoolbar' => 'ਸੋਧ ਸੰਦਬਕਸਾ ਵੇਖੋ',
'tog-editondblclick' => "ਦੋ ਵਾਰ ਕਲਿੱਕ ਕਰਨ 'ਤੇ ਸਫ਼ੇ ਸੋਧੋ",
-'tog-editsection' => '[ਸੋਧੋ] ਲਿੰਕਾਂ ਰਾਹੀਂ ਭਾਗ ਸੋਧਣਾ ਚਾਲੂ ਕਰੋ',
'tog-editsectiononrightclick' => 'ਸੈਕਸ਼ਨ ਸਿਰਲੇਖਾਂ ’ਤੇ ਸੱਜੀ ਕਲਿੱਕ ਨਾਲ਼ ਸੋਧ ਚਾਲੂ ਕਰੋ (ਜਾਵਾਸਕਰਿਪਟ ਲੋੜੀਂਦੀ ਹੈ)',
-'tog-showtoc' => 'ਤਤਕਰਾ ਵਿਖਾਓ (੩ ਤੋਂ ਵੱਧ ਸਿਰਲੇਖਾਂ ਵਾਲੇ ਸਫ਼ਿਆਂ ਲਈ)',
'tog-rememberpassword' => 'ਇਸ ਬਰਾਊਜ਼ਰ ਉੱਤੇ ਮੇਰਾ ਦਾਖ਼ਲਾ ਯਾਦ ਰੱਖੋ (ਵੱਧ ਤੋਂ ਵੱਧ $1 {{PLURAL:$1|ਦਿਨ|ਦਿਨਾਂ}} ਲਈ)',
'tog-watchcreations' => 'ਮੇਰੇ ਵਲੋਂ ਬਣਾਏ ਗਏ ਸਫ਼ੇ ਅਤੇ ਅੱਪਲੋਡ ਕੀਤੀਆਂ ਫ਼ਾਈਲਾਂ ਮੇਰੀ ਨਿਗਰਾਨੀ-ਲਿਸਟ ਵਿੱਚ ਪਾਓ',
'tog-watchdefault' => 'ਮੇਰੇ ਵੱਲੋਂ ਸੋਧੇ ਗਏ ਸਫ਼ੇ ਅਤੇ ਫ਼ਾਈਲਾਂ ਮੇਰੀ ਨਿਗਰਾਨੀ-ਲਿਸਟ ਵਿੱਚ ਪਾਓ',
'showhideselectedversions' => 'ਚੁਣੇ ਰੀਵਿਜ਼ਨ ਵਖਾਓ/ਲੁਕਾਓ',
'editundo' => 'ਰੱਦ ਕਰੋ',
'diff-empty' => '(ਕੋਈ ਫ਼ਰਕ ਨਹੀਂ)',
-'diff-multi' => '({{PLURAL:$2|ਵਰਤੋਂਕਾਰ ਦੀ|$2 ਵਰਤੋਂਕਾਰਾਂ ਦੀਆਂ}} {{PLURAL:$1|ਵਿਚਕਾਰਲੀ ਰੀਵਿਜਨ ਨਹੀਂ ਦਿਖਾਈ ਜਾ ਰਹੀ|ਵਿਚਕਾਰਲੀਆਂ $1 ਰੀਵਿਜਨਾਂ ਨਹੀਂ ਦਿਖਾਈਆਂ ਜਾ ਰਹੀਆਂ}})',
# Search results
'searchresults' => 'ਖੋਜ ਨਤੀਜੇ',
'rows' => 'ਕਤਾਰਾਂ:',
'columns' => 'ਕਾਲਮ:',
'searchresultshead' => 'ਖੋਜ',
-'resultsperpage' => 'ਪ੍ਰਤੀ ਸਫ਼ਾ ਫੇਰੀਆਂ:',
'stub-threshold-disabled' => 'ਬੰਦ ਹੈ',
'recentchangesdays' => 'ਤਾਜ਼ਾ ਤਬਦੀਲੀਆਂ ਵਿਚ ਵਿਖਾਉਣ ਲਈ ਦਿਨ:',
'recentchangesdays-max' => 'ਵੱਧ ਤੋਂ ਵੱਧ $1 {{PLURAL:$1|ਦਿਨ|ਦਿਨ}}',
'notvisiblerev' => 'ਇੱਕ ਵੱਖਰੇ ਮੈਂਬਰ ਦੀ ਬਣਾਈ ਆਖ਼ਰੀ ਰੀਵਿਜ਼ਨ ਮਿਟਾਈ ਜਾ ਚੁੱਕੀ ਹੈ',
'watchlist-details' => 'ਗੱਲ-ਬਾਤ ਸਫ਼ੇ ਨਾ ਗਿਣਦੇ ਹੋਏ, ਤੁਹਾਡੀ ਨਿਗਰਾਨੀ-ਸੂਚੀ ਵਿਚ{{PLURAL:$1|$1 ਸਫ਼ਾ ਹੈ|$1 ਸਫ਼ੇ ਹਨ}}।',
'watchlistcontains' => 'ਤੁਹਾਡੀ ਨਿਗਰਾਨੀ-ਲਿਸਟ ਵਿਚ $1 {{PLURAL:$1|ਸਫ਼ਾ ਹੈ|ਸਫ਼ੇ ਹਨ}}।',
-'wlnote' => "$3, $4 ਮੁਤਾਬਕ ਆਖ਼ਰੀ {{PLURAL:$2|ਘੰਟੇ|'''$2''' ਘੰਟਿਆਂ}} ਵਿਚ {{PLURAL:
-$1|ਤਬਦੀਲੀ ਹੋਈ|'''$1''' ਤਬਦੀਲੀਆਂ ਹੋਈਆਂ}}, ਹੇਠਾਂ ਵੇਖੋ।",
'wlshowlast' => 'ਪਿਛਲੇ $1 ਘੰਟੇ $2 ਦਿਨ $3 ਵਖਾਓ',
'watchlist-options' => 'ਨਿਗਰਾਨੀ-ਲਿਸਟ ਦੀਆਂ ਚੋਣਾਂ',
'tooltip-pt-watchlist' => "ਉਹਨਾਂ ਸਫ਼ਿਆਂ ਦੀ ਸੂਚੀ ਜਿਹਨਾਂ ਦੀਆਂ ਤਬਦੀਲੀਆਂ 'ਤੇ ਤੁਸੀਂ ਅੱਖ ਰੱਖ ਰਹੇ ਹੋ",
'tooltip-pt-mycontris' => 'ਤੁਹਾਡੇ ਯੋਗਦਾਨਾਂ ਦੀ ਸੂਚੀ',
'tooltip-pt-login' => 'ਤੁਹਾਨੂੰ ਦਾਖ਼ਲ ਹੋਣ ਲਈ ਪ੍ਰੇਰਿਆ ਜਾਂਦਾ ਹੈ; ਪਰ ਇਹ ਕੋਈ ਲਾਜ਼ਮੀ ਨਹੀਂ',
-'tooltip-pt-anonlogin' => 'ਤੁਹਾਨੂੰ ਲਾਗਇਨ ਕਰਨ ਲਈ ਉਤਸ਼ਾਹਿਤ ਕੀਤਾ ਜਾਂਦਾ ਹੈ; ਪਰ ਇਹ ਕੋਈ ਲਾਜ਼ਮੀ ਨਹੀਂ ਹੈ',
'tooltip-pt-logout' => 'ਸਾਈਟ ਤੋਂ ਵਿਦਾਈ ਲਓ',
'tooltip-ca-talk' => 'ਸਮਗੱਰੀ ਸਫ਼ੇ ਬਾਰੇ ਚਰਚਾ',
'tooltip-ca-edit' => 'ਤੁਸੀਂ ਇਹ ਸਫ਼ਾ ਸੋਧ ਸਕਦੇ ਹੋ। ਕਿਰਪਾ ਕਰਕੇ ਤਬਦੀਲੀ ਸਾਂਭਣ ਤੋਂ ਪਹਿਲਾਂ ਝਲਕ ਵੇਖੋ।',
$messages = array(
# User preference toggles
'tog-underline' => 'Gulisan lang panglalam deng suglung:',
-'tog-justify' => 'Pipanten-panten la reng parapu (paragraph)',
'tog-hideminor' => 'Isalikut la reng mangalating edit kareng bayung mengayalili',
'tog-hidepatrolled' => "Isalikut la reng edit a babanten (''controlled edits'') kareng bayung mengayalili",
'tog-newpageshidepatrolled' => "Isalikut la reng bulung a babanten (''patrolled pages'') king listaan king bayung bulung (''new page list'')",
'tog-numberheadings' => 'Tambing lang dinan nomiru deng pamagat',
'tog-showtoolbar' => 'Ipakit ya panaliling toolbar (JavaScript)',
'tog-editondblclick' => 'Alilan la reng bulung kapamilatan ning makataduang pamagpindut (JavaScript)',
-'tog-editsection' => 'Paganan ya ing pamag-edit king dake (section editing) kapamilatan da reng suglung a [edit]
-Pabusten ing pamanaliling dake kapamilatan [alilan] ning suglung',
'tog-editsectiononrightclick' => "Paganan ya ing pamag-edit seksiyon (section editing) kapamilata'ning pamag right click kareng pamagat da reng seksiyon (JavaScript)",
-'tog-showtoc' => 'Pakit ya ing kalamnan [table of contents] (kareng bulung a maki 3 o mas dakal a pamagat)',
'tog-rememberpassword' => '↓Tandanan ya ing kanakung login keng computer a ini (for a maximum of $1 {{PLURAL:$1|day|days}})',
'tog-watchcreations' => 'Idagdag la deng bulung a lelengan ku kareng babanten',
'tog-watchdefault' => 'Idagdag la reng bulung a inalilan ku kareng babanten',
'lineno' => 'Gulis $1:',
'compareselectedversions' => 'Pikumpara/piyanti la reng mepiling bersion',
'editundo' => 'iurung',
-'diff-multi' => '({{PLURAL:$1|1 a pamagbayung miyalilan na |$1 pamagbayung miyalilan na}} a e makalto.)',
# Search results
'searchresults' => 'Ding linual (resulta) king pamanintun',
'rows' => 'Dane (rows):',
'columns' => 'Ding asias:',
'searchresultshead' => 'Maintun',
-'resultsperpage' => 'Tinud (hits) balang bulung:',
'stub-threshold' => 'Angganan ning <a href="#" class="stub">stub link</a> formatting (byte):',
'recentchangesdays' => 'Deng aldong ipalto king bayung mengayalili:',
'recentchangescount' => 'Bilang da reng me-edit a ipalto king bayung mengayalili:',
'watchmethod-list' => 'susurian la reng bulung a babanten para kareng bayung mengayalili',
'watchlistcontains' => 'Atin yang $1 {{PLURAL:$1|a bulung|bulung}} ing kekang tala ring babanten (watchlist).',
'iteminvalidname' => "Maki prublema king '$1', e maliari ing lagyu...",
-'wlnote' => "{{PLURAL:$1|Ing makatuki ing tauling|Ding makatuki ring tauling '''$1''' miyalilan}} kilub {{PLURAL:$2|ning tauling metung a oras|ding tauling '''$2''' oras}}.",
'wlshowlast' => 'Pakit la reng tauling $1 oras $2 aldo $3',
'watchlist-options' => "Deng maliaring gawan kareng listaan da reng babanten (''watchlist'')",
'tooltip-pt-watchlist' => 'Ing tala da reng bulung nung nu mu babanten ing mengayalilan',
'tooltip-pt-mycontris' => 'Tala/listaan da reng kekang ambag',
'tooltip-pt-login' => 'Agkat da kang mag login, oneng e sapilitan iti.',
-'tooltip-pt-anonlogin' => 'Pakisabi ming mag-login ka, oneng e sapilitan iti.',
'tooltip-pt-logout' => 'Mag log out',
'tooltip-ca-talk' => 'Pamisabi-sabi tungkul king bulung kalamnan (content page)',
'tooltip-ca-edit' => 'Malyari meng samasan ing bulung a ini. Pakigamit me pamu ing "pasinag a pipindutan" bayu me isikap.',
$fallback = 'fr';
+// Remove French aliases
+$namespaceGenderAliases = array();
+
$messages = array(
# User preference toggles
'tog-underline' => 'Loïens soulinés:',
-'tog-justify' => 'Aligner ches paragrafes',
'tog-hideminor' => 'Muche ches tiots edits din ches nouvieus cangemints',
'tog-hidepatrolled' => 'Mucher chés wardés édichons din chés nouvieus canjemints',
'tog-newpageshidepatrolled' => 'Muche ches paches pormenées del lisse ed ches nouvèles paches',
'tog-numberheadings' => 'liméro automatique ed ches intétes',
'tog-showtoolbar' => "Afiquer chés otis pou l'édichon (i feut JavaScript)",
'tog-editondblclick' => 'Éditer ches paches aveuc un doube buke (i feut JavaScript)',
-'tog-editsection' => "Pérmet l'édichion del sekchion via [edit] loïens",
'tog-editsectiononrightclick' => "Pérmet l'édichion del sekchion par un droé buke su ch'tite del sekchion (i feut JavaScript)",
-'tog-showtoc' => "Aficher l'tabe ed ches étnus (pou ches paches aveuc plu ed 3 intétes)",
'tog-rememberpassword' => "Warder min lodjine su chl'ordinateu-lo (pour un maximum éd $1 {{PLURAL:$1|jour|jours}})",
'tog-watchcreations' => "Ajouter chés paches qu'éj crée et pi chés fichiés qu'éj téléquertche édseur em lisse à suire",
'tog-watchdefault' => "Ajouter chés paches pi chés fichiés qu'éj cange édseur em lisse à suire.",
'lineno' => 'Line $1:',
'compareselectedversions' => 'Compérer chés couésies contérbuchons',
'editundo' => "n'poin foaire",
-'diff-multi' => '({{PLURAL:$1|Un canjemint intarmédiaire|$1 canjemints intarmédiaires}} par {{PLURAL:$2|un uzeu|$2 uzeus}} {{PLURAL:$1|est muché|sont muchées}})',
# Search results
'searchresults' => 'Tracher chés résultats',
'category-empty' => '"Die Sachgrubb hodd kä Said odda Medje."',
'hidden-categories' => '{{PLURAL:$1|Vaschdegldi Sachgrubb|Vaschdeglde Sachgrubbe}}',
'hidden-category-category' => 'Verschdegelde Grubbe',
-'category-subcat-count' => '{{PLURAL:$2|Die Sachgrubb hod die Unnagrubb.|Die Sachgrubb hod {{PLURAL:$1|Unnagrubb|$1 Unnagrubbe}}, vun gsomd $2.}}',
+'category-subcat-count' => '{{PLURAL:$2|Die Sachgrubb hodd die Unnagrubb.|Die Sachgrubb hodd {{PLURAL:$1|Unnagrubb|$1 Unnagrubbe}}, vun gsomd $2.}}',
'category-subcat-count-limited' => 'Die Sachgrubb hod die {{PLURAL:$1|Unagrubb|$1 Unagrubbe}}.',
-'category-article-count' => '{{PLURAL:$2|Indɐ Sachgrubb hodds die Said.|Die {{PLURAL:$1|Said|$1 Saide}} gibbds inde Sachgrubb, vun gsomd $2.}}',
+'category-article-count' => '{{PLURAL:$2|Die Sachgrubb hodd bloß die Said.|Die {{PLURAL:$1|Said|$1 Saide}} gibbds inde Sachgrubb, vun gsomd $2.}}',
'category-article-count-limited' => 'Die {{PLURAL:$1|Said|$1 Saide}} hodds inde Sachgrubb.',
'category-file-count' => "{{PLURAL:$2|Die Sachgrubb hodd ä Said.|Die {{PLURAL:$1|Said isch änni vun $2 Saide:|S'werren $1 vun gsomd $2 Saide gzaischd:}}}}",
'category-file-count-limited' => 'Die {{PLURAL:$1|Dadai|$1 Dadije}} hodds inde Sachgrubb.',
'articlepage' => 'Inhald õgugge',
'talk' => 'Dischbediere',
'views' => 'Uffruf',
-'toolbox' => 'Wergzaischkischd',
+'toolbox' => 'Wergzaisch',
'userpage' => 'Middawaidasaid õgugge',
'projectpage' => 'Brojegdsaid õgugge',
'imagepage' => 'Dadaisaid õgugge',
'yourname' => 'Middawaidanõme:',
'yourpassword' => 'Kennword:',
'yourpasswordagain' => 'Kennword nomol oigewe:',
-'remembermypassword' => 'Moi Kennword uffm Rechna merge (hegschdns fa $1 {{PLURAL:$1|Daach|Daach}})',
+'remembermypassword' => 'Moi Kennword uffm Brausa merge (hegschdns fa $1 {{PLURAL:$1|Daach|Daach}})',
'login' => 'Õmelde',
'nav-login-createaccount' => 'Õmelde / Kondo õleesche',
'loginprompt' => 'Cookies mugschd fa {{SITENAME}} schun õhawe.',
'passwordtooshort' => 'Kennword muss {{PLURAL:$1|1 Zaische|$1 Zaische}} hawe.',
'password-name-match' => 'Doi Kennword deaf nedd so heese wie du.',
'password-login-forbidden' => 'De Nõme uns Kennword sinn fabode.',
-'mailmypassword' => 'Naijs Kennword iwwa E-Mail schigge',
+'mailmypassword' => 'Kennword zriggsedze',
'accountcreated' => 'Kondo õgleeschd',
'login-abort-generic' => 'Hodd nedd gklabbd - Abgbroche',
'loginlanguagelabel' => 'Schbrooch: $1',
'''({{int:last}})''' = Unnaschied zude vorischi Ausgab, '''{{int:minoreditletter}}''' = gleni Ännarung.",
'history-fieldset-title' => 'Gugg die Gschischd',
'history-show-deleted' => 'Bloß gleschdi Saide zaische',
-'histfirst' => 'Ã\84ldschde',
-'histlast' => 'Naijschde',
+'histfirst' => 'äldschde',
+'histlast' => 'naijschde',
'historyempty' => '(lea)',
# Revision feed
'notextmatches' => 'Kä Iwwaoinschdimmunge midm Tegschd',
'prevn' => 'ledschda {{PLURAL:$1|$1}}',
'nextn' => 'negschd {{PLURAL:$1|$1}}',
-'prevn-title' => 'Frijari $1 {{PLURAL:$1|Eagewnis|Eagewnis}}',
-'nextn-title' => 'Negschdi $1 {{PLURAL:$1|Eagewnis|Eagewnis}}',
+'prevn-title' => 'Frijari $1 {{PLURAL:$1|Eagewniss|Eagewnisse}}',
+'nextn-title' => 'Negschdi $1 {{PLURAL:$1|Eagewniss|Eagewnisse}}',
'shown-title' => 'Zaisch $1 {{PLURAL:$1|Eagewnis}} bro Said',
'viewprevnext' => 'Gugg ($1 {{int:pipe-separator}} $2) ($3)',
'searchmenu-exists' => "'''Dohods ä Said \"[[:\$1]]\".'''",
'rows' => 'Zaile',
'columns' => 'Schbalde',
'searchresultshead' => 'Nochgugge',
-'resultsperpage' => 'Dreffa bro Said',
'stub-threshold-disabled' => 'Abgschdeld',
'guesstimezone' => 'Aus em Browser iwwernemme',
'timezoneregion-africa' => 'Afrika',
'rclistfrom' => 'Zaisch die ledschde Ännarunge ab $1',
'rcshowhideminor' => 'Glenni Ännarunge $1',
'rcshowhidebots' => 'Bots $1',
-'rcshowhideliu' => 'Õgmelda Middawaida $1',
+'rcshowhideliu' => 'Õgmelde Middawaida $1',
'rcshowhideanons' => 'Ned õgmelda Middawaida $1',
'rcshowhidepatr' => '$1 iwabriefde Ännarunge',
'rcshowhidemine' => 'Moi Beawaidunge $1',
'boteditletter' => 'B',
'rc_categories' => 'Oigschrengd uff Sachgrubbe (abgdeeld middm "|")',
'rc_categories_any' => 'Ebbes',
-'rc-enhanced-expand' => 'Änzlhaide zaische (dozu brauchds JavaScript)',
+'rc-enhanced-expand' => 'Änzlhaide zaische',
'rc-enhanced-hide' => 'Õgawe vaschdeggle',
# Recent changes linked
'contributions' => '{{GENDER:$1|Wassa gemachd hodd}}',
'contributions-title' => 'Middawaidabaidräsch vun $1',
'mycontris' => 'Baidräsch',
-'contribsub2' => 'Fa $1 ($2)',
+'contribsub2' => 'Fa {{GENDER:$3|$1}} ($2)',
'uctop' => '(geschewedisch)',
'month' => 'än Monad (un frieja):',
'year' => 'Abm Johr (un frieja):',
'file-info-size' => '$1 × $2 Pixels, Dadaigreß: $3, MIME-Type: $4',
'file-nohires' => 'Ke heheri Ufflesung vafieschba.',
'svg-long-desc' => 'SVG-Datei, Grundgreß $1 × $2 Pixels, Dadaigreß: $3',
-'show-big-image' => 'Volli Ufflesung',
+'show-big-image' => 'Uaschbringlischi Dadai',
# Special:NewFiles
'showhidebots' => '(Bots $1)',
'specialpages-group-pagetools' => 'Wergzaisch fa Saide',
'specialpages-group-wiki' => 'Daade un Wergzaisch',
+# External image whitelist
+'external_image_whitelist' => " #Loss die Zail wiese isch.<pre>
+#Geb unne Deel vunde regulere Ausdrigg (de Deel zwischede //) oi.
+#Die werren midde URLs vun aissare Bilda vaglische.
+#Die wu passen werren gzaischd un schunschd sieschdn n'Ling'g.
+#Zaile, wu midd # ofongen sinnen Kommenda.
+#Glä- odda Großschraiwung isch do egal.
+
+#Deel vun regulere Ausdrigg nochde Zeil oidrache. Loss die Zail do uuvaännad.</pre>",
+
# Special:Tags
'tag-filter' => '[[Special:Tags|Bschildarungs]]-Filda:',
'tags-edit' => 'bearwaide',
* @author Stlmch
* @author Stv
* @author Szczepan1990
+ * @author Tar Lócesilion
* @author Timpul
* @author ToSter
* @author Tsca
$messages = array(
# User preference toggles
'tog-underline' => 'Podkreślenie linków',
-'tog-justify' => 'Wyrównuj tekst w akapitach do obu marginesów',
'tog-hideminor' => 'Ukryj drobne edycje w ostatnich zmianach',
'tog-hidepatrolled' => 'Ukryj sprawdzone edycje w ostatnich zmianach',
'tog-newpageshidepatrolled' => 'Ukryj sprawdzone strony na liście nowych stron',
'tog-numberheadings' => 'Automatyczna numeracja nagłówków',
'tog-showtoolbar' => 'Pokaż pasek narzędzi',
'tog-editondblclick' => 'Podwójne kliknięcie rozpoczyna edycję',
-'tog-editsection' => 'Możliwość edycji poszczególnych sekcji strony (link [edytuj])',
'tog-editsectiononrightclick' => 'Kliknięcie prawym klawiszem myszy na tytule sekcji rozpoczyna jej edycję',
-'tog-showtoc' => 'Pokazuj spis treści (na stronach z więcej niż 3 nagłówkami)',
'tog-rememberpassword' => 'Zapamiętaj moje hasło w przeglądarce (maksymalnie przez $1 {{PLURAL:$1|dzień|dni}})',
'tog-watchcreations' => 'Dodawaj do obserwowanych tworzone przeze mnie strony oraz wgrywane przeze mnie pliki',
'tog-watchdefault' => 'Dodawaj do obserwowanych strony i pliki, które edytuję',
'retypenew' => 'Powtórz nowe hasło',
'resetpass_submit' => 'Ustaw hasło i zaloguj się',
'changepassword-success' => 'Twoje hasło zostało pomyślnie zmienione!',
+'changepassword-throttled' => 'Ostatnio zbyt wiele razy próbowałeś zalogować się na to konto.
+Odczekaj $1, zanim ponowisz próbę.',
'resetpass_forbidden' => 'Hasła nie mogą zostać zmienione',
'resetpass-no-info' => 'Musisz być zalogowany, by uzyskać bezpośredni dostęp do tej strony.',
'resetpass-submit-loggedin' => 'Zmień hasło',
'changeemail-password' => 'Twoje hasło:',
'changeemail-submit' => 'Zapisz nowy',
'changeemail-cancel' => 'Anuluj',
+'changeemail-throttled' => 'Zbyt wiele razy próbowałeś zalogować się na to konto.
+Odczekaj $1, zanim ponowisz próbę.',
# Special:ResetTokens
'resettokens' => 'Resetuj tokeny',
'invalid-content-data' => 'Zawartość strony zawiera nieprawidłowe dane',
'content-not-allowed-here' => 'Zawartość tego typu ($1) nie jest dozwolona na stronie [[$2]]',
'editwarning-warning' => 'Opuszczenie tej strony może spowodować utratę wprowadzonych przez Ciebie zmian.
-Jeśli jesteś zalogowany możesz wyłączyć wyświetlanie tego ostrzeżenia w zakładce Edycja w swoich preferencjach.',
+Jeśli jesteś zalogowany, możesz wyłączyć wyświetlanie tego ostrzeżenia w zakładce „{{int:prefs-editing}}” w swoich preferencjach.',
+'editpage-notsupportedcontentformat-title' => 'Nieobsługiwany format zawartości',
# Content models
'content-model-wikitext' => 'wikitekst',
'cantcreateaccounttitle' => 'Nie można utworzyć konta',
'cantcreateaccount-text' => "Tworzenie konta z tego adresu IP ('''$1''') zostało zablokowane przez [[User:$3|$3]].
+Podany przez $3 powód to ''$2''",
+'cantcreateaccount-range-text' => "Tworzenie konta z adresów IP w zakresie '''$1''', który zawiera i twój adres IP ('''$4'''), zostało zablokowane przez [[User:$3|$3]].
+
Podany przez $3 powód to ''$2''",
# History pages
'rev-suppressed-no-diff' => "Nie można wyświetlić różnic, ponieważ jedna z wersji została '''usunięta'''.",
'rev-deleted-unhide-diff' => "Jedna z porównywanych wersji została '''usunięta'''.
Szczegółowe informacje mogą znajdować się w [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} rejestrze usunięć].
-Jeśli chcesz możesz [$1 obejrzeć porównanie wersji].",
+Jeśli chcesz, możesz [$1 obejrzeć porównanie wersji].",
'rev-suppressed-unhide-diff' => "Jedna z porównywanych wersji została '''ukryta'''.
Szczegółowe informacje mogą znajdować się w [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} rejestrze ukrywania].
Jeśli chcesz możesz [$1 obejrzeć porównanie wersji].",
* Ujawnienie danych osobowych
*: ''adres domowy, numer telefonu, numer PESEL itp''",
'revdelete-legend' => 'Ustaw ograniczenia widoczności',
-'revdelete-hide-text' => 'Ukryj tekst wersji',
+'revdelete-hide-text' => 'Tekst wersji',
'revdelete-hide-image' => 'Ukryj zawartość pliku',
'revdelete-hide-name' => 'Ukryj akcję i cel',
-'revdelete-hide-comment' => 'Ukryj komentarz edycji',
-'revdelete-hide-user' => 'Ukryj nazwę użytkownika/adres IP',
+'revdelete-hide-comment' => 'Opis zmian',
+'revdelete-hide-user' => 'Nazwa użytkownika/adres IP',
'revdelete-hide-restricted' => 'Ukryj informacje przed administratorami tak samo jak przed innymi',
'revdelete-radio-same' => '(bez zmian)',
'revdelete-radio-set' => 'Ukryty',
'showhideselectedversions' => 'Pokaż lub ukryj zaznaczone wersje',
'editundo' => 'anuluj edycję',
'diff-empty' => '(Brak różnic)',
-'diff-multi' => '(Nie pokazano $1 wersji {{PLURAL:$1|utworzonej|utworzonych}} przez {{PLURAL:$2|jednego użytkownika|$2 użytkowników}})',
'diff-multi-manyusers' => '(Nie pokazano $1 {{PLURAL:$1|pośredniej wersji utworzonej|pośrednich wersji utworzonych}} przez {{PLURAL:$2|jednego użytkownika|$2 użytkowników}})',
'difference-missing-revision' => '{{PLURAL:$2|Wersja|$2 wersje|$2 wersji}} #$1 strony "{{PAGENAME}}" nie {{PLURAL:$2|została znaleziona|zostały znalezione|zostało znalezionych}}.
'shown-title' => 'Pokaż po $1 {{PLURAL:$1|wyniku|wyniki|wyników}} na stronę',
'viewprevnext' => 'Zobacz ($1 {{int:pipe-separator}} $2) ($3)',
'searchmenu-exists' => "* Strona '''[[$1]]'''",
-'searchmenu-new' => "'''Utwórz stronę „[[:$1|$1]]” na tej wiki.'''",
+'searchmenu-new' => '<strong>Utwórz stronę „[[:$1]]” na tej wiki!<strong> {{PLURAL:$2|0=|Zobacz też stronę z wynikami wyszukiwania.|Zobacz też wyniki wyszukiwania.}}',
'searchprofile-articles' => 'Strony',
'searchprofile-project' => 'Strony pomocy i projektu',
'searchprofile-images' => 'Multimedia',
'rows' => 'Wiersze',
'columns' => 'Kolumny',
'searchresultshead' => 'Wyszukiwanie',
-'resultsperpage' => 'Liczba wyników na stronie',
'stub-threshold' => 'Maksymalny (w bajtach) rozmiar strony oznaczanej jako <a href="#" class="stub">zalążek (stub)</a>',
'stub-threshold-disabled' => 'Wyłączone',
'recentchangesdays' => 'Liczba dni prezentowanych w ostatnich zmianach',
'userrights-nodatabase' => 'Baza danych $1 nie istnieje lub nie jest lokalna.',
'userrights-nologin' => 'Musisz [[Special:UserLogin|zalogować się]] na konto administratora, by nadawać uprawnienia użytkownikom.',
'userrights-notallowed' => 'Nie jesteś upoważniony do nadawania i odbierania uprawnień użytkownikom.',
-'userrights-changeable-col' => 'Grupy, które możesz wybrać',
-'userrights-unchangeable-col' => 'Grupy, których nie możesz wybrać',
+'userrights-changeable-col' => 'Grupy, które możesz wybrać:',
+'userrights-unchangeable-col' => 'Grupy, których nie możesz wybrać:',
'userrights-conflict' => 'Konflikt zmiany uprawnień użytkownika! Proszę sprawdzić i potwierdzić swoje zmiany.',
'userrights-removed-self' => 'Pomyślnie odebrałeś sobie uprawnienia. W związku z tym nie masz już dostępu do tej strony.',
'right-editusercssjs' => 'Edycja plików CSS i JS innych użytkowników',
'right-editusercss' => 'Edycja plików CSS innych użytkowników',
'right-edituserjs' => 'Edycja plików JS innych użytkowników',
-'right-editmyusercss' => 'Edytuj własne pliki CSS',
-'right-editmyuserjs' => 'Edytuj własne pliki JavaScript',
+'right-editmyusercss' => 'Edycja swoich plików CSS',
+'right-editmyuserjs' => 'Edycja swoich plików JavaScript',
'right-viewmywatchlist' => 'Podgląd swojej listy obserwowanych stron',
'right-editmywatchlist' => 'Edycja swojej listy obserwowanych stron. Niektóre akcje mogą dodawać strony do obserwowanych bez tego uprawnienia.',
'right-viewmyprivateinfo' => 'Podgląd swoich prywatnych danych (np. adres e-mail, prawdziwe imię i nazwisko)',
'right-rollback' => 'Szybkie wycofanie zmian wprowadzonych przez użytkownika, który jako ostatni edytował jakąś stronę',
'right-markbotedits' => 'Oznaczanie rewertu jako edycji bota',
'right-noratelimit' => 'Brak ograniczeń przepustowości',
-'right-import' => 'Import stron z innych wiki',
-'right-importupload' => 'Import stron poprzez przesłanie pliku',
+'right-import' => 'Importowanie stron z innych wiki',
+'right-importupload' => 'Importowanie stron poprzez przesłanie pliku',
'right-patrol' => 'Oznaczanie edycji jako „sprawdzone”',
'right-autopatrol' => 'Automatyczne oznaczanie własnych edycji jako „sprawdzone”',
'right-patrolmarks' => 'Podgląd znaczników patrolowania ostatnich zmian – oznaczania jako „sprawdzone”',
'file-exists-duplicate' => 'Ten plik jest kopią {{PLURAL:$1|pliku|następujących plików:}}',
'file-deleted-duplicate' => 'Identyczny do tego plik ([[:$1]]) został wcześniej usunięty.
Sprawdź historię usunięć tamtego pliku zanim prześlesz go ponownie.',
+'file-deleted-duplicate-notitle' => 'Plik jest identyczny z plikiem, który został wcześniej usunięty, a jego nazwa została ukryta. Należy poprosić kogoś z możliwością przeglądania ukrytych danych, aby przeanalizował sytuację przed przystąpieniem do jego ponownego przesłania.',
'uploadwarning' => 'Ostrzeżenie o przesyłaniu',
'uploadwarning-text' => 'Zmień poniższy opis pliku i spróbuj ponownie.',
'savefile' => 'Zapisz plik',
'ninterwikis' => '$1 {{PLURAL:$1|interwiki|interwiki|interwiki}}',
'nlinks' => '$1 {{PLURAL:$1|link|linki|linków}}',
'nmembers' => '$1 {{PLURAL:$1|element|elementy|elementów}}',
-'nmemberschanged' => '$1 → $2 {{PLURAL:$1|element|elementy|elementów}}',
+'nmemberschanged' => '$1 → $2 {{PLURAL:$2|element|elementy|elementów}}',
'nrevisions' => '$1 {{PLURAL:$1|wersja|wersje|wersji}}',
'nviews' => 'odwiedzono $1 {{PLURAL:$1|raz|razy}}',
'nimagelinks' => 'Używane na $1 {{PLURAL:$1|stronie|stronach}}',
'protectedpages' => 'Strony zabezpieczone',
'protectedpages-indef' => 'Tylko strony zabezpieczone na zawsze',
'protectedpages-cascade' => 'Tylko strony zabezpieczone rekursywnie',
+'protectedpages-noredirect' => 'Ukryj przekierowania',
'protectedpagesempty' => 'Żadna strona nie jest obecnie zabezpieczona z podanymi parametrami.',
'protectedtitles' => 'Zabezpieczone nazwy stron',
'protectedtitlesempty' => 'Dla tych ustawień dopuszczalne jest utworzenie stron o dowolnej nazwie.',
'watchmethod-list' => 'poszukiwanie obserwowanych stron wśród ostatnich zmian',
'watchlistcontains' => 'Na liście obserwowanych przez Ciebie stron {{PLURAL:$1|znajduje się 1 pozycja|znajdują się $1 pozycje|znajduje się $1 pozycji}}.',
'iteminvalidname' => 'Problem z pozycją „$1” – niepoprawna nazwa...',
-'wlnote' => "Poniżej pokazano {{PLURAL:$1|zmianę wykonaną|'''$1''' zmiany wykonane|'''$1''' zmian wykonanych}} w ciągu {{PLURAL:$2|ostatniej godziny|ostatnich '''$2''' godzin}}, licząc od $4 dnia $3.",
+'wlnote2' => 'Poniżej pokazano zmiany wykonane w ciągu {{PLURAL:$1|ostatniej godziny|ostatnich <strong>$1</strong> godzin}}, licząc od $2, $3.',
'wlshowlast' => 'Pokaż ostatnie $1 godzin, $2 dni ($3)',
'watchlist-options' => 'Opcje obserwowanych',
Usuwanie jej zostało ograniczone ze względu na możliwość zakłócenia pracy {{GRAMMAR:D.lp|{{SITENAME}}}}.',
'delete-warning-toobig' => 'Ta strona ma bardzo długą historię edycji – ponad $1 {{PLURAL:$1|zmianę|zmiany|zmian}}.<br />
Bądź ostrożny, ponieważ usunięcie jej może spowodować zakłócenia w pracy {{GRAMMAR:D.lp|{{SITENAME}}}}.',
+'deleting-backlinks-warning' => "''' Uwaga:''' Do strony, którą masz zamiar usunąć, odwołują się inne strony.",
# Rollback
'rollback' => 'Cofnij edycję',
'protectlogpage' => 'Zabezpieczone',
'protectlogtext' => 'Poniżej znajduje się lista zmian w zabezpieczeniu pojedynczych stron.
Wszystkie aktywne zabezpieczenia odnajdziesz na liście [[Special:ProtectedPages|zabezpieczonych stron]].',
-'protectedarticle' => 'zabezpieczono "[[$1]]"',
-'modifiedarticleprotection' => 'zmieniono stopień zabezpieczenia "[[$1]]"',
-'unprotectedarticle' => 'odbezpieczył [[$1]]',
+'protectedarticle' => 'zabezpieczył(a) „[[$1]]”',
+'modifiedarticleprotection' => 'zmienił(a) stopień zabezpieczenia „[[$1]]”',
+'unprotectedarticle' => 'odbezpieczył(a) „[[$1]]”',
'movedarticleprotection' => 'przeniósł ustawienia zabezpieczeń z [[$2]] do [[$1]]',
'protect-title' => 'Zmiana stopnia zabezpieczenia „$1”',
'protect-title-notallowed' => 'Podgląd stopnia zabezpieczenia „$1”',
'restriction-level-all' => 'dowolny stopień',
# Undelete
-'undelete' => 'Odtwórz usuniętą stronę',
+'undelete' => 'Przeglądanie usuniętych stron',
'undeletepage' => 'Odtwarzanie usuniętych stron',
'undeletepagetitle' => "'''Poniżej znajdują się usunięte wersje strony [[:$1]]'''.",
'viewdeletedpage' => 'Zobacz usunięte wersje',
'range_block_disabled' => 'Możliwość blokowania zakresu adresów IP została wyłączona.',
'ipb_expiry_invalid' => 'Błędny czas wygaśnięcia blokady.',
'ipb_expiry_temp' => 'Ukryte blokowanie nazwy użytkownika należy wykonać trwale.',
-'ipb_hide_invalid' => 'Ukrycie konta tego użytkownika nie jest możliwe, prawdopodobnie wykonał on zbyt wiele edycji.',
+'ipb_hide_invalid' => 'Ukrycie konta tego użytkownika nie jest możliwe, wykonał on więcej niż {{PLURAL:$1|jedną edycję|$1 edycje|$1 edycji}}.',
'ipb_already_blocked' => '„$1” jest już zablokowany',
'ipb-needreblock' => '$1 jest już zablokowany. Czy chcesz zmienić ustawienia blokady?',
'ipb-otherblocks-header' => '{{PLURAL:$1|Inna blokada|Inne blokady}}',
'allmessages-prefix' => 'Tytuły rozpoczynające się od',
'allmessages-language' => 'Język:',
'allmessages-filter-submit' => 'Pokaż',
+'allmessages-filter-translate' => 'Przetłumacz',
# Thumbnails
'thumbnail-more' => 'Powiększ',
Brak katalogu dla plików tymczasowych.',
'import-parse-failure' => 'nieudana analiza składni importowanego XML',
'import-noarticle' => 'Brak stron do zaimportowania!',
-'import-nonewrevisions' => 'Wszystkie wersje zostały już wcześniej zaimportowane.',
+'import-nonewrevisions' => 'Nie zaimportowano żadnych wersji (wszystkie były już obecne albo pominięte z powodu błędów).',
'xml-error-string' => '$1 linia $2, kolumna $3 (bajt $4): $5',
'import-upload' => 'Prześlij dane w formacie XML',
'import-token-mismatch' => 'Utracono dane sesji. Proszę spróbować ponownie.',
# Import log
'importlogpage' => 'Rejestr importu',
'importlogpagetext' => 'Rejestr przeprowadzonych importów stron z innych serwisów wiki.',
-'import-logentry-upload' => 'Zaimportowano [[$1]] przez pobieranie plików',
+'import-logentry-upload' => 'zaimportował(a) [[$1]] przez pobieranie plików',
'import-logentry-upload-detail' => '$1 {{PLURAL:$1|wersja|wersje|wersji}}',
-'import-logentry-interwiki' => 'zaimportowano $1 używając transwiki',
+'import-logentry-interwiki' => 'zaimportował(a) $1 używając transwiki',
'import-logentry-interwiki-detail' => '$1 {{PLURAL:$1|wersja|wersje|wersji}} z $2',
# JavaScriptTest
'tooltip-pt-watchlist' => 'Lista stron obserwowanych przez Ciebie',
'tooltip-pt-mycontris' => 'Lista moich edycji',
'tooltip-pt-login' => 'Zachęcamy do zalogowania się, choć nie jest to obowiązkowe.',
-'tooltip-pt-anonlogin' => 'Zachęcamy do zalogowania się, choć nie jest to obowiązkowe',
'tooltip-pt-logout' => 'Wyloguj',
'tooltip-ca-talk' => 'Dyskusja o zawartości tej strony',
'tooltip-ca-edit' => 'Możesz edytować tę stronę. Przed zapisaniem zmian użyj przycisku podgląd.',
'version-hook-name' => 'Nazwa haka (ang. hook name)',
'version-hook-subscribedby' => 'Zapotrzebowany przez',
'version-version' => '(Wersja $1)',
-'version-license' => 'Licencja',
+'version-license' => 'Licencja MediaWiki',
+'version-ext-license' => 'Licencja',
+'version-ext-colheader-name' => 'Rozszerzenie',
+'version-ext-colheader-version' => 'Wersja',
+'version-ext-colheader-license' => 'Licencja',
+'version-ext-colheader-description' => 'Opis',
+'version-ext-colheader-credits' => 'Autorzy',
+'version-license-title' => 'Licencja dla $1',
+'version-license-not-found' => 'Nie znaleziono szczegółowych informacji licencyjnych dla tego rozszerzenia.',
+'version-credits-title' => 'Lista autorów dla $1',
+'version-credits-not-found' => 'Dla tego rozszerzenia nie ma szczegółowych informacji o autorach.',
'version-poweredby-credits' => "Ta wiki korzysta z oprogramowania '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001‐$1 $2.",
'version-poweredby-others' => 'inni',
'version-poweredby-translators' => 'tłumacze translatewiki.net',
'expand_templates_generate_rawhtml' => 'Pokaż surowy HTML',
'expand_templates_preview' => 'Podgląd',
+# Unknown messages
+'createaccount-hook-aborted' => '$1',
);
$messages = array(
# User preference toggles
'tog-underline' => 'Anliure con la sotliniadura',
-'tog-justify' => 'Paràgraf: giustificà',
'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-numberheadings' => 'Tìtoj ëd paràgraf<br />che as nùmero daspërlor',
'tog-showtoolbar' => "Smon-e la bara dj'utiss ëd modìfica",
'tog-editondblclick' => 'Dobia sgnacà për modifiché la pàgina',
-'tog-editsection' => "Abilité le modìfiche ëd session con j'anliure [modifiché]",
'tog-editsectiononrightclick' => 'Abilité la modìfica dle session ën sgnacand-je ansima ai tìtoj col tast drit dël rat',
-'tog-showtoc' => "Smon-e la tàula dij contnù (për le pàgine 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}})",
'tog-watchcreations' => "Gionté le pàgine che i creo mi e j'archivi che i cario mi a la lista ëd lòn che im ten-o sot-euj",
'tog-watchdefault' => "Gionté le pàgine e j'archivi che i modìfico mi a la lista dle ròbe ch'i ten-o sot-euj",
'retypenew' => 'Che a scriva torna soa neuva ciav:',
'resetpass_submit' => 'Argistré la ciav e rintré ant ël sistema',
'changepassword-success' => "Soa ciav a l'é stàita modificà sensa problema!",
+'changepassword-throttled' => "A l'ha fàit tròpi tentativ recent d'intré ant ël sistema.
+Për piasì, ch'a speta $1 prima ëd prové torna.",
'resetpass_forbidden' => 'Le ciav as peulo pa cambiesse',
'resetpass-no-info' => 'A dev esse rintrà ant ël sustema për acede diretament a sta pàgina.',
'resetpass-submit-loggedin' => "Cangé 'd ciav",
'changeemail-password' => 'Soa ciav su {{SITENAME}}:',
'changeemail-submit' => "Cangé l'adrëssa ëd pòsta eletrònica",
'changeemail-cancel' => 'Anulé',
+'changeemail-throttled' => "A l'ha fàit tròpi tentativ ëd rintré ant ël sistema.
+Për piasì, ch'a speta $1 prima ëd prové torna.",
# Special:ResetTokens
'resettokens' => 'Riamposté ij geton',
'invalid-content-data' => 'Dat dël contnù pa bon',
'content-not-allowed-here' => "Ël contnù «$1» a l'é nen autorisà an sla pàgina [[$2]]",
'editwarning-warning' => "Chité sta pàgina-sì a peul feje perde tute le modìfiche ch'a l'ha fàit.
-S'a l'é rintrà ant ël sistema, a peul disabilité st'avis ant la session «Modìfica» dij sò gust.",
+S'a l'é rintrà ant ël sistema, a peul disabilité st'avis ant la session «{{int:prefs-editing}}» dij sò gust.",
+'editpage-notsupportedcontentformat-title' => 'Formà ëd contnù nen mantnù',
+'editpage-notsupportedcontentformat-text' => "Ël formà ëd contnù $1 a l'é nen mantnù dal model Ëd contnù $2.",
# Content models
'content-model-wikitext' => 'test wiki',
'showhideselectedversions' => 'Smon-e/stërmé le version selessionà',
'editundo' => "buta 'me ch'a l'era",
'diff-empty' => '(Gnun-a diferensa)',
-'diff-multi' => "({{PLURAL:$1|Na revision antërmedia|$1 revision antërmedie}} ëd {{PLURAL:$2|n'utent|$2 utent}} pa mostrà)",
+'diff-multi-sameuser' => '({{PLURAL:$1|Na revision antërmedia|$1 revision antërmedie}} nen mostrà)',
+'diff-multi-otherusers' => "({{PLURAL:$1|Na revision antërmedia|$1 revision antërmedie}} ëd {{PLURAL:$2|n'àutr utent|$2 utent}} nen mostrà)",
'diff-multi-manyusers' => "({{PLURAL:$1|Na revision antërmedia|$1 revision antërmedie}} da pi che $2 {{PLURAL:$2|n'utent|utent}} pa mostrà)",
'difference-missing-revision' => "{{PLURAL:$2|Na revision|$2 revision}} dë sta diferensa ($1) a {{PLURAL:$2|l'é pa stàita|son pa stàite}} trovà.
'shown-title' => 'Smon-e $1 {{PLURAL:$1|arzultà|arzultà}} për pàgina',
'viewprevnext' => 'Che a varda ($1 {{int:pipe-separator}} $2) ($3).',
'searchmenu-exists' => "'''A-i é na pàgina ciamà \"[[:\$1]]\" dzora a costa wiki'''",
-'searchmenu-new' => "'''Creé la pàgina «[[:$1]]» ansima a sta wiki-sì!'''",
+'searchmenu-new' => "<strong>Creé la pàgina «[[:$1]]» ansima a costa wiki!</strong> {{PLURAL:$2|0=|Vëdde ëdcò la pàgina trovà con larserca.|Vëdde ëdcò j'arzultà d'arserca trovà.}}",
'searchprofile-articles' => 'Pàgine ëd contnù',
'searchprofile-project' => "Pàgine d'agiut e ëd proget",
'searchprofile-images' => 'Multimedia',
'search-result-score' => 'Arlevansa: $1%',
'search-redirect' => '(ridiression $1)',
'search-section' => '(session $1)',
+'search-file-match' => "(a corëspond al contnù d'archivi)",
'search-suggest' => 'Vorìi-lo pa dì: $1',
'search-interwiki-caption' => 'Proget frej',
'search-interwiki-default' => 'Arzultà da $1:',
'rows' => 'Righe:',
'columns' => 'Colòne:',
'searchresultshead' => "Specifiché soe preferense d'arserca",
-'resultsperpage' => 'Arzultà da mostré për vira pàgina:',
'stub-threshold' => 'Valor mìnim për j\'<a href="#" class="stub">anliure a jë sbòss</a>:',
'stub-threshold-disabled' => 'Disabilità',
'recentchangesdays' => "Vàire dì smon-e ant j'ùltime modìfiche:",
'file-exists-duplicate' => "S'archivi a l'é un duplicà ëd {{PLURAL:$1|cost-sì|costi-sì}}:",
'file-deleted-duplicate' => "N'archivi idéntich a cost-sì ([[:$1]]) a l'é scàit ëscancelà an passà.
A dovrìa controlé la stòria djë scancelament ëd l'archivi prima ëd carielo torna.",
+'file-deleted-duplicate-notitle' => "N'archivi idéntich a cost-sì a l'é già stàit ëscancelà e ël tìtol a l'é stàit eliminà.
+A dovrìa ciamé a cheidun con la possibilità ëd vëdde ij dàit dj'archivi eliminà ëd riesaminé la situassion prima ëd carielo torna.",
'uploadwarning' => 'Avis che i soma dapress a carié',
'uploadwarning-text' => "Për piasì, ch'a modìfica la descrission ëd l'archivi sì-sota e ch'a preuva torna.",
'savefile' => "Salvé l'archivi",
'protectedpages' => 'Pàgine sota protession',
'protectedpages-indef' => 'Mach protession anfinìe',
'protectedpages-cascade' => 'Mach protession a cascà',
+'protectedpages-noredirect' => 'Stërmé le ridiression',
'protectedpagesempty' => 'Për adess a-i é pa gnun-a pàgina protegiùa',
'protectedtitles' => 'Tìtoj protegiù',
'protectedtitlesempty' => "A-i é pa gnun tìtol protegiù ch'a-i intra coi criteri ch'a l'ha butà.",
'watchmethod-list' => 'contròl ëd le pàgine che as ten sot-euj për vëdde se a-i sio staje dle modìfiche recente',
'watchlistcontains' => "Soa lista dla ròba ch'as ten sot-euj a l'ha andrinta {{PLURAL:$1|na pàgina|$1 pàgine}}.",
'iteminvalidname' => "Problema con l'element '$1', nòm nen vàlid...",
-'wlnote' => "Ambelessì sota a-i {{PLURAL:$1|é l'ùltima modìfica|son j'ùltime '''$1''' modìfiche}} ant {{PLURAL:$2|l'ùltima ora|j'ùltime '''$2''' ore}}, a parte da $3, $4.",
+'wlnote2' => "Sì-sota a-i son le modìfiche {{PLURAL:$1|ant l'ùltima ora|ant j'ùltime <strong>$1</strong> ore}}, a parte da $2, $3.",
'wlshowlast' => "Smon-e j'ùltime $1 ore $2 dì $3",
'watchlist-options' => "Opsion ëd la lista dla ròba ch'as ten sot-euj",
'delete-warning-toobig' => "Sta pàgina-sì a l'ha na stòria motobin longa, bele pì che $1 {{PLURAL:$1|revision|revision}}.
A scancelela as peul fesse darmagi a j'operassion dla base ëd dat ëd {{SITENAME}};
ch'a daga da ment a lòn ch'a fa.",
+'deleting-backlinks-warning' => "'''Avis:''' D'àutre pàgine a l'han na liurao a transcludo a la pàgina che chiel a veul ëscancelé.",
# Rollback
'rollback' => 'Gavé via le modìfiche',
Ch'a consulta la [[Special:BlockList|lista dij blocagi]] për rivëdde ij blocagi.",
'ipb-blockingself' => "A l'é an camin ch'as blòca chiel-midem! É-lo sigur ëd vorèj fé lòn?",
'ipb-confirmhideuser' => "A l'é an camin ch'a blòca n'utent con «stërmé l'utent» abilità. Sòn a gaverà lë stranòm ëd l'utent da tute le liste e le vos ëd registr. É-lo sigur ëd vorèj fé lòn?",
+'ipb-confirmaction' => "S'a l'é sigur ëd vorèj pròpe felo, për piasì ch'a marca ël camp «{{int:ipb-confirm}}» al fond.",
'ipb-edit-dropdown' => 'Modifiché le rason dël blocagi',
'ipb-unblock-addr' => 'Dësbloché $1',
'ipb-unblock' => "Dësbloché n'utent ò n'adrëssa IP",
'range_block_disabled' => "La possibilità che n'aministrator a fasa dij blocagi a ragg a l'é disabilità.",
'ipb_expiry_invalid' => 'Temp dë scadensa nen bon.',
'ipb_expiry_temp' => 'Ij blocagi djë stranòm ëstërmà a devo esse përmanent.',
-'ipb_hide_invalid' => 'Impossìbil scancelé ës cont; a podrìa avèj tròpe modìfiche.',
+'ipb_hide_invalid' => "Impossìbil scancelé ës cont; a l'ha pi ëd {{PLURAL:$1|na modìfica|$1 modìfiche}}.",
'ipb_already_blocked' => "«$1» a l'é già blocà",
'ipb-needreblock' => "$1 a l'é già blocà. Veul-lo cambié j'ampostassion?",
'ipb-otherblocks-header' => '{{PLURAL:$1|Àutr|Àutri}} blocagi',
'allmessages-prefix' => 'Filtré për prefiss:',
'allmessages-language' => 'Lenga:',
'allmessages-filter-submit' => 'Apliché',
+'allmessages-filter-translate' => 'Volté',
# Thumbnails
'thumbnail-more' => 'Slarghé',
'importuploaderrortemp' => "A l'é falìe la caria dl'archivi d'amporté. A-i manca un dossié provisòri.",
'import-parse-failure' => "Eror dë scomposission XML ant l'amportassion",
'import-noarticle' => "Pa gnun-a pàgina d'amporté.",
-'import-nonewrevisions' => "Tute le revision a j'ero già stàite amportà.",
+'import-nonewrevisions' => "Gnun-a revision amportà (tute a j'ero già presente opura a son ëstàite sautà për via d'eror).",
'xml-error-string' => '$1 ant la riga $2, colòna $3 (byte $4): $5',
'import-upload' => 'Cariament ëd dat XML',
'import-token-mismatch' => "Pèrdita dij dat ëd session.
'import-error-special' => "La pàgina «$1» a l'é pa amportà përchè a ponta a në spassi nominal ch'a përmët pa dle pàgine.",
'import-error-invalid' => "La pàgina «$1» a l'é pa amportà përchè sò nòm a l'é pa bon.",
'import-error-unserialize' => "La revision $2 dla pagina «$1» a peul pa esse desserialisà. La revision a l'era arportà përchè a deuvra ël model ëd contnù $3 serialisà com $4.",
+'import-error-bad-location' => "La revision $2, ch'a deuvra ël model ëd contnù $3 a peul nen esse guernà su «$1» su costa wiki, dagià che col model a l'é nen mantnù su cola pàgina.",
'import-options-wrong' => '{{PLURAL:$2|Opsion|Opsion}} sbalià: <nowiki>$1</nowiki>',
'import-rootpage-invalid' => "La pàgina prinsipal dàita a l'é un tìtol pa bon.",
'import-rootpage-nosubpage' => 'Lë spassi nominal «$1» ëd la pàgina prinsipal a përmët pa dle sot-pagine.',
'tooltip-pt-watchlist' => 'Lista dle pàgine che chiel as ten sot euj.',
'tooltip-pt-mycontris' => 'Lista ëd soe contribussion',
'tooltip-pt-login' => "Un a l'é nen obligà a rintré ant al sistema, ma se a lo fa a l'é mej",
-'tooltip-pt-anonlogin' => "Un a l'é nen obligà a rintré ant al sistema, ma se a lo fa a l'é mej",
'tooltip-pt-logout' => 'Seurte da',
'tooltip-ca-talk' => 'Discussion ansima a sta pàgina ëd contnù.',
'tooltip-ca-edit' => 'A peul modifiché sa pàgina-sì. Për piasì, che as fasa na preuva anans che salvé.',
'version-parser-function-hooks' => 'Gancio për le fonsion dël dëscompositor',
'version-hook-name' => 'Nòm dël gancio',
'version-hook-subscribedby' => 'A son scrivusse',
-'version-version' => '(Version $1)',
-'version-license' => 'Licensa',
+'version-version' => '($1)',
+'version-license' => 'Licensa MediaWiki',
+'version-ext-license' => 'Licensa',
+'version-ext-colheader-name' => 'Estension',
+'version-ext-colheader-version' => 'Version',
+'version-ext-colheader-license' => 'Licensa',
+'version-ext-colheader-description' => 'Descrission',
+'version-ext-colheader-credits' => 'Autor',
+'version-license-title' => 'Licensa për $1',
+'version-license-not-found' => "Gnu-a anformassion detajà ëd la licensa a l'é stàita trovà për costa estension.",
+'version-credits-title' => 'Arconossiment për $1',
+'version-credits-not-found' => "Gnun-a anformassion detajà d'arconossiment a l'é stàita trovà për costa estension.",
'version-poweredby-credits' => "Costa wiki-sì a marcia grassie a '''[https://www.mediawiki.org/ MediaWiki]''', licensa © 2001-$1 $2.",
'version-poweredby-others' => 'àutri',
'version-poweredby-translators' => 'tradutor ëd translatewiki.net',
'api-error-overwrite' => "Dzorascrive ansima a n'archivi esistent a l'é nen përmëttù.",
'api-error-stashfailed' => "Eror antern: ël servent a l'ha pa podù memorisé l'archivi a temp.",
'api-error-publishfailed' => "Eror antern: Ël servent a l'ha pa podù publiché l'archivi provisòri.",
+'api-error-stasherror' => "A-i é staje n'eror durant ël cariament dl'archivi da stërmé.",
'api-error-timeout' => "Ël servent a l'ha pa rëspondù ant ël temp ëspetà.",
'api-error-unclassified' => "A l'é capitaje n'eror nen conossù.",
'api-error-unknown-code' => 'Eror sconossù: «$1».',
'expand_templates_generate_rawhtml' => "Smon-e l'HTML sempi",
'expand_templates_preview' => 'Preuva',
+# Unknown messages
+'createaccount-hook-aborted' => '$1',
+'uploadinvalidxml' => "L'XML ant l'archivi carià a l'ha nen podù esse analisà.",
);
$messages = array(
# User preference toggles
'tog-underline' => 'حوڑ تھلے لین:',
-'tog-justify' => 'پیراگراف ثابت کرو',
'tog-hideminor' => 'چھوٹیاں تبدیلیاں چھپاؤ',
'tog-hidepatrolled' => 'ویکھیاں تبدیلیاں لکاؤ',
'tog-newpageshidepatrolled' => 'نویاں صفیاں توں ویکھیاں تبدیلیاں لکاؤ',
'tog-numberheadings' => 'آپ نمبر دین والیاں سرخیاں',
'tog-showtoolbar' => 'ایڈٹ ٹولبار وکھاؤ',
'tog-editondblclick' => 'صفیاں تے ڈبل کلک کرن تے تبدیلیاں لیاؤ',
-'tog-editsection' => 'سیکشن ایڈیٹنگ جوڑاں نال بناؤ',
'tog-editsectiononrightclick' => 'سیکشن سرخی تے تبدیلی لیاؤ سجی کلک نال',
-'tog-showtoc' => 'آرٹیکل دی لسٹ دسو (3 توں چوکھیاں سرخیاں والے صفیاں دی)',
'tog-rememberpassword' => 'اس براؤزر تے میرا ورتن ناں یاد رکھو ($1 {{PLURAL:$1|دن|دناں}} واسطے)',
'tog-watchcreations' => 'جیہڑے صفے میں بناندا واں اوہ میری اکھ تھلے لسٹ چ کر دیو',
'tog-watchdefault' => 'جیہڑے صفے میں لکھداں اوہ میری اکھ تھلے لسٹ چ کر دیو',
'compareselectedversions' => 'چنے صفحے آپنے سامنے کرو',
'showhideselectedversions' => 'وکھاؤ/لکاؤ چنیاں دہرائیاں',
'editundo' => 'واپس',
-'diff-multi' => '({{PLURAL:$1|اک درمیانی تبدیلی|$1 درمیانی تبدیلی}} {{PLURAL:$2|اک ورتن والا|$2 ورتن والے}} کولوں نئیں وکھائی گئی۔)',
'diff-multi-manyusers' => '({{انیک:$1|اک وشکارلی ریوین|$1 وشکارلیاں ریویناں}} توں ود $2 {{انیک:$2|ورتن والا|ورتن والا}} نئیں دسی گئی)',
# Search results
'rows' => 'قطار:',
'columns' => 'کالم:',
'searchresultshead' => 'کھوج',
-'resultsperpage' => 'ہر صفے ویکھیا گیا:',
'stub-threshold' => 'بوآ <a href="#" class="stub">stub link</a> formatting (bytes): لئی',
'stub-threshold-disabled' => 'ناکارہ',
'recentchangesdays' => 'نیڑے دیاں ہویاں تبدیلیاں چ دن دسو:',
'watchmethod-list' => 'ویکھے کے صفے نیڑے ہون والیاں تبدیلیاں دی پڑتال',
'watchlistcontains' => 'تھواڈی اکھ تھلے رکھی لسٹ چ $1 {{PLURAL:$1|صفہ|صفے}} نیں۔',
'iteminvalidname' => "'$1' نال رپھڑ، ناں غلط",
-'wlnote' => "تھلے {{PLURAL:\$1|آخری تبدیلی|آخری تبدیلیاں '''1\$''' }} آخر تے {{PLURAL:\$2|کینٹہ|'''2\$''' کینٹے}} 3\$، 4\$.",
'wlshowlast' => 'آخری $1 گھنٹے $2 دن $3 وکھاؤ',
'watchlist-options' => 'نظر تھلے رکھن دیاں راہواں',
'tooltip-pt-watchlist' => 'او صفحے جنہاں وچ تبدیلیاں تسی ویکھ رہے او',
'tooltip-pt-mycontris' => 'میرے کم',
'tooltip-pt-login' => 'اے بہتر اے کہ لاگ ان ہو جاؤ، لیکن فیر وی اے لازمی نئیں۔',
-'tooltip-pt-anonlogin' => 'اے بہتر اے کہ لاگ ان ہو جاؤ، لیکن فیر وی اے لازمی نئیں۔',
'tooltip-pt-logout' => 'باہر آؤ',
'tooltip-ca-talk' => 'اس صفحے دے بار وچ گل بات',
'tooltip-ca-edit' => 'تسیں اس صفے تے لکھ سکدے او۔
$messages = array(
# User preference toggles
'tog-underline' => 'Autengīnsenin paglaubasnā',
-'tog-justify' => 'Izlīginais tekstan prei abbans pāusans',
'tog-hideminor' => 'Kliptinais malkans tikrisnans en panzdaumamans kitawīdinsnans',
'tog-hidepatrolled' => 'Kliptinais izbandātans redigīsenins en panzdaumamans kitawīdinsnans',
'tog-newpageshidepatrolled' => 'Kliptinais izbandātans pāusans iz listin stēisan nāunan pāusan',
'tog-numberheadings' => 'Autōmatiska galwasrīndan nummerinsna',
'tog-showtoolbar' => 'Waidinnais sawinzlin stēisan pagaptin (JavaScript)',
'tog-editondblclick' => 'Redigīs pāusans pra dwigubban pellis gnesnan (JavaScript)',
-'tog-editsection' => 'Ermazīnginais redigīsnan stēisan pāusas sekciōnin pra "[redigīs]" autengīnsenin',
'tog-editsectiononrightclick' => 'Ermazīnginais redigīsnan stēisan pāusas sekciōnin pra tikrōman pellis knuppas gnesnan na tenesses tītelin',
-'tog-showtoc' => 'Waidinnais ēnturas listin (en pāusamans sen tūls nikāi 3 galwasrīndans)',
'tog-rememberpassword' => 'Pamēnais enēisenes infōrmaciōnins en šismu kōmputerin (per maksimum of $1 {{PLURAL:$1|deinā|dēinans}})',
'tog-watchcreations' => 'Preidāis pāusans kawīdans as teīke prei majjan listin stēisan nadirītan',
'tog-watchdefault' => 'Preidāis pāusans kawīdans as redigijja prei majjan listin stēisan nadirītan',
'lineno' => 'Rindā $1:',
'compareselectedversions' => 'Paligīnais etrīnktans wersiōnins',
'editundo' => 'Naikinnais redigīsenin',
-'diff-multi' => '(Ni pawaidinnā di $1{{PLURAL:$1|wersiōnin|wersiōnins}} sirzdau šans)',
# Search results
'searchresults' => 'Laukīsnas rezultātai',
'rows' => 'Rīndas:',
'columns' => 'Kōlunis:',
'searchresultshead' => 'Laukīs',
-'resultsperpage' => 'Rezultātan gīrbis en pāusu',
'stub-threshold' => 'Maksimālin debban stesse pāusan ebzentlitan kāigi <a href="#" class="stub">daīgan (stub)</a>',
'recentchangesdays' => 'Dēinan gīrbis, waidīnts en panzdaumamans kitawīdinsnans:',
'recentchangesdays-max' => 'Maksimālai $1 {{PLURAL:$1|deinā|dēinas}}',
'watchmethod-list' => 'Izbandasnā stēisan nadirītan pāusan laukīntei panzdaumans kitawīdisnans',
'watchlistcontains' => 'En twajjai listin stēisan nadirītan ast $1 {{PLURAL:$1|pāusan|pāusai}}.',
'iteminvalidname' => 'Prōblamans sen elamēntan "$1", nitikrōmiska pabilisnā...',
-'wlnote' => "Zemmais pawaidinnā di {{PLURAL:$1|panzdauman kitawīdinsnan|panzdaumans '''$1''' kitawīdinsnans}} en {{PLURAL:$2|panzdauman stundin|'''$2''' panzdaumans stundins}}.",
'wlshowlast' => 'Waidinnais panzdaumans $1 stūndins, $2 dēinans ($3)',
'watchlist-options' => 'Nadirītan listis mazīngiskwas',
'tooltip-pt-watchlist' => 'Listi stēisan pāusan nadirītan prō tin',
'tooltip-pt-mycontris' => 'Listi twajāsan ēndijan',
'tooltip-pt-login' => 'Rēidimai, kai tū enēilai, šlāit sta ni ast izkīnintan',
-'tooltip-pt-anonlogin' => 'Rēidimai kāi enēilai, adder sta ni ast izkīnintan',
'tooltip-pt-logout' => 'Izjaīs',
'tooltip-ca-talk' => 'Diskusiōni ezze šisse pāusas ēnturan',
'tooltip-ca-edit' => 'Tū mazzi redigītun šin pāusan.
$messages = array(
# User preference toggles
'tog-underline' => 'کرښنې تړنې:',
-'tog-justify' => 'پاراگرافونه همجوليزول',
'tog-hideminor' => 'په وروستيو بدلونو کې واړه سمونونه پټول',
'tog-hidepatrolled' => 'په وروستيو بدلونونو کې څارل شوې سمونونه پټول',
'tog-newpageshidepatrolled' => 'د نوؤ مخونو په لړليک کې کتل شوي مخونه پټول',
'tog-numberheadings' => 'د سرليکونو خپلکاره شمېرايښودنه',
'tog-showtoolbar' => 'د سمون اوزارپټه ښکاره کول',
'tog-editondblclick' => 'په دوه کلېک سره د مخونو سمون',
-'tog-editsection' => 'د [سمول] تړنې له لوري د يوې ليکنې يوه برخه د سمون وړ گرځول',
'tog-editsectiononrightclick' => 'د ليکنې د يوې برخې په سرليک ښي کلېک کول د هغې برخې سمون چارنوي',
-'tog-showtoc' => 'نيوليک ښکاره کول (د هغو مخونو لپاره چې له ۳ نه ډېر سرليکونه لري)',
'tog-rememberpassword' => 'زما کارن-نوم په دې کتنمل (تر $1 {{PLURAL:$1|ورځې|ورځو}}) په ياد وساته!',
'tog-watchcreations' => 'زما کتنلړ کې دې هغه مخونه چې زه يې جوړوم او هغه دوتنې چې زه يې پورته کوم ورگډې شي',
'tog-watchdefault' => 'زما کتنلړ کې دې هغه مخونه او دوتنې ورگډې شي چې زه يې سموم',
'badretype' => 'دا پټنوم چې تاسې ليکلی د مخکني پټنوم سره ورته نه دی.',
'userexists' => 'کوم کارن نوم چې تاسې ورکړی هغه بل چا کارولی.
لطفاً يو بل نوم وټاکۍ.',
-'loginerror' => 'د Ù\86Ù\86Ù\88تÙ\86Û\90 ستونزه',
+'loginerror' => 'د Ù\86Ù\86Ù\88تÙ\84Ù\88 ستونزه',
'createacct-error' => 'د گڼون جوړېدنې ستونزه',
'createaccounterror' => 'گڼون مو جوړ نه شو: $1',
'nocookiesnew' => 'ستاسې گڼون جوړ شو، خو تاسې لا غونډال ته نه ياست ورننوتلي.
'creating' => '$1 جوړېدنې کې دی',
'editingsection' => '$1 (برخه) په سمېدنې کې دی',
'editingcomment' => 'د $1 سمون (نوې برخه)',
-'editconflict' => 'په سمادولو کې خنډ: $1',
+'editconflict' => 'په سمولو کې خنډ: $1',
'yourtext' => 'ستاسې متن',
'storedversion' => 'زېرمه شوې مخکتنه',
'yourdiff' => 'توپيرونه',
'showhideselectedversions' => 'ټاکلې بڼې ښکاره کول/پټول',
'editundo' => 'ناکړ',
'diff-empty' => '(بې توپيره)',
-'diff-multi' => ' د ({{PLURAL:$2| يو کارن|$2 کارنانو}} لخوا {{PLURAL:$1|يوه منځګړې بڼه|$1 منځګړې بڼې}}د نه ده ښکاره شوې)',
# Search results
'searchresults' => 'د پلټنې پايلې',
'rows' => 'ليکې:',
'columns' => 'ستنې:',
'searchresultshead' => 'پلټل',
-'resultsperpage' => 'په هر مخ کې د پايلو شمېر:',
'stub-threshold-disabled' => 'ناچارن',
'recentchangesdays' => 'د هغو ورځو شمېر وټاکی چې په وروستي بدلونو کې يې ليدل غواړی:',
'recentchangesdays-max' => 'حد اکثر $1 {{PLURAL:$1|ورځ|ورځې}}',
'wlheader-showupdated' => "هغه مخونه چې ستاسې د کتلو نه وروسته بدلون موندلی په '''روڼ''' ليک په نښه شوي.",
'watchlistcontains' => 'ستاسې کتنلړ $1 {{PLURAL:$1|مخ|مخونه}} لري.',
'iteminvalidname' => "د '$1' توکي سره ستونزه، ناسم نوم ...",
-'wlnote' => "دلته لاندې {{PLURAL:$1|وروستی بدلون دی|وروستي '''$1''' بدلونونه دي}} چې په {{PLURAL:$2|تېر ساعت|تېرو '''$2''' ساعتونو}} کې تر $3 نېټې او $4 بجو پېښ شوي.",
'wlshowlast' => 'وروستي $1 ساعتونه $2 ورځې $3 ښکاره کړه',
'watchlist-options' => 'د کتنلړ خوښنې',
'contributions' => '{{GENDER:$1|کارن}} ونډې',
'contributions-title' => 'د $1 کارن ونډې',
'mycontris' => 'ونډې',
-'contribsub2' => 'د $1 لپاره ($2)',
+'contribsub2' => 'د {{GENDER:$3|$1}} لپاره ($2)',
'nocontribs' => 'دې شرطونو سره سم بدلونونه و نه موندل شول.',
'uctop' => '(اوسنی)',
'month' => 'له مياشتې د (او پخواني):',
'sp-contributions-newbies' => 'د نوو گڼونونو ونډې ښکاره کول',
'sp-contributions-newbies-sub' => 'د نوو گڼونونو لپاره',
+'sp-contributions-newbies-title' => 'د نويو گڼونونو لپاره د کارن ونډې',
'sp-contributions-blocklog' => 'د بنديز يادښت',
'sp-contributions-deleted' => 'ړنگېدلې کارن ونډې',
'sp-contributions-uploads' => 'پورته کېدنې',
'sp-contributions-logs' => 'يادښتونه',
'sp-contributions-talk' => 'خبرې اترې',
+'sp-contributions-userrights' => 'د کارن رښتو سمبالښت',
'sp-contributions-blocked-notice' => 'دم مهال په دې کارن بنديز لگېدلی.
د بنديز يادښت تازه مالومات په لاندې توگه دي:',
'sp-contributions-search' => 'د ونډو پلټنه',
'import-upload-filename' => 'د دوتنې نوم:',
'import-comment' => 'تبصره:',
'import-revision-count' => '$1 {{PLURAL:$1|بڼه|بڼې}}',
+'importnotext' => 'تش او يا بې متنه مخ',
# Import log
'importlogpage' => 'د واردولو يادښت',
'tooltip-pt-watchlist' => 'د هغه مخونو لړليک چې تاسې يې د بدلون لپاره څاری',
'tooltip-pt-mycontris' => 'ستاسې د ونډو لړليک',
'tooltip-pt-login' => 'تاسې ته په غونډال کې د ننوتلو سپارښتنه کوو، که څه هم چې دا يو اړين کار نه دی.',
-'tooltip-pt-anonlogin' => 'تاسو ته په غونډال کې د ننوتلو سپارښتنه کوو، که څه هم چې دا يو اړين کار نه دی.',
'tooltip-pt-logout' => 'وتل',
'tooltip-ca-talk' => 'د مخ د مېنځپانگې په اړه خبرې اترې',
'tooltip-ca-edit' => 'تاسې همدا مخ سمولای شی. لطفاً د ليکنې د خوندي کولو دمخه، د همدې ليکنې مخليدنه وگورۍ.',
'tooltip-diff' => 'دا هغه بدلونونه چې تاسې په متن کې ترسره کړي، ښکاره کوي. [alt-v]',
'tooltip-compareselectedversions' => 'د همدې مخ د دوو ټاکل شويو بڼو تر مېنځ توپيرونه وگورۍ.',
'tooltip-watch' => 'دا مخ ستاسې کتنلړ کې ورگډوي [alt-w]',
+'tooltip-watchlistedit-normal-submit' => 'سرليکونه غورځول',
+'tooltip-watchlistedit-raw-submit' => 'کتنلړ اوسمهالول',
'tooltip-upload' => 'د پورته کولو پيل',
'tooltip-rollback' => 'په همدې مخ کې "په شابېول" د وروستني ونډوال سمون (سمونونه) په يوه کلېک په څټ ورګرځوي.',
'tooltip-undo' => '"ناکړ" همدا سمون پر شا گرځوي او د سمون کړکۍ د مخکتنې په بڼه پرانيزي.
'pageinfo-contentpage' => 'مېنځپانگيز مخ کې شمېرل شوی',
'pageinfo-contentpage-yes' => 'هو',
'pageinfo-protect-cascading-yes' => 'هو',
+'pageinfo-category-info' => 'د وېشنيزې مالومات',
+'pageinfo-category-pages' => 'د مخونو شمېر',
+'pageinfo-category-subcats' => 'د څېرمه وېشنيزو شمېر',
'pageinfo-category-files' => 'د دوتنو شمېر',
# Skin names
# Media information
'thumbsize' => 'د بټنوک کچه:',
'widthheightpage' => '$1 × $2, $3 {{PLURAL:$3|مخ|مخونه}}',
+'file-info' => 'د دوتنې کچه: $1, MIME ډول: $2',
'file-info-size' => '$1 × $2 پېکسل, د دوتنې کچه: $3, MIME بڼه: $4',
'file-nohires' => 'تر دې کچې لوړې بېلن نښې نشته.',
'svg-long-desc' => 'SVG دوتنه، نومېنلي $1 × $2 پېکسل، د دوتنې کچه: $3',
'minutes' => '{{PLURAL:$1|$1 دقيقه|$1 دقيقې}}',
'hours' => '{{PLURAL:$1|$1 ساعت|$1 ساعتونه}}',
'days' => '{{PLURAL:$1|$1 ورځ|$1 ورځې}}',
+'weeks' => '{{PLURAL:$1|$1 اونۍ|$1 اونۍ}}',
'months' => '{{PLURAL:$1|$1 مياشت|$1 مياشتې}}',
'years' => '{{PLURAL:$1|$1 کال|$1 کالونه}}',
'ago' => '$1 دمخه',
'redirect-submit' => 'ورځه',
'redirect-value' => 'ارزښت:',
'redirect-user' => 'کارن پېژند',
+'redirect-page' => 'د مخ پېژند',
'redirect-file' => 'د دوتنې نوم',
'redirect-not-exists' => 'ارزښت و نه موندل شو',
'duration-millennia' => '$1 {{PLURAL:$1|زرمه|زرمې}}',
# Limit report
+'limitreport-cputime' => 'سي پي يو وخت کارېدنه',
+'limitreport-cputime-value' => '$1 {{PLURAL:$1|ثانيه|ثانيې}}',
+'limitreport-walltime' => 'اصلي وخت کارېدنه',
+'limitreport-walltime-value' => '$1 {{PLURAL:$1|ثانيه|ثانيې}}',
'limitreport-postexpandincludesize-value' => '$1/$2 {{PLURAL:$2|بايټ|بايټونه}}',
# Special:ExpandTemplates
* @author Indech
* @author Jens Liebenau
* @author Jorge Morais
+ * @author Josep Maria 15.
* @author Kaganer
* @author Leonardo.stabile
* @author Lijealso
$messages = array(
# User preference toggles
'tog-underline' => 'Sublinhar ligação:',
-'tog-justify' => 'Justificar parágrafos',
'tog-hideminor' => 'Esconder edições menores nas mudanças recentes',
'tog-hidepatrolled' => 'Esconder edições patrulhadas nas mudanças recentes',
'tog-newpageshidepatrolled' => 'Esconder páginas patrulhadas na lista de páginas novas',
'tog-numberheadings' => 'Auto-numerar cabeçalhos',
'tog-showtoolbar' => 'Mostrar barra de edição',
'tog-editondblclick' => 'Editar páginas quando houver um clique duplo',
-'tog-editsection' => 'Possibilitar a edição de secções com links [editar]',
'tog-editsectiononrightclick' => 'Possibilitar a edição de seções por clique com o botão direito no título da seção',
-'tog-showtoc' => 'Mostrar índice (para páginas com mais de três seções)',
'tog-rememberpassword' => 'Recordar os meus dados neste browser (no máximo, durante $1 {{PLURAL:$1|dia|dias}})',
'tog-watchcreations' => 'Adicionar as páginas e ficheiros que eu criar às minhas páginas vigiadas',
'tog-watchdefault' => 'Adicionar as páginas e ficheiros que eu editar às minhas páginas vigiadas',
'content-not-allowed-here' => 'Conteúdo do tipo "$1" não é permitido na página [[$2]]',
'editwarning-warning' => 'Sair desta página fará com que você perca quaisquer alterações feitas por você.
Se você se autenticou, pode desabilitar este aviso na seção "Edição" das suas preferências.',
+'editpage-notsupportedcontentformat-title' => 'Formato de conteúdo não suportado',
# Content models
'content-model-wikitext' => 'wikitexto',
'showhideselectedversions' => 'Mostrar/ocultar versões selecionadas',
'editundo' => 'desfazer',
'diff-empty' => '(Sem diferenças)',
-'diff-multi' => '({{PLURAL:$1|Uma edição intermédia|$1 edições intermédias}} de {{PLURAL:$2|um utilizador|$2 utilizadores}} {{PLURAL:$1|não apresentada|não apresentadas}})',
'diff-multi-manyusers' => '({{PLURAL:$1|Uma edição intermédia|$1 edições intermédias}} de mais de {{PLURAL:$2|um utilizador|$2 utilizadores}} não {{PLURAL:$1|apresentada|apresentadas}})',
'difference-missing-revision' => '{{PLURAL:$2|Uma revisão|$2 revisões}} desta diferença ($1) não {{PLURAL:$2|foi encontrada|foram encontradas}}.
'rows' => 'Linhas:',
'columns' => 'Colunas:',
'searchresultshead' => 'Pesquisar',
-'resultsperpage' => 'Resultados por página:',
'stub-threshold' => 'Links para páginas curtas terão <a href="#" class="stub">este formato</a> se elas ocuparem menos de (bytes):',
'stub-threshold-disabled' => 'Desativado',
'recentchangesdays' => 'Dias a apresentar nas mudanças recentes:',
'enhancedrc-history' => 'histórico',
'recentchanges' => 'Mudanças recentes',
'recentchanges-legend' => 'Opções das mudanças recentes',
-'recentchanges-summary' => 'Acompanhe nesta página as mudanças mais recentes da wiki.',
+'recentchanges-summary' => 'Acompanha nesta página as mudanças mais recentes desta wiki.',
'recentchanges-noresult' => 'Nenhuma alteração correspondente a esses critérios foi realizada durante o período selecionado.',
'recentchanges-feed-description' => "Acompanhe neste ''feed'' as mudanças mais recentes da wiki.",
'recentchanges-label-newpage' => 'Esta edição criou uma nova página',
'randompage-nopages' => 'Não há páginas {{PLURAL:$2|no seguinte espaço nominal|nos seguintes espaços nominais}}: $1.',
# Random page in category
+'randomincategory-invalidcategory' => '"$1" não é um nome de categoria válido',
'randomincategory-nopages' => 'Não há páginas na categoria [[:Category:$1|$1]].',
'randomincategory-selectcategory' => 'Obter página aleatória da categoria: $1 $2',
'randomincategory-selectcategory-submit' => 'Ir',
'brokenredirects-delete' => 'eliminar',
'withoutinterwiki' => 'Páginas sem links interlínguas',
-'withoutinterwiki-summary' => 'As seguintes páginas não têm links para versões noutras línguas.',
+'withoutinterwiki-summary' => 'As seguintes páginas não têm ligação para versões noutras línguas.',
'withoutinterwiki-legend' => 'Prefixo',
'withoutinterwiki-submit' => 'Mostrar',
'protectedpages' => 'Páginas protegidas',
'protectedpages-indef' => 'Apenas proteções indefinidas',
'protectedpages-cascade' => 'Apenas proteções em cascata',
+'protectedpages-noredirect' => 'Esconder redirecionamentos',
'protectedpagesempty' => 'Neste momento, nenhuma das páginas está protegida com estes parâmetros.',
'protectedtitles' => 'Títulos protegidos',
'protectedtitlesempty' => 'Neste momento, nenhum dos títulos está protegido com estes parâmetros.',
'watchmethod-list' => 'a procurar mudanças recentes nas páginas vigiadas',
'watchlistcontains' => 'A sua lista de páginas vigiadas contém $1 {{PLURAL:$1|página|páginas}}.',
'iteminvalidname' => "Problema com item '$1', nome inválido...",
-'wlnote' => "A seguir {{PLURAL:$1|está a última alteração ocorrida|estão as últimas '''$1''' alterações ocorridas}} {{PLURAL:$2|na última hora|nas últimas '''$2''' horas}} até $3, $4.",
'wlshowlast' => 'Ver últimas $1 horas $2 dias $3',
'watchlist-options' => 'Opções da lista de páginas vigiadas',
'delete-warning-toobig' => 'Esta página tem um histórico de edições longo, com mais de $1 {{PLURAL:$1|edição|edições}}.
Eliminá-la poderá causar problemas na base de dados da {{SITENAME}};
prossiga com precaução.',
+'deleting-backlinks-warning' => "'''Aviso:''' Outras páginas têm ligação à página que está prestes a eliminar.",
# Rollback
'rollback' => 'Reverter edições',
'whatlinkshere' => 'Páginas afluentes',
'whatlinkshere-title' => 'Páginas que têm links para "$1"',
'whatlinkshere-page' => 'Página:',
-'linkshere' => "As seguintes páginas têm links para '''[[:$1]]''':",
+'linkshere' => "As seguintes páginas têm ligação a '''[[:$1]]''':",
'nolinkshere' => "Não existem afluentes para '''[[:$1]]''' com as condições especificadas.",
'nolinkshere-ns' => "Não existem links para '''[[:$1]]''' no espaço nominal selecionado.",
'isredirect' => 'página de redirecionamento',
'range_block_disabled' => 'A funcionalidade de administrador para o bloqueio de gamas de IPs está desativada.',
'ipb_expiry_invalid' => 'Tempo de expiração inválido.',
'ipb_expiry_temp' => 'Bloqueios com nome de utilizador ocultado devem ser permanentes.',
-'ipb_hide_invalid' => 'Não foi possível suprimir esta conta; ela poderá ter demasiadas edições.',
+'ipb_hide_invalid' => 'Não foi possível suprimir esta conta; ela possui mais de {{PLURAL:$1|uma edição|$1 edições}}.',
'ipb_already_blocked' => '"$1" já se encontra bloqueado',
'ipb-needreblock' => '$1 já se encontra bloqueado. Deseja alterar as configurações?',
'ipb-otherblocks-header' => '{{PLURAL:$1|Outro bloqueio|Outros bloqueios}}',
'tooltip-pt-watchlist' => 'Lista de mudanças nas páginas que está a vigiar',
'tooltip-pt-mycontris' => 'Lista das suas contribuições',
'tooltip-pt-login' => 'É encorajado a autenticar-se, apesar de não ser obrigatório.',
-'tooltip-pt-anonlogin' => 'É encorajado a autenticar-se, apesar de não ser obrigatório.',
'tooltip-pt-logout' => 'Terminar esta sessão na wiki',
'tooltip-ca-talk' => 'Discussão sobre o conteúdo da página',
'tooltip-ca-edit' => 'Pode editar esta página.
'version-hook-name' => 'Nome do hook',
'version-hook-subscribedby' => 'Subscrito por',
'version-version' => '(Versão $1)',
-'version-license' => 'Licença',
+'version-license' => 'Licença do MediaWiki',
+'version-credits-not-found' => 'Nenhuma informação detalhada acerca dos créditos foi encontrada para esta extensão.',
'version-poweredby-credits' => "Esta é uma wiki '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
'version-poweredby-others' => 'outros',
'version-credits-summary' => 'Gostaríamos de reconhecer as seguintes pessoas pela sua contribuição para o [[Special:Version|MediaWiki]].',
'limitreport-postexpandincludesize-value' => '$1/$2 {{PLURAL:$2|byte|bytes}}',
'limitreport-templateargumentsize' => 'Tamanho dos argumentos da predefinição',
'limitreport-templateargumentsize-value' => '$1/$2 {{PLURAL:$2|byte|bytes}}',
+'limitreport-expensivefunctioncount' => 'Número de funções do analisador custosas',
# Special:ExpandTemplates
'expandtemplates' => 'Expandir predefinições',
$messages = array(
# User preference toggles
'tog-underline' => 'Sublinhar links:',
-'tog-justify' => 'Justificar parágrafos',
'tog-hideminor' => 'Ocultar edições menores nas mudanças recentes',
'tog-hidepatrolled' => 'Ocultar edições patrulhadas nas mudanças recentes',
'tog-newpageshidepatrolled' => 'Ocultar páginas patrulhadas da lista de páginas novas',
'tog-numberheadings' => 'Auto-numerar cabeçalhos',
'tog-showtoolbar' => 'Mostrar barra de ferramentas de edição',
'tog-editondblclick' => 'Editar páginas quando houver clique duplo',
-'tog-editsection' => 'Ativar a edição de seções com links [editar]',
'tog-editsectiononrightclick' => 'Habilitar edição de seção por clique com o botão direito no título da seção (requer JavaScript)',
-'tog-showtoc' => 'Mostrar Tabela de Conteúdos (para páginas com mais de três cabeçalhos)',
'tog-rememberpassword' => 'Recordar meus dados de acesso neste navegador (por no máximo $1 {{PLURAL:$1|dia|dias}})',
'tog-watchcreations' => 'Adicionar as páginas e arquivos que eu criar à minha lista de páginas vigiadas',
'tog-watchdefault' => 'Adicionar as páginas e arquivos que eu editar à minha lista de páginas vigiadas',
'content-not-allowed-here' => 'Conteúdo do tipo "$1" não é permitido na página [[$2]]',
'editwarning-warning' => 'Abandonar esta página pode fazer com que você perca todas as alterações que fez.
Se você estiver autenticado, você pode desabilitar este aviso na seção "Edição" de suas preferências.',
+'editpage-notsupportedcontentformat-title' => 'Formato do conteúdo não suportado',
+'editpage-notsupportedcontentformat-text' => 'O formato de conteúdo $1 não é suportando pelo modelo de conteúdo $2.',
# Content models
'content-model-wikitext' => 'wikitexto',
'showhideselectedversions' => 'Exibir/ocultar edições selecionadas',
'editundo' => 'desfazer',
'diff-empty' => '(Sem diferença)',
-'diff-multi' => '({{PLURAL:$1|Uma edição intermediária|$1 edições intermediárias}} de {{PLURAL:$2|um usuário|$2 usuários}} {{PLURAL:$1|não apresentada|não apresentadas}})',
'diff-multi-manyusers' => '({{PLURAL:$1|Uma edição intermediária|$1 edições intermediárias}} de mais de {{PLURAL:$2|um usuário|$2 usuário}} não {{PLURAL:$1|apresentada|apresentadas}})',
'difference-missing-revision' => '{{PLURAL:$2|Uma revisão|$2 revisões}} desta diferença ($1) não {{PLURAL:$2|foi encontrada|foram encontradas}}.
'rows' => 'Linhas:',
'columns' => 'Colunas:',
'searchresultshead' => 'Pesquisar',
-'resultsperpage' => 'Resultados por página:',
'stub-threshold' => 'Links para páginas de conteúdo aparecerão <a href="#" class="stub">desta forma</a> se elas possuírem menos de (bytes):',
'stub-threshold-disabled' => 'Desabilitado',
'recentchangesdays' => 'Dias a apresentar nas mudanças recentes:',
'prefs-tokenwatchlist' => 'Senha',
'prefs-diffs' => 'Diferenças',
'prefs-help-prefershttps' => 'Esta preferência terá efeito no seu próximo início de sessão.',
+'prefs-tabs-navigation-hint' => 'Dica: Você pode usar as teclas de seta esquerda e direita para navegar entre as abas da lista de abas.',
# User preference: email validation using jQuery
'email-address-validity-valid' => 'Parece válido',
'withoutinterwiki-legend' => 'Prefixo',
'withoutinterwiki-submit' => 'Exibir',
-'fewestrevisions' => 'Páginas de conteúdo com menos edições',
+'fewestrevisions' => 'Páginas com menos edições',
# Miscellaneous special pages
'nbytes' => '$1 {{PLURAL:$1|byte|bytes}}',
'ninterwikis' => '$1 {{PLURAL:$1|interwiki|Interwikis}}',
'nlinks' => '$1 {{PLURAL:$1|link|links}}',
'nmembers' => '$1 {{PLURAL:$1|membro|membros}}',
-'nmemberschanged' => '$2{{PLURAL:$2|membro|membros}}',
+'nmemberschanged' => '$1 → $2 {{PLURAL:$2|membro|membros}}',
'nrevisions' => '$1 {{PLURAL:$1|revisão|revisões}}',
'nviews' => '$1 {{PLURAL:$1|visita|visitas}}',
'nimagelinks' => 'Utilizada em $1 {{PLURAL:$1|página|páginas}}',
'protectedpages' => 'Páginas protegidas',
'protectedpages-indef' => 'Proteções infinitas apenas',
'protectedpages-cascade' => 'Apenas proteções progressivas',
+'protectedpages-noredirect' => 'Ocultar redirecionamentos',
'protectedpagesempty' => 'Neste momento, nenhuma das páginas está protegida com estes parâmetros.',
'protectedtitles' => 'Títulos protegidos',
'protectedtitlesempty' => 'Neste momento, nenhum dos títulos está protegido com estes parâmetros.',
'watchmethod-list' => 'verificando páginas vigiadas para edições recentes',
'watchlistcontains' => 'Sua lista de páginas vigiadas contém $1 {{PLURAL:$1|página|páginas}}.',
'iteminvalidname' => "Problema com item '$1', nome inválido...",
-'wlnote' => "A seguir {{PLURAL:$1|está a última alteração ocorrida|estão as últimas '''$1''' alterações ocorridas}} {{PLURAL:$2|na última hora|nas últimas '''$2''' horas}} a partir de $3, $4.",
'wlshowlast' => 'Ver últimas $1 horas $2 dias $3',
'watchlist-options' => 'Opções da lista de páginas vigiadas',
'delete-warning-toobig' => 'Esta página possui um longo histórico de edições, com mais de $1 {{PLURAL:$1|edição|edições}}.
Eliminá-la poderá causar problemas na base de dados de {{SITENAME}};
prossiga com cuidado.',
+'deleting-backlinks-warning' => "'''Cuidado:''' Outras páginas redirecionam para a página que você está prestes a deletar.",
# Rollback
'rollback' => 'Reverter edições',
Consulte a [[Special:BlockList|lista de bloqueios]].',
'ipb-blockingself' => 'Você está prestes a bloquear-se a si próprio. Você tem a certeza de que pretende fazê-lo?',
'ipb-confirmhideuser' => 'Você está prestes a bloquear um utilizador com "Ocultar nome de utilizador/IP" ativado. Isto irá suprimir o nome do usuário de todas as listas e entradas dos registos. Tem a certeza de que pretende fazê-lo?',
+'ipb-confirmaction' => 'Se você tem certeza que realmente quer fazer isto, por favor verifique o campo "{{int:ipb-confirm}}" no final.',
'ipb-edit-dropdown' => 'Editar motivos de bloqueio',
'ipb-unblock-addr' => 'Desbloquear $1',
'ipb-unblock' => 'Desbloquear um usuário ou endereço de IP',
'tooltip-pt-watchlist' => 'Lista de alterações nas páginas que você está monitorando',
'tooltip-pt-mycontris' => 'Listagem de suas contribuições',
'tooltip-pt-login' => 'Você é encorajado a autenticar-se, apesar disso não ser obrigatório.',
-'tooltip-pt-anonlogin' => 'Você é encorajado a autenticar-se, apesar disso não ser obrigatório.',
'tooltip-pt-logout' => 'Sair',
'tooltip-ca-talk' => 'Discussão sobre o conteúdo da página',
'tooltip-ca-edit' => 'Você pode editar esta página. Use o botão "Mostrar previsão" antes de salvar.',
# Language selector for translatable SVGs
'img-lang-default' => '(Idioma padrão)',
-'img-lang-info' => 'Renderizar essa imagem em $1 $2',
+'img-lang-info' => 'Renderizar essa imagem em $1. $2',
'img-lang-go' => 'Ir',
# Table pager
'version-hook-name' => 'Nome do hook',
'version-hook-subscribedby' => 'Subscrito por',
'version-version' => '(Versão $1)',
-'version-license' => 'Licença',
+'version-license' => 'Licença do MediaWiki',
+'version-ext-license' => 'Licença',
+'version-ext-colheader-name' => 'Extensão',
+'version-ext-colheader-version' => 'Versão',
+'version-ext-colheader-license' => 'Licença',
+'version-ext-colheader-description' => 'Descrição',
+'version-ext-colheader-credits' => 'Autores',
+'version-license-title' => 'Licença para $1',
+'version-license-not-found' => 'Nenhuma informação detalhada dessa licença foi encontrada para esta extensão.',
+'version-credits-title' => 'Créditos para $1',
+'version-credits-not-found' => 'Nenhuma informação detalhada de crédito foi encontrada para esta extensão.',
'version-poweredby-credits' => "Este é um wiki '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
'version-poweredby-others' => 'outros',
'version-poweredby-translators' => 'tradutores da translatewiki.net',
# Special:Redirect
'redirect' => 'Redirecionar por arquivo, usuário ou ID de revisão',
'redirect-legend' => 'Redirecionar para um arquivo ou página',
-'redirect-summary' => 'Esta página especial redireciona a um arquivo (dado o nome do arquivo), a uma página (dado um ID de revisão) ou a uma página de usuário (dado o ID do usuário). Uso: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]], ou [[{{#Special:Redirect}}/user/101]].',
+'redirect-summary' => 'Esta página especial redireciona a um arquivo (dado o nome do arquivo), a uma página (dado um ID de revisão ou ID da página) ou a uma página de usuário (dado o ID do usuário). Uso: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], or [[{{#Special:Redirect}}/user/101]].',
'redirect-submit' => 'Ir',
'redirect-lookup' => 'Buscar',
'redirect-value' => 'Valor:',
'redirect-user' => 'ID do usuário',
+'redirect-page' => 'ID da página',
'redirect-revision' => 'Revisão da página',
'redirect-file' => 'Nome do arquivo',
'redirect-not-exists' => 'Valor não encontrado',
'api-error-overwrite' => 'Não é permitido sobrescrever um arquivo já existente.',
'api-error-stashfailed' => 'Erro interno: o servidor não conseguiu armazenar o arquivo temporário.',
'api-error-publishfailed' => 'Erro interno: O servidor falhou ao publicar o arquivo temporário.',
+'api-error-stasherror' => 'Houve um erro durante o upload do arquivo para a pilha.',
'api-error-timeout' => 'O servidor não respondeu dentro do tempo esperado.',
'api-error-unclassified' => 'Ocorreu um erro desconhecido',
'api-error-unknown-code' => 'Erro desconhecido: "$1"',
'limitreport-templateargumentsize' => 'Argumento do tamanho da predefinição',
'limitreport-templateargumentsize-value' => '$1/$2 {{PLURAL:$2|byte|bytes}}',
'limitreport-expansiondepth' => 'Máxima profundidade de expansão',
-'limitreport-expensivefunctioncount' => 'Conta da função expansiva do analizador',
+'limitreport-expensivefunctioncount' => 'Número de funções do analisador custosas',
# Special:ExpandTemplates
'expandtemplates' => 'Expandir predefinições',
'expand_templates_input' => 'Texto de entrada:',
'expand_templates_output' => 'Resultado',
'expand_templates_xml_output' => 'Resultado XML',
+'expand_templates_html_output' => 'Saída HTML puro',
'expand_templates_ok' => 'Expandir',
'expand_templates_remove_comments' => 'Remover comentários',
'expand_templates_remove_nowiki' => 'Suprima marcações <nowiki> no resultado',
'expand_templates_generate_xml' => 'Mostrar árvore de análise (parse) do XML',
+'expand_templates_generate_rawhtml' => 'Mostrar HTML puro',
'expand_templates_preview' => 'Pré-visualização',
+# Unknown messages
+'uploadinvalidxml' => 'O XML no arquivo enviado não pôde ser analisado.',
);
* @author Iniquity
* @author Iwan Novirion
* @author Jon Harald Søby
+ * @author Joseph
* @author Karduelis
* @author Kazu89
* @author Kghbln
* @author Sp5uhe
* @author Srhat
* @author Subhashkataria21.90
+ * @author TMg
* @author Tedjuh10
* @author Tgr
* @author The Evil IP address
$messages = array(
# User preference toggles
'tog-underline' => "[[Special:Preferences]], tab 'Misc'. Offers user a choice how to underline links. {{Gender}}",
-'tog-justify' => "[[Special:Preferences]], tab 'Appearance'. Offers user a choice to justify paragraphs or not. {{Gender}}",
'tog-hideminor' => "[[Special:Preferences]], tab 'Recent changes'. Offers user to hide minor edits in recent changes or not. {{Gender}}",
'tog-hidepatrolled' => 'Option in Recent changes tab of [[Special:Preferences]] (if [[mw:Manual:$wgUseRCPatrol|$wgUseRCPatrol]] is enabled). {{Gender}}',
'tog-newpageshidepatrolled' => 'Toggle in [[Special:Preferences]], section "Recent changes" (if [[mw:Manual:$wgUseRCPatrol|$wgUseRCPatrol]] is enabled). {{Gender}}',
This is the toolbar: [[Image:Toolbar.png]]",
'tog-editondblclick' => "{{Gender}}
[[Special:Preferences]], tab 'Edit'. Offers user to open edit page on double click.",
-'tog-editsection' => "[[Special:Preferences]], tab 'Edit'. Offers user to add links in sub headings for editing sections. {{Gender}}",
'tog-editsectiononrightclick' => "{{Gender}}
[[Special:Preferences]], tab 'Edit'. Offers user to edit a section by clicking on a section title.",
-'tog-showtoc' => "[[Special:Preferences]], tab 'Misc'.
-Offers user to show a table of contents automatically if a page has more than 3 headings (= 4 or more headings).",
'tog-rememberpassword' => "{{Gender}}
[[Special:Preferences]], tab 'User profile', section 'Change password'. Offers user remember login details.
Parameters:
* {{msg-mw|Youhavenewmessages}}',
'newmessageslinkplural' => "This is the first link displayed in an orange rectangle when a user gets a message on their talk page.
-Used as <code>$1</code> in messages {{msg-mw|youhavenewmessagesfromusers}}, {{msg-mw|youhavenewmessagesmanyusers}}, {{msg-mw|youhavenewmessages}}.
-
+Used as <code>$1</code> in the following messages:
+* {{msg-mw|youhavenewmessagesfromusers}}
+* {{msg-mw|youhavenewmessagesmanyusers}}
+* {{msg-mw|youhavenewmessages}}.
Parameters:
* $1 - 1 or 999:
** 1 - if there was '''one''' new edit since the last time the user has seen their talk page
Parameters:
* $1 - (Optional) username, for GENDER support',
'wrongpassword' => 'Used as error message when the provided password is wrong.
+This message is used in html.
{{Identical|Please try again}}',
'wrongpasswordempty' => 'Error message displayed when entering a blank password.
{{Identical|Please try again}}',
* $3 - a password (randomly generated)
* $4 - a URL to the wiki ('<' + server name + script name + '>')
* $5 - (Unused) number of days to password expiry date",
-'login-throttled' => 'Error message shown at [[Special:UserLogin]] after the user has tried to login with incorrect password too many times; also used by [[Special:ChangeEmail]] and [[Special:ChangePassword]].
+'login-throttled' => 'Error message shown at [[Special:UserLogin]] after the user has tried to login with incorrect password too many times.
The user has to wait a certain time before trying to log in again.
** {{msg-mw|Duration-seconds}}
This is a protection against robots trying to find the password by trying lots of them.
-The number of attempts and waiting time are configured via [[mw:Manual:$wgPasswordAttemptThrottle|$wgPasswordAttemptThrottle]].',
+The number of attempts and waiting time are configured via [[mw:Manual:$wgPasswordAttemptThrottle|$wgPasswordAttemptThrottle]].
+This message is used in html.
+{{identical|Login throttled}}',
'login-abort-generic' => 'The generic unsuccessful login message is used unless otherwise specified by hook writers',
'loginlanguagelabel' => 'Used on [[Special:UserLogin]] if $wgLoginLanguageSelector is true. Parameters:
* $1 - a pipe-separated list built from the names that appear in the message {{msg-mw|Loginlanguagelinks}}.
'resetpass_header' => 'Header on box on special page [[Special:ChangePassword]].
{{Identical|Reset password}}',
-'oldpassword' => "Used on the 'User profile' tab of 'my preferences'. This is the text next to an entry box for the old password in the 'change password' section.",
+'oldpassword' => "Used on the 'User profile' tab of 'my preferences'. This is the text next to an entry box for the old password in the 'change password' section.
+{{Identical|Old password}}",
'newpassword' => '{{Identical|New password}}',
'retypenew' => "Appears on the 'User profile' tab of the 'Preferences' special page in the 'Change password' section. It appears next to the text box for entering the new password a second time.",
'resetpass_submit' => 'Submit button on [[Special:ChangePassword]]',
'changepassword-success' => 'Used in [[Special:ChangePassword]].',
+'changepassword-throttled' => 'Error message shown at [[Special:ChangePassword]] after the user has tried to login with incorrect password too many times.
+
+The user has to wait a certain time before trying to log in again.
+
+Parameters:
+* $1 - the time to wait before the next login attempt. Automatically formatted using the following duration messages:
+** {{msg-mw|Duration-millennia}}
+** {{msg-mw|Duration-centuries}}
+** {{msg-mw|Duration-decades}}
+** {{msg-mw|Duration-years}}
+** {{msg-mw|Duration-weeks}}
+** {{msg-mw|Duration-days}}
+** {{msg-mw|Duration-hours}}
+** {{msg-mw|Duration-minutes}}
+** {{msg-mw|Duration-seconds}}
+
+This is a protection against robots trying to find the password by trying lots of them.
+The number of attempts and waiting time are configured via [[mw:Manual:$wgPasswordAttemptThrottle|$wgPasswordAttemptThrottle]].
+This message is used in html.
+
+See also:
+* {{msg-mw|Changeemail-throttled}}',
'resetpass_forbidden' => "Used as error message in changing password. Maybe the external auth plugin won't allow local password changes.",
'resetpass-no-info' => 'Error message for [[Special:ChangePassword]].
'changeemail-cancel' => 'Cancel button on [[Special:ChangeEmail]]
{{Identical|Cancel}}',
+'changeemail-throttled' => 'Error message shown at [[Special:ChangeEmail]] after the user has tried to login with incorrect password too many times.
+
+The user has to wait a certain time before trying to log in again.
+
+Parameters:
+* $1 - the time to wait before the next login attempt. Automatically formatted using the following duration messages:
+** {{msg-mw|Duration-millennia}}
+** {{msg-mw|Duration-centuries}}
+** {{msg-mw|Duration-decades}}
+** {{msg-mw|Duration-years}}
+** {{msg-mw|Duration-weeks}}
+** {{msg-mw|Duration-days}}
+** {{msg-mw|Duration-hours}}
+** {{msg-mw|Duration-minutes}}
+** {{msg-mw|Duration-seconds}}
+
+This is a protection against robots trying to find the password by trying lots of them.
+The number of attempts and waiting time are configured via [[mw:Manual:$wgPasswordAttemptThrottle|$wgPasswordAttemptThrottle]].
+This message is used in html.
+
+See also:
+* {{msg-mw|Changepassword-throttled}}',
# Special:ResetTokens
'resettokens' => '{{doc-special|ResetTokens}}
See also:
* {{msg-mw|Showdiff}}
* {{msg-mw|Accesskey-diff}}
-* {{msg-mw|Tooltip-diff}}',
+* {{msg-mw|Tooltip-diff}}
+{{Identical|Show change}}',
'anoneditwarning' => 'Shown when editing a page anonymously.
See also:
* {{msg-mw|Sf autoedit anoneditwarning}}
'content-not-allowed-here' => 'Error message indicating that the desired content model is not supported in given localtion.
* $1 - the human readable name of the content model: {{msg-mw|Content-model-wikitext}}, {{msg-mw|Content-model-javascript}}, {{msg-mw|Content-model-css}} or {{msg-mw|Content-model-text}}
* $2 - the title of the page in question',
-'editwarning-warning' => "{{doc-important|Do ''not'' use <nowiki>{{int:prefs-editing}}</nowiki> for \"Editing\". It is forbidden in this message, see [[mwr:68405]].}}
-
-but you can see the text of that button here: {{msg-mw|Prefs-editing}}",
+'editwarning-warning' => 'Uses {{msg-mw|Prefs-editing}}',
+'editpage-notsupportedcontentformat-title' => 'Title of error page shown when using an incompatible format on EditPage',
+'editpage-notsupportedcontentformat-text' => 'Error message shown when using an incompatible format on EditPage. Parameters:
+* $1 - the format id
+* $2 - the content model name',
# Content models
'content-model-wikitext' => 'Name for the wikitext content model, used when decribing what type of content a page contains.
This message has sometimes a tooltip {{msg-mw|tooltip-undo}}
{{Identical|Undo}}',
'diff-empty' => 'This message appears instead of a "diff" when comparing two revisions that are identical.',
-'diff-multi' => "This message appears in the revision history of a page when comparing two versions which aren't consecutive.
+'diff-multi-sameuser' => "This message appears in the revision history of a page when comparing two versions which aren't consecutive, and the intermediate revisions were all created by the same user as the new revision.
Parameters:
* $1 - the number of revisions
-* $2 - the number of distinct users who made those revisions
-See also:
-* {{msg-mw|Diff-multi-manyusers}}",
+{{Related|Diff-multi}}",
+'diff-multi-otherusers' => "This message appears in the revision history of a page when comparing two versions which aren't consecutive, and at least one of the intermediate revisions was created by a user other than the user who created the new revision.
+
+Parameters:
+* $1 - the number of revisions
+* $2 - the number of distinct other users who made those revisions
+{{Related|Diff-multi}}",
'diff-multi-manyusers' => "This message appears in the revision history of a page when comparing two versions which aren't consecutive, and the intermediate revisions have been edited by more than 100 users.
Parameters:
* $1 - the number of revisions, will always be 101 or more
* $2 - the number of users that were found, which was limited at 100
-See also:
-* {{msg-mw|Diff-multi}}",
+{{Related|Diff-multi}}",
'difference-missing-revision' => 'Text displayed when the requested revision does not exist using a diff link.
Example: [{{canonicalurl:Project:News|diff=426850&oldid=99999999}} Diff with invalid revision#]
* \$1 - a link to the redirect to the page (so, \$1 is the page that the search result is redirected '''from''')",
'search-section' => 'This text will be shown on the search result listing after the page title of a result if the search algorithm thinks that section is more relevant than the rest of the page. $1 is a section title.
{{Identical|Section}}',
+'search-file-match' => 'This text will be shown on the search result listing after the page title of a result if the search engine got search results from the contents of files, rather than the pages.',
'search-suggest' => 'Used for "Did you mean" suggestions:
* $1 - suggested link',
'search-interwiki-caption' => 'Used in [[Special:Search]], when showing search results from other wikis.',
'searchresultshead' => 'Replaced by {{msg-mw|prefs-searchoptions}}, though may still be used in some extensions. DEPRECATED.
{{Identical|Search}}',
-'resultsperpage' => "Option on the 'Search options' tab of [[Special:Preferences]]",
'stub-threshold' => 'Used in [[Special:Preferences]], tab "Misc".',
'stub-threshold-disabled' => 'Used in [[Special:Preferences]].
{{Identical|Disabled}}',
'recentchanges-legend-heading' => 'Used as a heading for legend box on [[Special:RecentChanges]] and [[Special:Watchlist]].
{{Identical|Legend}}',
'recentchanges-legend-newpage' => 'Used as legend in [[Special:RecentChanges]]. Preceded by {{msg-mw|Recentchanges-label-newpage}}.',
-'recentchanges-legend-plusminus' => 'A plus/minus sign with a number for the legend.',
+'recentchanges-legend-plusminus' => '{{optional}}
+A plus/minus sign with a number for the legend.',
'rcnotefrom' => 'This message is displayed at [[Special:RecentChanges]] when viewing recentchanges from some specific time.
The corresponding message is {{msg-mw|Rclistfrom}} (without split of date and time, [[bugzilla:19104|Bug 19104]]).
Parameters:
* $1 - number of duplicate files',
'file-deleted-duplicate' => 'Used in [[Special:Upload]. Parameters:
-* $1 - page title of the file',
+* $1 - page title of the file
+
+See also:
+* {{msg-mw|file-deleted-duplicate-notitle}}',
+'file-deleted-duplicate-notitle' => 'Used in [[Special:Upload]] when the title of the deleted duplicate is not available.
+
+See also:
+* {{msg-mw|file-deleted-duplicate}}',
'uploadwarning' => 'Used as section header in [[Special:Upload]].',
'uploadwarning-text' => 'Used in [[Special:Upload]].',
'savefile' => 'When uploading a file',
'protectedpages' => '{{doc-special|ProtectedPages}}',
'protectedpages-indef' => 'Option in [[Special:ProtectedPages]]',
'protectedpages-cascade' => 'Option in [[Special:ProtectedPages]]',
+'protectedpages-noredirect' => 'Option in [[Special:ProtectedPages]].
+{{Identical|Hide redirect}}',
'protectedpagesempty' => 'Used in [[Special:ProtectedPages]], when there are no protected pages with the specified parameters.',
'protectedtitles' => '{{doc-special|ProtectedTitles}}',
'protectedtitlesempty' => 'Used on [[Special:ProtectedTitles]]. This text appears if the list of protected titles is empty. See the [[mw:Project:Protected_titles|help page on MediaWiki]] for more information.',
See also:
* {{msg-mw|Notargettitle|title}}
* {{msg-mw|Notargettext|text}}',
-'nopagetitle' => 'Used as title of [[Special:MovePage]], when the oldtitle does not exist.
+'nopagetitle' => 'Used as title on special pages like [[Special:MovePage]] (when the oldtitle does not exist) or [[Special:PermaLink]].
The text is {{msg-mw|nopagetext}}.
'allpagesbadtitle' => 'Used in [[Special:AllPages]], [[Special:PrefixIndex]] and [[Special:RecentChangesLinked]].',
'allpages-bad-ns' => 'Used as error message. Parameters:
* $1 - namespace name, other than "Main" namespace',
-'allpages-hide-redirects' => 'Label for a checkbox. If the checkbox is checked redirects will not be shown in the list. Used in [[Special:PrefixIndex]] and [[Special:Allpages]].',
+'allpages-hide-redirects' => 'Label for a checkbox. If the checkbox is checked redirects will not be shown in the list. Used in [[Special:PrefixIndex]] and [[Special:Allpages]].
+{{Identical|Hide redirect}}',
# SpecialCachedPage
'cachedspecial-viewing-cached-ttl' => 'Message notifying they are watching a cached page. $1 is a duration (ie "1 hour and 30 minutes")',
* {{msg-mw|Watchlist-details}}',
'iteminvalidname' => 'Parameters:
* $1 - item name',
-'wlnote' => 'Used on [[Special:Watchlist]] when a maximum number of hours or days is specified.
+'wlnote2' => 'Used on [[Special:Watchlist]] when a maximum number of hours or days is specified.
Parameters:
-* $1 - the number of changes shown
-* $2 - the number of hours for which the changes are shown
-* $3 - a date alone
-* $4 - a time alone',
+* $1 - the number of hours for which the changes are shown
+* $2 - a date alone
+* $3 - a time alone
+See also:
+* {{msg-mw|Wlnote}}',
'wlshowlast' => 'Appears on [[Special:Watchlist]]. Parameters:
* $1 - a choice of different numbers of hours ("1 | 2 | 6 | 12")
* $2 - a choice of different numbers of days ("1 | 3 | 7")
* $1 - the upper limit of number of revisions
See also:
* {{msg-mw|Delete-toobig}}',
+'deleting-backlinks-warning' => 'A warning shown when a page that is being deleted has at least one link to it or is transcluded in at least one page.',
# Rollback
'rollback' => '{{Identical|Rollback}}',
* {{msg-mw|Ip range toolarge}}',
'ipb_expiry_invalid' => 'Used as error message in [[Special:Block]].',
'ipb_expiry_temp' => 'Warning message displayed on [[Special:BlockIP]] if the option "hide username" is selected but the expiry time is not infinite.',
-'ipb_hide_invalid' => 'Used as error message in [[Special:Block]].',
+'ipb_hide_invalid' => 'Used as error message in [[Special:Block]].
+* $1 - Number of edits (Value of [[mw:Manual:$wgHideUserContribLimit]])',
'ipb_already_blocked' => '{{Identical|$1 is already blocked}}',
'ipb-needreblock' => 'Used in [[Special:Block]].
* $1 - target username',
'allmessages-filter-submit' => 'Used on [[Special:Allmessages]].
{{Identical|Go}}',
+'allmessages-filter-translate' => 'Used on [[Special:Allmessages]]. Label for a link to translatewiki.net for a message to translate.
+{{Identical|Translate}}',
# Thumbnails
'thumbnail-more' => '[[Image:Yes.png|thumb|This:]]
* $3 - the content model reported for the offending revision in the dump that is being imported
* $4 - the serialization format reported for the offending revision in the dump that is being imported
{{Related|Import-error}}',
+'import-error-bad-location' => 'Parameters:
+* $1 - page title
+* $2 - revision ID
+* $3 - content model
+* $4 - (Unused) format
+{{Related|Import-error}}',
'import-options-wrong' => 'Used as error message on [[Special:Import]], when one of the options has an error.
Parameters:
* {{msg-mw|Accesskey-pt-mycontris}}
* {{msg-mw|Tooltip-pt-mycontris}}',
'tooltip-pt-login' => "Tooltip shown when hovering over the link 'Log in / create account' in the upper right corner show on all pages while not logged in.",
-'tooltip-pt-anonlogin' => 'Used as tooltip for link {{msg-mw|Login}} in your personal toolbox (upper right side).
-
-See also:
-* {{msg-mw|Login}}
-* {{msg-mw|Accesskey-pt-anonlogin}}
-* {{msg-mw|Tooltip-pt-anonlogin}}',
'tooltip-pt-logout' => 'Tooltip shown when hovering over the {{msg-mw|Logout}} link in your personal toolbox (upper right side).
See also:
'pageinfo-few-watchers' => 'Message displayed when there are fewer than $wgUnwatchedPageThreshold watchers. $1 is the value of $wgUnwatchedPageThreshold.',
'pageinfo-redirects-name' => 'Header of the row in the first table of the info action.
-Followed by the number of redirects to the page.
+Followed by {{msg-mw|Pageinfo-redirects-value}}.
+
Used as link text. The link points to "{{int:Whatlinkshere-title}}" page ([[Special:WhatLinksHere]]).
See example: [{{canonicalurl:Main page|action=info}} Main page?action=info]',
* $1 - the number of redirects to the page',
'pageinfo-subpages-name' => 'Header of the row in the first table of the info action.
-Followed by the number of subpages of the page.
+Followed by {{msg-mw|Pageinfo-subpages-value}}.
+
Used as link text. The link points to the "{{int:Prefixindex}}" page ([[Special:PrefixIndex]]).
See example: [{{canonicalurl:Main page|action=info}} Main page?action=info]',
# Skin names
'skinname-cologneblue' => '{{optional}}',
'skinname-monobook' => '{{optional}}',
-'skinname-modern' => '{{optional}}',
+'skinname-modern' => '{{optional}}
+{{Identical|Modern}}',
'skinname-vector' => '{{optional}}',
# Patrolling
'percent' => '{{optional}}',
'parentheses' => '{{optional}}',
'brackets' => '{{Optional}}',
-'quotation-marks' => 'Quotation marks, for quoting, sometimes titles etc., depending on the language.
+'quotation-marks' => '{{optional}}
+
+Quotation marks, for quoting, sometimes titles etc., depending on the language.
See: [[w:Non-English usage of quotation marks|Non-English usage of quotation marks on Wikipedia]].
'version-parser-function-hooks' => 'Shown in [[Special:Version]]',
'version-hook-name' => 'Shown in [[Special:Version]]',
'version-hook-subscribedby' => 'Shown in [[Special:Version]]',
-'version-version' => 'Used in [[Special:Version]].
-
-Preceded by the MediaWiki extension name.
+'version-version' => '{{Optional}}
+Used in [[Special:Version]]. Preceded by the MediaWiki extension name.
Parameters:
-* $1 - version number of the extension
-{{Identical|Version}}',
+* $1 - version number of the extension',
'version-svn-revision' => '{{Identical|Revision}}{{optional}}
Used in [[Special:Version]], preceeding the Subversion revision numbers of the extensions loaded inside brackets, like this: "({{int:version-revision}} r012345"). Parameters:
* $1 - (Unused) directory revision number or empty string
* $2 - checkout revision number',
-'version-license' => '{{Identical|License}}',
+'version-license' => 'Used specifically for the MediaWiki software.
+
+Used as heading in [[Special:Version]].',
+'version-ext-license' => "Used in [[Special:Version]].
+
+Used as label for the link pointing to the extension's license page. e.g. [[Special:Version/License/Maps]]
+{{Identical|License}}",
+'version-ext-colheader-name' => 'Column header for the name of an extension.
+{{Identical|Extension}}',
+'version-ext-colheader-version' => 'Column header for describing an extensions version.
+{{Identical|Version}}',
+'version-ext-colheader-license' => 'Column header for describing an extensions license.
+{{Identical|License}}',
+'version-ext-colheader-description' => 'Column header for the description of an extension.
+{{Identical|Description}}',
+'version-ext-colheader-credits' => 'Column header for the list of authors and credits for an extension.
+{{Identical|Author}}',
+'version-license-title' => 'Page title for an extended license for a piece of software.
+
+Used as page title for the license page. e.g. [[Special:Version/License/Maps]].
+
+Parameters:
+* $1 - the name of software',
+'version-license-not-found' => 'Descriptive error used when detailed license text for a piece of software is not found.
+
+See example: [[Special:Version/License/Foo]]',
+'version-credits-title' => 'Page title for an about/credits page for a MediaWiki extension.
+
+Used as heading in credits page. e.g. [[Special:Version/Credits]] and [[Special:Version/Credits/UniversalLanguageSelector]]
+
+Parameters:
+* $1 - the name of the extension',
+'version-credits-not-found' => 'Descriptive error used when detailed about/credits for an extension are not available.
+
+See example: [[Special:Version/Credits/Foo]]',
'version-poweredby-credits' => 'Message shown on [[Special:Version]]. Parameters:
* $1 - the current year
* $2 - a list of selected MediaWiki authors',
'specialpages-group-media' => '{{doc-special-group|like=[[Special:FilePath]], [[Special:MIMESearch]] and [[Special:Upload]]}}',
'specialpages-group-users' => '{{doc-special-group|like=[[Special:ActiveUsers]], [[Special:Contributions]] and [[Special:ListGroupRights]]}}',
'specialpages-group-highuse' => '{{doc-special-group|like=[[Special:MostCategories]], [[Special:MostLinked]] and [[Special:MostRevisions]]}}',
-'specialpages-group-pages' => '{{doc-special-group|like=[[Special:AllPages]], [[Special:PrefixIndex]], [[Special:Categories]],
+'specialpages-group-pages' => '{{doc-special-group|like=[[Special:AllPages]], [[Special:PrefixIndex]], [[Special:Categories]],
[[Special:Disambiguations]], etc}}',
'specialpages-group-pagetools' => '{{doc-special-group|like=[[Special:MovePage]], [[Special:Undelete]], [[Special:WhatLinksHere]], [[Special:Export]] etc}}',
'specialpages-group-wiki' => '{{doc-special-group|like=[[Special:Version]], [[Special:Statistics]], [[Special:LockDB]], etc}}',
'api-error-overwrite' => 'API error message that can be used for client side localisation of API errors.',
'api-error-stashfailed' => 'API error message that can be used for client side localisation of API errors.',
'api-error-publishfailed' => 'API error message that can be used for client side localisation of API errors.',
+'api-error-stasherror' => 'API error message that can be used for client side localisation of API errors.',
'api-error-timeout' => 'API error message that can be used for client side localisation of API errors.',
'api-error-unclassified' => 'API error message that can be used for client side localisation of API errors.',
'api-error-unknown-code' => 'API error message that can be used for client side localisation of API errors.
'expand_templates_generate_rawhtml' => 'Used as checkbox label.',
'expand_templates_preview' => '{{Identical|Preview}}',
+# Unknown messages
+'createaccount-hook-aborted' => 'Placeholder message to return with API errors on account create; passes through the message from a hook {{notranslate}}',
+'uploadinvalidxml' => 'Error message displayed when the uploaded file contains XML that cannot be properly parsed and checked.',
);
$messages = array(
# User preference toggles
'tog-underline' => "T'inkikunata uranpi sikwiy",
-'tog-justify' => 'Rakirikunata paqtachiy',
'tog-hideminor' => '«Ñaqha hukchasqa» nisqapi aslla hukchasqakunata pakay',
'tog-hidepatrolled' => "Patrullasqa llamk'apusqakunata ñaqha hukchasqapi pakay",
'tog-newpageshidepatrolled' => "Patrullasqa llamk'apusqakunata musuq p'anqakunapi pakay",
'tog-numberheadings' => "Uma siq'ikunata kikinmanta yupay",
'tog-showtoolbar' => "Llamk'apuna sillwita rikuchiy",
'tog-editondblclick' => "P'anqakunata llamk'apuy iskaylla ñit'iywan",
-'tog-editsection' => "Rakirilla llamk'apuyta saqillay [qillqay] t'inkiwan",
'tog-editsectiononrightclick' => "Rakirilla llamk'apuyta saqillay paña butunta rakirip sutinpi ñit'ispa",
-'tog-showtoc' => "Yuyarina wachuchasqata rikuchiy (kimsamanta aswan uma siq'iyuq p'anqakunapaq)",
'tog-rememberpassword' => "Ruraqpa sutiyta yaykuna rimaytapas yuyaykuy kay llika wamp'unapi ({{PLURAL:$1|huk p'unchawkama|$1 p'unchawkama}})",
'tog-watchcreations' => "Qallarisqay p'anqakunata churkusqay willañiqikunatapas watiqay",
'tog-watchdefault' => "Hukchasqay p'anqakunata willañiqikunatapas watiqay",
'showhideselectedversions' => 'Akllasqa musuqchasqakunata rikuchiy/pakay',
'editundo' => 'kutichiy',
'diff-empty' => '(Manam wak hina kanchu)',
-'diff-multi' => "({{PLURAL:$2|Huk ruraqpa|$2 ruraqpa}} {{PLURAL:$1|chawpipi huk llamk'apusqanqa manam rikuchisqachu|chawpipi $1 llamk'apusqankunaqa manam rikuchisqachu}})",
'diff-multi-manyusers' => "({{PLURAL:$2|Hukmanta|$2-manta}} aswan ruraqkunap {{PLURAL:$1|chawpipi huk llamk'apusqanqa manam rikuchisqachu|chawpipi $1 llamk'apusqankunaqa manam rikuchisqachu}})",
'difference-missing-revision' => "Kay wakin kaymanta ($1) {{PLURAL:$2|huk musuqchasqa|$2 musuqchasqakuna}} manam tarisqachu.
'rows' => 'Sinrukuna:',
'columns' => 'Wachukuna:',
'searchresultshead' => 'Maskay',
-'resultsperpage' => "Huk p'anqapi hayk'a tarinakuna:",
'stub-threshold' => 'Kay hatun kaykamam <a href="#" class="stub">t\'una qillqasqa t\'inki</a> nisqa kachun (byte):',
'stub-threshold-disabled' => 'Ama nisqa',
'recentchangesdays' => "Ñaqha hukchasqakunapi rikuchina p'unchawkuna:",
'watchmethod-list' => "watiqasqayki p'anqakunata ñaqha hukchasqakunapaq llanchispa",
'watchlistcontains' => "Watiqana sutisuyuykipiqa $1 {{PLURAL:$1|p'anqam|p'anqakunam}} kachkan.",
'iteminvalidname' => "'$1' nisqa qillqaqa sasachakunmi, sutinqa manam allinchu...",
-'wlnote' => "Kay qatiqpiqa {{PLURAL:$1|qhipaq hukchasqam|'''$1''' qhipaq hukchasqakunam}} qhipaq {{PLURAL:$2|urapim|'''$2''' urakunapim}}, musuqchasqa $3, $4.",
'wlshowlast' => "$1 ura, $2 p'unchaw $3-mantapacha hukchasqakunata rikuchiy",
'watchlist-options' => 'Watiqana sutisuyupaq allinkachinakuna',
'tooltip-pt-watchlist' => "Ruraqpa hukchasqakunakama watiqasqan p'anqakuna",
'tooltip-pt-mycontris' => "Llamk'apusqaykikuna",
'tooltip-pt-login' => 'Kallpachaykiku yaykunaykiqa allinmi nispa, mana manu kanayki kaptinpas',
-'tooltip-pt-anonlogin' => 'Kallpachaykiku yaykunaykiqa allinmi nispa, mana manu kanayki kaptinpas',
'tooltip-pt-logout' => "Llamk'apuy tiyaymanta lluqsiy",
'tooltip-ca-talk' => "Qillqasqap samiqninmanta rimanakuna p'anqa",
'tooltip-ca-edit' => "Kay p'anqata llamk'apuytam atinki. Ama hina kaspa, manaraq waqaychaspa ñawpaqta qhawarillay.",
$messages = array(
# User preference toggles
'tog-underline' => 'Tinkikunana uraypi aspishpa rikuchina',
-'tog-justify' => 'Aspinakunata alli paktachina',
'tog-hideminor' => 'mushuk killkaykunapak kamupi, uchilla killkaykunata pakana',
'tog-hidepatrolled' => 'mushuk killkaykunapak kamupi, ña rikushka killkaykunata pakana',
'tog-newpageshidepatrolled' => 'Mushuk pankakunapak kamupi, ña rikushka pankakunata pakana',
'tog-numberheadings' => 'Uma killkaykunata yupayta churak antawata llankachina',
'tog-showtoolbar' => 'Llamkana antakunata rikuchina (Javascriptwanlla)',
'tog-editondblclick' => 'Ishkayta klik rurashpa pankapi killkanata kallarina (JavaScriptwanlla)',
-'tog-editsection' => 'Rakikunata [Killkana] tinkiwan killkankapak arinina',
'tog-rememberpassword' => 'Ñukapak shuti, yaykuna yupaytapash kay wampunapi kipaka churankapak yuyana ({{PLURAL:$1|puncha|punchakuna}}kamanlla)',
'tog-watchcreations' => 'Ñukapak wacharishka pankakunata rikuna',
'tog-watchdefault' => 'Ñukapak shukchishka pankakunata rikuna',
'lineno' => '$1 aspi',
'compareselectedversions' => 'Kay akllashka pankakunaka imashpa mana shinami kapan willana',
'editundo' => 'Kutichina',
-'diff-multi' => '({{PLURAL:$2|Shuk rurakpa|$2 rurakkunapa}} {{PLURAL:$1|chawpipi shuk mushuk killkayta mana rikuchishkachu|chawpipi $1 mushuk killkaykunata mana rikuchishkachu}})',
# Search results
'searchresults' => 'Maskaymanta pankakuna',
$messages = array(
# User preference toggles
'tog-underline' => 'Suttastritgar colliaziuns:',
-'tog-justify' => "Text en furma da 'bloc'",
'tog-hideminor' => 'Zuppentar pitschnas midadas en las ultimas midadas',
'tog-hidepatrolled' => 'Zuppentar midadas controlladas en las «ultimas midadas»',
'tog-newpageshidepatrolled' => 'Zuppentar paginas controlladas en las «paginas novas»',
'tog-numberheadings' => 'Numerar automaticamain ils titels',
'tog-showtoolbar' => "Mussar la trav d'utensils per modifitgar",
'tog-editondblclick' => 'Modifitgar paginas cun in clic dubel',
-'tog-editsection' => 'Mussar colliaziuns [modifitgar] per modifitgar singulas secziuns',
'tog-editsectiononrightclick' => 'Activar la pussaivladad da modifitgar secziuns cun in clic dretg sin il titel',
-'tog-showtoc' => 'Mussar ina tabla da cuntegn sin paginas cun dapli che trais tetels',
'tog-rememberpassword' => "S'annunziar permanantamain cun quest navigatur (per maximalmain $1 {{PLURAL:$1|di|dis}})",
'tog-watchcreations' => "Agiuntar paginas ch'jeu creesch e datotecas ch'jau transferesch a la glista d'observaziun",
'tog-watchdefault' => "Agiuntar paginas e datotecas ch'jau modifitgesch a la glista d'observaziun",
'compareselectedversions' => 'cumparegliar las versiuns selecziunadas',
'showhideselectedversions' => 'Mussar/zuppentar las versiuns tschernidas',
'editundo' => 'revocar',
-'diff-multi' => '({{PLURAL:$1|Ina versiun|$1 versiuns}} {{PLURAL:$2|dad in utilisader|da $2 utilisaders}} tranter en na {{PLURAL:$1|vegn betg mussada|na vegnan betg mussadas}}.)',
'diff-multi-manyusers' => '({{PLURAL:$1|Ina versiun|$1 versiuns}} tranteren da dapli che $2 {{PLURAL:$2|utilisader|utilisaders}} na vegn betg mussada)',
'difference-missing-revision' => "{{PLURAL:$2|Ina versiun|$2 versiuns}} da questa differenza ($1) {{PLURAL:$2|n'è betg vegnida chattada|n'èn betg vegnidas chattadas}}.
'rows' => 'Lingias:',
'columns' => 'Colonnas:',
'searchresultshead' => 'Tschertga',
-'resultsperpage' => 'resultats per pagina:',
'stub-threshold' => 'Limita per la formataziun sco <a href="#" class="stub">colliaziun a stubs</a>, en bytes:',
'stub-threshold-disabled' => 'Deactivà',
'recentchangesdays' => 'Dumber da dis che duain vegnir mussads en las ultimas midadas:',
'watchmethod-list' => 'intercurir las paginas observadas davart novas midadas',
'watchlistcontains' => "Tia glista d'observaziun cuntegna $1 {{PLURAL:$1|pagina|paginas}}.",
'iteminvalidname' => "Problem cun endataziun '$1', num nunvalid...",
-'wlnote' => "Sutvart {{PLURAL:$1|è l'ultima midada|èn las ultimas '''$1''' midadas}} entaifer {{PLURAL:$2|l'ultima ura|las ultimas '''$2''' uras}}. Actualisà ils $3 las $4.",
'wlshowlast' => 'Mussar: las ultimas $1 uras, ils ultims $2 dis u $3.',
'watchlist-options' => "Opziuns per la glista d'observaziun",
'tooltip-pt-watchlist' => 'La glista da las paginas da las qualas jau observ las midadas',
'tooltip-pt-mycontris' => 'Mussar la glista da tut tias contribuziuns',
'tooltip-pt-login' => "I fiss bun sche ti s'annunziassas, ti na stos dentant betg.",
-'tooltip-pt-anonlogin' => "I fiss bun sche ti t'annunziassas; quai n'è dentant betg obligatoric.",
'tooltip-pt-logout' => 'Sortir',
'tooltip-ca-talk' => "Discussiuns davart il cuntegn da l'artitgel",
'tooltip-ca-edit' => "Ti pos modifitgar questa pagina.
$messages = array(
# User preference toggles
'tog-underline' => 'Sublinierea legăturilor:',
-'tog-justify' => 'Aranjează justificat paragrafele',
'tog-hideminor' => 'Ascunde modificările minore în schimbări recente',
-'tog-hidepatrolled' => 'Ascunde în schimbări recente editările patrulate',
+'tog-hidepatrolled' => 'Ascunde modificările patrulate în schimbări recente',
'tog-newpageshidepatrolled' => 'Ascunde paginile patrulate din lista de pagini noi',
'tog-extendwatchlist' => 'Extinde lista de articole urmărite pentru a arăta toate schimbările efectuate, nu doar pe cele mai recente',
'tog-usenewrc' => 'Grupează modificările după pagină în cadrul schimbărilor recente și listei paginilor urmărite',
'tog-numberheadings' => 'Numerotează automat secțiunile',
'tog-showtoolbar' => 'Afișează bara de unelte pentru modificare',
-'tog-editondblclick' => 'Activează modificarea paginii prin dublu clic',
-'tog-editsection' => 'Activează modificarea secțiunilor prin legăturile [modifică]',
+'tog-editondblclick' => 'Modifică paginile prin dublu clic',
'tog-editsectiononrightclick' => 'Activează modificarea secţiunilor prin clic dreapta pe titlul secțiunii',
-'tog-showtoc' => 'Arată cuprinsul (pentru paginile cu mai mult de 3 paragrafe cu titlu)',
'tog-rememberpassword' => 'Autentificare automată de la acest navigator (expiră după $1 {{PLURAL:$1|zi|zile|de zile}})',
-'tog-watchcreations' => 'Adaugă paginile pe care le creez și fișierele pe care le încarc la lista mea de urmărire',
+'tog-watchcreations' => 'Adaugă paginile pe care le creez și fișierele pe care le încarc la lista mea de pagini urmărite',
'tog-watchdefault' => 'Adaugă paginile și fișierele pe care le modific la lista mea de urmărire',
'tog-watchmoves' => 'Adaugă paginile și fișierele pe care le redenumesc la lista mea de urmărire',
'tog-watchdeletion' => 'Adaugă paginile și fișierele pe care le șterg la lista mea de urmărire',
Administratorul care a efectuat blocarea a furnizat explicația: „$3”.',
'invalidtitle-knownnamespace' => 'Titlu invalid cu spațiul de nume „$2” și textul „$3”',
'invalidtitle-unknownnamespace' => 'Titlu invalid cu numărul spațiului de nume $1 necunoscut și textul „$2”',
-'exception-nologin' => 'Neautentificat{{GENDER:||ă}}.',
+'exception-nologin' => 'Neautentificat{{GENDER:||ă}}',
'exception-nologin-text' => 'Vă rugăm să vă [[Special:Userlogin|autentificați]] pentru a accesa această pagină sau acțiune.',
'exception-nologin-text-manual' => 'Vă rugăm să vă $1 pentru a accesa această pagină sau acțiune.',
'retypenew' => 'Reintroduceți noua parolă:',
'resetpass_submit' => 'Setează parola și autentifică',
'changepassword-success' => 'Parola dumneavoastră a fost schimbată cu succes!',
+'changepassword-throttled' => 'Ați avut prea multe încercări recente de a vă autentifica.
+Vă rugăm să așteptați $1 până să reîncercați.',
'resetpass_forbidden' => 'Parolele nu pot fi schimbate.',
'resetpass-no-info' => 'Trebuie să fiți autentificat pentru a accesa această pagină direct.',
'resetpass-submit-loggedin' => 'Modifică parola',
'changeemail-password' => 'Parola dumneavoastră la {{SITENAME}}:',
'changeemail-submit' => 'Modifică adresa de e-mail',
'changeemail-cancel' => 'Revocare',
+'changeemail-throttled' => 'Ați avut prea multe încercări de a vă autentifica.
+Vă rugăm să așteptați $1 până să reîncercați.',
# Special:ResetTokens
'resettokens' => 'Resetare jetoane',
'content-not-allowed-here' => 'Conținutul de tip „$1” nu este permis pe pagina [[$2]]',
'editwarning-warning' => 'Părăsind această pagină, există riscul pierderii modificărilor efectuate.
Dacă sunteți autentificat, puteți dezactiva această avertizare în secțiunea „Modificare” a preferințelor dumneavoastră.',
+'editpage-notsupportedcontentformat-title' => 'Formatul conținutului nu este acceptat',
+'editpage-notsupportedcontentformat-text' => 'Formatul de conținut $1 nu este acceptat de modelul de conținut $2.',
# Content models
'content-model-wikitext' => 'wikitext',
'cur' => 'actuală',
'next' => 'următoarea',
'last' => 'prec',
-'page_first' => 'prim',
-'page_last' => 'ultim',
+'page_first' => 'prima',
+'page_last' => 'ultima',
'histlegend' => 'Legendă: (actuală) = diferențe față de versiunea curentă,
(prec) = diferențe față de versiunea precedentă, M = modificare minoră',
'history-fieldset-title' => 'Răsfoire istoric',
'showhideselectedversions' => 'Șterge/recuperează versiunile marcate',
'editundo' => 'anulare',
'diff-empty' => '(Nicio diferență)',
-'diff-multi' => '(Nu {{PLURAL:$1|s-a afișat o versiune intermediară efectuată|s-au afișat $1 versiuni intermediare efectuate|s-au afișat $1 de versiuni intermediare efectuate}} de {{PLURAL:$2|un utilizator|$2 utilizatori|$2 de utilizatori}})',
'diff-multi-manyusers' => '({{PLURAL:$1|O versiune intermediară efectuată de|$1 (de) versiuni intermediare efectuate de peste}} $2 {{PLURAL:$2|utilizator|utilizatori}} {{PLURAL:$1|neafișată|neafișate}})',
'difference-missing-revision' => '{{PLURAL:$2|O versiune a|$2 versiuni ale|$2 de versiuni ale}} acestei diferențe ($1) nu {{PLURAL:$2|a fost găsită|au fost găsite}}.
'shown-title' => 'Arată $1 {{PLURAL:$1|rezultat|rezultate}} pe pagină',
'viewprevnext' => 'Vezi ($1 {{int:pipe-separator}} $2) ($3).',
'searchmenu-exists' => "'''Există o pagină cu titlul „[[:$1]]'” pe acest site.'''",
-'searchmenu-new' => "'''Creați pagina „[[:$1]]” pe acest wiki!'''",
+'searchmenu-new' => "<strong>'''Creați pagina „[[:$1]]” pe acest wiki!'''</strong> {{PLURAL:$2|0=|Vedeți, de asemenea, pagina găsită în urma căutării dumneavoastră.|Vedeți, de asemenea, rezultatele căutării.}}",
'searchprofile-articles' => 'Pagini cu conținut',
'searchprofile-project' => 'Pagini din spațiile Proiect și Ajutor',
'searchprofile-images' => 'Multimedia',
'search-result-score' => 'Relevanță: $1%',
'search-redirect' => '(redirecționare către $1)',
'search-section' => '(secțiunea $1)',
+'search-file-match' => '(se regăsește în conținutul fișierului)',
'search-suggest' => 'V-ați referit la: $1',
'search-interwiki-caption' => 'Proiecte înrudite',
'search-interwiki-default' => '$1 rezultate:',
'rows' => 'Rânduri:',
'columns' => 'Coloane:',
'searchresultshead' => 'Parametri căutare',
-'resultsperpage' => 'Numărul de rezultate per pagină',
'stub-threshold' => 'Valoarea minimă pentru un <a href="#" class="stub">ciot</a> (octeți):',
'stub-threshold-disabled' => 'Dezactivat',
'recentchangesdays' => 'Numărul de zile afișate în schimbări recente:',
'fileexists-shared-forbidden' => 'Un fișier cu acest nume există deja în magazia de imagini comune; mergeți înapoi și încărcați fișierul sub un nou nume. [[File:$1|thumb|center|$1]]',
'file-exists-duplicate' => 'Acest fișier este dublura {{PLURAL:$1|fișierului|fișierelor}}:',
'file-deleted-duplicate' => 'Un fișier identic cu acesta ([[:$1]]) a fost șters anterior. Verificați istoricul ștergerilor fișierului înainte de a-l reîncărca.',
+'file-deleted-duplicate-notitle' => 'Un fișier identic cu acesta a fost șters anterior, iar titlul a fost suprimat.
+Ar trebui să contactați pe cineva care poate vizualiza datele suprimate ale fișierului pentru a evalua situația înainte de a începe să-l reîncărcați.',
'uploadwarning' => 'Avertizare la trimiterea fișierului',
'uploadwarning-text' => 'Vă rugăm să modificați descrierea fișierului mai jos și să încercați din nou.',
'savefile' => 'Salvează fișierul',
'deadendpages' => 'Pagini fără legături',
'deadendpagestext' => 'Următoarele pagini nu se leagă de alte pagini din acestă wiki.',
'protectedpages' => 'Pagini protejate',
-'protectedpages-indef' => 'Doar protecțiile pe termen nelimitat',
+'protectedpages-indef' => 'Doar protejări pe termen nelimitat',
'protectedpages-cascade' => 'Doar protejări în cascadă',
+'protectedpages-noredirect' => 'Ascunde redirecționările',
'protectedpagesempty' => 'Nu există pagini protejate',
'protectedtitles' => 'Titluri protejate',
'protectedtitlesempty' => 'Nu există titluri protejate cu acești parametri.',
'watchmethod-list' => 'căutarea paginilor urmărite pentru schimbări recente',
'watchlistcontains' => 'Lista de pagini urmărite conține $1 {{PLURAL:$1|element|elemente|de elemente}}.',
'iteminvalidname' => "E o problemă cu elementul '$1', numele este invalid...",
-'wlnote' => "Mai jos se află {{PLURAL:$1|ultima schimbare|ultimele $1 schimbări|ultimele $1 de schimbări}} din {{PLURAL:$2|ultima oră|ultimele '''$2''' ore|ultimele '''$2''' de ore}}, așa cum era situația la $3, $4.",
+'wlnote2' => 'Mai jos se află schimbările din {{PLURAL:$1|ultima oră|ultimele <strong>$1</strong> ore|ultimele <strong>$1</strong> de ore}}, așa cum era situația la $2, $3.',
'wlshowlast' => 'Arată ultimele $1 ore $2 zile $3',
'watchlist-options' => 'Opțiuni listă de pagini urmărite',
'delete-warning-toobig' => 'Această pagină are un istoric al modificărilor mult prea mare, cu mai mult de $1 {{PLURAL:$1|versiune|versiuni|de versiuni}}.
Ștergerea sa poate afecta baza de date a sitului {{SITENAME}};
acționați cu precauție.',
+'deleting-backlinks-warning' => "'''Atenție:''' Alte pagini se leagă sau sunt transcluse din pagina pe care doriți să o ștergeți.",
# Rollback
'rollback' => 'Editări de revenire',
Vedeți [[Special:BlockList|lista blocărilor]] pentru a revizui adresele blocate.',
'ipb-blockingself' => 'Sunteți pe cale să vă autoblocați! Sunteți sigur că doriți să continuați?',
'ipb-confirmhideuser' => 'Sunteți pe cale să blocați un utilizator cu funcția „ascunde utilizator” activată. Acest lucru va înlătura numele său de utilizator din toate listele și jurnalele. Sunteți sigur că vreți să continuați?',
+'ipb-confirmaction' => 'Dacă sunteți într-adevăr sigur(ă) că doriți să acționați, bifați câmpul „{{int:ipb-confirm}}” din partea de jos.',
'ipb-edit-dropdown' => 'Modifică motivele blocării',
'ipb-unblock-addr' => 'Deblochează utilizatorul $1',
'ipb-unblock' => 'Deblocați un nume de utilizator sau o adresă IP',
'range_block_disabled' => 'Abilitatea dezvoltatorilor de a bloca serii de adrese este dezactivată.',
'ipb_expiry_invalid' => 'Dată de expirare invalidă.',
'ipb_expiry_temp' => 'Blocarea numelor de utilizator ascunse trebuie să fie permanentă.',
-'ipb_hide_invalid' => 'Imposibil de a suprima acest cont; acesta poate avea prea multe modificări.',
+'ipb_hide_invalid' => 'Imposibil de suprimat acest cont; acesta are mai mult de {{PLURAL:$1|o modificare|$1 modificări|$1 de modificări}}.',
'ipb_already_blocked' => '„$1” este deja blocat',
'ipb-needreblock' => '$1 este deja blocat. Doriți să modificați parametrii?',
'ipb-otherblocks-header' => '{{PLURAL:$1|Altă blocare|Alte blocări}}',
'allmessages-prefix' => 'Filtru după prefix:',
'allmessages-language' => 'Limbă:',
'allmessages-filter-submit' => 'Du-te',
+'allmessages-filter-translate' => 'Traducere',
# Thumbnails
'thumbnail-more' => 'Extindere',
Un dosar temporar lipsește.',
'import-parse-failure' => 'Eroare la analiza importului XML',
'import-noarticle' => 'Nicio pagină de importat!',
-'import-nonewrevisions' => 'Toate versiunile au fost importate anterior.',
+'import-nonewrevisions' => 'Nicio versiune importată (toate erau fie deja prezente, fie au fost ignorate din cauza unor erori).',
'xml-error-string' => '$1 la linia $2, col $3 (octet $4): $5',
'import-upload' => 'Încărcare date XML',
'import-token-mismatch' => 'S-au pierdut datele sesiunii. Vă rugăm să încercați din nou.',
'import-error-special' => 'Pagina „$1” nu poate fi importată deoarece aparține unui spațiu de nume special care nu admite pagini.',
'import-error-invalid' => 'Pagina „$1” nu poate fi importată deoarece numele acesteia este invalid.',
'import-error-unserialize' => 'Versiunea $2 a paginii „$1” nu poate fi deserializată. Versiunea a fost raportată ca utilizând modelul de conținut $3 serializat ca $4.',
+'import-error-bad-location' => 'Versiunea $2, care folosește modelul de conținut $3, nu a putut fi stocată în pagina „$1” de pe acest wiki, de vreme ce acel model nu este acceptat pe acea pagină.',
'import-options-wrong' => '{{PLURAL:$2|Opțiune eronată|Opțiuni eronate}}: <nowiki>$1</nowiki>',
'import-rootpage-invalid' => 'Pagina rădăcină furnizată este un titlu nevalid.',
'import-rootpage-nosubpage' => 'Spațiul de nume „$1” al paginii rădăcină nu permite subpagini.',
'tooltip-pt-watchlist' => 'Lista paginilor pe care le monitorizați',
'tooltip-pt-mycontris' => 'Listă de contribuții',
'tooltip-pt-login' => 'Sunteți încurajat să vă autentificați, deși acest lucru nu este obligatoriu.',
-'tooltip-pt-anonlogin' => 'Sunteți încurajat să vă autentificați, deși acest lucru nu este obligatoriu.',
'tooltip-pt-logout' => 'Închideți sesiunea de lucru',
'tooltip-ca-talk' => 'Discuții despre această pagină',
'tooltip-ca-edit' => 'Puteți modifica această pagină. Înainte de a o salva vă rugăm s-o previzualizați.',
'version-parser-function-hooks' => 'Hook-uri funcții parser',
'version-hook-name' => 'Nume hook',
'version-hook-subscribedby' => 'Subscris de',
-'version-version' => '(Versiune $1)',
-'version-license' => 'Licență',
+'version-version' => '($1)',
+'version-license' => 'Licență MediaWiki',
+'version-ext-license' => 'Licență',
+'version-ext-colheader-name' => 'Extensie',
+'version-ext-colheader-version' => 'Versiune',
+'version-ext-colheader-license' => 'Licență',
+'version-ext-colheader-description' => 'Descriere',
+'version-ext-colheader-credits' => 'Autori',
+'version-license-title' => 'Licență pentru $1',
+'version-license-not-found' => 'Nu s-au găsit informații detaliate despre licența acestei extensii.',
+'version-credits-title' => 'Credite pentru $1',
+'version-credits-not-found' => 'Nu s-au găsit informații detaliate despre creditele acestei extensii.',
'version-poweredby-credits' => "Acest wiki este motorizat de '''[https://www.mediawiki.org/ MediaWiki]''', drepturi de autor © 2001-$1 $2.",
'version-poweredby-others' => 'alții',
'version-poweredby-translators' => 'traducătorii de la translatewiki.net',
'expand_templates_generate_rawhtml' => 'Arată HTML brut',
'expand_templates_preview' => 'Previzualizare',
+# Unknown messages
+'uploadinvalidxml' => 'Nu s-a putut analiza conținutul XML din fișierul încărcat.',
);
$messages = array(
# User preference toggles
'tog-underline' => 'Collegaminde sottolinèate:',
-'tog-justify' => 'Giustifeche le paragrafe',
'tog-hideminor' => "Scunne le cangiaminde stuédeche jndr'à le cangiaminde recende",
'tog-hidepatrolled' => "Scunne le cangiaminde condrollate jndr'à le cangiaminde recende",
'tog-newpageshidepatrolled' => "Scunne le pàggene tenute sotte condrolle da l'elenghe de le pàggene nuève",
'tog-numberheadings' => 'Testate auto-numerate',
'tog-showtoolbar' => "Fà vedè 'a barra de le cangiaminde",
'tog-editondblclick' => "Cange le pàggene cu 'nu doppie clic",
-'tog-editsection' => "Abbilite le cangiaminde d'a sezione ausanne le collagaminde [cange]",
'tog-editsectiononrightclick' => "Abbilite le cangiaminde d'a sezione ausanne 'u pulsande destre d'u sciorge cazzanne sus a 'u titole",
-'tog-showtoc' => "Fa vedè 'a tabbelle de le condenute (pe le pàggene cu cchiù de 3 testate)",
'tog-rememberpassword' => "Arrecuèrdete 'u nome mije sus a stu browser (pe 'nu massime de $1 {{PLURAL:$1|sciurne}})",
'tog-watchcreations' => "Mitte le pàggene ca je agghie ccrejate jndr'à le pàggene condrollate",
'tog-watchdefault' => "Mitte le pàggene ca je agghie cangiate jndr'à le pàggene condrollate",
'articlepage' => "Vide 'a pàgene de le condenute",
'talk' => "'Ngazzaminde",
'views' => 'Visite',
-'toolbox' => 'Cascette de le struminde',
+'toolbox' => 'Struminde',
'userpage' => "Vide a pàgene de l'utende",
'projectpage' => 'Vide a pàgene de le pruggette',
'imagepage' => 'Vide a pàgene de le file',
'invalidtitle-knownnamespace' => 'Titole invalide cu \'u namespace "$2" e teste "$3"',
'invalidtitle-unknownnamespace' => 'Titele invalide cu numere de namespace scanusciute $1 e teste "$2"',
'exception-nologin' => 'Non ge sì collegate',
-'exception-nologin-text' => "Sta pàgene o azione richiede ca a trasè jndr'à sta uicchi.",
+'exception-nologin-text' => "Pe piacere [[Special:Userlogin|tràse]] pe avè l'accesse a sta pàgene o a sta azione.",
# Virus scanner
'virus-badscanner' => "Configurazione ca fece schife: Virus scanner scanusciute: ''$1''",
'gotaccount' => "Tine già 'nu cunde? '''$1'''.",
'gotaccountlink' => 'Tràse',
'userlogin-resetlink' => "T'è scurdate le dettaglie pe trasè?",
-'userlogin-resetpassword-link' => "Azzere 'a passuord toje",
+'userlogin-resetpassword-link' => "T'è scurdate 'a passuord toje?",
'helplogin-url' => 'Help:Trasenne',
'userlogin-helplink' => "[[{{MediaWiki:helplogin-url}}|Aijute cu 'a trasute]]",
+'userlogin-loggedin' => "Tu ste jndre ggià cumme a {{GENDER:$1|$1}}.
+Ause 'u module aqquà sotte pe trasè cumme a 'n'otre utende.",
+'userlogin-createanother' => "Ccreje 'n'otre cunde",
'createacct-join' => "Mitte le 'mbormaziune tune aqquà sotte.",
'createacct-another-join' => "Mitte le 'mbormaziune d'u cunde nuève aqquà sotte.",
'createacct-emailrequired' => 'Indirizze email',
'passwordtooshort' => 'Le password onne a essere almene {{PLURAL:$1|1 carattere|$1 carattere}}.',
'password-name-match' => "'A password toje adda essere diverse da 'u nome utende tue.",
'password-login-forbidden' => "L'ause de stu nome utende e passuord onne state vietate.",
-'mailmypassword' => 'Passuord nova pe e-mail',
+'mailmypassword' => "Azzere 'a passuord",
'passwordremindertitle' => 'Passuord temboranea nova pe {{SITENAME}}',
'passwordremindertext' => "Quacchedune (pò essere tu, da quiste indirizze IP \$1) ha cerchete 'na nova password pe {{SITENAME}} (\$4).
'Na password temboranea pe l'utende \"\$2\" ha state ccrejete e ha state 'mbostete a \"\$3\".
'passwordsent' => "'Na nova passuord ha state mannete a l'indirizze e-mail reggistrete pe \"\$1\".
Pe piacere, colleghete n'otra vota quanne l'è ricevute.",
'blocked-mailpassword' => "L'indirizze IP tue jè blocchete pe le cangiaminde e accussì tu non ge puè ausà 'a funzione de recupere d'a password pe prevenìe l'abbuse.",
-'eauthentsent' => "'N'e-mail de conferme ha state mannete a l'indirizze ca tu è ditte.
-Apprime ca otre e-mail avènene mannete a 'u cunde tue, tu ha seguì le 'struzione ca stonne jndr'à l'e-mail, pe confermà l'iscrizione.",
+'eauthentsent' => "'N'e-mail de conferme ha state mannate a l'indirizze ca tu è ditte.
+Apprime ca otre e-mail avènene mannate a 'u cunde tune, tu ha seguì le 'struzione ca stonne jndr'à l'e-mail, pe confermà ca 'u cunde jè une de le tune.",
'throttled-mailpassword' => "'Nu arrecordatore de passuord ha stete già mannate jndr'à {{PLURAL:$1|l'urtema ore|l'urteme $1 ore}}.
Pe prevenì l'abbuse, sulamende 'nu arrecordatore de passuord avene mannate ogne {{PLURAL:$1|ore|$1 ore}}.",
'mailerror' => "Errore mannanne 'a mail: $1",
'acct_creation_throttle_hit' => "Le visitature de sta Uicchi ca stonne ausene stu indirizze IP onne ccrejete {{PLURAL:$1|'nu cunde utende|$1 cunde utinde}} jndr'à l'urteme giurne, e onne raggiunde 'u numere massime ca se pò fà jndr'à stu periode.
'U resultete jè ca le visitature ca stonne ausene stu indirizze IP non ge ponne ccrejà otre cunde utinde nuève jndr'à stu mumende.",
-'emailauthenticated' => "L'indirizze e-mail ca ne date ha state autendichete 'u sciurne $2 a le $3.",
-'emailnotauthenticated' => "L'indirizze e-mail tue non g'a state angore autendichete.
-Nisciuna mail t'avène mannete pe tutte le seguende dettaglie.",
+'emailauthenticated' => "L'indirizze e-mail ca ne date ha state confermate 'u sciurne $2 a le $3.",
+'emailnotauthenticated' => "L'indirizze e-mail tune non g'a state angore confermate.
+Nisciuna mail t'avène mannate pe tutte le seguende dettaglie.",
'noemailprefs' => "Specifiche 'n'indirizze e-mail pe ste dettaglie ca onne essere fatiete.",
'emailconfirmlink' => "Conferme l'indirizze e-mail tue",
'invalidemailaddress' => "L'indirizze e-mail non ge pò essere accettete cumme l'è scritte purcè tène 'nu formete invalide.
# Special:PasswordReset
'passwordreset' => "Azzere 'a passuord",
'passwordreset-text-one' => "Comblete stu module pe azzerà 'a passuord toje.",
-'passwordreset-text-many' => "{{PLURAL:$1|Inghie une de le cambe de date pe azzerà 'a passuord toje.}}",
+'passwordreset-text-many' => "{{PLURAL:$1|Inghie une de le cambe pe azzerà 'a passuord toje.}}",
'passwordreset-legend' => "Azzere 'a passuord",
'passwordreset-disabled' => "'U reset de le passuord ha state desabbilitate sus a sta uicchi.",
'passwordreset-emaildisabled' => "Le funziune de l'email onne state disabbilitate sus a sta uicchi.",
Otre amministrature sus a {{SITENAME}}ponne angore trasè jndr'à 'u condenute scunnute e 'u ponne scangellà 'n'otra vote ausanne st'inderfacce, senze 'mbostà otre restriziune.",
'revdelete-confirm' => 'Pe piacere conferme ca tu vuè ccu face sta cose, ce tu è capite le conseguenze e ce quidde ca ste face jè in accorde cu le [[{{MediaWiki:Policy-url}}|reghele]] de Uicchipèdie.',
'revdelete-suppress-text' => "'A soppressione adda essere ausate '''sulamende''' jndr'à le case seguende:
+* 'Mbormaziune potenzialmende offenzive
* Date personale inopportune
-*: ''indirizze, numere de telefono, codice fiscale, ecc.''",
+*: ''indirizze, numere de telefono, codece fiscale, ecc.''",
'revdelete-legend' => "'Mboste le restriziune sus 'a visibbilità",
-'revdelete-hide-text' => "Scunne 'u teste d'a revisione",
+'revdelete-hide-text' => "Teste d'a revisione",
'revdelete-hide-image' => "Scunne 'u codenute d'u fail",
'revdelete-hide-name' => 'Scunne azione e obbiettive',
-'revdelete-hide-comment' => 'Scunne le commende de le cangiaminde',
-'revdelete-hide-user' => "Scunne 'u nome utende/IP de quidde ca ha fatte 'u cangiamende",
+'revdelete-hide-comment' => "Cange 'u riepiloghe",
+'revdelete-hide-user' => "Nome utende/IP de quidde ca ha fatte 'u cangiamende",
'revdelete-hide-restricted' => "Live le date da l'amministratore cumme pe l'otre utinde",
'revdelete-radio-same' => '(non scè cangianne)',
-'revdelete-radio-set' => 'Sine',
-'revdelete-radio-unset' => 'None',
+'revdelete-radio-set' => 'Scunnute',
+'revdelete-radio-unset' => 'Visibbile',
'revdelete-suppress' => "Live le date da l'amministrature cumme pe l'otre",
'revdelete-unsuppress' => 'Live le restriziune sus a le revisiune repristinate',
'revdelete-log' => 'Mutive:',
'showhideselectedversions' => 'Fà vedè/scunne le revisiune selezionate',
'editundo' => 'annulle',
'diff-empty' => '(Nisciuna differenze)',
-'diff-multi' => "({{PLURAL:$1|'na versione de mmienze|$1 cchiù versiune de mmienze}} de {{PLURAL:$2|'n'utende|$2 utinde}} non ge se vèdene)",
'diff-multi-manyusers' => "({{PLURAL:$1|'Na revisione de 'mmienze|$1 revisiune de 'mmienze}} non g'è viste da cchiù de $2 {{PLURAL:$2|utende|utinde}})",
'difference-missing-revision' => "{{PLURAL:$2|'Na revisione|$2 revisiune}} de sta differenze ($1) {{PLURAL:$2|non g'onne|non g'onne}} state acchiate.
'rows' => 'Righe:',
'columns' => 'Culonne:',
'searchresultshead' => 'Cirche',
-'resultsperpage' => 'Trasute pe pàgene:',
'stub-threshold' => 'Soglie pe <a href="#" class="stub">collegamende stub</a> de formattazione (byte):',
'stub-threshold-disabled' => 'Disabbilitate',
'recentchangesdays' => "Sciurne da fà vedè jndr'à le cangiaminde recende:",
'action-block' => "blocche st'utende pe le cangiaminde",
'action-protect' => "cange 'u levèlle de protezzione pe sta pàgene",
'action-rollback' => "Annulle velocemende le cangiaminde de l'urteme utende ca ha cangiate 'na pàgena particolare",
-'action-import' => "'mborte sta pàgene da n'otra Uicchi",
-'action-importupload' => "'mborte sta pàgene da 'nu carecamende de 'nu file",
+'action-import' => "'mborte le pàggene da n'otra Uicchi",
+'action-importupload' => "'mborte le pàggene da 'nu carecamende de 'nu file",
'action-patrol' => "signe l'otre cangiaminde cumme condrollate",
'action-autopatrol' => 'signà le cangiaminde tue cumme condrollate',
'action-unwatchedpages' => "vide 'a liste de le pàggene ca non ge sonde condrollete",
'recentchanges-label-minor' => "Quiste ète 'nu cangiamende stuèdeche",
'recentchanges-label-bot' => "Stu cangiamende ha state fatte da 'nu bot",
'recentchanges-label-unpatrolled' => "Stu cangiamende non g'à state angore condrollate",
-'recentchanges-legend-newpage' => '$1 - pàgena nove',
+'recentchanges-legend-heading' => "'''Leggende:'''",
+'recentchanges-legend-newpage' => "('ndruche pure [[Special:NewPages|elenghe de le pàggene nuève]])",
'rcnotefrom' => "Sotte stonne le cangiaminde da '''$2''' (fine a '''$1''' mustrete).",
'rclistfrom' => 'Fà vedè le urteme cangiaminde partenne da $1',
'rcshowhideminor' => '$1 cangiaminde stuèdeche',
'rcshowhidebots' => '$1 bot',
-'rcshowhideliu' => '$1 utende reggistrete',
+'rcshowhideliu' => '$1 utinde reggistrate',
'rcshowhideanons' => '$1 utende scanusciute',
'rcshowhidepatr' => '$1 cangiaminde condrollete',
'rcshowhidemine' => '$1 cangiaminde mie',
'listusers' => "Liste de l'utende",
'listusers-editsonly' => "Fà vedè sulamende l'utinde cu cangiaminde fatte",
'listusers-creationsort' => 'Arrenghete pe date de ccreazione',
+'listusers-desc' => "Arranghe jndr'à 'n'ordine ca scenne",
'usereditcount' => '$1 {{PLURAL:$1|cangiamende|cangiaminde}}',
'usercreated' => "{{GENDER:$3|Ccrejate}} 'u $1 a le ore $2",
'newpages' => 'Pàggene nuève',
'watchmethod-list' => 'stoche a condrolle le pàggene condrollete pe le urteme cangiaminde',
'watchlistcontains' => "'A liste de le pàggene condrollete toje condene $1 {{PLURAL:$1|pàgene|pàggene}}.",
'iteminvalidname' => "Probbleme cu 'a vosce '$1', nome invalide...",
-'wlnote' => "Aqquà sotte {{PLURAL:$1|ste l'urteme cangiamende|stonne l'urteme '''$1''' cangiaminde}} jndr'à {{PLURAL:$2|l'urtema ore|l'urteme '''$2''' ore}}, jndr'à $3, $4.",
'wlshowlast' => "Vide l'urteme $1 ore $2 sciurne $3",
'watchlist-options' => "Opzione d'a liste de le pàggene condrollete",
Riepileghe de le cangiaminde: \$PAGESUMMARY \$PAGEMINOREDIT
-Condatte l'editore:
+Condatte 'u cangiatore:
mail: \$PAGEEDITOR_EMAIL
uicchi: \$PAGEEDITOR_WIKI
Non ge stonne otre notifiche ce tu face otre attivitate senze ca tu visite sta pàgene.
-Tu puè pure azzerà 'a spunde de le notifiche pe tutte le pàggene condrollate jndr'à lista toje.
+Tu puè pure azzerà 'a spunde de le notifiche pe tutte le pàggene condrollate jndr'à l'elenghe tune.
- Statte Bbuene, 'u sisteme de notificaziune de {{SITENAME}}
+Statte Bbuene, 'u sisteme de notificaziune de {{SITENAME}}
--
Pe cangià le 'mbostaziune de notifeche de l'email toje, vè vide
Pe cangià le 'mbostaziune de l'elenghe de le pàggene condrollate tune, vè vide
{{canonicalurl:{{#special:EditWatchlist}}}}
-Pe scangellà 'a pàgene da 'a liste de le pàggene condrollate, vè vide
+Pe scangellà 'a pàgene da l'elenghe de le pàggene condrollate, vè vide
\$UNWATCHURL
Segnalaziune e otre assistenze:
'deleteotherreason' => 'Otre mutive de cchiù:',
'deletereasonotherlist' => 'Otre mutive',
'deletereason-dropdown' => "*Mutive comune de scangellaminde
-** Richieste de l'autore
+** Rummate
+** Vandalisme
** Violazione d'u Copyright
-** Vandalisme",
+** Richieste de l'autore
+** Redirezionamende scuasciate",
'delete-edit-reasonlist' => 'Mutive de scangellazione de le cangiaminde',
'delete-toobig' => "Sta pàgene tène 'na storie de cangiaminde troppe longhe, sus a $1 {{PLURAL:$1|revisione|revisiune}}.
'U scangellamende de stuèzze de pàgene avène ristrette pe prevenì 'ngasinaminde accidentale de {{SITENAME}}.",
L'urteme cangiamende d'a pàgene ere de [[User:$3|$3]] ([[User talk:$3|'Ngazzaminde]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).",
'editcomment' => "'U riepileghe d'u cangiamende ere: \"''\$1''\".",
'revertpage' => "Cangiaminde annullate da [[Special:Contributions/$2|$2]] ([[User talk:$2|Talk]]) a l'urtema versione da [[User:$1|$1]]",
-'revertpage-nouser' => "Le cangiaminde annullate da (nome utende luate) a l'urtema revisione da [[User:$1|$1]]",
+'revertpage-nouser' => "Le cangiaminde annullate da 'n'utende scunnute a l'urtema revisione da {{GENDER:$1|[[User:$1|$1]]}}",
'rollback-success' => "Cangiaminde annullate da $1;
turnate rete a l'urtema versione da $2.",
'contributions' => "Condrebbute de l'{{GENDER:$1|utende}}",
'contributions-title' => "Condrebbute de l'utende pe $1",
'mycontris' => 'Condrebbute mie',
-'contribsub2' => 'Pe $1 ($2)',
+'contribsub2' => 'Pe {{GENDER:$3|$1}} ($2)',
'nocontribs' => 'Nisciune cangiamende ha state acchiate cu ste criterie.',
'uctop' => '(de mò)',
'month' => "Da 'u mese (e cchiù recende):",
'range_block_disabled' => "L'abbilità de le amministrature de ccrejà blocche a indervalle jè disabbilitate.",
'ipb_expiry_invalid' => "L'orarije de scadenze non g'è valide.",
'ipb_expiry_temp' => "Le blocche sus a le nome de l'utinde scunnute onna essere permanende.",
-'ipb_hide_invalid' => 'Non ge se pò scangellà stu cunde utende; tène troppe cangiaminde.',
+'ipb_hide_invalid' => "Non ge se pò scangellà stu cunde utende; tène cchiù de troppe {{PLURAL:$1|'nu cangiamede|$1 cangiaminde}}.",
'ipb_already_blocked' => '"$1" jè ggià blocchete',
'ipb-needreblock' => "$1 ha state già blocchete. Vuè cu cange le 'mbostaziune?",
'ipb-otherblocks-header' => 'Otre {{PLURAL:$1|blocche|blocche}}',
'allmessages-prefix' => 'Filtrate pe prefisse:',
'allmessages-language' => 'Lènga:',
'allmessages-filter-submit' => 'Veje',
+'allmessages-filter-translate' => 'Traduce',
# Thumbnails
'thumbnail-more' => 'Allarije',
'tooltip-pt-watchlist' => "'A liste de le pàggene ca ste condrolle pe le camgiaminde",
'tooltip-pt-mycontris' => 'Liste de le condrebbute mie',
'tooltip-pt-login' => "Tu si 'ncoraggiete a cullegarte, jidde non g'è 'n'obblighe.",
-'tooltip-pt-anonlogin' => "Tu si 'ncoraggiete a cullegarte; però non g'è 'n'obblighe.",
'tooltip-pt-logout' => 'Isse',
'tooltip-ca-talk' => "'Ngazzaminde sus 'a pàgene de le condenute",
'tooltip-ca-edit' => "Tu puè cangià sta pàgene.
Permette de aggiungere 'nu mutive jndr'à 'u riepileghe",
'tooltip-preferences-save' => 'Reggistre le preferenze',
'tooltip-summary' => "Mitte 'nu riepileghe piccinne",
+'interlanguage-link-title' => '$1 - $2',
# Stylesheets
'common.css' => "/* 'U CSS ca se iacchie aqquà avène applicate a tutte le masckere */",
'svg-long-desc' => "Fail SVG, nominalmende sonde $1 × $2 pixel, dimenzione d'u fail: $3",
'svg-long-desc-animated' => "File SVG animate, nominalmende sonde $1 × $2 pixel, dimenzione d'u file: $3",
'svg-long-error' => 'File SVG invalide: $1',
-'show-big-image' => 'Risoluzione chiena chiena',
+'show-big-image' => 'File origgenale',
'show-big-image-preview' => 'Dimenziune de sta andeprime: $1.',
'show-big-image-other' => 'Otre {{PLURAL:$2|resoluzione|resoluziune}}: $1.',
'show-big-image-size' => '$1 x $2 pixel',
'days-abbrev' => '$1g',
'seconds' => '{{PLURAL:$1|seconde|seconde}}',
'minutes' => '{{PLURAL:$1|$1 minute|$1 minute}}',
-'hours' => '{{PLURAL: $1|$1ore|$1 ore}}',
-'days' => '{{PLURAL: $1|$1 sciurne|$1 sciurne}}',
+'hours' => '{{PLURAL:$1|$1ore|$1 ore}}',
+'days' => '{{PLURAL:$1|$1 sciurne}}',
'weeks' => '{{PLURAL:$1|$1 sumàne}}',
'months' => '{{PLURAL:$1|$1 mese|$1 mise}}',
'years' => '{{PLURAL:$1|$1 anne}}',
'imgmultigo' => 'Veje!',
'imgmultigoto' => "Veje 'a pàgene $1",
+# Language selector for translatable SVGs
+'img-lang-go' => 'Véje',
+
# Table pager
'ascending_abbrev' => 'asc',
'descending_abbrev' => 'desc',
'version-version' => '(Versione $1)',
'version-svn-revision' => '(r$2)',
'version-license' => 'Licenze',
+'version-ext-license' => 'Licenze',
+'version-ext-colheader-name' => 'Estenzione',
+'version-ext-colheader-version' => 'Versione',
+'version-ext-colheader-license' => 'Licenze',
+'version-ext-colheader-description' => 'Descrizione',
+'version-ext-colheader-credits' => 'Auture',
+'version-license-title' => 'Licenziate pe $1',
'version-poweredby-credits' => "Sta Uicchi jè fatte da '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
'version-poweredby-others' => 'otre',
'version-poweredby-translators' => 'tradutture de translatewiki.net',
# Special:Redirect
'redirect' => "Redirette da 'u file, utende o ID d'a revisione",
'redirect-legend' => "Redirette a 'nu file o 'na pàgene",
-'redirect-summary' => "Sta pàgena speciale redirezione a 'nu file (date 'u nome d'u file), 'na pàgene (fate 'n'ID de revisione), o 'na pàgene utende (date 'n'ID numeriche de l'utende).",
+'redirect-summary' => "Sta pàgena speciale redirezione a 'nu file (date 'u nome d'u file), 'na pàgene (date 'n'ID de revisione), o 'na pàgene utende (date 'n'ID numeriche de l'utende). Ause: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]], o [[{{#Special:Redirect}}/user/101]].",
'redirect-submit' => 'Véje',
'redirect-lookup' => 'Mappature:',
'redirect-value' => 'Valore:',
'redirect-user' => "ID de l'utende",
+'redirect-page' => "ID d'a pàgene",
'redirect-revision' => "Revisione d'a pàgene",
'redirect-file' => "Nome d'u file",
'redirect-not-exists' => 'Valore non acchiate',
# Special:SpecialPages
'specialpages' => 'Pàggene speciele',
+'specialpages-note-top' => 'Leggende',
'specialpages-note' => '* Pàggene speciale normale.
-* <span class="mw-specialpagerestricted">Pàggene speciale cu le restriziune.</span>
-* <span class="mw-specialpagecached">Pàggene speciale in memorie cache (ponne essere vecchie).</span>',
+* <span class="mw-specialpagerestricted">Pàggene speciale cu le restriziune.</span>',
'specialpages-group-maintenance' => "Report d'a manutenzione",
'specialpages-group-other' => 'Otre pàggene speciele',
'specialpages-group-login' => 'Tràse / Reggistrate',
'tags-tag' => "Nome d'u tag",
'tags-display-header' => "Accumme parene sus 'a liste de le cangiaminde",
'tags-description-header' => "Descriziona comblete d'u significhete",
+'tags-active-header' => 'Attive?',
'tags-hitcount-header' => 'Cangiaminde taggate',
+'tags-active-yes' => 'Sìne',
+'tags-active-no' => 'None',
'tags-edit' => 'cange',
'tags-hitcount' => '$1 {{PLURAL:$1|cangiamende|cangiaminde}}',
# Durations
'duration-seconds' => '{{PLURAL:$1|seconde|seconde}}',
'duration-minutes' => '{{PLURAL:$1|minute|minute}}',
-'duration-hours' => '{{PLURAL: $1|ore|ore}}',
+'duration-hours' => '$1 {{PLURAL:$1|ore}}',
'duration-days' => '$1 {{PLURAL:$1|sciurne|sciurne}}',
-'duration-weeks' => '{{PLURAL: $1|sumàne|sumàne}}',
-'duration-years' => '{{PLURAL: $1|anne|anne}}',
+'duration-weeks' => '$1 {{PLURAL:$1|sumàne}}',
+'duration-years' => '$1 {{PLURAL:$1|anne}}',
'duration-decades' => '$1 {{PLURAL:$1|decade|decade}}',
'duration-centuries' => '$1 {{PLURAL:$1|sechele|sechele}}',
'duration-millennia' => '$1 {{PLURAL:$1|millennie|millennie}}',
'expand_templates_generate_xml' => "Fà vedè l'arvule de l'analisi XML",
'expand_templates_preview' => 'Andeprime',
+# Unknown messages
+'uploadinvalidxml' => "L'XML jndr'à 'u file carecate non ge pò essere analizzate.",
);
* @author Putnik
* @author Rave
* @author Rubin
+ * @author Rubin16
* @author Sagan
* @author Shirayuki
* @author Sk
$messages = array(
# User preference toggles
'tog-underline' => 'Подчёркивание ссылок:',
-'tog-justify' => 'Выравнивать текст по ширине страницы',
'tog-hideminor' => 'Скрывать малые правки в списке свежих правок',
'tog-hidepatrolled' => 'Скрывать патрулированные правки в списке свежих правок',
'tog-newpageshidepatrolled' => 'Скрывать отпатрулированные страницы в списке новых страниц',
'tog-numberheadings' => 'Автоматически нумеровать заголовки',
'tog-showtoolbar' => 'Показывать верхнюю панель инструментов при редактировании',
'tog-editondblclick' => 'Править страницы по двойному щелчку',
-'tog-editsection' => 'Показывать ссылку «править» для каждой секции',
'tog-editsectiononrightclick' => 'Править секции при правом щелчке мышью на заголовке',
-'tog-showtoc' => 'Показывать оглавление (для страниц более чем с 3 заголовками)',
-'tog-rememberpassword' => 'Помнить мою учётную запись в этом браузере (не более $1 {{PLURAL:$1|дня|дней|дней}})',
+'tog-rememberpassword' => 'Помнить мою учётную запись в этом браузере (не более $1 {{PLURAL:$1|дня|дней}})',
'tog-watchcreations' => 'Добавлять в список наблюдения созданные мной страницы и загруженные мной файлы',
'tog-watchdefault' => 'Добавлять в список наблюдения изменённые мной страницы и описания файлов',
'tog-watchmoves' => 'Добавлять в список наблюдения переименованные мной страницы и файлы',
'tog-minordefault' => 'Помечать по умолчанию правки как малозначимые',
'tog-previewontop' => 'Помещать предпросмотр перед окном редактирования',
'tog-previewonfirst' => 'Показывать предпросмотр при переходе к редактированию',
-'tog-enotifwatchlistpages' => 'Уведомлять по эл. почте об изменениях страниц и файлов из списка наблюдения',
-'tog-enotifusertalkpages' => 'Уведомлять по эл. почте об изменении персональной страницы обсуждения',
+'tog-enotifwatchlistpages' => 'Уведомлять по электронной почте об изменениях страниц и файлов из списка наблюдения',
+'tog-enotifusertalkpages' => 'Уведомлять по электронной почте об изменении персональной страницы обсуждения',
'tog-enotifminoredits' => 'Уведомлять даже при незначительных изменениях страниц и файлов',
'tog-enotifrevealaddr' => 'Показывать мой почтовый адрес в сообщениях оповещения',
'tog-shownumberswatching' => 'Показывать число участников, включивших страницу в свой список наблюдения',
'tog-watchlisthideminor' => 'Скрывать малые правки из списка наблюдения',
'tog-watchlisthideliu' => 'Скрывать правки представившихся участников из списка наблюдения',
'tog-watchlisthideanons' => 'Скрывать правки анонимных участников из списка наблюдения',
-'tog-watchlisthidepatrolled' => 'СкÑ\80Ñ\8bваÑ\82Ñ\8c оÑ\82паÑ\82Ñ\80Ñ\83лиÑ\80ованнÑ\8bе пÑ\80авки в Ñ\81пиÑ\81ке наблюдения',
+'tog-watchlisthidepatrolled' => 'СкÑ\80Ñ\8bваÑ\82Ñ\8c оÑ\82паÑ\82Ñ\80Ñ\83лиÑ\80ованнÑ\8bе пÑ\80авки из Ñ\81пиÑ\81ка наблюдения',
'tog-ccmeonemails' => 'Отправлять мне копии писем, которые я посылаю другим участникам',
'tog-diffonly' => 'Не показывать содержание страницы под сравнением двух версий',
'tog-showhiddencats' => 'Показывать скрытые категории',
'december-date' => 'Декабрь $1',
# Categories related messages
-'pagecategories' => '{{PLURAL:$1|Категория|Категории}}',
+'pagecategories' => '{{PLURAL:$1|1=Категория|Категории}}',
'category_header' => 'Страницы в категории «$1»',
'subcategories' => 'Подкатегории',
'category-media-header' => 'Файлы в категории «$1»',
'category-empty' => "''Эта категория в данный момент пуста.''",
-'hidden-categories' => '{{PLURAL:$1|Скрытая категория|Скрытые категории}}',
+'hidden-categories' => '{{PLURAL:$1|1=Скрытая категория|Скрытые категории}}',
'hidden-category-category' => 'Скрытые категории',
-'category-subcat-count' => '{{PLURAL:$2|Эта категория содержит только следующую подкатегорию.|Эта категория содержит $1 {{PLURAL:$1|подкатегорию|подкатегории}} из $2 всего.}}',
-'category-subcat-count-limited' => 'Ð\92 Ñ\8dÑ\82ой каÑ\82егоÑ\80ии {{PLURAL:$1|$1 подкаÑ\82егоÑ\80иÑ\8f|$1 подкаÑ\82егоÑ\80ии|$1 подкаÑ\82егоÑ\80ий}}.',
-'category-article-count' => '{{#ifeq:$2|1|Эта категория содержит только следующую страницу.|Эта категория содержит следующ{{PLURAL:$1|ую $1 страницу|ие $1 страницы|ие $1 страниц}} из $2.}}',
-'category-article-count-limited' => 'В этой категории {{PLURAL:$1|$1 страница|$1 страницы|$1 страниц}}.',
-'category-file-count' => '{{#ifeq:$2|1|Эта категория содержит только один файл.|Следующ{{PLURAL:$1|ий $1 файл|ие $1 файла|ие $1 файлов}} из $2 имеющ{{PLURAL:$2|его|их}}ся принадлеж{{PLURAL: ит|ат}} к этой категории.}}',
-'category-file-count-limited' => 'Ð\92 Ñ\8dÑ\82ой каÑ\82егоÑ\80ии {{PLURAL:$1|$1 Ñ\84айл|$1 Ñ\84айла|$1 Ñ\84айлов}}.',
+'category-subcat-count' => '{{PLURAL:$2|Эта категория содержит только следующую подкатегорию.|Эта категория содержит $1 {{PLURAL:$1|1=подкатегорию|подкатегории}} из $2 всего.}}',
+'category-subcat-count-limited' => 'Ð\92 Ñ\8dÑ\82ой каÑ\82егоÑ\80ии {{PLURAL:$1|$1 подкаÑ\82егоÑ\80иÑ\8f|$1 подкаÑ\82егоÑ\80ий|$1 подкаÑ\82егоÑ\80ии}}.',
+'category-article-count' => '{{PLURAL:$2|Эта категория содержит единственную страницу.|{{PLURAL:$1|Показана $1 страница|Показано $1 страниц|Показаны $1 страницы}} из $2, {{PLURAL:$2|находящейся|находящихся|находящихся}} в данной категории.}}',
+'category-article-count-limited' => 'В этой категории {{PLURAL:$1|$1 страница|$1 страниц|$1 страницы|1=только одна страница}}.',
+'category-file-count' => '{{PLURAL:$2|Эта категория содержит единственный файл.|{{PLURAL:$1|Показан $1 файл|Показано $1 файлов|Показаны $1 файла}} из $2, {{PLURAL:$2|находящегося|находящихся|находящихся}} в данной категории.}}',
+'category-file-count-limited' => 'Ð\92 Ñ\8dÑ\82ой каÑ\82егоÑ\80ии {{PLURAL:$1|$1 Ñ\84айл|$1 Ñ\84айлов|$1 Ñ\84айла|1=Ñ\82олÑ\8cко один Ñ\84айл}}.',
'listingcontinuesabbrev' => '(продолжение)',
'index-category' => 'Индексируемые страницы',
'noindex-category' => 'Неиндексируемые страницы',
'delete' => 'Удалить',
'deletethispage' => 'Удалить эту страницу',
'undeletethispage' => 'Восстановить эту страницу',
-'undelete_short' => 'Восстановить $1 {{PLURAL:$1|правку|правки|правок}}',
-'viewdeleted_short' => 'Просмотр $1 {{PLURAL:$1|удалённой правки|удалённых правок|удалённых правок}}',
+'undelete_short' => 'Восстановить {{PLURAL:$1|$1 правку|$1 правок|$1 правки|1=правку}}',
+'viewdeleted_short' => 'Просмотр {{PLURAL:$1|$1 удалённой правки|$1 удалённых правок|удалённой правки}}',
'protect' => 'Защитить',
'protect_change' => 'изменить',
'protectthispage' => 'Защитить эту страницу',
'redirectedfrom' => '(перенаправлено с «$1»)',
'redirectpagesub' => 'Страница-перенаправление',
'lastmodifiedat' => 'Последнее изменение этой страницы: $2, $1.',
-'viewcount' => 'К этой странице обращались $1 {{PLURAL:$1|раз|раза|раз}}.',
+'viewcount' => 'К этой странице обращались $1 {{PLURAL:$1|раз|раз|раза}}.',
'protectedpage' => 'Защищённая страница',
'jumpto' => 'Перейти к:',
'jumptonavigation' => 'навигация',
'badaccess' => 'Ошибка доступа',
'badaccess-group0' => 'Вы не можете выполнять запрошенное действие.',
-'badaccess-groups' => 'Запрошенное действие могут выполнять только участники из {{PLURAL:$2|группы|групп}} «$1».',
+'badaccess-groups' => 'Запрошенное действие могут выполнять только участники {{PLURAL:$2|1=из группы «$1»|одной из следующих групп: $1}}',
'versionrequired' => 'Требуется MediaWiki версии $1',
'versionrequiredtext' => 'Для работы с этой страницей требуется MediaWiki версии $1. См. [[Special:Version|информацию об программном обеспечении]].',
'pagetitle' => '$1 — {{SITENAME}}',
'retrievedfrom' => 'Источник — «$1»',
'youhavenewmessages' => 'Вы получили $1 ($2).',
-'youhavenewmessagesfromusers' => 'Вы получили $1 от {{PLURAL:$3|$3 участника|$3 участников}} ($2).',
+'youhavenewmessagesfromusers' => '{{PLURAL:$4|Вы получили}} $1 от {{PLURAL:$3|$3 участника|$3 участников|1=другого участника}} ($2).',
'youhavenewmessagesmanyusers' => 'Вы получили $1 от множества пользователей ($2).',
'newmessageslinkplural' => '{{PLURAL:$1|новое сообщение|999=новые сообщения}}',
'newmessagesdifflinkplural' => '{{PLURAL:$1|последнее изменение|999=последние изменения}}',
'collapsible-expand' => 'развернуть',
'thisisdeleted' => 'Просмотреть или восстановить $1?',
'viewdeleted' => 'Просмотреть $1?',
-'restorelink' => '{{PLURAL:$1|$1 удалённую правку|$1 удалённые правки|$1 удалённых правок}}',
+'restorelink' => '{{PLURAL:$1|$1 удалённую правку|$1 удалённых правок|$1 удалённые правки|1=удалённую правку}}',
'feedlinks' => 'В виде:',
'feed-invalid' => 'Неправильный тип канала для подписки.',
'feed-unavailable' => 'Ленты синдикации недоступны',
'formerror' => 'Ошибка: невозможно передать данные формы',
'badarticleerror' => 'Это действие не может быть выполнено на данной странице.',
'cannotdelete' => 'Невозможно удалить или переименовать страницу или файл «$1».
-Ð\92озможно, Ñ\81Ñ\82Ñ\80аниÑ\86а Ñ\83же бÑ\8bла Ñ\83далена.',
+Ð\92озможно, Ñ\83же бÑ\8bло пÑ\80оизведено Ñ\83даление.',
'cannotdelete-title' => 'Нельзя удалить страницу «$1»',
'delete-hook-aborted' => 'Правка отменена процедурой-перехватчиком.
Дополнительных пояснений не приведено.',
'no-null-revision' => 'Не удалось создать новую нулевую правку для страницы «$1»',
'badtitle' => 'Недопустимое название',
'badtitletext' => 'Запрашиваемое название страницы неправильно, пусто, либо неверно указано межъязыковое или интервики название. Возможно, в названии используются недопустимые символы.',
-'perfcached' => 'Следующие данные взяты из кэша и могут не учитывать последних изменений. В кэше хранится не более $1 {{PLURAL:$1|записи|записей|записей}}.',
-'perfcachedts' => 'Следующие данные взяты из кэша, последний раз он обновлялся в $1. В кэше хранится не более $4 {{PLURAL:$4|записи|записей|записей}}.',
+'perfcached' => 'Следующие данные взяты из кэша и могут не учитывать последних изменений. В кэше хранится не более $1 {{PLURAL:$1|записи|записей}}.',
+'perfcachedts' => 'Следующие данные взяты из кэша, последний раз он обновлялся в $1. В кэше хранится не более $4 {{PLURAL:$4|записи|записей}}.',
'querypage-no-updates' => 'Обновление этой страницы сейчас отключено.
Представленные здесь данные не будут обновляться.',
'viewsource' => 'Просмотр',
'editinginterface' => "'''Внимание:''' Вы редактируете страницу, содержащую текст интерфейса программного обеспечения.
Её изменение повлияет на внешний вид интерфейса для других пользователей этой вики.
Чтобы добавить или изменить перевод этого сообщения, пожалуйста, используйте сайт локализации MediaWiki [//translatewiki.net/ translatewiki.net].",
-'cascadeprotected' => 'Страница защищена от изменений, поскольку она включена в {{PLURAL:$1|следующую страницу, для которой|следующие страницы, для которых}} включена каскадная защита:
+'cascadeprotected' => 'Страница защищена от изменений, поскольку она включена в {{PLURAL:$1|1=следующую страницу, для которой|следующие страницы, для которых}} включена каскадная защита:
$2',
'namespaceprotected' => 'У вас нет разрешения редактировать страницы в пространстве имён «$1».',
'customcssprotected' => 'У вас нет разрешения редактировать эту CSS-страницу, так как она содержит личные настройки другого участника.',
'yourname' => 'Имя учётной записи:',
'userlogin-yourname' => 'Имя учётной записи',
'userlogin-yourname-ph' => 'Введите имя вашей учётной записи',
-'createacct-another-username-ph' => 'Введите имя вашей учётной записи',
+'createacct-another-username-ph' => 'Введите имя учётной записи',
'yourpassword' => 'Пароль:',
'userlogin-yourpassword' => 'Пароль',
'userlogin-yourpassword-ph' => 'Введите свой пароль',
'yourpasswordagain' => 'Повторный набор пароля:',
'createacct-yourpasswordagain' => 'Подтвердите пароль',
'createacct-yourpasswordagain-ph' => 'Введите пароль еще раз',
-'remembermypassword' => 'Помнить мою учётную запись на этом компьютере (не более $1 {{PLURAL:$1|дня|дней|дней}})',
+'remembermypassword' => 'Помнить мою учётную запись на этом компьютере (не более $1 {{PLURAL:$1|дня|дней}})',
'userlogin-remembermypassword' => 'Оставаться в системе',
'userlogin-signwithsecure' => 'Защищённое соединение',
'yourdomainname' => 'Ваш домен:',
'helplogin-url' => 'Help:Представление системе',
'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Помощь со входом в систему]]',
'userlogin-loggedin' => 'Вы уже вошли как {{GENDER:$1|$1}}.
-Ð\98Ñ\81полÑ\8cзÑ\83йÑ\82е Ñ\84оÑ\80мÑ\83 ниже, Ñ\87Ñ\82обÑ\8b войÑ\82и под дÑ\80Ñ\83гим полÑ\8cзоваÑ\82елем.',
+Ð\98Ñ\81полÑ\8cзÑ\83йÑ\82е Ñ\84оÑ\80мÑ\83 ниже, Ñ\87Ñ\82обÑ\8b войÑ\82и под дÑ\80Ñ\83гой Ñ\83Ñ\87Ñ\91Ñ\82ной запиÑ\81Ñ\8cÑ\8e.',
'userlogin-createanother' => 'Создать другую учётную запись',
'createacct-join' => 'Введите свои данные ниже.',
'createacct-another-join' => 'Введите данные новой учётной записи ниже.',
'createacct-emailoptional' => 'Адрес электронной почты (необязательно)',
'createacct-email-ph' => 'Введите свой адрес электронной почты',
'createacct-another-email-ph' => 'Введите адрес электронной почты',
-'createaccountmail' => 'Ð\98Ñ\81полÑ\8cзоваÑ\82Ñ\8c Ñ\81генеÑ\80иÑ\80ованнÑ\8bй Ñ\81лÑ\83Ñ\87айнÑ\8bм обÑ\80азом вÑ\80еменнÑ\8bй паÑ\80олÑ\8c и вÑ\8bÑ\81лаÑ\82Ñ\8c мне его на Ñ\83казаннÑ\8bй адÑ\80еÑ\81 Ñ\8dлекÑ\82Ñ\80онной поÑ\87Ñ\82Ñ\8b',
+'createaccountmail' => 'Использовать сгенерированный случайным образом временный пароль и выслать его на указанный адрес электронной почты',
'createacct-realname' => 'Настоящее имя (необязательно)',
'createaccountreason' => 'Причина:',
'createacct-reason' => 'Причина',
'createacct-imgcaptcha-ph' => 'Введите текст, который вы видите выше',
'createacct-submit' => 'Создать учётную запись',
'createacct-another-submit' => 'Создать ещё одну учётную запись',
-'createacct-benefit-heading' => '{{SITENAME}} создают такие же люди, как вы.',
-'createacct-benefit-body1' => '{{PLURAL:$1|пÑ\80авка|пÑ\80авки|пÑ\80авок}}',
-'createacct-benefit-body2' => '{{PLURAL:$1|статья|статьи|статей}}',
-'createacct-benefit-body3' => '{{PLURAL:$1|Ñ\83Ñ\87аÑ\81Ñ\82ник|Ñ\83Ñ\87аÑ\81Ñ\82ника|Ñ\83Ñ\87аÑ\81Ñ\82ников}} за последнее время',
+'createacct-benefit-heading' => '{{SITENAME}} — совместный труд таких же людей, как вы.',
+'createacct-benefit-body1' => '{{PLURAL:$1|пÑ\80авка|пÑ\80авок|пÑ\80авки}}',
+'createacct-benefit-body2' => '{{PLURAL:$1|статья|статей|статьи}}',
+'createacct-benefit-body3' => '{{PLURAL:$1|Ñ\83Ñ\87аÑ\81Ñ\82ник|Ñ\83Ñ\87аÑ\81Ñ\82ников|Ñ\83Ñ\87аÑ\81Ñ\82ника}} за последнее время',
'badretype' => 'Введённые вами пароли не совпадают.',
'userexists' => 'Введённое имя участника уже используется.
Пожалуйста, выберите другое имя.',
'login-userblocked' => 'Этот участник заблокирован. Вход в систему не разрешён.',
'wrongpassword' => 'Введённый вами пароль неверен. Попробуйте ещё раз.',
'wrongpasswordempty' => 'Пожалуйста, введите непустой пароль.',
-'passwordtooshort' => 'Пароль должен состоять не менее чем из $1 {{PLURAL:$1|символа|символов|символов}}.',
+'passwordtooshort' => 'Пароль должен состоять не менее чем из $1 {{PLURAL:$1|символа|символов}}.',
'password-name-match' => 'Введённый пароль должен отличаться от имени участника.',
'password-login-forbidden' => 'Использование этого имени участника и пароля запрещено.',
'mailmypassword' => 'Сбросить пароль',
новый пароль для {{grammar:genitive|{{SITENAME}}}} ($4). Для участника $2
создан временный пароль: $3. Если это был ваш запрос,
вам следует представиться системе и выбрать новый пароль.
-Ваш временный пароль будет действовать в течение $5 {{PLURAL:$5|дня|дней|дней}}.
+Ваш временный пароль будет действовать в течение $5 {{PLURAL:$5|дня|дней}}.
Если вы не посылали запроса на смену пароля, или если вы уже вспомнили свой пароль,
и не желаете его менять, вы можете проигнорировать данное сообщение и
'blocked-mailpassword' => 'Редактирование с вашего IP-адреса запрещено, поэтому заблокирована и функция восстановления пароля.',
'eauthentsent' => 'На указанный адрес электронной почты отправлено письмо.
Чтоб получать письма в дальнейшем, следуйте изложенным там инструкциям для подтверждения того, что этот адрес действительно принадлежит вам.',
-'throttled-mailpassword' => 'Функция напоминания пароля уже использовалась в течение {{PLURAL:$1|последнего часа|последних $1 часов}}.
-Для предотвращения злоупотреблений, разрешено запрашивать не более одного напоминания за $1 {{PLURAL:$1|час|часа|часов}}.',
+'throttled-mailpassword' => 'Функция напоминания пароля уже использовалась в течение {{PLURAL:$1|1=последнего часа|последних $1 часов}}.
+Для предотвращения злоупотреблений, разрешено запрашивать не более одного напоминания {{PLURAL:$1|за $1 час|за $1 часов|за $1 часа|1=в час}}.',
'mailerror' => 'Ошибка при отправке почты: $1',
-'acct_creation_throttle_hit' => 'За сутки с вашего IP-адреса {{PLURAL:$1|была создана $1 учётная запись участника|было создано $1 учётных записей участников|было создано $1 учётных записей участников}}, что является пределом для данного отрезка времени.
+'acct_creation_throttle_hit' => 'За сутки с вашего IP-адреса {{PLURAL:$1|была создана $1 учётная запись участника|было создано $1 учётных записей участников|1=уже была создана учётная запись участника}}, что является пределом для данного отрезка времени.
Таким образом, пользователи, обладающие данным IP-адресом, в данный момент больше не могут создавать новых учётных записей.',
'emailauthenticated' => 'Ваш адрес электронной почты подтверждён $2 в $3.',
'emailnotauthenticated' => 'Ваш адрес электронной почты ещё не был подтверждён.
'retypenew' => 'Повторите ввод нового пароля:',
'resetpass_submit' => 'Установить пароль и представиться',
'changepassword-success' => 'Ваш пароль был успешно изменён!',
+'changepassword-throttled' => 'Вы сделали слишком много попыток представиться системе.
+Пожалуйста, подождите $1 перед тем, как попробовать снова.',
'resetpass_forbidden' => 'Пароль не может быть изменён',
'resetpass-no-info' => 'Чтобы обращаться непосредственно к этой странице, вам следует представиться системе.',
'resetpass-submit-loggedin' => 'Изменить пароль',
# Special:PasswordReset
'passwordreset' => 'Сброс пароля',
'passwordreset-text-one' => 'Заполните эту форму, чтобы сбросить свой пароль.',
-'passwordreset-text-many' => '{{PLURAL:$1|Ð\97аполниÑ\82е одно из полей длÑ\8f полÑ\83Ñ\87ениÑ\8f вÑ\80еменного паÑ\80олÑ\8f на e-mail.}}',
+'passwordreset-text-many' => '{{PLURAL:$1|Ð\97аполниÑ\82е одно из полей длÑ\8f полÑ\83Ñ\87ениÑ\8f вÑ\80еменного паÑ\80олÑ\8f по Ñ\8dлекÑ\82Ñ\80онной поÑ\87Ñ\82е.}}',
'passwordreset-legend' => 'Сбросить пароль',
'passwordreset-disabled' => 'Сбросы пароля отключены на этой вики.',
'passwordreset-emaildisabled' => 'Функции электронной почты отключены в этой вики.',
'passwordreset-email' => 'Адрес электронной почты:',
'passwordreset-emailtitle' => 'Сведения об учётной записи {{SITENAME}}',
'passwordreset-emailtext-ip' => 'Кто-то (возможно, вы, с IP-адреса $1) запросил сброс пароля к вашей учётной записи в проекте {{SITENAME}} ($4).
-С этим адресом электронной почты {{PLURAL:$3|связана следующая учётная запись|связаны следующие учётные записи}}:
+С этим адресом электронной почты {{PLURAL:$3|1=связана следующая учётная запись|связаны следующие учётные записи}}:
$2
-{{PLURAL:$3|Этот временный пароль будет|Эти временные пароли будут}} действовать {{PLURAL:$5|$5 день|$5 дня|$5 дней}}.
+{{PLURAL:$3|1=Этот временный пароль будет|Эти временные пароли будут}} действовать {{PLURAL:$5|$5 день|$5 дней|$5 дня|1=один день}}.
Вы должны представиться системе и выбрать новый пароль.
Если вы не делали этого запроса, или вспомнили свой исходный пароль и не желаете его менять,
то можете проигнорировать это сообщение и продолжить использовать свой старый пароль.',
'passwordreset-emailtext-user' => 'Участник $1 из проекта {{SITENAME}} запросил сброс пароля для вашей учётной записи в проекте {{SITENAME}} ($4).
-С этим адресом электронной почты {{PLURAL:$3|связана следующая учётная запись|связаны следующие учётные записи}}:
+С этим адресом электронной почты {{PLURAL:$3|1=связана следующая учётная запись|связаны следующие учётные записи}}:
$2
-{{PLURAL:$3|Этот временный пароль будет|Эти временные пароли будут}} действовать {{PLURAL:$5|$5 день|$5 дня|$5 дней}}.
+{{PLURAL:$3|1=Этот временный пароль будет|Эти временные пароли будут}} действовать {{PLURAL:$5|$5 день|$5 дней|$5 дня|1=один день}}.
Вы должны представиться системе и выбрать новый пароль.
Если вы не делали этого запроса или вспомнили свой исходный пароль и не желаете его менять,
то можете проигнорировать это сообщение и продолжить использовать свой старый пароль.',
'changeemail-password' => 'Ваш пароль для проекта «{{SITENAME}}»:',
'changeemail-submit' => 'Изменить адрес',
'changeemail-cancel' => 'Отмена',
+'changeemail-throttled' => 'Вы сделали слишком много попыток представиться системе.
+Пожалуйста, подождите $1 перед тем, как попробовать снова.',
# Special:ResetTokens
'resettokens' => 'Сбросить токены',
Если вы не хотите, чтобы кто-либо изменял ваши тексты, не помещайте их сюда.<br />
Вы также подтверждаете, что являетесь автором вносимых дополнений, или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого (см. $1).
'''НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ МАТЕРИАЛЫ!'''",
-'longpageerror' => "'''ОШИБКА: записываемый вами текст имеет размер {{PLURAL:$1|$1 килобайт|$1 килобайта|$1 килобайт}}, что больше, чем установленный предел в {{PLURAL:$2|$2 килобайт|$2 килобайта|$2 килобайт}}. Страница не может быть сохранена.'''",
+'longpageerror' => "'''ОШИБКА: записываемый вами текст имеет размер $1 {{PLURAL:$1|килобайт|килобайт|килобайта}}, что больше, чем установленный предел в $2 {{PLURAL:$2|килобайт|килобайт|килобайта}}. Страница не может быть сохранена.'''",
'readonlywarning' => "'''Предупреждение. База данных заблокирована в связи с процедурами обслуживания, поэтому вы не можете записать ваши изменения прямо сейчас.'''
Возможно, вам следует скопировать этот текст в текстовый файл, чтобы сохранить его на будущее.
Ниже для справки приведена последняя запись журнала:",
'semiprotectedpagewarning' => "'''Замечание.''' Эта страница была защищена; редактировать её могут только зарегистрированные участники.
Ниже для справки приведена последняя запись журнала:",
-'cascadeprotectedwarning' => "'''Предупреждение:''' Данную страницу могут редактировать только участники группы «Администраторы», поскольку она включена {{PLURAL:$1|в следующую страницу, для которой|в следующие страницы, для которых}} включена каскадная защита:",
+'cascadeprotectedwarning' => "'''Предупреждение:''' Данную страницу могут редактировать только участники с административными правами, поскольку она включена {{PLURAL:$1|1=в следующую страницу, для которой|в следующие страницы, для которых}} включена каскадная защита:",
'titleprotectedwarning' => "'''Предупреждение. Это название защищено. Создать эту страницу могут только участники с [[Special:ListGroupRights|соответствующими правами]].'''
Ниже для справки приведена последняя запись журнала:",
-'templatesused' => '{{PLURAL:$1|Шаблон, использованный|Шаблоны, использованные}} на этой странице:',
-'templatesusedpreview' => '{{PLURAL:$1|Шаблон, используемый|Шаблоны, используемые}} в предпросматриваемой странице:',
-'templatesusedsection' => '{{PLURAL:$1|Шаблон, используемый|Шаблоны, использованные}} в этом разделе:',
+'templatesused' => '{{PLURAL:$1|1=Шаблон, используемый|Шаблоны, используемые}} на этой странице:',
+'templatesusedpreview' => '{{PLURAL:$1|1=Шаблон, используемый|Шаблоны, используемые}} в режиме предпросмотра:',
+'templatesusedsection' => '{{PLURAL:$1|1=Шаблон, используемый|Шаблоны, используемые}} в этом разделе:',
'template-protected' => '(защищено)',
'template-semiprotected' => '(частично защищено)',
-'hiddencategories' => 'Эта страница относится к $1 {{PLURAL:$1|скрытой категории|скрытым категориям}}:',
+'hiddencategories' => 'Эта страница относится к {{PLURAL:$1|$1 скрытой категории|$1 скрытым категориям|1=одной скрытой категории}}:',
'edittools' => '<!-- Расположенный здесь текст будет показываться под формой редактирования и формой загрузки. -->',
'nocreatetext' => 'На этом сайте ограничена возможность создания новых страниц.
Вы можете вернуться назад и отредактировать существующую страницу, [[Special:UserLogin|представиться системе или создать новую учётную запись]].',
'sectioneditnotsupported-title' => 'Редактирование разделов не поддерживается',
'sectioneditnotsupported-text' => 'На этой странице не поддерживается редактирование разделов',
'permissionserrors' => 'Ошибка прав доступа',
-'permissionserrorstext' => 'У вас нет прав на выполнение этой операции по {{PLURAL:$1|следующей причине|следующим причинам}}:',
-'permissionserrorstext-withaction' => 'У вас нет прав на $2 по {{PLURAL:$1|следующей причине|следующим причинам}}:',
+'permissionserrorstext' => 'У вас нет прав на выполнение этой операции по {{PLURAL:$1|1=следующей причине|следующим причинам}}:',
+'permissionserrorstext-withaction' => 'У вас нет прав на $2 по {{PLURAL:$1|1=следующей причине|следующим причинам}}:',
'recreate-moveddeleted-warn' => "'''Внимание. Вы пытаетесь воссоздать страницу, которая ранее удалялась.'''
Проверьте, действительно ли вам нужно воссоздавать эту страницу.
'content-failed-to-parse' => 'Содержимое $2 не соответствует типу $1: $3.',
'invalid-content-data' => 'Недопустимые данные',
'content-not-allowed-here' => 'Содержимое "$1" недопустимо на странице [[$2]]',
-'editwarning-warning' => 'Переход на другую страницу может привести к потере сделанных вами изменений.
-Если вы зарегистрированы в системе, то вы можете отключить это предупреждение в разделе «Редактирование» ваших настроек.',
+'editwarning-warning' => 'Переход на другую страницу может привести к потере внесённых вами изменений.
+Если вы зарегистрированы в системе, то вы можете отключить это предупреждение в разделе «{{int:prefs-editing}}» ваших настроек.',
+'editpage-notsupportedcontentformat-title' => 'Формат содержимого не поддерживается',
+'editpage-notsupportedcontentformat-text' => 'Формат содержимого $1 не поддерживается моделью содержимого $2.',
# Content models
'content-model-wikitext' => 'вики-текст',
# Parser/template warnings
'expensive-parserfunction-warning' => "'''Внимание!''' Эта страница содержит слишком много вызовов ресурсоёмких функций.
-Должно быть не более $2 {{PLURAL:$2|вызова|вызовов}}, в то время как сейчас здесь $1 {{PLURAL:$1|вызов|вызова|вызовов}}.",
+Должно быть не более {{PLURAL:$2|$2 вызова|$2 вызовов|1=одного вызова}}, в то время как сейчас здесь $1 {{PLURAL:$1|вызов|вызовов|вызова}}.",
'expensive-parserfunction-category' => 'Страницы со слишком большим количеством вызовов ресурсоёмких функций',
'post-expand-template-inclusion-warning' => 'Предупреждение: суммарный размер включаемых шаблонов слишком велик.
Некоторые шаблоны не будут включены.',
'cantcreateaccount-text' => "Создание учётных записей с этого IP-адреса ('''$1''') было заблокировано {{GENDER:$3|участником|участницей|}} [[User:$3|$3]].
$3 {{GENDER:$3|указал|указала}} следующую причину: ''$2''.",
+'cantcreateaccount-range-text' => "{{GENDER:$3|Участник|Участница}} [[User:$3|$3]] {{GENDER:$3|установил|установила}} запрет на создание учётных записей из диапазона IP-адресов '''$1''', включающего ваш IP-адрес ('''$4''').
+
+Была указана следующая причина: $2.",
# History pages
'viewpagelogs' => 'Показать журналы для этой страницы',
'history-show-deleted' => 'Только удалённые',
'histfirst' => 'старейшие',
'histlast' => 'новейшие',
-'historysize' => '($1 {{PLURAL:$1|байт|байта|байт}})',
+'historysize' => '($1 {{PLURAL:$1|байт|байт|байта}})',
'historyempty' => '(пусто)',
# Revision feed
'revdelete-no-file' => 'Указанный файл не существует.',
'revdelete-show-file-confirm' => 'Вы уверены, что вы хотите просмотреть удалённую версию файла «<nowiki>$1</nowiki>» от $2, $3?',
'revdelete-show-file-submit' => 'Да',
-'revdelete-selected' => "'''{{PLURAL:$2|Выбранная версия|Выбранные версии}} страницы [[:$1]]:'''",
-'logdelete-selected' => "'''{{PLURAL:$1|Выбранная запись|Выбранные записи}} журнала:'''",
+'revdelete-selected' => "'''{{PLURAL:$2|1=Выбранная версия|Выбранные версии}} страницы [[:$1]]:'''",
+'logdelete-selected' => "'''{{PLURAL:$1|1=Выбранная запись|Выбранные записи}} журнала:'''",
'revdelete-text' => "'''Удалённые версии страниц и события будут показываться в истории страницы и журналах, но часть их содержания будет недоступна обычным посетителям.'''
Администраторы проекта {{SITENAME}} будут иметь доступ к скрытому содержанию и смогут восстановить его через этот же интерфейс, за исключением случаев, когда установлено дополнительное ограничение.",
'revdelete-confirm' => 'Пожалуйста, подтвердите, что вы действительно желаете совершить это действие, осознаёте последствия, делаете это в соответствии с [[{{MediaWiki:Policy-url}}|правилами]].',
'revdelete-suppress' => 'Скрывать данные также и от администраторов',
'revdelete-unsuppress' => 'Снять ограничения с восстановленных версий',
'revdelete-log' => 'Причина:',
-'revdelete-submit' => 'Применить к {{PLURAL:$1|выбранной версии|выбранным версиям}}',
+'revdelete-submit' => 'Применить к {{PLURAL:$1|1=выбранной версии|выбранным версиям}}',
'revdelete-success' => "'''Видимость версии успешно изменена.'''",
'revdelete-failure' => "'''Видимость версии не может быть изменена:'''
$1",
'mergehistory-go' => 'Показать объединяемые правки',
'mergehistory-submit' => 'Объединить правки',
'mergehistory-empty' => 'Не найдены правки для объединения.',
-'mergehistory-success' => '$3 {{PLURAL:$3|пÑ\80авка|пÑ\80авки|пÑ\80авок}} из [[:$1]] Ñ\83Ñ\81пеÑ\88но {{PLURAL:$3|пеÑ\80енеÑ\81ена|пеÑ\80енеÑ\81енÑ\8b|перенесены}} в [[:$2]].',
+'mergehistory-success' => '$3 {{PLURAL:$3|пÑ\80авка|пÑ\80авок|пÑ\80авки}} из [[:$1]] Ñ\83Ñ\81пеÑ\88но {{PLURAL:$3|пеÑ\80енеÑ\81ена|перенесены}} в [[:$2]].',
'mergehistory-fail' => 'Не удалось произвести объединение историй страниц, пожалуйста, проверьте параметры страницы и времени.',
'mergehistory-no-source' => 'Исходная страница «$1» не существует.',
'mergehistory-no-destination' => 'Целевая страница «$1» не существует.',
'showhideselectedversions' => 'Показать/скрыть выбранные версии',
'editundo' => 'отменить',
'diff-empty' => '(нет различий)',
-'diff-multi' => '({{PLURAL:$1|не показана $1 промежуточная версия|не показаны $1 промежуточные версии|не показаны $1 промежуточных версий}} {{PLURAL:$2|$2 участника|$2 участников}})',
-'diff-multi-manyusers' => '(не {{PLURAL:$1|показана $1 промежуточная версия|показаны $1 промежуточные версии|показаны $1 промежуточных версий}}, сделанные более чем $2 {{PLURAL:$2|участником|участниками}})',
-'difference-missing-revision' => '{{PLURAL:$2|$2 версия|$2 версии|$2 версий}} для этого сравнения ($1) {{PLURAL:$2|не обнаружена|не обнаружены}}.
+'diff-multi-sameuser' => '(не {{PLURAL:$1|показана одна промежуточная версия|показано $1 промежуточных версии|показаны $1 промежуточные версии}} этого же участника)',
+'diff-multi-otherusers' => '(не {{PLURAL:$1|показана одна промежуточная версия|показано $1 промежуточных версии|показаны $1 промежуточные версии}} {{PLURAL:$2|ещё одного участника|$2 участников}})',
+'diff-multi-manyusers' => '({{PLURAL:$1|не показана $1 промежуточная версия, сделанная|не показаны $1 промежуточных версий, сделанных|не показаны $1 промежуточные версии, сделанные}} более чем {{PLURAL:$2|$2 участником|$2 участниками}})',
+'difference-missing-revision' => 'Не {{PLURAL:$2|1=найдена|найдены}} {{PLURAL:$2|$2 версия|$2 версий|$2 версии|1=одна из версий}} для этого сравнения ($1).
-ÐÑ\82о обÑ\8bÑ\87но бÑ\8bваеÑ\82, еÑ\81ли пеÑ\80ейÑ\82и по устаревшей ссылке сравнения версий для страницы, которая была удалена.
+Такое обÑ\8bÑ\87но Ñ\81лÑ\83Ñ\87аеÑ\82Ñ\81Ñ\8f пÑ\80и пеÑ\80еÑ\85оде по устаревшей ссылке сравнения версий для страницы, которая была удалена.
Подробности могут быть в [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} журнале удалений].',
# Search results
'titlematches' => 'Совпадения в названиях страниц',
'textmatches' => 'Совпадения в текстах страниц',
'notextmatches' => 'Нет совпадений в текстах страниц',
-'prevn' => '{{PLURAL:$1|предыдущая|предыдущие}} $1',
-'nextn' => '{{PLURAL:$1|следующая|следующие|следующие}} $1',
-'prevn-title' => '{{PLURAL:$1|Ð\9fÑ\80едÑ\8bдÑ\83Ñ\89аÑ\8f $1 запиÑ\81Ñ\8c|Ð\9fÑ\80едÑ\8bдÑ\83Ñ\89ие $1 запиÑ\81и|Ð\9fÑ\80едÑ\8bдÑ\83Ñ\89ие $1 запиÑ\81ей}}',
-'nextn-title' => '{{PLURAL:$1|СледÑ\83Ñ\8eÑ\89аÑ\8f $1 запиÑ\81Ñ\8c|СледÑ\83Ñ\8eÑ\89ие $1 запиÑ\81и|СледÑ\83Ñ\8eÑ\89ие $1 запиÑ\81ей}}',
+'prevn' => '{{PLURAL:$1|1=предыдущая|предыдущие}} $1',
+'nextn' => '{{PLURAL:$1|1=следующая|следующие}} $1',
+'prevn-title' => '{{PLURAL:$1|Ð\9fÑ\80едÑ\8bдÑ\83Ñ\89аÑ\8f $1 запиÑ\81Ñ\8c|Ð\9fÑ\80едÑ\8bдÑ\83Ñ\89ие $1 запиÑ\81ей|Ð\9fÑ\80едÑ\8bдÑ\83Ñ\89ие $1 запиÑ\81и}}',
+'nextn-title' => '{{PLURAL:$1|СледÑ\83Ñ\8eÑ\89аÑ\8f $1 запиÑ\81Ñ\8c|СледÑ\83Ñ\8eÑ\89ие $1 запиÑ\81ей|СледÑ\83Ñ\8eÑ\89ие $1 запиÑ\81и}}',
'shown-title' => 'Показывать $1 {{PLURAL:$1|запись|записи|записей}} на странице',
'viewprevnext' => 'Просмотреть ($1 {{int:pipe-separator}} $2) ($3)',
'searchmenu-exists' => "'''В этой вики есть страница «[[:$1]]»'''",
-'searchmenu-new' => "'''Создать страницу «[[:$1]]» в этом вики-проекте!'''",
+'searchmenu-new' => '<strong>Создать страницу «[[:$1]]» в этом вики-проекте!</strong>
+{{PLURAL:$2|0=|См. также страницу, найденную по результатами вашего поиска.|См. также найденные результаты поиска.}}',
'searchprofile-articles' => 'Основные страницы',
'searchprofile-project' => 'Страницы справки и проекта',
'searchprofile-images' => 'Мультимедиа',
'searchprofile-images-tooltip' => 'Поиск файлов',
'searchprofile-everything-tooltip' => 'Поиск на всех страницах (включая страницы обсуждений)',
'searchprofile-advanced-tooltip' => 'Искать в заданных пространствах имён',
-'search-result-size' => '$1 ({{PLURAL:$2|$2 слово|$2 слова|$2 слов}})',
-'search-result-category-size' => '$1 {{PLURAL:$1|вхождение|вхождения|вхождений}} ($2 {{PLURAL:$2|подкатегория|подкатегории|подкатегорий}}, $3 {{PLURAL:$3|файл|файла|файлов}}).',
+'search-result-size' => '$1 ({{PLURAL:$2|$2 слово|$2 слов|$2 слова}})',
+'search-result-category-size' => '$1 {{PLURAL:$1|вхождение|вхождений|вхождения}} ($2 {{PLURAL:$2|подкатегория|подкатегорий|подкатегории}}, $3 {{PLURAL:$3|файл|файлов|файла}})',
'search-result-score' => 'Релевантность: $1%.',
'search-redirect' => '(перенаправление с $1)',
'search-section' => '(раздел «$1»)',
+'search-file-match' => '(совпадает с содержимым файла)',
'search-suggest' => 'Возможно, вы имели в виду «$1».',
'search-interwiki-caption' => 'Родственные проекты',
'search-interwiki-default' => '$1 результ.:',
'searcheverything-enable' => 'Поиск по всем пространствам имён',
'searchrelated' => 'связанный',
'searchall' => 'все',
-'showingresults' => "Ниже показаны до '''$1''' {{PLURAL:$1|результата|результатов}}, начиная с № '''$2'''.",
-'showingresultsnum' => "Ниже {{PLURAL:$3|показан|показаны|показаны}} '''$3''' {{PLURAL:$3|результат|результата|результатов}}, начиная с № '''$2'''.",
-'showingresultsheader' => "{{PLURAL:$5|Результат '''$1''' из '''$3'''|Результаты '''$1—$2''' из '''$3'''}} для «'''$4'''»",
+'showingresults' => "Ниже {{PLURAL:$1|1=показан результат|показаны результаты}} с № '''$2''' и вплоть до № '''$1'''.",
+'showingresultsnum' => "Ниже {{PLURAL:$3|1=показан|показаны}} '''$3''' {{PLURAL:$3|результат|результатов|результата}}, начиная с № '''$2'''.",
+'showingresultsheader' => "{{PLURAL:$5|1=Результат '''$1''' из '''$3'''|Результаты '''$1—$2''' из '''$3'''}} для «'''$4'''»",
'search-nonefound' => 'Соответствий запросу не найдено.',
'powersearch-legend' => 'Расширенный поиск',
'powersearch-ns' => 'Поиск в пространствах имён:',
'rows' => 'Строк:',
'columns' => 'Столбцов:',
'searchresultshead' => 'Поиск',
-'resultsperpage' => 'Количество найденных записей на страницу:',
'stub-threshold' => 'Порог для определения оформления <a href="#" class="stub">ссылок на заготовки</a> (в байтах):',
'stub-threshold-disabled' => 'Отключён',
'recentchangesdays' => 'Количество дней, за которые показывать свежие правки:',
-'recentchangesdays-max' => '(не более $1 {{PLURAL:$1|дня|дней|дней}})',
+'recentchangesdays-max' => '(не более $1 {{PLURAL:$1|дня|дней}})',
'recentchangescount' => 'Количество правок, отображаемое по умолчанию:',
'prefs-help-recentchangescount' => 'Включает свежие правки, истории страниц, журналы.',
'prefs-help-watchlist-token2' => 'Это секретный ключ для веб-канала вашего списка наблюдений.
'youremail' => 'Электронная почта:',
'username' => '{{GENDER:$1|Имя участника|Имя участницы}}:',
'uid' => 'Код {{GENDER:$1|участника|участницы}}:',
-'prefs-memberingroups' => '{{GENDER:$2|Член|Член}} {{PLURAL:$1|группы|групп}}:',
+'prefs-memberingroups' => '{{GENDER:$2|Член|Член}} {{PLURAL:$1|1=группы|групп}}:',
'prefs-registration' => 'Время регистрации:',
'yourrealname' => 'Настоящее имя:',
'yourlanguage' => 'Язык интерфейса:',
'prefs-help-signature' => 'Комментарии на страницах обсуждений должны быть подписаны посредством добавления символов «<nowiki>~~~~</nowiki>», которые будут преобразованы в вашу подпись и время.',
'badsig' => 'Неверная подпись. Проверьте корректность HTML-тегов.',
'badsiglength' => 'Слишком длинная подпись.
-Ð\9fодпиÑ\81Ñ\8c не должна пÑ\80евÑ\8bÑ\88аÑ\82Ñ\8c $1 {{PLURAL:$1|Ñ\81имвола|Ñ\81имволов|Ñ\81имволов}}.',
+Ð\9fодпиÑ\81Ñ\8c не должна пÑ\80евÑ\8bÑ\88аÑ\82Ñ\8c $1 {{PLURAL:$1|Ñ\81имвола|Ñ\81имволов|Ñ\81имвола}}.',
'yourgender' => 'Какое описание вам более подходит?',
'gender-unknown' => 'Я предпочитаю не указывать',
'gender-male' => 'Он редактирует страницы вики',
'action-editmyprivateinfo' => 'редактирование вашей частной информации',
# Recent changes
-'nchanges' => '$1 {{PLURAL:$1|изменение|изменения|изменений}}',
+'nchanges' => '$1 {{PLURAL:$1|изменение|изменений|изменения}}',
'enhancedrc-since-last-visit' => '$1 {{PLURAL:$1|с последнего посещения}}',
'enhancedrc-history' => 'история',
'recentchanges' => 'Свежие правки',
'recentchanges-label-newpage' => 'Этой правкой была создана новая страница.',
'recentchanges-label-minor' => 'Это незначительное изменение',
'recentchanges-label-bot' => 'Эта правка сделана ботом',
-'recentchanges-label-unpatrolled' => 'Эта правку ещё никем не патрулировалась',
+'recentchanges-label-unpatrolled' => 'Эта правка ещё никем не патрулировалась',
'recentchanges-label-plusminus' => 'Размер страницы изменился на данное количество байт',
'recentchanges-legend-heading' => "'''Легенда:'''",
'recentchanges-legend-newpage' => '(см. также [[Special:NewPages|список новых страниц]])',
'newpageletter' => 'Н',
'boteditletter' => 'б',
'unpatrolledletter' => '!',
-'number_of_watching_users_pageview' => '[$1 {{PLURAL:$1|наблÑ\8eдаÑ\8eÑ\89ий Ñ\83Ñ\87аÑ\81Ñ\82ник|наблÑ\8eдаÑ\8eÑ\89иÑ\85 Ñ\83Ñ\87аÑ\81Ñ\82ника|наблÑ\8eдаÑ\8eÑ\89иÑ\85 Ñ\83Ñ\87аÑ\81Ñ\82ников}}]',
+'number_of_watching_users_pageview' => '[$1 {{PLURAL:$1|наблÑ\8eдаÑ\8eÑ\89ий Ñ\83Ñ\87аÑ\81Ñ\82ник|наблÑ\8eдаÑ\8eÑ\89иÑ\85 Ñ\83Ñ\87аÑ\81Ñ\82ников|наблÑ\8eдаÑ\8eÑ\89иÑ\85 Ñ\83Ñ\87аÑ\81Ñ\82ника}}]',
'rc_categories' => 'Только из категорий (разделитель «|»)',
'rc_categories_any' => 'Любой',
-'rc-change-size-new' => 'Размер после изменения: $1 {{PLURAL:$1|байт|байта|байт}}',
+'rc-change-size-new' => 'Размер после изменения: $1 {{PLURAL:$1|байт|байт|байта}}',
'newsectionsummary' => '/* $1 */ новая тема',
'rc-enhanced-expand' => 'Показать подробности',
'rc-enhanced-hide' => 'Скрыть подробности',
'filetype-mime-mismatch' => 'Расширение файла «.$1» не соответствует его MIME-типу ($2).',
'filetype-badmime' => 'Файлы, имеющие MIME-тип «$1», не могут быть загружены.',
'filetype-bad-ie-mime' => 'Невозможно загрузить этот файл, так как Internet Explorer будет определять его как «$1», то есть неразрешённым и потенциально опасным типом файла.',
-'filetype-unwanted-type' => "'''\".\$1\"''' — нежелательный тип файла.
-{{PLURAL:\$3|Предпочтительным типом файла является|Предпочтительные типы файлов:}} \$2.",
-'filetype-banned-type' => "'''«.$1»''' — {{PLURAL:$4|запрещённый тип файла|запрещённые типы файлов}}.
-{{PLURAL:$3|Разрешённым типом файла является|Разрешённые типы файлов:}} $2.",
+'filetype-unwanted-type' => "'''«.$1»''' — нежелательный тип файла.
+{{PLURAL:$3|1=Предпочтительным типом файла является|Предпочтительные типы файлов:}} $2.",
+'filetype-banned-type' => "'''«.$1»''' — {{PLURAL:$4|1=запрещённый тип файла|запрещённые типы файлов}}.
+{{PLURAL:$3|1=Разрешённым типом файла является|Разрешённые типы файлов:}} $2.",
'filetype-missing' => 'Отсутствует расширение у файла (например, «.jpg»).',
'empty-file' => 'Отправленный вами файл пуст.',
'file-too-large' => 'Отправленный вами файл слишком велик.',
Если всё равно хотите загрузить данный файл, пожалуйста, вернитесь назад и загрузите его под другим именем. [[File:$1|thumb|center|$1]]',
'fileexists-shared-forbidden' => 'Файл с этим именем уже существует в общем хранилище файлов.
Если вы всё-таки хотите загрузить этот файл, пожалуйста, вернитесь назад и измените имя файла. [[File:$1|thumb|center|$1]]',
-'file-exists-duplicate' => 'Этот файл является дубликатом {{PLURAL:$1|следующего файла|следующих файлов}}:',
+'file-exists-duplicate' => 'Этот файл является дубликатом {{PLURAL:$1|1=следующего файла|следующих файлов}}:',
'file-deleted-duplicate' => 'Подобный файл ([[:$1]]) уже удалялся. Пожалуйста, ознакомьтесь с историей удаления файла, прежде чем загружать его снова.',
+'file-deleted-duplicate-notitle' => 'Файл, идентичный этому файлу, был ранее удалён, а имя файла было запрещено.
+Вам следует попросить кого-нибудь с правами просмотра данных по запрещённым файлам, чтобы он проанализировал ситуацию перед тем, как загружать файл снова.',
'uploadwarning' => 'Предупреждение',
'uploadwarning-text' => 'Пожалуйста, измените представленное ниже описание файла и попробуйте ещё раз.',
'savefile' => 'Записать файл',
'backend-fail-closetemp' => 'Не удаётся закрыть временный файл.',
'backend-fail-read' => 'Не удалось прочитать файл $1.',
'backend-fail-create' => 'Не удалось записать файл $1.',
-'backend-fail-maxsize' => 'Не удалось записать файл $1, так как его размер превышает {{PLURAL:$2|$2 байт|$2 байта|$2 байт}}.',
+'backend-fail-maxsize' => 'Не удалось записать файл $1, так как его размер превышает $2 {{PLURAL:$2|байт|байт|байта}}.',
'backend-fail-readonly' => 'Хранилище «$1» сейчас находится в режиме «только чтение». Причина: «$2»',
'backend-fail-synced' => 'Файл «$1» находится в несогласованном состоянии во внутреннем хранилище',
'backend-fail-connect' => 'Не удалось подключиться к хранилищу «$1».',
'backend-fail-internal' => 'Произошла неизвестная ошибка в хранилище «$1».',
'backend-fail-contenttype' => 'Не удалось определить тип содержимого файла, чтобы сохранить его в «$1».',
-'backend-fail-batchsize' => 'Хранилище получило блок из $1 {{PLURAL:$1|файловой операции|файловых операций|файловых операций}}, ограничение составляет $2 {{PLURAL:$1|операцию|операции|файловых операций}}.',
+'backend-fail-batchsize' => 'Хранилище получило блок из $1 {{PLURAL:$1|файловой операции|файловых операций}}, ограничение составляет $2 {{PLURAL:$1|файловую операцию|файловых операций|файловых операции}}.',
'backend-fail-usable' => 'Не удалось прочитать или записать файл «$1» из-за нехватки прав или отсутствия нужных папок.',
# File journal errors
'filehist-comment' => 'Примечание',
'filehist-missing' => 'Файл отсутствует',
'imagelinks' => 'Использование файла',
-'linkstoimage' => '{{PLURAL:$1|Следующая $1 страница ссылается|Следующие $1 страницы ссылаются|Следующие $1 страниц ссылаются}} на данный файл:',
-'linkstoimage-more' => 'Более $1 {{PLURAL:$1|страницы|страниц|страниц}} ссылаются на этот файл.
-Ð\92 данном Ñ\81пиÑ\81ке {{PLURAL:$1|пÑ\80едÑ\81Ñ\82авлена Ñ\82олÑ\8cко $1 Ñ\81Ñ\81Ñ\8bлка|пÑ\80едÑ\81Ñ\82авленÑ\8b Ñ\82олÑ\8cко $1 Ñ\81Ñ\81Ñ\8bлки|пÑ\80едÑ\81Ñ\82авленÑ\8b Ñ\82олÑ\8cко $1 Ñ\81Ñ\81Ñ\8bлок}} на этот файл.
+'linkstoimage' => '{{PLURAL:$1|Следующая $1 страница ссылается|Следующие $1 страниц ссылаются|Следующие $1 страницы ссылаются}} на данный файл:',
+'linkstoimage-more' => 'Более $1 {{PLURAL:$1|страницы|страниц}} ссылаются на этот файл.
+Ð\92 данном Ñ\81пиÑ\81ке {{PLURAL:$1|пÑ\80едÑ\81Ñ\82авлена Ñ\82олÑ\8cко $1 Ñ\81Ñ\81Ñ\8bлка|пÑ\80едÑ\81Ñ\82авленÑ\8b Ñ\82олÑ\8cко $1 Ñ\81Ñ\81Ñ\8bлок|пÑ\80едÑ\81Ñ\82авленÑ\8b Ñ\82олÑ\8cко $1 Ñ\81Ñ\81Ñ\8bлки}} на этот файл.
Доступен также [[Special:WhatLinksHere/$2|полный список]].',
'nolinkstoimage' => 'Нет страниц, ссылающихся на данный файл.',
'morelinkstoimage' => 'Просмотреть [[Special:WhatLinksHere/$1|остальные ссылки]] на этот файл.',
'linkstoimage-redirect' => '$1 (файловое перенаправление) $2',
-'duplicatesoffile' => '{{PLURAL:$1|Следующий $1 файл является дубликатом|Следующие $1 файла являются дубликатами|Следующие $1 файлов являются дубликатами}} этого файла ([[Special:FileDuplicateSearch/$2|подробности]]):',
+'duplicatesoffile' => '{{PLURAL:$1|Следующий файл является дубликатом|Следующие $1 файлов являются дубликатами|Следующие $1 файла являются дубликатами}} этого файла ([[Special:FileDuplicateSearch/$2|подробности]]):',
'sharedupload' => 'Этот файл из $1 и может использоваться в других проектах.',
'sharedupload-desc-there' => 'Этот файл из $1 и может использоваться в других проектах.
Дополнительную информацию можно найти на [$2 странице описания файла].',
# Random page
'randompage' => 'Случайная статья',
-'randompage-nopages' => 'В {{PLURAL:$2|следующем пространстве имён отсутствуют страницы|следующих пространствах имён нет страниц}}: $1.',
+'randompage-nopages' => 'В {{PLURAL:$2|1=следующем пространстве имён отсутствуют страницы|следующих пространствах имён нет страниц}}: $1.',
# Random page in category
'randomincategory' => 'Случайная страница в категории',
'statistics-views-peredit' => 'Просмотров на правку',
'statistics-users' => 'Зарегистрированные [[Special:ListUsers|участники]]',
'statistics-users-active' => 'Активные участники',
-'statistics-users-active-desc' => 'Участники, совершившие какое-либо действие за {{PLURAL:$1|последний $1 день|последние $1 дня|последние $1 дней}}',
+'statistics-users-active-desc' => 'Участники, совершившие какое-либо действие за {{PLURAL:$1|последний $1 день|последние $1 дней|последние $1 дня}}',
'statistics-mostpopular' => 'Наиболее часто просматриваемые страницы',
'pageswithprop' => 'Страницы с переопределёнными свойствами',
'fewestrevisions' => 'Страницы с наименьшим количеством версий',
# Miscellaneous special pages
-'nbytes' => '$1 {{PLURAL:$1|байÑ\82|байÑ\82а|байÑ\82}}',
-'ncategories' => '$1 {{PLURAL:$1|каÑ\82егоÑ\80иÑ\8f|каÑ\82егоÑ\80ии|каÑ\82егоÑ\80ий}}',
-'ninterwikis' => '$1 {{PLURAL:$1|инÑ\82еÑ\80вики-Ñ\81Ñ\81Ñ\8bлка|инÑ\82еÑ\80вики-Ñ\81Ñ\81Ñ\8bлки|инÑ\82еÑ\80вики-Ñ\81Ñ\81Ñ\8bлок}}',
-'nlinks' => '$1 {{PLURAL:$1|Ñ\81Ñ\81Ñ\8bлка|Ñ\81Ñ\81Ñ\8bлки|Ñ\81Ñ\81Ñ\8bлок}}',
-'nmembers' => '$1 {{PLURAL:$1|обÑ\8aекÑ\82|обÑ\8aекÑ\82а|обÑ\8aекÑ\82ов}}',
-'nmemberschanged' => '$1 → $2 объект{{PLURAL:$2||а|ов}}',
-'nrevisions' => '$1 {{PLURAL:$1|веÑ\80Ñ\81иÑ\8f|веÑ\80Ñ\81ии|веÑ\80Ñ\81ий}}',
-'nviews' => '$1 {{PLURAL:$1|пÑ\80оÑ\81моÑ\82Ñ\80|пÑ\80оÑ\81моÑ\82Ñ\80а|пÑ\80оÑ\81моÑ\82Ñ\80ов}}',
-'nimagelinks' => 'Используется на $1 {{PLURAL:$1|странице|страницах|страницах}}',
-'ntransclusions' => 'используется на $1 {{PLURAL:$1|странице|страницах|страницах}}',
+'nbytes' => '$1 {{PLURAL:$1|байÑ\82|байÑ\82ов|байÑ\82а}}',
+'ncategories' => '$1 {{PLURAL:$1|каÑ\82егоÑ\80иÑ\8f|каÑ\82егоÑ\80ий|каÑ\82егоÑ\80ии}}',
+'ninterwikis' => '$1 {{PLURAL:$1|инÑ\82еÑ\80вики-Ñ\81Ñ\81Ñ\8bлка|инÑ\82еÑ\80вики-Ñ\81Ñ\81Ñ\8bлок|инÑ\82еÑ\80вики-Ñ\81Ñ\81Ñ\8bлки}}',
+'nlinks' => '$1 {{PLURAL:$1|Ñ\81Ñ\81Ñ\8bлка|Ñ\81Ñ\81Ñ\8bлок|Ñ\81Ñ\81Ñ\8bлки}}',
+'nmembers' => '$1 {{PLURAL:$1|обÑ\8aекÑ\82|обÑ\8aекÑ\82ов|обÑ\8aекÑ\82а}}',
+'nmemberschanged' => '$1 → $2 {{PLURAL:$2|объект|объектов|объекта}}',
+'nrevisions' => '$1 {{PLURAL:$1|веÑ\80Ñ\81иÑ\8f|веÑ\80Ñ\81ий|веÑ\80Ñ\81ии}}',
+'nviews' => '$1 {{PLURAL:$1|пÑ\80оÑ\81моÑ\82Ñ\80|пÑ\80оÑ\81моÑ\82Ñ\80ов|пÑ\80оÑ\81моÑ\82Ñ\80а}}',
+'nimagelinks' => 'Используется на $1 {{PLURAL:$1|странице|страницах}}',
+'ntransclusions' => 'используется на $1 {{PLURAL:$1|странице|страницах}}',
'specialpage-empty' => 'Запрос не дал результатов.',
'lonelypages' => 'Страницы-сироты',
'lonelypagestext' => 'На следующие страницы нет ссылок с других страниц {{grammar:genitive|{{SITENAME}}}}, и они не включаются в другие страницы.',
'protectedpages' => 'Защищённые страницы',
'protectedpages-indef' => 'Только бессрочные защиты',
'protectedpages-cascade' => 'Только каскадная защита',
+'protectedpages-noredirect' => 'Скрыть перенаправления',
'protectedpagesempty' => 'В настоящий момент нет защищённых страниц с указанными параметрами',
'protectedtitles' => 'Защищённые названия',
'protectedtitlesempty' => 'В настоящий момент нет запрещённых названий с указанными параметрами.',
'listusers-editsonly' => 'Показать только тех участников, кто сделал хотя бы одну правку',
'listusers-creationsort' => 'Упорядочить по дате создания',
'listusers-desc' => 'Сортировать по убыванию',
-'usereditcount' => '$1 {{PLURAL:$1|пÑ\80авка|пÑ\80авки|пÑ\80авок}}',
+'usereditcount' => '$1 {{PLURAL:$1|пÑ\80авка|пÑ\80авок|пÑ\80авки}}',
'usercreated' => '{{GENDER:$3|зарегистрировался|зарегистрировалась}} $1 в $2',
'newpages' => 'Новые страницы',
'newpages-username' => 'Участник:',
'notargettext' => 'Вы не указали целевую страницу или участника для этого действия.',
'nopagetitle' => 'Нет такой целевой страницы',
'nopagetext' => 'Указанной целевой страницы не существует.',
-'pager-newer-n' => '$1 {{PLURAL:$1|более новая|более новые|более новых}}',
-'pager-older-n' => '$1 {{PLURAL:$1|более старая|более старые|более старых}}',
+'pager-newer-n' => '$1 более {{PLURAL:$1|новая|новых|новые}}',
+'pager-older-n' => '$1 более {{PLURAL:$1|старая|старых|старые}}',
'suppress' => 'Сокрытие',
'querypage-disabled' => 'Эта спецстраница отключена для повышения производительности.',
# Special:Categories
'categories' => 'Категории',
-'categoriespagetext' => '{{PLURAL:$1|Следующая категория содержит|Следующие категории содержат}} страницы или медиа-файлы.
+'categoriespagetext' => '{{PLURAL:$1|1=Следующая категория содержит|Следующие категории содержат}} страницы или медиа-файлы.
Здесь не показаны [[Special:UnusedCategories|неиспользуемые категории]].
См. также [[Special:WantedCategories|список требуемых категорий]].',
'categoriesfrom' => 'Показать категории, начинающиеся с:',
'linksearch-ns' => 'Пространство имён:',
'linksearch-ok' => 'Найти',
'linksearch-text' => 'Можно использовать подстановочные символы, например, <code>*.wikipedia.org</code>.
-Необходим по крайней мере домен верхнего уровня, например <code>*.org</code><br />
-Поддерживаемые {{PLURAL:$2|протокол|протоколы}}: <code>$1</code> (по умолчанию подставляется http://, если протокол явно не задан).',
+Необходимо указать по крайней мере домен верхнего уровня, например <code>*.org</code><br />
+{{PLURAL:$2|1=Поддерживаемый протокол|Поддерживаемые протоколы}}: <code>$1</code> (если протокол явно не задан, по умолчанию подставляется http://).',
'linksearch-line' => 'Ссылка на $1 из $2',
'linksearch-error' => 'Подстановочные символы могут использоваться только в начале адресов.',
# Special:ActiveUsers
'activeusers' => 'Список активных участников',
-'activeusers-intro' => 'Это список участников, совершавших какие-либо действия за {{PLURAL:$1|последний $1 день|последние $1 дня|последние $1 дней}}.',
-'activeusers-count' => '$1 {{PLURAL:$1|пÑ\80авка|пÑ\80авки|пÑ\80авок}} за {{PLURAL:$3|$3 поÑ\81ледний денÑ\8c|поÑ\81ледние $3 днÑ\8f|поÑ\81ледние $3 дней}}',
+'activeusers-intro' => 'Это список участников, совершавших какие-либо действия за {{PLURAL:$1|последний $1 день|последние $1 дней|последние $1 дня|1=последний день}}.',
+'activeusers-count' => '$1 {{PLURAL:$1|пÑ\80авка|пÑ\80авок|пÑ\80авки}} за {{PLURAL:$3|$3 поÑ\81ледний денÑ\8c|поÑ\81ледние $3 дней|поÑ\81ледние $3 днÑ\8f|1=поÑ\81ледний денÑ\8c}}',
'activeusers-from' => 'Показать участников, начиная с:',
'activeusers-hidebots' => 'Скрыть ботов',
'activeusers-hidesysops' => 'Скрыть администраторов',
'listgrouprights-members' => '(список участников)',
'listgrouprights-right-display' => '<span class="listgrouprights-granted">$1 (<code>$2</code>)</span>',
'listgrouprights-right-revoked' => '<span class="listgrouprights-revoked">$1 (<code>$2</code>)</span>',
-'listgrouprights-addgroup' => 'может добавлять в {{PLURAL:$2|группу|группы}}: $1',
-'listgrouprights-removegroup' => 'может исключать из {{PLURAL:$2|группы|групп}}: $1',
+'listgrouprights-addgroup' => 'может добавлять в {{PLURAL:$2|1=группу|группы}}: $1',
+'listgrouprights-removegroup' => 'может исключать из {{PLURAL:$2|1=группы|групп}}: $1',
'listgrouprights-addgroup-all' => 'может добавлять во все группы',
'listgrouprights-removegroup-all' => 'может исключать из всех групп',
-'listgrouprights-addgroup-self' => 'можеÑ\82 добавиÑ\82Ñ\8c {{PLURAL:$2|гÑ\80Ñ\83ппÑ\83|гÑ\80Ñ\83ппÑ\8b}} к Ñ\81воей Ñ\83Ñ\87Ñ\91Ñ\82ной запиÑ\81и: $1',
-'listgrouprights-removegroup-self' => 'может удалить {{PLURAL:$2|группу|группы}} со своей учётной записи: $1',
+'listgrouprights-addgroup-self' => 'можеÑ\82 добавлÑ\8fÑ\82Ñ\8c Ñ\81воÑ\8e Ñ\83Ñ\87Ñ\91Ñ\82нÑ\83Ñ\8e запиÑ\81Ñ\8c в {{PLURAL:$2|1=гÑ\80Ñ\83ппÑ\83|гÑ\80Ñ\83ппÑ\8b}}: $1',
+'listgrouprights-removegroup-self' => 'может удалять свою учётную запись из {{PLURAL:$2|1=группы|групп}}: $1',
'listgrouprights-addgroup-self-all' => 'Может добавлять все группы к своей учётной записи',
'listgrouprights-removegroup-self-all' => 'может удалять все группы со своей учётной записи',
'unwatchthispage' => 'Прекратить наблюдение',
'notanarticle' => 'Не статья',
'notvisiblerev' => 'Версия была удалена',
-'watchlist-details' => 'В вашем списке наблюдения $1 {{PLURAL:$1|страница|страницы|страниц}}, не считая страниц обсуждения.',
+'watchlist-details' => 'В вашем списке наблюдения $1 {{PLURAL:$1|страница|страниц|страницы}}, не считая страниц обсуждений.',
'wlheader-enotif' => 'Уведомления по эл. почте включены.',
'wlheader-showupdated' => "Страницы, изменившиеся с вашего последнего их посещения, выделены '''жирным''' шрифтом.",
'watchmethod-recent' => 'просмотр последних изменений для наблюдаемых страниц',
'watchmethod-list' => 'просмотр наблюдаемых страниц для последних изменений',
-'watchlistcontains' => 'Ваш список наблюдения содержит $1 {{PLURAL:$1|страница|страницы|страниц}}.',
+'watchlistcontains' => 'Ваш список наблюдения содержит $1 {{PLURAL:$1|страница|страниц|страницы}}.',
'iteminvalidname' => 'Проблема с элементом «$1», недопустимое название…',
-'wlnote' => "Ниже {{PLURAL:$1|показано последнее $1 изменение|показаны последние $1 изменения|показаны последние $1 изменений}} за {{PLURAL:$2|последний|последние|последние}} '''$2''' {{plural:$2|час|часа|часов}}, на момент времени $3 $4.",
+'wlnote2' => 'Ниже приведены изменения за {{PLURAL:$1|последний час|последние <strong>$1</strong> часов|последние <strong>$1</strong> часа}} на $2 $3.',
'wlshowlast' => 'Показать за последние $1 часов $2 дней $3',
'watchlist-options' => 'Настройки списка наблюдения',
'exblank' => 'страница была пуста',
'delete-confirm' => '$1 — удаление',
'delete-legend' => 'Удаление',
-'historywarning' => "'''Внимание:''' эта страница имеет историю изменений приблизительно из $1 {{PLURAL:$1|версии|версий|версий}}:",
+'historywarning' => "'''Внимание:''' эта страница имеет историю изменений приблизительно из $1 {{PLURAL:$1|версии|версий}}:",
'confirmdeletetext' => 'Вы запросили полное удаление страницы (или изображения) и всей её истории изменений. Пожалуйста, подтвердите, что вы действительно желаете это сделать, понимаете последствия своих действий, и делаете это в соответствии [[{{MediaWiki:Policy-url}}|с правилами]].',
'actioncomplete' => 'Действие выполнено',
'actionfailed' => 'Действие не выполнено',
** по запросу автора
** неработающее перенаправление',
'delete-edit-reasonlist' => 'Править список причин',
-'delete-toobig' => 'У этой страницы очень длинная история изменений, более $1 {{PLURAL:$1|версии|версий|версий}}.
-Удаление таких страниц было запрещено во избежание нарушений в работе сайта {{SITENAME}}.',
-'delete-warning-toobig' => 'У этой страницы очень длинная история изменений, более $1 {{PLURAL:$1|версии|версий|версий}}.
-Её удаление может привести к нарушению нормальной работы базы данных сайта {{SITENAME}};
+'delete-toobig' => 'У этой страницы очень длинная история изменений, более $1 {{PLURAL:$1|версии|версий}}.
+Удаление таких страниц было запрещено во избежание нарушений в работе сайта «{{SITENAME}}».',
+'delete-warning-toobig' => 'У этой страницы очень длинная история изменений, более $1 {{PLURAL:$1|версии|версий}}.
+Её удаление может привести к нарушению нормальной работы базы данных сайта «{{SITENAME}}»;
действуйте с осторожностью.',
+'deleting-backlinks-warning' => "'''Предупреждение.''' Другие страницы ссылаются или содержат страницу, которую вы собираетесь удалить.",
# Rollback
'rollback' => 'Откатить изменения',
'rollback_short' => 'Откат',
'rollbacklink' => 'откатить',
-'rollbacklinkcount' => 'оÑ\82каÑ\82иÑ\82Ñ\8c $1 {{PLURAL:$1|пÑ\80авкÑ\83|пÑ\80авки|пÑ\80авок}}',
-'rollbacklinkcount-morethan' => 'оÑ\82каÑ\82иÑ\82Ñ\8c болÑ\8cÑ\88е, Ñ\87ем $1 {{PLURAL:$1|пÑ\80авкÑ\83|пÑ\80авки|пÑ\80авок}}',
+'rollbacklinkcount' => 'оÑ\82каÑ\82иÑ\82Ñ\8c $1 {{PLURAL:$1|пÑ\80авкÑ\83|пÑ\80авок|пÑ\80авки}}',
+'rollbacklinkcount-morethan' => 'оÑ\82каÑ\82иÑ\82Ñ\8c болÑ\8cÑ\88е, Ñ\87ем $1 {{PLURAL:$1|пÑ\80авкÑ\83|пÑ\80авок|пÑ\80авки}}',
'rollbackfailed' => 'Ошибка при совершении отката',
'cantrollback' => 'Невозможно откатить изменения. Последний, кто вносил изменения, является единственным автором этой страницы.',
'alreadyrolled' => 'Невозможно откатить последние изменения страницы «[[:$1]]», совершённые [[User:$2|$2]] ([[User talk:$2|обсуждение]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]),
'protect-locked-dblock' => "Уровень защиты не может быть изменён, так как основная база данных временно заблокирована.
Текущие установки для страницы '''$1''':",
'protect-locked-access' => "У вашей учётной записи недостаточно прав для изменения уровня защиты страницы. Текущие установки для страницы '''$1''':",
-'protect-cascadeon' => 'Эта страница защищена в связи с тем, что она включена {{PLURAL:$1|в указанную ниже страницу, на которую|в нижеследующие страницы, на которые}} установлена каскадная защита. Вы можете изменить уровень защиты этой страницы, но это не повлияет на каскадную защиту.',
+'protect-cascadeon' => 'Эта страница защищена в связи с тем, что она включена {{PLURAL:$1|1=в указанную ниже страницу, для которой|в нижеследующие страницы, для которых}} установлена каскадная защита. Вы можете изменить уровень защиты этой страницы, но это не повлияет на каскадную защиту.',
'protect-default' => 'Без защиты',
'protect-fallback' => 'Разрешено только участникам с правами «$1»',
'protect-level-autoconfirmed' => 'Разрешено только автоподтверждённым участникам',
'undeletepage' => 'Просмотр и восстановление удалённых страниц',
'undeletepagetitle' => "'''Ниже перечислены удалённые версии страницы [[:$1]]'''.",
'viewdeletedpage' => 'Просмотр удалённых страниц',
-'undeletepagetext' => '{{PLURAL:$1|Следующая $1 страница была удалена|Следующие $1 страницы были удалены|Следующие $1 страниц были удалены}}, однако {{PLURAL:$1|она всё ещё находится в архиве и поэтому может быть восстановлена|они всё ещё находятся в архиве и поэтому могут быть восстановлены}}.
+'undeletepagetext' => '{{PLURAL:$1|Следующая $1 страница была удалена|Следующие $1 страниц были удалены|Следующие $1 страницы были удалены|1=Следующая страница была удалена}}, однако {{PLURAL:$1|1=она всё ещё находится в архиве и поэтому может быть восстановлена|они всё ещё находятся в архиве и поэтому могут быть восстановлены}}.
Архив может периодически очищаться.',
'undelete-fieldset-title' => 'Восстановить версии',
'undeleteextrahelp' => "Для полного восстановления истории страницы оставьте все отметки пустыми и нажмите '''«{{int:undeletebtn}}»'''.
Для частичного восстановления отметьте те версии страницы, которые нужно восстановить, и нажмите '''«{{int:undeletebtn}}»'''.",
-'undeleterevisions' => 'в архиве $1 {{PLURAL:$1|версия|версии|версий}}',
+'undeleterevisions' => '$1 {{PLURAL:$1|версия|версий|версии}} {{PLURAL:$1|помещена|помещены}} в архив',
'undeletehistory' => 'При восстановлении страницы восстанавливается и её история правок.
Если после удаления была создана новая страница с тем же названием, то восстановленные версии появятся в истории правок перед новыми версиями.',
'undeleterevdel' => 'Восстановление не будет произведено, если оно приведёт к частичному удалению последней версии страницы или файла.
'undeleteviewlink' => 'просмотреть',
'undeleteinvert' => 'Обратить выделение',
'undeletecomment' => 'Причина:',
-'undeletedrevisions' => '$1 {{PLURAL:$1|изменение|изменения|изменений}} восстановлено',
-'undeletedrevisions-files' => '$1 {{PLURAL:$1|версия|версии|версий}} и $2 {{PLURAL:$2|файл|файла|файлов}} восстановлено',
-'undeletedfiles' => '$1 {{PLURAL:$1|файл восстановлен|файла восстановлено|файлов восстановлено}}',
+'undeletedrevisions' => '{{PLURAL:$1|восстановлено|восстановлены}} $1 {{PLURAL:$1|изменение|изменений|изменения}}',
+'undeletedrevisions-files' => 'восстановлены $1 {{PLURAL:$1|версия|версий|версии}} и $2 {{PLURAL:$2|файл|файлов|файла}}',
+'undeletedfiles' => '{{PLURAL:$1|восстановлен|восстановлены}} $1 {{PLURAL:$1|файл|файлов|файла}}',
'cannotundelete' => 'Ошибка восстановления:
$1',
'undeletedpage' => "'''Страница «$1» была восстановлена.'''
'isredirect' => 'страница-перенаправление',
'istemplate' => 'включение',
'isimage' => 'файловая ссылка',
-'whatlinkshere-prev' => '{{PLURAL:$1|предыдущая|предыдущие}} $1',
-'whatlinkshere-next' => '{{PLURAL:$1|следующая|следующие}} $1',
+'whatlinkshere-prev' => '{{PLURAL:$1|1=предыдущая|предыдущие}} $1',
+'whatlinkshere-next' => '{{PLURAL:$1|1=следующая|следующие}} $1',
'whatlinkshere-links' => '← ссылки',
'whatlinkshere-hideredirs' => '$1 перенаправления',
'whatlinkshere-hidetrans' => '$1 включения',
См. [[Special:BlockList|список заблокированных IP-адресов]] для просмотра блокировок.',
'ipb-blockingself' => 'Вы пытаетесь заблокировать себя самого! Вы уверены, что вы хотите это сделать?',
'ipb-confirmhideuser' => 'Вы намереваетесь заблокировать участника и скрыть его имя. Оно не будет отображаться в списках и журналах. Вы уверены, что хотите это сделать?',
+'ipb-confirmaction' => 'Если вы уверены, что вы действительно хотите сделать это, пожалуйста, поставьте ниже отметку «{{int:ipb-confirm}}».',
'ipb-edit-dropdown' => 'Править список причин',
'ipb-unblock-addr' => 'Разблокировать $1',
'ipb-unblock' => 'Разблокировать участника или IP-адрес',
'blocklist-reason' => 'Причина',
'ipblocklist-submit' => 'Найти',
'ipblocklist-localblock' => 'Локальная блокировка',
-'ipblocklist-otherblocks' => '{{PLURAL:$1|Другая блокировка|Другие блокировки}}',
+'ipblocklist-otherblocks' => '{{PLURAL:$1|1=Другая блокировка|Другие блокировки}}',
'infiniteblock' => 'бессрочно',
'expiringblock' => 'завершится $1 в $2',
'anononlyblock' => 'только анонимов',
'range_block_disabled' => 'Администраторам запрещено блокировать диапазоны.',
'ipb_expiry_invalid' => 'Недопустимый период действия.',
'ipb_expiry_temp' => 'Блокировки с сокрытием имени участника должны быть бессрочными.',
-'ipb_hide_invalid' => 'Ð\9dевозможно Ñ\81кÑ\80Ñ\8bÑ\82Ñ\8c Ñ\83Ñ\87Ñ\91Ñ\82нÑ\83Ñ\8e запиÑ\81Ñ\8c, возможно, Ñ\81 неÑ\91 Ñ\81делано Ñ\81лиÑ\88ком много пÑ\80авок.',
+'ipb_hide_invalid' => 'Ð\9dевозможно Ñ\81кÑ\80Ñ\8bÑ\82Ñ\8c Ñ\8dÑ\82Ñ\83 Ñ\83Ñ\87Ñ\91Ñ\82нÑ\83Ñ\8e запиÑ\81Ñ\8c, Ñ\81 неÑ\91 Ñ\81делано более {{PLURAL:$1|одной пÑ\80авки|$1 пÑ\80авок}}.',
'ipb_already_blocked' => '«$1» уже заблокирован.',
'ipb-needreblock' => '$1 уже {{GENDER:$1|заблокирован|заблокирована}}. Хотите изменить параметры блокировки?',
-'ipb-otherblocks-header' => '{{PLURAL:$1|Другая блокировка|Другие блокировки}}',
+'ipb-otherblocks-header' => '{{PLURAL:$1|1=Другая блокировка|Другие блокировки}}',
'unblock-hideuser' => 'Вы не можете разблокировать этого участника, так как его имя было скрыто.',
'ipb_cant_unblock' => 'Ошибка: не найдена блокировка $1. Возможно, она уже была снята.',
'ipb_blocked_as_range' => 'Ошибка: IP-адрес $1 был заблокирован не напрямую и не может быть разблокирован. Однако, он принадлежит к заблокированному диапазону $2, который можно разблокировать.',
'movepage-page-exists' => 'Страница $1 уже существует и не может быть автоматически перезаписана.',
'movepage-page-moved' => 'Страница $1 была переименована в $2.',
'movepage-page-unmoved' => 'Страница $1 не может быть переименована в $2.',
-'movepage-max-pages' => '$1 {{PLURAL:$1|страница была переименована|страницы было переименовано|страниц было переименовано}} — это максимум, больше страниц нельзя переименовать автоматически.',
+'movepage-max-pages' => '{{PLURAL:$1|Была переименована|Были переименованы|Было переименовано}} $1 {{PLURAL:$1|страница|страниц|страницы}} — это максимум; большее число страниц автоматически переименовать нельзя.',
'movelogpage' => 'Журнал переименований',
'movelogpagetext' => 'Ниже представлен список переименованных страниц.',
-'movesubpage' => '{{PLURAL:$1|Подстраница|Подстраницы}}',
-'movesubpagetext' => 'У этой страницы $1 {{PLURAL:$1|подстраница|подстраницы|подстраниц}}.',
+'movesubpage' => '{{PLURAL:$1|1=Подстраница|Подстраницы}}',
+'movesubpagetext' => 'У этой страницы $1 {{PLURAL:$1|подстраница|подстраниц|подстраницы}}.',
'movenosubpage' => 'У этой страницы нет подстраниц.',
'movereason' => 'Причина:',
'revertmove' => 'возврат',
'allmessages-prefix' => 'Фильтр по префиксу:',
'allmessages-language' => 'Язык:',
'allmessages-filter-submit' => 'Перейти',
+'allmessages-filter-translate' => 'Перевести',
# Thumbnails
'thumbnail-more' => 'Увеличить',
'import-comment' => 'Примечание:',
'importtext' => 'Пожалуйста, экспортируйте страницу из исходной вики, используя [[Special:Export|соответствующий инструмент]]. Сохраните файл на диск, а затем загрузите его сюда.',
'importstart' => 'Импортирование страниц…',
-'import-revision-count' => '$1 {{PLURAL:$1|веÑ\80Ñ\81иÑ\8f|веÑ\80Ñ\81ии|веÑ\80Ñ\81ий}}',
+'import-revision-count' => '$1 {{PLURAL:$1|веÑ\80Ñ\81иÑ\8f|веÑ\80Ñ\81ий|веÑ\80Ñ\81ии}}',
'importnopages' => 'Нет страниц для импортирования.',
-'imported-log-entries' => '{{PLURAL:$1|Ð\98мпоÑ\80Ñ\82иÑ\80ована $1 запиÑ\81Ñ\8c|Ð\98мпоÑ\80Ñ\82иÑ\80овано $1 запиÑ\81и|Ð\98мпоÑ\80Ñ\82иÑ\80овано $1 запиÑ\81ей}} журнала.',
+'imported-log-entries' => '{{PLURAL:$1|Ð\98мпоÑ\80Ñ\82иÑ\80ована $1 запиÑ\81Ñ\8c|Ð\98мпоÑ\80Ñ\82иÑ\80овано $1 запиÑ\81ей|Ð\98мпоÑ\80Ñ\82иÑ\80ованÑ\8b $1 запиÑ\81и}} журнала.',
'importfailed' => 'Не удалось импортировать: $1',
'importunknownsource' => 'Неизвестный тип импортируемой страницы',
'importcantopen' => 'Невозможно открыть импортируемый файл',
'importuploaderrortemp' => 'Не удалось загрузить или импортировать файл. Временная папка отсутствует.',
'import-parse-failure' => 'Ошибка разбора XML при импорте',
'import-noarticle' => 'Нет страницы для импортирования!',
-'import-nonewrevisions' => 'Ð\92Ñ\81е веÑ\80Ñ\81ии бÑ\8bли Ñ\80анее импоÑ\80Ñ\82иÑ\80ованÑ\8b.',
+'import-nonewrevisions' => 'Ð\9dикакие пÑ\80авки не бÑ\8bли импоÑ\80Ñ\82иÑ\80ованÑ\8b (вÑ\81е Ñ\83же либо бÑ\8bли обÑ\80абоÑ\82анÑ\8b, либо пÑ\80опÑ\83Ñ\89енÑ\8b из-за оÑ\88ибок).',
'xml-error-string' => '$1 в строке $2, позиции $3 (байт $4): $5',
'import-upload' => 'Загрузить XML-данные',
'import-token-mismatch' => 'Потеряны данные сеанса. Пожалуйста, попробуйте ещё раз.',
'import-error-special' => 'Страница «$1» не была импортирована, так как она относится к особому пространству имён, не позволяющему создавать страницы.',
'import-error-invalid' => 'Страница «$1» не была импортирована из-за недопустимого названия.',
'import-error-unserialize' => 'Версия $2 страницы «$1» не может быть структурирована (десериализована). Получено сообщение, что в этой версии использована модель содержимого $3, сериализуемая в формате $4.',
-'import-options-wrong' => '{{PLURAL:$2|Неверная опция|Неверные опции}}: <nowiki>$1</nowiki>',
+'import-error-bad-location' => 'Правка $2, использующая модель содержимого $3, не может быть сохранена в «$1» этой вики, потому что эта модель не поддерживается на данной странице.',
+'import-options-wrong' => '{{PLURAL:$2|1=Неверная опция|Неверные опции}}: <nowiki>$1</nowiki>',
'import-rootpage-invalid' => 'Указанное название корневой страницы некорректно.',
'import-rootpage-nosubpage' => 'В пространстве имён указанной корневой страницы «$1» подстраницы запрещены.',
'importlogpage' => 'Журнал импорта',
'importlogpagetext' => 'Импортирование администраторами страниц с историей изменений из других вики.',
'import-logentry-upload' => '«[[$1]]» — импорт из файла',
-'import-logentry-upload-detail' => '$1 {{PLURAL:$1|веÑ\80Ñ\81иÑ\8f|веÑ\80Ñ\81ии|веÑ\80Ñ\81ий}}',
+'import-logentry-upload-detail' => '$1 {{PLURAL:$1|веÑ\80Ñ\81иÑ\8f|веÑ\80Ñ\81ий|веÑ\80Ñ\81ии}}',
'import-logentry-interwiki' => '«$1» — межвики импорт',
-'import-logentry-interwiki-detail' => '$1 {{PLURAL:$1|веÑ\80Ñ\81иÑ\8f|веÑ\80Ñ\81ии|веÑ\80Ñ\81ий}} из $2',
+'import-logentry-interwiki-detail' => '$1 {{PLURAL:$1|веÑ\80Ñ\81иÑ\8f|веÑ\80Ñ\81ий|веÑ\80Ñ\81ии}} из $2',
# JavaScriptTest
'javascripttest' => 'Проверка JavaScript',
'tooltip-pt-watchlist' => 'Список страниц, изменения в которых вы отслеживаете',
'tooltip-pt-mycontris' => 'Список ваших правок',
'tooltip-pt-login' => 'Здесь можно зарегистрироваться в системе, но это необязательно.',
-'tooltip-pt-anonlogin' => 'Здесь можно зарегистрироваться в системе, но это необязательно.',
'tooltip-pt-logout' => 'Завершить сеанс работы',
'tooltip-ca-talk' => 'Обсуждение основной страницы',
'tooltip-ca-edit' => 'Вы можете редактировать эту страницу. Перед тем, как записать свои изменения, воспользуйтесь, пожалуйста, кнопкой предварительного просмотра.',
The wiki server can't provide data in a format your client can read.",
# Attribution
-'anonymous' => '{{PLURAL:$1|Анонимный участник|Анонимные участники}} {{grammar:genitive|{{SITENAME}}}}',
+'anonymous' => '{{PLURAL:$1|1=Анонимный участник|Анонимные участники}} {{grammar:genitive|{{SITENAME}}}}',
'siteuser' => '{{GENDER:$2|участник|участница}} {{grammar:genitive|{{SITENAME}}}} $1',
'anonuser' => 'анонимный участник {{grammar:genitive|{{SITENAME}}}} $1',
'lastmodifiedatby' => 'Эта страница последний раз была изменена $1 в $2, автор изменения — $3.',
'othercontribs' => 'В создании приняли участие: $1.',
'others' => 'другие',
-'siteusers' => '{{PLURAL:$2|участник|участники}} {{grammar:genitive|{{SITENAME}}}} $1',
-'anonusers' => '{{PLURAL:$2|анонимный участник|анонимные участники}} {{grammar:genitive|{{SITENAME}}}} $1',
+'siteusers' => '{{PLURAL:$2|1=участник|участники}} {{grammar:genitive|{{SITENAME}}}} $1',
+'anonusers' => '{{PLURAL:$2|1=анонимный участник|анонимные участники}} {{grammar:genitive|{{SITENAME}}}} $1',
'creditspage' => 'Благодарности',
'nocredits' => 'Нет списка участников для этой статьи',
'pageinfo-redirects-name' => 'Количество перенаправлений на эту страницу',
'pageinfo-redirects-value' => '$1',
'pageinfo-subpages-name' => 'Подстраницы данной страницы',
-'pageinfo-subpages-value' => '$1 ($2 {{PLURAL:$2|перенаправление|перенаправления|перенаправлений}}; $3 {{PLURAL:$3|обычная|обычные|обычных}})',
+'pageinfo-subpages-value' => '$1 ($2 {{PLURAL:$2|перенаправление|перенаправлений|перенаправления}}; $3 {{PLURAL:$3|обычная|обычных|обычные}})',
'pageinfo-firstuser' => 'Создатель страницы',
'pageinfo-firsttime' => 'Дата создания страницы',
'pageinfo-lastuser' => 'Последний редактор',
'pageinfo-authors' => 'Общее число различных авторов',
'pageinfo-recent-edits' => 'Правок за последнее время (в течение $1)',
'pageinfo-recent-authors' => 'Уникальных авторов за последнее время',
-'pageinfo-magic-words' => '{{PLURAL:$1|Магическое слово|Магические слова}} ($1)',
-'pageinfo-hidden-categories' => '{{PLURAL:$1|Скрытая категория|Скрытых категорий}} ($1)',
-'pageinfo-templates' => '{{PLURAL:$1|Шаблон|Шаблонов}} ($1)',
-'pageinfo-transclusions' => '{{PLURAL:$1|Включаемые страницы|Включаемых страниц}} ($1)',
+'pageinfo-magic-words' => '{{PLURAL:$1|1=Волшебное слово|Волшебные слова}} ($1)',
+'pageinfo-hidden-categories' => '{{PLURAL:$1|1=Скрытая категория|Скрытых категорий}} ($1)',
+'pageinfo-templates' => '{{PLURAL:$1|1=Шаблон|Шаблонов}} ($1)',
+'pageinfo-transclusions' => '{{PLURAL:$1|1=Включаемая страница|Включаемых страниц}} ($1)',
'pageinfo-toolboxlink' => 'Сведения о странице',
'pageinfo-redirectsto' => 'Перенаправление',
'pageinfo-redirectsto-info' => 'сведения',
'imagemaxsize' => "Ограничение на размер изображения:<br />''(для страницы описания файла)''",
'thumbsize' => 'Размер уменьшенной версии изображения:',
'widthheight' => '$1 × $2',
-'widthheightpage' => '$1 × $2, $3 {{PLURAL:$3|страница|страницы|страниц}}',
+'widthheightpage' => '$1 × $2, $3 {{PLURAL:$3|страница|страниц|страницы}}',
'file-info' => 'размер файла: $1, MIME-тип: $2',
-'file-info-size' => '$1 × $2 {{PLURAL:$2|пиксель|пикселя|пикселей}}, размер файла: $3, MIME-тип: $4',
-'file-info-size-pages' => '$1 × $2 пикселей, размер файла: $3, MIME-тип: $4, $5 {{PLURAL:$5|страница|страницы|страниц}}',
+'file-info-size' => '$1 × $2 {{PLURAL:$2|пиксель|пикселей|пикселя}}, размер файла: $3, MIME-тип: $4',
+'file-info-size-pages' => '$1 × $2 пикселей, размер файла: $3, MIME-тип: $4, $5 {{PLURAL:$5|страница|страниц|страницы}}',
'file-nohires' => 'Нет версии с бо́льшим разрешением.',
-'svg-long-desc' => 'SVG-файл, номинально $1 × $2 {{PLURAL:$2|пиксель|пикселя|пикселей}}, размер файла: $3',
-'svg-long-desc-animated' => 'Анимированный SVG-файл, номинально $1 × $2 {{PLURAL:$2|пиксель|пикселя|пикселей}}, размер файла: $3',
+'svg-long-desc' => 'SVG-файл, номинально $1 × $2 {{PLURAL:$2|пиксель|пикселей|пикселя}}, размер файла: $3',
+'svg-long-desc-animated' => 'Анимированный SVG-файл, номинально $1 × $2 {{PLURAL:$2|пиксель|пикселей|пикселя}}, размер файла: $3',
'svg-long-error' => 'неправильный SVG-файл: $1',
'show-big-image' => 'Исходный файл',
'show-big-image-preview' => 'Размер при предпросмотре: $1.',
-'show-big-image-other' => '{{PLURAL:$2|Другое разрешение|Другие разрешения}}: $1.',
+'show-big-image-other' => '{{PLURAL:$2|1=Другое разрешение|Другие разрешения}}: $1.',
'show-big-image-size' => '$1 × $2 пикселей',
'file-info-gif-looped' => 'закольцованный',
-'file-info-gif-frames' => '$1 {{PLURAL:$1|Ñ\84Ñ\80ейм|Ñ\84Ñ\80ейма|Ñ\84Ñ\80еймов}}',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|Ñ\84Ñ\80ейм|Ñ\84Ñ\80еймов|Ñ\84Ñ\80ейма}}',
'file-info-png-looped' => 'закольцованный',
-'file-info-png-repeat' => 'проигрывается $1 {{PLURAL:$1|раз|раза|раз}}',
-'file-info-png-frames' => '$1 {{PLURAL:$1|кадÑ\80|кадÑ\80а|кадÑ\80ов}}',
+'file-info-png-repeat' => 'проигрывается $1 {{PLURAL:$1|раз|раз|раза}}',
+'file-info-png-frames' => '$1 {{PLURAL:$1|кадÑ\80|кадÑ\80ов|кадÑ\80а}}',
'file-no-thumb-animation' => "'''Примечание. По техническим причинам миниатюры этого файла не будет анимироваться.'''",
'file-no-thumb-animation-gif' => "'''Примечание. По техническим причинам миниатюры подобных GIF-изображений высокого разрешения не анимируются.'''",
# Special:NewFiles
'newimages' => 'Галерея новых файлов',
-'imagelisttext' => "Ниже представлен список из '''$1''' {{PLURAL:$1|файла|файлов|файлов}}, отсортированных $2.",
+'imagelisttext' => "Ниже представлен список из '''$1''' {{PLURAL:$1|файла|файлов}}, отсортированных $2.",
'newimages-summary' => 'На этой служебной странице показаны недавно загруженные файлы.',
'newimages-legend' => 'Фильтр',
'newimages-label' => 'Имя файла (или его часть):',
'minutes-abbrev' => '$1 м',
'hours-abbrev' => '$1 ч',
'days-abbrev' => '$1 д',
-'seconds' => '{{PLURAL:$1|$1 секунда|$1 секунды|$1 секунд}}',
-'minutes' => '{{PLURAL:$1|$1 минута|$1 минуты|$1 минут}}',
-'hours' => '{{PLURAL:$1|$1 Ñ\87аÑ\81|$1 Ñ\87аÑ\81а|$1 Ñ\87аÑ\81ов}}',
-'days' => '{{PLURAL:$1|$1 день|$1 дня|$1 дней}}',
-'weeks' => '{{PLURAL:$1|$1 неделя|$1 недели|$1 недель}}',
-'months' => '{{PLURAL:$1|$1 меÑ\81Ñ\8fÑ\86|$1 меÑ\81Ñ\8fÑ\86а|$1 меÑ\81Ñ\8fÑ\86ев}}',
-'years' => '{{PLURAL:$1|$1 год|$1 года|$1 леÑ\82}}',
+'seconds' => '{{PLURAL:$1|$1 секунда|$1 секунд|$1 секунды}}',
+'minutes' => '{{PLURAL:$1|$1 минута|$1 минут|$1 минуты}}',
+'hours' => '{{PLURAL:$1|$1 Ñ\87аÑ\81|$1 Ñ\87аÑ\81ов|$1 Ñ\87аÑ\81а}}',
+'days' => '{{PLURAL:$1|$1 день|$1 дней|$1 дня}}',
+'weeks' => '{{PLURAL:$1|$1 неделя|$1 недель|$1 недели}}',
+'months' => '{{PLURAL:$1|$1 меÑ\81Ñ\8fÑ\86|$1 меÑ\81Ñ\8fÑ\86ев|$1 меÑ\81Ñ\8fÑ\86а}}',
+'years' => '{{PLURAL:$1|$1 год|$1 леÑ\82|$1 года}}',
'ago' => '$1 назад',
'just-now' => 'только что',
# Human-readable timestamps
-'hours-ago' => '$1 {{PLURAL:$1|Ñ\87аÑ\81|Ñ\87аÑ\81а|Ñ\87аÑ\81ов}} назад',
-'minutes-ago' => '$1 {{PLURAL:$1|минуту|минуты|минут}} назад',
-'seconds-ago' => '$1 {{PLURAL:$1|секунду|секунды|секунд}} назад',
+'hours-ago' => '$1 {{PLURAL:$1|Ñ\87аÑ\81|Ñ\87аÑ\81ов|Ñ\87аÑ\81а}} назад',
+'minutes-ago' => '$1 {{PLURAL:$1|минуту|минут|минуты}} назад',
+'seconds-ago' => '$1 {{PLURAL:$1|секунду|секунд|секунды}} назад',
'monday-at' => 'в понедельник в $1',
'tuesday-at' => 'во вторник в $1',
'wednesday-at' => 'в среду в $1',
'exif-exposureprogram-7' => 'Портретный режим (для снимков на близком расстоянии, с фоном не в фокусе)',
'exif-exposureprogram-8' => 'Пейзажный режим (для пейзажных снимков, с фоном в фокусе)',
-'exif-subjectdistance-value' => '$1 {{PLURAL:$1|меÑ\82Ñ\80|меÑ\82Ñ\80а|меÑ\82Ñ\80ов}}',
+'exif-subjectdistance-value' => '$1 {{PLURAL:$1|меÑ\82Ñ\80|меÑ\82Ñ\80ов|меÑ\82Ñ\80а}}',
'exif-meteringmode-0' => 'Неизвестно',
'exif-meteringmode-1' => 'Средний',
'exif-gpslongitude-w' => 'западной долготы',
# Pseudotags used for GPSAltitudeRef
-'exif-gpsaltitude-above-sealevel' => '$1 {{PLURAL:$1|меÑ\82Ñ\80|меÑ\82Ñ\80а|меÑ\82Ñ\80ов}} над уровнем моря',
-'exif-gpsaltitude-below-sealevel' => '$1 {{PLURAL:$1|меÑ\82Ñ\80|меÑ\82Ñ\80а|меÑ\82Ñ\80ов}} ниже уровня моря',
+'exif-gpsaltitude-above-sealevel' => '$1 {{PLURAL:$1|меÑ\82Ñ\80|меÑ\82Ñ\80ов|меÑ\82Ñ\80а}} над уровнем моря',
+'exif-gpsaltitude-below-sealevel' => '$1 {{PLURAL:$1|меÑ\82Ñ\80|меÑ\82Ñ\80ов|меÑ\82Ñ\80а}} ниже уровня моря',
'exif-gpsstatus-a' => 'Измерение не закончено',
'exif-gpsstatus-v' => 'Готов к передаче данных',
# Language selector for translatable SVGs
'img-lang-default' => '(язык по умолчанию)',
-'img-lang-info' => 'Преобразовать это изображение на $1 $2.',
-'img-lang-go' => 'Перейти',
+'img-lang-info' => 'Показать это изображение на языке $1 $2',
+'img-lang-go' => 'Применить',
# Table pager
'ascending_abbrev' => 'возр',
'livepreview-error' => 'Не удалось установить соединение: $1 «$2». Попробуйте воспользоваться обычным предпросмотром.',
# Friendlier slave lag warnings
-'lag-warn-normal' => 'Изменения, сделанные менее чем $1 {{PLURAL:$1|секунду|секунды|секунд}} назад, могут быть не показаны в этом списке.',
-'lag-warn-high' => 'Из-за большого отставания в синхронизации серверов баз данных изменения, сделанные менее чем $1 {{PLURAL:$1|секунду|секунды|секунд}} назад, могут быть не показаны в этом списке.',
+'lag-warn-normal' => 'Изменения, сделанные менее {{PLURAL:$1|$1 секунды|$1 секунд|1=секунды}} назад, могут не отображаться в этом списке.',
+'lag-warn-high' => 'Из-за большого отставания в синхронизации серверов баз данных изменения, сделанные менее {{PLURAL:$1|$1 секунды|$1 секунд|1=секунды}} назад, могут не отображаться в этом списке.',
# Watchlist editor
-'watchlistedit-numitems' => 'Ð\92аÑ\88 Ñ\81пиÑ\81ок наблÑ\8eдениÑ\8f Ñ\81одеÑ\80жиÑ\82 $1 {{PLURAL:$1|запиÑ\81Ñ\8c|запиÑ\81и|запиÑ\81ей}}, не считая страниц обсуждений.',
+'watchlistedit-numitems' => 'Ð\92аÑ\88 Ñ\81пиÑ\81ок наблÑ\8eдениÑ\8f Ñ\81одеÑ\80жиÑ\82 $1 {{PLURAL:$1|запиÑ\81Ñ\8c|запиÑ\81ей|запиÑ\81и}}, не считая страниц обсуждений.',
'watchlistedit-noitems' => 'Ваш список наблюдения не содержит записей.',
'watchlistedit-normal-title' => 'Изменение списка наблюдения',
'watchlistedit-normal-legend' => 'Удаление записей из списка наблюдения',
Для удаления записей отметьте соответствующие позиции и нажмите кнопку «{{int:Watchlistedit-normal-submit}}».
Вы также можете [[Special:EditWatchlist/raw|править список как текст]].',
'watchlistedit-normal-submit' => 'Удалить записи',
-'watchlistedit-normal-done' => 'Ð\98з ваÑ\88его Ñ\81пиÑ\81ка наблÑ\8eдениÑ\8f {{PLURAL:$1|бÑ\8bла Ñ\83далена|бÑ\8bли Ñ\83даленÑ\8b|бÑ\8bло Ñ\83далено}} $1 {{PLURAL:$1|запиÑ\81Ñ\8c|запиÑ\81и|запиÑ\81ей}}:',
+'watchlistedit-normal-done' => 'Ð\98з ваÑ\88его Ñ\81пиÑ\81ка наблÑ\8eдениÑ\8f {{PLURAL:$1|бÑ\8bла Ñ\83далена|бÑ\8bло Ñ\83далено|бÑ\8bли Ñ\83даленÑ\8b}} $1 {{PLURAL:$1|запиÑ\81Ñ\8c|запиÑ\81ей|запиÑ\81и}}:',
'watchlistedit-raw-title' => 'Редактирование списка наблюдения как текста',
'watchlistedit-raw-legend' => 'Редактирование списка наблюдения',
'watchlistedit-raw-explain' => 'Ниже перечислены страницы, находящиеся в вашем списке наблюдения. Вы можете изменять этот список, добавляя и удаляя из него строки с названиями, по одному названию на строке.
'watchlistedit-raw-titles' => 'Записи:',
'watchlistedit-raw-submit' => 'Сохранить список',
'watchlistedit-raw-done' => 'Ваш список наблюдения сохранён.',
-'watchlistedit-raw-added' => '{{PLURAL:$1|Ð\91Ñ\8bла добавлена|Ð\91Ñ\8bли добавленÑ\8b|Ð\91Ñ\8bло добавлено}} $1 {{PLURAL:$1|запиÑ\81Ñ\8c|запиÑ\81и|запиÑ\81ей}}:',
-'watchlistedit-raw-removed' => '{{PLURAL:$1|Ð\91Ñ\8bла Ñ\83далена|Ð\91Ñ\8bли Ñ\83даленÑ\8b|Ð\91Ñ\8bло Ñ\83далено}} $1 {{PLURAL:$1|запиÑ\81Ñ\8c|запиÑ\81и|запиÑ\81ей}}:',
+'watchlistedit-raw-added' => '{{PLURAL:$1|Ð\91Ñ\8bла добавлена|Ð\91Ñ\8bло добавлено|Ð\91Ñ\8bли добавленÑ\8b}} $1 {{PLURAL:$1|запиÑ\81Ñ\8c|запиÑ\81ей|запиÑ\81и}}:',
+'watchlistedit-raw-removed' => '{{PLURAL:$1|Ð\91Ñ\8bла Ñ\83далена|Ð\91Ñ\8bло Ñ\83далено|Ð\91Ñ\8bли Ñ\83даленÑ\8b}} $1 {{PLURAL:$1|запиÑ\81Ñ\8c|запиÑ\81ей|запиÑ\81и}}:',
# Watchlist editing tools
'watchlisttools-view' => 'Изменения на страницах из списка',
'version-hook-name' => 'Имя перехватчика',
'version-hook-subscribedby' => 'Подписан на',
'version-version' => '(Версия $1)',
-'version-license' => 'Лицензия',
+'version-license' => 'Лицензия MediaWiki',
+'version-ext-license' => 'Лицензия',
+'version-ext-colheader-name' => 'Расширение',
+'version-ext-colheader-version' => 'Версия',
+'version-ext-colheader-license' => 'Лицензия',
+'version-ext-colheader-description' => 'Описание',
+'version-ext-colheader-credits' => 'Авторы',
+'version-license-title' => 'Лицензия для $1',
+'version-license-not-found' => 'Для этого расширения нет подробных сведений о лицензии.',
+'version-credits-title' => 'Список авторов для $1',
+'version-credits-not-found' => 'Для этого расширения нет подробных сведений об авторах.',
'version-poweredby-credits' => "Эта вики работает на движке '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
'version-poweredby-others' => 'другие',
'version-poweredby-translators' => 'переводчики translatewiki.net',
# Special:Redirect
'redirect' => 'Перенаправление с файла, участника, страницы или идентификатора версии',
'redirect-legend' => 'Перенаправление на файл или страницу',
-'redirect-summary' => 'Эта специальная страница перенаправляет на файл (с имени файла), страницу (с идентификатора версии) или страницу участника (с числового идентификатора участника).
-Использование: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]] или [[{{#Special:Redirect}}/user/101]].',
+'redirect-summary' => 'Эта служебная страница перенаправляет на файл (с имени файла), страницу (с идентификатора версии или страницы) или страницу участника (с числового идентификатора участника). Использование: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]] или [[{{#Special:Redirect}}/user/101]].',
'redirect-submit' => 'Перейти',
'redirect-lookup' => 'Поиск:',
'redirect-value' => 'Значение:',
'redirect-user' => 'Идентификатор участника',
+'redirect-page' => 'Идентификатор страницы',
'redirect-revision' => 'Версия страницы',
'redirect-file' => 'Название файла',
'redirect-not-exists' => 'Значение не найдено',
'fileduplicatesearch-legend' => 'Поиск дубликатов',
'fileduplicatesearch-filename' => 'Имя файла:',
'fileduplicatesearch-submit' => 'Найти',
-'fileduplicatesearch-info' => '$1 × $2 {{PLURAL:$2|пиксель|пикселя|пикселей}}<br />Размер файла: $3<br />MIME-тип: $4',
+'fileduplicatesearch-info' => '$1 × $2 {{PLURAL:$2|пиксель|пикселей|пикселя}}<br />Размер файла: $3<br />MIME-тип: $4',
'fileduplicatesearch-result-1' => 'Файл «$1» не имеет идентичных дубликатов.',
-'fileduplicatesearch-result-n' => 'Файл «$1» имееÑ\82 $2 {{PLURAL:$2|иденÑ\82иÑ\87нÑ\8bй дÑ\83бликаÑ\82|иденÑ\82иÑ\87нÑ\8bÑ\85 дÑ\83бликаÑ\82а|иденÑ\82иÑ\87нÑ\8bÑ\85 дÑ\83бликаÑ\82ов}}.',
+'fileduplicatesearch-result-n' => 'Файл «$1» имееÑ\82 $2 {{PLURAL:$2|иденÑ\82иÑ\87нÑ\8bй дÑ\83бликаÑ\82|иденÑ\82иÑ\87нÑ\8bÑ\85 дÑ\83бликаÑ\82ов|иденÑ\82иÑ\87нÑ\8bÑ\85 дÑ\83бликаÑ\82а}}.',
'fileduplicatesearch-noresults' => 'Не найден файл с именем «$1».',
# Special:SpecialPages
'tags' => 'Действующие метки изменений',
'tag-filter' => 'Фильтр [[Special:Tags|меток]]:',
'tag-filter-submit' => 'Отфильтровать',
-'tag-list-wrapper' => '([[Special:Tags|{{PLURAL:$1|Метка|Метки}}]]: $2)',
+'tag-list-wrapper' => '([[Special:Tags|{{PLURAL:$1|1=Метка|Метки}}]]: $2)',
'tags-title' => 'Метки',
'tags-intro' => 'На этой странице приведён список меток, которыми программное обеспечение отмечает правки, а также значения этих меток.',
'tags-tag' => 'Имя метки',
'tags-active-yes' => 'Да',
'tags-active-no' => 'Нет',
'tags-edit' => 'править',
-'tags-hitcount' => '$1 {{PLURAL:$1|изменение|изменения|изменений}}',
+'tags-hitcount' => '$1 {{PLURAL:$1|изменение|изменений|изменения}}',
# Special:ComparePages
'comparepages' => 'Сравнение страниц',
# New logging system
'logentry-delete-delete' => '$1 {{GENDER:$2|удалил|удалила}} страницу $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' => '$1 {{GENDER:$2|изменил|изменила}} видимость {{PLURAL:$5|$5 записи|$5 записей|1=записи}} журнала для $3: $4',
+'logentry-delete-revision' => '$1 {{GENDER:$2|изменил|изменила}} видимость {{PLURAL:$5|$5 версии|$5 версий|1=версии}} страницы $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' => '$1 скрытно {{GENDER:$2|изменил|изменила}} видимость {{PLURAL:$5|$5 записи|$5 записей|1=записи}} журнала для $3: $4',
+'logentry-suppress-revision' => '$1 скрытно {{GENDER:$2|изменил|изменила}} видимость {{PLURAL:$5|$5 версии|$5 версий|1=версии}} для странице $3: $4',
'logentry-suppress-event-legacy' => '$1 скрытно {{GENDER:$2|изменил|изменила}} видимость записей журнала $3',
'logentry-suppress-revision-legacy' => '$1 скрытно {{GENDER:$2|изменил|изменила}} видимость версий на странице $3',
'revdelete-content-hid' => 'содержание скрыто',
'api-error-badaccess-groups' => 'Вам не разрешено загружать файлы в эту вики.',
'api-error-badtoken' => 'Внутренняя ошибка: некорректный токен.',
'api-error-copyuploaddisabled' => 'Загрузка по URL-адресу отключена на этом сервере.',
-'api-error-duplicate' => 'Уже {{PLURAL:$1|существует [$2 другой файл]|существуют [$2 другие файлы]}} с таким же содержимым',
-'api-error-duplicate-archive' => 'Раньше на сайте {{PLURAL:$1|уже был [$2 файл]|были [$2 файлы]}} с точно таким же содержанием, но {{PLURAL:$1|он был удалён|они были удалены}}.',
-'api-error-duplicate-archive-popup-title' => 'Дубликаты {{PLURAL:$1|файла|файлов}}, которые уже были удалены.',
-'api-error-duplicate-popup-title' => 'Дубликат {{PLURAL:$1|файла|файлов}}',
+'api-error-duplicate' => 'Уже {{PLURAL:$1|1=существует [$2 другой файл]|существуют [$2 другие файлы]}} с таким же содержимым',
+'api-error-duplicate-archive' => 'Раньше на сайте {{PLURAL:$1|1=уже был [$2 файл]|были [$2 файлы]}} с точно таким же содержанием, но {{PLURAL:$1|1=он был удалён|они были удалены}}.',
+'api-error-duplicate-archive-popup-title' => 'Дубликаты {{PLURAL:$1|1=файла|файлов}}, которые уже были удалены.',
+'api-error-duplicate-popup-title' => 'Дубликат {{PLURAL:$1|1=файла|файлов}}.',
'api-error-empty-file' => 'Отправленный вами файл пуст.',
'api-error-emptypage' => 'Не допускается создание новых пустых страниц.',
'api-error-fetchfileerror' => 'Внутренняя ошибка: что-то пошло не так при получении файла.',
'api-error-file-too-large' => 'Отправленный вами файл слишком велик.',
'api-error-filename-tooshort' => 'Слишком короткое имя файла.',
'api-error-filetype-banned' => 'Этот тип файлов запрещён.',
-'api-error-filetype-banned-type' => '$1 — {{PLURAL:$4|запрещённый тип файла|запрещённые типы файлов}}. {{PLURAL:$3|Разрешённый тип файлов —|Разрешённые типы файлов:}} $2.',
+'api-error-filetype-banned-type' => '$1 — {{PLURAL:$4|1=запрещённый тип файла|запрещённые типы файлов}}. {{PLURAL:$3|1=Разрешённый тип файлов —|Разрешённые типы файлов:}} $2.',
'api-error-filetype-missing' => 'У этого файла отсутствует расширение.',
'api-error-hookaborted' => 'Изменение, которые вы пытались сделать, прервано обработчиком расширения.',
'api-error-http' => 'Внутренняя ошибка: не удаётся подключиться к серверу.',
'api-error-overwrite' => 'Не допускается замена существующего файла.',
'api-error-stashfailed' => 'Внутренняя ошибка: сервер не смог сохранить временный файл.',
'api-error-publishfailed' => 'Внутренняя ошибка: сервер не смог сохранить временный файл.',
+'api-error-stasherror' => 'При загрузке файла в хранилище произошла ошибка.',
'api-error-timeout' => 'Сервер не отвечает в течение ожидаемого времени.',
'api-error-unclassified' => 'Произошла неизвестная ошибка',
'api-error-unknown-code' => 'Неизвестная ошибка: «$1»',
'api-error-verification-error' => 'Возможно, этот файл повреждён или имеет неправильное расширение.',
# Durations
-'duration-seconds' => '$1 {{PLURAL:$1|секунда|секунды|секунд}}',
-'duration-minutes' => '$1 {{PLURAL:$1|минута|минуты|минут}}',
-'duration-hours' => '$1 {{PLURAL:$1|Ñ\87аÑ\81|Ñ\87аÑ\81а|Ñ\87аÑ\81ов}}',
-'duration-days' => '$1 {{PLURAL:$1|день|дня|дней}}',
-'duration-weeks' => '$1 {{PLURAL:$1|неделя|недели|недель}}',
-'duration-years' => '$1 {{PLURAL:$1|год|года|леÑ\82}}',
-'duration-decades' => '$1 {{PLURAL:$1|десятилетие|десятилетия|десятилетий}}',
-'duration-centuries' => '$1 {{PLURAL:$1|век|века|веков}}',
-'duration-millennia' => '$1 {{PLURAL:$1|тысячелетие|тысячелетия|тысячелетий}}',
+'duration-seconds' => '$1 {{PLURAL:$1|секунда|секунд|секунды}}',
+'duration-minutes' => '$1 {{PLURAL:$1|минута|минут|минуты}}',
+'duration-hours' => '$1 {{PLURAL:$1|Ñ\87аÑ\81|Ñ\87аÑ\81ов|Ñ\87аÑ\81а}}',
+'duration-days' => '$1 {{PLURAL:$1|день|дней|дня}}',
+'duration-weeks' => '$1 {{PLURAL:$1|неделя|недель|недели}}',
+'duration-years' => '$1 {{PLURAL:$1|год|леÑ\82|года}}',
+'duration-decades' => '$1 {{PLURAL:$1|десятилетие|десятилетий|десятилетия}}',
+'duration-centuries' => '$1 {{PLURAL:$1|век|веков|века}}',
+'duration-millennia' => '$1 {{PLURAL:$1|тысячелетие|тысячелетий|тысячелетия}}',
# Image rotation
-'rotate-comment' => 'Ð\98зобÑ\80ажение повÑ\91Ñ\80нÑ\83Ñ\82о на $1 гÑ\80адÑ\83Ñ\81{{PLURAL:$1||а|ов}} по часовой стрелке',
+'rotate-comment' => 'Ð\98зобÑ\80ажение повÑ\91Ñ\80нÑ\83Ñ\82о на $1 гÑ\80адÑ\83Ñ\81{{PLURAL:$1||ов|а}} по часовой стрелке',
# Limit report
'limitreport-title' => 'Данные анализатора:',
'limitreport-cputime' => 'Использование времени процессора',
-'limitreport-cputime-value' => '$1 {{PLURAL:$1|секунда|секунды|секунд}}',
+'limitreport-cputime-value' => '$1 {{PLURAL:$1|секунда|секунд|секунды}}',
'limitreport-walltime' => 'Использование в режиме реального времени',
-'limitreport-walltime-value' => '$1 {{PLURAL:$1|секунда|секунды|секунд}}',
+'limitreport-walltime-value' => '$1 {{PLURAL:$1|секунда|секунд|секунды}}',
'limitreport-ppvisitednodes' => 'Количество узлов, посещённых препроцессором',
'limitreport-ppgeneratednodes' => 'Количество сгенерированных препроцессором узлов',
'limitreport-postexpandincludesize' => 'Размер раскрытых включений',
-'limitreport-postexpandincludesize-value' => '$1/$2 {{PLURAL:$2|байÑ\82|байÑ\82а|байÑ\82ов}}',
+'limitreport-postexpandincludesize-value' => '$1/$2 {{PLURAL:$2|байÑ\82|байÑ\82ов|байÑ\82а}}',
'limitreport-templateargumentsize' => 'Размер аргумента шаблона',
-'limitreport-templateargumentsize-value' => '$1/$2 {{PLURAL:$2|байÑ\82|байÑ\82а|байÑ\82ов}}',
+'limitreport-templateargumentsize-value' => '$1/$2 {{PLURAL:$2|байÑ\82|байÑ\82ов|байÑ\82а}}',
'limitreport-expansiondepth' => 'Наибольшая глубина расширения',
'limitreport-expensivefunctioncount' => 'Количество «дорогих» функций анализатора',
'expand_templates_input' => 'Входной текст:',
'expand_templates_output' => 'Результат',
'expand_templates_xml_output' => 'XML вывод',
+'expand_templates_html_output' => 'HTML-вывод',
'expand_templates_ok' => 'OK',
'expand_templates_remove_comments' => 'Удалить комментарии',
'expand_templates_remove_nowiki' => 'Подавлять теги <nowiki> в результате',
'expand_templates_generate_xml' => 'Показать дерево разбора XML',
+'expand_templates_generate_rawhtml' => 'Показать HTML',
'expand_templates_preview' => 'Предпросмотр',
+# Unknown messages
+'uploadinvalidxml' => 'XML в загруженном файле не может быть проанализирован.',
);
$messages = array(
# User preference toggles
'tog-underline' => 'Підкреслёвати одказы:',
-'tog-justify' => 'Зарівнати текст до блоку',
'tog-hideminor' => 'Сховати малы едітованя в списку послїднїх змін',
'tog-hidepatrolled' => 'Сховати патролёваны едітованя в списку послїднїх змін',
'tog-newpageshidepatrolled' => 'Сховати патролёваны сторінкы зо списку новых сторінок',
'tog-numberheadings' => 'Автоматічно чісловати надписы',
'tog-showtoolbar' => 'Вказати панел інштрументів',
'tog-editondblclick' => 'Едітовати двоїтым кликом',
-'tog-editsection' => 'Дозволити едітованя секції сторінкы через одказ [едіт.]',
'tog-editsectiononrightclick' => 'Дозволити едітованя секції сторінкы через кликаня правов клапков мышкы на надписы сторінок',
-'tog-showtoc' => 'Вказовати обсяг (на сторінках з веце як трёма надписами)',
'tog-rememberpassword' => 'Запамнятати моє приголошіня на тім переглядачу (максімално $1 {{PLURAL:$1|день|днів}})',
'tog-watchcreations' => 'Придавати сторінкы створены мнов тай файлы мнов наладованы до мого списку слїдованых',
'tog-watchdefault' => 'Придавати мнов едітованы сторінкы і файлы до списку слїдованых',
# 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).
'aboutsite' => 'О {{grammar:genitive|{{SITENAME}}}}',
'aboutpage' => 'Project:{{SITENAME}}',
-'copyright' => 'Ð\9eбÑ\81Ñ\8fг Ñ\94 доÑ\81Ñ\82Ñ\83пнÑ\8bй з $1.',
+'copyright' => 'Ð\9eбÑ\81Ñ\8fг Ñ\94 доÑ\81Ñ\82Ñ\83пнÑ\8bй пÑ\96д $1, кÑ\96дÑ\8c не Ñ\94 вказане Ñ\96нÑ\88е.',
'copyrightpage' => '{{ns:project}}:Авторьске право',
'currentevents' => 'Актуалны подїї',
'currentevents-url' => 'Project:Актуалны подїї',
'youhavenewmessages' => 'Маєте $1 ($2).',
'youhavenewmessagesfromusers' => 'Мате $1 од {{PLURAL:$3|іншого хоснователя|$3 іншых хоснователїв}} ($2).',
'youhavenewmessagesmanyusers' => 'Мате $1 од много далшых хоснователїв ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|нове повідомлїня|новы повідомлїня}}',
-'newmessagesdifflinkplural' => 'остатня {{PLURAL:$1|зміна|зміны|змін}}',
+'newmessageslinkplural' => '{{PLURAL:$1|нове повідомлїня|999=новы повідомлїня}}',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|остатня зміна|999=остатнї зміны}}',
'youhavenewmessagesmulti' => 'Маєте новы повідомлїня на $1',
'editsection' => 'едіт.',
'editold' => 'едіт.',
'gotaccount' => "Уж сьте реґістрованы? '''$1'''.",
'gotaccountlink' => 'Приголошіня',
'userlogin-resetlink' => 'Забыли сьте вашы даны на приголошіня?',
-'userlogin-resetpassword-link' => 'РеÑ\81еÑ\82оваÑ\82и ваÑ\88е геÑ\81ло',
+'userlogin-resetpassword-link' => 'Ð\97абÑ\8bли Ñ\81Ñ\8cÑ\82е геÑ\81ло?',
'helplogin-url' => 'Help:Приголошіня',
'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Поміч з приголошованём]]',
+'userlogin-createanother' => 'Створити інше конто',
'createacct-join' => 'Ниже уведьте вашы інформації',
'createacct-another-join' => 'Ниже уведьте інформації нового конта',
'createacct-emailrequired' => 'Адреса електронічной пошты',
'passwordtooshort' => 'Гесло мусить быти довге холем $1 {{PLURAL:$1|знак|знакы|знаків}}.',
'password-name-match' => 'Ваше гесло не може быти таке саме як і ваше хосновательске мено.',
'password-login-forbidden' => 'Хоснованя того мена хоснователя і гесла было заказане.',
-'mailmypassword' => 'Ð\9fоÑ\81лаÑ\82и нове геÑ\81ло',
+'mailmypassword' => 'РеÑ\81еÑ\82 геÑ\81ла',
'passwordremindertitle' => 'Нове дочасне гесло на {{grammar:4sg|{{SITENAME}}}}',
'passwordremindertext' => 'Хтось (може Вы, з IP адресы $1) пожадав, жебы сьме Вам послали нове гесло
про приголошіня до {{grammar:2sg|{{SITENAME}}}} ($4). Хоснователёви „$2“ было
'content-not-allowed-here' => 'Обсяг «$1» недозволеный на сторінцї [[$2]]',
'editwarning-warning' => 'Зохаблїнём той стрінкы ся можуть вшыткы учінены зміны стратити.
Кідь сьте приголошеный, можете тото варованя выпнути на картї „Едітованя“ в хосновательскім інтерфейсї.',
+'editpage-notsupportedcontentformat-title' => 'Непідпорованый формат обсягу',
# Content models
'content-model-wikitext' => 'вікітекст',
кідь не были наставлены далшы обмеджіня.",
'revdelete-confirm' => 'Просиме Вас, потвердьте, же то хочете справды зробити, же собі усвідомлюєте резултат і же є то в згодї з [[{{MediaWiki:Policy-url}}|правилами]].',
'revdelete-suppress-text' => "Затаёваня бы ся мало хосновати ''лем''' в такых припадах:
-* Потенціално огварячі інформації
+* Ð\9fоÑ\82енÑ\86Ñ\96ално огваÑ\80Ñ\8fÑ\8eÑ\87Ñ\96 Ñ\96нÑ\84оÑ\80маÑ\86Ñ\96Ñ\97
* Непотрібны особны дата
-*: ''адресы і телефонны чісла, родны чісла ітд.''",
+*: <em>адресы і телефонны чісла, родны чісла ітд.</em>",
'revdelete-legend' => 'Наставити обмеджіня ревізії',
'revdelete-hide-text' => 'Сховати текст ревізії',
'revdelete-hide-image' => 'Сховати обсяг файлу',
'revdelete-hide-name' => 'Сховати дїю а ціль',
'revdelete-hide-comment' => 'Сховати коментарь',
-'revdelete-hide-user' => 'СÑ\85оваÑ\82Ñ\83 мено авÑ\82оÑ\80а/IP-адÑ\80еÑ\81Ñ\83',
+'revdelete-hide-user' => 'Ð\86мÑ\8f авÑ\82оÑ\80а/IP адÑ\80еÑ\81а',
'revdelete-hide-restricted' => 'Затаїти дата перед адміністраторами',
'revdelete-radio-same' => '(не мінити)',
-'revdelete-radio-set' => 'Ð\93ей',
-'revdelete-radio-unset' => 'Ð\9dÑ\97Ñ\82',
+'revdelete-radio-set' => 'СÑ\85ованÑ\8bй',
+'revdelete-radio-unset' => 'Ð\92идимÑ\8bй',
'revdelete-suppress' => 'Затаїти дата перед адміністраторами',
'revdelete-unsuppress' => 'Одстранити обмеджіня на вернутій верзії',
'revdelete-log' => 'Причіна:',
'showhideselectedversions' => 'Вказати/скрыти выбраны ревізії',
'editundo' => 'вернути назад',
'diff-empty' => '(Не є роздїлне)',
-'diff-multi' => '({{PLURAL:$1|Не є зображена єдна міджілегла верзія|Не суть зображены $1 міджілеглы верзії|Не є зображено $1 міджілеглых верзій}} од {{PLURAL:$2|1 хоснователя|$2 хоснователїв}} .)',
'diff-multi-manyusers' => '(Не є зображено $1 міджілеглых верзій од веце як $2 {{PLURAL:$2|хоснователя|хоснователїв}}.)',
'difference-missing-revision' => '{{PLURAL:$2|Єдна з ревізій|$2 ревізії|$2 ревізій}} к пожадованому порівнаню ($1) {{PLURAL:$2|не є|не суть|не є}}.
'rows' => 'Рядкы:',
'columns' => 'Колонкы:',
'searchresultshead' => 'Гляданя',
-'resultsperpage' => 'Чісло резултатів на сторінку:',
'stub-threshold' => 'Поріг про форматованя одказу як <a href="#" class="stub">одказів на "stub"</a> (v bajtech):',
'stub-threshold-disabled' => 'Выпнуте',
'recentchangesdays' => 'За кілько днїв вказовати новы едітованя',
'filetype-mime-mismatch' => 'Росшырїня файлу ".$1" не одповідать ёго MIME тіпу ($2).',
'filetype-badmime' => 'Не є дозволено наладововати файлы MIME тіп „$1“.',
'filetype-bad-ie-mime' => 'Неможливо наладовати тот файл, бо Internet Explorer бы го тримав за „$1“, што є не дозволеный і потенціално небеспечный тіп файлу.',
-'filetype-unwanted-type' => "„.$1“''' є нежеланый формат файлу. {{plural:$3|Желаный формат файлів є|Желаны форматы файлів суть}} $2.",
+'filetype-unwanted-type' => "„.$1“''' є нежеланый формат файлу. {{PLURAL:$3|Желаный формат файлів є|Желаны форматы файлів суть}} $2.",
'filetype-banned-type' => "'''„.$1“''' {{PLURAL:$4|є недозволеный формат файлів|суть недозволены форматы файлів}}.
{{PLURAL:$3|Дозволеный формат фалів|Дозволены форматы файлів суть}} $2.",
'filetype-missing' => 'Файл не має росшырїня (наприклад, «.jpg»).',
'nolinkstoimage' => 'На тот файл не одказує жадна сторінка',
'morelinkstoimage' => 'Видїти [[Special:WhatLinksHere/$1|далшы одказы]] на тот файл.',
'linkstoimage-redirect' => '$1 (напрямлїня файлу) $2',
-'duplicatesoffile' => '{{plural:$1|Наслїдуючій файл є дуплікат|Наслїдуючі $1 файлы суть дуплікаты|Наслїдуючіх $1 файлів є дуплікатами}} того файлу ([[Special:FileDuplicateSearch/$2|детайлы]]):',
+'duplicatesoffile' => '{{PLURAL:$1|Наслїдуючій файл є дуплікат|Наслїдуючі $1 файлы суть дуплікаты|Наслїдуючіх $1 файлів є дуплікатами}} того файлу ([[Special:FileDuplicateSearch/$2|детайлы]]):',
'sharedupload' => 'Тот файл є з $1 і є доступным про іншы проекты.',
'sharedupload-desc-there' => 'Тот файл походить з {{grammar:2sg|$1}} і можуть го хосновати другы проєкты.
Веце інформацій обсягує ёго [$2 сторінка з пописом файлу].',
'statistics-views-peredit' => 'Чісло зображінь на едітованя',
'statistics-users' => 'Реґістрованы [[Special:ListUsers|хоснователї]]',
'statistics-users-active' => 'Актівны хоснователї',
-'statistics-users-active-desc' => 'Хоснователї, котры в {{plural:$1|минулого дня|минулых $1 днїв}} провели даяку операцію',
+'statistics-users-active-desc' => 'Хоснователї, котры в {{PLURAL:$1|минулого дня|минулых $1 днїв}} провели даяку операцію',
'statistics-mostpopular' => 'Найчітанїшы сторінкы',
'pageswithprop' => 'Сторінкы з властностями',
'watchmethod-list' => 'глядають ся найновшы едітованя слїдованых сторінок',
'watchlistcontains' => 'На своїм списку слїдованых сторінок маєте $1 {{PLURAL:$1|положку|положкы|положок}}.',
'iteminvalidname' => 'Проблем з положков „$1“, неплатна назва…',
-'wlnote' => 'Ниже є {{PLURAL:$1|остатня зміна|остатнї $1 зміны|остатнїх $1 змін}} за {{PLURAL:$2|остатнїй|остатнї|остатнїх}} <b>$2</b> {{PLURAL:$2|годину|годины|годин}} до do $4, $3.',
'wlshowlast' => 'Вказати зміны за послїднїх $1 годин $2 днїв $3',
'watchlist-options' => 'Наставлїна списку слїдованых',
'exblank' => 'сторінка была порожня',
'delete-confirm' => 'Змазаня $1',
'delete-legend' => 'Вымазати',
-'historywarning' => "'''Варованя:''' Сторінка, котру хочете змазати, має історію з приближно $1 {{plural:$1|ревізії|ревізіями}}:",
+'historywarning' => "'''Варованя:''' Сторінка, котру хочете змазати, має історію з приближно $1 {{PLURAL:$1|ревізії|ревізіями}}:",
'confirmdeletetext' => 'Рыхтуєте ся вымазати сторінку і вшыткы єй лоґы едітовань.
Просиме Вас, потвердьте, же справды тото хочете зробити, повно розумієте наслїдкы і же робите тото в одповідности з [[{{MediaWiki:Policy-url}}|правилами]].',
'actioncomplete' => 'Дїя выконана',
** Порушїня авторьскых прав
** Вандалізм',
'delete-edit-reasonlist' => 'Едітовати причіны вымазаня',
-'delete-toobig' => 'Тота сторінка має велику історію едітованя, через $1 {{plural:$1|верзії|верзій|верзій}}. Мазаня такых сторінок є обмеджено, жебы ся заборонило нехоченому нарушіню {{grammar:2sg|{{SITENAME}}}}.',
-'delete-warning-toobig' => 'Тота сторінка має велику історію едітацій, через $1 {{plural:$1|верзії|верзій|верзій}}. Мазаня такых сторінок може нарушыти датабазовы операцім {{grammar:2sg|{{SITENAME}}}}; мерькуйте.',
+'delete-toobig' => 'Тота сторінка має велику історію едітованя, через $1 {{PLURAL:$1|верзії|верзій|верзій}}. Мазаня такых сторінок є обмеджено, жебы ся заборонило нехоченому нарушіню {{grammar:2sg|{{SITENAME}}}}.',
+'delete-warning-toobig' => 'Тота сторінка має велику історію едітацій, через $1 {{PLURAL:$1|верзії|верзій|верзій}}. Мазаня такых сторінок може нарушыти датабазовы операцім {{grammar:2sg|{{SITENAME}}}}; мерькуйте.',
# Rollback
'rollback' => 'Вернути назад едітованя',
'movelogpage' => 'Лоґ переменовань',
'movelogpagetext' => 'Тото є список вшыткых переменованый сторінок.',
'movesubpage' => '{{PLURAL:$1|Підсторінка|Підсторінкы}}',
-'movesubpagetext' => 'Тота сторінка має $1 {{plural:$1|підсторінку|підсторінкы|підсторінок}} ниже.',
+'movesubpagetext' => 'Тота сторінка має $1 {{PLURAL:$1|підсторінку|підсторінкы|підсторінок}} ниже.',
'movenosubpage' => 'Тота сторінка не має підсторінок.',
'movereason' => 'Причіна:',
'revertmove' => 'вернути',
'tooltip-pt-watchlist' => 'Список сторінок, на котрых слїдуєте зміны',
'tooltip-pt-mycontris' => 'Список вашых приспівків',
'tooltip-pt-login' => 'Рекомендуєме ся приголосити, але не є то повинне.',
-'tooltip-pt-anonlogin' => 'Рекомендуєме ся приголосити, але не є то повинне.',
'tooltip-pt-logout' => 'Одголошіня',
'tooltip-ca-talk' => 'Діскузія о обсягу сторінкы',
'tooltip-ca-edit' => 'Тоту сторінку можете едітовати. Просиме, хоснуйте перегляд перед уложінём.',
# Special:NewFiles
'newimages' => 'Ґалерія новых файлів',
-'imagelisttext' => "Ниже є {{plural:$1|єден файл|список '''$1''' файлів сортованых $2|список '''$1''' файлів сортованых $2}}.",
+'imagelisttext' => "Ниже є {{PLURAL:$1|єден файл|список '''$1''' файлів сортованых $2|список '''$1''' файлів сортованых $2}}.",
'newimages-summary' => 'На тій шпеціалній сторінцї ся зображують остатнї наладованы файлы.',
'newimages-legend' => 'Філтер',
'newimages-label' => 'Назва файлу (або єй часть):',
'version-hook-subscribedby' => 'Підписаный на',
'version-version' => '(Верзія $1)',
'version-license' => 'Ліценція',
+'version-ext-license' => 'Ліценція',
+'version-ext-colheader-name' => 'Росшырїня',
+'version-ext-colheader-version' => 'Верзія',
+'version-ext-colheader-license' => 'Ліценція',
+'version-ext-colheader-description' => 'Попис',
+'version-ext-colheader-credits' => 'Авторы',
'version-poweredby-credits' => "Тота вікі біжыть на '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001–$1 $2.",
'version-poweredby-others' => 'іншы',
'version-poweredby-translators' => 'перекладателї на translatewiki.net',
'redirect-lookup' => 'Найти:',
'redirect-value' => 'Значіня',
'redirect-user' => 'ID хоснователя',
+'redirect-page' => 'ID сторінкы',
'redirect-revision' => 'Ревізія сторінкы',
'redirect-file' => 'Назва файлу',
'redirect-not-exists' => 'Значіня ся не нашло',
# Special:SpecialPages
'specialpages' => 'Шпеціалны сторінкы',
+'specialpages-note-top' => 'Леґенда',
'specialpages-note' => '* Звычайны шпеціалны сторінкы.
* <span class="mw-specialpagerestricted">Шпеціалны сторінкы з обмедженым приступом</span>
* <span class="mw-specialpagecached">Кешованы шпеціалны сторінкы</span>',
'tags-tag' => 'Назва значкы',
'tags-display-header' => 'Зображіня на списках змін',
'tags-description-header' => 'Повный попис значіня',
+'tags-active-header' => 'Актівный?',
'tags-hitcount-header' => 'Означены зміны',
+'tags-active-yes' => 'Гей',
+'tags-active-no' => 'Нїт',
'tags-edit' => 'едітовати',
'tags-hitcount' => '$1 {{PLURAL:$1|зміна|зміны|змін}}',
$messages = array(
# User preference toggles
'tog-underline' => 'सम्पर्कतन्तोः अधोरेखाङ्कनम्:',
-'tog-justify' => 'परिच्छेदाः समानाः क्रियन्ताम्',
'tog-hideminor' => 'सद्योजातानां परिवर्तनानां लघूनि सम्पादनानि गोप्यन्ताम्',
'tog-hidepatrolled' => 'सद्योजातानां परिवर्तनानां परिशीलितानि सम्पादनानि गोप्यन्ताम्',
'tog-newpageshidepatrolled' => 'नूतनपृष्ठानाम् आवलीतः परिशीलितानि पृष्ठानि गोप्यन्त्ताम्',
'tog-numberheadings' => 'शीर्षकान् स्वयमेव सक्रमांकीकरोतु।',
'tog-showtoolbar' => 'सम्पादन-उपकरण-पट्टिका दर्श्यताम् (जावालिपिः अपेक्ष्यते)',
'tog-editondblclick' => 'द्विक्लिक्कारेण पृष्ठानि सम्पाद्यन्ताम् (जावालिपिः अपेक्ष्यते)',
-'tog-editsection' => '[संपादयतु़] इति संबंधनद्वारा विभाग-संपादनं समर्थयतु।',
'tog-editsectiononrightclick' => 'विभागशीर्षकाणामुपरि दक्षिणक्लिक्करणेन विभागसम्पादनं समर्थ्यताम् (जावालिपिः अपेक्ष्यते)।',
-'tog-showtoc' => 'विषयानुक्रमणिका दर्श्यताम् (त्र्यधिकशीर्षकयुतेषु पृष्ठेषु)।',
'tog-rememberpassword' => 'अस्मिन् सङ्गणके मम प्रवेशः स्मर्यताम् (अधिकतमम् $1 {{PLURAL:$1|दिनम्|दिनानि}})',
'tog-watchcreations' => 'मया रचितानि पृष्ठानि मम अवेक्षणसूच्यां योज्यन्ताम्।',
'tog-watchdefault' => 'मया सम्पादितानि पृष्ठानि मम अवेक्षणसूच्यां योज्यन्ताम्।',
कृपया पुनः लिख्यताम्।',
'wrongpasswordempty' => 'लिखितः कूटशब्दः रिक्तः विद्यते।
कृपया पुनः लिख्यताम्।',
-'passwordtooshort' => 'कूटशब्दः न्यूनातिन्यूनं {{PLURAL: $1| 1 अक्षरात्मकः|$1 अक्षरात्मकमः}} अवश्यमेव भवेत्।',
+'passwordtooshort' => 'कूटशब्दः न्यूनातिन्यूनं {{PLURAL:$1| 1 अक्षरात्मकः|$1 अक्षरात्मकमः}} अवश्यमेव भवेत्।',
'password-name-match' => 'भवतः कूटशब्दः भवतः प्रयोक्तृनामतः अवश्यम् भिन्नं भवेत् ।',
'password-login-forbidden' => 'अस्य प्रयोक्तृनाम्नः कूटशब्दस्य च प्रयोगः वर्जितोऽस्ति।',
'mailmypassword' => 'नूतनः कूटशब्दः ईपत्रद्वारा प्रेष्यताम्',
'compareselectedversions' => 'चितानाम् आवृत्तीनां तोलनं क्रियताम्',
'showhideselectedversions' => 'चितावतरणानि दर्शयतु/गोपयतु ।',
'editundo' => 'निष्क्रियताम्',
-'diff-multi' => '({{PLURAL:$2|योजकेन|$2 योजकैः}} कृता {{PLURAL:$1|मध्यमा आवृत्तिः|$1 मध्यमा आवृत्तयः}} न दर्शिताः ।)',
'diff-multi-manyusers' => '({{PLURAL:$2|योजकेन|$2 योजकैः}} कृता {{PLURAL:$1|मध्यमा आवृत्तिः|$1 मध्यमा आवृत्तयः}} न दर्शिताः ।)',
'difference-missing-revision' => '{{PLURAL:$2|One revision|$2 पुनरावृत्तेः }} व्यत्यासः ($1) {{PLURAL:$2|was|were}} न दृष्टः ।
कारणम् अत्र दृश्यते । [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} deletion log].',
'rows' => 'पंक्ति',
'columns' => 'अध: पंक्त्याः',
'searchresultshead' => 'अन्वेषणम्',
-'resultsperpage' => 'प्रति पृष्ट हिट्स:',
'stub-threshold' => '<a href="#" class="stub">आधारानुबन्धानां </a>अधिकतमाकारः ।',
'stub-threshold-disabled' => 'निष्क्रियः',
'recentchangesdays' => 'दिवसानि पर्यन्तो सद्यावधि-परिवर्तनानि दृश्यतु:',
'watchmethod-list' => 'सद्यः सम्पादनार्थम् अवलोकितपुटानां परीक्षणम् ।',
'watchlistcontains' => 'भवतः अवलोकनावली $1 युक्तास्ति ।{{PLURAL:$1|page|pages}}.',
'iteminvalidname' => "समस्या '$1' इत्यनेन अस्ति । अमान्यं नाम ।",
-'wlnote' => "अधस्तात् {{PLURAL:$1|'''1''' परिवर्तनमस्ति|अन्तिमानि '''$1''' परिवर्तनानि सन्ति}},{{PLURAL:$2|गते दिवसे|'''$2''' गतेषु दिवसेषु}}, , $3, $4. इति",
'wlshowlast' => 'अन्तिमानि ($1 होराः $2 दिनानि) $3 इति दर्श्यन्ताम्',
'watchlist-options' => 'अवेक्षणसूच्याः विकल्पाः',
'tooltip-pt-watchlist' => 'भवद्भिः परिवर्तनानि निरीक्ष्यमाणानां पृष्ठानां सूची',
'tooltip-pt-mycontris' => 'भवतः योगदानानाम् आवली',
'tooltip-pt-login' => 'भवान् न प्रविष्टः। प्रवेशः अनिवार्यः न।',
-'tooltip-pt-anonlogin' => 'भवतः नामाभिलेखः उत्साहयते । किन्तु नामाभिलेखः ऐच्छिकः ।',
'tooltip-pt-logout' => 'निर्गमनम्',
'tooltip-ca-talk' => 'पृष्ठान्तर्गतविषये चर्चा',
'tooltip-ca-edit' => 'भवान् इदं पृष्ठं सम्पादयितुम् अर्हति। रक्षणात्पूर्वं कृपया प्राग्दृश्यं पश्यतु।',
$messages = array(
# User preference toggles
'tog-underline' => 'Ыйынньыктары аннынан тардыы:',
-'tog-justify' => 'Сирэй кэтитинэн тарҕат',
'tog-hideminor' => 'Кыра көннөрүүлэри көрдөрбөккө',
'tog-hidepatrolled' => 'Ботурууллааччы көрбүт көннөрүүтүн саҥа көннөрүүлэр тиһиктэригэр көрдөрүмэ',
'tog-newpageshidepatrolled' => 'Ботуруулламмыт сирэйдэри саҥа сирэйдэр тиһиктэригэр көрдөрүмэ',
'tog-numberheadings' => 'Бас тыллары нүөмэрдээ',
'tog-showtoolbar' => 'Көннөрүү үстүрүмүөннэрин көрдөр',
'tog-editondblclick' => 'Хоһулатан иккитэ баттаан сирэйи уларытыы',
-'tog-editsection' => '[Көннөрүү] диэн ыйынньыгынан сиэксийэны көннөрүү',
'tog-editsectiononrightclick' => 'Сиэксийэ баһыгар уҥа тимэҕинэн баттаан сиэксийэни көннөрүү',
-'tog-showtoc' => 'Иһинээҕитин көрдөр (ыстатыйа үстэн ордук бас тыллаах буоллаҕына)',
'tog-rememberpassword' => 'Миигин бу браузерга сигээ ($1 {{PLURAL:$1|күн|күнтэн ордуга суох}})',
'tog-watchcreations' => 'Суруйбут ыстатыйаларбын уонна укпут билэлэрбин кэтээн көрүүгэ киллэрэн ис',
'tog-watchdefault' => 'Уларыппыт сирэйдэрбин уонна билэлэрбин кэтээн көрүү тиһигэр киллэрэн ис',
'showhideselectedversions' => 'Талыллыбыт барыллары көрдөр/кистээ',
'editundo' => 'төнүн',
'diff-empty' => '(уратыта суох)',
-'diff-multi' => '({{PLURAL:$2|$2 кыттааччы|$2 ахсааннаах кыттааччы}} {{PLURAL:$1|$1 ыккардынааҕы барыла көрдөрүллүбэтэ|$1 ахсааннаах ыккардынааҕы барыла көрдөрүллүбэтэ|$1.}})',
'diff-multi-manyusers' => '(Кырата {{PLURAL:$2|$1 кыттааччы|$2 ахсааннаах кыттааччы}} оҥорбут {{PLURAL:$1|ыккардынааҕы $1 барыла|ыккардынааҕы $1 барыллара}} көрдөрүллүбэтэ)',
'difference-missing-revision' => '$2 барыл бу тэҥнээһиҥҥэ ($1) көстүбэтэ.
'rows' => 'Строкаалара:',
'columns' => 'Колонкалара:',
'searchresultshead' => 'Көрдөөһүн түмүгэ',
-'resultsperpage' => 'Сирэйгэ булуллубут суруктар ахсааннара:',
'stub-threshold' => '<a href="#" class="stub">омооннорго ыйынньыктары</a> оҥоруу боруога:',
'stub-threshold-disabled' => 'Арахсыбыт',
'recentchangesdays' => 'Хас хонук иһинэн уларытыылары көрдөрөргө:',
'watchmethod-list' => 'кэтээһин бүтэһик уларыйыылара',
'watchlistcontains' => '$1 сирэйи кэтээн көрөҕүн.',
'iteminvalidname' => "'$1' моһуогурда, аата сатаммата...",
-'wlnote' => "Манна кэлиҥҥи {{PLURAL:$2|чаас|'''$2''' чаас}} иһигэр оҥоһуллубут бүтэһик $1 уларытыы көрдөрүлүннэ, бу кэмҥэ туругунан $3 $4.",
'wlshowlast' => 'бүтэһик $1 чааска $2 күҥҥэ $3 көрдөр',
'watchlist-options' => 'Кэтээн көрүү туруоруутун уларытыы',
'tooltip-pt-watchlist' => 'Кэтээн көрөр сирэйдэрим тиһигэ',
'tooltip-pt-mycontris' => 'Суруйбут/уларыппыт сирэйдэриҥ тиһиктэрэ',
'tooltip-pt-login' => 'Манна бэйэҕин билиһиннэриэххин сөп (булгуччута суох).',
-'tooltip-pt-anonlogin' => 'Бэйэҕин билиһиннэриэххин сөп (булгуччута суох).',
'tooltip-pt-logout' => 'Тахсыы',
'tooltip-ca-talk' => 'Ыстатыйаны ырытыы',
'tooltip-ca-edit' => 'Бу сирэйи уларытыахха сөп. Бука диэн бастаан хайдах буоларын көрөн баран уларыт.',
$messages = array(
# User preference toggles
'tog-underline' => 'Joṛaoko latarre dag udugoḱma:',
-'tog-justify' => 'Olaḱ kạli mońjte sajao:',
'tog-hideminor' => 'Nitaḱ bodolaḱre huḍiṅ kạmi danaṅme',
'tog-hidepatrolled' => 'Joṛaoakanaḱko nãwã bodolaḱte danaṅkam',
'tog-newpageshidepatrolled' => 'Biḍạakanaḱ sakamko nãwã sakamreaḱ talikare danȧkam',
'tog-numberheadings' => 'Mukhiạ kathako do actege piṛhipiṛhite sajaḱma',
'tog-showtoolbar' => 'Joṛaoakanaḱ ṭulbar udugoḱma',
'tog-editondblclick' => 'Bar dhao lin kate sakam torjomão reaḱ ạidari emogoḱma',
-'tog-editsection' => '[Joṛao] Pahaṭako do joṛao hotete aćtege hoyoḱ lạgit aidạri em ocoḱma',
'tog-editsectiononrightclick' => 'Pahaṭa reaḱ pahaṭa guṭkathare jojom seć lin hotete <br /> pahaṭa sompadon lạgitte ektiạr em hoyoḱma (JavaScript)',
-'tog-showtoc' => 'Ṭibilre menaḱako ńel ( sakamkore 3 khon jạti hedlayenko)',
'tog-rememberpassword' => 'Noa sendrare amaḱ boloḱ reaḱ katha (katha cạbi) disạimẽ (jạstite $1 {{PLURAL:$1din reaḱ din reaḱ}} lạgit)',
'tog-watchcreations' => 'Ińaḱ tear sakam ar rakaṕ páelko ińaḱ ńelogoḱ tạlikare ńeloḱ ma',
'tog-watchdefault' => 'Ińaḱ purạoakanaḱ sakam ar phayelko do ińaḱ ńeloḱ tạlikare joṛaoḱma',
'lineno' => 'Sạr $1:',
'compareselectedversions' => 'Noa barea nãwã bachawanaḱ talare tolonayme',
'editundo' => 'ruạṛ',
-'diff-multi' => '({{PLURAL:$2 mit́ṭen beoharic $2 hoṛ beoharkin}} Sompadon hoena {{PLURAL:$1 mit́ṭen do mitghạṛi lạgit sudhrạo mit́ṭen do mitghạṛi lạgit sudhrạo}} baṅ uduḱlena.)',
# Search results
'searchresults' => 'Se̠ndra fo̠l',
'searchprofile-everything-tooltip' => 'Sanam ko modre sẽndra ( roṛ sakam modre hõ)',
'searchprofile-advanced-tooltip' => 'Judạ ńutum re sẽndra',
'search-result-size' => '$1 ({{PLURAL:$2 1 Aṛaṅ$2 Aṛaṅko}})',
-'search-result-category-size' => '{{PLURAL: $1 1 gãoren $1 gãota renko}} ({{PLURAL: $2 1 kạṭic rokom sokom $ 2 goṭen}}, {{PLURAL:$3 1 rẽt $3 rẽtko}})',
+'search-result-category-size' => '{{PLURAL:$1 1 gãoren $1 gãota renko}} ({{PLURAL:$2 1 kạṭic rokom sokom $ 2 goṭen}}, {{PLURAL:$3 1 rẽt $3 rẽtko}})',
'search-redirect' => '($1 te sujhi doṛha )',
'search-section' => '(Pahaṭa $1)',
'search-suggest' => 'Am do cet́ $1 em menocoyet tãhẽkana',
'rows' => 'Lìnias:',
'columns' => 'Colunnas:',
'searchresultshead' => 'Settaggio delle preferenze per la ricerca',
-'resultsperpage' => 'Risultati da visualizzare per pagina',
'stub-threshold-disabled' => 'Disativadu',
'recentchangescount' => 'Nùmeru de acontzos de amostare pro definidura:',
'savedprefs' => 'Is preferèntzias tuas sunt stadas sarbadas.',
$messages = array(
# User preference toggles
'tog-underline' => 'Suttalìnia li culligamenti:',
-'tog-justify' => 'Alliniamentu dû paràgrafu: giustificatu',
'tog-hideminor' => "Ammuccia li canciamenti nichi nta l'ùrtimi canciamenti",
'tog-hidepatrolled' => "Ammuccia li mudìfichi fatti ntâ l'ùrtimi canciamenti",
'tog-newpageshidepatrolled' => "Ammuccia li pàggini virificati di l'alencu dî pàgging cchiù novi",
'tog-numberheadings' => 'Nummirazzioni automàtica dî tìtuli di paràgrafu',
'tog-showtoolbar' => 'Ammustra la barra dî strumenta pi lu canciamentu',
'tog-editondblclick' => "Duppiu click pi canciari l'artìculu (richiedi Javascript)",
-'tog-editsection' => 'Abbìlita lu canciamentu dî sezzioni tràmiti lu culligamentu [cancia]',
'tog-editsectiononrightclick' => 'Abbìlita lu canciamentu dî sezzioni tràmiti duppiu click supra lu tìtulu dâ sezzioni (richiedi Javascript)',
-'tog-showtoc' => "Ammustra l'ìndici (pi artìculi cu cchiù di 3 sezzioni)",
'tog-rememberpassword' => 'Arricorda la password supra stu navigaturi (pi ô massimu $1 {{PLURAL:$1|jornu|jorna}})',
'tog-watchcreations' => "Agghiunci li pàggini criati a l'ossirvati spiciali",
'tog-watchdefault' => "Agghiunci li pàggini canciati a l'ossirvati spiciali",
'compareselectedversions' => 'Fari lu paraguni',
'showhideselectedversions' => 'Ammustra/ammuccia virsioni silizziunati',
'editundo' => 'annulla',
-'diff-multi' => '({{PLURAL:$1|Na rivisioni ntirmèdia|$1 rivisioni ntirmedi}} di {{PLURAL:$2|nu utenti|$2 utenti}} nun {{PLURAL:$1|ammusciata|ammusciati}}.)',
# Search results
'searchresults' => 'Risurtati dâ circata',
'rows' => 'Righi:',
'columns' => 'Culonni:',
'searchresultshead' => 'Circata',
-'resultsperpage' => 'Nùmmiru di risurtati pi pàggina:',
'stub-threshold' => 'Valuri minimu pî <a href="#" class="stub">liami a li stub</a>:',
'stub-threshold-disabled' => 'Disabbìlitatu',
'recentchangesdays' => "Nùmmuru di jorna a ammustrari nte l'urtimi cancaiamenti:",
'watchmethod-list' => "cuntrollu di l'ossirvati spiciali pi canciamenti ricenti",
'watchlistcontains' => 'La tò lista di ossirvati spiciali cunteni {{PLURAL:$1|na pàggina|$1 pàggini}}.',
'iteminvalidname' => "Prubbremi cu la pàggina '$1', nomu nun vàlidu...",
-'wlnote' => "Sutta attrovi l'ùrtim{{PLURAL:$1|u canciamentu|i $1 canciamenti}}, nta l'ùrtim{{PLURAL:$1|a ura|i '''$2''' uri}}.",
'wlshowlast' => "Ammustra l'ùrtimi $1 uri $2 jorna $3",
'watchlist-options' => 'Opzioni ussirvati spiciali',
'tooltip-pt-watchlist' => 'La lista dî pàggini ca stai tinennu sutta ossirvazzioni',
'tooltip-pt-mycontris' => "L'alencu dî tò cuntribbuti",
'tooltip-pt-login' => 'La riggistrazzioni è cunzigghiata, puru siddu nun obbrigatoria.',
-'tooltip-pt-anonlogin' => 'La riggistrazzioni è cunzigghiata, puru siddu nun obbrigatoria.',
'tooltip-pt-logout' => 'Nisciuta (logout)',
'tooltip-ca-talk' => 'Vidi li discussioni rilativi a sta pàggina',
'tooltip-ca-edit' => "Poi canciari sta pàggina. Pi favuri usa lu pulsanti d'antiprima prima di sarvari.",
$messages = array(
# User preference toggles
'tog-underline' => 'Unnerline airtins:',
-'tog-justify' => 'Justifee paragraphs',
'tog-hideminor' => 'Hide smaa edits in recent chynges',
'tog-hidepatrolled' => 'Hide patrolled edits in recent chynges',
'tog-newpageshidepatrolled' => 'Hide patrolled pages frae the new page list',
'tog-numberheadings' => 'Auto-nummer heidins',
'tog-showtoolbar' => 'Shaw edit toolbar',
'tog-editondblclick' => 'Edit pages on dooble-dab (JavaScript)',
-'tog-editsection' => 'Enable section editin via [edit] airtins',
'tog-editsectiononrightclick' => 'Enable section editin bi richt-dabbin on section teitles (JavaScript)',
-'tog-showtoc' => 'Shaw table o contents (for pages wi mair nor 3 heidins)',
'tog-rememberpassword' => 'Mynd password ower sessions (for a maximum of $1 {{PLURAL:$1|day|days}})',
'tog-watchcreations' => 'Add pages ye mak tar yer watchleet',
'tog-watchdefault' => 'Add pages ye edit tae yer watchleet',
'lineno' => 'Line $1:',
'compareselectedversions' => 'Compare selectit versions',
'editundo' => 'undo',
-'diff-multi' => '({{PLURAL:$1|One intermediate revision|$1 intermediate revisions}} by {{PLURAL:$2|one user|$2 users}} nae shown)',
# Search results
'searchresults' => 'Rake results',
'saveprefs' => 'Hain preferences',
'prefs-editing' => 'Editin',
'searchresultshead' => 'Rake result settins',
-'resultsperpage' => 'Hits tae shaw per page',
'stub-threshold-disabled' => 'Tuckie',
'recentchangescount' => 'Nummer o teitles in recent chynges',
'savedprefs' => 'Yer preferences haes been hained.',
'watchlist-details' => "{{PLURAL:$1|$1 page|$1 pages}} on yer watchleet, nae countin' collogue pages.",
'watchlistcontains' => 'Yer watchleet contains $1 {{PLURAL:$1|page|pages}}.',
'iteminvalidname' => "Trouble wi eitem '$1', invalid name...",
-'wlnote' => "Ablo is the lest $1 {{PLURAL:$1|chynge|chynges}} in the lest {{PLURAL:$2|hour|'''$2''' hours}}.",
'wlshowlast' => 'Shaw lest $1 hours $2 days $3',
'watchlist-options' => 'Watchleet options',
$messages = array(
# User preference toggles
'tog-underline' => 'Sotturìnia li cullegamenti:',
-'tog-justify' => 'Alliniamentu di li paràgrafi giusthifiggaddu',
'tog-hideminor' => "Cua li mudìfigghi minori i' l'ulthimi mudìfigghi",
'tog-extendwatchlist' => "Musthra tutti li mudìfigghi a li abbaidaddi ippiziari, nò soru l'ulthimi.",
'tog-usenewrc' => "Utirizza l'ulthimi mudìfigghi abanzaddi (dumanda JavaScript)",
'tog-numberheadings' => 'Numarazioni otomàtigga di li tìturi di sezzioni',
'tog-showtoolbar' => "Musthra barra di l'isthrumenti di mudìfigga (dumanda JavaScript)",
'tog-editondblclick' => 'Mudìfigga di li pàgini attrabessu dóppiu clic (dumanda JavaScript)',
-'tog-editsection' => 'Mudìfigga di li sezzioni attrabessu lu cullegamentu [mudifigga]',
'tog-editsectiononrightclick' => "Mudìfigga di li sezzioni attrabessu lu clic dresthu i' lu tìturu (nezzessàriu JavaScript)",
-'tog-showtoc' => "Musthra l'indizi pa li pàgini cun più di 3 sezzioni",
'tog-rememberpassword' => "Ammenta la paràura d'órdhini (nezzessàriu azzittà li cookie) (for a maximum of $1 {{PLURAL:$1|dì|dì}})",
'tog-watchcreations' => "Aggiungi li pàgini criaddi a l'abbaidaddi ippiziari",
'tog-watchdefault' => "Aggiungi li pàgini mudìfiggaddi a l'abbaidaddi ippiziari",
'lineno' => 'Riga $1:',
'compareselectedversions' => 'Cunfronta li versioni sciubaraddi',
'editundo' => 'annulla',
-'diff-multi' => '({{PLURAL:$1|Una ribisioni di mezu nò musthradda|$1 ribisioni di mezu nò musthraddi}}.)',
# Search results
'searchresults' => 'Risulthaddi di la zercha',
'rows' => 'Righi:',
'columns' => 'Curonni:',
'searchresultshead' => 'Zercha',
-'resultsperpage' => 'Nùmaru di risulthaddi pa pàgina:',
'stub-threshold' => 'Varori mìminu pa i <a href="#" class="stub">cullegamenti a li sàgumi</a>:',
'recentchangesdays' => 'Nùmaru di dì da musthrà i li ulthimi mudìfigghi:',
'recentchangescount' => 'Numaru pridifiniddu di mudifigghi da musthrà:',
'deadendpages' => 'Pàgini chena iscidda',
'deadendpagestext' => 'Li sighenti pàgini so chena cullegamenti bessu althri pàgini di {{SITENAME}}.',
'protectedpages' => 'Pàgini prutiggiddi',
+'protectedpages-noredirect' => 'Cuà rinvii',
'protectedpagesempty' => 'Abà nò vi so pàgini prutiggiddi.',
'protectedtitles' => 'Tìturi prutiggiddi',
'protectedtitlesempty' => 'Abà nò vi so tìturi prutiggiddi.',
'watchmethod-list' => "cuntrollu di l'abbaidaddi ippiziari pa mudìfigghi rizzenti",
'watchlistcontains' => "La listha di l'abbaidaddi ippiziari cunteni {{PLURAL:$1|una pàgina|$1 pàgini}}.",
'iteminvalidname' => "Probremi cu' la pàgina '$1', innòmmu nò vàriddu...",
-'wlnote' => "Inogghi {{PLURAL:$1|è erencadda la mudìfigga più rizzenti arriggadda|so erencaddi li '''$1''' mudìfigghi più rizzenti arriggaddi}} {{PLURAL:$2|i' la ulthima ora|i' li ulthimi '''$2''' ori}}.",
'wlshowlast' => 'Musthra li ulthimi $1 ori $2 dì $3',
'watchlist-options' => 'Opzioni abbaidaddi ippiziari',
'tooltip-pt-watchlist' => "La listha di li pàgini ch'isthai tinendi sottu osseivvazioni",
'tooltip-pt-mycontris' => 'Listha di li tó cuntributi',
'tooltip-pt-login' => 'La registhrazioni è cunsigliadda, puru si nò è ubbrigatória',
-'tooltip-pt-anonlogin' => 'La registhrazioni è cunsigliadda, puru si nò è ubbrigatória.',
'tooltip-pt-logout' => 'Iscidda',
'tooltip-ca-talk' => 'Vèdi li dischussioni reratibi a chistha pàgina',
'tooltip-ca-edit' => "Pói mudìfiggà chistha pàgina. Pa piazeri usa lu buttoni d'antiprimma primma di saivvà",
'tog-numberheadings' => 'Nummaraste bajilčállagiid',
'tog-showtoolbar' => 'Čájet rievdadangaskaomiid',
'tog-editondblclick' => 'Rievdat siidduid duppaldeaddilemiin (JavaScript)',
-'tog-editsection' => 'Čájet rievdadanliŋkkaid juohke oasáža bajábealde',
'tog-editsectiononrightclick' => 'Rievdat osiid nu ahte deaddilat bajilčállaga sáhpána olgeš boaluin (JavaScript)',
-'tog-showtoc' => 'Čájet sisdoallologahallama siidduin, main lea eanet go golbma bajilčállaga',
'tog-rememberpassword' => 'Muite mu dieđuid dán dihtoris (for a maximum of $1 {{PLURAL:$1|day|days}})',
'tog-watchcreations' => 'Lasit siidduid maid lean álggahan mu čuovvunlistui',
'tog-watchdefault' => 'Lasit čuovvunlistui siidduid maid lean ođasmahttán',
'compareselectedversions' => 'Veardde válljejuvvon veršuvnnaid',
'showhideselectedversions' => 'Čájet/čiega válljejuvvon veršuvnnaid',
'editundo' => 'šluhtte',
-'diff-multi' => '(Veršuvnnaid gaskas {{PLURAL:$1|okta rievdadus|$1 eará rievdadusa}}.)',
# Search results
'searchresults' => 'Ohcanbohtosat',
'rows' => 'Gurgadasa:',
'columns' => 'Kolumnat',
'searchresultshead' => 'Ohcan',
-'resultsperpage' => 'Bohtosa juohke siiddus',
'recentchangescount' => 'Siiddui mearri varas rievdadusain',
'savedprefs' => 'Du ásahusid vurken lihkosmuvai.',
'timezonelegend' => 'Áigeavádat',
'watchmethod-list' => 'dárkistuvvo čuovvunlisttu siidduid varas rievdadusat',
'watchlistcontains' => 'Du čuovvunlisttus {{PLURAL:$1|lea okta siidu|leat $1 siiddu}}.',
'iteminvalidname' => 'Siidduin $1 ledje váttisvuođat! Siiddu namas lea feaila.',
-'wlnote' => "Vuolábealde lea '''$1''' {{PLURAL:$1|rievdadus|rievdadusa}} maŋimus {{PLURAL:$2||'''$2'''}} diimma siste.",
'wlshowlast' => 'Čájet maŋimus $1 diimmu dahje $2 beaivvi $3',
# Displayed when you click the "watch" button and it is in the process of watching
'tooltip-pt-watchlist' => 'Listu siidduin, maid rievdadusaid don čuovut',
'tooltip-pt-mycontris' => 'Listu iežas rievdadusain',
'tooltip-pt-login' => 'Čálligoađe sisa dahje ráhkat geavaheaddjidovddaldaga',
-'tooltip-pt-anonlogin' => 'Čálligoađe sisa dahje ráhkat geavaheaddjidovddaldaga',
'tooltip-pt-logout' => 'Logge olggos',
'tooltip-ca-talk' => 'Ságastala sisdoalus',
'tooltip-ca-edit' => 'Rievdat dán siiddu',
$fallback = 'fr';
+// Remove French aliases
+$namespaceGenderAliases = array();
+
$messages = array(
# User preference toggles
'tog-underline' => 'Gbënëngö-gbê',
$messages = array(
# User preference toggles
'tog-underline' => 'Pabrauktė nūruodas:',
-'tog-justify' => 'Līgintė pastraipas palē abi poses',
'tog-hideminor' => 'Pakavuotė mažus pataisėmus vielībūju taisīmu sārašė',
'tog-extendwatchlist' => 'Ėšpliestė keravuojamu sāraša, kū ruodītu vėsus tėnkamus pakeitėmus',
-'tog-usenewrc' => 'Pažongē ruodomė vielibė̅jė pakeitėmā (rēk JavaScript)',
+'tog-usenewrc' => 'Grupoutė keitėmus vielībūsiūs pakeitėmūs ė keravuojamu poslapiu sārašė',
'tog-numberheadings' => 'Autuomatėškā numeroutė skėrsnelios',
'tog-showtoolbar' => 'Ruodītė redagavėma rakondinė (JavaScript)',
'tog-editondblclick' => 'Poslapiu redagavėms dvėgobu paspaudėmu (JavaScript)',
-'tog-editsection' => 'Ijongtė skėrsneliu redagavėma nauduojant nūruodas [taisītė]',
'tog-editsectiononrightclick' => 'Ijongtė skėrsneliu redagavėma paspaudos skėrsnelė pavadėnėma<br />dešėniouju pelies klavėšu (JavaScript)',
-'tog-showtoc' => 'Ruodītė torėni, jē poslapī daugiau kāp 3 skėrsnelē',
'tog-rememberpassword' => 'Atmintė prėsėjongėma infuormacėjė šėtom kuompioterī (daugiausē $1 {{PLURAL:$1|dėina|dėinuom}})',
'tog-watchcreations' => 'Pridietė poslapius, katrūs sokorio, i keravuojamu sāraša',
'tog-watchdefault' => 'Pridietė poslapius, katrūs taisau, i keravuojamu sāraša',
'history-fieldset-title' => 'Naršītė istuorėjuo',
'history-show-deleted' => 'Tėktās ėštrintė',
'histfirst' => 'Seniausė',
-'histlast' => 'VielibÄ\97Ì\85jė',
+'histlast' => 'VielibÄ\97Ì\84jė',
'historysize' => '($1 {{PLURAL:$1|baits|baitā|baitu}})',
'historyempty' => '(nieka nier)',
'lineno' => 'Eilotė $1:',
'compareselectedversions' => 'Palīgintė pasėrinktas versėjės',
'editundo' => 'atšauktė',
-'diff-multi' => '($2 {{PLURAL:$2|nauduotoja|nauduotoju|naudotoju}} $1 {{PLURAL:$1|tarpėnis keitėms nier ruodomos|tarpėnē keitėmā nier ruodomė|tarpėniu keitėmu nier ruodoma}})',
# Search results
'searchresults' => 'Paėiškuos rezoltatā',
'powersearch-legend' => 'Prapliesta paėiška',
'powersearch-ns' => 'Ėiškoutė vardū srėtīsė:',
'powersearch-redir' => 'Itrauktė paradresavėmus',
+'powersearch-togglelabel' => 'Pažīmietė:',
+'powersearch-toggleall' => 'Vėskon',
+'powersearch-togglenone' => 'Nieka',
'search-external' => 'Ėšuorėnė paėiška',
# Preferences page
'prefs-skin' => 'Ėšruoda',
'skin-preview' => 'Parveiza',
'datedefault' => 'Juokė pasėrėnkėma',
+'prefs-beta' => 'Beta fonkcėjės',
'prefs-datetime' => 'Data ė čiesos',
'prefs-personal' => 'Nauduotuojė pruopilis',
'prefs-rc' => 'Vielībė̅jė pakeitėmā',
'prefs-watchlist-edits-max' => '(dėdliausias skaitlius: 1000)',
'prefs-misc' => 'Ivairė nustatīmā',
'prefs-resetpass' => 'Keistė slaptažuodi',
+'prefs-rendering' => 'Ėšruoda',
'saveprefs' => 'Ėšsauguotė',
'restoreprefs' => 'Atstatītė vėsus numatītūsius nustatīmus',
'prefs-editing' => 'Redagavėms',
'rows' => 'Eilotės:',
'columns' => 'Štolpalē:',
'searchresultshead' => 'Paėiškuos nostatīmā',
-'resultsperpage' => 'Rezoltatu poslapie:',
'stub-threshold' => 'Minimums <a href="#" class="stub">nabėngta poslapė</a> fuormatavėmō:',
'recentchangesdays' => 'Ruodomas dėinas vielībūju pakeitėmu sārašė:',
'recentchangesdays-max' => '(daugiausē $1 {{PLURAL:$1|dėina|dėinū|dėinas}})',
'username' => 'Nauduotuojė vards:',
'uid' => 'Nauduotuojė ID:',
'prefs-memberingroups' => '{{PLURAL:$1|Gropės|Gropiu}} narīs:',
+'prefs-registration' => 'Ožsėregėstravėma čiesos:',
'yourrealname' => 'Tėkros vards:',
'yourlanguage' => 'Aplėnkuos kalba:',
'yourvariant' => 'Variants',
'email' => 'El. pašts',
'prefs-help-realname' => 'Tėkrs vards nier privaluoms, vuo jēgo Tamsta ana ivesėt, ons bus nauduojams Tamstas darba pažīmiejėmō.',
'prefs-help-email' => 'El. pašta adresos nier privaloms, ale uns leid Tamstā gautė nauja slaptažuodi, jēgo pamėršuot kuoks uns bova, ė tēpuogi Tamsta galėt leistė kėtėims pasėiktė Tamsta par Tamstas nauduotuojė a nauduotuojė aptarėma poslapi neatsklėidont Tamstas tapatoma.',
+'prefs-info' => 'Glavnuojė infuormacėjė',
+'prefs-i18n' => 'Kalbuos nustatīmā',
+'prefs-dateformat' => 'Datuos skvarma',
+'prefs-timeoffset' => 'Čiesa skėrtoms',
+'prefs-advancedrc' => 'Papėlduomė nustatīmā',
+'prefs-diffs' => 'Skėrtomā',
# User rights
'userrights' => 'Nauduotuoju teisiu valdīms',
'nchanges' => '$1 {{PLURAL:$1|pakeitėms|pakeitėmā|pakeitėmu}}',
'recentchanges' => 'Vielībė̅jė pakeitėmā',
'recentchanges-legend' => 'Vielībuju pakeitėmu pasėrinkėmā',
-'recentchanges-summary' => 'Tamė poslapī īr patīs vielībė̅ jė paketėmā tom pruojėktė.',
+'recentchanges-summary' => 'Keravuokėt patius vielībiausius wiki pakeitėmus tamė poslapī.',
'recentchanges-feed-description' => 'Keravuokėt patius vielībiausius pakeitėmus pruojektō tamė šaltėnī.',
'recentchanges-label-newpage' => 'Šėto keitėmo sukurts naus poslapis',
'recentchanges-label-minor' => 'Tas īr mažos pataisīms',
'statistics-header-edits' => 'Redagavėmu statėstėka',
'statistics-header-views' => 'Parveizu statistėka',
'statistics-header-users' => 'Nauduotuoju statėstėka',
+'statistics-header-hooks' => 'Kėta statėstėka',
'statistics-articles' => 'Torėnė poslapē',
'statistics-pages' => 'Poslapē',
+'statistics-pages-desc' => 'Vėsė poslapē, terp anū: aptarėma, nukrėipėmu ė kėtė.',
'statistics-files' => 'Ikeltė failā',
'statistics-edits' => 'Poslapiu redagavėmu skaitlius nū {{SITENAME}} sokūrėma',
'statistics-edits-average' => 'Vėdotėnis keitėmu skaitlius poslapiō',
'statistics-users' => 'Ožsėregėstravosiu [[Special:ListUsers|nauduotuoju]]',
'statistics-users-active' => 'Aktīviu nauduotuoju',
+'statistics-users-active-desc' => 'Nauduotuojē, katrėi par {{PLURAL:$1|paskiausė dėina|paskiausė 2 dėinė|paskiausės $1 dėinas|paskiausiu $1 dėinū}} padėrba keitėmu',
'statistics-mostpopular' => 'Daugiausē ruodītė poslapē',
'doubleredirects' => 'Dvėgobė paradresavėmā',
Īr galėmībė somažintė rezoltatu skaitliu patėkslėnont vēksma tėpa, nauduotuojė a sosėjosė poslapė.',
'logempty' => 'Istuorėjuo nier anėjuokiū atitinkontiu atsėtėkimu.',
'log-title-wildcard' => 'Ėiškuotė pavadinėmu, katrė prasėded šėtuo teksto',
+'showhideselectedlogentries' => 'Ruodītė/kavuotė sāraša ponktus, katrūs pasėrėnkot',
# Special:AllPages
'allpages' => 'Vėsė straipsnē',
'allpagesprefix' => 'Ruodītė poslapios so prīdelēs:',
'allpagesbadtitle' => 'Douts poslapė pavadėnėms īr neteisings a tor terpkalbėnė a terppruojektėnė prīdielė. Anamė īr vėns a kelė žėnklā, katrū negal nauduotė pavadėnėmūs.',
'allpages-bad-ns' => '{{SITENAME}} netor „$1“ vardū srėtėis.',
+'allpages-hide-redirects' => 'Kavuotė nukrėipėmus',
# Special:Categories
'categories' => 'Kateguorėjės',
# Special:ListGroupRights
'listgrouprights' => 'Nauduotuoju gropiu teisės',
'listgrouprights-group' => 'Gropė',
-'listgrouprights-members' => '(nariū sārošos)',
+'listgrouprights-members' => '(nariū sārašos)',
# Email user
'mailnologin' => 'Nier adresa',
'watchmethod-recent' => 'tėkrėnamė vielībė̅jė pakeitėmā keravuojamiems poslapiams',
'watchmethod-list' => 'Ėiškuoma vielībūju pakeitėmu keravuojamūs poslapiūs',
'watchlistcontains' => 'Tamstas kervuojamu sārašė īr $1 {{PLURAL:$1|poslapis|poslapē|poslapiu}}.',
-'wlnote' => "Ruoduoma '''$1''' paskotėniu pakeitėmu, atlėktū par '''$2''' paskotėniu adīnu.",
'wlshowlast' => 'Ruodītė paskotėniu $1 adīnu, $2 dėinū a $3 pakeitėmus',
'watchlist-options' => 'Keravuojamu sāroša pasėrinkėmā',
'rollback' => 'Atmestė pakeitėmos',
'rollback_short' => 'Atmestė',
'rollbacklink' => 'atmestė',
+'rollbacklinkcount' => 'atmestė $1 {{PLURAL:$1|keitėms|keitėmo|keitėmus|keitėmu}}',
'rollbackfailed' => 'Atmetims napavīka',
'cantrollback' => 'Negalėma atmestė redagavėma; paskotinis keitės nauduotuos īr tuo poslapė autorius.',
'alreadyrolled' => 'Nepavīka atmestė paskotėnė [[User:$2|$2]] ([[User talk:$2|Aptarėms]]) darīta straipsnė [[$1]] keitėma;
# Namespace form on various pages
'namespace' => 'Vardū srėtis:',
'invert' => 'Žīmietė prīšėngā',
+'namespace_association' => 'Sosėrėšos vardū srėtės',
'blanknamespace' => '(Pagrėndinė)',
# Contributions
* @file
*
* @author Kaganer
+ * @author Kolega2357
* @author Nemo bis
* @author OC Ripper
* @author לערי ריינהארט
$messages = array(
# User preference toggles
'tog-underline' => 'Podvuci linkove:',
-'tog-justify' => 'Uravnaj pasuse',
'tog-hideminor' => 'Sakrij manje izmjene u spisku nedavnih izmjena',
'tog-hidepatrolled' => 'Sakrij patrolirane izmjene u nedavnim promjenama',
'tog-newpageshidepatrolled' => 'Sakrij patrolirane stranice sa spiska novih stranica',
'tog-numberheadings' => 'Automatski numeriši podnaslove',
'tog-showtoolbar' => 'Pokaži alatnu traku (potreban JavaScript)',
'tog-editondblclick' => 'Izmijeni stranice dvostrukim klikom (potreban JavaScript)',
-'tog-editsection' => 'Omogući uređivanje sekcija preko [uredi] linkova',
'tog-editsectiononrightclick' => 'Uključite uređivanje odjeljka sa pritiskom na desno dugme miša u naslovu odjeljka (JavaScript)',
-'tog-showtoc' => 'Prikaži sadržaj (u svim stranicama sa više od tri podnaslova)',
'tog-rememberpassword' => 'Upamti moju prijavu za ovaj preglednik (za maksimum od $1 {{PLURAL:$1|dan|dana}})',
'tog-watchcreations' => 'Dodaj stranice koje sam stvorio i dadtoteke koje sam poslao u moj spisak praćenih stranica',
'tog-watchdefault' => 'Dodaj stranice i datoteke koje izmijenim u spisak praćenja',
'editfont-serif' => 'Slova serif',
# Dates
-'sunday' => 'nedjelja',
-'monday' => 'ponedjeljak',
-'tuesday' => 'utorak',
-'wednesday' => 'srijeda',
-'thursday' => 'Ä\8detvrtak',
-'friday' => 'petak',
-'saturday' => 'subota',
-'sun' => 'Ned',
-'mon' => 'Pon',
-'tue' => 'Uto',
-'wed' => 'Sri',
-'thu' => 'Čet',
-'fri' => 'Pet',
-'sat' => 'Sub',
-'january' => 'januar',
-'february' => 'februar',
-'march' => 'mart',
-'april' => 'april',
-'may_long' => 'maj',
-'june' => 'jun',
-'july' => 'jul',
-'august' => 'august',
-'september' => 'septembar',
-'october' => 'oktobar',
+'sunday' => 'Nedjelja/Недеља',
+'monday' => 'Ponedjeljak / Понедељак',
+'tuesday' => 'Utorak/Уторак',
+'wednesday' => 'Srijeda/Среда',
+'thursday' => 'Ä\8cetvrtak/ЧеÑ\82вÑ\80Ñ\82ак',
+'friday' => 'Petak/Петак',
+'saturday' => 'Subota/Субота',
+'sun' => 'ned-нед',
+'mon' => 'pon-пон',
+'tue' => 'uto-уто',
+'wed' => 'sri-сре',
+'thu' => 'чет-čet',
+'fri' => 'pet-пет',
+'sat' => 'sub-суб',
+'january' => 'januar-сијечањ',
+'february' => 'februar-вељача',
+'march' => 'mart-ожујак',
+'april' => 'april-травањ',
+'may_long' => 'maj-свибањ',
+'june' => 'jun-липањ',
+'july' => 'jul-српањ',
+'august' => 'avgust-коловоз',
+'september' => 'septembar-рујан',
+'october' => 'oktobar-листопад',
'november' => 'novembar',
-'december' => 'decembar',
-'january-gen' => 'januar',
-'february-gen' => 'februar',
-'march-gen' => 'mart',
-'april-gen' => 'april',
-'may-gen' => 'maj',
-'june-gen' => 'jun',
-'july-gen' => 'jul',
-'august-gen' => 'august',
-'september-gen' => 'septembar',
-'october-gen' => 'oktobar',
+'december' => 'decembar-просинац',
+'january-gen' => 'januara-сијечња',
+'february-gen' => 'februara-вељаче',
+'march-gen' => 'marta-ожујка',
+'april-gen' => 'aprila-травња',
+'may-gen' => 'маја-свибња',
+'june-gen' => 'junа-липња',
+'july-gen' => 'jula-српња',
+'august-gen' => 'augusta-коловоза',
+'september-gen' => 'septembra-рујна',
+'october-gen' => 'oktobra-листопада',
'november-gen' => 'novembar',
-'december-gen' => 'decembar',
-'jan' => 'jan',
-'feb' => 'feb',
-'mar' => 'mar',
-'apr' => 'apr',
-'may' => 'maj',
-'jun' => 'jun',
-'jul' => 'jul',
-'aug' => 'aug',
-'sep' => 'sep',
-'oct' => 'okt',
+'december-gen' => 'decembra-просинца',
+'jan' => 'jan-сиј',
+'feb' => 'feb-вељ',
+'mar' => 'mar-ожу',
+'apr' => 'apr-тра',
+'may' => 'maj-сви',
+'jun' => 'jun-лип',
+'jul' => 'jul-срп',
+'aug' => 'aug-кол',
+'sep' => 'sep-руј',
+'oct' => 'okt-лис',
'nov' => 'nov',
-'dec' => 'dec',
+'dec' => 'dec-про',
'january-date' => '$1. januar',
'february-date' => '$1. februar',
'march-date' => '$1. mart',
'about' => 'O...',
'article' => 'Stranica sadržaja (članak)',
'newwindow' => '(otvara se u novom prozoru)',
-'cancel' => 'Poništi',
+'cancel' => 'Odustani - Одустани',
'moredotdotdot' => 'Još...',
'morenotlisted' => 'Više nije prikazano...',
-'mypage' => 'Stranica',
-'mytalk' => 'Razgovor',
+'mypage' => 'Moja stranica',
+'mytalk' => 'Moj razgovor / Мој разговор',
'anontalk' => 'Razgovor za ovu IP adresu',
-'navigation' => 'Navigacija',
-'and' => ' i',
+'navigation' => 'Navigacija - Навигација',
+'and' => 'i/и',
# Cologne Blue skin
'qbfind' => 'Pronađite',
-'qbbrowse' => 'Prelistajte',
+'qbbrowse' => 'Pregledaj - Прегледај',
'qbedit' => 'Uredi',
'qbpageoptions' => 'Opcije stranice',
'qbmyoptions' => 'Moje opcije',
'variants' => 'Varijante',
'navigation-heading' => 'Navigacijski meni',
-'errorpagetitle' => 'Greška',
+'errorpagetitle' => 'Greška - Грешка',
'returnto' => 'Povratak na $1.',
'tagline' => 'Izvor: {{SITENAME}}',
-'help' => 'Pomoć',
-'search' => 'Pretraga',
+'help' => 'Pomoć / Помоћ',
+'search' => 'Traži / Тражи',
'searchbutton' => 'Traži',
-'go' => 'Idi',
+'go' => 'Idi / Иди',
'searcharticle' => 'Idi',
'history' => 'Historija stranice',
'history_short' => 'Historija',
'updatedmarker' => 'promjene od moje zadnje posjete',
-'printableversion' => 'Verzija za ispis',
+'printableversion' => 'Za štampanje / За штампање',
'permalink' => 'Trajni link',
'print' => 'Štampa',
'view' => 'Vidi',
-'edit' => 'Uredi',
+'edit' => 'Uredi / Уреди',
'create' => 'Napravi',
'editthispage' => 'Uredite ovu stranicu',
'create-this-page' => 'Stvori ovu stranicu',
-'delete' => 'Obriši',
+'delete' => 'Obrisati - Обрисати',
'deletethispage' => 'Obriši ovu stranicu',
'undeletethispage' => 'Vrati ovu stranicu',
'undelete_short' => 'Vrati obrisanih {{PLURAL:$1|$1 izmjenu|$1 izmjene|$1 izmjena}}',
'viewdeleted_short' => 'Pogledaj {{PLURAL:$1|jednu obrisanu izmjenu|$1 obrisane izmjene|$1 obrisanih izmjena}}',
-'protect' => 'Zaštiti',
+'protect' => 'Zaštiti / Заштити',
'protect_change' => 'promijeni',
'protectthispage' => 'Zaštiti ovu stranicu',
'unprotect' => 'Promijeni zaštitu',
'unprotectthispage' => 'Promijeni zaštitu za ovu stranicu',
-'newpage' => 'Nova stranica',
-'talkpage' => 'Razgovaraj o ovoj stranici',
+'newpage' => 'Nova stranica / Нова страница',
+'talkpage' => 'Razgovaraj o ovoj stranici - Разговарај о овој страници',
'talkpagelinktext' => 'Razgovor',
'specialpage' => 'Posebna stranica',
'personaltools' => 'Lični alati',
-'postcomment' => 'Nova sekcija',
+'postcomment' => 'Pošaljite komentar - Пошаљите коментар',
'articlepage' => 'Pogledaj stranicu sa sadržajem (članak)',
-'talk' => 'Razgovor',
+'talk' => 'Razgovor / Разговор',
'views' => 'Pregledi',
-'toolbox' => 'Traka sa alatima',
+'toolbox' => 'Alatke / Алатке',
'userpage' => 'Pogledajte korisničku stranicu',
'projectpage' => 'Pogledajte stranicu projekta',
'imagepage' => 'Vidi stranicu datoteke/fajla',
'viewhelppage' => 'Pogledajte stranicu za pomoć',
'categorypage' => 'Pogledajte stranicu kategorije',
'viewtalkpage' => 'Pogledajte raspravu',
-'otherlanguages' => 'Na drugim jezicima',
+'otherlanguages' => 'Drugi jezici / Други језици',
'redirectedfrom' => '(Preusmjereno sa $1)',
'redirectpagesub' => 'Preusmjeri stranicu',
'lastmodifiedat' => 'Ova stranica je posljednji put izmijenjena $1, $2.',
# 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).
'aboutsite' => 'O projektu {{SITENAME}}',
'aboutpage' => 'Project:O_projektu_{{SITENAME}}',
-'copyright' => 'Sadržaj je dostupan pod $1.',
+'copyright' => 'Pod licencom / Под лиценцом: $1.',
'copyrightpage' => '{{ns:project}}:Autorska_prava',
'currentevents' => 'Trenutni događaji',
'currentevents-url' => 'Project:Novosti',
'disclaimerpage' => 'Project:Uslovi korištenja, pravne napomene i odricanje odgovornosti',
'edithelp' => 'Pomoć pri uređivanju',
'helppage' => 'Help:Sadržaj',
-'mainpage' => 'Glavna strana',
-'mainpage-description' => 'Glavna strana',
+'mainpage' => 'Glavna stranica / Главна страница',
+'mainpage-description' => 'Glavna stranica / Главна страница',
'policy-url' => 'Project:Pravila',
'portal' => 'Portal zajednice',
'portal-url' => 'Project:Portal_zajednice',
'ok' => 'da',
'retrievedfrom' => 'Dobavljeno iz "$1"',
-'youhavenewmessages' => 'Imate $1 ($2).',
+'youhavenewmessages' => 'Imate / Имате $1 ($2).',
'youhavenewmessagesfromusers' => 'Imate $1 od {{PLURAL:$3|drugog korisnika|$3 korisnika|$3 korisnika}} ($2).',
'youhavenewmessagesmanyusers' => 'Imate $1 od mnogo korisnika ($2).',
'newmessageslinkplural' => '{{PLURAL:$1|novu poruku|$1 nove poruke|$1 novih poruka}}',
'editlink' => 'uredi',
'viewsourcelink' => 'pogledaj kod',
'editsectionhint' => 'Uredi sekciju: $1',
-'toc' => 'Sadržaj',
-'showtoc' => 'prikaži',
-'hidetoc' => 'sakrij',
+'toc' => 'Sadržaj / Садржај',
+'showtoc' => 'prikaži / прикажи',
+'hidetoc' => 'sakrij - сакриј',
'collapsible-collapse' => 'Sakrij',
'collapsible-expand' => 'Proširi',
'thisisdeleted' => 'Pogledaj ili vrati $1?',
'sort-ascending' => 'Poredaj rastuće',
# Short words for each namespace, by default used in the namespace tab in monobook
-'nstab-main' => 'Stranica',
-'nstab-user' => 'Korisnička stranica',
+'nstab-main' => 'Članak / Чланак',
+'nstab-user' => 'Korisnik / Корисник',
'nstab-media' => 'Mediji',
'nstab-special' => 'Posebna stranica',
'nstab-project' => 'Stranica projekta',
'nstab-image' => 'Datoteka',
-'nstab-mediawiki' => 'Poruka',
-'nstab-template' => 'Šablon',
-'nstab-help' => 'Stranica pomoći',
-'nstab-category' => 'Kategorija',
+'nstab-mediawiki' => 'Poruka / Порука',
+'nstab-template' => 'Šablon / Шаблон',
+'nstab-help' => 'Pomoć / Помоћ',
+'nstab-category' => 'Kategorija / Категорија',
# Main script and global functions
'nosuchaction' => 'Nema takve akcije',
Lista valjanih posebnih stranica se može naći na [[Special:SpecialPages|{{int:specialpages}}]].',
# General errors
-'error' => 'Greška',
+'error' => 'Greška - Грешка',
'databaseerror' => 'Greška u bazi podataka',
'laggedslavemode' => "'''Upozorenje''': Stranica ne mora sadržavati posljednja ažuriranja.",
'readonly' => 'Baza podataka je zaključana',
U slučaju da se ne radi o gore navedenom, moguće je da ste pronašli grešku u programu.
Molimo Vas da ovo prijavite [[Special:ListUsers/sysop|administratoru]] sa navođenjem tačne adrese stranice',
'missingarticle-rev' => '(izmjena#: $1)',
-'missingarticle-diff' => '(Razl: $1, $2)',
+'missingarticle-diff' => '(razlika: $1, $2)',
'readonly_lag' => 'Baza podataka je zaključana dok se sekundarne baze podataka na serveru ne sastave sa glavnom.',
'internalerror' => 'Interna pogreška',
'internalerror_info' => 'Interna greška: $1',
'welcomeuser' => 'Dobro došli, $1!',
'welcomecreation-msg' => 'Vaš korisnički račun je napravljen.
Ne zaboravite izmijeniti vlastite [[Special:Preferences|{{SITENAME}} postavke]].',
-'yourname' => 'Korisničko ime:',
+'yourname' => 'Vaše korisničko ime / Ваше корисничко име',
'userlogin-yourname' => 'Korisničko ime',
'userlogin-yourname-ph' => 'Unesite svoje korisničko ime',
'createacct-another-username-ph' => 'Unesi korisničko ime',
-'yourpassword' => 'Lozinka/zaporka:',
+'yourpassword' => 'Vaša šifra / Ваша шифра:',
'userlogin-yourpassword' => 'Lozinka/zaporka',
'userlogin-yourpassword-ph' => 'Unesite svoju lozinku/zaporku',
'createacct-yourpassword-ph' => 'Unesite lozinku/zaporku',
-'yourpasswordagain' => 'Ponovno utipkajte lozinku/zaporku:',
+'yourpasswordagain' => 'Ponovo upišite šifru / Поново упишите шифру',
'createacct-yourpasswordagain' => 'Potvrdite lozinku/zaporku',
'createacct-yourpasswordagain-ph' => 'Unesite lozinku/zaporku ponovno',
'remembermypassword' => 'Upamti moju lozinku na ovom kompjuteru (za maksimum od $1 {{PLURAL:$1|dan|dana}})',
'yourdomainname' => 'Vaš domen:',
'password-change-forbidden' => 'Ne možete da promenite lozinku na ovom vikiju.',
'externaldberror' => 'Došlo je do greške pri vanjskoj autorizaciji baze podataka ili vam nije dopušteno osvježavanje Vašeg vanjskog korisničkog računa.',
-'login' => 'Prijavi se',
+'login' => 'Prijavi me - Пријави ме',
'nav-login-createaccount' => 'Prijavi se / Registruj se',
'loginprompt' => "Morate imati kolačiće ('''cookies''') omogućene da biste se prijavili na {{SITENAME}}.",
'userlogin' => 'Prijavi se / stvori korisnički račun',
'userloginnocreate' => 'Prijavi se',
-'logout' => 'Odjavi me',
-'userlogout' => 'Odjava',
+'logout' => 'Odjavi se - Одјави се',
+'userlogout' => 'Odjavi se / Одјави се',
'notloggedin' => 'Niste prijavljeni',
'userlogin-noaccount' => 'Nemate račun?',
'userlogin-joinproject' => 'Pridružite se {{SITENAME}}',
'nologin' => "Nemate korisničko ime? '''$1'''.",
'nologinlink' => 'Otvorite račun',
-'createaccount' => 'Napravi korisnički račun',
+'createaccount' => 'Napraviti novi nalog / Направити нови налог',
'gotaccount' => "Imate račun? '''$1'''.",
-'gotaccountlink' => 'Prijavi se',
+'gotaccountlink' => 'Prijavite se / Пријавите се',
'userlogin-resetlink' => 'Zaboravili ste detalje vaše prijave?',
'userlogin-resetpassword-link' => 'Resetirajte svoju lozinku/zaporku',
'helplogin-url' => 'Help:Logiranje',
Provjerite da li su cookies omogućeni, ponovo učitajte ovu stranicu i pokušajte ponovo.',
'noname' => 'Niste izabrali ispravno korisničko ime.',
'loginsuccesstitle' => 'Prijavljivanje uspješno',
-'loginsuccess' => "'''Sad ste prijavljeni na {{SITENAME}} kao \"\$1\".'''",
+'loginsuccess' => 'Trenutno ste prijavljeni na {{SITENAME}} kao "$1".',
'nosuchuser' => 'Ne postoji korisnik sa imenom "$1".
Korisnička imena razlikuju velika i mala slova.
Provjerite vaše kucanje ili [[Special:UserLogin/signup|napravite novi korisnički račun]].',
Provjerite da li ste dobro ukucali.',
'nouserspecified' => 'Morate izabrati korisničko ime.',
'login-userblocked' => 'Ovaj korisnik je blokiran. Prijava nije dozvoljena.',
-'wrongpassword' => 'Unijeli ste neispravnu šifru.
-Molimo Vas da pokušate ponovno.',
+'wrongpassword' => 'Šifra koju ste uneli je neodgovarajuće. Molimo, upišite je ponovo.
+
+Шифра коју сте унели је неодговарајућа. Молимо, упишите је поново.',
'wrongpasswordempty' => 'Unesena šifra je bila prazna.
Molimo Vas da pokušate ponovno.',
'passwordtooshort' => 'Lozinka mora imati najmanje {{PLURAL:$1|1 znak|$1 znakova}}.',
Molimo vas da unesete ispravnu adresu ili ostavite prazno polje.',
'cannotchangeemail' => 'Na ovom wikiju ne možete promeniti e-mail adresu računa.',
'emaildisabled' => 'Ova web-stranica ne može da šalje e-poruke.',
-'accountcreated' => 'Korisnički račun je napravljen',
-'accountcreatedtext' => 'Korisnički račun za [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|razgovor]]) je napravljen.',
+'accountcreated' => 'Korisnički nalog kreiran / Кориснички налог креиран',
+'accountcreatedtext' => 'Korisnički račun za $1 je kreiran. Кориснички налог за $1 је креиран.',
'createaccount-title' => 'Pravljenje korisničkog računa za {{SITENAME}}',
'createaccount-text' => 'Neko je napravio korisnički račun za vašu e-mail adresu na {{SITENAME}} ($4) sa imenom "$2", i sa šifrom "$3".
Trebali biste se prijaviti i promjeniti šifru.
# Edit pages
'summary' => 'Sažetak:',
'subject' => 'Tema/naslov:',
-'minoredit' => 'Ovo je manja izmjena',
-'watchthis' => 'Prati ovu stranicu',
-'savearticle' => 'Snimi stranicu',
-'preview' => 'Pretpregled',
-'showpreview' => 'Prikaži izgled',
+'minoredit' => 'Mala izmjena - Мала измена',
+'watchthis' => 'Prati / Прати',
+'savearticle' => 'Sačuvaj - Сачувај',
+'preview' => 'Pretpregled / Претпреглед',
+'showpreview' => 'Pretpregled - Претпреглед',
'showlivepreview' => 'Pretpregled uživo',
-'showdiff' => 'Prikaži izmjene',
+'showdiff' => 'Prikaži izmjene - Прикажи измене',
'anoneditwarning' => "'''Upozorenje:''' Niste prijavljeni.
Vaša IP adresa će biti zabilježena u historiji ove stranice.",
'anonpreviewwarning' => "''Niste prijavljeni. Vaša IP adresa će biti zabilježena u historiji ove stranice.''",
'nosuchsectiontitle' => 'Ne mogu pronaći sekciju',
'nosuchsectiontext' => 'Pokušali ste uređivati sekciju koja ne postoji.
Možda je premještena ili obrisana dok ste pregledavali stranicu.',
-'loginreqtitle' => 'Potrebno je prijavljivanje',
+'loginreqtitle' => 'Potrebno je da se [[{{ns:-1}}:Userlogin|prijavite]]',
'loginreqlink' => 'prijavi se',
'loginreqpagetext' => 'Morate $1 da bi ste vidjeli druge stranice.',
-'accmailtitle' => 'Lozinka poslana.',
-'accmailtext' => "Nasumično odabrana lozinka za nalog [[User talk:$1|$1]] je poslata na adresu $2.
+'accmailtitle' => 'Šifra je poslana!
+
-Lozinka za ovaj novi račun može biti promijenjena na stranici ''[[Special:ChangePassword|izmjene šifre]]'' nakon prijave.",
+Шифра је послата!',
+'accmailtext' => "Šifra za nalog '$1' je poslana na adresu $2.
+
+
+Шифра за налог '$1' је послата на адресу $2.",
'newarticle' => '(Novi)',
'newarticletext' => "Preko linka ste došli na stranicu koja još uvijek ne postoji.
* Ako želite stvoriti stranicu, počnite tipkati u okviru dolje (v. [[{{MediaWiki:Helppage}}|stranicu za pomoć]] za više informacija).
'''Još uvijek nije snimljen!'''",
'sitejspreview' => "'''Zapamtite ovo je samo izgled ovog koda JavaScripte.'''
'''Još uvijek nije snimljen!'''",
-'userinvalidcssjstitle' => "'''Upozorenje:''' Ne postoji interfejs (skin) pod imenom \"\$1\".
-Ne zaboravite da imena stranica s .css i .js kodom počinju malim slovom, npr. {{ns:user}}:Foo/vector.css, a ne {{ns:user}}:Foo/Vector.css.",
+'userinvalidcssjstitle' => "'''Upozorenje:''' Nema skina pod imenom \"\$1\".
+Upamtite da korisničke .css i .js stranice koriste naslov s malim slovom, npr. {{ns:user}}:Foo/monobook.css umjesto {{ns:user}}:Foo/Monobook.css.",
'updated' => '(Osvježeno)',
'note' => "'''Napomena:'''",
'previewnote' => "'''Ne zaboravite da je ovo samo pregled'''
Vaše izmjene su prikazane u donjem tekstu.
Moraćete da unesete svoje promjene u postojeći tekst.
'''Samo''' tekst u gornjem tekstualnom polju će biti snimljen kad pritisnete \"{{int:savearticle}}\".",
-'yourtext' => 'Vaš tekst',
+'yourtext' => 'Vaš tekst / Ваш текст',
'storedversion' => 'Uskladištena verzija',
'nonunicodebrowser' => "'''UPOZORENJE: Vaš preglednik ne podržava Unicode zapis znakova.
Molimo Vas promijenite ga prije sljedećeg uređivanja članaka. Znakovi koji nisu po ASCII standardu će se u prozoru za izmjene pojaviti kao heksadecimalni kodovi.'''",
'editingold' => "'''PAŽNJA: Vi mijenjate stariju reviziju ove stranice.
Ako je snimite, sve promjene učinjene od ove revizije će biti izgubljene.'''",
-'yourdiff' => 'Razlike',
+'yourdiff' => 'Razlike / Разлике',
'copyrightwarning' => "Molimo da uzmete u obzir kako se smatra da su svi doprinosi u {{SITENAME}} izdani pod $2 (v. $1 za detalje).
Ukoliko ne želite da vaše pisanje bude nemilosrdno uređivano i redistribuirano po tuđoj volji, onda ga nemojte ovdje objavljivati.<br />
Također obećavate kako ste ga napisali sami ili kopirali iz izvora u javnoj domeni ili sličnog slobodnog izvora.
'''NE ŠALJITE DJELA ZAŠTIĆENA AUTORSKIM PRAVOM BEZ DOZVOLE!'''",
'longpageerror' => "'''Greška: tekst koji ste uneli je veličine {{PLURAL:$1|jedan kilobajt|$1 kilobajta|$1 kilobajta}}, što je veće od {{PLURAL:$2|dozvoljenog jednog kilobajta|dozvoljena $2 kilobajta|dozvoljenih $2 kilobajta}}.'''
Stranica ne može biti sačuvana.",
-'readonlywarning' => "'''PAŽNJA: Baza je zaključana zbog održavanja, tako da nećete moći da sačuvate svoje izmjene za sada.'''
-Možda želite da kopirate i nalijepite tekst u tekst editor i sačuvate ga za kasnije.
-
-Administrator koji je zaključao bazu je naveo slijedeće objašnjenje: $1",
+'readonlywarning' => "<font color=\"#FF0000\">'''PAŽNJA:'''</font> Baza je upravo zaključana zbog održavanja,
+tako da nećete moći da snimite svoje izmene upravo sada. Možda želite da iskopirate i nalepite
+tekst u tekst editor i snimite ga za kasnije.
+<br>
+<font color=\"#FF0000\">'''ПАЖЊА:'''</font> База је управо закључана због одржавања,
+тако да нећете моћи да снимите своје измене управо сада. Можда желите да ископирате и налепите
+текст у текст едитор и снимите га за касније.",
'protectedpagewarning' => "'''PAŽNJA: Ova stranica je zaključana tako da samo korisnici sa administratorskim privilegijama mogu da je mijenjaju.'''
Posljednja stavka u registru je prikazana ispod kao referenca:",
'semiprotectedpagewarning' => "'''Pažnja:''' Ova stranica je zaključana tako da je samo registrovani korisnici mogu uređivati.
'nextrevision' => 'Novija izmjena →',
'currentrevisionlink' => 'Trenutna verzija',
'cur' => 'tren',
-'next' => 'slijed',
-'last' => 'preth',
+'next' => 'sljed - след',
+'last' => 'preth - претх',
'page_first' => 'prva',
'page_last' => 'zadnja',
'histlegend' => "Odabir razlika: označite radio dugme verzija za usporedbu i pritisnite enter ili dugme na dnu.<br />
'revdelete-hide-image' => 'Sakrij sadržaj datoteke',
'revdelete-hide-name' => 'Sakrij akciju i cilj',
'revdelete-hide-comment' => 'Sakrij izmjene komentara',
-'revdelete-hide-user' => 'Sakrij korisničko ime urednika/IP',
+'revdelete-hide-user' => 'Sakrij korisničko ime / IP adresu korisnika koji je uređivao stranicu',
'revdelete-hide-restricted' => 'Ograniči podatke za administratore kao i za druge korisnike',
'revdelete-radio-same' => '(ne mijenjaj)',
'revdelete-radio-set' => 'Da',
'lineno' => 'Linija $1:',
'compareselectedversions' => 'Uporedite označene verzije',
'showhideselectedversions' => 'Pokaži/sakrij odabrane verzije',
-'editundo' => 'ukloni ovu izmjenu',
+'editundo' => 'ukloni ovu izmjenu - уклони ову измену',
'diff-empty' => '(nema razlike)',
-'diff-multi' => '({{PLURAL:$1|Nije prikazana jedna međuverzija|Nisu prikazane $1 međuverzije|Nije prikazano $1 međuverzija}}) od strane {{PLURAL:$2|korisnika|korisnika}}',
'diff-multi-manyusers' => '({{PLURAL:$1|Nije prikazana jedna međuverzija|Nisu prikazane $1 međuverzije|Nije prikazano $1 međuverzija}}) od strane {{PLURAL:$2|korisnika|korisnika}}',
'difference-missing-revision' => 'Ne mogu da pronađem {{PLURAL:$2|jednu izmenu|$2 izmene|$2 izmena}} od ove razlike ($1).
'textmatches' => 'Tekst stranice odgovara',
'notextmatches' => 'Tekst stranice ne odgovara',
'prevn' => 'prethodna {{PLURAL:$1|$1}}',
-'nextn' => 'sljedećih {{PLURAL:$1|$1}}',
+'nextn' => 'sljedećih - следећих $1',
'prevn-title' => '{{PLURAL:$1|Prethodni $1 rezultat|Prethodna $1 rezultata|Prethodnih $1 rezultata}}',
'nextn-title' => '{{PLURAL:$1|Slijedeći $1 rezultat|Slijedeća $1 rezultata|Slijedećih $1 rezultata}}',
'shown-title' => 'Pokaži $1 {{PLURAL:$1|rezultat|rezultata}} po stranici',
'search-error' => 'Dogodila se pogreška prilikom pretraživanja: $1',
# Preferences page
-'preferences' => 'Postavke',
-'mypreferences' => 'Postavke',
+'preferences' => 'Postavke / Подешавања',
+'mypreferences' => 'Moje postavke / Моја подешавања',
'prefs-edits' => 'Broj izmjena:',
'prefs-skin' => 'Izgled (skin)',
'skin-preview' => 'Pretpregled',
'prefs-user-pages' => 'Korisničke stranice',
'prefs-personal' => 'Korisnički profil',
'prefs-rc' => 'Podešavanje nedavnih izmjena',
-'prefs-watchlist' => 'Praćene stranice',
+'prefs-watchlist' => 'Praćene stranice / Списак надгледања',
'prefs-watchlist-days' => 'Broj dana za prikaz u spisku praćenja:',
'prefs-watchlist-days-max' => '(najviše $1 {{PLURAL:$1|dan|dana}})',
'prefs-watchlist-edits' => 'Najveći broj izmjena za prikaz u proširenom spisku praćenja:',
'prefs-watchlist-edits-max' => 'Maksimalni broj: 1000',
'prefs-watchlist-token' => 'Token spiska za praćenje:',
-'prefs-misc' => 'Ostala podešavanja',
+'prefs-misc' => 'Razno / Разно',
'prefs-resetpass' => 'Promijeni lozinku',
'prefs-changeemail' => 'Promijeni E-mail',
'prefs-setemail' => 'Postavite E-mail adresu',
'rows' => 'Redova:',
'columns' => 'Kolona:',
'searchresultshead' => 'Postavke rezultata pretrage',
-'resultsperpage' => 'Pogodaka po stranici:',
'stub-threshold' => 'Formatiranje <a href="#" class="stub">linkova stranica u začetku</a> (bajtova):',
'stub-threshold-disabled' => 'Isključen/a',
'recentchangesdays' => 'Broj dana za prikaz u nedavnim izmjenama:',
'recentchangescount' => 'Broj uređivanja za prikaz po pretpostavkama:',
'prefs-help-recentchangescount' => 'Ovo uključuje nedavne izmjene, historije stranice i registre.',
'savedprefs' => 'Vaša postavke su snimljene.',
-'timezonelegend' => 'Vremenska zona:',
+'timezonelegend' => 'Vremenska zona / Временска зона',
'localtime' => 'Lokalno vrijeme:',
'timezoneuseserverdefault' => 'Koristi postavke wikija ($1)',
'timezoneuseoffset' => 'Ostalo (odredi odstupanje)',
'prefs-reset-intro' => 'Možete koristiti ovu stranicu da poništite Vaše postavke na ovom sajtu na pretpostavljene vrijednosti.
Ovo se ne može vratiti unazad.',
'prefs-emailconfirm-label' => 'E-mail potvrda:',
-'youremail' => 'E-mail:',
+'youremail' => 'Vaša e-pošta / Ваша е-пошта*',
'username' => 'Ime {{GENDER:$1|korisnika|korisnice}}:',
'uid' => '{{GENDER:$1|Korisnički}} ID:',
'prefs-memberingroups' => '{{GENDER:$2|Korisnik|Korisnica}} je član {{PLURAL:$1|grupe|grupâ}}:',
'prefs-registration' => 'Vrijeme registracije:',
-'yourrealname' => 'Vaše pravo ime:',
-'yourlanguage' => 'Jezik:',
+'yourrealname' => 'Vaše ime / Ваше име*',
+'yourlanguage' => 'Jezik interfejsa / Језик интерфејса',
'yourvariant' => 'Varijanta jezika:',
'prefs-help-variant' => 'Željena varijanta ili pravopis za prikaz stranica sa sadržajem ovog vikija.',
-'yournick' => 'Nadimak (za potpise):',
+'yournick' => 'Vaš nadimak (za potpise) / Ваш надимак (за потписе)',
'prefs-help-signature' => 'Komentari na stranicama za razgovor trebaju biti potpisani sa "<nowiki>~~~~</nowiki>" koje će biti pretvoreno u vaš potpis i vrijeme.',
'badsig' => 'Loš sirovi potpis.
Provjerite HTML tagove.',
'email' => 'E-mail',
'prefs-help-realname' => 'Pravo ime nije obavezno.
Ako izaberete da date ime, biće korišteno za pripisivanje Vašeg rada.',
-'prefs-help-email' => 'E-mail adresa je opcionalna, ali Vam omogućava da Vam se pošalje nova šifra u slučaju da je izgubite ili zaboravite.',
+'prefs-help-email' => '* E-mail (nije obavezno): omogućuje drugima da Vas kontaktiraju na korisničkoj strani ili strani za razgovor bez javnog pokazivanja Vaše elektronske adrese. Ako zaboravite šifru možemo Vam na ovu adresu poslati novu, privremenu. <br/>
+
+* Е-пошта (није обавезно): Омогућује другима да Вас контактирају на корисничкој страни или страни за разговор без јавног показивања Ваше електронске адресе. Ако заборавите шифру, можемо Вам на ову адресу послати нову, привремену.',
'prefs-help-email-others' => 'Također možete da odaberete da vas drugi kontaktiraju putem vaše korisničke stranice ili stranice za razgovor bez otkrivanja vašeg identiteta.',
'prefs-help-email-required' => 'Neophodno je navesti e-mail adresu.',
'prefs-info' => 'Osnovne informacije',
'userrights' => 'Postavke korisničkih prava',
'userrights-lookup-user' => 'Menadžment korisničkih prava',
'userrights-user-editname' => 'Unesi korisničko ime:',
-'editusergroup' => 'Uredi korisničke grupe',
+'editusergroup' => 'Menjaj Grupe Korisnika',
'editinguser' => "Mijenjate korisnička prava {{GENDER:$1|korisnika|korisnice|korisnika}} '''[[User:$1|$1]]''' $2",
'userrights-editusergroup' => 'Uredi korisničke grupe',
'saveusergroups' => 'Snimi korisničke grupe',
'group-sysop' => 'Administratori',
'group-bureaucrat' => 'Birokrati',
'group-suppress' => 'Nadzornici',
-'group-all' => '(sve)',
+'group-all' => '(svi)',
'group-user-member' => '{{GENDER:$1|korisnik|korisnica|korisnik}}',
'group-autoconfirmed-member' => '{{GENDER:$1|automatski potvrđen korisnik|automatski potvrđena korisnica|automatski potvrđen korisnik}}',
'newuserlogpagetext' => 'Ovo je evidencija registracije novih korisnika.',
# User rights log
-'rightslog' => 'Registar korisničkih prava',
+'rightslog' => 'Evidencija korisničkih prava',
'rightslogtext' => 'Ovo je evidencija izmjene korisničkih prava.',
# Associated actions - in the sentence "You do not have permission to X"
# Recent changes
'nchanges' => '$1 {{PLURAL:$1|izmjena|izmjene|izmjena}}',
-'recentchanges' => 'Nedavne izmjene',
+'recentchanges' => 'Nedavne izmjene / Скорашње измене',
'recentchanges-legend' => 'Postavke za Nedavne promjene',
'recentchanges-summary' => 'Na ovoj stranici možete pratiti nedavne izmjene.',
'recentchanges-noresult' => 'Bez promjena tokom cijelog perioda koji ispunjava ove kriterije.',
'recentchanges-label-unpatrolled' => 'Ova izmjena još nije patrolirana',
'recentchanges-legend-newpage' => '$1 - nova stranica',
'rcnotefrom' => "Ispod {{PLURAL:$1|je '''$1''' izmjena|su '''$1''' zadnje izmjene|su '''$1''' zadnjih izmjena}} u {{PLURAL:$2|posljednjem '''$2''' danu|posljednja '''$2''' dana|posljednjih '''$2''' dana}}, od $4, $5.",
-'rclistfrom' => 'Prikaži nove izmjene počevši od $1',
-'rcshowhideminor' => '$1 male izmjene',
-'rcshowhidebots' => '$1 botove',
+'rclistfrom' => 'Prikaži nove poruke od / Прикажи нове поруке од $1',
+'rcshowhideminor' => '$1 male izmjene / мале измене',
+'rcshowhidebots' => '$1 botove / ботове',
'rcshowhideliu' => '$1 prijavljene korisnike',
-'rcshowhideanons' => '$1 anonimne korisnike',
-'rcshowhidepatr' => '$1 patrolirane izmjene',
-'rcshowhidemine' => '$1 moje izmjene',
-'rclinks' => 'Prikaži najskorijih $1 izmjena u posljednjih $2 dana<br />$3',
+'rcshowhideanons' => '$1 anonimne / анонимне',
+'rcshowhidepatr' => '$1 označene / означене',
+'rcshowhidemine' => '$1 vlastite izmjene / сопствене измене',
+'rclinks' => '<br>
+Prikaži zadnjih / Прикажи последњих $1 promjena / промена<br>
+u zadnjih / у последњних $2 dana / дана<br />
+<br>
+$3
+<br>',
'diff' => 'razl',
'hist' => 'hist',
'hide' => 'Sakrij',
-'show' => 'Prikaži',
-'minoreditletter' => 'm',
+'show' => 'prikaži / прикажи',
+'minoreditletter' => 'm/м',
'newpageletter' => 'N',
'boteditletter' => 'b',
'number_of_watching_users_pageview' => '[$1 {{PLURAL:$1|korisnik|korisnika}} koji pregledaju]',
'rc-old-title' => 'prvobitno kreirano kao "$1"',
# Recent changes linked
-'recentchangeslinked' => 'Srodne izmjene',
+'recentchangeslinked' => 'Srodne izmjene / Сродне измене',
'recentchangeslinked-feed' => 'Srodne izmjene',
'recentchangeslinked-toolbox' => 'Srodne izmjene',
'recentchangeslinked-title' => 'Srodne promjene sa "$1"',
'uploadlogpage' => 'Registar postavljanja',
'uploadlogpagetext' => 'Ispod je popis najnovijih postavljanja datoteka.
Vidi [[Special:NewFiles|galeriju novih datoteka]] za slikovitiji pregled.',
-'filename' => 'Ime datoteke',
-'filedesc' => 'Sažetak',
-'fileuploadsummary' => 'Sažetak:',
+'filename' => 'Ime fajla / Име датотеке',
+'filedesc' => 'Sažetak - Сажетак',
+'fileuploadsummary' => 'Sažetak / Сажетак:',
'filereuploadsummary' => 'Izmjene datoteke:',
'filestatus' => 'Status autorskih prava:',
-'filesource' => 'Izvor:',
+'filesource' => 'Izvor / Извор',
'uploadedfiles' => 'Postavljene datoteke',
'ignorewarning' => 'Zanemari upozorenja i sačuvaj datoteku',
'ignorewarnings' => 'Zanemari sva upozorenja',
Molimo provjerite da li je stranica postavljena, malo pričekajte i pokušajte ponovno.
Možda možete pokušati kada bude manje opterećenje.',
-'license' => 'Licenca:',
+'license' => 'Licenca - Лиценца',
'license-header' => 'Licenciranje',
'nolicense' => 'Ništa nije odabrano',
'license-nopreview' => '(Pregled nije dostupan)',
'unusedtemplateswlh' => 'ostali linkovi',
# Random page
-'randompage' => 'Slučajna stranica',
+'randompage' => 'Slučajna stranica / Случајна страница',
'randompage-nopages' => 'Nema stranica u {{PLURAL:$2|slijedećem imenskom prostoru|slijedećim imenskim prostorima}}: "$1".',
# Random redirect
-'randomredirect' => 'Slučajno preusmjerenje',
+'randomredirect' => 'Slučajno preusmjerenje / Случајно преусмјерење',
'randomredirect-nopages' => 'Nema preusmjerenja u imenskom prostoru "$1".',
# Statistics
-'statistics' => 'Statistike',
+'statistics' => 'Statistike / Статистике',
'statistics-header-pages' => 'Statistike stranice',
'statistics-header-edits' => 'Statistike izmjena',
'statistics-header-views' => 'Statistike pregleda',
'specialpage-empty' => 'Ne postoje rezultati za ovaj izvještaj.',
'lonelypages' => 'Stranice - siročići',
'lonelypagestext' => 'Slijedeće stranice nemaju linkove na ostalim stranicama na ovoj {{SITENAME}}.',
-'uncategorizedpages' => 'Nekategorisane stranice',
-'uncategorizedcategories' => 'Nekategorisane kategorije',
+'uncategorizedpages' => 'Nekategorisane stranice / Некатегорисане странице',
+'uncategorizedcategories' => 'Nekategorisane kategorije / Некатегорисане категорије',
'uncategorizedimages' => 'Slike bez kategorije',
'uncategorizedtemplates' => 'Šabloni bez kategorije',
'unusedcategories' => 'Neiskorištene kategorije',
'unusedimages' => 'Neupotrebljene datoteke',
'popularpages' => 'Popularne stranice',
'wantedcategories' => 'Tražene kategorije',
-'wantedpages' => 'Tražene stranice',
+'wantedpages' => 'Tražene stranice / Тражене странице',
'wantedpages-badtitle' => 'Nevaljan naslov u setu rezultata: $1',
'wantedfiles' => 'Tražene datoteke',
'wantedfiletext-cat' => 'Sledeće datoteke se koriste, ali ne postoje. Datoteke iz drugih spremnika mogu biti navedene iako ne postoje. Takve datoteke će biti <del>izbačene</del> sa spiska. Pored toga, stranice koje sadrže nepostojeće datoteke se nalaze [[:$1|ovde]].',
'wantedfiletext-nocat' => 'Sledeće datoteke se koriste, ali ne postoje. Datoteke iz drugih spremnika mogu biti navedene iako ne postoje. Takve datoteke će biti <del>izbačene</del> sa spiska.',
'wantedtemplates' => 'Potrebni šabloni',
-'mostlinked' => 'Stranice sa najviše linkova',
-'mostlinkedcategories' => 'Kategorije sa najviše linkova',
+'mostlinked' => 'Najviše povezanih sa člancima / Највише повезаних са чланцима',
+'mostlinkedcategories' => 'Najviše povezanih sa kategorijama / Највише повезаних са категоријама',
'mostlinkedtemplates' => 'Šabloni sa najviše linkova',
'mostcategories' => 'Stranice sa najviše kategorija',
-'mostimages' => 'Datoteke sa najviše linkova',
+'mostimages' => 'Najviše povezanih sa slikama / Највише повезаних са сликама',
'mostinterwikis' => 'Stranice s najviše međuwiki poveznica',
'mostrevisions' => 'Stranice sa najviše izmjena',
'prefixindex' => 'Sve stranice sa prefiksom',
'prefixindex-namespace' => 'Sve stranice s predmetkom (imenski prostor $1)',
'shortpages' => 'Kratke stranice',
-'longpages' => 'Dugačke stranice',
-'deadendpages' => 'Stranice bez internih linkova',
+'longpages' => 'Duge stranice / Дуге странице',
+'deadendpages' => 'Članci bez internih linkova / Чланци без интерних линкова',
'deadendpagestext' => 'Slijedeće stranice nisu povezane s drugim stranicama na {{SITENAME}}.',
-'protectedpages' => 'Zaštićene stranice',
+'protectedpages' => 'Zaštićene stranice / Заштићене странице',
'protectedpages-indef' => 'Samo neograničena zaštićenja',
'protectedpages-cascade' => 'Samo prenosive zaštite',
'protectedpagesempty' => 'Trenutno nijedna stranica nije zaštićena s ovim parametrima.',
'listusers-creationsort' => 'Sortiraj po datumu pravljenja',
'usereditcount' => '$1 {{PLURAL:$1|izmjena|izmjene}}',
'usercreated' => '{{GENDER:$3|je napravio|je napravila|je napravio}} dana $1 u $2',
-'newpages' => 'Nove stranice',
+'newpages' => 'Nove stranice / Нове странице',
'newpages-username' => 'Korisničko ime:',
-'ancientpages' => 'Najstarije stranice',
+'ancientpages' => 'Najstarije stranice / Најстарије странице',
'move' => 'Premjesti',
'movethispage' => 'Premjesti ovu stranicu',
'unusedimagestext' => 'Slijedeće datoteke postoje ali nisu uključene ni u jednu stranicu.
# Special:Log
'specialloguserlabel' => 'Izvršilac:',
'speciallogtitlelabel' => 'Cilj (naslov ili korisnik):',
-'log' => 'Registri',
-'all-logs-page' => 'Svi javni registri',
+'log' => 'Evidencije',
+'all-logs-page' => 'Sve evidencije - Све евиденције',
'alllogstext' => 'Zajednički prikaz svih dostupnih evidencija sa {{SITENAME}}.
Možete specificirati prikaz izabiranjem specifičnog spiska, korisničkog imena ili promjenjenog članka (razlikovati velika slova).',
'logempty' => 'Ne postoji takav zapis.',
'showhideselectedlogentries' => 'Prikaži/sakrij izabrane zapise u evidenciji',
# Special:AllPages
-'allpages' => 'Sve stranice',
+'allpages' => 'Sve stranice / Све странице',
'alphaindexline' => '$1 do $2',
'nextpage' => 'Sljedeća strana ($1)',
'prevpage' => 'Prethodna stranica ($1)',
'allpagesfrom' => 'Prikaži stranice koje počinju od:',
'allpagesto' => 'Pokaži stranice koje završavaju na:',
-'allarticles' => 'Sve stranice',
+'allarticles' => 'Svi članci / Сви чланци',
'allinnamespace' => 'Sve stranice (imenski prostor $1)',
-'allpagessubmit' => 'Idi',
+'allpagessubmit' => 'Idi / Иди',
'allpagesprefix' => 'Prikaži stranice sa prefiksom:',
'allpagesbadtitle' => 'Dati naziv stranice je nepravilan ili ima međujezički ili interwiki prefiks.
Možda sadrži jedan ili više znakova koji se ne mogu koristiti u naslovima.',
# Special:ListUsers
'listusersfrom' => 'Prikaži korisnike počev od:',
-'listusers-submit' => 'Pokaži',
+'listusers-submit' => 'Prikaži - Прикажи',
'listusers-noresult' => 'Nije pronađen korisnik.',
'listusers-blocked' => '(blokiran)',
'emailsubject' => 'Tema:',
'emailmessage' => 'Poruka:',
'emailsend' => 'Pošalji',
-'emailccme' => 'Pošalji mi kopiju moje poruke.',
+'emailccme' => 'Pošalji mi e-mailom kopiju moje poruke.',
'emailccsubject' => 'Kopiranje Vaše poruke za $1: $2',
'emailsent' => 'E-mail poruka poslata',
'emailsenttext' => 'Vaša poruka je poslata e-poštom.',
'usermessage-editor' => 'Sistem za poruke',
# Watchlist
-'watchlist' => 'Spisak praćenja',
-'mywatchlist' => 'Spisak praćenja',
+'watchlist' => 'Spisak praćenja / Списак праћења',
+'mywatchlist' => 'Moj popis praćenja / Списак надгледања',
'watchlistfor2' => 'Za $1 $2',
'nowatchlist' => 'Nemate ništa na svom spisku praćenih članaka.',
'watchlistanontext' => 'Molimo da $1 da možete vidjeti ili urediti stavke na Vašem spisku praćenja.',
-'watchnologin' => 'Niste prijavljeni',
-'watchnologintext' => 'Morate biti [[Special:UserLogin|prijavljeni]] da bi ste mijenjali spisak praćenih članaka.',
+'watchnologin' => 'Niste logovani / Нисте логовани',
+'watchnologintext' => 'Morate da budete [[Special:Userlogin|prijavljeni]] da biste sređivali spisak praćenja.',
'addwatch' => 'Dodaj u popis praćenja',
'addedwatchtext' => 'Stranica "[[:$1]]" je dodata vašem [[Special:Watchlist|spisku praćenih članaka]].
Buduće promjene ove stranice i njoj pridružene stranice za razgovor će biti navedene ovde.',
'removewatch' => 'Ukloni sa spiska praćenja',
'removedwatchtext' => 'Stranica "[[:$1]]" je uklonjena s [[Special:Watchlist|vaše liste praćenja]].',
-'watch' => 'Prati',
-'watchthispage' => 'Prati ovu stranicu',
+'watch' => 'Prati / Прати',
+'watchthispage' => 'Prati / Прати',
'unwatch' => 'Prekini praćenje',
'unwatchthispage' => 'Ukinite praćenje',
'notanarticle' => 'Nije članak',
'watchmethod-list' => 'provjerava se da li ima nedavnih izmjena u praćenim stranicama',
'watchlistcontains' => 'Vaš spisak praćenih članaka sadrži $1 {{PLURAL:$1|stranicu|stranica}}.',
'iteminvalidname' => "Problem sa '$1', neispravno ime...",
-'wlnote' => "Ispod {{PLURAL:$1|je posljednja izmjena|su posljednje '''$1''' izmjene|je posljednjih '''$1''' izmjena}} u {{PLURAL:$2|prethodnom satu|prethodna '''$2''' sata|prethodnih '''$2''' sati}}, zaključno sa $3, $4.",
'wlshowlast' => 'Prikaži posljednjih $1 sati $2 dana $3',
'watchlist-options' => 'Opcije liste praćenja',
# Displayed when you click the "watch" button and it is in the process of watching
-'watching' => 'Pratim…',
+'watching' => 'Pratim... / Додавање на списак надгледања...',
'unwatching' => 'Ne pratim…',
'watcherrortext' => 'Desila se greška pri promjeni postavki vašeg spiska praćenja za "$1".',
Povratne informacije i daljnja pomoć:
{{canonicalurl:{{MediaWiki:Helppage}}}}',
-'created' => 'napravljena',
+'created' => 'Napravljen - Направљен',
'changed' => 'promijenjena',
# Delete
'deletepage' => 'Izbrišite stranicu',
-'confirm' => 'Potvrdite',
+'confirm' => 'Potvrdi / Потврди',
'excontent' => "sadržaj je bio: '$1'",
'excontentauthor' => "sadržaj je bio: '$1' (i jedini korisnik koji je mijenjao bio je '[[Special:Contributions/$2|$2]]')",
'exbeforeblank' => "sadržaj prije brisanja je bio: '$1'",
'historywarning' => "'''Upozorenje''': Stranica koju želite da obrišete ima historiju sa otprilike $1 {{PLURAL:$1|revizijom|revizije|revizija}}:",
'confirmdeletetext' => 'Upravo ćete obrisati stranicu sa svom njenom historijom.
Molimo da potvrdite da ćete to učiniti, da razumijete posljedice te da to činite u skladu sa [[{{MediaWiki:Policy-url}}|pravilima]].',
-'actioncomplete' => 'Akcija završena',
+'actioncomplete' => 'Akcija završena
+
+Акција завршена',
'actionfailed' => 'Akcija nije uspjela',
'deletedtext' => '"$1" je obrisan/a.
V. $2 za registar nedavnih brisanja.',
-'dellogpage' => 'Registar brisanja',
+'dellogpage' => 'Evidencija brisanja',
'dellogpagetext' => 'Ispod je spisak najskorijih brisanja.',
-'deletionlog' => 'registar brisanja',
+'deletionlog' => 'Evidencija brisanja',
'reverted' => 'Vraćeno na prijašnju reviziju',
'deletecomment' => 'Razlog:',
'deleteotherreason' => 'Ostali/dodatni razlog/zi:',
'undeletedrevisions' => '{{PLURAL:$1|$1 revizija vraćena|$1 revizije vraćene|$1 revizija vraćeno}}',
'undeletedrevisions-files' => '{{PLURAL:$1|1 revizija|$1 revizije|$1 revizija}} i {{PLURAL:$2|1 datoteka|$2 datoteke|$2 datoteka}} vraćeno',
'undeletedfiles' => '{{PLURAL:$1|1 datoteka vraćena|$1 datoteke vraćene|$1 datoteka vraćeno}}',
-'cannotundelete' => 'Vraćanje nije uspelo:
-$1',
+'cannotundelete' => 'Vraćanje nije uspelo; moguće je da je neko drugi vratio stranu pre vas.',
'undeletedpage' => "'''$1 je vraćena'''
Provjerite [[Special:Log/delete|evidenciju brisanja]] za zapise najskorijih brisanja i vraćanja.",
'undelete-show-file-submit' => 'Da',
# Namespace form on various pages
-'namespace' => 'Imenski prostor:',
+'namespace' => 'Imenski prostor - Именски простор:',
'invert' => 'Sve osim odabranog',
'tooltip-invert' => 'Označite ovu kutiju za sakrivanje promjena na stranicama u odabranom imenskom prostoru (i povezanim imenskim prostorima ako je označeno)',
'namespace_association' => 'Povezan imenski prostor',
'blanknamespace' => '(Glavno)',
# Contributions
-'contributions' => 'Doprinosi {{GENDER:|korisnika|korisnice|korisnika}} $1',
+'contributions' => 'Doprinosi korisnika / Доприноси корисника',
'contributions-title' => 'Korisnički doprinosi od $1',
-'mycontris' => 'Doprinosi',
+'mycontris' => 'Doprinosi / Доприноси',
'contribsub2' => 'Za $1 ($2)',
'nocontribs' => 'Nisu nađene promjene koje zadovoljavaju ove uslove.',
'uctop' => '(trenutno)',
'sp-contributions-submit' => 'Traži',
# What links here
-'whatlinkshere' => 'Šta je povezano ovdje',
-'whatlinkshere-title' => 'Stranice koje vode na "$1"',
+'whatlinkshere' => 'Što vodi ovdje / Шта води овде',
+'whatlinkshere-title' => 'Stranice koje vode / Странице које воде до $1',
'whatlinkshere-page' => 'Stranica:',
'linkshere' => "Sljedeće stranice vode na '''[[:$1]]''':",
'nolinkshere' => "Nema linkova na '''[[:$1]]'''.",
'ipb-disableusertalk' => 'Onemogući ovog korisnika da uređuje svoju vlastitu stranicu za razgovor dok je blokiran',
'ipb-change-block' => 'Ponovno blokiraj korisnika sa ovim postavkama',
'ipb-confirm' => 'Potvrdite blokiranje',
-'badipaddress' => 'Nevaljana IP adresa',
+'badipaddress' => 'Neodgovarajuća IP adresa / Неодговарајућа ИП адреса',
'blockipsuccesssub' => 'Blokiranje je uspjelo',
'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] je {{GENDER:$1|blokiran|blokirana|blokiran}}.<br />
Blokiranja možete da pogledate [[Special:BlockList|ovde]].',
'ipb-unblock' => 'Deblokiraj korisničko ime ili IP adresu',
'ipb-blocklist' => 'Vidi postojeće blokade',
'ipb-blocklist-contribs' => 'Doprinosi za $1',
-'unblockip' => 'Odblokiraj korisnika',
+'unblockip' => 'Odblokiraj korisnika / Одблокирај корисника',
'unblockiptext' => 'Upotrebite donji upitnik da bi ste vratili pravo pisanja ranije blokiranoj IP adresi ili korisničkom imenu.',
'ipusubmit' => 'Ukloni ovu blokadu',
'unblocked' => '[[User:$1|$1]] je deblokiran',
'ipblocklist-empty' => 'Spisak blokiranja je prazan.',
'ipblocklist-no-results' => 'Tražena IP adresa ili korisničko ime nisu blokirani.',
'blocklink' => 'blokirajte',
-'unblocklink' => 'deblokiraj',
+'unblocklink' => 'Odblokiraj / Одблокирај',
'change-blocklink' => 'promijeni blokadu',
'contribslink' => 'doprinosi',
'emaillink' => 'pošalji e-mail',
-'autoblocker' => 'Automatski ste blokirani jer dijelite IP adresu sa "[[User:$1|$1]]".
-Razlog za blokiranje je korisnika $1 je: \'\'$2\'\'',
-'blocklogpage' => 'Registar blokiranja',
+'autoblocker' => 'Automatski ste blokirani jer je vašu IP adresu nedavno koristio "[[User:$1|$1]]". Razlog za blokiranje $1 je: "\'\'\'$2\'\'\'"',
+'blocklogpage' => 'Evidencija blokiranja',
'blocklog-showlog' => 'Ovaj korisnik je ranije blokiran.
Evidencija blokiranja je prikazana ispod kao referenca:',
'blocklog-showsuppresslog' => 'Ovaj korisnik je ranije blokiran i sakriven.
'blocklogtext' => 'Ovo je historija akcija blokiranja i deblokiranja korisnika.
Automatski blokirane IP adrese nisu navedene ovdje.
Pogledajte [[Special:BlockList|spisak blokiranja]] za spisak trenutnih zabrana i blokiranja.',
-'unblocklogentry' => 'deblokiran $1',
+'unblocklogentry' => 'Odblokiran / Одблокиран "$1"',
'block-log-flags-anononly' => 'samo anonimni korisnici',
'block-log-flags-nocreate' => 'pravljenje računa onemogućeno',
'block-log-flags-noautoblock' => 'automatsko blokiranje onemogućeno',
*Odznačite donju kutiju.
U tim slučajevima, moraćete ručno da premjestite stranicu ukoliko to želite.",
-'movearticle' => 'Premjestite stranicu:',
+'movearticle' => 'Premjesti stranicu – Премјести страницу',
'moveuserpage-warning' => "'''Upozorenje:''' Premještate korisničku stranicu. Molimo da zapamtite da će se samo stranica premjestiti a korisnik se ''neće'' preimenovati.",
'movenologintext' => 'Morate biti registrovani korisnik i [[Special:UserLogin|prijavljeni]] da biste premjestili stranicu.',
'movenotallowed' => 'Nemate dopuštenje za premještanje stranica.',
'movenotallowedfile' => 'Nemate dopuštenja da premještate datoteke.',
'cant-move-user-page' => 'Nemate dopuštenje da premještate korisničke stranice (osim podstranica).',
'cant-move-to-user-page' => 'Nemate dopuštenje da premjestite stranicu na korisničku stranicu (osim na korisničku podstranicu).',
-'newtitle' => 'novi naslov:',
-'move-watch' => 'Prati ovu stranicu',
-'movepagebtn' => 'premjestite stranicu',
+'newtitle' => 'Novi naziv - Нови назив',
+'move-watch' => 'Prati ovu stranicu - Прати ову страницу',
+'movepagebtn' => 'Premjesti stranicu – Премјести страницу',
'pagemovedsub' => 'Premještanje uspjelo',
'movepage-moved' => '\'\'\'"$1" je premještena na "$2"\'\'\'',
'movepage-moved-redirect' => 'Preusmjerenje je napravljeno.',
'articleexists' => 'Stranica pod tim imenom već postoji, ili je ime koje ste izabrali neispravno.
Molimo Vas da izaberete drugo ime.',
'cantmove-titleprotected' => 'Ne možete premjestiti stranicu na ovu lokaciju, jer je novi naslov zaštićen od pravljenja',
-'movetalk' => 'Premjestite pridruženu stranicu za razgovor',
+'movetalk' => 'Premjesti i stranicu za diskusiju zajedno sa člankom (ukoliko nije prazna).',
'move-subpages' => 'Premjesti sve podstranice (do $1)',
'move-talk-subpages' => 'Premjesti podstranice stranica za razgovor (do $1)',
'movepage-page-exists' => 'Stranica $1 već postoji i ne može biti automatski zamijenjena.',
'movepage-page-moved' => 'Stranica $1 je premještena na $2.',
'movepage-page-unmoved' => 'Stranica $1 ne može biti premještena na $2.',
'movepage-max-pages' => 'Maksimum od $1 {{PLURAL:$1|stranice|stranice|stranica}} je premješteno i više nije moguće premjestiti automatski.',
-'movelogpage' => 'Registar premještanja',
+'movelogpage' => 'Evidencija premještanja',
'movelogpagetext' => 'Ispod je spisak stranica koje su premještene.',
'movesubpage' => '{{PLURAL:$1|Podstranica|Podstranice}}',
'movesubpagetext' => 'Ova stranica ima $1 {{PLURAL:$1|podstranicu|podstranice|podstranica}} prikazanih ispod.',
'movenosubpage' => 'Ova stranica nema podstranica.',
'movereason' => 'Razlog:',
-'revertmove' => 'vrati',
+'revertmove' => 'vrati - врати',
'delete_and_move' => 'Brisanje i premještanje',
'delete_and_move_text' => '==Brisanje neophodno==
Odredišna stranica "[[:$1]]" već postoji.
Da li je želite obrisati kako bi ste mogli izvršiti premještanje?',
-'delete_and_move_confirm' => 'Da, obriši stranicu',
+'delete_and_move_confirm' => 'Da, izbriši stranicu - Да, избриши страницу',
'delete_and_move_reason' => 'Obrisano da se oslobodi mjesto za premještanje iz „[[$1]]“',
'selfmove' => 'Izvorni i ciljani naziv su isti; strana ne može da se premjesti preko same sebe.',
'immobile-source-namespace' => 'Ne mogu premjestiti stranice u imenski prostor "$1"',
'exportnohistory' => "----
'''Pažnja:''' Izvoz cjelokupne historije stranica preko ovog obrasca je onemogućeno iz tehničkih razloga.",
'exportlistauthors' => 'Uključi cjelokupni popis doprinosilaca za svaku stranicu',
-'export-submit' => 'Izvezi',
+'export-submit' => 'Izvezi / Извези',
'export-addcattext' => 'Dodaj stranice iz kategorije:',
'export-addcat' => 'Dodaj',
'export-addnstext' => 'Dodaj stranice iz imenskog prostora:',
'export-pagelinks' => 'Uključi povezane stranice do dubine od:',
# Namespace 8 related
-'allmessages' => 'Sistemske poruke',
+'allmessages' => 'Sistemske poruke / Системске поруке',
'allmessagesname' => 'Naziv',
'allmessagesdefault' => 'Uobičajeni tekst',
'allmessagescurrent' => 'Trenutni tekst',
'allmessages-prefix' => 'Filter po prefiksu:',
'allmessages-language' => 'Jezik:',
'allmessages-filter-submit' => 'Idi',
+'allmessages-filter-translate' => 'Prevedi',
# Thumbnails
'thumbnail-more' => 'Uvećaj',
'import-interwiki-source' => 'Izvorna wiki/stranica:',
'import-interwiki-history' => 'Kopiraj sve verzije historije za ovu stranicu',
'import-interwiki-templates' => 'Uključi sve šablone',
-'import-interwiki-submit' => 'Uvoz',
+'import-interwiki-submit' => 'Uvezi - Увези',
'import-interwiki-namespace' => 'Odredišni imenski prostor:',
'import-interwiki-rootpage' => 'Odredišna osnovna stranica (neobavezno):',
'import-upload-filename' => 'Naziv datoteke:',
'tooltip-pt-watchlist' => 'Spisak stranica koje pratite radi izmjena',
'tooltip-pt-mycontris' => 'Spisak vaših doprinosa',
'tooltip-pt-login' => 'Predlažem da se prijavite; međutim, to nije obavezno',
-'tooltip-pt-anonlogin' => 'Predlažemo da se prijavite, ali nije obavezno.',
'tooltip-pt-logout' => 'Odjava sa projekta {{SITENAME}}',
'tooltip-ca-talk' => 'Razgovor o sadržaju stranice',
'tooltip-ca-edit' => 'Možete da uređujete ovu stranicu.
'tooltip-ca-move' => 'Premjesti ovu stranicu',
'tooltip-ca-watch' => 'Dodajte ovu stranicu na Vaš spisak praćenja',
'tooltip-ca-unwatch' => 'Izbrišite ovu stranicu sa spiska praćenja',
-'tooltip-search' => 'Pretraži ovaj wiki',
+'tooltip-search' => 'Traži ovaj Wiki / Тражи овај Вики [alt-f]',
'tooltip-search-go' => 'Idi na stranicu s upravo ovakvim imenom ako postoji',
'tooltip-search-fulltext' => 'Pretraga stranica sa ovim tekstom',
'tooltip-p-logo' => 'Posjetite glavnu stranicu',
'tooltip-ca-nstab-help' => 'Pogledajte stranicu za pomoć',
'tooltip-ca-nstab-category' => 'Pogledajte stranicu kategorije',
'tooltip-minoredit' => 'Označite ovo kao manju izmjenu',
-'tooltip-save' => 'Snimite vaše izmjene',
+'tooltip-save' => 'Snimi izmjene - Сними измјене [alt-s]',
'tooltip-preview' => 'Prethodni pregled stranice, molimo koristiti prije snimanja!',
'tooltip-diff' => 'Prikaz izmjena koje ste napravili u tekstu',
'tooltip-compareselectedversions' => 'Pogledajte pazlike između dvije selektovane verzije ove stranice.',
-'tooltip-watch' => 'Dodajte ovu stranicu na Vaš spisak praćenja',
+'tooltip-watch' => 'Postavite ovu stranicu na Vaš spisak praćenja / Поставите ову страницу на Ваш списак праћења [alt-w]',
'tooltip-watchlistedit-normal-submit' => 'Ukloni naslove',
'tooltip-watchlistedit-raw-submit' => 'Ažuriraj spisak praćenja',
'tooltip-recreate' => 'Ponovno pravljenje stranice iako je već brisana',
'file-no-thumb-animation-gif' => "'''Napomena: zbog tehničkih ograničenja, minijature GIF slika visoke rezolucije kao što je ova neće se animirati.'''",
# Special:NewFiles
-'newimages' => 'Galerija novih slika',
+'newimages' => 'Galerija novih fajlova / Галерија нових фајлова',
'imagelisttext' => "Ispod je spisak od '''$1''' {{PLURAL:$1|datoteke|datoteke|datoteka}} poredanih $2.",
'newimages-summary' => 'Ova posebna stranica prikazuje posljednje postavljene datoteke.',
'newimages-legend' => 'Filter',
'newimages-label' => 'Ime datoteke (ili dio imena):',
'showhidebots' => '($1 botove)',
'noimages' => 'Ništa za prikazati.',
-'ilsubmit' => 'Traži',
+'ilsubmit' => 'Traži / Тражи',
'bydate' => 'po datumu',
'sp-newimages-showfrom' => 'Prikaz novih datoteka počev od $2, $1',
'exif-spectralsensitivity' => 'Spektralna osjetljivost',
'exif-isospeedratings' => 'Rejting ISO brzine',
'exif-shutterspeedvalue' => 'Brzina APEX okidača',
-'exif-aperturevalue' => 'APEX otvor',
+'exif-aperturevalue' => 'Otvor blende',
'exif-brightnessvalue' => 'APEX osvijetljenost',
'exif-exposurebiasvalue' => 'Kompozicija ekspozicije',
'exif-maxaperturevalue' => 'Najveći broj otvora blende',
'fileduplicatesearch-noresults' => 'Nije pronađena datoteka sa imenom "$1".',
# Special:SpecialPages
-'specialpages' => 'Posebne stranice',
+'specialpages' => 'Posebno / Посебно',
'specialpages-note' => '* Normalne posebne stranice.
* <span class="mw-specialpagerestricted">Ograničene posebne stranice.</span>
* <span class="mw-specialpagecached">Keširane posebne stranice (mogu biti zastarjele).</span>',
-'specialpages-group-maintenance' => 'Izvještaji za održavanje',
-'specialpages-group-other' => 'Ostale posebne stranice',
-'specialpages-group-login' => 'Prijava / Otvaranje računa',
-'specialpages-group-changes' => 'Nedavne izmjene i registri',
-'specialpages-group-media' => 'Mediji i postavljanje datoteka',
-'specialpages-group-users' => 'Korisnici i korisnička prava',
-'specialpages-group-highuse' => 'Često korištene stranice',
+'specialpages-group-maintenance' => 'Izvještaji o održavanju / Извјештаји о одржавању',
+'specialpages-group-other' => 'Ostale posebne stranice - Остале посебне странице',
+'specialpages-group-login' => 'Prijava / Пријава',
+'specialpages-group-changes' => 'Nedavne izmjene i evidencije / registri - Недавне измене и евиденције / регистри',
+'specialpages-group-media' => 'Multimedijalne datoteke \\ fajlovi i njihovo postavljanje / Мултимедијалне датотеке \\ фајлови и њихово постављање',
+'specialpages-group-users' => 'Korisnici i njihova prava / Корисници и њихова права',
+'specialpages-group-highuse' => 'Najčešće korištene stranice / Најчешће кориштене странице',
'specialpages-group-pages' => 'Spiskovi stranica',
'specialpages-group-pagetools' => 'Alati za stranice',
'specialpages-group-wiki' => 'Podaci i alati',
-'specialpages-group-redirects' => 'Preusmjeravanje posebnih stranica',
+'specialpages-group-redirects' => 'Posebne stranice za preusmjeravanje / Посебне стране за преусмеравање',
'specialpages-group-spam' => 'Spam alati',
# Special:BlankPage
# Image rotation
'rotate-comment' => 'Slika rotirana za $1 {{PLURAL:$1|stepeni}} u smjeru kazaljke na satu',
+# Special:ExpandTemplates
+'expand_templates_input' => 'Unos - Унос',
+
);
$messages = array(
# User preference toggles
'tog-underline' => 'krrj du izdayn:',
-'tog-justify' => 'skr lɛrd n-stor ɣ togzimin aygiddi',
'tog-hideminor' => 'Ḥbu imbddl imaynutn lli fssusnin.',
'tog-hidepatrolled' => 'Hide patrolled edits in recent changes',
'tog-newpageshidepatrolled' => 'Ḥbu tisniwin lli n tsagga gr tisniwin timaynutin',
'tog-numberheadings' => 'nmra n nsmiat wahdot',
'tog-showtoolbar' => 'sbaynd tizikrt n tbddil(JavaScript)',
'tog-editondblclick' => 'Ẓrig tisniwin ad s uklik snat wal ( ira mayad JavaScript)',
-'tog-editsection' => 'Mmurzm i imbddln n w-ayyawn izdayn n « [Bddel] »',
'tog-editsectiononrightclick' => 'Yan uklik s tsga tafasi f uzwl n w-ayyaw bac ad tsbadlt ɣtad (ira JavaScript)',
-'tog-showtoc' => 'Mel Taflwit n tngawin (i tisniwin lli dar 3 w-ayyawn)',
'tog-rememberpassword' => 'Askti nu ukcum ɣ Urdinaturad (Iɣ kullu tggut $1 {{PLURAL:$1|Ass|Ass}})',
'tog-watchcreations' => 'Zaydn tasniwin lli skrɣ i umuɣ n tilli ssuġiɣ.',
'tog-watchdefault' => 'Zaydn tasniwin lli tżrigɣ i umuɣ n tilli tsaggaɣ',
'compareselectedversions' => 'Snahya gr ilqmn lli tuystaynin',
'showhideselectedversions' => 'Ml/Ḥbu ilqmn lli ittuystayn',
'editundo' => 'Urri',
-'diff-multi' => '({{PLURAL:$1|yan ulqm gratsn|$1 ilqmn gratsn}} z {{PLURAL:$2|umqdac|$2 imqdacn}} {{PLURAL:$1|iḥba|ḥban}})',
'diff-multi-manyusers' => '({{PLURAL:$1|yan ulqm n gratsn|$1 ilqmn ngratsn}} zdar mnnaw {{PLURAL:$2|amcgr |n $2 imcgrn}} {{PLURAL:$1|iḥba|lli iḥban}})',
# Search results
'rows' => 'sfof:',
'columns' => 'aamida:',
'searchresultshead' => 'Cabba',
-'resultsperpage' => 'adad nataij gh sfha:',
'stub-threshold' => 'wasla n <a href="#" class="stub">do amzdoy</a> itforma (bytes):',
'stub-threshold-disabled' => 'moattal',
'recentchangesdays' => 'adad liyam lmroda gh ahdat tghyirat',
'tooltip-pt-watchlist' => 'Tifilit n tisnatin li itsaggan imdddeln li gisnt ittyskarn..',
'tooltip-pt-mycontris' => 'Tabdart n ismmadn inu',
'tooltip-pt-login' => 'Yufak at qiyt akcum nek, mach ur fllak ibziz .',
-'tooltip-pt-anonlogin' => 'Ifulki at tqiyt akcum nek, mac ur fllak iga bziz',
'tooltip-pt-logout' => 'Affuɣ',
'tooltip-ca-talk' => 'Assays f mayllan ɣ tasnat ad',
'tooltip-ca-edit' => 'Tzḍaṛt at tsbadelt tasna yad. Ifulki iɣt zwar turmt ɣ tasna w-arm',
* @author Pasanbhathiya2
* @author Romaine
* @author Singhalawap
+ * @author Thushara
* @author චතුනි අලහප්පෙරුම
* @author තඹරු විජේසේකර
* @author දසනැබළයෝ
$messages = array(
# User preference toggles
'tog-underline' => 'සබැඳි යටීර කිරීම:',
-'tog-justify' => 'ඡේදයන් පෙළගස්වන්න',
'tog-hideminor' => 'මෑත වෙනස් කිරීම්වල සුළු සංස්කරණ සඟවන්න',
'tog-hidepatrolled' => 'මෑත වෙනස් කිරීම්වල මුර සංචාරය කරන ලද සංස්කරණ සඟවන්න',
'tog-newpageshidepatrolled' => 'විමසුමට ලක්කෙරුණු පිටු, අළුත් පිටු ලැයිස්තුවෙහි නොපෙන්වන්න',
'tog-numberheadings' => 'ශීර්ෂ-නාම ස්වයංක්රීයව අංකනය කරන්න',
'tog-showtoolbar' => 'සංස්කරණ මෙවලම්තීරුව පෙන්වන්න',
'tog-editondblclick' => 'ද්විත්ව-ක්ලික් කිරීම මගින් පිටු සංස්කරණය අරඹන්න',
-'tog-editsection' => '[සංස්කරණ] සබැඳියාවන් මගින් ඡේද සංස්කරණය සක්රීය කරන්න',
'tog-editsectiononrightclick' => 'ඡේද ශීර්ෂ මත දකුණු-ක්ලික් කිරීමෙන් ඡේද සංස්කරණය සක්රීය කරන්න (ජාවාස්ක්රිප්ට්)',
-'tog-showtoc' => 'පටුන පෙන්වන්න ( තුනකට වඩා වැඩියෙන් ශීර්ෂ-නාම අඩංගු පිටු සඳහා)',
'tog-rememberpassword' => 'මගේ ප්රවිෂ්ටය මෙම ගවේශකයෙහි උපරිම ලෙස {{PLURAL:$1|දිනයක්|දින $1ක්}} මතක තබා ගන්න',
'tog-watchcreations' => 'මම තනන පිටු හා මම උඩුගත කරන ගොනු මාගේ මුරලැයිස්තුවට එක් කරන්න',
'tog-watchdefault' => 'මම සංස්කරණය කරන පිටු හා ගොනු මාගේ මුර ලැයිස්තුවට එක් කරන්න',
'disclaimers' => 'වියාචනයන්',
'disclaimerpage' => 'Project:පොදු වියාචන',
'edithelp' => 'සංස්කරණ උදවු',
-'helppage' => 'උදවු:පටුන',
+'helppage' => 'Help:අන්තර්ගතයන්',
'mainpage' => 'මුල් පිටුව',
'mainpage-description' => 'මුල් පිටුව',
'policy-url' => 'Project:ප්රතිපත්තිය',
'youhavenewmessages' => 'ඔබ හට $1 ($2)',
'youhavenewmessagesfromusers' => '{{PLURAL:$3|තවත් එක් පරිශීලකයෙකුගෙන්|පරිශීලකයන් $3 දෙනෙකුගෙන්}} ඔබ හට $1 ඇත ($2).',
'youhavenewmessagesmanyusers' => 'බොහෝ පරිශීලකයන් වෙතින් ඔබ හට $1 ඇත ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|නව පණිවුඩයක්|නව පණිවුඩ}}',
-'newmessagesdifflinkplural' => 'අවසන් {{PLURAL:$1|වෙනස්වීම|වෙනස්වීම්}}',
+'newmessageslinkplural' => '{{PLURAL:$1|නව පණිවුඩයක්|999=nනව පණිවුඩ}}',
+'newmessagesdifflinkplural' => 'අවසන් {{PLURAL:$1|වෙනස්වීම|999=වෙනස්වීම්}}',
'youhavenewmessagesmulti' => 'ඔබ හට $1 හි නව පණිවුඩ ඇත',
'editsection' => 'සංස්කරණය',
'editold' => 'සංස්කරණය',
'createacct-emailrequired' => 'වි-තැපෑල ලිපිනය',
'createacct-emailoptional' => 'වි-තැපෑල ලිපිනය (විකල්ප)',
'createacct-email-ph' => 'ඔබගේ වි-තැපෑල ලිපිනය ඇතුළු කරන්න',
-'createaccountmail' => 'තාවකාලික අහුඹු මුර පදයක් භාවිතා කර එය පහත දක්වා ඇති වි-තැපැල් ලිපිනයට යවන්න',
+'createacct-another-email-ph' => 'ඊ මේල් ලිපිනය ඇතුළත් කරන්න.',
+'createaccountmail' => 'තාවකාලික අහුඹු මුර පදයක් භාවිතා කර එය පහත දක්වා ඇති විද්යුත් තැපැල් ලිපිනයට යවන්න',
'createacct-realname' => 'නියම නම (වෛකල්පීය)',
'createaccountreason' => 'හේතුව:',
'createacct-reason' => 'හේතුව',
'createacct-reason-ph' => 'ඔබ තවත් ගිණුමක් තනන්නේ කුමක් නිසාද',
'createacct-captcha' => 'ආරක්ෂක පරික්ෂාව',
+'createacct-imgcaptcha-ph' => 'ඉහතින් දැක්වෙන වචනය ඇතුළත් කරන්න',
+'createacct-submit' => 'ඔබේ ගිණුම තනන්න',
+'createacct-another-submit' => 'තවත් ගිණුමක් ආරම්භ කරන්න',
+'createacct-benefit-heading' => '{{වෙබ් අඩවි නම}} ඔබ වැනි අයෙක් විසින් නිමවා ඇත',
'createacct-benefit-body1' => '{{PLURAL:$1|සංස්කරණය|සංස්කරණ}}',
'createacct-benefit-body2' => '{{PLURAL:$1|පිටුව|පිටු}}',
'createacct-benefit-body3' => 'මෑත{{PLURAL:$1|දායකයා|දායකයෝ}}',
'passwordsent' => ' "$1" වෙනුවෙන් ලේඛනගත කර ඇති විද්යුත් තැපැල් ලිපිනයට නව මුර පදයක් යවා ඇත.
ඔබට එය ලැබුනු පසු නැවත ප්රවිෂ්ට වන්න.',
'blocked-mailpassword' => 'ඔබගේ අන්තර්ජාල ලිපිනය භාවිතා කරමින් සංස්කරණයෙහි යෙදීම වාරණය කොට ඇති අතර, අපයෙදුම වළකනු වස්, මුර-පදය පුනරුත්ථාන කෘත්යය භාවිත කිරීමට අවසරයද අහිමි කොට ඇත.',
-'eauthentsent' => 'නම් කර ඇති විද්යුත්-ලිපි ලිපිනය වෙත, තහවුරු කිරීම් විද්යුත්-ලිපියක් යවා ඇත.
-ගිණුම වෙත වෙනත් විද්යුත්-ලිපියක් යැවීමට පෙර, ගිණුම සත්ය වශයෙන්ම ඔබගේම බව තහවුරු කරනු වස්, විද්යුත්-ලිපියෙහි අඩංගු උපදෙස් පිළිපදින්න.',
+'eauthentsent' => 'නම් කර ඇති විද්යුත් තැපැල් ලිපිනය වෙත තහවුරු කිරීම් විද්යුත්-ලිපියක් යවා ඇත.
+ගිණුම වෙත වෙනත් විද්යුත් තැපෑලක් යැවීමට පෙර, ගිණුම සත්ය වශයෙන්ම ඔබගේම බව තහවුරු කරනු පිණිස විද්යුත්-ලිපියෙහි අඩංගු උපදෙස් පිළිපදින්න.',
'throttled-mailpassword' => 'අවසන් {{PLURAL:$1|පැය|පැය $1}} තුල, මුරපද යළි සැකසුම් ඊ-ලිපියක් යවාඇත.
අපයෙදුම වළකනු වස්, {{PLURAL:$1|එක් පැයක|පැය $1 ක}}ට වරක් එක් මුරපද යළි සැකසුම් ඊ-ලිපියක් පමණක් යවනු ලැබේ.',
'mailerror' => 'තැපෑල යැවීමේදී වූ දෝෂය: $1',
'acct_creation_throttle_hit' => 'ඔබගේ අන්තර්ජාල ලිපිනය භාවිතා කල මෙම විකියට අමුත්තන් විසින් {{PLURAL:$1|එක් ගිණුමක්|ගිණුම් $1 ක්}} පසුගිය දිනය තුලදී තනා ඇති අතර, එය මෙම කාල පරිච්ඡේදය තුලදී ඉඩ දෙනු ලබන උපරිමය වෙයි.
මේ හේතුවෙන්, මෙම අන්තර්ජාල ලිපිනය භාවිතා කරන අමුත්තන් විසින් මෙම අවස්ථාවෙහිදී තවත් ගිණුම් තැනීම සිදු කල නොහැකිව ඇත.',
-'emailauthenticated' => '$2 දින $3 වේලාවෙහිදී ඔබගේ විද්යුත්-තැපැල් ලිපිනය සත්යවත් කරන ලදි.',
-'emailnotauthenticated' => 'ඔබගේ විද්යුත්-තැපැල් ලිපිනය තවමත් සත්යවත් කර නොමැත.
+'emailauthenticated' => '$2 දින $3 වේලාවෙහිදී ඔබගේ විද්යුත්-තැපැල් ලිපිනයෙහි සත්යතාව තහවුරු කරන ලදි.',
+'emailnotauthenticated' => 'ඔබගේ විද්යුත්-තැපැල් ලිපිනයෙහි නිවැරදිබව තවමත් තගහවුරු කර නොමැත.
පහත හැකියාවන් කිසිවක් ඉටුකරනු වස් විද්යුත්-තැපෑල යවනු නොලැබේ.',
'noemailprefs' => 'පහත හැකියාවන් ඉටුකිරීමට ඉඩ සලසනු වස් විද්යුත්-තැපැල් ලිපිනයක් හුවා දක්වන්න.',
'emailconfirmlink' => 'ඔබගේ විද්යුත් තැපැල් ලිපිනය තහවුරු කරන්න',
මෙම ගිණුම තැනී ඇත්තේ වැරදීමකින් නම්, මෙම පණිවුඩය නොසලකා හැරිය හැක.',
'usernamehasherror' => 'පරිශීලක නාමයේ පූරක අනුලකුණු අඩංගු විය නොහැකිය',
'login-throttled' => 'ඔබ විසින් මෑතදී පමණට වඩා වාර ගණනක් පිවිසීමෙහි උත්සාහයන් දරා ඇත.
-යළි උත්සාහ කිරීමට පෙර මඳ වේලාවක් රැඳී සිටින්න.',
+යළි උත්සාහ කිරීමට පෙර $1 වේලාවක් රැඳී සිටින්න.',
'login-abort-generic' => 'ඔබගේ පිවිසීම අසාර්ථකයි - අතහැර දමනලදී',
'loginlanguagelabel' => 'භාෂාව: $1',
'suspicious-userlogout' => 'නිෂ්ක්රමණය සඳහා ඔබගේ අයැදුම නිෂ්ප්රභා කෙරුනේ එය යොමු කොට ඇත්තේ භින්න(කැඩුනු) බ්රවුසරයකින් හෝ නිවේෂණය කෙරෙමින් පවතින ප්රොක්සියක් වෙතින් යැයි බැලූ බැල්මට පෙනෙන බැවිනි.',
'newpassword' => 'නව මුර-පදය:',
'retypenew' => 'නව මුර-පදය නැවත ඇතුළු කරන්න:',
'resetpass_submit' => 'මුර-පදය පූරණය කොට ඉන් පසු ප්රවිෂ්ට වන්න',
-'changepassword-success' => 'à¶\94බà¶\9cà·\9a මà·\94ර-පදය à·\83à·\8fරà·\8aථà¶\9a ලà·\99à·\83 à·\80à·\99නà·\83à·\8a à¶\9aරන ලදà·\92! දà·\90නà·\8a à¶\94බà·\80 පà·\8aâ\80\8dරà·\80à·\92à·\82à·\8aට à¶\9aරà¶\9cනà·\92මà·\92නà·\8a...',
+'changepassword-success' => 'à¶\94බà¶\9cà·\9a මà·\94ර-පදය à·\83à·\8fරà·\8aථà¶\9a ලà·\99à·\83 à·\80à·\99නà·\83à·\8a à¶\9aරන ලදà·\93!',
'resetpass_forbidden' => 'මුර-පදයන් වෙනස් කිරීම සිදු කල නොහැක',
'resetpass-no-info' => 'මෙම පිටුව සෘජු ලෙස පරිශීලනය කෙරුමට ඔබ පළමු ප්රවිෂ්ට විය යුතුය.',
'resetpass-submit-loggedin' => 'මුර-පදය වෙනස්කරන්න',
# Special:PasswordReset
'passwordreset' => 'මුරපදය වෙනස් කරන්න',
+'passwordreset-text-one' => 'තාවකාලික මුර-පදයක් විද්යුත් තැපෑළ මගින් ලබා ගැනීම සඳහා මෙම පෝරමය සම්පූර්ණ කරන්න.',
'passwordreset-legend' => 'මුරපදය යළි පිහිටුවන්න',
'passwordreset-disabled' => 'මෙම විකියෙහි මුර පද ප්රත්යාරම්භ කිරීම් අක්රීය කොට ඇත.',
+'passwordreset-emaildisabled' => 'විද්යුත් තැපැල් පහසුකම මෙම විකි ය සඳහා අවලංගු කොට ඇත.',
'passwordreset-username' => 'පරිශීලක නාමය:',
'passwordreset-domain' => 'වසම:',
'passwordreset-capture' => 'ප්රතිපලදායක විද්යුත් තැපෑල නරඹනවාද?',
ඔබ දැන් ප්රවිෂ්ට වී නව මුරපදයක් තෝරාගත යුතුයි. වෙන යම් අයෙක් මෙම ඉල්ලීම කර ඇත්නම් හෝ, ඔබගේ මුල් මුරපදය ඔබගේ මතකයට පැමිණ ඇති නම් හා, එය වෙනස් කිරීමට ඔබ හට තවදුරටත් අවශ්ය නොවේ නම්, ඔබ විසින් මෙම පණිවුඩය නොසලකා හැර පැරණි මුරපදය තවදුරටත් පාවිච්චි කළ හැක.',
'passwordreset-emailelement' => 'පරිශීලක නාමය: $1
තාවකාලික මුරපදය: $2',
-'passwordreset-emailsent' => 'à·\80à·\92දà·\8aâ\80\8dයà·\94à¶à·\8a à¶à·\90පà·\90ලà·\8a මà¶à¶\9aà·\8aà¶\9aà·\92රà·\93මක් යවන ලදී.',
-'passwordreset-emailsent-capture' => 'මà¶à¶\9aà·\8a à¶\9aà·\92රà·\93මà·\9a à·\80à·\92දà·\8aâ\80\8dයà·\94à¶à·\8a à¶à·\90පà·\90ලà·\8a පණà·\92à·\80à·\94ඩය යවන ලදී, එය පහත දැක්වේ.',
+'passwordreset-emailsent' => 'මà·\94ර-පදය නà·\90à·\80චà·\83à¶\9aà·\83à·\8a à¶\9aà·\92රà·\93ම පà·\92à·\85à·\92බඳà·\80 à·\80à·\92දà·\8aâ\80\8dයà·\94à¶à·\8a à¶à·\90පà·\91ලක් යවන ලදී.',
+'passwordreset-emailsent-capture' => 'මà·\94ර-පදය à·\80à·\99නà·\83à·\8a à¶\9aà·\92රà·\93ම පà·\92à·\85à·\92බඳà·\80 à·\80à·\92දà·\8aâ\80\8dයà·\94à¶à·\8a à¶à·\90පà·\91ලà¶\9aà·\8a යවන ලදී, එය පහත දැක්වේ.',
'passwordreset-emailerror-capture' => 'සිහිකැඳවුම් ඊ-තැපෑල ජනිත කරනු ලැබූ අතර, එය පහත දැක්වේ, නමුත් එය පරිශීලකයාට යැවීම අසාර්ථක වුනි: $1',
# Special:ChangeEmail
'revdelete-hide-user' => 'සංස්කාරකගේ පරිශීලක නාමය/IP ලිපිනය සඟවන්න',
'revdelete-hide-restricted' => 'අනෙකුන් මෙන්ම පරිපාලකවරුන් ගෙන්ද මෙම දත්ත යටපත්කරන්න',
'revdelete-radio-same' => '(වෙනස් නොකරන්න)',
-'revdelete-radio-set' => 'à¶\94à·\80à·\8a',
-'revdelete-radio-unset' => 'නà·\90à¶',
+'revdelete-radio-set' => 'à·\83à¶\9fà·\80නලද',
+'revdelete-radio-unset' => 'දà·\98à·\81à·\8aâ\80\8dයමà·\8fන',
'revdelete-suppress' => 'අනෙකුන්ගෙන් මෙන්ම පරිපාලකයන්ගෙන්ද දත්ත යටපත් කරන්න',
'revdelete-unsuppress' => 'ප්රතිෂ්ඨාපනය කරන ලද සංශෝධනයන් විෂයයෙහි පැනවුනු පරිසීමා ඉවත්කරන්න',
'revdelete-log' => 'හේතුව:',
'compareselectedversions' => 'තෝරාගත් සංශෝධන සසඳන්න',
'showhideselectedversions' => 'තෝරාගත් සංශෝධන පෙන්වන්න/සඟවන්න',
'editundo' => 'අහෝසිය',
-'diff-multi' => '({{PLURAL:$2|එක් පරිශීලකයෙක්|පරිශීලකයන් $2 ක්}} විසින් සිදුකල {{PLURAL:$1|එක් අතරමැදි සංශෝධනයක්|අතරමැදි සංශෝධන $1 ක්}} පෙන්නුම් කර නොමැත.)',
'diff-multi-manyusers' => '(පරිශීලකයන් $2 කට වඩා වැඩි ගණනකගේ ආසන්න පුනරීක්ෂණ $1ක් පෙන්වා නොමැත)',
# Search results
'rows' => 'පේළි:',
'columns' => 'තීරු:',
'searchresultshead' => 'ගවේෂණය',
-'resultsperpage' => 'පිටුවකට හිට් ගණන:',
'stub-threshold' => '<a href="#" class="stub">කොට සබැඳි</a> ආකෘතිකරණය සඳහා සීමකය (බයිට්):',
'stub-threshold-disabled' => 'අක්රිය කෙරිණි',
'recentchangesdays' => 'මෑත වෙනස්වීම්හි පෙන්විය යුතු දිනයන්:',
'watchmethod-list' => 'මෑත සංස්කරණයන් සඳහා මුර-කෙරෙන පිටු පරික්ෂා කරමින්',
'watchlistcontains' => 'ඔබගේ මුර-ලැයිස්තුවෙහි {{PLURAL:$1|එක් පිටුවක්|පිටු $1 ක්}} අඩංගුය.',
'iteminvalidname' => "'$1' අයිතමය පිළිබඳ ගැටළුවක් ඇත, අනීතික නමකි...",
-'wlnote' => "පහත දැක්වෙන්නේ $3, $4 මෙන්, අවසන් {{PLURAL:$2|පැය|පැය '''$2''' }} තුලදී සිදු කෙරී ඇති {{PLURAL:$1|අවසන් වෙනස්වීම්යි |අවසන් වෙනස්වීම් '''$1''' යි}}.",
'wlshowlast' => 'පසුගිය පැය $1 දින $2 $3 පෙන්වන්න',
'watchlist-options' => 'තෝරාගතහැකි මුර ලැයිස්තු සැකසුම්',
'delete-warning-toobig' => 'මෙම පිටුවට, {{PLURAL:$1|එක් සංශෝධනයකට|සංශෝධන $1 කට}} වඩා වැඩි විශාල සංස්කරණ ඉතිහාසයක් ඇත.
මෙය මකාදැමීම {{SITENAME}} හි දත්ත-ගබඩා ක්රියාකාරකම් වලට අවහිරතා පැන නැංවීමට හේතු විය හැක;
පරිස්සමින් ඉදිරි කටයුතු කරන්න.',
+'deleting-backlinks-warning' => "'''ප්රවේශමෙන්:''' ඔබ සූදානම් වන්නේ ඔබ පරිශීලනය කරන පිටුවට සම්බන්ධ වූ අනෙක් පිටු මකා දැමීමටයි.",
# Rollback
'rollback' => 'සංස්කරණයන් පුනරාවර්තනය කරන්න',
'tooltip-pt-watchlist' => 'වෙනස්වීම් සිදුවී තිබේදැයි යන්න පිලිබඳව ඔබගේ විමසුමට ලක්ව ඇති පිටු ලැයිස්තුව',
'tooltip-pt-mycontris' => 'ඔබගේ දායකත්වයන් ලැයිස්තුව',
'tooltip-pt-login' => 'පිවිසීම කෙරෙහි ඔබ උද්යෝගිමත් කෙරෙයි. එහෙත්, එය අනිවාර්ය නැත',
-'tooltip-pt-anonlogin' => 'එය අවශ්යයෙන් කල යුත්තක් නොවුනද, ප්රවිෂ්ට වීම සඳහා ඔබ ධෛර්යමත් කරනු ලැබේ.',
'tooltip-pt-logout' => 'නික්මීම',
'tooltip-ca-talk' => 'අන්තර්ගත පිටුව පිළිබඳ සාකච්ඡාව',
'tooltip-ca-edit' => 'ඔබට මෙම පිටුව සංස්කරණය කල හැක. සුරැකීමට පෙර කරුණාකර පෙරදසුන බොත්තම භාවිතා කරන්න',
'duration-minutes' => '{{PLURAL:$1|මිනිත්තු|මිනිත්තු}} $1 ක්',
'duration-hours' => '{{PLURAL:$1|පැය|පැය}} $1 ක්',
'duration-days' => '{{PLURAL:$1|දින|දින}} $1 ක්',
-'duration-weeks' => '{{PLURAL: $1|සති|සති}} $1 ක්',
+'duration-weeks' => '{{PLURAL:$1|සති|සති}} $1 ක්',
'duration-years' => '{{PLURAL:$1|වසර|වසර}} $1 ක්',
'duration-decades' => '{{PLURAL:$1|දශක|දශක}} $1 ක්',
'duration-centuries' => '{{PLURAL:$1|ශතවර්ෂ|ශතවර්ෂ}} $1 ක්',
$messages = array(
# User preference toggles
'tog-underline' => 'Podčiarkovať odkazy:',
-'tog-justify' => 'Zarovnávať okraje odstavcov',
'tog-hideminor' => 'V posledných úpravách nezobrazovať drobné úpravy',
'tog-hidepatrolled' => 'Skryť strážené úpravy v Posledných úpravách',
'tog-newpageshidepatrolled' => 'Skryť strážené stránky zo zoznamu nových stránok',
'tog-numberheadings' => 'Automaticky číslovať nadpisy',
'tog-showtoolbar' => 'Zobraziť panel nástrojov úprav',
'tog-editondblclick' => 'Upravovať stránky po dvojitom kliknutí',
-'tog-editsection' => 'Umožniť upravovanie sekcie prostredníctvom odkazov [upraviť]',
'tog-editsectiononrightclick' => 'Umožniť upravovanie sekcie pravým kliknutím na nadpisy sekcií',
-'tog-showtoc' => 'Zobrazovať tabuľku s obsahom (pre stránky s viac ako 3 nadpismi)',
'tog-rememberpassword' => 'Zapamätať si prihlásenie na tomto počítači (najviac $1 {{PLURAL:$1|deň|dni|dní}})',
'tog-watchcreations' => 'Pridávať stránky, ktoré vytvorím a súbory, ktoré nahrám medzi sledované',
'tog-watchdefault' => 'Pridávať stránky a súbory, ktoré upravím medzi sledované',
'viewsourcetext' => 'Môžete si zobraziť a kopírovať zdroj tejto stránky:',
'viewyourtext' => "Môžete si prehliadnuť a skopírovať zdrojový kód '''vašich zmien''' tejto stránky:",
'protectedinterface' => 'Táto stránka poskytuje text používateľského rozhrania tejto wiki a je zamknutá, aby sa predišlo jej zneužitiu.
-Ak chcete pridať alebo zmeniť preklady pre všetky wiki, prosím, použite [//translatewiki.net/wiki/Main_Page?setlang=sk translatewiki.net], projekt lokalizácie MediaWiki.',
+Ak chcete pridať alebo zmeniť preklady pre všetky wiki, prosím, použite [//translatewiki.net/ translatewiki.net], projekt lokalizácie MediaWiki.',
'editinginterface' => "'''Upozornenie:''' Upravujete stránku, ktorá poskytuje text používateľského rozhrania.
Zmeny tejto stránky ovplyvnia vzhľad používateľského rozhrania ostatným používateľom.
-Ak chcete pridať alebo zmeniť preklady pre všetky wiki, prosím, použite [//translatewiki.net/wiki/Main_Page?setlang=sk translatewiki.net], projekt lokalizácie MediaWiki.",
+Ak chcete pridať alebo zmeniť preklady pre všetky wiki, prosím, použite [//translatewiki.net/ translatewiki.net], projekt lokalizácie MediaWiki.",
'cascadeprotected' => 'Táto stránka bola zamknutá proti úpravám, pretože je použitá na {{PLURAL:$1|nasledovnej stránke, ktorá je zamknutá|nasledovných stránkach, ktoré sú zamknuté}} voľbou „kaskádového zamknutia“:
$2',
'namespaceprotected' => "Nemáte povolenie upravovať stránky v mennom priestore '''$1'''.",
'passwordtooshort' => 'Heslo musí mať dĺžku aspoň $1 {{PLURAL:$1|znak|znaky|znakov}}.',
'password-name-match' => 'Vaše heslo musí byť iné ako vaše používateľské meno.',
'password-login-forbidden' => 'Použitie tohto používateľského mena a hesla bolo zakázané.',
-'mailmypassword' => 'Pošlite mi e-mailom dočasné heslo',
+'mailmypassword' => 'Obnoviť heslo',
'passwordremindertitle' => 'Nové dočasné heslo pre {{GRAMMAR:akuzatív|{{SITENAME}}}}',
'passwordremindertext' => 'Niekto (pravdepodobne vy, z IP adresy $1)
požiadal, aby sme vám zaslali nové prihlasovacie heslo do {{GRAMMAR:genitív|{{SITENAME}}}} ($4).
'showhideselectedversions' => 'Zobraziť/skryť vybrané revízie',
'editundo' => 'vrátiť',
'diff-empty' => '(Žiaden rozdiel)',
-'diff-multi' => '{{PLURAL:$1|Jedna medziľahlá revízia|$1 medziľahlé revízie|$1 medziľahlých revízií}} od {{PLURAL:$2|jedného používateľa|$2 používateľov}} {{PLURAL:$1|nie je zobrazená|nie sú zobrazené|nie je zobrazených}}.',
'diff-multi-manyusers' => '({{PLURAL:$1|$1 medziľahlá revízia|$1 medziľahlé revízie|$1 medziľahlých revízií}} od viac ako {{PLURAL:$2|$2 používateľa|$2 používateľov}} {{PLURAL:$1|nie je zobrazená|nie sú zobrazené|nie je zobrazených}})',
'difference-missing-revision' => '{{PLURAL:$2|$2 revízia|$2 revízie|$2 revízií}} pre požadovaný rozdiel ($1) {{PLURAL:$2|neexistuje|neexistujú|neexistuje}}.
'shown-title' => 'Zobraziť $1 {{PLURAL:$1|výsledok|výsledky|výsledkov}} na stránku',
'viewprevnext' => 'Zobraziť ($1 {{int:pipe-separator}} $2) ($3).',
'searchmenu-exists' => "*Stránka '''[[$1]]'''",
-'searchmenu-new' => "'''Vytvoriť stránku „[[:$1|$1]]“ na tejto wiki'''",
+'searchmenu-new' => '<strong>Vytvoriť na tejto wiki stránku „[[:$1|$1]]“!</strong> {{PLURAL:$2|0=|Pozrite si tiež stránku nájdenú vašim vyhľadávaním.|Pozrite si tiež stránky nájdené vašim vyhľadávaním.}}',
'searchprofile-articles' => 'Stránky s obsahom',
'searchprofile-project' => 'Stránky pomocníka a projektu',
'searchprofile-images' => 'Multimédiá',
'rows' => 'Riadky:',
'columns' => 'Stĺpce:',
'searchresultshead' => 'Vyhľadávanie',
-'resultsperpage' => 'Počet vyhovujúcich výsledkov zobrazených na stránku:',
'stub-threshold' => 'Prah formátovania <a href="#" class="stub">výhonkov</a> (v bajtoch):',
'stub-threshold-disabled' => 'Vypnuté',
'recentchangesdays' => 'Koľko dní zobrazovať v posledných úpravách:',
'recentchanges-label-bot' => 'Túto úpravu vykonal bot',
'recentchanges-label-unpatrolled' => 'Táto úprava zatiaľ nebola strážená',
'recentchanges-label-plusminus' => 'Veľkosť stránky sa zmenila o toľkoto bajtov',
+'recentchanges-legend-heading' => "'''Legenda:'''",
'recentchanges-legend-newpage' => '(pozri tiež [[Special:NewPages|zoznam nových stránok]])',
'rcnotefrom' => "Nižšie sú zobrazené úpravy od '''$2''' (do '''$1''').",
'rclistfrom' => 'Zobraziť nové úpravy počnúc od $1',
'rcshowhideminor' => '$1 drobné úpravy',
'rcshowhidebots' => '$1 botov',
-'rcshowhideliu' => '$1 prihlásených používateľov',
+'rcshowhideliu' => '$1 registrovaní užívatelia',
'rcshowhideanons' => '$1 anonymných používateľov',
'rcshowhidepatr' => '$1 úpravy strážených stránok',
'rcshowhidemine' => '$1 moje úpravy',
'watchmethod-list' => 'kontrolujú posledné úpravy v sledovaných stránkach',
'watchlistcontains' => 'Váš zoznam sledovaných obsahuje {{PLURAL:$1|jednu stránku|$1 stránky|$1 stránok}}.',
'iteminvalidname' => 'Problém s položkou „$1“, neplatné meno...',
-'wlnote' => "Nižšie {{PLURAL:$1|je posledná jedna zmena|sú posledné '''$1''' zmeny|je posledných '''$1''' zmien}} za {{PLURAL:$2|poslednú hodinu|posledné '''$2''' hodiny|posledných '''$2''' hodín}} do $4, $3.",
'wlshowlast' => 'Zobraziť posledných $1 hodín $2 dní $3',
'watchlist-options' => 'Nastavenia zoznamu sledovaných',
'tooltip-pt-watchlist' => 'Zoznam stránok, na ktorých sledujete zmeny.',
'tooltip-pt-mycontris' => 'Zoznam vašich príspevkov',
'tooltip-pt-login' => 'Odporúčame vám prihlásiť sa, nie je to však povinné.',
-'tooltip-pt-anonlogin' => 'Odporúčame vám prihlásiť sa, nie je to však povinné.',
'tooltip-pt-logout' => 'Odhlásiť',
'tooltip-ca-talk' => 'Diskusia o obsahu stránky',
'tooltip-ca-edit' => 'Môžete upravovať túto stránku. Prosím, pred uložením použite tlačidlo Zobraziť náhľad.',
# Special:SpecialPages
'specialpages' => 'Špeciálne stránky',
+'specialpages-note-top' => 'Legenda',
'specialpages-note' => '* Bežné špeciálne stránky.
* <strong class="mw-specialpagerestricted">Špeciálne stránky s obmedzeným prístupom.</strong>
* <span class="mw-specialpagecached">Špeciálne stránky vo vyrovnávacej pamäti (môže byť neaktuálne).</span>',
$messages = array(
# User preference toggles
'tog-underline' => 'Podčrtavanje povezav:',
-'tog-justify' => 'Poravnavaj odstavke',
'tog-hideminor' => 'Skrij manjše popravke v zadnjih spremembah',
'tog-hidepatrolled' => 'Skrij pregledana urejanja v zadnjih spremembah',
'tog-newpageshidepatrolled' => 'Skrij pregledane strani iz seznama novih strani',
'tog-numberheadings' => 'Samodejno številči poglavja',
'tog-showtoolbar' => 'Prikaži urejevalno orodno vrstico',
'tog-editondblclick' => 'Omogoči urejanje strani z dvojnim klikom',
-'tog-editsection' => 'Omogoči urejanje delov prek povezav [{{int:editsection}}]',
'tog-editsectiononrightclick' => 'Omogoči urejanje razdelkov z desnim klikanjem njihovih naslovov',
-'tog-showtoc' => 'Prikaži vsebino (strani z več kot tremi naslovi)',
'tog-rememberpassword' => 'Zapomni si me v tem brskalniku (za največ $1 {{PLURAL:$1|dan|dneva|dni}})',
'tog-watchcreations' => 'Vse ustvarjene strani in moje naložene datoteke dodaj na spisek nadzorov',
'tog-watchdefault' => 'Dodaj na spisek nadzorov vse članke in datoteke, ki sem jih spremenil/-a',
'retypenew' => 'Ponovno vpišite geslo:',
'resetpass_submit' => 'Nastavi geslo in se prijavi',
'changepassword-success' => 'Vaše geslo je bilo uspešno spremenjeno!',
+'changepassword-throttled' => 'Nedavno ste izvedli preveč poskusov prijave.
+Prosimo, počakajte $1, preden poskusite znova.',
'resetpass_forbidden' => 'Gesla ne morete spremeniti',
'resetpass-no-info' => 'Za neposreden dostop do te strani morate biti prijavljeni.',
'resetpass-submit-loggedin' => 'Spremenite geslo',
'changeemail-password' => 'Vaše geslo za {{GRAMMAR:tožilnik|{{SITENAME}}}}:',
'changeemail-submit' => 'Spremeni e-naslov',
'changeemail-cancel' => 'Prekliči',
+'changeemail-throttled' => 'Izvedli ste preveč poskusov prijave.
+Prosimo, počakajte $1, preden poskusite znova.',
# Special:ResetTokens
'resettokens' => 'Ponastavitev žetonov',
'content-not-allowed-here' => 'Vsebina »$1« ni dovoljena na strani [[$2]]',
'editwarning-warning' => 'Če zapustite stran, boste morda izgubili vse spremembe, ki ste jih naredili.
Če ste prijavljeni, lahko to opozorilo onemogočite v razdelku »Urejanje« v svojih nastavitvah.',
+'editpage-notsupportedcontentformat-title' => 'Oblika vsebine ni podprta',
+'editpage-notsupportedcontentformat-text' => 'Model vsebine $2 ne podpira oblike vsebine $1.',
# Content models
'content-model-wikitext' => 'wikibesedilo',
'cantcreateaccount-text' => "Registracije z IP-naslova ('''$1''') je administrator(ka) [[User:$3|$3]] blokiral(a).
Razlog, ki ga je $3 podal(a), je ''$2''.",
+'cantcreateaccount-range-text' => "Ustvarjanje računov z IP-naslovov v območju '''$1''', ki vključuje vaš IP-naslov ('''$4'''), je blokiral(-a) [[User:$3|$3]].
+
+Razlog, ki ga je podal(-a) $3, je ''$2''.",
# History pages
'viewpagelogs' => 'Poglej dnevniške zapise o strani',
'showhideselectedversions' => 'Prikaži/skrij izbrane redakcije',
'editundo' => 'razveljavi',
'diff-empty' => '(Ni razlike)',
-'diff-multi' => '({{PLURAL:$1|$1 vmesna redakcija|$1 vmesni redakciji|$1 vmesne redakcije|$1 vmesnih redakcij}} {{PLURAL:$2|$2 uporabnika|$2 uporabnikov}} {{PLURAL:$1|ni prikazana|nista prikazani|niso prikazane|ni prikazanih}})',
'diff-multi-manyusers' => '({{PLURAL:$1|$1 vmesna redakcija|$1 vmesni redakciji|$1 vmesne redakcije|$1 vmesnih redakcij}} več kot $2 {{PLURAL:$2|uporabnika|uporabnikov}} {{PLURAL:$1|ni prikazana|nista prikazani|niso prikazane|ni prikazanih}})',
'difference-missing-revision' => '{{PLURAL:$2|Ene redakcije|$2 redakcij}} razlike ($1) {{PLURAL:$2|nisem}} našel.
'shown-title' => 'Prikaži $1 {{PLURAL:$1|rezultat|rezultata|rezultate|rezultatov}} na stran',
'viewprevnext' => 'Prikazujem ($1 {{int:pipe-separator}} $2) ($3).',
'searchmenu-exists' => "'''Na tem wikiju obstaja stran »[[:$1]]«'''",
-'searchmenu-new' => "'''Ustvari stran »[[:$1]]« na tem wikiju!'''",
+'searchmenu-new' => '<strong>Ustvari stran »[[:$1]]« na tem wikiju!</strong> {{PLURAL:$2|0=|Oglejte si tudi rezultate iskanja.}}',
'searchprofile-articles' => 'Članki',
'searchprofile-project' => 'Pomoč in projektne strani',
'searchprofile-images' => 'Večpredstavnost',
'search-result-score' => 'Ustreznost: $1%',
'search-redirect' => '(preusmeritev $1)',
'search-section' => '(razdelek $1)',
+'search-file-match' => '(ujema se z vsebino datoteke)',
'search-suggest' => 'Iščete morda: $1',
'search-interwiki-caption' => 'Sorodni projekti',
'search-interwiki-default' => '$1 zadetkov:',
'rows' => 'Vrstic:',
'columns' => 'Stolpcev:',
'searchresultshead' => 'Nastavitve poizvedovanja',
-'resultsperpage' => 'Prikazanih zadetkov na stran:',
'stub-threshold' => 'Prag označevanja <a href="#" class="stub">škrbin</a> (v bajtih):',
'stub-threshold-disabled' => 'Onemogočeno',
'recentchangesdays' => 'Število dni, prikazanih v zadnjih spremembah:',
'prefs-tabs-navigation-hint' => 'Namig: Za krmarjenje med zavihki na seznamu zavihkov lahko uporabite levo in desno smerno tipko.',
# User preference: email validation using jQuery
-'email-address-validity-valid' => 'Izgleda veljaven',
-'email-address-validity-invalid' => 'Obvezen je veljaven naslov!',
+'email-address-validity-valid' => 'E-poštni naslov je videti veljaven',
+'email-address-validity-invalid' => 'Vnesite veljaven e-poštni naslov',
# User rights
'userrights' => 'Upravljanje s pravicami uporabnikov',
'file-exists-duplicate' => 'Ta datoteka je dvojnik {{PLURAL:$1|naslednje datoteke|naslednjih datotek}}:',
'file-deleted-duplicate' => 'Datoteka je identična tej ([[:$1]]), ki je bila predhodno izbrisana.
Preverite zgodovino brisanja datoteke, preden jo ponovno naložite.',
+'file-deleted-duplicate-notitle' => 'Datoteka, identična tej datoteki, je bila v preteklosti izbrisana in naslov je bil zatrt.
+Poprosite koga, ki ima možnost ogleda podatkov zatrtih datotek, da preveri položaj, preden nadaljujete s ponovnim nalaganjem.',
'uploadwarning' => 'Opozorilo!',
'uploadwarning-text' => 'Prosimo, spremenite opis datoteke spodaj in poskusite ponovno.',
'savefile' => 'Shrani datoteko',
'protectedpages' => 'Zaščitene strani',
'protectedpages-indef' => 'Samo neomejene zaščite',
'protectedpages-cascade' => 'Le kaskadne zaščite',
+'protectedpages-noredirect' => 'Skrij preusmeritve',
'protectedpagesempty' => 'Nobena stran ni trenutno zaščitena s temi parametri.',
'protectedtitles' => 'Zaščiteni naslovi',
'protectedtitlesempty' => 'Noben naslov ni trenutno zaščiten s temi parametri.',
'watchmethod-list' => 'med spremljanimi stranmi iščem nedavna urejanja',
'watchlistcontains' => 'Spremljate $1 {{PLURAL:$1|stran|strani}}.',
'iteminvalidname' => 'Težava z izbiro »$1«, neveljavno ime ...',
-'wlnote' => "{{PLURAL:$1|Navedena je zadnja|Navedeni sta zadnji|Navedene so zadnje|Navedenih je zadnjih}} '''$1''' {{PLURAL:$1|sprememba|spremembi|spremembe|sprememb}} v {{PLURAL:$2|zadnji '''$2''' uri|zadnjih '''$2''' urah}}, od $3, $4.",
+'wlnote2' => 'Spodaj so navedene spremembe v {{PLURAL:$1|zadnji uri|zadnjih <strong>$1</strong> urah}}, od $2, $3.',
'wlshowlast' => 'Prikaži zadnjih $1 ur; $2 dni; $3;',
'watchlist-options' => 'Možnosti spiska nadzorov',
'delete-warning-toobig' => 'Ta stran ima obsežno zgodovino urejanja, tj. čez $1 {{PLURAL:$1|redakcijo|redakciji|redakcije|redakcij}}.
Njeno brisanje lahko zmoti obratovanje zbirke podatkov {{GRAMMAR:dative|{{SITENAME}}}};
nadaljujte s previdnostjo.',
+'deleting-backlinks-warning' => "'''Opozorilo:''' Druge strani se povezujejo na ali vključujejo stran, ki jo nameravate izbrisati.",
# Rollback
'rollback' => 'Vrni spremembe',
Oglejte si [[Special:BlockList|seznam blokad]] za pregled blokad.',
'ipb-blockingself' => 'Nameravate se blokirati! Ste prepričani, da želite to storiti?',
'ipb-confirmhideuser' => 'Nameravate blokirati uporabnika z omogočeno možnostjo »skrij uporabnika«. To bo skrilo uporabnikovo ime na vseh seznamih in dnevniških vnosih. Ste prepričani, da želite to storiti?',
+'ipb-confirmaction' => 'Če ste prepričani, da to res želite storiti, označite polje »{{int:ipb-confirm}}« na dnu.',
'ipb-edit-dropdown' => 'Uredi razloge blokade',
'ipb-unblock-addr' => 'Deblokiraj $1',
'ipb-unblock' => 'Odblokirajte uporabniško ime ali IP-naslov',
'range_block_disabled' => 'Možnost administratorjev za blokiranje urejanja IP-razponom je onemogočena.',
'ipb_expiry_invalid' => 'Neveljaven čas preteka',
'ipb_expiry_temp' => 'Blokade skritih uporabniških imen morajo biti trajne.',
-'ipb_hide_invalid' => 'Ne morem skriti tega računa; morda ima preveč urejanj.',
+'ipb_hide_invalid' => 'Ne morem skriti tega računa; ima več kot $1 {{PLURAL:$1|urejanje|urejanji|urejanja|urejanj}}.',
'ipb_already_blocked' => '"$1" je že blokiran',
'ipb-needreblock' => '$1 je že blokiran.
Ali želite spremeniti nastavitve blokade?',
'allmessages-prefix' => 'Filtriraj po predponi:',
'allmessages-language' => 'Jezik:',
'allmessages-filter-submit' => 'Pojdi',
+'allmessages-filter-translate' => 'Prevedi',
# Thumbnails
'thumbnail-more' => 'Povečaj',
Manjka začasna mapa.',
'import-parse-failure' => 'Neuspeh razčlenitve uvoza XML',
'import-noarticle' => 'Ni strani za uvoz!',
-'import-nonewrevisions' => 'Vse redakcije so bile že prej uvožene.',
+'import-nonewrevisions' => 'Uvozil nisem nobene redakcije (vse so bile že prisotne ali pa sem jih preskočil zaradi napak).',
'xml-error-string' => '$1 v vrstici $2, znak $3 (zlog $4): $5',
'import-upload' => 'Naložite podatke XML',
'import-token-mismatch' => 'Izguba podatkov o seji.
'import-error-special' => 'Strani »$1« nismo uvozili, ker spada k posebnemu imenskemu prostoru, ki ne dovoljuje strani.',
'import-error-invalid' => 'Strani »$1« nismo uvozili, ker njeno ime ni veljavno.',
'import-error-unserialize' => 'Redakcije $2 strani »$1« ni bilo mogoče deserializirati. Redakcija bi naj uporabljala model vsebine $3, serializiran kot $4.',
+'import-error-bad-location' => 'Redakcije $2, ki uporablja model vsebine $3, na tem wikiju ne morete straniti na »$1«, saj omenjeni model ni podprt na tej strani.',
'import-options-wrong' => '{{PLURAL:$2|Napačna možnost|Napačni možnosti|Napačne možnosti}}: <nowiki>$1</nowiki>',
'import-rootpage-invalid' => 'Podana korenska stran ni veljaven naslov.',
'import-rootpage-nosubpage' => 'Imenski prostor »$1« korenske strani ne dovoli podstrani.',
'tooltip-pt-watchlist' => 'Seznam strani, katerih spremembe spremljate',
'tooltip-pt-mycontris' => 'Seznam vaših prispevkov',
'tooltip-pt-login' => 'Prijava ni obvezna, vendar je zaželena',
-'tooltip-pt-anonlogin' => 'Prijava ni obvezna, vendar je zaželena',
'tooltip-pt-logout' => 'Odjavite se',
'tooltip-ca-talk' => 'Pogovor o strani',
'tooltip-ca-edit' => 'Stran lahko uredite. Preden jo shranite, uporabite gumb za predogled.',
'exif-planarconfiguration-1' => 'grudast format',
'exif-planarconfiguration-2' => 'ravninski format',
-'exif-xyresolution-i' => '$1 dpi ({{plural:$1|točka/palec|točki/palec|točke/palec|točk/palec|točk/palec}})',
-'exif-xyresolution-c' => '$1 dpc ({{plural:$1|točka/centimeter|točki/centimeter|točke/centimeter|točk/centimeter|točk/centimeter}})',
+'exif-xyresolution-i' => '$1 dpi ({{PLURAL:$1|točka/palec|točki/palec|točke/palec|točk/palec|točk/palec}})',
+'exif-xyresolution-c' => '$1 dpc ({{PLURAL:$1|točka/centimeter|točki/centimeter|točke/centimeter|točk/centimeter|točk/centimeter}})',
'exif-colorspace-65535' => 'Neumerjeno',
'version-hook-name' => 'Ime razširitve',
'version-hook-subscribedby' => 'Naročen s strani',
'version-version' => '(Različica $1)',
-'version-license' => 'Licenca',
+'version-license' => 'Dovoljenje MediaWiki',
+'version-ext-license' => 'Dovoljenje',
+'version-ext-colheader-name' => 'Razširitev',
+'version-ext-colheader-version' => 'Različica',
+'version-ext-colheader-license' => 'Dovoljenje',
+'version-ext-colheader-description' => 'Opis',
+'version-ext-colheader-credits' => 'Avtorji',
+'version-license-title' => 'Dovoljenje za $1',
+'version-license-not-found' => 'Za razširitev nismo našli podrobnih informacij o dovoljenju.',
+'version-credits-title' => 'Zasluge za $1',
+'version-credits-not-found' => 'Za razširitev nismo našli podrobnih informacij o zaslugah.',
'version-poweredby-credits' => "Ta wiki poganja '''[https://www.mediawiki.org/ MediaWiki]''', vse pravice pridržave © 2001-$1 $2.",
'version-poweredby-others' => 'drugi',
'version-poweredby-translators' => 'Prevajalci translatewiki.net',
'api-error-overwrite' => 'Prepisovanje obstoječe datoteke ni dovoljeno.',
'api-error-stashfailed' => 'Notranja napaka: strežnik ni uspel shraniti začasne datoteke.',
'api-error-publishfailed' => 'Notranja napaka: strežnik ni uspel objaviti začasne datoteke.',
+'api-error-stasherror' => 'Pri nalaganju datoteke v hrambo je prišlo do napake.',
'api-error-timeout' => 'Strežnik se ni odzval v pričakovanem času.',
'api-error-unclassified' => 'Prišlo je do neznane napake',
'api-error-unknown-code' => 'Neznana napaka: »$1«',
'expand_templates_generate_rawhtml' => 'Prikaži surovi HTML',
'expand_templates_preview' => 'Predogled',
+# Unknown messages
+'uploadinvalidxml' => 'XML v naloženi datoteki ne moremo razčleniti.',
);
$messages = array(
# User preference toggles
'tog-underline' => 'Verknipfonga unterstreeicha:',
-'tog-justify' => 'Obschniete eim Block setza',
'tog-hideminor' => 'Klänne Änneronga ausblenda',
'tog-hidepatrolled' => 'Gepriefte Änneronga ausblenda',
'tog-newpageshidepatrolled' => 'Kontrollierte Seeta ei dar Liste "neue Seeta" verberga',
'tog-numberheadings' => 'Ieberschrifta automatisch nummeriern',
'tog-showtoolbar' => 'Bearbta Werkzichleiste aozäan (beneeticht JavaScript)',
'tog-editondblclick' => 'Seita mit Doppelklick bearbta (JavaScript)',
-'tog-editsection' => 'Links zum Bearbta vu eenzelner Obschnitte oazeiga',
'tog-editsectiononrightclick' => 'Eenzelne Obschniete per Rechtsklick bearbta (JavaScript)',
-'tog-showtoc' => 'Inhaltsverzeichnis aozäan bei meh wie drei Ieberschrifta',
'tog-rememberpassword' => 'Notzer sull uff de Lengde oagemeldt blein (login uff diesem Rechner speichern) (for a maximum of $1 {{PLURAL:$1|day|days}})',
'tog-watchcreations' => 'Salber derstallte Seyta automatisch beobachta',
'tog-watchdefault' => 'Salber geänderte on neu erstellte Seyta automatisch beobachta (zu menner Beobachtungsliste hinzufügen)',
'lineno' => 'Zeile $1:',
'compareselectedversions' => 'Gewählte Versiona vergleichen',
'editundo' => 'rieckgängig',
-'diff-multi' => '({{PLURAL:$1|Eine dazwischenliegende Version|$1 dazwischenliegende Versionen}} von {{PLURAL:$2|einem Benutzer|$2 Benutzern}} {{PLURAL:$1|wird|werden}} nicht angezeigt)',
# Search results
'searchresults' => 'Sichergebnisse',
'prefs-editing' => 'Bearbta',
'rows' => 'Zeila:',
'columns' => 'Spalta:',
-'resultsperpage' => 'Treffer pro Seite:',
'stub-threshold' => 'Linkformatierung <a href="#" class="stub">klenner Seyta</a> (ei Byte):',
'recentchangesdays' => 'Oazoahl dar Tage, de de Liste dar „Letzta Änderunga“ standardmäßig imfassa sull:',
'recentchangescount' => 'Oazoahl dar standardmäßig oagezeigta Beoarbeetunga:',
'watchmethod-list' => 'Ieberpriefa dar Beobachtungsliste noach letzta Beoarbeetunga',
'watchlistcontains' => 'Denne Beobachtungsliste enthält $1 {{PLURAL:$1|Seite|Seita}}.',
'iteminvalidname' => "Problem mi'm Eintrag „$1“, ungiltiger Noame.",
-'wlnote' => "Is {{PLURAL:$1|folgt de letzte Änderung|folga de letzta '''$1''' Änderunga}} dar letzta {{PLURAL:$2|Stunde|'''$2''' Stunda}}.",
'wlshowlast' => 'Zeige de Änneronga dar letzta $1 Stonda, $2 Taage oder $3.',
'watchlist-options' => 'Oazeegeoptiona',
'tooltip-pt-watchlist' => 'Liste dar beobachteta Seyta',
'tooltip-pt-mycontris' => 'Liste denner Beiträge',
'tooltip-pt-login' => 'Siech oazumelda werd zwoar gerne gesahn, ies oaber kenne Pflicht.',
-'tooltip-pt-anonlogin' => 'Siech oazumelda werd zwar gerne gesahn, ies oaber kenne Pflicht.',
'tooltip-pt-logout' => 'Oabmelda',
'tooltip-ca-talk' => 'Dischkur iebern Inhalt dar Seite',
'tooltip-ca-edit' => "Seite bearbta. Bitte vur 'm Speichern de Vurschaufunktion benutza.",
$messages = array(
# User preference toggles
'tog-underline' => 'Linkiga hoos ka calaamadeysan:',
-'tog-justify' => 'Geesdhig baaragaraafyada',
'tog-hideminor' => 'Qari bedelada yar ee isbedelada dhow',
'tog-hidepatrolled' => 'Qari wax bedelkii ugu danbeeyay oo la waardiyeeyay',
'tog-newpageshidepatrolled' => 'Ka qari maqaalada la waardiyeeyay maqaalada kale ee cusub',
'tog-numberheadings' => 'Lambarada automaatik ahaan u tirinaayo Cinwaanada',
'tog-showtoolbar' => 'Itus bedelka qalabka shaqada (waxaa loo baahanyahay JavaScript)',
'tog-editondblclick' => 'wax ka bedel maqaalada labo jeer la riixay (waxaa loo baahanyahay JavaScript)',
-'tog-editsection' => 'Fasax wax ka bedelida cutubyada dhinaca linkiyada [wax ka bedel]',
'tog-editsectiononrightclick' => 'Fasax cutub wax ka bedelida hadii batoonka midig ee dooliga <br /> dhag lagu siiyo cinwaanka korkiisa (JavaScript)',
-'tog-showtoc' => "I'tus jadwalka (boggaga leh in kabadan 3 qoraalada sare)",
'tog-rememberpassword' => 'Kumbuyuutarkaan ku xasuusnaaw gudagalkeyga (ilaa $1 {{PLURAL:$1|maalin|maalmood}})',
'tog-watchcreations' => 'Ku dar boggaga aan aniga sameeyay liiskayga waardiyaha',
'tog-watchdefault' => 'Ku dar boggaga aan wax ka bedelo liiskayga waardiyaha',
$messages = array(
# User preference toggles
'tog-underline' => 'Nënvizo lidhjet:',
-'tog-justify' => 'Rregullo paragrafët',
'tog-hideminor' => 'Fshih redaktimet e vogla në ndryshimet e fundit',
'tog-hidepatrolled' => 'Fshih redaktimet e vrojtuara në ndryshimet e fundit',
'tog-newpageshidepatrolled' => 'Fshih faqet e vrojtuara nga lista e faqeve të reja',
'tog-numberheadings' => 'Numëro automatikish titujt',
'tog-showtoolbar' => 'Trego mjetet e redaktimit (kërkon JavaScript)',
'tog-editondblclick' => 'Redakto faqet me dopio-klik (kërkon JavaScript)',
-'tog-editsection' => 'Lejo redaktimin e seksioneve me anë të lidhjeve [redakto]',
'tog-editsectiononrightclick' => 'Lejo redaktimin e seksioneve duke klikuar me të djathtën mbi titullin e seksionit (kërkon JavaScript)',
-'tog-showtoc' => 'Trego tabelën e përmbajtjes (për faqet me më shume se 3 tituj)',
'tog-rememberpassword' => 'Mbaj mend fjalëkalimin tim në këtë shfletues (më së shumti për $1 {{PLURAL:$1|ditë|ditë}})',
'tog-watchcreations' => 'Shtoi faqet e krijuara dhe skedat e ngarkuara prej meje tek lista e faqeve nën mbikqyrje',
'tog-watchdefault' => 'Shto faqet dhe skedat e redaktuara prej meje tek lista e faqeve nën mbikqyrje',
{{PLURAL:$3|Ky fjalëkalim i përkohshëm|Këto fjalëkalime të përkohshme}} do të përfundojë për {{PLURAL:$5|një ditë|$5 ditë}}.
Ju duhet të kyçeni dhe të zgjidhni një fjalëkalim të ri tani. Nëse dikush tjetër e ka bërë këtë kërkesës, ose në qoftë se ju mbani mend fjalëkalimin tuaj origjinal, dhe ju nuk dëshirojni të ndryshoni atë, ju mund të injoroni këtë mesazh dhe do të vazhdoni përdorimin e fjalëkalimit tuaj të vjetër.',
-'passwordreset-emailtext-user' => 'Përdoruesi $1 në {{SITENAME }} ka kërkuar një kujtesë për të dhënat e llogarisë suaj për {{SITENAME }} ($4). Përdoruesi në vijim {{PLURAL: $3 | llogaria është | llogaritë janë}} të lidhur me këtë postë elektronike:
+'passwordreset-emailtext-user' => 'Përdoruesi $1 në {{SITENAME }} ka kërkuar një kujtesë për të dhënat e llogarisë suaj për {{SITENAME }} ($4). Përdoruesi në vijim {{PLURAL:$3 | llogaria është | llogaritë janë}} të lidhur me këtë postë elektronike:
$2
-{{PLURAL: $3 | Ky fjalëkalim i përkohshëm | Këto fjalëkalime të përkohshme}} do të përfundojë në {{PLURAL: $5 | një ditë | $5 ditë}}.
+{{PLURAL:$3 | Ky fjalëkalim i përkohshëm | Këto fjalëkalime të përkohshme}} do të përfundojë në {{PLURAL:$5 | një ditë | $5 ditë}}.
Ju duhet të kyçeni dhe të zgjidhni një fjalëkalim të ri tani. Nëse dikush tjetër e ka bërë këtë kërkesës, ose në qoftë se ju mbani mend fjalëkalimin tuaj origjinal, dhe ju nuk dëshirojni të ndryshoni atë, ju mund të injoroni këtë mesazh dhe do të vazhdoni përdorimin e fjalëkalimit tuaj të vjetër.',
'passwordreset-emailelement' => 'Nofka: $1
Fjalëkalimi i përkohshëm: $2',
'compareselectedversions' => 'Krahasoni versionet e zgjedhura',
'showhideselectedversions' => 'Shfaq/fshih versionet e zgjedhura',
'editundo' => 'zhbëje',
-'diff-multi' => '({{PLURAL:$1|Një version i ndërmjetshëm|$1 versione të ndërmjetshme}} nga {{PLURAL:$2|një përdorues|$2 përdorues}} i/të pashfaqur)',
'diff-multi-manyusers' => '({{PLURAL:$1|Një versioni i ndërmjetshëm|$1 versione të ndërmjetshme}} nga më shumë se $2 {{PLURAL:$2|përdorues|përdorues}} i/të pashfaqur)',
# Search results
'rows' => 'Rreshta:',
'columns' => 'Kollona:',
'searchresultshead' => 'Kërkimi',
-'resultsperpage' => 'Sa përputhje të tregohen për faqe:',
'stub-threshold' => 'Kufiri për formatin e <a href="#" class="stub">lidhjeve cung</a> (B):',
'stub-threshold-disabled' => 'Çaktivizuar',
'recentchangesdays' => 'Numri i ditëve të treguara në ndryshime së fundmi:',
'watchmethod-list' => 'duke parë faqet nën mbikqyrje për ndryshimet e fundit',
'watchlistcontains' => 'Lista mbikqyrëse e juaj ka $1 {{PLURAL:$1|faqe|faqe}}.',
'iteminvalidname' => "Problem me artikullin '$1', titull jo i saktë...",
-'wlnote' => "Më poshtë {{PLURAL:$1|është ndryshimi i fundit|janë '''$1''' ndryshimet e fundit}} në {{PLUARAL:$2:orën e fundit|'''$2''' orët e fundit}}, që nga $3, $4.",
'wlshowlast' => 'Trego $1 orët $2 ditët $3',
'watchlist-options' => 'Mundësitë e listës mbikqyrëse',
'tooltip-pt-watchlist' => 'Lista e faqeve nën mbikqyrjen tuaj.',
'tooltip-pt-mycontris' => 'Lista e kontributeve tuaja',
'tooltip-pt-login' => 'Identifikimi nuk është i detyrueshëm, megjithatë ne jua rekomandojmë.',
-'tooltip-pt-anonlogin' => 'Të hysh brenda nuk është e detyrueshme, por ka shumë përparësi.',
'tooltip-pt-logout' => 'Dalje',
'tooltip-ca-talk' => 'Diskutim për faqen përmbajtje',
'tooltip-ca-edit' => 'Ju mund ta redaktoni këtë faqe. Përdorni butonin Trego parapamjen para se të ruani ndryshimet.',
$messages = array(
# User preference toggles
'tog-underline' => 'Подвлачење веза:',
-'tog-justify' => 'Поравнај пасусе',
'tog-hideminor' => 'Сакриј мање измене у списку скорашњих измена',
'tog-hidepatrolled' => 'Сакриј прегледане измене у списку скорашњих измена',
'tog-newpageshidepatrolled' => 'Сакриј прегледане странице са списка нових страница',
'tog-numberheadings' => 'Самостално нумериши поднаслове',
'tog-showtoolbar' => 'Прикажи траку с алаткама за уређивање',
'tog-editondblclick' => 'Уређивање страница двоструким кликом',
-'tog-editsection' => 'Везе за уређивање појединачних одељака',
'tog-editsectiononrightclick' => 'Уређивање одељака десним кликом на њихове наслове',
-'tog-showtoc' => 'Прикажи садржај страница које имају више од три поднаслова',
-'tog-rememberpassword' => 'Запамти ме на овом прегледачу (најдуже $1 {{PLURAL:$1|дан|дана|дана}})',
+'tog-rememberpassword' => 'Запамти ме на овом прегледачу (најдуже $1 {{PLURAL:$1|дан|дана}})',
'tog-watchcreations' => 'Додај странице које направим и датотеке које пошаљем у списак надгледања',
'tog-watchdefault' => 'Додај странице и датотеке које изменим у списак надгледања',
'tog-watchmoves' => 'Додај странице и датотеке које преместим у списак надгледања',
'badaccess' => 'Грешке у овлашћењима',
'badaccess-group0' => 'Није вам дозвољено да извршите захтевану радњу.',
-'badaccess-groups' => 'Радња је доступна само корисницима у {{PLURAL:$2|следећој групи|следећим групама}}: $1.',
+'badaccess-groups' => 'Радња коју сте захтевали је ограничена само корисницима у {{PLURAL:$2|следећој групи|следећим групама}}: $1.',
'versionrequired' => 'Потребно је издање $1 Медијавикија',
'versionrequiredtext' => 'Потребно је издање $1 Медијавикија да бисте користили ову страницу.
'youhavenewmessages' => 'Имате $1 ($2).',
'youhavenewmessagesfromusers' => 'Имате $1 од {{PLURAL:$3|другог корисника|$3 корисника|$3 корисника}} ($2).',
'youhavenewmessagesmanyusers' => 'Имате $1 од много корисника ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|нову поруку|нове поруке}}',
-'newmessagesdifflinkplural' => '{{PLURAL:$1|последњу измену|последње измене}}',
+'newmessageslinkplural' => '{{PLURAL:$1|нову поруку|999=нове поруке}}',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|последњу измену|999=последње измене}}',
'youhavenewmessagesmulti' => 'Имате нових порука на $1',
'editsection' => 'уреди',
'editold' => 'уреди',
'badtitletext' => 'Наслов странице је неисправан, празан или је међујезички или међувики наслов погрешно повезан.
Можда садржи знакове који се не могу користити у насловима.',
'perfcached' => 'Следећи подаци су кеширани и могу бити застарели. Кеш садржи највише {{PLURAL:$1|један резултат|$1 резултата|$1 резултата}}.',
-'perfcachedts' => 'Следећи подаци су кеширании и последњи пут су ажурирани $2 у $3. Кеш садржи највише {{PLURAL:$4|један резултат|$4 резултата}}.',
+'perfcachedts' => 'Следећи подаци су кеширани и последњи пут су ажурирани $2 у $3. У кешу {{PLURAL:$4|је доступан највише један резултат|су доступна највише $4 резултата|је доступно највише $4 резултата}}.',
'querypage-no-updates' => 'Ажурирање ове странице је тренутно онемогућено.
Подаци који се овде налазе могу бити застарели.',
'viewsource' => 'Изворни код',
'invalidtitle-knownnamespace' => 'Неисправан наслов с именским простором „$2“ и текстом „$3“',
'invalidtitle-unknownnamespace' => 'Неисправан наслов с именским простором бр. $1 и текстом „$2“',
'exception-nologin' => 'Нисте пријављени',
-'exception-nologin-text' => 'Ова страница или радња захтева да будете пријављени на вики.',
+'exception-nologin-text' => '[[Special:Userlogin|Пријавите се]] да бисте приступили овој страници или радњи.',
+'exception-nologin-text-manual' => 'Морате бити $1 да бисте приступили овој страници или радњи.',
# Virus scanner
'virus-badscanner' => "Неисправна поставка: непознати скенер за вирусе: ''$1''",
'yourpasswordagain' => 'Потврда лозинке:',
'createacct-yourpasswordagain' => 'Потврдите лозинку',
'createacct-yourpasswordagain-ph' => 'Унесите лозинку још једном',
-'remembermypassword' => 'Ð\97апамÑ\82и моÑ\98Ñ\83 лозинкÑ\83 на овом прегледачу (најдуже $1 {{PLURAL:$1|дан|дана}})',
+'remembermypassword' => 'Ð\97апамÑ\82и ме на овом прегледачу (најдуже $1 {{PLURAL:$1|дан|дана}})',
'userlogin-remembermypassword' => 'Остави ме пријављеног/у',
'userlogin-signwithsecure' => 'Користите сигурну конекцију',
'yourdomainname' => 'Домен:',
'passwordtooshort' => 'Лозинка мора имати најмање {{PLURAL:$1|један знак|$1 знака|$1 знакова}}.',
'password-name-match' => 'Лозинка се мора разликовати од корисничког имена.',
'password-login-forbidden' => 'Коришћење овог корисничког имена и лозинке је забрањено.',
-'mailmypassword' => 'Ð\9fоÑ\88аÑ\99и новÑ\83 лозинку',
+'mailmypassword' => 'РеÑ\81еÑ\82Ñ\83Ñ\98 лозинку',
'passwordremindertitle' => '{{SITENAME}} – подсетник за лозинку',
'passwordremindertext' => 'Неко, вероватно ви, са ИП адресе $1 је затражио нову лозинку на викију {{SITENAME}} ($4).
Створена је привремена лозинка за {{GENDER:$2|корисника|корисницу|корисника}} $2 која гласи $3.
'blocked-mailpassword' => 'Вашој ИП адреси је онемогућено уређивање страница, као и могућност захтевања нове лозинке.',
'eauthentsent' => 'На наведену е-адресу је послат потврдни код.
Пре него што пошаљемо даљње поруке, пратите упутства с е-поште да бисте потврдили да сте ви отворили налог.',
-'throttled-mailpassword' => 'Подсетник за лозинку је послат {{PLURAL:$1|пре сат времена|у последња $1 сата|у последњих $1 сати}}.
-Ð\94а биÑ\81мо Ñ\81пÑ\80еÑ\87или злоÑ\83поÑ\82Ñ\80ебÑ\83, подÑ\81еÑ\82ник Ñ\88аÑ\99емо Ñ\81амо Ñ\98едном Ñ\83 Ñ\80окÑ\83 од {{PLURAL:$1|Ñ\98едног Ñ\81аÑ\82а|$1 сата|$1 сати}}.',
+'throttled-mailpassword' => 'Порука за промену лозинке је послата у {{PLURAL:$1|последњих сат времена|последња $1 сата|последњих $1 сати}}.
+Ð\94а биÑ\81мо Ñ\81пÑ\80еÑ\87или злоÑ\83поÑ\82Ñ\80ебÑ\83, подÑ\81еÑ\82ник Ñ\88аÑ\99емо Ñ\81амо Ñ\98едном Ñ\83 Ñ\80окÑ\83 од {{PLURAL:$1|Ñ\81аÑ\82 вÑ\80емена|$1 сата|$1 сати}}.',
'mailerror' => 'Грешка при слању поруке: $1',
'acct_creation_throttle_hit' => 'Посетиоци овог викија који користе вашу ИП адресу су већ отворили {{PLURAL:$1|један налог|$1 налога|$1 налога}} претходни дан, што је највећи дозвољени број у том временском периоду.
Због тога посетиоци с ове ИП адресе тренутно не могу отворити више налога.',
'emailauthenticated' => 'Ваша е-адреса је потврђена $2 у $3.',
'emailnotauthenticated' => 'Ваша е-адреса још није потврђена.
-Поруке неће бити послате ни за једну од следећих могућности.',
+Поруке неће бити послате ни у једном од следећих случајева.',
'noemailprefs' => 'Унесите е-адресу како би ове могућности радиле.',
'emailconfirmlink' => 'Потврдите своју е-адресу',
'invalidemailaddress' => 'Е-адреса не може бити прихваћена јер је неисправног облика.
{{PLURAL:$3|Привремена лозинка истиче|Привремене лозинке истичу}} за {{PLURAL:$5|један дан|$5 дана}}.
Пријавите се и изаберите нову лозинку. Ако је неко други захтевао ову радњу или сте се сетили лозинке и не желите да је мењате, занемарите ову поруку и наставите користити стару лозинку.',
-'passwordreset-emailtext-user' => '{{GENDER:$1|Корисник|Корисница|Корисник}} је затражио подсетник о подацима за пријаву на викију {{SITENAME}} ($4).
+'passwordreset-emailtext-user' => '{{GENDER:$1|Корисник је затражио|Корисница је затражила}} подсетник о подацима за пријаву на викију {{SITENAME}} ($4).
Следећи {{PLURAL:$3|кориснички налог је повезан|кориснички налози су повезани}} с овом е-адресом:
$2
-{{PLURAL:$3|Привремена лозинка истиче|Привремене лозинке истичу}} за {{PLURAL:$5|један дан|$5 дана|$5 дана}}.
+{{PLURAL:$3|Привремена лозинка истиче|Привремене лозинке истичу}} за {{PLURAL:$5|један дан|$5 дана}}.
Пријавите се и изаберите нову лозинку. Ако је неко други захтевао ову радњу или сте се сетили лозинке и не желите да је мењате, занемарите ову поруку.',
'passwordreset-emailelement' => 'Корисничко име: $1
Привремена лозинка: $2',
'blockedtitle' => 'Корисник је блокиран',
'blockedtext' => "'''Ваше корисничко име или ИП адреса је блокирана.'''
-Блокирање је {{GENDER:$4|извршио|извршила|извршио}} $1.
+Блокирање је {{GENDER:$4|извршио|извршила}} $1.
Разлог: ''$2''.
* Датум блокирања: $8
'revdelete-no-file' => 'Тражена датотека не постоји.',
'revdelete-show-file-confirm' => 'Желите ли да видите обрисану измену датотеке „<nowiki>$1</nowiki>“ од $2; $3?',
'revdelete-show-file-submit' => 'Да',
-'revdelete-selected' => "'''{{PLURAL:$2|Изабрана измена|Изабране измене}} странице '''[[:$1]]''''''",
+'revdelete-selected' => "'''{{PLURAL:$2|Изабрана измена|Изабране измене}} странице [[:$1]]'''",
'logdelete-selected' => "'''{{PLURAL:$1|Изабрана ставка у историји|Изабране ставке у историји}}:'''",
'revdelete-text' => "'''Обрисане измене ће и даље бити приказане у историји страница и записима, али делови њиховог садржаја неће бити доступни јавности.'''
Други администратори на овом викију ће и даље имати приступ сакривеном садржају, а они ће тај садржај моћи да врате путем овог сучеља, осим ако нису постављена додатна ограничења.",
'revdelete-hide-text' => 'Текст ревизије',
'revdelete-hide-image' => 'Сакриј садржај датотеке',
'revdelete-hide-name' => 'Сакриј радњу и одредиште',
-'revdelete-hide-comment' => 'сакриј опис измене',
+'revdelete-hide-comment' => 'Опис измене',
'revdelete-hide-user' => 'Кориснчко име уредника/ИП адреса',
'revdelete-hide-restricted' => 'Сакриј податке од администратора и других корисника',
'revdelete-radio-same' => '(не мењај)',
'showhideselectedversions' => 'Прикажи/сакриј изабране измене',
'editundo' => 'поништи',
'diff-empty' => '(Нема разлике)',
-'diff-multi' => '({{PLURAL:$1|није приказана међуизмена|нису приказане $1 међуизмене|није приказано $1 међуизмена}} {{PLURAL:$2|једног|$2|$2}} корисника)',
'diff-multi-manyusers' => '({{PLURAL:$1|Није приказана међуизмена|Нису приказане $1 међуизмене|Није приказано $1 међуизмена}} од више од $2 корисника)',
'difference-missing-revision' => 'Не могу да пронађем {{PLURAL:$2|једну измену|$2 измене|$2 измена}} од ове разлике ($1).
'preferences' => 'Подешавања',
'mypreferences' => 'Подешавања',
'prefs-edits' => 'Број измена:',
+'prefsnologintext2' => 'Морате бити $1 да бисте мењали своја подешавања.',
'prefs-skin' => 'Тема',
'skin-preview' => 'Прегледај',
'datedefault' => 'Свеједно',
'rows' => 'Редова:',
'columns' => 'Колоне:',
'searchresultshead' => 'Претрага',
-'resultsperpage' => 'Погодака по страници:',
'stub-threshold' => 'Праг за обликовање <a href="#" class="stub">везе као клице</a> (у бајтовима):',
'stub-threshold-disabled' => 'Онемогућено',
'recentchangesdays' => 'Број дана у скорашњим изменама:',
'userrights-reason' => 'Разлог:',
'userrights-no-interwiki' => 'Немате овлашћења да мењате корисничка права на другим викијима.',
'userrights-nodatabase' => 'База података $1 не постоји или није локална.',
-'userrights-nologin' => 'Ð\9cоÑ\80аÑ\82е Ñ\81е [[Special:UserLogin|пÑ\80иÑ\98авиÑ\82и]] Ñ\81 админиÑ\81Ñ\82Ñ\80аÑ\82оÑ\80Ñ\81ким налогом да биÑ\81Ñ\82е додали корисничка права.',
+'userrights-nologin' => 'Ð\9cоÑ\80аÑ\82е Ñ\81е [[Special:UserLogin|пÑ\80иÑ\98авиÑ\82и]] Ñ\81 админиÑ\81Ñ\82Ñ\80аÑ\82оÑ\80Ñ\81ким налогом да биÑ\81Ñ\82е меÑ\9aали корисничка права.',
'userrights-notallowed' => 'Немате овлашћења да додајете или уклањате корисничка права.',
'userrights-changeable-col' => 'Групе које можете да промените',
'userrights-unchangeable-col' => 'Групе које не можете да промените',
'group-sysop' => 'Администратори',
'group-bureaucrat' => 'Бирократе',
'group-suppress' => 'Ревизори',
-'group-all' => '(Ñ\81ве)',
+'group-all' => '(Ñ\81ви)',
'group-user-member' => '{{GENDER:$1|корисник|корисница|корисник}}',
'group-autoconfirmed-member' => '{{GENDER:$1|аутоматски потврђен корисник|аутоматски потврђена корисница|аутоматски потврђен корисник}}',
'group-bot-member' => '{{GENDER:$1|бот}}',
'group-sysop-member' => '{{GENDER:$1|администратор|администраторка|администратор}}',
'group-bureaucrat-member' => '{{GENDER:$1|бирократа|бирократкиња|бирократа}}',
-'group-suppress-member' => '{{GENDER:$1|ревизор|ревизорка|ревизор}}',
+'group-suppress-member' => '{{GENDER:$1|ревизор|ревизорка}}',
'grouppage-user' => '{{ns:project}}:Корисници',
'grouppage-autoconfirmed' => '{{ns:project}}:Аутоматски потврђени корисници',
'filename-toolong' => 'Називи датотека могу имати највише 240 бајтова.',
'badfilename' => 'Назив датотеке је промењен у „$1“.',
'filetype-mime-mismatch' => 'Екстензија „.$1“ не одговара препознатој врсти MIME датотеке ($2).',
-'filetype-badmime' => 'Датотеке MIME врсте „$1“ није дозвољено слати.',
+'filetype-badmime' => 'Датотеке MIME типа „$1“ није дозвољено слати.',
'filetype-bad-ie-mime' => 'Ова датотека се не може послати зато што би је Интернет експлорер уочио као „$1“, а то је забрањена и опасна врста датотеке.',
'filetype-unwanted-type' => '„.$1“ је непожељна врста датотеке.
{{PLURAL:$3|Пожељна врста датотеке је|Пожељне врсте датотека су}} $2.',
-'filetype-banned-type' => '\'\'\'".$1"\'\'\' {{PLURAL:$4|је забрањена врста датотеке|су забрањене врсте датотека}}.
-{{PLURAL:$3|Дозвољена врста датотеке је|Дозвољене врсте датотека су}} $2.',
-'filetype-missing' => 'Ова датотека нема екстензију.',
+'filetype-banned-type' => "'''„.$1“''' {{PLURAL:$4|је забрањена врста датотеке|су забрањене врсте датотека}}.
+{{PLURAL:$3|Дозвољена врста датотеке је|Дозвољене врсте датотека су}} $2.",
+'filetype-missing' => 'Ова датотека нема екстензију (нпр. „.jpg“).',
'empty-file' => 'Послата датотека је празна.',
'file-too-large' => 'Послата датотека је превелика.',
'filename-tooshort' => 'Назив датотеке је прекратак.',
'fileexists-forbidden' => 'Датотека с овим називом већ постоји и не може се заменити.
Ако и даље желите да пошаљете датотеку, вратите се и изаберите други назив.
[[File:$1|thumb|center|$1]]',
-'fileexists-shared-forbidden' => 'Датотека с овим називом већ постоји у заједничком складишту.
+'fileexists-shared-forbidden' => 'Датотека с овим називом већ постоји у заједничкој остави.
Вратите се и пошаљите датотеку с другим називом.
[[File:$1|thumb|center|$1]]',
'file-exists-duplicate' => 'Ово је дупликат {{PLURAL:$1|следеће датотеке|следећих датотека}}:',
'uploadwarning' => 'Упозорење при отпремању',
'uploadwarning-text' => 'Измените опис датотеке и покушајте поново.',
'savefile' => 'Сачувај датотеку',
-'uploadedimage' => '{{GENDER:|је послао|је послала|је послао}} „[[$1]]“',
-'overwroteimage' => '{{GENDER:|је послао|је послала}} нову верзију датотеке „[[$1]]“',
+'uploadedimage' => 'је послао „[[$1]]“',
+'overwroteimage' => 'је послао нову верзију датотеке „[[$1]]“',
'uploaddisabled' => 'Отпремање је онемогућено.',
'copyuploaddisabled' => 'Слање путем URL адресе је онемогућено.',
'uploadfromurl-queued' => 'Слање је стављено на списак чекања.',
# MIME search
'mimesearch' => 'MIME претрага',
-'mimesearch-summary' => 'Ова страница омогућава филтрирање датотека према њиховим врстама MIME.
+'mimesearch-summary' => 'Ова страница омогућава филтрирање датотека према њиховим MIME типовима.
Улазни подаци: contenttype/subtype, нпр. <code>image/jpeg</code>.',
'mimetype' => 'MIME врста:',
'download' => 'преузми',
'nopagetitle' => 'Не постоји таква страница',
'nopagetext' => 'Тражена страница не постоји.',
'pager-newer-n' => '{{PLURAL:$1|новији 1|новија $1|новијих $1}}',
-'pager-older-n' => '{{PLURAL:$1|Ñ\81Ñ\82аÑ\80иÑ\98и 1|Ñ\81Ñ\82аÑ\80иÑ\98а $1|Ñ\81Ñ\82аÑ\80иÑ\98иÑ\85 $1}}',
+'pager-older-n' => '{{PLURAL:$1|старији 1|старијих $1}}',
'suppress' => 'Надзор',
'querypage-disabled' => 'Ова посебна страница је онемогућена ради побољшања перформанси.',
'watchmethod-list' => 'проверава се да ли има скорашњих измена у надгледаним страницама',
'watchlistcontains' => 'Ваш списак надгледања садржи $1 {{PLURAL:$1|страницу|странице|страница}}.',
'iteminvalidname' => 'Проблем са ставком „$1“. Неисправан назив.',
-'wlnote' => "Испод {{PLURAL:$1|је последња измена|су последње '''$1''' измене|је последњих '''$1''' измена}} у {{PLURAL:$2|претходном сату|претходна '''$2''' сата|претходних '''$2''' сати}}, закључно са $3, $4.",
'wlshowlast' => 'Прикажи последњих $1 сати, $2 дана, $3',
'watchlist-options' => 'Поставке списка надгледања',
'alreadyrolled' => 'Враћање последње измене странице [[:$1]] од стране {{GENDER:$2|корисника|кориснице|корисника}} [[User:$2|$2]] ([[User talk:$2|разговор]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]); неко други је већ изменио или вратио страницу.
Последњу измену је {{GENDER:$3|направио|направила|направио}} [[User:$3|$3]] ([[User talk:$3|разговор]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
-'editcomment' => "Опис измене: \"''\$1''\".",
+'editcomment' => "Опис измене: „''$1''“.",
'revertpage' => 'Враћене измене [[Special:Contributions/$2|$2]] ([[User talk:$2|разговор]]) на последњу измену корисника [[User:$1|$1]]',
'revertpage-nouser' => 'Враћене су измене скривеног корисника на последњу измену {{GENDER:$1|корисника|кориснице}} [[User:$1|$1]]',
'rollback-success' => 'Враћене су измене {{GENDER:$1|корисника|кориснице}} $1
# Protect
'protectlogpage' => 'Дневник закључавања',
-'protectlogtext' => 'Ð\98Ñ\81под Ñ\98е Ñ\81пиÑ\81ак измена Ñ\83 видÑ\83 заÑ\88Ñ\82иÑ\82е страница.
+'protectlogtext' => 'Ð\98Ñ\81под Ñ\98е Ñ\81пиÑ\81ак заÑ\88Ñ\82иÑ\9bениÑ\85 страница.
Погледајте [[Special:ProtectedPages|списак заштићених страница]] за више детаља.',
-'protectedarticle' => '{{GENDER:|је заштитио|је заштитила|је заштитио}} „[[$1]]“',
-'modifiedarticleprotection' => '{{GENDER:|је променио|је променила|је променио}} степен заштите за „[[$1]]“',
-'unprotectedarticle' => '{{GENDER:|је уклонио|је уклонила}} заштиту са странице „[[$1]]“',
+'protectedarticle' => '{{GENDER:|је заштитио|је заштитила}} „[[$1]]“',
+'modifiedarticleprotection' => 'је променио степен заштите за „[[$1]]“',
+'unprotectedarticle' => 'је скинуо заштиту са странице „[[$1]]“',
'movedarticleprotection' => '{{GENDER:|је преместио|је преместила|је преместио}} поставке заштите са „[[$2]]“ на „[[$1]]“',
'protect-title' => 'Степен заштите за „$1“',
'protect-title-notallowed' => 'Преглед степена заштите за „$1“',
'tooltip-invert' => 'Означите ову кућицу да бисте сакрили измене на страницама у одабраном именском простору (и повезаним именским просторима, ако је означено)',
'namespace_association' => 'Повезани именски простор',
'tooltip-namespace_association' => 'Означите ову кућицу да бисте укључили и разговор или именски простор теме која је повезана с одабраним именским простором',
-'blanknamespace' => '(Ð\93лавно)',
+'blanknamespace' => '(главни)',
# Contributions
'contributions' => '{{GENDER:$1|Кориснички}} доприноси',
'whatlinkshere-filters' => 'Филтери',
# Block/unblock
-'autoblockid' => 'Самоблокирање #$1',
+'autoblockid' => 'Ð\90Ñ\83Ñ\82омаÑ\82Ñ\81ко блокирање #$1',
'block' => 'Блокирај корисника',
'unblock' => 'Деблокирај корисника',
'blockip' => 'Блокирај корисника',
'ipblocklist-submit' => 'Претражи',
'ipblocklist-localblock' => 'Локално блокирање',
'ipblocklist-otherblocks' => '{{PLURAL:$1|Друго блокирање|Друга блокирања}}',
-'infiniteblock' => 'никада',
+'infiniteblock' => 'трајно',
'expiringblock' => 'истиче дана $1 у $2',
'anononlyblock' => 'само анонимни',
'noautoblockblock' => 'аутоматско блокирање је онемогућено',
'change-blocklink' => 'промени блокирање',
'contribslink' => 'доприноси',
'emaillink' => 'пошаљи е-поруку',
-'autoblocker' => 'СамоблокиÑ\80ани Ñ\81Ñ\82е Ñ\98еÑ\80 делиÑ\82е Ð\98Ð\9f адÑ\80еÑ\81Ñ\83 Ñ\81 {{GENDER:$1|коÑ\80иÑ\81ником|коÑ\80иÑ\81ниÑ\86ом|коÑ\80иÑ\81ником}} [[User:$1|$1]].
-Разлог блокирања: "\'\'\'$2\'\'\'"',
+'autoblocker' => 'Ð\90Ñ\83Ñ\82омаÑ\82Ñ\81ки Ñ\81Ñ\82е блокиÑ\80ани Ñ\98еÑ\80 делиÑ\82е Ð\98Ð\9f адÑ\80еÑ\81Ñ\83 Ñ\81 коÑ\80иÑ\81ником/Ñ\86ом [[User:$1|$1]].
+Разлог блокирања: „$2“',
'blocklogpage' => 'Дневник блокирања',
'blocklog-showlog' => '{{GENDER:$1|Овај корисник је раније блокиран|Ова корисница је раније блокирана|Овај корисник је раније блокиран}}.
Историја блокирања се налази испод:',
'blocklog-showsuppresslog' => '{{GENDER:|Овај корисник је раније блокиран и сакривен|Ова корисница је раније блокирана и сакривена|Овај корисник је раније блокиран и сакривен}}.
Историја сакривања се налази испод:',
-'blocklogentry' => '{{GENDER:|је блокирао|је блокирала}} [[$1]] с роком истицања од $2 $3',
+'blocklogentry' => 'је блокирао [[$1]] с роком истицања од $2 $3',
'reblock-logentry' => '{{GENDER:|је променио|је променила|је променио}} подешавања за блокирање {{GENDER:$1|корисника|кориснице|корисника}} [[$1]] с роком истека од $2 ($3)',
'blocklogtext' => 'Ово је дневник блокирања и деблокирања корисника.
Аутоматски блокиране ИП адресе нису наведене.
'allmessages' => 'Системске поруке',
'allmessagesname' => 'Назив',
'allmessagesdefault' => 'Подразумевани текст',
-'allmessagescurrent' => 'Текст поруке',
+'allmessagescurrent' => 'Тренутни текст поруке',
'allmessagestext' => 'Ово је списак свих системских порука које су доступне у именском простору „Медијавики“.
Посетите [https://www.mediawiki.org/wiki/Localisation Медијавики локализацију] и [//translatewiki.net Транслејтвики] ако желите да помогнете у превођењу.',
'allmessagesnotsupportedDB' => "Ова страница не може да се користи јер је '''\$wgUseDatabaseMessages''' онемогућен.",
'allmessages-filter-unmodified' => 'неизмењене',
'allmessages-filter-all' => 'све',
'allmessages-filter-modified' => 'измењене',
-'allmessages-prefix' => 'Филтрирај по предметку:',
+'allmessages-prefix' => 'Филтрирај по префиксу:',
'allmessages-language' => 'Језик:',
'allmessages-filter-submit' => 'Иди',
'tooltip-pt-watchlist' => 'Списак страница које надгледате',
'tooltip-pt-mycontris' => 'Списак ваших доприноса',
'tooltip-pt-login' => 'Препоручујемо вам да се пријавите, иако то није обавезно.',
-'tooltip-pt-anonlogin' => 'Препоручујемо вам да се пријавите, иако то није обавезно.',
'tooltip-pt-logout' => 'Одјавите се',
'tooltip-ca-talk' => 'Разговор о страници са садржајем',
'tooltip-ca-edit' => 'Можете да уређујете ову страницу. Користите претпреглед пре снимања',
'siteuser' => '{{SITENAME}} корисник $1',
'anonuser' => '{{SITENAME}} анониман корисник $1',
'lastmodifiedatby' => 'Ову страницу је последњи пут {{GENDER:$4|изменио|изменила|изменио}} $3, $1 у $2.',
-'othercontribs' => 'Засновано на раду корисникâ $1.',
+'othercontribs' => 'Засновано на раду корисника $1.',
'others' => 'други',
'siteusers' => '{{PLURAL:$2|корисник|корисници}} на пројекту {{SITENAME}} $1',
'anonusers' => '{{PLURAL:$2|анониман корисник|анонимни корисници}} на пројекту {{SITENAME}} $1',
'spamprotectiontitle' => 'Филтер за заштиту од непожељних порука',
'spamprotectiontext' => 'Страница коју желите да сачувате је блокирана од филтера против непожељних порука.
Ово је вероватно изазвано везом до спољашњег сајта који се налази на црној листи.',
-'spamprotectionmatch' => 'СледеÑ\9bи Ñ\82екÑ\81Ñ\82 Ñ\98е изазвао наÑ\88 Ñ\84илÑ\82еÑ\80 за непожеÑ\99не поруке: $1',
+'spamprotectionmatch' => 'СледеÑ\9bи Ñ\82екÑ\81Ñ\82 Ñ\98е изазвао наÑ\88 Ñ\84илÑ\82еÑ\80 за нежеÑ\99ене поруке: $1',
'spambot_username' => 'Чишћење непожељних порука у Медијавикији',
'spam_reverting' => 'Враћам на последњу измену која не садржи везе до $1',
'spam_blanking' => 'Све измене садрже везе до $1. Чистим',
'just-now' => 'управо сад',
# Human-readable timestamps
-'hours-ago' => 'Пре $1 {{PLURAL:$1|сат|сати}}',
+'hours-ago' => 'Ð\9fÑ\80е $1 {{PLURAL:$1|Ñ\81аÑ\82|Ñ\81аÑ\82а|Ñ\81аÑ\82и}}',
'minutes-ago' => 'Пре $1 {{PLURAL:$1|минут|минута}}',
'seconds-ago' => 'Пре $1 {{PLURAL:$1|секунда|секунди}}',
'monday-at' => 'Понедељак у $1',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'све',
-'namespacesall' => 'Ñ\81ве',
+'namespacesall' => 'Ñ\81ви',
'monthsall' => 'све',
# Email address confirmation
'watchlistedit-raw-submit' => 'Ажурирај списак',
'watchlistedit-raw-done' => 'Ваш списак надгледања је ажуриран.',
'watchlistedit-raw-added' => '{{PLURAL:$1|Додат је један наслов|Додата су $1 наслова|Додато је $1 наслова}}:',
-'watchlistedit-raw-removed' => '{{PLURAL:$1|Уклоњен је један наслов|Уклоњена су $1 наслова|Уклоњено је $1 наслова}}:',
+'watchlistedit-raw-removed' => '{{PLURAL:$1|1 наслов је уклоњен|Уклоњена су $1 наслова|Уклоњено је $1 наслова}}:',
# Watchlist editing tools
'watchlisttools-view' => 'прикажи сродне измене',
'redirect-legend' => 'Преусмери на датотеку или страницу',
'redirect-submit' => 'Иди',
'redirect-value' => 'Вредност:',
+'redirect-page' => 'ID странице',
'redirect-file' => 'Назив датотеке',
'redirect-not-exists' => 'Вредност није пронађена',
'sqlite-no-fts' => '$1 без подршке претраге целог текста',
# New logging system
-'logentry-delete-delete' => '$1 је {{GENDER:|обрисао|обрисала}} страницу $3',
+'logentry-delete-delete' => '$1 је {{GENDER:$2|обрисао|обрисала}} страницу $3',
'logentry-delete-restore' => '$1 је {{GENDER:$2|вратио|вратила}} страницу $3',
'logentry-delete-event' => '$1 је {{GENDER:$2|променио|променила}} видљивост {{PLURAL:$5|догађаја|$5 догађаја}} у дневнику на $3: $4',
'logentry-delete-revision' => '$1 је {{GENDER:$2|променио|променила}} видљивост {{PLURAL:$5|измене|$5 измена}} на страници $3: $4',
$messages = array(
# User preference toggles
'tog-underline' => 'Podvlačenje veza:',
-'tog-justify' => 'Poravnaj pasuse',
'tog-hideminor' => 'Sakrij manje izmene u spisku skorašnjih izmena',
'tog-hidepatrolled' => 'Sakrij pregledane izmene u spisku skorašnjih izmena',
'tog-newpageshidepatrolled' => 'Sakrij pregledane stranice sa spiska novih stranica',
'tog-numberheadings' => 'Samostalno numeriši podnaslove',
'tog-showtoolbar' => 'Prikaži traku s alatkama za uređivanje',
'tog-editondblclick' => 'Uređivanje stranica dvostrukim klikom',
-'tog-editsection' => 'Veze za uređivanje pojedinačnih odeljaka',
'tog-editsectiononrightclick' => 'Uređivanje odeljaka desnim klikom na njihove naslove',
-'tog-showtoc' => 'Prikaži sadržaj stranica koje imaju više od tri podnaslova',
'tog-rememberpassword' => 'Zapamti me na ovom pregledaču (najduže $1 {{PLURAL:$1|dan|dana}})',
'tog-watchcreations' => 'Dodaj stranice koje napravim i datoteke koje pošaljem u spisak nadgledanja',
'tog-watchdefault' => 'Dodaj stranice i datoteke koje izmenim u spisak nadgledanja',
'badaccess' => 'Greške u ovlašćenjima',
'badaccess-group0' => 'Nije vam dozvoljeno da izvršite zahtevanu radnju.',
-'badaccess-groups' => 'Radnja je dostupna samo korisnicima u {{PLURAL:$2|sledećoj grupi|sledećim grupama}}: $1.',
+'badaccess-groups' => 'Radnja koju ste zahtevali je ograničena samo korisnicima u {{PLURAL:$2|sledećoj grupi|sledećim grupama}}: $1.',
'versionrequired' => 'Potrebno je izdanje $1 Medijavikija',
'versionrequiredtext' => 'Potrebno je izdanje $1 Medijavikija da biste koristili ovu stranicu.
'youhavenewmessages' => 'Imate $1 ($2).',
'youhavenewmessagesfromusers' => 'Imate $1 od {{PLURAL:$3|drugog korisnika|$3 korisnika|$3 korisnika}} ($2).',
'youhavenewmessagesmanyusers' => 'Imate $1 od mnogo korisnika ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|novu poruku|nove poruke}}',
-'newmessagesdifflinkplural' => '{{PLURAL:$1|poslednju izmenu|poslednje izmene}}',
+'newmessageslinkplural' => '{{PLURAL:$1|novu poruku|999=nove poruke}}',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|poslednju izmenu|999=poslednje izmene}}',
'youhavenewmessagesmulti' => 'Imate novih poruka na $1',
'editsection' => 'uredi',
'editold' => 'uredi',
'badtitletext' => 'Naslov stranice je neispravan, prazan ili je međujezički ili međuviki naslov pogrešno povezan.
Možda sadrži znakove koji se ne mogu koristiti u naslovima.',
'perfcached' => 'Sledeći podaci su keširani i mogu biti zastareli. Keš sadrži najviše {{PLURAL:$1|jedan rezultat|$1 rezultata|$1 rezultata}}.',
-'perfcachedts' => 'Sledeći podaci su keširani i poslednji put su ažurirani $2 u $3. Keš sadrži najviše {{PLURAL:$4|jedan rezultat|$4 rezultata}}.',
+'perfcachedts' => 'Sledeći podaci su keširani i poslednji put su ažurirani $2 u $3. U kešu {{PLURAL:$4|je dostupan najviše jedan rezultat|su dostupna najviše $4 rezultata|je dostupno najviše $4 rezultata}}.',
'querypage-no-updates' => 'Ažuriranje ove stranice je trenutno onemogućeno.
Podaci koji se ovde nalaze mogu biti zastareli.',
'viewsource' => 'Izvorni kod',
'invalidtitle-knownnamespace' => 'Neispravan naslov s imenskim prostorom „$2“ i tekstom „$3“',
'invalidtitle-unknownnamespace' => 'Neispravan naslov s imenskim prostorom br. $1 i tekstom „$2“',
'exception-nologin' => 'Niste prijavljeni',
-'exception-nologin-text' => 'Ova stranica ili radnja zahteva da budete prijavljeni na viki.',
+'exception-nologin-text' => '[[Special:Userlogin|Prijavite se]] da biste pristupili ovoj stranici ili radnji.',
# Virus scanner
'virus-badscanner' => "Neispravna postavka: nepoznati skener za viruse: ''$1''",
'yourpasswordagain' => 'Potvrda lozinke:',
'createacct-yourpasswordagain' => 'Potvrdite lozinku',
'createacct-yourpasswordagain-ph' => 'Unesite lozinku još jednom',
-'remembermypassword' => 'Zapamti me na ovom pregledaču (najduže $1 {{PLURAL:$1|dan|dana|dana}})',
+'remembermypassword' => 'Zapamti me na ovom pregledaču (najduže $1 {{PLURAL:$1|dan|dana}})',
'userlogin-remembermypassword' => 'Ostavi me prijavljenog/u',
'userlogin-signwithsecure' => 'Koristite sigurnu konekciju',
'yourdomainname' => 'Domen:',
'passwordtooshort' => 'Lozinka mora imati najmanje {{PLURAL:$1|jedan znak|$1 znaka|$1 znakova}}.',
'password-name-match' => 'Lozinka se mora razlikovati od korisničkog imena.',
'password-login-forbidden' => 'Korišćenje ovog korisničkog imena i lozinke je zabranjeno.',
-'mailmypassword' => 'Pošalji novu lozinku',
+'mailmypassword' => 'Resetuj lozinku',
'passwordremindertitle' => '{{SITENAME}} – podsetnik za lozinku',
'passwordremindertext' => 'Neko, verovatno vi, sa IP adrese $1 je zatražio novu lozinku na vikiju {{SITENAME}} ($4).
Stvorena je privremena lozinka za {{GENDER:$2|korisnika|korisnicu|korisnika}} $2 koja glasi $3.
'blocked-mailpassword' => 'Vašoj IP adresi je onemogućeno uređivanje stranica, kao i mogućnost zahtevanja nove lozinke.',
'eauthentsent' => 'Na navedenu e-adresu je poslat potvrdni kod.
Pre nego što pošaljemo daljnje poruke, pratite uputstva s e-pošte da biste potvrdili da ste vi otvorili nalog.',
-'throttled-mailpassword' => 'Podsetnik za lozinku je poslat {{PLURAL:$1|pre sat vremena|u poslednja $1 sata|u poslednjih $1 sati}}.
-Da bismo sprečili zloupotrebu, posednik šaljemo samo jednom u roku od {{PLURAL:$1|jednog sata|$1 sata|$1 sati}}.',
+'throttled-mailpassword' => 'Poruka za promenu lozinke je poslata u {{PLURAL:$1|poslednjih sat vremena|poslednja $1 sata|poslednjih $1 sati}}.
+Da bismo sprečili zloupotrebu, podsetnik šaljemo samo jednom u roku od {{PLURAL:$1|sat vremena|$1 sata|$1 sati}}.',
'mailerror' => 'Greška pri slanju poruke: $1',
'acct_creation_throttle_hit' => 'Posetioci ovog vikija koji koriste vašu IP adresu su već otvorili {{PLURAL:$1|jedan nalog|$1 naloga|$1 naloga}} prethodni dan, što je najveći dozvoljeni broj u tom vremenskom periodu.
Zbog toga posetioci s ove IP adrese trenutno ne mogu otvoriti više naloga.',
'emailauthenticated' => 'Vaša e-adresa je potvrđena $2 u $3.',
'emailnotauthenticated' => 'Vaša e-adresa još nije potvrđena.
-Poruke neće biti poslate ni za jednu od sledećih mogućnosti.',
+Poruke neće biti poslate ni u jednom od sledećih slučajeva.',
'noemailprefs' => 'Unesite e-adresu kako bi ove mogućnosti radile.',
'emailconfirmlink' => 'Potvrdite svoju e-adresu',
'invalidemailaddress' => 'E-adresa ne može biti prihvaćena jer je neispravnog oblika.
'passwordreset-capture-help' => 'Ako označite ovu kućicu, e-poruka s privremenom lozinkom će biti prikazana i poslata korisniku.',
'passwordreset-email' => 'E-adresa:',
'passwordreset-emailtitle' => 'Detalji naloga na vikiju {{SITENAME}}',
-'passwordreset-emailtext-ip' => 'Neko, verovatno vi, sa IP adrese $1 je zatražio novu lozinku na vikiju {{SITENAME}} ($4).
+'passwordreset-emailtext-ip' => 'Neko, verovatno Vi, sa IP adrese $1 je zatražio novu lozinku na vikiju {{SITENAME}} ($4).
Sledeći {{PLURAL:$3|korisnički nalog je povezan|korisnički nalozi su povezani}} s ovom e-adresom:
$2
-{{PLURAL:$3|Privremena lozinka ističe|Privremene lozinke ističu}} za {{PLURAL:$5|jedan dan|$5 dana|$5 dana}}.
-Prijavite se i izaberite novu lozinku. Ako je neko drugi zahtevao ovu radnju ili ste se setili lozinke i ne želite da je menjate, zanemarite ovu poruku.',
-'passwordreset-emailtext-user' => '{{GENDER:$1|Korisnik|Korisnica|Korisnik}} $1 je zatražio podsetnik o podacima za prijavu na vikiju {{SITENAME}} ($4).
+{{PLURAL:$3|Privremena lozinka ističe|Privremene lozinke ističu}} za {{PLURAL:$5|jedan dan|$5 dana}}.
+Prijavite se i izaberite novu lozinku. Ako je neko drugi zahtevao ovu radnju ili ste se setili lozinke i ne želite da je menjate, zanemarite ovu poruku i nastavite koristiti staru lozinku.',
+'passwordreset-emailtext-user' => '{{GENDER:$1|Korisnik je zatražio|Korisnica je zatražila}} podsetnik o podacima za prijavu na vikiju {{SITENAME}} ($4).
Sledeći {{PLURAL:$3|korisnički nalog je povezan|korisnički nalozi su povezani}} s ovom e-adresom:
$2
-{{PLURAL:$3|Privremena lozinka ističe|Privremene lozinke ističu}} za {{PLURAL:$5|jedan dan|$5 dana|$5 dana}}.
+{{PLURAL:$3|Privremena lozinka ističe|Privremene lozinke ističu}} za {{PLURAL:$5|jedan dan|$5 dana}}.
Prijavite se i izaberite novu lozinku. Ako je neko drugi zahtevao ovu radnju ili ste se setili lozinke i ne želite da je menjate, zanemarite ovu poruku.',
'passwordreset-emailelement' => 'Korisničko ime: $1
Privremena lozinka: $2',
'blockedtitle' => 'Korisnik je blokiran',
'blockedtext' => "'''Vaše korisničko ime ili IP adresa je blokirana.'''
-Blokiranje je {{GENDER:$4|izvršio|izvršila|izvršio}} $1.
+Blokiranje je {{GENDER:$4|izvršio|izvršila}} $1.
Razlog: ''$2''.
* Datum blokiranja: $8
'revdelete-no-file' => 'Tražena datoteka ne postoji.',
'revdelete-show-file-confirm' => 'Želite li da vidite obrisanu izmenu datoteke „<nowiki>$1</nowiki>“ od $2; $3?',
'revdelete-show-file-submit' => 'Da',
-'revdelete-selected' => "'''{{PLURAL:$2|Izabrana izmena|Izabrane izmene}} stranice '''[[:$1]]''''''",
+'revdelete-selected' => "'''{{PLURAL:$2|Izabrana izmena|Izabrane izmene}} stranice [[:$1]]'''",
'logdelete-selected' => "'''{{PLURAL:$1|Izabrana stavka u istoriji|Izabrane stavke u istoriji}}:'''",
'revdelete-text' => "'''Obrisane izmene će i dalje biti prikazane u istoriji stranica i zapisima, ali delovi njihovog sadržaja neće biti dostupni javnosti.'''
Drugi administratori na ovom vikiju će i dalje imati pristup sakrivenom sadržaju, a oni će taj sadržaj moći da vrate putem ovog sučelja, osim ako nisu postavljena dodatna ograničenja.",
'revdelete-hide-text' => 'sakrij tekst izmene',
'revdelete-hide-image' => 'Sakrij sadržaj datoteke',
'revdelete-hide-name' => 'Sakrij radnju i odredište',
-'revdelete-hide-comment' => 'sakrij opis izmene',
+'revdelete-hide-comment' => 'Opis izmene',
'revdelete-hide-user' => 'sakrij ime uređivača',
'revdelete-hide-restricted' => 'Sakrij podatke od administratora i drugih korisnika',
'revdelete-radio-same' => '(ne menjaj)',
'showhideselectedversions' => 'Prikaži/sakrij izabrane izmene',
'editundo' => 'poništi',
'diff-empty' => '(Nema razlike)',
-'diff-multi' => '({{PLURAL:$1|nije prikazana međuizmena|nisu prikazane $1 međuizmene|nije prikazano $1 međuizmena}} {{PLURAL:$2|jednog|$2|$2}} korisnika)',
'diff-multi-manyusers' => '({{PLURAL:$1|Nije prikazana međuizmena|Nisu prikazane $1 međuizmene|Nije prikazano $1 međuizmena}} od više od $2 korisnika)',
'difference-missing-revision' => 'Ne mogu da pronađem {{PLURAL:$2|jednu izmenu|$2 izmene|$2 izmena}} od ove razlike ($1).
'searchall' => 'sve',
'showingresults' => "Ispod {{PLURAL:$1|je prikazan '''1''' rezultat|su prikazana '''$1''' rezultata|je prikazano '''$1''' rezultata}} počev od broja '''$2'''.",
'showingresultsnum' => "Ispod {{PLURAL:$3|je prikazan '''1''' rezultat|su prikazana '''$3''' rezultata|je prikazano '''$3''' rezultata}} počev od broja '''$2'''.",
-'showingresultsheader' => "{{PLURAL:$5|Rezultat '''$1''' od '''$3'''|Rezultata '''$1 – $2''' od '''$3'''}} za '''$4'''",
+'showingresultsheader' => "{{PLURAL:$5|1=Rezultat '''$1''' od '''$3'''|Rezultata '''$1 – $2''' od '''$3'''}} za '''$4'''",
'search-nonefound' => 'Nema poklapanja.',
'powersearch-legend' => 'Napredna pretraga',
'powersearch-ns' => 'Traži u sledećim imenskim prostorima:',
'rows' => 'Redova:',
'columns' => 'Kolone:',
'searchresultshead' => 'Pretraga',
-'resultsperpage' => 'Pogodaka po stranici:',
'stub-threshold' => 'Prag za oblikovanje <a href="#" class="stub">veze kao klice</a> (u bajtovima):',
'stub-threshold-disabled' => 'Onemogućeno',
'recentchangesdays' => 'Broj dana u skorašnjim izmenama:',
'userrights-reason' => 'Razlog:',
'userrights-no-interwiki' => 'Nemate ovlašćenja da menjate korisnička prava na drugim vikijima.',
'userrights-nodatabase' => 'Baza podataka $1 ne postoji ili nije lokalna.',
-'userrights-nologin' => 'Morate se [[Special:UserLogin|prijaviti]] s administratorskim nalogom da biste dodali korisnička prava.',
+'userrights-nologin' => 'Morate se [[Special:UserLogin|prijaviti]] s administratorskim nalogom da biste menjali korisnička prava.',
'userrights-notallowed' => 'Nemate ovlašćenja da dodajete ili uklanjate korisnička prava.',
'userrights-changeable-col' => 'Grupe koje možete da promenite',
'userrights-unchangeable-col' => 'Grupe koje ne možete da promenite',
'group-sysop' => 'Administratori',
'group-bureaucrat' => 'Birokrate',
'group-suppress' => 'Revizori',
-'group-all' => '(sve)',
+'group-all' => '(svi)',
'group-user-member' => '{{GENDER:$1|korisnik|korisnica|korisnik}}',
'group-autoconfirmed-member' => '{{GENDER:$1|automatski potvrđen korisnik|automatski potvrđena korisnica|automatski potvrđen korisnik}}',
'group-bot-member' => '{{GENDER:$1|bot}}',
'group-sysop-member' => '{{GENDER:$1|administrator|administratorka}}',
'group-bureaucrat-member' => '{{GENDER:$1|birokrata|birokratkinja}}',
-'group-suppress-member' => '{{GENDER:$1|revizor|revizorka|revizor}}',
+'group-suppress-member' => '{{GENDER:$1|revizor|revizorka}}',
'grouppage-user' => '{{ns:project}}:Korisnici',
'grouppage-autoconfirmed' => '{{ns:project}}:Automatski potvrđeni korisnici',
'recentchanges-label-minor' => 'Manja izmena',
'recentchanges-label-bot' => 'Ovu izmenu je napravio bot',
'recentchanges-label-unpatrolled' => 'Ova izmena još nije pregledana',
+'recentchanges-label-plusminus' => 'Promena veličine stranice (u bajtovima)',
+'recentchanges-legend-heading' => "'''Legenda:'''",
'recentchanges-legend-newpage' => '([[Special:NewPages|spisak novih stranica]])',
'rcnotefrom' => 'Ispod su izmene od <b>$3; $4</b> (do <b>$1</b> izmena).',
'rclistfrom' => 'Prikaži nove izmene počev od $1',
'filename-toolong' => 'Nazivi datoteka mogu imati najviše 240 bajtova.',
'badfilename' => 'Naziv datoteke je promenjen u „$1“.',
'filetype-mime-mismatch' => 'Ekstenzija „.$1“ ne odgovara prepoznatoj vrsti MIME datoteke ($2).',
-'filetype-badmime' => 'Datoteke MIME vrste „$1“ nije dozvoljeno slati.',
+'filetype-badmime' => 'Datoteke MIME tipa „$1“ nije dozvoljeno slati.',
'filetype-bad-ie-mime' => 'Ova datoteka se ne može poslati zato što bi je Internet eksplorer uočio kao „$1“, a to je zabranjena i opasna vrsta datoteke.',
'filetype-unwanted-type' => '„.$1“ je nepoželjna vrsta datoteke.
{{PLURAL:$3|Poželjna vrsta datoteke je|Poželjne vrste datoteka su}} $2.',
-'filetype-banned-type' => '\'\'\'".$1"\'\'\' {{PLURAL:$4|je zabranjena vrsta datoteke|su zabranjene vrste datoteka}}.
-{{PLURAL:$3|Dozvoljena vrsta datoteke je|Dozvoljene vrste datoteka su}} $2.',
-'filetype-missing' => 'Ova datoteka nema ekstenziju.',
+'filetype-banned-type' => "'''„.$1“''' {{PLURAL:$4|je zabranjena vrsta datoteke|su zabranjene vrste datoteka}}.
+{{PLURAL:$3|Dozvoljena vrsta datoteke je|Dozvoljene vrste datoteka su}} $2.",
+'filetype-missing' => 'Ova datoteka nema ekstenziju (npr. „.jpg“).',
'empty-file' => 'Poslata datoteka je prazna.',
'file-too-large' => 'Poslata datoteka je prevelika.',
'filename-tooshort' => 'Naziv datoteke je prekratak.',
'fileexists-forbidden' => 'Datoteka s ovim nazivom već postoji i ne može se zameniti.
Ako i dalje želite da pošaljete datoteku, vratite se i izaberite drugi naziv.
[[File:$1|thumb|center|$1]]',
-'fileexists-shared-forbidden' => 'Datoteka s ovim nazivom već postoji u zajedničkom skladištu.
+'fileexists-shared-forbidden' => 'Datoteka s ovim nazivom već postoji u zajedničkoj ostavi.
Vratite se i pošaljite datoteku s drugim nazivom.
[[File:$1|thumb|center|$1]]',
'file-exists-duplicate' => 'Ovo je duplikat {{PLURAL:$1|sledeće datoteke|sledećih datoteka}}:',
'uploadwarning' => 'Upozorenje pri otpremanju',
'uploadwarning-text' => 'Izmenite opis datoteke i pokušajte ponovo.',
'savefile' => 'Sačuvaj datoteku',
-'uploadedimage' => '{{GENDER:|je poslao|je poslala|je poslao}} „[[$1]]“',
-'overwroteimage' => '{{GENDER:|je poslao|je poslala}} novu verziju datoteke „[[$1]]“',
+'uploadedimage' => 'je poslao „[[$1]]“',
+'overwroteimage' => 'je poslao novu verziju datoteke „[[$1]]“',
'uploaddisabled' => 'Otpremanje je onemogućeno.',
'copyuploaddisabled' => 'Slanje putem URL adrese je onemogućeno.',
'uploadfromurl-queued' => 'Slanje je stavljeno na spisak čekanja.',
# MIME search
'mimesearch' => 'MIME pretraga',
-'mimesearch-summary' => 'Ova stranica omogućava filtriranje datoteka prema njihovim vrstama MIME.
+'mimesearch-summary' => 'Ova stranica omogućava filtriranje datoteka prema njihovim MIME tipovima.
Ulazni podaci: contenttype/subtype, npr. <code>image/jpeg</code>.',
'mimetype' => 'MIME vrsta:',
'download' => 'preuzmi',
'nopagetitle' => 'Ne postoji takva stranica',
'nopagetext' => 'Tražena stranica ne postoji.',
'pager-newer-n' => '{{PLURAL:$1|noviji 1|novija $1|novijih $1}}',
-'pager-older-n' => '{{PLURAL:$1|stariji 1|starija $1|starijih $1}}',
+'pager-older-n' => '{{PLURAL:$1|stariji 1|starijih $1}}',
'suppress' => 'Nadzor',
'querypage-disabled' => 'Ova posebna stranica je onemogućena radi poboljšanja performansi.',
'watchmethod-list' => 'proverava se da li ima skorašnjih izmena u nadgledanim stranicama',
'watchlistcontains' => 'Vaš spisak nadgledanja sadrži $1 {{PLURAL:$1|stranicu|stranice|stranica}}.',
'iteminvalidname' => 'Problem sa stavkom „$1“. Neispravan naziv.',
-'wlnote' => "Ispod {{PLURAL:$1|je poslednja izmena|su poslednje '''$1''' izmene|je poslednjih '''$1''' izmena}} u {{PLURAL:$2|prethodnom satu|prethodna '''$2''' sata|prethodnih '''$2''' sati}}, zaključno sa $3, $4.",
'wlshowlast' => 'Prikaži poslednjih $1 sati, $2 dana, $3',
'watchlist-options' => 'Postavke spiska nadgledanja',
'alreadyrolled' => 'Vraćanje poslednje izmene stranice [[:$1]] od strane {{GENDER:$2|korisnika|korisnice|korisnika}} [[User:$2|$2]] ([[User talk:$2|razgovor]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]); neko drugi je već izmenio ili vratio stranicu.
Poslednju izmenu je {{GENDER:$3|napravio|napravila|napravio}} [[User:$3|$3]] ([[User talk:$3|razgovor]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
-'editcomment' => "Opis izmene: \"''\$1''\".",
+'editcomment' => "Opis izmene: „''$1''“.",
'revertpage' => 'Vraćene izmene [[Special:Contributions/$2|$2]] ([[User talk:$2|razgovor]]) na poslednju izmenu korisnika [[User:$1|$1]]',
'revertpage-nouser' => 'Vraćene su izmene skrivenog korisnika na poslednju izmenu {{GENDER:$1|korisnika|korisnice}} [[User:$1|$1]]',
'rollback-success' => 'Vraćene su izmene {{GENDER:$1|korisnika|korisnice}} $1
# Protect
'protectlogpage' => 'Dnevnik zaključavanja',
-'protectlogtext' => 'Ispod je spisak izmena u vidu zaštite stranica.
+'protectlogtext' => 'Ispod je spisak zaštićenih stranica.
Pogledajte [[Special:ProtectedPages|spisak zaštićenih stranica]] za više detalja.',
-'protectedarticle' => '{{GENDER:|je zaštitio|je zaštitila|je zaštitio}} „[[$1]]“',
-'modifiedarticleprotection' => '{{GENDER:|je promenio|je promenila|je promenio}} stepen zaštite za „[[$1]]“',
-'unprotectedarticle' => '{{GENDER:|je uklonio|je uklonila}} zaštitu sa stranice „[[$1]]“',
+'protectedarticle' => '{{GENDER:|je zaštitio|je zaštitila}} „[[$1]]“',
+'modifiedarticleprotection' => 'je promenio stepen zaštite za „[[$1]]“',
+'unprotectedarticle' => 'je skinuo zaštitu sa stranice „[[$1]]“',
'movedarticleprotection' => '{{GENDER:|je premestio|je premestila|je premestio}} postavke zaštite sa „[[$2]]“ na „[[$1]]“',
'protect-title' => 'Stepen zaštite za „$1“',
'protect-title-notallowed' => 'Pregled stepena zaštite za „$1“',
'tooltip-invert' => 'Označite ovu kućicu da biste sakrili izmene na stranicama u odabranom imenskom prostoru (i povezanim imenskim prostorima, ako je označeno)',
'namespace_association' => 'Povezani imenski prostor',
'tooltip-namespace_association' => 'Označite ovu kućicu da biste uključili i razgovor ili imenski prostor teme koja je povezana s odabranim imenskim prostorom',
-'blanknamespace' => '(Glavno)',
+'blanknamespace' => '(glavni)',
# Contributions
'contributions' => '{{GENDER:$1|Korisnički}} doprinosi',
'whatlinkshere-filters' => 'Filteri',
# Block/unblock
-'autoblockid' => 'Samoblokiranje #$1',
+'autoblockid' => 'Automatsko blokiranje #$1',
'block' => 'Blokiraj korisnika',
'unblock' => 'Deblokiraj korisnika',
'blockip' => 'Blokiraj korisnika',
'ipblocklist-submit' => 'Pretraži',
'ipblocklist-localblock' => 'Lokalno blokiranje',
'ipblocklist-otherblocks' => '{{PLURAL:$1|Drugo blokiranje|Druga blokiranja}}',
-'infiniteblock' => 'nikada',
+'infiniteblock' => 'trajno',
'expiringblock' => 'ističe dana $1 u $2',
'anononlyblock' => 'samo anonimni',
'noautoblockblock' => 'automatsko blokiranje je onemogućeno',
'change-blocklink' => 'promeni blokiranje',
'contribslink' => 'doprinosi',
'emaillink' => 'pošalji e-poruku',
-'autoblocker' => 'Samoblokirani ste jer delite IP adresu s {{GENDER:$1|korisnikom|korisnicom|korisnikom}} [[User:$1|$1]].
-Razlog blokiranja: "\'\'\'$2\'\'\'"',
+'autoblocker' => 'Automatski ste blokirani jer delite IP adresu s korisnikom/com [[User:$1|$1]].
+Razlog blokiranja: „$2“',
'blocklogpage' => 'Dnevnik blokiranja',
'blocklog-showlog' => '{{GENDER:$1|Ovaj korisnik je ranije blokiran|Ova korisnica je ranije blokirana|Ovaj korisnik je ranije blokiran}}.
Istorija blokiranja se nalazi ispod:',
'blocklog-showsuppresslog' => '{{GENDER:|Ovaj korisnik je ranije blokiran i sakriven|Ova korisnica je ranije blokirana i sakrivena|Ovaj korisnik je ranije blokiran i sakriven}}.
Istorija sakrivanja se nalazi ispod:',
-'blocklogentry' => '{{GENDER:|je blokirao|je blokirala}} [[$1]] s rokom isticanja od $2 $3',
+'blocklogentry' => 'je blokirao [[$1]] s rokom isticanja od $2 $3',
'reblock-logentry' => '{{GENDER:|je promenio|je promenila|je promenio}} podešavanja za blokiranje {{GENDER:$1|korisnika|korisnice|korisnika}} [[$1]] s rokom isteka od $2 ($3)',
'blocklogtext' => 'Ovo je dnevnik blokiranja i deblokiranja korisnika.
Automatski blokirane IP adrese nisu navedene.
'allmessages' => 'Sistemske poruke',
'allmessagesname' => 'Naziv',
'allmessagesdefault' => 'Podrazumevani tekst',
-'allmessagescurrent' => 'Tekst poruke',
+'allmessagescurrent' => 'Trenutni tekst poruke',
'allmessagestext' => 'Ovo je spisak svih sistemskih poruka koje su dostupne u imenskom prostoru „Medijaviki“.
Posetite [https://www.mediawiki.org/wiki/Localisation Medijaviki lokalizaciju] i [//translatewiki.net Translejtviki] ako želite da pomognete u prevođenju.',
'allmessagesnotsupportedDB' => "Ova stranica ne može da se koristi jer je '''\$wgUseDatabaseMessages''' onemogućen.",
'allmessages-filter-unmodified' => 'neizmenjene',
'allmessages-filter-all' => 'sve',
'allmessages-filter-modified' => 'izmenjene',
-'allmessages-prefix' => 'Filtriraj po predmetku:',
+'allmessages-prefix' => 'Filtriraj po prefiksu:',
'allmessages-language' => 'Jezik:',
'allmessages-filter-submit' => 'Idi',
'tooltip-pt-watchlist' => 'Spisak stranica koje nadgledate',
'tooltip-pt-mycontris' => 'Spisak vaših doprinosa',
'tooltip-pt-login' => 'Preporučujemo vam da se prijavite, iako to nije obavezno.',
-'tooltip-pt-anonlogin' => 'Preporučujemo vam da se prijavite, iako to nije obavezno.',
'tooltip-pt-logout' => 'Odjavite se',
'tooltip-ca-talk' => 'Razgovor o stranici sa sadržajem',
'tooltip-ca-edit' => 'Možete da uređujete ovu stranicu. Koristite pretpregled pre snimanja',
'siteuser' => '{{SITENAME}} korisnik $1',
'anonuser' => '{{SITENAME}} anoniman korisnik $1',
'lastmodifiedatby' => 'Ovu stranicu je poslednji put {{GENDER:$4|izmenio|izmenila|izmenio}} $3, $1 u $2.',
-'othercontribs' => 'Zasnovano na radu korisnikâ $1.',
+'othercontribs' => 'Zasnovano na radu korisnika $1.',
'others' => 'drugi',
'siteusers' => '{{PLURAL:$2|korisnik|korisnici}} na projektu {{SITENAME}} $1',
'anonusers' => '{{PLURAL:$2|anoniman korisnik|anonimni korisnici}} na projektu {{SITENAME}} $1',
'spamprotectiontitle' => 'Filter za zaštitu od nepoželjnih poruka',
'spamprotectiontext' => 'Stranica koju želite da sačuvate je blokirana od filtera protiv nepoželjnih poruka.
Ovo je verovatno izazvano vezom do spoljašnjeg sajta koji se nalazi na crnoj listi.',
-'spamprotectionmatch' => 'Sledeći tekst je izazvao naš filter za nepoželjne poruke: $1',
+'spamprotectionmatch' => 'Sledeći tekst je izazvao naš filter za neželjene poruke: $1',
'spambot_username' => 'Čišćenje nepoželjnih poruka u Medijavikiji',
'spam_reverting' => 'Vraćam na poslednju izmenu koja ne sadrži veze do $1',
'spam_blanking' => 'Sve izmene sadrže veze do $1. Čistim',
'minutes' => '{{PLURAL:$1|$1 minut|$1 minuta|$1 minuta}}',
'hours' => '{{PLURAL:$1|$1 sat|$1 sata|$1 sati}}',
'days' => '{{PLURAL:$1|$1 dan|$1 dana|$1 dana}}',
+'years' => '{{PLURAL:$1|$1 godina|$1 godine}}',
'ago' => 'pre $1',
'just-now' => 'upravo sad',
+# Human-readable timestamps
+'minutes-ago' => 'Pre $1 {{PLURAL:$1|minut|minuta}}',
+
# Bad image list
'bad_image_list' => 'Format je sledeći:
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'sve',
-'namespacesall' => 'sve',
+'namespacesall' => 'svi',
'monthsall' => 'sve',
# Email address confirmation
# Friendlier slave lag warnings
'lag-warn-normal' => 'Izmene novije od $1 {{PLURAL:$1|sekunde|sekunde|sekundi}} neće biti prikazane.',
-'lag-warn-high' => 'Zbog preopterećenja baze podataka, izmene novije od $1 {{PLURAL:$1|sekunde|sekunde|sekundi}} neće biti prikazane.',
+'lag-warn-high' => 'Zbog preopterećenja baze podataka, izmene novije od $1 {{PLURAL:$1|sekunde|sekundi}} neće biti prikazane.',
# Watchlist editor
'watchlistedit-numitems' => 'Vaš spisak nadgledanja sadrži {{PLURAL:$1|jedan naslov|$1 naslova|$1 naslova}}, bez stranica za razgovor.',
'watchlistedit-raw-submit' => 'Ažuriraj spisak',
'watchlistedit-raw-done' => 'Vaš spisak nadgledanja je ažuriran.',
'watchlistedit-raw-added' => '{{PLURAL:$1|Dodat je jedan naslov|Dodata su $1 naslova|Dodato je $1 naslova}}:',
-'watchlistedit-raw-removed' => '{{PLURAL:$1|Uklonjen je jedan naslov|Uklonjena su $1 naslova|Uklonjeno je $1 naslova}}:',
+'watchlistedit-raw-removed' => '{{PLURAL:$1|1 naslov je uklonjen|Uklonjena su $1 naslova|Uklonjeno je $1 naslova}}:',
# Watchlist editing tools
'watchlisttools-view' => 'prikaži srodne izmene',
$messages = array(
# User preference toggles
'tog-underline' => 'Ferwiese unnerstriekje:',
-'tog-justify' => 'Text as Bloksats',
'tog-hideminor' => 'Litje Annerengen uutbländje',
'tog-hidepatrolled' => 'Kontrollierde Annerengen in do "Lääste Annerengen" uutbländje',
'tog-newpageshidepatrolled' => 'Kontrollierde Sieden ap ju Lieste „Näie Sieden“ ferbierge',
'tog-numberheadings' => 'Uurskrifte automatisk nuumerierje',
'tog-showtoolbar' => 'Beoarbaidengs-Reewen anwiese',
'tog-editondblclick' => 'Sieden mäd Dubbeldklik beoarbaidje (JavaScript)',
-'tog-editsection' => 'Links toun Beoarbaidjen fon eenpelde Ousatse anwiese',
'tog-editsectiononrightclick' => 'Eenpelde Ousatse mäd Gjuchtsklik beoarbaidje (JavaScript)',
-'tog-showtoc' => 'Anwiesen fon n Inhooldsferteeknis bie Artikkele mäd moor as 3 Uurskrifte',
'tog-rememberpassword' => 'Mäd dissen Browser duurhaft ounmälded blieuwe (Maximoal foar $1 {{PLURAL:$1|Dai|Deege}})',
'tog-watchcreations' => 'Aal do sälwen näi anlaide Sieden beooboachtje',
'tog-watchdefault' => 'Aal do sälwen annerde Sieden beooboachtje',
'compareselectedversions' => 'Wäälde Versione ferglieke',
'showhideselectedversions' => 'Uutwäälde Versione wiese/fersteete',
'editundo' => 'tounichte moakje',
-'diff-multi' => ' ({{PLURAL:$1|Ne deertwiske lääsende Version|$1 deertwiske lääsende Versione}} fon {{PLURAL:$2|n Benutser|$2 Benutsere}} {{PLURAL:$1|wäd|wäide}} nit wiesd)',
'diff-multi-manyusers' => ' ({{PLURAL:$1|Ne deertwiske lääsende Version|$1 deertwiske lääsende Versione}} fon moor as {{PLURAL:$2|Benutser|$2 Benutsere}} nit wiesd)',
# Search results
'rows' => 'Riegen',
'columns' => 'Spalten',
'searchresultshead' => 'Säike (010)',
-'resultsperpage' => 'Träffere pro Siede:',
'stub-threshold' => '<a href="#" class="stub">Kuute Artikkele</a> markierje bi (in Byte):',
'stub-threshold-disabled' => 'Deaktivierd',
'recentchangesdays' => 'Antaal fon Deege, do ju Lieste fon „Lääste Annerengen“ standoardmäitich uumfoatje skäl:',
'watchmethod-list' => 'Uurpröiwjen fon ju Beooboachtengslieste ätter lääste Beoarbaidengen',
'watchlistcontains' => 'Jou Beooboachtengslieste änthaalt $1 {{PLURAL:$1|Siede|Sieden}}.',
'iteminvalidname' => "Problem mäd dän Iendraach '$1', ungultige Noome...",
-'wlnote' => "Hier {{PLURAL:$1|foulget do lääste Annerenge|foulgje do lääste '''$1''' Annerengen}} fon do lääste {{PLURAL:$2|Uur|'''$2''' Uuren}}.",
'wlshowlast' => 'Wies do lääste $1 Uuren, $2 Deege, of $3 (in do lääste 30 Deege).',
'watchlist-options' => 'Anwiesoptione',
'tooltip-pt-watchlist' => 'Lieste fon do beooboachtede Sieden',
'tooltip-pt-mycontris' => 'Lieste fon dien Biedraage',
'tooltip-pt-login' => 'Jou ientoulogjen wäd wäil jädden blouked, man is neen Plicht.',
-'tooltip-pt-anonlogin' => 'Sik ientoulogjen wäd wäil jädden blouked, man is neen Plicht.',
'tooltip-pt-logout' => 'Oumäldje',
'tooltip-ca-talk' => 'Diskussion uur dän Inhoold fon ju Siede',
'tooltip-ca-edit' => 'Siede beoarbaidje. Jädden foar dät Spiekerjen ju Foarbekiekfunktion benutsje.',
$messages = array(
# User preference toggles
'tog-underline' => 'Gurat-handapan tutumbu',
-'tog-justify' => 'Lempengkeun alinéa',
'tog-hideminor' => 'Sumputkeun éditan minor dina nu anyar robah',
'tog-hidepatrolled' => 'Sumputkeun anu geus diroris ti béréndélan nu anyar robah',
'tog-newpageshidepatrolled' => 'Sumputkeun nu geus diroris tina béréndélan kaca anyar',
'tog-numberheadings' => 'Nomeran lulugu sacara otomatis',
'tog-showtoolbar' => "Témbongkeun ''toolbar'' édit (JavaScript)",
'tog-editondblclick' => 'Édit kaca ku klik ganda (JavaScript)',
-'tog-editsection' => 'Tambahkeun tumbu [édit] ngarah bisa ngarobah eusi bab',
'tog-editsectiononrightclick' => 'Fungsikeun ngédit sub-bagean kalawan klik-katuhu dina judul bagean (JavaScript)',
-'tog-showtoc' => 'Témbongkeun daptar eusi<br />(pikeun kaca nu leuwih ti tilu subjudul)',
'tog-rememberpassword' => 'Apalkeun login kuring dina ieu panyungsi (pikeun paling lila $1 {{PLURAL:$1|poé|poé}})',
'tog-watchcreations' => 'Tambahkeun kaca-kaca jieunan kuring jeung berkas muatan kuring kana awaskeuneun',
'tog-watchdefault' => 'Tambahkeun kaca jeung berkas anu diédit ku kuring kana awaskeuneun',
'compareselectedversions' => 'Bandingkeun vérsi nu dipilih',
'showhideselectedversions' => 'Témbongkeun/sumputkeun révisi nu dipilih',
'editundo' => 'bolaykeun',
-'diff-multi' => '({{PLURAL:$1|Hiji révisi antara|$1 révisi antara}} karya {{PLURAL:$2|hiji kontributor|$2 kontributor}} teu ditémbongkeun)',
'diff-multi-manyusers' => '({{PLURAL:$1|Hiji révisi antara|$1 révisi antara}} karya leuwih ti {{PLURAL:$2|pamaké|pamaké}} teu ditémbongkeun)',
# Search results
'rows' => 'Baris',
'columns' => 'Kolom',
'searchresultshead' => 'Aturan hasil néang',
-'resultsperpage' => 'Hasil nu ditémbongkeun per kaca',
'stub-threshold' => 'Wates ambang pikeun format <a href="#" class="stub">tumbu taratas</a> (bit):',
'stub-threshold-disabled' => 'Tumpur',
'recentchangesdays' => 'Jumlah poé nu dipidangkeun dina Nu anyar robah:',
'watchmethod-list' => 'mariksa nu anyar robah na kaca nu diawaskeun',
'watchlistcontains' => 'Anjeun ngawaskeun $1 {{PLURAL:$1|kaca|kaca}}.',
'iteminvalidname' => "Masalah dina '$1', ngaran teu bener...",
-'wlnote' => "Di handap ieu mangrupa $1 {{PLURAL:$1|robahan|robahan}} ahir salila '''$2''' jam.",
'wlshowlast' => 'Témbongkeun $1 jam $2 poé $3 ahir',
'watchlist-options' => 'Pilihan awaskeuneun',
'tooltip-pt-watchlist' => 'Daptar kaca nu diawaskeun ku anjeun parobahanana.',
'tooltip-pt-mycontris' => 'Daptar tulisan Anjeun',
'tooltip-pt-login' => 'Leuwih hadé asup log, sanajan teu wajib',
-'tooltip-pt-anonlogin' => 'Anjeun leuwih hadé asup log, sanajan teu wajib.',
'tooltip-pt-logout' => 'Kaluar log',
'tooltip-ca-talk' => 'Sawala ngeunaan eusi kaca',
'tooltip-ca-edit' => 'Anjeun bisa ngédit kaca ieu. Paké tombol pramidang méméh nyimpen.',
$messages = array(
# User preference toggles
'tog-underline' => 'Stryk under länkar:',
-'tog-justify' => 'Marginaljustera stycken',
'tog-hideminor' => 'Visa inte mindre redigeringar i senaste ändringar',
'tog-hidepatrolled' => 'Dölj patrullerade redigeringar i senaste ändringar',
'tog-newpageshidepatrolled' => 'Göm patrullerade sidor från listan över nya sidor',
'tog-numberheadings' => 'Automatisk numrerade rubriker',
'tog-showtoolbar' => 'Visa redigeringsverktygsraden',
'tog-editondblclick' => 'Redigera sidor med dubbelklick',
-'tog-editsection' => 'Aktivera redigering av avsnitt genom [redigera]-länkar',
'tog-editsectiononrightclick' => 'Aktivera redigering av avsnitt genom högerklick på underrubriker',
-'tog-showtoc' => 'Visa innehållsförteckning (för sidor med minst fyra rubriker)',
'tog-rememberpassword' => 'Kom ihåg min inloggning på den här webbläsaren (i maximalt $1 {{PLURAL:$1|dygn|dygn}})',
'tog-watchcreations' => 'Lägg till sidor jag skapar och filer jag laddar upp till min bevakningslista',
'tog-watchdefault' => 'Lägg till sidor och filer jag redigerar i min bevakningslista',
Om inte så är fallet, kan du ha hittat en bugg i mjukvaran.
Rapportera gärna problemet till någon [[Special:ListUsers/sysop|administratör]], ange då URL:en (webbadressen).',
-'missingarticle-rev' => '(version#: $1)',
+'missingarticle-rev' => '(versionsnummer: $1)',
'missingarticle-diff' => '(Skillnad: $1, $2)',
'readonly_lag' => 'Databasen har automatiskt skrivskyddats medan slavdatabasservrarna synkroniseras med huvudservern.',
'internalerror' => 'Internt fel',
'retypenew' => 'Upprepa det nya lösenordet:',
'resetpass_submit' => 'Ange lösenord och logga in',
'changepassword-success' => 'Ditt lösenord har ändrats!',
+'changepassword-throttled' => 'Du har gjort för många misslyckade inloggningsförsök.
+Vänta $1 innan du försöker igen.',
'resetpass_forbidden' => 'Lösenord kan inte ändras',
'resetpass-no-info' => 'Du måste vara inloggad för att komma åt den här sidan direkt.',
'resetpass-submit-loggedin' => 'Ändra lösenord',
'changeemail-password' => 'Ditt lösenord till {{SITENAME}}:',
'changeemail-submit' => 'Ändra e-post',
'changeemail-cancel' => 'Avbryt',
+'changeemail-throttled' => 'Du har gjort för många inloggningsförsök.
+Vänta $1 innan du försöker igen.',
# Special:ResetTokens
'resettokens' => 'Återställ nycklar',
'templatesusedsection' => '{{PLURAL:$1|Mall|Mallar}} som används i det här avsnittet:',
'template-protected' => '(skyddad)',
'template-semiprotected' => '(delvis skyddad)',
-'hiddencategories' => 'Denna sida är medlem i följande {{PLURAL:$1|dold kategori|dolda kategorier}}:',
+'hiddencategories' => 'Denna sida är medlem i {{PLURAL:$1|en dold kategori|$1 dolda kategorier}}:',
'edittools' => '<!-- Denna text kommer att visas nedanför redigeringsrutor och uppladdningsformulär. -->',
'nocreatetext' => '{{SITENAME}} har begränsat möjligheterna att skapa nya sidor.
Du kan redigera existerande sidor, eller [[Special:UserLogin|logga in eller skapa ett användarkonto]].',
'invalid-content-data' => 'Ogiltig innehållsdata',
'content-not-allowed-here' => 'innehåll av "$1" är inte tillåtet på sidan [[$2]]',
'editwarning-warning' => 'Om du lämnar den här sidan kommer du att förlora alla ändringar du har gjort.
-Om du är inloggad kan du slå av den här varningen under "Redigering" i dina inställningar.',
+Om du är inloggad kan du slå av den här varningen under "{{int:prefs-editing}}" i dina inställningar.',
+'editpage-notsupportedcontentformat-title' => 'Innehållsformat stöds inte',
+'editpage-notsupportedcontentformat-text' => 'Innehållsformatet $1 stöds inte av innehållsmodellen $2.',
# Content models
'content-model-wikitext' => 'wikitext',
# Parser/template warnings
'expensive-parserfunction-warning' => 'Varning: Denna sida innehåller för många anrop av resurskrävande parserfunktioner.
-Antalet anrop får vara högst $2, nu görs {{PLURAL:$1|$1 anrop|$1 anrop}}',
+Antalet anrop får vara högst $2, nu görs {{PLURAL:$1|$1 anrop}}',
'expensive-parserfunction-category' => 'Sidor med för många resurskrävande parserfunktioner',
'post-expand-template-inclusion-warning' => 'Varning: Den här sidan innehåller för mycket mallinklusioner.
Några av mallarna kommer inte att inkluderas.',
'revdelete-no-change' => "'''Varning:''' objektet daterat $2, $1 hade redan de begärda synlighetsinställningarna.",
'revdelete-concurrent-change' => 'Fel vid förändring av objektet daterat $2, $1: dess status verkar ha ändrats av någon annan medan du försökte förändra det.
Vänligen kontrollera loggarna.',
-'revdelete-only-restricted' => 'Fel vid döljning av objekt daterat $2, $1: du kan inte undanhålla objekt från att visas för administratörer utan att också välja en av de övriga visningsalternativen.',
+'revdelete-only-restricted' => 'Fel vid döljandet av objektet daterat $2, $1: du kan inte undanhålla objekt från att visas för administratörer utan att också välja ett av de övriga visningsalternativen.',
'revdelete-reason-dropdown' => '*Vanliga orsaker till radering
-** Brott mot copyright
+** Upphovsrättsbrott
** Opassande kommentar eller personupplysningar
** Opassande användarnamn
** Möjligt ärekränkande uppgifter',
'revdelete-otherreason' => 'Annan/ytterligare anledning:',
'revdelete-reasonotherlist' => 'Annan anledning',
-'revdelete-edit-reasonlist' => 'Redigera anledningar för radering',
+'revdelete-edit-reasonlist' => 'Redigera anledningar för raderingar',
'revdelete-offender' => 'Versionens författare:',
# Suppression log
'mergehistory-into' => 'Målsida:',
'mergehistory-list' => 'Sidhistorik som kan sammanfogas',
'mergehistory-merge' => 'Följande versioner av [[:$1]] kan infogas i [[:$2]]. Med hjälp av alternativknapparna för varje version kan du välja att endast infoga versioner fram till en viss tidpunkt. Notera att om du använder navigationslänkarna så avmarkeras alla alternativknappar.',
-'mergehistory-go' => 'Visa versioner som kan infogas',
-'mergehistory-submit' => 'Sammanfoga',
+'mergehistory-go' => 'Visa redigeringar som kan slås samman',
+'mergehistory-submit' => 'Sammanfoga sidversioner',
'mergehistory-empty' => 'Inga versioner av sidorna kan sammanfogas.',
'mergehistory-success' => '$3 {{PLURAL:$3|version|versioner}} av [[:$1]] har infogats i [[:$2]].',
'mergehistory-fail' => 'Historikerna kunde inte sammanfogas, kontrollera de sidor och den sidversion som du valt.',
'showhideselectedversions' => 'Visa/dölj valda versioner',
'editundo' => 'gör ogjord',
'diff-empty' => '(Ingen skillnad)',
-'diff-multi' => '({{PLURAL:$1|En mellanliggande version|$1 mellanliggande versioner}} av {{PLURAL:$2|en användare|$2 användare}} visas inte)',
+'diff-multi-sameuser' => '({{PLURAL:$1|En mellanliggande version|$1 mellanliggande versioner}} av samma användare visas inte)',
+'diff-multi-otherusers' => '({{PLURAL:$1|En mellanliggande version|$1 mellanliggande versioner}} av {{PLURAL:$2|en annan användare|$2 användare}} visas inte)',
'diff-multi-manyusers' => '({{PLURAL:$1|En mellanliggande version|$1 mellanliggande versioner}} av mer än $2 användare visas inte)',
'difference-missing-revision' => '{{PLURAL:$2|En revision|$2 revisioner}} av denna skillnad ($1) kunde inte hittas.
'searchresults-title' => 'Sökresultat för "$1"',
'toomanymatches' => 'Sökningen gav för många resultat, försök med en annan fråga',
'titlematches' => 'Träffar i sidtitlar',
-'textmatches' => 'Sidor som innehåller sökordet:',
-'notextmatches' => 'Det finns inga sidor som innehåller sökordet',
+'textmatches' => 'Artikeltexter som matchar sökningen',
+'notextmatches' => 'Inga artikeltexter matchar sökningen',
'prevn' => 'föregående {{PLURAL:$1|$1}}',
'nextn' => 'nästa {{PLURAL:$1|$1}}',
'prevn-title' => 'Föregående $1 {{PLURAL:$1|resultat|resultat}}',
'nextn-title' => 'Nästa $1 {{PLURAL:$1|resultat|resultat}}',
'shown-title' => 'Visa $1 {{PLURAL:$1|resultat|resultat}} per sida',
'viewprevnext' => 'Visa ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-exists' => "'''Det finns en sida med namnet \"[[:\$1]]\" på denna wiki.'''",
-'searchmenu-new' => "'''Skapa sidan \"[[:\$1]]\" på denna wiki!'''",
+'searchmenu-exists' => "'''Det finns en sida med namnet \"[[:\$1]]\" på denna wiki.''' {{PLURAL:\$2|0=|Se även de andra sökresultaten som hittades.}}",
+'searchmenu-new' => '<strong>Skapa sidan "[[:$1]]" på denna wiki!</strong> {{PLURAL:$2|0=|Se även sidan som hittades med din sökning.|Se även sidorna som hittades med din sökning.}}',
'searchprofile-articles' => 'Innehållssidor',
'searchprofile-project' => 'Hjälp- och projektsidor',
'searchprofile-images' => 'Multimedia',
'search-result-score' => 'Relevans: $1%',
'search-redirect' => '(omdirigering $1)',
'search-section' => '(avsnitt $1)',
+'search-file-match' => '(överensstämmer filens innehåll)',
'search-suggest' => 'Menade du: $1',
'search-interwiki-caption' => 'Systerprojekt',
'search-interwiki-default' => 'Resultat i $1:',
'rows' => 'Rader:',
'columns' => 'Kolumner:',
'searchresultshead' => 'Sökning',
-'resultsperpage' => 'Träffar per sida:',
'stub-threshold' => 'Gräns för <a href="#" class="stub">stubblänk</a>-formatering (byte):',
'stub-threshold-disabled' => 'Avaktiverat',
'recentchangesdays' => 'Antal dygn som skall visas i "senaste ändringarna":',
-'recentchangesdays-max' => '(maximalt $1 {{PLURAL:$1|dygn|dygn}})',
+'recentchangesdays-max' => 'Maximalt $1 {{PLURAL:$1|dygn}}',
'recentchangescount' => 'Antal redigeringar som visas som standard:',
'prefs-help-recentchangescount' => 'Detta inkluderar senaste ändringarna, sidhistorik och loggar.',
'prefs-help-watchlist-token2' => 'Detta är den hemliga nyckeln till webbflödet i din bevakningslista.
'right-deleterevision' => 'Radera och återställa enskilda sidversioner',
'right-deletedhistory' => 'Se raderad historik utan tillhörande sidtext',
'right-deletedtext' => 'Visa raderad text och ändringar mellan raderade versioner',
-'right-browsearchive' => 'Söka efter raderade sidor',
-'right-undelete' => 'Återställa raderade sidor',
+'right-browsearchive' => 'Sök efter raderade sidor',
+'right-undelete' => 'Återställ raderade sidor',
'right-suppressrevision' => 'Se och återställa sidversioner som dolts för administratörer',
'right-suppressionlog' => 'Se privata loggar',
'right-block' => 'Blockera andra användare från att redigera',
'right-editinterface' => 'Redigera användargränssnittet',
'right-editusercssjs' => 'Redigera andra användares CSS- och JS-filer',
'right-editusercss' => 'Redigera andra användares CSS-filer',
-'right-edituserjs' => 'Redigera andra användares JS-filer',
+'right-edituserjs' => 'Redigera andra användares JavaScript-filer',
'right-editmyusercss' => 'Redigera din egen användares CSS-filer',
'right-editmyuserjs' => 'Redigera din egen användares JavaScript-filer',
'right-viewmywatchlist' => 'Visa din egen bevakningslista',
'recentchanges-label-newpage' => 'Denna redigering skapade en ny sida',
'recentchanges-label-minor' => 'Detta är en mindre ändring',
'recentchanges-label-bot' => 'Denna redigering gjordes av en bot',
-'recentchanges-label-unpatrolled' => 'Denna redigering har inte blivit kontrollerad ännu',
+'recentchanges-label-unpatrolled' => 'Denna redigering har inte blivit patrullerad ännu',
'recentchanges-label-plusminus' => 'Sidans storlek ändrades med detta antal byte',
'recentchanges-legend-heading' => "'''Teckenförklaring:'''",
'recentchanges-legend-newpage' => '(se även [[Special:NewPages|listan över nya sidor]])',
'recentchanges-legend-plusminus' => "(''±123'')",
'rcnotefrom' => "Nedan visas ändringar sedan '''$2''' (upp till '''$1''' visas).",
-'rclistfrom' => 'Visa ändringar efter $1',
+'rclistfrom' => 'Visa ändringar från och med $1',
'rcshowhideminor' => '$1 mindre ändringar',
'rcshowhidebots' => '$1 robotar',
'rcshowhideliu' => '$1 registrerade användare',
'rcshowhideanons' => '$1 oinloggade användare',
-'rcshowhidepatr' => '$1 kontrollerade redigeringar',
+'rcshowhidepatr' => '$1 patrullerade redigeringar',
'rcshowhidemine' => '$1 mina ändringar',
'rclinks' => 'Visa senaste $1 ändringar under de senaste $2 dygnen<br />$3',
'diff' => 'skillnad',
'number_of_watching_users_pageview' => '[$1 bevakande {{PLURAL:$1|användare|användare}}]',
'rc_categories' => 'Begränsa till följande kategorier (separera med "|")',
'rc_categories_any' => 'Vilken som helst',
-'rc-change-size-new' => '$1 {{PLURAL:$1|byte|bytes}} efter ändring',
+'rc-change-size-new' => '$1 {{PLURAL:$1|byte}} efter ändring',
'newsectionsummary' => '/* $1 */ nytt avsnitt',
'rc-enhanced-expand' => 'Visa detaljer',
'rc-enhanced-hide' => 'Göm detaljer',
'upload-permitted' => 'Tillåtna filtyper: $1.',
'upload-preferred' => 'Föredragna filtyper: $1.',
'upload-prohibited' => 'Förbjudna filtyper: $1.',
-'uploadlog' => 'Uppladdningar',
+'uploadlog' => 'uppladdningslogg',
'uploadlogpage' => 'Uppladdningslogg',
'uploadlogpagetext' => 'Det här är en logg över de senast uppladdade filerna.
Se [[Special:NewFiles|galleriet över nya filer]] för en mer visuell översikt.',
'filename-toolong' => 'Filnamn får inte vara längre än 240 bytes.',
'badfilename' => 'Filens namn har blivit ändrat till "$1".',
'filetype-mime-mismatch' => 'Filtillägget ".$1" matchar inte med den identifierade MIME-typen för filen ($2).',
-'filetype-badmime' => 'Uppladdning av filer med MIME-typen "$1" är inte tillåten.',
+'filetype-badmime' => 'Uppladdning av filer av MIME-typ "$1" är inte tillåtet.',
'filetype-bad-ie-mime' => 'Kan inte ladda upp denna fil på grund av att Internet Explorer skulle upptäcka att den är "$1", vilket är en otillåten och möjligtvis farlig filtyp.',
'filetype-unwanted-type' => "'''\".\$1\"''' är en oönskad filtyp.
{{PLURAL:\$3|Föredragen filtyp|Föredragna filtyper}} är \$2.",
'upload-file-error-text' => 'Ett internt fel inträffade när en temporär fil skulle skapas på servern. Kontakta en [[Special:ListUsers/sysop|administratör]].',
'upload-misc-error' => 'Okänt uppladdningsfel',
'upload-misc-error-text' => 'Ett okänt fel inträffade under uppladdningen.
-Kontrollera att URL:en giltig och försök igen.
+Kontrollera att URL:en giltig och tillgänglig och försök igen.
Om problemet kvarstår, kontakta en [[Special:ListUsers/sysop|administratör]].',
'upload-too-many-redirects' => 'URL-en innehöll för många omdirigeringar',
'upload-unknown-size' => 'Okänd storlek',
# File backend
'backend-fail-stream' => 'Kunde inte strömma filen $1.',
-'backend-fail-backup' => 'Kunde inte säkerhetskopiera filen $1.',
+'backend-fail-backup' => "Kunde inte säkerhetskopiera filen ''$1''.",
'backend-fail-notexists' => 'Filen $1 finns inte.',
'backend-fail-hashes' => 'Kunde inte att hämta filhash för jämförelse.',
-'backend-fail-notsame' => 'En icke-identisk fil redan finns på $1.',
+'backend-fail-notsame' => "En icke-identisk fil finns redan på ''$1''.",
'backend-fail-invalidpath' => '$1 är inte en giltig sökväg för att spara.',
-'backend-fail-delete' => 'Kunde inte radera filen $1.',
+'backend-fail-delete' => "Kunde inte radera filen ''$1''.",
'backend-fail-describe' => 'Kunde inte att ändra metadata för filen "$1".',
-'backend-fail-alreadyexists' => 'Filen $1 finns redan.',
-'backend-fail-store' => 'Kunde inte spara filen $1 vid $2.',
-'backend-fail-copy' => 'Det gick inte att kopiera filen $1 till $2.',
-'backend-fail-move' => 'Kunde inte flytta filen $1 till $2.',
+'backend-fail-alreadyexists' => "Filen ''$1'' finns redan.",
+'backend-fail-store' => "Kunde inte spara filen ''$1'' vid ''$2''.",
+'backend-fail-copy' => 'Det gick inte att kopiera filen "$1" till "$2".',
+'backend-fail-move' => 'Kunde inte flytta filen "$1" till "$2".',
'backend-fail-opentemp' => 'Kunde inte öppna temporär fil.',
'backend-fail-writetemp' => 'Kunde inte skriva till temporär fil.',
'backend-fail-closetemp' => 'Kunde inte stänga temporär fil.',
-'backend-fail-read' => 'Kunde inte läsa filen $1.',
+'backend-fail-read' => "Kunde inte läsa filen ''$1''.",
'backend-fail-create' => 'Kunde inte skapa filen $1.',
'backend-fail-maxsize' => 'Kunde inte skapa filen $1 eftersom den är större än {{PLURAL:$2|en byte|$2 bytes}}.',
'backend-fail-readonly' => 'Lagringssystemet "$1" är för närvarande skrivskyddad. Den angivna anledningen är: "$2"',
'http-invalid-scheme' => 'URLer med "$1"-formen stöds inte',
'http-request-error' => 'HTTP-begäran misslyckades på grund av okänt fel.',
'http-read-error' => 'HTTP-läsfel.',
-'http-timed-out' => 'Time out för HTTP-begäran.',
+'http-timed-out' => 'HTTP-begäran avbröts.',
'http-curl-error' => 'Fel vid hämtning av URL: $1',
'http-bad-status' => 'Det uppstod ett problem under HTTP-begäran: $1 $2',
'filehist-missing' => 'Fil saknas',
'imagelinks' => 'Filanvändning',
'linkstoimage' => 'Följande {{PLURAL:$1|sida|$1 sidor}} länkar till den här filen:',
-'linkstoimage-more' => 'Mer är {{PLURAL:$1|en sida|$1 sidor}} länkar till den här filen.
+'linkstoimage-more' => 'Mer änr {{PLURAL:$1|en sida|$1 sidor}} länkar till den här filen.
Följande lista visar bara {{PLURAL:$1|den första sidan|de $1 första sidorna}} som länkar till filen.
Det finns en [[Special:WhatLinksHere/$2|fullständig lista]].',
'nolinkstoimage' => 'Inga sidor länkar till den här filen.',
'sharedupload-desc-there' => 'Den här filen är från $1 och kan användas av andra projekt.
Var god se [$2 filbeskrivningssidan] för mer information.',
'sharedupload-desc-here' => 'Den här filen är från $1 och kan användas av andra projekt.
-Beskrivningen på dess [$2 filbeskrivningssida] visas nedan.',
+Beskrivningen på dess [$2 filbeskrivningssida] där visas nedan.',
'sharedupload-desc-edit' => 'Denna fil är från $1 och kan användas av andra projekt.
Kanske vill du redigera beskrivningen på dess [$2 filbeskrivningssida] där.',
'sharedupload-desc-create' => 'Denna fil är från $1 och kan användas av andra projekt.
** Upphovsrättsbrott
** Dubblettfil',
'filedelete-edit-reasonlist' => 'Redigera anledningar för radering',
-'filedelete-maintenance' => 'Radering och återställning av filer tillfälligt avaktiverat under underhåll.',
+'filedelete-maintenance' => 'Radering och återställning av filer har tillfälligt avaktiverats under underhåll.',
'filedelete-maintenance-title' => 'Kan inte radera filen',
# MIME search
# Random page in category
'randomincategory' => 'Slumpsida i kategori',
'randomincategory-invalidcategory' => '"$1" är inte ett giltigt kategorinamn.',
-'randomincategory-nopages' => 'Det finns inga sidor i [[:Category:$1]].',
+'randomincategory-nopages' => 'Det finns inga sidor i kategorin [[:Category:$1]].',
'randomincategory-selectcategory' => 'Få slumpsida från kategori: $1 $2.',
'randomincategory-selectcategory-submit' => 'Gå',
# Random redirect
-'randomredirect' => 'Slumpvald omdirigering',
+'randomredirect' => 'Slumpmässig omdirigering',
'randomredirect-nopages' => 'Det finns inte några omdirigeringar i namnrymden "$1".',
# Statistics
'double-redirect-fixer' => 'Omdirigeringsrättaren',
'brokenredirects' => 'Trasiga omdirigeringar',
-'brokenredirectstext' => 'Följande omdirigerar länkar till ej existerande sidor:',
+'brokenredirectstext' => 'Följande omdirigeringar länkar till ej existerande sidor:',
'brokenredirects-edit' => 'redigera',
'brokenredirects-delete' => 'radera',
# Miscellaneous special pages
'nbytes' => '$1 {{PLURAL:$1|byte|byte}}',
'ncategories' => '$1 {{PLURAL:$1|kategori|kategorier}}',
-'ninterwikis' => '$1 {{PLURAL:$1|interwiki|interwikis}}',
+'ninterwikis' => '$1 {{PLURAL:$1|interwiki}}',
'nlinks' => '$1 {{PLURAL:$1|länk|länkar}}',
'nmembers' => '$1 {{PLURAL:$1|medlem|medlemmar}}',
'nmemberschanged' => '$1 → $2 {{PLURAL:$2|medlem|medlemmar}}',
'uncategorizedcategories' => 'Ej kategoriserade kategorier',
'uncategorizedimages' => 'Ej kategoriserade filer',
'uncategorizedtemplates' => 'Ej kategoriserade mallar',
-'unusedcategories' => 'Tomma kategorier',
+'unusedcategories' => 'Oanvända kategorier',
'unusedimages' => 'Oanvända filer',
'popularpages' => 'Populära sidor',
'wantedcategories' => 'Önskade kategorier',
'wantedtemplates' => 'Önskade mallar',
'mostlinked' => 'Sidor med flest länkar till sig',
'mostlinkedcategories' => 'Kategorier med flest länkar till sig',
-'mostlinkedtemplates' => 'Mest använda mallar',
+'mostlinkedtemplates' => 'Mallar med flest länkar till sig',
'mostcategories' => 'Sidor med flest kategorier',
'mostimages' => 'Filer med flest länkar till sig',
'mostinterwikis' => 'Sidor med flest interwikis',
'protectedpages' => 'Skyddade sidor',
'protectedpages-indef' => 'Endast skydd på obestämd tid',
'protectedpages-cascade' => 'Endast kaskaderande skydd',
+'protectedpages-noredirect' => 'Dölj omdirigeringar',
'protectedpagesempty' => 'Inga sidor är skyddade under de villkoren.',
'protectedtitles' => 'Skyddade titlar',
'protectedtitlesempty' => 'Just nu finns inga skyddade sidtitlar med de parametrarna.',
'listusers-creationsort' => 'Sortera efter datum skapat',
'listusers-desc' => 'Sortera i fallande ordning',
'usereditcount' => '$1 {{PLURAL:$1|redigering|redigeringar}}',
-'usercreated' => '{{GENDER:$3|Skapat}} $1 $2',
+'usercreated' => '{{GENDER:$3|Skapade}} den $1 $2',
'newpages' => 'Nya sidor',
'newpages-username' => 'Användare:',
'ancientpages' => 'Äldsta sidorna',
'move' => 'Flytta',
'movethispage' => 'Flytta denna sida',
'unusedimagestext' => 'Följande filer existerar men är inte inlagda i någon sida.
-Lägg märke till att andra webbplatser kan länka till en fil med en direkt URL. Filer kan därför användas aktivt trots att de listas här.',
+Observera att andra webbplatser kan länka direkt till en fil med en URL. Filer kan därför användas aktivt trots att de listas här.',
'unusedcategoriestext' => 'Följande kategorier finns men innehåller inga sidor eller underkategorier.',
'notargettitle' => 'Inget mål',
'notargettext' => 'Du har inte angivit någon sida eller användare att utföra denna funktion på.',
# Book sources
'booksources' => 'Bokkällor',
'booksources-search-legend' => 'Sök efter bokkällor',
-'booksources-go' => 'Sök',
+'booksources-go' => 'Gå',
'booksources-text' => 'Nedan följer en lista över länkar till webbplatser som säljer nya och begagnade böcker, och som kanske har ytterligare information om de böcker du söker.',
'booksources-invalid-isbn' => 'Det angivna ISBN-numret verkar inte vara giltigt. Kontrollera källan för eventuella fel.',
'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-hidebots' => 'Dölj botar',
'activeusers-hidesysops' => 'Dölj administratörer',
'activeusers-noresult' => 'Inga användare funna.',
'listgrouprights-rights' => 'Behörigheter',
'listgrouprights-helppage' => 'Help:Gruppbehörigheter',
'listgrouprights-members' => '(lista över medlemmar)',
-'listgrouprights-addgroup' => 'Kan lägga till {{PLURAL:$2|gruppen|grupperna}}: $1',
-'listgrouprights-removegroup' => 'Kan ta bort {{PLURAL:$2|gruppen|grupperna}}: $1',
-'listgrouprights-addgroup-all' => 'Kan lägga till alla användargrupper',
-'listgrouprights-removegroup-all' => 'Kan ta bort alla användargrupper',
-'listgrouprights-addgroup-self' => 'Kan lägga till {{PLURAL:$2|gruppen|grupperna}} till sitt eget konto: $1',
-'listgrouprights-removegroup-self' => 'Kan ta bort {{PLURAL:$2|gruppen|grupperna}} från sitt eget konto: $1',
-'listgrouprights-addgroup-self-all' => 'Kan lägga till alla grupperna till sitt eget konto',
-'listgrouprights-removegroup-self-all' => 'Kan ta bort alla grupperna från sitt eget konto',
+'listgrouprights-addgroup' => 'Lägg till {{PLURAL:$2|gruppen|grupperna}}: $1',
+'listgrouprights-removegroup' => 'Ta bort {{PLURAL:$2|gruppen|grupperna}}: $1',
+'listgrouprights-addgroup-all' => 'Lägg till alla användargrupper',
+'listgrouprights-removegroup-all' => 'Ta bort alla användargrupper',
+'listgrouprights-addgroup-self' => 'Lägg till {{PLURAL:$2|gruppen|grupperna}} på eget konto: $1',
+'listgrouprights-removegroup-self' => 'Ta bort {{PLURAL:$2|gruppen|grupperna}} från eget konto: $1',
+'listgrouprights-addgroup-self-all' => 'Lägg till alla grupperna till eget konto',
+'listgrouprights-removegroup-self-all' => 'Ta bort alla grupperna från eget konto',
# Email user
'mailnologin' => 'Ingen adress att skicka till',
Den e-postadress du har angivit i [[Special:Preferences|dina användarinställningar]] kommer att visas som "Från"-adress i meddelandet, så att mottagaren har möjlighet att svara direkt till dig.',
'usermailererror' => 'Fel i hanteringen av mail:',
'defemailsubject' => '{{SITENAME}} e-post från användare "$1"',
-'usermaildisabled' => 'Användar-epost avaktiverat',
+'usermaildisabled' => 'Användar-e-post avaktiverat',
'usermaildisabledtext' => 'Du kan inte skicka e-post till andra användare på den här wikin',
'noemailtitle' => 'Ingen e-postadress',
'noemailtext' => 'Den här användaren har inte angivit en giltig e-postadress.',
'emailccsubject' => 'Kopia av ditt meddelande till $1: $2',
'emailsent' => 'E-post har nu skickats',
'emailsenttext' => 'Ditt e-postmeddelande har skickats',
-'emailuserfooter' => 'Detta e-brev skickades av $1 till $2 genom "Skicka e-post"-funktionen på {{SITENAME}}.',
+'emailuserfooter' => 'Denna e-post skickades av $1 till $2 genom "Skicka e-post"-funktionen på {{SITENAME}}.',
# User Messenger
'usermessage-summary' => 'Lämnar systemmeddelande.',
'watchmethod-recent' => 'letar efter bevakade sidor bland senaste ändringar',
'watchmethod-list' => 'letar efter nyligen gjorda ändringar bland bevakade sidor',
'watchlistcontains' => 'Din bevakningslista innehåller $1 {{PLURAL:$1|sida|sidor}}.',
-'iteminvalidname' => "Problem med sidan '$1', ogiltigt namn...",
-'wlnote' => "Nedan finns {{PLURAL:$1|den senaste ändringen|de senaste '''$1''' ändringarna}} under {{PLURAL:$2|den senaste timmen|de senaste '''$2''' timmarna}} från den $3, kl. $4.",
+'iteminvalidname' => "Problem med ''$1'', ogiltigt namn...",
+'wlnote2' => 'Nedan finns de senaste $1 ändringarna under {{PLURAL:$1|den senaste timmen|de senaste <strong>$2</strong> timmarna}} från den $3 kl. $4.',
'wlshowlast' => 'Visa senaste $1 timmarna $2 dygnen $3',
'watchlist-options' => 'Alternativ för bevakningslistan',
# Displayed when you click the "watch" button and it is in the process of watching
'watching' => 'Bevakar...',
'unwatching' => 'Avbevakar...',
-'watcherrortext' => 'Ett fel inträffade när du ändrade dina bevakningsinställningarna för " $1 ".',
+'watcherrortext' => 'Ett fel inträffade när du ändrade dina bevakningsinställningarna för "$1".',
'enotif_mailer' => '{{SITENAME}}s system för att få meddelanden om förändringar per e-post',
'enotif_reset' => 'Markera alla sidor som besökta',
'changed' => 'ändrad',
# Delete
-'deletepage' => 'Ta bort sida',
+'deletepage' => 'Radera sida',
'confirm' => 'Bekräfta',
-'excontent' => "Före radering: '$1'",
-'excontentauthor' => "innehållet var: '$1' (den enda som skrivit var '[[Special:Contributions/$2|$2]]')",
-'exbeforeblank' => "innehåll före tömning var: '$1'",
+'excontent' => 'Före radering: "$1"',
+'excontentauthor' => 'innehållet var: "$1" (den enda som skrivit var "[[Special:Contributions/$2|$2]]")',
+'exbeforeblank' => 'innehåll före tömning var: "$1"',
'exblank' => 'sidan var tom',
'delete-confirm' => 'Radera "$1"',
'delete-legend' => 'Radera',
Se $2 för noteringar om de senaste raderingarna.',
'dellogpage' => 'Raderingslogg',
'dellogpagetext' => 'Nedan listas de senaste raderingarna.',
-'deletionlog' => 'raderingsloggen',
+'deletionlog' => 'raderingslogg',
'reverted' => 'Återgått till tidigare version',
'deletecomment' => 'Anledning:',
'deleteotherreason' => 'Annan/ytterligare anledning:',
'delete-edit-reasonlist' => 'Redigera anledningar för radering',
'delete-toobig' => 'Denna sida har en lång redigeringshistorik med mer än $1 {{PLURAL:$1|sidversion|sidversioner}}. Borttagning av sådana sidor har begränsats för att förhindra oavsiktliga driftstörningar på {{SITENAME}}.',
'delete-warning-toobig' => 'Denna sida har en lång redigeringshistorik med mer än $1 {{PLURAL:$1|sidversion|sidversioner}}. Att radera sidan kan skapa problem med hanteringen av databasen på {{SITENAME}}; var försiktig.',
+'deleting-backlinks-warning' => "'''Varning:''' Andra sidor länkar till sidan som du är på väg att radera.",
# Rollback
'rollback' => 'Rulla tillbaka ändringar',
-'rollback_short' => 'Återställning',
+'rollback_short' => 'Tillbakarullning',
'rollbacklink' => 'rulla tillbaka',
'rollbacklinkcount' => 'rulla tillbaka $1 {{PLURAL:$1|redigering|redigeringar}}',
'rollbacklinkcount-morethan' => 'rulla tillbaka mer än $1 {{PLURAL:$1|redigering|redigeringar}}',
'protectlogpage' => 'Skrivskyddslogg',
'protectlogtext' => 'Detta är en lista över applicerande och borttagande av skrivskydd.
Se [[Special:ProtectedPages|listan över skyddade sidor]] för listan över aktiva sidskydd.',
-'protectedarticle' => 'skyddade [[$1]]',
+'protectedarticle' => 'skrivskyddade "[[$1]]"',
'modifiedarticleprotection' => 'ändrade skyddsnivån för "[[$1]]"',
-'unprotectedarticle' => 'tog bort skydd från "[[$1]]"',
-'movedarticleprotection' => 'flyttade skyddsinställningar från "[[$2]]" till "[[$1]]"',
-'protect-title' => 'Skyddsinställningar för "$1"',
+'unprotectedarticle' => 'tog bort skrivskydd från "[[$1]]"',
+'movedarticleprotection' => 'flyttade skrivskyddsinställningar från "[[$2]]" till "[[$1]]"',
+'protect-title' => 'Ändra skrivskyddsnivå för "$1"',
'protect-title-notallowed' => 'Visa skyddsnivån för "$1"',
-'prot_1movedto2' => 'flyttade [[$1]] till [[$2]]',
+'prot_1movedto2' => '[[$1]] flyttades till [[$2]]',
'protect-badnamespace-title' => 'Namnrymd som inte kan skrivskyddas',
'protect-badnamespace-text' => 'Sidor i den här namnrymden kan inte skrivskyddas.',
-'protect-norestrictiontypes-text' => 'Denna sida kan inte skyddas eftersom det inte finns några begränsningstyper tillgängliga.',
-'protect-norestrictiontypes-title' => 'Oskyddbar sida',
+'protect-norestrictiontypes-text' => 'Denna sida kan inte skrivskyddas eftersom det inte finns några begränsningstyper tillgängliga.',
+'protect-norestrictiontypes-title' => 'Sidan kan inte skrivskyddas',
'protect-legend' => 'Bekräfta skrivskydd av sida',
'protectcomment' => 'Anledning:',
'protectexpiry' => 'Varaktighet:',
'protect_expiry_invalid' => 'Ogiltig varaktighetstid.',
-'protect_expiry_old' => 'Den angivna varaktighetentiden har redan passerats.',
-'protect-unchain-permissions' => 'Lås upp fler skyddsalternativ',
-'protect-text' => "Här kan du se och ändra skyddsnivån av sidan '''$1'''.",
-'protect-locked-blocked' => "Du kan inte ändra sidors skydd medan du är blockerad.
-Här kan du se gällande skyddsinställninger för sidan '''$1''':",
+'protect_expiry_old' => 'Den angivna varaktighetstiden har redan passerats.',
+'protect-unchain-permissions' => 'Lås upp fler skrivskyddsalternativ',
+'protect-text' => "Här kan du se och ändra skrivskyddsnivån av sidan '''$1'''.",
+'protect-locked-blocked' => "Du kan inte ändra sidors skrivskydd medan du är blockerad.
+Här kan du se gällande skrivskyddsinställninger för sidan '''$1''':",
'protect-locked-dblock' => "Skrivskydd kan inte ändras då databasen är låst.
Nuvarande skrivskyddsinställning för sidan '''$1''' är:",
'protect-locked-access' => "Ditt konto har inte behörighet att ändra skrivskydd på sidor.
'protect-level-sysop' => 'Enbart administratörer',
'protect-summary-cascade' => 'kaskaderande',
'protect-expiring' => 'upphör den $1 (UTC)',
-'protect-expiring-local' => 'löper ut $1',
+'protect-expiring-local' => 'upphör $1',
'protect-expiry-indefinite' => 'på obestämd tid',
'protect-cascade' => 'Skydda sidor som är inkluderade i den här sidan (kaskaderande skydd)',
-'protect-cantedit' => 'Du kan inte ändra skyddsnivån för den här sidan, eftersom du inte har behörighet att redigera den.',
+'protect-cantedit' => 'Du kan inte ändra skrivskyddsnivån för den här sidan, eftersom du inte har behörighet att redigera den.',
'protect-othertime' => 'Annan tidsperiod:',
'protect-othertime-op' => 'annan tidsperiod',
'protect-existing-expiry' => 'Gällande varaktighet: $2, kl. $3',
** Upprepad spam
** Redigeringskrig
** Sida med många besökare',
-'protect-edit-reasonlist' => 'Redigera skyddsanledningar',
+'protect-edit-reasonlist' => 'Redigera skrivskyddsanledningar',
'protect-expiry-options' => '1 timme:1 hour,1 dygn:1 day,1 vecka:1 week,2 veckor:2 weeks,1 månad:1 month,3 månader:3 months,6 månader:6 months,1 år:1 year,oändlig:infinite',
'restriction-type' => 'Typ av skydd:',
'restriction-level' => 'Skyddsnivå:',
'pagesize' => '(byte)',
# Restrictions (nouns)
-'restriction-edit' => 'Redigering',
-'restriction-move' => 'Flyttning',
+'restriction-edit' => 'Redigera',
+'restriction-move' => 'Flytta',
'restriction-create' => 'Skapa sidan',
-'restriction-upload' => 'Uppladdning',
+'restriction-upload' => 'Ladda upp',
# Restriction levels
'restriction-level-sysop' => 'helt låst',
# Undelete
'undelete' => 'Visa raderade sidor',
-'undeletepage' => 'Visa och återställ borttagna sidor',
+'undeletepage' => 'Visa och återställ raderade sidor',
'undeletepagetitle' => "'''Härunder visas en lista över raderade versioner av [[:$1|$1]]'''.",
'viewdeletedpage' => 'Visa raderade sidor',
'undeletepagetext' => 'Följande {{PLURAL:$1|sida har blivit raderad|$1 sidor har blivit raderade}} men finns fortfarande i arkivet och kan återställas.
För att se alla aktuella blockeringar, gå till [[Special:BlockList|listan över blockeringar]].',
'ipb-blockingself' => 'Du håller på att blockera dig själv! Är du säker på att du vill göra det?',
'ipb-confirmhideuser' => 'Du är på väg att blockera en användare med "göm användare" aktiverat. Detta kommer upphäva användarens namn i alla listor och loggar. Är du säker på att du vill göra det?',
+'ipb-confirmaction' => 'Markera fältet "{{int:ipb-confirm}}" längst ned om du är säker på att du verkligen vill göra det.',
'ipb-edit-dropdown' => 'Redigera blockeringsanledningar',
'ipb-unblock-addr' => 'Ta bort blockering av $1',
'ipb-unblock' => 'Ta bort blockering av en användare eller IP-adress',
'allmessages-prefix' => 'Filtrera efter prefix:',
'allmessages-language' => 'Språk:',
'allmessages-filter-submit' => 'Gå',
+'allmessages-filter-translate' => 'Översätt',
# Thumbnails
'thumbnail-more' => 'Förstora',
'importstart' => 'Importerar sidor....',
'import-revision-count' => '$1 {{PLURAL:$1|version|versioner}}',
'importnopages' => 'Det finns inga sidor att importera.',
-'imported-log-entries' => 'Importerade $1 {{PLURAL: $1 |loggpost|loggposter}}.',
+'imported-log-entries' => 'Importerade $1 {{PLURAL:$1 |loggpost|loggposter}}.',
'importfailed' => 'Importen misslyckades: <nowiki>$1</nowiki>',
'importunknownsource' => 'Okänd typ av importkälla',
'importcantopen' => 'Misslyckades med att öppna importfilen.',
'tooltip-pt-preferences' => 'Dina inställningar',
'tooltip-pt-watchlist' => 'Listan över sidor du bevakar för ändringar',
'tooltip-pt-mycontris' => 'Lista över dina bidrag',
-'tooltip-pt-login' => 'Du får gärna logga in, men det är inte nödvändigt',
-'tooltip-pt-anonlogin' => 'Du får gärna logga in, men det är inte nödvändigt',
+'tooltip-pt-login' => 'Du uppmuntras att logga in, men det är inte nödvändigt',
'tooltip-pt-logout' => 'Logga ut',
'tooltip-ca-talk' => 'Diskussion om innehållssidan',
'tooltip-ca-edit' => 'Du kan redigera den här sidan.
'tooltip-minoredit' => 'Markera som mindre ändring',
'tooltip-save' => 'Spara dina ändringar',
'tooltip-preview' => 'Förhandsgranska dina ändringar, vänligen använd detta innan du sparar!',
-'tooltip-diff' => 'Visa vilka förändringar du har gjort av texten.',
+'tooltip-diff' => 'Visa vilka ändringar du har gjort i texten.',
'tooltip-compareselectedversions' => 'Visa skillnaden mellan de två markerade versionerna av den här sidan.',
'tooltip-watch' => 'Lägg till den här sidan i din bevakningslista',
'tooltip-watchlistedit-normal-submit' => 'Ta bort titlar',
'seconds' => '{{PLURAL:$1|$1 sekund|$1 sekunder}}',
'minutes' => '{{PLURAL:$1|$1 minut|$1 minuter}}',
'hours' => '{{PLURAL:$1|$1 timme|$1 timmar}}',
-'days' => '{{PLURAL:$1|$1 dag|$1 dagar}}',
+'days' => '{{PLURAL:$1|$1 dygn}}',
'weeks' => '{{PLURAL:$1|$1 vecka|$1 veckor}}',
'months' => '{{PLURAL:$1|$1 månad|$1 månader}}',
'years' => '{{PLURAL:$1|$1 år}}',
'version-hook-name' => 'Namn',
'version-hook-subscribedby' => 'Används av',
'version-version' => '(Version $1)',
-'version-license' => 'Licens',
+'version-license' => 'MediaWiki-licens',
+'version-ext-license' => 'Licens',
+'version-ext-colheader-name' => 'Tillägg',
+'version-ext-colheader-version' => 'Version',
+'version-ext-colheader-license' => 'Licens',
+'version-ext-colheader-description' => 'Beskrivning',
+'version-ext-colheader-credits' => 'Författare',
+'version-license-title' => 'Licens för $1',
+'version-license-not-found' => 'Ingen detaljerad licensinformation hittades för detta tillägg.',
+'version-credits-title' => 'Erkännande för $1',
+'version-credits-not-found' => 'Ingen detaljerad erkännandeinformation hittades för detta tillägg.',
'version-poweredby-credits' => "Den här wikin drivs av '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
'version-poweredby-others' => 'andra',
'version-poweredby-translators' => 'översättare från translatewiki.net',
'limitreport-templateargumentsize' => 'Storlek på mallargument',
'limitreport-templateargumentsize-value' => '$1/$2 {{PLURAL:$2|byte}}',
'limitreport-expansiondepth' => 'Största expansionsdjup',
-'limitreport-expensivefunctioncount' => 'Antal dyra parser-funktioner',
+'limitreport-expensivefunctioncount' => 'Antal resurskrävande parserfunktioner',
# Special:ExpandTemplates
'expandtemplates' => 'Expandera mallar',
'expand_templates_generate_rawhtml' => 'Visa rå HTML',
'expand_templates_preview' => 'Förhandsvisning',
+# Unknown messages
+'createaccount-hook-aborted' => '$1',
+'uploadinvalidxml' => 'XML-koden i den uppladdade filen kunde inte tolkas.',
);
$messages = array(
# User preference toggles
'tog-underline' => 'Wekea mstari viungo:',
-'tog-justify' => 'Sawazisha ibara',
'tog-hideminor' => 'Ficha mabadilisho madogo ya hivi karibuni',
'tog-hidepatrolled' => 'Ficha kurasa zilizofanyiwa doria kwenye mabadiliko ya karibuni',
'tog-newpageshidepatrolled' => 'Ficha kurasa zilizofanyiwa doria kwenye orodha ya kurasa mpya',
'tog-numberheadings' => 'Vichwa vya habari vijipange namba-vyenyewe',
'tog-showtoolbar' => 'Onyesha mwambaa wa zana za kuhariria',
'tog-editondblclick' => 'Hariri ukurasa kwa kubonyeza mara mbili',
-'tog-editsection' => 'Wezesha sehemu ya kuandikia kwa kutumia viungo vya [hariri]',
'tog-editsectiononrightclick' => 'Wezesha sehemu ya kuandikia kwa kubonyeza kitufe cha kulia cha puku yako juu ya sehemu ya majina husika (JavaScript)',
-'tog-showtoc' => 'Onyesha mistari ya yaliyomo (kwa kila kurasa iliyo na zaidi ya vichwa vya habari 3)',
'tog-rememberpassword' => 'Kumbuka kuingia kwangu pamoja na neno la siri katika kivinjari hiki (kwa muda usiozidi {{PLURAL:$1|siku}} $1)',
'tog-watchcreations' => 'Ongeza kurasa nilizoumba katika maangalizi yangu',
'tog-watchdefault' => 'Ongeza kurasa zote nilizohariri katika maangalizi yangu',
'redirectpagesub' => 'Ukurasa wa kuelekeza',
'lastmodifiedat' => 'Ukurasa huu umebadilishwa kwa mara ya mwisho tarehe $1, saa $2.',
'viewcount' => 'Ukurasa huu umetembelewa mara {{PLURAL:$1|moja tu|$1}}.',
-'protectedpage' => 'Kurasa iliyolindwa',
+'protectedpage' => 'Ukurasa uliolindwa',
'jumpto' => 'Rukia:',
'jumptonavigation' => 'urambazaji',
'jumptosearch' => 'tafuta',
'gotaccountlink' => 'Ingia',
'userlogin-resetlink' => 'Umesahau maelezo yako ya kuingia?',
'createacct-emailrequired' => 'Anwani ya barua pepe',
+'createacct-emailoptional' => 'Anwani ya barua pepe (si lazima)',
'createacct-email-ph' => 'Weka anwani yako ya barua pepe',
'createacct-another-email-ph' => 'Weka anwani ya barua pepe',
'createaccountmail' => 'Kwa barua pepe',
+'createacct-realname' => 'Jina la kweli (si lazima)',
'createaccountreason' => 'Sababu:',
'createacct-reason' => 'Sababu',
+'createacct-benefit-heading' => '{{SITENAME}} inatengenezwa na watu kama wewe.',
+'createacct-benefit-body1' => '{{PLURAL:$1|haririo|maharirio}}',
+'createacct-benefit-body2' => '{{PLURAL:$1|ukurasa|kurasa}}',
+'createacct-benefit-body3' => '{{PLURAL:$1|mhariri|wahariri}} wa hivi karibuni',
'badretype' => 'Maneno uliyoyaandika ni tofauti.',
'userexists' => 'Jina la mtumiaji uliloingiza tayari linatumika.
Tafadhali chagua jina lingine.',
'passwordreset-capture-help' => 'Iwapo utatia alama kisanduku hiki, barua-pepe (pamoja na nenosiri la muda) litaoneshwa kwako na vilevile litatumwa kwa mtumiaji.',
'passwordreset-email' => 'Anwani ya barua pepe:',
'passwordreset-emailtitle' => 'Maelezo ya akaunti kwenye {{SITENAME}}',
-'passwordreset-emailtext-ip' => 'Kuna mtu (huenda ikawa ni wewe, kutoka anwani ya IP $1) aliyeomba kukumbushwa kuhusu maelezo ya akaunti yako katika {{SITENAME}} ($4). {{PLURAL:$3|Akaunti inayofuata imeunganishwa|Akaunti zinazofuata zimeunganishwa}} na anwani ya barua pepe hii:
+'passwordreset-emailtext-ip' => 'Kuna mtu (huenda ikawa ni wewe, kutoka anwani ya IP $1) aliyeomba neno la siri la akaunti yako liwekwe upya katika {{SITENAME}} ($4). {{PLURAL:$3|Akaunti inayofuata imeunganishwa|Akaunti zinazofuata zimeunganishwa}} na anwani ya barua pepe hii:
$2
{{PLURAL:$3|Neno la siri hili litakwisha|Maneno ya siri haya yatakwisha}} baada ya siku {{PLURAL:$5|$5}}.
Tafadhali ingia sasa na uchague neno jipya la siri. Kama mtu mwingine ameomba hili, au ikiwa umekumbuka neno lako la siri na hutaki kulibadilisha tena, basi usijali ujumbe huu, na uendelee kutumia neno la siri lako la zamani.',
-'passwordreset-emailtext-user' => 'Mtumiaji $1 kwenye {{SITENAME}} ameomba akumbushwe maelezo ya akaunti yako katika {{SITENAME}} ($4). {{PLURAL:$3|Akaunti inayofuata imeunganishwa|Akaunti zinazofuata zimeunganishwa}} na anwani ya barua pepe hii:
+'passwordreset-emailtext-user' => 'Mtumiaji $1 kwenye {{SITENAME}} ameomba neno la siri la akaunti yako liwekwe upya katika {{SITENAME}} ($4). {{PLURAL:$3|Akaunti inayofuata imeunganishwa|Akaunti zinazofuata zimeunganishwa}} na anwani ya barua pepe hii:
$2
-{{PLURAL:$3|Neno la siri hili litakwisha|Maneno ya siri haya yatakwisha}} baada ya siku {{PLURAL:$5|$5}}.
+{{PLURAL:$3|Neno la siri hili litakwisha|Maneno ya siri haya yatakwisha}} baada ya siku {{PLURAL:$5}}.
Tafadhali ingia sasa na uchague neno jipya la siri. Kama mtu mwingine ameomba hili, au ikiwa umekumbuka neno lako la siri na hutaki kulibadilisha tena, basi usijali ujumbe huu, na uendelee kutumia neno la siri lako la zamani.',
'passwordreset-emailelement' => 'Jina la mtumiaji: $1
Neno la siri la muda: $2',
'changeemail-oldemail' => 'Anwani ya barua pepe ya sasa:',
'changeemail-newemail' => 'Anwani mpya ya barua pepe:',
'changeemail-none' => '(hakuna)',
+'changeemail-password' => 'Neno lako la siri kuingia {{SITENAME}}:',
'changeemail-submit' => 'Badilisha anwani ya barua pepe',
'changeemail-cancel' => 'Batilisha',
'undo-success' => 'Sahihisho linaweza kutenguliwa.
Tafadhali tazama linganisho lililopo chini ili kuthibitisha kwamba kutengua ndiyo inayotakiwa, na kisha uhifadhi mabadiliko ili kukamilisha kutengua sahihisho.',
'undo-failure' => 'Haririo halikuweza kutenguliwa kwa kufuatia mgongano wa maharirio katikati.',
-'undo-norev' => 'Sahihisho halikuweza kutenguliwa kwa sababu halipo au limeshafutwa.',
+'undo-norev' => 'Haririo halikuweza kutenguliwa kwa sababu halipo au limeshafutwa.',
'undo-summary' => 'Tengua pitio $1 lililoandikwa na [[Special:Contributions/$2|$2]] ([[User talk:$2|Majadiliano]])',
# Account creation failure
'compareselectedversions' => 'Linganisha mapitio mawili uliyochagua',
'showhideselectedversions' => 'Onyesha/ficha mapitio yaliyoteuliwa',
'editundo' => 'tengua',
-'diff-multi' => '(Haionyeshwi {{PLURAL:$1|pitio moja la katikati lililoandikwa|mapitio $1 ya katikati yaliyoandikwa}} na {{PLURAL:$2|mtumiaji moja|watumiaji $2}})',
# Search results
'searchresults' => 'Matokeo ya utafutaji',
'rows' => 'Mistari:',
'columns' => 'Safu:',
'searchresultshead' => 'Kutafuta',
-'resultsperpage' => 'Matokeo yanayoorodheshwa katika ukurasa mmoja:',
'stub-threshold' => 'Kiwango cha juu cha kuonyesha kiungo kama <a href="#" class="stub">kiungo kinachoelekea mbegu</a> (baiti):',
'stub-threshold-disabled' => 'Imelemazwa',
'recentchangesdays' => 'Ionyeshwe siku ngapi kwenye orodha ya mabadiliko ya karibuni?',
'rclistfrom' => 'Onyesha mabadiliko mapya kuanzia $1',
'rcshowhideminor' => '$1 mabadiliko madogo',
'rcshowhidebots' => 'roboti $1',
-'rcshowhideliu' => '$1 watumiaji sasa',
+'rcshowhideliu' => 'watumiaji $1 waliojisajili',
'rcshowhideanons' => '$1 watumiaji bila majina',
'rcshowhidepatr' => '$1 masahihisho yanayofanywa doria',
'rcshowhidemine' => '$1 masahihisho yangu',
'watchnologin' => 'Hujaingia',
'watchnologintext' => 'Lazima uwe [[Special:UserLogin|umeshaingia]] ili uweze kuhariri orodha ya maangalizi yako.',
'addwatch' => 'Ongeza kwenye orodha ya maangalizi',
-'addedwatchtext' => "Ukurasa \"[[:\$1]]\" umewekwa kwenye [[Special:Watchlist|maangalizi]] yako.
-Mabadiliko katika ukurasa huo na ukurasa wake wa majadiliano utaonekana hapo,
-na ukurasa utaonyeshwa wenye '''koze''' kwenye [[Special:RecentChanges|orodha ya mabadiliko ya karibuni]]
-ili kukusaidia kutambua.
-
-Ukitaka kufuta ukurasa huo kutoka maangalizi yako baadaye, bonyeza \"Acha kufuatilia\" katika mwamba pembeni.",
+'addedwatchtext' => 'Ukurasa "[[:$1]]" umewekwa kwenye [[Special:Watchlist|maangalizi]] yako.
+Mabadiliko katika ukurasa huo na ukurasa wake wa majadiliano utaonekana hapo.',
'removewatch' => 'Ondoa kutoka orodha ya maangalizi',
'removedwatchtext' => 'Ukurasa "[[:$1]]" umeondoshwa kutoka katika [[Special:Watchlist|maangalizi yako]].',
'watch' => 'Fuatilia',
'watchmethod-list' => 'Kupitia kurasa za maangalizi ili kupata madabiliko ya karibuni',
'watchlistcontains' => 'Orodha ya maangalizi yako ina {{PLURAL:$1|pages|kurasa}}.',
'iteminvalidname' => "Shida na kitu '$1' , jina batili...",
-'wlnote' => "{{PLURAL:$1|is the last change|Mabadiliko '''$1''' ya}} mwisho katika {{PLURAL:$2|hour|masaa '''$2''' yaliyopita yanaonyeshwa}} chini, ilivyokuwa saa $4, tarehe $3.",
'wlshowlast' => 'Onyesha kutoka masaa $1 siku $2 $3',
'watchlist-options' => 'Hitiari za maangalizi',
'enotif_mailer' => 'Huduma ya taarifa ya barua pepe kutoka kwa {{SITENAME}}',
'enotif_reset' => 'Weka alama kwa kurasa zote zilizotembelewa',
'enotif_impersonal_salutation' => 'Kwa mtumiaji wa {{SITENAME}}',
+'enotif_subject_deleted' => '$2 {{GENDER:$2|alifuta}} ukurasa wa $1 katika {{SITENAME}}',
+'enotif_subject_created' => '$2 {{GENDER:$2|alianzisha}} ukurasa wa $1 katika {{SITENAME}}',
+'enotif_subject_moved' => '$2 {{GENDER:$2|alihamisha}} ukurasa wa $1 katika {{SITENAME}}',
+'enotif_subject_restored' => '$2 {{GENDER:$2|alirudisha}} ukurasa wa $1 katika {{SITENAME}}',
+'enotif_subject_changed' => '$2 {{GENDER:$2|alibadilisha}} ukurasa wa $1 katika {{SITENAME}}',
+'enotif_body_intro_deleted' => '$2 {{GENDER:$2|alifuta}} ukurasa wa $1 katika {{SITENAME}} tarehe $PAGEEDITDATE. Tazama $3.',
+'enotif_body_intro_created' => '$2 {{GENDER:$2|alianzisha}} ukurasa wa $1 katika {{SITENAME}} tarehe $PAGEEDITDATE. Tazama $3 kuona ukurasa ulivyo sasa hivi.',
+'enotif_body_intro_moved' => '$2 {{GENDER:$2|alihamisha}} ukurasa wa $1 katika {{SITENAME}} tarehe $PAGEEDITDATE. Tazama $3 kuona ukurasa ulivyo sasa hivi.',
+'enotif_body_intro_restored' => '$2 {{GENDER:$2|alirudisha}} ukurasa wa $1 katika {{SITENAME}} tarehe $PAGEEDITDATE. Tazama $3 kuona ukurasa ulivyo sasa hivi.',
+'enotif_body_intro_changed' => '$2 {{GENDER:$2|alibadilisha}} ukurasa wa $1 katika {{SITENAME}} tarehe $PAGEEDITDATE. Tazama $3 kuona ukurasa ulivyo sasa hivi.',
'enotif_lastvisited' => 'Tazama $1 kwa mabadiliko yote tangu ziara yako ya mwisho.',
'enotif_lastdiff' => 'Tazama badiliko hili hapo $1.',
'enotif_anon_editor' => 'mtumiaji bila jina $1',
'enotif_body' => 'Mpendwa $WATCHINGUSERNAME,
-
-$PAGEEDITOR $CHANGEDORCREATED ukurasa wa $PAGETITLE kwenye {{SITENAME}} saa $PAGEEDITDATE. Tazama $PAGETITLE_URL kuona ukurasa ulivyo sasa hivi.
-
-$NEWPAGE
+$PAGEINTRO $NEWPAGE
Muhtasari wa mhariri: $PAGESUMMARY $PAGEMINOREDIT
barua pepe: $PAGEEDITOR_EMAIL
wiki: $PAGEEDITOR_WIKI
-Hutapata taarifa za mabadiliko mengine yatakayotokea kwenye ukurasa huu hadi utakapotazama ukurasa.
+Hutapata taarifa za mabadiliko mengine yatakayotokea kwenye ukurasa huu hadi utakapotazama ukurasa wakati umeingia akaunti yako.
Au unaweza kuweka upya maombi ya kupewa taarifa kwa ajili ya kurasa zote zilizopo kwenye orodha yako ya maangalizi.
- Kutoka kwa {{SITENAME}}
+ Kutoka kwa mashine ya kutoa taarifa ya {{SITENAME}}
--
+Ukitaka kubadilisha mapendekezo yako kuhusu kutolewa taarifa, nenda
+{{canonicalurl:{{#special:Preferences}}}}
+
Ukitaka kubadilisha mapendekezo yako yanayohusika orodha ya maangalizi yako, nenda
{{canonicalurl:{{#special:EditWatchlist}}}}
'tooltip-pt-watchlist' => 'Orodha ya kurasa unazofuatilia kwa mabadiliko',
'tooltip-pt-mycontris' => 'Orodha ya michango yako',
'tooltip-pt-login' => 'Tunakushajiisha kuingia, lakini siyo lazima.',
-'tooltip-pt-anonlogin' => 'Tunakushajiisha kuingia, lakini siyo lazima',
'tooltip-pt-logout' => 'Toka',
'tooltip-ca-talk' => 'Mazungumzo kuhusu makala',
'tooltip-ca-edit' => 'Unaweza kuhariri ukurasa huu. Tafadhali tumia kitufe cha kuhakikisha kabla ya kuhifadhi.',
'version-other' => 'Zingine',
'version-version' => '(Toleo $1)',
'version-license' => 'Ruhusa',
+'version-ext-colheader-description' => 'Ufafanuzi',
'version-poweredby-credits' => "Wiki hii inaendeshwa na bidhaa pepe ya '''[https://www.mediawiki.org/ MediaWiki]''', hakimiliki © 2001-$1 $2.",
'version-poweredby-others' => 'wengine',
'version-license-info' => 'MediaWiki ni bidhaa pepe huru; unaweza kuisambaza pamoja na kuitumia na kuibadilisha kutokana na masharti ya leseni ya GNU General Public License inayotolewa na Free Software Foundation (Shirika la Bidhaa Pepe Huru); ama toleo 2 la hakimiliki, ama (ukitaka) toleo lolote linalofuata.
'version-software-version' => 'Toleo',
'version-entrypoints-header-url' => 'KISARA Kioneshi Sanifu Raslimali',
+# Special:Redirect
+'redirect-submit' => 'Nenda',
+
# Special:FileDuplicateSearch
'fileduplicatesearch' => 'Tafuta mafaili ya nakili',
'fileduplicatesearch-summary' => 'Kutafuta mafaili ya nakili kwa kuzingatia thamani za reli.',
$messages = array(
# User preference toggles
'tog-underline' => 'Podsztrychńyńcy linkůw:',
-'tog-justify' => 'Wyrůwnowej tekst we akapitach (justowańy)',
'tog-hideminor' => 'Schow drobne pomjyńańa we ńydowno pomjyńanych',
'tog-hidepatrolled' => 'Schow sprowdzůne sprowjyńa we ńydowno pomjyńanych',
'tog-newpageshidepatrolled' => 'Schow sprawdzůne zajty na wykoźe nowych zajtůw',
'tog-numberheadings' => 'Automatyczno numeracyjo titlůw',
'tog-showtoolbar' => 'Pokoż gurt werkcojgůw (JavaScript)',
'tog-editondblclick' => 'Edycyjo napoczynajům dwa klikńyńća (JavaScript)',
-'tog-editsection' => 'Kożdo tajla zajty sprowjano uosobno',
'tog-editsectiononrightclick' => 'Klikńyńće prawym kneflym myszy na titlu tajli<br />napoczyno jigo sprowjańy(JavaScript)',
-'tog-showtoc' => 'Pokoż spis treśći (na zajtach, kere majům wjyncyj kej trzi tajle)',
'tog-rememberpassword' => 'Pamjyntej můj ausdruk na tym kůmputrze (nojdalij bez $1 {{PLURAL:$1|dźyń|dńůw}})',
'tog-watchcreations' => 'Dowům pozůr na zajty, kere żech naszkryfloł',
'tog-watchdefault' => 'Dowům pozůr na zajty, kere żech sprowjoł',
'user-mail-no-body' => 'Bůła průba posłańo e-brifa uo blank abo krůtkim tekśće.',
# Change password dialog
-'changepassword' => 'Zmjana hasua',
+'changepassword' => 'Zmiana hasła',
'resetpass_announce' => 'Zalůgowołżeś śe ze tymczasowym kodym uotrzimanym bez e-brif. Coby zakůńczyć proces logůwańo muśisz nasztalować nowe hasło:',
'resetpass_header' => 'Zmjyń hasło lů swojygo kůnta',
'oldpassword' => 'Stare hasło',
'session_fail_preview' => "'''Pozůr! Serwer ńy może przetworzić tyj edycyji, beztuż co dane sesyji uostoły utracůne.
Poprůbuj jeszcze roz.
Eli to tyż ńy do podpory – [[Special:UserLogout|wyloguj śe]] a zaloguj jeszcze roz.'''",
-'session_fail_preview_html' => "'''Přeprašomy! Serwer ńy može přetwořyć tygo sprowjyńo skuli utraty danych ze sesyji.'''
+'session_fail_preview_html' => "'''Przepraszomy! Serwer ńy może przetworzić tygo sprowjyńo skuli utraty danych ze sesyji.'''
-''Jako iže na {{GRAMMAR:MS.lp|{{SITENAME}}}} wuůnÄ\8dono zostoua uopcyjo \"raw HTML\", podglůnd zostou schrůÅ\84ony coby zabezpjeÄ\8dyÄ\87 pÅ\99ed atakami JavaScript.''
+''Jako iże na {{GRAMMAR:MS.lp|{{SITENAME}}}} wÅ\82ůnczono zostoÅ\82a uopcyjo \"raw HTML\", podglůnd zostoÅ\82 schrůÅ\84ony coby zabezpjeczyÄ\87 przed atakami JavaScript.''
'''Jeli to je prawiduowo průba sprowjańo, sprůbuj ješče roz. Kejby to ńy pomoguo - wylůguj śe a zalůguj na nowo.'''",
-'token_suffix_mismatch' => "'''Twoje sprowjyńy zostouo uodćepńynte skuli tego, co twůj klijynt pomjyšou znaki uod interpůnkcyji w žetůńe sprowjyń. Twoje sprowjyńy zostouo uodćepńynte coby zapobjec zńyščyńu tekstu zajty. Take průblymy zdořajům śe w roźe kůřistańo s felernych anůnimowych śećowych usuůg proxy.'''",
+'token_suffix_mismatch' => "'''Twoje sprowjyńy zostoło uodćepane skuli tego, co twůj klijynt pomjyszoł znaki uod interpůnkcyji we żetůńe sprowjyń. Twoje sprowjyńy zostoło uodćepane coby zapobjec zńyszczyńu tekstu zajty. Take felery zdorzajům śe w roźe korzistańo ze felernych anůnimowych śećowych usłůg proxy.'''",
'editing' => 'Sprowjosz $1',
'creating' => 'Tworzyńy $1',
'editingsection' => 'Sprowjosz $1 (sekcyjo)',
'storedversion' => 'Naszkryflano wersyjo',
'nonunicodebrowser' => "'''Pozůr! Twoja přeglůndorka ńy umje poprowńy rozpoznować kodowańo UTF-8 (Unicode). Bestož wšyjske znoki, kerych Twoja přeglůndorka ńy umje rozpoznować, zamjeńůno na jejich kody heksadecymalne.'''",
'editingold' => "'''Dej pozůr: Sprowjoš inkšo wersyjo zajty kej bježůnco. Jeli jům naškryfloš, wšyjske půźńyjše pomjyńańa bydům wyćepane.'''",
-'yourdiff' => 'Růžńice',
+'yourdiff' => 'Růżńice',
'copyrightwarning' => "Pamjyntej uo tym, aże cołki wkłod do {{SITENAME}} udostympńůmy wedle zasad $2 (dokładńij we $1). Jak ńy chcesz, coby kożdy můg go půmjyńać a dalij rozpowszychńoć, ńy wćepuj uůnygo sam. Szkryflajůnc sam tukej pośwjadczosz tyż, co te pisańy je twoje własne, abo żeś go wźůn(a) ze materjołůw kere sům na ''public domain'', abo kůmpatybilne.<br />
'''PROSZA ŃY WĆEPYWAĆ SAM MATYRJOŁŮW KERE SŮM CHRŮŃONE AUTORSKIM PRAWYM BEZ DOZWOLEŃO WŁAŚĆIĆELA!'''",
'copyrightwarning2' => "Pamjyntej uo tym, aże cołki wkłod do {{GRAMMAR:MS.lp|{{SITENAME}}}} może być sprowjany, pomjyńany abo wyćepany bez inkszych użytkownikůw. Jak ńy chcysz, coby kożdy můg uůnygo zmjyńać a dalij rozpowszychńoć bez uograniczyń, ńy wćepuj go sam.<br />
'edit-gone-missing' => 'Ńy idźe zaktualizować zajty.
Zdowo śe, co zostoła wyćepano.',
'edit-conflict' => 'Kůnflikt sprowjyń.',
-'edit-no-change' => 'Twoje sprowjyńe uostouo zignorowane pů takymu, co ńic žeś we tekśće ńy zmjyńiu.',
+'edit-no-change' => 'Twoje sprowjyńe uostoło zignorowane pů takymu, aże ńic żeś we tekśće ńy zmjyńůł.',
'postedit-confirmation' => 'Spamjyntano twoje sprowjyńe.',
-'edit-already-exists' => 'Ńy idźe utwořić nowyj zajty.
-Tako zajta juž sam je.',
+'edit-already-exists' => 'Ńy idźe utworzić nowyj zajty.
+Tako zajta już sam je.',
'defaultmessagetext' => 'Tekst důmyślny',
# Parser/template warnings
-'expensive-parserfunction-warning' => 'Dej pozůr: ta zajta mo za dužo uodwouaÅ\84 do funkcyji parsera, kere mocno uobÄ\87ůnžajům systym.
+'expensive-parserfunction-warning' => 'Dej pozůr: ta zajta mo za dużo uodwouaÅ\84 do funkcyji parsera, kere mocno uobÄ\87ůnżajům systym.
-Powinno być myńi jak $2 {{PLURAL:$2|wywouańy|wywouańo|wywouań}}, a terozki {{PLURAL:$1|je $1 wywouańy|sům $1 wywouańo|je $1 wywouań}}.',
-'expensive-parserfunction-category' => 'Zajty kere majům za dužo uodwouaÅ\84 do funkcyji parsera, kere mocno uobÄ\87ůnžajům systym.',
+Powinno być myńi jak $2 {{PLURAL:$2|wywołańy|wywołańo|wywołań}}, a terozki {{PLURAL:$1|je $1 wywołańy|sům $1 wywołańo|je $1 wywołań}}.',
+'expensive-parserfunction-category' => 'Zajty kere majům za dużo uodwoÅ\82aÅ\84 do funkcyji parsera, kere mocno uobÄ\87ůnżajům systym.',
'post-expand-template-inclusion-warning' => 'Dej pozůr: Dokuplowane mustry sům moc wjelge.
Ńykere mustry ńy bydům dokuplowane.',
'post-expand-template-inclusion-category' => 'Zajty, na kerych dokuplowane mustry sům moc wjelge',
-'post-expand-template-argument-warning' => 'Dej pozůr: Ta zajta zawjyro přinojmyńi jedyn argument we šablůńe kery powoduje co je ůun za wjelgi. Te argumynty bydům pomińynte.',
+'post-expand-template-argument-warning' => 'Dej pozůr: Ta zajta zawjyro przinojmyńi jedyn argument we mustrze, kery powoduje co je ůun za wjelgi. Te argumynty bydům pomińynte.',
'post-expand-template-argument-category' => 'Zajty na kerych sům šablůny s pomińyntymi argumyntůma.',
'parser-template-loop-warning' => 'Wykryto muster zapyntlyńo: [[$1]]',
-'parser-template-recursion-depth-warning' => 'Przekroczůno limit głymbokośći rekurencyji szablona ($1)',
+'parser-template-recursion-depth-warning' => 'Przekroczůno limit głymbokośći rekurencyji mustru ($1)',
# "Undo" feature
'undo-success' => 'Sprowjyńy zostouo wycůfane. Proša pomjarkować ukozane půnižyj dyferencyje mjyndzy wersyjami, coby zweryfikować jejich poprawność, potym zaś naškryflać pomjyńańo coby zakońčyć uoperacyjo.',
-'undo-failure' => 'Sprowjyńo ńy idźe wycofać skuli kůnflikta ze wersyjůma postřednimi.',
-'undo-norev' => 'Sprowjyńo ńy idźe cofnůńć skuli tego, co ńy istńije abo zostouo wyćepane.',
+'undo-failure' => 'Sprowjyńo ńy idźe wycofać skuli kůnflikta ze wersyjůma postrzedńimi.',
+'undo-norev' => 'Sprowjyńo ńy idźe cofnůńć skuli tego, co ńy istńije abo uostoło wyćepane.',
'undo-summary' => 'Wycůfańy wersyji $1 naszkryflanej bez [[Special:Contributions/$2|$2]] ([[User talk:$2|godka]])',
# Account creation failure
-'cantcreateaccounttitle' => 'Ńy idźe utwořić kůnta',
+'cantcreateaccounttitle' => 'Ńy do śe utworzić kůnta',
'cantcreateaccount-text' => "Tworzyńy kůnta s tygo adresu IP ('''$1''') zostoło zawarte bez użytkowńika [[User:$3|$3]].
Skuli: ''$2''",
# History pages
'viewpagelogs' => 'Uoboč rejery uoperacyji lo tyj zajty',
'nohistory' => 'Ta zajta ńy mo swojij historyje sprowjyń.',
-'currentrev' => 'Aktualno wersyjo',
-'currentrev-asof' => 'Aktualno wersyjo na dźyń $1',
+'currentrev' => 'Aktuelno wersyjo',
+'currentrev-asof' => 'Aktuelno wersyjo na dźyń $1',
'revisionasof' => 'Wersyjo ze dńa $1',
'revision-info' => 'Wersyjo s dńa $1; $2',
'previousrevision' => '← starszo wersyjo',
'cur' => 'akt.',
'next' => 'nastympno',
'last' => 'poprz.',
-'page_first' => 'počůnek',
+'page_first' => 'poczůnek',
'page_last' => 'kůńec',
'histlegend' => 'Wybůr růżńic do porůwnańo: postow kropki we boksach a naćiś enter abo knefel na dole.<br />
Legynda: (akt.) - růżńice s wersyjům bjeżůncům, (poprz.) - růżńice s wersyjům poprzedzajůncům, d - drobne zmjany',
'history-feed-description' => 'Historyjo wersyje tyj zajty wiki',
'history-feed-item-nocomment' => '$1 uo $2',
'history-feed-empty' => 'Wybrano zajta ńy istńije.
-Můgua zostać wyćepano abo přećepano pod inkše mjano.
-MožeÅ¡ tyž [[Special:Search|Å¡nupać]] za tům zajtům.',
+Můgła uostać wyćepano abo przećepano pod inksze mjano.
+Możesz tyż [[Special:Search|sznupać]] za tům zajtům.',
# Revision deletion
'rev-deleted-comment' => '(kůmyntorz wyćepany)',
-'rev-deleted-user' => '(užytkowńik wyćepany)',
-'rev-deleted-event' => '(škryflańy wyćepane)',
+'rev-deleted-user' => '(użytkowńik wyćepany)',
+'rev-deleted-event' => '(szkryflańy wyćepane)',
'rev-deleted-text-permission' => 'Wersyjo tyj zajty uostoua wyćepano a ńy je dostympna publičńy. Ščygůuy idźe znejść we [{{fullurl:{{#Special:Log}}/suppress|page={{PAGENAMEE}}}} rejeře wyćepań].',
'rev-deleted-text-view' => 'Ta wersyjo zajty uostoua wyćepano a ńy je dostympna publičńy.
Atoli kej admińistrator {{GRAMMAR:MS.lp|{{SITENAME}}}} možeš jům uobejřeć.
'revdelete-no-file' => 'Ńy mo tygo plika.',
'revdelete-show-file-confirm' => 'Jeżeś echt pewny co chcesz uobejzdrzeć wyćepano wersyjo plika „<nowiki>$1</nowiki>” s $2 $3?',
'revdelete-show-file-submit' => 'Ja',
-'revdelete-selected' => "'''{{PLURAL:$2|Wybrano wersyja|Wybrane wersyje}} zajty [[:$1]]:'''",
-'logdelete-selected' => "'''{{PLURAL:$1|Wybrane zdařyńy s rejeru|Wybrane zdařyńa s rejeru}}:'''",
+'revdelete-selected' => "'''{{PLURAL:$2|Wybrano wersyjo|Wybrane wersyje}} zajty [[:$1]]:'''",
+'logdelete-selected' => "'''{{PLURAL:$1|Wybrane zdarzyńy ze rejeru|Wybrane zdarzyńa ze rejeru}}:'''",
'revdelete-text' => "'''Wyćepane wersyje bydům dali widoczne w historyji zajty, nale jejich treść ńy bydźe publiczńy dostympna.'''
Inkśi admińistratorzi {{GRAMMAR:D.lp|{{SITENAME}}}} dali bydům mjeć dostymp do schrůńůnych wersyji a bydům můgli je wćepać nazod, chyba aże uoperator serwisu nouożůł dodatkowe uograńiczyńo.",
'revdelete-legend' => 'Naštaluj uograńičyńo lo wersyji:',
'revdelete-hide-text' => 'Schrůń tekst wersyji',
'revdelete-hide-image' => 'Schrůń zawartość plika',
-'revdelete-hide-name' => 'Schrůń akcyjo a cyl',
+'revdelete-hide-name' => 'Schrůń akcyjo a cwek',
'revdelete-hide-comment' => 'Schrůń kůmyntoř sprowjyńo',
'revdelete-hide-user' => 'Schrůń mjano użytkowńika/adres IP',
'revdelete-hide-restricted' => 'Schrůń informacyje zarůwno przed admińistratorůma jak i przed inkszymi',
'revdelete-unsuppress' => 'Usůń uograńičyńo lo wćepanej nazod historyje pomjyńań',
'revdelete-log' => 'Czymu:',
'revdelete-submit' => 'Zaakceptuj do wybrany{{PLURAL:$1|j wersyji|ch wersyji}}',
-'revdelete-success' => 'Půmyślńy zmjyńůno widoczność wersyji.',
-'revdelete-failure' => 'Feler przi zmjyńůńu widoczności wersyji.
-$1',
-'logdelete-success' => 'Půmyślńy půmjyńůno widočność zdařyń',
-'logdelete-failure' => 'Feler przi zmjyńe widoczości rejera.
-$1',
+'revdelete-success' => "'''Půmyślńy zmjyńůno widoczność wersyji.'''",
+'revdelete-failure' => "'''Feler przi pomjyńańu widocznośći wersyji:'''
+$1",
+'logdelete-success' => "'''Půmyślńy půmjyńůno widoczność zdarzyń.'''",
+'logdelete-failure' => "'''Feler przi pomjańe widoczości rejera.'''
+$1",
'revdel-restore' => 'půmjyń widoczność',
'pagehist' => 'Historyjo sprowjyń zajty',
-'deletedhist' => 'Wyćepano historyjo sprowjyń',
+'deletedhist' => 'Wyćepano gyszichta sprowjyń',
'revdelete-hide-current' => 'Feler przi wyćepywańu wersyji $2, $1.',
'revdelete-show-no-access' => 'Feler przy ukozoniu wersyji $2, $1. Ńy mosz uprawńyń lo njygo.',
'revdelete-modify-no-access' => 'Feler przy zmjyńe widoczności wersyji $2, $1. Ńy mosz uprawńeń lo njygo.',
'compareselectedversions' => 'zrůwnej uobrane wersyje',
'showhideselectedversions' => 'Ukoż/ukryj uobrane wersyje',
'editundo' => 'uodćepej',
-'diff-multi' => '(Ńy pokozano {{PLURAL:$1|jydnyj wersyji postrzedńij|$1 wersyji postrzedńich}}, sprowjanej bez {{PLURAL:$2|jydnygo sprowjorza|$2 sprowjorzow}} .)',
'diff-multi-manyusers' => '(Ńy pokozano {{PLURAL:$1|jydnyj wersyji postrzedńij|$1 wersyji postrzedńich}}, sprowjanej bez {{PLURAL:$2|jydnygo sprowjorza|$2 sprowjorzow}} .)',
'difference-missing-revision' => '{{PLURAL:$2|Wersyjo|$2 wersyje|$2 wersyji}} #$1 zajty "{{PAGENAME}}" ńy {{PLURAL:$2|uostoła znaleźůno|uostoły znaleźůne|uostoło znaleźůnych}}. Zauobycz je to skiż starygo linky do wyćępanyj zajty. Powůd wyćepańa nojdźesz we [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} rejerze].',
'search-nonefound' => 'Ńy mo wynikůw, kere uodpadajům kryterjům zapytańo.',
'powersearch-legend' => 'Sznupańy zaawansowane',
'powersearch-ns' => 'Sznupej we przestrzyńach mjan:',
-'powersearch-redir' => 'Pokož pÅ\99ekerowańa',
-'powersearch-togglelabel' => 'Zaznocz:',
+'powersearch-redir' => 'Pokoż przekerowańa',
+'powersearch-togglelabel' => 'Uoznocz:',
'powersearch-toggleall' => 'Wszyjsko',
'powersearch-togglenone' => 'żodno',
-'search-external' => 'Šnupańy zewnyntřne',
+'search-external' => 'Zewnyntrzne sznupańy',
'searchdisabled' => 'Šnupańy we {{GRAMMAR:MS.lp|{{SITENAME}}}} zostouo zawarte. Zańim go zouůnčům, možeš sprůbować šnupańo bez Google. Ino zauwaž, co informacyje uo treśći {{GRAMMAR:MS.lp|{{SITENAME}}}} můgům być we Google ńyakuratne.',
'search-error' => 'Wystůmpjůł feler przi sznupańu: $1',
'prefs-rc' => 'Ńydowno pomjyńane',
'prefs-watchlist' => 'Pozůrlista',
'prefs-watchlist-days' => 'Ličba dńi widočnych na liśće artikli, na kere dowoš pozůr:',
-'prefs-watchlist-days-max' => 'Max $1 {{PLURAL:$1|dźień|dńi}}',
+'prefs-watchlist-days-max' => 'Max $1 {{PLURAL:$1|dźyń|dńi}}',
'prefs-watchlist-edits' => 'Ličba půmjyńań pokazywanych we rozšyřůnyj liśće artiklůw, na kere dowoš pozůr:',
'prefs-watchlist-edits-max' => 'Maksymalno liczba: 1000',
-'prefs-watchlist-token' => 'ID půzorlisty:',
+'prefs-watchlist-token' => 'ID pozůrlisty:',
'prefs-misc' => 'Roztůmajte',
'prefs-resetpass' => 'Zmjyń hasło',
'prefs-changeemail' => 'Pomjyno ausdruka e-brif',
'prefs-setemail' => 'Nastow e-brif',
-'prefs-email' => 'E-brif',
+'prefs-email' => 'Uopcyje e-brifa',
'prefs-rendering' => 'Wyglůnd',
'saveprefs' => 'Spamjyntej',
'restoreprefs' => 'Wćep wszyjskie důmyślne preferencyje',
'prefs-editing' => 'Sprowjańy',
-'rows' => 'Wjerše:',
-'columns' => 'Kůlumny:',
-'searchresultshead' => 'Šnupańy',
-'resultsperpage' => 'Ličba wyńikůw na zajće',
+'rows' => 'Wjyrsze:',
+'columns' => 'Kolůmny:',
+'searchresultshead' => 'Sznupańy',
'stub-threshold' => 'Maksymalny rozmjar artikla uoznačanygo kej <a href="#" class="stub">stub (kůnsek)</a>',
'stub-threshold-disabled' => 'Uodymkńynte',
'recentchangesdays' => 'Ličba dńi do pokazańo we půmjyńanych na uostatku:',
'recentchangescount' => 'Liczba pozycyji na liśće půmjyńanych na uostatku, we historyje zajtůw a zajtach rejerůw:',
'prefs-help-recentchangescount' => 'Ze listům ńydawnych pomjyńan, gyszichta zajt a rejer.',
'savedprefs' => 'Twoje štalowańo we preferyncyjach zostouy naškryflane.',
-'timezonelegend' => 'Strefa czasowo',
+'timezonelegend' => 'Czasowo sztrefa',
'localtime' => 'Lokalny czas:',
'timezoneuseserverdefault' => 'Użyj domyślnygo czasu serwera ($1)',
'timezoneuseoffset' => 'Inkszo (uokryśl różnica czasu)',
'servertime' => 'Czas serwera:',
-'guesstimezone' => 'Pobjer z přeglůndarki',
+'guesstimezone' => 'Pobjer ze przeglůndarki',
'timezoneregion-africa' => 'Afrika',
'timezoneregion-america' => 'Ameryka',
'timezoneregion-antarctica' => 'Antarktyda',
'timezoneregion-arctic' => 'Arktyka',
'timezoneregion-asia' => 'Azyjo',
'timezoneregion-atlantic' => 'Uoceon Atlantycki',
-'timezoneregion-australia' => 'Australyjo',
+'timezoneregion-australia' => 'Australijo',
'timezoneregion-europe' => 'Ojropa',
'timezoneregion-indian' => 'Ocean Indyjski',
'timezoneregion-pacific' => 'Uocean Spokojny',
-'allowemail' => 'Inkśi užytkowńicy můgům přesyuać mje e-brify',
+'allowemail' => 'Inksze użytkowńiki můgům posyłać mje e-brify',
'prefs-searchoptions' => 'Sznupańe',
'prefs-namespaces' => 'Raumy mjan',
'defaultns' => 'Důmyślńy sznupej we nastympujůncych przystrzyńach mjan:',
'prefs-registration' => 'Czas twůrzyńa kůnta:',
'yourrealname' => 'Prawdźiwe mjano',
'yourlanguage' => 'Godka interfejsu',
-'yournick' => 'Twoja šrajba:',
-'badsig' => 'Felerno šrajba, sprowdź značńiki HTML.',
-'badsiglength' => 'Twůj szrajbůng je za dugi. Maksymalno jego dugość to $1 {{PLURAL:$1|buchsztaby|buchsztabůw}}',
+'yournick' => 'Twoja szrajbka:',
+'badsig' => 'Felerno szrajbka, sprawdź znaczńiki HTML.',
+'badsiglength' => 'Twojo szrajbka je za dugo. Ji maksymalno dugość to $1 {{PLURAL:$1|buchsztaby|buchsztabůw}}',
'yourgender' => 'Płeć:',
'gender-unknown' => 'ńyznano',
'gender-male' => 'chop',
'email' => 'E-brif',
'prefs-help-realname' => '* Mjano a nazwisko (uopcjůnalńy): jak żeś zdecydowoł aże je podosz, bydům użyte, coby Twoja robota mjoła atrybucyjo.',
'prefs-help-email' => 'Ukozańy e-brifowygo adresu ńy je powinne, nale nutne, coby resetować ausdruk, eli zapomńisz.',
-'prefs-help-email-others' => 'Mogesz tyż uůmożnić inkszym używoczům posłać ci e-brif bez twojo zajta używocza abo zajta dyskusyje. Twůj e-brifowy adres śe ńy ukoże.',
+'prefs-help-email-others' => 'Mogesz tyż doć mogebność inkszym używoczům posłać ci e-brif bez twojo zajta używocza abo zajta dyskusyje. Twůj e-brifowy adres śe ńy ukoże.',
'prefs-help-email-required' => 'Wymogany je adres e-brifa.',
'prefs-diffs' => 'Diffy',
# User rights
-'userrights' => 'Zařůndzańy prowami užytkowńikůw',
-'userrights-lookup-user' => 'Zařůndzej prowami užytkownika',
-'userrights-user-editname' => 'Wklepej sam nazwa užytkowńika:',
-'editusergroup' => 'Sprowjej grupy užytkowńika',
+'userrights' => 'Zarzůndzańy prowami użytkowńikůw',
+'userrights-lookup-user' => 'Zarzůndzej prowami użytkownika',
+'userrights-user-editname' => 'Wkludź sam mjano użytkowńika:',
+'editusergroup' => 'Sprowjej grupy użytkowńika',
'editinguser' => "Zmjana uprawńyń užytkowńika '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
-'userrights-editusergroup' => 'Sprowjej grupy užytkowńika',
-'saveusergroups' => 'Zapisz',
-'userrights-groupsmember' => 'Noležy do:',
-'userrights-groups-help' => 'MožeÅ¡ půmjyÅ\84aÄ\87 pÅ\99inoležnoÅ\9bÄ\87 tygo užytkowÅ\84ika do podanych grup.
-*Zaznačůne pole uoznačo přinoležność užytkowńika do danej grupy.
-*Ńy zaznačůne pole uoznačo, aže užytkowńik ńy noležy do danej grupy.
-* Gwjozdka * infomuje, co ńy možeš wyćepać s grupy po dodańu do ńij abo dodać po wyćepańu s grupy.',
+'userrights-editusergroup' => 'Sprowjej grupy użytkowńika',
+'saveusergroups' => 'Spamjyntej',
+'userrights-groupsmember' => 'Noleżi do:',
+'userrights-groups-help' => 'Możesz zmjyÅ\84iÄ\87 przinależnoÅ\9bÄ\87 tego użytkowÅ\84ika do půdanych grup:
+* Uoznaczůne pole uoznoczo przinależność użytkowńika do danyj grupy.
+* Ńyuoznaczůne pole uoznoczo, aże użytkowńik ńy noleżi do danyj grupy.
+* Gwjozdka * pado, aże ńy możesz wyćepać użytkownika ze grupy po wkludzyńo uůnygo do ńij abo wkludzić po wyćepańu.',
'userrights-reason' => 'Czymu:',
-'userrights-no-interwiki' => 'Ńy moš dostympu do sprowjańo uprawńyń.',
+'userrights-no-interwiki' => 'Ńy mosz dostympu do sprowjańo uprawńyń.',
'userrights-nodatabase' => 'Baza danych $1 ńy istńije abo ńy je lokalno.',
-'userrights-nologin' => 'Muśiš [[Special:UserLogin|zalůgować śe]] na kůnto admińistratora, coby nadować uprawńyńo užytkowńikům.',
+'userrights-nologin' => 'Muśisz [[Special:UserLogin|zalůgować śe]] na kůnto admińistratora, coby nadować uprawńyńo użytkowńikům.',
'userrights-notallowed' => 'Ńy mosz dostympu do nadawańo uprawńyń używaczom.',
'userrights-changeable-col' => 'Grupy, kere možeš wybrać',
'userrights-unchangeable-col' => 'Grupy, kerych ńy možeš wybrać',
'right-createaccount' => 'Utwořůne nowe kůnta užytkowńikůw',
'right-minoredit' => 'Uoznocz půmjyńańo kej drobne',
'right-move' => 'Przećepane zajty',
-'right-move-subpages' => 'Przećep zajty wroz s jejich podzajtůma',
-'right-move-rootuserpages' => 'Překludzańy zajtůw uod užytkowńikůw',
+'right-move-subpages' => 'Przećep zajty wroz ze jejich podzajtůma',
+'right-move-rootuserpages' => 'Przekludzańy zajtůw uod użytkowńikůw',
'right-movefile' => 'Przećepańe plikůw',
'right-suppressredirect' => 'Ńy twůrz przekerowańo ze starygo mjana jak przećepujesz zajta',
'right-upload' => 'Wćepane pliki',
'right-bigdelete' => 'Wyćep zajty s dugům historyjům půmjyńań',
'right-deleterevision' => 'Wyćepywańy a wćepywańy nazod wskazanych sprowjyń zajtůw',
'right-deletedhistory' => 'Pokazuj historyjo usuńyntych sprowjyń, bez tekstu uopisu',
-'right-browsearchive' => 'Šnupej za wyćepanymi zajtůma',
+'right-browsearchive' => 'Sznupej za wyćepanymi zajtůma',
'right-undelete' => 'Wćepej nazod wyćepano zajta',
'right-suppressrevision' => 'Přyglůndańy i uodtwařańy sprowjyń schrůńůnych před admińistratorami',
'right-suppressionlog' => 'Pokož prywatne lůgi',
'watchmethod-list' => 'šnupańy w zajtach, na kere dowoš pozůr pośrůd půmjyńanych na uostatku',
'watchlistcontains' => 'Lista zajtůw, na kere dowoš pozůr mo {{PLURAL:$1|jedna pozycja|$1 pozycje|$1 pozycyji}}.',
'iteminvalidname' => 'Problym ze pozycjům „$1”, felerne mjano...',
-'wlnote' => "Půńižy pokazano {{PLURAL:$1|ostatńy sprawjyńy dokůnane|ostatńy '''$1''' sprawjyńe dokůnane|ostatńych '''$1''' sprawjyń dokůnanych}} bez {{PLURAL:$2|uostatńo godźina|uostatńich '''$2''' godźin}}.",
'wlshowlast' => 'Pokož uostatńy $1 godźin $2 dńi ($3)',
'watchlist-options' => 'Uopcyje artikli na kere dowosz pozůr',
'tooltip-pt-watchlist' => 'Lista artiklůw, na kere dowosz pozůr',
'tooltip-pt-mycontris' => 'Lista uody mje sprowjonych',
'tooltip-pt-login' => 'Chćeli by my, cobyś śe nalogowoł, nale to ńy je powinne',
-'tooltip-pt-anonlogin' => 'Zachyncůmy do zalůgowańo śe, nale to ńy je uobowjůnzek',
'tooltip-pt-logout' => 'Uodloguj śe ze wiki',
'tooltip-ca-talk' => 'Dyskusyjo uo tym artiklu',
'tooltip-ca-edit' => 'Mogesz sprowjać ta zajta. Podwjela spamjyntosz půmjyńańo, klikńij we knefel "Uobźyrej".',
$messages = array(
# User preference toggles
'tog-underline' => 'இணைப்புகளுக்கு அடிக்கோடிடு',
-'tog-justify' => 'பத்திகளை ஓரச் சீர்மைப் படுத்து',
'tog-hideminor' => 'அண்மைய மாற்றங்களில் சிறிய தொகுப்புகளை மறை',
'tog-hidepatrolled' => 'அண்மைய மாற்றங்களில் பலமுறை பார்வையிட்ட தொகுப்புகளை மறைக்கவும்',
'tog-newpageshidepatrolled' => 'பலமுறை பார்வையிட்ட பக்கங்களைப் புதியபக்கங்களின் பட்டியலில் காட்டவேண்டாம்.',
'tog-numberheadings' => 'தலைப்புகளுக்கு தானியங்கி இலக்கமிடு',
'tog-showtoolbar' => 'கருவிப்பட்டையைக் காட்டு',
'tog-editondblclick' => 'இரட்டைச் சொடுக்கில் பக்கங்களைத் தொகு',
-'tog-editsection' => '(தொகு) இணைப்புகளின் வழியாக பிரிவுத் தொகுத்தலை செயலாக்கவும்',
'tog-editsectiononrightclick' => 'பிரிவுத் தலைப்பின் மீது வலச் சொடுக்குவதன் மூலம் பகுதித் தொகுப்பை செயலாக்கவும்',
-'tog-showtoc' => 'பொருளடக்க பட்டியலைக் காண்பி (மூன்றுக்கு மேற்பட்ட தலைப்புகளையுடைய கட்டுரைகளுக்கு)',
'tog-rememberpassword' => 'எனது புகுபதிகை பற்றிய விவரங்களை இவ்வுலாவியில் (மிக அதிகமாக $1 {{PLURAL:$1|நாள்|நாட்கள்}}) வரை நினைவில் வைத்திருக்கவும்.',
'tog-watchcreations' => 'நான் உருவாக்கும் பக்கங்கள் மற்றும் பதிவேற்றும் கோப்புகளை எனது கவனிப்புப் பட்டியலில் சேர்க்கவும்.',
'tog-watchdefault' => 'நான் தொகுக்கும் பக்கங்கள் மற்றும் கோப்புகளை என் கவனிப்புப் பட்டியலில் சேர்',
'youhavenewmessages' => 'உங்களுக்குப் $1 உள்ளன ($2).',
'youhavenewmessagesfromusers' => 'உங்களுக்கு $1 {{PLURAL:$3|வேறொரு பயனரிடம்|$3 பயனர்களிடம்}} இருந்து உள்ளது ($2).',
'youhavenewmessagesmanyusers' => 'உங்களுக்கு பல பயனர்களிடமிருந்து $1 பதிய செய்திகள் உள்ளன ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|ஒரு புதிய செய்தி|புதிய செய்திகள்}}',
+'newmessageslinkplural' => '{{PLURAL:$1|ஒரு புதிய செய்தி|999=புதிய செய்திகள்}}',
'newmessagesdifflinkplural' => 'கடைசி {{PLURAL:$1|மாற்றம்|மாற்றங்கள்}}',
'youhavenewmessagesmulti' => '$1 இல் உங்களுக்கு புதிய செய்திகள் காத்திருக்கின்றன',
'editsection' => 'தொகு',
'passwordtooshort' => 'கடவுச்சொற்களில் குறைந்தது {{PLURAL:$1|1 எழுத்து முதல் |$1 எழுத்துக்களாவது}} இருக்க வேண்டும்.',
'password-name-match' => 'உங்கள் பயனர் பெயரிலிருந்து உங்கள் கடவுச்சொல் முற்றிலும் மாறுபட்டிருக்க வேண்டும்.',
'password-login-forbidden' => 'இந்த பயனர்பெயர் மற்றும் கடவுச்சொல்லை உபயோகிப்பது தடைசெய்யப்பட்டுள்ளது.',
-'mailmypassword' => 'பà¯\81திய à®\95à®\9fவà¯\81à®\9aà¯\8d à®\9aà¯\8aலà¯\8dலà¯\8aனà¯\8dà®±à¯\88 மினà¯\8dனà®\9eà¯\8dà®\9aலà¯\8d à®\9aà¯\86யà¯\8dயவà¯\81à®®à¯\8d',
+'mailmypassword' => 'à®\95à®\9fவà¯\81à®\9aà¯\8dà®\9aà¯\8aலà¯\8dலà¯\88 à®®à¯\80à®\9fà¯\8dà®\9fà®®à¯\88',
'passwordremindertitle' => '{{SITENAME}} தளத்திலிருந்தான கடவுச்சொல் நினைவூட்டல்',
'passwordremindertext' => 'யாரோ ஒருவர் (நீங்களாக இருக்கலாம், IP முகவரி $1 இலிருந்து)
{{SITENAME}} ($4) தளத்திற்கு புதிய கடவுச்சொல் ஒன்று அனுப்பும்படி கோரியுள்ளார். பயனர் "$2" க்கான தற்காலிக கடவுச்சொல் உருவாக்கப்பட்டுள்ளது. "$3" இதுவே அந்த கடவுச்சொல்லாகும். இந்த நடவடிக்கையே தாங்கள் எண்ணியதாக இருந்தால், தாங்கள் இப்பொழுது புகுபதிகை செய்து கடவுச்சொல்லை மாற்றிக்கொள்ளவும்.
{{PLURAL:$3|This temporary password|These temporary passwords}} காலாவதி ஆக உள்ள நாட்கள் {{PLURAL:$5|one day|$5 days}}.
நீங்கள் புதிய கடவுச்சொல்லை இப்போதே தேர்வு செய்து வேண்டும், அல்லது வேறு யாராவது இந்த கோரிக்கையை அனுப்பியிருந்தாலோ
அல்லது உங்கள் மூல கடவுச்சொல் நினைவில் இருந்தாலோ இதை மாற்ற வேண்டிய அவசியம் இல்லை,நீங்கள் இந்த தகவலை புறக்கணித்துவிட்டுஉங்கள் பழைய கடவுச்சொல்லையே பயன்படுத்திக்கொள்ளலாம்.',
-'passwordreset-emailtext-user' => 'பயனரà¯\8d $1 {{SITENAME}} லிரà¯\81நà¯\8dதà¯\81 நினà¯\88வà¯\81பà®\9fà¯\81தà¯\8dதி à®\92னà¯\8dà®±à¯\88 à®\95à¯\80à®´à¯\8dவரà¯\81à®®à¯\8d à®\89à®\99à¯\8dà®\95ளà¯\8d à®\95ணà®\95à¯\8dà®\95à¯\81 விவரà®\99à¯\8dà®\95ளை {{SITENAME}}
+'passwordreset-emailtext-user' => 'பயனரà¯\8d $1 {{SITENAME}} லிரà¯\81நà¯\8dதà¯\81 à®\95à®\9fவà¯\81à®\9aà¯\8dà®\9aà¯\8aலà¯\8d à®®à¯\80à®\9fà¯\8dà®\9fà®®à¯\88யினை {{SITENAME}}
($4) க்கு கோரியுள்ளார்.பின்வரும் பயனர் {{PLURAL:$3|account is|accounts are}}
இந்த மின்னஞ்சல் முகவரியுடன் இணைக்கப்பட்டுள்ளது.
$2
'revdelete-hide-text' => 'திருத்த உரையை மறை',
'revdelete-hide-image' => 'கோப்பின் உள்ளடக்கங்களை மறை',
'revdelete-hide-name' => 'செயற்பாட்டையும் இலக்கையும் மறை',
-'revdelete-hide-comment' => 'தà¯\8aà®\95à¯\81பà¯\8dபà¯\81à®\9aà¯\8d à®\9aà¯\81à®°à¯\81à®\95à¯\8dà®\95தà¯\8dதà¯\88 மறà¯\88',
-'revdelete-hide-user' => 'தà¯\8aà®\95à¯\81பà¯\8dபவரினà¯\8d à®\90.பி./பயனரà¯\8dபà¯\86யரà¯\88 மறà¯\88',
+'revdelete-hide-comment' => 'தà¯\8aà®\95à¯\81பà¯\8dபà¯\81à®\9aà¯\8d à®\9aà¯\81à®°à¯\81à®\95à¯\8dà®\95à®®à¯\8d',
+'revdelete-hide-user' => 'தà¯\8aà®\95à¯\81பà¯\8dபவரினà¯\8d à®\90.பி./பயனரà¯\8dபà¯\86யரà¯\8d',
'revdelete-hide-restricted' => 'குறிப்புக்களை அதிகாரிகள் உட்பட எல்லோரிடமிருந்தும் மறைத்துவிடு (காட்டத்தேவையில்லை).',
'revdelete-radio-same' => '(தயவுசெய்து மாற்ற வேண்டாம்)',
-'revdelete-radio-set' => 'à®\95ாணà®\95à¯\8dà®\95à¯\82à®\9fியது',
-'revdelete-radio-unset' => 'மறà¯\88à®\95à¯\8dà®\95பà¯\8dபà®\9fà¯\8dà®\9fது',
+'revdelete-radio-set' => 'மறà¯\88à®\95à¯\8dà®\95பà¯\8dபà®\9fà¯\8dà®\9fது',
+'revdelete-radio-unset' => 'à®\95ாணà®\95à¯\8dà®\95à¯\82à®\9fியது',
'revdelete-suppress' => 'நிர்வாகிகள் உட்பட இனவரிடமிருந்தாக தரவுகளை அடக்கு',
'revdelete-unsuppress' => 'மீட்கப்பட்ட திருத்தங்கள் மீதான கட்டுப்பாடுகளை நீக்கு',
'revdelete-log' => 'காரணம்:',
'showhideselectedversions' => 'தெரிவு செய்யப்பட்ட மாற்றங்களை காட்டு/மறை',
'editundo' => 'மீளமை',
'diff-empty' => '(வேறுபாடு ஏதுமில்லை)',
-'diff-multi' => '({{PLURAL:$1|ஒரு இடைப்பட்ட திருத்தம்|$1 இடைப்பட்ட திருத்தங்கள்}} {{PLURAL:$2|பயனர்|$2 பயனர்கள்}} செய்தவைகளை காட்டப்படவில்லை.)',
'diff-multi-manyusers' => '({{PLURAL:$2|பயனரால்|$2 பயனர்களால்}} செய்யப்பட்ட {{PLURAL:$1|ஒரு இடைப்பட்ட திருத்தம்|$1 இடைப்பட்ட திருத்தங்கள்}} காட்டப்படவில்லை.)',
# Search results
'rows' => 'நிரைகள் (கிடை வரிசைகள்):',
'columns' => 'நிரல்கள்',
'searchresultshead' => 'தேடுக',
-'resultsperpage' => 'ஒரு பக்கத்துக்குக் காட்டப்படவேண்டிய அடிகள்',
'stub-threshold' => '<a href="#" class="stub">stub link</a> சீர்படுத்தலுக்கான எல்லை (பைட்டுகள்):',
'stub-threshold-disabled' => 'செயலிழக்கம் செய்யப்பட்டுள்ளது',
'recentchangesdays' => 'அண்மைய மாற்றங்களில் காட்ட வேண்டிய நாட்களின் எண்ணிக்கை:',
'gender-unknown' => 'நான் குறிப்பிட விரும்பவில்லை',
'gender-male' => 'ஆண்',
'gender-female' => 'பெண்',
-'prefs-help-gender' => 'விருப்பத் தேர்வுதான்: ஒருவரைக் குறிப்பிடும்பொழுது, அவருடைய பால் சரியானதாக இருக்க மென்கலம் பயன்படுத்தும் தகவல். இத்தகவல் பொதுவில் கிடைக்கும்படி இனி இருக்கும்.',
+'prefs-help-gender' => 'விருப்பத்தேர்வை அமைப்பது இங்கள் விருப்பம்.
+ஒருவரைக் குறிப்பிடும்பொழுது, அவருடைய பால் சரியானதாக இருக்க மென்கலம் பயன்படுத்தும் தகவல்.
+இத்தகவல் பொதுவில் கிடைக்கும்படி இனி இருக்கும்.',
'email' => 'மின்னஞ்சல்',
'prefs-help-realname' => 'உண்மையான பெயர் கட்டாயமற்றது. நீங்கள் இதை கொடுத்தால் உங்கள் ஆக்கங்களுக்கான உரிமையளிப்புகளின் போது இது பயன்படும்.',
'prefs-help-email' => 'மின்னஞ்சல் விருப்பத் தேர்வு, ஆனால் உங்கள் கடவுச்சொல் உங்களுக்கு நினைவில்லையென்றால், புதிய கடவுச்சொல்லை மீட்டமைக்க தேவைப்படும்.',
'right-ipblock-exempt' => 'ஐ.பி (IP) தடுப்புகளையும், தானியங்கியான தடுப்புகளையும், வரம்புவரையான தடுப்புகளையும் மீறிச் செயல்படுக.',
'right-proxyunbannable' => 'தானாக தடுப்புகப்பட்ட Proxies ஐ மீறு.',
'right-unblockself' => 'தங்களே தடுப்பு நீக்கு',
-'right-protect' => 'பாதுகாப்பு மட்டங்களை மாற்று மற்றும் பாதுகாக்கப்பட்ட பக்கங்களை திருத்து',
+'right-protect' => 'பாதà¯\81à®\95ாபà¯\8dபà¯\81 à®®à®\9fà¯\8dà®\9fà®\99à¯\8dà®\95ளà¯\88 மாறà¯\8dà®±à¯\81 மறà¯\8dà®±à¯\81à®®à¯\8d தà¯\8aà®\9fà®°à¯\8d-பாதà¯\81à®\95ாà®\95à¯\8dà®\95பà¯\8dபà®\9fà¯\8dà®\9f பà®\95à¯\8dà®\95à®\99à¯\8dà®\95ளà¯\88 திரà¯\81தà¯\8dதà¯\81',
'right-editprotected' => '( வடிவமான பாதுகாப்பு இல்லாமல்) பாதுகாக்கப்பட்ட பக்கங்களை திருத்து',
'right-editinterface' => 'பயனர் இடைமுகப்பை தொகுக்கவும்',
'right-editusercssjs' => 'மற்ற பயனர்களின் CSS மற்றும் JavaScript கோப்புகளை திருத்து',
'listfiles_size' => 'அளவு',
'listfiles_description' => 'விளக்கம்',
'listfiles_count' => 'பதிப்புக்கள்',
+'listfiles-latestversion' => 'தற்போதய பதிப்பு',
'listfiles-latestversion-yes' => 'ஆம்',
'listfiles-latestversion-no' => 'இல்லை',
'watchmethod-list' => 'அண்மைய தொகுப்புகளுக்காக, கவனிக்கப்படுகின்ற பக்கங்கள் தேடிப் பார்க்கப்படுகிறன',
'watchlistcontains' => 'உங்கள் கவனிப்புப் பட்டியல் {{PLURAL:$1|ஒரு பக்கத்தைக்|$1 பக்கங்களைக்}} கொண்டுள்ளது.',
'iteminvalidname' => "விடயம் '$1' தொடர்பில் பிரச்சினை உள்ளது, செல்லுபடியாகாத பெயர்...",
-'wlnote' => "பின்வருவன கடைசி {{PLURAL:$2|மணித்தியாலத்தில்|'''$2''' மணித்தியாலங்களில்}} செய்யப்பட்ட {{PLURAL:$1|கடைசி ஒரு மாற்றமாகும்|கடைசி $1 மாற்றங்களாகும்}}.",
'wlshowlast' => 'கடைசி $1 மணித்தியாலங்கள் $2 நாட்களைக் காட்டு $3',
'watchlist-options' => 'கவனிப்பு பட்டியலின் விருப்பத் தேர்வுகள்',
'tooltip-pt-watchlist' => 'மாற்றங்களுக்காக நீங்கள் கவனிக்கும் பக்கங்களின் பட்டியல்',
'tooltip-pt-mycontris' => 'உங்கள் பங்களிப்புக்களின் பட்டியல்',
'tooltip-pt-login' => 'நீங்கள் புகுபதிகை செய்ய ஊக்குவிக்கப்படுகிறீர்கள், ஆனால் இது கட்டாயமன்று.',
-'tooltip-pt-anonlogin' => 'நீங்கள் புகுபதிகைச் செய்ய ஊக்குவிக்கப்படுகிறீர்கள் எனினும் இது கட்டாயமல்ல.',
'tooltip-pt-logout' => 'விடுபதிகை',
'tooltip-ca-talk' => 'உள்ளடக்கப் பக்கம் தொடர்பான உரையாடல் பக்கம்',
'tooltip-ca-edit' => 'நீங்கள் இப்பக்கத்தைத் தொகுக்க முடியும். "முன்தோற்றம் காட்டு" பொத்தானைப் பயன்படுத்திய பின்னர் உங்கள் மாற்றங்களை சேமிக்கவும்.',
'version-hook-name' => 'கொக்கியின் பெயர்',
'version-hook-subscribedby' => 'பயன்பாடு',
'version-version' => '(பதிப்பு $1)',
-'version-license' => 'à®\85னà¯\81மதி',
+'version-license' => 'à®®à¯\80à®\9fியாவிà®\95à¯\8dà®\95ி à®\89ரிமமà¯\8d',
'version-poweredby-credits' => "இந்த் விக்கி '''[https://www.mediawiki.org/ MediaWiki]''' இதன் மூலம் வழங்கப்படுகிறது, காப்புரிமை © 2001-$1 $2.",
'version-poweredby-others' => 'பிறர்',
'version-license-info' => 'மீடியாவிக்கியானது இலவச மென்பொருள்.இதை நீங்கள் மற்றவர்களுக்கு கொடுப்பது அல்லது திருத்தம் செய்வது இலவச மென்பொருள் அறக்கட்டளை வழங்கிய GNUவின் பொது உரிம விதிகளுக்குட்பட்டது;உரிமத்தின் இரண்டாவது பதிப்பு அல்லது அதற்கு மேற்பட்ட பதிப்பு (உங்கள் விருப்பத்திற்க்கேற்றவாறு).
# Durations
'duration-seconds' => '$1 {{PLURAL:$1|நொடி|நொடிகள்}}',
-'duration-minutes' => '{{PLURAL: $1|நிமிடம்|நிமிடங்கள்}}',
+'duration-minutes' => '{{PLURAL:$1|நிமிடம்|நிமிடங்கள்}}',
'duration-hours' => '$1 {{PLURAL:$1|மணி|மணிகள்}} முன்பு',
'duration-days' => '$1 {{PLURAL:$1|நாள்|நாட்கள்}}',
-'duration-weeks' => '{{PLURAL: $1|வாரம்|வாரங்கள்}}',
-'duration-years' => '{{PLURAL: $1|வருடம்|வருடங்கள்}}',
+'duration-weeks' => '{{PLURAL:$1|வாரம்|வாரங்கள்}}',
+'duration-years' => '{{PLURAL:$1|வருடம்|வருடங்கள்}}',
'duration-decades' => '$1 {{PLURAL:$1|பத்தாண்டு|பத்தாண்டுகள்}}',
'duration-centuries' => '$1 {{PLURAL:$1|நூற்றாண்டு|நூற்றாண்டுகள்}}',
'duration-millennia' => '$1 {{PLURAL:$1|ஆயிரம் ஆண்டு|ஆயிரம் ஆண்டுகள்}}',
$messages = array(
# User preference toggles
'tog-underline' => 'లంకె క్రీగీత:',
-'tog-justify' => 'పేరాలను ఇరు పక్కలా సమానంగా సర్దు',
'tog-hideminor' => 'ఇటీవలి మార్పులలో చిన్న మార్పులను దాచు',
'tog-hidepatrolled' => 'ఇటీవలి మార్పులలో నిఘా ఉన్న మార్పులను దాచు',
'tog-newpageshidepatrolled' => 'కొత్త పేజీల జాబితా నుంచి నిఘా ఉన్న పేజీలను దాచు',
'tog-numberheadings' => 'శీర్షికలకు అప్రమేయంగా వరుస సంఖ్యలు చేర్చు',
'tog-showtoolbar' => 'దిద్దుబాటు పనిముట్ల పట్టీని చూపించు',
'tog-editondblclick' => 'డబుల్ క్లిక్కు చేసినప్పుడు పేజీని మార్చు',
-'tog-editsection' => '[మార్చు] లింకు ద్వారా విభాగం మార్పు చేతనం',
'tog-editsectiononrightclick' => 'విభాగాల శీర్షికల మీద కుడినొక్కుతో విభాగపు దిద్దుబాటును చేతనంచేయి',
-'tog-showtoc' => 'విషయసూచిక చూపించు (3 కంటే ఎక్కువ శీర్షికలున్న పేజీలకు)',
'tog-rememberpassword' => 'ఈ విహారిణిలో నా ప్రవేశాన్ని గుర్తుంచుకో (గరిష్ఠంగా $1 {{PLURAL:$1|రోజు|రోజుల}}కి)',
'tog-watchcreations' => 'నేను సృష్టించే పేజీలను మరియు దస్త్రాలను నా వీక్షణ జాబితాకు చేర్చు',
'tog-watchdefault' => 'నేను మార్చే పేజీలను మరియు దస్త్రాలను నా వీక్షణ జాబితాకు చేర్చు',
'tog-showhiddencats' => 'దాచిన వర్గాలను చూపించు',
'tog-norollbackdiff' => 'రద్దు చేసాక తేడాలు చూపించవద్దు',
'tog-useeditwarning' => 'ఏదైనా పేజీని నేను వదిలివెళ్తున్నప్పుడు దానిలో భద్రపరచని మార్పులు ఉంటే నన్ను హెచ్చరించు',
+'tog-prefershttps' => 'లాగిన్ అయి ఉన్నప్పుడెల్లా భద్ర కనెక్షనునే వాడు',
'underline-always' => 'ఎల్లప్పుడూ',
'underline-never' => 'ఎప్పటికీ వద్దు',
'create-this-page' => 'ఈ పేజీని సృష్టించండి',
'delete' => 'తొలగించు',
'deletethispage' => 'ఈ పేజీని తొలగించండి',
+'undeletethispage' => 'ఈ పేజీ తొలగింపును ఆపు',
'undelete_short' => '{{PLURAL:$1|ఒక్క రచనను|$1 రచనలను}} పునఃస్థాపించు',
'viewdeleted_short' => '{{PLURAL:$1|తొలగించిన ఒక మార్పు|$1 తొలగించిన మార్పుల}}ను చూడండి',
'protect' => 'సంరక్షించు',
'site-atom-feed' => '$1 ఆటమ్ ఫీడు',
'page-rss-feed' => '"$1" ఆరెసెస్సు(RSS) ఫీడు',
'page-atom-feed' => '"$1" ఆటమ్ ఫీడు',
+'feed-atom' => 'యాటమ్',
'red-link-title' => '$1 (పుట లేదు)',
'sort-descending' => 'అవరోహణ క్రమంలో అమర్చు',
'sort-ascending' => 'ఆరోహణ క్రమంలో అమర్చు',
# General errors
'error' => 'లోపం',
'databaseerror' => 'డేటాబేసు లోపం',
+'databaseerror-text' => 'డేటాబేసు క్వెరీ లోపం దొర్లింది.
+సాఫ్టువేరులోని ఉన్న దోషానికి ఇది సూచిక కావచ్చు.',
+'databaseerror-textcl' => 'డేటాబేసు క్వెరీ లోపం దొర్లింది.',
+'databaseerror-query' => 'క్వెరీ: $1',
+'databaseerror-function' => 'ఫంక్షన్: $1',
+'databaseerror-error' => 'లోపం: $1',
'laggedslavemode' => 'హెచ్చరిక: పేజీలో ఇటీవల జరిగిన మార్పులు ఉండకపోవచ్చు.',
'readonly' => 'డేటాబేసు లాక్చెయ్యబడింది',
'enterlockreason' => 'డేటాబేసుకు వేయబోతున్న లాకుకు కారణం తెలుపండి, దానితోపాటే ఎంతసమయం తరువాత ఆ లాకు తీసేస్తారో కూడా తెలుపండి',
'cannotdelete' => '"$1" అనే పేజీ లేదా ఫైలుని తొలగించలేకపోయాం.
దాన్ని ఇప్పటికే ఎవరైనా తొలగించి ఉండవచ్చు.',
'cannotdelete-title' => '"$1" పుటను తొలగించలేరు',
+'delete-hook-aborted' => 'తొలగింపును హుక్ ఆపేసింది.
+వివరణ ఏమీ ఇవ్వలేదు.',
+'no-null-revision' => '"$1" పేజీకి కొత్త శూన్య కూర్పు (నల్ రివిజన్) ను సృష్టించలేకపోయాం',
'badtitle' => 'తప్పు శీర్షిక',
'badtitletext' => 'మీరు కోరిన పుట యొక్క పేరు చెల్లనిది, ఖాళీగా ఉంది, లేదా తప్పుగా ఇచ్చిన అంతర్వికీ లేదా అంతర-భాషా శీర్షిక అయివుండాలి.
శీర్షికలలో ఉపయోగించకూడని అక్షరాలు దానిలో ఉండివుండొచ్చు.',
-'perfcached' => 'కింది డేటా ముందే సేకరించి పెట్టుకున్నది. కాబట్టి తాజా డేటాతో పోలిస్తే తేడాలుండవచ్చు. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
-'perfcachedts' => 'కింది సమాచారం ముందే సేకరించి పెట్టుకున్నది. దీన్ని $1న చివరిసారిగా తాజాకరించారు. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
+'perfcached' => 'కింది డేటా ముందే సేకరించి పెట్టుకున్నది. కాబట్టి తాజా డేటాతో పోలిస్తే తేడాలుండవచ్చు. ఈ కాషెలో గరిష్టంగా {{PLURAL:$1|ఒక్క ఫలితం ఉంది|$1 ఫలితాలు ఉన్నాయి}}.',
+'perfcachedts' => 'కింది సమాచారం ముందే సేకరించి పెట్టుకున్నది. దీన్ని $1న చివరిసారిగా తాజాకరించారు. ఈ కాషెలో గరిష్టంగా {{PLURAL:$4|ఒక్క ఫలితం ఉంది|$4 ఫలితాలు ఉన్నాయి}}.',
'querypage-no-updates' => 'ప్రస్తుతం ఈ పుటకి తాజాకరణలని అచేతనం చేసారు.
ఇక్కడున్న భోగట్టా కూడా తాజాకరించబడదు.',
'viewsource' => 'మూలాన్ని చూపించు',
'viewsource-title' => '$1 యొక్క సోర్సు చూడండి',
'actionthrottled' => 'కార్యాన్ని ఆపేసారు',
'actionthrottledtext' => 'స్పామును తగ్గించటానికి తీసుకున్న నిర్ణయాల వల్ల, మీరు ఈ కార్యాన్ని అతి తక్కువ సమయంలో బోలెడన్ని సార్లు చేయకుండా అడ్డుకుంటున్నాము. కొన్ని నిమిషాలు ఆగి మరలా ప్రయత్నించండి.',
-'protectedpagetext' => 'à°\88 à°ªà±\87à°\9cà±\80ని మారà±\8dà°\9aà°\95à±\81à°\82à°¡à°¾ à°\89à°\82à°¡à±\87à°\82à°¦à±\81à°\95à±\81 à°¸à°\82à°°à°\95à±\8dà°·à°¿à°\82à°\9aారà±\81.',
+'protectedpagetext' => 'à°\88 à°ªà±\87à°\9cà±\80à°²à±\8b మారà±\8dà°ªà±\81à°²à±\81 à°µà°\97à±\88రాలà±\81 à°\9aà±\86à°¯à±\8dà°¯à°\95à±\81à°\82à°¡à°¾ à°\89à°\82à°¡à±\87à°\82à°¦à±\81à°\95à±\81 à°\97ానà±\81, à°¸à°\82à°°à°\95à±\8dà°·à°¿à°\82à°\9aబడిà°\82ది.',
'viewsourcetext' => 'మీరీ పేజీ సోర్సును చూడవచ్చు, కాపీ చేసుకోవచ్చు:',
'viewyourtext' => "ఈ పేజీకి '''మీ మార్పుల''' యొక్క మూలాన్ని చూడవచ్చు లేదా కాపీచేసుకోవచ్చు:",
-'protectedinterface' => 'సాఫà±\8dà°\9fà±\81à°µà±\87à°°à±\81 à°\87à°\82à°\9fà°°à±\81à°«à±\87à°¸à±\81à°\95à±\81 à°\9aà±\86à°\82దిన à°\9fà±\86à°\95à±\8dà°¸à±\8dà°\9fà±\81à°¨à±\81 à°\88 à°ªà±\87à°\9cà±\80 à°\85à°\82దిసà±\8dà°¤à±\81à°\82ది. à°¦à±\81à°¶à±\8dà°\9aà°°à±\8dయల నివారణ à°\95à±\8bసమà±\88 à°¦à±\80à°¨à±\8dని లాà°\95à±\81 à°\9aà±\87సాà°\82.',
-'editinginterface' => "'''హెచ్చరిక''': సాఫ్టువేరుకు ఇంటరుఫేసు టెక్స్టును అందించే పేజీని మీరు సరిదిద్దుతున్నారు.
+'protectedinterface' => 'à°\88 à°ªà±\87à°\9cà±\80, à°\88 విà°\95à±\80 à°¯à±\8aà°\95à±\8dà°\95 సాఫà±\8dà°\9fà±\81à°µà±\87à°°à±\81 à°\87à°\82à°\9fà°°à±\81à°«à±\87à°¸à±\81à°\95à±\81 à°\9aà±\86à°\82దిన à°\9fà±\86à°\95à±\8dà°¸à±\8dà°\9fà±\81à°¨à±\81 à°\85à°\82దిసà±\8dà°¤à±\81à°\82ది. à°¦à±\81à°¶à±\8dà°\9aà°°à±\8dయల నివారణ à°\95à±\8bసమà±\88 à°¦à±\80à°¨à±\8dని à°¸à°\82à°°à°\95à±\8dà°·à°¿à°\82à°\9aà°¾à°\82. విà°\95à±\80లనà±\8dనిà°\9fà°¿à°²à±\8bà°¨à±\81 à°\85à°¨à±\81వాదాలనà±\81 à°\9aà±\87à°°à±\8dà°\9aాలనà±\8dనా, మారà±\8dà°\9aాలనà±\8dనా à°®à±\80డియావిà°\95à±\80 à°¸à±\8dథానిà°\95à±\80à°\95à°°à°£ à°ªà±\8dà°°à°¾à°\9cà±\86à°\95à±\8dà°\9fà±\88à°¨ [//translatewiki.net/ translatewiki.net] à°¨à±\81 వాడà°\82à°¡à°¿.',
+'editinginterface' => '<strong>హెచ్చరిక:</strong> సాఫ్టువేరుకు ఇంటరుఫేసు టెక్స్టును అందించేందుకు పనికొచ్చే పేజీని మీరు సరిదిద్దుతున్నారు.
ఈ పేజీలో చేసే మార్పుల వల్ల ఇతర వాడుకరులకు ఇంటరుఫేసు కనబడే విధానంలో తేడావస్తుంది.
-à°\85à°¨à±\81వాదాల à°\95à±\8aà°°à°\95à±\88à°¤à±\87, [//translatewiki.net/wiki/Main_Page?setlang=te à°\9fà±\8dరానà±\8dà°¸à±\8dâ\80\8cà°²à±\87à°\9fà±\8d విà°\95à±\80.à°¨à±\86à°\9fà±\8d], à°®à±\80డియావిà°\95à±\80 à°¸à±\8dథానిà°\95à±\80à°\95à°°à°£ à°ªà±\8dà°°à°¾à°\9cà±\86à°\95à±\8dà°\9fà±\81, ని వాడà°\82à°¡à°¿.",
+విà°\95à±\80లనà±\8dనిà°\9fà°¿à°²à±\8bà°¨à±\81 à°\85à°¨à±\81వాదాలనà±\81 à°\9aà±\87à°°à±\8dà°\9aాలనà±\8dనా, మారà±\8dà°\9aాలనà±\8dనా à°®à±\80డియావిà°\95à±\80 à°¸à±\8dథానిà°\95à±\80à°\95à°°à°£ à°ªà±\8dà°°à°¾à°\9cà±\86à°\95à±\8dà°\9fà±\88à°¨ [//translatewiki.net/ translatewiki.net] à°¨à±\81 వాడà°\82à°¡à°¿.',
'cascadeprotected' => 'కింది {{PLURAL:$1|పేజీని|పేజీలను}} కాస్కేడింగు ఆప్షనుతో చేసి సంరక్షించారు. ప్రస్తుత పేజీ, ఈ పేజీల్లో ఇంక్లూడు అయి ఉంది కాబట్టి, దిద్దుబాటు చేసే వీలు లేకుండా ఇది కూడా రక్షణలో ఉంది.
$2',
'namespaceprotected' => "'''$1''' నేంస్పేసులో మార్పులు చేయటానికి మీకు అనుమతి లేదు.",
+'customcssprotected' => 'ఈ CSS పేజీని మార్చేందుకు మీకు అనుమతి లేదు. ఎందుకంటే వేరే వాడుకరి యొక్క వ్యక్తిగత సెట్టింగులు అందులో ఉన్నాయి.',
+'customjsprotected' => 'ఈ JavaScript పేజీని మార్చేందుకు మీకు అనుమతి లేదు. ఎందుకంటే వేరే వాడుకరి యొక్క వ్యక్తిగత సెట్టింగులు అందులో ఉన్నాయి.',
'mycustomcssprotected' => 'ఈ CSS పేజీని సవరించేందుకు మీకు అనుమతి లేదు.',
'mycustomjsprotected' => 'ఈ జావాస్క్రిప్టు పేజీని సవరించేందుకు మీకు అనుమతి లేదు.',
'myprivateinfoprotected' => 'మీ అంతరంగిక సమాచారాన్ని సవరించేందుకు మీకు అనుమతి లేదు.',
'ns-specialprotected' => 'ప్రత్యేక పేజీలపై దిద్దుబాట్లు చేయలేరు.',
'titleprotected' => "సభ్యులు [[User:$1|$1]] ఈ పేజీని సృష్టించనివ్వకుండా నిరోదిస్తున్నారు.
అందుకు ఇచ్చిన కారణం: ''$2''.",
+'filereadonlyerror' => 'ఫైలు ఖజానా "$2" రీడ్-ఓన్లీ స్థితిలో ఉండటం చేత "$1" ఫైలులో మార్పులు చెయ్యలేకపోయాం.
+
+దానికి తాళం వేసిన అధికారి ఇచ్చిన వివరణ ఇది: "$3".',
+'invalidtitle-knownnamespace' => 'పేరుబరి "$2", పాఠ్యము "$3" తో కూడిన ఈ శీర్షిక చెల్లనిది',
+'invalidtitle-unknownnamespace' => 'అపరిచితమైన పేరుబరి సంఖ్య "$1", పాఠ్యము "$2" తో కూడిన ఈ శీర్షిక చెల్లనిది',
'exception-nologin' => 'లోనికి ప్రవేశించిలేరు',
'exception-nologin-text' => 'ఈ పేజీని చూడడానికి లేదా ఈ చర్యను చెయ్యడానికి దయచేసి [[Special:Userlogin|ప్రవేశించండి]].',
+'exception-nologin-text-manual' => 'ఈ పేజీ చూసేందుకు లేదా ఈ పని చేసేందుకు $1.',
# Virus scanner
'virus-badscanner' => "తప్పుడు స్వరూపణం: తెలియని వైరస్ స్కానర్: ''$1''",
'virus-unknownscanner' => 'అజ్ఞాత యాంటీవైరస్:',
# Login and logout pages
-'logouttext' => "'''ఇప్పుడు మీరు నిష్క్రమించారు.'''
+'logouttext' => '<strong>ఇప్పుడు మీరు లాగౌటయ్యారు.</strong>
-మీరు {{SITENAME}}ని అజ్ఞాతంగా వాడుతూండొచ్చు, లేదా ఇదే వాడుకరిగా కానీ లేదా వేరే వాడుకరిగా కానీ <span class='plainlinks'>[$1 మళ్ళీ ప్రవేశించవచ్చు]</span>.
-అయితే, మీ విహారిణిలోని కోశాన్ని శుభ్రపరిచే వరకు కొన్ని పేజీలు మీరింకా ప్రవేశించి ఉన్నట్లుగానే చూపించవచ్చని గమనించండి.",
+అయితే, ఓ గమనిక.. మీ విహారిణిలోని కోశాన్ని ఖాళీ చేసేవరకూ కొన్ని పేజీలు మీరింకా లాగినై ఉన్నట్లుగానే చూపించవచ్చు.',
'welcomeuser' => 'స్వాగతం, $1!',
'welcomecreation-msg' => 'మీ ఖాతాని సృష్టించాం.
మీ [[Special:Preferences|{{SITENAME}} అభిరుచులను]] మార్చుకోవడం మరువకండి.
'createacct-yourpasswordagain-ph' => 'సంకేతపదాన్ని మళ్ళీ ఇవ్వండి',
'remembermypassword' => 'ఈ కంప్యూటరులో నా ప్రవేశాన్ని గుర్తుంచుకో (గరిష్ఠంగా $1 {{PLURAL:$1|రోజు|రోజుల}}కి)',
'userlogin-remembermypassword' => 'నన్ను ప్రవేశింపజేసి ఉంచు',
+'userlogin-signwithsecure' => 'సురక్షిత కనెక్షను వాడు',
'yourdomainname' => 'మీ డోమైను',
'password-change-forbidden' => 'ఈ వికీలో మీరు సంకేతపదాలను మార్చలేరు.',
'externaldberror' => 'డేటాబేసు అధీకరణలో పొరపాటు జరిగింది లేదా మీ బయటి ఖాతాని తాజాకరించడానికి మీకు అనుమతి లేదు.',
'userlogin-resetpassword-link' => 'మీ సంకేతపదాన్ని మర్చిపోయారా?',
'helplogin-url' => 'Help:ప్రవేశించడం',
'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|ప్రవేశించడానికి సహాయం]]',
+'userlogin-loggedin' => 'మీరు ఈసరికే {{GENDER:$1|$1}} గా లాగిన్ అయి ఉన్నారు.
+వేరే వాడుకరిగా లాగినయేందుకు కింది ఫారమును వాడండి.',
'userlogin-createanother' => 'మరొక ఖాతాను సృష్టించండి',
'createacct-join' => 'మీ సమాచారాన్ని క్రింద ఇవ్వండి.',
'createacct-another-join' => 'కొత్త ఖాతా యొక్క సమాచారాన్ని క్రింద ఇవ్వండి.',
'createacct-benefit-heading' => '{{SITENAME}}ను తయారుచేసేది మీలాంటి ప్రజలే.',
'createacct-benefit-body1' => '{{PLURAL:$1|మార్పు|మార్పులు}}',
'createacct-benefit-body2' => '{{PLURAL:$1|పేజీ|పేజీలు}}',
+'createacct-benefit-body3' => 'ఇటీవలి {{PLURAL:$1|సమర్పకుడు|సమర్పకులు}}',
'badretype' => 'మీరు ఇచ్చిన రెండు సంకేతపదాలు ఒకదానితో మరొకటి సరిపోలడం లేదు.',
'userexists' => 'ఇచ్చిన వాడుకరిపేరు ఇప్పటికే వాడుకలో ఉంది.
వేరే పేరును ఎంచుకోండి.',
'passwordsent' => '"$1" కొరకు నమోదైన ఈ-మెయిలు చిరునామాకి కొత్త సంకేతపదాన్ని పంపించాం.
అది అందిన తర్వాత ప్రవేశించి చూడండి.',
'blocked-mailpassword' => 'దిద్దుబాట్లు చెయ్యకుండా ఈ ఐపీఅడ్రసును నిరోధించాం. అంచేత, దుశ్చర్యల నివారణ కోసం గాను, మరచిపోయిన సంకేతపదాన్ని పొందే అంశాన్ని అనుమతించము.',
-'eauthentsent' => 'à°\87à°\9aà±\8dà°\9aà°¿à°¨ à°\88-à°®à±\86యిలà±\81 à°\85à°¡à±\8dà°°à°¸à±\81à°\95à±\81 à°§à±\83à°µà±\80à°\95à°°à°£ à°®à±\86యిలà±\81 à°µà±\86à°³à±\8dళిà°\82ది.
-మరినà±\8dని à°®à±\86యిళà±\8dà°³à±\81 à°ªà°\82à°ªà±\87 à°®à±\81à°\82à°¦à±\81, à°®à±\80à°°à±\81 à°\86 à°®à±\86యిలà±\8dà°²à±\8b à°¸à±\82à°\9aà°¿à°\82à°\9aà°¿à°¨à°\9fà±\8dà°²à±\81à°\97à°¾ à°\9aà±\87సి, à°\88 à°\9aà°¿à°°à±\81నామా à°®à±\80à°¦à±\87నని à°§à±\83à°µà±\80à°\95à°°à°¿à°\82à°\9aà°\82à°¡ి.',
+'eauthentsent' => 'à°\87à°\9aà±\8dà°\9aà°¿à°¨ à°\88-à°®à±\86యిలà±\81 à°\85à°¡à±\8dà°°à°¸à±\81à°\95à±\81 à°§à±\83à°µà±\80à°\95à°°à°£ à°®à±\86యిలà±\81 à°ªà°\82పిà°\82à°\9aà°¾à°\82.
+à°\87à°\95à°ªà±\88 à°®à±\87à°®à±\81 à°\86 à°\96ాతాà°\95à±\81 à°®à±\86యిలà±\81 à°ªà°\82పాలà°\82à°\9fà±\87, à°®à±\81à°\82à°¦à±\81à°\97à°¾ à°®à±\80à°°à±\81 à°\86 à°®à±\86యిలà±\8dà°²à±\8b à°¸à±\82à°\9aà°¿à°\82à°\9aà°¿à°¨à°\9fà±\8dà°²à±\81à°\97à°¾ à°\9aà±\87సి, à°\88 à°\9aà°¿à°°à±\81నామా à°®à±\80à°¦à±\87నని à°§à±\83à°µà±\80à°\95à°°à°¿à°\82à°\9aాలి.',
'throttled-mailpassword' => 'గడచిన {{PLURAL:$1|ఒక గంటలో|$1 గంటల్లో}} ఇప్పటికే దాటుమాట మార్చినట్లుగా ఒక మెయిల్ పంపించివున్నాం.
దుశ్చర్యలను నివారించేందుకు గాను, {{PLURAL:$1|ఒక గంటకి|$1 గంటలకి}} ఒక్కసారి మాత్రమే దాటుమాట మార్పు మెయిల్ పంపిస్తాము.',
'mailerror' => 'మెయిలు పంపించడంలో లోపం: $1',
'acct_creation_throttle_hit' => 'మీ ఐపీ చిరునామా వాడుతున్న ఈ వికీ సందర్శకులు గత ఒక్క రోజులో {{PLURAL:$1|1 ఖాతాని|$1 ఖాతాలను}} సృష్టించారు, ఈ కాల వ్యవధిలో అది గరిష్ఠ పరిమితి.
అందువల్ల, ఈ ఐపీని వాడుతున్న సందర్శకులు ప్రస్తుతానికి ఇంక ఖాతాలని సృష్టించలేరు.',
'emailauthenticated' => 'మీ ఈ-మెయిలు చిరునామా $2న $3కి ధృవీకరింపబడింది.',
-'emailnotauthenticated' => 'మీ ఈ-మెయిలు చిరునామాను ఇంకా ధృవీకరించలేదు. కాబట్టి కింద పేర్కొన్న అంశాలకు ఎటువంటి ఈ-మెయులునూ పంపించము.',
+'emailnotauthenticated' => 'మీ ఈ-మెయిలు చిరునామాను ఇంకా ధృవీకరించలేదు.
+కింద పేర్కొన్న అంశాలకు సంబంధించి ఎటువంటి ఈ-మెయిలునూ పంపించము.',
'noemailprefs' => 'కింది అంశాలు పని చెయ్యటానికి ఈ-మెయిలు చిరునామాను నమొదుచయ్యండి.',
'emailconfirmlink' => 'మీ ఈ-మెయిలు చిరునామాను ధృవీకరించండి',
'invalidemailaddress' => 'మీరు ఇచ్చిన ఈ-మెయిలు చిరునామా సరైన రీతిలో లేనందున అంగీకరించటంలేదు.
'cannotchangeemail' => 'ఈ వికీలో ఖాతా ఈ-మెయిలు చిరునామాను మార్చుకోలేరు.',
'emaildisabled' => 'ఈ సైటు ఈమెయిళ్ళను పంపించలేదు.',
'accountcreated' => 'ఖాతాని సృష్టించాం',
-'accountcreatedtext' => '$1 కి వాడుకరి ఖాతాని సృష్టించాం.',
+'accountcreatedtext' => '[[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|చర్చ]])కి వాడుకరి ఖాతాను సృష్టించాం.',
'createaccount-title' => '{{SITENAME}} కోసం ఖాతా సృష్టి',
'createaccount-text' => '{{SITENAME}} ($4) లో ఎవరో మీ ఈమెయిలు చిరునామాకి "$2" అనే పేరుగల ఖాతాని "$3" అనే సంకేతపదంతో సృష్టించారు.
మీరు లోనికి ప్రవేశించి మీ సంకేతపదాన్ని ఇప్పుడే మార్చుకోవాలి.
ఈ ఖాతాని పొరపాటున సృష్టిస్తే గనక, ఈ సందేశాన్ని పట్టించుకోకండి.',
'usernamehasherror' => 'వాడుకరిపేరులో హాష్ అక్షరాలు ఉండకూడదు',
-'login-throttled' => 'à°\97à°¤ à°\95à±\8aà°¦à±\8dదిసà±\87à°ªà°\9fà°¿ à°¨à±\81à°\82à°¡à°¿ à°®à±\80à°°à±\81 à°\9aాలా à°ªà±\8dà°°à°µà±\87à°¶ ప్రయత్నాలు చేసారు.
-మళ్ళీ ప్రయత్నించే ముందు కాసేపు వేచివుండండి.',
+'login-throttled' => 'à°\95à±\8aà°¦à±\8dదిసà±\87à°ªà°\9fà°¿à°\97à°¾ à°®à±\80à°°à±\81 à°\9aాలా లాà°\97à°¿à°¨à±\8d ప్రయత్నాలు చేసారు.
+మళ్ళీ ప్రయత్నించే ముందు $1 ఆగండి.',
'login-abort-generic' => 'మీ లాగిన్ ప్రయత్నం విఫలమైంది - ఆగిపోయింది',
'loginlanguagelabel' => 'భాష: $1',
'suspicious-userlogout' => 'సరిగా పనిచేయని విహారిణి లేదా కాషింగ్ ప్రాక్సీ వల్ల పంపబడడం చేత, నిష్క్రమించాలనే మీ అభ్యర్థనని నిరాకరించారు.',
+'createacct-another-realname-tip' => 'అసలు పేరు ఐచ్ఛికం.
+మీరు దాన్ని ఇస్తే, వాడుకరి పనుల శ్రేయస్సు ఆ పేరుకు ఆపాదించబడుతుంది.',
# Email sending
'php-mail-error-unknown' => 'PHP యొక్క mail() ఫంక్షన్లో ఏదో తెలియని లోపం దొర్లింది',
'user-mail-no-addy' => 'ఈ-మెయిలు చిరునామాని ఇవ్వకుండానే ఈ-మెయిలు పంపడానికి ప్రయత్నించారు.',
+'user-mail-no-body' => 'ఈమెయిలును ఖాళీగానో, మరీ తక్కువ విషయంతోనో పంపేందుకు ప్రయత్నించారు.',
# Change password dialog
'changepassword' => 'సంకేతపదాన్ని మార్చండి',
'retypenew' => 'సంకేతపదం, మళ్ళీ',
'resetpass_submit' => 'సంకేతపదాన్ని మార్చి లోనికి ప్రవేశించండి',
'changepassword-success' => 'మీ సంకేతపదం విజయవంతంగా మార్చబడింది.',
+'changepassword-throttled' => 'కొద్దిసేపటిగా మీరు చాలా లాగిన్ ప్రయత్నాలు చేసారు.
+మళ్ళీ ప్రయత్నించే ముందు $1 ఆగండి.',
'resetpass_forbidden' => 'సంకేతపదాలను మార్చటం కుదరదు',
'resetpass-no-info' => 'ఈ పేజీని నేరుగా చూడటానికి మీరు లోనికి ప్రవేశించివుండాలి.',
'resetpass-submit-loggedin' => 'సంకేతపదాన్ని మార్చు',
'resetpass-wrong-oldpass' => 'తప్పుడు తాత్కాలిక లేదా ప్రస్తుత సంకేతపదం.
మీరు మీ సంకేతపదాన్ని ఇప్పటికే విజయవంతంగా మార్చుకొనివుండవచ్చు లేదా కొత్త తాత్కాలిక సంకేతపదం కోసం అభ్యర్థించారు.',
'resetpass-temp-password' => 'తాత్కాలిక సంకేతపదం:',
+'resetpass-abort-generic' => 'ఓ పొడిగింత (ఎక్స్టెన్షన్) సంకేతపదం మార్పిడిని ఆపేసింది.',
# Special:PasswordReset
'passwordreset' => 'సంకేతపదాన్ని మార్చుకోండి',
+'passwordreset-text-one' => 'ఈమెయిలు ద్వారా తాత్కాలిక సంకేతపదాన్ని పొందేందుకు ఈ ఫారమును నింపండి.',
+'passwordreset-text-many' => '{{PLURAL:$1|ఈమెయిలు ద్వారా తాత్కాలిక సంకేతపదాన్ని పొందేందుకు ఏదో ఒక ఫీల్డును నింపండి.Fill in one of the fields to receive a temporary password via email.}}',
'passwordreset-legend' => 'సంకేతపదాన్ని మార్చుకోండి',
'passwordreset-disabled' => 'ఈ వికీలో సంకేతపదాల మార్పును అచేతనం చేసాం.',
+'passwordreset-emaildisabled' => 'ఈ వికీలో ఈమెయిలు విశేషాలను అశక్తం చేసాం.',
'passwordreset-username' => 'వాడుకరి పేరు:',
'passwordreset-domain' => 'డొమైన్:',
+'passwordreset-capture' => 'ఈమెయిలు ఎలా ఉంటుందో చూస్తారా?',
+'passwordreset-capture-help' => 'ఈ పెట్టెను చెక్ చేస్తే, ఈమెయిలును (తాత్కాలిక సంకేతపదంతో) వాడుకరికి పంపిస్తూనే, మీకూ చూపిస్తాం.',
'passwordreset-email' => 'ఈ-మెయిలు చిరునామా:',
'passwordreset-emailtitle' => '{{SITENAME}}లో ఖాతా వివరాలు',
-'passwordreset-emailtext-ip' => 'à°\8eవరà±\8b (బహà±\81శా à°®à±\80à°°à±\87, à°\90à°ªà±\80 à°\85à°¡à±\8dà°°à°¸à±\81 $1 à°¨à±\81à°\82à°\9aà°¿) {{SITENAME}} ($4) à°²à±\8b à°®à±\80 à°\96ాతా వివరాలనà±\81 à°\9aà±\86à°ªà±\8dà°ªమంటూ అడిగారు. కింది వాడుకరి {{PLURAL:$3|ఖాతా|ఖాతాలు}}
-à°\88 à°\88à°®à±\86యిలà±\81 à°\85à°¡à±\8dà°°à°¸à±\81తో అనుసంధింపబడి ఉన్నాయి:
+'passwordreset-emailtext-ip' => 'à°\8eవరà±\8b (బహà±\81శా à°®à±\80à°°à±\87, à°\90à°ªà±\80 à°\85à°¡à±\8dà°°à°¸à±\81 $1 à°¨à±\81à°\82à°\9aà°¿) {{SITENAME}} ($4) à°²à±\8b à°®à±\80 à°¸à°\82à°\95à±\87తపదానà±\8dని మారà±\8dà°\9aమంటూ అడిగారు. కింది వాడుకరి {{PLURAL:$3|ఖాతా|ఖాతాలు}}
+à°\88 à°\88à°®à±\86యిలà±\81 à°\9aà°¿à°°à±\81నామాతో అనుసంధింపబడి ఉన్నాయి:
$2
-{{PLURAL:$3|à°\88 తాతà±\8dà°\95ాలిà°\95 à°¸à°\82à°\95à±\87తపదానిà°\95à°¿|à°\88 తాతà±\8dà°\95ాలిà°\95 à°¸à°\82à°\95à±\87తపదాలà°\95à±\81}} {{PLURAL:$5|à°\92à°\95à±\8dà°\95 రోజులో|$5 రోజుల్లో}} కాలం చెల్లుతుంది.
-ఇప్పుడు మీరు లాగినై కొత్త సంకేతపదాన్ని ఎంచుకోవాల్సి ఉంటుంది. ఈ అభ్యర్ధన చేసింది మరెవరైనా అయినా, లేక మీ అసలు సంకేతపదం మీకు గుర్తొచ్చి, మార్చాల్సిన అవసరం లేకపోయినా, మీరీ సందేశాన్ని పట్టించుకోనక్కర్లేదు. పాత సంకేతపదాన్నే వాడుతూ పోవచ్చు.',
-'passwordreset-emailtext-user' => '{{SITENAME}} à°²à±\8bని వాడà±\81à°\95à°°à°¿ $1, {{SITENAME}} ($4) à°²à±\8bని à°®à±\80 à°\96ాతా వివరాలనà±\81 à°\9aà±\86à°ªà±\8dà°ªమంటూ అడిగారు. కింది వాడుకరి {{PLURAL:$3|ఖాతా|ఖాతాలు}}
+{{PLURAL:$3|à°\88 à°¸à°\82à°\95à±\87తపదానిà°\95à°¿|à°\88 à°¸à°\82à°\95à±\87తపదాలà°\95à±\81}} {{PLURAL:$5|à°\92à°\95à±\8dà°\95రోజులో|$5 రోజుల్లో}} కాలం చెల్లుతుంది.
+ఇప్పుడు మీరు లాగినై కొత్త సంకేతపదాన్ని ఎంచుకోవాల్సి ఉంటుంది. ఈ అభ్యర్ధన చేసింది మరెవరైనా అయినా, లేక మీ అసలు సంకేతపదం మీకు గుర్తొచ్చి దాన్ని మార్చాల్సిన అవసరం లేదని అనుకున్నా, మీరీ సందేశాన్ని పట్టించుకోనక్కర్లేదు. పాత సంకేతపదాన్నే వాడుకోవచ్చు.',
+'passwordreset-emailtext-user' => '{{SITENAME}} à°²à±\8bని వాడà±\81à°\95à°°à°¿ $1, {{SITENAME}} ($4) à°²à±\8bని à°®à±\80 à°¸à°\82à°\95à±\87తపదానà±\8dని మారà±\8dà°\9aమంటూ అడిగారు. కింది వాడుకరి {{PLURAL:$3|ఖాతా|ఖాతాలు}}
ఈ ఈమెయిలు అడ్రసుతో అనుసంధింపబడి ఉన్నాయి:
$2
{{PLURAL:$3|ఈ తాత్కాలిక సంకేతపదానికి|ఈ తాత్కాలిక సంకేతపదాలకు}} {{PLURAL:$5|ఒక్క రోజులో|$5 రోజుల్లో}} కాలం చెల్లుతుంది.
-ఇప్పుడు మీరు లాగినై కొత్త సంకేతపదాన్ని ఎంచుకోవాల్సి ఉంటుంది. ఈ అభ్యర్ధన చేసింది మరెవరైనా అయినా, లేక మీ అసలు సంకేతపదం మీకు గుర్తొచ్చి, మార్చాల్సిన అవసరం లేకపోయినా, మీరీ సందేశాన్ని పట్టించుకోనక్కర్లేదు. పాత సంకేతపదాన్నే వాడుతూ పోవచ్చు.',
+ఇప్పుడు మీరు లాగినై కొత్త సంకేతపదాన్ని ఎంచుకోవాల్సి ఉంటుంది. ఈ అభ్యర్ధన చేసింది మరెవరైనా అయినా, లేక మీ అసలు సంకేతపదం మీకు గుర్తొచ్చి దాన్ని మార్చాల్సిన అవసరం లేదని అనుకున్నా, మీరీ సందేశాన్ని పట్టించుకోనక్కర్లేదు. పాత సంకేతపదాన్నే వాడుకోవచ్చు.',
'passwordreset-emailelement' => 'వాడుకరిపేరు: $1
తాత్కాలిక సంకేతపదం: $2',
-'passwordreset-emailsent' => 'జ్ఞాపకం ఈమెయిలు పంపించాం.',
-'passwordreset-emailsent-capture' => 'క్రింద చూపబడిన, గుర్తుచేయు సందేశమును పంపినాము.',
+'passwordreset-emailsent' => 'సంకేతపదం మార్పు ఈమెయిలును పంపించాం.',
+'passwordreset-emailsent-capture' => 'క్రింద చూపిన సంకేతపదం మార్పు ఈమెయిలును పంపించాం.',
+'passwordreset-emailerror-capture' => 'కింద చూపిన సంకేతపదం మార్పు ఈమెయిలును తయారుచేసాం. కానీ దాన్ని {{GENDER:$2|వాడుకరికి}} పంపడం విఫలమైంది: $1',
# Special:ChangeEmail
'changeemail' => 'ఈ-మెయిలు చిరునామా మార్పు',
'changeemail-password' => 'మీ {{SITENAME}} సంకేతపదం:',
'changeemail-submit' => 'ఈ-మెయిల్ మార్చు',
'changeemail-cancel' => 'రద్దుచేయి',
+'changeemail-throttled' => 'మరీ ఎక్కువగా లాగిన్ ప్రయత్నాలు చేసారు.
+మళ్ళీ ప్రయత్నించే ముందు $1 ఆగండి.',
# Special:ResetTokens
+'resettokens' => 'టోకెన్ ను రీసెట్ చెయ్యి',
+'resettokens-text' => 'మీ ఖాతాకు అనుబంధంగా ఉన్న గోపనీయ డేటాను చూపించే టోకెన్లను మీరు ఇక్కడ రీసెట్ చెయ్యవచ్చు.
+
+మీరా టోకెన్లను పొరపాటున ఎవరికైనా ఇచ్చి ఉన్నా, లేక మీ ఖాతా వివరాలు మరెవరికైనా తెలిసిపోయినా మీరీ పని చెయ్యాలి.',
+'resettokens-no-tokens' => 'రీసెట్ చేసేందుకు టోకెన్లేమీ లేవు.',
+'resettokens-legend' => 'టోకెన్లను రీసెట్ చెయ్యి',
+'resettokens-tokens' => 'టోకెన్లు:',
'resettokens-token-label' => '$1 (ప్రస్తుత విలువ: $2)',
+'resettokens-watchlist-token' => '[[Special:Watchlist|changes to pages on your watchlist]] యొక్క జాల వడ్డన (Atom/RSS) కు టోకెన్',
+'resettokens-done' => 'టోకెన్లను రీసెట్ చేసాం.',
+'resettokens-resetbutton' => 'ఎంచుకున్న టోకెన్లను రీసెట్ చెయ్యి',
# Edit page toolbar
'bold_sample' => 'బొద్దు అక్షరాలు',
'nosuchsectiontext' => 'మీరు లేని విభాగాన్ని మార్చడానికి ప్రయత్నించారు.
మీరు పేజీని చూస్తూన్నప్పుడు దాన్ని ఎవరైనా తరలించి లేదా తొలగించి ఉండవచ్చు.',
'loginreqtitle' => 'ప్రవేశము తప్పనిసరి',
-'loginreqlink' => 'à°ªà±\8dà°°à°µà±\87శిà°\82à°\9aి',
+'loginreqlink' => 'లాà°\97ినవà°\82à°¡ి',
'loginreqpagetext' => 'ఇతర పుటలను చూడడానికి మీరు $1 ఉండాలి.',
'accmailtitle' => 'సంకేతపదం పంపించబడింది.',
-'accmailtext' => "[[User talk:$1|$1]] కొరకు ఒక యాదృచ్చిక సంకేతపదాన్ని $2కి పంపించాం.
-
-ఈ కొత్త ఖాతా యొక్క సంకేతపదాన్ని లోనికి ప్రవేశించిన తర్వాత ''[[Special:ChangePassword|సంకేతపదాన్ని మార్చుకోండి]]'' అన్న పేజీలో మార్చుకోవచ్చు.",
+'accmailtext' => "[[User talk:$1|$1]] కొరకు ఒక యాదృచ్ఛిక సంకేతపదాన్ని $2కి పంపించాం. లాగినయ్యాక, ''[[Special:ChangePassword|సంకేతపదాన్ని మార్చుకోండి]]'' అనే పేజీలో ఈ సంకేతపదాన్ని మార్చుకోవచ్చు.",
'newarticle' => '(కొత్తది)',
'newarticletext' => "ఈ లింకుకు సంబంధించిన పేజీ ఉనికిలొ లేదు.
కింది పెట్టెలో మీ రచనను టైపు చేసి ఆ పేజీని సృష్టించండి (దీనిపై సమాచారం కొరకు [[{{MediaWiki:Helppage}}|సహాయం]] పేజీ చూడండి). మీరిక్కడికి పొరపాటున వచ్చి ఉంటే, మీ బ్రౌజరు '''back''' మీట నొక్కండి.",
లేదా [{{fullurl:{{FULLPAGENAME}}|action=edit}} ఈ పేజీని మార్చవచ్చు]</span>.',
'noarticletext-nopermission' => 'ప్రస్తుతం ఈ పేజీలో పాఠ్యమేమీ లేదు.
మీరు ఇతర పేజీలలో [[Special:Search/{{PAGENAME}}|ఈ పేజీ శీర్షిక కోసం వెతకవచ్చు]], లేదా <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} సంబంధిత చిట్టాలలో వెతకవచ్చు]</span>, కానీ ఈ పేజీని సృష్టించడానికి మీకు అనుమతి లేదు.',
+'missing-revision' => '"{{PAGENAME}}" అనే పేజీ యొక్క కూర్పు #$1 ఉనికిలో లేదు. సాధారణంగా ఏదైనా తొలగించబడిన పేజీ యొక్క కాలం చెల్లిన చరితం లింకును నొక్కినపుడు ఇది జరుగుతుంది. వివరాలు [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} తొలగింపు లాగ్] లో దొరుకుతాయి.',
'userpage-userdoesnotexist' => '"<nowiki>$1</nowiki>" అనే వాడుకరి ఖాతా నమోదయిలేదు. మీరు ఈ పేజీని సృష్టించ/సరిదిద్దాలనుకుంటే, సరిచూసుకోండి.',
'userpage-userdoesnotexist-view' => 'వాడుకరి ఖాతా "$1" నమోదుకాలేదు.',
'blocked-notice-logextract' => 'ప్రస్తుతం ఈ వాడుకరిని నిరోధించారు.
నిరోధపు చిట్టాలోని చివరి పద్దుని మీ సమాచారం కోసం ఈ క్రింద ఇస్తున్నాం:',
-'clearyourcache' => "'''గమనిక - భద్రపరచిన తర్వాత, మార్పులను చూడడానికి మీ విహారిణి యొక్క కోశాన్ని తీసేయాల్సిరావచ్చు.''' '''మొజిల్లా/ ఫైర్ఫాక్స్ / సఫారి:''' ''Shift'' మీటని నొక్కిపట్టి ''రీలోడ్''ని నొక్కండి లేదా ''Ctrl-F5'' అనే మీటల్ని లేదా ''Ctrl-R'' (మాకింటోషులో ''Command-R'') అనే మీటల్ని కలిపి నొక్కండి; '''కాంకరర్: '''''రీలోడ్''ని నొక్కండి లేదా ''F5'' మీటని నొక్కండి; '''ఒపెరా:''' ''Tools → Preferences'' ద్వారా కోశాన్ని శుభ్రపరచండి; '''ఇంటర్నెట్ ఎక్ప్లోరర్:'''''Ctrl'' మీటని నొక్కిపట్టి ''రీఫ్రెష్''ని నొక్కండి లేదా ''Ctrl-F5'' మీటల్ని కలిపి నొక్కండి.",
+'clearyourcache' => '<strong>గమనిక:</strong> భద్రపరచిన తర్వాత, మార్పులను చూడాలంటే మీ విహారిణి యొక్క కోశాన్ని తీసేయాల్సిరావచ్చు.
+*<strong>ఫైర్ఫాక్స్ / సఫారి:</strong> <em>Shift</em> మీటని నొక్కిపట్టి <em>Reload</em>ని నొక్కండి లేదా <em>Ctrl-F5</em> గానీ <em>Ctrl-R</em> (మాకింటోషులో <em>⌘-Shift-R</em>) గానీ నొక్కండి
+* <strong>గూగుల్ క్రోమ్:</strong> <em>Ctrl-Shift-R</em> (మాక్ లో <em>⌘-Shift-R</em>) నొక్కండి
+*<strong>ఇంటర్నెట్ ఎక్ప్లోరర్:</strong> <em>Ctrl</em> ను నొక్కిపట్టి <em>Refresh</em> నొక్కండి లేదా <em>Ctrl-F5</em> నొక్కండి.
+*<em>ఒపెరా:</em> <em>Tools → Preferences</em> ద్వారా కోశాన్ని ఖాళీ చెయ్యండి',
'usercssyoucanpreview' => "'''చిట్కా:''' భద్రపరిచేముందు మీ కొత్త CSSని పరీక్షించడానికి \"{{int:showpreview}}\" అనే బొత్తాన్ని వాడండి.",
'userjsyoucanpreview' => "'''చిట్కా:''' భద్రపరిచేముందు మీ కొత్త జావాస్క్రిప్టుని పరీక్షించడానికి \"{{int:showpreview}}\" అనే బొత్తాన్ని వాడండి.",
'usercsspreview' => "'''మీరు వాడుకరి CSSను కేవలం సరిచూస్తున్నారని గుర్తుంచుకోండి.'''
'''తగు అనుమతులు లేకుండా కాపీ హక్కులు గల రచనలను సమర్పించకండి!'''",
'longpageerror' => "'''పొరపాటు: మీరు సమర్పించిన పాఠ్యం, గరిష్ఠ పరిమితి అయిన {{PLURAL:$2|ఒక కిలోబైటుని|$2 కిలోబైట్లను}} మించి {{PLURAL:$1|ఒక కిలోబైటు|$1 కిలోబైట్ల}} పొడవుంది.'''
దీన్ని భద్రపరచలేము.",
-'readonlywarning' => "'''హెచ్చరిక: నిర్వహణ కొరకు డేటాబేసుకి తాళం వేసారు, కాబట్టి మీ మార్పుచేర్పులను ఇప్పుడు భద్రపరచలేరు. మీ మార్పులను ఒక ఫాఠ్య ఫైలులోకి కాపీ చేసి భద్రపరచుకొని, తరువాత సమర్పించండి.'''
+'readonlywarning' => '<strong>హెచ్చరిక: నిర్వహణ కొరకు డేటాబేసుకి తాళం వేసారు. కాబట్టి మీ మార్పుచేర్పులను ఇప్పుడు భద్రపరచలేరు.</strong>
+మీ మార్పులను ఒక ఫాఠ్య ఫైలులోకి కాపీ చేసి భద్రపరచుకొని, తరువాత సమర్పించండి.
-తాళం వేసిన నిర్వాహకుడి వివరణ ఇదీ: $1",
+తాళం వేసిన నిర్వాహకుడి వివరణ ఇదీ: $1',
'protectedpagewarning' => "'''హెచ్చరిక: ఈ పేజీ సంరక్షించబడినది, కనుక నిర్వాహక అనుమతులు ఉన్న వాడుకరులు మాత్రమే మార్చగలరు.'''
చివరి చిట్టా పద్దుని మీ సమాచారం కోసం ఇక్కడ ఇస్తున్నాం:",
'semiprotectedpagewarning' => "'''గమనిక:''' నమోదయిన వాడుకరులు మాత్రమే మార్పులు చెయ్యగలిగేలా ఈ పేజీకి సంరక్షించారు.
'edit-already-exists' => 'కొత్త పేజీని సృష్టించలేము.
అది ఇప్పటికే ఉంది.',
'defaultmessagetext' => 'అప్రమేయ సందేశపు పాఠ్యం',
+'content-failed-to-parse' => '$1 మోడల్ కొరకు $2 పాఠ్యాన్ని పార్స్ చెయ్యలేకపోయాం: $3',
'invalid-content-data' => 'తప్పుడు విషయం',
+'content-not-allowed-here' => '[[$2]] పేజీలో పాఠ్యం "$1" కి అనుమతి లేదు',
'editwarning-warning' => 'ఈ పేజీని వదిలివెళ్ళడం వల్ల మీరు చేసిన మార్పులను కోల్పోయే అవకాశం ఉంది.
మీరు ప్రవేశించివుంటే, ఈ హెచ్చరికని మీ అభిరుచులలో "మరపులు" అనే విభాగంలో అచేతనం చేసుకోవచ్చు.',
+'editpage-notsupportedcontentformat-title' => 'పాఠ్యపు ఆకృతికి మద్దతు లేదు',
+'editpage-notsupportedcontentformat-text' => '$2 పాఠ్యపు మోడల్, పాఠ్యపు ఆకృతి $1 కి మద్దతు ఇవ్వదు',
# Content models
'content-model-wikitext' => 'వికీపాఠ్యం',
'cantcreateaccount-text' => "ఈ ఐపీ అడ్రసు ('''$1''') నుండి ఖాతా సృష్టించడాన్ని [[User:$3|$3]] నిరోధించారు.
$3 చెప్పిన కారణం: ''$2''",
+'cantcreateaccount-range-text' => "'''$1''' శ్రేణిలోని IP చిరునామాల నుండి ఖాతా సృష్టించడాన్ని [[User:$3|$3]] నిషేధించారు. మీ IP చిరునామా ('''$4''') ఈ శ్రేణిలోనే ఉంది.
+
+$3 ఇచ్చిన కారణం: ''$2''",
# History pages
'viewpagelogs' => 'ఈ పేజీకి సంబంధించిన లాగ్లను చూడండి',
'rev-deleted-user-contribs' => '[వాడుకరిపేరు లేదా ఐపీ చిరునామాని తొలగించారు - మార్పుచేర్పుల నుండి మార్పుని దాచారు]',
'rev-deleted-text-permission' => "ఈ పేజీ కూర్పుని '''తొలగించారు'''.
[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} తొలగింపు చిట్టా]లో పూర్తి వివరాలు ఉండవచ్చు.",
-'rev-deleted-text-unhide' => "à°\88 à°ªà±\87à°\9cà±\80 à°\95à±\82à°°à±\8dà°ªà±\81ని '''à°¤à±\8aà°²à°\97à°¿à°\82à°\9aారà±\81'''.
-[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} à°¤à±\8aà°²à°\97à°¿à°\82à°ªà±\81 à°\9aà°¿à°\9fà±\8dà°\9fà°¾]à°²à±\8b వివరాలà±\81 à°\89à°\82à°¡à°µà°\9aà±\8dà°\9aà±\81.
-మీరు కావాలనుకుంటే, నిర్వాహకులుగా [$1 ఈ కూర్పుని చూడవచ్చు].",
+'rev-deleted-text-unhide' => "à°ªà±\87à°\9cà±\80 à°¯à±\8aà°\95à±\8dà°\95 à°\88 à°\95à±\82à°°à±\8dà°ªà±\81à°¨à±\81 '''à°¤à±\8aà°²à°\97à°¿à°\82à°\9aà°¾à°\82'''.
+[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} à°¤à±\8aà°²à°\97à°¿à°\82à°ªà±\81 à°\9aà°¿à°\9fà±\8dà°\9fà°¾]à°²à±\8b వివరాలà±\81 à°\9aà±\82à°¡à°µà°\9aà±\8dà°\9aà±\81.
+మీరు కావాలనుకుంటే, [$1 ఈ కూర్పుని చూడవచ్చు].",
'rev-suppressed-text-unhide' => "ఈ పేజీకూర్పును '''అణచి పెట్టాం'''.
-[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} à°\85à°£à°\9aà°¿à°µà±\87à°¤ à°\9aà°¿à°\9fà±\8dà°\9fà°¾]à°²à±\8b వివరాలà±\81 à°\89à°\82à°¡à±\8aచ్చు.
-ముందుకు సాగాలనుకుంటే ఒక నిర్వాహకుడిగా మీరీ [$1 కూర్పును చూడవచ్చు].",
-'rev-deleted-text-view' => "ఈ పేజీ కూర్పుని '''తొలగించారు'''.
-à°\92à°\95 నిరà±\8dవాహà°\95à±\81à°¡à°¿à°\97à°¾ à°®à±\80à°°à±\81 దానà±\8dని à°\9aà±\82à°¡à°µà°\9aà±\8dà°\9aà±\81; [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} à°¤à±\8aà°²à°\97à°¿à°\82à°ªà±\81 à°\9aà°¿à°\9fà±\8dà°\9fà°¾]à°²à±\8b వివరాలà±\81 à°\89à°\82à°¡à°µà°\9aà±\8dà°\9aà±\81.",
-'rev-suppressed-text-view' => "ఈ పేజీకూర్పును '''అణచి పెట్టాం'''.
-à°\92à°\95 నిరà±\8dవాహà°\95à±\81à°¡à°¿à°\97à°¾ à°®à±\80à°°à±\81 దానà±\8dని à°\9aà±\82à°¡à°µà°\9aà±\8dà°\9aà±\81; [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} à°\85à°£à°\9aà°¿à°µà±\87à°¤ à°\9aà°¿à°\9fà±\8dà°\9fà°¾]à°²à±\8bవివరాలà±\81 à°\89à°\82à°¡à°µà°\9aà±\8dà°\9aà±\81.",
+[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} à°\85à°£à°\9aà°¿à°µà±\87à°¤ à°\9aà°¿à°\9fà±\8dà°\9fà°¾]à°²à±\8b వివరాలà±\81 à°\9aà±\82à°¡à°µచ్చు.
+ముందుకు సాగాలనుకుంటే [$1 కూర్పును చూడవచ్చు].",
+'rev-deleted-text-view' => 'ఈ పేజీ కూర్పుని <strong>తొలగించారు</strong>
+à°®à±\80à°°à±\81 దానà±\8dని à°\9aà±\82à°¡à°µà°\9aà±\8dà°\9aà±\81; [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} à°¤à±\8aà°²à°\97à°¿à°\82à°ªà±\81 à°\9aà°¿à°\9fà±\8dà°\9fà°¾]à°²à±\8b వివరాలà±\81 à°¦à±\8aà°°à±\81à°\95à±\81తాయి.',
+'rev-suppressed-text-view' => 'ఈ పేజీకూర్పును <strong>అణచి పెట్టాం</strong>.
+à°®à±\80à°°à±\81 దానà±\8dని à°\9aà±\82à°¡à°µà°\9aà±\8dà°\9aà±\81; [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} à°\85à°£à°\9aà°¿à°µà±\87à°¤ à°\9aà°¿à°\9fà±\8dà°\9fà°¾]à°²à±\8bవివరాలà±\81 à°\89à°\82à°\9fాయి.',
'rev-deleted-no-diff' => "మీరు తేడాలను చూడలేదు ఎందుకంటే ఒక కూర్పుని '''తొలగించారు'''.
[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} తొలగింపు చిట్టా]లో వివరాలు ఉండవచ్చు.",
'rev-suppressed-no-diff' => "ఈ తేడాని మీరు చూడలేరు ఎందుకంటే ఒక కూర్పుని '''తొలగించారు'''.",
-'rev-deleted-unhide-diff' => "ఈ తేడాల యొక్క కూర్పులలో ఒకదాన్ని '''తొలగించారు'''.
-[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} à°¤à±\8aà°²à°\97à°¿à°\82à°ªà±\81 à°\9aà°¿à°\9fà±\8dà°\9fà°¾]à°²à±\8b వివరాలà±\81 à°\89à°\82à°¡à°µà°\9aà±\8dà°\9aà±\81.
-మీరు కావాలనుకుంటే నిర్వాహకులుగా [$1 ఈ తేడాని చూడవచ్చు].",
-'rev-suppressed-unhide-diff' => "ఈ తేడా లోని ఒక కూర్పును '''అణచి పెట్టాం'''.
-[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} à°\85à°£à°\9aà°¿à°µà±\87à°¤ à°\9aà°¿à°\9fà±\8dà°\9fà°¾]à°²à±\8bవివరాలà±\81 à°\89à°\82à°¡à°µà°\9aà±\8dà°\9aà±\81. à°\95ావాలనà±\81à°\95à±\81à°\82à°\9fà±\87, à°\92à°\95 నిరà±\8dవాహà°\95à±\81à°¡à°¿à°\97à°¾ à°®à±\80à°°à±\81 [$1 à°\86 à°¤à±\87డానà±\81 à°\9aà±\82à°¡à°µà°\9aà±\8dà°\9aà±\81].",
-'rev-deleted-diff-view' => "ఈ తేడా లోని ఒక పేజీకూర్పును '''తొలగించాం'''.
-ఒక నిర్వాహకుడిగా మీరు ఈ తేడాను చూడవచ్చు; [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} తొలగింపు చిట్టా]లోవివరాలు ఉండవచ్చు.",
-'rev-suppressed-diff-view' => "
-ఈ తేడా లోని ఒక కూర్పును '''అణచి పెట్టాం'''.
-à°\92à°\95 నిరà±\8dవాహà°\95à±\81à°¡à°¿à°\97à°¾ à°®à±\80à°°à±\81 à°\88 à°¤à±\87డానà±\81 à°\9aà±\82à°¡à°µà°\9aà±\8dà°\9aà±\81; [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} à°\85à°£à°\9aà°¿à°µà±\87à°¤ à°\9aà°¿à°\9fà±\8dà°\9fà°¾]à°²à±\8bవివరాలà±\81 à°\89à°\82à°¡à°µà°\9aà±\8dà°\9aà±\81.",
+'rev-deleted-unhide-diff' => 'ఈ తేడాల యొక్క కూర్పులలో ఒకదాన్ని <strong>తొలగించారు</strong>.
+[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} à°¤à±\8aà°²à°\97à°¿à°\82à°ªà±\81 à°\9aà°¿à°\9fà±\8dà°\9fà°¾]à°²à±\8b వివరాలà±\81 à°\89à°\82à°\9fాయి.
+మీరు కావాలనుకుంటే [$1 ఈ తేడాని చూడవచ్చు].',
+'rev-suppressed-unhide-diff' => 'ఈ తేడా లోని ఒక కూర్పును <strong>అణచి పెట్టాం</strong>.
+[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} à°\85à°£à°\9aà°¿à°µà±\87à°¤ à°\9aà°¿à°\9fà±\8dà°\9fà°¾]à°²à±\8bవివరాలà±\81 à°\89à°\82à°\9fాయి.
+కావాలనుకుంటే, మీరు [$1 ఈ తేడాను చూడవచ్చు].',
+'rev-deleted-diff-view' => 'ఈ తేడా లోని ఒక పేజీకూర్పును <strong>తొలగించాం</strong>.
+మీరు ఈ తేడాను చూడవచ్చు; [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} తొలగింపు చిట్టా]లోవివరాలు ఉంటాయి.',
+'rev-suppressed-diff-view' => 'ఈ తేడా లోని ఒక కూర్పును <strong>అణచి పెట్టాం</strong>.
+à°®à±\80à°°à±\81 à°\88 à°¤à±\87డానà±\81 à°\9aà±\82à°¡à°µà°\9aà±\8dà°\9aà±\81; [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} à°\85à°£à°\9aà°¿à°µà±\87à°¤ à°\9aà°¿à°\9fà±\8dà°\9fà°¾]à°²à±\8bవివరాలà±\81 à°\89à°\82à°\9fాయి.',
'rev-delundel' => 'చూపించు/దాచు',
'rev-showdeleted' => 'చూపించు',
'revisiondelete' => 'కూర్పులను తొలగించు/తొలగింపును రద్దుచెయ్యి',
'revdelete-text' => "'''తొలగించిన కూర్పులు, ఘటనలూ పేజీ చరితం లోనూ, చిట్టాలలోనూ కనిపిస్తాయి, కానీ వాటిలో కొన్ని భాగాలు సార్వజనికంగా అందుబాటులో ఉండవు.'''
{{SITENAME}} లోని ఇతర నిర్వాహకులు ఆ దాచిన భాగాలను చూడగలరు మరియు (ఏవిధమైన నియంత్రణలూ లేకుంటే) ఇదే అంతరవర్తి ద్వారా వాటిని పునస్థాపించగలరు.",
'revdelete-confirm' => 'మీరు దీన్ని చేయగోరుతున్నారనీ, దీని పర్యవసానాలు మీకు తెలుసుననీ, మరియు మీరు దీన్ని [[{{MediaWiki:Policy-url}}|విధానం]] ప్రకారమే చేస్తున్నారనీ దయచేసి నిర్ధారించండి.',
-'revdelete-suppress-text' => 'అణచివేతను కింది సందర్భాలలో "మాత్రమే" వాడాలి:
+'revdelete-suppress-text' => 'అణచివేతను కింది సందర్భాలలో <strong>మాత్రమే</strong> వాడాలి:
* బురదజల్లే ధోరణిలో ఉన్న సమాచారం
* అనుచితమైన వ్యక్తిగత సమాచారం
-* "ఇంటి చిరునామాలు, టెలిఫోను నంబర్లు, సోషల్ సెక్యూరిటీ నంబర్లు, వగైరాలు"',
+*<em>ఇంటి చిరునామాలు, టెలిఫోను నంబర్లు, జాతీయ ఐడీ నంబర్లు, వగైరాలు</em>',
'revdelete-legend' => 'సందర్శక నిబంధనలు అమర్చు',
'revdelete-hide-text' => 'పునఃపరిశీలన పాఠ్యం',
'revdelete-hide-image' => 'ఫైలులోని విషయాన్ని దాచు',
'revdelete-hide-user' => 'దిద్దుబాటు చేసినవారి వాడుకరి పేరు/ఐపీ చిరునామా',
'revdelete-hide-restricted' => 'డేటాను అందరిలాగే నిర్వాహకులకు కూడా కనబడనివ్వకు',
'revdelete-radio-same' => '(మార్చకు)',
-'revdelete-radio-set' => 'à°\85à°µà±\81à°¨à±\81',
-'revdelete-radio-unset' => 'à°\95ాదà±\81',
+'revdelete-radio-set' => 'దాà°\9aà°¿à°¨',
+'revdelete-radio-unset' => 'à°\9aà±\82పిన',
'revdelete-suppress' => 'డేటాను అందరిలాగే నిర్వాహకులకు కూడా కనబడనివ్వకు',
'revdelete-unsuppress' => 'పునస్థాపిత కూర్పులపై నిబంధనలను తీసివెయ్యి',
'revdelete-log' => 'కారణం:',
# Suppression log
'suppressionlog' => 'అణచివేతల చిట్టా',
'suppressionlogtext' => 'నిర్వాహకులకు కనబడని విషయం కలిగిన తొలగింపులు, నిరోధాల జాబితా ఇది.
-à°ªà±\8dà°°à°¸à±\8dà°¤à±\81à°¤à°\82 à°\85మలà±\8dà°²à±\8b à°\89à°¨à±\8dà°¨ నిషà±\87ధాలà±\81, నిరà±\8bధాల à°\9cాబితా à°\95à±\8bà°¸à°\82 [[Special:IPBlockList|à°\90à°ªà±\80 నిరోధాల జాబితా]] చూడండి.',
+à°ªà±\8dà°°à°¸à±\8dà°¤à±\81à°¤à°\82 à°\85మలà±\8dà°²à±\8b à°\89à°¨à±\8dà°¨ నిషà±\87ధాలà±\81, నిరà±\8bధాల à°\95à±\8bà°¸à°\82 [[Special:BlockList|నిరోధాల జాబితా]] చూడండి.',
# History merging
'mergehistory' => 'పేజీ చరితాలను విలీనం చెయ్యి',
'showhideselectedversions' => 'ఎంచుకున్న కూర్పులను చూపించు/దాచు',
'editundo' => 'మార్పుని రద్దుచెయ్యి',
'diff-empty' => '(తేడా లేదు)',
-'diff-multi' => '({{PLURAL:$2|ఒక వాడుకరి|$2 వాడుకరుల}} యొక్క {{PLURAL:$1|ఒక మధ్యంతర కూర్పును|$1 మధ్యంతర కూర్పులను}} చూపించట్లేదు)',
+'diff-multi-sameuser' => '(ఇదే వాడుకరి యొక్క {{PLURAL:$1|ఒక మధ్యంతర కూర్పును|$1 మధ్యంతర కూర్పులను}} చూపించలేదు)',
+'diff-multi-otherusers' => '({{PLURAL:$2|మరో వాడుకరి|$2 వాడుకరుల}} యొక్క {{PLURAL:$1|ఒక మధ్యంతర కూర్పును|$1 మధ్యంతర కూర్పులను}} చూపించలేదు)',
'diff-multi-manyusers' => '$2 మంది పైన ({{PLURAL:$2|ఒక వాడుకరి|వాడుకరుల}} యొక్క {{PLURAL:$1|ఒక మధ్యంతర కూర్పును|$1 మధ్యంతర కూర్పులను}} చూపించట్లేదు)',
+'difference-missing-revision' => 'ఈ తేడా ($1) యొక్క {{PLURAL:$2|ఒక కూర్పు|$2 కూర్పులు}} {{PLURAL:$2|కనబడలేదు}}.
+
+సాధారణంగా, తొలగించబడిన పేజీ యొక్క కాలం చెల్లిన ’తేడా’ లింకును నొక్కినపుడు ఇది జరుగుతుంది.
+[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} తొలగింపు లాగ్] లో వివరాలు ఉంటాయి.',
# Search results
'searchresults' => 'వెదుకులాట ఫలితాలు',
'shown-title' => 'పేజీకి $1 {{PLURAL:$1|ఫలితాన్ని|ఫలితాలను}} చూపించు',
'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3) చూపించు.',
'searchmenu-exists' => "'''ఈ వికీలో \"[[:\$1]]\" అనే పేజీ ఉంది'''",
-'searchmenu-new' => "'''ఈ వికీలో \"[[:\$1]]\" అనే పేరుతో పేజీని సృష్టించు!'''",
+'searchmenu-new' => '<strong>ఈ వికీలో "[[:$1]]" అనే పేరుతో పేజీని సృష్టించండి!</strong> {{PLURAL:$2|0=|మీ వెతుకులాటలో దొరికిన పేజీని కూడా చూడండి.|వెతుకులాట ఫలితాలను కూడా చూడండి.}}',
'searchprofile-articles' => 'విషయపు పేజీలు',
'searchprofile-project' => 'సహాయం మరియు ప్రాజెక్టు పేజీలు',
'searchprofile-images' => 'బహుళమాధ్యమాలు',
'search-result-score' => 'సంబంధం: $1%',
'search-redirect' => '(దారిమార్పు $1)',
'search-section' => '(విభాగం $1)',
+'search-file-match' => '(ఫైలు విషయంతో సరిపోలుతోంది)',
'search-suggest' => 'మీరు అంటున్నది ఇదా: $1',
'search-interwiki-caption' => 'సోదర ప్రాజెక్టులు',
'search-interwiki-default' => '$1 ఫలితాలు:',
'powersearch-togglenone' => 'ఏదీకాదు',
'search-external' => 'బయటి అన్వేషణ',
'searchdisabled' => '{{SITENAME}} అన్వేషణ తాత్కాలికంగా పని చెయ్యడం లేదు. ఈలోగా మీరు గూగుల్ ఉపయోగించి అన్వేషించవచ్చు. ఒక గమనిక: గూగుల్ ద్వారా కాలదోషం పట్టిన ఫలితాలు రావడానికి అవకాశం ఉంది.',
+'search-error' => '$1 కోసం వెతికేటపుడు లోపమేదో దొర్లింది.',
# Preferences page
'preferences' => 'అభిరుచులు',
'mypreferences' => 'అభిరుచులు',
'prefs-edits' => 'దిద్దుబాట్ల సంఖ్య:',
+'prefsnologintext2' => 'మీ అభిరుచులను మార్చుకునేందుకు $1.',
'prefs-skin' => 'అలంకారం',
'skin-preview' => 'మునుజూపు/సరిచూడు',
'datedefault' => 'ఏదైనా పరవాలేదు',
'rows' => 'వరుసలు',
'columns' => 'వరుసలు:',
'searchresultshead' => 'అన్వేషణ',
-'resultsperpage' => 'పేజీకి ఫలితాలు:',
'stub-threshold' => '<a href="#" class="stub">మొలక లింకు</a> ఫార్మాటింగు కొరకు హద్దు (బైట్లు):',
'stub-threshold-disabled' => 'అచేతనం',
'recentchangesdays' => 'ఇటీవలి మార్పులు లో చూపించవలసిన రోజులు:',
'recentchangesdays-max' => '($1 {{PLURAL:$1|రోజు|రోజులు}} గరిష్ఠం)',
'recentchangescount' => 'అప్రమేయంగా చూపించాల్సిన దిద్దుబాట్ల సంఖ్య:',
'prefs-help-recentchangescount' => 'ఇది ఇటీవలి మార్పులు, పేజీ చరిత్రలు, మరియు చిట్టాలకు వర్తిస్తుంది.',
+'prefs-help-watchlist-token2' => 'మీ వీక్షణజాబితా యొక్క జాలవడ్డింపుకు చెందిన రహస్య తాళమిది.
+ఈ తాళం తెలిసిన ఎవరైనా మీ వీక్షణజాబితాను చదవగలుగుతారు. అందుచేత దీన్ని ఎవరికీ ఇవ్వకండి.
+[[Special:ResetTokens|దాన్ని మార్చాలంటే ఇక్కడ నొక్కండి]].',
'savedprefs' => 'మీ అభిరుచులను భద్రపరిచాం.',
'timezonelegend' => 'కాల మండలం:',
'localtime' => 'స్థానిక సమయం:',
'prefs-displayrc' => 'ప్రదర్శన ఎంపికలు',
'prefs-displaysearchoptions' => 'ప్రదర్శన ఎంపికలు',
'prefs-displaywatchlist' => 'ప్రదర్శన ఎంపికలు',
+'prefs-tokenwatchlist' => 'టోకెన్',
'prefs-diffs' => 'తేడాలు',
+'prefs-help-prefershttps' => 'ఈ అభిరుచి మీరు పైసారి లాగినైనపుడు అమలౌతుంది.',
+'prefs-tabs-navigation-hint' => 'చిట్కా: ట్యాబుల జాబితాలో ఓ ట్యాబు నుండి మరోదానికి వెళ్ళేందుకు కుడి ఎడమ బాణాల కీలను వాడవచ్చు.',
# User preference: email validation using jQuery
'email-address-validity-valid' => 'ఈ-మెయిలు చిరునామా సరిగానే ఉన్నట్టుంది',
'userrights-notallowed' => 'వాడుకరి హక్కులను చేర్చే మరియు తొలగించే అనుమతి మీకు లేదు.',
'userrights-changeable-col' => 'మీరు మార్చదగిన గుంపులు',
'userrights-unchangeable-col' => 'మీరు మార్చలేని గుంపులు',
+'userrights-conflict' => 'వాడుకరి హక్కుల మార్పులలో ఘర్షణ! మీ మార్పులను సమీక్షించి, నిర్ధారించండి.',
'userrights-removed-self' => 'మీ హక్కులను మీరు విజయవంతంగా తొలగించుకున్నారు. తద్వారా, ఈ పేజీని చూడడానికి మీకు ఇక అనుమతి లేదు.',
# Groups
'right-proxyunbannable' => 'ప్రాక్సీల ఆటోమాటిక్ నిరోధాన్ని తప్పించు',
'right-unblockself' => 'వారినే అనిరోధించుకోవడం',
'right-protect' => 'సంరక్షణ స్థాయిలను మార్చు, సంరక్షిత పేజీలలో దిద్దుబాటు చెయ్యి',
-'right-editprotected' => 'సంరక్షిత పేజీలలో దిద్దుబటు చెయ్యి (కాస్కేడింగు సంరక్షణ లేనివి)',
+'right-editprotected' => '"{{int:protect-level-sysop}}" గా సంక్షించబడిన పేజీలను సరిదిద్దు',
+'right-editsemiprotected' => '"{{int:protect-level-autoconfirmed}}" గా సంరక్షించబడ్డ పేజీలను మార్చు',
'right-editinterface' => 'యూజరు ఇంటరుఫేసులో దిద్దుబాటు చెయ్యి',
'right-editusercssjs' => 'ఇతర వాడుకరుల CSS, JS ఫైళ్ళలో దిద్దుబాటు చెయ్యి',
'right-editusercss' => 'ఇతర వాడుకరుల CSS ఫైళ్ళలో దిద్దుబాటు చెయ్యి',
'right-edituserjs' => 'ఇతర వాడుకరుల JS ఫైళ్ళలో దిద్దుబాటు చెయ్యి',
+'right-editmyusercss' => 'మీ స్వంత వాడుకరి CSS ఫైళ్ళను సరిదిద్దండి',
+'right-editmyuserjs' => 'మీ స్వంత JavaScript దస్త్రాలను మార్చండి',
+'right-viewmywatchlist' => 'మీ స్వంత వీక్షణజాబితాను చూడండి',
+'right-editmywatchlist' => 'మీ స్వంత వీక్షణజాబితాను మార్చుకోండి. ఈ హక్కు లేకపోయినా, కొన్ని చర్యల ద్వారా పేజీలు జాబితాకు చేరుతాయని గమనించండి.',
+'right-viewmyprivateinfo' => 'మీ స్వంత గోపనీయ డేటాను చూడండి (ఉదా: ఈమెయిలు చిరునామా, అసలు పేరు)',
+'right-editmyprivateinfo' => 'మీ స్వంత గోపనీయ డేటాను మార్చుకోండి (ఉదా: ఈమెయిలు చిరునామా, అసలు పేరు)',
+'right-editmyoptions' => 'మీ స్వంత అభిరుచులను మార్చుకోండి',
'right-rollback' => 'ఒకానొక పేజీలో చివరి దిద్దుబాటు చేసిన వాడుకరి చేసిన దిద్దుబాట్లను రద్దుచేయి',
'right-markbotedits' => 'వెనక్కి తెచ్చిన దిద్దుబాట్లను బాట్ దిద్దుబాట్లుగా గుర్తించు',
'right-noratelimit' => 'రేటు పరిమితులు ప్రభావం చూపవు',
'action-suppressionlog' => 'ఈ అంతరంగిక చిట్టాను చూసే',
'action-block' => 'ఈ వాడుకరిని మార్పులు చేయడం నుండి నిరోధించే',
'action-protect' => 'ఈ పేజీకి సంరక్షణా స్థాయిని మార్చే',
-'action-import' => 'మరో వికీ నుండి ఈ పేజీని దిగుమతి చేసే',
+'action-rollback' => 'ఏదైనా పేజీలో మార్పులు చేసిన చివరి వాడుకరి యొక్క మార్పులను త్వరితంగా వెనక్కి తీసుకెళ్ళు',
+'action-import' => 'మరో వికీ నుండి ఈ పేజీని దిగుమతి చెయ్యి',
'action-importupload' => 'ఎగుమతి చేసిన ఫైలు నుండి ఈ పేజీలోనికి దిగుమతి చేసే',
'action-patrol' => 'ఇతరుల మార్పులను పర్యవేక్షించినవిగా గుర్తించే',
'action-autopatrol' => 'మీ మార్పులను పర్యవేక్షించినవిగా గుర్తించే',
'action-userrights-interwiki' => 'ఇతర వికీలలో వాడుకరుల యొక్క హక్కులను మార్చే',
'action-siteadmin' => 'డాటాబేసుకి తాళం వేసే లేదా తీసే',
'action-sendemail' => 'ఈ-మెయిల్స్ పంపించు',
+'action-editmywatchlist' => 'మీ వీక్షణ జాబితాను సరిదిద్దండి',
+'action-viewmywatchlist' => 'మీ వీక్షణ జాబితాను చూడండి',
+'action-viewmyprivateinfo' => 'మీ గోపనీయ సమాచారాన్ని చూడండి',
+'action-editmyprivateinfo' => 'మీ గోపనీయ సమాచారాన్ని సరిదిద్దండి',
# Recent changes
'nchanges' => '{{PLURAL:$1|ఒక మార్పు|$1 మార్పులు}}',
'recentchanges-label-minor' => 'ఇది ఒక చిన్న మార్పు',
'recentchanges-label-bot' => 'ఈ మార్పును ఒక బాటు చేసింది',
'recentchanges-label-unpatrolled' => 'ఈ దిద్దుబాటు మీద నిఘా లేదు',
+'recentchanges-label-plusminus' => 'ఈ పేజి పరిమాణంలో జరిగిన మార్పుల బైట్ల సంఖ్య',
+'recentchanges-legend-heading' => "'''సూచిక :'''",
'recentchanges-legend-newpage' => '([[Special:NewPages|కొత్త పేజీల జాబితా]]ను కూడా చూడండి)',
'rcnotefrom' => '<b>$2</b> నుండి జరిగిన మార్పులు (<b>$1</b> వరకు చూపబడ్డాయి).',
'rclistfrom' => '$1 నుండి జరిగిన మార్పులను చూపించు',
'rcshowhideminor' => 'చిన్న మార్పులను $1',
'rcshowhidebots' => 'బాట్లను $1',
-'rcshowhideliu' => 'à°ªà±\8dà°°à°µà±\87శిà°\82à°\9aà°¿à°¨ వాడà±\81à°\95à°°à±\81à°² మారà±\8dà°ªులను $1',
+'rcshowhideliu' => 'నమà±\8bà°¦à±\88à°¨ వాడà±\81à°\95à°°ులను $1',
'rcshowhideanons' => 'అజ్ఞాత వాడుకరులను $1',
'rcshowhidepatr' => 'నిఘాలో ఉన్న మార్పులను $1',
'rcshowhidemine' => 'నా మార్పులను $1',
ఇప్పటికీ మీ ఫైలుని ఎగుమతి చేయాలనుకుంటే, వెనక్కివెళ్ళి మరో పేరు వాడండి. [[File:$1|thumb|center|$1]]',
'file-exists-duplicate' => 'ఈ ఫైలు క్రింద పేర్కొన్న {{PLURAL:$1|ఫైలుకి|ఫైళ్ళకి}} నకలు:',
'file-deleted-duplicate' => 'గతంలో ఈ ఫైలు లాంటిదే ఒక ఫైలుని ([[:$1]]) తొలగించివున్నారు. మీరు దీన్ని ఎగుమతి చేసేముందు ఆ ఫైలు యొక్క తొలగింపు చరిత్రని ఒక్కసారి చూడండి.',
+'file-deleted-duplicate-notitle' => 'సరిగ్గా ఈ ఫైలునే పోలిన మరో ఫైలును గతంలో తొలగించాం. దాని పేరును అణచిపెట్టాం.
+దాన్ని తిరిగి ఎక్కించే ముందు, పరిస్థితిని సమీక్షించేందుకు గాను, అణచబడిన ఫైళ్ళ డేటాను చూడగలిగే వారిని అడగండి.',
'uploadwarning' => 'ఎక్కింపు హెచ్చరిక',
'uploadwarning-text' => 'ఫైలు వివరణని క్రింద మార్చి మళ్ళీ ప్రయత్నించండి.',
'savefile' => 'దస్త్రాన్ని భద్రపరచు',
'allpages-hide-redirects' => 'దారిమార్పులను దాచు',
# SpecialCachedPage
+'cachedspecial-viewing-cached-ttl' => 'ఈ పేజీ యొక్క కాషె కూర్పును చూస్తున్నారు. ఇది $1 దాకా పాతదై ఉండవచ్చు.',
+'cachedspecial-viewing-cached-ts' => 'ఈ పేజీ యొక్క కాషె కూర్పును చూస్తున్నారు. ఇది పూర్తిగా వాస్తవమైన కూర్పు కాకపోవచ్చు.',
'cachedspecial-refresh-now' => 'సరికొత్త కూర్పును చూడండి.',
# Special:Categories
'listgrouprights' => 'వాడుకరి గుంపుల హక్కులు',
'listgrouprights-summary' => 'కింది జాబితాలో ఈ వికీలో నిర్వచించిన వాడుకరి గుంపులు, వాటికి సంబంధించిన హక్కులు ఉన్నాయి.
విడివిడిగా హక్కులకు సంబంధించిన మరింత సమాచారం [[{{MediaWiki:Listgrouprights-helppage}}]] వద్ద లభించవచ్చు.',
-'listgrouprights-key' => '* <span class="listgrouprights-granted">ప్రసాదించిన హక్కు</span>
+'listgrouprights-key' => 'సూచిక:
+* <span class="listgrouprights-granted">ప్రసాదించిన హక్కు</span>
* <span class="listgrouprights-revoked">వెనక్కి తీసుకున్న హక్కు</span>',
'listgrouprights-group' => 'గుంపు',
'listgrouprights-rights' => 'హక్కులు',
'noemailtext' => 'ఈ వాడుకరి సరైన ఈ-మెయిలు చిరునామాని ఇవ్వలేదు.',
'nowikiemailtitle' => 'ఈ-మెయిళ్ళను అనుమతించరు',
'nowikiemailtext' => 'ఇతర వాడుకరుల నుండి ఈ-మెయిళ్ళను అందుకోడానికి ఈ వాడుకరి సుముఖంగా లేరు.',
+'emailnotarget' => 'గ్రహీతగా ఇచ్చిన వాడుకరిపేరు తప్పైనా కావచ్చు, లేదా అసలే ఉండి ఉండకపోవచ్చు',
'emailtarget' => 'అందుకొనేవారి వాడుకరిపేరు ఇవ్వండి',
'emailusername' => 'వాడుకరి పేరు:',
'emailusernamesubmit' => 'దాఖలుచెయ్యి',
'watchmethod-list' => 'ఇటీవలి మార్పుల కొరకు వీక్షణ జాబితాలోని పేజీలు పరిశీలించబడుతున్నాయి',
'watchlistcontains' => 'మీ వీక్షణ జాబితాలో {{PLURAL:$1|ఒక పేజీ ఉంది|$1 పేజీలు ఉన్నాయి}}.',
'iteminvalidname' => "'$1' తో ఇబ్బంది, సరైన పేరు కాదు...",
-'wlnote' => "$3 నాడు $4 సమయానికి, గడచిన {{PLURAL:$2|గంటలో|'''$2''' గంటలలో}} జరిగిన {{PLURAL:$1|ఒక్క మార్పు కింద ఉంది|'''$1''' మార్పులు కింద ఉన్నాయి}}.",
'wlshowlast' => 'గత $1 గంటలు $2 రోజులు $3 చూపించు',
'watchlist-options' => 'వీక్షణ జాబితా ఎంపికలు',
# Displayed when you click the "watch" button and it is in the process of watching
'watching' => 'గమనిస్తున్నాం...',
'unwatching' => 'వీక్షణ నుండి తొలగిస్తున్నా...',
+'watcherrortext' => '"$1" కు మీ సెట్టింగులను మార్చేటపుడు ఏదో లోపం దొర్లింది.',
'enotif_mailer' => '{{SITENAME}} ప్రకటన మెయిలు పంపునది',
'enotif_reset' => 'అన్ని పేజీలను చూసినట్లుగా గుర్తించు',
'enotif_impersonal_salutation' => '{{SITENAME}} వాడుకరి',
+'enotif_subject_deleted' => '{{SITENAME}} $1 పేజీని $2 {{GENDER:$2|తొలగించారు}}',
+'enotif_subject_created' => '{{SITENAME}} $1 పేజీని $2 {{GENDER:$2|సృష్టించారు}}',
+'enotif_subject_moved' => '{{SITENAME}} $1 పేజీని $2 {{GENDER:$2|తరలించారు}}',
+'enotif_subject_restored' => '{{SITENAME}} $1 పేజీని $2 {{GENDER:$2|పునస్థాపించారు}}',
+'enotif_subject_changed' => '{{SITENAME}} $1 పేజీని $2 {{GENDER:$2|మార్చారు}}',
+'enotif_body_intro_deleted' => '{{SITENAME}} $1 పేజీని $PAGEEDITDATE న $2 {{GENDER:$2|తొలగించారు}}, $3 చూడండి.',
+'enotif_body_intro_created' => '{{SITENAME}} $1 పేజీని $PAGEEDITDATE న $2 {{GENDER:$2|సృష్టించారు}}, ప్రస్తుత కూర్పు కోసం $3 చూడండి.',
+'enotif_body_intro_moved' => '{{SITENAME}} $1 పేజీని $PAGEEDITDATE న $2 {{GENDER:$2|తరలించారు}}, ప్రస్తుత కూర్పు కోసం $3 చూడండి.',
+'enotif_body_intro_restored' => '{{SITENAME}} $1 పేజీని $PAGEEDITDATE న $2 {{GENDER:$2|పునస్థాపించారు}}, ప్రస్తుత కూర్పు కోసం $3 చూడండి.',
+'enotif_body_intro_changed' => '{{SITENAME}} $1 పేజీని $PAGEEDITDATE న $2 {{GENDER:$2|మార్చారు}}, ప్రస్తుత కూర్పు కోసం $3 చూడండి.',
'enotif_lastvisited' => 'మీ గత సందర్శన తరువాత జరిగిన మార్పుల కొరకు $1 చూడండి.',
'enotif_lastdiff' => 'ఈ మార్పు చూసేందుకు $1 కు వెళ్ళండి.',
'enotif_anon_editor' => 'అజ్ఞాత వాడుకరి $1',
'deleteotherreason' => 'ఇతర/అదనపు కారణం:',
'deletereasonotherlist' => 'ఇతర కారణం',
'deletereason-dropdown' => '* తొలగింపుకి సాధారణ కారణాలు
-** రచయిత అభ్యర్థన
+** స్పాము
+** దుశ్చర్య
** కాపీహక్కుల ఉల్లంఘన
-** దుశ్చర్య',
+** రచయిత అభ్యర్థన
+** తెగిపోయిన దారిమార్పు',
'delete-edit-reasonlist' => 'తొలగింపు కారణాలని మార్చండి',
'delete-toobig' => 'ఈ పేజీకి $1 {{PLURAL:$1|కూర్పుకు|కూర్పులకు}} మించిన, చాలా పెద్ద దిద్దుబాటు చరితం ఉంది. {{SITENAME}}కు అడ్డంకులు కలగడాన్ని నివారించేందుకు గాను, అలాంటి పెద్ద పేజీల తొలగింపును నియంత్రించాం.',
'delete-warning-toobig' => 'ఈ పేజీకి $1 {{PLURAL:$1|కూర్పుకు|కూర్పులకు}} మించిన, చాలా పెద్ద దిద్దుబాటు చరితం ఉంది. దాన్ని తొలగిస్తే {{SITENAME}}కి చెందిన డేటాబేసు కార్యాలకు ఆటంకం కలగొచ్చు; అప్రమత్తతో ముందుకుసాగండి.',
+'deleting-backlinks-warning' => "'''హెచ్చరిక:''' మీరు తొలగించబోతున్న పేజీకి ఇతర పేజీల నుండి లింకులు ఉన్నాయి.",
# Rollback
'rollback' => 'దిద్దుబాట్లను రద్దుచేయి',
'protect-title' => '"$1" యొక్క సంరక్షణ స్థాయి అమర్పు',
'protect-title-notallowed' => '"$1" యొక్క సంరక్షణ స్థాయి',
'prot_1movedto2' => '$1, $2కు తరలించబడింది',
+'protect-badnamespace-title' => 'సంరక్షించజాలని పేరుబరి',
'protect-badnamespace-text' => 'ఈ పేరుబరిలో ఉన్న పేజీలను సంరక్షించలేరు.',
+'protect-norestrictiontypes-title' => 'సంరక్షించజాలని పేజీ',
'protect-legend' => 'సంరక్షణను నిర్ధారించు',
'protectcomment' => 'కారణం:',
'protectexpiry' => 'గడువు:',
# Namespace form on various pages
'namespace' => 'పేరుబరి:',
'invert' => 'ఎంపికను తిరగవెయ్యి',
+'tooltip-invert' => 'ఎంచుకున్న పేరుబరి (చెక్ చేసి ఉంటే అనుబంధ పేరుబరి కూడా) లోని పేజీల్లో జరిగిన మార్పులను దాచేందుకు ఈ పెట్టెను చెక్ చెయ్యండి',
'namespace_association' => 'సంబంధిత పేరుబరి',
'blanknamespace' => '(మొదటి)',
'unlockdbsuccesstext' => 'డాటాబేసుకి తాళం తీసాం.',
'lockfilenotwritable' => 'డేటాబేసుకు తాళంవేయగల ఫైలులో రాయలేకపోతున్నాను. డేటాబేసుకు తాళంవేయటానికిగానీ లేదా తీసేయటానికిగానీ, వెబ్సర్వరులో ఉన్న ఈ ఫైలులో రాయగలగాలి.',
'databasenotlocked' => 'డేటాబేసు లాకవలేదు.',
+'lockedbyandtime' => '($2 న $3 వద్ద {{GENDER:$1|$1}} ద్వారా)',
# Move page
'move-page' => '$1 తరలింపు',
'tooltip-pt-watchlist' => 'మీరు మార్పుల కొరకు గమనిస్తున్న పేజీల జాబితా',
'tooltip-pt-mycontris' => 'మీ మార్పు-చేర్పుల జాబితా',
'tooltip-pt-login' => 'మీరు లోనికి ప్రవేశించడాన్ని ప్రోత్సహిస్తున్నాం; కానీ అది తప్పనిసరి కాదు.',
-'tooltip-pt-anonlogin' => 'మీరు లోనికి ప్రవేశించడాన్ని ప్రోత్సహిస్తాం; కానీ, అది తప్పనిసరి కాదు',
'tooltip-pt-logout' => 'నిష్క్రమించండి',
'tooltip-ca-talk' => 'విషయపు పుట గురించి చర్చ',
'tooltip-ca-edit' => 'ఈ పేజీని మీరు సరిదిద్దవచ్చు. దాచేముందు మునుజూపు బొత్తాన్ని వాడండి.',
# Special:SpecialPages
'specialpages' => 'ప్రత్యేక పేజీలు',
+'specialpages-note-top' => 'సూచిక',
'specialpages-note' => '* మామూలు ప్రత్యేక పుటలు.
* <strong class="mw-specialpagerestricted">నియంత్రిత ప్రత్యేక పుటలు.</strong>
* <span class="mw-specialpagecached">Cached ప్రత్యేక పుటలు (పాతబడి ఉండొచ్చు).</span>',
'duration-minutes' => '$1 {{PLURAL:$1|నిమిషం|నిమిషాలు}}',
'duration-hours' => '$1 {{PLURAL:$1|గంట|గంటలు}}',
'duration-days' => '$1 {{PLURAL:$1|రోజు|రోజులు}}',
-'duration-weeks' => '$1 {{PLURAL: $1|వారం|వారాలు}}',
+'duration-weeks' => '$1 {{PLURAL:$1|వారం|వారాలు}}',
'duration-years' => '$1 {{PLURAL:$1|సంవత్సరం|సంవత్సరాలు}}',
'duration-decades' => '$1 {{PLURAL:$1|దశాబ్దం|దశాబ్దాలు}}',
'duration-centuries' => '$1 {{PLURAL:$1|శతాబ్దం|శతాబ్దాలు}}',
$messages = array(
# User preference toggles
'tog-underline' => 'Subliña ligasaun sira:',
-'tog-justify' => 'Justifika parágrafu sira',
'tog-hideminor' => "Lá'os hatudu muda ki-ki'ik iha mudansa foufoun sira",
'tog-usenewrc' => 'Iha lista "mudansa foufoun sira" no "lista hateke": Hatudu mudansa iha grupu sira - grupu ida ba pájina ida (presiza JavaScript)',
'tog-showtoolbar' => 'Hatudu kaixa edita (presiza JavaScript)',
$messages = array(
# User preference toggles
'tog-underline' => 'Зерпайвандҳо хат кашида шаванд:',
-'tog-justify' => 'Тамомченкардани бандҳо',
'tog-hideminor' => 'Нишон надодани тағйироти ҷузъи дар феҳристи тағйироти охир',
'tog-hidepatrolled' => 'Пинҳон кардани вироишҳои гаштхӯрда дар тағйироти охир',
'tog-newpageshidepatrolled' => 'Пинҳони саҳифаҳои гаштхӯрда аз феҳристи саҳифаҳои нав',
'tog-numberheadings' => 'шуморагузори~и худкори инвонҳо',
'tog-showtoolbar' => 'Намоиши навори абзори вироиш (JavaScript)',
'tog-editondblclick' => 'Вироиш намудани саҳифаҳо ҳангоми ду карат пахш намудани тугмаи мушак (JavaScript)',
-'tog-editsection' => 'Иҷозат додани вироиши қисмати саҳифа ба воситаи пайванди [вироиш]',
'tog-editsectiononrightclick' => 'Ба кор андохтани вироиши сарлавҳаҳои қисматҳо бо клики рост (ҶаваСкрипт)',
-'tog-showtoc' => 'Намоиши феҳристи мундариҷон (барои мақолаҳои бо беш аз 3 сарлавҳа)',
'tog-rememberpassword' => 'Вуруди манро дар ин мурургар дар хотир нигоҳ дор (ҳадди аксар то $1 {{PLURAL:$1|рӯз|рӯз}})',
'tog-watchcreations' => 'Саҳифаҳое, ки месозам ва парвандаҳое, ки боргузорӣ мекунам ба феҳристи пайгириҳоям афзуда шавад.',
'tog-watchdefault' => 'Саҳифаҳо ва парвандаҳое, ки вироиш мекунам ба феҳристи пайгириҳоям афзуда шавад',
'tog-enotifminoredits' => 'Барои тағийроти ҷузъӣ дар сафҳаҳо ва парвандаҳо ҳам ба ман номае фиристода шавад',
'tog-enotifrevealaddr' => 'Нишонаи почтаи электронии ман дар номаҳои иттилорасонӣ қайд шавад',
'tog-shownumberswatching' => 'Нишон додани шумораи корбарони пайгир',
-'tog-oldsig' => 'Ð\9fеÑ\88намоиÑ\88и имзои вуҷуддошта:',
+'tog-oldsig' => 'Ð\98мзои вуҷуддошта:',
'tog-fancysig' => 'Имзоро ба сурати викиматн ба назар бигир (бе пайванди худкор)',
-'tog-uselivepreview' => 'Истифода аз пешнамоиши зинда (ҶаваСкрипт) (Озмоишӣ)',
+'tog-uselivepreview' => 'Истифода аз пешнамоиши зинда(озмоишӣ)',
'tog-forceeditsummary' => 'Ҳангоме ки хулосаи вироиш нанавиштаам юа ман ислоҳ бидеҳ',
'tog-watchlisthideown' => 'Пинҳон намудани вироишҳои ман дар феҳристи назарот',
'tog-watchlisthidebots' => 'Пинҳон намудани вироишҳои бот дар феҳристи назарот',
'tog-diffonly' => 'Муҳтавиёти саҳифаи зерин намоиш дода нашавад',
'tog-showhiddencats' => 'Гурӯҳҳои пинҳонро намоиш бидеҳ',
'tog-norollbackdiff' => 'Баъд аз вогардони тафовутро нишон надеҳ',
+'tog-useeditwarning' => 'Дар ҳолати тарки саҳифа вироиши тағйироти захиранашуда манро огаҳ кун',
+'tog-prefershttps' => 'Ҳамеша пайвастшавии амнро дар ҳоли вуруд истифода бар',
'underline-always' => 'Доимо',
'underline-never' => 'Ҳеҷгоҳ',
'november' => 'Ноябр',
'december' => 'Декабр',
'january-gen' => 'Январ',
-'february-gen' => 'феврали',
-'march-gen' => 'маÑ\80Ñ\82и',
+'february-gen' => 'Феврал',
+'march-gen' => 'Ð\9cаÑ\80Ñ\82',
'april-gen' => 'Апрел',
-'may-gen' => 'май',
-'june-gen' => 'иÑ\8eни',
+'may-gen' => 'Ð\9cай',
+'june-gen' => 'Ð\98Ñ\8eн',
'july-gen' => 'Июл',
'august-gen' => 'Август',
-'september-gen' => 'сентябри',
+'september-gen' => 'Сентябр',
'october-gen' => 'Октябр',
'november-gen' => 'Ноябр',
-'december-gen' => 'Декабри',
+'december-gen' => 'Декабр',
'jan' => 'Ян',
'feb' => 'Фев',
'mar' => 'Мар',
'oct' => 'Окт',
'nov' => 'Нов',
'dec' => 'Дек',
+'january-date' => '$1 январ',
+'february-date' => '$1 феврал',
+'march-date' => '$1 март',
+'april-date' => '$1 апрел',
+'may-date' => '$1 май',
+'june-date' => '$1 июн',
+'july-date' => '$1 июл',
+'august-date' => '$1 август',
+'september-date' => '$1 сентябр',
+'october-date' => '$1 октябр',
+'november-date' => '$1 ноябр',
+'december-date' => '$1 декабр',
# Categories related messages
'pagecategories' => '{{PLURAL:$1|Гурӯҳ|Гурӯҳҳо}}',
'newwindow' => '(дар равзанаи ҷадид боз мешавад)',
'cancel' => 'Лағв',
'moredotdotdot' => 'Бештар...',
+'morenotlisted' => 'Ин феҳрист комил нест.',
'mypage' => 'Саҳифа',
'mytalk' => 'Баҳс',
'anontalk' => 'Баҳс бо ин IP',
'vector-action-move' => 'Кӯчонидан',
'vector-action-protect' => 'Муҳофизат',
'vector-action-undelete' => 'Эҳё',
-'vector-action-unprotect' => 'Ð\91а даÑ\80 оваÑ\80дан аз муҳофизат',
+'vector-action-unprotect' => 'ТаÒ\93йиÑ\80и муҳофизат',
'vector-view-create' => 'Эҷод',
'vector-view-edit' => 'Вироиш',
'vector-view-history' => 'Намоиши таърих',
'create-this-page' => 'Эҷод кардани ин саҳифа',
'delete' => 'Ҳазф',
'deletethispage' => 'Ин саҳифаро ҳазф кунед',
+'undeletethispage' => 'Барқарор кардани ин саҳифа',
'undelete_short' => 'Эҳёи {{PLURAL:$1|вироиш|$1 вироишот}}',
+'viewdeleted_short' => '{{PLURAL:$1|вироиши ҳазфшуда|$1 вироишҳои ҳазфшуда}}',
'protect' => 'Ҳифз кардан',
'protect_change' => 'тағйир',
'protectthispage' => 'Ҳифз намудани ин саҳифа',
'unprotect' => 'Тағйири сатҳи муҳофизат',
-'unprotectthispage' => 'Ð\90з мÑ\83ҳоÑ\84изаÑ\82 даÑ\80 оваÑ\80дани ин саҳифа',
+'unprotectthispage' => 'ТаÒ\93йиÑ\80и мÑ\83ҳоÑ\84изаÑ\82и ин саҳифа',
'newpage' => 'Саҳифаи нав',
'talkpage' => 'Ин саҳифаро муҳокима кунед',
'talkpagelinktext' => 'Баҳс',
'articlepage' => 'Намоиши мақола',
'talk' => 'Баҳс',
'views' => 'Назарот',
-'toolbox' => 'Ҷаъбаи абзор',
+'toolbox' => 'Абзорҳо',
'userpage' => 'Саҳифаи корбарро бинед',
'projectpage' => 'Дидани саҳифаи лоиҳа',
'imagepage' => 'Намоиши саҳифаи парванда',
'viewhelppage' => 'Намоиши саҳифаи роҳнамо',
'categorypage' => 'Намоиши саҳифаи гурӯҳ',
'viewtalkpage' => 'Намоиши мубоҳисот',
-'otherlanguages' => 'бо забонҳои дигар',
+'otherlanguages' => 'Ð\91о забонҳои дигар',
'redirectedfrom' => '(Тағйири масир аз $1)',
'redirectpagesub' => 'Саҳифаи равонакунӣ',
'lastmodifiedat' => 'Ин саҳифа бори охир $2, $1 дигаргун карда шудааст.',
'protectedpage' => 'Саҳифаи муҳофизатшуда',
'jumpto' => 'Ҷаҳиш ба:',
'jumptonavigation' => 'гаштан',
-'jumptosearch' => 'Ҷустуҷӯи',
+'jumptosearch' => 'Ҷустуҷӯ',
'view-pool-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).
'aboutsite' => 'Дар бораи {{SITENAME}}',
'aboutpage' => 'Project:Дар бораи',
-'copyright' => 'Мӯҳтаво таҳти иҷозатномаи $1 дастрас аст.',
+'copyright' => 'Ð\9cÓ¯Ò³Ñ\82аво Ñ\82аҳÑ\82и иҷозаÑ\82номаи $1 ва Ñ\91 дигаÑ\80 даÑ\81Ñ\82Ñ\80аÑ\81 аÑ\81Ñ\82.',
'copyrightpage' => '{{ns:project}}:Copyrights',
-'currentevents' => 'Вокеаҳои кунунӣ',
+'currentevents' => 'Воқеаҳои кунунӣ',
'currentevents-url' => 'Project:Воқеаҳои кунунӣ',
'disclaimers' => 'Такзибнома',
'disclaimerpage' => 'Project:Такзибномаи умумӣ',
'nstab-media' => 'Расона',
'nstab-special' => 'Саҳифаи вижа',
'nstab-project' => 'Саҳифаи лоиҳа',
-'nstab-image' => 'файл',
+'nstab-image' => 'Файл',
'nstab-mediawiki' => 'Пайём',
'nstab-template' => 'Шаблон',
'nstab-help' => 'Кӯмак',
'cannotdelete' => 'Саҳифа ё парвандаи мушаххасшударо ҳазф карда нашуд. (Мумкин аст қаблан касе дигаре онро ҳазф карда бошад.)',
'badtitle' => 'Унвони номуносиб',
'badtitletext' => 'Унвони саҳифаи дархостшуда номӯътабар, холӣ, ё пайванди байнизабони ё байнивикии нодуруст буд. Он метавонад як ё якчанд аломатҳоеро дар бар гирад, ки дар унвонҳо истифода шуда наметавонанд.',
-'perfcached' => 'Додаҳои зерин аз ҳофизаи муваққатӣ фарохонӣ шудаанд ва мумкин аст, комилан ба рӯз нашудаанд. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
+'perfcached' => 'Додаҳои зерин аз ҳофизаи муваққатӣ фарохонӣ шудаанд ва мумкин аст, комилан ба рӯз нашудаанд. Ҳаддиаксар {{PLURAL:$1|як натиҷа|$1 натоиҷ}} дар ҳофиза дастрас аст.',
'perfcachedts' => 'Додаҳои зерин аз ҳофизаи муваққатӣ фарохонӣ шудаанд ва мумкин аст, охирин ба рӯзрасонӣ $1 аст. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
'querypage-no-updates' => 'Имкони ба рӯзрасонии ин саҳифа феълан ғайрифаъол шудааст.',
'viewsource' => 'Намоиши матни вики',
'userlogin-resetlink' => 'Ҷузъиёти вурудро фаромӯш кардаед?',
'createaccountmail' => 'бо почтаи электронӣ',
'createaccountreason' => 'Сабаб:',
+'createacct-submit' => 'Ҳисоби худро созед',
+'createacct-another-submit' => 'Ҳисоби дигаре созед',
+'createacct-benefit-heading' => '{{SITENAME}} тавассути одамони мисли шумо сохта шудааст.',
+'createacct-benefit-body1' => '{{PLURAL:$1|вироиш|вироишҳо}}',
+'createacct-benefit-body2' => '{{PLURAL:$1|саҳифа|саҳифаҳо}}',
+'createacct-benefit-body3' => '{{PLURAL:$1|саҳмгузор|саҳмгузорони}} охирин',
'badretype' => 'Калимаҳои убуре, ки ворид кардаед бо ҳамдигар мувофиқат намекунанд.',
'userexists' => 'Номи корбарии дохил кардашуда мавриди истифода аст.
-Ð\9dоми дигарероро интихоб кунед.',
+Ð\9bÑ\83Ñ\82Ñ\84ан номи дигарероро интихоб кунед.',
'loginerror' => 'Иштибоҳ дар вуруд',
+'createacct-error' => 'Иштибоҳи сохтани ҳисоб',
'createaccounterror' => 'Имкони сохтани ин ҳисоб вуҷуд надорад: $1',
'nocookiesnew' => 'Ҳисоби корбарӣ эҷод шуд, аммо шумо вориди сомона нашудаед. {{SITENAME}} барои вуруд кардани корбарон ба сомона аз кукиҳо (cookies) истифода мекунад. Шумо бояд кукиҳоро фаъол кунед. Лутфан кукиҳоро фаъол кунед, баъдан ба систем бо номи корбарии ҷадид ва калимаи убуратон вуруд кунед.',
'nocookieslogin' => '{{SITENAME}} барои ворид кардани корбарон ба систем аз кукиҳо (cookies) истифода мекунад. Кукиҳо фаъол нестанд. Лутфан кукиҳоро фаъол карда бори дигар бисанҷед.',
+'nocookiesfornew' => 'Ҳисоби корбарӣ сохта нашуд, чун мо манбаъи онро тасдиқ карда натавонистем.
+Мутмаин бошед, ки кукиҳои мурургар фаъоланд, ин саҳифро аз нав кушода бори дигар саъй кунед.',
'noname' => 'Номи корбари дурустеро шумо пешниҳод накардед.',
'loginsuccesstitle' => 'Вуруд бо муваффақият',
'loginsuccess' => "'''Шумо акнун ба Википедиа ҳамчун \"\$1\". вуруд кардед'''",
'login-userblocked' => 'Ин корбар баста шудааст. Вуруд манъ аст.',
'wrongpassword' => 'Калимаи убури нодуруст дохил карда шуд. Бори дигар санҷед.',
'wrongpasswordempty' => 'Калимаи убури дохил шуда холӣ аст. Бори дигар санҷед.',
-'passwordtooshort' => 'Ð\9aалимаи Ñ\83бÑ\83Ñ\80 Ñ\85еле кӯÑ\82оҳ аÑ\81Ñ\82. Ð\92ай боÑ\8fд ҳадди аÒ\9bал {{PLURAL:$1|1 аломаÑ\82|$1 аломаÑ\82ҳо}} доÑ\88Ñ\82а аз номи коÑ\80баÑ\80Ó£ Ñ\84аÑ\80Ò\9b кÑ\83над.',
+'passwordtooshort' => 'Ð\93Ñ\83заÑ\80вожа ҳадди аÒ\9bал {{PLURAL:$1|1 аломаÑ\82|$1 аломаÑ\82ҳо}} боÑ\8fд доÑ\88Ñ\82а боÑ\88ад.',
'password-name-match' => 'Гузарвожаи шумо бояд аз номи корбариатон тафовут дошта бошад.',
-'mailmypassword' => 'Гузарвожаи навро ба E-mail бифиристед',
+'password-login-forbidden' => 'Истифодаи ин номи корбарӣ ва гузарвожа манъ аст.',
+'mailmypassword' => 'Танзими гузарвожа',
'passwordremindertitle' => 'Муваққатан калимаи убурӣ ҷадид барои {{SITENAME}}',
-'passwordremindertext' => 'Касе (эҳтимолан худи Шумо), аз нишонаи IP $1 дархост кардааст, ки гузарвожаи ҷадиде барои {{SITENAME}} ($4) барои шумо бифиристем.
-Гузарвожаи муваққатӣ барои корбар "$2" ҳамакнун "$3" аст.
-Агар ин нияти шумо буд, шумо бояд вориди систем шавед ва гузарвожаи худро тағйир диҳед.
+'passwordremindertext' => 'Касе (эҳтимолан худи Шумо, аз нишонаи IP $1) гузарвожаи навро барои {{SITENAME}} ($4) дархост кардааст. Гузарвожаи муваққатӣ барои корбар "$2" сохта ва ба "$3" таъин шуд.
+Агар ин нияти шумо буд, шумо бояд вориди систем шавед ва гузарвожаи навро интихоб кунед.
-Агар касе дигаре инро дахост кардааст, ё инки шумо гузарвожаи пешинаи худро ба ёд овардаед ва дигар хоҳиши тағйир додани онро надоред, ба ин паём аҳмият надиҳед ва гузарвожаи пешинаи худро истифода баред.',
+Ð\90гаÑ\80 каÑ\81е дигаÑ\80е инÑ\80о даÑ\85оÑ\81Ñ\82 каÑ\80дааÑ\81Ñ\82, Ñ\91 инки Ñ\88Ñ\83мо гÑ\83заÑ\80вожаи пеÑ\88инаи Ñ\85Ñ\83дÑ\80о ба Ñ\91д оваÑ\80даед ва дигаÑ\80 Ñ\85оҳиÑ\88и Ñ\82аÒ\93йиÑ\80 додани онÑ\80о надоÑ\80ед, ба ин паÑ\91м аҳамиÑ\8fÑ\82 надиҳед ва гÑ\83заÑ\80вожаи пеÑ\88инаи Ñ\85Ñ\83дÑ\80о иÑ\81Ñ\82иÑ\84ода баÑ\80ед.',
'noemail' => 'Ҳеҷ нишонаи почтаи электронӣ барои корбар "$1" сабт нашудааст.',
'noemailcreate' => 'Шумо бояд як нишонаи почтаи электронии мӯътабарро ворид кунед',
'passwordsent' => 'Калимаи убури нав ба адреси e-mail, ки барои "$1" номнавис шудааст фиристода шуд.
Баъд аз дастрас кардани он, марҳамат карда вуруд кунед.',
'blocked-mailpassword' => 'Нишонаи IP шумо аз вироиш боз дошта шудааст ва аз ин рӯ ба манзури ҷилавгирӣ аз сӯиистифода аз баҳрагирӣ аз қобилияти барқарор кардани калимаи убурро надорад.',
-'eauthentsent' => 'Ð\9dомаи баÑ\80ои Ñ\82аÑ\81диÒ\9b ба ниÑ\88онаи поÑ\87Ñ\82а Ñ\8dлекÑ\82Ñ\80онӣ Ñ\84иÑ\80иÑ\81Ñ\82ода Ñ\88Ñ\83д. Ð\9fеÑ\88 аз Ñ\84иÑ\80иÑ\81Ñ\82одани нома ба ин ҳиÑ\81об, Ñ\88Ñ\83мо боÑ\8fд даÑ\81Ñ\82Ñ\83Ñ\80оÑ\82е ки ба он ниÑ\88онаи поÑ\87Ñ\82аи Ñ\8dлекÑ\82Ñ\80онӣ омадаÑ\81Ñ\82, иҷÑ\80о каÑ\80да, даÑ\80 ҳаÒ\9bиÒ\9bаÑ\82 ҳиÑ\81оби Ñ\85Ñ\83д бÑ\83данаÑ\88Ñ\80о боÑ\8fд тасдиқ кунед.',
+'eauthentsent' => 'Ð\9dомае баÑ\80ои Ñ\82аÑ\81диÒ\9b ба ниÑ\88онаи поÑ\87Ñ\82аи Ñ\8dлекÑ\82Ñ\80онии мÑ\83Ñ\88аÑ\85аÑ\81Ñ\88Ñ\83да Ñ\84иÑ\80иÑ\81Ñ\82ода Ñ\88Ñ\83д. Ð\9fеÑ\88 аз Ñ\84иÑ\80иÑ\81Ñ\82одани дигаÑ\80 нома ба ин ҳиÑ\81об, Ñ\88Ñ\83мо боÑ\8fд даÑ\81Ñ\82Ñ\83Ñ\80оÑ\82е ки ба он ниÑ\88онаи поÑ\87Ñ\82аи Ñ\8dлекÑ\82Ñ\80онӣ омадаÑ\81Ñ\82, иҷÑ\80о каÑ\80да, даÑ\80 ҳаÒ\9bиÒ\9bаÑ\82 ҳиÑ\81оби ШÑ\83мо бÑ\83данаÑ\88Ñ\80о тасдиқ кунед.',
'throttled-mailpassword' => 'Як ёдоварии калимаи убур барои шумо {{PLURAL:$1|соат|$1 соат}} гузашта фиристода шудааст. Барои чилавгирӣ аз сӯиистифода, фақат дар ҳар {{PLURAL:$1|соат|$1 соат}} танҳо як ёдоварӣ фиристода мешавад.',
'mailerror' => 'Хато дар фиристодани номаи электронӣ: $1',
'acct_creation_throttle_hit' => 'Бубахшед, Шумо аллакай $1 ҳисобҳо сохтед. Шумо бештар сохта наметавонед.',
Шумо метавонед дар дигар саҳифаҳо [[Special:Search/{{PAGENAME}}|унвони ин саҳифаро ҷустуҷӯ кунед]],
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} гузоришҳои алоқамандро ҷустуҷӯ намоед],
ё [{{fullurl:{{FULLPAGENAME}}|action=edit}} ин саҳифаро вироиш кунед]</span>.',
+'noarticletext-nopermission' => 'Дар ин саҳифа то кунун матне вуҷуд надорад. Шумо метавонед дар дигар саҳифаҳо [[Special:Search/{{PAGENAME}}|унвони ин саҳифаро ҷустуҷӯ кунед]], <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} гузоришҳои алоқамандро ҷустуҷӯ намоед], ё [{{fullurl:{{FULLPAGENAME}}|action=edit}} ин саҳифаро вироиш кунед]</span>.',
'userpage-userdoesnotexist' => 'Ҳисоби корбар "<nowiki>$1</nowiki>" сабт нашудааст. Итминон ҳосил кунед ки мехоҳед ин саҳифаро эчод ё вироиш кунед.',
'clearyourcache' => "'''Эзоҳ:''' Пас аз захирасозӣ мумкин аст барои дидани тағйирот ниёз бошад, ки ҳофизаи ниҳонии мурургари худро холӣ кунед. '''Мозилла / Файерфокс / Сафари:''' калиди ''Shift''-ро нигоҳ доред ва рӯи тугмаи ''Reload'' клик кунед, ё калидҳои ''Ctrl-Shift-R'' (''Cmd-Shift-R'' дар Эппл Макинтош) бо ҳам фишор диҳед; '''IE:''' калиди ''Ctrl'' нигоҳ доред ва рӯи тугмаи ''Refresh'' клик кунед, ё калидҳои ''Ctrl-F5'' бо ҳам фишор диҳед; '''Konqueror:''': тугмаи ''Reload''-ро оддӣ клик кунед, ё калиди ''F5'' фишор диҳед; Ба корбарони '''Opera''' мумкин аст лозим бошад, ки ҳофизаи ниҳонии худро комилан дар ''Tools→Preferences'' холӣ кунанд.",
'usercssyoucanpreview' => "'''Эзоҳ:''' Пеш парвандаи CSS ё JS худро захира кунед, бо истифода аз тугмаи \"Пешнамоиш\" метавонед онро озмоиш кунед.",
Шумо зарурияти вироиши ин саҳифаро дида баромаданатон лозим.
Сабти ҳазфшавии ин саҳифа барои фароҳам овардани имкониятҳои қулай оварда шудааст:",
+'moveddeleted-notice' => 'Ин саҳифа ҳазф шудааст.
+Гузориши ҳазф ва тағйири масири ин саҳифа дар зер барои иттилооти шумо оварда шудааст.',
# Parser/template warnings
+'post-expand-template-inclusion-warning' => '<strong>Огоҳӣ:</strong> Шаблони дар баргирифта хеле калон аст. Баъзе аз шаблонҳо дар бар гирифта намешавад.',
+'post-expand-template-inclusion-category' => 'Саҳифаҳое ки дар он ҳаҷми шаблон беш аз ҳад аст',
+'post-expand-template-argument-warning' => '<strong>Огоҳӣ:</strong> Ин саҳифа ҳаддиақал як шаблоне дорад, ки хосияти ҳаҷм калони васеъшавӣ дорад.
+Ин хосият аз байр гирифта шуд.',
'post-expand-template-argument-category' => 'Саҳифаҳои ҳавои шаблонҳои бо параметрҳои нодида гирифташуда',
# "Undo" feature
(қаблӣ) = тафовут бо нусхаи феълӣ, ҷузъ = вироиши ҷузъӣ',
'history-fieldset-title' => 'Мурури таърих',
'history-show-deleted' => 'Фақат ҳазфшуда',
-'histfirst' => 'Ð\90ввалин',
-'histlast' => 'Ð\9eÑ\85ирин',
+'histfirst' => 'кӯҳнаÑ\82аÑ\80ин',
+'histlast' => 'навÑ\82арин',
'historysize' => '({{PLURAL:$1|1 байт|$1 байт}})',
'historyempty' => '(холӣ)',
'lineno' => 'Сатри $1:',
'compareselectedversions' => 'Нусхаҳои интихобшударо муқоиса кунед',
'editundo' => 'ботил',
-'diff-multi' => '({{PLURAL:$1|як|$1}} вироиш миёнӣ тавассути {{PLURAL:$2|як|$2}} корбар нишон дода нашудааст)',
# Search results
'searchresults' => 'Натиҷаҳои ҷустуҷӯ',
'notextmatches' => 'Матни ҳеҷ мақолае рост намеояд',
'prevn' => 'қаблӣ {{PLURAL:$1|$1}}',
'nextn' => 'баъдӣ {{PLURAL:$1|$1}}',
+'prevn-title' => 'Қаблӣ $1 {{PLURAL:$1|натиҷа|натоиҷ}}',
+'nextn-title' => 'Баъдӣ $1 {{PLURAL:$1|натиҷа|натоиҷ}}',
+'shown-title' => 'Намоиши $1 {{PLURAL:$1|натиҷа|натоиҷ}} дар ҳар саҳифа',
'viewprevnext' => 'Намоиш ($1 {{int:pipe-separator}} $2) ($3)',
'searchmenu-exists' => "'''Саҳифае бо номи \"[[:\$1]]\" дар ин вики вуҷуд дорад.'''",
'searchmenu-new' => "'''Эҷоди саҳифаи \"[[:\$1]]\" дар ин вики!'''",
'searchall' => 'ҳама',
'showingresults' => "Намоиши {{PLURAL:$1|'''1''' натиҷа|'''$1''' натоиҷ}} дар зер оғоз аз #'''$2'''.",
'showingresultsnum' => "Намоиши {{PLURAL:$3|'''1''' натиҷа|'''$3''' натоиҷ}} оғоз аз #'''$2'''.",
+'showingresultsheader' => '{{PLURAL:$5|Натиҷаи <strong>$1</strong> <strong>$3</strong>|Натоиҷи <strong>$1 - $2</strong> <strong>$3</strong>}} барои <strong>$4</strong>',
'search-nonefound' => 'Натиҷаи муносиб бо дархост пайдо нашуд.',
'powersearch-legend' => 'Ҷустуҷӯи пешрафта',
'powersearch-ns' => 'Ҷустуҷӯ дар фазоҳои ном:',
'rows' => 'Теъдоди сатрҳо:',
'columns' => 'Теъдоди сутунҳо:',
'searchresultshead' => 'Ҷустуҷӯ',
-'resultsperpage' => 'Теъдоди натоиҷ дар ҳар саҳифа:',
'stub-threshold' => 'Остонаи вироиши пайвандҳои <a href="#" class="stub">ноқис</a>:',
'recentchangesdays' => 'Теъдоди рӯзҳои намоиш додашуда дар тағйироти охир:',
'recentchangescount' => 'Теъдоди вироишҳо барои намоиш дар тағйироти охир:',
'rclistfrom' => 'Нишон додани тағйиротҳои нав сар карда аз $1',
'rcshowhideminor' => '$1 вироишҳои хурд',
'rcshowhidebots' => '$1 ботҳо',
-'rcshowhideliu' => '$1 корбарони вурудшуда',
+'rcshowhideliu' => '$1 корбарони сабтиномшуда',
'rcshowhideanons' => '$1 корбарони вуруднашуда',
'rcshowhidepatr' => '$1 вироишҳои гаштӣ',
'rcshowhidemine' => '$1 вироишҳои ман',
'rc_categories' => 'Маҳдудият ба гурӯҳҳо (бо аломати "|" ҷудо кунед)',
'rc_categories_any' => 'Ҳар кадом',
'newsectionsummary' => '/* $1 */ бахши ҷадид',
-'rc-enhanced-expand' => 'Намоиши ҷузъиёт (ниёзманд ба Ҷава Скрипт)',
+'rc-enhanced-expand' => 'Намоиши ҷузъиёт',
'rc-enhanced-hide' => 'Пинҳони ҷузъиёт',
# Recent changes linked
'recentchangeslinked' => 'Таъғироти монандӣ',
'recentchangeslinked-feed' => 'Таъғироти монандӣ',
-'recentchangeslinked-toolbox' => 'Таъғироти монандӣ',
+'recentchangeslinked-toolbox' => 'Тағйироти вобаста',
'recentchangeslinked-title' => 'Тағйирҳои алоқаманд ба "$1"',
'recentchangeslinked-summary' => "Ин феҳристи тағйироти охир барои саҳифаҳои пайваста аз саҳифаи мушаххасшуда мебошад (ё ба аъзоёни гурӯҳи мушаххасшуда).
Саҳифаҳои дар [[Special:Watchlist|феҳристи назароти шумо]] буда '''пурранг''' ҳастанд.",
'linkstoimage' => '{{PLURAL:$1|Саҳифаҳои|$1 Саҳифаи}} зерин ба ин акс пайванданд:',
'nolinkstoimage' => 'Ҳеҷ саҳифае ба ин акс пайванд надорад.',
'sharedupload' => 'Ин парванда аз $1 мебошад ва шояд аз тарафи дигар лоиҳаҳо истифода шавад.',
+'sharedupload-desc-here' => 'Ин файл аз $1 ва дар дигар лоиҳаҳо метавонад истифода шавад. Тафсилоти ин файл [$2 саҳифаи тафсилоти файл] дар зер нишон дода шудааст.',
'uploadnewversion-linktext' => 'Бор кардани нусхаи ҷадидӣ ин парванда',
# File reversion
'watchmethod-list' => 'баррасии саҳифаҳои пайгиришуда барои вироишҳои охир',
'watchlistcontains' => 'Феҳристи пайгириҳои шумо $1 {{PLURAL:$1|саҳифаро|саҳифаҳоро}} дар бар мегирад.',
'iteminvalidname' => "Мушкилӣ бо мавриди '$1', номи номӯътабар аст...",
-'wlnote' => "Дар зер {{PLURAL:$1|охирин тағйир|'''$1''' охирин тағйирот}} дар $2 соати охир {{PLURAL:омадааст|омадаанд}}.",
'wlshowlast' => 'Намоиши охирин $1 соат $2 рӯзҳо $3',
'watchlist-options' => 'Ихтиёроти феҳристи пайгириҳо',
'contributions' => 'Ҳиссагузориҳои {{GENDER:$1|корбар}}',
'contributions-title' => 'Ҳиссагузориҳои корбар барои $1',
'mycontris' => 'Ҳиссагузориҳо',
-'contribsub2' => 'Барои $1 ($2)',
+'contribsub2' => 'Барои {{GENDER:$3|$1}} ($2)',
'nocontribs' => 'Ҳеҷ тағйире бо ин мушаххасот пайдо нашуд.',
-'uctop' => '(боло)',
+'uctop' => '(кÑ\83нÑ\83нӣ)',
'month' => 'Дар ин моҳ (ва қабл аз он):',
'year' => 'Дар ин сол (ва қабл аз он):',
'sp-contributions-userrights' => 'Мудирияти ихтиёроти корбарӣ',
'sp-contributions-search' => 'Ҷустуҷӯи ҳиссагузориҳо',
'sp-contributions-username' => 'IP нишона ё номи корбар:',
+'sp-contributions-toponly' => 'Танҳо вироиширо охирин нусхаҳоро нишон деҳ',
'sp-contributions-submit' => 'Ҷустуҷӯ',
# What links here
'tooltip-pt-watchlist' => 'Рӯйхати саҳифаҳое, ки тағйиротҳояшонро Шумо назорат мекунед',
'tooltip-pt-mycontris' => 'Феҳристи ҳиссагузориҳои шумо',
'tooltip-pt-login' => 'Тавсия мешавад ки ба систем ворид шавад, лекин иҷборӣ нест.',
-'tooltip-pt-anonlogin' => 'Ба шумо тавзеҳ мешавад, ки ба систем ворид шавед, лекин ин иҷборӣ нест.',
'tooltip-pt-logout' => 'Хуруҷ аз систем',
'tooltip-ca-talk' => 'Баҳси матни таркибии ин саҳифа',
'tooltip-ca-edit' => 'Шумо ин саҳифаро вироиш карда метавонед. Пеш аз захира кардани саҳифа пешнамоишро истифода баред.',
'tooltip-ca-move' => 'Кӯчонидани ин саҳифа',
'tooltip-ca-watch' => 'Ин саҳифаро метавонед ба феҳристи назароти худ дохил кунед',
'tooltip-ca-unwatch' => 'Гирифта партофтани ин саҳифа аз феҳристи назароти Шумо',
-'tooltip-search' => 'Ҷустуҷӯи {{SITENAME}}',
+'tooltip-search' => 'Ҷустуҷӯ дар {{SITENAME}}',
'tooltip-search-go' => 'Гузаштан ба саҳифае, ки айнан чунин ном дорад, агар вуҷуд дошта бошад',
'tooltip-search-fulltext' => 'Ҷустуҷӯи саҳифаҳое, ки чунин матн доранд',
'tooltip-p-logo' => 'Саҳифаи Аслӣ',
'tooltip-n-mainpage' => 'Гузаштан ба Саҳифаи Аслӣ',
'tooltip-n-mainpage-description' => 'Мушоҳидаи саҳифаи аслӣ',
-'tooltip-n-portal' => 'Дар бораи лоиҳа ва чи корҳоро метавонед кард',
+'tooltip-n-portal' => 'Дар бораи лоиҳа, чӣ корҳоро метавонед кард, ва дарёфти чизҳо',
'tooltip-n-currentevents' => 'Ёфтани иттилооти пешзамина перомуни воқеаҳои кунунӣ',
-'tooltip-n-recentchanges' => 'Рӯйхати тағйиротҳо дар Википедиа',
+'tooltip-n-recentchanges' => 'Рӯйхати тағйирот дар Википедиа',
'tooltip-n-randompage' => 'Овардани як саҳифаи тасодуфӣ',
-'tooltip-n-help' => 'Ð\93Ñ\83заÑ\88Ñ\82ан ба Роҳнамо.',
+'tooltip-n-help' => 'Ð\9cакон баÑ\80ои даÑ\80Ñ\91Ñ\84Ñ\82',
'tooltip-t-whatlinkshere' => 'Рӯйхати ҳамаи саҳифаҳое, ки ба ин саҳифа пайванд доранд',
'tooltip-t-recentchangeslinked' => 'Тағйироти охир ин саҳифаҳое, ки ин саҳифа ба онҳо пайванд дорад',
'tooltip-feed-rss' => 'Хабарномаи RSS барои ин саҳифа',
'file-info-size' => '$1 × $2 пиксел, ҳаҷми парванда: $3, навъи MIME: $4',
'file-nohires' => 'Нусхаи ҳаҷман ва сифатан баландтар дастрас нест.',
'svg-long-desc' => 'SVG парванда, исмӣ $1 × $2 пиксел, андозаи парванда: $3',
-'show-big-image' => 'Ð\90кÑ\81и пÑ\83Ñ\80Ñ\80а',
+'show-big-image' => 'Ð\90кÑ\81и аÑ\81лӣ',
# Special:NewFiles
'newimages' => 'Намоишгоҳи парвандаҳои ҷадид',
$messages = array(
# User preference toggles
'tog-underline' => 'Zerpajvandho xat kaşida şavand:',
-'tog-justify' => 'Tamomcenkardani bandho',
'tog-hideminor' => "Nişon nadodani taƣjiroti çuz'i dar fehristi taƣjiroti oxir",
'tog-hidepatrolled' => 'Pinhon kardani viroişhoi gaştxūrda dar taƣjiroti oxir',
'tog-newpageshidepatrolled' => 'Pinhoni sahifahoi gaştxūrda az fehristi sahifahoi nav',
'tog-numberheadings' => 'şumoraguzori~i xudkori invonho',
'tog-showtoolbar' => 'Namoişi navori abzori viroiş (JavaScript)',
'tog-editondblclick' => 'Viroiş namudani sahifaho hangomi du karat paxş namudani tugmai muşak (JavaScript)',
-'tog-editsection' => 'Içozat dodani viroişi qismati sahifa ba vositai pajvandi [viroiş]',
'tog-editsectiononrightclick' => 'Ba kor andoxtani viroişi sarlavhahoi qismatho bo kliki rost (ÇavaSkript)',
-'tog-showtoc' => 'Namoişi fehristi mundariçon (baroi maqolahoi bo beş az 3 sarlavha)',
'tog-rememberpassword' => 'Vurudi manro dar in mururgar dar xotir nigoh dor (haddi aksar to $1 {{PLURAL:$1|rūz|rūz}})',
'tog-watchcreations' => 'Doxil namudani sahifahoe, ki man soxtaam ba fehristi nazaroti man',
'tog-watchdefault' => 'Sahifahoi eçodkardaamro ba fehristi pajgiriam ilova kuned',
'lineno' => 'Satri $1:',
'compareselectedversions' => 'Nusxahoi intixobşudaro muqoisa kuned',
'editundo' => 'botil',
-'diff-multi' => '({{PLURAL:$1|viroişi mijonī|$1 viroişoti mijonī}} nişon doda naşudaast.)',
# Search results
'searchresults' => 'Natiçahoi çustuçū',
'rows' => "Te'dodi satrho:",
'columns' => "Te'dodi sutunho:",
'searchresultshead' => 'Çustuçū',
-'resultsperpage' => "Te'dodi natoiç dar har sahifa:",
'stub-threshold' => 'Ostonai viroişi pajvandhoi <a href="#" class="stub">noqis</a>:',
'recentchangesdays' => "Te'dodi rūzhoi namoiş dodaşuda dar taƣjiroti oxir:",
'savedprefs' => 'Tarçihoti şumo zaxira şud.',
'watchmethod-list' => 'barrasiji sahifahoi pajgirişuda baroi viroişhoi oxir',
'watchlistcontains' => 'Fehristi pajgirihoi şumo $1 {{PLURAL:$1|sahifaro|sahifahoro}} dar bar megirad.',
'iteminvalidname' => "Muşkilī bo mavridi '$1', nomi nomū'tabar ast...",
-'wlnote' => "Dar zer {{PLURAL:$1|oxirin taƣjir|'''$1''' oxirin taƣjirot}} dar $2 soati oxir {{PLURAL:omadaast|omadaand}}.",
'wlshowlast' => 'Namoişi oxirin $1 soat $2 rūzho $3',
'watchlist-options' => 'Ixtijoroti fehristi pajgiriho',
'tooltip-pt-watchlist' => 'Rūjxati sahifahoe, ki taƣjirothojaşonro Şumo nazorat mekuned',
'tooltip-pt-mycontris' => 'Fehristi hissaguzorihoi şumo',
'tooltip-pt-login' => 'Tavsija meşavad ki ba sistem vorid şavad, lekin içborī nest.',
-'tooltip-pt-anonlogin' => 'Ba şumo tavzeh meşavad, ki ba sistem vorid şaved, lekin in içborī nest.',
'tooltip-pt-logout' => 'Xuruç az sistem',
'tooltip-ca-talk' => 'Bahsi matni tarkibiji in sahifa',
'tooltip-ca-edit' => 'Şumo in sahifaro viroiş karda metavoned. Peş az zaxira kardani sahifa peşnamoişro istifoda bared.',
$messages = array(
# User preference toggles
'tog-underline' => 'การขีดเส้นใต้ลิงก์:',
-'tog-justify' => 'จัดย่อหน้าชิดขอบ',
'tog-hideminor' => 'ซ่อนการแก้ไขเล็กน้อยในหน้าปรับปรุงล่าสุด',
'tog-hidepatrolled' => 'ซ่อนการแก้ไขที่ตรวจแล้วในหน้าปรับปรุงล่าสุด',
'tog-newpageshidepatrolled' => 'ซ่อนหน้าที่ตรวจแล้วจากรายการหน้าใหม่',
'tog-numberheadings' => 'ใส่เลขหัวข้อในสารบัญอัตโนมัติ',
'tog-showtoolbar' => 'แสดงแถบเครื่องมือแก้ไข',
'tog-editondblclick' => 'แก้ไขหน้าเมื่อดับเบิลคลิก',
-'tog-editsection' => 'เปิดการแก้ไขเฉพาะส่วนผ่านลิงก์ [แก้ไข]',
'tog-editsectiononrightclick' => 'เปิดใช้งานการแก้ไขเฉพาะส่วนโดยคลิกขวาที่หัวข้อ',
-'tog-showtoc' => 'แสดงสารบัญ (สำหรับหน้าที่มีมากกว่า 3 หัวข้อ)',
'tog-rememberpassword' => 'จำการล็อกอินของฉันในเบราว์เซอร์นี้ (สูงสุด $1 วัน)',
'tog-watchcreations' => 'เพิ่มหน้าที่ฉันสร้างและไฟล์ที่ฉันอัปโหลดเข้ารายการเฝ้าดู',
'tog-watchdefault' => 'เพิ่มหน้าและไฟล์ที่ฉันแก้ไขเข้ารายการเฝ้าดู',
'tog-enotifwatchlistpages' => 'อีเมลหาเมื่อหน้าหรือไฟล์ในรายการเฝ้าดูมีการเปลี่ยนแปลง',
'tog-enotifusertalkpages' => 'อีเมลหาเมื่อหน้าคุยกับผู้ใช้ของฉันมีการเปลี่ยนแปลง',
'tog-enotifminoredits' => 'อีเมลหาเช่นกันสำหรับการแก้ไขหน้าและไฟล์เล็กน้อย',
-'tog-enotifrevealaddr' => 'à¹\80à¸\9bิà¸\94à¹\80à¸\9cยà¸\97ีà¹\88à¸à¸¢à¸¹à¹\88à¸à¸µà¹\80มลà¹\8cà¸\82à¸à¸\87à¸\89ัà¸\99à¹\83à¸\99à¸à¸µà¹\80มลà¹\8cแจ้งเตือน',
+'tog-enotifrevealaddr' => 'à¹\80à¸\9bิà¸\94à¹\80à¸\9cยà¸\97ีà¹\88à¸à¸¢à¸¹à¹\88à¸à¸µà¹\80มลà¸\82à¸à¸\87à¸\89ัà¸\99à¹\83à¸\99à¸à¸µà¹\80มลแจ้งเตือน',
'tog-shownumberswatching' => 'แสดงจำนวนผู้ใช้ที่เฝ้าดู',
'tog-oldsig' => 'ลายเซ็นที่ใช้อยู่:',
'tog-fancysig' => 'ใช้คำสั่งวิกิที่ปรากฏในลายเซ็นนี้ (โดยไม่มีลิงก์อัตโนมัติ)',
'category-subcat-count' => '{{PLURAL:$2|หมวดหมู่นี้มีหมวดหมู่ย่อยเพียงหมวดหมู่เดียว|หมวดหมู่นี้มี {{PLURAL:$1|หมวดหมู่ย่อย|$1 หมวดหมู่ย่อย}} จากทั้งหมด $2 หมวดหมู่}}',
'category-subcat-count-limited' => 'หมวดหมู่นี้มี $1 หมวดหมู่ย่อย',
'category-article-count' => '{{PLURAL:$2|หมวดหมู่นี้มีอยู่เพียงหน้าเดียว|ในหมวดหมู่นี้มี {{PLURAL:$1|หน้าเดียว|$1 หน้า}} จากทั้งหมด $2 หน้า}}',
-'category-article-count-limited' => '$1 หน้าต่อไปนี้อยู่ในหมวดหมู่นี้',
+'category-article-count-limited' => 'มี $1 หน้าในหมวดหมู่นี้',
'category-file-count' => '{{PLURAL:$2|หมวดหมู่นี้มีเพียงไฟล์เดียว|ในหมวดหมู่นี้มี $1 ไฟล์ จากทั้งหมด $2 ไฟล์}}',
'category-file-count-limited' => '{{PLURAL:$1|ไฟล์|ไฟล์}}ต่อไปนี้อยู่ในหมวดหมู่นี้',
'listingcontinuesabbrev' => 'ต่อ',
'qbedit' => 'แก้ไข',
'qbpageoptions' => 'หน้านี้',
'qbmyoptions' => 'หน้าของฉัน',
-'faq' => 'à¸\84ำà¸\96ามà¸\96ามบ่อย',
-'faqpage' => 'Project:à¸\84ำà¸\96ามà¸\96ามบ่อย',
+'faq' => 'à¸\84ำà¸\96ามà¸\9eà¸\9aบ่อย',
+'faqpage' => 'Project:à¸\84ำà¸\96ามà¸\9eà¸\9aบ่อย',
# Vector skin
'vector-action-addsection' => 'เพิ่มหัวข้อใหม่',
'navigation-heading' => 'รายการเลือกป้ายบอกทาง',
'errorpagetitle' => 'มีข้อผิดพลาด',
-'returnto' => 'กลับไป $1',
+'returnto' => 'กลับไปที่ $1',
'tagline' => 'จาก {{SITENAME}}',
'help' => 'คำอธิบาย',
'search' => 'ค้นหา',
'articlepage' => 'ดูหน้าเนื้อหา',
'talk' => 'อภิปราย',
'views' => 'ดู',
-'toolbox' => 'à¸\81ลà¹\88à¸à¸\87à¹\80à¸\84รืà¹\88à¸à¸\87มืà¸',
+'toolbox' => 'เครื่องมือ',
'userpage' => 'ดูหน้าผู้ใช้',
'projectpage' => 'ดูหน้าโครงการ',
'imagepage' => 'ดูหน้าไฟล์',
'currentevents-url' => 'Project:เหตุการณ์ปัจจุบัน',
'disclaimers' => 'ข้อปฏิเสธความรับผิดชอบ',
'disclaimerpage' => 'Project:ข้อปฏิเสธความรับผิดชอบทั่วไป',
-'edithelp' => 'à¸\84ำà¸à¸\98ิà¸\9aายà¸\81ารà¹\81à¸\81à¹\89à¹\84à¸\82',
+'edithelp' => 'วิà¸\98ีà¹\81à¸\81à¹\89à¹\84à¸\82หà¸\99à¹\89า',
'helppage' => 'Help:สารบัญ',
'mainpage' => 'หน้าหลัก',
'mainpage-description' => 'หน้าหลัก',
'versionrequiredtext' => 'การใช้หน้านี้ต้องการมีเดียวิกิรุ่น $1 ดู[[Special:Version|หน้ารุ่น]]',
'ok' => 'ตกลง',
-'retrievedfrom' => 'รัà¸\9aข้อมูลจาก "$1"',
+'retrievedfrom' => 'à¸\94ึà¸\87ข้อมูลจาก "$1"',
'youhavenewmessages' => 'คุณมี$1 ($2)',
'youhavenewmessagesfromusers' => 'คุณมี $1จาก{{PLURAL:$3|ผู้ใช้คนอื่น|ผู้ใช้ $3 คน}} ($2)',
'youhavenewmessagesmanyusers' => 'คุณมี $1จากผู้ใช้หลายคน ($2)',
รายการหน้าพิเศษที่ถูกต้องดูได้ที่ [[Special:SpecialPages|รายการหน้าพิเศษ]]',
# General errors
-'error' => 'à¸\82à¹\89à¸à¸\9cิà¸\94à¸\9eลาà¸\94',
-'databaseerror' => 'à¸\84วามà¸\9cิà¸\94à¸\9eลาà¸\94à¸\97ีà¹\88à¸\90าà¸\99à¸\82à¹\89à¸à¸¡à¸¹à¸¥',
+'error' => 'ผิดพลาด',
+'databaseerror' => 'ผิดพลาดที่ฐานข้อมูล',
'laggedslavemode' => "'''คำเตือน:''' ข้อมูลในหน้าอาจไม่ใช่ข้อมูลล่าสุด",
'readonly' => 'ฐานข้อมูลถูกล็อก',
'enterlockreason' => 'ใส่เหตุแห่งการล็อก ทั้งเวลาที่คาดว่าจะปลดล็อก',
'actionthrottled' => 'การกระทำนี้ถูกระงับไว้ชั่วคราว',
'actionthrottledtext' => 'เพื่อเป็นมาตรการป้องกันสแปม คุณจึงถูกจำกัดมิให้กระทำสิ่งนี้ไม่ให้ติดต่อกันหลายครั้งเกินไปในช่วงระยะเวลาสั้น ๆ ซึ่งขณะนี้คุณได้กระทำเกินขีดจำกัดแล้ว กรุณารอสักครู่แล้วลองอีกครั้ง',
'protectedpagetext' => 'หน้านี้ถูกป้องกันมิให้แก้ไขหรือปฏิบัติการอื่น',
-'viewsourcetext' => 'à¸\84ุà¸\93สามารà¸\96à¸\94ูà¹\81ละà¸\84ัà¸\94ลà¸à¸\81à¹\82à¸\84à¹\89à¸\94หà¸\99à¹\89าà¸\99ีà¹\89à¹\84à¸\94้:',
+'viewsourcetext' => 'à¸\84ุà¸\93สามารà¸\96à¸\94ูà¹\81ละà¸\84ัà¸\94ลà¸à¸\81à¹\82à¸\84à¹\89à¸\94à¸\82à¸à¸\87หà¸\99à¹\89าà¸\99ี้:',
'viewyourtext' => "คุณสามารถดูและคัดลอกต้นฉบับ'''การแก้ไขของคุณ'''ในหน้านี้ได้",
'protectedinterface' => 'หน้านี้เป็นข้อความอินเตอร์เฟซสำหรับซอฟต์แวร์บนวิกินี้ และถูกป้องกันเพื่อมิให้มีการกระทำผิด
ในการเพิ่มหรือเปลี่ยนแปลงการแปลสำหรับทุกวิกิ โปรดใช้ [//translatewiki.net/ translatewiki.net] โครงการแปลมีเดียวิกิเป็นภาษาถิ่น',
'invalidtitle-knownnamespace' => 'ชื่อเรื่องที่มีเนมสเปซ "$2" กับข้อความ "$3" ไม่ถูกต้อง',
'invalidtitle-unknownnamespace' => 'ชื่อเรื่องที่ไม่ทราบเนมสเปซหมายเลข $1 กับข้อความ "$2" ไม่ถูกต้อง',
'exception-nologin' => 'ไม่ได้ล็อกอิน',
-'exception-nologin-text' => 'หน้าหรือปฏิบัติการนี้กำหนดให้คุณต้องล็อกอินเข้าสู่วิกินี้ก่อน',
+'exception-nologin-text' => 'โปรด[[Special:Userlogin|ล็อกอิน]]เพื่อสามารถเข้าถึงหน้าหรือปฏิบัติการนี้',
+'exception-nologin-text-manual' => 'โปรด$1เพื่อสามารถเข้าถึงหน้าหรือปฏิบัติการนี้',
# Virus scanner
'virus-badscanner' => "โครงแบบผิดพลาด: ไม่รู้จักตัวสแกนไวรัส: ''$1''",
'gotaccount' => "มีบัญชีแล้วใช่ไหม '''$1'''",
'gotaccountlink' => 'ล็อกอิน',
'userlogin-resetlink' => 'ลืมรายละเอียดล็อกอินของคุณหรือ',
-'userlogin-resetpassword-link' => 'à¸\95ัà¹\89à¸\87รหัสà¸\9cà¹\88าà¸\99à¹\83หมà¹\88',
+'userlogin-resetpassword-link' => 'ลืมรหัสà¸\9cà¹\88าà¸\99หรืà¸',
'helplogin-url' => 'Help:การล็อกอิน',
'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|คำอธิบายเรื่องการล็อกอิน]]',
'userlogin-loggedin' => 'คุณล็อกอินในชื่อ {{GENDER:$1|$1}} แล้ว
'passwordtooshort' => 'รหัสผ่านต้องมีความยาวอย่างน้อย $1 อักขระ',
'password-name-match' => 'รหัสผ่านต้องต่างจากชื่อผู้ใช้',
'password-login-forbidden' => 'ห้ามใช้ชื่อผู้ใช้และรหัสผ่านนี้',
-'mailmypassword' => 'à¸à¸µà¹\80มลรหัสผ่านใหม่',
+'mailmypassword' => 'à¸\95ัà¹\89à¸\87รหัสผ่านใหม่',
'passwordremindertitle' => 'รหัสผ่านชั่วคราวใหม่สำหรับ {{SITENAME}}',
'passwordremindertext' => 'ผู้ใดผู้หนึ่ง (ซึ่งอาจเป็นคุณ ที่ใช้เลขที่อยู่ไอพี $1) ขอให้ส่งรหัสผ่านใหม่ของ {{SITENAME}} ($4) รหัสผ่านชั่วคราวสำหรับชื่อผู้ใช้ "$2" ถูกสร้างขึ้น และกำหนดเป็น "$3" หากการขอรหัสผ่านใหม่นี้เป็นเจตนาของคุณ คุณจำต้องล็อกอินและเลือกรหัสผ่านใหม่ ณ ขณะนี้ รหัสผ่านชั่วคราวของคุณจะหมดอายุใน $5 วัน
จึงส่งผลให้ผู้เข้าชมที่ใช้เลขที่อยู่ไอพีนี้ ไม่สามารถสร้างบัญชีได้อีกในขณะนี้',
'emailauthenticated' => 'ที่อยู่อีเมลของคุณได้รับการยืนยันเมื่อวันที่ $2 เวลา $3',
'emailnotauthenticated' => 'ที่อยู่อีเมลของคุณยังไม่ได้รับการยืนยัน
-ไม่มีการส่งอีเมลสำหรับคุณลักษณะใด ๆ ต่อไปนี้',
+à¸\88ะà¹\84มà¹\88มีà¸\81ารสà¹\88à¸\87à¸à¸µà¹\80มลสำหรัà¸\9aà¸\84ุà¸\93ลัà¸\81ษà¸\93ะà¹\83à¸\94 à¹\86 à¸\95à¹\88à¸à¹\84à¸\9bà¸\99ีà¹\89',
'noemailprefs' => 'ระบุที่อยู่อีเมลในการตั้งค่าของคุณเพื่อให้คุณลักษณะเหล่านี้ทำงานได้',
'emailconfirmlink' => 'ยืนยันที่อยู่อีเมลของคุณ',
'invalidemailaddress' => 'ไม่สามารถรับที่อยู่อีเมลได้ เพราะดูมีรูปแบบไม่ถูกต้อง
โปรดใส่ที่อยู่ให้มีรูปแบบถูกต้อง หรือเว้นช่องนั้น',
'cannotchangeemail' => 'ไม่สามารถเปลี่ยนที่อยู่อีเมลบนวิกินี้',
'emaildisabled' => 'เว็บไซต์นี้ไม่สามารถส่งอีเมล',
-'accountcreated' => 'à¸\9aัà¸\8dà¸\8aีà¸\96ูà¸\81สรà¹\89าà¸\87à¸\82ึà¹\89à¸\99',
-'accountcreatedtext' => 'à¸\9aัà¸\8dà¸\8aีà¸\9cูà¹\89à¹\83à¸\8aà¹\89สำหรัà¸\9a [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|à¸\9eูà¸\94à¸\84ุย]]) à¸\96ูà¸\81สร้างขึ้นแล้ว',
+'accountcreated' => 'สรà¹\89าà¸\87à¸\9aัà¸\8dà¸\8aีà¹\81ลà¹\89ว',
+'accountcreatedtext' => 'à¸\9aัà¸\8dà¸\8aีà¸\9cูà¹\89à¹\83à¸\8aà¹\89สำหรัà¸\9a [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|à¸\9eูà¸\94à¸\84ุย]]) à¹\84à¸\94à¹\89สร้างขึ้นแล้ว',
'createaccount-title' => 'สร้างบัญชีสำหรับ {{SITENAME}}',
'createaccount-text' => 'มีบางคนสร้างบัญชีโดยใช้ที่อยู่อีเมลของคุณบน {{SITENAME}} ($4) โดยใช้ชื่อ "$2" และรหัสผ่าน "$3" คุณควรล็อกอินเพื่อเปลี่ยนรหัสผ่านทันที
# Special:PasswordReset
'passwordreset' => 'ตั้งรหัสผ่านใหม่',
'passwordreset-text-one' => 'กรอกแบบนี้เพื่อตั้งรหัสผ่านใหม่',
-'passwordreset-text-many' => '{{PLURAL:$1|à¸\81รà¸à¸\81à¹\80à¸\82à¸\95à¸\82à¹\89à¸à¸¡à¸¹à¸¥à¸«à¸\99ึà¹\88à¸\87à¹\80à¸\9eืà¹\88à¸à¸\95ัà¹\89à¸\87รหัสà¸\9cà¹\88าà¸\99à¹\83หมà¹\88}}',
+'passwordreset-text-many' => '{{PLURAL:$1|à¸\81รà¸à¸\81à¹\80à¸\82à¸\95à¸\82à¹\89à¸à¸¡à¸¹à¸¥à¸«à¸\99ึà¹\88à¸\87à¹\80à¸\9eืà¹\88à¸à¸£à¸±à¸\9aรหัสà¸\9cà¹\88าà¸\99à¸\8aัà¹\88วà¸\84ราวà¸\97าà¸\87à¸à¸µà¹\80มล}}',
'passwordreset-legend' => 'เปลี่ยนรหัสผ่าน',
'passwordreset-disabled' => 'การตั้งรหัสผ่านใหม่ปิดใช้งานบนวิกินี้',
'passwordreset-emaildisabled' => 'คุณลักษณะอีเมลถูกปิดใช้งานบนวิกินี้',
'italic_sample' => 'ข้อความตัวเอน',
'italic_tip' => 'ทำตัวเอน',
'link_sample' => 'ลิงก์เชื่อมโยง',
-'link_tip' => 'ลิงก์ภายในเว็บ',
+'link_tip' => 'ลิงก์ภายใน',
'extlink_sample' => 'http://www.example.com ชื่อเรื่องของลิงก์',
'extlink_tip' => 'ลิงก์ภายนอก (อย่าลืมใส่ http:// นำหน้าเสมอ)',
'headline_sample' => 'ข้อความพาดหัว',
'cantcreateaccount-text' => "การสร้างบัญชีใหม่จากที่อยู่ไอพีนี้ ('''$1''') ถูกระงับโดย [[User:$3|$3]]
เหตุผลที่ $3 ให้ไว้ คือ ''$2''",
+'cantcreateaccount-range-text' => "การสร้างบัญชีจากเลขที่อยู่ไอพีในช่วง '''$1''' ซึ่งรวมเลขที่อยู่ไอพีของคุณ ('''$4''') ถูกบล็อกโดย [[User:$3|$3]]
+
+เหตุผลที่ $3 ชี้แจง คือ ''$2''",
# History pages
'viewpagelogs' => 'ดูปูมของหน้านี้',
'nohistory' => 'ไม่มีประวัติการแก้ไขสำหรับหน้านี้',
'currentrev' => 'รุ่นปัจจุบัน',
-'currentrev-asof' => 'รุ่นปัจจุบันของ $1',
+'currentrev-asof' => 'รุ่นปัจจุบัน เมื่อ $1',
'revisionasof' => 'รุ่นเมื่อ $1',
'revision-info' => 'รุ่นเมื่อ $1 โดย $2',
'previousrevision' => '←รุ่นก่อนหน้า',
'revdelete-text' => "'''รุ่นการปรับปรุงและเหตุการณ์ที่ถูกลบยังปรากฏในประวัติและปูมของหน้า แต่สาธารณะไม่สามารถเข้าถึงเนื้อหาบางส่วนได้'''
ผู้ดูแลระบบคนอื่นบน {{SITENAME}} ยังสามารถเข้าถึงเนื้อหาที่ถูกซ่อน และสามารถกู้คืนอีกครั้งในลักษณะเดิมเช่นนี้ เว้นแต่จะมีการกำหนดการจำกัดเพิ่มเติม",
'revdelete-confirm' => 'กรุณายืนยันว่าคุณมีเจตนาลบจริง และเข้าใจผลลัพธ์ และกระทำภายใต้[[{{MediaWiki:Policy-url}}|นโยบาย]]',
-'revdelete-suppress-text' => "การระงับควรใช้ '''เฉพาะ''' กรณีต่อไปนี้:
+'revdelete-suppress-text' => "การระงับควรใช้'''เฉพาะ'''กรณีต่อไปนี้:
* ข้อมูลที่อาจหมิ่นประมาท
* ข้อมูลส่วนบุคคลที่ไม่เหมาะสม
*: ''ที่อยู่บ้านและหมายเลขโทรศัพท์บ้าน, หมายเลขประกันสังคม, ฯลฯ''",
'revdelete-legend' => 'ตั้งการจำกัดทัศนวิสัย:',
-'revdelete-hide-text' => 'à¸\8bà¹\88à¸à¸\99à¸\82à¹\89à¸à¸\84วามรุà¹\88à¸\99',
+'revdelete-hide-text' => 'ข้อความรุ่น',
'revdelete-hide-image' => 'ซ่อนเนื้อหาไฟล์',
'revdelete-hide-name' => 'ซ่อนปฏิบัติการและเป้าหมาย',
-'revdelete-hide-comment' => 'à¸\8bà¹\88à¸à¸\99à¸\84ำà¸à¸\98ิà¸\9aายà¸à¸¢à¹\88าà¸\87ยà¹\88à¸',
-'revdelete-hide-user' => 'à¸\8bà¹\88à¸à¸\99à¸\8aืà¹\88à¸à¸\9cูà¹\89à¹\83à¸\8aà¹\89/à¹\80ลà¸\82à¸\97ีà¹\88à¸à¸¢à¸¹à¹\88à¹\84à¸à¸\9eีà¸\9cูà¹\89à¹\80à¸\82ียà¸\99',
+'revdelete-hide-comment' => 'คำอธิบายอย่างย่อ',
+'revdelete-hide-user' => 'ชื่อผู้ใช้/เลขที่อยู่ไอพีผู้เขียน',
'revdelete-hide-restricted' => 'ระงับข้อมูลจากผู้ดูแลระบบเช่นเดียวกับผู้ใช้อื่น',
'revdelete-radio-same' => '(ไม่เปลี่ยนแปลง)',
-'revdelete-radio-set' => 'à¹\83à¸\8aà¹\88',
-'revdelete-radio-unset' => 'à¹\84มà¹\88',
+'revdelete-radio-set' => 'à¸\8bà¹\88à¸à¸\99',
+'revdelete-radio-unset' => 'à¹\80à¸\9bิà¸\94à¹\80à¸\9cย',
'revdelete-suppress' => 'ซ่อนข้อมูลจากผู้ดูแลระบบเช่นเดียวกับผู้ใช้อื่น',
'revdelete-unsuppress' => 'ลบการจำกัดสำหรับรุ่นที่กู้คืน',
'revdelete-log' => 'เหตุผล:',
'difference-title-multipage' => 'ผลต่างระหว่างหน้า "$1" และ "$2"',
'difference-multipage' => '(ผลต่างระหว่างหน้า)',
'lineno' => 'แถว $1:',
-'compareselectedversions' => 'à¹\80à¸\9bรียà¸\9aà¹\80à¸\97ียà¸\9aสà¸à¸\87รุà¹\88à¸\99à¸\97ีà¹\88à¹\80ลืà¸à¸\81',
+'compareselectedversions' => 'à¹\80à¸\9bรียà¸\9aà¹\80à¸\97ียà¸\9aรุà¹\88à¸\99à¸\97ีà¹\88à¹\80ลืà¸à¸\81à¹\84วà¹\89',
'showhideselectedversions' => 'แสดง/ซ่อนรุ่นที่เลือก',
'editundo' => 'ย้อน',
'diff-empty' => '(ไม่แตกต่าง)',
-'diff-multi' => '(มิได้แสดง $1 รุ่นระหว่างกลางโดย{{PLURAL:$2|ผู้ใช้คนหนึ่ง|ผู้ใช้ $2 คน}})',
-'diff-multi-manyusers' => '(มิได้แสดง $1 รุ่นระหว่างกลางโดยผู้ใช้กว่า $2 คน)',
+'diff-multi-manyusers' => 'การแก้ไข $1 รายการระหว่างกลางโดยผู้ใช้มากกว่า $2 คนไม่แสดงผล)',
'difference-missing-revision' => 'ไม่พบรุ่น{{PLURAL:$2|รุ่น| $2 รุ่น}}ของผลต่างนี้ ($1)
โดยปกติเกิดจากการเข้าลิงก์ผลต่างของหน้าที่ถูกลบไปแล้ว
'preferences' => 'ตั้งค่าส่วนตัว',
'mypreferences' => 'การตั้งค่า',
'prefs-edits' => 'จำนวนการแก้ไข:',
+'prefsnologintext2' => 'โปรด$1เพื่อเปลี่ยนการตั้งค่าของคุณ',
'prefs-skin' => 'หน้าตา',
'skin-preview' => 'แสดงตัวอย่าง',
'datedefault' => 'ค่าตั้งต้น',
'rows' => 'แถว:',
'columns' => 'คอลัมน์:',
'searchresultshead' => 'ค้นหา',
-'resultsperpage' => 'การเปิดดูต่อหน้า:',
'stub-threshold' => 'ขีดแบ่งสำหรับ <a href="#" class="stub">ลิงก์โครง</a> (ไบต์):',
'stub-threshold-disabled' => 'ปิดใช้งาน',
'recentchangesdays' => 'จำนวนวันที่แสดงในปรับปรุงล่าสุด:',
'prefs-info' => 'ข้อมูลเบื้องต้น',
'prefs-i18n' => 'สากลวิวัตน์',
'prefs-signature' => 'ลายเซ็น',
-'prefs-dateformat' => 'รูปแบบวันที่',
+'prefs-dateformat' => 'รูปแบบวันที่และเวลา',
'prefs-timeoffset' => 'ส่วนต่างเวลา',
'prefs-advancedediting' => 'ตัวเลือกทั่วไป',
'prefs-preview' => 'การแสดงตัวอย่าง',
'enhancedrc-since-last-visit' => '$1 {{PLURAL:$1|ตั้งแต่การเข้าชมล่าสุด}}',
'enhancedrc-history' => 'ประวัติ',
'recentchanges' => 'ปรับปรุงล่าสุด',
-'recentchanges-legend' => 'ตัวเลือกปรับปรุงล่าสุด',
+'recentchanges-legend' => 'à¸\95ัวà¹\80ลืà¸à¸\81à¸\81ารà¸\9bรัà¸\9aà¸\9bรุà¸\87ลà¹\88าสุà¸\94',
'recentchanges-summary' => 'ในหน้านี้เป็นรายการการปรับปรุงล่าสุดบนวิกินี้',
'recentchanges-noresult' => 'ไม่มีการเปลี่ยนแปลงในช่วงที่กำหนดซึ่งตรงกับเกณฑ์เหล่านี้',
'recentchanges-feed-description' => 'ติดตามการปรับปรุงล่าสุดในวิกินี้ในฟีดนี้',
'recentchanges-label-bot' => 'การแก้ไขนี้กระทำโดยบอต',
'recentchanges-label-unpatrolled' => 'การแก้ไขนี้ยังไม่ได้ตรวจสอบ',
'recentchanges-label-plusminus' => 'ขนาดของหน้าเปลี่ยนไปด้วยจำนวนไบต์เท่านี้',
+'recentchanges-legend-heading' => "'''คำอธิบายสัญลักษณ์:'''",
'recentchanges-legend-newpage' => '(ดูเพิ่มที่[[Special:NewPages|รายชื่อหน้าใหม่]])',
'rcnotefrom' => "ด้านล่างเป็นการเปลี่ยนแปลงตั้งแต่ '''$2''' (มากสุด '''$1''' รายการ)",
'rclistfrom' => 'แสดงการเปลี่ยนแปลงใหม่เริ่มตั้งแต่ $1',
'rcshowhideminor' => '$1การแก้ไขเล็กน้อย',
'rcshowhidebots' => '$1บอต',
-'rcshowhideliu' => '$1à¸\9cูà¹\89à¹\83à¸\8aà¹\89ลà¹\87à¸à¸\81à¸à¸´น',
+'rcshowhideliu' => '$1à¸\9cูà¹\89à¹\83à¸\8aà¹\89ลà¸\87à¸\97ะà¹\80à¸\9aียน',
'rcshowhideanons' => '$1ผู้ใช้นิรนาม',
'rcshowhidepatr' => '$1การแก้ไขที่ตรวจสอบแล้ว',
'rcshowhidemine' => '$1การแก้ไขของฉัน',
'filetype-badmime' => 'ไม่อนุญาตให้อัปโหลดไฟล์ที่เป็นไมม์ชนิด "$1"',
'filetype-bad-ie-mime' => 'ไม่สามารถอัปโหลดไฟล์นี้เนื่องจากอินเทอร์เน็ตเอกซ์พลอเรอร์จะตรวจจับว่าเป็น "$1" ซึ่งเป็นชนิดไฟล์ที่ไม่อนุญาตและอาจเป็นอันตราย',
'filetype-unwanted-type' => "{{PLURAL:\$3|ไฟล์|ไฟล์}}ชนิด '''\".\$1\"''' เป็นไฟล์ที่ไม่สามารถอัปโหลดได้ ไฟล์ที่สามารถใช้ได้ ได้แก่ \$2",
-'filetype-banned-type' => '\'\'\'".$1"\'\'\' {{PLURAL: $4|เป็นชนิดไฟล์ที่ไม่อนุญาต|เป็นชนิดไฟล์ที่ไม่อนุญาต}}
+'filetype-banned-type' => '\'\'\'".$1"\'\'\' {{PLURAL:$4|เป็นชนิดไฟล์ที่ไม่อนุญาต|เป็นชนิดไฟล์ที่ไม่อนุญาต}}
{{PLURAL:$3|ชนิดไฟล์|ชนิดไฟล์}}ที่อนุญาตคือ $2',
'filetype-missing' => 'นามสกุลไฟล์หายไป (เช่น ".jpg")',
'empty-file' => 'ไฟล์ที่คุณส่งมานั้นว่าง',
'nmembers' => '$1 หน้า',
'nrevisions' => '$1 รุ่น',
'nviews' => '$1 ครั้ง',
-'nimagelinks' => 'ใช้ใน $1 {{PLURAL: $1|หน้า|หน้า}}',
-'ntransclusions' => 'ใช้ใน $1 {{PLURAL: $1|หน้า|หน้า}}',
+'nimagelinks' => 'ใช้ใน $1 {{PLURAL:$1|หน้า|หน้า}}',
+'ntransclusions' => 'ใช้ใน $1 {{PLURAL:$1|หน้า|หน้า}}',
'specialpage-empty' => 'ไม่มีผลลัพธ์รายงานนี้',
-'lonelypages' => 'หà¸\99à¹\89าสุà¸\94à¸\97าง',
+'lonelypages' => 'หà¸\99à¹\89าà¸\97ีà¹\88à¹\82ยà¸\87à¹\84à¸\9bà¹\84มà¹\88à¸\96ึง',
'lonelypagestext' => 'หน้าต่อไปนี้ไม่มีการเชื่อมโยงหรือถูกรวมไว้ในหน้าอื่นใน {{SITENAME}}',
'uncategorizedpages' => 'หน้าที่ไม่ได้จัดหมวดหมู่',
'uncategorizedcategories' => 'หมวดหมู่ที่ไม่ได้จัดหมวดหมู่',
'mostlinkedcategories' => 'หมวดหมู่ที่มีการเชื่อมโยงหามากที่สุด',
'mostlinkedtemplates' => 'แม่แบบที่มีการเชื่อมโยงหามากที่สุด',
'mostcategories' => 'หน้าที่มีหมวดหมู่มากที่สุด',
-'mostimages' => 'ภาà¸\9eà¸\97ีà¹\88มีà¸\81ารà¹\80à¸\8aืà¹\88à¸à¸¡à¹\82ยà¸\87หามากที่สุด',
+'mostimages' => 'ภาà¸\9eà¸\97ีà¹\88มีà¸\81ารà¹\82ยà¸\87à¹\84à¸\9bหามากที่สุด',
'mostinterwikis' => 'หน้าที่มีลิงก์ข้ามโครงการมากที่สุด',
'mostrevisions' => 'หน้าที่มีรุ่นมากที่สุด',
'prefixindex' => 'ทุกหน้าพร้อมคำขึ้นต้น',
# Special:AllPages
'allpages' => 'หน้าทั้งหมด',
'alphaindexline' => '$1 ถึง $2',
-'nextpage' => 'ถัดไป ($1)',
-'prevpage' => 'ก่อนหน้า ($1)',
+'nextpage' => 'หà¸\99à¹\89าà¸\96ัà¸\94à¹\84à¸\9b ($1)',
+'prevpage' => 'หà¸\99à¹\89าà¸\81à¹\88à¸à¸\99หà¸\99à¹\89า ($1)',
'allpagesfrom' => 'แสดงหน้าโดยเริ่มจาก:',
'allpagesto' => 'แสดงหน้าจบที่:',
'allarticles' => 'ทุกหน้า',
'emailpagetext' => 'คุณสามารถใช้แบบด้านล่างส่งอีเมลหา{{GENDER:$1|ผู้ใช้}}นี้
ที่อยู่อีเมลที่คุณกรอกใน[[Special:Preferences|การตั้งค่าส่วนตัวของคุณ]]จะปรากฏเป็นที่อยู่ "จาก" ของอีเมล ซึ่งผู้รับสามารถตอบกลับคุณได้โดยตรง',
'usermailererror' => 'การส่งอีเมลผิดพลาด:',
-'defemailsubject' => 'อีเมล {{SITENAME}} จากผู้ใช้ "$1"',
+'defemailsubject' => 'อีเมล{{SITENAME}}จากผู้ใช้ "$1"',
'usermaildisabled' => 'ปิดใช้งานการส่งอีเมลหาผู้ใช้',
'usermaildisabledtext' => 'คุณไม่สามารถส่งอีเมลหาผู้ใช้อื่นบนวิกินี้',
'noemailtitle' => 'ไม่มีที่อยู่อีเมล',
'watchlistfor2' => 'สำหรับ $1 $2',
'nowatchlist' => 'ไม่มีรายการในรายการเฝ้าดูของคุณ',
'watchlistanontext' => 'กรุณา$1เพื่อดูหรือแก้ไขรายการในรายการเฝ้าดูของคุณ',
-'watchnologin' => 'ไม่ได้ล็อกอิน',
+'watchnologin' => 'ยัà¸\87à¹\84มà¹\88à¹\84à¸\94à¹\89ลà¹\87à¸à¸\81à¸à¸´à¸\99',
'watchnologintext' => 'ต้อง[[Special:UserLogin|ล็อกอิน]]เพื่อแก้ไขรายการเฝ้าดูของคุณ',
'addwatch' => 'เพิ่มเข้ารายการเฝ้าดู',
'addedwatchtext' => 'หน้า "[[:$1]]" ได้เพิ่มลงใน[[Special:Watchlist|รายการเฝ้าดู]]ของคุณแล้ว การเปลี่ยนแปลงในหน้านี้หรือหน้าพูดคุยที่เกี่ยวข้องจะแสดงในรายการดังกล่าว',
'watchmethod-list' => 'ตรวจสอบหน้าเฝ้าดูกับการแก้ไขล่าสุด',
'watchlistcontains' => 'รายการเฝ้าดูของคุณมี $1 หน้า',
'iteminvalidname' => "เกิดปัญหากับรายการ '$1' ชื่อไม่ถูกต้อง...",
-'wlnote' => "ด้านล่างเป็นการแก้ไข{{PLURAL:$1|ล่าสุด|ล่าสุด '''$1''' รายการ}} ใน{{PLURAL:$2|ชั่วโมง|ช่วง '''$2''' ชั่วโมง}}ที่ผ่านมา จนถึง $3, $4",
'wlshowlast' => 'แสดง $1 ชั่วโมง $2 วันล่าสุด $3',
'watchlist-options' => 'ตัวเลือกรายการเฝ้าดู',
'deletepage' => 'ลบหน้า',
'confirm' => 'ยืนยัน',
'excontent' => "เนื้อหาเดิม: '$1'",
-'excontentauthor' => "เนื้อหาเดิม: '$1' (และมีผู้เขียนคนเดียว คือ '[[Special:Contributions/$2|$2]]')",
+'excontentauthor' => "เนื้อหาเดิม: '$1' (และมีผู้เขียนคนเดียวคือ '[[Special:Contributions/$2|$2]]')",
'exbeforeblank' => "เนื้อหาก่อนถูกทำว่างคือ: '$1'",
'exblank' => 'หน้าว่าง',
'delete-confirm' => 'ลบ "$1"',
'editcomment' => "คำอธิบายอย่างย่อคือ: \"''\$1''\"",
'revertpage' => 'ย้อนการแก้ไขของ [[Special:Contributions/$2|$2]] ([[User talk:$2|Talk]]) ไปยังรุ่นของ [[User:$1|$1]]',
'revertpage-nouser' => 'ย้อนการแก้ไขโดยผู้ใช้ไม่ระบุชื่อไปยังรุ่นสุดท้ายโดย {{GENDER:$1|[[User:$1|$1]]}}',
-'rollback-success' => 'ยà¹\89à¸à¸\99รุà¹\88à¸\99à¸\97ีà¹\88แก้ไขโดย $1 ไปยังรุ่นล่าสุดโดย $2',
+'rollback-success' => 'ยà¹\89à¸à¸\99à¸\81ารแก้ไขโดย $1 ไปยังรุ่นล่าสุดโดย $2',
# Edit tokens
'sessionfailure-title' => 'ช่วงเวลาสื่อสารล้มเหลว',
'undeleteviewlink' => 'ดู',
'undeleteinvert' => 'กลับการเลือก',
'undeletecomment' => 'เหตุผล:',
-'undeletedrevisions' => '$1 รุ่นการแก้ไขถูกกู้คืน',
+'undeletedrevisions' => 'กู้คืนการแก้ไข $1 รุ่นแล้ว',
'undeletedrevisions-files' => '$1 รุ่น และ $2 ไฟล์ถูกกู้คืน',
'undeletedfiles' => '$1 ไฟล์ถูกกู้คืน',
'cannotundelete' => 'การกู้คืนล้มเหลว:
'blanknamespace' => '(หลัก)',
# Contributions
-'contributions' => 'à¹\80รืà¹\88à¸à¸\87à¸\97ีà¹\88à¹\80à¸\82ียà¸\99à¹\82à¸\94ย{{GENDER:$1|à¸\9cูà¹\89à¹\83à¸\8aà¹\89}}à¸\99ีà¹\89',
+'contributions' => 'à¹\80รืà¹\88à¸à¸\87à¸\97ีà¹\88à¸\9cูà¹\89à¹\83à¸\8aà¹\89รายà¸\99ีà¹\89à¹\80à¸\82ียà¸\99',
'contributions-title' => 'เรื่องที่เขียนโดย $1',
'mycontris' => 'เรื่องที่เขียน',
'contribsub2' => 'สำหรับ {{GENDER:$3|$1}} ($2)',
'ipb_expiry_invalid' => 'วันหมดอายุไม่ถูกต้อง',
'ipb_expiry_temp' => 'การบล็อกชื่อผู้ใช้ที่ซ่อนต้องเป็นการบล็อกถาวร',
'ipb_hide_invalid' => 'ไม่สามารถยับยั้งชื่อผู้ใช้นี้ได้ อาจเพราะมีการแก้ไขมากเกินไป',
-'ipb_already_blocked' => '"$1" ถูกบล็อกแล้วก่อนหน้านี้',
+'ipb_already_blocked' => '"$1" à¸\96ูà¸\81à¸\9aลà¹\87à¸à¸\81à¹\84à¸\9bà¹\81ลà¹\89วà¸\81à¹\88à¸à¸\99หà¸\99à¹\89าà¸\99ีà¹\89',
'ipb-needreblock' => '$1 ถูกบล็อกแล้ว คุณต้องการเปลี่ยนการตั้งค่าหรือไม่',
'ipb-otherblocks-header' => '{{PLURAL:$1|การบล็อก}}อื่น ๆ',
'unblock-hideuser' => 'คุณไม่สามารถยกเลิกการบล็อกผู้ใช้งานรายนี้ได้ เพราะชื่อผู้ใช้ถูกซ่อนอยู่',
อย่างไรก็ตาม ไอพีนี้ถูกระงับในฐานะที่เป็นส่วนหนึ่งของเลขที่อยู่ไอพีในพิสัย $2 ซึ่งสามารถปลดบล็อกได้',
'ip_range_invalid' => 'พิสัยไอพีไม่ถูกต้อง',
'ip_range_toolarge' => 'พิสัยบล็อกที่มีขนาดใหญ่กว่า /$1 จะไม่ได้รับอนุญาต',
-'proxyblocker' => 'บล็อกพร็อกซี',
+'proxyblocker' => 'à¸\95ัวà¸\9aลà¹\87à¸à¸\81à¸\9eรà¹\87à¸à¸\81à¸\8bี',
'proxyblockreason' => 'เลขที่อยู่ไอพีของคุณถูกบล็อกเนื่องจากเป็นพร็อกซีเปิด กรุณาติดต่อผู้ให้บริการอินเทอร์เน็ตหรือฝ่ายสนับสนุนเทคนิคขององค์การคุณ และแจ้งให้พวกเขาทราบถึงปัญหาความปลอดภัยร้ายแรงนี้',
'sorbsreason' => 'เลขที่อยู่ไอพีของคุณอยู่ในพร็อกซีเปิดในส่วน DNSBL ที่ {{SITENAME}} ใช้',
'sorbs_create_account_reason' => 'เลขที่อยู่ไอพีของคุณอยู่ในพร็อกซีเปิดในส่วน DNSBL ที่ {{SITENAME}} ใช้
'delete_and_move_text' => '== ต้องการลบ ==
มีหน้าปลายทาง "[[:$1]]" แล้ว คุณต้องการลบหน้านั้นหรือไม่เพื่อดำเนินการต่อ',
-'delete_and_move_confirm' => 'à¹\83à¸\8aà¹\88 ลà¸\9aหà¸\99à¹\89าà¸\99ัà¹\89à¸\99',
-'delete_and_move_reason' => 'à¸\96ูà¸\81ลà¸\9aà¹\80à¸\9eืà¹\88à¸à¹\80à¸\9bิà¸\94à¸\8aà¹\88à¸à¸\87à¹\81à¸\81à¹\88à¸\81ารà¹\80à¸\9bลีà¹\88ยà¸\99à¸\8aืà¹\88à¸จาก "[[$1]]"',
+'delete_and_move_confirm' => 'à¹\83à¸\8aà¹\88 à¸\95à¹\89à¸à¸\87à¸\81ารà¸\88ะลà¸\9aà¹\81ละยà¹\89าย',
+'delete_and_move_reason' => 'ลà¸\9aà¹\80à¸\9eืà¹\88à¸à¸ªà¸£à¹\89าà¸\87หà¸\99à¸\97าà¸\87à¸\97ีà¹\88à¸\88ะยà¹\89ายจาก "[[$1]]"',
'selfmove' => 'ชื่อหน้าต้นทางและปลายทางเป็นชื่อเดียวกัน ไม่สามารถเปลี่ยนชื่อได้มาใช้ชื่อเดิมได้',
'immobile-source-namespace' => 'ไม่สามารถเปลี่ยนชื่อหน้าในเนมสเปซ "$1"',
'immobile-target-namespace' => 'ไม่สามารถย้ายหน้าไปยังเนมสเปซ "$1" ได้',
'tooltip-pt-watchlist' => 'รายการหน้าที่คุณเฝ้าดูการแก้ไข',
'tooltip-pt-mycontris' => 'รายการหน้าที่คุณเขียน',
'tooltip-pt-login' => 'ไม่จำเป็นต้องล็อกอินในการแก้ไข แต่แนะนำอย่างยิ่งให้ล็อกอิน',
-'tooltip-pt-anonlogin' => 'ไม่จำเป็นต้องล็อกอินในการแก้ไข แต่แนะนำอย่างยิ่งให้ล็อกอิน',
'tooltip-pt-logout' => 'ล็อกเอาต์',
'tooltip-ca-talk' => 'พูดคุยเกี่ยวกับเนื้อหา',
'tooltip-ca-edit' => 'คุณสามารถแก้ไขหน้านี้ได้ โปรดใช้ปุ่มดูตัวอย่างก่อนบันทึก',
'file-nohires' => 'ไม่มีความละเอียดสูงกว่านี้',
'svg-long-desc' => 'ไฟล์ SVG, $1 × $2 พิกเซล พอเป็นพิธี, ขนาดไฟล์: $3',
'svg-long-error' => 'ไฟล์ SVG ไม่ถูกต้อง: $1',
-'show-big-image' => 'à¸\84วามละà¹\80à¸à¸µà¸¢à¸\94สูà¸\87สุà¸\94',
+'show-big-image' => 'à¹\84à¸\9fลà¹\8cà¸\95à¹\89à¸\99à¸\89à¸\9aัà¸\9a',
'show-big-image-other' => 'อื่นๆ {{PLURAL:$2|resolution|resolutions}}: $1.',
'show-big-image-size' => '$1 × $2 พิกเซล',
'file-info-gif-looped' => 'วนซ้ำ',
'exif-focallength-format' => '$1 มม.',
'exif-subjectarea' => 'จุดวัตถุ',
'exif-flashenergy' => 'พลังงานแฟลช',
-'exif-focalplanexresolution' => 'ความละเอียระนาบโฟกัส X',
-'exif-focalplaneyresolution' => 'ความละเอียระนาบโฟกัส Y',
+'exif-focalplanexresolution' => 'à¸\84วามละà¹\80à¸à¸µà¸¢à¸\94ระà¸\99าà¸\9aà¹\82à¸\9fà¸\81ัส X',
+'exif-focalplaneyresolution' => 'à¸\84วามละà¹\80à¸à¸µà¸¢à¸\94ระà¸\99าà¸\9aà¹\82à¸\9fà¸\81ัส Y',
'exif-focalplaneresolutionunit' => 'หน่วยความละเอียดระนาบโฟกัส',
'exif-subjectlocation' => 'ตำแหน่งวัตถุ',
'exif-exposureindex' => 'ดัชนีเอกซ์โพเชอร์',
'exif-sensingmethod' => 'วิถีการวัด',
'exif-filesource' => 'ต้นฉบับไฟล์',
'exif-scenetype' => 'ชนิดซีน',
-'exif-customrendered' => 'à¸\81ารà¸\9bระมวà¸\93ภาพ',
+'exif-customrendered' => 'à¸\81ารà¸\9bระมวลภาพ',
'exif-exposuremode' => 'โหมดเอกซ์โพเชอร์',
'exif-whitebalance' => 'ไวต์บาลานซ์',
'exif-digitalzoomratio' => 'อัตราซูมดิจิทัล',
'exif-unknowndate' => 'ไม่ทราบวัน',
'exif-orientation-1' => 'ปกติ',
-'exif-orientation-2' => 'à¸\96ูà¸\81สลัà¸\9aแนวนอน',
-'exif-orientation-3' => 'à¸\96ูà¸\81หมุà¸\99 180°',
-'exif-orientation-4' => 'à¸\96ูà¸\81สลัà¸\9aแนวตั้ง',
-'exif-orientation-5' => 'à¸\96ูà¸\81หมุà¸\99 90° à¸\97วà¸\99à¹\80à¸\82à¹\87มà¸\99าฬิà¸\81า à¹\81ละà¸\96ูà¸\81สลัà¸\9aแนวตั้ง',
-'exif-orientation-6' => 'à¸\96ูà¸\81หมุà¸\99 90° à¸\97วà¸\99à¹\80à¸\82à¹\87มà¸\99าฬิà¸\81า',
-'exif-orientation-7' => 'à¸\96ูà¸\81หมุà¸\99 90° à¸\95ามà¹\80à¸\82à¹\87มà¸\99าฬิà¸\81า à¹\81ละà¸\96ูà¸\81สลัà¸\9aแนวตั้ง',
-'exif-orientation-8' => 'à¸\96ูà¸\81หมุà¸\99 90° à¸\95ามà¹\80à¸\82à¹\87มà¸\99าฬิà¸\81า',
+'exif-orientation-2' => 'à¸\9eลิà¸\81แนวนอน',
+'exif-orientation-3' => 'หมุน 180°',
+'exif-orientation-4' => 'à¸\9eลิà¸\81แนวตั้ง',
+'exif-orientation-5' => 'หมุà¸\99 90° à¸\97วà¸\99à¹\80à¸\82à¹\87มà¸\99าฬิà¸\81าà¹\81ละà¸\9eลิà¸\81แนวตั้ง',
+'exif-orientation-6' => 'หมุน 90° ทวนเข็มนาฬิกา',
+'exif-orientation-7' => 'หมุà¸\99 90° à¸\95ามà¹\80à¸\82à¹\87มà¸\99าฬิà¸\81าà¹\81ละà¸\9eลิà¸\81แนวตั้ง',
+'exif-orientation-8' => 'หมุน 90° ตามเข็มนาฬิกา',
'exif-planarconfiguration-1' => 'รูปแบบชังกี',
'exif-planarconfiguration-2' => 'รูปแบบเพลนาร์',
'monthsall' => 'ทั้งหมด',
# Email address confirmation
-'confirmemail' => 'ยืนยันอีเมล',
+'confirmemail' => 'ยืà¸\99ยัà¸\99à¸\97ีà¹\88à¸à¸¢à¸¹à¹\88à¸à¸µà¹\80มล',
'confirmemail_noemail' => 'ไม่ได้ใส่อีเมลในส่วน [[Special:Preferences|การตั้งค่าส่วนตัว]]',
'confirmemail_text' => '{{SITENAME}} กำหนดให้คุณตรวจสอบความสมเหตุสมผลของที่อยู่อีเมลของคุณก่อนใช้คุณลักษณะอีเมล
เปิดใช้งานปุ่มด้านล่างเพื่อส่งเมลยืนยันไปยังที่อยู่ของคุณ
'confirmemail_pending' => 'รหัสยืนยันได้ส่งไปยังอีเมลของคุณแล้ว
ถ้าคุณเพิ่งสร้างบัญชี คุณอาจต้องรอสักครู่ให้รหัสส่งไปถึงที่อยู่อีเมลคุณ แทนที่จะขอรหัสยืนยันใหม่ทันที',
'confirmemail_send' => 'ส่งรหัสยืนยันทางอีเมล',
-'confirmemail_sent' => 'ส่งอีเมลยืนยันแล้ว',
+'confirmemail_sent' => 'สà¹\88à¸\87à¸à¸µà¹\80มลสำหรัà¸\9aà¸\81ารยืà¸\99ยัà¸\99à¹\81ลà¹\89ว',
'confirmemail_oncreate' => 'รหัสยืนยันถูกส่งไปยังที่อยู่อีเมลของคุณ
รหัสนี้ไม่กำหนดให้ต้องล็อกอิน แต่คุณต้องระบุรหัสก่อนเปิดใช้งานคุณลักษณะที่อาศัยอีเมลทั้งหมดในวิกินี้',
'confirmemail_sendfailed' => '{{SITENAME}}ไม่สามารถส่งอีเมลยืนยันได้
'confirm-unwatch-button' => 'ตกลง',
'confirm-unwatch-top' => 'ลบหน้านี้ออกจากรายการเฝ้าดูของคุณ',
+# Separators for various lists, etc.
+'quotation-marks' => '"$1"',
+
# Multipage image navigation
'imgmultipageprev' => '← หน้าก่อนหน้า',
'imgmultipagenext' => 'หน้าถัดไป →',
'bitrate-yottabits' => '$1 ยอตตะบิตต่อวินาที',
# Live preview
-'livepreview-loading' => 'à¸\81ำลัà¸\87à¹\82หลà¸\94…',
-'livepreview-ready' => 'à¸\81ำลัà¸\87à¹\82หลà¸\94… เสร็จ!',
+'livepreview-loading' => 'à¸\81ำลัà¸\87à¸\84à¹\89à¸\99หา…',
+'livepreview-ready' => 'à¸\81ำลัà¸\87à¸\84à¹\89à¸\99หา… เสร็จ!',
'livepreview-failed' => 'แสดงตัวอย่างทันทีไม่ได้ ให้ลองใช้การแสดงตัวอย่างแบบธรรมดา',
'livepreview-error' => 'เชื่อมต่อไม่ได้: $1 "$2" ให้ลองใช้แสดงตัวอย่างแบบธรรมดา',
เมื่อเสร็จแล้ว ให้กด "{{int:Watchlistedit-raw-submit}}"
ซึ่งอาจแก้ไขผ่าน [[Special:EditWatchlist|โปรแกรมแก้ไขข้อความทั่วไป]]',
'watchlistedit-raw-titles' => 'ชื่อเรื่อง:',
-'watchlistedit-raw-submit' => 'ปรับรายการเฝ้าดู',
+'watchlistedit-raw-submit' => 'à¸\9bรัà¸\9aà¸\9bรุà¸\87รายà¸\81ารà¹\80à¸\9dà¹\89าà¸\94ู',
'watchlistedit-raw-done' => 'รายการเฝ้าดูของคุณได้ปรับแล้ว',
'watchlistedit-raw-added' => '$1 ชื่อเรื่องได้ถูกเพิ่มเข้าไป:',
'watchlistedit-raw-removed' => '$1 ชื่อเรื่องได้ถูกนำออกไป:',
'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath เส้นทางสคริปต์]',
# Special:Redirect
-'redirect' => 'การเปลี่ยนทางตามชื่อไฟล์ รหัสประจำผู้ใช้หรือรุ่น',
+'redirect' => 'การเปลี่ยนทางตามชื่อไฟล์ รหัสประจำผู้ใช้ หน้าหรือรุ่น',
'redirect-legend' => 'การเปลี่ยนทางไปยังไฟล์หรือหน้า',
'redirect-summary' => 'หน้าพิเศษนี้เปลี่ยนทางไปยังไฟล์ (ระบุเป็นชื่อไฟล์) หน้า (ระบุเป็นรหัสรุ่น) หรือหน้าผู้ใช้ (ระบุเป็นรหัสผู้ใช้)',
'redirect-submit' => 'ไป',
'redirect-lookup' => 'ค้นดู:',
'redirect-value' => 'ค่า:',
'redirect-user' => 'รหัสผู้ใช้',
+'redirect-page' => 'รหัสประจำหน้า',
'redirect-revision' => 'รุ่นหน้า',
'redirect-file' => 'ชื่อไฟล์',
'redirect-not-exists' => 'ไม่พบค่า',
# Special:SpecialPages
'specialpages' => 'หน้าพิเศษ',
+'specialpages-note-top' => 'คำอธิบายสัญลักษณ์',
'specialpages-note' => '* หน้าพิเศษปกติ
* <span class="mw-specialpagerestricted">หน้าพิเศษที่ถูกจำกัด</span>',
'specialpages-group-maintenance' => 'รายงานการเก็บกวาด',
'tags-tag' => 'ชื่อป้ายกำกับ',
'tags-display-header' => 'สิ่งที่แสดงในรายการการเปลี่ยนแปลง',
'tags-description-header' => 'คำอธิบายความหมายโดยละเอียด',
+'tags-active-header' => 'เปิดใช้งานหรือไม่',
'tags-hitcount-header' => 'การเปลี่ยนแปลงที่มีป้ายนี้กำกับ',
+'tags-active-yes' => 'ใช่',
+'tags-active-no' => 'ไม่',
'tags-edit' => 'แก้ไข',
'tags-hitcount' => '$1 การเปลี่ยนแปลง',
'dberr-problems' => 'ขออภัย เว็บไซต์นี้กำลังพบกับข้อผิดพลาดทางเทคนิค',
'dberr-again' => 'กรุณารอสักครู่แล้วจึงโหลดใหม่',
'dberr-info' => '(ไม่สามารถติดต่อเซิร์ฟเวอร์ฐานข้อมูลได้: $1)',
+'dberr-info-hidden' => '(ไม่สามารถติดต่อเซิร์ฟเวอร์ฐานข้อมูล)',
'dberr-usegoogle' => 'คุณสามารถลองสืบค้นผ่านกูเกิลในระหว่างนี้',
'dberr-outofdate' => 'โปรดทราบว่าดัชนีเนื้อหาของเราในกูเกิลอาจล้าสมัยแล้ว',
'dberr-cachederror' => 'นี่คือข้อมูลคัดลอกชั่วคราวของหน้าที่ร้องขอ และอาจไม่เป็นปัจจุบัน',
'htmlform-selectorother-other' => 'อื่น ๆ',
'htmlform-no' => 'ไม่',
'htmlform-yes' => 'ใช่',
+'htmlform-chosen-placeholder' => 'เลือกตัวเลือก',
# SQLite database support
'sqlite-has-fts' => 'รุ่น $1 พร้อมการสนับสนุนการค้นหาข้อความแบบเต็ม',
'duration-millennia' => '$1 สหัสวรรษ',
# Special:ExpandTemplates
+'expand_templates_output' => 'ผลลัพธ์',
'expand_templates_ok' => 'ตกลง',
+'expand_templates_remove_comments' => 'นำส่วนความเห็นออก',
'expand_templates_preview' => 'ตัวอย่างผลแสดง',
);
$messages = array(
# User preference toggles
'tog-underline' => 'Çykgytlaryň aşagyny çyz:',
-'tog-justify' => 'Teksti iki ýaňa deňle',
'tog-hideminor' => '"Soňky üýtgeşmeler" sahypasynda ujypsyzja özgerdişleri gizle',
'tog-hidepatrolled' => '"Soňky üýtgeşmeler" sahypasynda patrullyk edilen özgerdişleri gizle',
'tog-newpageshidepatrolled' => 'Patrullyk edilen sahypalary täze sahypalaryň sanawynda gizle',
'tog-numberheadings' => 'Atlary awtomatik usulda belgile',
'tog-showtoolbar' => 'Redaktirleme mahalynda gural panelini görkez (JavaScript)',
'tog-editondblclick' => 'Sahypany jübüt tyklap, redaktirläp başla (JavaScript)',
-'tog-editsection' => 'Her bir bölümde [redaktirle] çykgydyny görkez',
'tog-editsectiononrightclick' => 'Bölümleri bölümiň adyna sag tyklap redaktirlemäge mümkinçilik döret (JavaScript)',
-'tog-showtoc' => 'Mazmun tablisasyny görkez (3 sanydan köp ady bar bolan sahypalar üçin)',
'tog-rememberpassword' => 'Sessiýamy şu brauzerde ýatda sakla (iň köp $1 {{PLURAL:$1|günläp|günläp}})',
'tog-watchcreations' => 'Döreden sahypalarymy gözegçilik sanawyma goş',
'tog-watchdefault' => 'Redaktirlän sahypalarymy gözegçilik sanawyma goş',
'compareselectedversions' => 'Saýlanan wersiýalary deňeşdir',
'showhideselectedversions' => 'Saýlanan wersiýalary görkez/gizle',
'editundo' => 'yzyna al',
-'diff-multi' => '({{PLURAL:$2|Bir ulanyjy|$2 ulanyjy}} tarapyndan edilen {{PLURAL:$1|aralyk wersiýa|$1 sany aralyk wersiýa}} görkezilmeýär)',
'diff-multi-manyusers' => '($2 ulanyjydan köp {{PLURAL:$2|ulanyjy|ulanyjy}} tarapyndan edilen {{PLURAL:$1|aralyk wersiýa|$1 sany aralyk wersiýa}} görkezilmeýär)',
# Search results
'rows' => 'Hatarlar:',
'columns' => 'Sütünler:',
'searchresultshead' => 'Gözleg',
-'resultsperpage' => 'Sahypa başyna netije sany:',
'stub-threshold' => '<a href="#" class="stub">Ownuk makala çykgydynyň</a> formaty üçin bosaga (baýt):',
'stub-threshold-disabled' => 'Ýapyk',
'recentchangesdays' => 'Soňky üýtgeşmelerde görkeziljek gün sany:',
'watchmethod-list' => 'gözegçilikde saklaýan sahypalaryňyzdaky soňky özgerdişler barlanylýar',
'watchlistcontains' => 'Gözegçilik sanawyňyzda $1 sany {{PLURAL:$1|sahypa|sahypa}} bar.',
'iteminvalidname' => "'$1' elementinde problema bar, nädogry at...",
-'wlnote' => "Aşakda soňky {{PLURAL:$2|bir sagatda|'''$2''' sagatda}} edilen {{PLURAL:$1|soňky üýtgeşme|soňky '''$1''' üýtgeşme}} görkezilýär.",
'wlshowlast' => 'Soňky $1 sagady $2 güni görkez $3',
'watchlist-options' => 'Gözegçilik sanawynyň opsiýalary',
'tooltip-pt-watchlist' => 'Gözegçilikde saklaýan sahypalarym',
'tooltip-pt-mycontris' => 'Eden goşantlaryňyzyň sanawy',
'tooltip-pt-login' => 'Hasaba girmegiňiz maslahat berilýär, ýöne hökmany däl.',
-'tooltip-pt-anonlogin' => 'Sessiýa açmagyňyz maslahat berilýär, yöne hökmany däl',
'tooltip-pt-logout' => 'Hasapdan çyk',
'tooltip-ca-talk' => 'Sahypanyň mazmuny barada garaýşyňy beýan et',
'tooltip-ca-edit' => 'Bu sahypany redaktirläp bilersiňiz. Ýazdyrmankaňyz synlap görmekligi ýatdan çykarmaň.',
* @file
*
* @author AnakngAraw
+ * @author Aze
* @author Dosmiin Barsbold
* @author Felipe Aira
+ * @author Jewel457
* @author Jojit fb
* @author Kaganer
* @author Namayan
$messages = array(
# User preference toggles
'tog-underline' => 'Pagsasalungguhit ng kawing:',
-'tog-justify' => 'Pantayin ang mga talata',
'tog-hideminor' => 'Itago ang mga maliliit na pagbabago sa mga huling binago',
'tog-hidepatrolled' => 'Ikubli ang napatrolyang mga pagbabagong nasa kamakailang mga pagbabago',
'tog-newpageshidepatrolled' => 'Itago ang napatrolyang mga pahina mula talaan ng bagong pahina',
'tog-numberheadings' => 'Automatikong bilangin ang mga pamagat',
'tog-showtoolbar' => "Ipakita ang ''toolbar'' ng pagbabago (JavaScript)",
'tog-editondblclick' => 'Magbago ng mga pahina sa dalawahang pagpindot (JavaScript)',
-'tog-editsection' => 'Payagan ang mga pagbabagong panseksyon sa mga [baguhin] na kawing',
'tog-editsectiononrightclick' => 'Payagan ang mga pagbabagong panseksyon sa pakanang pagpindot ng mga panseksyong pamagat (JavaScript)',
-'tog-showtoc' => 'Ipakita ang talaan ng mga nilalaman (sa mga pahinang may higit sa 3 punong pamagat)',
'tog-rememberpassword' => 'Tandaan ang paglagda ko sa panghanaphanap na ito (pinakamarami na ang $1 {{PLURAL:$1|araw|mga araw}})',
'tog-watchcreations' => 'Idagdag sa aking tala ng mga binabantayan ang mga pahinang nilikha ko at mga talaksang ikinarga kong paitaas',
'tog-watchdefault' => 'Idagdag sa aking tala ng mga binabantayan ang mga pahina at mga talaksang binago ko',
'welcomecreation-msg' => 'Nilikha na ang iyong kuwenta.
Huwag kalimutang baguhin ang iyong [[Special:Preferences|mga kagustuhan sa {{SITENAME}}]].',
'yourname' => 'Bansag:',
+'userlogin-yourname' => 'Pangngalan',
+'userlogin-yourname-ph' => 'Ilagay ang iyong Pangngalan',
+'createacct-another-username-ph' => 'Ilagay ang Pangngalan',
'yourpassword' => 'Hudyat:',
'userlogin-yourpassword' => 'Hudyat',
'userlogin-yourpassword-ph' => 'Ipasok ang iyong hudyat',
+'createacct-yourpassword-ph' => 'Ilagay ang hudyat',
'yourpasswordagain' => 'Hudyat mo uli:',
'createacct-yourpasswordagain' => 'Tiyakin ang hudyat',
+'createacct-yourpasswordagain-ph' => 'Muling ilagay ang hudyat',
'remembermypassword' => 'Tandaan ang paglagda ko sa kompyuter na ito (pinakamarami na ang $1 {{PLURAL:$1|araw|mga araw}})',
'userlogin-remembermypassword' => 'Panatilihin akong nakalagda',
+'userlogin-signwithsecure' => 'Gumamit ng ligtas na koneksyon',
'yourdomainname' => 'Dominyo mo:',
'password-change-forbidden' => 'Hindi mo maaaring palitan ang mga hudyat sa wiking ito.',
'externaldberror' => 'Maaaring may kamalian sa pagpapatotoo ng kalipunan ng mga dato o kaya hindi ka pinahintulutang isapanahon ng iyong panlabas na kuwenta o patnugutan.',
'gotaccount' => 'May kuwenta ka na ba? $1.',
'gotaccountlink' => 'Lumagda',
'userlogin-resetlink' => 'Nakalimutan mo ang iyong mga detalyeng panglagda?',
+'userlogin-resetpassword-link' => 'Nakalimutan ba ang iyong hudyat?',
+'userlogin-createanother' => 'Lumikha ng iba pang akawnt',
+'createacct-join' => 'Ilagay ang iyong impormasyon sa ibaba.',
+'createacct-another-join' => 'Ilagay ang impormasyon ng bagong akawnt sa ibaba.',
'createacct-emailrequired' => 'Direksiyong e-liham:',
'createaccountmail' => 'Gumamit ng pansamantalang walang-piling hudyat at ipadala ito sa direksiyong e-liham na nakasaad sa ibaba',
'createacct-realname' => 'Tunay na pangalan (maaaring wala)',
'createaccountreason' => 'Dahilan:',
'createacct-reason' => 'Dahilan',
+'createacct-reason-ph' => 'Bakit ka gagawa ng isa pang akawnt?',
+'createacct-imgcaptcha-ph' => 'Ilagay ang tekstong makikita sa itaas.',
+'createacct-benefit-heading' => '{{SITENAME}} ay nilikha ng mga taong iyong katulad.',
'badretype' => 'Hindi magkatugma ang ipinasok mong mga hudyat.',
'userexists' => 'May gumagamit na ng ipinasok na bansag.
Pumili po ng ibang pangalan.',
'loginerror' => 'Kamalian sa paglagda',
+'createacct-error' => 'May pagkakamali sa paglikha ng akawnt',
'createaccounterror' => 'Hindi mailikha ang kuwenta: $1',
'nocookiesnew' => "Nalikha ang kuwenta ng tagagamit, ngunit hindi ka nakalagda.
Gumagamit ang {{SITENAME}} ng mga kuki (''cookies'') upang makalagda ang mga tagagamit.
'passwordtooshort' => 'Ang mga hudyat ay dapat mayroong {{PLURAL:$1|1 panitik|$1 panitik}} (karakter).',
'password-name-match' => 'Dapat magkaiba ang hudyat mo sa bansag mo.',
'password-login-forbidden' => 'Ipinagbabawal ang paggamit ng ganitong pangalan ng tagagamit at hudyat.',
-'mailmypassword' => 'Ipadala sa pamamagitan ng e-liham ang bagong hudyat',
+'mailmypassword' => 'Baguhin ang hudyat',
'passwordremindertitle' => 'Bagong pansamantalang hudyat para sa {{SITENAME}}',
'passwordremindertext' => 'Mayroong (na maaaring ikaw, mula sa adres ng IP na $1) humiling ng isang bagong
hudyat para sa {{SITENAME}} ($4). Isang pansamantalang hudyat ang nilikha
'compareselectedversions' => 'Paghambingin ang mga napiling bersyon',
'showhideselectedversions' => 'Ipakita/itago ang napiling mga bersyon',
'editundo' => 'ibalik',
-'diff-multi' => '({{PLURAL:$1|Isang panggitnang pagbabago|$1 panggitnang mga pagbabago}} ng {{PLURAL:$2|isang tagagamit|$2 mga tagagamit}} ang hindi ipinakikita.)',
'diff-multi-manyusers' => '({{PLURAL:$1|Isang panggitnang pagbabago|$1 panggitnang mga pagbabago}} ng {{PLURAL:$2|isang tagagamit|$2 mga tagagamit}} ang hindi ipinapakikita.)',
'difference-missing-revision' => 'Hindi natagpuan ang {{PLURAL:$2|isang rebisyon|$2 mga rebisyon}} ng kaibahang ($1) ito.
'prefs-setemail' => 'Magtakda ng direksiyong e-liham',
'prefs-email' => 'Mga pagpipilian para sa e-liham',
'prefs-rendering' => 'Hitsura',
-'saveprefs' => 'Sagipin',
+'saveprefs' => 'Itala',
'restoreprefs' => 'Ibalik ang lahat ng likas na mga pagtatakda',
'prefs-editing' => 'May binabago',
'rows' => 'Mga pahalang na hanay:',
'columns' => 'Mga pahabang hanay:',
'searchresultshead' => 'Hanapin',
-'resultsperpage' => 'Bilang ng pagtama sa bawat pahina:',
'stub-threshold' => 'Kakayanan para sa pagpopormat ng <a href="#" class="usbong">kawing ng usbong</a> (mga \'\'byte\'\'):',
'stub-threshold-disabled' => 'Hindi pinagagana',
'recentchangesdays' => 'Mga araw na ipapakita sa kamakailan lamang na mga pagbabago:',
'nrevisions' => '$1 {{PLURAL:$1|pagbabago|mga pagbabago}}',
'nviews' => '$1 {{PLURAL:$1|pagtingin|mga pagtingin}}',
'nimagelinks' => 'Ginamit sa $1 {{PLURAL:$1|pahina|mga pahina}}',
-'ntransclusions' => 'ginamit sa $1 {{plural:$1|pahina|mga pahina}}',
+'ntransclusions' => 'ginamit sa $1 {{PLURAL:$1|pahina|mga pahina}}',
'specialpage-empty' => 'Walang resulta para sa ulat na ito.',
'lonelypages' => 'Mga inulilang pahina',
'lonelypagestext' => 'Ang mga sumusunod ng mga pahina ay hindi nakaturo mula sa ibang mga pahina sa wiking ito.',
'watchmethod-list' => 'sinusuri ang binabantayang mga pahina para sa mga kamakailan lamang na mga pagbabago',
'watchlistcontains' => 'Naglalaman ng $1 {{PLURAL:$1|pahina|mga pahina}} ang iyong talaan ng mga binabantayan.',
'iteminvalidname' => "May suliranin ang bagay na '$1', hindi tanggap na pangalan...",
-'wlnote' => "Nasa ibaba ang {{PLURAL:$1|pinakahuling pagbabago|pinakahuling '''$1''' mga pagbabago}} sa loob ng huling {{PLURAL:$2|oras|'''$2''' mga oras}}, magmula noong $3 sa ganap na ika-$4.",
+'wlnote2' => 'Nasa ibaba ang mga pagbabago sa nakaraang {{PLURAL:$1|oras|<strong>$1',
'wlshowlast' => 'Ipakita ang huling $1 mga oras $2 mga araw $3',
'watchlist-options' => 'Mga pagpipilian para sa talaan ng mga binabantayan',
'allmessages-prefix' => 'Salain ayon sa unlapi:',
'allmessages-language' => 'Wika:',
'allmessages-filter-submit' => 'Gawin',
+'allmessages-filter-translate' => 'Isalin',
# Thumbnails
'thumbnail-more' => 'Palakihin',
'tooltip-pt-watchlist' => 'Ang talaan ng mga pagbabago sa mga pahinang binabantayan mo',
'tooltip-pt-mycontris' => 'Talaan ng mga ambag mo',
'tooltip-pt-login' => 'Hinihimok kang lumagda, bagaman hindi ito kinakailangan.',
-'tooltip-pt-anonlogin' => 'Hinihimok kang lumagda, bagaman hindi ito kinakailangan.',
'tooltip-pt-logout' => 'Umalis sa pagkakalagda',
'tooltip-ca-talk' => 'Usapan tungkol sa nilalaman ng pahinang ito',
'tooltip-ca-edit' => 'Maaaring baguhin ang pahinang ito. Paki gamit ang buton ng paunang tingin bago itala.',
$messages = array(
# User preference toggles
'tog-underline' => 'Линки жинтоно ријә быкәш:',
-'tog-justify' => 'Мәтни бә сәһифә кәно бәробәр быкә.',
'tog-hideminor' => 'Охоминә дәгишонәдә гәдә дәгишон нишо мәдә.',
'tog-hidepatrolled' => 'Нујә дәгишон сијоһијәдә дәвинә кардә быә дәгишон нишо мәкә.',
'tog-newpageshidepatrolled' => 'Нијони огәтеј ноғо доә быә сәһифон бә тожә сәһифон сијоһиәдә',
'tog-usenewrc' => 'Охоминә дәгишон сәһифәдә ијән ноғо доә сијоһијәдә дәгишон бә дәстон ҹо кардеј (гәрәке JavaScript)',
'tog-numberheadings' => 'Автоматик башлығон нумрәләмиш быкә',
-'tog-showtoc' => 'Мындәриҹоти сијоһи нишо быдә (3 сәрловһәсә веј быә сәһифон)',
'tog-watchcreations' => 'Зијод кардеј чымы офәјә быә сәһифон ијән фајлон бә ноғо доә сијоһи',
'tog-watchdefault' => 'Зијод кардеј демы дәгиш кардә быә сәһифон ијән фајлон бә ноғо доә сијоһи',
'tog-watchmoves' => 'Зијод кардеј фајлон ијән ном дәгиш кардә быә сәһифон бә ноғо доә сијоһи',
'lineno' => 'Сәтыр $1:',
'compareselectedversions' => 'Сәчын кардә быә рәвојәтон мығојисә кардеј.',
'editundo' => 'ләғв кардеј',
-'diff-multi' => '({{PLURAL:$2|Иглә истифадәчи|$2 истифадәчи}} тәрәфәдә кардә быә {{PLURAL:$1|иглә арә редактә|$1 арә редактә}} нушо додәни)',
# Search results
'searchresults' => 'Нәве нәтиҹон',
* @author BetelgeuSeginus
* @author Bilalokms
* @author Bombola
+ * @author Cagrix
* @author Cekli829
* @author Coolland
* @author Dbl2010
* @author Szoszv
* @author Tarikozket
* @author Tarkovsky
+ * @author Trncmvsr
* @author Universal Life
* @author Urhixidur
* @author Uğur Başak
$messages = array(
# User preference toggles
'tog-underline' => 'Bağlantıların altını çiz:',
-'tog-justify' => 'Paragrafları iki yana yasla',
'tog-hideminor' => 'Son değişiklikler sayfasında küçük değişiklikleri gizle',
'tog-hidepatrolled' => 'Son değişikliklerde gözden geçirilen düzenlemeleri gizle',
'tog-newpageshidepatrolled' => 'Kontrol edilmiş sayfaları yeni sayfalar listesinde gizle',
'tog-numberheadings' => 'Başlıkları otomatik numaralandır',
'tog-showtoolbar' => 'Düzenleme araç çubuğunu göster',
'tog-editondblclick' => 'Çift tıklayarak sayfaları düzenle',
-'tog-editsection' => 'Bölümleri [{{int:Editsection}}] bağlantıları ile düzenlemeyi etkinleştir',
'tog-editsectiononrightclick' => 'Bölüm başlığına sağ tıklayarak bölümleri düzenleyebilme olanağı ver',
-'tog-showtoc' => 'İçindekiler tablosunu göster (3 taneden fazla başlığı olan sayfalar için)',
'tog-rememberpassword' => 'Girişimi bu tarayıcıda hatırla (en fazla $1 {{PLURAL:$1|gün|gün}} için)',
'tog-watchcreations' => 'Açtığım sayfaları ve yüklediğim dosyaları izleme listeme ekle',
'tog-watchdefault' => 'Düzenleme yaptığım sayfaları izleme listeme ekle',
'hidden-category-category' => 'Gizli kategoriler',
'category-subcat-count' => '{{PLURAL:$2|Bu kategori sadece aşağıdaki alt kategoriyi içermektedir.|Bu kategoride aşağıdaki {{PLURAL:$1|alt kategori|$1 alt kategorisi}} dahil $2 alt kategorisi vardır.}}',
'category-subcat-count-limited' => 'Bu kategori aşağıdaki {{PLURAL:$1|alt kategoriye|$1 alt kategoriye}} sahiptir.',
-'category-article-count' => '{{PLURAL:$2|Bu kategori sadece aşağıdaki sayfayı içermektedir.|Toplam $2 taneden, aşağıdaki {{PLURAL:$1|sayfa|$1 sayfa}} bu kategoridedir.}}',
-'category-article-count-limited' => 'Bu kategoride {{PLURAL:$1|sayfa|$1 sayfa}} bulunmaktadır.',
-'category-file-count' => '{{PLURAL:$2|Bu kategori sadece aşağıdaki dosyayı içerir.|Toplam $2 taneden, aşağıdaki {{PLURAL:$1|dosya|$1 dosya}} bu kategoridedir.}}',
-'category-file-count-limited' => 'Aşağıdaki {{PLURAL:$1|dosya|$1 dosya}} mevcut kategoridedir.',
+'category-article-count' => '{{PLURAL:$2|Bu kategori sadece aşağıdaki sayfayı içermektedir.|Toplam $2 taneden, aşağıdaki {{PLURAL:$1|sayfa|$1 sayfalar}} bu kategoridedir.}}',
+'category-article-count-limited' => 'Bu kategoride {{PLURAL:$1|sayfa|$1 sayfalar}} bulunmaktadır.',
+'category-file-count' => '{{PLURAL:$2|Bu kategori sadece aşağıdaki dosyayı içerir.|Toplam $2 taneden, aşağıdaki {{PLURAL:$1|dosya|$1 dosyalar}} bu kategoridedir.}}',
+'category-file-count-limited' => 'Aşağıdaki {{PLURAL:$1|dosya|$1 dosyalar}} mevcut kategoridedir.',
'listingcontinuesabbrev' => '(devam)',
'index-category' => 'Dizinli sayfalar',
'noindex-category' => 'Dizinli olmayan sayfalar',
'broken-file-category' => 'Bozuk dosya bağlantıları içeren sayfalar',
'about' => 'Hakkında',
-'article' => 'Madde',
+'article' => 'İçerik sayfası',
'newwindow' => '(yeni bir pencerede açılır)',
'cancel' => 'İptal',
'moredotdotdot' => 'Daha...',
'helppage' => 'Help:İçindekiler',
'mainpage' => 'Ana Sayfa',
'mainpage-description' => 'Ana sayfa',
-'policy-url' => 'Project:Politika',
+'policy-url' => 'Project:İlkeler',
'portal' => 'Topluluk portalı',
-'portal-url' => 'Project:Topluluk portalı',
+'portal-url' => 'Project:Topluluk portali',
'privacy' => 'Gizlilik ilkesi',
'privacypage' => 'Project:Gizlilik ilkesi',
'ok' => 'Tamam',
'pagetitle-view-mainpage' => '{{SITENAME}}',
'retrievedfrom' => '"$1" adresinden alındı.',
-'youhavenewmessages' => 'Yeni $1 var ($2).',
+'youhavenewmessages' => '$1 {{PLURAL:$3|var}} ($2).',
'youhavenewmessagesfromusers' => '{{PLURAL:$3|Başka bir kullanıcıdan|$3 kullanıcıdan}} $1 var ($2).',
'youhavenewmessagesmanyusers' => 'Birçok kullanıcıdan $1 var ($2).',
'newmessageslinkplural' => '{{PLURAL:$1|yeni mesajınız|yeni mesajlarınız}}',
'retypenew' => 'Yeni parolayı tekrar girin',
'resetpass_submit' => 'Şifreyi ayarlayın ve oturum açın',
'changepassword-success' => 'Parolanız başarıyla değiştirildi!',
+'changepassword-throttled' => 'Çok fazla yeni oturum açma girişiminde bulundunuz.
+Lütfen tekrar denemeden önce $1 bekleyin.',
'resetpass_forbidden' => 'Parolalar değiştirilememektedir',
'resetpass-no-info' => 'Bu sayfaya doğrudan erişmek için oturum açmanız gereklidir.',
'resetpass-submit-loggedin' => 'Parolayı değiştir',
'changeemail' => 'E-posta adresini değiştir',
'changeemail-header' => 'Hesabın e-posta adresini değiştirin',
'changeemail-text' => 'E-posta adresinizi değiştirmek için bu formu doldurun. Değişikliği onaylamak için parolanızı girmeniz gerekecektir.',
-'changeemail-no-info' => 'Bu sayfaya doğrudan ulaşabilmek için oturum açmış olmalısınız.',
+'changeemail-no-info' => 'Bu sayfaya doğrudan erişmek için oturum açmanız gereklidir.',
'changeemail-oldemail' => 'Mevcut E-posta adresi:',
'changeemail-newemail' => 'Yeni E-posta adresi:',
'changeemail-none' => '(yok)',
'changeemail-password' => '{{SITENAME}} parolanız:',
'changeemail-submit' => "E-posta'yı değiştir",
'changeemail-cancel' => 'İptal',
+'changeemail-throttled' => 'Çok fazla oturum açma girişiminde bulundunuz.
+Lütfen tekrar denemeden önce $1 bekleyin.',
# Special:ResetTokens
'resettokens' => 'Anahtarları sıfırla',
Siz sayfayı görüntülerken taşınmış veya silinmiş olabilir.',
'loginreqtitle' => 'Oturum açmanız gerekiyor',
'loginreqlink' => 'oturum aç',
-'loginreqpagetext' => 'Diğer sayfaları görmek için $1 olmalısınız.',
+'loginreqpagetext' => 'Diğer sayfaları görmek için $1 .',
'accmailtitle' => 'Parola gönderildi.',
'accmailtext' => "[[User talk:$1|$1]] için rastgele oluşturulan parola $2 adresine gönderildi.
'content-not-allowed-here' => '"$1" içeriğine, [[$2]] sayfasında izin verilmemekte.',
'editwarning-warning' => 'Bu sayfadan ayrılmak yaptığınız herhangi bir değişikliği kaybetmenize sebep olabilir.
Eğer giriş yaptıysanız, bu uyarıyı, tercihlerinizin "Sayfa yazma alanı" bölümünde devre dışı bırakabilirsiniz.',
+'editpage-notsupportedcontentformat-title' => 'İçerik biçimi desteklenmiyor',
+'editpage-notsupportedcontentformat-text' => '$1 içerik biçimi $2 içerik modeli tarafından desteklenmiyor.',
# Content models
'content-model-wikitext' => 'vikimetin',
'showhideselectedversions' => 'Seçili sürümleri göster/gizle',
'editundo' => 'geri al',
'diff-empty' => '(Fark yok)',
-'diff-multi' => '({{PLURAL:$2|Bir kullanıcı|$2 kullanıcı}} tarafından yapılan {{PLURAL:$1|bir ara revizyon|$1 ara revizyon}} gösterilmiyor)',
'diff-multi-manyusers' => '($2 kullancıdan fazla {{PLURAL:$2|kullanıcı|kullanıcı}} tarafından yapılan {{PLURAL:$1|bir ara revizyon|$1 ara revizyon}} gösterilmiyor)',
'difference-missing-revision' => 'Bu farkın {{PLURAL:$2|bir revizyonu|$2 revizyonu}} ($1) {{PLURAL:$2|bulunamadı|bulunamadı}}.
'search-result-score' => 'Uygunluk: $1%',
'search-redirect' => '($1 sayfasından yönlendirme)',
'search-section' => '($1 bölümü)',
+'search-file-match' => '(dosya içeriğiyle eşleşiyor)',
'search-suggest' => 'Bunu mu demek istediniz: $1',
'search-interwiki-caption' => 'Kardeş projeler',
'search-interwiki-default' => '$1 sonuçlar:',
'rows' => 'Satır',
'columns' => 'Sütun',
'searchresultshead' => 'Arama',
-'resultsperpage' => 'Sayfada gösterilecek bulunan madde sayısı',
'stub-threshold' => '<a href="#" class="stub">Taslak bağlantısı</a> formatı için baraj (bayt):',
'stub-threshold-disabled' => 'Devre dışı',
'recentchangesdays' => 'Son değişikliklerde gösterilecek günler:',
Dosyanızı yinede yüklemek istiyorsanız, lütfen geri gidip yeni bir isim kullanın. [[File:$1|thumb|center|$1]]',
'file-exists-duplicate' => 'Bu dosya aşağıdaki {{PLURAL:$1|dosyanın|dosyaların}} kopyasıdır:',
'file-deleted-duplicate' => 'Bu dosyanın özdeşi olan başka bir dosya ([[:$1]]) daha önceden silindi. Bu dosyayı yeniden yüklemeden önce diğer dosyanın silme kayıtlarını kontrol etmelisiniz.',
+'file-deleted-duplicate-notitle' => 'Bu dosyaya eş bir dosya daha önceden silinmiş, ve başlık bastırılmış.
+Dosyayı tekrar yüklemeye devam etmeden önce, bastırılmış dosya verisini görme yetkisine sahip birisine durumu gözden geçirmesini istemelisiniz.',
'uploadwarning' => 'Yükleme uyarısı',
'uploadwarning-text' => 'Lütfen aşağıdaki dosya açıklamasını değiştirin ve tekrar deneyin.',
'savefile' => 'Dosyayı kaydet',
'protectedpages' => 'Koruma altındaki sayfalar',
'protectedpages-indef' => 'Sadece süresiz korumalar',
'protectedpages-cascade' => 'Sadece ardışık korumalar',
+'protectedpages-noredirect' => 'Yönlendirmeleri gizle',
'protectedpagesempty' => 'Şu anda, bu parametrelerle korunan hiç bir sayfa yok.',
'protectedtitles' => 'Korunan başlıklar',
'protectedtitlesempty' => 'Şu anda, bu parametrelerle korunan hiç bir başlık yok.',
'watchmethod-list' => 'izlediğiniz sayfalarda yapılan son değişiklikler kontrol ediliyor',
'watchlistcontains' => 'İzleme listenizde $1 tane {{PLURAL:$1|sayfa|sayfa}} var.',
'iteminvalidname' => "'$1' öğesi ile sorun, geçersiz isim...",
-'wlnote' => "$3 saat $4 itibariyle son {{PLURAL:$2|bir saatte|'''$2''' saatte}} yapılan {{PLURAL:$1|son değişiklik|son '''$1''' değişiklik}} aşağıdadır.",
'wlshowlast' => 'Son $1 saati $2 günü göster $3',
'watchlist-options' => 'İzleme listesi seçenekleri',
'delete-warning-toobig' => 'Bu sayfanın büyük bir değişiklik geçmişi var, $1 {{PLURAL:$1|revizyonun|revizyonun}} üzerinde.
Bunu silmek {{SITENAME}} işlemlerini aksatabilir;
dikkatle devam edin.',
+'deleting-backlinks-warning' => "'''Uyarı:''' Silmek üzere olduğunuz sayfaya başka sayfalardan bağlantıları var veya sayfanın bazı bölümleri başka sayfalar tarafından alıntı olarak kullanılıyor.",
# Rollback
'rollback' => 'değişiklikleri geri al',
Engellemeleri gözden geçirmek için [[Special:BlockList|engel listesine]] bakınız.',
'ipb-blockingself' => 'Kendinizi engellemek üzeresiniz! Bunu yapmak istediğinizden emin misiniz?',
'ipb-confirmhideuser' => '"Kullanıcıyı gizle" seçiliyken bir kullanıcı engellemek üzeresiniz. Bu, kullanıcının adını tüm listeler ile günlük girişlerinde bastıracaktır. Bunu yapmak istediğinizden emin misiniz?',
+'ipb-confirmaction' => 'Bunu gerçekten yapmak istediğinize eminseniz, lütfen en alttaki "{{int:ipb-confirm}}" alanını işaretleyin.',
'ipb-edit-dropdown' => 'Engelleme nedenleri düzenle',
'ipb-unblock-addr' => '$1 için engellemeyi kaldır',
'ipb-unblock' => 'Engellemeyi kaldır',
'range_block_disabled' => 'Hizmetliler için aralık engellemesi oluşturma yeteneği devre dışı.',
'ipb_expiry_invalid' => 'Geçersiz bitiş zamanı.',
'ipb_expiry_temp' => 'Gizli kullanıcı adı engellemeleri kalıcı olmalı.',
-'ipb_hide_invalid' => 'Kullanıcı hesabı gizlenemiyor; çok fazla değişikliği olabilir.',
+'ipb_hide_invalid' => 'Kullanıcı hesabı gizlenemiyor; {{PLURAL:$1|Bir düzenleme|$1 düzenleme}}den daha fazla düzenlemesi var.',
'ipb_already_blocked' => '"$1" zaten engellenmiş',
'ipb-needreblock' => '$1 zaten engellenmiş. Ayarları değiştirmek istiyor musunuz?',
'ipb-otherblocks-header' => 'Diğer {{PLURAL:$1|engelleme|engellemeler}}',
'tooltip-pt-watchlist' => 'Değişiklikler için izlemeye aldığınız sayfaların listesi',
'tooltip-pt-mycontris' => 'Katkılarınızın listesi',
'tooltip-pt-login' => 'Oturum açmanızı tavsiye ederiz; ancak zorunda değilsiniz',
-'tooltip-pt-anonlogin' => 'Oturum açmanızı tavsiye ederiz; ancak zorunda değilsiniz',
'tooltip-pt-logout' => 'Sistemden çık',
'tooltip-ca-talk' => 'İçerik ile ilgili tartışma',
'tooltip-ca-edit' => 'Bu sayfayı değiştirebilirsiniz. Lütfen kaydetmeden önce önizleme düğmesini kullanın.',
'minutes' => '{{PLURAL:$1|$1 dakika|$1 dakika}}',
'hours' => '{{PLURAL:$1|$1 saat|$1 saat}}',
'days' => '{{PLURAL:$1|$1 gün|$1 gün}}',
-'weeks' => '{{PLURAL: $1|$1 hafta|$1 hafta}}',
+'weeks' => '{{PLURAL:$1|$1 hafta|$1 hafta}}',
'months' => '{{PLURAL:$1|$1 ay|$1 ay}}',
'years' => '{{PLURAL:$1|$1 yıl|$1 yıl}}',
'ago' => '$1 önce',
'version-parser-function-hooks' => 'Derleyici fonksiyon çengelleri',
'version-hook-name' => 'Çengel adı',
'version-hook-subscribedby' => 'Abone olan',
-'version-version' => '(Sürüm $1)',
-'version-license' => 'Lisans',
+'version-version' => '($1 sürümü)',
+'version-license' => 'MediaWiki Lisansı',
+'version-ext-license' => 'Lisans',
+'version-ext-colheader-name' => 'Uzantı',
+'version-ext-colheader-version' => 'Sürüm',
+'version-ext-colheader-license' => 'Lisans',
+'version-ext-colheader-description' => 'Açıklama',
+'version-ext-colheader-credits' => 'Yazarlar',
+'version-license-title' => '$1 için Lisans',
+'version-license-not-found' => 'Bu uzantı için detaylı lisans bilgisi bulunamadı.',
+'version-credits-title' => '$1 için Krediler',
+'version-credits-not-found' => 'Bu eklenti için detaylı kredi bilgisi bulunamadı.',
'version-poweredby-credits' => "Bu wiki '''[https://www.mediawiki.org/ MediaWiki]''' programı kullanılarak oluşturulmuştur, telif © 2001-$1 $2.",
'version-poweredby-others' => 'diğerleri',
'version-poweredby-translators' => 'translatewiki.net çevirmenleri',
'api-error-overwrite' => 'Varolan dosyanın üzerine yazmaya izin verilmiyor.',
'api-error-stashfailed' => 'İç hata: Sunucu, geçici dosyaları kaybetti.',
'api-error-publishfailed' => 'İç hata: Sunucu geçici dosyayı yayınlarken başarısız oldu.',
+'api-error-stasherror' => 'Dosya zulaya yüklenirken hata oluştu.',
'api-error-timeout' => 'Sunucu beklenen süre içinde yanıt vermedi.',
'api-error-unclassified' => 'Bilinmeyen bir hata oluştu.',
'api-error-unknown-code' => 'Bilinmeyen hata: "$1"',
'expand_templates_generate_rawhtml' => 'Ham HTML göster',
'expand_templates_preview' => 'Önizleme',
+# Unknown messages
+'uploadinvalidxml' => 'Yüklenen dosyadaki XML işlenemedi.',
);
* @file
*
* @author Ariyo
+ * @author Arjunaraoc
*/
$messages = array(
'lineno' => 'Serṫo $1:',
'compareselectedversions' => 'Compare selected revisions',
'editundo' => 'slag',
-'diff-multi' => '({{PLURAL:$1|One intermediate revision|$1 intermediate revisions}} by {{PLURAL:$2|one user|$2 users}} not shown)',
# Search results
'searchresults' => 'Nafqe duKruxyayḍux',
$messages = array(
# User preference toggles
'tog-underline' => 'Hlanganisa nkhwatiheto:',
-'tog-justify' => 'Hikahata xirhapa',
'tog-hideminor' => 'Tumbeta mindzulamiso leyi tsongo',
'tog-hidepatrolled' => 'Tumbeta ku cinca loku languteriweke eka kucinca ka sweswinyana',
'tog-newpageshidepatrolled' => 'Tumbeta kucinca loku languteriweke eka nxaxamelo wa matluka lamantswa',
'tog-numberheadings' => 'Tinhloko-mhaka leti hleriweke',
'tog-showtoolbar' => 'Komba xiangarhi xo cinca (yitirhisa ntsalo wa Java)',
'tog-editondblclick' => 'Lulamisa matluka hi ku thlava kambirhi (yitirhisa ntsalo wa Java)',
-'tog-editsection' => 'Pfula ku lulamisa xiyenge hi ku tirhisa xithlavinyeti xo [edit|lulamisa]',
'tog-editsectiononrightclick' => 'Pfula ku lulamisa hi swiyenge hi ku thlava nhlokomhaka ya xiyenge (yitirhisa ntsalo wa Java)',
-'tog-showtoc' => 'Komba nxaxamelo wa leswingandzeni (eka tinhlokomhaka tinharhu kumbe kutlula)',
'tog-rememberpassword' => 'Tsundzuka ku nghena eka Khompuyuta leyi (kufikela eka $1 {{PLURAL:$1|siku|masiku}})',
'tog-watchcreations' => 'Hoxa matluka lawa ndzi matumbuluxaka eka leswi ndziswi languteke',
'tog-watchdefault' => 'Hoxa matluka lawa ndzi malulamisaka eka leswi ndziswi languteke',
'lineno' => 'Ntila $1:',
'compareselectedversions' => 'Hambaniisa exikarhi ka mindzulamiso leyi langiweke',
'editundo' => 'Thlerisela',
-'diff-multi' => '({{PLURAL:$1|ndzulamiso lowu landzeleke|$1 mindzulamiso leyi landzeleke}} hi {{PLURAL:$2|mutirhisi|$2 wavatirhisi}} leyingakombiwangiki)',
# Search results
'searchresults' => 'Lavisisa eka mimbuyelo',
$messages = array(
# User preference toggles
'tog-underline' => 'Сылтамаларның астына сызу:',
-'tog-justify' => 'Текст киңлек буенча тигезләнсен',
'tog-hideminor' => 'Соңгы үзгәртүләр исемлегендә кече үзгәртүләр яшерелсен',
'tog-hidepatrolled' => 'Тикшерелгән үзгәртүләр яңа үзгәртүләр исемлегеннән яшерелсен.',
'tog-newpageshidepatrolled' => 'Тикшерелгән битләр яңа битләр исемлегеннән яшерелсен',
'tog-numberheadings' => 'Атамалар автомат рәвештә номерлансын',
'tog-showtoolbar' => 'Үзгәртү вакытында коралларның өске панеле күрсәтелсен (JavaScript кирәк)',
'tog-editondblclick' => 'Битләргә ике чирттерү белән үзгәртү бите ачылсын (JavaScript кирәк)',
-'tog-editsection' => 'Һәр бүлектә «үзгәртү» сылтамасы күрсәтелсен',
'tog-editsectiononrightclick' => 'Бүлек исеменә тычканның уң чирттермәсе белән төрткәч үзгәртү бите ачылсын (JavaScript кирәк)',
-'tog-showtoc' => 'Эчтәлек күрсәтелсен (3 тән күбрәк башламлы битләрдә)',
'tog-rememberpassword' => 'Хисап язмамны бу браузерда саклансын (иң күп $1 {{PLURAL:$1|көн|көн|көн}}гә кадәр)',
'tog-watchcreations' => 'Мин төзегән битләр һәм йөкләгән файллар күзәтү исемлегемә өстәлсен',
'tog-watchdefault' => 'Мин үзгәрткән битләр һәм файллар күзәтү исемлегемә өстәлсен',
'december-date' => '$1 Декабрь',
# Categories related messages
-'pagecategories' => '{{PLURAL:$1|Төркем|Төркемнәр}}',
+'pagecategories' => '{{PLURAL:$1|1=Төркем|Төркемнәр}}',
'category_header' => '«$1» төркемендәге битләр',
'subcategories' => 'Төркемчәләр',
'category-media-header' => '«$1» төркемендәге файллар',
'category-empty' => "''Бу төркем әлегә буш.''",
-'hidden-categories' => '{{PLURAL:$1|Яшерен төркем|Яшерен төркемнәр}}',
+'hidden-categories' => '{{PLURAL:$1|1=Яшерен төркем|Яшерен төркемнәр}}',
'hidden-category-category' => 'Яшерен төркемнәр',
'category-subcat-count' => '{{PLURAL:$2|Бу төркемдә түбәндәге төркемчә генә бар.|$2 төркемчәдән {{PLURAL:$1|$1 төркемчә күрсәтелгән}}.}}',
'category-subcat-count-limited' => 'Бу төркемдә {{PLURAL:$1|$1 төркемчә}} бар.',
'deletethispage' => 'Бу битне бетерү',
'undeletethispage' => 'Бу битне кайтарырга',
'undelete_short' => '$1 {{PLURAL:$1|үзгәртмәне}} торгызу',
-'viewdeleted_short' => '{{PLURAL:$1|1 бетерелгән үзгәртүне|$1 бетерелгән үзгәртүне}} карау',
+'viewdeleted_short' => '{{PLURAL:$1|1=1 бетерелгән үзгәртүне|$1 бетерелгән үзгәртүне}} карау',
'protect' => 'Яклау',
'protect_change' => 'үзгәртү',
'protectthispage' => 'Бу битне яклау',
'badaccess' => 'Керү хатасы',
'badaccess-group0' => 'Сез сораган гамәлне башкара алмыйсыз.',
-'badaccess-groups' => 'Соралган гамәлне $1 {{PLURAL:$2|төркеменең|төркеменең}} кулланучылары гына башкара ала.',
+'badaccess-groups' => 'Соралган гамәлне $1 {{PLURAL:$2|1=төркеменең|төркеменең}} кулланучылары гына башкара ала.',
'versionrequired' => 'MediaWikiның $1 версиясе таләп ителә',
'versionrequiredtext' => 'Бу бит белән эшләү өчен MediaWikiның $1 версиясе кирәк. [[Special:Version|Кулланылучы программа версиясе турында мәгълүмат битен]] кара.',
'youhavenewmessagesfromusers' => 'Сезгә {{PLURAL:$3|$3 кулланучыдан}} $1 килде ($2).',
'youhavenewmessagesmanyusers' => 'Сез бик күп кулланучыдан $1 алдыгыз ($2).',
'newmessageslinkplural' => '{{PLURAL:$1|яңа хәбәр}}',
-'newmessagesdifflinkplural' => '{{PLURAL:$1|соңгы үзгәртү|соңгы үзгәртүләр}}',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|1=соңгы үзгәртү|соңгы үзгәртүләр}}',
'youhavenewmessagesmulti' => 'Сезгә монда яңа хәбәрләр бар: $1',
'editsection' => 'үзгәртү',
'editold' => 'үзгәртү',
'collapsible-expand' => 'Ачу',
'thisisdeleted' => '$1 карарга яки торгызырга телисезме?',
'viewdeleted' => '$1 карарга телисезме?',
-'restorelink' => '{{PLURAL:$1|1 бетерелгән үзгәртүне|$1 бетерелгән үзгәртүне}}',
+'restorelink' => '{{PLURAL:$1|1=1 бетерелгән үзгәртүне|$1 бетерелгән үзгәртүне}}',
'feedlinks' => 'Шушылай:',
'feed-invalid' => 'Язылу каналы тибы ялгыш',
'feed-unavailable' => 'Синдикация тасмасы ябык',
'viewyourtext' => "Сез '''үз төзәтмәләрегезне''' бу сәхифәдә карый һәм чыгарылма текстны күчермәли аласыз:",
'protectedinterface' => 'Бу биттә программа тәэминатының интерфейс хәбәрләре бар. Вандализмга каршы көрәш сәбәпле, бу битне үзгәртү тыела. Әлеге хәбәрнең тәрҗемәсен өстәү яки үзгәртү өчен, зинһар өчен, MediaWiki [//translatewiki.net/ translatewiki.net] тәрҗемәләү сайтын кулланыгыз.',
'editinginterface' => "'''Игътибар:''' Сез программа тәэминатының интерфейс тексты булган битне үзгәртәсез. Бу башка кулланучыларга да тәэсир итәчәк. Тәрҗемә өчен [//translatewiki.net/wiki/Main_Page?setlang=tt-cyrl translatewiki.net] локализацияләү проектын кулланыгыз.",
-'cascadeprotected' => 'Бу бит үзгәртүләрдән сакланган, чөнки ул каскадлы саклау кабул ителгән {{PLURAL:$1|биткә|битләргә}} өстәлгән:
+'cascadeprotected' => 'Бу бит үзгәртүләрдән сакланган, чөнки ул каскадлы саклау кабул ителгән {{PLURAL:$1|1=биткә|битләргә}} өстәлгән:
$2',
'namespaceprotected' => "'''$1''' исем киңлегендәге битләрне үзгәртү өчен сезнең рөхсәтегез юк.",
'customcssprotected' => 'Сез бу CSS-сәхифәне үзгәртә алмыйсыз, чөнки монда башка кулланучының шәхси көйләнмәләре саклана',
Зинһар, серсүзне алгач, системага яңадан керегез.',
'blocked-mailpassword' => 'Сезнең IP адресыгыз белән битләр үзгәртеп һәм серсүзне яңартып булмый.',
'eauthentsent' => 'Адрес үзгәртүне дәлилләү өчен аңа махсус хат җибәрелде. Хатта язылганнарны үтәвегез сорала.',
-'throttled-mailpassword' => 'Серсүзне электрон почтага җибәрү гамәлен сез {{PLURAL:$1|соңгы $1 сәгать}} эчендә кулландыгыз инде. Бу гамәлне явызларча куллануны кисәтү максатыннан аны $1 {{PLURAL:$1|сәгать}} аралыгында бер генә тапкыр башкарып була.',
+'throttled-mailpassword' => 'Серсүзне электрон почтага җибәрү гамәлен сез {{PLURAL:$1|1=соңгы $1 сәгать}} эчендә кулландыгыз инде. Бу гамәлне явызларча куллануны кисәтү максатыннан аны $1 {{PLURAL:$1|сәгать}} аралыгында бер генә тапкыр башкарып була.',
'mailerror' => 'Хат җибәрү хатасы: $1',
'acct_creation_throttle_hit' => 'Сезнең IP адресыннан бу тәүлек эчендә {{PLURAL:$1|$1 хисап язмасы}} төзелде инде. Шунлыктан бу гамәл сезнең өчен вакытлыча ябык.',
'emailauthenticated' => 'Электрон почта адресыгыз расланды: $3, $2.',
'passwordreset-email' => 'E-mail адресы:',
'passwordreset-emailtitle' => '{{SITENAME}} хисап язмасы турында мәгълүматлар',
'passwordreset-emailtext-ip' => 'Кемдер (бәлки, сездер, $1 IP-адресыннан) {{SITENAME}} ($4) проектында сезнең серсүзне искә төшерүне сорады.
-{{PLURAL:$3|Түбәндәге хисап язмасы|Түбәндәге хисап язмалары}} бу электрон әрҗә адресы белән бәйле:
+{{PLURAL:$3|1=Түбәндәге хисап язмасы|Түбәндәге хисап язмалары}} бу электрон әрҗә адресы белән бәйле:
$2
-{{PLURAL:$3|Бу вакытлы серсүз|Бу вакытлы серсүзләр}} {{PLURAL:$5|$5 көн}} дәвамында эшлиячәкләр.
+{{PLURAL:$3|1=Бу вакытлы серсүз|Бу вакытлы серсүзләр}} {{PLURAL:$5|$5 көн}} дәвамында эшлиячәкләр.
Сез системага керергә һәм яңа серсүз сайларга тиешсез.
Әгәр сез серсүз сорамаган булсагыз яки элеккеге серсүзегезне искә төшерсәгез
һәм аны үзгәртергә теләмәсәгез, бу хатка җавап бирмәгез
һәм элеккеге серсүзегезне кулланыгыз.',
'passwordreset-emailtext-user' => '{{SITENAME}} проектыннан $1 кулланучысы {{SITENAME}} ($4) проектында сезнең серсүзне искә төшерүне сорады.
-{{PLURAL:$3|Түбәндәге хисап язмасы|Түбәндәге хисап язмалары}} бу электрон әрҗә адресы белән бәйле:
+{{PLURAL:$3|1=Түбәндәге хисап язмасы|Түбәндәге хисап язмалары}} бу электрон әрҗә адресы белән бәйле:
$2
-{{PLURAL:$3|Бу вакытлы серсүз|Бу вакытлы серсүзләр}} {{PLURAL:$5|$5 көн}} дәвамында эшлиячәкләр.
+{{PLURAL:$3|1=Бу вакытлы серсүз|Бу вакытлы серсүзләр}} {{PLURAL:$5|$5 көн}} дәвамында эшлиячәкләр.
Сез системага керергә һәм яңа серсүз сайларга тиешсез.
Әгәр сез серсүз сорамаган булсагыз яки элеккеге серсүзегезне искә төшерсәгез
һәм аны үзгәртергә теләмәсәгез, бу хатка җавап бирмәгез
'cascadeprotectedwarning' => "'''Кисәтү:''' Бу битне идарәчеләр гына үзгәртә ала. Сәбәбе: ул {{PLURAL:$1|каскадлы яклау исемлегенә кертелгән}}:",
'titleprotectedwarning' => "'''Кисәтү: Мондый исемле бит якланган, аны үзгәртү өчен [[Special:ListGroupRights|тиешле хокукка]] ия булу зарур.'''
Аста күзәтү көндәлегендәге соңгы язма бирелгән:",
-'templatesused' => 'Бу биттә кулланылган {{PLURAL:$1|үрнәк|үрнәкләр}}:',
-'templatesusedpreview' => 'Алдан каралучы биттә кулланылган {{PLURAL:$1|үрнәк|үрнәкләр}}:',
-'templatesusedsection' => 'Бу бүлектә кулланылган {{PLURAL:$1|үрнәк|үрнәкләр}}:',
+'templatesused' => 'Бу биттә кулланылган {{PLURAL:$1|1=үрнәк|үрнәкләр}}:',
+'templatesusedpreview' => 'Алдан каралучы биттә кулланылган {{PLURAL:$1|1=үрнәк|үрнәкләр}}:',
+'templatesusedsection' => 'Бу бүлектә кулланылган {{PLURAL:$1|1=үрнәк|үрнәкләр}}:',
'template-protected' => '(якланган)',
'template-semiprotected' => '(өлешчә якланган)',
'hiddencategories' => 'Бу бит $1 {{PLURAL:$1|яшерен төркемгә}} керә:',
'sectioneditnotsupported-title' => 'Бүлекләрне үзгәртү рөхсәт ителми.',
'sectioneditnotsupported-text' => 'Бу биттә бүлекләрне үзгәртү рөхсәт ителми.',
'permissionserrors' => 'Керү хокукы хаталары',
-'permissionserrorstext' => 'Түбәндәге {{PLURAL:$1|сәбәп|сәбәпләр}} аркасында сез бу гамәлне башкара алмыйсыз:',
-'permissionserrorstext-withaction' => '$2 гамәлен башкара алмыйсыз. {{PLURAL:$1|Сәбәбе|Сәбәпләре}}:',
+'permissionserrorstext' => 'Түбәндәге {{PLURAL:$1|1=сәбәп|сәбәпләр}} аркасында сез бу гамәлне башкара алмыйсыз:',
+'permissionserrorstext-withaction' => '$2 гамәлен башкара алмыйсыз. {{PLURAL:$1|1=Сәбәбе|Сәбәпләре}}:',
'recreate-moveddeleted-warn' => "'''Игътибар: Сез бетерелгән бит урынына яңа бит ясамакчы буласыз.'''
Сезгә чыннан да бу битне яңадан ясау кирәкме?
# Parser/template warnings
'expensive-parserfunction-warning' => "'''Игътибар:''' бу биттә хәтерне еш кулланучы функцияләр артык күп.
-Чикләү: $2 {{PLURAL:$2|куллану}}, бу очракта {{PLURAL:$1|$1 тапкыр}} башкарырга рөхсәт ителә.",
+Чикләү: $2 {{PLURAL:$2|1=куллану}}, бу очракта {{PLURAL:$1|$1 тапкыр}} башкарырга рөхсәт ителә.",
'expensive-parserfunction-category' => 'Хәтерне еш кулланучы функцияләр күп булган битләр',
'post-expand-template-inclusion-warning' => "'''Игътибар:''' Кулланылучы үрнәкләр артык зур.
Кайберләре кабызылмаячак.",
'revdelete-no-file' => 'Бу файл юк.',
'revdelete-show-file-confirm' => 'Сез чыннан да «<nowiki>$1</nowiki>» файлының бетерелгән $2, $3 версиясен карарга телисезме??',
'revdelete-show-file-submit' => 'Әйе',
-'revdelete-selected' => "'''[[:$1]] битенең {{PLURAL:$2|Сайланган юрама|сайланган юрамалары}}:'''",
-'logdelete-selected' => "'''Журналның {{PLURAL:$1|Сайланган язма|сайланган язмалары}} :'''",
+'revdelete-selected' => "'''[[:$1]] битенең {{PLURAL:$2|1=Сайланган юрама|сайланган юрамалары}}:'''",
+'logdelete-selected' => "'''Журналның {{PLURAL:$1|1=Сайланган язма|сайланган язмалары}} :'''",
'revdelete-legend' => 'Чикләүләр урнаштыр:',
'revdelete-hide-text' => 'Битнең бу юрамасы текстын яшер',
'revdelete-hide-image' => 'Файл эчендәгеләрне качыр',
'compareselectedversions' => 'Сайланган юрамаларны чагыштыру',
'showhideselectedversions' => 'Сайланган юрамаларны күрсәтү/яшерү',
'editundo' => 'үткәрмәү',
-'diff-multi' => '({{PLURAL:$2|бер кулланучының|$2 кулланучының}} {{PLURAL:$1|арадагы $1 версиясе күрсәтелмәгән}})',
# Search results
'searchresults' => 'Эзләү нәтиҗәләре',
'nextn' => 'чираттагы {{PLURAL:$1|$1}}',
'prevn-title' => 'Алдагы $1 {{PLURAL:$1|язма}}',
'nextn-title' => 'Киләсе $1 {{PLURAL:$1|язма}}',
-'shown-title' => 'Сәхифәдә $1 {{PLURAL:$1|язма|язма}} күрсәтелсен',
+'shown-title' => 'Сәхифәдә $1 {{PLURAL:$1|1=язма|язма}} күрсәтелсен',
'viewprevnext' => 'Күрсәтелүе: ($1 {{int:pipe-separator}} $2) ($3)',
'searchmenu-exists' => "'''Бу вики-проекта «[[:$1]]» исемле бит бар инде'''",
'searchmenu-new' => "'''«[[:$1]]» исемле яңа бит ясау'''",
'searchprofile-everything-tooltip' => 'Барлык битләрдә дә эзләү',
'searchprofile-advanced-tooltip' => 'Бирелгән исемнәр мәйданында эзләү',
'search-result-size' => '$1 ({{PLURAL:$2|$2 сүз}})',
-'search-result-category-size' => '{{PLURAL:$1|1 әгъза|$1 әгъза}} ({{PLURAL:$2|1 асттөркем|$2 асттөркем}}, {{PLURAL:$3|1 файл|$3 файл}})',
+'search-result-category-size' => '{{PLURAL:$1|1=1 әгъза|$1 әгъза}} ({{PLURAL:$2|1=1 асттөркем|$2 асттөркем}}, {{PLURAL:$3|1=1 файл|$3 файл}})',
'search-result-score' => 'Релевантлыгы: $1 %',
'search-redirect' => '(юнәлтү $1)',
'search-section' => '($1 бүлеге)',
'searchrelated' => 'бәйләнгән',
'searchall' => 'барлык',
'showingresults' => "Аста № '''$2''' {{PLURAL:$1|башлап}} '''$1''' {{PLURAL:$1|результат}} күрсәтелгән.",
-'showingresultsnum' => "Аста № '''$2''' {{PLURAL:$3| башлап}} '''$3''' {{PLURAL:$3|результат}} күрсәтелгән.",
-'showingresultsheader' => "'''$4''' өчен {{PLURAL:$5|Результат '''$1''' сеннән '''$3'''|Результатлар '''$1 — $2''' сеннән '''$3'''}}",
+'showingresultsnum' => "Аста № '''$2''' {{PLURAL:$3|башлап}} '''$3''' {{PLURAL:$3|результат}} күрсәтелгән.",
+'showingresultsheader' => "'''$4''' өчен {{PLURAL:$5|1=Результат '''$1''' сеннән '''$3'''|Результатлар '''$1 — $2''' сеннән '''$3'''}}",
'search-nonefound' => 'Сорауга туры килгән җаваплар табылмады.',
'powersearch-legend' => 'Өстәмә эзләү',
'powersearch-ns' => 'исемнәрендә эзләү',
'prefs-rc' => 'Соңгы үзгәртүләр',
'prefs-watchlist' => 'Күзәтү исемлеге',
'prefs-watchlist-days' => 'Күзәтү исемлегендә күрсәтелгән көн саны:',
-'prefs-watchlist-days-max' => 'Maximum $1 {{PLURAL:$1|day|days}}',
+'prefs-watchlist-days-max' => 'Maximum $1 {{PLURAL:$1|1=day|days}}',
'prefs-watchlist-edits' => 'Киңәйтелгән күзәтү исемлегендә үзгәртүләрнең иң югары исәбе:',
'prefs-watchlist-edits-max' => 'Максимум сан: 1000',
'prefs-watchlist-token' => 'Күзәтү исемлеге токены:',
'rows' => 'Юллар:',
'columns' => 'Баганалар:',
'searchresultshead' => 'Эзләү',
-'resultsperpage' => 'Бер биткә туры килгән табылдыклар:',
'stub-threshold' => '<a href="#" class="stub">Ясалма сылтамаларның</a> бизәлеше буенча чикләүләр (байтларда):',
'stub-threshold-disabled' => 'Ябылган',
'recentchangesdays' => 'Соңгы үзгәртүләрне күрсәтүче көннәр саны:',
'action-move' => 'бу битне күчерерге',
# Recent changes
-'nchanges' => '$1 {{PLURAL:$1|үзгәртү|үзгәртү}}',
+'nchanges' => '$1 {{PLURAL:$1|1=үзгәртү|үзгәртү}}',
'recentchanges' => 'Соңгы үзгәртүләр',
'recentchanges-legend' => 'Соңгы үзгәртүләр көйләүләре',
'recentchanges-summary' => 'Бу биттә {{grammar:genitive|{{SITENAME}}}} проектының соңгы үзгәртүләре күрсәтелә.',
'rclistfrom' => '$1 башлап яңа үзгәртүләрне күрсәт',
'rcshowhideminor' => 'кече үзгәртүләрне $1',
'rcshowhidebots' => 'ботларны $1',
-'rcshowhideliu' => 'кергән кулланучыларны $1',
+'rcshowhideliu' => '$1 кергән кулланучылар',
'rcshowhideanons' => 'кермәгән кулланучыларны $1',
'rcshowhidepatr' => 'тикшерелгән үзгәртүләрне $1',
'rcshowhidemine' => 'минем үзгәртүләремне $1',
'rc_categories' => 'Төркемнәрдә генә тора («|» бүлүче)',
'rc_categories_any' => 'Һәрбер',
'newsectionsummary' => '/* $1 */ яңа бүлек',
-'rc-enhanced-expand' => 'Ваклыкларны күрсәтү (JavaScript кирәк)',
+'rc-enhanced-expand' => 'Ваклыкларны күрсәтү',
'rc-enhanced-hide' => 'Ваклыкларны яшерү',
# Recent changes linked
'filetype-badmime' => 'MIME-төре «$1» булган файллар, йөкләнмәячәк.',
'filetype-bad-ie-mime' => 'Файлны йөкләргә мөмкин түгел, чөнки Internet Explorer аны «$1» дип кабул итәчәк.',
'filetype-unwanted-type' => "'''\".\$1\"''' — тыелган файл төре.
-{{PLURAL:\$3|Мөмкин булган файл төре булып|Мөмкин булган файл төре:}} \$2.",
-'filetype-banned-type' => '\'\'\'".$1"\'\'\' — {{PLURAL:$4|тыелган файл төре|тыелган файллар төре}}.
-{{PLURAL:$3|Киңәйтелгән файл төре булып|Киңәйтелгән файл төрләре:}} $2.',
+{{PLURAL:\$3|1=Мөмкин булган файл төре булып|Мөмкин булган файл төре:}} \$2.",
+'filetype-banned-type' => '\'\'\'".$1"\'\'\' — {{PLURAL:$4|1=тыелган файл төре|тыелган файллар төре}}.
+{{PLURAL:$3|1=Киңәйтелгән файл төре булып|Киңәйтелгән файл төрләре:}} $2.',
'filetype-missing' => "Файлның киңәйтелмәсе юк ''(мәсәлән,«.jpg»)''.",
'empty-file' => 'Сезнең тарафтан җибәрелгән файл буш.',
'file-too-large' => 'Сезнең тарафтан җибәрелгән файл артык зур.',
'filehist-comment' => 'Искәрмә',
'filehist-missing' => 'Файл табылмады',
'imagelinks' => 'Файлны куллану',
-'linkstoimage' => 'Бу файлга әлеге {{PLURAL:$1|бит|$1 бит}} сылтый:',
+'linkstoimage' => 'Бу файлга әлеге {{PLURAL:$1|1=бит|$1 бит}} сылтый:',
'nolinkstoimage' => 'Бу файлга сылтаган битләр юк.',
'duplicatesoffile' => '{{PLURAL:$1|Әлеге $1 файл }} астагы файлның күчерелмәсе булып тора ([[Special:FileDuplicateSearch/$2|тулырак]]):',
'sharedupload' => "Бу файл $1'дан һәм башка проектларда кулланырга мөмкин.",
'movethispage' => 'Бу битне күчерү',
'nopagetitle' => 'Мондый бит юк',
'nopagetext' => 'Күрсәтелгән бит юк.',
-'pager-newer-n' => '{{PLURAL:$1|1 яңарак|$1 яңарак}}',
-'pager-older-n' => '{{PLURAL:$1|1 искерәк|$1 искерәк}}',
+'pager-newer-n' => '{{PLURAL:$1|1=1 яңарак|$1 яңарак}}',
+'pager-older-n' => '{{PLURAL:$1|1=1 искерәк|$1 искерәк}}',
'suppress' => 'Яшерү',
# Book sources
# Special:Categories
'categories' => 'Төркемнәр',
-'categoriespagetext' => '{{PLURAL:$1|Әлеге төркем үз өченә|Әлеге төркемнәр үз өченә}} битләрне һәм медиа-файлларны ала.
+'categoriespagetext' => '{{PLURAL:$1|1=Әлеге төркем үз өченә|Әлеге төркемнәр үз өченә}} битләрне һәм медиа-файлларны ала.
Аста [[Special:UnusedCategories|кулланылмаган төркемнәр]] кәрсәтелгән.
Шулай ук [[Special:WantedCategories|кирәкле төркемнәр исемлегендә]] карагыз.',
'special-categories-sort-count' => 'исәп буенча тәртипләү',
'unwatch' => 'Күзәтмәү',
'unwatchthispage' => 'Күзәтүне туктат',
'notanarticle' => 'Мәкалә түгел',
-'watchlist-details' => 'Күзәтү исемлегегездә, бәхәс битләрен санамыйча, {{PLURAL:$1|$1 бит|$1 бит}} бар.',
+'watchlist-details' => 'Күзәтү исемлегегездә, бәхәс битләрен санамыйча, {{PLURAL:$1|1=$1 бит|$1 бит}} бар.',
'wlshowlast' => 'Баягы $1 сәгать $2 көн эчендә яки $3ны күрсәт',
'watchlist-options' => 'Күзәтү исемлеге көйләүләре',
'protect-unchain-permissions' => 'Өстәмә яклау чараларын ачу',
'protect-text' => "Биредә сез '''$1''' бите өчен яклау дәрәҗәсене карый һәм үзгәрә аласыз.",
'protect-locked-access' => "Хисап язмагызга битләрнең яклау дәрәҗәсен үзгәртү өчен хак җитми. '''$1''' битенең хәзерге көйләүләре:",
-'protect-cascadeon' => 'Бу бит якланган, чөнки ул әлеге каскадлы яклаулы {{PLURAL:$1|биткә|битләргә}} керә. Сез бу битнең яклау дәрәҗәсен үзгәртә аласыз, әмма каскадлы яклау үзгәрмәячәк.',
+'protect-cascadeon' => 'Бу бит якланган, чөнки ул әлеге каскадлы яклаулы {{PLURAL:$1|1=биткә|битләргә}} керә. Сез бу битнең яклау дәрәҗәсен үзгәртә аласыз, әмма каскадлы яклау үзгәрмәячәк.',
'protect-default' => 'Яклаусыз',
'protect-fallback' => '«$1»нең рөхсәте кирәк',
'protect-level-autoconfirmed' => 'Яңа һәм теркәлмәгән кулланучыларны кысу',
'undeleteviewlink' => 'карау',
'undeleteinvert' => 'Киресен сайлау',
'undeletecomment' => 'Сәбәп:',
-'undeletedrevisions' => '{{PLURAL:$1|1 үзгәртү|$1 үзгәртү}} торгызылды',
+'undeletedrevisions' => '{{PLURAL:$1|1=1 үзгәртү|$1 үзгәртү}} торгызылды',
'undelete-search-submit' => 'Эзләү',
'undelete-error-long' => 'Файлны торгызу вакытында хаталар чыкты:
'isredirect' => 'юнәлтү бите',
'istemplate' => 'кертүләр',
'isimage' => 'файл сылтамасы',
-'whatlinkshere-prev' => '{{PLURAL:$1|алдагы|алдагы $1}}',
-'whatlinkshere-next' => '{{PLURAL:$1|чираттагы|чираттагы $1}}',
+'whatlinkshere-prev' => '{{PLURAL:$1|1=алдагы|алдагы $1}}',
+'whatlinkshere-next' => '{{PLURAL:$1|1=чираттагы|чираттагы $1}}',
'whatlinkshere-links' => '← сылтамалар',
'whatlinkshere-hideredirs' => 'юнәлтүләрне $1',
'whatlinkshere-hidetrans' => 'кертүләрне $1',
'common.css' => '/* Монда урнаштырылган CSS башкаларында да урнашачак */',
# Attribution
-'anonymous' => '{{SITENAME}} сайтының аноним {{PLURAL:$1|кулланучысы|кулланучылары}}',
+'anonymous' => '{{SITENAME}} сайтының аноним {{PLURAL:$1|1=кулланучысы|кулланучылары}}',
'siteuser' => '{{SITENAME}} кулланучысы $1',
'othercontribs' => '«$1» эшенә нигезләнә.',
-'siteusers' => '{{SITENAME}} {{PLURAL:$2|кулланучысы|кулланучылары}} $1',
+'siteusers' => '{{SITENAME}} {{PLURAL:$2|1=кулланучысы|кулланучылары}} $1',
'creditspage' => 'Рәхмәтләр',
# Spam protection
'imagemaxsize' => "Рәсемнең зурлыгына чикләүләр:<br />''(тасвирлау бите өчен)''",
'thumbsize' => 'Рәсемнең кечерәйтелгән юрамасы өчен:',
'widthheight' => '$1 × $2',
-'widthheightpage' => '$1 × $2, $3{{PLURAL:$1|бит|битләр}}',
+'widthheightpage' => '$1 × $2, $3{{PLURAL:$1|1=бит|битләр}}',
'file-info' => 'файл зурлыгы: $1, MIME-тип: $2',
'file-info-size' => '$1 × $2 нокта, файлның зурлыгы: $3, MIME тибы: $4',
'file-nohires' => 'Югары ачыклык белән юрама юк.',
'api-error-badtoken' => 'Эчке хата: дөрес булмаган токен.',
'api-error-copyuploaddisabled' => 'URL-адрес буенча йөкләү бу серверда сүндерелгән.',
'api-error-duplicate' => 'Мондый эчтәлекле {{PLURAL:$1|[$2 башка файл]}} да бар.',
-'api-error-duplicate-archive' => 'Элек сайтта мондый эчтәлекле {{PLURAL:$1|[$2 башка файл]}} бар иде инде, ләкин {{PLURAL:$1|аны бетерделәр|аларны бетерделәр}}.',
-'api-error-duplicate-archive-popup-title' => 'Кайчандыр бетерелгән {{PLURAL:$1|файлның|файлларның}} дубликатлары.',
+'api-error-duplicate-archive' => 'Элек сайтта мондый эчтәлекле {{PLURAL:$1|[$2 башка файл]}} бар иде инде, ләкин {{PLURAL:$1|1=аны бетерделәр|аларны бетерделәр}}.',
+'api-error-duplicate-archive-popup-title' => 'Кайчандыр бетерелгән {{PLURAL:$1|1=файлның|файлларның}} дубликатлары.',
'api-error-duplicate-popup-title' => '{{PLURAL:$1|файлның}} дубликаты',
'api-error-empty-file' => 'Сезнең тарафтан җибәрелгән файл буш.',
'api-error-emptypage' => 'Яңа буш сәхифәләр төзү рөхсәт ителми',
$messages = array(
# User preference toggles
'tog-underline' => 'Sıltamalarnıñ astına sızu:',
-'tog-justify' => 'Tekst kiñlek buyınça tigezlänsen',
'tog-hideminor' => 'Soñğı üzgärtülär isemlegendä keçe üzgärtülär yäşerelsen',
'tog-hidepatrolled' => 'Tikşerelgän üzgärtülär yaña üzgärtülär isemlegennän yäşerelsen.',
'tog-newpageshidepatrolled' => 'Tikşerelgän bitlär yaña bitlär isemlegennän yäşerelsen',
'tog-numberheadings' => 'Atamalar avtomat räweştä nomerlansın',
'tog-showtoolbar' => 'Üzgärtü waqıtında qorallarnıñ öske panele kürsätelsen (JavaScript kiräk)',
'tog-editondblclick' => 'Bitlärgä ike çirtterü belän üzgärtü bite açılsın (JavaScript kiräk)',
-'tog-editsection' => 'Här bülektä «üzgärtü» sıltaması kürsätelsen',
'tog-editsectiononrightclick' => 'Bülek isemenä tıçqannıñ uñ çirttermäse belän törtkäç üzgärtü bite açılsın (JavaScript kiräk)',
-'tog-showtoc' => 'Eçtälek kürsätelsen (3 tän kübräk başlamlı bitlärdä)',
'tog-rememberpassword' => 'Xisap yazmamnı bu brauzerda saqlansın (iñ küp $1 {{PLURAL:$1|kön|kön|kön}}gä qädär)',
'tog-watchcreations' => 'Tözegän bitlärem küzätü isemlegemä östälsen',
'tog-watchdefault' => 'Üzgärtkän bitlärem küzätü isemlegemä östälsen',
'rows' => 'Yullar:',
'columns' => 'Bağanalar:',
'searchresultshead' => 'Ezläw',
-'resultsperpage' => 'Ber bitkä turı kilgän tabıldıqlar:',
'stub-threshold' => '<a href="#" class="stub">Yasalma sıltamalarnıñ</a> bizäleşe buyınça çikläwlär (baytlarda):',
'stub-threshold-disabled' => 'Yabılğan',
'recentchangesdays' => 'Soñğı üzgärtülärne kürsätüçe könnär sanı:',
$fallback = 'fr';
+// Remove French aliases
+$namespaceGenderAliases = array();
+
$messages = array(
# Dates
'sunday' => 'tāpati',
$messages = array(
# User preference toggles
'tog-underline' => 'Холбааны шыяры:',
-'tog-justify' => 'Арынның дооразының аайы-биле сөзүглелди дескилээри',
'tog-hideminor' => 'Сөөлгү өскерлиишкиннер арында бичии өскерлиишкиннерни чажырар',
'tog-hidepatrolled' => 'Амгы өскерлиишкиннер арында истээн өскерлиишкиннерни чажырары',
'tog-newpageshidepatrolled' => 'Чаа арыннарның даңзындан истээн арыннарны чажырары',
'tog-numberheadings' => 'Эгелерин авто-санаар',
'tog-showtoolbar' => 'Өскертир херекселдерни көргүзер (JavaScript)',
'tog-editondblclick' => 'Арынны өскертирде ийи катап базар (JavaScript)',
-'tog-editsection' => '[өскертири] деп холбаалар-биле section editing enable.',
-'tog-rememberpassword' => 'Мени бо компьютерге сактыры ($1 {{PLURAL:$1|хүн|хүн}} ишти)',
+'tog-rememberpassword' => 'Мени бо компьютерге сактыры ($1 {{PLURAL:$1|1=хүн|хүн}} ишти)',
'tog-watchcreations' => 'Мээң чаяан арыннарымны хайгаарал даңзымче немээри.',
'tog-watchdefault' => 'Мээң өскерткен арыннарымны хайгаарал даңзымче немээри.',
'tog-watchmoves' => 'Мээң катап адаан арыннарымны хайгаарал даңзымче немээри.',
'subcategories' => 'Адаккы бөлүктер',
'category-media-header' => '«$1» деп бөлүкте файлдар',
'category-empty' => "''Амгы бо бөлүкте медиа база арыннар чок.''",
-'hidden-categories' => '{{PLURAL:$1|Чажыт аңгылал|Чажыт аңгылалдар}}',
+'hidden-categories' => '{{PLURAL:$1|1=Чажыт аңгылал|Чажыт аңгылалдар}}',
'hidden-category-category' => 'Чажыт бөлүктер',
-'category-subcat-count' => '{{PLURAL:$2|Бо аңгылал чүгле дараазында аңгыламныг.|Бо аңгылалдың шупту $2 аңгыламнарның аразындан дараазында $1 аңгыламны көргүскен.}}',
-'category-subcat-count-limited' => 'Бо аңгылал {{PLURAL:$1|бир|$1}} аңгыламныг.',
-'category-article-count' => '{{PLURAL:$2|Бо аңгылал чүгле дараазында арыннарлыг.|Бо аңгылалдың шупту $2 арыннарының аразындан дараазында $1 арынын көргүскен.}}',
-'category-file-count' => '{{PLURAL:$2|Бо бөлүк чүгле чаңгыс файлдыг.|Бо бөлүктүң ниити $2 файлының $1 файлын көргүскен.}}',
+'category-subcat-count' => '{{PLURAL:$2|1=Бо аңгылал чүгле дараазында аңгыламныг.|Бо аңгылалдың шупту $2 аңгыламнарның аразындан дараазында $1 аңгыламны көргүскен.}}',
+'category-subcat-count-limited' => 'Бо аңгылал {{PLURAL:$1|1=бир|$1}} аңгыламныг.',
+'category-article-count' => '{{PLURAL:$2|1=Бо аңгылал чүгле дараазында арыннарлыг.|Бо аңгылалдың шупту $2 арыннарының аразындан дараазында $1 арынын көргүскен.}}',
+'category-file-count' => '{{PLURAL:$2|1=Бо бөлүк чүгле чаңгыс файлдыг.|Бо бөлүктүң ниити $2 файлының $1 файлын көргүскен.}}',
'listingcontinuesabbrev' => '(уланчы)',
'noindex-category' => 'Индекстелбес арынар',
'broken-file-category' => 'Ажылдавайн турар файл-шөлүлгелиг арыннар',
'create-this-page' => 'Бо арынны чогаадыры',
'delete' => 'Ыраары',
'deletethispage' => 'Бо арынны ырадыры',
-'undelete_short' => '$1 {{PLURAL:$1|эдигни|эдиглерни}} катап үндүрери',
-'viewdeleted_short' => '{{PLURAL:$1|Бир ыраткан өскерлиишкинни|$1 ыраткан өскерлиишкиннерни}} көөрү',
+'undelete_short' => '$1 {{PLURAL:$1|1=эдигни|эдиглерни}} катап үндүрери',
+'viewdeleted_short' => '{{PLURAL:$1|1=Бир ыраткан өскерлиишкинни|$1 ыраткан өскерлиишкиннерни}} көөрү',
'protect' => 'Камгалаары',
'protect_change' => 'өскертири',
'protectthispage' => 'Бо арынны камгалаар',
'yourname' => 'Aжыглакчының ады',
'yourpassword' => 'Чажыт сөс',
'yourpasswordagain' => 'Чажыт сөзүңерни катап бижиңер:',
-'remembermypassword' => 'Мени бо компьютерде сактып алыры ($1 {{PLURAL:$1|хүн|хүн}}ге чедир)',
+'remembermypassword' => 'Мени бо компьютерде сактып алыры ($1 {{PLURAL:$1|1=хүн|хүн}}ге чедир)',
'login' => 'Кирери',
'nav-login-createaccount' => 'Кирери / бүрүткел бижикти чогаадыры',
'loginprompt' => '{{SITENAME}} сайтче кирерде, баштай «cookies»-ти чөшпээрээр ужурлуг Силер.',
'editingcomment' => '«$1» деп арынны өскертип турар (чаа салбыр)',
'yourtext' => 'Силерниң сөзүглелиңер',
'yourdiff' => 'Ылгалдар',
-'templatesused' => 'Бо арында ажыглаан {{PLURAL:$1|Майык|Майыктар}}:',
+'templatesused' => 'Бо арында ажыглаан {{PLURAL:$1|1=Майык|Майыктар}}:',
'template-protected' => '(камгалаан)',
'template-semiprotected' => '(четпес камгалаан)',
'hiddencategories' => 'Бо арын {{PLURAL:$1|$1 чажыт бөлүкке}} хамааржыр:',
-'permissionserrorstext-withaction' => "Мында «'''$2'''» силерниң эргеңер чок, {{PLURAL:$1|чылдагааны|чылдагааннары}}:",
+'permissionserrorstext-withaction' => "Мында «'''$2'''» силерниң эргеңер чок, {{PLURAL:$1|1=чылдагааны|чылдагааннары}}:",
'recreate-moveddeleted-warn' => "'''Кичээңейлиг. Ооң мурнунда казыттынган арынны катап тургузар деп тур Силер.'''
Ол арынны катап тургузары шынап-ла чугула бе, боданыңар.
'lineno' => 'Одуруг $1:',
'compareselectedversions' => 'Шилип алган хевирлери деңнээри',
'editundo' => 'чөрчүүрү',
-'diff-multi' => '({{PLURAL:$2|$2 киржикчиниң}} {{PLURAL:$1|$1 түр хевирин көргүспээн}})',
# Search results
'searchresults' => 'Түңнелдер',
'searchresults-title' => '«$1» деп диле',
'prevn' => 'эрткен {{PLURAL:$1|$1}}',
'nextn' => 'дараазында {{PLURAL:$1|$1}}',
-'prevn-title' => 'Эрткен $1 {{PLURAL:$1|бижик|бижик}}',
-'nextn-title' => 'Дараазында $1 {{PLURAL:$1|бижик|бижик}}',
+'prevn-title' => 'Эрткен $1 {{PLURAL:$1|1=бижик|бижик}}',
+'nextn-title' => 'Дараазында $1 {{PLURAL:$1|1=бижик|бижик}}',
'shown-title' => 'Арынга $1 {{PLURAL:$1|түңнел}} көргүзер',
'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3) көөрү',
'searchmenu-exists' => "'''Бо викиде \"[[:\$1]]\" деп арын бар.'''",
'searchprofile-everything-tooltip' => 'Шупту арыннардан дилээри (сумележиишкиннерден база)',
'searchprofile-advanced-tooltip' => 'Айыткан аттар делгемнеринден дилээри',
'search-result-size' => '$1 ({{PLURAL:$2|$2 сөс}})',
-'search-result-category-size' => '{{PLURAL:$1|1 кежигүүн|$1 кежигүүн}} ({{PLURAL:$2|1 аңгылам|$2 аңгылам}}, {{PLURAL:$3|1 файл|$3 файл}})',
+'search-result-category-size' => '{{PLURAL:$1|1=1 кежигүүн|$1 кежигүүн}} ({{PLURAL:$2|1=1 аңгылам|$2 аңгылам}}, {{PLURAL:$3|1=1 файл|$3 файл}})',
'search-redirect' => '($1-н шиглелге)',
'search-section' => '(«$1» деп салбыр)',
'search-suggest' => 'Силер «$1» деп бодадыңар чадавас',
'searcheverything-enable' => 'Шупту аттар делгемнеринден дилээри',
'searchrelated' => 'холбаалыг',
'searchall' => 'шупту',
-'showingresultsheader' => "«'''$4'''» дилээниниң {{PLURAL:$5|'''$3''' одуругдан '''$1''' түңнели|'''$3''' одуругдан '''$1—$2''' түңнелдери}}",
+'showingresultsheader' => "«'''$4'''» дилээниниң {{PLURAL:$5|1='''$3''' одуругдан '''$1''' түңнели|'''$3''' одуругдан '''$1—$2''' түңнелдери}}",
'search-nonefound' => 'Айыткан негелдениң түңнели чок',
'powersearch-ns' => 'Аттар делгемнеринден дилээри:',
'powersearch-toggleall' => 'Шупту',
'youremail' => 'Э-чагааңар:',
'username' => 'Aжыглакчының ады:',
'uid' => 'Ажыглакчынын саны (ID):',
-'prefs-memberingroups' => 'Силерниң {{PLURAL:$1|бөлүү|бөлүктери}}:',
+'prefs-memberingroups' => 'Силерниң {{PLURAL:$1|1=бөлүү|бөлүктери}}:',
'prefs-registration' => 'Кажан даңзылатканыл:',
'yourrealname' => 'Шын адыңар:',
'yourlanguage' => 'Дылыңар:',
'yournick' => 'Шола ат:',
'badsiglength' => 'Хол үжүүңер эмин узун.
-It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
+It must not be more than $1 {{PLURAL:$1|1=character|characters}} long.',
'yourgender' => 'Эр-кызы:',
'gender-male' => 'Эр',
'gender-female' => 'Кыс',
'filehist-filesize' => 'Файл хемчээли',
'filehist-comment' => 'Тайылбыр',
'imagelinks' => 'Файлдың ажыглаашкыны',
-'linkstoimage' => 'Бердинген файлче дараазында {{PLURAL:$1|арын шөлүдүп тур|$1 арын шөлүдүп тур}}:',
+'linkstoimage' => 'Бердинген файлче дараазында {{PLURAL:$1|1=арын шөлүдүп тур|$1 арын шөлүдүп тур}}:',
'nolinkstoimage' => 'Бердинген файлче шөлүп турар арыннар чок.',
'sharedupload-desc-here' => 'Моон $1 алган файл өске төлевилелдерге ажыглаттынып болур.
Ооң [$2 допчу тайылбыр арынындан] медеглели адаанда бердинген.',
'isredirect' => 'шиглидер арын',
'istemplate' => 'киирткен арыннар',
'isimage' => 'файлдың холбаазы',
-'whatlinkshere-prev' => '{{PLURAL:$1|эрткен|эрткен $1}}',
-'whatlinkshere-next' => '{{PLURAL:$1|дараазында|дараазында $1}}',
+'whatlinkshere-prev' => '{{PLURAL:$1|1=эрткен|эрткен $1}}',
+'whatlinkshere-next' => '{{PLURAL:$1|1=дараазында|дараазында $1}}',
'whatlinkshere-links' => '← холбаалар',
'whatlinkshere-hideredirs' => '$1-че шиглиглер',
'whatlinkshere-hidetrans' => '$1 даңзылааннар',
'widthheightpage' => '$1x$2, $3 {{PLURAL:$3|арын}}',
'file-info' => 'файлдың хемчээли: $1, MIME хевири: $2',
'file-info-size' => '$1 × $2 пиксел, Файл хемчээли: $3, MIME хевири: $4',
-'file-info-size-pages' => '$1 × $2 пикcелдер, файл хемчээли: $3, MIME хевири: $4, $5 {{PLURAL:$5|арын|арын}}',
+'file-info-size-pages' => '$1 × $2 пикcелдер, файл хемчээли: $3, MIME хевири: $4, $5 {{PLURAL:$5|1=арын|арын}}',
'file-nohires' => 'Оон улуг хевири чок',
'svg-long-desc' => 'SVG файл, $1 x $2 пиксел, файл хемчээли: $3',
'show-big-image' => 'Улуг чурумал',
'ilsubmit' => 'Дилээр',
# Video information, used by Language::formatTimePeriod() to format lengths in the above messages
-'seconds' => '{{PLURAL: $1|$1 секунда|$1 секунда}}',
-'minutes' => '{{PLURAL: $1|$1 минут|$1 минут}}',
-'hours' => '{{PLURAL:$1|$1 шак|$1 шак}}',
-'days' => '{{PLURAL:$1|$1 хүн|$1 хүн}}',
+'seconds' => '{{PLURAL:$1|$1 секунда|$1 секунда}}',
+'minutes' => '{{PLURAL:$1|$1 минут|$1 минут}}',
+'hours' => '{{PLURAL:$1|1=$1 шак|$1 шак}}',
+'days' => '{{PLURAL:$1|1=$1 хүн|$1 хүн}}',
'ago' => '$1 бурунгаар',
# Bad image list
'feedback-cancel' => 'Соксаары',
# Durations
-'duration-seconds' => '$1 {{PLURAL: $1|секунда|секунда}}',
-'duration-minutes' => '$1 {{PLURAL: $1|минут|минут}}',
-'duration-hours' => '$1 {{PLURAL: $1|шак|шак}}',
-'duration-days' => '$1 {{PLURAL:$1|хүн|хүн}}',
-'duration-weeks' => '$1 {{PLURAL: $1|чеди-хонук|чеди-хонук}}',
-'duration-years' => '$1 {{PLURAL: $1|чыл|чыл}}',
-'duration-decades' => '$1 {{PLURAL:$1|он хонук|он хонук}}',
-'duration-centuries' => '$1 {{PLURAL:$1|чүс чыл|чүс чыл}}',
+'duration-seconds' => '$1 {{PLURAL:$1|секунда|секунда}}',
+'duration-minutes' => '$1 {{PLURAL:$1|минут|минут}}',
+'duration-hours' => '$1 {{PLURAL:$1|шак|шак}}',
+'duration-days' => '$1 {{PLURAL:$1|1=хүн|хүн}}',
+'duration-weeks' => '$1 {{PLURAL:$1|чеди-хонук|чеди-хонук}}',
+'duration-years' => '$1 {{PLURAL:$1|чыл|чыл}}',
+'duration-decades' => '$1 {{PLURAL:$1|1=он хонук|он хонук}}',
+'duration-centuries' => '$1 {{PLURAL:$1|1=чүс чыл|чүс чыл}}',
);
$messages = array(
# User preference toggles
'tog-underline' => 'ئۇلانما ئاستى سىزىقى:',
-'tog-justify' => 'ئابزاس توغرىلا',
'tog-hideminor' => 'يېقىنقى ئۆزگەرتىشتە ئازراقلا تەھرىرنى يوشۇر',
'tog-hidepatrolled' => 'يېقىنقى ئۆزگەرتىشتە كۆزەتكەن تەھرىرنى يوشۇر',
'tog-newpageshidepatrolled' => 'يېڭى بەت تىزىملىكىدە كۆزەتكەن تەھرىرنى يوشۇر',
'tog-numberheadings' => 'ماۋزۇغا ئۆزلۈكىدىن تەرتىپ نومۇرى قوش',
'tog-showtoolbar' => 'تەھرىر قورال بالداقنى كۆرسەت',
'tog-editondblclick' => 'قوش چەككەندە بەت تەھرىرلە',
-'tog-editsection' => '[تەھرىر] ئۇلانمىسىنى چېكىپ ئابزاس تەھرىرلەشكە يول قوي',
'tog-editsectiononrightclick' => 'تېمىنى ئوڭ چېكىپ ئابزاس تەھرىرلەشكە يول قوي',
-'tog-showtoc' => 'مەزمۇن جەدۋىلى كۆرسەت (بىر بەتتە 3 تىن ئارتۇق ماۋزۇ بار بەتكە قارىتىلغان)',
'tog-rememberpassword' => 'بۇ كومپيۇتېردا كىرگىنىمنى ئەستە ساقلا(ئەڭ ئۇزۇن بولغاندا $1 {{PLURAL:$1|كۈن|كۈن}})',
'tog-watchcreations' => 'مەن قۇرغان بەت ۋە يۈكلىگەن ھۆججەتلەرنى كۆزەت تىزىملىكىمگە قوش',
'tog-watchdefault' => 'مەن تەھرىرلىگەن بەت ۋە ھۆججەتنى كۆزەت تىزىملىكىمگە قوش',
'mainpage' => 'باش بەت',
'mainpage-description' => 'باش بەت',
'policy-url' => 'Project:تاكتىكا',
-'portal' => 'ئىجتىمائى رايون',
+'portal' => 'ئىجتىمائىي رايون',
'portal-url' => 'Project:ئىجتىمائى رايون',
'privacy' => 'شەخسىيەت تاكتىكىسى',
'privacypage' => 'Project:شەخسىيەت تاكتىكىسى',
'invalid-content-data' => 'مەزمۇن سانلىق مەلۇماتى ئىناۋەتسىز',
'content-not-allowed-here' => '[[$2]] بەتتە "$1" مەزمۇنغا يول قويۇلمايدۇ',
'editwarning-warning' => 'بەتتىن ئايرىلغاندا بەلكىم بارلىق تەھرىرلىگىنىڭىز بېكار بولۇپ كېتىشى مۇمكىن.
-ئەگەر تىزىمغا كىرسىڭىز، مايىللىق بېتىڭىزنىڭ «تەھرىر» بۆلىكىدە، بۇ ئەسكەرتمىنى ئىناۋەتسىز قىلالايسىز.',
+ئەگەر تىزىمغا كىرسىڭىز، مايىللىق بېتىڭىزنىڭ «{{int:prefs-editing}}» بۆلىكىدە، بۇ ئەسكەرتمىنى ئىناۋەتسىز قىلالايسىز.',
# Content models
'content-model-wikitext' => 'ۋىكىتېكىست',
'compareselectedversions' => 'تاللانغان نەشرىنى سېلىشتۇر',
'showhideselectedversions' => 'تاللانغان تۈزىتىلگەن نەشرىنى كۆرسەت/يوشۇر',
'editundo' => 'يېنىۋال',
-'diff-multi' => '({{PLURAL:$2|ئىشلەتكۈچى|$2 ئىشلەتكۈچى}} نىڭ{{PLURAL:$1|تۈزىتىلگەن نەشرى|$1 تۈزىتىلگەن نەشرى}} كۆرسىتىلمىدى)',
'diff-multi-manyusers' => '( $2 دىن كۆپ{{PLURAL:$2|ئىشلەتكۈچى|ئىشلەتكۈچى}} نىڭ {{PLURAL:$1|تۈزىتىلگەن نەشرى|$1 تۈزىتىلگەن نەشرى}} كۆرسىتىلمىدى)',
'difference-missing-revision' => '{{PLURAL:$2|نەشر|$2 نەشىر لەر}} نىڭ ($1) پەرق سېلىشتۇرما {{PLURAL:$2}} تېپىلمىدى.
'rows' => 'قۇر:',
'columns' => 'ستون:',
'searchresultshead' => 'ئىزدە',
-'resultsperpage' => 'ھەر بەتتىكى ئۇلانما سانى:',
'stub-threshold' => '<a href="#" class="stub">قىسقا بەت ئۇلانمىسى</a> فورمات چەك قىممىتى (بايت) :',
'stub-threshold-disabled' => 'چەكلەنگەن',
'recentchangesdays' => 'يېقىنقى ئۆزگەرتىشنىڭ كۆرۈنىدىغان كۈن سانى:',
'watchmethod-list' => 'كۆزىتىۋاتقان بەتنىڭ يېقىنقى ئۆزگەرتىشىنى تەكشۈر',
'watchlistcontains' => 'كۆزەت تىزىملىكىڭىزدە $1 {{PLURAL:$1|بەت|بەت}} بار.',
'iteminvalidname' => "بەت'$1' خاتالىقى، ئاتى ئىناۋەتسىز…",
-'wlnote' => "تۆۋەندىكىسى يېقىنقى {{PLURAL:$2|سائەت}} ئىچىدىكى ئاخىرقى '{{PLURAL:$1| قېتىملىق}} ئۆزگەرتىش، $3 $4 گىچە.",
'wlshowlast' => 'يېقىنقى $1 سائەت $2 كۈن $3 نىڭ ئۆزگەرتىشىنى كۆرسەت',
'watchlist-options' => 'كۆزەت تىزىملىك تاللانما',
'tooltip-pt-watchlist' => 'سىز كۆزىتىۋاتقان بەتلەر تىزىملىگى',
'tooltip-pt-mycontris' => 'تۆھپە تىزىملىكىڭىز',
'tooltip-pt-login' => 'تىزىمغا كىرىشىڭىزنى تەۋسىيە قىلىمىز ئەمما مەجبۇرىي ئەمەس',
-'tooltip-pt-anonlogin' => 'تىزىمغا كىرىشىڭىزنى تەۋسىيە قىلىمىز ئەمما مەجبۇرىي ئەمەس',
'tooltip-pt-logout' => 'تىزىمدىن چىق',
'tooltip-ca-talk' => 'بەت مەزمۇنى ھەققىدىكى مۇنازىرە',
'tooltip-ca-edit' => 'بۇ بەتنى تەھرىرلىيەلەيسىز.
'minutes-abbrev' => '$1m',
'hours-abbrev' => '$1h',
'days-abbrev' => '$1d',
-'seconds' => '{{PLURAL: $1|$1سېكۇنت}}',
-'minutes' => '{{PLURAL: $1|$1مىنۇت}}',
+'seconds' => '{{PLURAL:$1|$1سېكۇنت}}',
+'minutes' => '{{PLURAL:$1|$1مىنۇت}}',
'hours' => '{{PLURAL:$1|$1سائەت}}',
'days' => '{{PLURAL:$1|$1 كۈن}}',
'months' => '{{PLURAL:$1|$1 ئاي}}',
# Durations
'duration-seconds' => '$1 {{PLURAL:$1|سېكۇنت}}',
-'duration-minutes' => '$1 {{PLURAL: $1|مىنۇت}}',
-'duration-hours' => '$1 {{PLURAL: $1|سائەت}}',
-'duration-days' => '$1 {{PLURAL: $1|كۈن}}',
-'duration-weeks' => '$1 {{PLURAL: $1|ھەپتە}}',
-'duration-years' => '$1 {{PLURAL: $1|يىل}}',
+'duration-minutes' => '$1 {{PLURAL:$1|مىنۇت}}',
+'duration-hours' => '$1 {{PLURAL:$1|سائەت}}',
+'duration-days' => '$1 {{PLURAL:$1|كۈن}}',
+'duration-weeks' => '$1 {{PLURAL:$1|ھەپتە}}',
+'duration-years' => '$1 {{PLURAL:$1|يىل}}',
'duration-decades' => '$1 {{PLURAL:$1|ئون يىل}}',
'duration-centuries' => '$1 {{PLURAL:$1|ئەسىر}}',
'duration-millennia' => '$1 {{PLURAL:$1|مىڭ يىل}}',
$messages = array(
# User preference toggles
-'tog-underline' => 'Підкреслювати посилання:',
-'tog-justify' => 'Вирівнювати текст по ширині сторінки',
+'tog-underline' => 'Підкреслювати посилання:
+Підкреслювання посилань:',
'tog-hideminor' => 'Приховати незначні редагування у списку останніх змін',
'tog-hidepatrolled' => 'Приховувати патрульовані редагування у списку нових редагувань',
'tog-newpageshidepatrolled' => 'Приховувати патрульовані сторінки у списку нових сторінок',
'tog-numberheadings' => 'Автоматично нумерувати заголовки',
'tog-showtoolbar' => 'Показувати панель інструментів',
'tog-editondblclick' => 'Редагувати сторінки при подвійному клацанні мишкою',
-'tog-editsection' => 'Показувати посилання [ред.] для кожного розділу',
'tog-editsectiononrightclick' => 'Редагувати розділи при клацанні правою кнопкою мишки на заголовку',
-'tog-showtoc' => 'Показувати зміст (для сторінок з більш ніж трьома заголовками)',
-'tog-rememberpassword' => "Запам'ятати мій обліковий запис для цього браузера (на строк не більше $1 {{PLURAL:$1|дня|днів}})",
+'tog-rememberpassword' => "Запам'ятати мій обліковий запис для цього браузера (на строк не більше $1 {{PLURAL:$1|1=дня|днів}})",
'tog-watchcreations' => 'Додавати створені мною сторінки і завантажені мною файли до мого списку спостереження',
'tog-watchdefault' => 'Додавати змінені мною сторінки та файли до мого списку спостереження',
'tog-watchmoves' => 'Додавати перейменовані мною сторінки та файли до мого списку спостереження',
'december-date' => '$1 грудня',
# Categories related messages
-'pagecategories' => '{{PLURAL:$1|Категорія|Категорії}}',
+'pagecategories' => '{{PLURAL:$1|1=Категорія|Категорії|Категорій}}',
'category_header' => 'Сторінки в категорії «$1»',
'subcategories' => 'Підкатегорії',
'category-media-header' => 'Файли в категорії «$1»',
'category-empty' => "''Ця категорія зараз порожня.''",
-'hidden-categories' => '{{PLURAL:$1|Прихована категорія|Приховані категорії}}',
+'hidden-categories' => '{{PLURAL:$1|1=Прихована категорія|Приховані категорії|Прихованих категорій}}',
'hidden-category-category' => 'Приховані категорії',
'category-subcat-count' => 'Показано $1 {{PLURAL:$1|підкатегорію з|підкатегорії з|підкатегорій із}} $2.',
'category-subcat-count-limited' => 'У цій категорії {{PLURAL:$1|$1 підкатегорія|$1 підкатегорії|$1 підкатегорій}}.',
'badaccess' => 'Помилка доступу',
'badaccess-group0' => 'Вам не дозволено виконувати цю дію.',
-'badaccess-groups' => 'Дія, яку Ви хотіли зробити, дозволена лише користувачам із {{PLURAL:$2|групи|груп}}: $1.',
+'badaccess-groups' => 'Дія, яку Ви хотіли зробити, дозволена лише користувачам із {{PLURAL:$2|1=групи|груп}}: $1.',
'versionrequired' => 'Потрібна MediaWiki версії $1',
'versionrequiredtext' => 'Для роботи з цією сторінкою потрібна MediaWiki версії $1. Див. [[Special:Version|інформацію про версії програмного забезпечення, яке використовується]].',
'pagetitle-view-mainpage' => '{{SITENAME}}',
'retrievedfrom' => 'Отримано з $1',
'youhavenewmessages' => 'Ви отримали $1 ($2).',
-'youhavenewmessagesfromusers' => 'Ви отримали $1 від {{PLURAL:$3|іншого дописувача|$3 інших дописувачів}} ($2).',
+'youhavenewmessagesfromusers' => '{{PLURAL:$4|1=Ви отримали|Ви отримали}} $1 від {{PLURAL:$3|1=іншого дописувача|$3 інших дописувачів}} ($2).',
'youhavenewmessagesmanyusers' => 'Ви отримали $1 від багатьох дописувачів ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|нове повідомлення|999=нові повідомлення}}',
-'newmessagesdifflinkplural' => '{{PLURAL:$1|остання зміна|999=останні зміни}}',
+'newmessageslinkplural' => '{{PLURAL:$1|1=нове повідомлення|999=нові повідомлення}}',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|1=остання зміна|999=останні зміни}}',
'youhavenewmessagesmulti' => 'Ви отримали нові повідомлення на $1',
'editsection' => 'ред.',
'editold' => 'ред.',
'badtitle' => 'Неприпустима назва',
'badtitletext' => 'Запитана назва сторінки неправильна, порожня, або неправильно зазначена міжмовна чи міжвікі назва.
Можливо, в назві використовуються недопустимі символи.',
-'perfcached' => 'Наступні дані взяті з кешу і можуть бути застарілими. В кеші зберігається не більше {{PLURAL:$1| запису| записів}}.',
-'perfcachedts' => 'Наступні дані взяті з кешу, востаннє він оновлювався о $1. У кеші зберігається не більше $4 {{PLURAL:$4|запису|записів}}.',
+'perfcached' => 'Наступні дані взяті з кешу і можуть бути застарілими. В кеші зберігається не більше {{PLURAL:$1|1=одного запису|$1 записів}}.',
+'perfcachedts' => 'Наступні дані взяті з кешу, востаннє він оновлювався о $1. У кеші зберігається не більше $4 {{PLURAL:$4|1=запису|записів}}.',
'querypage-no-updates' => 'Зміни цієї сторінки зараз заборонені. Дані тут не можуть бути оновлені зараз.',
'viewsource' => 'Перегляд',
'viewsource-title' => 'Перегляд вихідного коду сторінки $1',
'viewyourtext' => "Ви можете переглянути та скопіювати текст '''ваших редагувань''' на цій сторінці:",
'protectedinterface' => 'Ця сторінка є частиною інтерфейсу програмного забезпечення цієї вікі і її можуть редагувати лише адміністратори проекту. Щоб додати або змінити переклади для усіх вікі, відвідайте [//translatewiki.net/ translatewiki.net], проект локалізації MediaWiki.',
'editinginterface' => "'''Увага:''' Ви редагуєте сторінку, що є частиною текстового інтерфейсу. Зміни цієї сторінки спричинять зміну інтерфейсу для інших користувачів. Для перекладу повідомлення використовуйте [//translatewiki.net/wiki/Main_Page?setlang=uk translatewiki.net] — проект, що займається локалізацією MediaWiki.",
-'cascadeprotected' => 'Сторінка захищена від змін, оскільки її включено до {{PLURAL:$1|сторінки, для якої|наступних сторінок, для яких}} установлено каскадний захист: $2',
+'cascadeprotected' => 'Сторінка захищена від змін, оскільки її включено до {{PLURAL:$1|1=сторінки, для якої|наступних сторінок, для яких}} установлено каскадний захист: $2',
'namespaceprotected' => 'У вас нема дозволу редагувати сторінки в просторі назв «$1».',
'customcssprotected' => 'У вас немає прав на редагування цієї CSS-сторінки, так як вона містить особисті налаштування іншого користувача.',
'customjsprotected' => 'У вас немає дозволу на редагування цієї JavaScript-сторінки, так як вона містить особисті налаштування іншого користувача.',
'yourpasswordagain' => 'Повторний набір пароля:',
'createacct-yourpasswordagain' => 'Підтвердіть пароль',
'createacct-yourpasswordagain-ph' => 'Введіть пароль знову',
-'remembermypassword' => "Запам'ятати мій обліковий запис на цьому комп'ютері (на строк не більше $1 {{PLURAL:$1|дня|днів}})",
+'remembermypassword' => "Запам'ятати мій обліковий запис на цьому комп'ютері (на строк не більше $1 {{PLURAL:$1|1=дня|днів}})",
'userlogin-remembermypassword' => "Запам'ятати мене",
'userlogin-signwithsecure' => "Захищене з'єднання",
'yourdomainname' => 'Ваш домен:',
'blocked-mailpassword' => 'Редагування з вашої IP-адреси заборонено, заблокована також функція відновлення пароля.',
'eauthentsent' => 'На вказану адресу електронної пошти відправлено лист.
Щоб отримувати листи надалі, дотримуйтесь викладених там інструкцій для підтвердження того, що ця адреса належить вам.',
-'throttled-mailpassword' => 'Інструкція по відновленню паролю вже була вислана електронною поштою протягом {{PLURAL:$1|останньої години|останніх $1 годин}}.
+'throttled-mailpassword' => 'Інструкція по відновленню паролю вже була вислана електронною поштою протягом {{PLURAL:$1|1=останньої години|останніх $1 годин}}.
Для попередження зловживань дозволено надсилати тільки одну інструкцію за {{PLURAL:$1|годину|$1 години|$1 годин}}.',
'mailerror' => 'Помилка при відправці пошти: $1',
'acct_creation_throttle_hit' => 'Відвідувачі з вашої IP-адреси вже створили $1 {{PLURAL:$1|обліковий запис|облікових записи|облікових записів}} за останню добу, що є максимумом для цього відрізка часу.
'retypenew' => 'Ще раз введіть новий пароль:',
'resetpass_submit' => 'Установити пароль і ввійти',
'changepassword-success' => 'Ваш пароль успішно змінено!',
+'changepassword-throttled' => 'Ви нещодавно зробили надто багато спроб ввійти до системи.
+Будь ласка, зачекайте $1 перед повторною спробою.',
'resetpass_forbidden' => 'Пароль не можна змінювати',
'resetpass-no-info' => 'Щоб звертатися безпосередньо до цієї сторінки, вам слід увійти до системи.',
'resetpass-submit-loggedin' => 'Змінити пароль',
'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|1=ий такий запис|і такі записи}}:
$2
-{{PLURAL:$3|Цей тимчасовий пароль|Ці тимчасові паролі}} стануть недійсні через {{PLURAL:$5|день|$5 дні|$5 днів}}.
+{{PLURAL:$3|1=Цей тимчасовий пароль стане недійсним|Ці тимчасові паролі стануть недійсними}} через $5 {{PLURAL:$5|день|дні|днів}}.
Ви маєте ввійти в систему і вибрати новий пароль. Якщо ж цей запит зробив хтось інший, або Ви пам'ятаєте свій старий пароль і не бажаєте його змінювати, можете просто проігнорувати це повідомлення та продовжувати використовувати старий пароль.",
-'passwordreset-emailtext-user' => "Користувач $1 з {{SITENAME}} попросив нагадати деталі Вашого облікового запису для {{SITENAME}} ($4). З Вашою електронною скринькою пов'язан{{PLURAL:$3|ий такий запис|і такі записи}}:
+'passwordreset-emailtext-user' => "Користувач $1 з {{SITENAME}} попросив нагадати деталі Вашого облікового запису для {{SITENAME}} ($4). З Вашою електронною скринькою пов'язан{{PLURAL:$3|1=ий такий запис|і такі записи}}:
$2
-{{PLURAL:$3|Цей тимчасовий пароль|Ці тимчасові паролі}} стануть нечинні через {{PLURAL:$5|день|$5 дні|$5 днів}}.
+{{PLURAL:$3|1=Цей тимчасовий пароль|Ці тимчасові паролі}} стануть нечинні через {{PLURAL:$5|день|$5 дні|$5 днів}}.
Ви маєте ввійти в систему і вибрати новий пароль. Якщо ж цей запит зробив хтось інший, або Ви пам'ятаєте свій старий пароль і не бажаєте його змінювати, можете просто проігнорувати це повідомлення та продовжувати використовувати старий пароль.",
'passwordreset-emailelement' => "Ім'я користувача: $1
Тимчасовий пароль: $2",
'changeemail-password' => 'Ваш пароль проекту {{SITENAME}}:',
'changeemail-submit' => 'Змінити адресу електронної пошти',
'changeemail-cancel' => 'Скасувати',
+'changeemail-throttled' => 'Ви зробили надто багато спроб ввійти до системи.
+Будь ласка, зачекайте $1 перед повторною спробою.',
# Special:ResetTokens
'resettokens' => 'Скидання жетонів',
Останній запис журналу наведений нижче для довідки:",
'semiprotectedpagewarning' => "'''Зауваження:''' Ця сторінка захищена так, що її можуть редагувати тільки зареєстровані користувачі.
Останній запис журналу наведений нижче для довідки:",
-'cascadeprotectedwarning' => "'''Попередження:''' Цю сторінку можуть редагувати лише користувачі з групи «Адміністратори», оскільки вона включена {{PLURAL:$1|до сторінки, для якої|до наступних сторінок, для яких}} активовано каскадний захист:",
+'cascadeprotectedwarning' => "'''Попередження:''' Цю сторінку можуть редагувати лише користувачі з групи «Адміністратори», оскільки вона включена {{PLURAL:$1|1=до сторінки, для якої|до наступних сторінок, для яких}} активовано каскадний захист:",
'titleprotectedwarning' => "'''Попередження. Ця сторінка була захищена так, що для її створення потрібні [[Special:ListGroupRights|особливі права]].'''
Останній запис журналу наведений нижче для довідки:",
-'templatesused' => '{{PLURAL:$1|Шаблон, використаний|Шаблони, використані}} на цій сторінці:',
-'templatesusedpreview' => '{{PLURAL:$1|Шаблон, використаний|Шаблони, використані}} у цьому попередньому перегляді:',
-'templatesusedsection' => '{{PLURAL:$1|Шаблон, використаний|Шаблони, використані}} у цій секції:',
+'templatesused' => '{{PLURAL:$1|1=Шаблон, використаний|Шаблони, використані}} на цій сторінці:',
+'templatesusedpreview' => '{{PLURAL:$1|1=Шаблон, використаний|Шаблони, використані}} у цьому попередньому перегляді:',
+'templatesusedsection' => '{{PLURAL:$1|1=Шаблон, використаний|Шаблони, використані}} у цій секції:',
'template-protected' => '(захищено)',
'template-semiprotected' => '(частково захищено)',
'hiddencategories' => 'Ця сторінка належить до $1 {{PLURAL:$1|прихованої категорії|прихованих категорій|прихованих категорій}}:',
'sectioneditnotsupported-title' => 'Редагування окремих розділів не підтримується',
'sectioneditnotsupported-text' => 'На цій сторінці не підтримується редагування окремих розділів',
'permissionserrors' => 'Помилка доступу',
-'permissionserrorstext' => 'У вас нема прав на виконання цієї операції з {{PLURAL:$1|наступної причини|наступних причин}}:',
-'permissionserrorstext-withaction' => 'У вас нема дозволу на $2 з {{PLURAL:$1|такої причини|таких причин}}:',
+'permissionserrorstext' => 'У вас нема прав на виконання цієї операції з {{PLURAL:$1|1=наступної причини|наступних причин}}:',
+'permissionserrorstext-withaction' => 'У вас нема дозволу на $2 з {{PLURAL:$1|1=такої причини|таких причин}}:',
'recreate-moveddeleted-warn' => "'''Попередження: ви намагаєтеся створити сторінку, яка раніше вже була вилучена.'''
Перевірте, чи справді вам потрібно знову створювати цю сторінку.
'invalid-content-data' => 'Неприпустимі дані',
'content-not-allowed-here' => 'Вміст «$1» недопустимий на сторінці [[$2]]',
'editwarning-warning' => 'Перехід на іншу сторінку призведе до втрати ваших змін.
-Якщо ви ввійшли до системи, то ви можете відключити це попередження в розділі «Редагування» ваших налаштувань.',
+Якщо ви ввійшли до системи, то ви можете відключити це попередження в розділі "{{int:prefs-editing}}" ваших налаштувань.',
+'editpage-notsupportedcontentformat-title' => 'Непідтримуваний формат вмісту',
+'editpage-notsupportedcontentformat-text' => 'Формат вмісту $1 не підтримується моделлю вмісту $2.',
# Content models
'content-model-wikitext' => 'вікітекст',
'revdelete-no-file' => 'Зазначений файл не існує.',
'revdelete-show-file-confirm' => 'Ви впевнені, що хочете переглянути вилучену версію файлу «<nowiki>$1</nowiki>» від $3 $2?',
'revdelete-show-file-submit' => 'Так',
-'revdelete-selected' => "'''{{PLURAL:$2|Обрана версія|Обрані версії}} сторінки [[:$1]]:'''",
-'logdelete-selected' => "'''{{PLURAL:$1|Обраний запис|Обрані записи}} журналу:'''",
+'revdelete-selected' => "'''{{PLURAL:$2|1=Обрана версія|Обрані версії}} сторінки [[:$1]]:'''",
+'logdelete-selected' => "'''{{PLURAL:$1|1=Обраний запис|Обрані записи}} журналу:'''",
'revdelete-text' => "'''Вилучені версії сторінок і подій будуть відображатися в історії сторінки та журналах, але частина їх вмісту не буде доступною звичайним користувачам.'''
Доступ до прихованого змісту матимуть адміністратори проекту {{SITENAME}}, які зможуть відновити його за допомогою цього ж інтерфейсу,
крім випадків, коли були встановлені додаткові обмеження власниками сайту.",
'revdelete-suppress' => 'Приховувати дані також і від адміністраторів',
'revdelete-unsuppress' => 'Зняти обмеження з відновлених версій',
'revdelete-log' => 'Причина:',
-'revdelete-submit' => 'Застосувати до {{PLURAL:$1|обраної версії|обраних версій}}',
+'revdelete-submit' => 'Застосувати до {{PLURAL:$1|1=обраної версії|обраних версій}}',
'revdelete-success' => "'''Видимість версії успішно змінена.'''",
'revdelete-failure' => "'''Видимість версії неможливо змінити:'''
$1",
'showhideselectedversions' => 'Показати/приховати обрані версії',
'editundo' => 'скасувати',
'diff-empty' => '(Немає відмінностей)',
-'diff-multi' => '({{PLURAL:$1|Одна проміжна версія одного користувача не показана|$1 проміжні версії {{PLURAL:$2|одного користувача|$2 користувачів}} не показані|$1 проміжних версій {{PLURAL:$2|одного користувача|$2 користувачів}} не показані}})',
-'diff-multi-manyusers' => '({{PLURAL:$1|не показана $1 проміжна я версія|не показані $1 проміжні версії|не показано $1 проміжних версій}}, зроблених більш, ніж {{PLURAL:$2|$1 користувачем|$2 користувачами}})',
-'difference-missing-revision' => '{{PLURAL:$2|$2 версія|$2 версії|$2 версій}} для цього порівняння ($1) не {{PLURAL:$2|знайдена|знайдені}}.
+'diff-multi-sameuser' => '(не {{PLURAL:$1|показано одну проміжну версію|показані $1 проміжні версії|показано $1 проміжних версій}} цього учасника)',
+'diff-multi-otherusers' => '(не {{PLURAL:$1|показана одна проміжна версія|показано $1 проміжні версії|показані $1 проміжних версій}} {{PLURAL:$2|ще одного учасника|$2 учасників}})',
+'diff-multi-manyusers' => '({{PLURAL:$1|не показана $1 проміжна версія|не показані $1 проміжні версії|не показано $1 проміжних версій}}, зроблених більш, ніж {{PLURAL:$2|1=$1 користувачем|$2 користувачами}})',
+'difference-missing-revision' => '{{PLURAL:$2|$2 версія|$2 версії|$2 версій}} для цього порівняння ($1) не {{PLURAL:$2|1=знайдена|знайдені}}.
Імовірно, ви перейшли за застарілим посиланням на порівняння версій вилученої сторінки.
Подробиці можна дізнатися з [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} журналу вилучень].',
'shown-title' => 'Показувати $1 {{PLURAL:$1|запис|записи|записів}} на сторінці',
'viewprevnext' => 'Переглянути ($1 {{int:pipe-separator}} $2) ($3).',
'searchmenu-exists' => "'''У цій вікі є сторінка з назвою «[[:$1]]»'''",
-'searchmenu-new' => "'''Створити сторінку «[[:$1]]» у цій вікі!'''",
+'searchmenu-new' => '<strong>Створити сторінку «[[:$1]]» у цьому вікі-проекті!</strong>
+{{PLURAL:$2|0=|Див. також сторінку, знайдену по результатами вашого пошуку.|Див. також знайдені результати пошуку.}}',
'searchprofile-articles' => 'Статті',
'searchprofile-project' => 'Сторінки довідки і проекту',
'searchprofile-images' => 'Мультимедіа',
'search-result-score' => 'Відповідність: $1 %',
'search-redirect' => '(перенаправлення $1)',
'search-section' => '(розділ $1)',
+'search-file-match' => '(збігається із вмістом файлу)',
'search-suggest' => 'Можливо, ви мали на увазі: $1',
'search-interwiki-caption' => 'Братні проекти',
'search-interwiki-default' => '$1 результати:',
'searchall' => 'усі',
'showingresults' => "Нижче {{PLURAL:$1|показане|показані|показані}} '''$1''' {{PLURAL:$1|результат|результати|результатів}}, починаючи з № '''$2'''",
'showingresultsnum' => 'Нижче показано <strong>$3</strong> {{PLURAL:$3|результат|результати|результатів}}, починаючи з № <strong>$2</strong>.',
-'showingresultsheader' => "{{PLURAL:$5|Результат '''$1''' з '''$3'''|Результати '''$1 — $2''' з '''$3'''}} для '''$4'''",
+'showingresultsheader' => "{{PLURAL:$5|1=Результат '''$1''' з '''$3'''|Результати '''$1 — $2''' з '''$3'''}} для '''$4'''",
'search-nonefound' => 'Не знайдено результатів, що відповідають запиту.',
'powersearch-legend' => 'Розширений пошук',
'powersearch-ns' => 'Пошук у просторах назв:',
'rows' => 'Рядків:',
'columns' => 'Колонок:',
'searchresultshead' => 'Пошук',
-'resultsperpage' => 'Кількість результатів на сторінку:',
'stub-threshold' => 'Поріг для визначення оформлення <a href="#" class="stub">посилань на стаби</a> (у байтах):',
'stub-threshold-disabled' => 'Вимкнений',
'recentchangesdays' => 'За скільки днів показувати нові редагування:',
'youremail' => 'Адреса електронної пошти:',
'username' => "{{GENDER:$1|Ім'я користувача|Ім'я користувачки}}:",
'uid' => 'Ідентифікатор {{GENDER:$1|користувача}}:',
-'prefs-memberingroups' => '{{GENDER:$2|Член}} {{PLURAL:$1|групи|груп}}:',
+'prefs-memberingroups' => '{{GENDER:$2|Член}} {{PLURAL:$1|1=групи|груп}}:',
'prefs-memberingroups-type' => '$1',
'prefs-registration' => 'Час реєстрації:',
'prefs-registration-date-time' => '$1',
Перевірте коректність HTML-тегів.',
'badsiglength' => 'Ваш підпис дуже довгий.
Повинно бути не більше $1 {{PLURAL:$1|символу|символів|символів}}.',
-'yourgender' => 'Як ви волÑ\96Ñ\94Ñ\82е бÑ\83Ñ\82и опиÑ\81аним?',
+'yourgender' => 'СÑ\82аÑ\82Ñ\8c:',
'gender-unknown' => 'Не визначена',
'gender-male' => 'Чоловіча',
'gender-female' => 'Жіноча',
'email-address-validity-invalid' => 'Введіть чинну адресу електронної пошти',
# User rights
-'userrights' => 'УпÑ\80авлÑ\96ння правами користувачів',
-'userrights-lookup-user' => 'УпÑ\80авлÑ\96ння групами користувача',
+'userrights' => 'Ð\9aеÑ\80Ñ\83вання правами користувачів',
+'userrights-lookup-user' => 'Ð\9aеÑ\80Ñ\83вання групами користувача',
'userrights-user-editname' => "Введіть ім'я користувача:",
'editusergroup' => 'Редагувати групи користувача',
'editinguser' => "Зміна прав користувача '''[[User:$1|$1]]''' $2",
'filetype-badmime' => 'Файли, що мають MIME-тип «$1», не можуть бути завантажені.',
'filetype-bad-ie-mime' => 'Неможливо завантажити цей файл, оскільки Internet Explorer визначатиме його як «$1», тобто недозволеним і потенційно небезпечним типом файлу.',
'filetype-unwanted-type' => "'''\".\$1\"''' — небажаний тип файлу.
-{{PLURAL:\$3|Бажаний тип файлів|Бажані типи файлів}}: \$2.",
-'filetype-banned-type' => '\'\'\'".$1"\'\'\' — {{PLURAL:$4|недозволений тип файлів|недозволені типи файлів}}.
-{{PLURAL:$3|Дозволений тип файлів|Дозволені типи файлів}}: $2.',
+{{PLURAL:\$3|1=Бажаний тип файлів|Бажані типи файлів}}: \$2.",
+'filetype-banned-type' => '\'\'\'".$1"\'\'\' — {{PLURAL:$4|1=недозволений тип файлів|недозволені типи файлів}}.
+{{PLURAL:$3|1=Дозволений тип файлів|Дозволені типи файлів}}: $2.',
'filetype-missing' => 'Відсутнє розширення файлу (наприклад, «.jpg»).',
'empty-file' => 'Надісланий вами файл порожній.',
'file-too-large' => 'Файл, який ви надіслали, завеликий.',
[[File:$1|thumb|center|$1]]',
'fileexists-shared-forbidden' => 'Файл із такою назвою вже існує у спільному сховищі файлів.
Якщо ви все ж хочете завантажити цей файл, будь ласка, поверніться назад і змініть назву файлу. [[File:$1|thumb|center|$1]]',
-'file-exists-duplicate' => 'Цей файл є дублікатом {{PLURAL:$1|файлу|таких файлів}}:',
+'file-exists-duplicate' => 'Цей файл є дублікатом {{PLURAL:$1|1=файлу|таких файлів}}:',
'file-deleted-duplicate' => 'Такий самий файл ([[:$1]]) уже вилучався раніше. Будь ласка, ознайомтеся з історією вилучень файлу перед тим, як завантажити його знову.',
+'file-deleted-duplicate-notitle' => 'Файл, ідентичний до цього файлу, був раніше видалений, і назву було усунено.
+Вам слід попросити кого-небудь з можливістю перегляду усуненого файлу даних, щоб проаналізувати ситуацію, перш ніж приступити до повторного завантаження.',
'uploadwarning' => 'Попередження',
'uploadwarning-text' => 'Будь ласка, змініть наданий нижче опис файлу і спробуйте ще раз.',
'savefile' => 'Зберегти файл',
'backend-fail-connect' => 'Неможливо підключитися до сховища рушія "$1".',
'backend-fail-internal' => 'Сталася невідома помилка у сховищі рушія "$1".',
'backend-fail-contenttype' => 'Не вдалося визначити тип вмісту файла, щоб зберегти його в "$1".',
-'backend-fail-batchsize' => 'Серверна частина отримала блок із $1 {{PLURAL:$1|файлової операції|файлових операцій}}; обмеження складає $2 {{PLURAL:$2|файлову операцію|файлові операції|файлових операцій}}.',
+'backend-fail-batchsize' => 'Серверна частина отримала блок із $1 {{PLURAL:$1|1=файлової операції|файлових операцій}}; обмеження складає $2 {{PLURAL:$2|файлову операцію|файлові операції|файлових операцій}}.',
'backend-fail-usable' => 'Файл «$1» не може бути прочитано чи записано через недостатні повноваження або відсутність каталогів (контейнерів).',
# File journal errors
'filehist-comment' => 'Коментар',
'filehist-missing' => 'Файл відсутній',
'imagelinks' => 'Використання файлу',
-'linkstoimage' => '{{PLURAL:$1|Наступна сторінка посилається|Наступні сторінки посилаються}} на цей файл:',
-'linkstoimage-more' => 'Більше $1 {{PLURAL:$1|сторінки|сторінок}} посилаються на цей файл.
+'linkstoimage' => '{{PLURAL:$1|1=Наступна сторінка посилається|Наступні сторінки посилаються}} на цей файл:',
+'linkstoimage-more' => 'Більше $1 {{PLURAL:$1|1=сторінки|сторінок}} посилаються на цей файл.
У цьому списку {{PLURAL:$1|показане тільки $1 посилання|показані тільки $1 посилання|показані тільки $1 посилань}} на цей файл.
Також доступний [[Special:WhatLinksHere/$2|повний список]].',
'nolinkstoimage' => 'Нема сторінок, що посилаються на цей файл.',
# Random page
'randompage' => 'Випадкова стаття',
-'randompage-nopages' => 'Нема сторінок в {{PLURAL:$2|просторі назв|просторах назв}} $1.',
+'randompage-nopages' => 'Нема сторінок в {{PLURAL:$2|1=просторі назв|просторах назв}} $1.',
# Random page in category
'randomincategory' => 'Випадкова сторінка у категорії',
'statistics-views-peredit' => 'Переглядів на редагування',
'statistics-users' => 'Зареєстрованих [[Special:ListUsers|користувачів]]',
'statistics-users-active' => 'Активні користувачі',
-'statistics-users-active-desc' => 'Користувачі, які здійснили якусь дію протягом {{PLURAL:$1|минулого дня|минулих $1 днів}}',
+'statistics-users-active-desc' => 'Користувачі, які здійснили якусь дію протягом {{PLURAL:$1|1=минулого дня|$1 минулих днів}}',
'statistics-mostpopular' => 'Сторінки, які найчастіше переглядають',
'pageswithprop' => 'Сторінки з перевизначеними властивостями',
'nmemberschanged' => '$1 → $2 {{PLURAL:$2|член|члени|членів}}',
'nrevisions' => '$1 {{PLURAL:$1|версія|версії|версій}}',
'nviews' => '$1 {{PLURAL:$1|перегляд|перегляди|переглядів}}',
-'nimagelinks' => 'Використовується на $1 {{PLURAL:$1|сторінці|сторінках}}',
-'ntransclusions' => 'використовується на $1 {{PLURAL:$1|сторінці|сторінках}}',
+'nimagelinks' => 'Використовується на $1 {{PLURAL:$1|1=сторінці|сторінках}}',
+'ntransclusions' => 'використовується на $1 {{PLURAL:$1|1=сторінці|сторінках}}',
'specialpage-empty' => 'Запит не дав результатів.',
'lonelypages' => 'Статті-сироти',
'lonelypagestext' => 'На такі сторінки нема посилань з інших сторінок і вони не включаються до інших сторінок {{grammar:genitive|{{SITENAME}}}}.',
'protectedpages' => 'Захищені сторінки',
'protectedpages-indef' => 'Тільки безстроково захищені',
'protectedpages-cascade' => 'Тільки каскадний захист',
+'protectedpages-noredirect' => 'Сховати перенаправлення',
'protectedpagesempty' => 'Зараз нема захищених сторінок із зазначеними параметрами',
'protectedtitles' => 'Заборонені назви',
'protectedtitlesempty' => 'Зараз нема захищених назв із зазначеними параметрами.',
# Special:Categories
'categories' => 'Категорії',
-'categoriespagetext' => '{{PLURAL:$1|Наступна категорія|Наступні категорії}} містять сторінки або медіа-файли.
+'categoriespagetext' => '{{PLURAL:$1|1=Наступна категорія містить|Наступні категорії містять}} сторінки або медіа-файли.
Тут не показані [[Special:UnusedCategories|категорії, що не використовуються]].
Див. також [[Special:WantedCategories|список необхідних категорій]].',
'categoriesfrom' => 'Показати категорії, що починаються з:',
'linksearch-ok' => 'Знайти',
'linksearch-text' => 'Можна вживати підстановочні символи, наприклад, «*.wikipedia.org».
Необхідно зазначити домен, принаймні верхнього рівня, наприклад «*.org».<br />
-{{PLURAL:$2|Підтримується протокол|Підтримуються протоколи}}: <code>$1</code> (за замовчуванням http:// , якщо жоден протокол не зазначено).',
+{{PLURAL:$2|1=Підтримується протокол|Підтримуються протоколи}}: <code>$1</code> (за замовчуванням http:// , якщо жоден протокол не зазначено).',
'linksearch-line' => 'Посилання на $1 із $2',
'linksearch-error' => 'Підстановочні знаки можуть використовуватися лише на початку адрес.',
'listgrouprights-members' => '(список членів)',
'listgrouprights-right-display' => '<span class="listgrouprights-granted">$1 <code>($2)</code></span>',
'listgrouprights-right-revoked' => '<span class="listgrouprights-revoked">$1 <code>($2)</code></span>',
-'listgrouprights-addgroup' => 'може додавати в {{PLURAL:$2|групу|групи}}: $1',
-'listgrouprights-removegroup' => 'може виключати з {{PLURAL:$2|групи|груп}}: $1',
+'listgrouprights-addgroup' => 'може додавати в {{PLURAL:$2|1=групу|групи}}: $1',
+'listgrouprights-removegroup' => 'може виключати з {{PLURAL:$2|1=групи|груп}}: $1',
'listgrouprights-addgroup-all' => 'може додавати до всіх груп',
'listgrouprights-removegroup-all' => 'може виключати зі всіх груп',
-'listgrouprights-addgroup-self' => 'може додавати {{PLURAL:$2|групу|групи}} до свого облікового запису: $1',
-'listgrouprights-removegroup-self' => 'може вилучати {{PLURAL:$2|групу|групи}} зі свого облікового запису: $1',
+'listgrouprights-addgroup-self' => 'може додавати {{PLURAL:$2|1=групу|групи}} до свого облікового запису: $1',
+'listgrouprights-removegroup-self' => 'може вилучати {{PLURAL:$2|1=групу|групи}} зі свого облікового запису: $1',
'listgrouprights-addgroup-self-all' => 'Може додавати всі групи до свого облікового запису',
'listgrouprights-removegroup-self-all' => 'може вилучати всі групи зі свого облікового запису',
'watchmethod-list' => 'перегляд статей за якими ведеться спостереження',
'watchlistcontains' => 'Ваш список спостереження містить $1 {{PLURAL:$1|сторінку|сторінки|сторінок}}.',
'iteminvalidname' => 'Проблема з елементом «$1», недопустима назва…',
-'wlnote' => 'Нижче наведено {{PLURAL:$1|останнє $1 редагування|останні $1 редагування|останні $1 редагувань}} за {{PLURAL:$2|останню|останні|останні}} <strong>$2</strong> {{PLURAL:$2|годину|години|годин}}, на час $3 $4.',
+'wlnote2' => 'Нижче наведено зміни за {{PLURAL:$1|останню годину|останні <strong>$1</strong> години|останні <strong>$1</strong> годин}} на $2 $3.',
'wlshowlast' => 'Показати зміни за останні $1 годин $2 днів $3',
'watchlist-options' => 'Налаштування списку спостереження',
'exblank' => 'стаття була порожньою',
'delete-confirm' => 'Вилучення «$1»',
'delete-legend' => 'Вилучення',
-'historywarning' => "'''Попередження:''' Сторінка, яку ви збираєтеся вилучити, має історію редагувань з приблизно $1 {{PLURAL:$1|версії|версій}}:",
+'historywarning' => "'''Попередження:''' Сторінка, яку ви збираєтеся вилучити, має історію редагувань з приблизно $1 {{PLURAL:$1|1=версії|версій}}:",
'confirmdeletetext' => 'Ви збираєтесь вилучити сторінку і всі її журнали редагувань з бази даних.
Будь ласка, підтвердіть, що ви бажаєте зробити це, повністю розумієте наслідки і що робите це у відповідності з [[{{MediaWiki:Policy-url}}|правилами]].',
'actioncomplete' => 'Дію виконано',
'delete-warning-toobig' => 'У цієї сторінки дуже довга історія редагувань, більше $1 {{PLURAL:$1|версії|версій|версій}}.
Її вилучення може призвести до порушень у роботі бази даних сайту {{SITENAME}};
дійте обережно.',
+'deleting-backlinks-warning' => "'''Попередження:''' інші сторінки посилаються або містять сторінку, яку ви маєте намір видалити.",
# Rollback
'rollback' => 'Відкинути редагування',
Поточні установки для сторінки '''$1''':",
'protect-locked-access' => "У вашого облікового запису недостатньо прав для зміни рівня захисту сторінки.
Поточні установки для сторінки: '''$1''':",
-'protect-cascadeon' => 'Ця сторінка захищена, бо вона включена {{PLURAL:$1|до зазначеної нижче сторінки, на яку|до нижчезазначених сторінок, на які}} встановлено каскадний захист. Ви можете змінити рівень захисту цієї сторінки, але це не вплине на каскадний захист.',
+'protect-cascadeon' => 'Ця сторінка захищена, бо вона включена {{PLURAL:$1|1=до зазначеної нижче сторінки, на яку|до нижчезазначених сторінок, на які}} встановлено каскадний захист. Ви можете змінити рівень захисту цієї сторінки, але це не вплине на каскадний захист.',
'protect-default' => 'Дозволити всім користувачам',
'protect-fallback' => 'Дозволено тільки користувачам із дозволом «$1»',
'protect-level-autoconfirmed' => 'Дозволено тільки автопідтвердженим користувачам',
'undeletepage' => 'Перегляд і відновлення вилучених сторінок',
'undeletepagetitle' => "'''Нижче наведені вилучені версії [[:$1|$1]]'''.",
'viewdeletedpage' => 'Переглянути видалені сторінки',
-'undeletepagetext' => '{{PLURAL:$1|Сторінка була вилучена, однак вона все ще знаходиться в архіві, тому може бути відновлена|Такі сторінки були вилучені, але вони все ще знаходяться в архіві і тому можуть бути відновлені}}. Архів періодично очищається.',
+'undeletepagetext' => '{{PLURAL:$1|1=Сторінка була вилучена, однак вона все ще знаходиться в архіві, тому може бути відновлена|Такі сторінки були вилучені, але вони все ще знаходяться в архіві і тому можуть бути відновлені}}. Архів періодично очищається.',
'undelete-fieldset-title' => 'Відновити версії',
'undeleteextrahelp' => "Для повного відновлення історії сторінки залиште всі поля порожніми й натисніть '''''«{{int:undeletebtn}}»'''''.
Для виконання часткового відновлення помітьте відповідні змінені поля, а потім натисніть '''''«{{int:undeletebtn}}»'''''.",
Див. [[Special:BlockList|список заблокованих IP-адрес]] для перегляду блокувань.',
'ipb-blockingself' => 'Ви збираєтеся заблокувати себе! Ви дійсно бажаєте це зробити?',
'ipb-confirmhideuser' => "Ви збираєтеся заблокувати користувача з опцією приховання імені. Це вилучить його ім'я з усіх списків та журналів. Ви точно хочете це зробити?",
+'ipb-confirmaction' => 'Якщо ви дійсно хочете зробити це, встановіть нижче прапорець у полі "{{int:ipb-confirm}}".',
'ipb-edit-dropdown' => 'Редагувати причини блокувань',
'ipb-unblock-addr' => 'Розблокувати $1',
'ipb-unblock' => 'Розблокувати користувача або IP-адресу',
'blocklist-reason' => 'Причина',
'ipblocklist-submit' => 'Пошук',
'ipblocklist-localblock' => 'Локальне блокування',
-'ipblocklist-otherblocks' => '{{PLURAL:$1|Інше блокування|Інші блокування}}',
+'ipblocklist-otherblocks' => '{{PLURAL:$1|1=Інше блокування|Інші блокування}}',
'infiniteblock' => 'блокування на невизначений термін',
'expiringblock' => 'закінчиться $1 $2',
'anononlyblock' => 'тільки анонімів',
'range_block_disabled' => 'Адміністраторам заборонено блокувати діапазони.',
'ipb_expiry_invalid' => 'Невірно вказано термін.',
'ipb_expiry_temp' => 'Блокування із приховуванням імені користувача мають бути безстроковими.',
-'ipb_hide_invalid' => 'Ð\9dеможливо пÑ\80иÑ\85оваÑ\82и облÑ\96ковий запиÑ\81; з нÑ\8cого зÑ\80облено дÑ\83же багаÑ\82о Ñ\80едагÑ\83ванÑ\8c.',
+'ipb_hide_invalid' => 'Ð\9dеможливо пÑ\80иÑ\85оваÑ\82и облÑ\96ковий запиÑ\81; з нÑ\8cого зÑ\80облено понад{{PLURAL:$1|одне Ñ\80едагÑ\83ваннÑ\8f|$1 Ñ\80едагÑ\83ваннÑ\8f|$1 Ñ\80едагÑ\83ванÑ\8c}}.',
'ipb_already_blocked' => '«$1» уже заблоковано. Для того, щоб призначити новий термін блокування, спочатку розблокуйте його.',
'ipb-needreblock' => 'Користувач $1 вже заблокований. Хочете змінити параметри блокування?',
-'ipb-otherblocks-header' => '{{PLURAL:$1|Інше блокування|Інші блокування}}',
+'ipb-otherblocks-header' => '{{PLURAL:$1|1=Інше блокування|Інші блокування}}',
'unblock-hideuser' => "Ви не можете розблокувати цього користувача, оскільки його ім'я було приховано.",
'ipb_cant_unblock' => 'Помилка: блокування з ID $1 не знайдене.
Можливо, користувач уже розблокований.',
'movepage-max-pages' => '$1 {{PLURAL:$1|сторінка була перейменована|сторінки були перейменовані|сторінок були перейменовані}} — це максимум, більше сторінок не можна перейменувати автоматично.',
'movelogpage' => 'Журнал перейменувань',
'movelogpagetext' => 'Далі подано список перейменованих сторінок.',
-'movesubpage' => '{{PLURAL:$1|Підсторінка|Підсторінки}}',
+'movesubpage' => '{{PLURAL:$1|1=Підсторінка|Підсторінки}}',
'movesubpagetext' => 'Ця сторінка має $1 {{PLURAL:$1|підсторінку|підсторінки|підсторінок}}.',
'movenosubpage' => 'Ця сторінка не має підсторінок.',
'movereason' => 'Причина:',
'allmessages-prefix' => 'Фільтр за префіксом:',
'allmessages-language' => 'Мова:',
'allmessages-filter-submit' => 'Виконати',
+'allmessages-filter-translate' => 'Перекласти',
# Thumbnails
'thumbnail-more' => 'Збільшити',
'importuploaderrortemp' => 'Не вдалося завантажити або імпортувати файл. Тимчасова папка відсутня.',
'import-parse-failure' => 'Помилка розбору XML під час імпорту',
'import-noarticle' => 'Нема сторінки для імпорту!',
-'import-nonewrevisions' => 'УÑ\81Ñ\96 веÑ\80Ñ\81Ñ\96Ñ\97 бÑ\83ли Ñ\80анÑ\96Ñ\88е Ñ\96мпоÑ\80Ñ\82ованÑ\96.',
+'import-nonewrevisions' => 'Ð\9dÑ\96Ñ\8fкÑ\96 попÑ\80авки не бÑ\83ли Ñ\96мпоÑ\80Ñ\82ованÑ\96 (вÑ\81Ñ\96 вже бÑ\83ли обÑ\80обленÑ\96, або пÑ\80опÑ\83Ñ\89енÑ\96 Ñ\87еÑ\80ез помилки).',
'xml-error-string' => '$1 в рядку $2, позиції $3 (байт $4): $5',
'import-upload' => 'Завантажити XML-дані',
'import-token-mismatch' => 'Утрачені дані сеансу. Будь ласка, спробуйте ще раз.',
'import-error-special' => 'Сторінку "$1" не імпортовано, оскільки вона належить до особливого простору імен, що не дозволяє створення сторінок.',
'import-error-invalid' => 'Сторінку "$1" не імпортовано, оскільки його ім\'я неприпустиме.',
'import-error-unserialize' => 'Версія $2 сторінки «$1» не може бути деструктурованою (десеріалізованою). Отримано повідомлення, що у цій версії використано модель $3 сериалізована як $4.',
-'import-options-wrong' => '{{PLURAL:$2|Неправильна опція|Неправильні опції}}: <nowiki>$1</nowiki>',
+'import-error-bad-location' => 'Правка $2, що використовує модель вмісту $3, не може бути збережена у «$1» цієї вікі, тому що ця модель не підтримується на цій сторінці.',
+'import-options-wrong' => '{{PLURAL:$2|1=Неправильна опція|Неправильні опції}}: <nowiki>$1</nowiki>',
'import-rootpage-invalid' => 'Вказана некоректна назва кореневої сторінки',
'import-rootpage-nosubpage' => 'В просторі назв вказаної кореневої сторінки «$1» заборонені підсторінки',
'tooltip-pt-watchlist' => 'Список сторінок, за змінами в яких Ви спостерігаєте',
'tooltip-pt-mycontris' => 'Ваш внесок',
'tooltip-pt-login' => "Тут можна зареєструватися в системі, але це не обов'язково.",
-'tooltip-pt-anonlogin' => "Тут можна зареєструватися в системі, але це не обов'язково.",
'tooltip-pt-logout' => 'Вихід із системи',
'tooltip-ca-talk' => 'Обговорення змісту сторінки',
'tooltip-ca-edit' => 'Ви можете редагувати цю сторінку. Будь ласка, використовуйте кнопку попереднього перегляду перед збереженням',
The wiki server can't provide data in a format your client can read.",
# Attribution
-'anonymous' => '{{PLURAL:$1|Анонімний користувач|Анонімні користувачі}} {{grammar:genitive|{{SITENAME}}}}',
+'anonymous' => '{{PLURAL:$1|1=Анонімний користувач|Анонімні користувачі}} {{grammar:genitive|{{SITENAME}}}}',
'siteuser' => 'Користувач {{grammar:genitive|{{SITENAME}}}} $1',
'anonuser' => 'анонімний користувач {{grammar:genitive|{{SITENAME}}}} $1',
'lastmodifiedatby' => 'Остання зміна $2, $1 користувачем $3.',
'othercontribs' => 'Базується на праці $1.',
'others' => 'інші',
-'siteusers' => '{{PLURAL:$2|Користувач|Користувачі}} {{grammar:genitive|{{SITENAME}}}} $1',
-'anonusers' => '{{PLURAL:$2|анонімний користувач|анонімні користувачі}} {{grammar:genitive|{{SITENAME}}}} $1',
+'siteusers' => '{{PLURAL:$2|1=Користувач|Користувачі}} {{grammar:genitive|{{SITENAME}}}} $1',
+'anonusers' => '{{PLURAL:$2|1=анонімний користувач|анонімні користувачі}} {{grammar:genitive|{{SITENAME}}}} $1',
'creditspage' => 'Подяки',
'nocredits' => 'Відсутній список користувачів для цієї статті',
'pageinfo-authors' => 'Загальна кількість унікальних авторів',
'pageinfo-recent-edits' => 'Кількість поточних редагувань в історії (протягом $1)',
'pageinfo-recent-authors' => 'Кількість авторів за останній час',
-'pageinfo-magic-words' => '{{PLURAL:$1|Магічне слово|Магічні слова}} ($1)',
-'pageinfo-hidden-categories' => '{{PLURAL:$1|Прихована категорія|Приховані категорії}} ($1)',
-'pageinfo-templates' => 'Включено {{PLURAL:$1|шаблон|шаблонів}} ($1)',
-'pageinfo-transclusions' => 'Включено до ($1) {{PLURAL:$1|сторінки|сторінок}}',
+'pageinfo-magic-words' => '{{PLURAL:$1|1=Магічне слово|Магічні слова}} ($1)',
+'pageinfo-hidden-categories' => '{{PLURAL:$1|1=Прихована категорія|Приховані категорії}} ($1)',
+'pageinfo-templates' => 'Включено {{PLURAL:$1|1=шаблон|шаблонів}} ($1)',
+'pageinfo-transclusions' => 'Включено до ($1) {{PLURAL:$1|1=сторінки|сторінок}}',
'pageinfo-toolboxlink' => 'Інформація про сторінку',
'pageinfo-redirectsto' => 'Перенаправляє на',
'pageinfo-redirectsto-info' => 'інформація',
'svg-long-error' => 'неправильний SVG-файл: $1',
'show-big-image' => 'Повна роздільність',
'show-big-image-preview' => 'Розмір при попередньому перегляді: $1.',
-'show-big-image-other' => '{{PLURAL:$2|Інша роздільність|Інші роздільності}}: $1.',
+'show-big-image-other' => '{{PLURAL:$2|1=Інша роздільність|Інші роздільності}}: $1.',
'show-big-image-size' => '$1 × $2 пікселів',
'file-info-gif-looped' => 'кільцеве',
'file-info-gif-frames' => '$1 {{PLURAL:$1|кадр|кадри|кадрів}}',
'exif-datetimemetadata' => 'Остання дата зміни метаданих',
'exif-nickname' => 'Неофіційна назва зображення',
'exif-rating' => 'Рейтинг (від 0 до 5)',
-'exif-rightscertificate' => 'Сертифікат управління правами',
+'exif-rightscertificate' => 'Сертифікат керування правами',
'exif-copyrighted' => 'Статус авторських прав',
'exif-copyrightowner' => 'Власник авторських прав',
'exif-usageterms' => 'Умови користування',
'version-parser-function-hooks' => 'Перехоплювачі функцій синтаксичного аналізатора',
'version-hook-name' => "Ім'я перехоплювача",
'version-hook-subscribedby' => 'Підписаний на',
-'version-version' => '(Версія $1)',
+'version-version' => '($1)',
'version-svn-revision' => '(r$2)',
-'version-license' => 'Ліцензія',
-'version-poweredby-credits' => "Ця Вікі працює на системі управління вмістом '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
+'version-license' => 'Ліцензія MediaWik',
+'version-ext-license' => 'Ліцензія',
+'version-ext-colheader-name' => 'Розширення',
+'version-ext-colheader-version' => 'Версія',
+'version-ext-colheader-license' => 'Ліцензія',
+'version-ext-colheader-description' => 'Опис',
+'version-ext-colheader-credits' => 'Автори',
+'version-license-title' => 'Ліцензія для $1',
+'version-license-not-found' => 'Не знайдено докладних відомостей про ліцензію для цього розширення.',
+'version-credits-title' => 'Кредити для $1',
+'version-credits-not-found' => 'Детальної інформації про авторів не знайдено для цього розширення.',
+'version-poweredby-credits' => "Ця Вікі працює на системі керування вмістом '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
'version-poweredby-others' => 'інші',
'version-poweredby-translators' => 'перекладачі translatewiki.net',
'version-credits-summary' => 'Нам хотілося б відзначити наступних осіб, що зробили внесок у [[Special:Version|MediaWiki]].',
'fileduplicatesearch-submit' => 'Знайти',
'fileduplicatesearch-info' => '$1 × $2 пікселів<br />Розмір файлу: $3<br />MIME-тип: $4',
'fileduplicatesearch-result-1' => 'Файл «$1» не має ідентичних.',
-'fileduplicatesearch-result-n' => 'Файл «$1» має {{PLURAL:$2|1 ідентичний дублікат|$2 ідентичних дублікатів}}.',
+'fileduplicatesearch-result-n' => 'Файл «$1» має {{PLURAL:$2|1=1 ідентичний дублікат|$2 ідентичні дублікати|$2 ідентичних дублікатів}}.',
'fileduplicatesearch-noresults' => 'Файл з назвою «$1» не знайдено.',
# Special:SpecialPages
'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-event' => '$1 приховано {{GENDER:$2|змінив|змінила}} видимість для {{PLURAL:$5|1=$5 запису|$5 записів}} журналу на $3: $4',
'logentry-suppress-revision' => '$1 приховано {{GENDER:$2|змінив|змінила}} видимість для {{PLURAL:$5 версії|$5 версій}} на сторінці $3: $4',
'logentry-suppress-event-legacy' => '$1 приховано {{GENDER:$2|змінив|змінила}} видимість записів журналу $3',
'logentry-suppress-revision-legacy' => '$1 приховано {{GENDER:$2|змінив|змінила}} видимість версій на сторінці $3',
'api-error-badaccess-groups' => 'Вам не дозволено завантажувати файли до цього вікіпроекту.',
'api-error-badtoken' => 'Внутрішня помилка: некоректний токен.',
'api-error-copyuploaddisabled' => 'На цьому сервері вимкнене завантаження за URL-адресою.',
-'api-error-duplicate' => 'Вже {{PLURAL:$1|існує [$2 інший файл]|існують [$2 інші файли]}} з таким самим вмістом.',
-'api-error-duplicate-archive' => 'Раніше на сайті вже {{PLURAL:$1|був [$2 файл]|були [$2 файли]}} з ідентичним вмістом, але {{PLURAL:$1|був|були}} вилучені.',
-'api-error-duplicate-archive-popup-title' => 'Дублікати {{PLURAL:$1|файла|файлів}}, які вже були вилучені',
-'api-error-duplicate-popup-title' => 'Дублікат {{PLURAL:$1| файлу|файлів}}',
+'api-error-duplicate' => 'Вже {{PLURAL:$1|1=існує [$2 інший файл]|існують [$2 інші файли]}} з таким самим вмістом.',
+'api-error-duplicate-archive' => 'Раніше на сайті вже {{PLURAL:$1|1=був [$2 файл]|були [$2 файли]}} з ідентичним вмістом, але {{PLURAL:$1|1=його|їх}} вилучили.',
+'api-error-duplicate-archive-popup-title' => 'Дублікати {{PLURAL:$1|1=файла|файлів}}, які вже були вилучені',
+'api-error-duplicate-popup-title' => 'Дублікат {{PLURAL:$1|1=файлу|файлів}}',
'api-error-empty-file' => 'Файл, який ви надіслали, порожній.',
'api-error-emptypage' => 'Створення нової порожньої сторінки неприпустиме.',
'api-error-fetchfileerror' => 'Внутрішня помилка: щось пішло не так під час отримання файлу.',
'api-error-file-too-large' => 'Файл, який ви надіслали, завеликий.',
'api-error-filename-tooshort' => 'Назва файлу занадто коротка.',
'api-error-filetype-banned' => 'Цей тип файлів заборонений.',
-'api-error-filetype-banned-type' => '$1 — {{PLURAL:$4|недозволений тип файлів|недозволені типи файлів}}. {{PLURAL:$3|Дозволений тип файлів|Дозволені типи файлів}}: $2.',
+'api-error-filetype-banned-type' => '$1 — {{PLURAL:$4|1=недозволений тип файлів|недозволені типи файлів}}. {{PLURAL:$3|1=Дозволений тип файлів|Дозволені типи файлів}}: $2.',
'api-error-filetype-missing' => 'У цього файла відсутнє розширення.',
'api-error-hookaborted' => 'Зміну, що Ви намагалися зробити, відкинуто обробником.',
'api-error-http' => 'Внутрішня помилка: Не вдається підключитися до сервера.',
'api-error-overwrite' => 'Заміну існуючого файлу не дозволено.',
'api-error-stashfailed' => 'Внутрішня помилка: сервер не зміг зберегти тимчасовий файл.',
'api-error-publishfailed' => 'Внутрішня помилка: сервер не зміг опублікувати тимчасовий файл.',
+'api-error-stasherror' => 'Сталася помилка при завантаженні файлу у сховище.',
'api-error-timeout' => 'Сервер не відповідає протягом очікуваного часу.',
'api-error-unclassified' => 'Сталася невідома помилка.',
'api-error-unknown-code' => 'Невідома помилка: «$1»',
'duration-millennia' => '$1 {{PLURAL:$1|тисячоліття|тисячоліття|тисячоліть}}',
# Image rotation
-'rotate-comment' => 'Зображення повернуте на $1 {{PLURAL:$1|градус|градусів}} за годинниковою стрілкою',
+'rotate-comment' => 'Зображення повернуте на $1 {{PLURAL:$1|1=градус|градуси|градусів}} за годинниковою стрілкою',
# Limit report
'limitreport-title' => 'Аналізатор профілювання даних:',
'expand_templates_generate_rawhtml' => 'Показати сирий HTML',
'expand_templates_preview' => 'Попередній перегляд',
+# Unknown messages
+'createaccount-hook-aborted' => ' $1',
+'uploadinvalidxml' => 'Не вдалося проаналізувати XML у завантаженому файлі.',
);
* @author Rachitrali
* @author Reedy
* @author Tahir mq
+ * @author Wamiq
* @author Wisesabre
* @author ZxxZxxZ
* @author לערי ריינהארט
$messages = array(
# User preference toggles
'tog-underline' => 'ربط کی خط کشیدگی:',
-'tog-justify' => 'سطور کی برابری',
-'tog-hideminor' => 'حالیہ تبدیلیوں میں معمولی ترمیمات چُھپاؤ',
-'tog-hidepatrolled' => 'حالیہ تبدیلیوں میں گشتی ترمیمات چُھپاؤ',
-'tog-newpageshidepatrolled' => 'جدید صفحاتی فہرست میں گشتی صفحات چُھپاؤ',
-'tog-extendwatchlist' => 'زیرِنظرفہرست کو پھیلاؤ تاکہ اِس میں تمام ترمیمات نظر آئیں، نہ کہ صرف حالیہ ترین',
-'tog-usenewrc' => 'افزودہ حالیہ تبدیلیاں استعمال کریں (JavaScript درکار ہوگا)',
-'tog-numberheadings' => 'سرخیوں کو خود نمبر دو',
-'tog-showtoolbar' => 'تدوینی اوزاردان دکھاؤ ( JavaScript چاہئے)',
-'tog-editondblclick' => 'طقین پر صفحات کی ترمیم (JavaScript چاہئے)',
-'tog-editsection' => '[ترمیم] روابط کے ذریعے سطری ترمیم کاری فعال کرو',
+'tog-hideminor' => 'حالیہ تبدیلیوں میں معمولی ترامیم چھپائیے',
+'tog-hidepatrolled' => 'حالیہ تبدیلیوں میں گشتی ترامیم چھپائیے',
+'tog-newpageshidepatrolled' => 'جدید صفحات کی فہرست میں گشتی صفحات چھپائیے',
+'tog-extendwatchlist' => 'زیر نظر فہرست کی توسیع کیجئے تاکہ تمام تبدیلیاں، نہ کہ صرف سب سے حالیہ تداوین دیکھی کجا سکیں',
+'tog-usenewrc' => 'حالیہ تبدیلیوں میں اور زیر نظر فہرست میں تبدیلیوں کو بلحاظ صفحہ گروہ بند کیجئے',
+'tog-numberheadings' => 'سرخیوں کو خودکار نمبر دیجئے',
+'tog-showtoolbar' => 'تدوینی اوزاردان دکھائیے',
+'tog-editondblclick' => 'طقین پر صفحات کی ترمیم کیجئے',
'tog-editsectiononrightclick' => 'سطری عنوانات پر دایاں طق کے ذریعے سطری ترمیم کاری فعال بناؤ',
-'tog-showtoc' => 'فہرستِ مندرجات دکھاؤ (3 سے زیادہ سرخیوں والے صفحات کیلئے)',
'tog-rememberpassword' => 'اِس متصفح پر میرے داخلِ نوشتگی معلومات یاد رکھو (زیادہ سے زیادہ $1 {{PLURAL:$1|دِن|ایام}} کیلئے)',
-'tog-watchcreations' => 'میرے مرتب شدہ صفحات کو میری زیرِنظرفہرست میں شامل کیا کرو',
-'tog-watchdefault' => 'Ù\85Û\8cرÛ\92 ترÙ\85Û\8cÙ\85 شدÛ\81 صÙ\81Øات Ú©Ù\88 Ù\85Û\8cرÛ\8c زÛ\8cرÙ\90Ù\86ظرÙ\81Û\81رست Ù\85Û\8cÚº شاÙ\85Ù\84 Ú©Û\8cا کرÙ\88',
-'tog-watchmoves' => 'میں جن صفحات کو منتقل کرتا ہوں، اُن کو میری زیرِنظرفہرست میں شامل کیا کرو',
-'tog-watchdeletion' => 'میں جن صفحات کو حذف کروں، اُن کو میری زیرِنظرفہرست میں شامل کیا کرو',
+'tog-watchcreations' => 'میرے تخلیق کردہ صفحات اور میری زبر اثقال کردہ ملفات کو میری زیر نظر فہرست میں شامل کیا کیجئے',
+'tog-watchdefault' => 'Ù\85Û\8cرÛ\92 تدÙ\88Û\8cÙ\86 شدÛ\81 صÙ\81Øات اÙ\88ر Ù\85Ù\84Ù\81ات Ú©Ù\88 Ù\85Û\8cرÛ\8c زÛ\8cر Ù\86ظر Ù\81Û\81رست Ù\85Û\8cÚº شاÙ\85Ù\84 Ú©Û\8cا Ú©Û\8cجئÛ\92',
+'tog-watchmoves' => 'میرے منتقل کردہ صفحات اور ملفات کو میری زیر نظر فہرست میں شامل کیا کیجئے',
+'tog-watchdeletion' => 'میرے حذف کردہ صفحات اور ملفات کو میری زیر نظر فہرست میں شامل کیا کیجئے',
'tog-minordefault' => 'تمام ترمیمات کو ہمیشہ بطورِ معمولی ترمیم نشانزد کیا کرو',
'tog-previewontop' => 'تدوینی خانہ سے پہلے نمائش دکھاؤ',
'tog-previewonfirst' => 'پہلی ترمیم پر نمائش دکھاؤ',
-'tog-enotifwatchlistpages' => 'جب Ù\85Û\8cرÛ\8c زÛ\8cرÙ\90Ù\86ظرÙ\81Û\81رست پر Ú©Ù\88ئÛ\8c صÙ\81ØÛ\81 Ù\85Û\8cÚº تبدÛ\8cÙ\84Û\8c Ù\88اÙ\82ع Û\81Ù\88 تÙ\88 Ù\85جھÛ\92 برÙ\82Û\8c Ú\88اک بھÛ\8cجÙ\88',
+'tog-enotifwatchlistpages' => 'جب Ù\85Û\8cرÛ\92 زÛ\8cر Ù\86ظر صÙ\81ØÛ\81 Û\8cا Ù\85Ù\84Ù\81 Ù\85Û\8cÚº Ú©Ù\88ئÛ\8c تبدÛ\8cÙ\84Û\8c Û\81Ù\88 تÙ\88 Ù\85جھÛ\92 برÙ\82Û\8c Ú\88اک بھÛ\8cجئÛ\92',
'tog-enotifusertalkpages' => 'جب میرا تبادلۂ خیال صفحہ میں تبدیلی واقع ہو تو مجھے برقی ڈاک بھیجو',
-'tog-enotifminoredits' => 'صفحات میں معمولی ترمیمات کے بارے میں بھی مجھے برقی ڈاک بھیجو',
+'tog-enotifminoredits' => 'مجھے صفحات اور ملفات میں کی جانے والی معمولی ترامیم کی خبر بھی بذریعہ برقی ڈاک دیجئے',
'tog-enotifrevealaddr' => 'خبرداری برقی خطوط میں میرا برقی ڈاک پتہ ظاہر کرو',
'tog-shownumberswatching' => 'دیکھنے والے صارفین کی تعداد دکھاؤ',
'tog-oldsig' => 'موجودہ دستخط:',
'tog-fancysig' => '(سادہ دستخط بلا خودکار ربط)',
-'tog-uselivepreview' => 'براہِ راست نمائش استعمال کرو (JavaScript چاہئے نیز تجرباتی)',
+'tog-uselivepreview' => 'براہ راست نمائش (آزمائشی) استعمال کیجئے',
'tog-forceeditsummary' => 'جب میں ترمیمی خلاصہ خالی چھوڑوں تو مجھے آگاہ کرو',
'tog-watchlisthideown' => 'زیرِنظرفہرست سے میری ترمیمات چھپاؤ',
'tog-watchlisthidebots' => 'زیرِنظرفہرست میں سے روبالی ترمیمات چھپاؤ',
'tog-ccmeonemails' => 'دیگر صارفین کو ارسال کردہ برقی خطوط کی نقول مجھے ارسال کریں۔',
'tog-diffonly' => 'مختلفات کے نیچے صفحے کی مشمولات مت دکھاؤ',
'tog-showhiddencats' => 'پوشیدہ زمرہ جات دکھاؤ',
+'tog-norollbackdiff' => 'استرجع کی انجام دہی کے بعد فرق ترک کیجئے',
'tog-useeditwarning' => 'خبردار مجھے جب میں غیر محفوظ کردہ تبدیلیوں کے ساتھ ایک ترمیم کے صفحے کو چھوڑ دو',
+'tog-prefershttps' => 'دخول نوشتہ کے دوران محفوظ کنکشن استعمال کیجئے',
'underline-always' => 'ہمیشہ',
'underline-never' => 'کبھی نہیں',
-'underline-default' => 'متصفح کا طے شدہ',
+'underline-default' => 'جلد یا متصفح کا ڈیفالٹ',
# Font style option in Special:Preferences
'editfont-style' => 'خانۂ تدوین کا اندازِ تحریر:',
'oct' => 'اکتوبر',
'nov' => 'نومبر',
'dec' => 'دسمبر',
+'january-date' => '$1 جنوری',
+'february-date' => '$1 فروری',
+'march-date' => '$1 مارچ',
+'april-date' => '$1 اپریل',
+'may-date' => '$1 مئی',
+'june-date' => '$1 جون',
+'july-date' => '$1 جولائی',
+'august-date' => '$1 اگست',
+'september-date' => '$1 ستمبر',
+'october-date' => '$1 اکتوبر',
+'november-date' => '$1 نومبر',
+'december-date' => '$1 دسمبر',
# Categories related messages
'pagecategories' => '{{PLURAL:$1|زمرہ|زمرہ جات}}',
'hidden-category-category' => 'پوشیدہ زمرہ جات',
'category-subcat-count' => '{{PLURAL:$2|اِس زمرہ میں صرف درج ذیل ذیلی زمرہ ہے.|اِس زمرہ میں درج ذیل {{PLURAL:$1|ذیلی زمرہ|$1 ذیلی زمرہ جات}}, کل $2 میں سے.}}',
'category-subcat-count-limited' => 'اِس زمرہ میں درج ذیل {{PLURAL:$1|ذیلی زمرہ ہے|$1 ذیلی زمرہ جات ہیں}}.',
+'category-article-count' => '{{PLURAL:$2|اس زمرہ میں صرف یہ درج ذیل صفحہ مشمول ہے۔|اس زمرہ کے کل $2 صفحات میں سے $1 {{PLURAL:$1|صفحہ|صفحات}} درج ذیل {{PLURAL:$1|ہے|ہیں}}۔',
+'category-article-count-limited' => 'یہ درج ذیل {{PLURAL:$1|صفحہ|$1 صفحات}} اس زمرہ میں مشمول {{PLURAL:$1|ہے|ہیں}}۔',
'listingcontinuesabbrev' => '۔جاری',
'noindex-category' => 'غیر مندرج صفحات',
'unwatch' => 'زیرنظرمنسوخ',
'watchlist-details' => 'آپ کی زیرِنظرفہرست پر {{PLURAL:$1|$1 صفحہ ہے|$1 صفحات ہیں}}، اِس میں تبادلۂ خیال صفحات کی تعداد شامل نہیں.',
'watchlistcontains' => 'آپ کی زیرنظرفہرست میں $1 صفحات ہیں۔',
-'wlnote' => 'نیچےآخری $1 تبدیلیاں ہیں جو کے پیچھلے <b>$2</b> گھنٹوں میں کی گئیں۔',
'wlshowlast' => 'دکھائیں آخری $1 گھنٹے $2 دن $3',
'watchlist-options' => 'اختیارات برائے زیرِنظرفہرست',
$messages = array(
# User preference toggles
'tog-underline' => 'Havolalarning tagiga chizish:',
-'tog-justify' => 'Matnni sahifaning eni boʻyicha tekislash',
'tog-hideminor' => 'Yangi oʻzgarishlar roʻyxatida kichik tahrirlarni yashirish',
'tog-hidepatrolled' => 'Yangi oʻzgarishlar roʻyxatida tekshirilgan tahrirlarni yashirish',
'tog-newpageshidepatrolled' => 'Yangi sahifalar roʻyxatida tekshirilgan sahifalarni yashirish',
'tog-numberheadings' => 'Sarlavhalarni avtomatik raqamlash',
'tog-showtoolbar' => 'Tahrirlash asboblari joylashgan yoʻlakchani koʻrsatish (JavaScript orqali)',
'tog-editondblclick' => 'Sichqoncha tugmasini ikki marta bosish orqali tahrirlashni boshlash',
-'tog-editsection' => '[tahrir] havolasini har bir boʻlim boshida koʻrsatish',
'tog-editsectiononrightclick' => 'Boʻlim sarlavhasiga sichqonchaning oʻng tugmasi bilan bosib tahrirlashni boshlash',
-'tog-showtoc' => 'Mundarijani koʻrsatish (3 tadan koʻproq sarlavha bor sahifalarda)',
'tog-rememberpassword' => 'Hisob ma’lumotlarim ushbu brauzerda eslab qolinsin (ko‘pi bilan $1 kunga)',
'tog-watchcreations' => 'Men yaratgan sahifalarni va yuklagan fayllarni kuzatuv roʻyxatimga qoʻsh',
'tog-watchdefault' => 'Men tahrirlagan sahifa va fayllarni kuzatuv roʻyxatimga qoʻsh',
'tog-watchmoves' => 'Men koʻchirgan sahifa va fayllarni kuzatuv roʻyxatimga qoʻsh',
'tog-watchdeletion' => 'Men oʻchirgan sahifa va fayllarni kuzatuv roʻyxatimga qoʻsh',
'tog-minordefault' => 'Sukut boʻyicha barcha tahrirlarimni «kichik tahrir» etib belgilash',
-'tog-previewontop' => 'Tahrir oynasi tepasida koʻrib chiqish',
-'tog-previewonfirst' => 'Tahrirlashga oʻtiboq koʻrib chiqishni boshlash',
+'tog-previewontop' => 'Koʻrib chiqish imkoniyati tahrir oynasi tepasida boʻlsin',
+'tog-previewonfirst' => 'Tahrirlashga oʻtgandayoq koʻrib chiqishni boshlash',
'tog-enotifwatchlistpages' => 'Kuzatuv roʻyxatimdagi sahifa yoki fayllar oʻzgartirilsa, menga bu haqda xat yuborilsin',
'tog-enotifusertalkpages' => 'Munozara sahifam oʻzgartirilsa, menga bu haqda xat yuborilsin',
'tog-enotifminoredits' => 'Kichik tahrir qilinsa ham e-pochtamga bu haqda xat yuborilsin',
'unprotectthispage' => 'Ushbu sahifaning himoyasini oʻzgaritish',
'newpage' => 'Yangi sahifa',
'talkpage' => 'Bu sahifa haqida munozara',
-'talkpagelinktext' => 'Munozara',
+'talkpagelinktext' => 'munozara',
'specialpage' => 'Maxsus sahifa',
'personaltools' => 'Shaxsiy uskunalar',
'postcomment' => 'Yangi boʻlim',
'actionthrottled' => 'Tezlik cheklovi',
'protectedpagetext' => 'Bu sahifa tahrirlash va boshqa oʻzgartirishlar kiritishdan himoyalangan.',
'viewsourcetext' => 'Siz bu sahifaning manbasini koʻrishingiz va uni nusxasini olishingiz mumkin:',
+'protectedinterface' => 'Ushbu sahifada dasturiy taʼminot interfeysi xabari mavjud. Bezoriliklardan saqlash uchun uni oʻzgartirish taʼqiqlangan.
+Ushbu xabar tarjimasini qoʻshish yoki oʻzgartirish uchun, iltimos, MediaWikining [//translatewiki.net/ translatewiki.net] mahalliylashtirish saytidan foydalaning.',
'editinginterface' => "'''Diqqat:''' Siz dasturiy taʼminot interfeysi matni mavjud boʻlgan sahifani tahrirlamoqdasiz.
Uning oʻzgartirilishi ushbu vikidagi boshqa foydalanuvchilar uchun ham interfeys oʻzgarishiga olib keladi.
Ushbu xabar tarjimasini qoʻshish yoki oʻzgartirish uchun, iltimos, MediaWikining [//translatewiki.net/ translatewiki.net] mahalliylashtirish saytidan foydalaning.",
'virus-unknownscanner' => "noma'lum antivirus:",
# Login and logout pages
-'logouttext' => "'''Siz saytdan muvaffaqiyatli chiqdingiz.'''
+'logouttext' => '<strong>Siz saytdan muvaffaqiyatli chiqdingiz.</strong>
-{{SITENAME}} saytidan anonim holda foydalanishda davom etishindiz mumkin. Yoki siz yana hozirgi yoki boshqa foydalanuvchi nomi bilan qaytadan tizimga kirishingiz mumkin.
-Shuni e'tiborga olingki, ayrim sahifalar siz brauzeringiz keshini tozalamaguningizga qadar xuddi tizimga kirganingizdagidek ko'rinishda davom etaverishi mumkin.",
+Brauzeringiz keshini tozalamaguningizgacha ayrim sahifalar tizimga kirganingizdek koʻrinishda davom etaverishi mumkin.',
'yourname' => 'Foydalanuvchi nomi:',
'userlogin-yourname' => 'Foydalanuvchi nomi',
'userlogin-yourname-ph' => 'Foydalanuvchi nomingizni kiriting',
+'createacct-another-username-ph' => 'Foydalanuvchi nomingizni kiriting',
'yourpassword' => 'Maxfiy soʻz:',
+'userlogin-yourpassword' => 'Maxfiy soʻz',
'userlogin-yourpassword-ph' => 'Maxfiy soʻzni kiriting',
'createacct-yourpassword-ph' => 'Maxfiy soʻzni kiriting',
'yourpasswordagain' => 'Maxfiy so‘zni qayta kiriting:',
'createacct-yourpasswordagain' => 'Maxfiy soʻzni tasdiqlang',
'createacct-yourpasswordagain-ph' => 'Maxfiy soʻzni yana bir bor kiriting',
'remembermypassword' => 'Hisob ma’lumotlarim ushbu brauzerda eslab qolinsin (ko‘pi bilan $1 {{PLURAL:$1|kunga|kunga}})',
-'userlogin-remembermypassword' => 'Esda saqla',
+'userlogin-remembermypassword' => 'Kirgan deb esda saqla',
'userlogin-signwithsecure' => 'Himoyalangan holda kirish',
'yourdomainname' => 'Sizning domeningiz:',
'password-change-forbidden' => 'Siz bu vikida maxfiy soʻzni oʻzgartira olmaysiz.',
'gotaccount' => "Hisobingiz bormi? '''$1'''.",
'gotaccountlink' => 'Kirish',
'userlogin-resetlink' => 'Kirish maʻlumotlaringiz esdan chiqdimi?',
-'userlogin-resetpassword-link' => 'Maxfiy soʻzni yangilash',
+'userlogin-resetpassword-link' => 'Unutib qoʻydingizmi?',
'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Kirish uchun yordam]]',
+'userlogin-loggedin' => 'Siz {{GENDER:$1|$1}} nomi bilan kirgansiz.
+Boshqa hisob raqami orqali kirish uchun quyidagi formadan foydalaning.',
+'userlogin-createanother' => 'Boshqa hisob yaratish',
'createacct-join' => 'Maʼlumotlaringizni quyiga yozing',
+'createacct-another-join' => 'Yangi hisob yozuvi maʼlumotlarini quyida koʻrsating.',
'createacct-emailoptional' => 'Elektron pochta manzili (majburiy emas)',
'createacct-email-ph' => 'Elektron pochtangiz manzilini kiriting',
-'createaccountmail' => "E-mail orqali maxfiy so'zni jo'natish",
+'createacct-another-email-ph' => 'Elektron pochta manzilini kiriting',
+'createaccountmail' => 'Tasodifan tanlab beriladigan vaqtinchalik maxfiy soʻzdan foydalanish (elektron pochta manzilingizga joʻnatiladi)',
'createaccountreason' => 'Sabab:',
'createacct-captcha' => 'Xavfsizlik tekshiruvi',
'createacct-imgcaptcha-ph' => 'Yuqoridagi yozuvni bu yerga kiriting',
'createacct-submit' => 'Hisob yaratish',
+'createacct-another-submit' => 'Boshqa hisob yaratish',
'createacct-benefit-heading' => '{{SITENAME}} Sizga oʻxshagan odamlar tomonidan yaratiladi',
'createacct-benefit-body1' => 'tahrirlar soni',
'createacct-benefit-body2' => 'maqolalar soni',
'login-userblocked' => 'Bu foydalanuvchi chetlatilgan. Tizimga kirishga ruxsat yoʻq.',
'wrongpassword' => 'Kiritgan mahfiy soʻzingiz notoʻgʻri. Iltimos, qaytadan kiritib koʻring.',
'wrongpasswordempty' => 'Maxfiy soʻz koʻrsatilmagan. Qaytadan urinib koʻring.',
-'mailmypassword' => 'Yangi maxfiy soʻzni elektron pochta orqali joʻnatish',
+'mailmypassword' => 'Maxfiy soʻzni yangilash',
'passwordremindertitle' => "{{SITENAME}} uchun vaqtinchalik yangi maxfiy so'z",
'emailauthenticated' => 'Sizning elektron pochta manzilingiz $2, $3 da tasdiqlangan.',
'emailconfirmlink' => 'Sizning elektron pochta manzilingizni tasdiqlash',
# Change password dialog
'changepassword' => 'Maxfiy soʻzni oʻzgartirish',
-'resetpass_header' => "Hisob mahfiy so'zini o'zgartirish",
+'resetpass_header' => 'Maxfiy soʻzni oʻzgartirish',
'oldpassword' => "Eski mahfiy so'z:",
'newpassword' => "Yangi mahfiy so'z:",
'retypenew' => 'Yangi mahfiy soʻzni qayta tering:',
'resetpass_submit' => "Maxfiy so'zni o'rnatish va kirish",
+'changepassword-success' => 'Maxfiy soʻzni oʻzgartirish muvaffaqiyatli oʻtdi!',
'resetpass_forbidden' => "Maxfiy so'z o'zgartirilishi mumkin emas",
'resetpass-submit-loggedin' => 'Maxfiy soʻzni oʻzgartirish',
'resetpass-submit-cancel' => 'Bekor',
# Special:PasswordReset
'passwordreset' => 'Maxfiy soʻzni yangilash',
'passwordreset-text-one' => 'Mahfiy soʻzni tashlash uchun ushbu oynalarni toʻltiring.',
-'passwordreset-text-many' => '{{PLURAL:$1|Maxfiy soʻzni yangilash uchun quyidagi oynalardan birini toʻldiring.}}',
+'passwordreset-text-many' => '{{PLURAL:$1|Quyidagi oynalardan birini toʻldirsangiz, elektron pochtangizga vaqtinchalik maxfiy soʻz joʻnatiladi.}}',
'passwordreset-legend' => 'Maxfiy soʻzni yangilash',
'passwordreset-username' => 'Foydalanuvchi nomi:',
'passwordreset-domain' => 'Domen:',
Vaqtinchalik maxfiy so'z: $2",
# Special:ChangeEmail
-'changeemail' => "Elektron pochta manzilini o'zgartirish",
+'changeemail' => 'Elektron pochta manzilini oʻzgartirish',
'changeemail-header' => "Elektron pochta manzilini o'zgaritish",
'changeemail-oldemail' => 'Joriy elektron pochta manzili',
'changeemail-newemail' => 'Elektron pochtaning yangi manzili',
'headline_tip' => '2-darajadagi sarlavha',
'nowiki_sample' => 'Bu yerga formatlash zarur boʻlmagan matnni qoʻying',
'nowiki_tip' => "Viki-formatlashga e'tibor qilmaslik",
-'image_tip' => 'Qoʻshilgan tasvir',
+'image_tip' => 'Fayl oʻrnatish',
'media_tip' => 'Faylga havola',
'sig_tip' => 'Imzoingiz va sana',
'hr_tip' => "Yotiq (gorizontal) chiziq (ko'p ishlatmang)",
'watchthis' => 'Sahifani kuzatish',
'savearticle' => 'Saqlash',
'preview' => 'Ko‘rib chiqish',
-'showpreview' => 'Ko‘rib chiqish',
+'showpreview' => 'Koʻrib chiqish',
'showlivepreview' => 'Tezkor koʻrib chiqish',
'showdiff' => 'O‘zgarishlarni ko‘rsatish',
'anoneditwarning' => "'''Diqqat:''' Siz tizimga kirmagansiz. Ushbu sahifa tarixida Sizning IP manzilingiz yozib qolinadi.",
'last' => 'oxirgi',
'page_first' => 'birinchi',
'page_last' => 'oxirgi',
-'histlegend' => 'Farqlar: solishtirish uchun kerakli radiobokslarni belgilang va pastdagi tugmani yoki Enterni bosing.<br />
-Bu yerda: (joriy) = hozirgi koʻrinish bilan farq,
-(oxirgi) = avvalgi koʻrinish bilan farq, k = kichkina tahrir.',
+'histlegend' => "Farqlarni tanlash: solishtirish uchun kerakli radiobokslarni belgilang va '''{{int:compare-submit}}''' tugmasini bosing.<br />
+Bu yerda: '''({{int:cur}})''' = hozirgi koʻrinish bilan farqi, '''({{int:last}})''' = avvalgi koʻrinish bilan farqi, '''{{int:minoreditletter}}''' = kichkina tahrir.",
'history-fieldset-title' => 'Tarixni koʻrish',
-'history-show-deleted' => 'Faqat o‘chirilganlari',
+'history-show-deleted' => 'Faqat yoʻqotilganlari',
'histfirst' => 'Eng avvalgi',
'histlast' => 'Eng soʻnggi',
'historysize' => '({{PLURAL:$1|1 bayt|$1 bayt}})',
'compareselectedversions' => 'Tanlangan versiyalarni solishtir',
'showhideselectedversions' => 'Tanlangan versiyalarni koʻrsatish/yashirish',
'editundo' => 'qaytarish',
-'diff-multi' => '({{PLURAL:$2|Bitta foydalanuvchining|$2 ta foydalanuvchining}} {{PLURAL:$1|bitta oraliq versiyasi|$1 ta oraliq versiyalari}} koʻrsatilmadi)',
# Search results
'searchresults' => 'Qidiruv natijalari',
'shown-title' => 'Sahifada $1 ta natija koʻrsatish',
'viewprevnext' => 'Koʻrish ($1 {{int:pipe-separator}} $2) ($3).',
'searchmenu-exists' => "'''Ushbu vikida \"[[:\$1]]\" nomli sahifa mavjud.'''",
-'searchmenu-new' => "'''Ushbu vikida \"[[:\$1]]\" sahifasini yarat!'''",
-'searchprofile-articles' => 'Asosiy sahifalar',
+'searchmenu-new' => '<strong>\'\'\'Ushbu vikida "[[:$1]]" sahifasini yarat!</strong> {{PLURAL:$2|0=|Shuningdek qidiruvingiz orqali topilgan sahifani qarang.|Shuningdek topilgan qidiruv natijalarini qarang.}}',
+'searchprofile-articles' => 'Maqolalar',
'searchprofile-project' => 'Yordam va loyiha sahifalari',
'searchprofile-images' => 'Multimedia',
-'searchprofile-everything' => 'Har yerda',
-'searchprofile-advanced' => 'Kengaytirilgan',
+'searchprofile-everything' => 'Hamma joyda',
+'searchprofile-advanced' => 'Tanlangan joyda',
'searchprofile-articles-tooltip' => '$1da qidirish',
'searchprofile-project-tooltip' => '$1da qidirish',
-'searchprofile-images-tooltip' => 'Fayllarni qidir',
+'searchprofile-images-tooltip' => 'Fayllarni qidirish',
'searchprofile-everything-tooltip' => 'Barcha sahifalardan qidirish (munozara sahifalarinidan ham)',
'searchprofile-advanced-tooltip' => 'Belgilangan nomfazolardan qidirish',
'search-result-size' => '$1 ({{PLURAL:$2|1 ta soʻz|$2 ta soʻz}})',
'showingresultsheader' => "$4 uchun {{PLURAL:$5|'''$3'''dan '''$1''' natija|'''$3'''dan '''$1 - $2''' natijalar}}",
'search-nonefound' => 'Talabga javob beradigan natija topilmadi.',
'powersearch-legend' => 'Kengaytirilgan qidiruv',
-'powersearch-ns' => 'Bu nom-fazolarda izla:',
+'powersearch-ns' => 'Quyidagi nomfazolardan qidir:',
'powersearch-redir' => 'Qayta yoʻnaltirishlarni koʻrsatish',
'powersearch-togglelabel' => 'Belgilash:',
'powersearch-toggleall' => 'Hammasini',
'rows' => 'Qatorlar soni:',
'columns' => 'Ustunlar soni:',
'searchresultshead' => 'Qidiruv',
-'resultsperpage' => 'Sahifaga topilgan yozuvlar miqdori',
'stub-threshold' => '<a href="#" class="stub">Chala maqolalarga ishorat</a> keltirish uchun pastki chegara (baytlarda):',
'stub-threshold-disabled' => 'Oʻchirib qoʻyilgan',
'recentchangesdays' => 'Necha kunlik tahrirlar koʻrsatiladi:',
# User rights log
'rightslog' => 'Foydalanuvchi huquqlari koʻrsatilgan qaydlar',
+'rightslogtext' => 'Foydalanuvchi huquqlarini oʻzgartirish qaydlari.',
# Associated actions - in the sentence "You do not have permission to X"
'action-edit' => 'ushbu sahifani tahrirlash',
'nchanges' => '$1 {{PLURAL:$1|oʻzgarish|oʻzgarishlar}}',
'recentchanges' => 'Yangi oʻzgarishlar',
'recentchanges-legend' => 'Yangi oʻzgarishlar moslamalari',
-'recentchanges-summary' => 'Bu sahifada siz oxirgi oʻzgarishlarni koʻrishingiz mumkin',
+'recentchanges-summary' => 'Bu sahifada siz {{SITENAME}}da sodir boʻlgan soʻnggi oʻzgarishlarni koʻrishingiz mumkin.',
+'recentchanges-noresult' => 'Koʻrsatilgan muddatga va shartlarga oid oʻzgarishlar topilmadi.',
'recentchanges-feed-description' => 'Vikida mazkur oqimdagi oxirgi oʻzgarishlarni kuzatish',
-'recentchanges-label-newpage' => 'Bu tahrir orqali yangi sahifa yaratildi',
-'recentchanges-label-minor' => 'Bu kichik tahrir',
-'recentchanges-label-bot' => 'Bu tahrirni bot bajardi',
+'recentchanges-label-newpage' => 'Bu tahrir orqali yangi sahifa yaratilgan',
+'recentchanges-label-minor' => 'Bu tahrir kichik deb belgilangan',
+'recentchanges-label-bot' => 'Bu tahrirni bot bajargan',
'recentchanges-label-unpatrolled' => 'Bu tahrir hali tekshirilmagan',
+'recentchanges-label-plusminus' => 'vazni qanchaga oʻzgargani (bayt)',
+'recentchanges-legend-heading' => "'''Izoh:'''",
+'recentchanges-legend-newpage' => '([[Special:NewPages|alohida roʻyxat]])',
'rcnotefrom' => "Quyida <strong>$2</strong> dan (<strong>$1</strong> gacha) bo'lgan o'zgarishlar keltirilgan.",
'rclistfrom' => '$1 dan boshlab yangi oʻzgarishlarni koʻrsat.',
'rcshowhideminor' => 'Kichik tahrirlarni $1',
'diff' => 'farq',
'hist' => 'tarix',
'hide' => 'yashir',
-'show' => 'Koʻrsat',
+'show' => 'koʻrsat',
'minoreditletter' => 'k',
'newpageletter' => 'Y',
'boteditletter' => 'b',
'upload' => 'Fayl yuklash',
'uploadbtn' => 'Fayl yuklash',
'uploaderror' => 'Yuklashda xatolik',
+'upload-recreate-warning' => '<strong>Diqqat: bunday nomli fayl avval yoʻqotilgan yoki koʻchirilgan.</strong>
+
+Quyida bu sahifaga oid yoʻqotish va koʻchirish qaydlari keltirilgan:',
+'upload-permitted' => 'Yuklash mumkin fayl turlari: $1.',
'uploadlogpage' => 'Yuklash qaydlari',
'filename' => 'Fayl nomi',
'filedesc' => 'Qisqa izoh',
'filestatus' => 'Tarqatish shartlari:',
'filesource' => 'Manba:',
'uploadedfiles' => 'Yuklangan fayllar',
+'ignorewarnings' => 'Ogohlantirishlarga eʼtibor qilma',
'uploadedimage' => '"[[$1]]"ni yukladi',
'overwroteimage' => '"[[$1]]"ning yangi versiyasini yukladi',
+'upload-source' => 'Yuklanayotgan fayl',
+'sourcefilename' => 'Fayl nomi:',
+'destfilename' => 'Fayl nomi:',
+'upload-maxfilesize' => 'Faylning maksimal oʻlchami: $1',
+'upload-description' => 'Fayl tavsifi',
+'upload-options' => 'Yuklash moslamalari',
+'watchthisupload' => 'Bu faylni kuzatish',
'license' => 'Litsenziyalash:',
'license-header' => 'Litsenziyalash',
+'upload_source_file' => '(kompyuteringizdagi fayl)',
# Special:ListFiles
+'listfiles-summary' => 'Ushbu maxsus sahifada barcha yuklangan fayllar koʻrsatilgan.',
'imgfile' => 'fayl',
'listfiles' => 'Fayllar roʻyxati',
'listfiles_thumb' => 'Miniatura',
'uncategorizedcategories' => 'Turkumlashtirilmagan turkumlar',
'uncategorizedimages' => 'Turkumlashtirilmagan fayllar',
'uncategorizedtemplates' => 'Turkumlashtirilmagan andozalar',
-'unusedcategories' => 'Ishlatilinmagan turkumlar',
+'unusedcategories' => 'Ishlatilmayotgan turkumlar',
'unusedimages' => 'Ishlatilinmagan fayllar',
'wantedcategories' => 'Talab qilinayotgan turkumlar',
'mostcategories' => 'Eng koʻp turkumli sahifalar',
# Special:Log
'specialloguserlabel' => 'Ijrochi:',
-'speciallogtitlelabel' => 'Moʻljal (nom yoki foydalanuvchi):',
+'speciallogtitlelabel' => 'Moʻljal (foydalanuvchi yoki sahifa nomi):',
'log' => 'Qaydlar',
'all-logs-page' => 'Barcha ochiq qaydlar',
-'logempty' => 'Qaydnomada mos keladigan yozuvlar mavjud emas.',
+'alllogstext' => "{{SITENAME}}dagi barcha jurnallar roʻyxati.
+Natijalarni jurnal nomi, foydalanuvchi nomi (harflar katta-kichikligi inobatga olinadi) yoki sahifa nomi boʻyicha saralashingiz mumkin.
+* Biror foydalanuvchi ''amalga oshirgan qaydni'', uning foydalanuvchi nomini \"Ijrochi\" oynasiga kiritib qidirish mumkin.
+* Biror foydalanuvchi yoki sahifaga ''nisbatan'' amalga oshirilgan qaydni, ularning nomini \"Moʻljal\" oynasiga kiritib qidirish mumkin.",
+'logempty' => 'Talabga mos yozuvlar mavjud emas.',
'log-title-wildcard' => 'Shu matndan boshlanuvchi sarlavhalarni izlash',
# Special:AllPages
# Special:Categories
'categories' => 'Turkumlar',
-'categoriespagetext' => 'The following {{PLURAL:$1|category contains|categories contain}} pages or media.
-[[Special:UnusedCategories|Unused categories]] are not shown here.
-Also see [[Special:WantedCategories|wanted categories]].',
+'categoriespagetext' => 'Quyidagi {{PLURAL:$1|turkumda|turkumlarda}} sahifa yoki media-fayllar mavjud.
+[[Special:UnusedCategories|Ishlatilmayotgan turkumlar]] bu yerda koʻrsatilmaydi.
+Shuningdek qarang: [[Special:WantedCategories|talab qilinayotgan turkumlar]].',
'categoriesfrom' => 'Quyidagidan boshlanuvchi turkumlarni koʻrsatish:',
'special-categories-sort-count' => 'miqdori bo‘yicha saralash',
'special-categories-sort-abc' => 'alifbo bo‘yicha saralash',
'activeusers-noresult' => 'Foydalanuvchilar topilmadi.',
# Special:ListGroupRights
-'listgrouprights' => 'Foydalanuvchilar guruhi huquqlari',
+'listgrouprights' => 'Foydalanuvchilar guruhlari roʻyxati',
+'listgrouprights-summary' => 'Har bir viki-loyihada boʻlgani kabi, Oʻzbekcha Vikipediyada ham foydalanuvchilar bir nechta guruhlarga boʻlingan boʻlib, quyida ularning roʻyxati va tegishli huquqlari keltirilgan. Alohida huquqlar haqida [[{{MediaWiki:Listgrouprights-helppage}}|qoʻshimcha maʼlumotlar]] boʻlishi mumkin.',
+'listgrouprights-key' => 'Izohlar:
+* <span class="listgrouprights-granted">Amaldagi huquqlar</span>
+* <span class="listgrouprights-revoked">Bekor qilingan huquqlar</span>',
'listgrouprights-group' => 'Guruh',
'listgrouprights-rights' => 'Huquqlar',
'listgrouprights-helppage' => 'Help:Guruhlar huquqlari',
'unwatchthispage' => "Kuzatuvni to'xtatish",
'notanarticle' => 'Maqola emas',
'watchlist-details' => 'Sizning kuzatuv roʻyxatingizda hozirda {{PLURAL:$1|bitta sahifa|$1ta sahifa}} mavjud (munozara sahifalarini hisobga olmaganda).',
-'wlnote' => "Below {{PLURAL:$1|is the last change|are the last '''$1''' changes}} in the last {{PLURAL:$2|hour|'''$2''' hours}}, as of $3, $4.",
-'wlshowlast' => 'Oxirgi $1 soatdagi $2 kundagi tahrirlarni ko‘rsatish. $3 tahrirlarni ko‘rsatish',
+'wlheader-showupdated' => "Siz oxirgi marta kirganingizdan keyin oʻzgartirilgan sahifalar '''qalin''' yozuv bilan ajratib koʻrsatilgan.",
+'wlshowlast' => 'Oxirgi $1 soatdagi $2 kundagi tahrirlarni koʻrsat $3',
'watchlist-options' => 'Kuzatuv roʻyxati moslamalari',
# Displayed when you click the "watch" button and it is in the process of watching
'unwatching' => "Kuzatuv ro'yxatidan o'chirish...",
'enotif_mailer' => "{{SITENAME}} Pochta orqali e'lon qilish xizmati",
-'enotif_reset' => 'Hamma sahifalarni koʻrib chiqilgan deb belgilash',
+'enotif_reset' => 'Hammasini koʻrib chiqilgan deb belgilash',
'enotif_impersonal_salutation' => '{{SITENAME}} ishtirokchisi',
'enotif_subject_deleted' => '{{SITENAME}} loyihasining $1 nomli sahifasi foydalanuvchi {{gender:$2|$2}} tomonidan o‘chirildi',
'enotif_subject_created' => '{{SITENAME}} loyihasining $1 nomli sahifasi foydalanuvchi {{gender:$2|$2}} tomonidan yaratildi',
'deletedtext' => '"$1" yoʻqotildi.
Yaqinda sodir etilgan yoʻqotishlar uchun $2ni koʻring.',
'dellogpage' => 'Yoʻqotish qaydlari',
-'dellogpagetext' => 'Quyida oxirgi oʻchirish qaydlari keltirilgan',
+'dellogpagetext' => 'Quyida oxirgi yoʻqotish qaydlari keltirilgan',
'deletionlog' => 'yoʻqotish qaydlari',
'reverted' => 'Eski holiga keltirildi',
'deletecomment' => 'Sabab:',
'rollbacklinkcount' => '$1 ta tahrirni ortga qaytarish',
'rollbacklinkcount-morethan' => '$1 {{PLURAL:$1| tadan koʻp tahrir}}ni eski holiga keltirish',
'rollbackfailed' => 'Eski holiga keltirishda xatolik',
-'revertpage' => '[[Special:Contributions/$2|$2]] ([[User talk:$2|munozara]]) tahrirlari [[User:$1|$1]] versiyasiga qaytarildi',
+'revertpage' => '[[Special:Contributions/$2|$2]] tahrirlari [[User:$1|$1]] versiyasiga qaytarildi',
# Edit tokens
'sessionfailure-title' => 'Seansda xatolik',
'contributions-title' => '{{GENDER:$1|Foydalanuvchi}} $1 hissasi',
'mycontris' => 'Hissam',
'contribsub2' => '$1 uchun ($2)',
-'nocontribs' => 'Belgilangan shartlarga muvofiq oʻzgarishlar topilmadi',
+'nocontribs' => 'Belgilangan shartlarga muvofiq oʻzgarishlar topilmadi.',
'uctop' => '(joriy)',
'month' => 'Oydan (va avvalroq)',
'year' => 'Yildan (va avvalroq)',
'sp-contributions-newbies-sub' => 'Yangi hisob yozuvlaridan',
'sp-contributions-newbies-title' => 'Yangi hisob yozuvlarining hissalari',
'sp-contributions-blocklog' => 'chetlatishlar',
-'sp-contributions-deleted' => "o'chirilgan tahrirlar",
+'sp-contributions-deleted' => 'yoʻqotilgan tahrirlar',
'sp-contributions-uploads' => 'yuklamalar',
'sp-contributions-logs' => 'qaydlar',
'sp-contributions-talk' => 'munozara',
'sp-contributions-userrights' => 'foydalanuvchining huquqlarini boshqarish',
+'sp-contributions-blocked-notice' => 'Ushbu foydalanuvchi hozirda tahrirlashdan chetlatilgan. Quyida chetlatish qaydlaridan soʻnggi yozuv keltirilgan:',
'sp-contributions-search' => 'Hissalarni qidirish',
'sp-contributions-username' => 'IP-manzil yoki foydalanuvchi nomi:',
'sp-contributions-toponly' => 'Faqat oxirgi deb hisoblangan tahrirlarni koʻrsat',
'ipadressorusername' => 'IP-manzil yoki foydalanuvchi nomi:',
'ipbexpiry' => 'Tugaydi:',
'ipbreason' => 'Sabab:',
-'ipbreason-dropdown' => "* Chetlashtirishning andazaviy sabablari
-** Yolg'on axborot kiritish
-** Sahifa matnini o'chirish
-** Tashqi saytlarga spam-yo'llanmalar
-** Ma'nosiz matn/axlat qo'shish
-** Tahdid, ishtirokchilarni ta'qib qilish
-** Bir necha hisob yozuvlaridan o'z manfaatlarida foydalanish
-** Ishtirokchining nomaqbul ismi",
+'ipbreason-dropdown' => '* Chetlashtirishning odatiy sabablari
+** Yolgʻon maʼlumot kiritish
+** Sahifa matnini toʻliq oʻchirish
+** Tashqi saytlarga spam-havolalar
+** Maʼnosiz matn/axlat qoʻshish
+** Foydalanuvchilarga tahdid qilish, ularni taʼqib qilish
+** Bir nechta hisob yozuvlaridan oʻz manfaatlarida foydalanish
+** Nomaqbul foydalanuvchi nomi',
'ipbsubmit' => 'Ushbu foydalanuvchini chetlashtirish',
'ipbother' => 'Boshqa vaqt:',
'ipboptions' => '2 soat:2 hours,1 kun:1 day,3 kun:3 days,1 hafta:1 week,2 hafta:2 weeks,1 oy:1 month,3 oy:3 months,6 oy:6 months,1 yil:1 year,cheksiz:infinite',
'tooltip-pt-watchlist' => 'Siz kuzatib borayotgan sahifalardagi oʻzgarishlar roʻyxati',
'tooltip-pt-mycontris' => 'Hissalaringiz roʻyxati',
'tooltip-pt-login' => 'Bu majburiyat mavjud bo‘lmasa-da, kirishingiz taklif qilinadi.',
-'tooltip-pt-anonlogin' => "Bu majburiyat bo'lmasada, kirishingiz taklif qilinadi.",
'tooltip-pt-logout' => 'Chiqish',
'tooltip-ca-talk' => 'Sahifa matni borasida munozara',
'tooltip-ca-edit' => 'Siz bu sahifani tahrirlashingiz mumkin. Iltimos, saqlashdan oldin koʻrib chiqish tugmasidan foydalaning',
'exif-iimcategory-wea' => 'Ob-havo',
# 'all' in various places, this might be different for inflected languages
-'watchlistall2' => 'Barcha',
+'watchlistall2' => 'hammasi',
'namespacesall' => 'Barchasi',
'monthsall' => 'barchasi',
'table_pager_prev' => 'Oldingi sahifa',
'table_pager_first' => 'Birinchi sahifa',
'table_pager_last' => 'Oxirgi sahifa',
+'table_pager_limit_label' => 'Bir sahifadagi yozuvlar soni:',
# Auto-summaries
+'autosumm-blank' => 'Sahifa tozalandi',
'autoredircomment' => '[[$1]]ga yoʻnaltirildi',
'autosumm-new' => '"$1" yozuvi orqali yangi sahifa yaratildi',
# Special:Tags
'tag-filter' => '[[Special:Tags|Nishonlar]] filtri:',
+# Special:ComparePages
+'compare-submit' => 'Solishtirish',
+
# HTML forms
'htmlform-reset' => 'Oʻzgarishlarni bekor qilish',
'htmlform-selectorother-other' => 'Boshqa',
'logentry-move-move' => '$1 $3 sahifasini $4ga koʻchirdi',
'logentry-move-move-noredirect' => '$1 $3 sahifasini $4ga {{GENDER:$2|koʻchirdi}}',
'logentry-patrol-patrol-auto' => '$1 $3 sahifasining $4 versiyasini avtomatik patrulladi',
-'logentry-newusers-newusers' => '$1 hisob yozuvi yaratildi',
-'logentry-newusers-create' => '$1 hisob yozuvi yaratildi',
+'logentry-newusers-newusers' => '$1 hisob yozuvi {{GENDER:$2|yaratildi}}',
+'logentry-newusers-create' => '$1 hisob yozuvi {{GENDER:$2|yaratildi}}',
+'logentry-newusers-autocreate' => '$1 hisob yozuvi avtomatik ravishda {{GENDER:$2|yaratilgan}}',
+'logentry-rights-rights' => '$1 $3ning guruhlardagi aʼzoligini $4dan $5ga {{GENDER:$2|oʻzgartirdi}}',
+'logentry-rights-rights-legacy' => '$1 $3ning guruhlardagi aʼzoligini oʻzgartirdi',
# Feedback
'feedback-close' => 'Bajarildi',
# Search suggestions
'searchsuggest-search' => 'Qidiruv',
+'searchsuggest-containing' => 'ichida bu boʻlgan...',
# API errors
'api-error-unknown-code' => 'Noaniq xato: "$1".',
'api-error-unknownerror' => 'Noaniq xato: "$1".',
+# Limit report
+'limitreport-title' => 'Tahlillagich maʼlumotlari:',
+
);
$messages = array(
# User preference toggles
'tog-underline' => 'Sotołinea i cołegamenti:',
-'tog-justify' => 'Paragrafo: giustifegà',
'tog-hideminor' => 'Scondi i canbiamenti picenini in tei "Ultimi canbiamenti"',
'tog-hidepatrolled' => 'Scondi i canbiamenti verificà in tei "Ultimi canbiamenti"',
'tog-newpageshidepatrolled' => "Scondi łe pajine verifegae da l'elenco de łe pajine pì resenti",
'tog-numberheadings' => 'Numerasion automatega de i titołi de sesion',
'tog-showtoolbar' => 'Mostra ła bara de i strumenti de modifega (el richiede JavaScript)',
'tog-editondblclick' => 'Modifega de łe pajine tramite dopio clic (el richiede JavaScript)',
-'tog-editsection' => 'Modifega de łe sesion tramite el cołegamento [modifega]',
'tog-editsectiononrightclick' => 'Modifega de łe sesion tramite clic destro sol titoło (el richiede JavaScript)',
-'tog-showtoc' => "Mostra l'indexe par łe pajine con pì de 3 sesion",
'tog-rememberpassword' => 'Tiente in mente la me password so sto computer (par un massimo de $1 {{PLURAL:$1|zorno|zorni}})',
'tog-watchcreations' => "Xonta łe pàjine creae e i file cargai a łe tegnùe d'ocio",
'tog-watchdefault' => "Xonta łe pàjine e i file modifegai a łe tegnùe d'ocio",
'passwordtooshort' => 'Łe password e ga da contegnere almanco {{PLURAL:$1|1 caratere|$1 carateri}}.',
'password-name-match' => 'Ła password a ga da esare difarente dal nome utente.',
'password-login-forbidden' => 'Sto nome utente e/o password i xè stai proibìi',
-'mailmypassword' => 'Màndeme na password nova al me indirisso e-mail',
+'mailmypassword' => 'Rinposta ła password',
'passwordremindertitle' => 'Servisio Password Reminder de {{SITENAME}}',
'passwordremindertext' => 'Qualcheduni (probabilmente ti, da l\'indirizo IP $1) el gà domandà che ghe vegna mandà na nova password par {{SITENAME}} ($4).
Na password tenporànea par l\'utente "$2" la xe stà creà e inpostà a "$3".
'nosuchsectiontext' => 'Te ghè sercà de modificar na sezion che no esiste.
Forse la xe stà spostà o scancelà fin che te sèri drio vardar la pagina.',
'loginreqtitle' => "Par modificar sta pagina bisogna prima eseguir l'acesso al sito.",
-'loginreqlink' => 'login',
+'loginreqlink' => 'far el login',
'loginreqpagetext' => 'Par védar altre pagine bisogna $1.',
'accmailtitle' => 'Password spedia.',
'accmailtext' => "Na password xenerà casualmente par [[User talk:$1|$1]] la xe stà mandà a $2.
Legenda: '''({{int:cur}})''' = difarense co l'ultima version, '''({{int:last}})''' = difarense co la version subito prima, '''{{int:minoreditletter}}''' = canbiamento picenin",
'history-fieldset-title' => 'Ruma in te la storia',
'history-show-deleted' => 'Solo quei scancelà',
-'histfirst' => 'Prima',
-'histlast' => 'Ultema',
+'histfirst' => 'pi vecia',
+'histlast' => 'pi nova',
'historysize' => '({{PLURAL:$1|1 byte|$1 byte}})',
'historyempty' => '(voda)',
* Informassion personali mia apropriate
*: ''indirissi de casa e nùmari de telefono, nùmari de previdensa sociale, etc.''",
'revdelete-legend' => 'Inposta le seguenti limitazion su le versioni scancelàe:',
-'revdelete-hide-text' => 'Scondi el testo de ła version',
+'revdelete-hide-text' => 'El testo de ła version',
'revdelete-hide-image' => 'Scondi i contenuti del file',
'revdelete-hide-name' => 'Scondi azion e ogeto de la stessa',
-'revdelete-hide-comment' => "Scondi l'oggetto de ła modifega",
-'revdelete-hide-user' => "Scondi el nome o l'indirisso IP dell'autore",
+'revdelete-hide-comment' => "L'ogeto de ła modifega",
+'revdelete-hide-user' => "El nome o l'indirisso IP de l'autor",
'revdelete-hide-restricted' => 'Scóndighe le informassion indicà anca ai aministradori',
'revdelete-radio-same' => '(no stà canbiar)',
-'revdelete-radio-set' => 'Sì',
-'revdelete-radio-unset' => 'No',
+'revdelete-radio-set' => 'Sconto',
+'revdelete-radio-unset' => 'Visibile',
'revdelete-suppress' => 'Scondi le informazion anca ai aministradori',
'revdelete-unsuppress' => 'Elimina le limitazion su le revision ripristinà',
'revdelete-log' => 'Motivassion:',
'showhideselectedversions' => 'Mostra/scondi version selessionà',
'editundo' => 'tira indrìo',
'diff-empty' => '(Nissuna difarensa)',
-'diff-multi' => '({{PLURAL:$1|Una revision intermedia|$1 revision intermedie}} de {{PLURAL:$2|un utente|$2 utenti}} mia mostrà)',
'diff-multi-manyusers' => '({{PLURAL:$1|Una revision intermedia|$1 revision intermedie}} de pi de {{PLURAL:$2|un utente|$2 utenti}} mia mostrà)',
'difference-missing-revision' => "{{PLURAL:$2|Na version|$2 version}} de sta difarensa ($1) {{PLURAL:$2|nó ła xe sta trovà|nó łe xe stae trovae}}.
'rows' => 'Righe:',
'columns' => 'Cołone:',
'searchresultshead' => 'Riserca',
-'resultsperpage' => 'Nùmaro de risultati par pagina:',
'stub-threshold' => 'Valor minimo par i <a href="#" class="stub">colegamenti ai stub</a>:',
'stub-threshold-disabled' => 'Disativà',
'recentchangesdays' => 'Nùmaro de giòrni da mostrar ne le ultime modifiche:',
'prefs-dateformat' => 'Formato de la data',
'prefs-timeoffset' => 'Ore de difarensa',
'prefs-advancedediting' => 'Preferense avansade',
+'prefs-editor' => 'Contributor',
'prefs-advancedrc' => 'Preferense avansade',
'prefs-advancedrendering' => 'Preferense avansade',
'prefs-advancedsearchoptions' => 'Preferense avansade',
'rclistfrom' => 'Fà védar i canbiamenti fati dal $1',
'rcshowhideminor' => '$1 i canbiamenti picenini',
'rcshowhidebots' => '$1 i bot',
-'rcshowhideliu' => '$1 i utenti registrai',
+'rcshowhideliu' => '$1 i utenti registrài',
'rcshowhideanons' => '$1 i utenti anonimi',
'rcshowhidepatr' => '$1 łe modifeghe controłae',
'rcshowhidemine' => '$1 i me canbiamenti',
'rc_categories_any' => 'Qualsiasi',
'rc-change-size-new' => '$1 {{PLURAL:$1|byte}} dopo ła modifega',
'newsectionsummary' => '/* $1 */ sezion nova',
-'rc-enhanced-expand' => 'Mostra detaji (richiede JavaScript)',
+'rc-enhanced-expand' => 'Mostra detaji',
'rc-enhanced-hide' => 'Scondi detaji',
'rc-old-title' => 'creà in orijine come "$1"',
'reuploaddesc' => 'Lassa pèrdar el caricamento e torna al modulo de caricamento',
'upload-tryagain' => 'Invia la descrission del file modificà',
'uploadnologin' => 'Te devi far el login par exeguire sta operassion.',
-'uploadnologintext' => 'Te ghè da far [[Special:UserLogin|el login]]
-par poder cargar dei file.',
+'uploadnologintext' => 'Te ghè da $1 par cargar dei file.',
'upload_directory_missing' => 'La cartèla de caricamento ($1) no la esiste mìa e no la pode vegner creàda dal browser web.',
'upload_directory_read_only' => "El server web no l'è bon de scrìvar ne la directory de caricamento ($1).",
'uploaderror' => 'Eror nel caricamento',
# Random page in category
'randomincategory' => 'Pagina a ocio in te na categoria',
+'randomincategory-invalidcategory' => '"$1" no\'l và mia ben come nome de categoria.',
'randomincategory-nopages' => 'No ghe xe mia pagine in [[:Category:$1]].',
+'randomincategory-selectcategory' => 'Ciapa na pagina a ocio da la categoria: $1 $2.',
'randomincategory-selectcategory-submit' => 'Và',
# Random redirect
'protectedpages' => 'Pagine protete',
'protectedpages-indef' => 'Solo le protezion infinìe',
'protectedpages-cascade' => 'Solo protezion ricorsive',
+'protectedpages-noredirect' => 'Scondi rimandi',
'protectedpagesempty' => 'Al momento no ghe xe pagine protete',
'protectedtitles' => 'Titoli proteti',
'protectedtitlesempty' => 'Al momento no ghe xe titoli proteti coi parametri specificà.',
'listusers' => 'Elenco dei utenti',
'listusers-editsonly' => 'Fà védar sol che i utenti che gà fato dei contributi',
'listusers-creationsort' => 'Òrdena par data de creassion',
+'listusers-desc' => 'Ordina in senso decresente',
'usereditcount' => '$1 {{PLURAL:$1|contributo|contributi}}',
'usercreated' => '{{GENDER:$3|Creà|Creà}} el $1 a le $2',
'newpages' => 'Pagine nove',
'watchmethod-list' => 'controło de i osservati speciałi par modifeghe recenti',
'watchlistcontains' => 'La lista de i osservati speciałi la contien {{PLURAL:$1|una pagina|$1 pagine}}.',
'iteminvalidname' => "Problemi con la voxe '$1', nome mìa vałido...",
-'wlnote' => "Cuà soto te cati {{PLURAL:$1|'l ultimo canbiamento|i ultimi '''$1''' canbiamenti}} inte {{PLURAL:$2|l'ultema ora|łe ultime '''$2''' ore}}; i dati i xe axornai a łe $4 del $3.",
'wlshowlast' => 'Mostra le ultime $1 ore $2 zorni $3',
'watchlist-options' => "Inpostassion de le pagine tegnùe d'ocio",
'contributions' => 'Contributi {{GENDER:$1|utente}}',
'contributions-title' => 'Contributi de $1',
'mycontris' => 'Contributi',
-'contribsub2' => 'Par $1 ($2)',
+'contribsub2' => 'Par {{GENDER:$3|$1}} ($2)',
'nocontribs' => 'No xe stà catà nissuna modifica che vaga ben par sti critèri.',
-'uctop' => '(ultima)',
+'uctop' => '(de dèsso)',
'month' => 'Dal mese (e quei prima):',
'year' => "Da l'ano (e quei prima):",
'tooltip-pt-watchlist' => "La lista de le pagine che te sì drio tegner d'ocio",
'tooltip-pt-mycontris' => 'Elenco de i to contributi',
'tooltip-pt-login' => 'Te consiliemo de registrarte, ma no te ghè da farlo par forsa.',
-'tooltip-pt-anonlogin' => "Te consigliemo de registrarte, ma no'l xe obligatorio.",
'tooltip-pt-logout' => 'Và fora',
'tooltip-ca-talk' => 'Discussion sul contenuto de sta pagina',
'tooltip-ca-edit' => 'Te poli canbiar sta pagina. Par piaser dòpara el boton de anteprima, prima de salvar.',
'svg-long-desc' => 'file en formato SVG, dimension nominałi $1 × $2 pixel, dimension del file: $3',
'svg-long-desc-animated' => 'file in formato SVG animà, dimension nominałi $1 × $2 pixel, dimension del file: $3',
'svg-long-error' => 'File SVG mìa valido: $1',
-'show-big-image' => 'Version ad alta risołusion',
+'show-big-image' => 'File original',
'show-big-image-preview' => 'Dimension de sta anteprima: $1.',
'show-big-image-other' => '{{PLURAL:$2|Altra risołusion|Altre risołusion}}: $1.',
'show-big-image-size' => '$1 × $2 pixel',
'imgmultigo' => 'Và',
'imgmultigoto' => 'Và a la pagina $1',
+# Language selector for translatable SVGs
+'img-lang-default' => '(lengua predefinìa)',
+
# Table pager
'ascending_abbrev' => 'cresc',
'descending_abbrev' => 'decresc',
'version-hook-name' => "Nome de l'hook",
'version-hook-subscribedby' => 'Sotoscrizioni',
'version-version' => '(Version $1)',
-'version-license' => 'Licensa',
+'version-license' => 'Licensa MediaWiki',
+'version-ext-license' => 'Licensa',
+'version-ext-colheader-name' => 'Estension',
+'version-ext-colheader-version' => 'Version',
+'version-ext-colheader-license' => 'Licensa',
+'version-ext-colheader-description' => 'Descrission',
+'version-license-title' => 'Licensa par $1',
'version-poweredby-credits' => "Sta wiki la va con '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
'version-poweredby-others' => 'altri',
'version-poweredby-translators' => 'tradutori de translatewiki.net',
'tags-tag' => 'Nome del tag',
'tags-display-header' => 'Aspetto ne la lista de le modifiche',
'tags-description-header' => 'Descrission conpleta del significado',
+'tags-active-header' => 'Ativo?',
'tags-hitcount-header' => 'Modifiche che gà dei tag',
'tags-edit' => 'modìfega',
'tags-hitcount' => '$1 {{PLURAL:$1|modìfega|modìfeghe}}',
$messages = array(
# User preference toggles
'tog-underline' => 'Jonoštada kosketused:',
-'tog-justify' => 'Tazoitada tekst lehtpolen levedusen mödhe',
'tog-hideminor' => 'Peitta pened redakcijad veresiden toižetusiden nimikirjuteses',
'tog-hidepatrolled' => 'Peitta patruliruidud redakcijad veresiden toižetusiden nimikirjuteses',
'tog-newpageshidepatrolled' => 'Peitta patruliruidud redakcijad uziden lehtpoliden nimikirjuteses',
'tog-numberheadings' => 'Nomeruida avtomatižikš pälkirjutesed',
'tog-showtoolbar' => "Ozutada redaktiruindan panel'",
'tog-editondblclick' => 'Redaktiruida lehtpoled kaksitadud plokul',
-'tog-editsection' => 'Ozutada "Redaktiruida"-kosketuz kaikuččen sekcijan täht',
'tog-editsectiononrightclick' => 'Redaktiruida sekcijad hiren oiktal plokul pälkirjutesele',
-'tog-showtoc' => 'Ozutada südäiolend (lehtpoled, kudambil om enamba, mi 3 pälkirjutest)',
'tog-rememberpassword' => 'Muštta minun kävutajan nimi neciš kompjuteras (enintään $1 {{PLURAL:$1|päivä|päivää}})',
'tog-watchcreations' => 'Ližata kaik minai sätud lehtpoled da failad minun kaclendkirjuteshe',
'tog-watchdefault' => 'Ližata kaik minai toižetadud lehtpoled da failad minun kaclendkirjuteshe',
# General errors
'error' => 'Petuz',
'databaseerror' => 'Andmusiden bazan petuz',
+'databaseerror-query' => 'Ecmine: $1',
'databaseerror-function' => 'Funkcii:$1',
'databaseerror-error' => 'Petuz: $1',
'laggedslavemode' => "Varutuz: voib olda, lehtpolen versijal ei ole jäl'gmäižid ližadusid.",
'mailerror' => 'E-počtan oigendamižen petuz: $1',
'emailauthenticated' => 'Teiden e-počtan adres vahvištoittihe datal $2 aigal $3.',
'emailnotauthenticated' => 'Teiden e-počtan adres ei ole völ vahvištoittud.
-Wiki-likutimen počtfunkcijad ei olgoi kävutamas.',
+Kirjeižid ei oigekoi ni-ühten funkcijan täht.',
'noemailprefs' => 'Kirjutagat e-počtan adres teiden järgendusihe, miše se oliži kävutamas.',
'emailconfirmlink' => 'Vahvištoitkat teiden e-počtan adres',
'invalidemailaddress' => 'Ningomal e-počtan adresal om vär format. Olgat hüväd, kirjutagat e-počtan adres oiktas formatas vai puhtastagat e-počtan pöud.',
'emaildisabled' => 'Nece sait ei voi oigeta e-počtad.',
'accountcreated' => 'Registracii om OK',
-'accountcreatedtext' => 'Registracii $1-kävutajan täht om sätud.',
+'accountcreatedtext' => 'Registracii [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|talk]])-kävutajan täht om sätud.',
'createaccount-title' => '{{SITENAME}}: registracijan sädand.',
'usernamehasherror' => 'Kävutajan nimes ei voi olda mugošt znamad.',
'login-throttled' => 'Tö olet tehnu äjahkon naprindoid kirjutadas sistemha.
-Olgat hüväd, varastagat pordon aigad edel ut naprindad.',
+Olgat hüväd, varastagat $1 aigad edel ut naprindad.',
'login-abort-generic' => 'Teiden naprind tulda sistemha om satusetoi - Azotadud',
'loginlanguagelabel' => 'Kel’: $1',
'newpassword' => "Uz' peitsana:",
'retypenew' => "Toštkat uz' peitsana:",
'resetpass_submit' => 'Säta peitsana da kirjutadas sistemha',
-'changepassword-success' => 'Teiden peisana om vajehtadud jügedusita! Tulend sistemha...',
+'changepassword-success' => 'Teiden peisana om vajehtadud jügedusita!',
'resetpass_forbidden' => 'Ei voi vajehtada peitsanad',
'resetpass-no-info' => 'Miše kirjutada necil lehtpolel, teile pidab kirjutadas sistemha.',
'resetpass-submit-loggedin' => 'Vajehtada peitsana',
'passwordreset-email' => 'E-počtan adres:',
'passwordreset-emailelement' => 'Kävutajannimi: $1
Aigaline peitsana: $2',
-'passwordreset-emailsent' => 'Muštatai kirjeine oigetihe e-počtadme',
+'passwordreset-emailsent' => 'Muštatai kirjeine uden peitsananke oigetihe e-počtadme.',
# Special:ChangeEmail
'changeemail' => 'Toižetada e-počtan adres',
'revdelete-text' => "'''Čutud versijad ozutadas lehtpolen istorijas da aigkirjoiš, no järgeližed lugijad ei voiškakoi nähta niiden südäimišton erasid paloid.'''
Administratorad voiškatas lugeda peittud südäimištod da endištada sidä necen interfeisan kal't siloi, konz ei ole ližakaidendusid.",
'revdelete-legend' => 'Säta kaidendused',
-'revdelete-hide-text' => 'Peitta necen lehtpolen versijan tekst',
+'revdelete-hide-text' => 'Redakcijan tekst',
'revdelete-hide-image' => 'Peitta failan südäiolend',
'revdelete-hide-name' => 'Peitta tegend da sen objekt',
'revdelete-hide-comment' => 'Peitta toižetusiden kirjutez',
'compareselectedversions' => 'Rindatada valitud versijad',
'showhideselectedversions' => 'Ozutada/peitta valitud versijad',
'editundo' => 'heitta pätand',
-'diff-multi' => "({{PLURAL:$1|üks' keskmäine versii ei ole|$1 keskmäšt versijad ei olgoi}} {{PLURAL:$2|one user|$2 users}} ozutadud)",
# Search results
'searchresults' => "Ectä rezul'tatad",
'rows' => 'Rivid:',
'columns' => 'Pachid:',
'searchresultshead' => 'Ecind',
-'resultsperpage' => 'Kirjutesiden lugu lehtpolel:',
'stub-threshold' => 'Nägutesen märitamižen künduz <a href="#" class="stub">kosketust otetile</a> (baitoiš)',
'stub-threshold-disabled' => 'Ei ole kävutamas',
'recentchangesdays' => 'Päiväd veresiden toižetusidenke, lugumär:',
'timezoneregion-indian' => 'Indijan valdmeri',
'timezoneregion-pacific' => "Tün' valdmeri",
'allowemail' => 'Laskkat toižile kävutajile oigeta teile e-počtad',
-'prefs-searchoptions' => 'Ecindan järgendused',
+'prefs-searchoptions' => 'Ectä',
'prefs-namespaces' => 'Nimiavarused',
'defaultns' => 'Toižiš statjoiš ectä neniš nimiavarusiš:',
'default' => 'augotižjärgendusen mödhe',
'listfiles_size' => 'Suruz’',
'listfiles_description' => 'Ümbrikirjutand',
'listfiles_count' => 'Versijad',
+'listfiles-latestversion' => 'Nügüdläine versii',
'listfiles-latestversion-yes' => 'Ka',
# File description page
'allpages-bad-ns' => '{{SITENAME}}-saital ei ole "$1"-nimiavarust.',
'allpages-hide-redirects' => 'Peitta läbikosketused',
+# SpecialCachedPage
+'cachedspecial-refresh-now' => 'Ozutada möhembad.',
+
# Special:Categories
'categories' => 'Kategorijad',
'categoriespagetext' => '{{PLURAL:$1|Neciš kategorijas|Neniš kategorijoiš }} om lehtpolid vai mediafailoid.
'tooltip-pt-watchlist' => 'Lehtpoled, kudambid minä kaclen',
'tooltip-pt-mycontris' => 'Minun redakcijoiden nimikirjutez',
'tooltip-pt-login' => 'Naku sab kirjutadas sistemha, no necidä ei tarbiž radon täht',
-'tooltip-pt-anonlogin' => 'Naku sab kirjutadas sistemha, no necidä ei tarbiž radon täht',
'tooltip-pt-logout' => 'Lähtta sistemaspäi',
'tooltip-ca-talk' => 'Diskussii neciš lehtpoles',
'tooltip-ca-edit' => "Sab redaktiruida necidä lehtpol't.
# API errors
'api-error-empty-file' => "Teil oigetud fail om pall'az.",
+'api-error-fetchfileerror' => 'Südäipetuz: mi-se läksi värin failad sades.',
'api-error-filename-tooshort' => 'Lühudahk failannimi.',
'api-error-filetype-banned' => "Nece failtip om kel'tud.",
'api-error-filetype-banned-type' => '$1 {{PLURAL:$4|om laskmatoi failantip|oma laskmatomad failantipad}}. Lasktud {{PLURAL:$3|failantip om|failantipad oma}} $2.',
* @author Vietbio
* @author Vinhtantran
* @author Vương Ngân Hà
+ * @author Withoutaname
* @author לערי ריינהארט
*/
$messages = array(
# User preference toggles
'tog-underline' => 'Gạch chân liên kết:',
-'tog-justify' => 'Căn đều hai bên đoạn văn',
'tog-hideminor' => 'Ẩn sửa đổi nhỏ trong thay đổi gần đây',
'tog-hidepatrolled' => 'Ẩn sửa đổi đã tuần tra trong trang thay đổi gần đây',
'tog-newpageshidepatrolled' => 'Ẩn trang đã tuần tra trong danh sách các trang mới',
'tog-numberheadings' => 'Tự động đánh số các đề mục',
'tog-showtoolbar' => 'Hiển thị thanh định dạng',
'tog-editondblclick' => 'Nhấn đúp để sửa đổi trang',
-'tog-editsection' => 'Cho phép sửa đổi đề mục qua liên kết [sửa]',
'tog-editsectiononrightclick' => 'Bấm chuột phải vào đề mục để sửa đổi phần trang',
-'tog-showtoc' => 'Hiển thị mục lục (cho trang có trên 3 đề mục)',
'tog-rememberpassword' => 'Nhớ thông tin đăng nhập của tôi trong trình duyệt này (cho đến $1 ngày)',
'tog-watchcreations' => 'Tự động theo dõi các trang tôi viết mới và các tập tin tôi tải lên',
'tog-watchdefault' => 'Tự động theo dõi các trang và tập tin tôi sửa',
'vector-action-unprotect' => 'Đổi mức khóa',
'vector-simplesearch-preference' => 'Hộp tìm kiếm đơn giản (cần bề ngoài Vectơ)',
'vector-view-create' => 'Tạo',
-'vector-view-edit' => 'Sửa',
+'vector-view-edit' => 'Sửa đổi',
'vector-view-history' => 'Xem lịch sử',
'vector-view-view' => 'Đọc',
'vector-view-viewsource' => 'Xem mã nguồn',
'postcomment' => 'Đề mục mới',
'articlepage' => 'Xem trang nội dung',
'talk' => 'Thảo luận',
-'views' => 'Xem',
+'views' => 'Các hiển thị',
'toolbox' => 'Công cụ',
'userpage' => 'Xem trang thành viên',
'projectpage' => 'Xem trang dự án',
'imagepage' => 'Xem trang tập tin',
'mediawikipage' => 'Thông điệp giao diện',
-'templatepage' => 'Trang bản mẫu',
-'viewhelppage' => 'Trang trợ giúp',
-'categorypage' => 'Trang thể loại',
-'viewtalkpage' => 'Trang thảo luận',
+'templatepage' => 'Xem trang bản mẫu',
+'viewhelppage' => 'Xem trang trợ giúp',
+'categorypage' => 'Xem trang thể loại',
+'viewtalkpage' => 'Xem trang thảo luận',
'otherlanguages' => 'Ngôn ngữ khác',
'redirectedfrom' => '(đổi hướng từ $1)',
'redirectpagesub' => 'Trang đổi hướng',
'retypenew' => 'Gõ lại:',
'resetpass_submit' => 'Chọn mật khẩu và đăng nhập',
'changepassword-success' => 'Đã đổi mật khẩu thành công!',
+'changepassword-throttled' => 'Bạn đã thử đăng nhập gần đây nhiều lần quá. Xin chờ $1 trước khi bạn thử lần nữa.',
'resetpass_forbidden' => 'Không được đổi mật khẩu',
'resetpass-no-info' => 'Bạn phải đăng nhập mới có thể truy cập trực tiếp trang này.',
'resetpass-submit-loggedin' => 'Thay đổi mật khẩu',
'changeemail-password' => 'Mật khẩu của bạn tại {{SITENAME}}:',
'changeemail-submit' => 'Đổi địa chỉ',
'changeemail-cancel' => 'Hủy bỏ',
+'changeemail-throttled' => 'Bạn đã thử đăng nhập nhiều lần quá. Xin chờ $1 trước khi bạn thử lần nữa.',
# Special:ResetTokens
'resettokens' => 'Đặt lại dấu hiệu',
'content-not-allowed-here' => 'Không cho phép đưa nội dung “$1” vào trang [[$2]]',
'editwarning-warning' => 'Rời khỏi trang này sẽ khiến bạn mất các sửa đổi đã thực hiện.
Nếu đã đăng nhập, bạn có thể tắt cảnh báo này tại mục “Sửa đổi” trong tùy chọn cá nhân.',
+'editpage-notsupportedcontentformat-title' => 'Không hỗ trợ định dạng nội dung',
+'editpage-notsupportedcontentformat-text' => 'Mô hình nội dung $2 không hỗ trợ định dạng nội dung $1.',
# Content models
'content-model-wikitext' => 'mã wiki',
'showhideselectedversions' => 'Thay đổi mức khả kiến của các phiên bản được chọn',
'editundo' => 'lùi sửa',
'diff-empty' => '(Không có sự khác biệt)',
-'diff-multi' => '(Không hiển thị {{PLURAL:$1||$1}} phiên bản {{PLURAL:$2||của $2 thành viên}} ở giữa)',
+'diff-multi-sameuser' => '(Không hiển thị {{PLURAL:$1||$1}} phiên bản của cùng người dùng ở giữa)',
+'diff-multi-otherusers' => '(Không hiển thị {{PLURAL:$1||$1}} phiên bản của {{PLURAL:$2|một người dùng khác|$2 người dùng}} ở giữa)',
'diff-multi-manyusers' => '(Không hiển thị {{PLURAL:$1||$1}} phiên bản của hơn $2 thành viên ở giữa)',
'difference-missing-revision' => 'Không tìm thấy {{PLURAL:$2|một phiên bản|$2 phiên bản}} trong khác biệt này ($1).
'shown-title' => 'Hiển thị $1 {{PLURAL:$1|kết quả|kết quả}} mỗi trang',
'viewprevnext' => 'Xem ($1 {{int:pipe-separator}} $2) ($3).',
'searchmenu-exists' => "* Trang '''[[$1]]'''",
-'searchmenu-new' => "'''Tạo trang “[[:$1]]” trên wiki này!'''",
+'searchmenu-new' => "'''Tạo trang “[[:$1]]” trên wiki này!''' {{PLURAL:$2|0=|Hãy xem {{PLURAL:$2|kết quả|các kết quả}} tìm kiếm:}}",
'searchprofile-articles' => 'Trang nội dung',
'searchprofile-project' => 'Trang trợ giúp và trang dự án',
'searchprofile-images' => 'Đa phương tiện',
'search-result-score' => 'Độ phù hợp: $1%',
'search-redirect' => '(đổi hướng $1)',
'search-section' => '(đề mục $1)',
+'search-file-match' => '(khớp nội dung tập tin)',
'search-suggest' => 'Có phải bạn muốn tìm: $1',
'search-interwiki-caption' => 'Các dự án liên quan',
'search-interwiki-default' => '$1 kết quả:',
'rows' => 'Số hàng:',
'columns' => 'Số cột:',
'searchresultshead' => 'Tìm kiếm',
-'resultsperpage' => 'Số kết quả mỗi trang:',
'stub-threshold' => 'Định dạng <a href="#" class="stub">liên kết đến sơ khai</a> cho các trang ngắn hơn (byte):',
'stub-threshold-disabled' => 'Tắt',
'recentchangesdays' => 'Số ngày hiển thị trong thay đổi gần đây:',
Nếu bạn vẫn muốn tải tập tin của bạn lên, xin hãy quay lại và dùng một tên khác. [[File:$1|thumb|center|$1]]',
'file-exists-duplicate' => 'Tập tin này có vẻ là bản sao của {{PLURAL:$1|tập tin|các tập tin}} sau:',
'file-deleted-duplicate' => 'Một tập tin giống hệt như tập tin này ([[:$1]]) đã từng bị xóa trước đây. Bạn nên xem lại lịch sử xóa tập tin trước khi tiếp tục tải nó lên lại.',
+'file-deleted-duplicate-notitle' => 'Một tập tin giống hệt như tập tin này đã từng bị xóa và tên bị đàn áp trước đây.
+Bạn nên xin một người có quyền xem dữ liệu tập tin bị đàn áp xem lại trường hợp này trước khi tiếp tục tải nó lên lại.',
'uploadwarning' => 'Cảnh báo!',
'uploadwarning-text' => 'Xin hãy chỉnh sửa miêu tả tập tin ở dưới và thử lại.',
'savefile' => 'Lưu tập tin',
'protectedpages' => 'Trang bị khóa',
'protectedpages-indef' => 'Chỉ hiển thị khóa vô hạn',
'protectedpages-cascade' => 'Chỉ hiển thị khóa theo tầng',
+'protectedpages-noredirect' => 'Ẩn trang đổi hướng',
'protectedpagesempty' => 'Hiện không có trang nào bị khóa với các thông số này.',
'protectedtitles' => 'Tên trang bị khóa',
'protectedtitlesempty' => 'Không có tựa trang nào bị khóa với các thông số như vậy.',
'watchmethod-list' => 'Dưới đây hiện danh sách các trang theo dõi.',
'watchlistcontains' => 'Danh sách theo dõi của bạn có $1 {{PLURAL:$1|trang|trang}}.',
'iteminvalidname' => 'Tên trang “$1” không hợp lệ…',
-'wlnote' => "Dưới đây là {{PLURAL:$1|thay đổi '''duy nhất'''|'''$1''' thay đổi gần nhất}} trong {{PLURAL:$2|giờ|'''$2''' giờ}} qua, tính tới $3 lúc $4.",
+'wlnote2' => 'Bên dưới có các thay đổi vào <strong>$1</strong> giờ qua, vào lúc $3 $2.',
'wlshowlast' => 'Hiển thị $1 giờ $2 ngày gần đây $3',
'watchlist-options' => 'Tùy chọn về danh sách theo dõi',
'delete-warning-toobig' => 'Trang này có lịch sử sửa đổi lớn, đến hơn {{PLURAL:$1|lần|lần}} sửa đổi.
Việc xóa các trang có thể làm tổn hại đến hoạt động của cơ sở dữ liệu {{SITENAME}};
hãy cẩn trọng khi thực hiện.',
+'deleting-backlinks-warning' => "'''Cảnh báo:''' Có trang khác liên kết đến hoặc nhúng trang mà bạn sắp xóa.",
# Rollback
'rollback' => 'Lùi tất cả sửa đổi',
Xem lại những lần cấm tại [[Special:BlockList|danh sách cấm]].',
'ipb-blockingself' => 'Bạn sẽ tự bỏ cấm cho mình! Bạn có chắc chắn muốn làm vậy không?',
'ipb-confirmhideuser' => 'Bạn sẽ cấm người dùng với tùy chọn “ẩn người dùng”. Bạn có chắc chắn muốn dời tên người dùng khỏi tất cả mọi danh sách và nhật trình?',
+'ipb-confirmaction' => 'Nếu bạn chắc chắn muốn thực hiện tác vụ này, xin hãy bấm “{{int:ipb-confirm}}” bên dưới.',
'ipb-edit-dropdown' => 'Sửa đổi lý do cấm',
'ipb-unblock-addr' => 'Bỏ cấm $1',
'ipb-unblock' => 'Bỏ cấm thành viên hay địa chỉ IP',
'range_block_disabled' => 'Đã tắt khả năng cấm hàng loạt của quản lý.',
'ipb_expiry_invalid' => 'Thời điểm hết hạn không hợp lệ.',
'ipb_expiry_temp' => 'Cấm tên người dùng ẩn nên là cấm vô hạn.',
-'ipb_hide_invalid' => 'Không thể ẩn tài khoản này; có thể do nó có quá nhiều sửa đổi.',
+'ipb_hide_invalid' => 'Không thể ẩn tài khoản này; nó đã sửa đổi hơn {{PLURAL:$1|một lần|$1 lần}}.',
'ipb_already_blocked' => '“$1” đã bị cấm rồi',
'ipb-needreblock' => '$1 đã bị cấm. Bạn có muốn thay đổi các thiết lập?',
'ipb-otherblocks-header' => '{{PLURAL:$1|Tác vụ cấm|Các tác vụ cấm}} khác',
'allmessages-prefix' => 'Lọc theo tiền tố:',
'allmessages-language' => 'Ngôn ngữ:',
'allmessages-filter-submit' => 'Xem',
+'allmessages-filter-translate' => 'Biên dịch',
# Thumbnails
'thumbnail-more' => 'Phóng lớn',
'importuploaderrortemp' => 'Không thể tải tập tin nhập trang. Thiếu thư mục tạm.',
'import-parse-failure' => 'Không thể phân tích tập tin nhập XML',
'import-noarticle' => 'Không có trang nào để nhập cả!',
-'import-nonewrevisions' => 'Tất cả các phiên bản đều đã được nhập trước đây.',
+'import-nonewrevisions' => 'Không nhập phiên bản nào (tất cả các phiên bản đều đã có sẵn hoặc bị bỏ qua do lỗi).',
'xml-error-string' => '$1 tại dòng $2, cột $3 (byte $4): $5',
'import-upload' => 'Tải lên dữ liệu XML',
'import-token-mismatch' => 'Mất dữ liệu phiên làm việc. Xin hãy thử lại lần nữa.',
'import-error-special' => 'Trang “$1” không được nhập vì nó thuộc về không gian tên đặc biệt không cho phép các trang không mặc định.',
'import-error-invalid' => 'Trang “$1” không được nhập vì tên của nó không hợp lệ.',
'import-error-unserialize' => 'Không thể giải tuần tự hóa phiên bản $2 của trang “$1”. Tập tin kết xuất cho rằng phiên bản có mô hình nội dung $3 được tuần tự hóa theo định dạng $4.',
+'import-error-bad-location' => 'Không thể lưu giữ phiên bản $2 với mô hình nội dung $3 vào “$1” trên wiki này vì trang này không hỗ trợ mô hình đó.',
'import-options-wrong' => '{{PLURAL:$2|Tùy chọn|Các tùy chọn}} có vấn đề: <nowiki>$1</nowiki>',
'import-rootpage-invalid' => 'Trang đích không hợp lệ.',
'import-rootpage-nosubpage' => 'Không gian tên “$1” của trang gốc không cho phép các trang con.',
'tooltip-pt-watchlist' => 'Thay đổi của các trang tôi theo dõi',
'tooltip-pt-mycontris' => 'Danh sách các đóng góp của tôi',
'tooltip-pt-login' => 'Đăng nhập sẽ có lợi hơn, tuy nhiên không bắt buộc.',
-'tooltip-pt-anonlogin' => 'Không đăng nhập vẫn tham gia được, tuy nhiên đăng nhập sẽ lợi hơn.',
'tooltip-pt-logout' => 'Đăng xuất',
'tooltip-ca-talk' => 'Thảo luận về trang này',
'tooltip-ca-edit' => 'Bạn có thể sửa được trang này! (Xin vui lòng xem trước trước khi lưu.)',
'version-hook-name' => 'Tên hook',
'version-hook-subscribedby' => 'Được theo dõi bởi',
'version-version' => '(Phiên bản $1)',
-'version-license' => 'Giấy phép bản quyền',
+'version-license' => 'Giấy phép MediaWiki',
+'version-ext-license' => 'Giấy phép',
+'version-ext-colheader-name' => 'Phần mở rộng',
+'version-ext-colheader-version' => 'Phiên bản',
+'version-ext-colheader-license' => 'Giấy phép',
+'version-ext-colheader-description' => 'Miêu tả',
+'version-ext-colheader-credits' => 'Tác giả',
+'version-license-title' => 'Giấy phép $1',
+'version-license-not-found' => 'Không tìm thấy chi tiết giấy phép của phần mở rộng này.',
+'version-credits-title' => 'Ghi công $1',
+'version-credits-not-found' => 'Không tìm thấy chi tiết ghi công của phần mở rộng này.',
'version-poweredby-credits' => "Wiki này chạy trên '''[https://www.mediawiki.org/ MediaWiki]''', bản quyền © 2001–$1 $2.",
'version-poweredby-others' => 'những người khác',
'version-poweredby-translators' => 'các biên dịch viên translatewiki.net',
'api-error-overwrite' => 'Không được ghi đè một tập tin đã tồn tại.',
'api-error-stashfailed' => 'Lỗi nội bộ: Máy chủ bị thất bại trong việc lưu giữ tập tin tạm.',
'api-error-publishfailed' => 'Lỗi nội bộ: Máy chủ bị thất bại trong việc xuất bản tập tin tạm.',
+'api-error-stasherror' => 'Đã xuất hiện lỗi khi tải tập tin lên hàng đợi.',
'api-error-timeout' => 'Máy chủ không đáp ứng trong thời gian dự kiến.',
'api-error-unclassified' => 'Gặp lỗi không ngờ',
'api-error-unknown-code' => 'Lỗi không rõ: “$1”',
'expand_templates_generate_rawhtml' => 'Hiển thị HTML thô',
'expand_templates_preview' => 'Xem trước',
+# Unknown messages
+'createaccount-hook-aborted' => '$1',
+'uploadinvalidxml' => 'Không thể phân tích mã XML trong tập tin tải lên.',
);
$messages = array(
# User preference toggles
'tog-underline' => 'Linggs undârschdrajchn:',
-'tog-justify' => 'Dhägsd in Blogsads',
'tog-hideminor' => 'Glaane ändrungn ned ôôdsajchn',
'tog-hidepatrolled' => 'Ned dsajchn in dâ „Ledschdâ Ändrungn“, was an andrar schon brüüfd had',
-'tog-showtoc' => 'Inhalds-fârdsajchnis ôôdsajchn baj määr wi 3 iiwârschrifdn',
'tog-rememberpassword' => 'Uf dem Ghombjuudâr schdändich ôôgmäld blajwn (for a maximum of $1 {{PLURAL:$1|day|days}})',
'tog-watchcreations' => 'Ale fon miir sälwâr gmachdn sajdn soln uf mâj beoobachdungs-lischdn',
'tog-watchdefault' => 'Ale fon miir gändârdnd sajdn soln uf mâj beoobachdungs-lischdn',
'lineno' => 'Dsajln $1:',
'compareselectedversions' => 'Ausgwäälde wärsjoona fârglajchn',
'editundo' => 'riggängich machng',
-'diff-multi' => '({{PLURAL:$1|A dazwischaliengde Version|$1 dazwischaliengde Versiona}} von {{PLURAL:$2|am Nutzer|$2 Nutzern}} {{PLURAL:$1|wird|werrn}} ned ozeichd)',
# Search results
'searchresults' => 'Bam suchng gfundne sachng',
'rows' => 'Soofiil dsajln:',
'columns' => 'Soofiil schbaldn',
'searchresultshead' => 'Suuchn',
-'resultsperpage' => 'Broo rudsch dsajchn:',
'recentchangesdays' => 'Wiifiil dääch dsrig baj „Ledschdn ändrungn“',
'recentchangesdays-max' => 'Hegschdns $1 {{PLURAL:$1|daach|dääch}}',
'recentchangescount' => 'Wiifiil ändrungn dsrig baj „Ledschdn ändrungn“',
$messages = array(
# User preference toggles
'tog-underline' => 'Dislienükön yümis:',
-'tog-justify' => 'Lonedükön bagafis',
'tog-hideminor' => 'Klänedön redakamis pülik su lised votükamas nulik',
'tog-hidepatrolled' => 'Klänedön redakamis pezepöl in lised votükamas nulik.',
'tog-newpageshidepatrolled' => 'Klänedön padis pezepöl in lised padas nulik',
'tog-numberheadings' => 'Givön itjäfidiko nümis dilädatiädes',
'tog-showtoolbar' => 'Jonön redakamastumemi',
'tog-editondblclick' => 'Dälön redakön padis pö drän telik mugaknopa',
-'tog-editsection' => 'Dälön redakami dilädas me yüms: [redakön]',
'tog-editsectiononrightclick' => 'Dälön redakami diläda me klik mugaknopa detik su dilädatiäds',
-'tog-showtoc' => 'Jonön ninädalisedi (su pads labü diläds plu 3)',
'tog-rememberpassword' => 'Dakipolös nunädamanünis obik in bevüresodatävöm at (muiko {{PLURAL:$1|del|dels}} $1)',
'tog-watchcreations' => 'Läükön padis fa ob pejafölis e ragivis fa ob pelöpükölis lä galädalised obik',
'tog-watchdefault' => 'Läükön padis e ragivis fa ob peredakölis la galädalised obik',
'compareselectedversions' => 'Leigodolöd fomamis pevälöl',
'showhideselectedversions' => 'Jonön/klänedön fomamis pevälöl',
'editundo' => 'sädunön',
-'diff-multi' => '({{PLURAL:$1|Revid vüik bal|Revids vüik $1}} fa {{PLURAL:$2|geban bal|gebans $2}} no {{PLURAL:$1|pejonon|pejonons}})',
# Search results
'searchresults' => 'Sukaseks',
'rows' => 'Kedets:',
'columns' => 'Padüls:',
'searchresultshead' => 'Suk',
-'resultsperpage' => 'Tiäds petuvöl a pad:',
'stub-threshold' => 'Soliad pro fomätam <a href="#" class="stub">sidayümas</a> (jöläts):',
'recentchangesdays' => 'Dels ad pajonön in votükams nulik:',
'recentchangesdays-max' => '(maxum: {{PLURAL:$1|del|dels}} $1)',
'nolinkstoimage' => 'Pads nonik peyümons ad ragiv at.',
'morelinkstoimage' => 'Logolös [[Special:WhatLinksHere/$1|yümis pluik]] ad ragiv at.',
'linkstoimage-redirect' => '$1 (lüodükam ragiva) $2',
-'duplicatesoffile' => '{{Plural:$1|Ragiv fovik leigon|Ragivs fovik $1 leigons}} ko ragiv at ([[Special:FileDuplicateSearch/$2|nüns pluik]]):',
+'duplicatesoffile' => '{{PLURAL:$1|Ragiv fovik leigon|Ragivs fovik $1 leigons}} ko ragiv at ([[Special:FileDuplicateSearch/$2|nüns pluik]]):',
'sharedupload' => 'Ragiv at binon se $1 e kanon pagebön fa proyegs votik.',
'sharedupload-desc-here' => 'Ragiv at kömon de $1 e kanon pagebön fa proyegs votik.
Bepenot su [$2 pad bepenota ragiva] onik pajonon dono.',
'watchmethod-list' => 'vestigam votükamas brefabüik padas galädaliseda',
'watchlistcontains' => 'Galädalised olik labon {{PLURAL:$1|padi|padis}} $1.',
'iteminvalidname' => "Fikul tefü el '$1': nem no lonöföl...",
-'wlnote' => "Is palisedons votükam{{PLURAL:$1| lätik|s lätik '''$1'''}} dü düp{{PLURAL:$2| lätik|s lätik '''$2'''}}.",
'wlshowlast' => 'Jonolöd: düpis lätik $1, delis lätik $2, $3',
'watchlist-options' => 'Paramets galädaliseda',
'tooltip-pt-watchlist' => 'Lised padas, kö galädol tefü votükams',
'tooltip-pt-mycontris' => 'Lised keblünotas olik',
'tooltip-pt-login' => 'Binos gudik, ab no bligik, ad nunädön oyi.',
-'tooltip-pt-anonlogin' => 'Binos gudik - ab no zesüdik - ad nunädön oli.',
'tooltip-pt-logout' => 'Senunädön oki',
'tooltip-ca-talk' => 'Bespik dö ninädapad',
'tooltip-ca-edit' => 'Kanol redakön padi at. Gebolös, begö! büologedi bü dakip.',
'lineno' => 'Viiru $1:',
'compareselectedversions' => 'Võrrõõ valitsõttuit verzijoit',
'editundo' => 'kummut',
-'diff-multi' => 'Eb õõ näütettü {{PLURAL:$1|õsa-võttaja|õsa-võttajije}} {{PLURAL:$2|$2 väli-verssija $1|väli-verssijad $1}}',
# Search results
'searchresults' => 'Etsüü tulõmuhsõd',
$messages = array(
# User preference toggles
'tog-underline' => 'Lingiq ala tõmmadaq',
-'tog-justify' => 'Lõiguveereq sirgõs',
'tog-hideminor' => 'Käkiq perämäidsin muutmiisin ärq väikuq parandusõq',
'tog-hidepatrolled' => 'Käkiq perämäidsi muutmiisi nimekirän ärq muutmisõq, miä ommaq perräkaemisnimekirän',
'tog-newpageshidepatrolled' => 'Käkiq vahtsidõ lehti nimekirän ärq ülekaeduq leheq',
'tog-extendwatchlist' => 'Laendaq perräkaemisnimekirjä, et nätäq kõiki muutmiisi, mitte õnnõ kõgõ perämäidsi',
-'tog-usenewrc' => 'Laendõduq perämädseq muutmisõq (vaia JavaScripti)',
+'tog-usenewrc' => 'Sordiq viimädseq muutmisõq ja muutmisnimekirän leheküle perrä',
'tog-numberheadings' => 'Päälkirjo automaatnummõrdus',
-'tog-showtoolbar' => 'Näütäq toimõndusõ riistakasti',
-'tog-editondblclick' => 'Artiklidõ toimõndaminõ topõltklõpsu pääle (JavaScript)',
-'tog-editsection' => 'Lupaq lõikõ toimõndaq [toimõndaq]-linkõga',
-'tog-editsectiononrightclick' => 'Lupaq lõikõ toimõndaq hüäpoolidsõ klõpsutusõga <br /> lõigu päälkirä pääl (JavaScript)',
-'tog-showtoc' => 'Näütäq sisukõrda (rohkõmb ku kolmõ vaihõpäälkiräga lehile)',
+'tog-showtoolbar' => 'Näütäq toimõndusõ tüüriistaripa',
+'tog-editondblclick' => 'Toimõndaq artikliid topõltklõpsu pääle',
+'tog-editsectiononrightclick' => 'Lupaq lõikõ toimõndaq hüäpoolidsõ klõpsutusõga lõigu päälkirä pääl',
'tog-rememberpassword' => 'Salasõna miildejätmine tulõvaidsis kõrros (kõgõ inämb $1 {{PLURAL:$1|pääväs|pääväs}})',
-'tog-watchcreations' => 'Panõq mu luuduq leheq mu perräkaemisnimekirjä',
-'tog-watchdefault' => 'Kaeq vahtsidõ ja muudõtuidõ artiklidõ perrä',
-'tog-watchmoves' => 'Panõq mu ümbrenõstõduq leheküleq mu perräkaemisnimekirjä',
+'tog-watchcreations' => 'Panõq muq luuduq leheq ja üleslaadiduq teedüstüq muq perräkaemisnimekirjä',
+'tog-watchdefault' => 'Panõq perräkaemisnimekirjä muq muudõduq leheq ja teedüstüq',
+'tog-watchmoves' => 'Panõq muq ümbrenõstõduq leheq ja teedüstüq muq perräkaemisnimekirjä',
'tog-watchdeletion' => 'Panõq mu kistutõduq leheküleq mu perräkaemisnimekirjä',
'tog-minordefault' => 'Märgiq kõik parandusõq vaikimiisi väikeisis paranduisis',
'tog-previewontop' => 'Näütäq proovikaehust inne, mitte perän toimõnduskasti',
'tog-shownumberswatching' => "Näütäq, ku pall'o pruukjit taa lehe perrä kaes",
'tog-oldsig' => 'Parhillanõ alakirotus:',
'tog-fancysig' => 'Pruugiq vikiteksti moodulist alakirotust (ilma automaatsõ lingildä)',
-'tog-uselivepreview' => 'Pruugiq kipõkaehust (JavaScript) (proomi)',
+'tog-uselivepreview' => 'Pruugiq õkvakipõkaehust (proomivõimalus)',
'tog-forceeditsummary' => 'Annaq teedäq, ku olõ-i kirotõt kokkovõtõt',
'tog-watchlisthideown' => 'Näüdäku-i perräkaemisnimekirän mu hindä toimõnduisi',
'tog-watchlisthidebots' => 'Näüdäku-i perräkaemisnimekirän robotidõ toimõnduisi',
'tog-diffonly' => 'Näüdäku-i lahkominekide lehe all lehe täüt sissu',
'tog-showhiddencats' => 'Näütäq käkitüid katõgoorijit',
'tog-norollbackdiff' => 'Päält tagasivõtmist näüdäku-i lahkominekiid',
+'tog-useeditwarning' => 'Hoiadaq minno, ku ma lääq lehe päält ärq ilma ummi muutmiisi ärq pästmäldä',
+'tog-prefershttps' => 'Pruugiq nimega sisseminemises kõgõ kaidsõtut ütistüst',
'underline-always' => 'Kõgõ',
'underline-never' => 'Ei kunagi',
'oct' => 'rehek',
'nov' => 'märtek',
'dec' => 'jouluk',
+'january-date' => '$1. vahtsõaastakuu päiv',
+'february-date' => '$1. radokuu päiv',
+'march-date' => '$1. urbõkuu päiv',
+'april-date' => '$1. mahlakuu päiv',
+'may-date' => '$1. lehekuu päiv',
+'june-date' => '$1. piimäkuu päiv',
+'july-date' => '$1. hainakuu päiv',
+'august-date' => '$1. põimukuu päiv',
+'september-date' => '$1. süküskuu päiv',
+'october-date' => '$1. rehekuu päiv',
+'november-date' => '$1. märtekuu päiv',
+'december-date' => '$1. joulukuu päiv',
# Categories related messages
'pagecategories' => '{{PLURAL:$1|Katõgooria|Katõgooriaq}}',
'newwindow' => '(tulõ vallalõ vahtsõn aknõn)',
'cancel' => 'Jätäq katski',
'moredotdotdot' => 'Viil...',
+'morenotlisted' => 'Seo nimekiri olõ-õi tävveline.',
'mypage' => 'Muq lehekülg',
'mytalk' => 'Arotus',
'anontalk' => 'Seo puutri võrgoaadrõsi arotus',
'vector-action-protect' => 'Kaidsaq',
'vector-action-undelete' => 'Tiiq tagasi',
'vector-action-unprotect' => 'Muudaq kaidsõt',
-'vector-simplesearch-preference' => 'Lupaq tävvendedüid otsmispakmiisi (õnnõ Vektori-kujundusõn)',
+'vector-simplesearch-preference' => 'Lupaq lihtsüstedüt otsmisripa (õnnõ Vektor-kujondusõn)',
'vector-view-create' => 'Luuq',
'vector-view-edit' => 'Toimõndaq',
'vector-view-history' => 'Näütäq aoluku',
'namespaces' => 'Nimeruumiq',
'variants' => 'Tõõsõndiq',
+'navigation-heading' => 'Juhtmisvaliguq',
'errorpagetitle' => 'Viga',
'returnto' => 'Tagasi lehe manoq $1.',
'tagline' => 'Läteq: {{SITENAME}}',
'create-this-page' => 'Luuq seo leht',
'delete' => 'Kistudaq ärq',
'deletethispage' => 'Kistudaq seo artikli ärq',
+'undeletethispage' => 'Tiiq seo leht tagasi',
'undelete_short' => 'Võtaq tagasi {{PLURAL:$1|üts muutminõ|$1 muutmist}}',
'viewdeleted_short' => 'Kaeq {{PLURAL:$1|ütte|$1}} kistutõdut redaktsiooni',
'protect' => 'Kaidsaq',
# 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).
'aboutsite' => '{{SITENAME}} tutvustus',
'aboutpage' => 'Project:Pääteedüs',
-'copyright' => 'Teksti või vabalt pruukiq litsendsi $1 perrä.',
+'copyright' => 'Teksti või vabalt pruukiq litsendsi $1 perrä, ku olõ-õi tõisildõ üteld.',
'copyrightpage' => '{{ns:project}}:Tegijäõigusõq',
'currentevents' => 'Miä sünnüs',
'currentevents-url' => 'Project:Miä sünnüs',
'disclaimers' => 'Hoiatuisi',
'disclaimerpage' => 'Project:Üledseq hoiatusõq',
'edithelp' => 'Toimõndamisoppus',
-'helppage' => 'Help:Oppus',
+'helppage' => 'Help:Sisukõrd',
'mainpage' => 'Pääleht',
'mainpage-description' => 'Pääleht',
'policy-url' => 'Project:Säädüseq',
'ok' => 'Hää külh',
'retrievedfrom' => 'Vällä otsit teedüskogost "$1"',
'youhavenewmessages' => 'Sul om $1 ($2).',
+'youhavenewmessagesfromusers' => 'Sullõ om $1 {{PLURAL:$3|ütelt|$3}} pruukjalt ($2).',
+'youhavenewmessagesmanyusers' => "Sullõ om $1 pall'odõlt pruukjilt ($2).",
+'newmessageslinkplural' => '{{PLURAL:$1|vahtsõnõ sõnnom|999=vahtsit sõnomit}}',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|viimäne muutminõ|999=viimädseq muutmisõq}}',
'youhavenewmessagesmulti' => 'Sullõ om vahtsit sõnomit lehe pääl $1',
'editsection' => 'toimõndaq',
'editold' => 'toimõndaq',
'page-rss-feed' => '$1 (RSS-söödüs)',
'page-atom-feed' => '$1 (Atom-söödüs)',
'red-link-title' => '$1 (säänest lehte olõ-i)',
+'sort-descending' => 'Panõq alanõvahe järekõrda',
+'sort-ascending' => 'Panõq nõsõvahe järekõrda',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'Artikli',
# General errors
'error' => 'Viga',
'databaseerror' => 'Teedüskogo viga',
+'databaseerror-text' => "Teedüskogost perräküsümise man oll' viga.
+Viga või ollaq tarkvaran.",
+'databaseerror-textcl' => "Teedüskogost perräküsümise man oll' viga.",
+'databaseerror-query' => 'Perräküsümine: $1',
+'databaseerror-function' => 'Ülesannõq: $1',
'databaseerror-error' => 'Viga: $1',
'laggedslavemode' => 'Hoiatus: Taa lehe pääl pruugi-i ollaq perämäidsi muutmiisi.',
'readonly' => 'Teedüskogo kirotuskaitsõ all',
'readonly_lag' => 'Teedüskogo panti automaatsõhe kinniq, et kõik teedüskogoserveriq saasiq kätte kõik värskiq muutmisõq',
'internalerror' => 'Sisemäne viga',
'internalerror_info' => 'Viga: $1',
+'fileappenderrorread' => 'Teedüstüt "$1" saa-as manopandmisõ aol lukõq.',
+'fileappenderror' => 'Teedüstüt "$1" saa-as manoq pandaq teedüstüle "$2".',
'filecopyerror' => 'Es saaq teedüstüt "$1" teedüstüs "$2" kopidaq.',
'filerenameerror' => 'Es saaq teedüstüt "$1" teedüstüs "$2" ümbre nimetäq.',
'filedeleteerror' => 'Teedüstüt nimega "$1" saa-i ärq kistutaq.',
'badarticleerror' => 'Taad tallitust saa ei seo leheküle pääl tetäq.',
'cannotdelete' => 'Lehekülge vai pilti "$1" saa ei ärq kistutaq.
Või-ollaq kiäki tõõnõ jo kistut\' taa ärq.',
+'cannotdelete-title' => 'Lehekülge "$1" saa-ai ärq kistutaq',
'badtitle' => 'Viganõ päälkiri',
'badtitletext' => "Küsüt artiklipäälkiri oll' kas viganõ, tühi vai sis
võlssi näüdät kiili- vai wikidevaihõlinõ päälkiri.",
-'perfcached' => 'Järgmäne teedüs om puhvõrdõt ja pruugi ei ollaq kõgõ värskimb. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
-'perfcachedts' => 'Järgmäne teedüs om puhvõrdõt ja om viimäte muudõt $1. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
+'perfcached' => 'Järgmäne teedüs om puhvõrdõt ja pruugi ei ollaq kõgõ värskimb.
+Puhvrin om {{PLURAL:$1|üts tullõm|$1 tulõmit}}.',
+'perfcachedts' => 'Järgmõne teedüs om vaihõmälon. Viimäne vahtsõndamisaig: $2, kell $3. Puhvrin om kooniq {{PLURAL:$4|üts tullõm|$4 tulõmit}}.',
'querypage-no-updates' => 'Taad lehe teedüst parhilla värskis ei tetäq.',
'viewsource' => 'Kaeq lätteteksti',
+'viewsource-title' => 'Lehe $1 lätteteksti kaeminõ',
'actionthrottled' => 'Tallitusõ kibõhus piirõt',
'actionthrottledtext' => "Taa tallitusõ mitmit kõrdo tegemine om prahipandjidõ peräst ärq keelet. Olõt taad lühkü ao seen pall'o hulga tennüq. Prooviq veidükese ao peräst vahtsõst.",
-'protectedpagetext' => 'Taa lehekülg om kirotuskaidsõt.',
+'protectedpagetext' => 'Taa lehekülg om kirotuskaidsõt, taad saa-ai muutaq.',
'viewsourcetext' => 'Võit kaiaq ja kopidaq taa lehe lättekoodi:',
-'protectedinterface' => "Taa lehe pääl om tarkvara pruukjapalgõ tekst. Leht om lukku pant, et taad saasi-i ärq ts'urkiq.",
-'editinginterface' => "'''Hoiatus:''' Sa toimõndat tarkvara pruukjapalgõ tekstiga lehte. Ku siin midä muudat, mõotas tuu pruukjapalõt. Ümbrepandmisõs tasos pruukiq MediaWiki ümbrepandmisõ tüüriista [//translatewiki.net/wiki/Main_Page?setlang=fiu-vro translatewiki.net].",
+'viewyourtext' => "Saat kaiaq ja kopidaq noidõ muutmiisi lätteteksti, miä sa seo lehe pääle '''esiq''' tennüq olõt:",
+'protectedinterface' => "Taa lehe pääl om tarkvara pruukjapalgõ tekst. Leht om lukku pant, et taad saasi-i ärq ts'urkiq.
+Ku tahat tetäq ümbrepandmiisi (midä pruukvaq kõik vikiq) pruugiq tuus MediaWiki ümbrepandmisõ tüükeskkunda [//translatewiki.net/ translatewiki.net].",
+'editinginterface' => "'''Hoiatus:''' Sa toimõndat tarkvara pruukjapalgõ tekstiga lehte. Ku siin midä muudat, mõotas tuu pruukjapalõt. Ümbrepandmisõs tasos pruukiq MediaWiki ümbrepandmisõ tüükeskkunda [//translatewiki.net/ translatewiki.net].",
'cascadeprotected' => 'Taa leht om kirotuskaidsõt, selle et taa {{PLURAL:$1|kuulus alanolõvidõ kaidsõtuidõ lehti hulka|kuulus alanolõvidõ kaidsõtuidõ lehti hulka}}:
$2',
'namespaceprotected' => "Sul olõ-i lubat toimõndaq nimeruumi '''$1''' lehti.",
'createaccount' => 'Tiiq pruukjanimi ärq',
'gotaccount' => "Ku sul jo om uma pruukjanimi, sis '''$1'''.",
'gotaccountlink' => 'võit nimega sisse minnäq',
+'userlogin-resetlink' => 'Kas olõt uma salasõna ärq unõhtanuq?',
'createaccountmail' => 'e-postiga',
'createaccountreason' => 'Põhjus:',
'badretype' => 'Kirotõduq salasõnaq ei klapiq kokko.',
'wrongpassword' => 'Kirotõt võlss salasõna. Prooviq vahtsõst.',
'wrongpasswordempty' => 'Salasõna tohe-i tühi ollaq.',
'passwordtooshort' => "Salasõna om viganõ vai pall'o lühkü. Taan piät olõma vähämbält {{PLURAL:$1|1 märk|$1 märki}} ja taa tohe-i ollaq sama, miä su pruukjanimi.",
-'mailmypassword' => 'Saadaq mullõ e-postiga vahtsõnõ salasõna',
+'mailmypassword' => 'Vahtsõndaq umma salasõnna',
'passwordremindertitle' => '{{SITENAME}} salasõna miildetulõtus',
'passwordremindertext' => 'Kiäki (arvadaq saq esiq, puutri võrgonummõr $1),
pallõl\' vahtsõt sisseminegi salasõnna {{SITENAME}} ($4) jaos.
'bold_tip' => 'Paks kiri',
'italic_sample' => 'Liuhkakiri',
'italic_tip' => 'Liuhkakiri',
-'link_sample' => 'Lingitäv päälkiri',
+'link_sample' => 'Lingi päälkiri',
'link_tip' => 'Siselink',
'extlink_sample' => 'http://www.example.com Lingi nimi',
'extlink_tip' => 'Välislink (unõhtagu-i ette pandaq http://)',
'noarticletext' => 'Seo leht om parlaq tühi.
Võit [[Special:Search/{{PAGENAME}}|otsiq soe lehe nimme]] tõisi lehti päält vai
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} uuriq muutmisnimekirjo] vai [{{fullurl:{{FULLPAGENAME}}|action=edit}} puuduolõva leheküle esiq luvvaq]</span>.',
+'noarticletext-nopermission' => 'Seo lehe pääl olõ-õi parlaq teksti.
+Võit [[Special:Search/{{PAGENAME}}|otsiq soe lehe nimme]] tõisi lehti päält vai
+<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} uuriq muutmisnimekirjo]</span>, a sul olõ-õi õigust seod lehte alostaq.',
'userpage-userdoesnotexist' => 'Pruukjanimme "<nowiki>$1</nowiki>" olõ-i kirjä pant. Kaeq perrä, kas olõt iks kimmäs, et tahat taad lehte toimõndaq.',
'userpage-userdoesnotexist-view' => 'Pruukjanimme "$1" olõ-õi kirjä pant.',
'clearyourcache' => "'''Panõq tähele:''' perän pästmist piät muutmiisi nägemises uma võrgokaeja vaihõmälo tühäs tegemä. '''Mozillal / Firofoxil / Safaril''' hoiaq all nõstmisnuppi ''Shift'' ja vaodaq ''Reload'' vai ''Ctrl-R'' (Macil ''Command-R''); Konqueroril vaodaq ''Reload'' vai ''F5''. Operal puhastaq vaihõmälo ja võtaq valikust ''Tools → Preferences''. Internet Exploreril hoiaq ''Ctrl'' ja vaodaq ''Refresh'' vai vaodaq ''ctrl-f5''.",
'userinvalidcssjstitle' => "'''Miildetulõtus:''' Olõ-i stiili nimega \"\$1\". Piäq meelen, et pruukja säedüq .css- and .js-leheq piät nakkama väiku algustähega.",
'updated' => '(Värskis tett)',
'note' => "'''Miildetulõtus:'''",
-'previewnote' => "'''Taa om õnnõ proovikaehus; muutmisõq olõ-i pästedüq!'''",
+'previewnote' => "'''Seo om õnnõ proovikaehus!'''
+Suq tettüq muutmisõq olõ-õi viil pästedüq!",
'previewconflict' => "Taa proovikaehus näütäs, kuis ülembädsen toimõtuskastin ollõv tekst' päält pästmist vällä nägemä nakkas.",
'session_fail_preview' => "'''Annaq andis! Su toimõndust saa-s pästäq, selle et su tüükõrra teedüs om kaoma lännüq. Olõq hää, proomiq viilkõrd. Ku tuust olõ-i kassu, proomiq nii, et läät nime alt vällä ja sis jälq tagasi sisse.'''",
'session_fail_preview_html' => "'''Annaq andis, mi saa-i tallitaq su toimõndust, selle et toimõnduskõrra teedüs om kaoma lännüq.'''
'permissionserrorstext-withaction' => 'Sul olõ-õi lubat {{lcfirst:$2}} {{PLURAL:$1|järgmädsel põhjusõl|järgmäidsil põhjuisil}}:',
'recreate-moveddeleted-warn' => "'''Hoiatus: Sa proovit vahtsõst luvvaq lehte, miä om ärq kistutõt.'''
-Kas tahat taad lehte tõtõstõ toimõndaq? Kaeq ka sissekirotust seo lehe ärqkistutamisõ kotsilõ:",
+Märgiq perrä, kas tahat taad lehte tõtõstõ luvvaq.
+Tan ommaq nätäq seo lehe innembädseq ärqkistutamisõq ja tõistõ paika pandmisõq:",
+'moveddeleted-notice' => 'Seo leht om ärq kistutõt.
+Tan om lehe kistutamiisi ja tõistõ paika pandmiisi nimekiri.',
'edit-conflict' => 'Samaaignõ toimõndus.',
# Parser/template warnings
'post-expand-template-inclusion-warning' => "'''Hoiatus:''' Pruugitavidõ näüdüsside maht om pall'o suur.
Tuuperäst ossa näüdüssit näüdädä-äi.",
'post-expand-template-inclusion-category' => 'Leheküleq, mil om näüdüsside mahupiir ületet',
+'post-expand-template-argument-warning' => "'''Hoiatus:''' Seo lehe pääl om näüdüs, mil vähämbält üts muutuja om määrät pall'o suurõs.
+Sääntseq muutujaq ommaq vaihõlõ jätedüq.",
+'post-expand-template-argument-category' => 'Leheq, kon om näüdüsside seen vaihõlõjätetüisi muutujit',
# "Undo" feature
'undo-success' => "Tagasivõtminõ läts' kõrda. Kaeq üle, kas taa om tuu, midä sa tetäq tahtsõt ja pästäq muutusõq.",
(minev) = lahkominegiq minevädsest kujost, ts = väiku (tsill'okõnõ) muutminõ",
'history-fieldset-title' => 'Kaeq muutmiisi aoluku',
'history-show-deleted' => 'Õnnõ kistutõduq',
-'histfirst' => 'Edimädseq',
-'histlast' => 'Viimädseq',
+'histfirst' => 'Kõgõ vanõmbaq',
+'histlast' => 'Kõgõ vahtsõmbaq',
'historysize' => '({{PLURAL:$1|1 bait|$1 baiti}})',
'historyempty' => '(tühi)',
'revertmerge' => 'Lüüq jälki lahko',
# Diffs
-'history-title' => '"$1" muutmiisi nimekiri',
+'history-title' => 'Lehekülje "$1" muutmiisi aolugu',
'lineno' => 'Rida $1:',
'compareselectedversions' => 'Võrdõlõq valituid kujjõ',
'editundo' => 'võtaq tagasi',
-'diff-multi' => '(Kujjõ vaihõl {{PLURAL:$1|üts näütämäldä muutminõ|$1 näütämäldä muutmist}}.)',
# Search results
-'searchresults' => 'Otsmisõ tulõmusõq',
+'searchresults' => 'Otsmisõ tulõmiq',
'searchresults-title' => 'Otsmisõ "$1" tulõmiq',
'titlematches' => "Artiklipäälkir'ost löüt",
'textmatches' => 'Artiklitekstest löüt',
'nextn-title' => '{{PLURAL:$1|Järgmäne tulõmus|Järgmädseq $1 tulõmust}}',
'shown-title' => 'Näütäq lehe kotsilõ $1 {{PLURAL:$1|tulõmus|tulõmust}}',
'viewprevnext' => 'Näütäq ($1 {{int:pipe-separator}} $2) ($3).',
+'searchmenu-exists' => "'''Lehekülg päälkiräga \"[[:\$1]]\" om olõman.''' {{PLURAL:\$2|0=|Kaeq ka tõisi otsmistulõmit.}}",
'searchmenu-new' => "'''Luuq leht päälkiräga \"[[:\$1]]\".'''",
'searchprofile-articles' => 'Sisuleheq',
'searchprofile-project' => 'Abi- ja projektileheq',
'rows' => 'Rito',
'columns' => 'Tulpõ',
'searchresultshead' => 'Otsminõ',
-'resultsperpage' => 'Tulõmuisi leheküle kotsilõ',
'stub-threshold' => '<a href="#" class="stub">Kehväkese lehe</a> näütämispiir (baidõn):',
'recentchangesdays' => 'Päivi, midä näüdädäq viimätsin muutmiisin',
'recentchangescount' => 'Päälkirjo hulk viimätsin muutmiisin',
Taa tohe-i ollaq rohkõmb ku $1 {{PLURAL:$1|märk|märki}}.",
'email' => 'e-posti aadrõs',
'prefs-help-realname' => "* <strong>Peris nimi</strong> (piä-i kirotama): ku taa teedäq annat, sis pruugitas taad pruukjanime asõmõl lehekülgi tegijide nimekir'on.",
-'prefs-help-email' => 'E-postiaadrõssit piä-i kirotama, a taa lupa tõisil pruukjil sullõ kirotaq ilma su aadrõssit nägemäldäq. Taast om sis kah kassu, ku uma salasõna ärq johtut unõhtama.',
+'prefs-help-email' => 'E-postiaadrõssit piä-i kirotama, a taa lupa sul telliq vahtsõ salasõna, ku uma salasõna ärq johtut unõhtama.',
+'prefs-help-email-others' => 'Nii saavaq ka tõõsõq pruukjaq sullõ kirotaq lingi kaudu su arotuslehe pääl
+ilma, et nä näesiq suq e-posti-aadrõssit.',
'prefs-help-email-required' => 'E-postiaadrõs piät olõma.',
# User rights
'rclistfrom' => 'Näütäq muutmiisi kuupääväst $1 pääle',
'rcshowhideminor' => '$1 väikuq parandusõq',
'rcshowhidebots' => '$1 robodiq',
-'rcshowhideliu' => '$1 nimega pruukjaq',
+'rcshowhideliu' => '$1 nimega pruukjat',
'rcshowhideanons' => '$1 nimeldä pruukjaq',
'rcshowhidepatr' => '$1 kontrolliduq muutmisõq',
'rcshowhidemine' => '$1 mu toimõndusõq.',
'number_of_watching_users_pageview' => '[{{PLURAL:$1|$1 perräkaejat|üts perräkaeja}}]',
'rc_categories' => 'Õnnõ katõgoorijist (eräldedäs märgiga "|")',
'rc_categories_any' => 'Miä taht',
-'rc-enhanced-expand' => 'Näütäq ütsikasjo (nõud JavaScripti)',
+'rc-enhanced-expand' => 'Näütäq ütsikasjo',
'rc-enhanced-hide' => "Käkiq ütsikas'aq ärq",
# Recent changes linked
'listfiles_description' => 'Seletüs',
# File description page
-'file-anchor-link' => 'Pilt',
+'file-anchor-link' => 'Teedüstü',
'filehist' => 'Teedüstü aolugu',
'filehist-help' => "Klõpsaq kuupäävä/kelläao pääl, et nätäq määne taa teedüstü sis oll'.",
'filehist-deleteall' => 'kistudaq kõik ärq',
'protectedpages' => 'Kaidsõduq leheq',
'protectedpagesempty' => 'Olõ-i kaidsõtuid lehti.',
'listusers' => 'Pruukjaq',
+'usercreated' => '{{GENDER:$3|Luud}} $1 kell $2',
'newpages' => 'Vahtsõq leheküleq',
'newpages-username' => 'Pruukjanimi:',
'ancientpages' => 'Kõgõ vanõmbaq leheküleq',
# Special:LinkSearch
'linksearch' => 'Välislingiq',
'linksearch-ok' => 'Otsminõ',
+'linksearch-line' => '$1 on lingit lehekülelt $2',
# Special:ListUsers
'listusersfrom' => 'Näütäq pruukjit alostõn:',
'watchmethod-list' => 'perräkaetavidõ lehti perämädseq muutmisõq',
'watchlistcontains' => 'Perräkaemisnimekirän om $1 {{PLURAL:$1|leht|lehte}}.',
'iteminvalidname' => "Hädä lehega '$1'! Lehe nimen om viga.",
-'wlnote' => "Tan om '''$1''' {{PLURAL:$1|muutminõ|muutmist}} viimädse '''$2''' tunni ao seen.",
'wlshowlast' => 'Näütäq viimädseq $1 tunni $2 päivä $3',
'watchlist-options' => 'Perräkaemisnimekirä säädmine',
'confirmdeletetext' => 'Sa kistutat teedüskogost periselt ärq lehe vai pildi üten kõgõ timä aoluuga.
Kinnüdäq, et sa tahat tuud tõtõstõ tetäq, et sa saat arvo, miä tuust tullaq või ja et tuu, miä sa tiit, klapis [[{{MediaWiki:Policy-url}}|sisekõrraga]].',
'actioncomplete' => 'Tallitus valmis',
+'actionfailed' => 'Tallitus lää-äs kõrda',
'deletedtext' => '"$1" om ärq kistutõt.
Perämäidsi kistutuisi nimekirjä näet siist: $2.',
'dellogpage' => 'Kistutõduq leheküleq',
# Namespace form on various pages
'namespace' => 'Nimeruum:',
'invert' => 'Näütäq kõiki päält validu nimeruumi',
-'blanknamespace' => '(Artikliq)',
+'blanknamespace' => '(artikliq)',
# Contributions
-'contributions' => 'Pruukja kirotusõq',
+'contributions' => '{{GENDER:$1|Pruukja}} toimõndusõq',
'contributions-title' => 'Pruukja $1 toimõndusõq',
'mycontris' => 'Hindä kirotusõq',
-'contribsub2' => 'Pruukja "$1 ($2)" kirotusõq',
+'contribsub2' => 'Pruukja {{GENDER:$3|$1}} ($2) toimõndusõq',
'nocontribs' => 'Sääntsit muutmiisi es lövväq.',
-'uctop' => '(kõgõ vahtsõmb)',
+'uctop' => '(parhillanõ)',
'month' => 'Alostõn kuust (ja varrampa):',
'year' => 'Alostõn aastagast (ja varrampa):',
'sp-contributions-newbies' => 'Näütäq õnnõ vahtsidõ pruukjidõ toimõnduisi',
'sp-contributions-newbies-sub' => 'Vahtsidõ pruukjidõ toimõndusõq',
'sp-contributions-blocklog' => 'Kinniqpidämisnimekiri',
+'sp-contributions-uploads' => 'üleslaatmisõq',
+'sp-contributions-logs' => 'muutmisnimekiräq',
'sp-contributions-talk' => 'arotus',
'sp-contributions-userrights' => 'Pruukja õiguisi muutminõ',
'sp-contributions-search' => 'Otsiq muutmiisi',
'sp-contributions-username' => 'Puutri võrgoaadrõs vai pruukjanimi:',
+'sp-contributions-toponly' => 'Näütäq õnnõ kõgõ vahtsõmbit toimõnduisi',
'sp-contributions-submit' => 'Otsiq',
# What links here
'nolinkshere-ns' => "Valitun nimeruumin näütä-i ütegi lehe päält linke lehe '''[[:$1]]''' pääle.",
'isredirect' => 'ümbresaatmislehekülg',
'istemplate' => 'pruugit näüdüssen',
-'isimage' => 'pildilink',
+'isimage' => 'teedüstülink',
'whatlinkshere-prev' => '← {{PLURAL:$1|mineväne leht|$1 mineväst lehte}}',
'whatlinkshere-next' => '{{PLURAL:$1|mineväne leht|$1 mineväst lehte}} →',
'whatlinkshere-links' => '← lingiq',
'whatlinkshere-hideredirs' => '$1 ümbresaatmisõq',
'whatlinkshere-hidetrans' => '$1 näüdüsses pruukmisõq',
'whatlinkshere-hidelinks' => '$1 lingiq',
+'whatlinkshere-hideimages' => 'Teedüstülingiq ($1)',
'whatlinkshere-filters' => 'Sõglaq',
# Block/unblock
'blocklink' => 'piäq kinniq',
'unblocklink' => 'võtaq kinniqpidämine maaha',
'change-blocklink' => 'muudaq kinniqpidämist',
-'contribslink' => 'kirotusõq',
+'contribslink' => 'toimõndusõq',
'autoblocker' => 'Olõt automaatsõhe kinniq peet, selle et jaat puutri võrgoaadrõssit pruukjaga $1. Kinniqpidämise põhjus: $2.',
'blocklogpage' => 'Kinniqpidämiisi nimekiri',
'blocklogentry' => 'pidi kinniq pruukja vai puutri võrgoaadrõsi "[[$1]]". Kinniqpidämise tähtaig $2 $3',
'tooltip-pt-watchlist' => 'Nimekiri lehist, mil tahtnuq silmä pääl hoitaq',
'tooltip-pt-mycontris' => 'Suq toimõnduisi nimekiri',
'tooltip-pt-login' => 'Mineq nimega sisse vai tiiq hindäle pruukjanimi (soovitav).',
-'tooltip-pt-anonlogin' => 'Mineq nimega sisse vai tiiq hindäle pruukjanimi (soovitav).',
'tooltip-pt-logout' => 'Mineq nime alt vällä',
'tooltip-ca-talk' => 'Arotus lehe sisu üle',
'tooltip-ca-edit' => 'Saa võit taad lehte toimõndaq.',
'file-info-size' => '$1 × $2 pikslit, $3, MIME-tüüp: $4',
'file-nohires' => 'Taast terävämpä pilti olõ-i saiaq.',
'svg-long-desc' => 'SVG-teedüstü, põhisuurus $1 × $2 pikslit, teedüstü suurus $3',
-'show-big-image' => 'Täüsterräv kujo',
+'show-big-image' => 'Algteedüstü',
# Special:NewFiles
'newimages' => 'Vahtsõq pildiq',
'metadata-help' => 'Seon teedüstün om lisateedüst, miä om arvadaq peri pildinudsijast, digikaamõrast vai pilditoimõndusprogrammist. Ku teedüstüt om peräst timä tegemist muudõt, sis pruugi-i taa teedüs inämb õigõ ollaq.',
'metadata-expand' => 'Näütäq kõiki sisuseletüisi',
'metadata-collapse' => 'Näütäq õnnõ tähtsämbit sisuseletüisi',
-'metadata-fields' => 'Naaq riaq ommaq nätäq pildilehe pääl, ku sisuseletüse tapõl om tühi.
+'metadata-fields' => 'Naid pildi metateedüse väljo näüdätäs pildi seletüslehe vähändedün kahusõn. Ülejäänüq teedüs om vaikimiisi käkit.
* make
* model
* datetimeoriginal
* imagedescription
* gpslatitude
* gpslongitude
+* gpsaltitude
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
* gpsaltitude',
# Exif tags
'watchlisttools-edit' => 'Kaeq ja toimõndaq perräkaemisnimekirjä',
'watchlisttools-raw' => 'Toimõndaq lätteteedüstüt',
+# Core parser functions
+'duplicate-defaultsort' => '\'\'\'Hoiatus:\'\'\' Sortmisvõti "$2" tühistäs ärq innembädse sortmisvõtmõ "$1".',
+
# Special:Version
'version' => 'Kujo',
'version-version' => '(Kujo $1)',
'specialpages-group-wiki' => 'Vikiteedüseq ja tüüriistaq',
'specialpages-group-redirects' => 'Ümbrenäütämistallitusleheq',
+# External image whitelist
+'external_image_whitelist' => ' #Jätäq seo rida muutmalda kujo pääle<pre>
+#Panõq regulaaravaldusõ osaq (õnnõ //-märke vaihõl ollõv jago) allapoolõ
+#Naaq pandasõq vastama vikivälitside pilte internetiaadrõssidõga
+#Nuuq, miä vastasõq, näüdätäseq ku pildiq, muido näüdätäs õnnõ pildi link
+#Märgiga # päälenakkajaq riaq ommaq kommõntaariq
+#Seo tii-i vaiht suuril ja väikeisil tähil
+
+#Panõq kõik regulaaravaldusq osaq seo joonõ kotsilõ. Jätäq seo rida muutmalda</pre>',
+
+# Special:Tags
+'tag-filter' => '[[Special:Tags|Märkmisfiltri]]:',
+
# New logging system
'rightsnone' => '(olõ-i õiguisi)',
NS_CATEGORY_TALK => 'Categoreye_copene',
);
+// Remove French aliases
+$namespaceGenderAliases = array();
+
$specialPageAliases = array(
'Allpages' => array( 'Totes_les_pådjes' ),
'Block' => array( 'Bloker', 'Blocaedje' ),
$messages = array(
# User preference toggles
'tog-underline' => 'Sorlignî les loyéns:',
-'tog-justify' => 'Djustifyî les hagnons',
'tog-hideminor' => 'Èn nén mostrer les dierins candjmints mineurs',
'tog-hidepatrolled' => 'Èn nén mostrer les candjmints ddja patrouyîs',
'tog-newpageshidepatrolled' => 'Èn nén mostrer el djivêye des novelès pådjes les cenes dedja patrouyeyes',
'tog-numberheadings' => 'Limerotaedje otomatike des tites',
'tog-showtoolbar' => "Mostrer l' bår d' usteyes e môde candjmint (JavaScript)",
'tog-editondblclick' => 'Candjî les pådjes avou on dobe-clitch (JavaScript)',
-'tog-editsection' => "Eployî les loyéns «[candjî]» po candjî rén k' ene seccion",
'tog-editsectiononrightclick' => 'Candjî les seccions avou on dobe-clitch sol tite (JavaScript)',
-'tog-showtoc' => "Mostrer l' tåvlea d' ådvins<br />(po ls årtikes avou pus di 3 seccions)",
'tog-rememberpassword' => "Rimimbrer m' sicret inte les sessions (nén dpus ki po $1 {{PLURAL:$1|djoû|djoûs}})",
'tog-watchcreations' => "Mete les pådjes ki dj' askepeye dins l' djivêye des pådjes shuvowes",
'tog-watchdefault' => "Shuve les årtikes ki dj' fwai ou ki dj' candje",
'rows' => 'Royes',
'columns' => 'Colones',
'searchresultshead' => 'Håynaedje des rzultats di cweraedje',
-'resultsperpage' => 'Nombe di responses a håyner so ene pådje',
'recentchangesdays' => 'Nombe di djoûs po les dierins candjmints:',
'recentchangesdays-max' => 'Macsimom $1 djoû{{PLURAL:$1||s}}',
'recentchangescount' => 'Prémetou nombe di candjmintstites a håyner:',
'watchmethod-list' => "Cwerant après les pådjes shuvowes k' ont stî candjeyes dierinnmint",
'watchlistcontains' => 'I gn a {{PLURAL:$1|$1 pådje|$1 pådjes}} e vosse djivêye des pådjes a shuve.',
'iteminvalidname' => "Åk n' a nén stî avou «$1», li no n' est nén valide...",
-'wlnote' => "Chal pa dzo {{PLURAL:$1|li dierin candjmint|les '''$1''' dierins candjmints}} {{PLURAL:$2|del dierinne eure|des '''$2''' dierinnès eures}}, disk' å $3 a $4.",
'wlshowlast' => 'Mostrer les dierin(nè)s $1 eures, $2 djoûs ou $3',
'watchlist-options' => 'Tchuzes del djivêye des shuvous',
'tooltip-pt-watchlist' => 'Li djivêye des pådjes ki vos shujhoz po cwand ele sont candjeyes.',
'tooltip-pt-mycontris' => 'Djivêye des ovraedjes da minne',
'tooltip-pt-login' => "Vos estoz ecoraedjî d' vos elodjî, mins nerén, c' est nén oblidjî.",
-'tooltip-pt-anonlogin' => "Vos estoz ecoraedjî d' vos elodjî, mins nerén, c' est nén oblidjî.",
'tooltip-pt-logout' => 'Vos dislodjî',
'tooltip-ca-talk' => 'Copene åd fwait do contnou del pådje',
'tooltip-ca-edit' => "Vos ploz candjî cisse pådje ci. S' i vs plait, eployîz l' boton «Vey divant» po vs acertiner k' tot est comifåt dvant d' schaper vos candjmints.",
$messages = array(
# User preference toggles
'tog-underline' => 'Bagisa ha ilarom an mga sumpay:',
-'tog-justify' => 'Ig-justify an mga parrapho',
'tog-hideminor' => 'Tago-a an mga gagmay nga pagliwat ha mga bag-o pa la nga mga kabag-ohan',
'tog-hidepatrolled' => 'Tago-a in mga gin-patrol o binantayan nga mga pagliwat ha mga dipala naiha nga mga kabag-ohan',
'tog-newpageshidepatrolled' => 'Tago-a an mga gin-patrol o binantayan nga mga pakli tikang han talaan hin bag-o nga pakli',
'tog-numberheadings' => 'Auto-nga-ihap nga mga pagngaran',
'tog-showtoolbar' => 'Igpakita an edit toolbar',
'tog-editondblclick' => 'Igliwat in mga pakli ha doble nga klik',
-'tog-editsection' => 'Tugoti in seksyon nga pagliwat pinaagi hin [igliwat] nga mga sumpay',
'tog-editsectiononrightclick' => 'Tugoti in pagliwat hin seksyon ha pag klik-ha-tuo dida hin mga ngaran o titulo hin seksyon',
-'tog-showtoc' => 'Igpakita in tabla hin sulod (para hin mga pakli nga sobra hin 3 ka titulo o pagngaran)',
'tog-rememberpassword' => 'Hinumdomi an akon pan-sakob dinhi nga browser (para hin maximum nga $1 {{PLURAL:$1|nga adlaw|nga mga adlaw}})',
'tog-watchcreations' => 'Igdugang in mga pakli nga akon ginhimo ngan mga paypay nga akon ginkarga ngadto han akon angay timan-an',
'tog-watchdefault' => 'Igdugang in mga pakli ngan mga paypay nga akon ginliwat ngadto han akon angay timan-an',
'talkpage' => 'Pakighimangraw hiunong hini nga pakli',
'talkpagelinktext' => 'Hiruhimangraw',
'specialpage' => 'Ispisyal nga Pakli',
-'personaltools' => 'Kalugaringon nga mga garamiton',
+'personaltools' => 'Mga pankalugaring nga garamiton',
'postcomment' => 'Bag-o nga bahin',
'articlepage' => 'Kitaa in may sulod nga pakli',
'talk' => 'Hiruhimangraw',
'compareselectedversions' => 'Igkumpara an mga pinili nga pagbabag-o',
'editundo' => 'Igpawara an ginbuhat',
'diff-empty' => '(Waray pagkakaiba)',
-'diff-multi' => '({{PLURAL:$1|Usa nga panbutnga nga pagbag-o|$1 nga panbutnga nga pagbag-o}} ni {{PLURAL:$2|usa nga gumaramit|$2 nga mga gumaramit}} waray ginpakita)',
'diff-multi-manyusers' => '({{PLURAL:$1|Uska sapit-nahiuna nga rebisyon|$1 nga mga sapit-nanhiuna nga rebisyon}} nga may labaw nga $2 {{PLURAL:$2|gumaramit|mga gumaramit}} in diri ginpapakita)',
# Search results
'rows' => 'Mga rumbay pahigda:',
'columns' => 'Mga rumbay patindog:',
'searchresultshead' => 'Bilnga',
-'resultsperpage' => 'Mga igo kada pakli:',
'stub-threshold-disabled' => 'Waray ginpagana',
'recentchangesdays' => 'Kadamo hin adlaw nga igpapakita an mga kabag-ohan:',
'recentchangesdays-max' => 'Pinakadamo $1 {{PLURAL:$1|ka adlaw|ka mga adlaw}}',
'Discussion_Catégorie' => NS_CATEGORY_TALK,
);
+// Remove French aliases
+$namespaceGenderAliases = array();
+
$specialPageAliases = array(
'CreateAccount' => array( 'Sos am sàq' ),
'Listfiles' => array( 'Limu nataal yi' ),
$messages = array(
# User preference toggles
'tog-underline' => 'Rëddaatu lëkkalekaay yi :',
-'tog-justify' => 'Maaseel xise yi',
'tog-hideminor' => 'Nëbb coppite yu néewal yi mujj',
'tog-hidepatrolled' => 'Nëbb coppite yi ñuy fuglu ci coppite yu mujj yi',
'tog-newpageshidepatrolled' => 'Nëbb xët yi ñuy fuglu, yi ci limu xët yu bees yi',
'tog-numberheadings' => 'Koj yi jox lim seen bopp',
'tog-showtoolbar' => 'Wone bànqaasu njëlu coppite bi (JavaScript)',
'tog-editondblclick' => 'Cuq cuqaatal ngir soppi aw xët (JavaScript)',
-'tog-editsection' => 'Soppi ab xaaj jaare ko cib lëkkalekaay [Soppi]',
'tog-editsectiononrightclick' => 'Soppi ab xaaj cib cuqub ndeyjoor ci kojam (JavaScript)',
-'tog-showtoc' => 'Wone tëralinu ne-ne yi (ngir xët yi ëpp 3 xaaj)',
'tog-rememberpassword' => 'Fattalikul sama baatujàll (for a maximum of $1 {{PLURAL:$1|day|days}})',
'tog-watchcreations' => 'Yokk ci sama limu toppte xët yi may sos',
'tog-watchdefault' => 'Yokk ci sama limu toppte xët yi may soppi',
'lineno' => 'Rëdd $1 :',
'compareselectedversions' => 'Méngale sumb yi nga fal',
'editundo' => 'neenal',
-'diff-multi' => '({{PLURAL:$1|am sumb mu diggu feeñul|$1 sumb yu diggu feeñuñu}}.)',
# Search results
'searchresults' => 'Ngértey ceet gi',
'rows' => 'Rëdd:',
'columns' => 'Kenu :',
'searchresultshead' => 'Seet',
-'resultsperpage' => 'Limu ngérte ci xët wu ne :',
'recentchangesdays' => 'Limu bes yi nga koy wone ci coppite yu mujj yi :',
'recentchangesdays-max' => '(bi ëpp $1 {{PLURAL:$1|bés|bés}})',
'recentchangescount' => 'Limu coppite yi ngay wone ci coppite yu mujj yi cig wàccaale:',
'watchmethod-list' => 'saytug xët yi ñuy topp ngir ay coppite yu mujj',
'watchlistcontains' => "Sa limu toppte am na '''$1''' {{PLURAL:$1|xët|xët}}.",
'iteminvalidname' => 'Ay jafe-jafe ak xët wii di « $1 » : tur bi baaxul.',
-'wlnote' => 'Fii ci suuf {{PLURAL:$1| ngay gis coppite yu mujj yi|ngay gis $1 coppite yu mujj}} ci {{PLURAL:$2|waxtu gu mujj gi|<b>$2</b> waxtu yu mujj}}.',
'wlshowlast' => 'wone $1 waxtu yu mujj, $2 bess yu mujj, walla $3.',
'watchlist-options' => 'Tànneefi limu toppte bi',
'tooltip-pt-watchlist' => 'Limu xët yi ngay topp',
'tooltip-pt-mycontris' => 'Limu say cëru',
'tooltip-pt-login' => 'Woo nan la ngir nga xammeku, waaye doonul lu manuta ñakk.',
-'tooltip-pt-anonlogin' => 'woo nan la ngir nga xammeku, waaye doonul lu manuta ñakk.',
'tooltip-pt-logout' => 'Génn',
'tooltip-ca-talk' => 'Waxtaan yi ñeel xët wii',
'tooltip-ca-edit' => 'Man ngaa soppi xët wi. Ngir yàlla wonendil laataa ngay denc.',
$messages = array(
# User preference toggles
'tog-underline' => '鏈接下橫線:',
-'tog-justify' => '段對齊',
'tog-hideminor' => '此垡變化裏囥脫小編',
'tog-hidepatrolled' => '此垡變化裏囥脫巡脫編',
'tog-newpageshidepatrolled' => '新頁表裏囥脫巡脫頁',
'tog-numberheadings' => '標題自動編號',
'tog-showtoolbar' => '顯示編傢伙欄',
'tog-editondblclick' => '捺兩記編頁',
-'tog-editsection' => '用【編寫】鏈接編段',
'tog-editsectiononrightclick' => '用右捺標題編段',
-'tog-showtoc' => '顯示目錄(為超過3個標題個頁)',
'tog-rememberpassword' => '箇流覽器裏記牢我個登錄狀態(記$1{{PLURAL:$1|日|日}})',
'tog-watchcreations' => '畀我建个页搭我传个文件加进我个关注表里去',
'tog-watchdefault' => '畀我编个页搭文件加进我个关注表里去',
'compareselectedversions' => '比较选中个版本',
'showhideselectedversions' => '显示/囥脱选定修订版本',
'editundo' => '撤销',
-'diff-multi' => '($2个用户个$1个中央版本朆显示。)',
# Search results
'searchresults' => '搜寻结果',
'rows' => '行数:',
'columns' => '列数:',
'searchresultshead' => '搜索',
-'resultsperpage' => '每页显示链接数:',
'stub-threshold' => '<a href="#" class="stub">短页面链接</a>格式门槛值(字节):',
'recentchangesdays' => '最近更改里向个显示日数:',
'recentchangesdays-max' => '最长 $1 日',
'tooltip-pt-watchlist' => '监控修改页面列表',
'tooltip-pt-mycontris' => '你侬个贡献列表',
'tooltip-pt-login' => '鼓励大家登录进来,不过也弗是板定要求',
-'tooltip-pt-anonlogin' => '鼓励登录,必过倒也弗是必须个。',
'tooltip-pt-logout' => '登出',
'tooltip-ca-talk' => '讨论内容页',
'tooltip-ca-edit' => '箇页你侬好编。保存之前望望相起。',
'tog-editsection' => '«Чиклх» заавр болвчн хүвд үзүлх',
'tog-editsectiononrightclick' => 'Һарчига барун индстлһар хүвиг чиклх (JavaScript кергтә)',
'tog-showtoc' => 'Һарг үзүлх (3 икәр толһата халхсд)',
-'tog-rememberpassword' => 'Намаг эн тоолдврт тодлх ($1 {{PLURAL:$1|өдрт|өдрмүдт}} икәр биш)',
+'tog-rememberpassword' => 'Намаг эн тоолдврт тодлх ($1 {{PLURAL:$1|1=өдрт|өдрмүдт}} икәр биш)',
'tog-watchcreations' => 'Би эврәннь немгдсн халхс шинҗллһнә сеткүлд немх',
'tog-watchdefault' => 'Би эврәннь чиклсн халхс шинҗллһнә сеткүлд немх',
'tog-watchmoves' => 'Би эврәннь көндсн халхс шинҗллһнә сеткүлд немх',
'dec' => 'Бар',
# Categories related messages
-'pagecategories' => '{{PLURAL:$1|Әәшл|Әәшлүд}}',
+'pagecategories' => '{{PLURAL:$1|1=Әәшл|Әәшлүд}}',
'category_header' => '«$1» әәшлд бәәдг халхс',
'subcategories' => 'Баһар әәшлүд',
'category-media-header' => '«$1» әәшлд бәәдг боомгуд',
'category-empty' => "''Тер әәшл хоосн болҗана.''",
-'hidden-categories' => '{{PLURAL:$1|Бултулсн әәшл|Бултулсн әәшлүд}}',
+'hidden-categories' => '{{PLURAL:$1|1=Бултулсн әәшл|Бултулсн әәшлүд}}',
'hidden-category-category' => 'Бултулсн әәшлүд',
-'category-subcat-count' => '{{PLURAL:$2|Тер әәшл эн һанцхн баһар әәшлтә.|{{PLURAL:$1|$1 баһар әәшл үзүлв|$1 баһар әәшлүд үзүлв|$1 баһар әәшлүд}} $2 ут туршдан үзүлв.}}',
-'category-subcat-count-limited' => 'Тер әәшлд {{PLURAL:$1|нег баһар әәшл|$1 баһар әәшлүд}} болҗана.',
-'category-article-count' => '{{PLURAL:$2|Тер әәшл һанцхн халхта.|{{PLURAL:$1|$1 халхиг үзүлв|$1 халхсиг үзүлв|$1 халхсиг үзүлв}}, $2 ут туршдан.}}',
-'category-article-count-limited' => 'Тер әәшлд {{PLURAL:$1|нег халх|$1 халхс}} болҗана.',
-'category-file-count' => '{{PLURAL:$2|Тер әәшлд һанцхн халх болҗана.|Терүнәс {{PLURAL:$1|нег боомг үзүлсн|$1 боомгуд үзүлсн}} $2 ут туршдан.}}',
-'category-file-count-limited' => 'Эн {{PLURAL:$1|боомг|$1 боомгуд}} тер әәшлд болҗана.',
+'category-subcat-count' => '{{PLURAL:$2|Тер әәшл эн һанцхн баһар әәшлтә.|{{PLURAL:$1|$1 баһар әәшл үзүлв|$1 баһар әәшлүд|$1 баһар әәшлүд үзүлв}} $2 ут туршдан үзүлв.}}',
+'category-subcat-count-limited' => 'Тер әәшлд {{PLURAL:$1|1=нег баһар әәшл|$1 баһар әәшлүд}} болҗана.',
+'category-article-count' => '{{PLURAL:$2|Тер әәшл һанцхн халхта.|{{PLURAL:$1|$1 халхсиг үзүлв|$1 халхиг үзүлв|$1 халхсиг үзүлв}}, $2 ут туршдан.}}',
+'category-article-count-limited' => 'Тер әәшлд {{PLURAL:$1|1=нег халх|$1 халхс}} болҗана.',
+'category-file-count' => '{{PLURAL:$2|Тер әәшлд һанцхн халх болҗана.|Терүнәс {{PLURAL:$1|1=нег боомг үзүлсн|$1 боомгуд үзүлсн}} $2 ут туршдан.}}',
+'category-file-count-limited' => 'Эн {{PLURAL:$1|1=боомг|$1 боомгуд}} тер әәшлд болҗана.',
'listingcontinuesabbrev' => '(цааранднь)',
'index-category' => 'Индекссн халхс',
'noindex-category' => 'Индекссн биш халхс',
'badaccess' => 'Зөвәнә эндү',
'badaccess-group0' => 'Та сурсн үүл кеҗ болшго.',
-'badaccess-groups' => 'Эн үүл һанцхн {{PLURAL:$2|багас|багудас}} $1 кеҗ чадна.',
+'badaccess-groups' => 'Эн үүл һанцхн {{PLURAL:$2|1=багас|багудас}} $1 кеҗ чадна.',
'versionrequired' => "MediaWiki'н $1 һарц кергтә",
'versionrequiredtext' => "Тер халх олзхар, MediaWiki'н $1 һарц кергтә.
'hidetoc' => 'бултулх',
'thisisdeleted' => '$1 гүүһәд хәләхү аль хәрүлхү?',
'viewdeleted' => '$1 үзүлхү?',
-'restorelink' => '{{PLURAL:$1|$1 һарһсн сольлһн|$1 һарһсн сольлһн}}',
+'restorelink' => '{{PLURAL:$1|1=$1 һарһсн сольлһн|$1 һарһсн сольлһн}}',
'feedlinks' => 'Тер бәәдлтә',
'feed-invalid' => 'Буру бичгдлһнә төлә сүвин янз.',
'feed-unavailable' => 'Синдикацин сүв орлһта биш',
'yourname' => 'Демнчна нернь:',
'yourpassword' => 'Нууц үг:',
'yourpasswordagain' => 'Нууц үгиг давтн:',
-'remembermypassword' => 'Намаг эн тоолдврд тодлх ($1 {{PLURAL:$1|өдрт|өдрмүдт}} икәр биш)',
+'remembermypassword' => 'Намаг эн тоолдврд тодлх ($1 {{PLURAL:$1|1=өдрт|өдрмүдт}} икәр биш)',
'yourdomainname' => 'Тана домен:',
'login' => 'Орлһн',
'nav-login-createaccount' => 'Харһх / бичгдлһн кех',
'copyrightwarning2' => "Буйн болтха, цуг өгүллһн {{SITENAME}} төлә чиклсн аль һарһсн бәәдг чадта тускар тодлтн. Та тана бичсн чилклсн аль делгрңсн бәәҗ седхлә биш, эн ормд бичә бичтн.<br /> Дәкәд та маднд эн эврәнь бичсн, күмн әмтнә хазас аль цацу сул медснәс бәәдг үгән өгнәт ($1 хәләтн). '''Зөвән авхла уга, харссн бичсн күүнә көдлмш бичә тәвтн!'''",
'semiprotectedpagewarning' => "'''Оньган өгтн:''' тер халх харссн болҗана, тер учрар эниг бичгдлһтә демнчнр һанцхн чиклҗ чадна.
Нөкд төлә, эн шидрә сеткүлин бичвр:",
-'templatesused' => 'Эн халхд олзлсн {{PLURAL:$1|зурас|зурас}}:',
-'templatesusedpreview' => '{{PLURAL:$1|Кевләр|Кевләрмүд}} эн хәләврт олзлсн:',
+'templatesused' => 'Эн халхд олзлсн {{PLURAL:$1|1=зурас|зурас}}:',
+'templatesusedpreview' => '{{PLURAL:$1|1=Кевләр|Кевләрмүд}} эн хәләврт олзлсн:',
'template-protected' => '(харссн)',
'template-semiprotected' => '(зәрм харссн)',
'hiddencategories' => 'Эн халх тер $1 {{PLURAL:$1|бултулсн әәшләс|бултулсн әәшлүдәс|бултулсн әәшлүдәс}}:',
-'permissionserrorstext-withaction' => 'Та $2 кеҗ болшго. Юнгад гихлә, эн {{PLURAL:$1|учрар|учрар}}:',
+'permissionserrorstext-withaction' => 'Та $2 кеҗ болшго. Юнгад гихлә, эн {{PLURAL:$1|1=учрар|учрар}}:',
'edit-conflict' => 'Чикллһнә керүл.',
# Parser/template warnings
'prefs-rc' => 'Шидрә сольлһн',
'prefs-watchlist' => 'Шинҗллһнә сеткүл',
'prefs-watchlist-days' => 'Шинҗллһнә седкүлд үзүлсн ик гисн өдрин то:',
-'prefs-watchlist-days-max' => 'Maximum $1 {{PLURAL:$1|day|days}}',
+'prefs-watchlist-days-max' => 'Maximum $1 {{PLURAL:$1|1=day|days}}',
'prefs-misc' => 'Талдан',
'prefs-resetpass' => 'Нууц угиг сольҗ',
'prefs-email' => "E-mail'ын көгүд",
'prefs-editing' => 'Чикллһн',
'rows' => 'Мөрд:',
'columns' => 'Бахд:',
-'resultsperpage' => 'Халхд бәәдг олсн бичврин то:',
'savedprefs' => 'Тана көгүдиг хадһлв.',
'timezonelegend' => 'Часин бүс:',
'localtime' => 'Бәәрн һазра цаг:',
'youremail' => 'E-mail хайг:',
'username' => 'Демнчна нер:',
'uid' => 'Демнчна тойг (ID):',
-'prefs-memberingroups' => '{{PLURAL:$1|Багин|Багдудин}} хүв:',
+'prefs-memberingroups' => '{{PLURAL:$1|1=Багин|Багдудин}} хүв:',
'prefs-registration' => 'Темдглҗ бүртклһнә цаг:',
'yourrealname' => 'Үнн нерн:',
'yourlanguage' => 'Бәәдлин келн:',
'action-edit' => 'эн халхиг чиклх',
# Recent changes
-'nchanges' => '$1 {{PLURAL:$1|сольлһн|сольлһн}}',
+'nchanges' => '$1 {{PLURAL:$1|1=сольлһн|сольлһн}}',
'recentchanges' => 'Шидрә сольлһн',
'recentchanges-legend' => 'Шидрә сольлһна көгүд',
'recentchanges-summary' => 'Эн цагин дараһар бичсн шидрә сольлһн',
# Miscellaneous special pages
'nbytes' => '$1 {{PLURAL:$1|байд|байдуд|байдуд}}',
-'nmembers' => '$1 {{PLURAL:$1|мөч|мөчин|мөчүд}}',
+'nmembers' => '$1 {{PLURAL:$1|мөч|мөчүд|мөчин}}',
'prefixindex' => 'Цуг халхс эн эклцтә',
'newpages' => 'Шин халхс',
'move' => 'Көндәх',
'movethispage' => 'Эн халхд шин нер аль шин орм өгх',
-'pager-newer-n' => '{{PLURAL:$1|шинәр 1|шинәр $1}}',
-'pager-older-n' => '{{PLURAL:$1|көгшәр 1|көгшәр $1}}',
+'pager-newer-n' => '{{PLURAL:$1|1=шинәр 1|шинәр $1}}',
+'pager-older-n' => '{{PLURAL:$1|1=көгшәр 1|көгшәр $1}}',
# Book sources
'booksources' => 'Дегтрин делгүрс',
'protect-text' => "Энд та '''$1''' халхин харсллһна кемҗән хәләҗ, хүврлҗ чаднат.",
'protect-locked-access' => "Эн халхна харсллһна кемҗән сольҗ, тана бичгдлһна зөв тату.
Ода болсн '''$1''' халхна көгүд:",
-'protect-cascadeon' => 'Эн халх харссн. Юнгад гихлә, тер халх {{PLURAL:$1|эн халхд|тенд халхсд}} каскад харсллһта. Тадн эн халхна харсллһна кемҗән сольх чаднат, болв тер үүл каскад харлсһиг цокҗ чадшго.',
+'protect-cascadeon' => 'Эн халх харссн. Юнгад гихлә, тер халх {{PLURAL:$1|1=эн халхд|тенд халхсд}} каскад харсллһта. Тадн эн халхна харсллһна кемҗән сольх чаднат, болв тер үүл каскад харлсһиг цокҗ чадшго.',
'protect-default' => 'Цуг демнчнрд зөвән өгҗ',
'protect-fallback' => '$1 зөв кергтә',
'protect-level-autoconfirmed' => 'Шин болн нер уга демнчнрас харсх',
'isredirect' => 'авч оддг халх',
'istemplate' => 'оруллһн',
'isimage' => 'зургин заалһ',
-'whatlinkshere-prev' => '{{PLURAL:$1|урдк|урдк $1}}',
+'whatlinkshere-prev' => '{{PLURAL:$1|1=урдк|урдк $1}}',
'whatlinkshere-next' => '{{PLURAL:$1|дарук|дарук|дарук}} $1',
'whatlinkshere-links' => '← заалһуд',
'whatlinkshere-hideredirs' => '$1 авч одлһн',
'livepreview-ready' => 'Белднә... Болһсн!',
# Watchlist editor
-'watchlistedit-numitems' => 'Тана шинҗллһнә сеткүл {{PLURAL:$1|1 гешүтә|$1 гешүдтә}}, меткән халхста.',
+'watchlistedit-numitems' => 'Тана шинҗллһнә сеткүл {{PLURAL:$1|1=1 гешүтә|$1 гешүдтә}}, меткән халхста.',
'watchlistedit-noitems' => 'Тана шинҗллһнә сеткүл хоосн бәәнә.',
'watchlistedit-normal-title' => 'Шинҗллһнә сеткүлиг чиклх',
$messages = array(
# User preference toggles
'tog-underline' => 'რცხუეფიშ ათოღაზუა:',
-'tog-justify' => 'გამანგი აბზაცეფი',
'tog-hideminor' => 'დოფული ციქა რედაქტირაფა ეკონია თირაფეფს',
'tog-hidepatrolled' => 'დოფულით პატრულირებულ რედაქტირაფეფი ასერდეიან თირაფეფს',
'tog-newpageshidepatrolled' => 'დოფულით პატრულირებულ ხასჷლეფი ახალ ხასჷლეფიშ ერკებულშე',
'tog-numberheadings' => 'ავტომატურო დონომერე დუდჯოხოეფი',
'tog-showtoolbar' => 'რედაქტირაფაშ ხეჭკუდეფიშ ძირაფა (ითხინს JavaScript-ის)',
'tog-editondblclick' => 'ხასჷლეფიშ რედაქტირაფა ჟირმანგი გეწკანტაფათ (ითხინს JavaScript-ის)',
-'tog-editsection' => 'ჩართი სექციაშ რედაქტირაფა [რედაქტირაფაშ] რცხუეფით',
'tog-editsectiononrightclick' => 'ჩართი სექციაშ რედაქტირაფა სექციაშ ჯოხოშა მარძგვან გეწკანტაფათ (ითხინს JavaScript-ის)"',
-'tog-showtoc' => 'ქაძირი გჷშაგორალი (სუმშე უმოს დუდჯოხოამ ხასჷლეფშო)',
'tog-showhiddencats' => 'ქაძირი ფულირი კატეგორიეფი',
'underline-always' => 'ირო',
'lineno' => 'ღოზი $1:',
'compareselectedversions' => 'გიშაგორილ ვერსიეფიშ მეზიმაფა',
'editundo' => 'გოუქვაფა',
-'diff-multi' => '( {{PLURAL:$2|ართი მახვარებუშ|$2 მახვარებუშ}} {{PLURAL:$1|ართი შქაშქუმალირი რევიზია|$1 შქაშქუმალირი რევიზია}} ვა რე ძირაფილი)',
# Search results
'searchresults' => 'გორუაშ მოღალირობეფ',
$messages = array(
# User preference toggles
'tog-underline' => 'שטרייכט אונטער לינקען',
-'tog-justify' => 'גראד אויס פאראגראפן',
'tog-hideminor' => 'באַהאַלטן מינערדיקע רעדאַקטירונגען אין לעצטע ענדערונגען',
'tog-hidepatrolled' => 'באַהאַלטן פאַטראלירטע רעדאַקטירונגען אין לעצטע ענדערונגען',
'tog-newpageshidepatrolled' => 'באַהאַלטן פאַטראלירטע בלעטער פון דער ליסטע פון נײַע בלעטער',
'tog-numberheadings' => 'נומערירן קעפלעך אויטאמאטיש',
'tog-showtoolbar' => 'ווײַזן רעדאקטירן געצייג-שטאנג',
'tog-editondblclick' => 'רעדאקטירן בלעטער דורך טאפל קליק',
-'tog-editsection' => 'ערמעגליכט אפטייל ענדערן דורך [ענדערן] לינקס',
'tog-editsectiononrightclick' => 'באמעגלעכן אפטייל רעדאקטירן דורכן רעכטס־קליקן אויף אפטייל קעפלעך',
-'tog-showtoc' => 'ווייז דאס אינהאלט קעסטל<br />(פאר בלעטער מיט מער ווי 3 קעפלעך)',
'tog-rememberpassword' => 'געדענק מיין אריינלאגירן אין דעם בלעטערער (ביז $1 {{PLURAL:$1|טאָג|טעג}})',
'tog-watchcreations' => 'צולייגן בלעטער וואס איך באשאף און טעקעס וואס איך לאד ארויף צו מיין אכטונג ליסטע',
'tog-watchdefault' => 'צולייגן בלעטער וואס איך רעדאקטיר צו מיין אכטונג ליסטע',
'content-not-allowed-here' => '"$1" אינהאלט נישט דערלויבט אויף בלאט [[$2]]',
'editwarning-warning' => 'איבערלאזן דעם בלאט קען גורם זײַן פֿארלירן אײַערע ענדערונגען.
אויב איר זענט ארײַנלאגירט, קענט איר מבטל זײַן די דאזיגע ווארענונג אין דער "באארבעטן" אפטיילונג פון אײַערע פרעפערענצן.',
+'editpage-notsupportedcontentformat-title' => 'אינהאלט־פארמאט נישט געשטיצט',
+'editpage-notsupportedcontentformat-text' => 'דער אינהאלט־פארמאט $1 ווערט ניט געשטיצט דורכן אינהאלט־מאדעל $2.',
# Content models
'content-model-wikitext' => 'וויקיטעקסט',
'showhideselectedversions' => 'ווײַזן/באַהאַלטן געקליבענע רעוויזיעס',
'editundo' => 'אַנולירן',
'diff-empty' => '(קיין אונטערשייד)',
-'diff-multi' => '({{PLURAL:$1|איין מיטלסטע ווערסיע |$1 מיטלסטע ווערסיעס}} פֿון {{PLURAL:$2|איין באַניצער|$2 באַניצער}} נישט געוויזן.)',
+'diff-multi-otherusers' => '({{PLURAL:$1|איין מיטלסטע ווערסיע |$1 מיטלסטע ווערסיעס}} פֿון {{PLURAL:$2|איין אנדער באַניצער|$2 באַניצער}} נישט געוויזן.)',
'diff-multi-manyusers' => '({{PLURAL:$1|איין מיטלסטע ווערסיע |$1 מיטלסטע ווערסיעס}} פֿון מער ווי {{PLURAL:$2|איין באַניצער|$2 באַניצער}} נישט געוויזן.)',
'difference-missing-revision' => '{{PLURAL:$2|איין ווערסיע|$2 ווערסיעס}} פון דעם דיפערענץ ($1) {{PLURAL:$2|האט}} מען נישט געטראפן.
'shown-title' => 'ווײַזן $1 {{PLURAL:$1|רעזולטאַט| רעזולטאַטן}} אויף א בלאַט',
'viewprevnext' => 'קוקט אויף ($1 {{int:pipe-separator}} $2) ($3)',
'searchmenu-exists' => "'''ס'איז פֿאַראַן א בלאַט מיטן נאמען \"[[:\$1]]\" אין דער וויקי'''",
-'searchmenu-new' => "'''באַשאַפֿן דעם בלאַט \"[[:\$1]]\" אויף דער וויקי'''",
+'searchmenu-new' => '<strong>באַשאַפֿן דעם בלאַט "[[:$1]]" אויף דער וויקי!</strong> {{PLURAL:$2|0=|זעט אויך דעם בלאט געפֿונען מיט אײַער זוך.|זעט אויך די זוך רעזולטאטן געפֿונען.}}',
'searchprofile-articles' => 'אינהאלט בלעטער',
'searchprofile-project' => 'הילף און פראיעקט בלעטער',
'searchprofile-images' => 'מולטימעדיע',
'search-result-score' => 'שייכותדיקייט: $1%',
'search-redirect' => '(ווײַטערפֿירן $1)',
'search-section' => '(אפטיילונג $1)',
+'search-file-match' => '(פאסט צו טעקע אינהאלט)',
'search-suggest' => 'צי האט איר געמיינט: $1',
'search-interwiki-caption' => 'שוועסטער פראיעקטן',
'search-interwiki-default' => '$1 רעזולטאטן:',
'rows' => 'שורות:',
'columns' => 'עמודים:',
'searchresultshead' => 'זוכן',
-'resultsperpage' => 'צאל טרעפֿן אין א בלאַט:',
'stub-threshold' => 'שוועל פֿאַר <a href="#" class="stub">שטומף לינק</a> פֿאָרמאַטירונג (בייטן):',
'stub-threshold-disabled' => 'אַנולירט',
'recentchangesdays' => 'צאל פון טעג צו ווייזן אין די לעצטע ענדערונגן:',
'pageswithprop-text' => 'דער בלאט האלט א רשימה פון בלעטער וואס ניצן א געוויסע בלאט אייגנשאפט.',
'pageswithprop-prop' => 'אייגנשאפט נאמען:',
'pageswithprop-submit' => 'גייט',
+'pageswithprop-prophidden-long' => 'לא גער טעקסט אייגנשאפט־ווערט באהאלטן ($1)',
'doubleredirects' => 'געטאפלטע ווײַטערפֿירונגען',
'doubleredirectstext' => 'דער בלאט רעכנט אויס בלעטער וואס פירן ווייטער צו אנדערע ווייטערפירן בלעטער.
'mostrevisions' => 'אַרטיקלען מיט די מערסטע באַאַרבעטונגען',
'prefixindex' => 'פּרעפֿיקס אינדעקס',
'prefixindex-namespace' => 'אלע בלעטער מיט פרעפֿיקס ($1 נאמענטייל)',
+'prefixindex-strip' => 'אפשניידן פרעפיקס אין ליסטע',
'shortpages' => 'קורצע בלעטער',
'longpages' => 'לאנגע בלעטער',
'deadendpages' => 'בלינדע בלעטער',
'protectedpages' => 'געשיצטע בלעטער',
'protectedpages-indef' => 'בלויז אומבאַשרענקטע באַשוצינגען',
'protectedpages-cascade' => 'בלויז קאַסקאַדירנדיקע באַשיצונגען',
+'protectedpages-noredirect' => 'פֿארהיילן ווייטערפֿירונגען',
'protectedpagesempty' => 'אצינד זענען קיין בלעטער נישט געשיצט מיט די דאזיגע פאַראַמעטערס.',
'protectedtitles' => 'געשיצטע קעפלעך',
'protectedtitlesempty' => 'אצינד זענען קיין קעפלעך נישט באַשיצט מיט די דאזיגע פאַראַמעטערס.',
'watchmethod-list' => 'קאנטראלירן בלעטער אין אַכטונג־ליסטע פֿאַר לעצטע ענדערונגען',
'watchlistcontains' => 'אייער אויפֿפאסונג ליסטע אנטהאלט {{PLURAL:$1|איין בלאט|$1 בלעטער}}.',
'iteminvalidname' => "פּראָבלעם מיט '$1', אומגילטיקער נאָמען ...",
-'wlnote' => "אונטן {{PLURAL:$1|איז די לעצטע ענדערונג|זענען די לעצטע '''$1''' ענדערונגען}} אין {{PLURAL:$2|דער לעצטער שעה|די לעצטע '''$2''' שעה'ן}} ביז $3, $4.",
'wlshowlast' => "(ווײַזן די לעצטע $1 שעה'ן | $2 טעג | $3)",
'watchlist-options' => 'אויפֿפאַסן ליסטע ברירות',
'delete-edit-reasonlist' => 'רעדאַקטירן די אויסמעקן סיבות',
'delete-toobig' => 'דער בלאַט האט א גרויסע רעדאקטירונג היסטאריע, מער ווי $1 {{PLURAL:$1|רעוויזיע|רעוויזיעס}}. אויסמעקן אזעלכע בלעטער איז באַגרענעצט געווארן בכדי צו פֿאַרמײַדן א צופֿעליגע פֿאַרשטערונג פֿון {{SITENAME}}.',
'delete-warning-toobig' => 'דער בלאַט האט א גרויסע רעדאקטירונג היסטאריע, מער ווי $1 {{PLURAL:$1|רעוויזיע|רעוויזיעס}}. אויסמעקן אים קען פֿאַרשטערן דאַטנבאַזע אפעראַציעס פֿון {{SITENAME}}; זײַט פֿארזיכטיג איידער איר מעקט אויס.',
+'deleting-backlinks-warning' => "'''ווארענוג:''' אנדערע בלעטער פארבינדן צום בלאט אדער אריבערשליסן פונעם בלאט איר האלט ביי אויסמעקן.",
# Rollback
'rollback' => 'צוריקדרייען רעדאַקטירונגען',
'range_block_disabled' => 'די סיסאפ מעגליכקייט צו בלאקירן רענזש בלאקס איז אומ-ערמעגליכט.',
'ipb_expiry_invalid' => 'אויסגיין צײַט אומגילטיג.',
'ipb_expiry_temp' => 'בלאקירן מיט פאַרבאָרגן באַניצער נאָמען מוז זייַן אויף אייביק.',
-'ipb_hide_invalid' => 'נישט געקענט פֿאַרשטיקן די קאנטע; זי האט מעגלעך צופיל רעדאַקטירונגען.',
+'ipb_hide_invalid' => 'נישט געקענט פֿאַרשטיקן די קאנטע; זי האט {{PLURAL:$1|איין רעדאקטירונג|$1 רעדאַקטירונגען}}.',
'ipb_already_blocked' => '"$1" איז שוין בלאקירט',
'ipb-needreblock' => '$1 איז שוין בלאקירט. צי ווילט איר טוישן די באַצייכנונגען?',
'ipb-otherblocks-header' => '{{PLURAL:$1|אנדער בלאקירונג|אנדערע בלאקירונגען}}',
'ip_range_toolarge' => 'אָפשטאַנדן גרעסער ווי /$1 קען מען נישט בלאקירן.',
'proxyblocker' => 'פראקסי בלאקער',
'proxyblockreason' => 'אייער איי.פי. אדרעס איז געווארן געבלאקט צוליב דעם ווייל דאס איז א אפענער פראקסי. ביטע פארבינדט זיך מיט אייער אינטערנעט סערוויס פראוויידער אדער טעקס סאפארט צו אינפארמירן זיי איבער דעם ערענסטן זיכערהייט פראבלעם.',
+'sorbsreason' => 'אייער IP־אדרעס געפינט זיך אין דער ליסטע פון אפענע פראקסיס אינעם DNSBL געניצט אין {{SITENAME}}.',
'ipbblocked' => 'איר קען נישט בלאקירן אדער אויפבלאקירן אנדערע באניצער, ווייל איר זענט אליין בלאקירט.',
'ipbnounblockself' => 'איר זענט נישט ערלויבט זיך אליין אויסבלאקירן',
'allmessages-prefix' => 'פֿילטערן לויט פרעפֿיקס',
'allmessages-language' => 'שפראַך:',
'allmessages-filter-submit' => 'צייגן',
+'allmessages-filter-translate' => 'איבערזעצן',
# Thumbnails
'thumbnail-more' => 'פארגרעסער',
אַ פראוויזארישער טעקע־האלטער פֿעלט.',
'import-parse-failure' => 'פֿעלער בײַם אימפארטירן XML',
'import-noarticle' => 'נישטא קיין בלאט צו אימפארטירן!',
-'import-nonewrevisions' => '×\90Ö·×\9c×¢ רע×\95×\95×\99×\96×\99עס ש×\95×\99×\9f ×\90×\99×\9eפ×\90ר×\98×\99ר×\98.',
+'import-nonewrevisions' => 'ק×\99×\99×\9f רע×\95×\95×\99×\96×\99עס × ×\99ש×\98 ×\90×\99×\9eפ×\90ר×\98×\99ר×\98 (×\90×\93ער ×\90×\9c×¢ ש×\95×\99×\9f ×\93×\90, ×\90×\93ער ×\90×\99×\91ער×\92×¢×\94×\99פ×\98 צ×\95×\9c×\99×\91 ×\92רײַ×\96×\9f).',
'xml-error-string' => '$1 בײַ שורה $2, זייל $3 (בייט $4): $5',
'import-upload' => 'אַרויפֿלאָדן XML דאַטן',
'import-token-mismatch' => 'אָנווער פון סעסיע דאַטן.
'tooltip-pt-watchlist' => 'ליסטע פון בלעטער וואס איר טוט אויפפאסן נאך ענדערונגן',
'tooltip-pt-mycontris' => 'ליסטע פון אייערע ביישטייערונגען',
'tooltip-pt-login' => "עס איז רעקאָמענדירט זיך אײַנשרײַבן; ס'איז אבער נישט קיין פֿליכט",
-'tooltip-pt-anonlogin' => "עס איז רעקאָמענדירט זיך אײַנשרײַבן; ס'איז אָבער נישט קײַן פֿליכט",
'tooltip-pt-logout' => 'ארויסלאגירן',
'tooltip-ca-talk' => 'שמועס וועגן דעם אינהאַלט בלאַט',
'tooltip-ca-edit' => "איר קענט ענדערן דעם בלאט. ביטע באניצט דעם ''פֿארויסקוק'' קנעפל בעפֿארן אפהיטן",
'version-parser-extensiontags' => 'פארזער פארברייטערן טאַגן',
'version-hook-name' => 'נאמען פון hook',
'version-version' => '(ווערסיע $1)',
-'version-license' => 'ליצענץ',
+'version-license' => '×\9e×¢×\93×\99×¢×\95×\95×\99ק×\99 ×\9c×\99×¦×¢× ×¥',
'version-poweredby-others' => 'אַנדערע',
'version-poweredby-translators' => 'translatewiki.net איבערזעצער',
'version-credits-summary' => 'מיר ווילן אנערקענען די פֿאלגנדע מענטשן פֿאר זייער בײַשטײַערוג צו [[Special:Version|מעדיעוויקי]].',
$messages = array(
# User preference toggles
'tog-underline' => 'Ìfàlàsábẹ́ àwọn àjápọ̀:',
-'tog-justify' => "Ṣ'àlàyé gbólóhùn ọ̀rọ̀",
'tog-hideminor' => 'Ìbòmọ́lẹ̀ àwọn àtúnṣe kékeré nínú àwọn àtúnse tuntun',
'tog-hidepatrolled' => 'Ìbòmọ́lẹ̀ àwọn àtúnṣe oníìṣọ́ nínú àwọn àtúnṣe tuntun',
'tog-newpageshidepatrolled' => 'Ìbòmọ́lẹ̀ àwọn ojúewé oníìṣọ́ lọ́dọ̀ àtòjọ ojúewé tuntun',
'tog-numberheadings' => 'Àwọn àkọlé nọmba-araẹni',
'tog-showtoolbar' => 'Ìfihàn pẹpẹ irinṣẹ́ àtúnṣe',
'tog-editondblclick' => "Ṣ'àtúnṣe àwọn ojúewé ní kíkàn lẹ́mẹjì",
-'tog-editsection' => 'Ìgbàláyè àtúnṣe abala láti inú [àtúnṣe] àwọn àjápọ̀',
'tog-editsectiononrightclick' => 'Ìgbàláyè àtúnṣe abala nípa klííkì ọ̀tún lórí àkọlé abala',
-'tog-showtoc' => 'Ìfihàn tábìlì àkóónú (fún àwọn ojúewé tó ní ju orí ọ̀rọ̀ 3 lọ)',
'tog-rememberpassword' => "Ṣè'rántí àkọọ́lẹ̀ ìwọlé mi lórí agbétàkùn yìí (fún {{PLURAL:$1|ọjọ́|ọjọ́}} $1 pípẹ́jùlọ)",
'tog-watchcreations' => "Ṣ'àfikún ojúewé tí mo dá àti àwọn fáìlì tí mo rùsókè mọ́ ìmójútó mi",
'tog-watchdefault' => "Ṣ'àfikún àwọn ojúewé àti fáìlì tí mo ṣ'àtúnse mọ́ ìmójútó mi",
'yourdomainname' => 'Domain yín:',
'password-change-forbidden' => 'Ẹ kò le ṣe ìyípadà ọ̀rọ̀ìpamọ́ lórí wiki yìí.',
'externaldberror' => 'Bóyá àsìṣe ìfidájú ibùdó dátà ló ṣẹlẹ̀ tàbí ẹ kò jẹ́ gbígbà ní ààyè láti sọ àpamọ́ òde yín di ọ̀tun.',
-'login' => 'Ìwọlé',
+'login' => 'Ìjáwọlé',
'nav-login-createaccount' => 'Ìwọlé / Ìforúkọ sílẹ̀',
'loginprompt' => 'Ẹ gbọ́dọ̀ jọ̀wọ́ cookies láti wọlé sí {{SITENAME}}.',
'userlogin' => 'Ìwọlé / ìforúkọ sílẹ̀',
-'userloginnocreate' => 'Ìwọlé',
+'userloginnocreate' => 'Ìjáwọlé',
'logout' => 'Ìjáde',
'userlogout' => 'Ìjáde',
'notloggedin' => "Ẹ kò tí w'ọlé",
'nosuchsectiontext' => 'Ẹ ti gbìyànjú láti ṣàtúnṣe abala tí kòsí.
Ó ti le jẹ́ yíyípò tàbí píparẹ́ nígbà tí ẹ ún bojúwo ojúewé náà.',
'loginreqtitle' => "Ẹ gbọ́dọ̀ kọ́kọ́ w'ọlé ná",
-'loginreqlink' => 'wọlé',
+'loginreqlink' => 'jáwọlé',
'loginreqpagetext' => 'Ẹ gbọ́dọ̀ $1 láti wo àwọn ojúewé míràn.',
'accmailtitle' => 'Ti fi ọ̀rọ̀ìpamọ́ ránṣẹ́.',
'accmailtext' => "A ti fi ọ̀rọ̀ìpamọ́ àrìnàkò tí a pèsè fún [[User talk:$1|$1]] ránṣẹ́ sí $2. Ẹ le ṣe àyípadà ọ̀rọ̀ìpamọ́ fún àpamọ́ tuntun yìí ní ibi ''[[Special:ChangePassword|àyípadà ọ̀rọ̀ìpamọ́]]'' lẹ́yìn tí ẹ bá ti jáwọlé.",
'revdelete-hide-user' => 'Orúkọ oníṣe/àdírẹ́ẹ̀sì IP olùtúnṣe',
'revdelete-hide-restricted' => 'Ìbòmọ́lẹ̀ àwọn ìpèsè ti àwọn alámùójútó àti ti àwọn yìókù',
'revdelete-radio-same' => '(láì yípadà)',
-'revdelete-radio-set' => 'Híhàn',
-'revdelete-radio-unset' => 'Bíbòmọ́lẹ̀',
+'revdelete-radio-set' => 'Bíbòmọ́lẹ̀',
+'revdelete-radio-unset' => 'Híhàn',
'revdelete-suppress' => 'Ìbòmọ́lẹ̀ àwọn ìpèsè ti àwọn alámùójútó àti ti àwọn yìókù',
'revdelete-unsuppress' => 'Ìyọkúrò àlà sí àwọn àtúnyẹ̀wò àdápadà',
'revdelete-log' => 'Ìdíẹ̀:',
'compareselectedversions' => 'Ìfiwéra àwọn àtúnṣe ìṣàyàn',
'showhideselectedversions' => 'Ìfihàn/ìbòmọ́lẹ̀ àwọn àtúnyẹ̀wò ṣíṣàyàn',
'editundo' => 'dápadà',
-'diff-multi' => '({{PLURAL:$1|Àtúnyẹ̀wò inú àrin kan|Àwọn àtúnyẹ̀wò inú àrin $1}} látọwọ́ {{PLURAL:$2|oníṣe kan|àwọn oníṣe $2}} kò jẹ́ fífihàn)',
+'diff-empty' => '(Kò ní yàtọ̀)',
'diff-multi-manyusers' => '({{PLURAL:$1|Àtúnyẹ̀wò inú àrin kan|Àwọn àtúnyẹ̀wò inú àrin $1}} látọwọ́ {{PLURAL:$2|oníṣe|àwọn oníṣe}} tó pọ̀ju $2 lọ kò jẹ́ fífihàn)',
'difference-missing-revision' => '{{PLURAL:$2|Àtúnyẹ̀wò kan|Àwọn àtúnyẹ̀wò $2}} ìyàtọ̀ yìí ($1) kò {{PLURAL:$2|sí|sí}}.
'searchdisabled' => 'Ṣíṣàwárí nínú {{SITENAME}} wà ní dídálẹ́kun.
Ní báyìí ná ẹ le ṣàwárí lọ́dọ̀ Google.
Àkíyèsí pé àwọn atọ́ka wọn fún àkóónú {{SITENAME}} le mọ́ jẹ́ tuntun.',
+'search-error' => 'Àṣìṣe ṣẹlẹ̀ fún ìwárí: $1',
# Preferences page
'preferences' => 'Àwọn ìfẹ́ràn',
'mypreferences' => 'Àwọn ìfẹ́ràn',
'prefs-edits' => 'Iye àwọn àtúnṣe:',
+'prefsnologintext2' => 'Ẹ jọ̀wọ́ ẹ $1 láti ṣe ìyípadà àwọn ìfẹ́ràn yín.',
'prefs-skin' => 'Skin (Àwọ̀)',
'skin-preview' => 'Àkọ́yẹ̀wò',
'datedefault' => 'Kò sí ìfẹ́ràn',
'rows' => 'Àwọn ìtẹ̀lé gbọlọjọ:',
'columns' => 'Àwọn ìtẹ̀lé gogoro:',
'searchresultshead' => 'Àwárí',
-'resultsperpage' => 'Àwọn èsì ní ojúewé kọ̀ọ̀kan:',
'stub-threshold' => 'Àlà fún idárú <a href="#" class="stub">àjàpọ̀ ẹ̀kúnrẹ́rẹ́</a> (bytes):',
'stub-threshold-disabled' => 'Dídálẹ́kun',
'recentchangesdays' => 'Iye ọjọ́ láti fihàn nínú àwọn àtúnṣe tuntun:',
'prefs-dateformat' => 'Irú ọjọ́ọdún',
'prefs-timeoffset' => 'Ìyàtọ̀ àsìkò',
'prefs-advancedediting' => 'Àwọn àṣàyàn gíga',
+'prefs-editor' => 'Olùṣàtúnṣe',
+'prefs-preview' => 'Àkọ́yẹ̀wò',
'prefs-advancedrc' => 'Àwọn àṣàyàn onígíga',
'prefs-advancedrendering' => 'Àwọn àṣàyàn onígíga',
'prefs-advancedsearchoptions' => 'Àwọn àṣàyàn onígíga',
# Recent changes
'nchanges' => '{{PLURAL:$1|àtúnṣe|àwọn àtúnṣe}} $1',
+'enhancedrc-history' => 'ìtàn',
'recentchanges' => 'Àwọn àtúnṣe tuntun',
'recentchanges-legend' => 'Àwọn àṣàyàn fún àtúnṣe tuntun',
'recentchanges-summary' => 'Ẹ tẹ̀ lé àwọn àtúnṣe tuntun sí wiki lórí ojúewé yìí.',
'recentchanges-label-minor' => 'Àtùnṣe kékeré nìyí',
'recentchanges-label-bot' => 'Rọ́bọ́ọ̀tì ni ó ṣe àtúnṣe yìí',
'recentchanges-label-unpatrolled' => 'Àtúnṣe yìí kò tí ì jẹ́ onísíṣọ́',
-'recentchanges-legend-newpage' => '$1 - ojúewé tuntun',
+'recentchanges-label-plusminus' => 'Iye bytes àtúnṣe sí ìtóbi ojúewé',
+'recentchanges-legend-heading' => "'''Ìtumọ̀:'''",
+'recentchanges-legend-newpage' => '(ẹ tún wo [[Special:NewPages|àtòjọ àwọn ojúewé tuntun]])',
'rcnotefrom' => "Àwọn àtúnṣe láti ''''$2''' (títí dé '''$1''' hàn) lábẹ́.",
'rclistfrom' => 'Àfihàn àwọn àtúnṣe tuntun nípa bíbẹ̀rẹ̀ láti $1',
'rcshowhideminor' => '$1 àwọn àtúnṣe kékéèké',
'rcshowhidebots' => '$1 àwọn bot',
-'rcshowhideliu' => '$1 àwọn oníṣe tótiwọlé',
+'rcshowhideliu' => '$1 àwọn oníṣe aforúkọsílẹ̀',
'rcshowhideanons' => '$1 àwọn oníṣe aláìlórúkọ',
'rcshowhidepatr' => '$1 àwọn àtúnṣe ọlùṣọ́',
'rcshowhidemine' => '$1 àwọn àtúnṣe mi',
'reuploaddesc' => 'Fagilé ìrùsókè kí ó tó padà sí fọ́ọ̀mù ìrùsókè',
'upload-tryagain' => 'Ìkóólẹ̀ fáìlì ìjúwe aláàtúnṣe',
'uploadnologin' => 'Ẹ kò tíì wọlé',
-'uploadnologintext' => 'Ẹ gbọ́dọ̀ [[Special:UserLogin|wọlè]] láti ṣe ìrùsókè faili.',
+'uploadnologintext' => 'Ẹ jọ̀wọ́ ẹ $1 láti ṣe ìrùsókè fáìlì.',
'upload_directory_missing' => 'Àpò ìrùsókè ($1) kòsí bẹ́ẹ̀sìni kò le jẹ́ dídá látọwọ́ ẹ̀rọ-ìwọ̀fà.',
'upload_directory_read_only' => 'Àpò ìrùsókè ($1) kò ṣeékọ sí nínú látọwọ́ ẹ̀rọ-ìwọ̀fà.',
'uploaderror' => 'Àsìse ìrùsókè',
'listfiles_size' => 'Ìtóbi',
'listfiles_description' => 'Ìjúwe',
'listfiles_count' => 'Àwọn àtẹ̀jáde',
+'listfiles-latestversion-yes' => 'Bẹ́ẹ̀ni',
+'listfiles-latestversion-no' => 'Bẹ́ẹ̀kọ́',
# File description page
'file-anchor-link' => 'Fáìlì',
'watchmethod-list' => 'únwo àwọn ojúewé mímójútó fún àwọn àtúnṣe tuntun',
'watchlistcontains' => 'Àwọn ìmójútó yín ní {{PLURAL:$1|ojúewé|àwọn ojúewé}} $1 nínú.',
'iteminvalidname' => "Ìṣòro wà pẹ̀lú '$1', orúkọ àìtọ́...",
-'wlnote' => "Lábẹ́ {{PLURAL:$1|ni àtúnṣe tó gbẹ̀yìn|ni àwọn àtúnṣe '''$1''' tí wọn gbẹ̀yìn}} ní {{PLURAL:$2|wákàtí kan|wákàtí '''$2'''}} sẹ́yìn, títí dí ọjọ́ $3, $4.",
'wlshowlast' => 'Ìfihàn wákàtí $1 sẹ́yìn ọjọ́ $2 sẹ́yìn $3',
'watchlist-options' => 'Àṣàyàn ìmójútọ́',
'tooltip-pt-watchlist' => 'Àkójọ àwọn ojúewé tí ẹ̀ ún mójútó bóyá wọ́nyí padà',
'tooltip-pt-mycontris' => 'Àkójọ àwọn àfikún yín',
'tooltip-pt-login' => 'A gbà yín níyànjú kí ẹwọlé, bótilẹ̀jẹ́pẹ́ kò pọndandan.',
-'tooltip-pt-anonlogin' => 'A gbàyín níyànjú láti wọlé, bótilẹ̀jẹ́pé kò ṣe dandan.',
'tooltip-pt-logout' => 'Ìjáde',
'tooltip-ca-talk' => 'Ìfọ̀rọ̀wérọ̀ nípa ohun inú ojúewé yìí',
'tooltip-ca-edit' => 'Ẹ le ṣe àtúnṣe sí ojúewé yìí.
'imgmultigo' => 'Lọ!',
'imgmultigoto' => 'Lọ sí ojúewé $1',
+# Language selector for translatable SVGs
+'img-lang-default' => '(èdè látìbẹ̀rẹ̀)',
+
# Table pager
'ascending_abbrev' => 'ròkè',
'descending_abbrev' => 'relẹ̀',
# Image rotation
'rotate-comment' => 'Àwòrán jẹ́ mímúyípo ní {{PLURAL:$1|degree|ìyí}} $1 bíi ọwọ́ ago',
+# Special:ExpandTemplates
+'expand_templates_preview' => 'Àkọ́yẹ̀wò',
+
);
$messages = array(
# User preference toggles
'tog-underline' => '連結加底線:',
-'tog-justify' => '拍齊段落',
'tog-hideminor' => '最新更改唔顯示小修改',
'tog-hidepatrolled' => '響最近修改度隱藏巡查過嘅編輯',
'tog-newpageshidepatrolled' => '響新頁清單度隱藏巡查過嘅版',
'tog-numberheadings' => '標題自動編號',
'tog-showtoolbar' => '顯示修改工具列(需要JavaScript)',
'tog-editondblclick' => '撳兩下改嘢(需要JavaScript)',
-'tog-editsection' => '可以用 [修改] 掣更改個別段落',
'tog-editsectiononrightclick' => '可以撳右掣更改個別段落(需要JavaScript)',
-'tog-showtoc' => '多過三段時顯示目錄',
'tog-rememberpassword' => '響呢個瀏覽器度記住我嘅登入資料 (最高維持$1{{PLURAL:$1|日|日}})',
'tog-watchcreations' => '將我開嘅頁加入監視清單',
'tog-watchdefault' => '將我修改嘅頁加入監視清單',
'compareselectedversions' => '比較被選嘅修訂',
'showhideselectedversions' => '顯示/隱藏揀咗嘅修訂',
'editundo' => '復原',
-'diff-multi' => '(由$2位用戶所做嘅$1個中途修訂冇顯示到)',
'diff-multi-manyusers' => '(由$2位更多用戶所做嘅$1個中途修訂冇顯示到)',
# Search results
'rows' => '行數:',
'columns' => '列數:',
'searchresultshead' => '搵嘢',
-'resultsperpage' => '每頁顯示嘅擊中數:',
'stub-threshold' => '<a href="#" class="stub">楔位連結</a>格式門檻 (bytes):',
'stub-threshold-disabled' => '閂咗',
'recentchangesdays' => '最近更改中嘅顯示日數:',
'watchmethod-list' => '睇緊被監視頁有乜新修改',
'watchlistcontains' => '你嘅監視清單裏面有$1頁。',
'iteminvalidname' => "項目'$1'出錯,無效嘅名稱...",
-'wlnote' => "以下係最近'''$2'''個鐘之內嘅最新$1次修改。",
'wlshowlast' => '顯示最近 $1 個鐘 $2 日 $3 嘅修改',
'watchlist-options' => '監視清單選項',
'tooltip-pt-watchlist' => '你所監視嘅頁面更改一覽',
'tooltip-pt-mycontris' => '你嘅貢獻一覽',
'tooltip-pt-login' => '建議你去登入;但係唔係一定嘅',
-'tooltip-pt-anonlogin' => '建議你去登入;但係唔係一定嘅',
'tooltip-pt-logout' => '登出',
'tooltip-ca-talk' => '關於內容頁嘅討論',
'tooltip-ca-edit' => '你可以編輯呢一頁。請在儲存之前先預覽一吓。',
$messages = array(
# User preference toggles
'tog-underline' => 'Lienks onderstreepn:',
-'tog-justify' => 'Paragraeven uutvullen',
'tog-hideminor' => 'Kleine wijzigingen verbergen in recente wijzigingen',
'tog-hidepatrolled' => "Gemarkeerde wiezigiengen verbarg'n in juust angepast",
'tog-newpageshidepatrolled' => "Gemarkeerde pagina's verbarg'n in de lieste mei nuwe pagina's",
'tog-numberheadings' => 'Koppn automaotisch nummern',
'tog-showtoolbar' => 'Bewerkiengswerkbalke weerheven (JavaScript vereist)',
'tog-editondblclick' => 'Dubbelklikkn voe bewerkn (JavaScript vereist)',
-'tog-editsection' => "Bewerken van deêlpahina's meuhlijk maeken via [bewerken]-koppeliengen",
'tog-editsectiononrightclick' => "Bewerken van deêlpahina's meulijk maeken mie een rechtermuusklik op een tussenkopje (JavaScript vereist)",
-'tog-showtoc' => "Inoudsopgaeve weerheven (voe pahina's mie minstes 3 tussenkopjes)",
'tog-rememberpassword' => 'Anmeldhehevens ontouwen (maximaal $1 {{PLURAL:$1|dag|daege}})',
'tog-watchcreations' => "Pahina's die ak anmik automaotisch volhen",
'tog-watchdefault' => "Pahina's die ak bewerk automaotisch volhen",
'delete' => 'Wissen',
'deletethispage' => 'Wis deêze bladzie',
'undelete_short' => '$1 {{PLURAL:$1|bewerkieng|bewerkiengen}} terugzetten',
-'viewdeleted_short' => '{{PLURAL: $1|Eên geschrapte bewarkienge|$1 geschrapte bewarkiengen}} bekieken',
+'viewdeleted_short' => '{{PLURAL:$1|Eên geschrapte bewarkienge|$1 geschrapte bewarkiengen}} bekieken',
'protect' => 'Bescherm',
'protect_change' => 'wiezigen',
'protectthispage' => 'Bescherm deêze bladzie',
'lineno' => 'Rehel $1:',
'compareselectedversions' => 'Anevienkte versies verhelieken',
'editundo' => 'onedaene maeken',
-'diff-multi' => 'Von {{PLURAL:$2|eên gebruker|$2 gebrukers}} ({{PLURAL:$1|wor eên tussenlihhende versie|worn $1 tussenlihhende versies}} nie weereheven)',
# Search results
'searchresults' => 'Zoekresultaoten',
'rows' => 'Rehels:',
'columns' => "Kolomm'n:",
'searchresultshead' => 'Zoek',
-'resultsperpage' => "Resultaot'n per pagina:",
'stub-threshold' => 'Drempel voe markerieng <a href="#" class="stub">stompje</a>:',
'recentchangesdays' => 'Antal daehen weer te heven in Juust angepast:',
'recentchangescount' => "Antal pagina's in Juust angepast:",
* @author Stevenliuyi
* @author Supaiku
* @author Tommyang
+ * @author User670839245
* @author Waihorace
* @author Wilsonmess
* @author Wmr89502270
* @author Xiaomingyan
* @author Yfdyh000
* @author 乌拉跨氪
+ * @author 御坂美琴
* @author 燃玉
* @author 阿pp
*/
$messages = array(
# User preference toggles
'tog-underline' => '链接下划线:',
-'tog-justify' => '对齐段落',
'tog-hideminor' => '隐藏最近更改中的小编辑',
'tog-hidepatrolled' => '隐藏最近更改中的已巡查编辑',
'tog-newpageshidepatrolled' => '隐藏新页面列表中的已巡查页面',
'tog-numberheadings' => '自动编号标题',
'tog-showtoolbar' => '显示编辑工具栏',
'tog-editondblclick' => '双击编辑页面',
-'tog-editsection' => '启用[编辑]链接编辑段落',
'tog-editsectiononrightclick' => '启用右击段落标题编辑段落',
-'tog-showtoc' => '显示目录(对于有多于3个标题的页面)',
'tog-rememberpassword' => '在该浏览器记住我的登录状态(最长$1天)',
'tog-watchcreations' => '添加我创建的页面和我上传的文件至我的监视列表',
'tog-watchdefault' => '添加我编辑的页面和文件至我的监视列表',
'category-file-count-limited' => '以下{{PLURAL:$1|文件|$1个文件}}属于当前分类。',
'listingcontinuesabbrev' => '续',
'index-category' => '可索引页面',
-'noindex-category' => '不可索引页面',
+'noindex-category' => '禁止索引的页面',
'broken-file-category' => '有受损文件链接的页面',
'categoryviewer-pagedlinks' => '($1)($2)',
'deletethispage' => '删除本页',
'undeletethispage' => '还原本页',
'undelete_short' => '还原{{PLURAL:$1|$1个编辑}}',
-'viewdeleted_short' => '查看$1个被删除的编辑',
+'viewdeleted_short' => '查看$1个已被删除的编辑',
'protect' => '保护',
'protect_change' => '更改',
'protectthispage' => '保护本页',
'collapsible-expand' => '展开',
'thisisdeleted' => '查看或恢复$1?',
'viewdeleted' => '查看$1?',
-'restorelink' => '$1个被删除的编辑',
+'restorelink' => '$1个已被删除的编辑',
'feedlinks' => 'Feed:',
'feed-invalid' => '无效的订阅feed类型。',
'feed-unavailable' => '不提供联合feed',
'retypenew' => '确认密码:',
'resetpass_submit' => '设定密码并登录',
'changepassword-success' => '您已经修改了您的密码!',
+'changepassword-throttled' => '您最近尝试了多次登录。请等待$1后再试。',
'resetpass_forbidden' => '无法更改密码',
'resetpass-no-info' => '您必须登录后直接进入这个页面。',
'resetpass-submit-loggedin' => '更改密码',
'changeemail-password' => '你的{{SITENAME}}密码:',
'changeemail-submit' => '更改电子邮件地址',
'changeemail-cancel' => '取消',
+'changeemail-throttled' => '您最近尝试了太多次登录。请等待$1后再试。',
# Special:ResetTokens
'resettokens' => '重置密钥',
'newarticletext' => "你点击了一个尚不存在的页面的链接。要创建该页面,请在下面的编辑框中输入内容(更多信息请见[[{{MediaWiki:Helppage}}|帮助页面]])。如果你是错误地到达这里,请点击你的浏览器的'''返回'''按钮。",
'anontalkpagetext' => "---- ''这是一个还未建立账户的匿名用户的讨论页, 因此我们只能用IP地址来与他或她联络。该IP地址可能由几名用户共享。如果您是一名匿名用户并认为此页上的评语与您无关,请[[Special:UserLogin/signup|创建新账户]]或[[Special:UserLogin|登录]]以避免在未来与其他匿名用户混淆。''",
'noarticletext' => '本页面目前没有内容。你可以在其他页面中[[Special:Search/{{PAGENAME}}|搜索本页标题]]、<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} 搜索相关日志]或[{{fullurl:{{FULLPAGENAME}}|action=edit}} 编辑本页面]。</span>',
-'noarticletext-nopermission' => '本页面目前没有内容。你可以在其他页面中[[Special:Search/{{PAGENAME}}|搜索本页标题]]或<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} 搜索相关日志],但你没有权限创建本页面。',
+'noarticletext-nopermission' => '本页面目前没有内容。你可以在其他页面中[[Special:Search/{{PAGENAME}}|搜索本页标题]]或<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} 搜索相关日志]</span>,但你没有权限创建本页面。',
'missing-revision' => '“{{PAGENAME}}”的修订#$1不存在。
这通常是因为进入了一个已被删除的页面的历史链接。
'content-failed-to-parse' => '未能将 $2 内容转换为 $1:$3',
'invalid-content-data' => '无效的内容数据',
'content-not-allowed-here' => '[[$2]]页面上不允许“$1”内容',
-'editwarning-warning' => '离开本页面可能导致你失去任何你已经作出的更改。如果你处于登录状态,你可以在你的设置的“编辑”部分停用该警告。',
+'editwarning-warning' => '离开本页面可能导致你失去任何你已经作出的更改。如果你处于登录状态,你可以在你的设置的“{{int:prefs-editing}}”部分停用该警告。',
+'editpage-notsupportedcontentformat-title' => '内容格式尚不支持',
+'editpage-notsupportedcontentformat-text' => '内容模型$2尚不支持内容格式$1。',
# Content models
'content-model-wikitext' => 'wiki文本',
'histlegend' => "差异选择:选出需要对比的版本,按“回车键”或下方的按钮进行对比。<br />
说明:'''({{int:cur}})'''=与最后版本之间的差异,'''({{int:last}})'''=与上一版本之间的差异,'''{{int:minoreditletter}}'''=小编辑。",
'history-fieldset-title' => '浏览历史',
-'history-show-deleted' => '仅被删除的',
+'history-show-deleted' => '仅已被删除',
'histfirst' => '最早',
'histlast' => '最新',
'historysize' => '($1字节)',
'showhideselectedversions' => '显示/隐藏选择的版本',
'editundo' => '撤销',
'diff-empty' => '(没有差异)',
-'diff-multi' => '(未显示$2个用户的$1个中间版本)',
+'diff-multi-sameuser' => '(相同用户的{{PLURAL:$1|一个|$1个}}中间修订版本未显示',
+'diff-multi-otherusers' => '({{PLURAL:$1|某位用户|$2位用户}}的{{PLURAL:$1|一个|$1个}}中间修订版本未显示)',
'diff-multi-manyusers' => '(未显示超过$2个用户的$1个中间版本)',
'difference-missing-revision' => '此差异对比的{{PLURAL:$2|一个修订|$2个修订}}($1){{PLURAL:$2|没有}}找到。
'shown-title' => '每页显示$1项结果',
'viewprevnext' => '查看($1{{int:pipe-separator}}$2)($3)',
'searchmenu-exists' => "'''本wiki上有名为“[[:$1]]”的页面。'''",
-'searchmenu-new' => "'''在本wiki上新建名为“[[:$1]]”的页面!'''",
+'searchmenu-new' => '<strong>在本Wiki上新建名为“[[:$1]]”的页面!</strong>{{PLURAL:$2|0=|另请查看您的搜索找的结果。|另请查看搜索结果。}}',
'searchprofile-articles' => '内容页面',
'searchprofile-project' => '帮助和项目页面',
'searchprofile-images' => '多媒体',
'search-result-score' => '相关度:$1%',
'search-redirect' => '(重定向自“$1”)',
'search-section' => '(“$1”段落)',
+'search-file-match' => '(匹配文件内容)',
'search-suggest' => '您是不是要找:$1',
'search-interwiki-caption' => '姊妹项目',
'search-interwiki-default' => '$1项结果:',
'rows' => '行数:',
'columns' => '列数:',
'searchresultshead' => '搜索',
-'resultsperpage' => '每页显示链接数:',
'stub-threshold' => '<a href="#" class="stub">短页面链接</a>格式阈值(字节):',
'stub-threshold-disabled' => '停用',
'recentchangesdays' => '最近更改中显示的天数:',
'timezoneregion-europe' => '欧洲',
'timezoneregion-indian' => '印度洋',
'timezoneregion-pacific' => '太平洋',
-'allowemail' => '接受来自其他用户的电子邮件',
+'allowemail' => '启用来自其他用户的电子邮件',
'prefs-searchoptions' => '搜索',
'prefs-namespaces' => '名字空间',
'defaultns' => '否则在这些名字空间中搜索:',
'right-deletelogentry' => '删除和恢复特定的日志项目',
'right-deleterevision' => '删除和恢复页面的特定版本',
'right-deletedhistory' => '查看被删除的历史项目,不含相关文本',
-'right-deletedtext' => '查看被删除的文本及被删除的版本间差异',
-'right-browsearchive' => '搜索被删除的页面',
+'right-deletedtext' => '查看已被删除的文本及已删除版本间的差异',
+'right-browsearchive' => '搜索已被删除的页面',
'right-undelete' => '还原页面',
'right-suppressrevision' => '审查和恢复向管理员隐藏的版本',
'right-suppressionlog' => '查看非公开日志',
'action-delete' => '删除本页',
'action-deleterevision' => '删除本版本',
'action-deletedhistory' => '查看本页面被删除的历史',
-'action-browsearchive' => '搜索被删除的页面',
+'action-browsearchive' => '搜索已被删除的页面',
'action-undelete' => '还原本页',
'action-suppressrevision' => '审查和恢复本隐藏版本',
'action-suppressionlog' => '查看本非公开日志',
'newsectionsummary' => '/* $1 */ 新段落',
'rc-enhanced-expand' => '显示细节',
'rc-enhanced-hide' => '隐藏细节',
-'rc-old-title' => '最初被创建为" $1 "',
+'rc-old-title' => '最初创建为“$1”',
# Recent changes linked
'recentchangeslinked' => '相关更改',
'filename-tooshort' => '文件名过短。',
'filetype-banned' => '此类文件被禁止。',
'verification-error' => '文件未通过验证。',
-'hookaborted' => '您所尝试的修改被插件钩子舍弃。',
+'hookaborted' => '您所尝试的修改被一个扩展程序终止。',
'illegal-filename' => '文件名非法。',
'overwrite' => '不允许覆盖现有文件。',
'unknown-error' => '发生未知错误。',
'fileexists-shared-forbidden' => '共享文件库中存在该名称的文件。如果你仍想上传你的文件,请返回使用其他名称。[[File:$1|thumb|center|$1]]',
'file-exists-duplicate' => '本文件是以下{{PLURAL:$1|文件}}的副本:',
'file-deleted-duplicate' => '一个相同名称的文件 ([[:$1]]) 在先前删除过。您应该在重新上传之前检查一下该文件之删除纪录。',
+'file-deleted-duplicate-notitle' => '之前有与此相同的文件被删除和取消标题。您应该询问查看过改文件数据的任何人以复查重新上传时的诸多问题。',
'uploadwarning' => '上传警告',
'uploadwarning-text' => '请修改下面的文件说明并重试。',
'savefile' => '保存文件',
'nviews' => '$1次浏览',
'nimagelinks' => '用于$1个页面中',
'ntransclusions' => '用于$1个页面中',
-'specialpage-empty' => 'æ\97 该æ\8a¥å\91\8aç\9a\84结果。',
+'specialpage-empty' => 'æ¤æ\8a¥å\91\8aæ\97 结果。',
'lonelypages' => '孤立页面',
'lonelypagestext' => '以下页面没有被{{SITENAME}}的其它页面链接或包含。',
'uncategorizedpages' => '未归类页面',
'protectedpages' => '受保护页面',
'protectedpages-indef' => '仅无限期保护',
'protectedpages-cascade' => '仅连锁保护',
+'protectedpages-noredirect' => '隐藏重定向',
'protectedpagesempty' => '在这些参数下没有页面正在保护。',
'protectedtitles' => '受保护标题',
'protectedtitlesempty' => '在这些参数之下并无标题正在保护。',
'special-categories-sort-abc' => '按字母排列',
# Special:DeletedContributions
-'deletedcontributions' => '被删除的用户贡献',
-'deletedcontributions-title' => '被删除的用户贡献',
+'deletedcontributions' => '已被删除的用户贡献',
+'deletedcontributions-title' => '已被删除的用户贡献',
'sp-deletedcontributions-contribs' => '贡献',
# Special:LinkSearch
'noemailtitle' => '无电子邮件地址',
'noemailtext' => '该用户还没有指定一个有效的电子邮件地址。',
'nowikiemailtitle' => '禁止电子邮件',
-'nowikiemailtext' => 'è¿\99ä½\8dç\94¨æ\88·é\80\89æ\8b©ä¸\8dæ\8e¥æ\94¶其他用户的电子邮件。',
+'nowikiemailtext' => '该ç\94¨æ\88·å·²ç»\8fé\80\89æ\8b©ä¸\8dæ\8e¥æ\94¶æ\9d¥è\87ª其他用户的电子邮件。',
'emailnotarget' => '收件人不存在或无效的用户名。',
'emailtarget' => '输入收件人的用户名',
'emailusername' => '用户名:',
'watchmethod-list' => '查看监视页中的最新修改',
'watchlistcontains' => '您的监视列表包含$1个页面。',
'iteminvalidname' => "页面'$1'错误,无效命名...",
-'wlnote' => "下面是{{PLURAL:$2|上|过去'''$2'''}}小时的{{PLURAL:$1|最后更改|最后'''$1'''个更改}},截至$3 $4。",
+'wlnote2' => '以下是最近<strong>$1</strong>小时的变化,作为$2,$3。',
'wlshowlast' => '显示过去$1小时或$2天内的$3',
'watchlist-options' => '监视列表选项',
'delete-edit-reasonlist' => '编辑删除原因',
'delete-toobig' => '这个页面有一个十分大量的编辑历史,超过$1次修订。删除此类页面的动作已经被限制,以防止在{{SITENAME}}上的意外扰乱。',
'delete-warning-toobig' => '这个页面有一个十分大量的编辑历史,超过$1次修订。删除它可能会扰乱{{SITENAME}}的数据库操作;在继续此动作前请小心。',
+'deleting-backlinks-warning' => "'''警告:'''有其他页面链接至或transclude自您要删除的页面。",
# Rollback
'rollback' => '回退编辑',
'sp-contributions-newbies-sub' => '新手',
'sp-contributions-newbies-title' => '新手的用户贡献',
'sp-contributions-blocklog' => '封禁日志',
-'sp-contributions-deleted' => '被删除的用户贡献',
+'sp-contributions-deleted' => '已被删除的用户贡献',
'sp-contributions-uploads' => '上传',
'sp-contributions-logs' => '日志',
'sp-contributions-talk' => '讨论',
参见[[Special:BlockList|封禁列表]]以复核封禁。',
'ipb-blockingself' => '您将要封禁自己!确实要这样做吗?',
'ipb-confirmhideuser' => '您即将在封禁用户的同时启用“隐藏账户”功能。这将从所有列表和日志记录中隐藏这个用户名。您确认这样做吗?',
+'ipb-confirmaction' => '如果您确信要这样做,请检查底部的“{{int:ipb-confirm}}”部分。',
'ipb-edit-dropdown' => '编辑封禁原因',
'ipb-unblock-addr' => '解封$1',
'ipb-unblock' => '解封用户名或IP地址',
'range_block_disabled' => '管理员执行段封禁的权限已被禁用。',
'ipb_expiry_invalid' => '无效的终止时间。',
'ipb_expiry_temp' => '隐藏用户名的封禁必须是永久性的。',
-'ipb_hide_invalid' => '无法隐藏此账户,它可能有太多编辑。',
+'ipb_hide_invalid' => '无法封禁此账户;它拥有多于$1次编辑。',
'ipb_already_blocked' => '“$1”已被封禁',
'ipb-needreblock' => '$1已被封禁。您是否想更改封禁设置?',
'ipb-otherblocks-header' => '其他{{PLURAL:$1|封禁}}',
'allmessages-prefix' => '以前缀过滤:',
'allmessages-language' => '语言:',
'allmessages-filter-submit' => '提交',
+'allmessages-filter-translate' => '翻译',
# Thumbnails
'thumbnail-more' => '放大',
'importuploaderrortemp' => '上传导入文件失败。临时文件夹已遗失。',
'import-parse-failure' => 'XML导入语法失败',
'import-noarticle' => '没有页面作导入!',
-'import-nonewrevisions' => 'æ\89\80æ\9c\89ç\9a\84修订ä¹\8bå\89\8dæ\9b¾å·²å¯¼å\85¥。',
+'import-nonewrevisions' => '没æ\9c\89导å\85¥ä¿®è®¢ï¼\88æ\89\80æ\9c\89é\83½å·²å\98å\9c¨æ\88\96å\9b é\94\99误跳è¿\87ï¼\89。',
'xml-error-string' => '$1于行$2,列$3($4字节):$5',
'import-upload' => '上传XML数据',
'import-token-mismatch' => '会话数据遗失。请重试。',
'import-error-special' => '页面“$1”未导入,因为它需要使用一个不能创建页面的特殊名字空间。',
'import-error-invalid' => '页面“$1”未能导入,因为它的名字无效。',
'import-error-unserialize' => '页面“$1”的版本$2无法反序列化。此版本使用内容模型$3序列化为$4。',
+'import-error-bad-location' => '在此wiki使用了内容模式$3的修订版本$2不能被保存至“$1”,这是因为此模式在此页面不被支持。',
'import-options-wrong' => '{{PLURAL:$2|选项}}出错:<nowiki>$1</nowiki>',
'import-rootpage-invalid' => '根页面的标题无效。',
'import-rootpage-nosubpage' => '名字空间为“$1”的根页面不允许子页面。',
'tooltip-pt-watchlist' => '你正在监视更改的页面的列表',
'tooltip-pt-mycontris' => '你的贡献的列表',
'tooltip-pt-login' => '我们鼓励您登录,不过这不是强制的',
-'tooltip-pt-anonlogin' => '我们鼓励你登录,不过这不是强制的',
'tooltip-pt-logout' => '退出登录',
'tooltip-ca-talk' => '关于内容页面的讨论',
'tooltip-ca-edit' => '你可以编辑本页面。请在保存前使用预览按钮',
'markedaspatrolled' => '标记为已检查',
'markedaspatrolledtext' => '[[:$1]]的已选中修订版本已被标识为已巡查。',
'rcpatroldisabled' => '最新更改检查被关闭',
-'rcpatroldisabledtext' => '最新更改检查的功能目前已关闭。',
+'rcpatroldisabledtext' => '最近更改巡查功能目前已关闭。',
'markedaspatrollederror' => '不能标志为已检查',
'markedaspatrollederrortext' => '你需要指定一个版本以标记为已巡查。',
'markedaspatrollederror-noautopatrol' => '你不能把自己的更改标记为已检查。',
'version-parser-function-hooks' => '解析器函数钩',
'version-hook-name' => '钩名',
'version-hook-subscribedby' => '署名',
-'version-version' => '(版本$1)',
-'version-license' => '授权协议',
+'version-version' => '(版本 $1)',
+'version-license' => 'MediaWiki协议',
+'version-ext-license' => '授权',
+'version-ext-colheader-name' => '扩展',
+'version-ext-colheader-version' => '版本',
+'version-ext-colheader-license' => '协议',
+'version-ext-colheader-description' => '说明',
+'version-ext-colheader-credits' => '作者',
+'version-license-title' => '用于$1的授权',
+'version-license-not-found' => '没有找到与此拓展相关的授权信息。',
+'version-credits-title' => '用于$1的信用',
+'version-credits-not-found' => '没有找到与此拓展相关的信用信息。',
'version-poweredby-credits' => "本Wiki由'''[https://www.mediawiki.org/ MediaWiki]'''驱动,版权所有 © 2001-$1 $2。",
'version-poweredby-others' => '其他',
'version-poweredby-translators' => 'translatewiki.net上的翻译者',
'api-error-overwrite' => '不允许覆盖现有文件。',
'api-error-stashfailed' => '内部错误:服务器保存临时文件失败。',
'api-error-publishfailed' => '内部错误:服务器发布临时文件失败。',
+'api-error-stasherror' => '上传文件存档时出现错误。',
'api-error-timeout' => '服务器没有在预期内响应。',
'api-error-unclassified' => '出现未知错误。',
'api-error-unknown-code' => '未知错误:$1',
'expand_templates_generate_rawhtml' => '显示原始HTML',
'expand_templates_preview' => '预览',
+# Unknown messages
+'createaccount-hook-aborted' => '$1',
+'uploadinvalidxml' => '上传文件中的XML无法解析。',
);
$messages = array(
# User preference toggles
'tog-underline' => '連結加底線:',
-'tog-justify' => '段落對齊',
'tog-hideminor' => '隱藏最近更改中的小修改',
'tog-hidepatrolled' => '隱藏最近更改中巡查過的編輯',
'tog-newpageshidepatrolled' => '隱藏新頁面清單中巡查過的頁面',
'tog-numberheadings' => '標題自動編號',
'tog-showtoolbar' => '顯示編輯工具欄',
'tog-editondblclick' => '雙擊編輯頁面',
-'tog-editsection' => '允許通過點擊[編輯]連結編輯段落',
'tog-editsectiononrightclick' => '允許右擊標題編輯段落',
-'tog-showtoc' => '顯示目錄 (針對一頁超過3個標題的頁面)',
'tog-rememberpassword' => '在這個瀏覽器上記住我的登入狀態(最多 $1 天)',
'tog-watchcreations' => '將我建立的頁面和上傳的檔案加入監視列表',
'tog-watchdefault' => '將我更改的頁面和檔案加入監視列表',
'retypenew' => '確認密碼:',
'resetpass_submit' => '設定密碼並登入',
'changepassword-success' => '您的密碼已成功變更!',
+'changepassword-throttled' => '您近期嘗試了多次登錄。請等待$1后再試。',
'resetpass_forbidden' => '無法變更密碼',
'resetpass-no-info' => '您必須登入後直接進入這個頁面。',
'resetpass-submit-loggedin' => '變更密碼',
'changeemail-password' => '您的{{SITENAME}}密碼:',
'changeemail-submit' => '變更電子郵件',
'changeemail-cancel' => '取消',
+'changeemail-throttled' => '您近期嘗試了太多次登錄。請等待$1后再試。',
# Special:ResetTokens
'resettokens' => '重設密鑰',
'invalid-content-data' => '內容資料無效',
'content-not-allowed-here' => '[[$2]]頁面上不允許「$1」內容',
'editwarning-warning' => '離開這個頁面可能會令您失去之前作出的所有更改。若您已經登入,您可在偏好設定的「編輯」部份裡關閉此警告。',
+'editpage-notsupportedcontentformat-title' => '內容格式尚無法支援',
+'editpage-notsupportedcontentformat-text' => '內容模型$2尚無法支援內容格式$1。',
# Content models
'content-model-wikitext' => '圍記文字(Wikitext)',
'showhideselectedversions' => '顯示/隱藏選定的修訂版本',
'editundo' => '復原',
'diff-empty' => '(沒有差異)',
-'diff-multi' => '(由{{PLURAL:$2|1名用戶|$2名用戶}}作出的{{PLURAL:$1|一個中途修訂版本|$1個中途修訂版本}}未被顯示)',
'diff-multi-manyusers' => '(由多於$2名用戶作出的{{PLURAL:$1|一個中途修訂版本|$1個中途修訂版本}} 未被顯示)',
'difference-missing-revision' => '{{PLURAL:$2|1次修訂|$2 次修訂}}差異($1)不存在。
'search-result-score' => '相關度: $1%',
'search-redirect' => '(重定向 $1)',
'search-section' => '(段落 $1)',
+'search-file-match' => '(匹配檔案內容)',
'search-suggest' => '{{GENDER:|你|妳|你}}是不是要找:$1',
'search-interwiki-caption' => '姊妹計劃',
'search-interwiki-default' => '$1 項結果:',
'rows' => '行數:',
'columns' => '列數:',
'searchresultshead' => '搜尋',
-'resultsperpage' => '每頁顯示連結數:',
'stub-threshold' => '<a href="#" class="stub">短頁面連結</a>格式門檻值 (位元組):',
'stub-threshold-disabled' => '已停用',
'recentchangesdays' => '近期變更的顯示日數:',
如果{{GENDER:|你|妳|你}}仍然想去上載它的話,請返回並用一個新的名稱來上傳此檔案。[[File:$1|thumb|center|$1]]',
'file-exists-duplicate' => '這個檔案是跟以下的{{PLURAL:$1|一|多}}個檔案重覆:',
'file-deleted-duplicate' => '一個相同名稱的檔案 ([[:$1]]) 在先前刪除過。您應該在重新上傳之前檢查一下該檔案之刪除紀錄。',
+'file-deleted-duplicate-notitle' => '此前同內容檔案已刪除並將之取消標題。您應詢問與既有檔案之相關用戶以複查再度上載之相關問題。',
'uploadwarning' => '上載警告',
'uploadwarning-text' => '請修改以下的檔案描述並重試。',
'savefile' => '儲存檔案',
'protectedpages' => '受保護頁面',
'protectedpages-indef' => '只有無期之保護頁面',
'protectedpages-cascade' => '只有連鎖之保護頁面',
+'protectedpages-noredirect' => '隱藏重定向',
'protectedpagesempty' => '在這些參數下沒有頁面正在保護。',
'protectedtitles' => '受保護標題',
'protectedtitlesempty' => '在這些參數之下並無標題正在保護。',
'watchmethod-list' => '檢查最近編輯的被監視頁面',
'watchlistcontains' => '您的監視列表包含$1個頁面。',
'iteminvalidname' => "頁面 '$1' 錯誤,無效命名...",
-'wlnote' => "截至$3 $4,以下是最近'''$2'''小時內的最後'''$1'''次修改。",
+'wlnote2' => '以下是新近<strong>$1</strong>小時的更改,作為$2,$3。',
'wlshowlast' => '顯示最近$1小時;$2天;$3的修改。',
'watchlist-options' => '監視列表選項',
'delete-edit-reasonlist' => '編輯刪除理由',
'delete-toobig' => '這個頁面有一個十分大量的編輯歷史,超過$1次修訂。刪除此類頁面的動作已經被限制,以防止在{{SITENAME}}上的意外擾亂。',
'delete-warning-toobig' => '這個頁面有一個十分大量的編輯歷史,超過$1次修訂。刪除它可能會擾亂{{SITENAME}}的資料庫操作;在繼續此動作前請小心。',
+'deleting-backlinks-warning' => "'''警告:'''您要刪除的頁面有其他頁面連接至此或從此頁面transclude。",
# Rollback
'rollback' => '回退編輯',
參看[[Special:BlockList|被封IP地址列表]]以覆審查封。',
'ipb-blockingself' => '你要封禁自己!確認要這樣做嗎?',
'ipb-confirmhideuser' => '你要封禁用戶並隱藏其用戶名,這會隱藏在所有列表及日誌中涉及此用戶之用戶名。你確定要這樣做嗎?',
+'ipb-confirmaction' => '如果您確信這樣做,請檢查底部的「{{int:ipb-confirm}}」部分。',
'ipb-edit-dropdown' => '編輯查封原因',
'ipb-unblock-addr' => '解封$1',
'ipb-unblock' => '解除禁封用戶名或IP地址',
'range_block_disabled' => '只有管理員才能創建禁止查封的範圍。',
'ipb_expiry_invalid' => '無效的終止時間。',
'ipb_expiry_temp' => '隱藏用戶名封鎖必須是永久性的。',
-'ipb_hide_invalid' => '不能壓止這個賬戶;它可能有太多編輯。',
+'ipb_hide_invalid' => '不能抑制此賬戶;它擁有多於$1次編輯。',
'ipb_already_blocked' => '已經封鎖「$1」',
'ipb-needreblock' => '$1已經被封鎖。您是否想更改這個設定?',
'ipb-otherblocks-header' => '其他{{PLURAL:$1|封鎖}}',
'allmessages-prefix' => '以前綴過濾:',
'allmessages-language' => '語言:',
'allmessages-filter-submit' => '往',
+'allmessages-filter-translate' => '翻譯',
# Thumbnails
'thumbnail-more' => '放大',
'import-error-special' => '「$1」未能導入因為該頁面使用一個不能創建頁面的特殊名字空間。',
'import-error-invalid' => '「$1」不能導入,因為名字無效。',
'import-error-unserialize' => '頁面「$1」的修訂版本「$2」不能反序列。該修訂版本是以$3內容模式序列為$4。',
+'import-error-bad-location' => '於此wiki使用的內容模式$3的修訂版本$2並無可能存儲為「$1」,這是因為此種模式於該頁面無法支援。',
'import-options-wrong' => '{{PLURAL:$2|選項}}出錯:<nowiki>$1</nowiki>',
'import-rootpage-invalid' => '指定的根頁標題無效。',
'import-rootpage-nosubpage' => '名字空間「$1」的根頁面不允許子頁面。',
'tooltip-pt-watchlist' => '您所監視頁面的變更列表',
'tooltip-pt-mycontris' => '您的貢獻列表',
'tooltip-pt-login' => '建議您登入,儘管並非必須。',
-'tooltip-pt-anonlogin' => '建議您登入,儘管並非必須。',
'tooltip-pt-logout' => '登出',
'tooltip-ca-talk' => '關於頁面正文的討論',
'tooltip-ca-edit' => '您可以編輯此頁,請在儲存之前先預覽一下。',
'colon-separator' => ':',
'word-separator' => '',
'parentheses' => '($1)',
-'quotation-marks' => '“$1”',
+'quotation-marks' => '「$1」',
# Multipage image navigation
'imgmultipageprev' => '← 上一頁',
'version-hook-name' => '鈎名',
'version-hook-subscribedby' => '利用於',
'version-version' => '(版本 $1)',
-'version-license' => '授權',
+'version-license' => 'MediaWiki許可證',
+'version-ext-license' => '授權',
+'version-ext-colheader-name' => '擴展',
+'version-ext-colheader-version' => '版本',
+'version-ext-colheader-license' => '許可證',
+'version-ext-colheader-description' => '說明',
+'version-ext-colheader-credits' => '作者',
+'version-license-title' => '用於$1之許可證',
+'version-license-not-found' => '並無與此拓展相關之許可證資訊。',
+'version-credits-title' => '用於$1之信用',
+'version-credits-not-found' => '並無與此拓展相關之信用資訊。',
'version-poweredby-credits' => "此維基由'''[https://www.mediawiki.org/ MediaWiki]'''驅動,版權所有 © 2001-$1 $2。",
'version-poweredby-others' => '其他',
'version-poweredby-translators' => 'translatewiki.net 上的翻譯者',
'api-error-overwrite' => '不允許覆蓋現有檔案。',
'api-error-stashfailed' => '內部錯誤:伺服器保存臨時檔案失敗。',
'api-error-publishfailed' => '內部錯誤:伺服器發佈臨時檔案失敗。',
+'api-error-stasherror' => '上載檔案存檔時出錯。',
'api-error-timeout' => '伺服器沒有在預期的時間內回應。',
'api-error-unclassified' => '發生未知錯誤。',
'api-error-unknown-code' => '未知錯誤:$1',
'expand_templates_generate_rawhtml' => '顯示原始HTML',
'expand_templates_preview' => '預覽',
+# Unknown messages
+'createaccount-hook-aborted' => '$1',
+'uploadinvalidxml' => '上載檔案中的XML無法解析。',
);
* Evaluate a number against a set of plural rules. If a rule passes,
* return the index of plural rule.
*
- * @param int The number to be evaluated against the rules
- * @param array The associative array of plural rules in pluralform => rule format.
+ * @param int $number The number to be evaluated against the rules
+ * @param array $rules The associative array of plural rules in pluralform => rule format.
* @return int The index of the plural form which passed the evaluation
*/
public static function evaluate( $number, array $rules ) {
* Evaluate a compiled set of rules returned by compile(). Do not allow
* the user to edit the compiled form, or else PHP errors may result.
*
- * @param string The number to be evaluated against the rules, in English, or it
+ * @param string $number The number to be evaluated against the rules, in English, or it
* may be a type convertible to string.
- * @param array The associative array of plural rules in pluralform => rule format.
+ * @param array $rules The associative array of plural rules in pluralform => rule format.
* @return int The index of the plural form which passed the evaluation
*/
public static function evaluateCompiled( $number, array $rules ) {
/**
* Add another part to this range.
*
- * @param mixed The part to add, either a range object itself or a single number.
+ * @param CLDRPluralRuleEvaluator_Range|int $other The part to add, either
+ * a range object itself or a single number.
*/
function add( $other ) {
if ( $other instanceof self ) {
/**
* Convert a rule to RPN. This is the only public entry point.
*
- * @param $rule The rule to convert
+ * @param string $rule The rule to convert
* @return string The RPN representation of the rule
*/
public static function convert( $rule ) {
// Iterate through all tokens, saving the operators and operands to a
// stack per Dijkstra's shunting yard algorithm.
+ /** @var CLDRPluralRuleConverter_Operator $token */
while ( false !== ( $token = $this->nextToken() ) ) {
// In this grammar, there are only binary operators, so every valid
// rule string will alternate between operator and operand tokens.
* For the binary operator $op, pop its operands off the stack and push
* a fragment with rpn and type members describing the result of that
* operation.
+ *
+ * @param CLDRPluralRuleConverter_Operator $op
*/
protected function doOperation( $op ) {
if ( count( $this->operands ) < 2 ) {
/**
* Create a numerical expression object
*
+ * @param string $text
+ * @param int $pos
* @return CLDRPluralRuleConverter_Expression The numerical expression
*/
protected function newNumber( $text, $pos ) {
/**
* Create a binary operator
*
+ * @param string $type
+ * @param int $pos
+ * @param int $length
* @return CLDRPluralRuleConverter_Operator The operator
*/
protected function newOperator( $type, $pos, $length ) {
* validation.
*/
class CLDRPluralRuleConverter_Expression extends CLDRPluralRuleConverter_Fragment {
- public $type, $rpn;
+ /** @var string */
+ public $type;
+
+ /** @var string */
+ public $rpn;
function __construct( $parser, $type, $rpn, $pos, $length ) {
parent::__construct( $parser, $pos, $length );
* messages), and the binary operator at that location.
*/
class CLDRPluralRuleConverter_Operator extends CLDRPluralRuleConverter_Fragment {
- /**
- * The name
- *
- * @var string
- */
+ /** @var string The name */
public $name;
/**
*
* @param CLDRPluralRuleConverter $parser The parser
* @param string $name The operator name
- * @param int $pos The position
* @param int $pos The length
+ * @param int $length
*/
function __construct( $parser, $name, $pos, $length ) {
parent::__construct( $parser, $pos, $length );
if ( file_exists( "$IP/LocalSettings.php" ) ) {
$this->mFiles[] = "$IP/LocalSettings.php";
}
- if ( file_exists( "$IP/AdminSettings.php" ) ) {
- $this->mFiles[] = "$IP/AdminSettings.php";
- }
$this->output( 'done.', 'listfiles' );
}
} else {
$dstStat = $dst->getFileStat( array( 'src' => $dPath ) );
}
- return (
+ // Initial fast checks to see if files are obviously different
+ $sameFast = (
is_array( $srcStat ) // sanity check that source exists
&& is_array( $dstStat ) // dest exists
&& $srcStat['size'] === $dstStat['size']
- && ( !$skipHash || $srcStat['mtime'] <= $dstStat['mtime'] )
- && ( $skipHash || $src->getFileSha1Base36( array( 'src' => $sPath, 'latest' => 1 ) )
- === $dst->getFileSha1Base36( array( 'src' => $dPath, 'latest' => 1 ) )
- )
);
+ // More thorough checks against files
+ if ( !$sameFast ) {
+ $same = false; // no need to look farther
+ } elseif ( isset( $srcStat['md5'] ) && isset( $dstStat['md5'] ) ) {
+ // If MD5 was already in the stat info, just use it.
+ // This is useful as many objects stores can return this in object listing,
+ // so we can use it to avoid slow per-file HEADs.
+ $same = ( $srcStat['md5'] === $dstStat['md5'] );
+ } elseif ( $skipHash ) {
+ // This mode is good for copying to a backup location or resyncing clone
+ // backends in FileBackendMultiWrite (since they get writes second, they have
+ // higher timestamps). However, when copying the other way, this hits loads of
+ // false positives (possibly 100%) and wastes a bunch of time on GETs/PUTs.
+ $same = ( $srcStat['mtime'] <= $dstStat['mtime'] );
+ } else {
+ // This is the slowest method which does many per-file HEADs (unless an object
+ // store tracks SHA-1 in listings).
+ $same = ( $src->getFileSha1Base36( array( 'src' => $sPath, 'latest' => 1 ) )
+ === $dst->getFileSha1Base36( array( 'src' => $dPath, 'latest' => 1 ) ) );
+ }
+ return $same;
}
}
Editor
Education
Egrave
-Ehcache
Elig
Email
Empty
andtitle
anon
anoneditwarning
-anonlogin
anonnotice
anononly
anonpreviewwarning
edituserjs
edoe
egrave
-ehcache
ei
eich
eiinvalidparammix
require $maintenance->loadSettings();
}
-if ( $maintenance->getDbType() === Maintenance::DB_ADMIN
- && is_readable( "$IP/AdminSettings.php" )
-) {
- require "$IP/AdminSettings.php";
-}
-
if ( $maintenance->getDbType() === Maintenance::DB_NONE ) {
if ( $wgLocalisationCacheConf['storeClass'] === false && ( $wgLocalisationCacheConf['store'] == 'db' || ( $wgLocalisationCacheConf['store'] == 'detect' && !$wgCacheDirectory ) ) ) {
$wgLocalisationCacheConf['storeClass'] = 'LCStoreNull';
}
$useReadline = function_exists( 'readline_add_history' )
- && Maintenance::posix_isatty( 0 /*STDIN*/ );
+ && Maintenance::posix_isatty( 0 /*STDIN*/ );
if ( $useReadline ) {
$historyFile = isset( $_ENV['HOME'] ) ?
readline_read_history( $historyFile );
}
+$e = null; // PHP exception
while ( ( $line = Maintenance::readconsole() ) !== false ) {
+ if ( $e && !preg_match( '/^(exit|die);?$/', $line ) ) {
+ // Internal state may be corrupted or fatals may occur later due
+ // to some object not being set. Don't drop out of eval in case
+ // lines were being pasted in (which would then get dumped to the shell).
+ // Instead, just absorb the remaning commands. Let "exit" through per DWIM.
+ echo "Exception was thrown before; please restart eval.php\n";
+ continue;
+ }
if ( $useReadline ) {
readline_add_history( $line );
readline_write_history( $historyFile );
}
- $val = eval( $line . ";" );
+ try {
+ $val = eval( $line . ";" );
+ } catch ( Exception $e ) {
+ echo "Caught exception " . get_class( $e ) .
+ ": {$e->getMessage()}\n" . $e->getTraceAsString() . "\n";
+ continue;
+ }
if ( wfIsHHVM() || is_null( $val ) ) {
echo "\n";
} elseif ( is_string( $val ) || is_numeric( $val ) ) {
* @ingroup Maintenance
*/
class FindHooks extends Maintenance {
+ /*
+ * Hooks that are ignored
+ */
+ protected static $ignore = array( 'testRunLegacyHooks' );
+
public function __construct() {
parent::__construct();
$this->mDescription = 'Find hooks that are undocumented, missing, or just plain wrong';
if ( $sort ) {
asort( $arr );
}
+
foreach ( $arr as $v ) {
- $this->output( "$msg: $v\n" );
+ if ( !in_array( $v, self::$ignore ) ) {
+ $this->output( "$msg: $v\n" );
+ }
}
}
}
'rd_from = pa.page_id',
'rd_namespace = pb.page_namespace',
'rd_title = pb.page_title',
- '(rd_interwiki IS NULL OR rd_interwiki = "")', // bug 40352
+ 'rd_interwiki IS NULL OR rd_interwiki = ' . $dbr->addQuotes( '' ), // bug 40352
'pb.page_is_redirect' => 1,
);
$db->insert( 'externallinks',
array(
array(
+ 'el_id' => $db->nextSequenceValue( 'externallinks_el_id_seq' ),
'el_from' => $row->el_from,
'el_to' => $row->el_to,
'el_index' => "http:{$row->el_index}",
),
array(
+ 'el_id' => $db->nextSequenceValue( 'externallinks_el_id_seq' ),
'el_from' => $row->el_from,
'el_to' => $row->el_to,
'el_index' => "https:{$row->el_index}",
}
$this->output( "All done.\n" );
- $this->output( "Also add \$wgMessagesDirs['YourExtension'] = __DIR__ . /i18n';\n" );
+ $this->output( "Also add \$wgMessagesDirs['YourExtension'] = __DIR__ . '/i18n';\n" );
}
protected function doShim( $jsondir ) {
$fileName = __DIR__ . "/{{OUT}}/$csCode.json";
if ( is_readable( $fileName ) ) {
$data = FormatJson::decode( file_get_contents( $fileName ), true );
- foreach ( $data as $key => $unused ) {
+ foreach ( array_keys( $data ) as $key ) {
if ( $key === '' || $key[0] === '@' ) {
unset( $data[$key] );
}
* @author Antoine Musso <hashar@free.fr>
*/
+define( 'MW_SETUP_NO_CACHE', 1 );
+define( 'MW_SETUP_NO_CONTEXT', 1 );
require_once __DIR__ . '/Maintenance.php';
/**
// Autodetect mode...
$backgroundMode = wfGetLB()->getServerCount() > 1 ||
- ( $dbw instanceof DatabaseMysql && version_compare( $dbver, '4.1' ) < 0 );
+ ( $dbw instanceof DatabaseMysql );
if ( $this->hasOption( 'background' ) ) {
$backgroundMode = true;
+# Custom tags for JSDuck 4.x
# See also:
# - https://github.com/senchalabs/jsduck/wiki/Tags
# - https://github.com/senchalabs/jsduck/wiki/Custom-tags
+# - https://github.com/senchalabs/jsduck/wiki/Custom-tags/7f5c32e568eab9edc8e3365e935bcb836cb11f1d
require 'jsduck/meta_tag'
class SourceTag < JsDuck::MetaTag
end
end
end
+
+# As of JSDuck 5 this is in core
+class FiresTag < JsDuck::MetaTag
+ def initialize
+ @name = 'fires'
+ @multiline = true
+ end
+
+ # @param tags All matches of this tag on one class.
+ def to_html(tags)
+ doc = []
+ doc << '<h3 class="pa">Fires</h3>'
+ doc << [
+ '<ul>',
+ tags.map {|tag| render_long_event(tag) },
+ '</ul>',
+ ]
+ doc
+ end
+
+ def render_long_event(tag)
+ if tag =~ /\A(\w+)( .*)?\Z/m
+ name = $1
+ doc = $2 ? ': ' + $2 : ''
+ return [
+ '<li>',
+ format("{@link #event-#{name}} #{doc}"),
+ '</li>'
+ ]
+ end
+ end
+end
"name": "General",
"classes": [
"mw.Title",
+ "mw.Uri",
"mw.inspect",
"mw.inspect.reports",
"mw.notification",
{
"name": "API",
"classes": ["mw.Api*"]
+ },
+ {
+ "name": "Language",
+ "classes": [
+ "mw.language*",
+ "mw.cldr"
+ ]
}
]
},
{
"name": "Upstream",
"groups": [
+ {
+ "name": "OOJS",
+ "classes": ["OO", "OO.*"]
+ },
{
"name": "jQuery",
"classes": ["jQuery", "jQuery.Event", "jQuery.Callbacks", "jQuery.Promise", "jQuery.Deferred", "jQuery.jqXHR", "QUnit"]
"../../resources/mediawiki/mediawiki.log.js",
"../../resources/mediawiki/mediawiki.util.js",
"../../resources/mediawiki/mediawiki.Title.js",
+ "../../resources/mediawiki/mediawiki.Uri.js",
"../../resources/mediawiki/mediawiki.inspect.js",
"../../resources/mediawiki/mediawiki.notify.js",
"../../resources/mediawiki/mediawiki.notification.js",
"../../resources/mediawiki.action/mediawiki.action.view.postEdit.js",
"../../resources/mediawiki.page/mediawiki.page.startup.js",
"../../resources/mediawiki.api",
+ "../../resources/mediawiki.language",
"../../resources/jquery/jquery.localize.js",
- "../../resources/jquery/jquery.spinner.js"
+ "../../resources/jquery/jquery.spinner.js",
+ "../../resources/oojs"
]
}
+++ /dev/null
-<?php
-/**
- * Generates normalizer data files for Arabic and Malayalam.
- *
- * 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 MaintenanceLanguage
- */
-
-require_once __DIR__ . '/../../includes/normal/UtfNormalUtil.php';
-
-require_once __DIR__ . '/../Maintenance.php';
-
-/**
- * Generates normalizer data files for Arabic and Malayalam.
- * For NFC see includes/normal.
- *
- * @ingroup MaintenanceLanguage
- */
-class GenerateNormalizerData extends Maintenance {
- public $dataFile;
-
- public function __construct() {
- parent::__construct();
- $this->addOption( 'unicode-data-file', 'The local location of the data file ' .
- 'from http://unicode.org/Public/UNIDATA/UnicodeData.txt', false, true );
- }
-
- public function execute() {
- if ( !$this->hasOption( 'unicode-data-file' ) ) {
- $this->dataFile = 'UnicodeData.txt';
- if ( !file_exists( $this->dataFile ) ) {
- $this->error( "Unable to find UnicodeData.txt. Please specify " .
- "its location with --unicode-data-file=<FILE>" );
- exit( 1 );
- }
- } else {
- $this->dataFile = $this->getOption( 'unicode-data-file' );
- if ( !file_exists( $this->dataFile ) ) {
- $this->error( 'Unable to find the specified data file.' );
- exit( 1 );
- }
- }
-
- $this->generateArabic();
- $this->generateMalayalam();
- }
-
- function generateArabic() {
- $file = fopen( $this->dataFile, 'r' );
- if ( !$file ) {
- $this->error( 'Unable to open the data file.' );
- exit( 1 );
- }
-
- // For the file format, see http://www.unicode.org/reports/tr44/
- $fieldNames = array(
- 'Code',
- 'Name',
- 'General_Category',
- 'Canonical_Combining_Class',
- 'Bidi_Class',
- 'Decomposition_Type_Mapping',
- 'Numeric_Type_Value',
- 'Bidi_Mirrored',
- 'Unicode_1_Name',
- 'ISO_Comment',
- 'Simple_Uppercase_Mapping',
- 'Simple_Lowercase_Mapping',
- 'Simple_Titlecase_Mapping'
- );
-
- $pairs = array();
-
- $lineNum = 0;
- while ( false !== ( $line = fgets( $file ) ) ) {
- ++$lineNum;
-
- # Strip comments
- $line = trim( substr( $line, 0, strcspn( $line, '#' ) ) );
- if ( $line === '' ) {
- continue;
- }
-
- # Split fields
- $numberedData = explode( ';', $line );
- $data = array();
- foreach ( $fieldNames as $number => $name ) {
- $data[$name] = $numberedData[$number];
- }
-
- $code = base_convert( $data['Code'], 16, 10 );
- if ( ( $code >= 0xFB50 && $code <= 0xFDFF ) # Arabic presentation forms A
- || ( $code >= 0xFE70 && $code <= 0xFEFF ) # Arabic presentation forms B
- ) {
- if ( $data['Decomposition_Type_Mapping'] === '' ) {
- // No decomposition
- continue;
- }
- if ( !preg_match( '/^ *(<\w*>) +([0-9A-F ]*)$/',
- $data['Decomposition_Type_Mapping'], $m )
- ) {
- $this->error( "Can't parse Decomposition_Type/Mapping on line $lineNum" );
- $this->error( $line );
- continue;
- }
-
- $source = hexSequenceToUtf8( $data['Code'] );
- $dest = hexSequenceToUtf8( $m[2] );
- $pairs[$source] = $dest;
- }
- }
-
- global $IP;
- file_put_contents( "$IP/serialized/normalize-ar.ser", serialize( $pairs ) );
- echo "ar: " . count( $pairs ) . " pairs written.\n";
- }
-
- function generateMalayalam() {
- $hexPairs = array(
- # From http://unicode.org/versions/Unicode5.1.0/#Malayalam_Chillu_Characters
- '0D23 0D4D 200D' => '0D7A',
- '0D28 0D4D 200D' => '0D7B',
- '0D30 0D4D 200D' => '0D7C',
- '0D32 0D4D 200D' => '0D7D',
- '0D33 0D4D 200D' => '0D7E',
-
- # From http://permalink.gmane.org/gmane.science.linguistics.wikipedia.technical/46413
- '0D15 0D4D 200D' => '0D7F',
- );
-
- $pairs = array();
- foreach ( $hexPairs as $hexSource => $hexDest ) {
- $source = hexSequenceToUtf8( $hexSource );
- $dest = hexSequenceToUtf8( $hexDest );
- $pairs[$source] = $dest;
- }
-
- global $IP;
- file_put_contents( "$IP/serialized/normalize-ml.ser", serialize( $pairs ) );
- echo "ml: " . count( $pairs ) . " pairs written.\n";
- }
-}
-
-$maintClass = 'GenerateNormalizerData';
-require_once RUN_MAINTENANCE_IF_MAIN;
--- /dev/null
+<?php
+/**
+ * Generates the normalizer data file for Arabic.
+ *
+ * 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 MaintenanceLanguage
+ */
+
+require_once __DIR__ . '/../Maintenance.php';
+
+/**
+ * Generates the normalizer data file for Arabic.
+ * For NFC see includes/normal.
+ *
+ * @ingroup MaintenanceLanguage
+ */
+class GenerateNormalizerDataAr extends Maintenance {
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = 'Generate the normalizer data file for Arabic';
+ $this->addOption( 'unicode-data-file', 'The local location of the data file ' .
+ 'from http://unicode.org/Public/UNIDATA/UnicodeData.txt', false, true );
+ }
+
+ public function getDbType() {
+ return Maintenance::DB_NONE;
+ }
+
+ public function execute() {
+ if ( !$this->hasOption( 'unicode-data-file' ) ) {
+ $dataFile = 'UnicodeData.txt';
+ if ( !file_exists( $dataFile ) ) {
+ $this->error( "Unable to find UnicodeData.txt. Please specify " .
+ "its location with --unicode-data-file=<FILE>" );
+ exit( 1 );
+ }
+ } else {
+ $dataFile = $this->getOption( 'unicode-data-file' );
+ if ( !file_exists( $dataFile ) ) {
+ $this->error( 'Unable to find the specified data file.' );
+ exit( 1 );
+ }
+ }
+
+ $file = fopen( $dataFile, 'r' );
+ if ( !$file ) {
+ $this->error( 'Unable to open the data file.' );
+ exit( 1 );
+ }
+
+ // For the file format, see http://www.unicode.org/reports/tr44/
+ $fieldNames = array(
+ 'Code',
+ 'Name',
+ 'General_Category',
+ 'Canonical_Combining_Class',
+ 'Bidi_Class',
+ 'Decomposition_Type_Mapping',
+ 'Numeric_Type_Value_6',
+ 'Numeric_Type_Value_7',
+ 'Numeric_Type_Value_8',
+ 'Bidi_Mirrored',
+ 'Unicode_1_Name',
+ 'ISO_Comment',
+ 'Simple_Uppercase_Mapping',
+ 'Simple_Lowercase_Mapping',
+ 'Simple_Titlecase_Mapping'
+ );
+
+ $pairs = array();
+
+ $lineNum = 0;
+ while ( false !== ( $line = fgets( $file ) ) ) {
+ ++$lineNum;
+
+ # Strip comments
+ $line = trim( substr( $line, 0, strcspn( $line, '#' ) ) );
+ if ( $line === '' ) {
+ continue;
+ }
+
+ # Split fields
+ $numberedData = explode( ';', $line );
+ $data = array();
+ foreach ( $fieldNames as $number => $name ) {
+ $data[$name] = $numberedData[$number];
+ }
+
+ $code = base_convert( $data['Code'], 16, 10 );
+ if ( ( $code >= 0xFB50 && $code <= 0xFDFF ) # Arabic presentation forms A
+ || ( $code >= 0xFE70 && $code <= 0xFEFF ) # Arabic presentation forms B
+ ) {
+ if ( $data['Decomposition_Type_Mapping'] === '' ) {
+ // No decomposition
+ continue;
+ }
+ if ( !preg_match( '/^ *(<\w*>) +([0-9A-F ]*)$/',
+ $data['Decomposition_Type_Mapping'], $m )
+ ) {
+ $this->error( "Can't parse Decomposition_Type/Mapping on line $lineNum" );
+ $this->error( $line );
+ continue;
+ }
+
+ $source = hexSequenceToUtf8( $data['Code'] );
+ $dest = hexSequenceToUtf8( $m[2] );
+ $pairs[$source] = $dest;
+ }
+ }
+
+ global $IP;
+ file_put_contents( "$IP/serialized/normalize-ar.ser", serialize( $pairs ) );
+ echo "ar: " . count( $pairs ) . " pairs written.\n";
+ }
+}
+
+$maintClass = 'GenerateNormalizerDataAr';
+require_once RUN_MAINTENANCE_IF_MAIN;
--- /dev/null
+<?php
+/**
+ * Generates the normalizer data file for Malayalam.
+ *
+ * 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 MaintenanceLanguage
+ */
+
+require_once __DIR__ . '/../Maintenance.php';
+
+/**
+ * Generates the normalizer data file for Malayalam.
+ * For NFC see includes/normal.
+ *
+ * @ingroup MaintenanceLanguage
+ */
+class GenerateNormalizerDataMl extends Maintenance {
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = 'Generate the normalizer data file for Malayalam';
+ }
+
+ public function getDbType() {
+ return Maintenance::DB_NONE;
+ }
+
+ public function execute() {
+ $hexPairs = array(
+ # From http://unicode.org/versions/Unicode5.1.0/#Malayalam_Chillu_Characters
+ '0D23 0D4D 200D' => '0D7A',
+ '0D28 0D4D 200D' => '0D7B',
+ '0D30 0D4D 200D' => '0D7C',
+ '0D32 0D4D 200D' => '0D7D',
+ '0D33 0D4D 200D' => '0D7E',
+
+ # From http://permalink.gmane.org/gmane.science.linguistics.wikipedia.technical/46413
+ '0D15 0D4D 200D' => '0D7F',
+ );
+
+ $pairs = array();
+ foreach ( $hexPairs as $hexSource => $hexDest ) {
+ $source = hexSequenceToUtf8( $hexSource );
+ $dest = hexSequenceToUtf8( $hexDest );
+ $pairs[$source] = $dest;
+ }
+
+ global $IP;
+ file_put_contents( "$IP/serialized/normalize-ml.ser", serialize( $pairs ) );
+ echo "ml: " . count( $pairs ) . " pairs written.\n";
+ }
+}
+
+$maintClass = 'GenerateNormalizerDataMl';
+require_once RUN_MAINTENANCE_IF_MAIN;
--- /dev/null
+<?php
+/**
+ * Generates Utf8Case.ser from the Unicode Character Database and
+ * supplementary files.
+ *
+ * Copyright © 2004, 2008 Brion Vibber <brion@pobox.com>
+ * http://www.mediawiki.org/
+ *
+ * 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 MaintenanceLanguage
+ */
+
+require_once __DIR__ . '/../Maintenance.php';
+
+/**
+ * Generates Utf8Case.ser from the Unicode Character Database and
+ * supplementary files.
+ *
+ * @ingroup MaintenanceLanguage
+ */
+class GenerateUtf8Case extends Maintenance {
+
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = 'Generate Utf8Case.ser from the Unicode Character Database ' .
+ 'and supplementary files';
+ $this->addOption( 'unicode-data-file', 'The local location of the data file ' .
+ 'from http://unicode.org/Public/UNIDATA/UnicodeData.txt', false, true );
+ }
+
+ public function getDbType() {
+ return Maintenance::DB_NONE;
+ }
+
+ public function execute() {
+ if ( !$this->hasOption( 'unicode-data-file' ) ) {
+ $dataFile = 'UnicodeData.txt';
+ if ( !file_exists( $dataFile ) ) {
+ $this->error( "Unable to find UnicodeData.txt. Please specify " .
+ "its location with --unicode-data-file=<FILE>" );
+ exit( 1 );
+ }
+ } else {
+ $dataFile = $this->getOption( 'unicode-data-file' );
+ if ( !file_exists( $dataFile ) ) {
+ $this->error( 'Unable to find the specified data file.' );
+ exit( 1 );
+ }
+ }
+
+ $file = fopen( $dataFile, 'r' );
+ if ( !$file ) {
+ $this->error( 'Unable to open the data file.' );
+ exit( 1 );
+ }
+
+ // For the file format, see http://www.unicode.org/reports/tr44/
+ $fieldNames = array(
+ 'Code',
+ 'Name',
+ 'General_Category',
+ 'Canonical_Combining_Class',
+ 'Bidi_Class',
+ 'Decomposition_Type_Mapping',
+ 'Numeric_Type_Value_6',
+ 'Numeric_Type_Value_7',
+ 'Numeric_Type_Value_8',
+ 'Bidi_Mirrored',
+ 'Unicode_1_Name',
+ 'ISO_Comment',
+ 'Simple_Uppercase_Mapping',
+ 'Simple_Lowercase_Mapping',
+ 'Simple_Titlecase_Mapping'
+ );
+
+ $upper = array();
+ $lower = array();
+
+ $lineNum = 0;
+ while ( false !== ( $line = fgets( $file ) ) ) {
+ ++$lineNum;
+
+ # Strip comments
+ $line = trim( substr( $line, 0, strcspn( $line, '#' ) ) );
+ if ( $line === '' ) {
+ continue;
+ }
+
+ # Split fields
+ $numberedData = explode( ';', $line );
+ $data = array();
+ foreach ( $fieldNames as $number => $name ) {
+ $data[$name] = $numberedData[$number];
+ }
+
+ $source = hexSequenceToUtf8( $data['Code'] );
+ if ( $data['Simple_Uppercase_Mapping'] ) {
+ $upper[$source] = hexSequenceToUtf8( $data['Simple_Uppercase_Mapping'] );
+ }
+ if ( $data['Simple_Lowercase_Mapping'] ) {
+ $lower[$source] = hexSequenceToUtf8( $data['Simple_Lowercase_Mapping'] );
+ }
+ }
+
+ global $IP;
+ file_put_contents( "$IP/serialized/Utf8Case.ser", serialize( array(
+ 'wikiUpperChars' => $upper,
+ 'wikiLowerChars' => $lower,
+ ) ) );
+ }
+}
+
+$maintClass = 'GenerateUtf8Case';
+require_once RUN_MAINTENANCE_IF_MAIN;
'accesskey-pt-watchlist',
'accesskey-pt-mycontris',
'accesskey-pt-login',
- 'accesskey-pt-anonlogin',
'accesskey-pt-logout',
'accesskey-ca-talk',
'accesskey-ca-edit',
'signupstart',
'signupend',
'signupend-https',
+ 'emailsender',
'sitenotice',
'sitesubtitle',
'sitetitle',
'tags-summary',
'comparepages-summary',
'resettokens-summary',
+ 'version-db-mysql-url',
+ 'version-db-mariadb-url',
+ 'version-db-percona-url',
+ 'version-db-postgres-url',
+ 'version-db-oracle-url',
+ 'version-db-sqlite-url',
+ 'version-db-mssql-url',
'version-entrypoints-index-php',
'version-entrypoints-api-php',
'version-entrypoints-load-php',
'autocomment-prefix',
'move-redirect-text',
'interlanguage-link-title-langonly',
+ 'createaccount-hook-abort',
);
/** Optional messages, which may be translated only if changed in the target language. */
'hebrew-calendar-m11-gen',
'hebrew-calendar-m12-gen',
'version-api',
+ 'version-version',
'version-svn-revision',
'semicolon-separator',
'comma-separator',
'limitreport-expensivefunctioncount-value',
'interlanguage-link-title',
'img-lang-opt',
+ 'quotation-marks',
+ 'recentchanges-legend-plusminus',
);
/** Exif messages, which may be set as optional in several checks, but are generally mandatory */
),
'toggles' => array(
'tog-underline',
- 'tog-justify',
'tog-hideminor',
'tog-hidepatrolled',
'tog-newpageshidepatrolled',
'tog-numberheadings',
'tog-showtoolbar',
'tog-editondblclick',
- 'tog-editsection',
'tog-editsectiononrightclick',
- 'tog-showtoc',
'tog-rememberpassword',
'tog-watchcreations',
'tog-watchdefault',
'invalidemailaddress',
'cannotchangeemail',
'emaildisabled',
+ 'emailsender',
'accountcreated',
'accountcreatedtext',
'createaccount-title',
'retypenew',
'resetpass_submit',
'changepassword-success',
+ 'changepassword-throttled',
'resetpass_forbidden',
'resetpass-no-info',
'resetpass-submit-loggedin',
'changeemail-password',
'changeemail-submit',
'changeemail-cancel',
+ 'changeemail-throttled'
),
'resettokens' => array(
'resettokens',
'invalid-content-data',
'content-not-allowed-here',
'editwarning-warning',
+ 'editpage-notsupportedcontentformat-title',
+ 'editpage-notsupportedcontentformat-text',
),
'contentmodels' => array(
'content-model-wikitext',
'showhideselectedversions',
'editundo',
'diff-empty',
- 'diff-multi',
+ 'diff-multi-sameuser',
+ 'diff-multi-otherusers',
'diff-multi-manyusers',
'difference-missing-revision',
),
'search-result-score',
'search-redirect',
'search-section',
+ 'search-file-match',
'search-suggest',
'search-interwiki-caption',
'search-interwiki-default',
'rows',
'columns',
'searchresultshead',
- 'resultsperpage',
'stub-threshold',
'stub-threshold-disabled',
'recentchangesdays',
'fileexists-shared-forbidden',
'file-exists-duplicate',
'file-deleted-duplicate',
+ 'file-deleted-duplicate-notitle',
'uploadwarning',
'uploadwarning-text',
'savefile',
'protectedpages-indef',
'protectedpages-summary',
'protectedpages-cascade',
+ 'protectedpages-noredirect',
'protectedpagesempty',
'protectedtitles',
'protectedtitles-summary',
'watchmethod-list',
'watchlistcontains',
'iteminvalidname',
- 'wlnote',
+ 'wlnote2',
'wlshowlast',
'watchlist-options',
),
'delete-edit-reasonlist',
'delete-toobig',
'delete-warning-toobig',
+ 'deleting-backlinks-warning',
),
'rollback' => array(
'rollback',
'blockipsuccesstext',
'ipb-blockingself',
'ipb-confirmhideuser',
+ 'ipb-confirmaction',
'ipb-edit-dropdown',
'ipb-unblock-addr',
'ipb-unblock',
'allmessages-prefix',
'allmessages-language',
'allmessages-filter-submit',
+ 'allmessages-filter-translate',
),
'thumbnails' => array(
'thumbnail-more',
'import-error-special',
'import-error-invalid',
'import-error-unserialize',
+ 'import-error-bad-location',
'import-options-wrong',
'import-rootpage-invalid',
'import-rootpage-nosubpage',
'accesskey-pt-watchlist',
'accesskey-pt-mycontris',
'accesskey-pt-login',
- 'accesskey-pt-anonlogin',
'accesskey-pt-logout',
'accesskey-ca-talk',
'accesskey-ca-edit',
'tooltip-pt-watchlist',
'tooltip-pt-mycontris',
'tooltip-pt-login',
- 'tooltip-pt-anonlogin',
'tooltip-pt-logout',
'tooltip-ca-talk',
'tooltip-ca-edit',
'version-version',
'version-svn-revision',
'version-license',
+ 'version-ext-license',
+ 'version-ext-colheader-name',
+ 'version-ext-colheader-version',
+ 'version-ext-colheader-license',
+ 'version-ext-colheader-description',
+ 'version-ext-colheader-credits',
+ 'version-license-title',
+ 'version-license-not-found',
+ 'version-credits-title',
+ 'version-credits-not-found',
'version-poweredby-credits',
'version-poweredby-others',
'version-poweredby-translators',
'version-software',
'version-software-product',
'version-software-version',
+ 'version-db-mysql-url',
+ 'version-db-mariadb-url',
+ 'version-db-percona-url',
+ 'version-db-postgres-url',
+ 'version-db-oracle-url',
+ 'version-db-sqlite-url',
+ 'version-db-mssql-url',
'version-entrypoints',
'version-entrypoints-header-entrypoint',
'version-entrypoints-header-url',
'api-error-overwrite',
'api-error-stashfailed',
'api-error-publishfailed',
+ 'api-error-stasherror',
'api-error-timeout',
'api-error-unclassified',
'api-error-unknown-code',
return [unichr( int( i[2:7], 16 ) ) for i in args if i[2:7]]
# DEFINE
-UNIHAN_VER = '6.2.0'
+UNIHAN_VER = '6.3.0'
SF_MIRROR = 'dfn'
-SCIM_TABLES_VER = '0.5.11'
+SCIM_TABLES_VER = '0.5.13'
SCIM_PINYIN_VER = '0.5.92'
LIBTABE_VER = '0.2.3'
# END OF DEFINE
shutil.move( member, name )
if '/' in member:
shutil.rmtree( member.split( '/', 1 )[0] )
- return open( name, 'rb', encoding, 'ignore' )
+ if pyversion[:1] in ['2']:
+ fc = open( name, 'rb', encoding, 'ignore' )
+ else:
+ fc = open( name, 'r', encoding = encoding, errors = 'ignore' )
+ return fc
unzip = lambda path, member, encoding = 'U8': \
uncompress( zf.ZipFile( path ), member, encoding )
def applyExcludes( mlist, path ):
""" Apply exclude rules from path to mlist. """
- excludes = open( path, 'rb', 'U8' ).read().split()
+ if pyversion[:1] in ['2']:
+ excludes = open( path, 'rb', 'U8' ).read().split()
+ else:
+ excludes = open( path, 'r', encoding = 'U8' ).read().split()
excludes = [word.split( '#' )[0].strip() for word in excludes]
excludes = '|'.join( excludes )
excptn = re.compile( '.*(?:%s).*' % excludes )
return mlist
def charManualTable( path ):
- fp = open( path, 'rb', 'U8' )
+ fp = open( path, 'r', encoding = 'U8' )
ret = {}
for line in fp:
elems = line.split( '#' )[0].split( '|' )
def toManyRules( src_table ):
tomany = set()
- for ( f, t ) in src_table.iteritems():
- for i in range( 1, len( t ) ):
- tomany.add( t[i] )
+ if pyversion[:1] in ['2']:
+ for ( f, t ) in src_table.iteritems():
+ for i in range( 1, len( t ) ):
+ tomany.add( t[i] )
+ else:
+ for ( f, t ) in src_table.items():
+ for i in range( 1, len( t ) ):
+ tomany.add( t[i] )
return tomany
def removeRules( path, table ):
- fp = open( path, 'rb', 'U8' )
+ fp = open( path, 'r', encoding = 'U8' )
texc = list()
for line in fp:
elems = line.split( '=>' )
if t:
texc.append( t )
texcptn = re.compile( '^(?:%s)$' % '|'.join( texc ) )
- for (tmp_f, tmp_t) in table.copy().iteritems():
- if texcptn.match( tmp_t ):
- table.pop( tmp_f )
+ if pyversion[:1] in ['2']:
+ for (tmp_f, tmp_t) in table.copy().iteritems():
+ if texcptn.match( tmp_t ):
+ table.pop( tmp_f )
+ else:
+ for (tmp_f, tmp_t) in table.copy().items():
+ if texcptn.match( tmp_t ):
+ table.pop( tmp_f )
return table
def customRules( path ):
- fp = open( path, 'rb', 'U8' )
+ fp = open( path, 'r', encoding = 'U8' )
ret = dict()
for line in fp:
elems = line.split( '#' )[0].split()
return text
def manualWordsTable( path, conv_table, reconv_table ):
- fp = open( path, 'rb', 'U8' )
+ fp = open( path, 'r', encoding = 'U8' )
reconv_table = {}
wordlist = [line.split( '#' )[0].strip() for line in fp]
wordlist = list( set( wordlist ) )
t2s_1tomany.update( charManualTable( 'trad2simp.manual' ) )
s2t_1tomany.update( charManualTable( 'simp2trad.manual' ) )
- t2s_1to1 = dict( [( f, t[0] ) for ( f, t ) in t2s_1tomany.iteritems()] )
- s2t_1to1 = dict( [( f, t[0] ) for ( f, t ) in s2t_1tomany.iteritems()] )
+ if pyversion[:1] in ['2']:
+ t2s_1to1 = dict( [( f, t[0] ) for ( f, t ) in t2s_1tomany.iteritems()] )
+ s2t_1to1 = dict( [( f, t[0] ) for ( f, t ) in s2t_1tomany.iteritems()] )
+ else:
+ t2s_1to1 = dict( [( f, t[0] ) for ( f, t ) in t2s_1tomany.items()] )
+ s2t_1to1 = dict( [( f, t[0] ) for ( f, t ) in s2t_1tomany.items()] )
s_tomany = toManyRules( t2s_1tomany )
t_tomany = toManyRules( s2t_1tomany )
# Final tables
# sorted list toHans
- t2s_1to1 = dict( [( f, t ) for ( f, t ) in t2s_1to1.iteritems() if f != t] )
+ if pyversion[:1] in ['2']:
+ t2s_1to1 = dict( [( f, t ) for ( f, t ) in t2s_1to1.iteritems() if f != t] )
+ else:
+ t2s_1to1 = dict( [( f, t ) for ( f, t ) in t2s_1to1.items() if f != t] )
toHans = dictToSortedList( t2s_1to1, 0 ) + dictToSortedList( t2s_word2word, 1 )
# sorted list toHant
- s2t_1to1 = dict( [( f, t ) for ( f, t ) in s2t_1to1.iteritems() if f != t] )
+ if pyversion[:1] in ['2']:
+ s2t_1to1 = dict( [( f, t ) for ( f, t ) in s2t_1to1.iteritems() if f != t] )
+ else:
+ s2t_1to1 = dict( [( f, t ) for ( f, t ) in s2t_1to1.items() if f != t] )
toHant = dictToSortedList( s2t_1to1, 0 ) + dictToSortedList( s2t_word2word, 1 )
# sorted list toCN
toCN = dictToSortedList( customRules( 'toCN.manual' ), 1 )
+ PHPArray( toSG ) \
+ '\n);\n'
- f = open( os.path.join( '..', '..', '..', 'includes', 'ZhConversion.php' ), 'wb', encoding = 'utf8' )
+ if pyversion[:1] in ['2']:
+ f = open( os.path.join( '..', '..', '..', 'includes', 'ZhConversion.php' ), 'wb', encoding = 'utf8' )
+ else:
+ f = open( os.path.join( '..', '..', '..', 'includes', 'ZhConversion.php' ), 'w', buffering = 4096, encoding = 'utf8' )
print ('Writing ZhConversion.php ... ')
f.write( php )
f.close()
+++ /dev/null
-<?php
-/**
- * Simple lock server daemon that accepts lock/unlock requests.
- *
- * This code should not require MediaWiki setup or PHP files.
- *
- * 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 LockManager Maintenance
- */
-
-if ( PHP_SAPI !== 'cli' ) {
- die( "This is not a valid entry point.\n" );
-}
-error_reporting( E_ALL );
-
-// Run the server...
-set_time_limit( 0 );
-LockServerDaemon::init(
- getopt( '', array(
- 'address:', 'port:', 'authKey:',
- 'lockTimeout::', 'maxClients::', 'maxBacklog::', 'maxLocks::',
- ) )
-)->main();
-
-/**
- * Simple lock server daemon that accepts lock/unlock requests
- *
- * @ingroup LockManager Maintenance
- */
-class LockServerDaemon {
- /** @var resource */
- protected $sock; // socket to listen/accept on
- /** @var Array */
- protected $sessions = array(); // (session => resource)
- /** @var Array */
- protected $deadSessions = array(); // (session => UNIX timestamp)
-
- /** @var LockHolder */
- protected $lockHolder;
-
- protected $address; // string IP address
- protected $port; // integer
- protected $authKey; // string key
- protected $lockTimeout; // integer number of seconds
- protected $maxBacklog; // integer
- protected $maxClients; // integer
-
- protected $startTime; // integer UNIX timestamp
- protected $ticks = 0; // integer counter
-
- /* @var LockServerDaemon */
- protected static $instance = null;
-
- /**
- * @params $config Array
- * @param array $config
- * @throws Exception
- * @return LockServerDaemon
- */
- public static function init( array $config ) {
- if ( self::$instance ) {
- throw new Exception( 'LockServer already initialized.' );
- }
- foreach ( array( 'address', 'port', 'authKey' ) as $par ) {
- if ( !isset( $config[$par] ) ) {
- die( "Usage: php LockServerDaemon.php " .
- "--address <address> --port <port> --authKey <key> " .
- "[--lockTimeout <seconds>] " .
- "[--maxLocks <integer>] [--maxClients <integer>] [--maxBacklog <integer>]\n"
- );
- }
- }
- self::$instance = new self( $config );
- return self::$instance;
- }
-
- /**
- * @params $config Array
- */
- protected function __construct( array $config ) {
- // Required parameters...
- $this->address = $config['address'];
- $this->port = $config['port'];
- $this->authKey = $config['authKey'];
- // Parameters with defaults...
- $this->lockTimeout = isset( $config['lockTimeout'] )
- ? (int)$config['lockTimeout']
- : 60;
- $this->maxClients = isset( $config['maxClients'] )
- ? (int)$config['maxClients']
- : 1000; // less than default FD_SETSIZE
- $this->maxBacklog = isset( $config['maxBacklog'] )
- ? (int)$config['maxBacklog']
- : 100;
- $maxLocks = isset( $config['maxLocks'] )
- ? (int)$config['maxLocks']
- : 10000;
-
- $this->lockHolder = new LockHolder( $maxLocks );
- }
-
- /**
- * @throws Exception
- * @return void
- */
- protected function setupServerSocket() {
- if ( !function_exists( 'socket_create' ) ) {
- throw new Exception( "PHP sockets extension missing from PHP CLI mode." );
- }
- $sock = socket_create( AF_INET, SOCK_STREAM, SOL_TCP );
- if ( $sock === false ) {
- throw new Exception( "socket_create(): " . socket_strerror( socket_last_error() ) );
- }
- socket_set_option( $sock, SOL_SOCKET, SO_REUSEADDR, 1 ); // bypass 2MLS
- socket_set_nonblock( $sock ); // don't block on accept()
- if ( socket_bind( $sock, $this->address, $this->port ) === false ) {
- throw new Exception( "socket_bind(): " .
- socket_strerror( socket_last_error( $sock ) ) );
- } elseif ( socket_listen( $sock, $this->maxBacklog ) === false ) {
- throw new Exception( "socket_listen(): " .
- socket_strerror( socket_last_error( $sock ) ) );
- }
- $this->sock = $sock;
- $this->startTime = time();
- }
-
- /**
- * Entry-point function that listens to the server socket, accepts
- * new clients, and recieves/responds to requests to lock resources.
- */
- public function main() {
- $this->setupServerSocket(); // setup listening socket
- $socketArray = new SocketArray(); // sockets being serviced
- $socketArray->addSocket( $this->sock ); // add listening socket
- do {
- list( $read, $write ) = $socketArray->socketsForSelect();
- if ( socket_select( $read, $write, $except = null, null ) < 1 ) {
- continue; // wait
- }
- // Check if there is a client trying to connect...
- if ( in_array( $this->sock, $read ) && $socketArray->size() < $this->maxClients ) {
- $newSock = socket_accept( $this->sock );
- if ( $newSock ) {
- socket_set_option( $newSock, SOL_SOCKET, SO_KEEPALIVE, 1 );
- socket_set_nonblock( $newSock ); // don't block on read()/write()
- $socketArray->addSocket( $newSock );
- }
- }
- // Loop through all the clients that have data to read...
- foreach ( $read as $read_sock ) {
- if ( $read_sock === $this->sock ) {
- continue; // skip listening socket
- }
- // Avoids PHP_NORMAL_READ per https://bugs.php.net/bug.php?id=33471
- $data = socket_read( $read_sock, 65535 );
- // Check if the client is disconnected
- if ( $data === false || $data === '' ) {
- $socketArray->closeSocket( $read_sock );
- $this->recordDeadSocket( $read_sock ); // remove session
- // Check if we reached the end of a message
- } elseif ( substr( $data, -1 ) === "\n" ) {
- // Newline is the last char (given ping-pong message usage)
- $cmd = $socketArray->readRcvBuffer( $read_sock ) . $data;
- // Perform the requested command...
- $response = $this->doCommand( rtrim( $cmd ), $read_sock );
- // Send the response to the client...
- $socketArray->appendSndBuffer( $read_sock, $response . "\n" );
- // Otherwise, we just have more message data to append
- } elseif ( !$socketArray->appendRcvBuffer( $read_sock, $data ) ) {
- $socketArray->closeSocket( $read_sock ); // too big
- $this->recordDeadSocket( $read_sock ); // remove session
- }
- }
- // Loop through all the clients that have data to write...
- foreach ( $write as $write_sock ) {
- $bytes = socket_write( $write_sock, $socketArray->readSndBuffer( $write_sock ) );
- // Check if the client is disconnected
- if ( $bytes === false ) {
- $socketArray->closeSocket( $write_sock );
- $this->recordDeadSocket( $write_sock ); // remove session
- // Otherwise, truncate these bytes from the start of the write buffer
- } else {
- $socketArray->consumeSndBuffer( $write_sock, $bytes );
- }
- }
- // Prune dead locks every few socket events...
- if ( ++$this->ticks >= 9 ) {
- $this->ticks = 0;
- $this->purgeExpiredLocks();
- }
- } while ( true );
- }
-
- /**
- * @param $data string
- * @param $sourceSock resource
- * @return string
- */
- protected function doCommand( $data, $sourceSock ) {
- $cmdArr = $this->getCommand( $data );
- if ( is_string( $cmdArr ) ) {
- return $cmdArr; // error
- }
- list( $function, $session, $type, $resources ) = $cmdArr;
- // On first command, track the session => sock correspondence
- if ( !isset( $this->sessions[$session] ) ) {
- $this->sessions[$session] = $sourceSock;
- unset( $this->deadSessions[$session] ); // renew if dead
- }
- if ( $function === 'ACQUIRE' ) {
- return $this->lockHolder->lock( $session, $type, $resources );
- } elseif ( $function === 'RELEASE' ) {
- return $this->lockHolder->unlock( $session, $type, $resources );
- } elseif ( $function === 'RELEASE_ALL' ) {
- return $this->lockHolder->release( $session );
- } elseif ( $function === 'STAT' ) {
- return $this->stat();
- }
- return 'INTERNAL_ERROR';
- }
-
- /**
- * @param $data string
- * @return Array
- */
- protected function getCommand( $data ) {
- $m = explode( ':', $data ); // <session, key, command, type, values>
- if ( count( $m ) == 5 ) {
- list( $session, $key, $command, $type, $values ) = $m;
- $goodKey = hash_hmac( 'sha1',
- "{$session}\n{$command}\n{$type}\n{$values}", $this->authKey );
- if ( $goodKey !== $key ) {
- return 'BAD_KEY';
- } elseif ( strlen( $session ) !== 32 ) {
- return 'BAD_SESSION';
- }
- $values = explode( '|', $values );
- if ( $command === 'ACQUIRE' ) {
- $needsLockArgs = true;
- } elseif ( $command === 'RELEASE' ) {
- $needsLockArgs = true;
- } elseif ( $command === 'RELEASE_ALL' ) {
- $needsLockArgs = false;
- } elseif ( $command === 'STAT' ) {
- $needsLockArgs = false;
- } else {
- return 'BAD_COMMAND';
- }
- if ( $needsLockArgs ) {
- if ( $type !== 'SH' && $type !== 'EX' ) {
- return 'BAD_TYPE';
- }
- foreach ( $values as $value ) {
- if ( strlen( $value ) !== 31 ) {
- return 'BAD_FORMAT';
- }
- }
- }
- return array( $command, $session, $type, $values );
- }
- return 'BAD_FORMAT';
- }
-
- /**
- * Remove a socket's corresponding session from tracking and
- * store it in the dead session tracking if it still has locks.
- *
- * @param $socket resource
- * @return bool
- */
- protected function recordDeadSocket( $socket ) {
- $session = array_search( $socket, $this->sessions );
- if ( $session !== false ) {
- unset( $this->sessions[$session] );
- // Record recently killed sessions that still have locks
- if ( $this->lockHolder->sessionHasLocks( $session ) ) {
- $this->deadSessions[$session] = time();
- }
- return true;
- }
- return false;
- }
-
- /**
- * Clear locks for sessions that have been dead for a while
- *
- * @return integer Number of sessions purged
- */
- protected function purgeExpiredLocks() {
- $count = 0;
- $now = time();
- foreach ( $this->deadSessions as $session => $timestamp ) {
- if ( ( $now - $timestamp ) > $this->lockTimeout ) {
- $this->lockHolder->release( $session );
- unset( $this->deadSessions[$session] );
- ++$count;
- }
- }
- return $count;
- }
-
- /**
- * Get the current timestamp and memory usage
- *
- * @return string
- */
- protected function stat() {
- return ( time() - $this->startTime ) . ':' . memory_get_usage();
- }
-}
-
-/**
- * LockServerDaemon helper class that keeps track socket states
- */
-class SocketArray {
- /* @var Array */
- protected $clients = array(); // array of client sockets
- /* @var Array */
- protected $rBuffers = array(); // corresponding socket read buffers
- /* @var Array */
- protected $wBuffers = array(); // corresponding socket write buffers
-
- const BUFFER_SIZE = 65535;
-
- /**
- * @return Array (list of sockets to read, list of sockets to write)
- */
- public function socketsForSelect() {
- $rSockets = array();
- $wSockets = array();
- foreach ( $this->clients as $key => $socket ) {
- if ( $this->wBuffers[$key] !== '' ) {
- $wSockets[] = $socket; // wait for writing to unblock
- } else {
- $rSockets[] = $socket; // wait for reading to unblock
- }
- }
- return array( $rSockets, $wSockets );
- }
-
- /**
- * @return integer Number of client sockets
- */
- public function size() {
- return count( $this->clients );
- }
-
- /**
- * @param $sock resource
- * @return bool
- */
- public function addSocket( $sock ) {
- $this->clients[] = $sock;
- $this->rBuffers[] = '';
- $this->wBuffers[] = '';
- return true;
- }
-
- /**
- * @param $sock resource
- * @return bool
- */
- public function closeSocket( $sock ) {
- $key = array_search( $sock, $this->clients );
- if ( $key === false ) {
- return false;
- }
- socket_close( $sock );
- unset( $this->clients[$key] );
- unset( $this->rBuffers[$key] );
- unset( $this->wBuffers[$key] );
- return true;
- }
-
- /**
- * @param $sock resource
- * @param $data string
- * @return bool
- */
- public function appendRcvBuffer( $sock, $data ) {
- $key = array_search( $sock, $this->clients );
- if ( $key === false ) {
- return false;
- } elseif ( ( strlen( $this->rBuffers[$key] ) + strlen( $data ) ) > self::BUFFER_SIZE ) {
- return false;
- }
- $this->rBuffers[$key] .= $data;
- return true;
- }
-
- /**
- * @param $sock resource
- * @return string|bool
- */
- public function readRcvBuffer( $sock ) {
- $key = array_search( $sock, $this->clients );
- if ( $key === false ) {
- return false;
- }
- $data = $this->rBuffers[$key];
- $this->rBuffers[$key] = ''; // consume data
- return $data;
- }
-
- /**
- * @param $sock resource
- * @param $data string
- * @return bool
- */
- public function appendSndBuffer( $sock, $data ) {
- $key = array_search( $sock, $this->clients );
- if ( $key === false ) {
- return false;
- } elseif ( ( strlen( $this->wBuffers[$key] ) + strlen( $data ) ) > self::BUFFER_SIZE ) {
- return false;
- }
- $this->wBuffers[$key] .= $data;
- return true;
- }
-
- /**
- * @param $sock resource
- * @return bool
- */
- public function readSndBuffer( $sock ) {
- $key = array_search( $sock, $this->clients );
- if ( $key === false ) {
- return false;
- }
- return $this->wBuffers[$key];
- }
-
- /**
- * @param $sock resource
- * @param $bytes integer
- * @return bool
- */
- public function consumeSndBuffer( $sock, $bytes ) {
- $key = array_search( $sock, $this->clients );
- if ( $key === false ) {
- return false;
- }
- $this->wBuffers[$key] = (string)substr( $this->wBuffers[$key], $bytes );
- return true;
- }
-}
-
-/**
- * LockServerDaemon helper class that keeps track of the locks
- */
-class LockHolder {
- /** @var Array */
- protected $shLocks = array(); // (key => session => 1)
- /** @var Array */
- protected $exLocks = array(); // (key => session)
-
- /** @var Array */
- protected $sessionIndexSh = array(); // (session => key => 1)
- /** @var Array */
- protected $sessionIndexEx = array(); // (session => key => 1)
- protected $lockCount = 0; // integer
-
- protected $maxLocks; // integer
-
- /**
- * @params $maxLocks integer Maximum number of locks to allow
- */
- public function __construct( $maxLocks ) {
- $this->maxLocks = $maxLocks;
- }
-
- /**
- * @param $session string
- * @return bool
- */
- public function sessionHasLocks( $session ) {
- return isset( $this->sessionIndexSh[$session] )
- || isset( $this->sessionIndexEx[$session] );
- }
-
- /**
- * @param $session string
- * @param $type string
- * @param $keys Array
- * @return string
- */
- public function lock( $session, $type, array $keys ) {
- if ( ( $this->lockCount + count( $keys ) ) > $this->maxLocks ) {
- return 'TOO_MANY_LOCKS';
- }
- if ( $type === 'SH' ) {
- // Check if any keys are already write-locked...
- foreach ( $keys as $key ) {
- if ( isset( $this->exLocks[$key] ) && $this->exLocks[$key] !== $session ) {
- return 'CANT_ACQUIRE';
- }
- }
- // Acquire the read-locks...
- foreach ( $keys as $key ) {
- $this->set_sh_lock( $key, $session );
- }
- return 'ACQUIRED';
- } elseif ( $type === 'EX' ) {
- // Check if any keys are already read-locked or write-locked...
- foreach ( $keys as $key ) {
- if ( isset( $this->exLocks[$key] ) && $this->exLocks[$key] !== $session ) {
- return 'CANT_ACQUIRE';
- }
- if ( isset( $this->shLocks[$key] ) ) {
- foreach ( $this->shLocks[$key] as $otherSession => $x ) {
- if ( $otherSession !== $session ) {
- return 'CANT_ACQUIRE';
- }
- }
- }
- }
- // Acquire the write-locks...
- foreach ( $keys as $key ) {
- $this->set_ex_lock( $key, $session );
- }
- return 'ACQUIRED';
- }
- return 'INTERNAL_ERROR';
- }
-
- /**
- * @param $session string
- * @param $type string
- * @param $keys Array
- * @return string
- */
- public function unlock( $session, $type, array $keys ) {
- if ( $type === 'SH' ) {
- foreach ( $keys as $key ) {
- $this->unset_sh_lock( $key, $session );
- }
- return 'RELEASED';
- } elseif ( $type === 'EX' ) {
- foreach ( $keys as $key ) {
- $this->unset_ex_lock( $key, $session );
- }
- return 'RELEASED';
- }
- return 'INTERNAL_ERROR';
- }
-
- /**
- * @param $session string
- * @return string
- */
- public function release( $session ) {
- if ( isset( $this->sessionIndexSh[$session] ) ) {
- foreach ( $this->sessionIndexSh[$session] as $key => $x ) {
- $this->unset_sh_lock( $key, $session );
- }
- }
- if ( isset( $this->sessionIndexEx[$session] ) ) {
- foreach ( $this->sessionIndexEx[$session] as $key => $x ) {
- $this->unset_ex_lock( $key, $session );
- }
- }
- return 'RELEASED_ALL';
- }
-
- /**
- * @param $key string
- * @param $session string
- * @return void
- */
- protected function set_sh_lock( $key, $session ) {
- if ( !isset( $this->shLocks[$key][$session] ) ) {
- $this->shLocks[$key][$session] = 1;
- $this->sessionIndexSh[$session][$key] = 1;
- ++$this->lockCount; // we are adding a lock
- }
- }
-
- /**
- * @param $key string
- * @param $session string
- * @return void
- */
- protected function set_ex_lock( $key, $session ) {
- if ( !isset( $this->exLocks[$key][$session] ) ) {
- $this->exLocks[$key] = $session;
- $this->sessionIndexEx[$session][$key] = 1;
- ++$this->lockCount; // we are adding a lock
- }
- }
-
- /**
- * @param $key string
- * @param $session string
- * @return void
- */
- protected function unset_sh_lock( $key, $session ) {
- if ( isset( $this->shLocks[$key][$session] ) ) {
- unset( $this->shLocks[$key][$session] );
- if ( !count( $this->shLocks[$key] ) ) {
- unset( $this->shLocks[$key] );
- }
- unset( $this->sessionIndexSh[$session][$key] );
- if ( !count( $this->sessionIndexSh[$session] ) ) {
- unset( $this->sessionIndexSh[$session] );
- }
- --$this->lockCount;
- }
- }
-
- /**
- * @param $key string
- * @param $session string
- * @return void
- */
- protected function unset_ex_lock( $key, $session ) {
- if ( isset( $this->exLocks[$key] ) && $this->exLocks[$key] === $session ) {
- unset( $this->exLocks[$key] );
- unset( $this->sessionIndexEx[$session][$key] );
- if ( !count( $this->sessionIndexEx[$session] ) ) {
- unset( $this->sessionIndexEx[$session] );
- }
- --$this->lockCount;
- }
- }
-}
CREATE UNIQUE INDEX cl_from ON categorylinks (cl_from, cl_to);
CREATE INDEX cl_sortkey ON categorylinks (cl_to, cl_sortkey, cl_from);
-CREATE SEQUENCE externallinks_id_seq;
+CREATE SEQUENCE externallinks_el_id_seq;
CREATE TABLE externallinks (
- el_id INTEGER NOT NULL PRIMARY KEY DEFAULT nextval('externallinks_id_seq'),
+ el_id INTEGER NOT NULL PRIMARY KEY DEFAULT nextval('externallinks_el_id_seq'),
el_from INTEGER NOT NULL REFERENCES page(page_id) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED,
el_to TEXT NOT NULL,
el_index TEXT NOT NULL
us_key TEXT,
us_orig_path TEXT,
us_path TEXT,
+ us_props BYTEA,
us_source_type TEXT,
us_timestamp TIMESTAMPTZ,
us_status TEXT,
'rc_last_oldid' => $lastOldId,
'rc_new' => $new,
'rc_type' => $new,
+ 'rc_source' => $new === 1 ? RecentChange::SRC_NEW : RecentChange::SRC_EDIT,
'rc_old_len' => $lastSize,
'rc_new_len' => $size,
), array(
'rc_this_oldid' => 0,
'rc_last_oldid' => 0,
'rc_type' => RC_LOG,
+ 'rc_source' => $dbw->addQuotes( RecentChange::SRC_LOG ),
'rc_cur_id' => $dbw->cascadingDeletes() ? 'page_id' : 'COALESCE(page_id, 0)',
'rc_log_type' => 'log_type',
'rc_log_action' => 'log_action',
$blacklist = array_keys( $backoffs );
$job = $group->pop( JobQueueGroup::TYPE_DEFAULT, $flags, $blacklist );
} else {
- $group->pop( $type ); // job from a single queue
+ $job = $group->pop( $type ); // job from a single queue
}
if ( $job ) { // found a job
++$jobsRun;
$totalRevs = $dbr->selectField( 'text', 'MAX(old_id)', false, __METHOD__ );
- if ( $dbr->getType() == 'mysql'
- && version_compare( $dbr->getServerVersion(), '4.1.0', '>=' )
- ) {
+ if ( $dbr->getType() == 'mysql' ) {
// In MySQL 4.1+, the binary field old_text has a non-working LOWER() function
$lowerLeft = 'LOWER(CONVERT(LEFT(old_text,22) USING latin1))';
- } else {
- // No CONVERT() in MySQL 4.0
- $lowerLeft = 'LOWER(LEFT(old_text,22))';
}
while ( true ) {
}
function compatChecks() {
- $test = new PhpXmlBugTester();
- if ( !$test->ok ) {
+ // Avoid syntax error in PHP4
+ $minimumPcreVersion = constant( 'Installer::MINIMUM_PCRE_VERSION' );
+
+ list( $pcreVersion ) = explode( ' ', PCRE_VERSION, 2 );
+ if ( version_compare( $pcreVersion, $minimumPcreVersion, '<' ) ) {
$this->error(
- "Your system has a combination of PHP and libxml2 versions which is buggy\n" .
- "and can cause hidden data corruption in MediaWiki and other web apps.\n" .
- "Upgrade to PHP 5.2.9 or later and libxml2 2.7.3 or later!\n" .
- "ABORTING (see http://bugs.php.net/bug.php?id=45996).\n",
+ "PCRE $minimumPcreVersion or later is required.\n" .
+ "Your PHP binary is linked with PCRE $pcreVersion.\n\n" .
+ "More information:\n" .
+ "https://www.mediawiki.org/wiki/Manual:Errors_and_symptoms/PCRE\n\n" .
+ "ABORTING.\n",
true );
}
- $test = new PhpRefCallBugTester;
- $test->execute();
+ $test = new PhpXmlBugTester();
if ( !$test->ok ) {
- $ver = phpversion();
$this->error(
- "PHP $ver is not compatible with MediaWiki due to a bug involving\n" .
- "reference parameters to __call. Upgrade to PHP 5.3.2 or higher, or \n" .
- "downgrade to PHP 5.3.0 to fix this.\n" .
- "ABORTING (see http://bugs.php.net/bug.php?id=50394 for details)\n",
+ "Your system has a combination of PHP and libxml2 versions that is buggy\n" .
+ "and can cause hidden data corruption in MediaWiki and other web apps.\n" .
+ "Upgrade to libxml2 2.7.3 or later.\n" .
+ "ABORTING (see https://bugs.php.net/bug.php?id=45996).\n",
true );
}
}
+MEDIAWIKI_LOAD_URL ?= http://localhost/w/load.php
+
kss: nodecheck
# FIXME: Use more up-to-date Ruby version
- @node_modules/.bin/kss-node mediawiki.ui mediawiki.ui/docs -l mediawiki.ui/vector.less -t styleguide-template
+
+# Generates CSS of mediawiki.ui and mediawiki.ui.button using ResourceLoader, then applies it to the
+# KSS style guide
+ $(eval KSS_RL_TMP := $(shell mktemp /tmp/tmp.XXXXXXXXXX))
+ @curl -sG "${MEDIAWIKI_LOAD_URL}?modules=mediawiki.ui|mediawiki.ui.button&only=styles" > $(KSS_RL_TMP)
+ @node_modules/.bin/kss-node mediawiki.ui mediawiki.ui/docs --css $(KSS_RL_TMP) -t styleguide-template
@echo Opening the generated style guide...
@command -v xdg-open >/dev/null 2>&1 || { open ${PWD}/mediawiki.ui/docs/index.html; exit 1; }
@xdg-open ${PWD}/mediawiki.ui/docs/index.html
+ @rm $(KSS_RL_TMP)
nodecheck:
@scripts/nodecheck.sh
'remoteBasePath' => $GLOBALS['wgStylePath'],
'localBasePath' => $GLOBALS['wgStyleDirectory'],
),
- // FIXME: Remove in favour of skins.monobook.styles when cache expires
- 'skins.monobook' => array(
- 'styles' => array(
- 'common/commonElements.css' => array( 'media' => 'screen' ),
- 'common/commonContent.css' => array( 'media' => 'screen' ),
- 'common/commonInterface.css' => array( 'media' => 'screen' ),
- 'monobook/main.css' => array( 'media' => 'screen' ),
- ),
- 'remoteBasePath' => $GLOBALS['wgStylePath'],
- 'localBasePath' => $GLOBALS['wgStyleDirectory'],
- ),
- // FIXME: Remove in favour of skins.vector.styles when cache expires
- 'skins.vector' => array(
- 'styles' => array(
- 'common/commonElements.css' => array( 'media' => 'screen' ),
- 'common/commonContent.css' => array( 'media' => 'screen' ),
- 'common/commonInterface.css' => array( 'media' => 'screen' ),
- 'vector/styles.less',
- ),
- 'remoteBasePath' => $GLOBALS['wgStylePath'],
- 'localBasePath' => $GLOBALS['wgStyleDirectory'],
- ),
'skins.vector.styles' => array(
// Used in the web installer. Test it after modifying this definition!
'styles' => array(
'jquery.form' => array(
'scripts' => 'resources/jquery/jquery.form.js',
),
+ 'jquery.fullscreen' => array(
+ 'scripts' => 'resources/jquery/jquery.fullscreen.js',
+ ),
'jquery.getAttrs' => array(
'scripts' => 'resources/jquery/jquery.getAttrs.js',
'targets' => array( 'desktop', 'mobile' ),
'messages' => array( 'htmlform-chosen-placeholder' ),
),
'mediawiki.icon' => array(
- 'styles' => 'resources/mediawiki/mediawiki.icon.css',
+ 'styles' => 'resources/mediawiki/mediawiki.icon.less',
),
'mediawiki.inspect' => array(
'scripts' => 'resources/mediawiki/mediawiki.inspect.js',
),
'targets' => array( 'desktop', 'mobile' ),
),
+ 'mediawiki.toc' => array(
+ 'scripts' => 'resources/mediawiki/mediawiki.toc.js',
+ 'dependencies' => array(
+ 'jquery.cookie',
+ ),
+ 'messages' => array( 'showtoc', 'hidetoc' ),
+ 'targets' => array( 'desktop', 'mobile' ),
+ ),
'mediawiki.Uri' => array(
'scripts' => 'resources/mediawiki/mediawiki.Uri.js',
'targets' => array( 'desktop', 'mobile' ),
'scripts' => 'resources/mediawiki/mediawiki.util.js',
'dependencies' => array(
'jquery.client',
- 'jquery.cookie',
'jquery.mwExtension',
'mediawiki.notify',
+ 'mediawiki.toc',
),
- 'messages' => array( 'showtoc', 'hidetoc' ),
'position' => 'top', // For $wgPreloadJavaScriptMwUtil
'targets' => array( 'desktop', 'mobile' ),
),
'styles' => 'resources/mediawiki.action/mediawiki.action.edit.collapsibleFooter.css',
'dependencies' => array(
'jquery.makeCollapsible',
+ 'jquery.cookie',
'mediawiki.icon',
),
),
'postedit-confirmation',
),
),
+ 'mediawiki.action.view.redirectToFragment' => array(
+ 'scripts' => 'resources/mediawiki.action/mediawiki.action.view.redirectToFragment.js',
+ 'dependencies' => array(
+ 'jquery.client',
+ ),
+ 'position' => 'top',
+ ),
'mediawiki.action.view.rightClickEdit' => array(
'scripts' => 'resources/mediawiki.action/mediawiki.action.view.rightClickEdit.js',
),
),
'mediawiki.special.block' => array(
'scripts' => 'resources/mediawiki.special/mediawiki.special.block.js',
+ 'styles' => 'resources/mediawiki.special/mediawiki.special.block.css',
'dependencies' => array(
'mediawiki.util',
),
'mediawiki.special.changeslist' => array(
'styles' => 'resources/mediawiki.special/mediawiki.special.changeslist.css',
),
- 'mediawiki.special.changeslist.js' => array(
- 'scripts' => 'resources/mediawiki.special/mediawiki.special.changeslist.js',
+ 'mediawiki.special.changeslist.legend' => array(
+ 'styles' => 'resources/mediawiki.special/mediawiki.special.changeslist.legend.css',
+ ),
+ 'mediawiki.special.changeslist.legend.js' => array(
+ 'scripts' => 'resources/mediawiki.special/mediawiki.special.changeslist.legend.js',
'dependencies' => array(
'jquery.makeCollapsible',
'jquery.cookie',
'messages' => array(
'prefs-tabs-navigation-hint',
),
+ 'dependencies' => array(
+ 'mediawiki.language',
+ ),
),
'mediawiki.special.recentchanges' => array(
'scripts' => 'resources/mediawiki.special/mediawiki.special.recentchanges.js',
'position' => 'top',
'targets' => array( 'desktop', 'mobile' ),
),
+ 'mediawiki.special.version' => array(
+ 'styles' => 'resources/mediawiki.special/mediawiki.special.version.css',
+ ),
/* MediaWiki Tests */
/**
* Checks the current browser against a support map object.
*
+ * Version numbers passed as numeric values will be compared like numbers (1.2 > 1.11).
+ * Version numbers passed as string values will be compared using a simple component-wise
+ * algorithm, similar to PHP's version_compare ('1.2' < '1.11').
+ *
* A browser map is in the following format:
* {
* // Multiple rules with configurable operators
test: function ( map, profile, exactMatchOnly ) {
/*jshint evil: true */
- var conditions, dir, i, op, val;
+ var conditions, dir, i, op, val, j, pieceVersion, pieceVal, compare;
profile = $.isPlainObject( profile ) ? profile : $.client.profile();
if ( map.ltr && map.rtl ) {
dir = $( 'body' ).is( '.rtl' ) ? 'rtl' : 'ltr';
op = conditions[i][0];
val = conditions[i][1];
if ( typeof val === 'string' ) {
- if ( !( eval( 'profile.version' + op + '"' + val + '"' ) ) ) {
+ // Perform a component-wise comparison of versions, similar to PHP's version_compare
+ // but simpler. '1.11' is larger than '1.2'.
+ pieceVersion = profile.version.toString().split( '.' );
+ pieceVal = val.split( '.' );
+ // Extend with zeroes to equal length
+ while ( pieceVersion.length < pieceVal.length ) {
+ pieceVersion.push( '0' );
+ }
+ while ( pieceVal.length < pieceVersion.length ) {
+ pieceVal.push( '0' );
+ }
+ // Compare components
+ compare = 0;
+ for ( j = 0; j < pieceVersion.length; j++ ) {
+ if ( Number( pieceVersion[j] ) < Number( pieceVal[j] ) ) {
+ compare = -1;
+ break;
+ } else if ( Number( pieceVersion[j] ) > Number( pieceVal[j] ) ) {
+ compare = 1;
+ break;
+ }
+ }
+ // compare will be -1, 0 or 1, depending on comparison result
+ if ( !( eval( '' + compare + op + '0' ) ) ) {
return false;
}
} else if ( typeof val === 'number' ) {
--- /dev/null
+/**
+ * jQuery fullscreen plugin v2.0.0
+ * https://github.com/theopolisme/jquery-fullscreen/tree/v2.0.0
+ *
+ * Documentation at <https://github.com/theopolisme/jquery-fullscreen/blob/v2.0.0/README.md>
+ *
+ * Copyright (c) 2013 Theopolisme <theopolismewiki@gmail.com>
+ *
+ * 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.
+ */
+( function ( $ ) {
+ var setupFullscreen,
+ fsClass = 'jq-fullscreened';
+
+ /**
+ * On fullscreenchange, trigger a jq-fullscreen-change event
+ * The event is given an object, which contains the fullscreened DOM element (element), if any
+ * and a boolean value (fullscreen) indicating if we've entered or exited fullscreen mode
+ * Also remove the 'fullscreened' class from elements that are no longer fullscreen
+ */
+ function handleFullscreenChange () {
+ var fullscreenElement = document.fullscreenElement ||
+ document.mozFullScreenElement ||
+ document.webkitFullscreenElement ||
+ document.msFullscreenElement;
+
+ if ( !fullscreenElement ) {
+ $( '.' + fsClass ).data( 'isFullscreened', false ).removeClass( fsClass );
+ }
+
+ $( document ).trigger( $.Event( 'jq-fullscreen-change', { element: fullscreenElement, fullscreen: !!fullscreenElement } ) );
+ }
+
+ /**
+ * Enters full screen with the "this" element in focus.
+ * Check the .data( 'isFullscreened' ) of the return value to check
+ * success or failure, if you're into that sort of thing.
+ * @chainable
+ * @return {jQuery}
+ */
+ function enterFullscreen () {
+ var element = this.get(0),
+ $element = this.first();
+ if ( element ) {
+ if ( element.requestFullscreen ) {
+ element.requestFullscreen();
+ } else if ( element.mozRequestFullScreen ) {
+ element.mozRequestFullScreen();
+ } else if ( element.webkitRequestFullscreen ) {
+ element.webkitRequestFullscreen();
+ } else if ( element.msRequestFullscreen ) {
+ element.msRequestFullscreen();
+ } else {
+ // Unable to make fullscreen
+ $element.data( 'isFullscreened', false );
+ return this;
+ }
+ // Add the fullscreen class and data attribute to `element`
+ $element.addClass( fsClass ).data( 'isFullscreened', true );
+ return this;
+ } else {
+ $element.data( 'isFullscreened', false );
+ return this;
+ }
+ }
+
+ /**
+ * Brings the "this" element out of fullscreen.
+ * Check the .data( 'isFullscreened' ) of the return value to check
+ * success or failure, if you're into that sort of thing.
+ * @chainable
+ * @return {jQuery}
+ */
+ function exitFullscreen () {
+ var fullscreenElement = ( document.fullscreenElement ||
+ document.mozFullScreenElement ||
+ document.webkitFullscreenElement ||
+ document.msFullscreenElement );
+
+ // Ensure that we only exit fullscreen if exitFullscreen() is being called on the same element that is currently fullscreen
+ if ( fullscreenElement && this.get(0) === fullscreenElement ) {
+ if ( document.exitFullscreen ) {
+ document.exitFullscreen();
+ } else if ( document.mozCancelFullScreen ) {
+ document.mozCancelFullScreen();
+ } else if ( document.webkitCancelFullScreen ) {
+ document.webkitCancelFullScreen();
+ } else if ( document.msCancelFullScreen ) {
+ document.msCancelFullScreen();
+ } else {
+ // Unable to cancel fullscreen mode
+ return this;
+ }
+ // We don't need to remove the fullscreen class here,
+ // because it will be removed in handleFullscreenChange.
+ // But we should change the data on the element so the
+ // caller can check for success.
+ this.first().data( 'isFullscreened', false );
+ }
+
+ return this;
+ }
+
+ /**
+ * Set up fullscreen handling and install necessary event handlers.
+ * Return false if fullscreen is not supported.
+ */
+ setupFullscreen = function () {
+ if ( document.fullscreenEnabled ||
+ document.mozFullScreenEnabled ||
+ document.webkitFullscreenEnabled ||
+ document.msFullscreenEnabled
+ ) {
+ // When the fullscreen mode is changed, trigger the
+ // fullscreen events (and when exiting,
+ // also remove the fullscreen class)
+ $( document ).on( 'fullscreenchange webkitfullscreenchange mozfullscreenchange msfullscreenchange', handleFullscreenChange);
+ // Convenience wrapper so that one only needs to listen for
+ // 'fullscreenerror', not all of the prefixed versions
+ $( document ).on( 'webkitfullscreenerror mozfullscreenerror msfullscreenerror', function () {
+ $( document ).trigger( $.Event( 'fullscreenerror' ) );
+ } );
+ // Fullscreen has been set up, so always return true
+ setupFullscreen = function () { return true; };
+ return true;
+ } else {
+ // Always return false from now on, since fullscreen is not supported
+ setupFullscreen = function() { return false; };
+ return false;
+ }
+ };
+
+ /**
+ * Set up fullscreen handling if necessary, then make the first element
+ * matching the given selector fullscreen
+ * @chainable
+ * @return {jQuery}
+ */
+ $.fn.enterFullscreen = function () {
+ if ( setupFullscreen() ) {
+ $.fn.enterFullscreen = enterFullscreen;
+ return this.enterFullscreen();
+ } else {
+ $.fn.enterFullscreen = function () { return this; };
+ return this;
+ }
+ };
+
+ /**
+ * Set up fullscreen handling if necessary, then cancel fullscreen mode
+ * for the first element matching the given selector.
+ * @chainable
+ * @return {jQuery}
+ */
+ $.fn.exitFullscreen = function () {
+ if ( setupFullscreen() ) {
+ $.fn.exitFullscreen = exitFullscreen;
+ return this.exitFullscreen();
+ } else {
+ $.fn.exitFullscreen = function () { return this; };
+ return this;
+ }
+ };
+}( jQuery ) );
* Simple local storage wrapper to save data on the browser side, supporting
* all major browsers - IE6+, Firefox2+, Safari4+, Chrome4+ and Opera 10.5+
*
- * Copyright (c) 2010 - 2012 Andris Reinman, andris.reinman@gmail.com
+ * Author: Andris Reinman, andris.reinman@gmail.com
* Project homepage: www.jstorage.info
*
- * Licensed under MIT-style license:
+ * Licensed under Unlicense:
*
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
+ * This is free and unencumbered software released into the public domain.
+ *
+ * Anyone is free to copy, modify, publish, use, compile, sell, or
+ * distribute this software, either in source code form or as a compiled
+ * binary, for any purpose, commercial or non-commercial, and by any
+ * means.
+ *
+ * In jurisdictions that recognize copyright laws, the author or authors
+ * of this software dedicate any and all copyright interest in the
+ * software to the public domain. We make this dedication for the benefit
+ * of the public at large and to the detriment of our heirs and
+ * successors. We intend this dedication to be an overt act of
+ * relinquishment in perpetuity of all present and future rights to this
+ * software under copyright law.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+ * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ * OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * For more information, please refer to <http://unlicense.org/>
*/
(function(){
var
/* jStorage version */
- JSTORAGE_VERSION = "0.3.0",
+ JSTORAGE_VERSION = "0.4.8",
/* detect a dollar object or create one if not found */
$ = window.jQuery || window.$ || (window.$ = {}),
};
// Break if no JSON support was found
- if(!JSON.parse || !JSON.stringify){
+ if(!("parse" in JSON) || !("stringify" in JSON)){
throw new Error("No JSON support found, include //cdnjs.cloudflare.com/ajax/libs/json2/20110223/json2.js to page");
}
var
/* This is the object, that holds the cached values */
- _storage = {},
+ _storage = {__jstorage_meta:{CRC32:{}}},
- /* Actual browser storage (localStorage or globalStorage['domain']) */
+ /* Actual browser storage (localStorage or globalStorage["domain"]) */
_storage_service = {jStorage:"{}"},
/* DOM element for older IE versions, holds userData behavior */
_pubsub_observers = {},
/* skip published items older than current timestamp */
- _pubsub_last = +new Date(),
+ _pubsub_last = +new Date(),
/* Next check for TTL */
_ttl_timeout,
- /* crc32 table */
- _crc32Table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 "+
- "0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 "+
- "6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 "+
- "FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 "+
- "A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 "+
- "32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 "+
- "56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 "+
- "C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 "+
- "E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 "+
- "6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 "+
- "12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE "+
- "A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 "+
- "DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 "+
- "5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 "+
- "2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF "+
- "04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 "+
- "7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 "+
- "FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 "+
- "A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C "+
- "36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 "+
- "5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 "+
- "C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 "+
- "EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D "+
- "7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 "+
- "18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 "+
- "A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A "+
- "D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A "+
- "53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 "+
- "2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D",
-
/**
* XML encoding and decoding as XML nodes can't be JSON'ized
* XML nodes are encoded and decoded if the node is the value to be saved
decode: function(xmlString){
var dom_parser = ("DOMParser" in window && (new DOMParser()).parseFromString) ||
(window.ActiveXObject && function(_xmlString) {
- var xml_doc = new ActiveXObject('Microsoft.XMLDOM');
- xml_doc.async = 'false';
+ var xml_doc = new ActiveXObject("Microsoft.XMLDOM");
+ xml_doc.async = "false";
xml_doc.loadXML(_xmlString);
return xml_doc;
}),
if(!dom_parser){
return false;
}
- resultXML = dom_parser.call("DOMParser" in window && (new DOMParser()) || window, xmlString, 'text/xml');
+ resultXML = dom_parser.call("DOMParser" in window && (new DOMParser()) || window, xmlString, "text/xml");
return this.isXML(resultXML)?resultXML:false;
}
- },
-
- _localStoragePolyfillSetKey = function(){};
+ };
////////////////////////// PRIVATE METHODS ////////////////////////
var localStorageReallyWorks = false;
if("localStorage" in window){
try {
- window.localStorage.setItem('_tmptest', 'tmpval');
+ window.localStorage.setItem("_tmptest", "tmpval");
localStorageReallyWorks = true;
- window.localStorage.removeItem('_tmptest');
+ window.localStorage.removeItem("_tmptest");
} catch(BogusQuotaExceededErrorOnIos5) {
// Thanks be to iOS5 Private Browsing mode which throws
// QUOTA_EXCEEDED_ERRROR DOM Exception 22.
else if("globalStorage" in window){
try {
if(window.globalStorage) {
- _storage_service = window.globalStorage[window.location.hostname];
+ if(window.location.hostname == "localhost"){
+ _storage_service = window.globalStorage["localhost.localdomain"];
+ }
+ else{
+ _storage_service = window.globalStorage[window.location.hostname];
+ }
_backend = "globalStorage";
_observer_update = _storage_service.jStorage_update;
}
}
/* Check if browser supports userData behavior */
else {
- _storage_elm = document.createElement('link');
+ _storage_elm = document.createElement("link");
if(_storage_elm.addBehavior){
/* Use a DOM element to act as userData storage */
- _storage_elm.style.behavior = 'url(#default#userData)';
+ _storage_elm.style.behavior = "url(#default#userData)";
/* userData element needs to be inserted into the DOM! */
- document.getElementsByTagName('head')[0].appendChild(_storage_elm);
+ document.getElementsByTagName("head")[0].appendChild(_storage_elm);
try{
_storage_elm.load("jStorage");
// remove dead keys
_handleTTL();
- // create localStorage and sessionStorage polyfills if needed
- _createPolyfillStorage("local");
- _createPolyfillStorage("session");
-
// start listening for changes
_setupObserver();
}
}
- /**
- * Create a polyfill for localStorage (type="local") or sessionStorage (type="session")
- *
- * @param {String} type Either "local" or "session"
- * @param {Boolean} forceCreate If set to true, recreate the polyfill (needed with flush)
- */
- function _createPolyfillStorage(type, forceCreate){
- var _skipSave = false,
- _length = 0,
- i,
- storage,
- storage_source = {};
-
- var rand = Math.random();
-
- if(!forceCreate && typeof window[type+"Storage"] != "undefined"){
- return;
- }
-
- // Use globalStorage for localStorage if available
- if(type == "local" && window.globalStorage){
- localStorage = window.globalStorage[window.location.hostname];
- return;
- }
-
- // only IE6/7 from this point on
- if(_backend != "userDataBehavior"){
- return;
- }
-
- // Remove existing storage element if available
- if(forceCreate && window[type+"Storage"] && window[type+"Storage"].parentNode){
- window[type+"Storage"].parentNode.removeChild(window[type+"Storage"]);
- }
-
- storage = document.createElement("button");
- document.getElementsByTagName('head')[0].appendChild(storage);
-
- if(type == "local"){
- storage_source = _storage;
- }else if(type == "session"){
- _sessionStoragePolyfillUpdate();
- }
-
- for(i in storage_source){
-
- if(storage_source.hasOwnProperty(i) && i != "__jstorage_meta" && i != "length" && typeof storage_source[i] != "undefined"){
- if(!(i in storage)){
- _length++;
- }
- storage[i] = storage_source[i];
- }
- }
-
- // Polyfill API
-
- /**
- * Indicates how many keys are stored in the storage
- */
- storage.length = _length;
-
- /**
- * Returns the key of the nth stored value
- *
- * @param {Number} n Index position
- * @return {String} Key name of the nth stored value
- */
- storage.key = function(n){
- var count = 0, i;
- _sessionStoragePolyfillUpdate();
- for(i in storage_source){
- if(storage_source.hasOwnProperty(i) && i != "__jstorage_meta" && i!="length" && typeof storage_source[i] != "undefined"){
- if(count == n){
- return i;
- }
- count++;
- }
- }
- }
-
- /**
- * Returns the current value associated with the given key
- *
- * @param {String} key key name
- * @return {Mixed} Stored value
- */
- storage.getItem = function(key){
- _sessionStoragePolyfillUpdate();
- if(type == "session"){
- return storage_source[key];
- }
- return $.jStorage.get(key);
- }
-
- /**
- * Sets or updates value for a give key
- *
- * @param {String} key Key name to be updated
- * @param {String} value String value to be stored
- */
- storage.setItem = function(key, value){
- if(typeof value == "undefined"){
- return;
- }
- storage[key] = (value || "").toString();
- }
-
- /**
- * Removes key from the storage
- *
- * @param {String} key Key name to be removed
- */
- storage.removeItem = function(key){
- if(type == "local"){
- return $.jStorage.deleteKey(key);
- }
-
- storage[key] = undefined;
-
- _skipSave = true;
- if(key in storage){
- storage.removeAttribute(key);
- }
- _skipSave = false;
- }
-
- /**
- * Clear storage
- */
- storage.clear = function(){
- if(type == "session"){
- window.name = "";
- _createPolyfillStorage("session", true);
- return;
- }
- $.jStorage.flush();
- }
-
- if(type == "local"){
-
- _localStoragePolyfillSetKey = function(key, value){
- if(key == "length"){
- return;
- }
- _skipSave = true;
- if(typeof value == "undefined"){
- if(key in storage){
- _length--;
- storage.removeAttribute(key);
- }
- }else{
- if(!(key in storage)){
- _length++;
- }
- storage[key] = (value || "").toString();
- }
- storage.length = _length;
- _skipSave = false;
- }
- }
-
- function _sessionStoragePolyfillUpdate(){
- if(type != "session"){
- return;
- }
- try{
- storage_source = JSON.parse(window.name || "{}");
- }catch(E){
- storage_source = {};
- }
- }
-
- function _sessionStoragePolyfillSave(){
- if(type != "session"){
- return;
- }
- window.name = JSON.stringify(storage_source);
- };
-
- storage.attachEvent("onpropertychange", function(e){
- if(e.propertyName == "length"){
- return;
- }
-
- if(_skipSave || e.propertyName == "length"){
- return;
- }
-
- if(type == "local"){
- if(!(e.propertyName in storage_source) && typeof storage[e.propertyName] != "undefined"){
- _length ++;
- }
- }else if(type == "session"){
- _sessionStoragePolyfillUpdate();
- if(typeof storage[e.propertyName] != "undefined" && !(e.propertyName in storage_source)){
- storage_source[e.propertyName] = storage[e.propertyName];
- _length++;
- }else if(typeof storage[e.propertyName] == "undefined" && e.propertyName in storage_source){
- delete storage_source[e.propertyName];
- _length--;
- }else{
- storage_source[e.propertyName] = storage[e.propertyName];
- }
-
- _sessionStoragePolyfillSave();
- storage.length = _length;
- return;
- }
-
- $.jStorage.set(e.propertyName, storage[e.propertyName]);
- storage.length = _length;
- });
-
- window[type+"Storage"] = storage;
- }
-
/**
* Reload data from storage when needed
*/
removed.push(key);
continue;
}
- if(oldCrc32List[key] != newCrc32List[key]){
+ if(oldCrc32List[key] != newCrc32List[key] && String(oldCrc32List[key]).substr(0,2) == "2."){
updated.push(key);
}
}
_observers[keys[i]][j](keys[i], action);
}
}
+ if(_observers["*"]){
+ for(var j=0, jlen = _observers["*"].length; j<jlen; j++){
+ _observers["*"][j](keys[i], action);
+ }
+ }
}
}
var updateTime = (+new Date()).toString();
if(_backend == "localStorage" || _backend == "globalStorage"){
- _storage_service.jStorage_update = updateTime;
+ try {
+ _storage_service.jStorage_update = updateTime;
+ } catch (E8) {
+ // safari private mode has been enabled after the jStorage initialization
+ _backend = false;
+ }
}else if(_backend == "userDataBehavior"){
_storage_elm.setAttribute("jStorage_update", updateTime);
_storage_elm.save("jStorage");
* @param {String} key Key name
*/
function _checkKey(key){
- if(!key || (typeof key != "string" && typeof key != "number")){
- throw new TypeError('Key name must be string or numeric');
+ if(typeof key != "string" && typeof key != "number"){
+ throw new TypeError("Key name must be string or numeric");
}
if(key == "__jstorage_meta"){
- throw new TypeError('Reserved key name');
+ throw new TypeError("Reserved key name");
}
return true;
}
* Checks if there's any events on hold to be fired to listeners
*/
function _handlePubSub(){
+ var i, len;
if(!_storage.__jstorage_meta.PubSub){
return;
}
var pubelm,
_pubsubCurrent = _pubsub_last;
- for(var i=len=_storage.__jstorage_meta.PubSub.length-1; i>=0; i--){
+ for(i=len=_storage.__jstorage_meta.PubSub.length-1; i>=0; i--){
pubelm = _storage.__jstorage_meta.PubSub[i];
if(pubelm[0] > _pubsub_last){
_pubsubCurrent = pubelm[0];
if(_pubsub_observers[channel]){
for(var i=0, len = _pubsub_observers[channel].length; i<len; i++){
// send immutable data that can't be modified by listeners
- _pubsub_observers[channel][i](channel, JSON.parse(JSON.stringify(payload)));
+ try{
+ _pubsub_observers[channel][i](channel, JSON.parse(JSON.stringify(payload)));
+ }catch(E){};
}
}
}
if(!_storage.__jstorage_meta.PubSub){
_storage.__jstorage_meta.PubSub = [];
}
-
+
_storage.__jstorage_meta.PubSub.unshift([+new Date, channel, payload]);
_save();
_publishChange();
}
+
/**
- * CRC32 calculation based on http://noteslog.com/post/crc32-for-javascript/
+ * JS Implementation of MurmurHash2
+ *
+ * SOURCE: https://github.com/garycourt/murmurhash-js (MIT licensed)
*
- * @param {String} str String to be hashed
- * @param {Number} [crc] Last crc value in case of streams
+ * @author <a href="mailto:gary.court@gmail.com">Gary Court</a>
+ * @see http://github.com/garycourt/murmurhash-js
+ * @author <a href="mailto:aappleby@gmail.com">Austin Appleby</a>
+ * @see http://sites.google.com/site/murmurhash/
+ *
+ * @param {string} str ASCII only
+ * @param {number} seed Positive integer only
+ * @return {number} 32-bit positive integer hash
*/
- function _crc32(str, crc){
- crc = crc || 0;
-
- var n = 0, //a number between 0 and 255
- x = 0; //an hex number
-
- crc = crc ^ (-1);
- for(var i = 0, len = str.length; i < len; i++){
- n = (crc ^ str.charCodeAt(i)) & 0xFF;
- x = "0x" + _crc32Table.substr(n * 9, 8);
- crc = (crc >>> 8)^x;
+
+ function murmurhash2_32_gc(str, seed) {
+ var
+ l = str.length,
+ h = seed ^ l,
+ i = 0,
+ k;
+
+ while (l >= 4) {
+ k =
+ ((str.charCodeAt(i) & 0xff)) |
+ ((str.charCodeAt(++i) & 0xff) << 8) |
+ ((str.charCodeAt(++i) & 0xff) << 16) |
+ ((str.charCodeAt(++i) & 0xff) << 24);
+
+ k = (((k & 0xffff) * 0x5bd1e995) + ((((k >>> 16) * 0x5bd1e995) & 0xffff) << 16));
+ k ^= k >>> 24;
+ k = (((k & 0xffff) * 0x5bd1e995) + ((((k >>> 16) * 0x5bd1e995) & 0xffff) << 16));
+
+ h = (((h & 0xffff) * 0x5bd1e995) + ((((h >>> 16) * 0x5bd1e995) & 0xffff) << 16)) ^ k;
+
+ l -= 4;
+ ++i;
+ }
+
+ switch (l) {
+ case 3: h ^= (str.charCodeAt(i + 2) & 0xff) << 16;
+ case 2: h ^= (str.charCodeAt(i + 1) & 0xff) << 8;
+ case 1: h ^= (str.charCodeAt(i) & 0xff);
+ h = (((h & 0xffff) * 0x5bd1e995) + ((((h >>> 16) * 0x5bd1e995) & 0xffff) << 16));
}
- return crc^(-1);
+
+ h ^= h >>> 13;
+ h = (((h & 0xffff) * 0x5bd1e995) + ((((h >>> 16) * 0x5bd1e995) & 0xffff) << 16));
+ h ^= h >>> 15;
+
+ return h >>> 0;
}
////////////////////////// PUBLIC INTERFACE /////////////////////////
_storage[key] = value;
- _storage.__jstorage_meta.CRC32[key] = _crc32(JSON.stringify(value));
+ _storage.__jstorage_meta.CRC32[key] = "2." + murmurhash2_32_gc(JSON.stringify(value), 0x9747b28c);
this.setTTL(key, options.TTL || 0); // also handles saving and _publishChange
- _localStoragePolyfillSetKey(key, value);
-
_fireObservers(key, "updated");
return value;
},
get: function(key, def){
_checkKey(key);
if(key in _storage){
- if(_storage[key] && typeof _storage[key] == "object" &&
- _storage[key]._is_xml &&
- _storage[key]._is_xml){
+ if(_storage[key] && typeof _storage[key] == "object" && _storage[key]._is_xml) {
return _XMLService.decode(_storage[key].xml);
}else{
return _storage[key];
}
}
- return typeof(def) == 'undefined' ? null : def;
+ return typeof(def) == "undefined" ? null : def;
},
/**
}
delete _storage.__jstorage_meta.CRC32[key];
- _localStoragePolyfillSetKey(key, undefined);
_save();
_publishChange();
*/
flush: function(){
_storage = {__jstorage_meta:{CRC32:{}}};
- _createPolyfillStorage("local", true);
_save();
_publishChange();
_fireObservers(null, "flushed");
/**
* Returns an index of all used keys as an array
- * ['key1', 'key2',..'keyN']
+ * ["key1", "key2",.."keyN"]
*
* @return {Array} Used keys
*/
subscribe: function(channel, callback){
channel = (channel || "").toString();
if(!channel){
- throw new TypeError('Channel not defined');
+ throw new TypeError("Channel not defined");
}
if(!_pubsub_observers[channel]){
_pubsub_observers[channel] = [];
publish: function(channel, payload){
channel = (channel || "").toString();
if(!channel){
- throw new TypeError('Channel not defined');
+ throw new TypeError("Channel not defined");
}
_publish(channel, payload);
*/
reInit: function(){
_reloadData();
- }
+ },
+
+ /**
+ * Removes reference from global objects and saves it as jStorage
+ *
+ * @param {Boolean} option if needed to save object as simple "jStorage" in windows context
+ */
+ noConflict: function( saveInGlobal ) {
+ delete window.$.jStorage
+
+ if ( saveInGlobal ) {
+ window.jStorage = this;
+ }
+
+ return this;
+ }
};
// Initialize jStorage
/* See also jquery.makeCollapsible.js */
.mw-collapsible-toggle {
float: right;
+ -moz-user-select: none;
+ -webkit-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
}
/* collapse links in captions should be inline */
// Get the original values of some form elements
$( '#wpTextbox1, #wpSummary' ).each( function () {
$( this ).data( 'origtext', $( this ).val() );
- });
+ } );
var savedWindowOnBeforeUnload;
$( window )
.on( 'beforeunload.editwarning', function () {
// update from from the ajax-loaded preview page.
copySelectors = [
// Main
+ '#firstHeading',
'#wikiPreview',
'#wikiDiff',
'#catlinks',
$spinner = $.createSpinner( {
size: 'large',
type: 'block'
- });
+ } );
$wikiPreview.before( $spinner );
$spinner.css( {
marginTop: $spinner.height()
$lis
.removeClass( 'selected' )
.each( function () {
- var $li = $(this),
+ var $li = $( this ),
$inputs = $li.find( 'input[type="radio"]' ),
- $oldidRadio = $inputs.filter( '[name="oldid"]' ).eq(0),
- $diffRadio = $inputs.filter( '[name="diff"]' ).eq(0);
+ $oldidRadio = $inputs.filter( '[name="oldid"]' ).eq( 0 ),
+ $diffRadio = $inputs.filter( '[name="diff"]' ).eq( 0 );
if ( !$oldidRadio.length || !$diffRadio.length ) {
return true;
$oldidRadio.css( 'visibility', 'hidden' );
}
}
- });
+ } );
return true;
}
// Ideally we'd use e.target instead of $historySubmitter, but e.target points
// to the form element for submit actions, so.
$historyCompareForm.find( '.historysubmit' ).click( function () {
- $historySubmitter = $(this);
+ $historySubmitter = $( this );
} );
// On submit we clone the form element, remove unneeded fields in the clone
if ( $historySubmitter ) {
$copyForm = $historyCompareForm.clone();
$copyRadios = $copyForm.find( '#pagehistory > li' ).find( 'input[name="diff"], input[name="oldid"]' );
- $copyAction = $copyForm.find( '> [name="action"]');
+ $copyAction = $copyForm.find( '> [name="action"]' );
// Remove action=historysubmit and ids[..]=..
if ( $historySubmitter.hasClass( 'mw-history-compareselectedversions-button' ) ) {
// Also remove potentially conflicting id attributes that we don't need anyway
$copyForm
.css( 'display', 'none' )
- .find('[id]')
- .removeAttr('id')
+ .find( '[id]' )
+ .removeAttr( 'id' )
.end()
.insertAfter( $historyCompareForm )
.submit();
$link = $( '<a>', {
text: showText,
href: '#'
- }).click(function () {
+ } ).click( function () {
if ( $table.hasClass( 'collapsed' ) ) {
$( this ).text( hideText );
} else {
}
$table.toggleClass( 'expanded collapsed' );
return false;
- });
+ } );
$col.append( $link );
$row.append( $col );
--- /dev/null
+/**
+ * JavaScript to scroll the page to an id, when a redirect with fragment is viewed.
+ */
+( function ( mw, $ ) {
+ var profile = $.client.profile(),
+ fragment = mw.config.get( 'wgRedirectToFragment' );
+
+ if ( fragment === null ) {
+ // nothing to do
+ return;
+ }
+
+ if ( profile.layout === 'webkit' && profile.layoutVersion < 420 ) {
+ // Released Safari w/ WebKit 418.9.1 messes up horribly
+ // Nightlies of 420+ are ok
+ return;
+ }
+ if ( !window.location.hash ) {
+ window.location.hash = fragment;
+
+ // Mozilla needs to wait until after load, otherwise the window doesn't
+ // scroll. See <https://bugzilla.mozilla.org/show_bug.cgi?id=516293>.
+ // There's no obvious way to detect this programmatically, so we use
+ // version-testing. If Firefox fixes the bug, they'll jump twice, but
+ // better twice than not at all, so make the fix hit future versions as
+ // well.
+ if ( profile.layout === 'gecko' ) {
+ $( function () {
+ if ( window.location.hash === fragment ) {
+ window.location.hash = fragment;
+ }
+ } );
+ }
+ }
+}( mediaWiki, jQuery ) );
} );
}
d.resolve( exists );
- })
+ } )
.fail( d.reject );
return d.promise( { abort: apiPromise.abort } );
apiPromise = this.get( {
list: 'allpages',
apprefix: prefix,
- apnamespace: mw.config.get('wgNamespaceIds').category
+ apnamespace: mw.config.get( 'wgNamespaceIds' ).category
} )
.done( function ( data ) {
var texts = [];
} );
}
d.resolve( texts );
- })
+ } )
.fail( d.reject );
return d.promise( { abort: apiPromise.abort } );
-/**
+/*!
* Bosnian (bosanski) language functions
*/
-/**
+/*!
* Lower Sorbian (Dolnoserbski) language functions
*/
-/**
- * Finnish (Suomi) language functions
- * @author Santhosh Thottingal
+/*!
+ * Finnish (Suomi) language functions
+ * @author Santhosh Thottingal
*/
mediaWiki.language.convertGrammar = function ( word, form ) {
-/**
+/*!
* Irish (Gaeilge) language functions
*/
-/**
+/*!
* Hebrew (עברית) language functions
*/
-mediaWiki.language.convertGrammar = function( word, form ) {
+mediaWiki.language.convertGrammar = function ( word, form ) {
var grammarForms = mediaWiki.language.getData( 'he', 'grammarForms' );
if ( grammarForms && grammarForms[form] ) {
return grammarForms[form][word];
-/**
+/*!
* Upper Sorbian (Hornjoserbsce) language functions
*/
-/**
- * Hungarian language functions
- * @author Santhosh Thottingal
+/*!
+ * Hungarian language functions
+ * @author Santhosh Thottingal
*/
mediaWiki.language.convertGrammar = function ( word, form ) {
-/**
+/*!
* Armenian (Հայերեն) language functions
*/
-/**
+/*!
* Latin (lingua Latina) language functions
* @author Santhosh Thottingal
*/
-/**
+/*!
* Ossetian (Ирон) language functions
* @author Santhosh Thottingal
*/
-
mediaWiki.language.convertGrammar = function ( word, form ) {
var grammarForms = mediaWiki.language.getData( 'os', 'grammarForms' ),
// Ending for allative case
-/**
+/*!
* Russian (Русский) language functions
*/
-/**
+/*!
* Slovenian (Slovenščina) language functions
*/
-/**
+/*!
* Ukrainian (Українська) language functions
*/
-/**
- * CLDR related utility methods.
- */
( function ( mw ) {
'use strict';
- var cldr = {
+ /**
+ * Namespace for CLDR-related utility methods.
+ *
+ * @class
+ * @singleton
+ */
+ mw.cldr = {
/**
- * For the number, get the plural for index
- * In case none of the rules passed, we return pluralRules.length
- * That means it is the "other" form.
- * @param number
+ * Get the plural form index for the number.
+ *
+ * In case none of the rules passed, we return `pluralRules.length` -
+ * that means it is the "other" form.
+ *
+ * @param {number} number
* @param {Array} pluralRules
* @return {number} plural form index
*/
}
};
- mw.cldr = cldr;
-
}( mediaWiki ) );
-/**
- * Base language object with methods for storing and getting
- * language data.
- */
( function ( mw ) {
-
- var language = {
+ /**
+ * Base language object with methods related to language support, attempting to mirror some of the
+ * functionality of the Language class in MediaWiki:
+ *
+ * - storing and retrieving language data
+ * - transforming message syntax (`{{PLURAL:}}`, `{{GRAMMAR:}}`, `{{GENDER:}}`)
+ * - formatting numbers
+ *
+ * @class
+ * @singleton
+ */
+ mw.language = {
/**
- * @var data {Object} Language related data (keyed by language,
- * contains instances of mw.Map).
- * @example Set data
- * <code>
+ * Language-related data (keyed by language, contains instances of mw.Map). Loaded dynamically
+ * (see ResourceLoaderLanguageDataModule in PHP docs, aka mediawiki.language.data module).
+ *
+ * To set data:
+ *
* // Override, extend or create the language data object of 'nl'
* mw.language.setData( 'nl', 'myKey', 'My value' );
*
* // Set multiple values at once
- * mw.language.setData( 'nl', { 'foo': 'X', 'bar': 'Y' } );
- * </code>
- * @example Get GrammarForms data for language 'nl':
- * <code>
+ * mw.language.setData( 'nl', { foo: 'X', bar: 'Y' } );
+ *
+ * To get GrammarForms data for language 'nl':
+ *
* var grammarForms = mw.language.getData( 'nl', 'grammarForms' );
- * </code>
+ *
+ * Possible data keys:
+ *
+ * - `digitTransformTable`
+ * - `separatorTransformTable`
+ * - `grammarForms`
+ * - `pluralRules`
+ * - `digitGroupingPattern`
+ *
+ * @property
*/
data: {},
/**
- * Convenience method for retreiving language data by language code and data key,
- * covering for the potential inexistance of a data object for this langiage.
- * @param langCode {String}
- * @param dataKey {String}
- * @return {mixed} Value stored in the mw.Map (or undefined if there is no map for
- the specified langCode).
+ * Convenience method for retrieving language data.
+ *
+ * Structured by language code and data key, covering for the potential inexistence of a
+ * data object for this language.
+ *
+ * @param {string} langCode
+ * @param {string} dataKey
+ * @return {Mixed} Value stored in the mw.Map (or `undefined` if there is no map for the specified
+ * langCode).
*/
getData: function ( langCode, dataKey ) {
- var langData = language.data;
+ var langData = mw.language.data;
if ( langData && langData[langCode] instanceof mw.Map ) {
return langData[langCode].get( dataKey );
}
},
/**
- * Convenience method for setting language data by language code and data key.
+ * Convenience method for setting language data.
+ *
* Creates the data mw.Map if there isn't one for the specified language already.
*
- * @param langCode {String}
- * @param dataKey {String|Object} Key or object of key/values.
- * @param value {mixed} Value for dataKey, ignored if dataKey is an object.
+ * @param {string} langCode
+ * @param {string|Object} dataKey Key or object of key/values.
+ * @param {Mixed} value Value for dataKey, ignored if dataKey is an object.
*/
setData: function ( langCode, dataKey, value ) {
- var langData = language.data;
+ var langData = mw.language.data;
if ( !( langData[langCode] instanceof mw.Map ) ) {
langData[langCode] = new mw.Map();
}
}
};
- mw.language = language;
-
}( mediaWiki ) );
-/**
- * Localized Language support attempts to mirror some of the functionality of
- * Language.php in MediaWiki.
- * This adds methods for transforming message text.
+/*
+ * Methods for transforming message syntax.
*/
( function ( mw, $ ) {
-var language = {
+/**
+ * @class mw.language
+ */
+$.extend( mw.language, {
/**
* Process the PLURAL template substitution
*
- * @param {object} template Template object
- * @format template
- * {
- * 'title': [title of template],
- * 'parameters': [template parameters]
- * }
- * @example {{Template:title|params}}
+ * @private
+ * @param {Object} template Template object
+ * @param {string} template.title
+ * @param {Array} template.parameters
+ * @return {string}
*/
procPLURAL: function ( template ) {
if ( template.title && template.parameters && mw.language.convertPlural ) {
/**
* Plural form transformations, needed for some languages.
*
- * @param count integer Non-localized quantifier
- * @param forms array List of plural forms
- * @return string Correct form for quantifier in this language
+ * @param {number} count Non-localized quantifier
+ * @param {Array} forms List of plural forms
+ * @return {string} Correct form for quantifier in this language
*/
convertPlural: function ( count, forms ) {
var pluralRules,
/**
* Pads an array to a specific length by copying the last one element.
*
- * @param forms array Number of forms given to convertPlural
- * @param count integer Number of forms required
- * @return array Padded array of forms
+ * @private
+ * @param {Array} forms Number of forms given to convertPlural
+ * @param {number} count Number of forms required
+ * @return {Array} Padded array of forms
*/
preConvertPlural: function ( forms, count ) {
while ( forms.length < count ) {
/**
* Provides an alternative text depending on specified gender.
- * Usage {{gender:[gender|user object]|masculine|feminine|neutral}}.
+ *
+ * Usage in message text: `{{gender:[gender|user object]|masculine|feminine|neutral}}`.
* If second or third parameter are not specified, masculine is used.
*
* These details may be overriden per language.
*
- * @param gender string male, female, or anything else for neutral.
- * @param forms array List of gender forms
- *
+ * @param {string} gender 'male', 'female', or anything else for neutral.
+ * @param {Array} forms List of gender forms
* @return string
*/
gender: function ( gender, forms ) {
/**
* Grammatical transformations, needed for inflected languages.
- * Invoked by putting {{grammar:form|word}} in a message.
- * The rules can be defined in $wgGrammarForms global or grammar
- * forms can be computed dynamically by overriding this method per language
+ * Invoked by putting `{{grammar:form|word}}` in a message.
+ *
+ * The rules can be defined in $wgGrammarForms global or computed
+ * dynamically by overriding this method per language.
*
- * @param word {String}
- * @param form {String}
- * @return {String}
+ * @param {string} word
+ * @param {string} form
+ * @return {string}
*/
convertGrammar: function ( word, form ) {
var grammarForms = mw.language.getData( mw.config.get( 'wgUserLanguage' ), 'grammarForms' );
return word;
}
-};
-
-$.extend( mw.language, language );
+} );
}( mediaWiki, jQuery ) );
-/**
+/*
* Transfer of month names from messages into mw.language.
*
* Loading this module also ensures the availability of appropriate messages via mw.msg.
* Information about month names in current UI language.
*
* Object keys:
+ *
* - `names`: array of month names (in nominative case in languages which have the distinction),
* zero-indexed
* - `genitive`: array of month names in genitive case, zero-indexed
* for appropriate messages which can be passed to mw.msg.
*
* @property
+ * @member mw.language
*/
mw.language.months = {
keys: {
/*
- * Number related utilities for mediawiki.language
+ * Number-related utilities for mediawiki.language.
*/
( function ( mw, $ ) {
+ /**
+ * @class mw.language
+ */
/**
* Pad a string to guarantee that it is at least `size` length by
* filling with the character `ch` at either the start or end of the
* string. Pads at the start, by default.
- * example:
- * Fill the string to length 10 with '+' characters on the right. Yields 'blah++++++'.
- * pad('blah', 10, '+', true);
*
+ * Example: Fill the string to length 10 with '+' characters on the right.
+ *
+ * pad('blah', 10, '+', true); // => 'blah++++++'
+ *
+ * @private
* @param {string} text The string to pad
- * @param {Number} size To provide padding
- * @param {string} ch Character to pad, defaults to '0'
- * @param {Boolean} end Adds padding at the end if true, otherwise pads at start
+ * @param {number} size The length to pad to
+ * @param {string} [ch='0'] Character to pad with
+ * @param {boolean} [end=false] Adds padding at the end if true, otherwise pads at start
* @return {string}
*/
- function pad ( text, size, ch, end ) {
+ function pad( text, size, ch, end ) {
if ( !ch ) {
ch = '0';
}
}
/**
- * Efficiently replicate a string n times.
+ * Efficiently replicate a string `n` times.
*
+ * @private
* @param {string} str The string to replicate
- * @param {Number} num Number of times to replicate the string
+ * @param {number} num Number of times to replicate the string
* @return {string}
*/
- function replicate ( str, num ) {
+ function replicate( str, num ) {
if ( num <= 0 || !str ) {
return '';
}
* Adapted from dojo/number library with thanks
* http://dojotoolkit.org/reference-guide/1.8/dojo/number.html
*
- * @param {Number} value the number to be formatted, ignores sign
+ * @private
+ * @param {number} value the number to be formatted, ignores sign
* @param {string} pattern the number portion of a pattern (e.g. `#,##0.00`)
- * @param {string} options.decimalThe decimal separator
- * @param {string} options.group The group separator
- *
+ * @param {Object} [options] If provided, both option keys must be present:
+ * @param {string} options.decimal The decimal separator. Defaults to: `'.'`.
+ * @param {string} options.group The group separator. Defaults to: `','`.
* @return {string}
*/
function commafyNumber( value, pattern, options ) {
$.extend( mw.language, {
/**
- * Converts a number using digitTransformTable.
+ * Converts a number using #getDigitTransformTable.
*
- * @param {Number} num Value to be converted
- * @param {boolean} integer Convert the return value to an integer
- * @return {Number|string} Formatted number
+ * @param {number} num Value to be converted
+ * @param {boolean} [integer=false] Whether to convert the return value to an integer
+ * @return {number|string} Formatted number
*/
convertNumber: function ( num, integer ) {
var i, tmp, transformTable, numberString, convertedNumber, pattern;
return integer ? parseInt( convertedNumber, 10 ) : convertedNumber;
},
+ /**
+ * Get the digit transform table for current UI language.
+ * @return {Object|Array}
+ */
getDigitTransformTable: function () {
return mw.language.getData( mw.config.get( 'wgUserLanguage' ),
'digitTransformTable' ) || [];
},
+ /**
+ * Get the separator transform table for current UI language.
+ * @return {Object|Array}
+ */
getSeparatorTransformTable: function () {
return mw.language.getData( mw.config.get( 'wgUserLanguage' ),
'separatorTransformTable' ) || [];
},
/**
- * Apply pattern to format value as a string using as per
- * unicode.org TR35 - http://www.unicode.org/reports/tr35/#Number_Format_Patterns.
+ * Apply pattern to format value as a string.
+ *
+ * Using patterns from [Unicode TR35](http://www.unicode.org/reports/tr35/#Number_Format_Patterns).
*
- * @param {Number} value
+ * @param {number} value
* @param {string} pattern Pattern string as described by Unicode TR35
- * @throws Error
- * @returns {String}
+ * @throws {Error} If unable to find a number expression in `pattern`.
+ * @return {string}
*/
commafy: function ( value, pattern ) {
var numberPattern,
background-image: url(@url);
}
+.vertical-gradient ( @startColor: gray, @endColor: white, @startPos: 0, @endPos: 100% ) {
+ background-color: @endColor;
+ background-image: -moz-linear-gradient( top, @startColor @startPos, @endColor @endPos ); // Firefox 3.6+
+ background-image: -webkit-gradient( linear, left top, left bottom, color-stop( @startPos, @startColor ), color-stop( @endPos, @endColor ) ); // Safari 4+, Chrome 2+
+ background-image: -webkit-linear-gradient( top, @startColor @startPos, @endColor @endPos ); // Safari 5.1+, Chrome 10+
+ background-image: linear-gradient( @startColor @startPos, @endColor @endPos ); // Standard
+}
+
/* Note gzip compression means that it is okay to embed twice */
.background-image-svg(@svg, @fallback) {
background-image: url(@fallback);
-webkit-transition: @string;
transition: @string;
}
+
+@-webkit-keyframes rotate {
+ from {
+ -webkit-transform:rotate(0deg);
+ }
+ to {
+ -webkit-transform:rotate(360deg);
+ }
+}
+
+@keyframes rotate {
+ from {
+ transform: rotate(0deg);
+ }
+ to {
+ transform: rotate(360deg);
+ }
+}
+
+.rotation(@time) {
+ -webkit-animation-name: rotate;
+ -webkit-animation-duration: @time;
+ -webkit-animation-iteration-count: infinite;
+ -webkit-animation-timing-function: linear;
+ animation-name: rotate;
+ animation-duration: @time;
+ animation-iteration-count: infinite;
+ animation-timing-function: linear;
+}
-/* This is cldrpluralparser 1.0, ported to MediaWiki ResourceLoader */
+/* This is CLDRPluralRuleParser v1.1, ported to MediaWiki ResourceLoader */
/**
-* cldrpluralparser.js
+* CLDRPluralRuleParser.js
* A parser engine for CLDR plural rules.
*
* Copyright 2012 GPLV3+, Santhosh Thottingal
* @author Amir Aharoni
*/
+( function ( mw ) {
/**
* Evaluates a plural rule in CLDR syntax for a number
- * @param rule
- * @param number
- * @return true|false|null
+ * @param {string} rule
+ * @param {integer} number
+ * @return {boolean} true if evaluation passed, false if evaluation failed.
*/
-( function( mw ) {
function pluralRuleParser(rule, number) {
/*
Syntax: see http://unicode.org/reports/tr35/#Language_Plural_Rules
-----------------------------------------------------------------
-
condition = and_condition ('or' and_condition)*
+ ('@integer' samples)?
+ ('@decimal' samples)?
and_condition = relation ('and' relation)*
- relation = is_relation | in_relation | within_relation | 'n' <EOL>
+ relation = is_relation | in_relation | within_relation
is_relation = expr 'is' ('not')? value
- in_relation = expr ('not')? 'in' range_list
+ in_relation = expr (('not')? 'in' | '=' | '!=') range_list
within_relation = expr ('not')? 'within' range_list
- expr = 'n' ('mod' value)?
+ expr = operand (('mod' | '%') value)?
+ operand = 'n' | 'i' | 'f' | 't' | 'v' | 'w'
range_list = (range | value) (',' range_list)*
value = digit+
digit = 0|1|2|3|4|5|6|7|8|9
range = value'..'value
-
+ samples = sampleRange (',' sampleRange)* (',' ('…'|'...'))?
+ sampleRange = decimalValue '~' decimalValue
+ decimalValue = value ('.' value)?
*/
+
+ // we don't evaluate the samples section of the rule. Ignore it.
+ rule = rule.split('@')[0].trim();
+
+ if (!rule.length) {
+ // empty rule or 'other' rule.
+ return true;
+ }
// Indicates current position in the rule as we parse through it.
// Shared among all parsing functions below.
- var pos = 0;
-
- var whitespace = makeRegexParser(/^\s+/);
- var digits = makeRegexParser(/^\d+/);
-
- var _n_ = makeStringParser('n');
- var _is_ = makeStringParser('is');
- var _mod_ = makeStringParser('mod');
- var _not_ = makeStringParser('not');
- var _in_ = makeStringParser('in');
- var _within_ = makeStringParser('within');
- var _range_ = makeStringParser('..');
- var _comma_ = makeStringParser(',');
- var _or_ = makeStringParser('or');
- var _and_ = makeStringParser('and');
+ var pos = 0,
+ operand,
+ expression,
+ relation,
+ result,
+ whitespace = makeRegexParser(/^\s+/),
+ value = makeRegexParser(/^\d+/),
+ _n_ = makeStringParser('n'),
+ _i_ = makeStringParser('i'),
+ _f_ = makeStringParser('f'),
+ _t_ = makeStringParser('t'),
+ _v_ = makeStringParser('v'),
+ _w_ = makeStringParser('w'),
+ _is_ = makeStringParser('is'),
+ _isnot_ = makeStringParser('is not'),
+ _isnot_sign_ = makeStringParser('!='),
+ _equal_ = makeStringParser('='),
+ _mod_ = makeStringParser('mod'),
+ _percent_ = makeStringParser('%'),
+ _not_ = makeStringParser('not'),
+ _in_ = makeStringParser('in'),
+ _within_ = makeStringParser('within'),
+ _range_ = makeStringParser('..'),
+ _comma_ = makeStringParser(','),
+ _or_ = makeStringParser('or'),
+ _and_ = makeStringParser('and');
function debug() {
- /* console.log.apply(console, arguments);*/
+ // console.log.apply(console, arguments);
}
debug('pluralRuleParser', rule, number);
// Try parsers until one works, if none work return null
+
function choice(parserSyntax) {
- return function () {
+ return function() {
for (var i = 0; i < parserSyntax.length; i++) {
var result = parserSyntax[i]();
if (result !== null) {
// Try several parserSyntax-es in a row.
// All must succeed; otherwise, return null.
// This is the only eager one.
+
function sequence(parserSyntax) {
var originalPos = pos;
var result = [];
// Run the same parser over and over until it fails.
// Must succeed a minimum of n times; otherwise, return null.
+
function nOrMore(n, p) {
- return function () {
+ return function() {
var originalPos = pos;
var result = [];
var parsed = p();
}
// Helpers -- just make parserSyntax out of simpler JS builtin types
-
function makeStringParser(s) {
var len = s.length;
- return function () {
+ return function() {
var result = null;
if (rule.substr(pos, len) === s) {
result = s;
pos += len;
}
+
return result;
};
}
function makeRegexParser(regex) {
- return function () {
+ return function() {
var matches = rule.substr(pos).match(regex);
if (matches === null) {
return null;
};
}
+ /*
+ * integer digits of n.
+ */
+ function i() {
+ var result = _i_();
+ if (result === null) {
+ debug(' -- failed i', parseInt(number, 10));
+ return result;
+ }
+ result = parseInt(number, 10);
+ debug(' -- passed i ', result);
+ return result;
+ }
+
+ /*
+ * absolute value of the source number (integer and decimals).
+ */
function n() {
var result = _n_();
if (result === null) {
- debug(" -- failed n");
+ debug(' -- failed n ', number);
return result;
}
- result = parseInt(number, 10);
- debug(" -- passed n ", result);
+ result = parseFloat(number, 10);
+ debug(' -- passed n ', result);
+ return result;
+ }
+
+ /*
+ * visible fractional digits in n, with trailing zeros.
+ */
+ function f() {
+ var result = _f_();
+ if (result === null) {
+ debug(' -- failed f ', number);
+ return result;
+ }
+ result = (number + '.').split('.')[1] || 0;
+ debug(' -- passed f ', result);
+ return result;
+ }
+
+ /*
+ * visible fractional digits in n, without trailing zeros.
+ */
+ function t() {
+ var result = _t_();
+ if (result === null) {
+ debug(' -- failed t ', number);
+ return result;
+ }
+ result = (number + '.').split('.')[1].replace(/0$/, '') || 0;
+ debug(' -- passed t ', result);
+ return result;
+ }
+
+ /*
+ * number of visible fraction digits in n, with trailing zeros.
+ */
+ function v() {
+ var result = _v_();
+ if (result === null) {
+ debug(' -- failed v ', number);
+ return result;
+ }
+ result = (number + '.').split('.')[1].length || 0;
+ debug(' -- passed v ', result);
+ return result;
+ }
+
+ /*
+ * number of visible fraction digits in n, without trailing zeros.
+ */
+ function w() {
+ var result = _w_();
+ if (result === null) {
+ debug(' -- failed w ', number);
+ return result;
+ }
+ result = (number + '.').split('.')[1].replace(/0$/, '').length || 0;
+ debug(' -- passed w ', result);
return result;
}
- var expression = choice([mod, n]);
+ // operand = 'n' | 'i' | 'f' | 't' | 'v' | 'w'
+ operand = choice([n, i, f, t, v, w]);
+
+ // expr = operand (('mod' | '%') value)?
+ expression = choice([mod, operand]);
function mod() {
- var result = sequence([n, whitespace, _mod_, whitespace, digits]);
+ var result = sequence([operand, whitespace, choice([_mod_, _percent_]), whitespace, value]);
if (result === null) {
- debug(" -- failed mod");
+ debug(' -- failed mod');
return null;
}
- debug(" -- passed mod");
+ debug(' -- passed ' + parseInt(result[0], 10) + ' ' + result[2] + ' ' + parseInt(result[4], 10));
return parseInt(result[0], 10) % parseInt(result[4], 10);
}
function not() {
var result = sequence([whitespace, _not_]);
if (result === null) {
- debug(" -- failed not");
+ debug(' -- failed not');
return null;
- } else {
- return result[1];
}
+
+ return result[1];
}
+ // is_relation = expr 'is' ('not')? value
function is() {
- var result = sequence([expression, whitespace, _is_, nOrMore(0, not), whitespace, digits]);
+ var result = sequence([expression, whitespace, choice([_is_]), whitespace, value]);
if (result !== null) {
- debug(" -- passed is");
- if (result[3][0] === 'not') {
- return result[0] !== parseInt(result[5], 10);
- } else {
- return result[0] === parseInt(result[5], 10);
+ debug(' -- passed is : ' + result[0] + ' == ' + parseInt(result[4], 10));
+ return result[0] === parseInt(result[4], 10);
+ }
+ debug(' -- failed is');
+ return null;
+ }
+
+ // is_relation = expr 'is' ('not')? value
+ function isnot() {
+ var result = sequence([expression, whitespace, choice([_isnot_, _isnot_sign_]), whitespace, value]);
+ if (result !== null) {
+ debug(' -- passed isnot: ' + result[0] + ' != ' + parseInt(result[4], 10));
+ return result[0] !== parseInt(result[4], 10);
+ }
+ debug(' -- failed isnot');
+ return null;
+ }
+
+ function not_in() {
+ var result = sequence([expression, whitespace, _isnot_sign_, whitespace, rangeList]);
+ if (result !== null) {
+ debug(' -- passed not_in: ' + result[0] + ' != ' + result[4]);
+ var range_list = result[4];
+ for (var i = 0; i < range_list.length; i++) {
+ if (parseInt(range_list[i], 10) === parseInt(result[0], 10)) {
+ return false;
+ }
}
+ return true;
}
- debug(" -- failed is");
+ debug(' -- failed not_in');
return null;
}
+ // range_list = (range | value) (',' range_list)*
function rangeList() {
- // range_list = (range | value) (',' range_list)*
- var result = sequence([choice([range, digits]), nOrMore(0, rangeTail)]);
+ var result = sequence([choice([range, value]), nOrMore(0, rangeTail)]);
var resultList = [];
if (result !== null) {
- resultList = resultList.concat(result[0], result[1][0]);
+ resultList = resultList.concat(result[0]);
+ if (result[1][0]) {
+ resultList = resultList.concat(result[1][0]);
+ }
return resultList;
}
- debug(" -- failed rangeList");
+ debug(' -- failed rangeList');
return null;
}
if (result !== null) {
return result[1];
}
- debug(" -- failed rangeTail");
+ debug(' -- failed rangeTail');
return null;
}
+ // range = value'..'value
+
function range() {
var i;
- var result = sequence([digits, _range_, digits]);
+ var result = sequence([value, _range_, value]);
if (result !== null) {
- debug(" -- passed range");
+ debug(' -- passed range');
var array = [];
var left = parseInt(result[0], 10);
var right = parseInt(result[2], 10);
- for ( i = left; i <= right; i++) {
+ for (i = left; i <= right; i++) {
array.push(i);
}
return array;
}
- debug(" -- failed range");
+ debug(' -- failed range');
return null;
}
function _in() {
// in_relation = expr ('not')? 'in' range_list
- var result = sequence([expression, nOrMore(0, not), whitespace, _in_, whitespace, rangeList]);
+ var result = sequence([expression, nOrMore(0, not), whitespace, choice([_in_, _equal_]), whitespace, rangeList]);
if (result !== null) {
- debug(" -- passed _in");
+ debug(' -- passed _in:' + result);
var range_list = result[5];
for (var i = 0; i < range_list.length; i++) {
- if (parseInt(range_list[i], 10) === result[0]) {
+ if (parseInt(range_list[i], 10) === parseInt(result[0], 10)) {
return (result[1][0] !== 'not');
}
}
return (result[1][0] === 'not');
}
- debug(" -- failed _in ");
+ debug(' -- failed _in ');
return null;
}
+ /*
+ * The difference between in and within is that in only includes integers in the specified range,
+ * while within includes all values.
+ */
+
function within() {
- var result = sequence([expression, whitespace, _within_, whitespace, rangeList]);
+ // within_relation = expr ('not')? 'within' range_list
+ var result = sequence([expression, nOrMore(0, not), whitespace, _within_, whitespace, rangeList]);
if (result !== null) {
- debug(" -- passed within ");
- var range_list = result[4];
- return (parseInt( range_list[0],10 )<= result[0] && result[0] <= parseInt( range_list[1], 10));
+ debug(' -- passed within');
+ var range_list = result[5];
+ if ((result[0] >= parseInt(range_list[0], 10)) &&
+ (result[0] < parseInt(range_list[range_list.length - 1], 10))) {
+ return (result[1][0] !== 'not');
+ }
+ return (result[1][0] === 'not');
}
- debug(" -- failed within ");
+ debug(' -- failed within ');
return null;
}
+ // relation = is_relation | in_relation | within_relation
+ relation = choice([is, not_in, isnot, _in, within]);
- var relation = choice([is, _in, within]);
-
+ // and_condition = relation ('and' relation)*
function and() {
- var result = sequence([relation, whitespace, _and_, whitespace, condition]);
+ var result = sequence([relation, nOrMore(0, andTail)]);
if (result) {
- debug(" -- passed and");
- return result[0] && result[4];
+ if (!result[0]) {
+ return false;
+ }
+ for (var i = 0; i < result[1].length; i++) {
+ if (!result[1][i]) {
+ return false;
+ }
+ }
+ return true;
}
- debug(" -- failed and");
+ debug(' -- failed and');
return null;
}
- function or() {
- var result = sequence([relation, whitespace, _or_, whitespace, condition]);
- if (result) {
- debug(" -- passed or");
- return result[0] || result[4];
+ // ('and' relation)*
+ function andTail() {
+ var result = sequence([whitespace, _and_, whitespace, relation]);
+ if (result !== null) {
+ debug(' -- passed andTail' + result);
+ return result[3];
}
- debug(" -- failed or");
+ debug(' -- failed andTail');
return null;
- }
- var condition = choice([and, or, relation]);
+ }
+ // ('or' and_condition)*
+ function orTail() {
+ var result = sequence([whitespace, _or_, whitespace, and]);
+ if (result !== null) {
+ debug(' -- passed orTail: ' + result[3]);
+ return result[3];
+ }
+ debug(' -- failed orTail');
+ return null;
- function isInt(n) {
- return parseFloat(n) % 1 === 0;
}
+ // condition = and_condition ('or' and_condition)*
+ function condition() {
+ var result = sequence([and, nOrMore(0, orTail)]);
+ if (result) {
+ for (var i = 0; i < result[1].length; i++) {
+ if (result[1][i]) {
+ return true;
+ }
+ }
+ return result[0];
- function start() {
- if (!isInt(number)) {
- return false;
}
- var result = condition();
- return result;
+ return false;
}
-
- var result = start();
-
+ result = condition();
/*
* For success, the pos must have gotten to the end of the rule
* and returned a non-null.
* n.b. This is part of language infrastructure, so we do not throw an internationalizable message.
*/
- if (result === null || pos !== rule.length) {
- // throw new Error("Parse error at position " + pos.toString() + " in input: " + rule + " result is " + result);
+ if (result === null) {
+ throw new Error('Parse error at position ' + pos.toString() + ' for rule: ' + rule);
}
- return result;
-}
+ if (pos !== rule.length) {
+ debug('Warning: Rule not parsed completely. Parser stopped at ' + rule.substr(0, pos) + ' for rule: ' + rule);
+ }
-/* For module loaders, e.g. NodeJS, NPM */
-if (typeof module !== 'undefined' && module.exports) {
- module.exports = pluralRuleParser;
+ return result;
}
/* pluralRuleParser ends here */
// Now on to justification.
// We may still get ragged edges if someone resizes their window. Could bind to
// that event, otoh do we really want to constantly be resizing galleries?
- $( galleries ).each( function() {
+ $( galleries ).each( function () {
var lastTop,
$img,
imgWidth,
rows = [],
$gallery = $( this );
- $gallery.children( 'li' ).each( function() {
+ $gallery.children( 'li' ).each( function () {
// Math.floor to be paranoid if things are off by 0.00000000001
- var top = Math.floor( $(this ).position().top ),
+ var top = Math.floor( $( this ).position().top ),
$this = $( this );
if ( top !== lastTop ) {
captionWidth: $this.children().children( 'div.gallerytextwrapper' ).width(),
height: imgHeight
};
- });
+ } );
- (function () {
+ ( function () {
var maxWidth,
combinedAspect,
combinedPadding,
$outerDiv.width( newWidth + padding );
$innerDiv.width( newWidth + padding );
$imageDiv.width( newWidth );
- $caption.width( curRow[j].captionWidth + (newWidth - curRow[j].imgWidth ) );
+ $caption.width( curRow[j].captionWidth + ( newWidth - curRow[j].imgWidth ) );
}
hookInfo = {
* without a page reload. Currently, the only image formats that can be multi-page images are
* PDF and DjVu files
*/
-( function (mw, $) {
+( function ( mw, $ ) {
// Initialize ajax request variable
var xhr;
} );
}
- $( document ).ready( function() {
+ $( document ).ready( function () {
// The presence of table.multipageimage signifies that this file is a multi-page image
if ( mw.config.get( 'wgNamespaceNumber' ) === 6 && $( 'table.multipageimage' ).length !== 0 ) {
ajaxifyPageNavigation();
if ( state ) {
loadPage( state.url, true );
}
- });
+ } );
}
}
} );
--- /dev/null
+/**
+ * Styling for Special:Block
+ */
+
+label[for="mw-input-wpConfirm"] {
+ font-weight: bold;
+}
.mw-changeslist-line-watched .mw-title {
font-weight: bold;
}
-
-.mw-changeslist-legend {
- float: right;
- margin-left: 1em;
- margin-bottom: 0.5em;
- clear: right;
- font-size: 85%;
- line-height: 1.2em;
- padding: 0.5em;
- border: 1px solid #ddd;
-}
-
-.mw-changeslist-legend dl {
- /* Parent element defines sufficient padding */
- margin-bottom: 0;
-}
-
-.mw-changeslist-legend dt {
- float: left;
-}
-
-.mw-changeslist-legend dd {
- margin-left: 1.5em;
- line-height: 1.3em;
-}
-
-.mw-changeslist-legend dd.mw-changeslist-legend-plusminus {
- margin-left: 3.5em;
-}
+++ /dev/null
-/* Remember the collapse state of the legend on recent changes and watchlist pages. */
-jQuery( document ).ready( function ( $ ) {
- var
- cookieName = 'changeslist-state',
- cookieOptions = {
- expires: 30,
- path: '/'
- },
- isCollapsed = $.cookie( cookieName ) === 'collapsed';
-
- $( '.mw-changeslist-legend' )
- .makeCollapsible( {
- collapsed: isCollapsed
- } )
- .on( 'beforeExpand.mw-collapsible', function () {
- $.cookie( cookieName, 'expanded', cookieOptions );
- } )
- .on( 'beforeCollapse.mw-collapsible', function () {
- $.cookie( cookieName, 'collapsed', cookieOptions );
- } );
-} );
--- /dev/null
+/**
+ * Styling for changes list legend
+ */
+
+.mw-changeslist-legend {
+ float: right;
+ margin-left: 1em;
+ margin-bottom: 0.5em;
+ clear: right;
+ font-size: 85%;
+ line-height: 1.2em;
+ padding: 0.5em;
+ border: 1px solid #ddd;
+}
+
+.mw-changeslist-legend dl {
+ /* Parent element defines sufficient padding */
+ margin-bottom: 0;
+}
+
+.mw-changeslist-legend dt {
+ float: left;
+ margin-right: 0.5em;
+}
+
+.mw-changeslist-legend dd {
+ margin-left: 1.5em;
+ line-height: 1.3em;
+}
--- /dev/null
+/**
+ * Script for changes list legend
+ */
+
+/* Remember the collapse state of the legend on recent changes and watchlist pages. */
+jQuery( document ).ready( function ( $ ) {
+ var
+ cookieName = 'changeslist-state',
+ cookieOptions = {
+ expires: 30,
+ path: '/'
+ },
+ isCollapsed = $.cookie( cookieName ) === 'collapsed';
+
+ $( '.mw-changeslist-legend' )
+ .makeCollapsible( {
+ collapsed: isCollapsed
+ } )
+ .on( 'beforeExpand.mw-collapsible', function () {
+ $.cookie( cookieName, 'expanded', cookieOptions );
+ } )
+ .on( 'beforeCollapse.mw-collapsible', function () {
+ $.cookie( cookieName, 'collapsed', cookieOptions );
+ } );
+} );
margin-left: 0.4em;
}
.mw-search-results li {
- padding-bottom: 1em;
+ padding-bottom: 1.2em;
list-style: none;
list-style-image: none;
}
// Bind onchange event handler and append to form
$html.append(
$( select ).change( function () {
- window.location = QUnit.url( { useskin: $(this).val() } );
+ window.location = QUnit.url( { useskin: $( this ).val() } );
} )
);
};
$( '#prefsubmit' ).attr( 'id', 'prefcontrol' );
- $preftoc = $('<ul id="preftoc"></ul>')
+ $preftoc = $( '<ul id="preftoc"></ul>' )
.attr( 'role', 'tablist' );
$preferences = $( '#preferences' )
.addClass( 'jsprefs' )
$( '<div>' ).addClass( 'mw-navigation-hint' )
.text( mediaWiki.msg( 'prefs-tabs-navigation-hint' ) )
.attr( 'tabIndex', 0 )
- .on( 'focus blur', function( e ) {
+ .on( 'focus blur', function ( e ) {
if ( e.type === 'blur' || e.type === 'focusout' ) {
$( this ).css( 'height', '0' );
} else {
// Populate the prefToc
$legends.each( function ( i, legend ) {
- var $legend = $(legend),
+ var $legend = $( legend ),
ident, $li, $a;
if ( i === 0 ) {
$legend.parent().show();
} );
// Enable keyboard users to use left and right keys to switch tabs
- $preftoc.on( 'keydown', function( event ) {
+ $preftoc.on( 'keydown', function ( event ) {
var keyLeft = 37,
keyRight = 39,
$el;
- if( event.keyCode === keyLeft ) {
+ if ( event.keyCode === keyLeft ) {
$el = $( '#preftoc li.selected' ).prev().find( 'a' );
} else if ( event.keyCode === keyRight ) {
$el = $( '#preftoc li.selected' ).next().find( 'a' );
if ( 'onhashchange' in window &&
( document.documentMode === undefined || document.documentMode >= 8 )
) {
- $(window).on( 'hashchange' , function () {
+ $( window ).on( 'hashchange' , function () {
var hash = window.location.hash;
if ( hash.match( /^#mw-prefsection-[\w\-]+/ ) ) {
switchPrefTab( hash.replace( '#mw-prefsection-', '' ) );
} else if ( hash === '' ) {
switchPrefTab( 'personal', 'noHash' );
}
- });
+ } );
// In older browsers we'll bind a click handler as fallback.
// We must not have onhashchange *and* the click handlers, other wise
// the click handler calls switchPrefTab() which sets the hash value,
$preftoc.on( 'click', 'li a', function ( e ) {
switchPrefTab( $( this ).attr( 'href' ).replace( '#mw-prefsection-', '' ) );
e.preventDefault();
- });
+ } );
}
/**
while ( localTime >= 1440 ) {
localTime -= 1440;
}
- $localtimeHolder.text( minutesToHours( localTime ) );
+ $localtimeHolder.text( mediaWiki.language.convertNumber( minutesToHours( localTime ) ) );
}
if ( $tzSelect.length && $tzTextbox.length ) {
}
// Create check all/none button
- $checkboxes = $('#powersearch input[id^=mw-search-ns]');
- $('#mw-search-togglebox').append(
- $('<label>')
- .text(mw.msg('powersearch-togglelabel'))
+ $checkboxes = $( '#powersearch input[id^=mw-search-ns]' );
+ $( '#mw-search-togglebox' ).append(
+ $( '<label>' )
+ .text( mw.msg( 'powersearch-togglelabel' ) )
).append(
- $('<input type="button" />')
+ $( '<input type="button" />' )
.attr( 'id', 'mw-search-toggleall' )
- .prop( 'value', mw.msg('powersearch-toggleall' ) )
+ .prop( 'value', mw.msg( 'powersearch-toggleall' ) )
.click( function () {
- $checkboxes.prop('checked', true);
+ $checkboxes.prop( 'checked', true );
} )
).append(
- $('<input type="button" />')
+ $( '<input type="button" />' )
.attr( 'id', 'mw-search-togglenone' )
- .prop( 'value', mw.msg('powersearch-togglenone' ) )
- .click( function() {
+ .prop( 'value', mw.msg( 'powersearch-togglenone' ) )
+ .click( function () {
$checkboxes.prop( 'checked', false );
} )
);
// Change the header search links to what user entered
$headerLinks = $( '.search-types a' );
$( '#searchText, #powerSearchText' ).change( function () {
- var searchterm = $(this).val();
+ var searchterm = $( this ).val();
$headerLinks.each( function () {
- var parts = $(this).attr('href').split( 'search=' ),
+ var parts = $( this ).attr( 'href' ).split( 'search=' ),
lastpart = '',
prefix = 'search=';
- if ( parts.length > 1 && parts[1].indexOf('&') >= 0 ) {
- lastpart = parts[1].substring( parts[1].indexOf('&') );
+ if ( parts.length > 1 && parts[1].indexOf( '&' ) >= 0 ) {
+ lastpart = parts[1].substring( parts[1].indexOf( '&' ) );
} else {
prefix = '&search=';
}
this.href = parts[0] + prefix + encodeURIComponent( searchterm ) + lastpart;
- });
- }).trigger( 'change' );
+ } );
+ } ).trigger( 'change' );
} );
thumb.find( '.filename' ).text( file.name ).end()
.find( '.fileinfo' ).text( prettySize( file.size ) ).end();
- $canvas = $('<canvas width="' + previewSize + '" height="' + previewSize + '" ></canvas>');
+ $canvas = $( '<canvas width="' + previewSize + '" height="' + previewSize + '" ></canvas>' );
ctx = $canvas[0].getContext( '2d' );
$( '#mw-htmlform-source' ).parent().prepend( thumb );
width = img.width / img.height * previewSize;
}
// Determine the offset required to center the image
- dx = (180 - width) / 2;
- dy = (180 - height) / 2;
+ dx = ( 180 - width ) / 2;
+ dy = ( 180 - height ) / 2;
switch ( rotation ) {
// If a rotation is applied, the direction of the axis
// changes as well. You can derive the values below by
ctx.clearRect( 0, 0, 180, 180 );
ctx.rotate( rotation / 180 * Math.PI );
ctx.drawImage( img, x, y, width, height );
- thumb.find('.mw-small-spinner').replaceWith($canvas);
+ thumb.find( '.mw-small-spinner' ).replaceWith( $canvas );
// Image size
info = mw.msg( 'widthheight', logicalWidth, logicalHeight ) +
if ( callbackBinary && 'readAsBinaryString' in reader ) {
// To fetch JPEG metadata we need a binary string; start there.
// todo:
- reader.onload = function() {
+ reader.onload = function () {
callbackBinary( reader.result );
// Now run back through the regular code path.
// readAsArrayBuffer replaces readAsBinaryString
// However, our JPEG metadata library wants a string.
// So, this is going to be an ugly conversion.
- reader.onload = function() {
+ reader.onload = function () {
var i,
buffer = new Uint8Array( reader.result ),
string = '';
}
for ( i = $rows.length; i; i-- ) {
- $row = $rows.eq(i - 1);
+ $row = $rows.eq( i - 1 );
$row
.find( 'input[name="wpSourceType"]' )
.change( createHandler( $row ) );
/* @embed */
background: url(images/glyph-people-large.png) no-repeat 50%;
margin: 0 auto;
+ padding-top: 4em;
}
-#mw-createaccount-cta h3,
-#mw-createaccount-another h3 {
+#mw-createaccount-cta,
+#mw-createaccount-another {
font-size: 0.9em;
font-weight: normal;
text-align: center;
}
-#mw-createaccount-cta h3 {
- padding-top: 4em;
-}
-
#mw-createaccount-join {
margin-left: 0.75em;
/* Separate from background image */
--- /dev/null
+/**
+ * Adds additional styling to the extension title/version list
+**/
+.mw-version-ext-name {
+ font-weight: bold;
+}
+
+.mw-version-ext-vcs-timestamp {
+ white-space: nowrap;
+}
+
+th.mw-version-ext-col-label {
+ font-size: 0.9em;
+}
\ No newline at end of file
+@import "mediawiki.mixins";
@import "../../settings/typography";
@import "../../mixins/effects";
// Buttons
//
+// All buttons start with mw-ui-button class, modified by other classes.
+// It can be any element. Due to a lack of a CSS reset, the exact styling of
+// the button depends on what type of element is used.
+// There are two kinds of buttons, the default is a "Call to Action" with an obvious border
+// and there is a quiet kind without a border.
+//
// Styleguide 2.
@buttonBorderRadius: 3px;
+@transitionDuration: .1s;
+@transitionFunction: ease-in-out;
-// Button styling
-//
-// Basic button styling to be used on desktop skins. Can be any element.
-// Due to a lack of a CSS reset, the exact styling of the button depends on what type of element is used.
+// Neutral button styling
//
// Markup:
-// <div class="mw-ui-button">button.mw-ui-button</div>
+// <button class="mw-ui-button">.mw-ui-button</button>
+// <button class="mw-ui-button" disabled>.mw-ui-button</button>
//
// Styleguide 2.1.
.mw-ui-button {
// Container layout
display: inline-block;
- padding: 0.4em 1em 0.4em 1em;
+ padding: .5em 1em;
margin: 0;
// IE6/IE7 hack
zoom: 1;
// Container styling
- .buttonColors();
+ .button-colors(@colorWhite);
border-radius: @buttonBorderRadius;
// Ensure that buttons and inputs are nicely aligned when they have differing heights
// Content styling
text-align: center;
- text-decoration: none;
-
font-weight: bold;
+ white-space: nowrap;
+ text-shadow: 0 1px rgba(0, 0, 0, .1);
// Interaction styling
cursor: pointer;
- &:disabled,
- &.mw-ui-disabled {
+ &:disabled {
+ text-shadow: none;
cursor: default;
}
+ .transition(background @transitionDuration @transitionFunction, color @transitionDuration @transitionFunction, box-shadow @transitionDuration @transitionFunction;);
+
// Styling for specific button types
// -----------------------------------------
+
+ // Big buttons
+ //
+ // Not all buttons are equal. You can emphasise certain actions over others
+ // using the mw-ui-big class.
+ //
+ // Markup:
+ // <button class="mw-ui-button mw-ui-big">.mw-ui-button</button>
+ // <button class="mw-ui-button mw-ui-progressive mw-ui-big">.mw-ui-progressive</button>
+ // <button class="mw-ui-button mw-ui-constructive mw-ui-big">.mw-ui-constructive</button>
+ // <button class="mw-ui-button mw-ui-destructive mw-ui-big">.mw-ui-destructive</button>
+ //
+ // Styleguide 2.1.6.
&.mw-ui-big {
font-size: @baseFontSize * 1.3;
}
+ // Block buttons
+ //
+ // Some buttons might need to be stacked.
+ //
+ // Markup:
+ // <button class="mw-ui-button mw-ui-block">.mw-ui-button</button>
+ // <button class="mw-ui-button mw-ui-progressive mw-ui-block">.mw-ui-progressive</button>
+ // <button class="mw-ui-button mw-ui-constructive mw-ui-block">.mw-ui-constructive</button>
+ // <button class="mw-ui-button mw-ui-destructive mw-ui-block">.mw-ui-destructive</button>
+ //
+ // Styleguide 2.1.5.
&.mw-ui-block {
display: block;
width: 100%;
}
- // Primary buttons
+ // Progressive buttons
//
- // Do not use the mw-ui-primary class use mw-ui-constructive instead. For blue buttons
- // use mw-ui-progressive (coming soon)
+ // Use progressive buttons for actions which lead to a next step in the process.
+ // .mw-ui-primary is deprecated, kept for compatibility.
//
// Markup:
- // <button class="mw-ui-button mw-ui-primary">mw-ui-primary</button>
+ // <button class="mw-ui-button mw-ui-progressive">.mw-ui-progressive</button>
+ // <button class="mw-ui-button mw-ui-progressive" disabled>.mw-ui-progressive</button>
//
// Styleguide 2.1.1.
+ &.mw-ui-progressive,
&.mw-ui-primary {
- .buttonColors(@agoraBlue);
+ .button-colors(@colorProgressive);
+
+ &.mw-ui-quiet {
+ .button-colors-quiet(@colorProgressive);
+ }
}
// Constructive buttons
// e.g. save changes button
//
// Markup:
- // <button class="mw-ui-button mw-ui-constructive">mw-ui-constructive</button>
+ // <button class="mw-ui-button mw-ui-constructive">.mw-ui-constructive</button>
+ // <button class="mw-ui-button mw-ui-constructive" disabled>.mw-ui-constructive</button>
//
// Styleguide 2.1.2.
&.mw-ui-constructive {
- .buttonColors(@agoraGreen);
+ .button-colors(@colorConstructive);
+
+ &.mw-ui-quiet {
+ .button-colors-quiet(@colorConstructive);
+ }
}
// Destructive buttons
// This should not be used for cancel buttons.
//
// Markup:
- // <button class="mw-ui-button mw-ui-destructive">mw-ui-destructive</button>
+ // <button class="mw-ui-button mw-ui-destructive">.mw-ui-destructive</button>
+ // <button class="mw-ui-button mw-ui-destructive" disabled>.mw-ui-destructive</button>
//
// Styleguide 2.1.3.
&.mw-ui-destructive {
- .buttonColors(@agoraRed);
+ .button-colors(@colorDestructive);
+
+ &.mw-ui-quiet {
+ .button-colors-quiet(@colorDestructive);
+ }
+ }
+
+ // Quiet buttons
+ //
+ // Use quiet buttons when they are less important and alongisde other progressive/destructive/progressive buttons.
+ //
+ // Markup:
+ // <button class="mw-ui-button mw-ui-quiet">.mw-ui-button</button>
+ // <button class="mw-ui-button mw-ui-constructive mw-ui-quiet">.mw-ui-constructive</button>
+ // <button class="mw-ui-button mw-ui-constructive mw-ui-quiet" disabled>.mw-ui-constructive</button>
+ // <button class="mw-ui-button mw-ui-destructive mw-ui-quiet">.mw-ui-destructive</button>
+ // <button class="mw-ui-button mw-ui-destructive mw-ui-quiet" disabled>.mw-ui-destructive</button>
+ // <button class="mw-ui-button mw-ui-progressive mw-ui-quiet">.mw-ui-progressive</button>
+ // <button class="mw-ui-button mw-ui-progressive mw-ui-quiet" disabled>.mw-ui-progressive</button>
+ //
+ // Styleguide 2.1.4.
+ &.mw-ui-quiet {
+ background: transparent;
+ border: none;
+ text-shadow: none;
+ .button-colors-quiet(@colorGrayDark);
+
+ &:hover,
+ &:focus {
+ box-shadow: none;
+ }
+
+ &:active,
+ &:disabled {
+ background: transparent;
+ }
}
}
-// This overrides an underline declaration on a:hover and a:focus in commonElements.css, which the
-// class alone isn't specific enough to do
a.mw-ui-button {
text-decoration: none;
+
+ // This overrides an underline declaration on a:hover and a:focus in
+ // commonElements.css, which the class alone isn't specific enough to do.
+ &:hover,
+ &:focus {
+ text-decoration: none;
+ }
}
// Button groups
-/* Mixins for visual effects in CSS3 */
-
@import "../settings/colors";
-
-// ----------------------------------------------------------------------------
-// Gradients
-// ----------------------------------------------------------------------------
-.vertical-gradient(@startColor: lighten(@agoraGray, 95%), @endColor: @agoraGray, @startPos: 0, @endPos: 100%) {
- background-color: @endColor;
- background-image: -moz-linear-gradient( top, @startColor @startPos, @endColor @endPos ); // Firefox 3.6+
- background-image: -webkit-gradient( linear, left top, left bottom, color-stop( @startPos, @startColor ), color-stop( @endPos, @endColor ) ); // Safari 4+, Chrome 2+
- background-image: -webkit-linear-gradient( top, @startColor @startPos, @endColor @endPos ); // Safari 5.1+, Chrome 10+
- background-image: linear-gradient( @startColor @startPos, @endColor @endPos ); // Standard
-}
-
// ----------------------------------------------------------------------------
// Button styling
// ----------------------------------------------------------------------------
-.buttonColors(@baseColor: @agoraGray) {
- // Background color
- .vertical-gradient(lighten(@baseColor, 7.5%), @baseColor);
-
- border: 1px solid darken(@baseColor, 2%);
+.button-colors(@bgColor) {
+ background: @bgColor;
&:hover,
- &.mw-ui-hover {
- .vertical-gradient(lighten(@baseColor, 12.5%), lighten(@baseColor, 7.5%));
- text-decoration: none;
+ &:focus {
+ // The inner bottom bevel should match the active background color.
+ box-shadow: 0 1px rgba(0, 0, 0, 10%), inset 0 -3px rgba(0, 0, 0, 20%);
+ outline: none;
+ // remove outline in Firefox
+ &::-moz-focus-inner {
+ border-color: transparent;
+ }
}
- &:active,
- &.mw-ui-active {
- background-image: none;
- background-color: darken(@baseColor, 3%);
+ &:active {
+ // lessphp doesn't implement shade (https://github.com/leafo/lessphp/issues/528);
+ // it passes it through, then ResourceLoader drops it.
+ // background: shade(@bgColor, 20%);
+ background: mix(#000, @bgColor, 20%);
+ box-shadow: none;
}
+}
+
+.button-colors(@bgColor) when (lightness(@bgColor) >= 70%) {
+ color: @colorGrayDark;
+ border: 1px solid @colorGrayLight;
+
+ &:disabled {
+ color: @colorGrayLight;
- &:disabled,
- &.mw-ui-disabled {
- background-image: none;
- background-color: @baseColor;
- opacity: 0.5;
+ // make sure disabled buttons don't have hover and active states
+ &:hover,
+ &:active {
+ background: @bgColor;
+ box-shadow: none;
+ }
}
}
-.buttonColors(@baseColor: @agoraGray) when (lightness(@baseColor) >= 50%) {
- color: #000;
+.button-colors(@bgColor) when (lightness(@bgColor) < 70%) {
+ color: @colorWhite;
+ border: none;
+
+ &:disabled {
+ background: @colorGrayLight;
+
+ // make sure disabled buttons don't have hover and active states
+ &:hover,
+ &:active {
+ box-shadow: none;
+ }
+ }
}
-.buttonColors(@baseColor: @agoraGray) when (lightness(@baseColor) < 50%) {
- color: #fff;
+.button-colors-quiet(@textColor) {
+ // Quiet buttons all start gray, and reveal
+ // constructive/progressive/destructive color on hover and active.
+ color: @colorGrayDark;
+
+ &:hover,
+ &:focus {
+ // lessphp doesn't implement tint, see above
+ // color: tint(@textColor, 20%);
+ color: mix(#fff, @textColor, 20%);
+ }
+
+ &:active {
+ // lessphp doesn't implement shade, see above
+ // color: shade(@textColor, 20%);
+ color: mix(#000, @textColor, 20%);
+ }
+
+ &:disabled {
+ color: @colorGrayLight;
+ }
}
// For Vector, that should be layered on top with vector-type
.agora-field-styling() {
- border: 1px solid @agoraGray;
+ border: 1px solid @colorGrayLight;
&:focus {
// Styling focus of native checkboxes etc on Mac is almost impossible.
outline: 0; // Removes OS field focus
}
- box-shadow: @agoraBlueShadow 0px 0px 5px;
+ box-shadow: @colorProgressiveShadow 0px 0px 5px;
- border-color: @agoraBlueShadow;
+ border-color: @colorProgressiveShadow;
}
- color: @agoraTextColor;
+ color: @colorText;
padding: 0.35em 0.5em 0.35em 0.5em;
// Ensure that buttons and inputs are nicely aligned when they have differing heights
.agora-label-styling() {
//font-weight: bold;
font-size: 0.9em;
- color: darken(@agoraGray, 50%);
+ color: darken(@colorGrayLight, 50%);
* {
font-weight: normal;
height: auto;
margin: 0 0.1em 0em 0;
padding: 0;
- border: 1px solid @agoraGray;
+ border: 1px solid @colorGrayLight;
cursor: pointer;
}
}
-// Grays
-// -----------------------------------------
-@agoraGray: #c9c9c9;
-@agoraTextColor: #252525;
-
-// Blues
-// -----------------------------------------
-@agoraBlue: #3366bb;
-@agoraBlueShadow: #4091ed;
-
-// Greens
-// -----------------------------------------
-@agoraGreen: #27aa65;
-
-// Reds
-// -----------------------------------------
-@agoraRed: #cc0000;
+@colorWhite: #fff;
+@colorGrayLight: #ccc;
+@colorGrayDark: #898989;
+@colorText: #252525;
+@colorProgressive: #347bff;
+// FIXME: remove @colorProgressiveShadow (shadows should be generated
+// in LESS by dimming the original colors)
+@colorProgressiveShadow: #4091ed;
+@colorConstructive: #00af89;
+@colorDestructive: #d11d13;
@baseFontSize: 1em;
@baseLineHeight: 1.4 * @baseFontSize;
-@baseFontColor: @agoraTextColor;
+@baseFontColor: @colorText;
@smallFontSize: 0.75em;
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ version="1.1"
+ width="12"
+ height="12"
+ id="svg2"
+ inkscape:version="0.48.4 r9939"
+ sodipodi:docname="arrow-collapsed-ltr.svg">
+ <sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1920"
+ inkscape:window-height="1041"
+ id="namedview7"
+ showgrid="false"
+ inkscape:zoom="27.812867"
+ inkscape:cx="7.833847"
+ inkscape:cy="7.3054094"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="svg2" />
+ <defs
+ id="defs4" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ transform="matrix(1.0559311,0,0,1.0825058,-404.86649,-609.71107)"
+ id="layer1">
+ <path
+ d="m 387.20944,564.65683 0,8.93354 4.49986,-4.49987 z"
+ id="arrow"
+ style="fill:#797979;fill-opacity:1;stroke:none"
+ inkscape:connector-curvature="0" />
+ </g>
+</svg>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ version="1.1"
+ width="12"
+ height="12"
+ id="svg2"
+ inkscape:version="0.48.4 r9939"
+ sodipodi:docname="arrow-collapsed-ltr.svg">
+ <sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1920"
+ inkscape:window-height="1041"
+ id="namedview7"
+ showgrid="false"
+ inkscape:zoom="27.812867"
+ inkscape:cx="14.764482"
+ inkscape:cy="6.45175"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="svg2" />
+ <defs
+ id="defs4" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ transform="matrix(-1.0559311,0,0,1.0825058,416.86649,-609.71107)"
+ id="layer1">
+ <path
+ d="m 387.20944,564.65683 0,8.93354 4.49986,-4.49987 z"
+ id="arrow"
+ style="fill:#797979;fill-opacity:1;stroke:none"
+ inkscape:connector-curvature="0" />
+ </g>
+</svg>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ version="1.1"
+ width="12"
+ height="12"
+ id="svg2"
+ inkscape:version="0.48.4 r9939"
+ sodipodi:docname="arrow-collapsed-rtl.svg">
+ <sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1920"
+ inkscape:window-height="1041"
+ id="namedview7"
+ showgrid="false"
+ inkscape:zoom="27.812867"
+ inkscape:cx="9.7488178"
+ inkscape:cy="6.45175"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="svg2" />
+ <defs
+ id="defs4" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ transform="matrix(0,1.0559311,1.0825058,0,-610.0796,-405.24226)"
+ id="layer1">
+ <path
+ d="m 387.20944,564.65683 0,8.93354 4.49986,-4.49987 z"
+ id="arrow"
+ style="fill:#797979;fill-opacity:1;stroke:none"
+ inkscape:connector-curvature="0" />
+ </g>
+</svg>
/**
* Example to declare existing titles:
- * Title.exist.set(['User:John_Doe', ...]);
+ * Title.exist.set( ['User:John_Doe', ...] );
* Eample to declare titles nonexistent:
- * Title.exist.set(['File:Foo_bar.jpg', ...], false);
+ * Title.exist.set( ['File:Foo_bar.jpg', ...], false );
*
* @static
* @property exist.set
/**
- * Library for simple URI parsing and manipulation. Requires jQuery.
+ * Library for simple URI parsing and manipulation. Dependencies: mw, jQuery.
*
- * Do not expect full RFC 3986 compliance. Intended to be minimal, but featureful.
- * The use cases we have in mind are constructing 'next page' or 'previous page' URLs,
- * detecting whether we need to use cross-domain proxies for an API, constructing
- * simple URL-based API calls, etc.
+ * Intended to be minimal, but featureful; do not expect full RFC 3986 compliance. The use cases we
+ * have in mind are constructing 'next page' or 'previous page' URLs, detecting whether we need to
+ * use cross-domain proxies for an API, constructing simple URL-based API calls, etc. Parsing here
+ * is regex-based, so may not work on all URIs, but is good enough for most.
*
- * Intended to compress very well if you use a JS-parsing minifier.
- *
- * Dependencies: mw, jQuery
- *
- * Example:
+ * You can modify the properties directly, then use the #toString method to extract the full URI
+ * string again. Example:
*
* var uri = new mw.Uri( 'http://example.com/mysite/mypage.php?quux=2' );
*
* // anchor with id 'id2' now links to http://foo.example.com/mysite/mypage.php?bar=3&quux=2&pif=paf
* }
*
- * Parsing here is regex based, so may not work on all URIs, but is good enough for most.
- *
* Given a URI like
- * 'http://usr:pwd@www.example.com:81/dir/dir.2/index.htm?q1=0&&test1&test2=&test3=value+%28escaped%29&r=1&r=2#top':
- * The returned object will have the following properties:
+ * `http://usr:pwd@www.example.com:81/dir/dir.2/index.htm?q1=0&&test1&test2=&test3=value+%28escaped%29&r=1&r=2#top`
+ * the returned object will have the following properties:
*
- * protocol 'http'
- * user 'usr'
- * password 'pwd'
- * host 'www.example.com'
- * port '81'
- * path '/dir/dir.2/index.htm'
- * query {
- * q1: 0,
- * test1: null,
- * test2: '',
- * test3: 'value (escaped)'
- * r: [1, 2]
- * }
- * fragment 'top'
+ * protocol 'http'
+ * user 'usr'
+ * password 'pwd'
+ * host 'www.example.com'
+ * port '81'
+ * path '/dir/dir.2/index.htm'
+ * query {
+ * q1: '0',
+ * test1: null,
+ * test2: '',
+ * test3: 'value (escaped)'
+ * r: ['1', '2']
+ * }
+ * fragment 'top'
*
- * n.b. 'password' is not technically allowed for HTTP URIs, but it is possible with other
- * sorts of URIs.
- * You can modify the properties directly. Then use the toString() method to extract the
- * full URI string again.
+ * (N.b., 'password' is technically not allowed for HTTP URIs, but it is possible with other kinds
+ * of URIs.)
*
- * Parsing based on parseUri 1.2.2 (c) Steven Levithan <stevenlevithan.com> MIT License
+ * Parsing based on parseUri 1.2.2 (c) Steven Levithan <stevenlevithan.com>, MIT License.
* http://stevenlevithan.com/demo/parseuri/js/
*
+ * @class mw.Uri
*/
( function ( mw, $ ) {
-
/**
- * Function that's useful when constructing the URI string -- we frequently encounter the pattern of
- * having to add something to the URI as we go, but only if it's present, and to include a character before or after if so.
- * @param {string|undefined} pre To prepend.
- * @param {string} val To include.
- * @param {string} post To append.
- * @param {boolean} raw If true, val will not be encoded.
- * @return {string} Result.
+ * Function that's useful when constructing the URI string -- we frequently encounter the pattern
+ * of having to add something to the URI as we go, but only if it's present, and to include a
+ * character before or after if so.
+ *
+ * @private
+ * @static
+ * @param {string|undefined} pre To prepend
+ * @param {string} val To include
+ * @param {string} post To append
+ * @param {boolean} raw If true, val will not be encoded
+ * @return {string} Result
*/
function cat( pre, val, post, raw ) {
if ( val === undefined || val === null || val === '' ) {
return pre + ( raw ? val : mw.Uri.encode( val ) ) + post;
}
- // Regular expressions to parse many common URIs.
+ /**
+ * Regular expressions to parse many common URIs.
+ *
+ * @private
+ * @static
+ * @property {Object} parser
+ */
var parser = {
strict: /^(?:([^:\/?#]+):)?(?:\/\/(?:(?:([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?([^:\/?#]*)(?::(\d*))?)?((?:[^?#\/]*\/)*[^?#]*)(?:\?([^#]*))?(?:#(.*))?/,
loose: /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?(?:(?:([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?([^:\/?#]*)(?::(\d*))?((?:\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?[^?#\/]*)(?:\?([^#]*))?(?:#(.*))?/
},
- // The order here matches the order of captured matches in the above parser regexes.
+ /**
+ * The order here matches the order of captured matches in the `parser` property regexes.
+ *
+ * @private
+ * @static
+ * @property {Array} properties
+ */
properties = [
- 'protocol', // http
- 'user', // usr
- 'password', // pwd
- 'host', // www.example.com
- 'port', // 81
- 'path', // /dir/dir.2/index.htm
- 'query', // q1=0&&test1&test2=value (will become { q1: '0', test1: '', test2: 'value' } )
- 'fragment' // top
+ 'protocol',
+ 'user',
+ 'password',
+ 'host',
+ 'port',
+ 'path',
+ 'query',
+ 'fragment'
];
+ /**
+ * @property {string} protocol For example `http` (always present)
+ */
+ /**
+ * @property {string|undefined} user For example `usr`
+ */
+ /**
+ * @property {string|undefined} password For example `pwd`
+ */
+ /**
+ * @property {string} host For example `www.example.com` (always present)
+ */
+ /**
+ * @property {string|undefined} port For example `81`
+ */
+ /**
+ * @property {string} path For example `/dir/dir.2/index.htm` (always present)
+ */
+ /**
+ * @property {Object} query For example `{ a: '0', b: '', c: 'value' }` (always present)
+ */
+ /**
+ * @property {string|undefined} fragment For example `top`
+ */
/**
- * We use a factory to inject a document location, for relative URLs, including protocol-relative URLs.
- * so the library is still testable & purely functional.
+ * A factory method to create a variation of mw.Uri with a different default location (for
+ * relative URLs, including protocol-relative URLs). Used so the library is still testable &
+ * purely functional.
+ *
+ * @method
+ * @member mw
*/
mw.UriRelative = function ( documentLocation ) {
var defaultUri;
/**
- * Constructs URI object. Throws error if arguments are illegal/impossible, or otherwise don't parse.
+ * @class mw.Uri
* @constructor
- * @param {Object|string} uri URI string, or an Object with appropriate properties (especially another URI object to clone).
- * Object must have non-blank 'protocol', 'host', and 'path' properties.
- * This parameter is optional. If omitted (or set to undefined, null or empty string), then an object will be created
- * for the default uri of this constructor (e.g. document.location for mw.Uri in MediaWiki core).
- * @param {Object|boolean} Object with options, or (backwards compatibility) a boolean for strictMode
- * - {boolean} strictMode Trigger strict mode parsing of the url. Default: false
- * - {boolean} overrideKeys Wether to let duplicate query parameters override eachother (true) or automagically
- * convert to an array (false, default).
+ *
+ * Construct a new URI object. Throws error if arguments are illegal/impossible, or
+ * otherwise don't parse.
+ *
+ * @param {Object|string} [uri] URI string, or an Object with appropriate properties (especially
+ * another URI object to clone). Object must have non-blank `protocol`, `host`, and `path`
+ * properties. If omitted (or set to `undefined`, `null` or empty string), then an object
+ * will be created for the default `uri` of this constructor (`document.location` for
+ * mw.Uri, other values for other instances -- see mw.UriRelative for details).
+ * @param {Object|boolean} [options] Object with options, or (backwards compatibility) a boolean
+ * for strictMode
+ * @param {boolean} [options.strictMode=false] Trigger strict mode parsing of the url.
+ * @param {boolean} [options.overrideKeys=false] Whether to let duplicate query parameters
+ * override each other (`true`) or automagically convert them to an array (`false`).
*/
function Uri( uri, options ) {
options = typeof options === 'object' ? options : { strictMode: !!options };
}
/**
- * Standard encodeURIComponent, with extra stuff to make all browsers work similarly and more compliant with RFC 3986
- * Similar to rawurlencode from PHP and our JS library mw.util.rawurlencode, but we also replace space with a +
- * @param {string} s String to encode.
- * @return {string} Encoded string for URI.
+ * Encode a value for inclusion in a url.
+ *
+ * Standard encodeURIComponent, with extra stuff to make all browsers work similarly and more
+ * compliant with RFC 3986. Similar to rawurlencode from PHP and our JS library
+ * mw.util.rawurlencode, except this also replaces spaces with `+`.
+ *
+ * @static
+ * @param {string} s String to encode
+ * @return {string} Encoded string for URI
*/
Uri.encode = function ( s ) {
return encodeURIComponent( s )
- .replace( /!/g, '%21').replace( /'/g, '%27').replace( /\(/g, '%28')
- .replace( /\)/g, '%29').replace( /\*/g, '%2A')
+ .replace( /!/g, '%21' ).replace( /'/g, '%27' ).replace( /\(/g, '%28' )
+ .replace( /\)/g, '%29' ).replace( /\*/g, '%2A' )
.replace( /%20/g, '+' );
};
/**
- * Standard decodeURIComponent, with '+' to space.
- * @param {string} s String encoded for URI.
- * @return {string} Decoded string.
+ * Decode a url encoded value.
+ *
+ * Reversed #encode. Standard decodeURIComponent, with addition of replacing
+ * `+` with a space.
+ *
+ * @static
+ * @param {string} s String to decode
+ * @return {string} Decoded string
*/
Uri.decode = function ( s ) {
return decodeURIComponent( s.replace( /\+/g, '%20' ) );
/**
* Parse a string and set our properties accordingly.
- * @param {string} str URI
- * @param {Object} options
- * @return {boolean} Success.
+ *
+ * @private
+ * @param {string} str URI, see constructor.
+ * @param {Object} options See constructor.
*/
parse: function ( str, options ) {
- var q,
- uri = this,
- matches = parser[ options.strictMode ? 'strict' : 'loose' ].exec( str );
+ var q, matches,
+ uri = this;
+
+ // Apply parser regex and set all properties based on the result
+ matches = parser[ options.strictMode ? 'strict' : 'loose' ].exec( str );
$.each( properties, function ( i, property ) {
uri[ property ] = matches[ i + 1 ];
} );
}
} );
}
- this.query = q;
+ uri.query = q;
},
/**
- * Returns user and password portion of a URI.
+ * Get user and password section of a URI.
+ *
* @return {string}
*/
getUserInfo: function () {
},
/**
- * Gets host and port portion of a URI.
+ * Get host and port section of a URI.
+ *
* @return {string}
*/
getHostPort: function () {
},
/**
- * Returns the userInfo and host and port portion of the URI.
- * In most real-world URLs, this is simply the hostname, but it is more general.
+ * Get the userInfo, host and port section of the URI.
+ *
+ * In most real-world URLs this is simply the hostname, but the definition of 'authority' section is more general.
+ *
* @return {string}
*/
getAuthority: function () {
},
/**
- * Returns the query arguments of the URL, encoded into a string
- * Does not preserve the order of arguments passed into the URI. Does handle escaping.
+ * Get the query arguments of the URL, encoded into a string.
+ *
+ * Does not preserve the original order of arguments passed in the URI. Does handle escaping.
+ *
* @return {string}
*/
getQueryString: function () {
},
/**
- * Returns everything after the authority section of the URI
+ * Get everything after the authority section of the URI.
+ *
* @return {string}
*/
getRelativePath: function () {
},
/**
- * Gets the entire URI string. May not be precisely the same as input due to order of query arguments.
- * @return {string} The URI string.
+ * Get the entire URI string.
+ *
+ * May not be precisely the same as input due to order of query arguments.
+ *
+ * @return {string} The URI string
*/
toString: function () {
return this.protocol + '://' + this.getAuthority() + this.getRelativePath();
/**
* Clone this URI
- * @return {Object} new URI object with same properties
+ *
+ * @return {Object} New URI object with same properties
*/
clone: function () {
return new Uri( this );
},
/**
- * Extend the query -- supply query parameters to override or add to ours
- * @param {Object} query parameters in key-val form to override or add
- * @return {Object} this URI object
+ * Extend the query section of the URI with new parameters.
+ *
+ * @param {Object} parameters Query parameters to add to ours (or to override ours with) as an
+ * object
+ * @return {Object} This URI object
*/
extend: function ( parameters ) {
$.extend( this.query, parameters );
return Uri;
};
- // if we are running in a browser, inject the current document location, for relative URLs
+ // If we are running in a browser, inject the current document location (for relative URLs).
if ( document && document.location && document.location.href ) {
mw.Uri = mw.UriRelative( document.location.href );
}
*/
switchPane: function ( e ) {
var currentPaneId = debug.$container.data( 'currentPane' ),
- requestedPaneId = $(this).prop( 'id' ).substr( 9 ),
+ requestedPaneId = $( this ).prop( 'id' ).substr( 9 ),
$currentPane = $( '#mw-debug-pane-' + currentPaneId ),
$requestedPane = $( '#mw-debug-pane-' + requestedPaneId ),
hovDone = false;
// Skip hash fragment handling. Prevents screen from jumping.
e.preventDefault();
- $( this ).addClass( 'current ');
- $( '.mw-debug-panelink' ).not( this ).removeClass( 'current ');
+ $( this ).addClass( 'current ' );
+ $( '.mw-debug-panelink' ).not( this ).removeClass( 'current ' );
// Hide the current pane
if ( requestedPaneId === currentPaneId ) {
* @return {jQuery}
*/
function bitDiv( id ) {
- return $( '<div>' ).prop({
+ return $( '<div>' ).prop( {
id: 'mw-debug-' + id,
className: 'mw-debug-bit'
- })
+ } )
.appendTo( $bits );
}
*/
function paneLabel( id, text ) {
return $( '<a>' )
- .prop({
+ .prop( {
className: 'mw-debug-panelabel',
href: '#mw-debug-pane-' + id
- })
+ } )
.text( text );
}
if ( count ) {
text = text + ' (' + count + ')';
}
- return $( '<div>' ).prop({
+ return $( '<div>' ).prop( {
id: 'mw-debug-' + id,
className: 'mw-debug-bit mw-debug-panelink'
- })
+ } )
.append( paneLabel( id, text ) )
.appendTo( $bits );
}
}
$( '<div>' )
- .prop({
+ .prop( {
className: 'mw-debug-pane',
id: 'mw-debug-pane-' + id
- })
+ } )
.append( panes[id] )
.appendTo( $container );
}
$( '<div style="margin-top: 1em;"></div>' ).append(
mw.msg( 'feedback-subject' ),
$( '<br>' ),
- $( '<input type="text" class="feedback-subject" name="subject" maxlength="60" style="width: 99%;"/>' )
+ $( '<input type="text" class="feedback-subject" name="subject" maxlength="60" style="width: 100%; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box;"/>' )
),
$( '<div style="margin-top: 0.4em;"></div>' ).append(
mw.msg( 'feedback-message' ),
$( '<br>' ),
- $( '<textarea name="message" class="feedback-message" style="width: 99%;" rows="5" cols="60"></textarea>' )
+ $( '<textarea name="message" class="feedback-message" rows="5" cols="60"></textarea>' )
)
),
$( '<div class="feedback-mode feedback-bugs"></div>' ).append(
*/
$.fn.goIn = function ( instantToggle ) {
if ( instantToggle === true ) {
- return $(this).show();
+ return $( this ).show();
}
- return $(this).stop( true, true ).fadeIn();
+ return $( this ).stop( true, true ).fadeIn();
};
/**
*/
$.fn.goOut = function ( instantToggle ) {
if ( instantToggle === true ) {
- return $(this).hide();
+ return $( this ).hide();
}
- return $(this).stop( true, true ).fadeOut();
+ return $( this ).stop( true, true ).fadeOut();
};
/**
* @param {Function} callback Takes one parameter, which is {true} when the
* event is called immediately, and {jQuery.Event} when triggered from an event.
*/
- $.fn.liveAndTestAtStart = function ( callback ){
- $(this)
+ $.fn.liveAndTestAtStart = function ( callback ) {
+ $( this )
.live( 'change', callback )
.each( function () {
callback.call( this, true );
// Animate the SelectOrOther fields, to only show the text field when
// 'other' is selected.
$( '.mw-htmlform-select-or-other' ).liveAndTestAtStart( function ( instant ) {
- var $other = $( '#' + $(this).attr( 'id' ) + '-other' );
+ var $other = $( '#' + $( this ).attr( 'id' ) + '-other' );
$other = $other.add( $other.siblings( 'br' ) );
- if ( $(this).val() === 'other' ) {
+ if ( $( this ).val() === 'other' ) {
$other.goIn( instant );
} else {
$other.goOut( instant );
}
- });
+ } );
} );
'class': 'htmlform-chzn-select mw-input ' + oldClass
} );
$oldContainer.find( 'input' ).each( function () {
- var $oldInput = $(this),
+ var $oldInput = $( this ),
checked = $oldInput.prop( 'checked' ),
$option = $( '<option>' );
$option.prop( 'value', $oldInput.prop( 'value' ) );
+++ /dev/null
-/* General-purpose icons via CSS. Classes here should be named "mw-icon-*". */
-
-/* For the collapsed and expanded arrows, we also provide selectors to make it
- * easy to use them with jquery.makeCollapsible. */
-.mw-icon-arrow-collapsed,
-.mw-collapsible-arrow.mw-collapsible-toggle-collapsed {
- /* @embed */
- background: url(images/arrow-collapsed-ltr.png) no-repeat left bottom;
-}
-
-.mw-icon-arrow-expanded,
-.mw-collapsible-arrow.mw-collapsible-toggle-expanded {
- /* @embed */
- background: url(images/arrow-expanded.png) no-repeat left bottom;
-}
--- /dev/null
+/* General-purpose icons via CSS. Classes here should be named "mw-icon-*". */
+
+@import "mediawiki.mixins";
+
+/* For the collapsed and expanded arrows, we also provide selectors to make it
+ * easy to use them with jquery.makeCollapsible. */
+.mw-icon-arrow-collapsed,
+.mw-collapsible-arrow.mw-collapsible-toggle-collapsed {
+ .background-image-svg('images/arrow-collapsed-ltr.svg', 'images/arrow-collapsed-ltr.png');
+ background-repeat: no-repeat;
+ background-position: left bottom;
+}
+
+.mw-icon-arrow-expanded,
+.mw-collapsible-arrow.mw-collapsible-toggle-expanded {
+ .background-image-svg('images/arrow-expanded.svg', 'images/arrow-expanded.png');
+ background-repeat: no-repeat;
+ background-position: left bottom;
+}
// try to invoke it.
console.table.call( console, data );
return;
- } catch (e) {}
+ } catch ( e ) {}
try {
console.log( $.toJSON( data, null, 2 ) );
return;
- } catch (e) {}
+ } catch ( e ) {}
mw.log( data );
},
try {
css = module.style.css.join();
- } catch (e) { return; } // skip
+ } catch ( e ) { return; } // skip
stats = inspect.auditSelectors( css );
modules.push( {
try {
raw = localStorage.getItem( mw.loader.store.getStoreKey() );
stats.totalSize = humanSize( $.byteLength( raw ) );
- } catch (e) {}
+ } catch ( e ) {}
}
return [stats];
}
/**
* N.B. replacements are variadic arguments or an array in second parameter. In other words:
- * somefunction(a, b, c, d)
+ * somefunction( a, b, c, d )
* is equivalent to
- * somefunction(a, [b, c, d])
+ * somefunction( a, [b, c, d] )
*
* @param {string} key Message key.
* @param {Array|mixed} replacements Optional variable replacements (variadically or an array).
* the current selector. Bindings to passed-in jquery elements are preserved. Functions become click handlers for [$1 linktext] links.
* e.g.
* $.fn.msg = mediaWiki.parser.getJqueryPlugin( options );
- * var userlink = $( '<a>' ).click( function () { alert( "hello!!") } );
+ * var userlink = $( '<a>' ).click( function () { alert( "hello!!" ) } );
* $( 'p#headline' ).msg( 'hello-user', userlink );
*
* @param {Array} parser options
var failableParserFn = getFailableParserFn( options );
/**
* N.B. replacements are variadic arguments or an array in second parameter. In other words:
- * somefunction(a, b, c, d)
+ * somefunction( a, b, c, d )
* is equivalent to
- * somefunction(a, [b, c, d])
+ * somefunction( a, [b, c, d] )
*
* We append to 'this', which in a jQuery plugin context will be the selected elements.
* @param {string} key Message key.
// This may be because, to save code, memoization was removed
regularLiteral = makeRegexParser( /^[^{}\[\]$<\\]/ );
- regularLiteralWithoutBar = makeRegexParser(/^[^{}\[\]$\\|]/);
- regularLiteralWithoutSpace = makeRegexParser(/^[^{}\[\]$\s]/);
+ regularLiteralWithoutBar = makeRegexParser( /^[^{}\[\]$\\|]/ );
+ regularLiteralWithoutSpace = makeRegexParser( /^[^{}\[\]$\s]/ );
regularLiteralWithSquareBrackets = makeRegexParser( /^[^{}$\\]/ );
backslash = makeStringParser( '\\' );
// Used to define "literals" without spaces, in space-delimited situations
function literalWithoutSpace() {
var result = nOrMore( 1, escapedOrLiteralWithoutSpace )();
- return result === null ? null : result.join('');
+ return result === null ? null : result.join( '' );
}
// Used to define "literals" within template parameters. The pipe character is the parameter delimeter, so by default
// it is not a literal in the parameter
function literalWithoutBar() {
var result = nOrMore( 1, escapedOrLiteralWithoutBar )();
- return result === null ? null : result.join('');
+ return result === null ? null : result.join( '' );
}
// Used for wikilink page names. Like literalWithoutBar, but
// without allowing escapes.
function unescapedLiteralWithoutBar() {
var result = nOrMore( 1, regularLiteralWithoutBar )();
- return result === null ? null : result.join('');
+ return result === null ? null : result.join( '' );
}
function literal() {
var result = nOrMore( 1, escapedOrRegularLiteral )();
- return result === null ? null : result.join('');
+ return result === null ? null : result.join( '' );
}
function curlyBraceTransformExpressionLiteral() {
var result = nOrMore( 1, regularLiteralWithSquareBrackets )();
- return result === null ? null : result.join('');
+ return result === null ? null : result.join( '' );
}
asciiAlphabetLiteral = makeRegexParser( /[A-Za-z]+/ );
whitespace,
asciiAlphabetLiteral,
htmlAttributeEquals,
- choice( [
+ choice( [
doubleQuotedHtmlAttributeValue,
singleQuotedHtmlAttributeValue
] )
endTagName = parsedCloseTagResult[1];
wrappedAttributes = parsedOpenTagResult[2];
attributes = wrappedAttributes.slice( 1 );
- if ( isAllowedHtml( startTagName, endTagName, attributes) ) {
+ if ( isAllowedHtml( startTagName, endTagName, attributes ) ) {
result = [ 'HTMLELEMENT', startTagName, wrappedAttributes ].concat( parsedHtmlContents );
} else {
// HTML is not allowed, so contents will remain how
] );
return result === null ? null : [ result[0], result[2] ];
}
- colon = makeStringParser(':');
+ colon = makeStringParser( ':' );
templateContents = choice( [
function () {
var res = sequence( [
return [ res[0] ].concat( res[1] );
}
] );
- openTemplate = makeStringParser('{{');
- closeTemplate = makeStringParser('}}');
+ openTemplate = makeStringParser( '{{' );
+ closeTemplate = makeStringParser( '}}' );
nonWhitespaceExpression = choice( [
template,
wikilink,
* Transform parsed structure into external link
* If the href is a jQuery object, treat it as "enclosing" the link text.
* ... function, treat it as the click handler
- * ... string, treat it as a URI
+ * ... string, treat it as a URI
* TODO: throw an error if nodes.length > 2 ?
* @param {Array} of two elements, {jQuery|Function|String} and {String}
* @return {jQuery}
extlinkparam: function ( nodes, replacements ) {
var replacement,
index = parseInt( nodes[0], 10 );
- if ( index < replacements.length) {
+ if ( index < replacements.length ) {
replacement = replacements[index];
} else {
replacement = '$' + ( index + 1 );
plural: function ( nodes ) {
var forms, count;
count = parseFloat( this.language.convertNumber( nodes[0], true ) );
- forms = nodes.slice(1);
+ forms = nodes.slice( 1 );
return forms.length ? this.language.convertPlural( count, forms ) : '';
},
// Caching is somewhat problematic, because we do need different message functions for different maps, so
// we'd have to cache the parser as a member of this.map, which sounds a bit ugly.
// Do not use mw.jqueryMsg unless required
- if ( this.format === 'plain' || !/\{\{|[\[<>]/.test(this.map.get( this.key ) ) ) {
+ if ( this.format === 'plain' || !/\{\{|[\[<>]/.test( this.map.get( this.key ) ) ) {
// Fall back to mw.msg's simple parser
return oldParser.apply( this );
}
/**
* Base library for MediaWiki.
*
+ * Exposed as globally as `mediaWiki` with `mw` as shortcut.
+ *
* @class mw
* @alternateClassName mediaWiki
* @singleton
*
* Format defaults to 'text'.
*
+ * @example
+ *
+ * var obj, str;
+ * mw.messages.set( {
+ * 'hello': 'Hello world',
+ * 'hello-user': 'Hello, $1!',
+ * 'welcome-user': 'Welcome back to $2, $1! Last visit by $1: $3'
+ * } );
+ *
+ * obj = new mw.Message( mw.messages, 'hello' );
+ * mw.log( obj.text() );
+ * // Hello world
+ *
+ * obj = new mw.Message( mw.messages, 'hello-user', [ 'John Doe' ] );
+ * mw.log( obj.text() );
+ * // Hello, John Doe!
+ *
+ * obj = new mw.Message( mw.messages, 'welcome-user', [ 'John Doe', 'Wikipedia', '2 hours ago' ] );
+ * mw.log( obj.text() );
+ * // Welcome back to Wikipedia, John Doe! Last visit by John Doe: 2 hours ago
+ *
+ * // Using mw.message shortcut
+ * obj = mw.message( 'hello-user', 'John Doe' );
+ * mw.log( obj.text() );
+ * // Hello, John Doe!
+ *
+ * // Using mw.msg shortcut
+ * str = mw.msg( 'hello-user', 'John Doe' );
+ * mw.log( str );
+ * // Hello, John Doe!
+ *
+ * // Different formats
+ * obj = new mw.Message( mw.messages, 'hello-user', [ 'John "Wiki" <3 Doe' ] );
+ *
+ * obj.format = 'text';
+ * str = obj.toString();
+ * // Same as:
+ * str = obj.text();
+ *
+ * mw.log( str );
+ * // Hello, John "Wiki" <3 Doe!
+ *
+ * mw.log( obj.escaped() );
+ * // Hello, John "Wiki" <3 Doe!
+ *
* @class mw.Message
*
* @constructor
* Map of configuration values
*
* Check out [the complete list of configuration values](https://www.mediawiki.org/wiki/Manual:Interface/JavaScript#mw.config)
- * on MediaWiki.org.
+ * on mediawiki.org.
*
- * If `$wgLegacyJavaScriptGlobals` is true, this Map will put its values in the
- * global window object.
+ * If `$wgLegacyJavaScriptGlobals` is true, this Map will add its values to the
+ * global `window` object.
*
* @property {mw.Map} config
*/
- // Dummy placeholder. Re-assigned in ResourceLoaderStartupModule with an instance of `mw.Map`.
+ // Dummy placeholder. Re-assigned in ResourceLoaderStartupModule to an instance of `mw.Map`.
config: null,
/**
* This was reserved for future use but never ended up being used.
*
* @deprecated since 1.22: Let deprecated identifiers keep their original name
- * and use mw.log#deprecate to create an access container for tracking.
+ * and use mw.log#deprecate to create an access container for tracking.
* @property
*/
legacy: {},
/**
* Get a message object.
*
- * Similar to wfMessage() in MediaWiki PHP.
+ * Shorcut for `new mw.Message( mw.messages, key, parameters )`.
*
+ * @see mw.Message
* @param {string} key Key of message to get
* @param {Mixed...} parameters Parameters for the $N replacements in messages.
* @return {mw.Message}
},
/**
- * Get a message string using 'text' format.
+ * Get a message string using the (default) 'text' format.
*
- * Similar to wfMsg() in MediaWiki PHP.
+ * Shortcut for `mw.message( key, parameters... ).text()`.
*
* @see mw.Message
* @param {string} key Key of message to get
mw.loader.work();
}
- function sortQuery(o) {
+ function sortQuery( o ) {
var sorted = {}, key, a = [];
for ( key in o ) {
if ( hasOwn.call( o, key ) ) {
/**
* Register a source.
*
- * @param {string} id Short lowercase a-Z string representing a source, only used internally.
- * @param {Object} props Object containing only the loadScript property which is a url to
- * the load.php location of the source.
+ * The #work method will use this information to split up requests by source.
+ *
+ * mw.loader.addSource( 'mediawikiwiki', { loadScript: '//www.mediawiki.org/w/load.php' } );
+ *
+ * @param {string} id Short string representing a source wiki, used internally for
+ * registered modules to indicate where they should be loaded from (usually lowercase a-z).
+ * @param {Object} props
+ * @param {string} props.loadScript Url to the load.php entry point of the source wiki.
* @return {boolean}
*/
addSource: function ( id, props ) {
/**
* Execute a function as soon as one or more required modules are ready.
*
+ * Example of inline dependency on OOjs:
+ *
+ * mw.loader.using( 'oojs', function () {
+ * OO.compare( [ 1 ], [ 1 ] );
+ * } );
+ *
* @param {string|Array} dependencies Module name or array of modules names the callback
* dependends on to be ready before executing
* @param {Function} [ready] callback to execute when all dependencies are ready
* Get the version of a module.
*
* @param {string} module Name of module to get version for
+ * @return {string|null} The version, or null if the module (or its version) is not
+ * in the registry.
*/
getVersion: function ( module ) {
if ( registry[module] !== undefined && registry[module].version !== undefined ) {
},
/**
- * Get names of all registered modules.
+ * Get the names of all registered modules.
*
* @return {Array}
*/
mw.config.get( 'skin' ),
mw.config.get( 'wgResourceLoaderStorageVersion' ),
mw.config.get( 'wgUserLanguage' )
- ].join(':');
+ ].join( ':' );
},
/**
mw.loader.store.items = data.items;
return;
}
- } catch (e) {}
+ } catch ( e ) {}
if ( raw === undefined ) {
// localStorage failed; disable store
JSON.stringify( descriptor.style ),
JSON.stringify( descriptor.messages )
];
+ // Attempted workaround for a possible Opera bug (bug 57567).
+ // This regex should never match under sane conditions.
+ if ( /^\s*\(/.test( args[1] ) ) {
+ args[1] = 'function' + args[1];
+ log( 'Detected malformed function stringification (bug 57567)' );
+ }
} catch ( e ) {
return;
}
- mw.loader.store.items[key] = 'mw.loader.implement(' + args.join(',') + ');';
+ mw.loader.store.items[key] = 'mw.loader.implement(' + args.join( ',' ) + ');';
mw.loader.store.update();
},
* pages are loaded with different module sets, the possibility exists that
* modules saved by one page will be clobbered by another. But the impact would
* be minor and the problem would be corrected by subsequent page views.
+ *
+ * @method
*/
update: ( function () {
var timer;
return {
/**
* Escape a string for HTML. Converts special characters to HTML entities.
+ *
+ * mw.html.escape( '< > \' & "' );
+ * // Returns < > ' & "
+ *
* @param {string} s The string to escape
*/
escape: function ( s ) {
map = {
// SimpleSearch is broken in Opera < 9.6
opera: [['>=', 9.6]],
+ // Older Konquerors are unable to position the suggestions correctly (bug 50805)
+ konqueror: [['>=', '4.11']],
docomo: false,
blackberry: false,
ipod: false,
$form = context.config.$region.closest( 'form' );
formAction = $form.attr( 'action' );
- baseHref = formAction + ( formAction.match(/\?/) ? '&' : '?' );
+ baseHref = formAction + ( formAction.match( /\?/ ) ? '&' : '?' );
linkParams = {};
$.each( $form.serializeArray(), function ( idx, obj ) {
// Generic selector for skins with multiple searchboxes (used by CologneBlue)
'.mw-searchInput'
];
- $( searchboxesSelectors.join(', ') )
+ $( searchboxesSelectors.join( ', ' ) )
.suggestions( {
fetch: function ( query ) {
var $el;
$region: $searchRegion
} );
+ // If the form includes any fallback fulltext search buttons, remove them
+ $searchInput.closest( 'form' ).find( '.mw-fallbackSearchButton' ).remove();
+
// In most skins (at least Monobook and Vector), the font-size is messed up in <body>.
// (they use 2 elements to get a sane font-height). So, instead of making exceptions for
// each skin or adding more stylesheets, just copy it from the active element so auto-fit.
--- /dev/null
+( function ( mw, $ ) {
+ 'use strict';
+
+ // Table of contents toggle
+ mw.hook( 'wikipage.content' ).add( function ( $content ) {
+
+ /**
+ * Hide/show the table of contents element
+ *
+ * @param {jQuery} $toggleLink A jQuery object of the toggle link.
+ */
+ function toggleToc( $toggleLink ) {
+ var $tocList = $content.find( '#toc ul:first' );
+
+ // This function shouldn't be called if there's no TOC,
+ // but just in case...
+ if ( $tocList.length ) {
+ if ( $tocList.is( ':hidden' ) ) {
+ $tocList.slideDown( 'fast' );
+ $toggleLink.text( mw.msg( 'hidetoc' ) );
+ $content.find( '#toc' ).removeClass( 'tochidden' );
+ $.cookie( 'mw_hidetoc', null, {
+ expires: 30,
+ path: '/'
+ } );
+ } else {
+ $tocList.slideUp( 'fast' );
+ $toggleLink.text( mw.msg( 'showtoc' ) );
+ $content.find( '#toc' ).addClass( 'tochidden' );
+ $.cookie( 'mw_hidetoc', '1', {
+ expires: 30,
+ path: '/'
+ } );
+ }
+ }
+ }
+
+ var $tocTitle, $tocToggleLink, hideTocCookie;
+ $tocTitle = $content.find( '#toctitle' );
+ $tocToggleLink = $content.find( '#togglelink' );
+ // Only add it if there is a TOC and there is no toggle added already
+ if ( $content.find( '#toc' ).length && $tocTitle.length && !$tocToggleLink.length ) {
+ hideTocCookie = $.cookie( 'mw_hidetoc' );
+ $tocToggleLink = $( '<a href="#" class="internal" id="togglelink"></a>' )
+ .text( mw.msg( 'hidetoc' ) )
+ .click( function ( e ) {
+ e.preventDefault();
+ toggleToc( $( this ) );
+ } );
+ $tocTitle.append(
+ $tocToggleLink
+ .wrap( '<span class="toctoggle"></span>' )
+ .parent()
+ .prepend( ' [' )
+ .append( '] ' )
+ );
+
+ if ( hideTocCookie === '1' ) {
+ toggleToc( $tocToggleLink );
+ }
+ }
+ } );
+
+}( mediaWiki, jQuery ) );
// Make sure we don't unset util.$content if it was preset and we don't find anything
return util.$content;
} )();
-
- // Table of contents toggle
- mw.hook( 'wikipage.content' ).add( function () {
- var $tocTitle, $tocToggleLink, hideTocCookie;
- $tocTitle = $( '#toctitle' );
- $tocToggleLink = $( '#togglelink' );
- // Only add it if there is a TOC and there is no toggle added already
- if ( $( '#toc' ).length && $tocTitle.length && !$tocToggleLink.length ) {
- hideTocCookie = $.cookie( 'mw_hidetoc' );
- $tocToggleLink = $( '<a href="#" class="internal" id="togglelink"></a>' )
- .text( mw.msg( 'hidetoc' ) )
- .click( function ( e ) {
- e.preventDefault();
- util.toggleToc( $(this) );
- } );
- $tocTitle.append(
- $tocToggleLink
- .wrap( '<span class="toctoggle"></span>' )
- .parent()
- .prepend( ' [' )
- .append( '] ' )
- );
-
- if ( hideTocCookie === '1' ) {
- util.toggleToc( $tocToggleLink );
- }
- }
- } );
},
/* Main body */
* This function returns the styleSheet object for convience (due to cross-browsers
* difference as to where it is located).
*
- * var sheet = mw.util.addCSS('.foobar { display: none; }');
- * $(foo).click(function () {
+ * var sheet = mw.util.addCSS( '.foobar { display: none; }' );
+ * $( foo ).click( function () {
* // Toggle the sheet on and off
* sheet.disabled = !sheet.disabled;
- * });
+ * } );
*
* @param {string} text CSS to be appended
* @return {CSSStyleSheet} Use .ownerNode to get to the `<style>` element.
* completed (including the animation).
* @return {Mixed} Boolean visibility of the toc (true if it's visible)
* or Null if there was no table of contents.
+ * @deprecated since 1.23 Use jQuery
*/
toggleToc: function ( $toggleLink, callback ) {
- var $tocList = $( '#toc ul:first' );
+ var ret, $tocList = $( '#toc ul:first' );
// This function shouldn't be called if there's no TOC,
// but just in case...
- if ( $tocList.length ) {
- if ( $tocList.is( ':hidden' ) ) {
- $tocList.slideDown( 'fast', callback );
- $toggleLink.text( mw.msg( 'hidetoc' ) );
- $( '#toc' ).removeClass( 'tochidden' );
- $.cookie( 'mw_hidetoc', null, {
- expires: 30,
- path: '/'
- } );
- return true;
- } else {
- $tocList.slideUp( 'fast', callback );
- $toggleLink.text( mw.msg( 'showtoc' ) );
- $( '#toc' ).addClass( 'tochidden' );
- $.cookie( 'mw_hidetoc', '1', {
- expires: 30,
- path: '/'
- } );
- return false;
- }
- } else {
+ if ( !$tocList.length ) {
return null;
}
+ ret = $tocList.is( ':hidden' );
+ $toggleLink.click();
+ $tocList.promise().done( callback );
+ return ret;
},
/**
// the ABNF:
// 1 * ( atext / "." ) "@" ldh-str 1*( "." ldh-str )
// With:
- // - atext : defined in RFC 5322 section 3.2.3
+ // - atext : defined in RFC 5322 section 3.2.3
// - ldh-str : defined in RFC 1034 section 3.5
//
// (see STD 68 / RFC 5234 http://tools.ietf.org/html/std68)
// RegExp is case insensitive
'i'
);
- return (null !== mailtxt.match( html5EmailRegexp ) );
+ return ( null !== mailtxt.match( html5EmailRegexp ) );
},
/**
--- /dev/null
+/UnicodeData.txt
+/allkeys.txt
+/ucd.all.grouped.xml
+/ucd.all.grouped.zip
-
-SPECIAL_TARGETS=Utf8Case.ser
+SPECIAL_TARGETS=Utf8Case.ser normalize-ar.ser normalize-ml.ser first-letters-root.ser
ALL_TARGETS=$(SPECIAL_TARGETS)
DIST_TARGETS=$(SPECIAL_TARGETS)
+UNICODE_VERSION=6.0.0
.PHONY: all dist clean
clean:
rm -f $(ALL_TARGETS)
-Utf8Case.ser : ../includes/normal/Utf8Case.php
- php serialize.php -o $@ $<
+Utf8Case.ser: UnicodeData.txt
+ php ../maintenance/language/generateUtf8Case.php
+
+normalize-ar.ser: UnicodeData.txt
+ php ../maintenance/language/generateNormalizerDataAr.php
+
+normalize-ml.ser:
+ php ../maintenance/language/generateNormalizerDataMl.php
+
+first-letters-root.ser: allkeys.txt ucd.all.grouped.xml
+ php ../maintenance/language/generateCollationData.php
+
+UnicodeData.txt:
+ wget http://www.unicode.org/Public/$(UNICODE_VERSION)/ucd/UnicodeData.txt
+
+allkeys.txt:
+ wget http://www.unicode.org/Public/UCA/$(UNICODE_VERSION)/allkeys.txt
+
+ucd.all.grouped.xml: ucd.all.grouped.zip
+ unzip ucd.all.grouped.zip ucd.all.grouped.xml
+ucd.all.grouped.zip:
+ wget http://www.unicode.org/Public/$(UNICODE_VERSION)/ucdxml/ucd.all.grouped.zip
+++ /dev/null
-<?php
-/**
- * Serialize variables found in input file and store the result in the
- * specified file.
- *
- * 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 ( !defined( 'MEDIAWIKI' ) ) {
- $wgNoDBParam = true;
- $optionsWithArgs = array( 'o' );
- require_once __DIR__ .'/../maintenance/commandLine.inc';
-
- $stderr = fopen( 'php://stderr', 'w' );
- if ( !isset( $args[0] ) ) {
- fwrite( $stderr, "No input file specified\n" );
- exit( 1 );
- }
- if ( wfIsWindows() ) {
- $files = array();
- foreach ( $args as $arg ) {
- $files = array_merge( $files, glob( $arg ) );
- }
- if ( !$files ) {
- fwrite( $stderr, "No files found\n" );
- }
- } else {
- $files = $args;
- }
-
- if ( isset( $options['o'] ) ) {
- $out = fopen( $options['o'], 'wb' );
- if ( !$out ) {
- fwrite( $stderr, "Unable to open file \"{$options['o']}\" for output\n" );
- exit( 1 );
- }
- } else {
- $out = fopen( 'php://stdout', 'wb' );
- }
-
- $vars = array();
- foreach ( $files as $inputFile ) {
- $vars = array_merge( $vars, getVars( $inputFile ) );
- }
- fwrite( $out, serialize( $vars ) );
- fclose( $out );
- exit( 0 );
-}
-
-//----------------------------------------------------------------------------
-
-function getVars( $_gv_filename ) {
- require $_gv_filename;
- $vars = get_defined_vars();
- unset( $vars['_gv_filename'] );
-
- # Clean up line endings
- if ( wfIsWindows() ) {
- $vars = unixLineEndings( $vars );
- }
- return $vars;
-}
-
-function unixLineEndings( $var ) {
- static $recursionLevel = 0;
- if ( $recursionLevel > 50 ) {
- global $stderr;
- fwrite( $stderr, "Error: Recursion limit exceeded. Possible circular reference in array variable.\n" );
- exit( 2 );
- }
-
- if ( is_array( $var ) ) {
- ++$recursionLevel;
- $var = array_map( 'unixLineEndings', $var );
- --$recursionLevel;
- } elseif ( is_string( $var ) ) {
- $var = str_replace( "\r\n", "\n", $var );
- }
- return $var;
-}
-*
-!cologneblue
+*/
+!cologneblue/
+!cologneblue/*
+!common/
+!common/*
+!modern/
+!modern/*
+!monobook/
+!monobook/*
+!vector/
+!vector/*
+
+*.php
!CologneBlue.php
-!common
-!modern
!Modern.php
-!monobook
!MonoBook.php
-!vector
!Vector.php
-!.gitignore
);
$personalUrls = $this->getPersonalTools();
- foreach ( array( 'logout', 'createaccount', 'login', 'anonlogin' ) as $key ) {
+ foreach ( array( 'logout', 'createaccount', 'login' ) as $key ) {
if ( $personalUrls[$key] ) {
$s[] = $this->makeListItem( $key, $personalUrls[$key], array( 'tag' => 'span' ) );
}
// Personal tools ("My pages")
$qbmyoptions = $this->getPersonalTools();
- foreach ( array( 'logout', 'createaccount', 'login', 'anonlogin' ) as $key ) {
+ foreach ( array( 'logout', 'createaccount', 'login', ) as $key ) {
$qbmyoptions[$key] = null;
}
parent::setupSkinUserCss( $out );
$styles = array( 'skins.common.interface', 'skins.vector.styles' );
- wfRunHooks( 'SkinVectorStyleModules', array( &$this, &$styles ) );
+ wfRunHooks( 'SkinVectorStyleModules', array( $this, &$styles ) );
$out->addModuleStyles( $styles );
}
<h3<?php $this->html( 'userlangattributes' ) ?>><label for="searchInput"><?php $this->msg( 'search' ) ?></label></h3>
<form action="<?php $this->text( 'wgScript' ) ?>" id="searchform">
<?php if ( $wgVectorUseSimpleSearch && $this->getSkin()->getUser()->getOption( 'vector-simplesearch' ) ) { ?>
- <div id="simpleSearch">
- <?php if ( $this->data['rtl'] ) { ?>
- <?php echo $this->makeSearchButton( 'image', array( 'id' => 'searchButton', 'src' => $this->getSkin()->getSkinStylePath( 'images/search-rtl.png' ), 'width' => '12', 'height' => '13' ) ); ?>
- <?php } ?>
- <?php echo $this->makeSearchInput( array( 'id' => 'searchInput', 'type' => 'text' ) ); ?>
- <?php if ( !$this->data['rtl'] ) { ?>
- <?php echo $this->makeSearchButton( 'image', array( 'id' => 'searchButton', 'src' => $this->getSkin()->getSkinStylePath( 'images/search-ltr.png' ), 'width' => '12', 'height' => '13' ) ); ?>
- <?php } ?>
+ <div id="simpleSearch">
<?php } else { ?>
- <div>
- <?php echo $this->makeSearchInput( array( 'id' => 'searchInput' ) ); ?>
- <?php echo $this->makeSearchButton( 'go', array( 'id' => 'searchGoButton', 'class' => 'searchButton' ) ); ?>
- <?php echo $this->makeSearchButton( 'fulltext', array( 'id' => 'mw-searchButton', 'class' => 'searchButton' ) ); ?>
+ <div>
<?php } ?>
- <input type='hidden' name="title" value="<?php $this->text( 'searchtitle' ) ?>"/>
+ <?php
+ echo $this->makeSearchInput( array( 'id' => 'searchInput' ) );
+ echo Html::hidden( 'title', $this->get( 'searchtitle' ) );
+ // We construct two buttons (for 'go' and 'fulltext' search modes), but only one will be
+ // visible and actionable at a time (they are overlaid on top of each other in CSS).
+ // * Browsers will use the 'fulltext' one by default (as it's the first in tree-order), which
+ // is desirable when they are unable to show search suggestions (either due to being broken
+ // or having JavaScript turned off).
+ // * The mediawiki.searchSuggest module, after doing tests for the broken browsers, removes
+ // the 'fulltext' button and handles 'fulltext' search itself; this will reveal the 'go'
+ // button and cause it to be used.
+ echo $this->makeSearchButton( 'fulltext', array( 'id' => 'mw-searchButton', 'class' => 'searchButton mw-fallbackSearchButton' ) );
+ echo $this->makeSearchButton( 'go', array( 'id' => 'searchButton', 'class' => 'searchButton' ) );
+ ?>
</div>
</form>
</div>
textarea {
overflow: auto;
width: 100%;
-}
-
-#editform textarea {
display: block;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
+++ /dev/null
-/**
- * Fixes textarea scrolling bug (bug #19334). The bug only occurs when a
- * percentage width is given, so instead of width: 100%, use min-width: 100%;
- * max-width: 100%. We also need to give a fixed width for the actual width
- * property for the hack to work, although the actual value (500px here) ends
- * up being ignored; min/max-width take precedence.
- *
- * More info: http://grantovich.net/posts/2009/06/that-weird-ie8-textarea-bug/
- */
-#wpTextbox1 {
- height: 390px;
- width: 500px;
- min-width: 100%;
- max-width: 100%;
-}
border: 1px solid #dddddd;
}
-/**
- * Edit forms
- */
-#editform textarea {
- display: block;
- -moz-box-sizing: border-box;
- -webkit-box-sizing: border-box;
- box-sizing: border-box;
-}
-
/**
* Basic styles for the user login and create account forms
*/
textarea {
width: 100%;
padding: .1em;
+ display: block;
+ -moz-box-sizing: border-box;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
}
select {
vertical-align: top;
font-weight: bold;
}
+dt {
+ font-weight: bold;
+}
+
p {
margin: 1em 0;
line-height: 1.2em;
}
#config-live-log {
- margin-right: 18em;
+ overflow: hidden;
+ min-width: 20em;
}
clear: both;
}
-#mw_trackbacks {
- border: solid 1px #bbbbff;
- background-color: #eeeeff;
- padding: 0.2em;
-}
-
/**
* Data table style
*
display: none;
}
-/* For developpers */
+/* For developers */
.xdebug-error {
position: absolute;
z-index: 99;
}
.mw-editsection,
-.toctoggle {
+.toctoggle,
+#jump-to-nav {
-moz-user-select: none;
-webkit-user-select: none;
-ms-user-select: none;
}
}
-win.redirectToFragment = function ( fragment ) {
+/**
+ * Legacy function to scroll to an id while viewing the page over a redirect.
+ * Superseeded by module 'mediawiki.action.view.redirectToFragment' in version 1.23.
+ * Kepted because cache can contain still inline script calls to this function.
+ * Should be removed in version 1.24.
+ * @deprecated since 1.23 Use mediawiki.action.view.redirectToFragment instead
+ */
+mw.log.deprecate( win, 'redirectToFragment', function ( fragment ) {
var webKitVersion,
match = navigator.userAgent.match( /AppleWebKit\/(\d+)/ );
if ( match ) {
} );
}
}
-};
+}, 'Use the module mediawiki.action.view.redirectToFragment instead.' );
/**
* User-agent sniffing.
return s;
};
-win.importStylesheet = function( page ) {
- return win.importStylesheetURI( mw.config.get( 'wgScript' ) + '?action=raw&ctype=text/css&title=' + mw.util.wikiUrlencode( page ) );
+win.importStylesheet = function ( page ) {
+ var uri = mw.config.get( 'wgScript' ) + '?title=' +
+ mw.util.wikiUrlencode( page ) +
+ '&action=raw&ctype=text/css';
+ return win.importStylesheetURI( uri );
};
win.importStylesheetURI = function( url, media ) {
textarea {
width: 100%;
padding: .1em;
-}
-#editform textarea {
+ display: block;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
box-sizing: border-box;
+++ /dev/null
-/**
- * LESS Stylesheet for collapsible nav
- */
-@import "mediawiki.mixins.less";
-
-#mw-panel.collapsible-nav {
- .portal {
- background-position: left top;
- background-repeat: no-repeat;
- .background-image('images/portal-break.png');
- padding: 0.25em 0 !important;
- margin: -11px 9px 10px 11px;
-
- h3 {
- font-size: @menu-main-heading-font-size;
- color: @collapsible-nav-heading-color;
- font-weight: normal;
- background-position: left center;
- background-repeat: no-repeat;
- .background-image-svg('images/arrow-expanded.svg', 'images/arrow-expanded.png');
- padding: @collapsible-nav-heading-padding;
- margin-bottom: 0;
-
- &:hover {
- cursor: pointer;
- text-decoration: none;
- }
-
- a {
- color: @collapsible-nav-heading-color;
- text-decoration: none;
- }
- }
-
- .body {
- margin: @collapsible-nav-body-margin;
- background-image: none !important;
- padding-top: 0;
- display: none;
-
- ul {
- li {
- padding: 0.25em 0;
- }
- }
- }
-
-
- /* First */
- &.first {
- background-image: none;
- margin-top: 0;
- h3 {
- display: none;
- }
- }
-
- /* Persistent */
- &.persistent {
- .body {
- display: block;
- margin-left: 0.5em;
- }
-
- h3 {
- background-image: none !important;
- padding-left: 0.7em;
- cursor: default;
- }
- }
-
- /* Collapsed */
- &.collapsed {
- h3 {
- color: @collapsible-nav-heading-collapsed-color;
- background-position: left center;
- background-repeat: no-repeat;
- .background-image-svg('images/arrow-collapsed-ltr.svg', 'images/arrow-collapsed-ltr.png');
- margin-bottom: 0;
-
- &:hover {
- text-decoration: underline;
- }
-
- a {
- color: @collapsible-nav-heading-collapsed-color;
- }
- }
- }
- }
-}
--- /dev/null
+/**
+ * LESS Stylesheet for collapsible nav
+ */
+@import "mediawiki.mixins.less";
+
+#mw-panel.collapsible-nav {
+ .portal {
+ background-position: left top;
+ background-repeat: no-repeat;
+ .background-image('images/portal-break.png');
+ padding: 0.25em 0 !important;
+ margin: -11px 9px 10px 11px;
+
+ h3 {
+ font-size: @menu-main-heading-font-size;
+ color: @collapsible-nav-heading-color;
+ font-weight: normal;
+ background-position: left center;
+ background-repeat: no-repeat;
+ .background-image-svg('images/arrow-expanded.svg', 'images/arrow-expanded.png');
+ padding: @collapsible-nav-heading-padding;
+ margin-bottom: 0;
+
+ &:hover {
+ cursor: pointer;
+ text-decoration: none;
+ }
+
+ a {
+ color: @collapsible-nav-heading-color;
+ text-decoration: none;
+ }
+ }
+
+ .body {
+ margin: @collapsible-nav-body-margin;
+ background-image: none !important;
+ padding-top: 0;
+ display: none;
+
+ ul {
+ li {
+ padding: 0.25em 0;
+ }
+ }
+ }
+
+
+ /* First */
+ &.first {
+ background-image: none;
+ margin-top: 0;
+ h3 {
+ display: none;
+ }
+ }
+
+ /* Persistent */
+ &.persistent {
+ .body {
+ display: block;
+ margin-left: 0.5em;
+ }
+
+ h3 {
+ background-image: none !important;
+ padding-left: 0.7em;
+ cursor: default;
+ }
+ }
+
+ /* Collapsed */
+ &.collapsed {
+ h3 {
+ color: @collapsible-nav-heading-collapsed-color;
+ background-position: left center;
+ background-repeat: no-repeat;
+ .background-image-svg('images/arrow-collapsed-ltr.svg', 'images/arrow-collapsed-ltr.png');
+ margin-bottom: 0;
+
+ &:hover {
+ text-decoration: underline;
+ }
+
+ a {
+ color: @collapsible-nav-heading-collapsed-color;
+ }
+ }
+ }
+ }
+}
--- /dev/null
+/*
+ * Any rules which should not be flipped automatically in right-to-left situations should be
+ * prepended with @noflip in a comment block.
+ *
+ * This stylesheet employs a few CSS trick to accomplish compatibility with a wide range of web
+ * browsers. The most common trick is to use some styles in IE6 only. This is accomplished by using
+ * a rule that makes things work in IE6, and then following it with a rule that begins with
+ * "html > body" or use a child selector ">", which is ignored by IE6 because it does not support
+ * the child selector. You can spot this by looking for the "OVERRIDDEN BY COMPLIANT BROWSERS" and
+ * "IGNORED BY IE6" comments.
+ */
+@import "mediawiki.mixins";
+
+/* Framework */
+html {
+ font-size: @html-font-size;
+}
+html,
+body {
+ height: 100%;
+ margin: 0;
+ padding: 0;
+ font-family: @content-font-family;
+}
+body {
+ background-color: @menu-background-color;
+ font-size: @body-font-size;
+}
+
+/* Content */
+div#content {
+ line-height: @content-line-height;
+ margin-left: 10em;
+ padding: @content-padding;
+ /* Border on top, left, and bottom side */
+ border: 1px solid @content-border-color;
+ border-right-width: 0;
+ /* Merge the border with tabs' one (in their background image) */
+ margin-top: -1px;
+ background-color: @body-background-color;
+ color: @content-font-color;
+ direction: ltr;
+}
+
+/* Hide empty portlets */
+div.emptyPortlet {
+ display: none;
+}
+
+ul {
+ list-style-type: disc;
+ .list-style-image('images/bullet-icon.png');
+}
+
+pre, .mw-code {
+ line-height: 1.3em;
+}
+
+/* Site Notice (includes notices from CentralNotice extension) */
+#siteNotice {
+ font-size: 0.8em;
+}
+
+#firstHeading {
+ padding-top: 0;
+ margin-top: 0;
+ font-size: @content-heading-font-size;
+}
+
+.redirectText {
+ font-size: 140%;
+}
+
+.redirectMsg img {
+ vertical-align: text-bottom;
+}
+
+#bodyContent {
+ position: relative;
+ width: 100%;
+ line-height: 1.5em;
+ font-size: @content-font-size;
+}
+
+/* Tooltips are outside of the normal body code, so this helps make the size of the text sensible */
+// FIXME: Should be part of jquery.tipsy.css
+.tipsy {
+ font-size: 0.8em;
+}
+
+/* Animate between standard and high definition layouts */
+body.vector-animateLayout {
+ div#content,
+ div#footer,
+ #left-navigation {
+ .transition(margin-left 250ms, padding 250ms;);
+ }
+
+ #p-logo {
+ .transition(left 250ms);
+ }
+
+ #mw-panel {
+ .transition(padding-right 250ms);
+ }
+
+ #p-search {
+ .transition(margin-right 250ms);
+ }
+
+ #p-personal {
+ .transition(right 250ms);
+ }
+
+ #mw-head-base {
+ .transition(margin-left 250ms);
+ }
+}
--- /dev/null
+// FIXME: This size of this CSS is ridiculous. Please refactor (see bug 54604)
+@import "mediawiki.mixins.less";
+
+div#content a.external {
+ background-position: center right;
+ background-repeat: no-repeat;
+ .background-image-svg('images/external-link-ltr-icon.svg', 'images/external-link-ltr-icon.png');
+ padding-right: 13px;
+}
+div#content a.external[href ^="https://"],
+.link-https {
+ background-position: center right;
+ background-repeat: no-repeat;
+ .background-image-svg('images/lock-icon.svg', 'images/lock-icon.png');
+ padding-right: 13px;
+}
+div#content a.external[href ^="mailto:"],
+.link-mailto {
+ background-position: center right;
+ background-repeat: no-repeat;
+ .background-image-svg('images/mail-icon.svg', 'images/mail-icon.png');
+ padding-right: 13px;
+}
+div#content a.external[href ^="news:"] {
+ background-position: center right;
+ background-repeat: no-repeat;
+ .background-image-svg('images/news-icon.svg', 'images/news-icon.png');
+ padding-right: 13px;
+}
+div#content a.external[href ^="ftp://"],
+.link-ftp {
+ background-position: center right;
+ background-repeat: no-repeat;
+ .background-image-svg('images/file-icon.svg', 'images/file-icon.png');
+ padding-right: 13px;
+}
+div#content a.external[href ^="irc://"],
+div#content a.external[href ^="ircs://"],
+.link-irc {
+ background-position: center right;
+ background-repeat: no-repeat;
+ .background-image-svg('images/talk-icon.svg', 'images/talk-icon.png');
+ padding-right: 13px;
+}
+div#content a.external[href $=".ogg"], div#content a.external[href $=".OGG"],
+div#content a.external[href $=".mid"], div#content a.external[href $=".MID"],
+div#content a.external[href $=".midi"], div#content a.external[href $=".MIDI"],
+div#content a.external[href $=".mp3"], div#content a.external[href $=".MP3"],
+div#content a.external[href $=".wav"], div#content a.external[href $=".WAV"],
+div#content a.external[href $=".wma"], div#content a.external[href $=".WMA"],
+.link-audio {
+ background-position: center right;
+ background-repeat: no-repeat;
+ .background-image-svg('images/audio-icon.svg', 'images/audio-icon.png');
+ padding-right: 13px;
+}
+div#content a.external[href $=".ogm"], div#content a.external[href $=".OGM"],
+div#content a.external[href $=".avi"], div#content a.external[href $=".AVI"],
+div#content a.external[href $=".mpeg"], div#content a.external[href $=".MPEG"],
+div#content a.external[href $=".mpg"], div#content a.external[href $=".MPG"],
+.link-video {
+ background-position: center right;
+ background-repeat: no-repeat;
+ .background-image-svg('images/video-icon.svg', 'images/video-icon.png');
+ padding-right: 13px;
+}
+div#content a.external[href $=".pdf"], div#content a.external[href $=".PDF"],
+div#content a.external[href *=".pdf#"], div#content a.external[href *=".PDF#"],
+div#content a.external[href *=".pdf?"], div#content a.external[href *=".PDF?"],
+.link-document {
+ background-position: center right;
+ background-repeat: no-repeat;
+ .background-image-svg('images/document-icon.svg', 'images/document-icon.png');
+ padding-right: 13px;
+}
--- /dev/null
+/* Footer */
+div#footer {
+ margin-left: 10em;
+ margin-top: 0;
+ padding: 0.75em;
+ direction: ltr;
+
+ ul {
+ list-style-type: none;
+ list-style-image: none;
+ margin: 0;
+ padding: 0;
+
+ li {
+ margin: 0;
+ padding: 0;
+ padding-top: 0.5em;
+ padding-bottom: 0.5em;
+ color: #333;
+ font-size: 0.7em;
+ }
+ }
+
+ #footer-icons {
+ float: right;
+
+ li {
+ float: left;
+ margin-left: 0.5em;
+ line-height: 2em;
+ text-align: right;
+ }
+ }
+
+ #footer-info {
+ li {
+ line-height: 1.4em;
+ }
+ }
+
+ #footer-places {
+ li {
+ float: left;
+ margin-right: 1em;
+ line-height: 2em;
+ }
+ }
+}
+
+body.ltr {
+ div#footer {
+ #footer-places {
+ /* @noflip */
+ float: left;
+ }
+ }
+}
--- /dev/null
+@import "mediawiki.mixins";
+@import "personalMenu";
+@import "collapsibleNav";
+@import "search";
+@import "tabs";
+
+/* Hide, but keep accessible for screen-readers */
+#mw-navigation h2 {
+ position: absolute;
+ top: -9999px;
+}
+
+/* Head */
+#mw-page-base {
+ height: 5em;
+ background-position: bottom left;
+ background-repeat: repeat-x;
+ .vertical-gradient(@body-background-color, @menu-background-color, 40%, 100%);
+}
+
+#mw-head-base {
+ margin-top: -5em;
+ margin-left: 10em;
+ height: 5em;
+}
+
+div#mw-head {
+ position: absolute;
+ top: 0;
+ right: 0;
+ width: 100%;
+
+ h3 {
+ margin: 0;
+ padding: 0;
+ }
+}
+
+/* Navigation Containers */
+#left-navigation {
+ float: left;
+ margin-left: 10em;
+ margin-top: 2.5em;
+ /* When right nav would overlap left nav, it's placed below it
+ (normal CSS floats behavior). This rule ensures that no empty space
+ is shown between them due to right nav's margin-top. Page layout
+ is still broken, but at least the nav overlaps only the page title
+ instead of half the content. */
+ margin-bottom: -2.5em;
+ /* IE 6 double-margin bug fix */
+ display: inline;
+}
+
+#right-navigation {
+ float: right;
+ margin-top: 2.5em;
+}
+
+/* Logo */
+#p-logo {
+ position: absolute;
+ top: -160px;
+ left: 0;
+ width: 10em;
+ height: 160px;
+
+ a {
+ display: block;
+ width: 10em;
+ height: 160px;
+ background-repeat: no-repeat;
+ background-position: center center;
+ text-decoration: none;
+ }
+}
+
+/* Panel */
+div#mw-panel {
+ font-size: @menu-main-font-size;
+ position: absolute;
+ top: 160px;
+ padding-top: 1em;
+ width: 10em;
+ left: 0;
+
+ div.portal {
+ padding-bottom: 1.5em;
+ direction: ltr;
+
+ h3 {
+ font-weight: normal;
+ color: #444;
+ padding: @menu-main-heading-padding;
+ cursor: default;
+ border: none;
+ font-size: @menu-main-heading-font-size;
+ }
+
+ div.body {
+ padding-top: 0.5em;
+ margin: @menu-main-body-margin;
+
+ .background-image('images/portal-break.png');
+ background-repeat: no-repeat;
+ background-position: top left;
+
+ ul {
+ list-style-type: none;
+ list-style-image: none;
+ padding: @menu-main-body-padding;
+ margin: 0;
+
+ li {
+ line-height: 1.125em;
+ padding: 0;
+ padding-bottom: 0.5em;
+ margin: 0;
+ font-size: @menu-main-body-font-size;
+ word-wrap: break-word;
+
+ a {
+ color: @menu-main-body-link-color;
+ &:visited {
+ color: @menu-main-body-link-visited-color;
+ }
+ }
+ }
+ }
+ }
+ }
+}
--- /dev/null
+/* mediawiki.notification */
+.skin-vector {
+ .mw-notification-area {
+ font-size: 0.8em;
+ }
+
+ .mw-notification-area-layout {
+ top: 7em;
+ }
+
+ .mw-notification {
+ background-color: #fff;
+ background-color: rgba(255, 255, 255, 0.93);
+ padding: 0.75em 1.5em;
+ border: solid 1px @content-border-color;
+ border-radius: 0.75em;
+ -webkit-box-shadow: 0 2px 10px 0 rgba(0, 0, 0, 0.125);
+ box-shadow: 0 2px 10px 0 rgba(0, 0, 0, 0.125);
+ }
+}
--- /dev/null
+/* Personal */
+#p-personal {
+ position: absolute;
+ top: 0.33em;
+ right: 0.75em;
+ /* Display on top of page tabs - bugs 37158, 48078 */
+ z-index: 100;
+
+ h3 {
+ display: none;
+ }
+
+ ul {
+ list-style-type: none;
+ list-style-image: none;
+ margin: 0;
+ padding-left: 10em; /* Keep from overlapping logo */
+ }
+
+ li {
+ line-height: 1.125em;
+ /* @noflip */
+ float: left;
+ margin-left: 0.75em;
+ margin-top: 0.5em;
+ font-size: @menu-personal-font-size;
+ white-space: nowrap;
+ }
+}
+
+/* Icon for Usernames */
+#pt-userpage,
+#pt-anonuserpage,
+#pt-login {
+ background-position: left top;
+ background-repeat: no-repeat;
+ /* SVG support using a transparent gradient to guarantee cross-browser
+ * compatibility (browsers able to understand gradient syntax support also SVG) */
+ .background-image-svg('images/user-icon.svg', 'images/user-icon.png');
+ padding-left: 15px !important;
+}
--- /dev/null
+/* Search */
+#p-search {
+ /* @noflip */
+ float: left;
+ margin-right: 0.5em;
+ margin-left: 0.5em;
+
+ h3 {
+ display: none;
+ }
+
+ form,
+ input {
+ margin: 0;
+ margin-top: 0.4em;
+ }
+}
+
+div#simpleSearch {
+ display: block;
+ width: 14em;
+ height: 1.4em;
+ margin-top: 0.65em;
+ position: relative;
+ min-height: 1px; /* Gotta trigger hasLayout for IE7 */
+ border: solid 1px #aaa;
+ color: black;
+ background-color: white;
+ .background-image('images/search-fade.png');
+ background-position: top left;
+ background-repeat: repeat-x;
+
+ // Styles for both the search input and the button
+ input {
+ position: absolute;
+ margin: 0;
+ padding: 0;
+ border: 0;
+ background-color: transparent;
+ color: black;
+ }
+
+ // The search input
+ #searchInput {
+ top: 0;
+ left: 0;
+ width: 90%;
+ padding: 0.2em 0 0.2em 0.2em;
+ font-size: 13px;
+ direction: ltr;
+
+ &:focus {
+ outline: none;
+ }
+
+ // These rules MAY NOT be merged because of how CSS requires browsers
+ // to parse unrecognized selectors!
+ &.placeholder {
+ color: #999;
+ }
+ &:-ms-input-placeholder {
+ color: #999;
+ }
+ &:-moz-placeholder {
+ color: #999;
+ }
+ &::-webkit-input-placeholder {
+ color: #999;
+ }
+
+ // Undo the styles Webkit browsers apply to type=search fields,
+ // we provide our own
+ -webkit-appearance: textfield;
+
+ &::-webkit-search-decoration,
+ &::-webkit-search-cancel-button,
+ &::-webkit-search-results-button,
+ &::-webkit-search-results-decoration {
+ -webkit-appearance: textfield;
+ }
+ }
+
+ // The buttons. They are displayed in the same position, and if both are
+ // present the fulltext search one obscures the 'Go' one.
+ #searchButton,
+ #mw-searchButton {
+ top: 0;
+ right: 0;
+ width: 10%;
+ height: 100%;
+ cursor: pointer;
+ /* Hide button text and replace it with the image. */
+ text-indent: 100%;
+ /* Needed to make IE6 respect the text-indent. */
+ line-height: 1;
+ /* Opera 12 on RTL flips the text in a funny way without this. */
+ /* @noflip */
+ direction: ltr;
+ white-space: nowrap;
+ overflow: hidden;
+ .background-image-svg('images/search-ltr.svg', 'images/search-ltr.png');
+ background-position: center center;
+ background-repeat: no-repeat;
+ }
+
+ #mw-searchButton {
+ z-index: 1;
+ }
+}
+
+// The following styles exist only for backwards-compatibility with
+// cached HTML and are to be removed before 1.23 release.
+
+/* Fix direction changed for awful hacks */
+.sitedir-ltr div#simpleSearch button#searchButton {
+ /* @noflip */
+ direction: ltr;
+}
+.sitedir-rtl div#simpleSearch button#searchButton {
+ /* @noflip */
+ direction: rtl;
+}
+
+div#simpleSearch button#searchButton {
+ position: absolute;
+ padding: 0;
+ padding-top: 0.3em;
+ padding-bottom: 0.2em;
+ padding-right: 0.4em;
+ margin: 0;
+ border: none;
+ background-image: none;
+ text-indent: 0;
+
+ /* OVERRIDDEN BY COMPLIANT BROWSERS */
+ img {
+ border: none;
+ margin: 0;
+ margin-top: -3px;
+ padding: 0;
+ }
+ /* IGNORED BY IE6 */
+ > img {
+ margin: 0;
+ }
+}
--- /dev/null
+/*
+Styling for namespace tabs (page, discussion) and views (read, edit, view history, watch and other actions)
+*/
+
+/* Navigation Labels */
+div.vectorTabs h3,
+div.vectorMenu h3 span {
+ display: none;
+}
+
+/* Namespaces and Views */
+div.vectorTabs {
+ /* @noflip */
+ float: left;
+ height: 2.5em;
+ .background-image('images/tab-break.png');
+ background-position: bottom left;
+ background-repeat: no-repeat;
+ padding-left: 1px;
+
+ ul {
+ /* @noflip */
+ float: left;
+ height: 100%;
+ list-style-type: none;
+ list-style-image: none;
+ margin: 0;
+ padding: 0;
+ .background-image('images/tab-break.png');
+ background-position: right bottom;
+ background-repeat: no-repeat;
+
+ li {
+ /* @noflip */
+ float: left;
+ line-height: 1.125em;
+ /* For IE6, overridden later to display:block by modern browsers */
+ display: inline-block;
+ height: 100%;
+ margin: 0;
+ padding: 0;
+ background-color: #f3f3f3;
+ .background-image('images/tab-normal-fade.png');
+ background-position: bottom left;
+ background-repeat: repeat-x;
+ white-space: nowrap;
+ }
+
+ /* IGNORED BY IE6 which doesn't support child selector */
+ > li {
+ display: block;
+ }
+ }
+
+ li {
+ &.new {
+ a,
+ a:visited{
+ color: #a55858;
+ }
+ }
+
+ &.selected {
+ .background-image('images/tab-current-fade.png');
+ a,
+ a:visited{
+ color: #333;
+ text-decoration: none;
+ }
+ }
+
+ &.icon {
+ a {
+ background-position: bottom right;
+ background-repeat: no-repeat;
+ }
+ }
+
+ a {
+ /* For IE6, overridden later to display:block by modern browsers */
+ display: inline-block;
+ height: 1.9em;
+ padding-left: 0.5em;
+ padding-right: 0.5em;
+ color: @menu-link-color;
+ cursor: pointer;
+ font-size: 0.8em;
+ }
+
+ /* Ignored by IE6 which doesn't support child selector */
+ > a {
+ display: block;
+ }
+ }
+
+ span {
+ display: inline-block;
+ .background-image('images/tab-break.png');
+ background-position: bottom right;
+ background-repeat: no-repeat;
+
+ a {
+ /* For IE6, overridden later to display:block by modern browsers */
+ display: inline-block;
+ padding-top: 1.25em;
+ }
+
+ /* Ignored by IE6 which doesn't support child selector */
+ > a {
+ /* @noflip */
+ float: left;
+ display: block;
+ }
+ }
+}
+
+/* Variants and Actions */
+div.vectorMenu {
+ /* @noflip */
+ direction: ltr;
+ /* @noflip */
+ float: left;
+ /* SVG support using a transparent gradient to guarantee cross-browser
+ * compatibility (browsers able to understand gradient syntax support also SVG) */
+ .background-image-svg('images/arrow-down-icon.svg', 'images/arrow-down-icon.png');
+ /* @noflip */
+ background-position: 100% 60%;
+ background-repeat: no-repeat;
+ cursor: pointer;
+}
+
+div.vectorMenuFocus {
+ /* SVG support using a transparent gradient to guarantee cross-browser
+ * compatibility (browsers able to understand gradient syntax support also SVG) */
+ .background-image-svg('images/arrow-down-focus-icon.svg', 'images/arrow-down-focus-icon.png');
+ background-position: 100% 60%;
+}
+
+body.rtl div.vectorMenu {
+ /* @noflip */
+ direction: rtl;
+}
+
+/* OVERRIDDEN BY COMPLIANT BROWSERS */
+div#mw-head div.vectorMenu h3 {
+ /* @noflip */
+ float: left;
+ .background-image('images/tab-break.png');
+ background-repeat: no-repeat;
+ background-position: bottom left;
+ margin-left: -1px;
+}
+
+/* IGNORED BY IE6 */
+div#mw-head div.vectorMenu > h3 {
+ background-image: none;
+}
+
+div#mw-head div.vectorMenu h4,
+div.vectorMenu#p-variants #mw-vector-current-variant {
+ display: inline-block;
+ float: left;
+ font-size: 0.8em;
+ padding-left: 0.5em;
+ padding-top: 1.375em;
+ font-weight: normal;
+ border: none;
+}
+
+/* OVERRIDDEN BY COMPLIANT BROWSERS */
+div.vectorMenu h3 a {
+ display: inline-block;
+ width: 24px;
+ height: 1.9em;
+ text-decoration: none;
+ .background-image('images/tab-break.png');
+ background-repeat: no-repeat;
+ background-position: bottom right;
+}
+
+/* IGNORED BY IE6 */
+div.vectorMenu h3 > a {
+ display: block;
+}
+
+div.vectorMenu div.menu {
+ position: relative;
+ display: none;
+ clear: both;
+ text-align: left;
+}
+
+/* OVERRIDDEN BY COMPLIANT BROWSERS */
+body.rtl div.vectorMenu div.menu {
+ /* @noflip */
+ margin-left: 24px;
+}
+
+/* IGNORED BY IE6 */
+body.rtl div.vectorMenu > div.menu {
+ /* @noflip */
+ margin-left: auto;
+}
+
+/* IGNORED BY IE6 */
+/* Also fixes old versions of FireFox */
+body.rtl div.vectorMenu > div.menu,
+x:-moz-any-link {
+ /* @noflip */
+ margin-left: 23px;
+}
+
+/* Enable forcing showing of the menu for accessibility */
+div.vectorMenu:hover div.menu,
+div.vectorMenu div.menuForceShow {
+ display: block;
+}
+
+div.vectorMenu ul {
+ position: absolute;
+ background-color: white;
+ border: solid 1px silver;
+ border-top-width: 0;
+ list-style-type: none;
+ list-style-image: none;
+ padding: 0;
+ margin: 0;
+ margin-left: -1px;
+ text-align: left;
+}
+
+/* Fixes old versions of FireFox */
+div.vectorMenu ul,
+x:-moz-any-link {
+ min-width: 5em;
+}
+
+/* Returns things back to normal in modern versions of FireFox */
+div.vectorMenu ul,
+x:-moz-any-link,
+x:default {
+ min-width: 0;
+}
+
+div.vectorMenu li {
+ padding: 0;
+ margin: 0;
+ text-align: left;
+ line-height: 1em;
+}
+
+/* OVERRIDDEN BY COMPLIANT BROWSERS */
+div.vectorMenu li a {
+ display: inline-block;
+ padding: 0.5em;
+ white-space: nowrap;
+ color: @menu-link-color;
+ cursor: pointer;
+ font-size: 0.8em;
+}
+
+/* IGNORED BY IE6 */
+div.vectorMenu li > a {
+ display: block;
+}
+
+div.vectorMenu li.selected a,
+div.vectorMenu li.selected a:visited {
+ color: #333;
+ text-decoration: none;
+}
+
+@import 'watchstar.less';
--- /dev/null
+/* Watch/Unwatch Icon Styling */
+#ca-unwatch.icon a,
+#ca-watch.icon a {
+ margin: 0;
+ padding: 0;
+ outline: none;
+ display: block;
+ width: 26px;
+ /* This hides the text but shows the background image */
+ padding-top: 3.1em;
+ margin-top: 0;
+ /* Only applied in IE6 */
+ margin-top: -0.8em !ie;
+ height: 0;
+ overflow: hidden;
+ background-position: 5px 60%;
+}
+#ca-unwatch.icon a {
+ .background-image-svg('images/unwatch-icon.svg', 'images/unwatch-icon.png');
+}
+#ca-watch.icon a {
+ .background-image-svg('images/watch-icon.svg', 'images/watch-icon.png');
+}
+#ca-unwatch.icon a:hover,
+#ca-unwatch.icon a:focus {
+ .background-image-svg('images/unwatch-icon-hl.svg', 'images/unwatch-icon-hl.png');
+}
+#ca-watch.icon a:hover,
+#ca-watch.icon a:focus {
+ .background-image-svg('images/watch-icon-hl.svg', 'images/watch-icon-hl.png');
+}
+#ca-unwatch.icon a.loading,
+#ca-watch.icon a.loading {
+ .background-image-svg('images/watch-icon-loading.svg', 'images/watch-icon-loading.png');
+ .rotation(700ms);
+ background-position: 50% 60%;
+ -webkit-transform-origin: 50% 57%;
+ transform-origin: 50% 57%;
+}
+#ca-unwatch.icon a span,
+#ca-watch.icon a span {
+ display: none;
+}
+++ /dev/null
-// FIXME: This size of this CSS is ridiculous. Please refactor (see bug 54604)
-@import "mediawiki.mixins.less";
-
-div#content a.external {
- background-position: center right;
- background-repeat: no-repeat;
- .background-image-svg('images/external-link-ltr-icon.svg', 'images/external-link-ltr-icon.png');
- padding-right: 13px;
-}
-div#content a.external[href ^="https://"],
-.link-https {
- background-position: center right;
- background-repeat: no-repeat;
- .background-image-svg('images/lock-icon.svg', 'images/lock-icon.png');
- padding-right: 13px;
-}
-div#content a.external[href ^="mailto:"],
-.link-mailto {
- background-position: center right;
- background-repeat: no-repeat;
- .background-image-svg('images/mail-icon.svg', 'images/mail-icon.png');
- padding-right: 13px;
-}
-div#content a.external[href ^="news:"] {
- background-position: center right;
- background-repeat: no-repeat;
- .background-image-svg('images/news-icon.svg', 'images/news-icon.png');
- padding-right: 13px;
-}
-div#content a.external[href ^="ftp://"],
-.link-ftp {
- background-position: center right;
- background-repeat: no-repeat;
- .background-image-svg('images/file-icon.svg', 'images/file-icon.png');
- padding-right: 13px;
-}
-div#content a.external[href ^="irc://"],
-div#content a.external[href ^="ircs://"],
-.link-irc {
- background-position: center right;
- background-repeat: no-repeat;
- .background-image-svg('images/talk-icon.svg', 'images/talk-icon.png');
- padding-right: 13px;
-}
-div#content a.external[href $=".ogg"], div#content a.external[href $=".OGG"],
-div#content a.external[href $=".mid"], div#content a.external[href $=".MID"],
-div#content a.external[href $=".midi"], div#content a.external[href $=".MIDI"],
-div#content a.external[href $=".mp3"], div#content a.external[href $=".MP3"],
-div#content a.external[href $=".wav"], div#content a.external[href $=".WAV"],
-div#content a.external[href $=".wma"], div#content a.external[href $=".WMA"],
-.link-audio {
- background-position: center right;
- background-repeat: no-repeat;
- .background-image-svg('images/audio-icon.svg', 'images/audio-icon.png');
- padding-right: 13px;
-}
-div#content a.external[href $=".ogm"], div#content a.external[href $=".OGM"],
-div#content a.external[href $=".avi"], div#content a.external[href $=".AVI"],
-div#content a.external[href $=".mpeg"], div#content a.external[href $=".MPEG"],
-div#content a.external[href $=".mpg"], div#content a.external[href $=".MPG"],
-.link-video {
- background-position: center right;
- background-repeat: no-repeat;
- .background-image-svg('images/video-icon.svg', 'images/video-icon.png');
- padding-right: 13px;
-}
-div#content a.external[href $=".pdf"], div#content a.external[href $=".PDF"],
-div#content a.external[href *=".pdf#"], div#content a.external[href *=".PDF#"],
-div#content a.external[href *=".pdf?"], div#content a.external[href *=".PDF?"],
-.link-document {
- background-position: center right;
- background-repeat: no-repeat;
- .background-image-svg('images/document-icon.svg', 'images/document-icon.png');
- padding-right: 13px;
-}
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ version="1.1"
+ width="12"
+ height="13"
+ id="svg2">
+ <defs
+ id="defs4" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ transform="translate(-894,-731.57648)"
+ id="layer1">
+ <path
+ d="m -0.75761414,8.9593897 a 5.177032,5.177032 0 1 1 -10.35406386,0 5.177032,5.177032 0 1 1 10.35406386,0 z"
+ transform="matrix(0.85040896,0,0,0.83575426,904.36465,729.3551)"
+ id="path2996"
+ style="fill:none;stroke:#6c6c6c;stroke-width:2.13510537;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ d="m 902.17653,740.39168 2.26569,2.6414"
+ id="path3766"
+ style="fill:none;stroke:#6c6c6c;stroke-width:2.20000005;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ </g>
+</svg>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ version="1.1"
+ width="12"
+ height="13"
+ id="svg2">
+ <defs
+ id="defs4" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ transform="translate(-894,-731.57648)"
+ id="layer1">
+ <path
+ d="m -0.75761414,8.9593897 a 5.177032,5.177032 0 1 1 -10.35406386,0 5.177032,5.177032 0 1 1 10.35406386,0 z"
+ transform="matrix(-0.85040896,0,0,0.83575426,895.63918,729.3551)"
+ id="path2996"
+ style="fill:none;stroke:#6c6c6c;stroke-width:2.13510537;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ d="m 897.8273,740.39168 -2.26569,2.6414"
+ id="path3766"
+ style="fill:none;stroke:#6c6c6c;stroke-width:2.20000005;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ </g>
+</svg>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="16"
+ height="16"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.48.4 r9939"
+ sodipodi:docname="watch-icon-hl.svg"
+ inkscape:export-filename="/home/m4tx/Pulpit/LOCAL/watch-icon-hl.png"
+ inkscape:export-xdpi="87.436836"
+ inkscape:export-ydpi="87.436836">
+ <defs
+ id="defs4">
+ <linearGradient
+ id="linearGradient3788">
+ <stop
+ style="stop-color:#c2edff;stop-opacity:1;"
+ offset="0"
+ id="stop3790" />
+ <stop
+ id="stop3796"
+ offset="0.5"
+ style="stop-color:#68bdff;stop-opacity:1;" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="1"
+ id="stop3792" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3788"
+ id="linearGradient3804"
+ x1="13.470111"
+ y1="14.363379"
+ x2="4.596477"
+ y2="3.3969929"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3788"
+ id="linearGradient3808"
+ gradientUnits="userSpaceOnUse"
+ x1="13.470111"
+ y1="14.363379"
+ x2="4.596477"
+ y2="3.3969929" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="8"
+ inkscape:cx="-3.451911"
+ inkscape:cy="5.714676"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ fit-margin-top="0"
+ fit-margin-left="0"
+ fit-margin-right="0"
+ fit-margin-bottom="0"
+ inkscape:window-width="1920"
+ inkscape:window-height="1041"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="1" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ <dc:creator>
+ <cc:Agent>
+ <dc:title>Mateusz "m4tx" Maćkowski</dc:title>
+ </cc:Agent>
+ </dc:creator>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(-693.14288,-698.64789)">
+ <path
+ inkscape:transform-center-y="-0.70705002"
+ transform="matrix(0.86225302,0,0,0.86225302,694.06156,700.58832)"
+ d="M 8.3337586,-0.92098331 10.85748,4.1926362 16.500695,5.0126434 12.417226,8.9930409 13.381202,14.613453 8.3337584,11.959854 3.286314,14.613452 4.2502902,8.9930409 0.16682217,5.012643 5.8100362,4.1926362 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0"
+ inkscape:flatsided="false"
+ sodipodi:arg2="-0.9424778"
+ sodipodi:arg1="-1.5707963"
+ sodipodi:r2="4.2936125"
+ sodipodi:r1="8.587225"
+ sodipodi:cy="7.6662416"
+ sodipodi:cx="8.3337584"
+ sodipodi:sides="5"
+ id="path3768"
+ style="fill:url(#linearGradient3804);fill-opacity:1;stroke:#c8b250;stroke-width:1.15975237000000009;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ sodipodi:type="star" />
+ </g>
+</svg>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="16"
+ height="16"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.48.4 r9939"
+ sodipodi:docname="watch-icon-fav.svg">
+ <defs
+ id="defs4">
+ <linearGradient
+ id="linearGradient3788">
+ <stop
+ style="stop-color:#c2edff;stop-opacity:1;"
+ offset="0"
+ id="stop3790" />
+ <stop
+ id="stop3796"
+ offset="0.5"
+ style="stop-color:#68bdff;stop-opacity:1;" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="1"
+ id="stop3792" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3788"
+ id="linearGradient3804"
+ x1="13.470111"
+ y1="14.363379"
+ x2="4.596477"
+ y2="3.3969929"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3788"
+ id="linearGradient3808"
+ gradientUnits="userSpaceOnUse"
+ x1="13.470111"
+ y1="14.363379"
+ x2="4.596477"
+ y2="3.3969929" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="8"
+ inkscape:cx="-6.951911"
+ inkscape:cy="5.714676"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ fit-margin-top="0"
+ fit-margin-left="0"
+ fit-margin-right="0"
+ fit-margin-bottom="0"
+ inkscape:window-width="1920"
+ inkscape:window-height="1014"
+ inkscape:window-x="0"
+ inkscape:window-y="27"
+ inkscape:window-maximized="1" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ <dc:creator>
+ <cc:Agent>
+ <dc:title>Mateusz "m4tx" Maćkowski</dc:title>
+ </cc:Agent>
+ </dc:creator>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(-693.14288,-698.64789)">
+ <path
+ inkscape:transform-center-y="-0.70705002"
+ transform="matrix(0.86225302,0,0,0.86225302,694.06156,700.58832)"
+ d="M 8.3337586,-0.92098331 10.85748,4.1926362 16.500695,5.0126434 12.417226,8.9930409 13.381202,14.613453 8.3337584,11.959854 3.286314,14.613452 4.2502902,8.9930409 0.16682217,5.012643 5.8100362,4.1926362 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0"
+ inkscape:flatsided="false"
+ sodipodi:arg2="-0.9424778"
+ sodipodi:arg1="-1.5707963"
+ sodipodi:r2="4.2936125"
+ sodipodi:r1="8.587225"
+ sodipodi:cy="7.6662416"
+ sodipodi:cx="8.3337584"
+ sodipodi:sides="5"
+ id="path3768"
+ style="fill:url(#linearGradient3804);fill-opacity:1;stroke:#7cb5d1;stroke-width:1.15975237;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ sodipodi:type="star" />
+ </g>
+</svg>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="16"
+ height="16"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.48.4 r9939"
+ sodipodi:docname="watch-icon-hl.svg">
+ <defs
+ id="defs4">
+ <linearGradient
+ id="linearGradient3788">
+ <stop
+ style="stop-color:#c2edff;stop-opacity:1;"
+ offset="0"
+ id="stop3790" />
+ <stop
+ id="stop3796"
+ offset="0.5"
+ style="stop-color:#68bdff;stop-opacity:1;" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="1"
+ id="stop3792" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3788"
+ id="linearGradient3804"
+ x1="13.470111"
+ y1="14.363379"
+ x2="4.596477"
+ y2="3.3969929"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3788"
+ id="linearGradient3808"
+ gradientUnits="userSpaceOnUse"
+ x1="13.470111"
+ y1="14.363379"
+ x2="4.596477"
+ y2="3.3969929" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="8"
+ inkscape:cx="-6.97632"
+ inkscape:cy="6.2476517"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ fit-margin-top="0"
+ fit-margin-left="0"
+ fit-margin-right="0"
+ fit-margin-bottom="0"
+ inkscape:window-width="1920"
+ inkscape:window-height="1014"
+ inkscape:window-x="0"
+ inkscape:window-y="27"
+ inkscape:window-maximized="1" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ <dc:creator>
+ <cc:Agent>
+ <dc:title>Mateusz "m4tx" Maćkowski</dc:title>
+ </cc:Agent>
+ </dc:creator>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(-693.14288,-698.64789)">
+ <path
+ sodipodi:type="star"
+ style="fill:#ffffff;fill-opacity:1;stroke:#c8b250;stroke-width:1.15975237;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="path3770"
+ sodipodi:sides="5"
+ sodipodi:cx="8.3337584"
+ sodipodi:cy="7.6662416"
+ sodipodi:r1="8.587225"
+ sodipodi:r2="4.2936125"
+ sodipodi:arg1="-1.5707963"
+ sodipodi:arg2="-0.9424778"
+ inkscape:flatsided="false"
+ inkscape:rounded="0"
+ inkscape:randomized="0"
+ d="M 8.3337586,-0.92098331 10.85748,4.1926362 16.500695,5.0126434 12.417226,8.9930409 13.381202,14.613453 8.3337584,11.959854 3.286314,14.613452 4.2502902,8.9930409 0.16682217,5.012643 5.8100362,4.1926362 z"
+ transform="matrix(0.86225302,0,0,0.86225302,694.06156,700.58832)"
+ inkscape:transform-center-y="-0.70705002" />
+ </g>
+</svg>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="16"
+ height="16"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.48.4 r9939"
+ sodipodi:docname="watch-icon-loading.svg">
+ <defs
+ id="defs4">
+ <linearGradient
+ id="linearGradient3788">
+ <stop
+ style="stop-color:#c2edff;stop-opacity:1;"
+ offset="0"
+ id="stop3790" />
+ <stop
+ id="stop3796"
+ offset="0.5"
+ style="stop-color:#68bdff;stop-opacity:1;" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="1"
+ id="stop3792" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3788"
+ id="linearGradient3804"
+ x1="13.470111"
+ y1="14.363379"
+ x2="4.596477"
+ y2="3.3969929"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3788"
+ id="linearGradient3808"
+ gradientUnits="userSpaceOnUse"
+ x1="13.470111"
+ y1="14.363379"
+ x2="4.596477"
+ y2="3.3969929" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="22.627417"
+ inkscape:cx="7.2850048"
+ inkscape:cy="6.4582896"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ fit-margin-top="0"
+ fit-margin-left="0"
+ fit-margin-right="0"
+ fit-margin-bottom="0"
+ inkscape:window-width="1920"
+ inkscape:window-height="1014"
+ inkscape:window-x="0"
+ inkscape:window-y="27"
+ inkscape:window-maximized="1" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ <dc:creator>
+ <cc:Agent>
+ <dc:title>Mateusz "m4tx" Maćkowski</dc:title>
+ </cc:Agent>
+ </dc:creator>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(-693.14288,-698.64789)">
+ <path
+ sodipodi:type="star"
+ style="fill:#ffffff;fill-opacity:1;stroke:#d1d1d1;stroke-width:1.15975237;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="path2998"
+ sodipodi:sides="5"
+ sodipodi:cx="8.3337584"
+ sodipodi:cy="7.6662416"
+ sodipodi:r1="8.587225"
+ sodipodi:r2="4.2936125"
+ sodipodi:arg1="-1.5707963"
+ sodipodi:arg2="-0.9424778"
+ inkscape:flatsided="false"
+ inkscape:rounded="0"
+ inkscape:randomized="0"
+ d="M 8.3337586,-0.92098331 10.85748,4.1926362 16.500695,5.0126434 12.417226,8.9930409 13.381202,14.613453 8.3337584,11.959854 3.286314,14.613452 4.2502902,8.9930409 0.16682217,5.012643 5.8100362,4.1926362 z"
+ transform="matrix(0.86225302,0,0,0.86225302,694.06156,700.58832)"
+ inkscape:transform-center-y="-0.70705002" />
+ </g>
+</svg>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="16"
+ height="16"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.48.4 r9939"
+ sodipodi:docname="watch-icon.svg">
+ <defs
+ id="defs4">
+ <linearGradient
+ id="linearGradient3788">
+ <stop
+ style="stop-color:#c2edff;stop-opacity:1;"
+ offset="0"
+ id="stop3790" />
+ <stop
+ id="stop3796"
+ offset="0.5"
+ style="stop-color:#68bdff;stop-opacity:1;" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="1"
+ id="stop3792" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3788"
+ id="linearGradient3804"
+ x1="13.470111"
+ y1="14.363379"
+ x2="4.596477"
+ y2="3.3969929"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3788"
+ id="linearGradient3808"
+ gradientUnits="userSpaceOnUse"
+ x1="13.470111"
+ y1="14.363379"
+ x2="4.596477"
+ y2="3.3969929" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="8"
+ inkscape:cx="17.836203"
+ inkscape:cy="7.206728"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ fit-margin-top="0"
+ fit-margin-left="0"
+ fit-margin-right="0"
+ fit-margin-bottom="0"
+ inkscape:window-width="1920"
+ inkscape:window-height="1014"
+ inkscape:window-x="0"
+ inkscape:window-y="27"
+ inkscape:window-maximized="1" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ <dc:creator>
+ <cc:Agent>
+ <dc:title>Mateusz "m4tx" Maćkowski</dc:title>
+ </cc:Agent>
+ </dc:creator>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(-693.14288,-698.64789)">
+ <path
+ sodipodi:type="star"
+ style="fill:#ffffff;fill-opacity:1;stroke:#7cb5d1;stroke-width:1.15975237;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="path2998"
+ sodipodi:sides="5"
+ sodipodi:cx="8.3337584"
+ sodipodi:cy="7.6662416"
+ sodipodi:r1="8.587225"
+ sodipodi:r2="4.2936125"
+ sodipodi:arg1="-1.5707963"
+ sodipodi:arg2="-0.9424778"
+ inkscape:flatsided="false"
+ inkscape:rounded="0"
+ inkscape:randomized="0"
+ d="M 8.3337586,-0.92098331 10.85748,4.1926362 16.500695,5.0126434 12.417226,8.9930409 13.381202,14.613453 8.3337584,11.959854 3.286314,14.613452 4.2502902,8.9930409 0.16682217,5.012643 5.8100362,4.1926362 z"
+ transform="matrix(0.86225302,0,0,0.86225302,694.06156,700.58832)"
+ inkscape:transform-center-y="-0.70705002" />
+ </g>
+</svg>
+++ /dev/null
-/*
- * Any rules which should not be flipped automatically in right-to-left situations should be
- * prepended with @noflip in a comment block.
- *
- * This stylesheet employs a few CSS trick to accomplish compatibility with a wide range of web
- * browsers. The most common trick is to use some styles in IE6 only. This is accomplished by using
- * a rule that makes things work in IE6, and then following it with a rule that begins with
- * "html > body" or use a child selector ">", which is ignored by IE6 because it does not support
- * the child selector. You can spot this by looking for the "OVERRIDDEN BY COMPLIANT BROWSERS" and
- * "IGNORED BY IE6" comments.
- */
-@import "mediawiki.mixins";
-
-/* Framework */
-html {
- font-size: @html-font-size;
-}
-html,
-body {
- height: 100%;
- margin: 0;
- padding: 0;
- font-family: @content-font-family;
-}
-body {
- background-color: #f6f6f6;
- font-size: @body-font-size;
-}
-/* Content */
-div#content {
- line-height: @content-line-height;
- margin-left: 10em;
- padding: @content-padding;
- /* Border on top, left, and bottom side */
- border: 1px solid #a7d7f9;
- border-right-width: 0;
- /* Merge the border with tabs' one (in their background image) */
- margin-top: -1px;
- background-color: white;
- color: @content-font-color;
- direction: ltr;
-}
-/* Hide, but keep accessible for screen-readers */
-#mw-navigation h2 {
- position: absolute;
- top: -9999px;
-}
-/* Head */
-#mw-page-base {
- height: 5em;
- background-color: white;
- .background-image('images/page-fade.png');
- background-position: bottom left;
- background-repeat: repeat-x;
-}
-#mw-head-base {
- margin-top: -5em;
- margin-left: 10em;
- height: 5em;
-}
-div#mw-head {
- position: absolute;
- top: 0;
- right: 0;
- width: 100%;
-}
-div#mw-head h3 {
- margin: 0;
- padding: 0;
-}
-/* Hide empty portlets */
-div.emptyPortlet {
- display: none;
-}
-/* Personal */
-#p-personal {
- position: absolute;
- top: 0.33em;
- right: 0.75em;
- /* Display on top of page tabs - bugs 37158, 48078 */
- z-index: 100;
-}
-#p-personal h3 {
- display: none;
-}
-#p-personal ul {
- list-style-type: none;
- list-style-image: none;
- margin: 0;
- padding-left: 10em; /* Keep from overlapping logo */
-}
-#p-personal li {
- line-height: 1.125em;
- /* @noflip */
- float: left;
- margin-left: 0.75em;
- margin-top: 0.5em;
- font-size: @menu-personal-font-size;
- white-space: nowrap;
-}
-/* Navigation Containers */
-#left-navigation {
- float: left;
- margin-left: 10em;
- margin-top: 2.5em;
- /* When right nav would overlap left nav, it's placed below it
- (normal CSS floats behavior). This rule ensures that no empty space
- is shown between them due to right nav's margin-top. Page layout
- is still broken, but at least the nav overlaps only the page title
- instead of half the content. */
- margin-bottom: -2.5em;
- /* IE 6 double-margin bug fix */
- display: inline;
-}
-#right-navigation {
- float: right;
- margin-top: 2.5em;
-}
-/* Navigation Labels */
-div.vectorTabs h3,
-div.vectorMenu h3 span {
- display: none;
-}
-/* Namespaces and Views */
-div.vectorTabs {
- /* @noflip */
- float: left;
- height: 2.5em;
-}
-div.vectorTabs {
- .background-image('images/tab-break.png');
- background-position: bottom left;
- background-repeat: no-repeat;
- padding-left: 1px;
-}
-div.vectorTabs ul {
- /* @noflip */
- float: left;
- height: 100%;
- list-style-type: none;
- list-style-image: none;
- margin: 0;
- padding: 0;
-}
-/* OVERRIDDEN BY COMPLIANT BROWSERS */
-div.vectorTabs ul li {
- /* @noflip */
- float: left;
- line-height: 1.125em;
- display: inline-block;
- height: 100%;
- margin: 0;
- padding: 0;
- background-color: #f3f3f3;
- .background-image('images/tab-normal-fade.png');
- background-position: bottom left;
- background-repeat: repeat-x;
- white-space: nowrap;
-}
-/* IGNORED BY IE6 */
-div.vectorTabs ul > li {
- display: block;
-}
-div.vectorTabs li.selected {
- .background-image('images/tab-current-fade.png');
-}
-/* OVERRIDDEN BY COMPLIANT BROWSERS */
-div.vectorTabs li a {
- display: inline-block;
- height: 1.9em;
- padding-left: 0.5em;
- padding-right: 0.5em;
- color: @menu-link-color;
- cursor: pointer;
- font-size: 0.8em;
-}
-/* IGNORED BY IE6 */
-div.vectorTabs li > a {
- display: block;
-}
-div.vectorTabs li.icon a {
- background-position: bottom right;
- background-repeat: no-repeat;
-}
-/* OVERRIDDEN BY COMPLIANT BROWSERS */
-div.vectorTabs span a {
- display: inline-block;
- padding-top: 1.25em;
-}
-/* IGNORED BY IE6 */
-div.vectorTabs span > a {
- /* @noflip */
- float: left;
- display: block;
-}
-div.vectorTabs span {
- display: inline-block;
- .background-image('images/tab-break.png');
- background-position: bottom right;
- background-repeat: no-repeat;
-}
-div.vectorTabs li.selected a,
-div.vectorTabs li.selected a:visited{
- color: #333;
- text-decoration: none;
-}
-div.vectorTabs li.new a,
-div.vectorTabs li.new a:visited{
- color: #a55858;
-}
-/* Variants and Actions */
-div.vectorMenu {
- /* @noflip */
- direction: ltr;
- /* @noflip */
- float: left;
- /* SVG support using a transparent gradient to guarantee cross-browser
- * compatibility (browsers able to understand gradient syntax support also SVG) */
- .background-image-svg('images/arrow-down-icon.svg', 'images/arrow-down-icon.png');
- /* @noflip */
- background-position: 100% 60%;
- background-repeat: no-repeat;
- cursor: pointer;
-}
-div.vectorMenuFocus {
- /* SVG support using a transparent gradient to guarantee cross-browser
- * compatibility (browsers able to understand gradient syntax support also SVG) */
- .background-image-svg('images/arrow-down-focus-icon.svg', 'images/arrow-down-focus-icon.png');
- background-position: 100% 60%;
-}
-body.rtl div.vectorMenu {
- /* @noflip */
- direction: rtl;
-}
-/* OVERRIDDEN BY COMPLIANT BROWSERS */
-div#mw-head div.vectorMenu h3 {
- /* @noflip */
- float: left;
- .background-image('images/tab-break.png');
- background-repeat: no-repeat;
- background-position: bottom left;
- margin-left: -1px;
-}
-/* IGNORED BY IE6 */
-div#mw-head div.vectorMenu > h3 {
- background-image: none;
-}
-div#mw-head div.vectorMenu h4,
-div.vectorMenu#p-variants #mw-vector-current-variant {
- display: inline-block;
- float: left;
- font-size: 0.8em;
- padding-left: 0.5em;
- padding-top: 1.375em;
- font-weight: normal;
- border: none;
-}
-/* OVERRIDDEN BY COMPLIANT BROWSERS */
-div.vectorMenu h3 a {
- display: inline-block;
- width: 24px;
- height: 1.9em;
- text-decoration: none;
- .background-image('images/tab-break.png');
- background-repeat: no-repeat;
- background-position: bottom right;
-}
-/* IGNORED BY IE6 */
-div.vectorMenu h3 > a {
- display: block;
-}
-div.vectorMenu div.menu {
- position: relative;
- display: none;
- clear: both;
- text-align: left;
-}
-/* OVERRIDDEN BY COMPLIANT BROWSERS */
-body.rtl div.vectorMenu div.menu {
- /* @noflip */
- margin-left: 24px;
-}
-/* IGNORED BY IE6 */
-body.rtl div.vectorMenu > div.menu {
- /* @noflip */
- margin-left: auto;
-}
-/* IGNORED BY IE6 */
-/* Also fixes old versions of FireFox */
-body.rtl div.vectorMenu > div.menu,
-x:-moz-any-link {
- /* @noflip */
- margin-left: 23px;
-}
-/* Enable forcing showing of the menu for accessibility */
-div.vectorMenu:hover div.menu,
-div.vectorMenu div.menuForceShow {
- display: block;
-}
-div.vectorMenu ul {
- position: absolute;
- background-color: white;
- border: solid 1px silver;
- border-top-width: 0;
- list-style-type: none;
- list-style-image: none;
- padding: 0;
- margin: 0;
- margin-left: -1px;
- text-align: left;
-}
-/* Fixes old versions of FireFox */
-div.vectorMenu ul,
-x:-moz-any-link {
- min-width: 5em;
-}
-/* Returns things back to normal in modern versions of FireFox */
-div.vectorMenu ul,
-x:-moz-any-link,
-x:default {
- min-width: 0;
-}
-div.vectorMenu li {
- padding: 0;
- margin: 0;
- text-align: left;
- line-height: 1em;
-}
-/* OVERRIDDEN BY COMPLIANT BROWSERS */
-div.vectorMenu li a {
- display: inline-block;
- padding: 0.5em;
- white-space: nowrap;
- color: @menu-link-color;
- cursor: pointer;
- font-size: 0.8em;
-}
-/* IGNORED BY IE6 */
-div.vectorMenu li > a {
- display: block;
-}
-div.vectorMenu li.selected a,
-div.vectorMenu li.selected a:visited {
- color: #333;
- text-decoration: none;
-}
-/* Search */
-#p-search h3 {
- display: none;
-}
-#p-search {
- /* @noflip */
- float: left;
-}
-#p-search {
- margin-right: 0.5em;
- margin-left: 0.5em;
-}
-#p-search form,
-#p-search input {
- margin: 0;
- margin-top: 0.4em;
-}
-div#simpleSearch {
- display: block;
- width: 14em;
- height: 1.4em;
- margin-top: 0.65em;
- position: relative;
- min-height: 1px; /* Gotta trigger hasLayout for IE7 */
- border: solid 1px #aaa;
- color: black;
- background-color: white;
- .background-image('images/search-fade.png');
- background-position: top left;
- background-repeat: repeat-x;
-}
-div#simpleSearch input:focus {
- outline: none;
-}
-div#simpleSearch input {
- color: black;
-}
-div#simpleSearch input.placeholder {
- color: #999;
-}
-div#simpleSearch input::-webkit-input-placeholder {
- color: #999;
-}
-div#simpleSearch input:-moz-placeholder {
- color: #999;
-}
-div#simpleSearch input:-ms-input-placeholder {
- color: #999;
-}
-div#simpleSearch input#searchInput {
- position: absolute;
- top: 0;
- left: 0;
- width: 90%;
- margin: 0;
- padding: 0;
- padding-left: 0.2em;
- padding-top: 0.2em;
- padding-bottom: 0.2em;
- outline: none;
- border: none;
- /*
- * DON'T PANIC! Browsers that won't scale this properly are the same browsers that have JS issues that prevent
- * this from ever being shown anyways.
- */
- font-size: 13px;
- background-color: transparent;
- direction: ltr;
-}
-div#simpleSearch button#searchButton {
- position: absolute;
- width: 10%;
- right: 0;
- top: 0;
- padding: 0;
- padding-top: 0.3em;
- padding-bottom: 0.2em;
- padding-right: 0.4em;
- margin: 0;
- border: none;
- cursor: pointer;
- background-color: transparent;
- background-image: none;
-}
-/* OVERRIDDEN BY COMPLIANT BROWSERS */
-div#simpleSearch button#searchButton img {
- border: none;
- margin: 0;
- margin-top: -3px;
- padding: 0;
-}
-/* IGNORED BY IE6 */
-div#simpleSearch button#searchButton > img {
- margin: 0;
-}
-/* Panel */
-div#mw-panel {
- font-size: @menu-main-font-size;
- position: absolute;
- top: 160px;
- padding-top: 1em;
- width: 10em;
- left: 0;
-}
-div#mw-panel div.portal {
- padding-bottom: 1.5em;
- direction: ltr;
-}
-div#mw-panel div.portal h3 {
- font-weight: normal;
- color: #444;
- padding: @menu-main-heading-padding;
- cursor: default;
- border: none;
- font-size: @menu-main-heading-font-size;
-}
-div#mw-panel div.portal div.body {
- padding-top: 0.5em;
- margin: @menu-main-body-margin;
-
- .background-image('images/portal-break.png');
- background-repeat: no-repeat;
- background-position: top left;
-}
-div#mw-panel div.portal div.body ul {
- list-style-type: none;
- list-style-image: none;
- padding: @menu-main-body-padding;
- margin: 0;
-}
-div#mw-panel div.portal div.body ul li {
- line-height: 1.125em;
- padding: 0;
- padding-bottom: 0.5em;
- margin: 0;
- font-size: @menu-main-body-font-size;
- word-wrap: break-word;
-}
-div#mw-panel div.portal div.body ul li a {
- color: @menu-main-body-link-color;
- &:visited {
- color: @menu-main-body-link-visited-color;
- }
-}
-
-/* Footer */
-div#footer {
- margin-left: 10em;
- margin-top: 0;
- padding: 0.75em;
- direction: ltr;
-}
-div#footer ul {
- list-style-type: none;
- list-style-image: none;
- margin: 0;
- padding: 0;
-}
-div#footer ul li {
- margin: 0;
- padding: 0;
- padding-top: 0.5em;
- padding-bottom: 0.5em;
- color: #333;
- font-size: 0.7em;
-}
-div#footer #footer-icons {
- float: right;
-}
-
-body.ltr div#footer #footer-places {
- /* @noflip */
- float: left;
-}
-div#footer #footer-info li {
- line-height: 1.4em;
-}
-div#footer #footer-icons li {
- float: left;
- margin-left: 0.5em;
- line-height: 2em;
- text-align: right;
-}
-div#footer #footer-places li {
- float: left;
- margin-right: 1em;
- line-height: 2em;
-}
-/* Logo */
-#p-logo {
- position: absolute;
- top: -160px;
- left: 0;
- width: 10em;
- height: 160px;
-}
-#p-logo a {
- display: block;
- width: 10em;
- height: 160px;
- background-repeat: no-repeat;
- background-position: center center;
- text-decoration: none;
-}
-
-ul {
- list-style-type: disc;
- .list-style-image('images/bullet-icon.png');
-}
-
-pre, .mw-code {
- line-height: 1.3em;
-}
-
-/* Site Notice (includes notices from CentralNotice extension) */
-#siteNotice {
- font-size: 0.8em;
-}
-#firstHeading {
- padding-top: 0;
- margin-top: 0;
- font-size: @content-heading-font-size;
-}
-
-/* Icon for Usernames */
-#pt-userpage,
-#pt-anonuserpage,
-#pt-login {
- background-position: left top;
- background-repeat: no-repeat;
- /* SVG support using a transparent gradient to guarantee cross-browser
- * compatibility (browsers able to understand gradient syntax support also SVG) */
- .background-image-svg('images/user-icon.svg', 'images/user-icon.png');
- padding-left: 15px !important;
-}
-
-.redirectText {
- font-size: 140%;
-}
-
-.redirectMsg img {
- vertical-align: text-bottom;
-}
-
-#bodyContent {
- position: relative;
- width: 100%;
- line-height: 1.5em;
- font-size: @content-font-size;
-}
-
-/* mediawiki.notification */
-.skin-vector .mw-notification-area {
- font-size: 0.8em;
-}
-.skin-vector .mw-notification-area-layout {
- top: 7em;
-}
-.skin-vector .mw-notification {
- background-color: #fff;
- background-color: rgba(255, 255, 255, 0.93);
- padding: 0.75em 1.5em;
- border: solid 1px #a7d7f9;
- border-radius: 0.75em;
- -webkit-box-shadow: 0 2px 10px 0 rgba(0, 0, 0, 0.125);
- box-shadow: 0 2px 10px 0 rgba(0, 0, 0, 0.125);
-}
-
-/* Watch/Unwatch Icon Styling */
-#ca-unwatch.icon a,
-#ca-watch.icon a {
- margin: 0;
- padding: 0;
- outline: none;
- display: block;
- width: 26px;
- /* This hides the text but shows the background image */
- padding-top: 3.1em;
- margin-top: 0;
- /* Only applied in IE6 */
- margin-top: -0.8em !ie;
- height: 0;
- overflow: hidden;
- .background-image('images/watch-icons.png');
-}
-#ca-unwatch.icon a {
- background-position: -43px 60%;
-}
-#ca-watch.icon a {
- background-position: 5px 60%;
-}
-#ca-unwatch.icon a:hover,
-#ca-unwatch.icon a:focus {
- background-position: -67px 60%;
-}
-#ca-watch.icon a:hover,
-#ca-watch.icon a:focus {
- background-position: -19px 60%;
-}
-#ca-unwatch.icon a.loading,
-#ca-watch.icon a.loading {
- .background-image('images/watch-icon-loading.gif');
- background-position: 5px 60%;
-}
-#ca-unwatch.icon a span,
-#ca-watch.icon a span {
- display: none;
-}
-div.vectorTabs ul {
- .background-image('images/tab-break.png');
- background-position: right bottom;
- background-repeat: no-repeat;
-}
-
-/* Tooltips are outside of the normal body code, so this helps make the size of the text sensible */
-.tipsy {
- font-size: 0.8em;
-}
-
-/* Animate between standard and high definition layouts */
-body.vector-animateLayout {
- div#content,
- div#footer,
- #left-navigation {
- .transition(margin-left 250ms, padding 250ms;);
- }
-
- #p-logo {
- .transition(left 250ms);
- }
-
- #mw-panel {
- .transition(padding-right 250ms);
- }
-
- #p-search {
- .transition(margin-right 250ms);
- }
-
- #p-personal {
- .transition(right 250ms);
- }
-
- #mw-head-base {
- .transition(margin-left 250ms);
- }
-}
@import "variables.less";
@media screen {
- @import "screen.less";
- @import "externalLinks.less";
- @import "collapsibleNav.less";
+ @import "components/common.less";
+ @import "components/navigation.less";
+ @import "components/footer.less";
+ @import 'components/notifications.less';
+ @import "components/externalLinks.less";
}
@media screen and (min-width: 982px) {
@body-font-size: 1em;
// Page content
+// FIXME: Use global variable since Echo and CentralNotice use this variable
+@content-border-color: #a7d7f9;
@content-font-family: sans-serif;
@content-font-color: black;
@content-font-size: 0.8em;
@content-padding: 1.25em 1.5em 1.5em 1.5em;
@content-heading-font-size: 1.6em;
@content-heading-font-family: sans-serif;
+@body-background-color: #fff;
+
+// Navigation
+@menu-background-color: #f6f6f6;
// Common menu
@menu-link-color: #0645ad;
'RevisionStorageTest' => "$testDir/phpunit/includes/RevisionStorageTest.php",
'WikiPageTest' => "$testDir/phpunit/includes/WikiPageTest.php",
- //db
- 'ORMTableTest' => "$testDir/phpunit/includes/db/ORMTableTest.php",
- 'PageORMTableForTesting' => "$testDir/phpunit/includes/db/ORMTableTest.php",
- 'DatabaseTestHelper' => "$testDir/phpunit/includes/db/DatabaseTestHelper.php",
-
# tests/phpunit/includes/api
'ApiFormatTestBase' => "$testDir/phpunit/includes/api/format/ApiFormatTestBase.php",
'ApiTestCase' => "$testDir/phpunit/includes/api/ApiTestCase.php",
# tests/phpunit/includes/db
'ORMRowTest' => "$testDir/phpunit/includes/db/ORMRowTest.php",
+ 'ORMTableTest' => "$testDir/phpunit/includes/db/ORMTableTest.php",
+ 'PageORMTableForTesting' => "$testDir/phpunit/includes/db/ORMTableTest.php",
+ 'DatabaseTestHelper' => "$testDir/phpunit/includes/db/DatabaseTestHelper.php",
- # tests/phpunit/includes/parser
- 'NewParserTest' => "$testDir/phpunit/includes/parser/NewParserTest.php",
- 'MediaWikiParserTest' => "$testDir/phpunit/includes/parser/MediaWikiParserTest.php",
+ # tests/phpunit/languages
+ 'LanguageClassesTestCase' => "$testDir/phpunit/languages/LanguageClassesTestCase.php",
# tests/phpunit/includes/libs
'GenericArrayObjectTest' => "$testDir/phpunit/includes/libs/GenericArrayObjectTest.php",
+ # tests/phpunit/maintenance
+ 'DumpTestCase' => "$testDir/phpunit/maintenance/DumpTestCase.php",
+
# tests/phpunit/media
'FakeDimensionFile' => "$testDir/phpunit/includes/media/FakeDimensionFile.php",
- # tests/phpunit/includes/site
- 'SiteTest' => "$testDir/phpunit/includes/site/SiteTest.php",
- 'TestSites' => "$testDir/phpunit/includes/site/TestSites.php",
-
# tests/phpunit/mocks
'MockFSFile' => "$testDir/phpunit/mocks/filebackend/MockFSFile.php",
'MockFileBackend' => "$testDir/phpunit/mocks/filebackend/MockFileBackend.php",
'MockImageHandler' => "$testDir/phpunit/mocks/media/MockImageHandler.php",
'MockSvgHandler' => "$testDir/phpunit/mocks/media/MockSvgHandler.php",
- # tests/phpunit/languages
- 'LanguageClassesTestCase' => "$testDir/phpunit/languages/LanguageClassesTestCase.php",
-
- # tests/phpunit/maintenance
- 'DumpTestCase' => "$testDir/phpunit/maintenance/DumpTestCase.php",
-
# tests/parser
+ 'NewParserTest' => "$testDir/phpunit/includes/parser/NewParserTest.php",
+ 'MediaWikiParserTest' => "$testDir/phpunit/includes/parser/MediaWikiParserTest.php",
'ParserTest' => "$testDir/parser/parserTest.inc",
'ParserTestParserHook' => "$testDir/parser/parserTestsParserHook.php",
+
+ # tests/phpunit/includes/site
+ 'SiteTest' => "$testDir/phpunit/includes/site/SiteTest.php",
+ 'TestSites' => "$testDir/phpunit/includes/site/TestSites.php",
);
* Bar
!!endarticle
+!!article
+Template:OpenTable
+!!text
+{|
+!!endarticle
+
###
### Basic tests
###
!! test
Non-word characters don't terminate tag names (bug 17663, 40670, 52022)
!! input
-<b→> doesn't work! </b>
-
-<bä> doesn't work! </b>
+<b→> doesn't work! </b→>
-<boo> works fine </b>
+<bä> doesn't work! </bä>
-<s.foo>foo</s>
+<boo> works fine </boo>
<s.foo>s.foo</s.foo>
<sub-ID#1>
!! result
-<p><b→> doesn't work! </b>
-</p><p><bä> doesn't work! </b>
-</p><p><boo> works fine </b>
-</p><p><s.foo>foo</s>
+<p><b→> doesn't work! </b→>
+</p><p><bä> doesn't work! </bä>
+</p><p><boo> works fine </boo>
</p><p><s.foo>s.foo</s.foo>
</p><p><sub-ID#1>
</p>
!! end
+!! test
+Isolated close tags should be treated as literal text (bug 52760)
+!! input
+</b>
+
+<s.foo>s</s>
+!! result
+<p></b>
+</p><p><s.foo>s</s>
+</p>
+!! end
+
###
### Special characters
###
!! end
+## PHP parser emits output which is broken
+!! test
+Unclosed HTML p-tags should be handled properly
+!! options
+parsoid
+!! input
+<div><p>foo</div>
+a
+
+b
+!! result
+<div data-parsoid='{"stx":"html"}'><p data-parsoid='{"stx":"html", "autoInsertedEnd":true}'>foo</p></div>
+<p>a</p>
+<p>b</p>
+!! end
+
###
### Preformatted text
###
</p>
!! end
+!! test
+Empty pre; pre inside other HTML tags (bug 54946)
+!! input
+a
+
+<div><pre>
+foo
+</pre></div>
+<pre></pre>
+!! result
+<p>a
+</p>
+<div><pre>
+foo
+</pre></div>
+<pre></pre>
+
+!! end
+
+!! test
+HTML pre followed by indent-pre
+!! input
+<pre>foo</pre>
+ bar
+!! result
+<pre>foo</pre>
+<pre>bar
+</pre>
+!! end
+
+!!test
+Block tag pre
+!!options
+parsoid
+!!input
+<p><pre>foo</pre></p>
+!!result
+<p data-parsoid='{"stx":"html","autoInsertedEnd":true,"dsr":[0,3,3,0]}'></p><pre data-parsoid='{"stx":"html","dsr":[3,17,5,6]}'>foo</pre><p data-parsoid='{"autoInsertedStart":true,"stx":"html","dsr":[17,21,0,null]}'></p>
+!!end
+
!!test
Templates: Indent-Pre: 1a. Templates that break a line should suppress <pre>
!!input
</pre>
!!end
+!! test
+Things that look like <pre> tags aren't treated as such
+!! input
+Barack Obama <President> of the United States
+!! result
+<p>Barack Obama <President> of the United States
+</p>
+!! end
+
+!! test
+Parsoid: handle pre with space after attribute
+!! options
+parsoid=wt2html
+!! input
+<pre style="width:50%;" >{{echo|foo}}</pre>
+!! result
+<pre style="width:50%;">{{echo|foo}}</pre>
+!! end
+
# TODO / maybe: fix wt2wt for this
!! test
Parsoid: Don't paragraph-wrap fosterable content
<p about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"{{echo|1=bar}}"}},"i":0}}]}'>bar</p>
!! end
+## Bug 56733
+!! test
+Templates parameters with special tokenizing behavior dont get modified because of arg escaping
+!! options
+parsoid
+!! input
+{{echo|a : b}}
+!! result
+<p about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"a : b"}},"i":0}}]}'>a<span typeof="mw:Placeholder" data-parsoid='{"isDisplayHack":true}'> </span>: b</p>
+!! end
+
###
### Parsoid-centric tests for testing RT edge cases for pre
###
!!test
3a. Indent-Pre and block tags (single-line html)
!!input
- <p> foo </p>
- <div> foo </div>
- <blockquote> foo </blockquote>
+ a <p> foo </p>
+ b <div> foo </div>
+ c <blockquote> foo </blockquote>
<span> foo </span>
!!result
- <p> foo </p>
- <div> foo </div>
- <blockquote> foo </blockquote>
+ a <p> foo </p>
+ b <div> foo </div>
+ c <blockquote> foo </blockquote>
<pre><span> foo </span>
</pre>
!!end
+!!test
+3c. Indent-Pre and block tags (multi-line html)
+!!input
+ a <span>foo</span>
+ b <div> foo </div>
+!!result
+<pre>a <span>foo</span>
+</pre>
+ b <div> foo </div>
+
+!!end
+
!!test
3b. Indent-Pre and block tags (pre-content on separate line)
!!input
!!end
+## NOTE: the leading white-space chars on empty line are significant
!! test
-5. White-space in indent-pre
-NOTE: the white-space char on 2nd line is significant
+5a. White-space in indent-pre
!! input
- a<br/>
+ a<br />
b
!! result
</pre>
!! end
+## NOTE: the leading white-space chars on empty line are significant
+!! test
+5b. White-space in indent-pre
+!! input
+ a
+
+ b
+
+
+ c
+!! result
+<pre>a
+
+b
+
+
+c
+</pre>
+!! end
+
+!! test
+5c. White-space in indent-pre
+!! input
+ ''a''
+ ''b''
+ ''c''
+!! result
+<pre><i>a</i>
+ <i>b</i>
+ <i>c</i>
+</pre>
+!! end
+
!! test
6. Pre-blocks should extend across lines with leading WS even when there is no wrappable content
!! input
<p><a rel="mw:ExtLink" href="http://example.com">http://example.com</a></p>
!! end
+!! test
+Parenthesis in external links, especially URL links
+!! options
+php
+!! input
+http://example.com)
+
+http://example.com/test)
+
+http://example.com/(test)
+
+http://example.com/((test)
+
+(http://example.com/(test))
+
+(http://example.com/(test)))))
+
+http://example.com/a)b
+
+[http://example.com) foo]
+!! result
+<p><a rel="nofollow" class="external free" href="http://example.com">http://example.com</a>)
+</p><p><a rel="nofollow" class="external free" href="http://example.com/test">http://example.com/test</a>)
+</p><p><a rel="nofollow" class="external free" href="http://example.com/(test)">http://example.com/(test)</a>
+</p><p><a rel="nofollow" class="external free" href="http://example.com/((test)">http://example.com/((test)</a>
+</p><p>(<a rel="nofollow" class="external free" href="http://example.com/(test))">http://example.com/(test))</a>
+</p><p>(<a rel="nofollow" class="external free" href="http://example.com/(test)))))">http://example.com/(test)))))</a>
+</p><p><a rel="nofollow" class="external free" href="http://example.com/a)b">http://example.com/a)b</a>
+</p><p><a rel="nofollow" class="external text" href="http://example.com)">foo</a>
+</p>
+!! end
+
+!! test
+Parenthesis in external links, especially URL links (Parsoid)
+!! options
+parsoid
+!! input
+http://example.com)
+
+http://example.com/test)
+
+http://example.com/(test)
+
+http://example.com/((test)
+
+(http://example.com/(test))
+
+(http://example.com/(test)))))
+
+http://example.com/a)b
+
+[http://example.com) foo]
+!! result
+<p><a rel="mw:ExtLink" href="http://example.com">http://example.com</a>)</p>
+<p><a rel="mw:ExtLink" href="http://example.com/test">http://example.com/test</a>)</p>
+<p><a rel="mw:ExtLink" href="http://example.com/(test)">http://example.com/(test)</a></p>
+<p><a rel="mw:ExtLink" href="http://example.com/((test)">http://example.com/((test)</a></p>
+<p>(<a rel="mw:ExtLink" href="http://example.com/(test))">http://example.com/(test))</a></p>
+<p>(<a rel="mw:ExtLink" href="http://example.com/(test)))))">http://example.com/(test)))))</a></p>
+<p><a rel="mw:ExtLink" href="http://example.com/a)b">http://example.com/a)b</a></p>
+<p><a rel="mw:ExtLink" href="http://example.com)">foo</a></p>
+!! end
+
+!! test
+Parenthesis in external links, w/ transclusion or comment
+!! options
+parsoid
+!! input
+(http://example.com/{{echo|hi}})
+
+(http://example.com<!-- hi -->)
+!! result
+<p>(<a data-mw='{"attribs":[[{"txt":"href"},{"html":"http://example.com/<span about=\"#mwt1\" typeof=\"mw:Transclusion\" data-mw=\"{&quot;parts&quot;:[{&quot;template&quot;:{&quot;target&quot;:{&quot;wt&quot;:&quot;echo&quot;,&quot;href&quot;:&quot;./Template:Echo&quot;},&quot;params&quot;:{&quot;1&quot;:{&quot;wt&quot;:&quot;hi&quot;}},&quot;i&quot;:0}}]}\" data-parsoid=\"{&quot;dsr&quot;:[20,31,null,null],&quot;pi&quot;:[[{&quot;k&quot;:&quot;1&quot;,&quot;spc&quot;:[&quot;&quot;,&quot;&quot;,&quot;&quot;,&quot;&quot;]}]]}\">hi</span>"}]]}' typeof="mw:ExpandedAttrs" about="#mwt2" rel="mw:ExtLink" href="http://example.com/hi" data-parsoid='{"stx":"url","a":{"href":"http://example.com/hi"},"sa":{"href":"http://example.com/{{echo|hi}}"},"dsr":[1,31,0,0]}'>http://example.com/hi</a>)</p>
+
+<p>(<a rel="mw:ExtLink" href="http://example.com" data-parsoid='{"stx":"url","a":{"href":"http://example.com"},"sa":{"href":"http://example.com<!-- hi -->"},"dsr":[35,64,0,0]}'>http://example.com</a>)</p>
+!! end
+
###
### Quotes
###
!! input
{||}
!! result
+
!! end
+
# Parsoid team replies: empty table tags are legal in HTML5
!! test
A table with no data. (parsoid)
!! options
-parsoid
+parsoid=wt2html
!! input
{||}
!! result
<table></table>
+
+!! end
+
+!! test
+A table with stray table end tags on start tag line (wt2html)
+!! options
+parsoid=wt2html
+!! input
+{|style="color: red;"|}
+
+{|style="color: red;" |}
+|foo
+|}
+
+{|style="color: red;"|} id="foo"
+|foo
+|}
+
+{|style="color: red;" |} id="foo"
+|foo
+|}
+!! result
+<table style="color: red;"></table>
+
+<table style="color: red;">
+<tbody><tr>
+<td>foo</td>
+</tr></tbody>
+</table>
+
+<table style="color: red;" id="foo">
+<tbody><tr>
+<td>foo</td>
+</tr></tbody>
+</table>
+
+<table style="color: red;" id="foo">
+<tbody><tr>
+<td>foo</td>
+</tr></tbody>
+</table>
+
+!! end
+
+!! test
+A table with no data (take 2) (parsoid)
+!! options
+parsoid
+!! input
+{|
+|}
+!! result
+<table></table>
!! end
# A table with nothing but a caption is invalid XHTML, we might want to render
<tr><td>baz</td></tr></tbody></table><b>quux</b>
!! end
+!! test
+Parsoid: newline inducing block nodes don't suppress <nowiki>
+!! options
+parsoid=html2wt
+!! input
+<nowiki> </nowiki>a
+
+= foo =
+!! result
+ a<h1>foo</h1>
+!! end
+
###
### Internal links
###
</p>
!! end
+!! test
+Piped link with extlink-like text
+!! input
+[[Main Page|[bar]]]
+[[Main Page|This is a [bar]]]
+!! result
+<p><a href="/wiki/Main_Page" title="Main Page">[bar]</a>
+<a href="/wiki/Main_Page" title="Main Page">This is a [bar]</a>
+</p>
+!! end
+
!! test
Link with multiple pipes
!! input
<p data-parsoid='{"dsr":[19,30,0,0]}'><a rel="mw:ExtLink" href="//en.wikipedia.org/wiki/Foo" data-parsoid='{"stx":"simple","a":{"href":"//en.wikipedia.org/wiki/Foo"},"sa":{"href":":en:Foo"},"isIW":true,"dsr":[19,30,null,1]}'>en:Foo</a></p>
!! end
+!! test
+Interwiki links that cannot be represented in wiki syntax
+!! options
+parsoid
+!! input
+[[meatball:ok]]
+[[meatball:ok#foo|ok with fragment]]
+[[meatball:ok_as_well?|ok ending with ? mark]]
+[http://de.wikipedia.org/wiki/Foo?action=history has query]
+[http://de.wikipedia.org/wiki/#foo is just fragment]
+
+!! result
+<p><a rel="mw:ExtLink" href="http://www.usemod.com/cgi-bin/mb.pl?ok">meatball:ok</a>
+<a rel="mw:ExtLink" href="http://www.usemod.com/cgi-bin/mb.pl?ok#foo">ok with fragment</a>
+<a rel="mw:ExtLink" href="http://www.usemod.com/cgi-bin/mb.pl?ok_as_well%3F">ok ending with ? mark</a>
+<a rel="mw:ExtLink" href="http://de.wikipedia.org/wiki/Foo?action=history">has query</a>
+<a rel="mw:ExtLink" href="http://de.wikipedia.org/wiki/#foo">is just fragment</a></p>
+!! end
+
###
### Interlanguage links
</p>
!!end
+!!test
+4. includeonly in table attributes
+!!input
+{|
+|- <noinclude>
+|-
+|a
+</noinclude>
+|- <includeonly>
+|-
+|b
+</includeonly>
+|}
+!!result
+<table>
+
+
+<tr>
+<td>a
+</td></tr>
+</table>
+
+!!end
+
###
### Testing parsing of templates where a template arg
### has the same name as the template itself.
<figure class="mw-default-size mw-halign-right" typeof="mw:Image"><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="220" width="1941"></a><figcaption>Caption text</figcaption></figure>
!! end
+!! test
+Image with caption, bug 53312 #1 (parsoid)
+!! options
+parsoid
+!! input
+[[File:Foobar.jpg|right|Caption page stuff]]
+!! result
+<figure class="mw-default-size mw-halign-right" typeof="mw:Image"><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="220" width="1941"></a><figcaption>Caption page stuff</figcaption></figure>
+!! end
+
+!! test
+Image with caption, bug 53312 #2 (parsoid)
+!! options
+parsoid
+!! input
+[[File:Foobar.jpg|right|Caption page=]]
+!! result
+<figure class="mw-default-size mw-halign-right" typeof="mw:Image"><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="220" width="1941"></a><figcaption>Caption page=</figcaption></figure>
+!! end
+
+!! test
+Image with caption, bug 53312 #3 (parsoid)
+!! options
+parsoid
+!! input
+[[File:Foobar.jpg|right|Caption page=stuff]]
+!! result
+<figure class="mw-default-size mw-halign-right" typeof="mw:Image"><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="220" width="1941"></a><figcaption>Caption page=stuff</figcaption></figure>
+!! end
+
!! test
Image with empty attribute (php)
!! options
SVG thumbnails with no language set
!! options
!! input
-[[File:Foobar.svg|thumb|width=200]]
+[[File:Foobar.svg|thumb|caption]]
!! result
-<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.svg" class="image"><img alt="" src="http://example.com/images/thumb/f/ff/Foobar.svg/180px-Foobar.svg.png" width="180" height="180" class="thumbimage" srcset="http://example.com/images/thumb/f/ff/Foobar.svg/270px-Foobar.svg.png 1.5x, http://example.com/images/thumb/f/ff/Foobar.svg/360px-Foobar.svg.png 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.svg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>width=200</div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.svg" class="image"><img alt="" src="http://example.com/images/thumb/f/ff/Foobar.svg/180px-Foobar.svg.png" width="180" height="180" class="thumbimage" srcset="http://example.com/images/thumb/f/ff/Foobar.svg/270px-Foobar.svg.png 1.5x, http://example.com/images/thumb/f/ff/Foobar.svg/360px-Foobar.svg.png 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.svg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>caption</div></div></div>
!! end
SVG thumbnails with language de
!! options
!! input
-[[File:Foobar.svg|thumb|width=200|lang=de]]
+[[File:Foobar.svg|thumb|caption|lang=de]]
!! result
-<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/index.php?title=File:Foobar.svg&lang=de" class="image"><img alt="" src="http://example.com/images/thumb/f/ff/Foobar.svg/langde-180px-Foobar.svg.png" width="180" height="180" class="thumbimage" srcset="http://example.com/images/thumb/f/ff/Foobar.svg/langde-270px-Foobar.svg.png 1.5x, http://example.com/images/thumb/f/ff/Foobar.svg/langde-360px-Foobar.svg.png 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.svg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>width=200</div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/index.php?title=File:Foobar.svg&lang=de" class="image"><img alt="" src="http://example.com/images/thumb/f/ff/Foobar.svg/langde-180px-Foobar.svg.png" width="180" height="180" class="thumbimage" srcset="http://example.com/images/thumb/f/ff/Foobar.svg/langde-270px-Foobar.svg.png 1.5x, http://example.com/images/thumb/f/ff/Foobar.svg/langde-360px-Foobar.svg.png 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.svg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>caption</div></div></div>
!! end
SVG thumbnails with invalid language code
!! options
!! input
-[[File:Foobar.svg|thumb|width=200|lang=invalid.language.code]]
+[[File:Foobar.svg|thumb|caption|lang=invalid.language.code]]
!! result
<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.svg" class="image"><img alt="" src="http://example.com/images/thumb/f/ff/Foobar.svg/180px-Foobar.svg.png" width="180" height="180" class="thumbimage" srcset="http://example.com/images/thumb/f/ff/Foobar.svg/270px-Foobar.svg.png 1.5x, http://example.com/images/thumb/f/ff/Foobar.svg/360px-Foobar.svg.png 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.svg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>lang=invalid.language.code</div></div></div>
#</p>
!! test
-Caption with a template in it
+Parsoid-specific image handling - caption with a template in it
!! options
parsoid
!! input
-[[Image:Foobar.jpg|thumb|200px|This caption has a {{echo|transclusion}} in it.]]
+[[File:Foobar.jpg|thumb|200x200px|This caption has a {{echo|transclusion}} in it.]]
!! result
<figure typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/200px-Foobar.jpg" height="23" width="200"></a><figcaption>This caption has a <span about="#mwt1" typeof="mw:Transclusion" data-mw="{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"transclusion"}},"i":0}}]}">transclusion</span> in it.</figcaption></figure>
!! end
!! test
-Caption with unbalanced tags in it
+Parsoid-specific image handling - caption with unbalanced tags in it
!! options
-parsoid
+parsoid=wt2html,wt2wt,html2html
!! input
foo
-[[Image:Foobar.jpg|thumb|200px|This caption has a <center>unbalanced tag in it.]]
+[[File:Foobar.jpg|thumb|200x200px|This caption has a <center>unbalanced tag in it.]]
bar
!! result
<p>foo</p>
<link rel="mw:PageProp/Category" href="Category:Foo#Bar">
!! end
+!! test
+Parsoid: Defaultsort
+!! options
+parsoid
+!! input
+{{DEFAULTSORT:Foo}}
+!! result
+<meta property="mw:PageProp/categorydefaultsort" content="Foo"/>
+!! end
+
###
### Inter-language links
###
</p>
!! end
+# TODO: generalize to PHP parser?
+!! test
+HTML5 tags
+!! options
+parsoid
+!! input
+<data value="5">five</data>
+<time datetime="2000-01-01T00:00Z">The new millenium started</time>
+<mark>This highlighted text</mark>
+!! result
+<p><data value="5">five</data>
+<time datetime="2000-01-01T00:00Z">The new millenium started</time>
+<mark>This highlighted text</mark></p>
+!! end
+
+!! test
+HTML tag with leading space is parsed as text
+!! input
+< div>foo< /div>
+!! result
+<p>< div>foo< /div>
+</p>
+!! end
###
### Nesting tests (see bug 41545, 50604, 51081)
!! end
!! test
-CSS safety test: vertical tab
+CSS safety test (all browsers): vertical tab (bug 55332 / CVE-2013-4567)
!! input
<p style="font-size: 100px; background-image:url\b(https://www.google.com/images/srpr/logo6w.png)">A</p>
!! result
!! end
!! test
-MSIE CSS safety test: Fullwidth
+MSIE 6 CSS safety test: Fullwidth (bug 55332)
!! input
<p style="font-size: 100px; color: expression((title='XSSed'),'red')">A</p>
<div style="top:EXPRESSION(alert())">B</div>
!! end
!! test
-MSIE CSS safety test: IPA extensions
+MSIE 6 CSS safety test: IPA extensions (bug 55332)
!! input
<div style="background-image:uʀʟ(javascript:alert())">A</div>
<p style="font-size: 100px; color: expʀessɪoɴ((title='XSSed'),'red')">B</p>
!! end
!! test
-MSIE CSS safety test: sup/sub script
+MSIE 6 CSS safety test: sup/sub script (bug 55332)
!! input
<div style="background-image:url⁽javascript:alert())">A</div>
<div style="background-image:url₍javascript:alert())">B</div>
!! end
!! test
-MSIE CSS safety test: Repetition markers
+Opera -o-link CSS
+!! input
+<div
+title="data:text/html,<img src=1 onerror=alert(1)>"
+style="-o-link:attr(title);-o-link-source:current">X</div>
+!! result
+<div title="data:text/html,<img src=1 onerror=alert(1)>" style="/* insecure input */">X</div>
+
+!! end
+
+!! test
+MSIE 6 CSS safety test: Repetition markers (bug 55332)
!! input
<p style="font-size: 100px; color: expres〱ion((title='XSSed'),'red')">A</p>
<p style="font-size: 100px; color: expresゝion((title='XSSed'),'red')">B</p>
</p>
!! end
+!! test
+Wrong option for formatNum (bug 56199)
+!! input
+{{formatnum:1,234.56|Random}}
+{{formatnum:1,234.56|EVERYTHING}}
+{{formatnum:1234.56|any argument that has the string 'NOSEP'}}
+!! result
+<p>1,234.56
+1,234.56
+1,234.56
+</p>
+!! end
+
!! test
Strip marker in grammar
!! options
</ol>
!!end
+## We don't bother wt2wt-ing non-standard whitespace
+!!test
+Ref: 16. Tokenizer should accept non-standard whitespace in <ref> and </ref> tags
+!!options
+parsoid=wt2html
+!!input
+A <ref >foo</ref >
+
+<references />
+!!result
+<p>A <span class="reference" data-mw='{"name":"ref","body":{"html":"foo"},"attrs":{}}' id="cite_ref-1-0" rel="dc:references" typeof="mw:Extension/ref"><a href="#cite_note-1">[1]</a></span></p>
+
+<ol class="references" typeof="mw:Extension/references" data-mw='{"name":"references","attrs":{}}'>
+<li id="cite_note-1"><span rel="mw:referencedBy"><a href="#cite_ref-1-0">↑</a></span> foo</li></ol>
+!!end
+
!!test
References: 1. references tag without any refs should be handled properly
!!options
A <ref group="a">foo</ref>
B <ref group="b">bar</ref>
-<references group='a' />
+<references group="a" />
!!result
<p>A <span about="#mwt2" class="reference" data-mw='{"name":"ref","body":{"html":"foo"},"attrs":{"group":"a"}}' id="cite_ref-1-0" rel="dc:references" typeof="mw:Extension/ref"><a href="#cite_note-1">[a 1]</a></span>
B <span about="#mwt4" class="reference" data-mw='{"name":"ref","body":{"html":"bar"},"attrs":{"group":"b"}}' id="cite_ref-1-0" rel="dc:references" typeof="mw:Extension/ref"><a href="#cite_note-1">[b 1]</a></span></p>
A <ref group="a">afoo</ref>
B <ref>bfoo</ref>
-<references group="a"/>
+<references group="a" />
C <ref>cfoo</ref>
!!options
parsoid
!!input
-{{echo|<references />}}
+<ref>Foo</ref> {{echo|<references />}}
!!result
-<ol class="references" about="#mwt2" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"<references />"}},"i":0}}]}'></ol>
+<span about="#mwt3" class="reference" data-mw='{"name":"ref","body":{"html":"Foo"},"attrs":{}}' id="cite_ref-1-0" rel="dc:references" typeof="mw:Extension/ref"><a href="#cite_note-1">[1]</a></span> <ol class="references" typeof="mw:Extension/references mw:Transclusion" about="#mwt4" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"<references />"}},"i":0}}]}'><li about="#cite_note-1" id="cite_note-1"><span rel="mw:referencedBy"><a href="#cite_ref-1-0">↑</a></span> Foo</li></ol>
!!end
!! test
!! test
Headings: 1. Nested inside html
+(New headings and existing headings are handled differently)
!! options
-parsoid
+parsoid=html2wt
!! input
-=<nowiki>=foo=</nowiki>=
+= =foo= =
-==<nowiki>=foo=</nowiki>==
+== =foo= ==
-===<nowiki>=foo=</nowiki>===
+=== =foo= ===
+=<nowiki>=foo=</nowiki>=
+==<nowiki>=foo=</nowiki>==
+===<nowiki>=foo=</nowiki>===
====<nowiki>=foo=</nowiki>====
-
=====<nowiki>=foo=</nowiki>=====
-
======<nowiki>=foo=</nowiki>======
+
!! result
-<h1><span typeof="mw:Nowiki">=foo=</span></h1>
-<h2><span typeof="mw:Nowiki">=foo=</span></h2>
-<h3><span typeof="mw:Nowiki">=foo=</span></h3>
-<h4><span typeof="mw:Nowiki">=foo=</span></h4>
-<h5><span typeof="mw:Nowiki">=foo=</span></h5>
-<h6><span typeof="mw:Nowiki">=foo=</span></h6>
+<h1>=foo=</h1>
+<h2>=foo=</h2>
+<h3>=foo=</h3>
+
+<h1 data-parsoid='{}'>=foo=</h1>
+<h2 data-parsoid='{}'>=foo=</h2>
+<h3 data-parsoid='{}'>=foo=</h3>
+<h4 data-parsoid='{}'>=foo=</h4>
+<h5 data-parsoid='{}'>=foo=</h5>
+<h6 data-parsoid='{}'>=foo=</h6>
!!end
!! test
Headings: 2. Outside heading nest on a single line <h1>foo</h1>*bar
!! options
-parsoid
+parsoid=html2wt
!! input
-=foo=
+= foo =
<nowiki>*</nowiki>bar
-=foo=
+= foo =
=bar
-=foo=
+= foo =
<nowiki>=bar=</nowiki>
!! result
<h1>foo</h1>*bar
!! test
Headings: 3. Nested inside html with wikitext split by html tags
!! options
-parsoid
+parsoid=html2wt
!! input
-=='''bold'''<nowiki>foo=</nowiki>=
+= ='''bold'''<nowiki>foo=</nowiki> =
!! result
<h1>=<b>bold</b><span typeof="mw:Nowiki">foo=</span></h1>
!!end
!! test
Headings: 4a. No escaping needed (testing just h1 and h2)
!! options
-parsoid
+parsoid=html2wt
!! input
-==foo=
+= =foo =
-=foo==
+= foo= =
= =foo= =
-==foo= bar=
+= =foo= bar =
-===foo==
+== =foo ==
-==foo===
+== foo= ==
-=''=''foo==
+= ''=''foo= =
-=<nowiki>=</nowiki>=
+= <nowiki>=</nowiki> =
!! result
<h1>=foo</h1>
<h1>foo=</h1>
!! test
Headings: 4b. No escaping needed (inside p-tags)
!! options
-parsoid
+parsoid=html2wt
!! input
===
=foo= x
parsoid
!! input
<!--c0--><nowiki>=a=</nowiki>
-<!--c1-->
-<nowiki>=a=</nowiki> <!--c2--> <!--c3-->
+
+<!--c1--><nowiki>=a=</nowiki> <!--c2--> <!--c3-->
!! result
<p><!--c0-->=a=</p>
<p><!--c1-->=a= <!--c2--> <!--c3--></p>
*''foo''*bar
*[[Foo]]: bar
+
+*[[Foo]]*bar
!! result
<ul>
<li>foo*bar
<li><a rel="mw:WikiLink" href="Foo">Foo</a>: bar
</li>
</ul>
+<ul>
+<li><a rel="mw:WikiLink" href="Foo">Foo</a>*bar
+</li>
+</ul>
!!end
!! test
!! test
Tables: 2a. Nested in td
!! options
-parsoid
+parsoid=html2wt
!! input
{|
|<nowiki>foo|bar</nowiki>
+|-
+|x<div><nowiki>a|b</nowiki></div>
|}
!! result
<table><tbody><tr>
-<td><span typeof="mw:Nowiki">foo|bar</span></td></tr></tbody></table>
+<td>foo|bar</td></tr>
+<tr><td>x<div>a|b</div></td>
+</tbody></table>
!! end
!! test
bar|baz
+bar
-bar
+|-
+|x
+<div>a|b</div>
|}
!! result
<table><tbody>
<p>bar|baz
+bar
-bar</p></td></tr>
+<tr><td>x
+<div>a|b</div></td>
</tbody></table>
!! end
-### SSS FIXME: Disabled right now because accurate html2wt
-### on this snippet requires data-parsoid flags that we've
-### stripped out of these tests. We should scheme how we
-### we want to handle these kind of tests that require
-### data-parsoid flags for accurate html2wt serialization
-
!! test
Tables: 4d. No escaping needed
!! options
-disabled
+parsoid
!! input
{|
+|[[Foo]]-bar
||+1
||-2
|}
!! result
<table>
-<tr>
-<td>+1
-</td>
-<td>-2
-</td></tr></table>
-
+<tbody><tr><td><a rel="mw:WikiLink" href="./Foo">Foo</a>-bar</td>
+<td data-parsoid='{"startTagSrc":"|","attrSepSrc":"|"}'>+1</td>
+<td data-parsoid='{"startTagSrc":"|","attrSepSrc":"|"}'>-2</td></tr>
+</tbody></table>
!! end
#### --------------- Links ----------------
!! input
[http://google.com <nowiki>[google]</nowiki>]
[http://google.com <nowiki>google]</nowiki>]
+
+<nowiki>[http://google.com]</nowiki>
+
+<nowiki>[http://google.com google]</nowiki>
+
!! result
-<a href="http://google.com" rel="mw:ExtLink">[google]</a>
-<a href="http://google.com" rel="mw:ExtLink">google]</a>
+<p><a href="http://google.com" rel="mw:ExtLink">[google]</a>
+<a href="http://google.com" rel="mw:ExtLink">google]</a></p>
+<p>[http://google.com]</p>
+<p>[http://google.com google]</p>
!! end
!! test
''''foo'''
'''foo'''<nowiki/>'
'<nowiki/>'''foo'''<nowiki/>'
+''fools'<span> errand</span>''
+''<span>fool</span>'s errand''
!! result
<p><i>'foo'</i>
<i>''foo''</i>
'<b>foo</b>
<b>foo</b>'
'<b>foo</b>'</p>
+<i>fools'<span> errand</span></i>
+<i><span>fool</span>'s errand</i>
!! end
!! test
#### 1. a tags
#### 2. other tags
#### 3. multi-line html tag
+#### 4. extension tags
#### -----------------------------------------
!! test
1. a tags
4. extension tags
!! input
<nowiki><ref>foo</ref></nowiki>
+
+<nowiki><ref>bar</nowiki>
+
+baz<nowiki></ref></nowiki>
!! result
<p><ref>foo</ref>
+</p><p><ref>bar
+</p><p>baz</ref>
</p>
!! end
<td>b</td></tr></tbody></table>
!!end
+!!test
+Table in fosterable position
+!!options
+parsoid=wt2html,wt2wt
+!!input
+{{OpenTable}}
+<div>
+{|
+|}
+</div>
+|}
+!!result
+<div about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"OpenTable","href":"./Template:OpenTable"},"params":{},"i":0}},"\n<div>"]}' data-parsoid='{"stx":"html","autoInsertedEnd":true,"dsr":[0,19,null,null],"src":"{{OpenTable}}\n<div>","pi":[[]]}'></div><span about="#mwt1" data-parsoid="{}">
+</span>
+<table about="#mwt1" data-parsoid='{"autoInsertedEnd":true,"dsr":[null,19,2,0]}'></table>
+
+<table data-parsoid='{"dsr":[20,25,2,2]}'>
+</table>
+!!end
+
# -----------------------------------------------------------------
# The following section of tests are primarily to spec requirements
# around serialization of new/edited content.
<p>123</p><figure typeof="mw:Image/Thumb" class="mw-halign-right"><a href="./File:Wiki.png"><img src="http://192.168.142.128/mw/images/thumb/b/bc/Wiki.png/131px-Wiki.png" width="131" height="150" resource="./File:Wiki.png"></a></figure><p>456</p>
!!end
-# Wacky -- the leading newline in input is required because
-# that is what the serializer emits. To be fixed. Not fixing
-# the test because this test is required to test serialization of
-# new content and preferred whitespace style.
!! test
Lists: Serialize correctly even when list content is wrapped in p-tags (like VE does)
!! options
parsoid=html2wt
!! input
-
* foo
!! result
<ul>
</ul>
!! end
+!! test
+Lists: Serialize correctly even when list tags has unneeded whitespace between tags
+!! options
+parsoid=html2wt
+!! input
+* foo
+!! result
+<ul> <li>foo</li></ul>
+!! end
+
!! test
Don't strip leading whitespace when handling indent-pre suppressing tags
!! options
<div>foo</div>
<span>bar</span>
+
+<div>
+<span>foo</span>
+</div>
!! result
<p>foo</p>
<span>bar</span>
<div>foo</div>
<span>bar</span>
+
+<div>
+ <span>foo</span>
+</div>
!! end
-# Wacky -- the leading newline in input is required because
-# that is what the serializer emits. To be fixed. Not fixing
-# the test because this test is required to test serialization of
-# new content and preferred whitespace style.
!! test
Lists: Add space after bullets
!! options
parsoid=html2wt
!! input
-
* foo
* bar
* <span> baz</span>
</ul>
!! end
+!! test
+Headings: Add space before/after == (Bug 51744)
+!! options
+parsoid=html2wt
+!! input
+== foo ==
+
+== bar ==
+
+== baz ==
+
+== <span> baz</span> ==
+!! result
+<h2>foo</h2>
+<h2> bar</h2>
+<h2>baz </h2>
+<h2><span> baz</span></h2>
+!! end
+
!! test
Parsoid: Serialize positional parameters with = in them as named parameter
!! options
<p><i>A</i><b data-parsoid='{}'><i data-parsoid='{}'>B</i></b></p>
!! end
+#------------------------------------
+# End of I/B quote minimization tests
+#------------------------------------
+
!!test
-5. Bug 54262: New entities
+Bug 54262: New entities
!! options
parsoid=html2wt
!! input
<span typeof="mw:Entity">foo</span>
!! end
+## Note that there is no wikitext output for 'unknownproperty' ##
+## Unknown magic words are silently dropped ##
+
+!! test
+Magic words
+!! options
+parsoid=html2wt
+!! input
+__TOC__
+__NOTOC__
+__FORCETOC__
+__INDEX__
+__NOINDEX__
+__NOGALLERY__
+__NOEDITSECTION__
+__NOTITLECONVERT__
+__NOCONTENTCONVERT__
+!! result
+<meta property='mw:PageProp/toc' />
+<meta property='mw:PageProp/notoc' />
+<meta property='mw:PageProp/forcetoc' />
+<meta property='mw:PageProp/index' />
+<meta property='mw:PageProp/noindex' />
+<meta property='mw:PageProp/nogallery' />
+<meta property='mw:PageProp/noeditsection' />
+<meta property='mw:PageProp/notitleconvert' />
+<meta property='mw:PageProp/nocontentconvert' />
+<meta property='mw:PageProp/unknownproperty' />
+!! end
+
+!! test
+Consecutive <pre>s should not get merged
+!! options
+parsoid=html2wt,html2html
+!! input
+ a
+
+ b
+
+ c
+
+ d
+
+ e
+
+
+
+ f
+!! result
+<pre>a</pre><pre>b</pre>
+
+<pre>c
+</pre><pre>
+d</pre>
+
+<pre>e
+
+</pre><pre>
+
+f</pre>
+!! end
+
+!! test
+Edited ISBN links not serializable as ISBN links should serialize as wikilinks
+!! options
+parsoid=html2wt
+!! input
+[[Special:BookSources/1234567890|ISBN 1234567895]]
+!! result
+<a rel="mw:ExtLink" href="./Special:BookSources/1234567890">ISBN 1234567895</a>
+!! end
+
+!! test
+Edited RFC links not serializable as RFC links should serialize as extlinks
+!! options
+parsoid=html2wt
+!! input
+[//tools.ietf.org/html/rfc123 New RFC]
+!! result
+<a href="//tools.ietf.org/html/rfc123" rel="mw:ExtLink">New RFC</a>
+!! end
+
+!! test
+Edited PMID links not serializable as PMID links should serialize as extlinks
+!! options
+parsoid=html2wt
+!! input
+[//www.ncbi.nlm.nih.gov/pubmed/123?dopt=Abstract New PMID]
+!! result
+<a href="//www.ncbi.nlm.nih.gov/pubmed/123?dopt=Abstract" rel="mw:ExtLink">New PMID</a>
+!! end
+
# -----------------------------------------------------------------
# End of section for Parsoid-only html2wt tests for serialization
# of new content
$this->assertInstanceOf( $expected, $pokemons, $message );
}
+
+ /**
+ * Asserts that the given string is a valid HTML snippet.
+ * Wraps the given string in the required top level tags and
+ * then calls assertValidHtmlDocument().
+ * The snippet is expected to be HTML 5.
+ *
+ * @note: Will mark the test as skipped if the "tidy" module is not installed.
+ * @note: This ignores $wgUseTidy, so we can check for valid HTML even (and especially)
+ * when automatic tidying is disabled.
+ *
+ * @param string $html An HTML snippet (treated as the contents of the body tag).
+ */
+ protected function assertValidHtmlSnippet( $html ) {
+ $html = '<!DOCTYPE html><html><head><title>test</title></head><body>' . $html . '</body></html>';
+ $this->assertValidHtmlDocument( $html );
+ }
+
+ /**
+ * Asserts that the given string is valid HTML document.
+ *
+ * @note: Will mark the test as skipped if the "tidy" module is not installed.
+ * @note: This ignores $wgUseTidy, so we can check for valid HTML even (and especially)
+ * when automatic tidying is disabled.
+ *
+ * @param string $html A complete HTML document
+ */
+ protected function assertValidHtmlDocument( $html ) {
+ // Note: we only validate if the tidy PHP extension is available.
+ // In case wgTidyInternal is false, MWTidy would fall back to the command line version
+ // of tidy. In that case however, we can not reliably detect whether a failing validation
+ // is due to malformed HTML, or caused by tidy not being installed as a command line tool.
+ // That would cause all HTML assertions to fail on a system that has no tidy installed.
+ if ( !$GLOBALS['wgTidyInternal'] ) {
+ $this->markTestSkipped( 'Tidy extension not installed' );
+ }
+
+ $errorBuffer = '';
+ MWTidy::checkErrors( $html, $errorBuffer );
+ $allErrors = preg_split( '/[\r\n]+/', $errorBuffer );
+
+ // Filter Tidy warnings which aren't useful for us.
+ // Tidy eg. often cries about parameters missing which have actually
+ // been deprecated since HTML4, thus we should not care about them.
+ $errors = preg_grep(
+ '/^(.*Warning: (trimming empty|.* lacks ".*?" attribute).*|\s*)$/m',
+ $allErrors, PREG_GREP_INVERT
+ );
+
+ $this->assertEmpty( $errors, implode( "\n", $errors ) );
+ }
}
--- /dev/null
+<?php
+/**
+ * Test class for ArrayUtils class
+ *
+ * @group Database
+ */
+
+class ArrayUtilsTest extends MediaWikiTestCase {
+ private $search;
+
+ /**
+ * @covers ArrayUtils::findLowerBound
+ * @dataProvider provideFindLowerBound
+ */
+ function testFindLowerBound(
+ $valueCallback, $valueCount, $comparisonCallback, $target, $expected
+ ) {
+ $this->assertSame(
+ ArrayUtils::findLowerBound(
+ $valueCallback, $valueCount, $comparisonCallback, $target
+ ), $expected
+ );
+ }
+
+ function provideFindLowerBound() {
+ $self = $this;
+ $indexValueCallback = function( $size ) use ( $self ) {
+ return function( $val ) use ( $self, $size ) {
+ $self->assertTrue( $val >= 0 );
+ $self->assertTrue( $val < $size );
+ return $val;
+ };
+ };
+ $comparisonCallback = function( $a, $b ) {
+ return $a - $b;
+ };
+
+ return array(
+ array(
+ $indexValueCallback( 0 ),
+ 0,
+ $comparisonCallback,
+ 1,
+ false,
+ ),
+ array(
+ $indexValueCallback( 1 ),
+ 1,
+ $comparisonCallback,
+ -1,
+ false,
+ ),
+ array(
+ $indexValueCallback( 1 ),
+ 1,
+ $comparisonCallback,
+ 0,
+ 0,
+ ),
+ array(
+ $indexValueCallback( 1 ),
+ 1,
+ $comparisonCallback,
+ 1,
+ 0,
+ ),
+ array(
+ $indexValueCallback( 2 ),
+ 2,
+ $comparisonCallback,
+ -1,
+ false,
+ ),
+ array(
+ $indexValueCallback( 2 ),
+ 2,
+ $comparisonCallback,
+ 0,
+ 0,
+ ),
+ array(
+ $indexValueCallback( 2 ),
+ 2,
+ $comparisonCallback,
+ 0.5,
+ 0,
+ ),
+ array(
+ $indexValueCallback( 2 ),
+ 2,
+ $comparisonCallback,
+ 1,
+ 1,
+ ),
+ array(
+ $indexValueCallback( 2 ),
+ 2,
+ $comparisonCallback,
+ 1.5,
+ 1,
+ ),
+ array(
+ $indexValueCallback( 3 ),
+ 3,
+ $comparisonCallback,
+ 1,
+ 1,
+ ),
+ array(
+ $indexValueCallback( 3 ),
+ 3,
+ $comparisonCallback,
+ 1.5,
+ 1,
+ ),
+ array(
+ $indexValueCallback( 3 ),
+ 3,
+ $comparisonCallback,
+ 2,
+ 2,
+ ),
+ array(
+ $indexValueCallback( 3 ),
+ 3,
+ $comparisonCallback,
+ 3,
+ 2,
+ ),
+ );
+ }
+
+ /**
+ * @covers ArrayUtils::arrayDiffAssocRecursive
+ * @dataProvider provideArrayDiffAssocRecursive
+ */
+ function testArrayDiffAssocRecursive( $expected ) {
+ $args = func_get_args();
+ array_shift( $args );
+ $this->assertEquals( call_user_func_array(
+ 'ArrayUtils::arrayDiffAssocRecursive', $args
+ ), $expected );
+ }
+
+ function provideArrayDiffAssocRecursive() {
+ return array(
+ array(
+ array(),
+ array(),
+ array(),
+ ),
+ array(
+ array(),
+ array(),
+ array(),
+ array(),
+ ),
+ array(
+ array( 1 ),
+ array( 1 ),
+ array(),
+ ),
+ array(
+ array( 1 ),
+ array( 1 ),
+ array(),
+ array(),
+ ),
+ array(
+ array(),
+ array(),
+ array( 1 ),
+ ),
+ array(
+ array(),
+ array(),
+ array( 1 ),
+ array( 2 ),
+ ),
+ array(
+ array( '' => 1 ),
+ array( '' => 1 ),
+ array(),
+ ),
+ array(
+ array(),
+ array(),
+ array( '' => 1 ),
+ ),
+ array(
+ array( 1 ),
+ array( 1 ),
+ array( 2 ),
+ ),
+ array(
+ array(),
+ array( 1 ),
+ array( 2 ),
+ array( 1 ),
+ ),
+ array(
+ array(),
+ array( 1 ),
+ array( 1, 2 ),
+ ),
+ array(
+ array( 1 => 1 ),
+ array( 1 => 1 ),
+ array( 1 ),
+ ),
+ array(
+ array(),
+ array( 1 => 1 ),
+ array( 1 ),
+ array( 1 => 1),
+ ),
+ array(
+ array(),
+ array( 1 => 1 ),
+ array( 1, 1, 1 ),
+ ),
+ array(
+ array(),
+ array( array() ),
+ array(),
+ ),
+ array(
+ array(),
+ array( array( array() ) ),
+ array(),
+ ),
+ array(
+ array( 1, array( 1 ) ),
+ array( 1, array( 1 ) ),
+ array(),
+ ),
+ array(
+ array( 1 ),
+ array( 1, array( 1 ) ),
+ array( 2, array( 1 ) ),
+ ),
+ array(
+ array(),
+ array( 1, array( 1 ) ),
+ array( 2, array( 1 ) ),
+ array( 1, array( 2 ) ),
+ ),
+ array(
+ array( 1 ),
+ array( 1, array() ),
+ array( 2 ),
+ ),
+ array(
+ array(),
+ array( 1, array() ),
+ array( 2 ),
+ array( 1 ),
+ ),
+ array(
+ array( 1, array( 1 => 2 ) ),
+ array( 1, array( 1, 2 ) ),
+ array( 2, array( 1 ) ),
+ ),
+ array(
+ array( 1 ),
+ array( 1, array( 1, 2 ) ),
+ array( 2, array( 1 ) ),
+ array( 2, array( 1 => 2 ) ),
+ ),
+ array(
+ array( 1 => array( 1, 2 ) ),
+ array( 1, array( 1, 2 ) ),
+ array( 1, array( 2 ) ),
+ ),
+ array(
+ array( 1 => array( array( 2, 3 ), 2 ) ),
+ array( 1, array( array( 2, 3 ), 2 ) ),
+ array( 1, array( 2 ) ),
+ ),
+ array(
+ array( 1 => array( array( 2 ), 2 ) ),
+ array( 1, array( array( 2, 3 ), 2 ) ),
+ array( 1, array( array( 1 => 3 ) ) ),
+ ),
+ array(
+ array( 1 => array( 1 => 2 ) ),
+ array( 1, array( array( 2, 3 ), 2 ) ),
+ array( 1, array( array( 1 => 3, 0 => 2 ) ) ),
+ ),
+ array(
+ array( 1 => array( 1 => 2 ) ),
+ array( 1, array( array( 2, 3 ), 2 ) ),
+ array( 1, array( array( 1 => 3 ) ) ),
+ array( 1 => array( array( 2 ) ) ),
+ ),
+ array(
+ array(),
+ array( 1, array( array( 2, 3 ), 2 ) ),
+ array( 1 => array( 1 => 2, 0 => array( 1 => 3, 0 => 2 ) ), 0 => 1 ),
+ ),
+ array(
+ array(),
+ array( 1, array( array( 2, 3 ), 2 ) ),
+ array( 1 => array( 1 => 2 ) ),
+ array( 1 => array( array( 1 => 3 ) ) ),
+ array( 1 => array( array( 2 ) ) ),
+ array( 1 ),
+ ),
+ );
+ }
+}
$this->assertLessThan( 2, $delta, "If no timestamp is specified, the block is recorded as time()" );
}
- /**
- * This is the method previously used to load block info in CheckUser etc
- * passing an empty value (empty string, null, etc) as the ip parameter bypasses IP lookup checks.
- *
- * This stopped working with r84475 and friends: regression being fixed for bug 29116.
- *
- * @dataProvider provideBug29116Data
- * @covers Block::load
- */
- public function testBug29116LoadWithEmptyIp( $vagueTarget ) {
- $this->hideDeprecated( 'Block::load' );
-
- $uid = User::idFromName( 'UTBlockee' );
- $this->assertTrue( ( $uid > 0 ), 'Must be able to look up the target user during tests' );
-
- $block = new Block();
- $ok = $block->load( $vagueTarget, $uid );
- $this->assertTrue( $ok, "Block->load() with empty IP and user ID '$uid' should return a block" );
-
- $this->assertTrue( $this->block->equals( $block ), "Block->load() returns the same block as the one that was made when given empty ip param " . var_export( $vagueTarget, true ) );
- }
-
/**
* CheckUser since being changed to use Block::newFromTarget started failing
* because the new function didn't accept empty strings like Block::load()
class CollationTest extends MediaWikiLangTestCase {
protected function setUp() {
parent::setUp();
- if ( !extension_loaded( 'intl' ) ) {
- $this->markTestSkipped( 'These tests require intl extension' );
- }
+ $this->checkPHPExtension( 'intl' );
}
/**
protected function setUp() {
parent::setUp();
- if ( !extension_loaded( 'xdiff' ) ) {
- $this->markTestSkipped( 'The xdiff extension is not available' );
+ $this->checkPHPExtension( 'hash' );
+ $this->checkPHPExtension( 'xdiff' );
- return;
- }
if ( !function_exists( 'xdiff_string_rabdiff' ) ) {
$this->markTestSkipped( 'The version of xdiff extension is lower than 1.5.0' );
- return;
- }
- if ( !extension_loaded( 'hash' ) ) {
- $this->markTestSkipped( 'The hash extension is not available' );
-
return;
}
}
}
$formatter->filterContent();
$html = $formatter->getText();
+
+ $this->assertValidHtmlSnippet( $html );
$this->assertEquals( self::normalize( $expected ), self::normalize( $html ) );
}
--- /dev/null
+<?php
+
+/**
+ * Tests timestamp parsing and output.
+ */
+class MWTimestampTest extends MediaWikiLangTestCase {
+
+ protected function setUp() {
+ parent::setUp();
+
+ RequestContext::getMain()->setLanguage( Language::factory( 'en' ) );
+ }
+
+ /**
+ * @covers MWTimestamp::__construct
+ */
+ public function testConstructWithNoTimestamp() {
+ $timestamp = new MWTimestamp();
+ $this->assertInternalType( 'string', $timestamp->getTimestamp() );
+ $this->assertNotEmpty( $timestamp->getTimestamp() );
+ $this->assertNotEquals( false, strtotime( $timestamp->getTimestamp( TS_MW ) ) );
+ }
+
+ /**
+ * @covers MWTimestamp::__toString
+ */
+ public function testToString() {
+ $timestamp = new MWTimestamp( '1406833268' ); // Equivalent to 20140731190108
+ $this->assertEquals( '1406833268', $timestamp->__toString() );
+ }
+
+ public function provideValidTimestampDifferences() {
+ return array(
+ array( '1406833268','1406833269', '00 00 00 01' ),
+ array( '1406833268','1406833329', '00 00 01 01' ),
+ array( '1406833268','1406836929', '00 01 01 01' ),
+ array( '1406833268','1406923329', '01 01 01 01' ),
+ );
+ }
+
+ /**
+ * @dataProvider provideValidTimestampDifferences
+ * @covers MWTimestamp::diff
+ */
+ public function testDiff( $timestamp1, $timestamp2, $expected ) {
+ $timestamp1 = new MWTimestamp( $timestamp1 );
+ $timestamp2 = new MWTimestamp( $timestamp2 );
+ $diff = $timestamp1->diff( $timestamp2 );
+ $this->assertEquals( $expected, $diff->format( '%D %H %I %S' ) );
+ }
+
+ /**
+ * Test parsing of valid timestamps and outputing to MW format.
+ * @dataProvider provideValidTimestamps
+ * @covers MWTimestamp::getTimestamp
+ */
+ public function testValidParse( $format, $original, $expected ) {
+ $timestamp = new MWTimestamp( $original );
+ $this->assertEquals( $expected, $timestamp->getTimestamp( TS_MW ) );
+ }
+
+ /**
+ * Test outputting valid timestamps to different formats.
+ * @dataProvider provideValidTimestamps
+ * @covers MWTimestamp::getTimestamp
+ */
+ public function testValidOutput( $format, $expected, $original ) {
+ $timestamp = new MWTimestamp( $original );
+ $this->assertEquals( $expected, (string)$timestamp->getTimestamp( $format ) );
+ }
+
+ /**
+ * Test an invalid timestamp.
+ * @expectedException TimestampException
+ * @covers MWTimestamp
+ */
+ public function testInvalidParse() {
+ new MWTimestamp( "This is not a timestamp." );
+ }
+
+ /**
+ * Test requesting an invalid output format.
+ * @expectedException TimestampException
+ * @covers MWTimestamp::getTimestamp
+ */
+ public function testInvalidOutput() {
+ $timestamp = new MWTimestamp( '1343761268' );
+ $timestamp->getTimestamp( 98 );
+ }
+
+ /**
+ * Returns a list of valid timestamps in the format:
+ * array( type, timestamp_of_type, timestamp_in_MW )
+ */
+ public static function provideValidTimestamps() {
+ return array(
+ // Various formats
+ array( TS_UNIX, '1343761268', '20120731190108' ),
+ array( TS_MW, '20120731190108', '20120731190108' ),
+ array( TS_DB, '2012-07-31 19:01:08', '20120731190108' ),
+ array( TS_ISO_8601, '2012-07-31T19:01:08Z', '20120731190108' ),
+ array( TS_ISO_8601_BASIC, '20120731T190108Z', '20120731190108' ),
+ array( TS_EXIF, '2012:07:31 19:01:08', '20120731190108' ),
+ array( TS_RFC2822, 'Tue, 31 Jul 2012 19:01:08 GMT', '20120731190108' ),
+ array( TS_ORACLE, '31-07-2012 19:01:08.000000', '20120731190108' ),
+ array( TS_POSTGRES, '2012-07-31 19:01:08 GMT', '20120731190108' ),
+ // Some extremes and weird values
+ array( TS_ISO_8601, '9999-12-31T23:59:59Z', '99991231235959' ),
+ array( TS_UNIX, '-62135596801', '00001231235959' )
+ );
+ }
+
+ /**
+ * @dataProvider provideHumanTimestampTests
+ * @covers MWTimestamp::getHumanTimestamp
+ */
+ public function testHumanTimestamp(
+ $tsTime, // The timestamp to format
+ $currentTime, // The time to consider "now"
+ $timeCorrection, // The time offset to use
+ $dateFormat, // The date preference to use
+ $expectedOutput, // The expected output
+ $desc // Description
+ ) {
+ $user = $this->getMock( 'User' );
+ $user->expects( $this->any() )
+ ->method( 'getOption' )
+ ->with( 'timecorrection' )
+ ->will( $this->returnValue( $timeCorrection ) );
+
+ $user->expects( $this->any() )
+ ->method( 'getDatePreference' )
+ ->will( $this->returnValue( $dateFormat ) );
+
+ $tsTime = new MWTimestamp( $tsTime );
+ $currentTime = new MWTimestamp( $currentTime );
+
+ $this->assertEquals(
+ $expectedOutput,
+ $tsTime->getHumanTimestamp( $currentTime, $user ),
+ $desc
+ );
+ }
+
+ public static function provideHumanTimestampTests() {
+ return array(
+ array(
+ '20111231170000',
+ '20120101000000',
+ 'Offset|0',
+ 'mdy',
+ 'Yesterday at 17:00',
+ '"Yesterday" across years',
+ ),
+ array(
+ '20120717190900',
+ '20120717190929',
+ 'Offset|0',
+ 'mdy',
+ 'just now',
+ '"Just now"',
+ ),
+ array(
+ '20120717190900',
+ '20120717191530',
+ 'Offset|0',
+ 'mdy',
+ '6 minutes ago',
+ 'X minutes ago',
+ ),
+ array(
+ '20121006173100',
+ '20121006173200',
+ 'Offset|0',
+ 'mdy',
+ '1 minute ago',
+ '"1 minute ago"',
+ ),
+ array(
+ '20120617190900',
+ '20120717190900',
+ 'Offset|0',
+ 'mdy',
+ 'June 17',
+ 'Another month'
+ ),
+ array(
+ '19910130151500',
+ '20120716193700',
+ 'Offset|0',
+ 'mdy',
+ '15:15, January 30, 1991',
+ 'Different year',
+ ),
+ array(
+ '20120101050000',
+ '20120101080000',
+ 'Offset|-360',
+ 'mdy',
+ 'Yesterday at 23:00',
+ '"Yesterday" across years with time correction',
+ ),
+ array(
+ '20120714184300',
+ '20120716184300',
+ 'Offset|-420',
+ 'mdy',
+ 'Saturday at 11:43',
+ 'Recent weekday with time correction',
+ ),
+ array(
+ '20120714184300',
+ '20120715040000',
+ 'Offset|-420',
+ 'mdy',
+ '11:43',
+ 'Today at another time with time correction',
+ ),
+ array(
+ '20120617190900',
+ '20120717190900',
+ 'Offset|0',
+ 'dmy',
+ '17 June',
+ 'Another month with dmy'
+ ),
+ array(
+ '20120617190900',
+ '20120717190900',
+ 'Offset|0',
+ 'ISO 8601',
+ '06-17',
+ 'Another month with ISO-8601'
+ ),
+ array(
+ '19910130151500',
+ '20120716193700',
+ 'Offset|0',
+ 'ISO 8601',
+ '1991-01-30T15:15:00',
+ 'Different year with ISO-8601',
+ ),
+ );
+ }
+
+ /**
+ * @dataProvider provideRelativeTimestampTests
+ * @covers MWTimestamp::getRelativeTimestamp
+ */
+ public function testRelativeTimestamp(
+ $tsTime, // The timestamp to format
+ $currentTime, // The time to consider "now"
+ $timeCorrection, // The time offset to use
+ $dateFormat, // The date preference to use
+ $expectedOutput, // The expected output
+ $desc // Description
+ ) {
+ $user = $this->getMock( 'User' );
+ $user->expects( $this->any() )
+ ->method( 'getOption' )
+ ->with( 'timecorrection' )
+ ->will( $this->returnValue( $timeCorrection ) );
+
+ $tsTime = new MWTimestamp( $tsTime );
+ $currentTime = new MWTimestamp( $currentTime );
+
+ $this->assertEquals(
+ $expectedOutput,
+ $tsTime->getRelativeTimestamp( $currentTime, $user ),
+ $desc
+ );
+ }
+
+ public static function provideRelativeTimestampTests() {
+ return array(
+ array(
+ '20111231170000',
+ '20120101000000',
+ 'Offset|0',
+ 'mdy',
+ '7 hours ago',
+ '"Yesterday" across years',
+ ),
+ array(
+ '20120717190900',
+ '20120717190929',
+ 'Offset|0',
+ 'mdy',
+ '29 seconds ago',
+ '"Just now"',
+ ),
+ array(
+ '20120717190900',
+ '20120717191530',
+ 'Offset|0',
+ 'mdy',
+ '6 minutes and 30 seconds ago',
+ 'Combination of multiple units',
+ ),
+ array(
+ '20121006173100',
+ '20121006173200',
+ 'Offset|0',
+ 'mdy',
+ '1 minute ago',
+ '"1 minute ago"',
+ ),
+ array(
+ '19910130151500',
+ '20120716193700',
+ 'Offset|0',
+ 'mdy',
+ '2 decades, 1 year, 168 days, 2 hours, 8 minutes and 48 seconds ago',
+ 'A long time ago',
+ ),
+ array(
+ '20120101050000',
+ '20120101080000',
+ 'Offset|-360',
+ 'mdy',
+ '3 hours ago',
+ '"Yesterday" across years with time correction',
+ ),
+ array(
+ '20120714184300',
+ '20120716184300',
+ 'Offset|-420',
+ 'mdy',
+ '2 days ago',
+ 'Recent weekday with time correction',
+ ),
+ array(
+ '20120714184300',
+ '20120715040000',
+ 'Offset|-420',
+ 'mdy',
+ '9 hours and 17 minutes ago',
+ 'Today at another time with time correction',
+ ),
+ );
+ }
+}
$this->assertEquals( 'hello hello.', $rev->getContent()->getNativeData() );
}
- /**
- * @covers Revision::revText
- */
- public function testRevText() {
- $this->hideDeprecated( 'Revision::revText' );
- $orig = $this->makeRevision( array( 'text' => 'hello hello rev.' ) );
- $rev = Revision::newFromId( $orig->getId() );
-
- $this->assertEquals( 'hello hello rev.', $rev->revText() );
- }
-
/**
* @covers Revision::getRawText
*/
}
}
+ /**
+ * @dataProvider provideMockMessageDetails
+ * @covers Status::fatal
+ * @covers Status::getErrorsArray
+ * @covers Status::getStatusArray
+ */
+ public function testFatalWithMessage( $mockDetails ) {
+ $status = new Status();
+ $messages = $this->getMockMessages( $mockDetails );
+
+ foreach ( $messages as $message ) {
+ $status->fatal( $message );
+ }
+ $errors = $status->getErrorsArray();
+
+ $this->assertEquals( count( $messages ), count( $errors ) );
+ foreach ( $messages as $key => $message ) {
+ $expectedArray = array_merge( array( $message->getKey() ), $message->getParams() );
+ $this->assertEquals( $errors[$key], $expectedArray );
+ }
+ $this->assertFalse( $status->isOK() );
+ }
+
protected function getMockMessage( $key = 'key', $params = array() ) {
$message = $this->getMockBuilder( 'Message' )
->disableOriginalConstructor()
/**
* @covers Status::merge
- * @todo test merge with $overwriteValue true
*/
public function testMerge() {
$status1 = new Status();
$this->assertEquals( 2, count( $status1->getWarningsArray() ) + count( $status1->getErrorsArray() ) );
}
+ /**
+ * @covers Status::merge
+ */
+ public function testMergeWithOverwriteValue() {
+ $status1 = new Status();
+ $status2 = new Status();
+ $message1 = $this->getMockMessage( 'warn1' );
+ $message2 = $this->getMockMessage( 'error2' );
+ $status1->warning( $message1 );
+ $status2->error( $message2 );
+ $status2->value = 'FooValue';
+
+ $status1->merge( $status2, true );
+ $this->assertEquals( 2, count( $status1->getWarningsArray() ) + count( $status1->getErrorsArray() ) );
+ $this->assertEquals( 'FooValue', $status1->getValue() );
+ }
+
/**
* @covers Status::hasMessage
*/
$this->assertEquals( $expected, $method->invoke( $status, $params ) );
}
- /**
- * @todo test cleanParams with a callback
- */
public static function provideCleanParams() {
+ $cleanCallback = function( $value ) {
+ return '-' . $value . '-';
+ };
+
return array(
array( false, array( 'foo' => 'bar' ), array( 'foo' => 'bar' ) ),
+ array( $cleanCallback, array( 'foo' => 'bar' ), array( 'foo' => '-bar-' ) ),
);
}
$this->user->setPassword( $this->password );
$this->user->setEmail( $this->email );
$this->user->setRealName( $this->realname );
- // remove all groups, replace with any groups specified
- foreach ( $this->user->getGroups() as $group ) {
- $this->user->removeGroup( $group );
+
+ // Adjust groups by adding any missing ones and removing any extras
+ $currentGroups = $this->user->getGroups();
+ foreach ( array_diff( $this->groups, $currentGroups ) as $group ) {
+ $this->user->addGroup( $group );
}
- if ( count( $this->groups ) ) {
- foreach ( $this->groups as $group ) {
- $this->user->addGroup( $group );
- }
+ foreach ( array_diff( $currentGroups, $this->groups ) as $group ) {
+ $this->user->removeGroup( $group );
}
$this->user->saveSettings();
}
+++ /dev/null
-<?php
-
-/**
- * Tests timestamp parsing and output.
- */
-class TimestampTest extends MediaWikiLangTestCase {
-
- protected function setUp() {
- parent::setUp();
-
- RequestContext::getMain()->setLanguage( Language::factory( 'en' ) );
- }
-
- /**
- * Test parsing of valid timestamps and outputing to MW format.
- * @dataProvider provideValidTimestamps
- * @covers MWTimestamp::getTimestamp
- */
- public function testValidParse( $format, $original, $expected ) {
- $timestamp = new MWTimestamp( $original );
- $this->assertEquals( $expected, $timestamp->getTimestamp( TS_MW ) );
- }
-
- /**
- * Test outputting valid timestamps to different formats.
- * @dataProvider provideValidTimestamps
- * @covers MWTimestamp::getTimestamp
- */
- public function testValidOutput( $format, $expected, $original ) {
- $timestamp = new MWTimestamp( $original );
- $this->assertEquals( $expected, (string)$timestamp->getTimestamp( $format ) );
- }
-
- /**
- * Test an invalid timestamp.
- * @expectedException TimestampException
- * @covers MWTimestamp
- */
- public function testInvalidParse() {
- new MWTimestamp( "This is not a timestamp." );
- }
-
- /**
- * Test requesting an invalid output format.
- * @expectedException TimestampException
- * @covers MWTimestamp::getTimestamp
- */
- public function testInvalidOutput() {
- $timestamp = new MWTimestamp( '1343761268' );
- $timestamp->getTimestamp( 98 );
- }
-
- /**
- * Returns a list of valid timestamps in the format:
- * array( type, timestamp_of_type, timestamp_in_MW )
- */
- public static function provideValidTimestamps() {
- return array(
- // Various formats
- array( TS_UNIX, '1343761268', '20120731190108' ),
- array( TS_MW, '20120731190108', '20120731190108' ),
- array( TS_DB, '2012-07-31 19:01:08', '20120731190108' ),
- array( TS_ISO_8601, '2012-07-31T19:01:08Z', '20120731190108' ),
- array( TS_ISO_8601_BASIC, '20120731T190108Z', '20120731190108' ),
- array( TS_EXIF, '2012:07:31 19:01:08', '20120731190108' ),
- array( TS_RFC2822, 'Tue, 31 Jul 2012 19:01:08 GMT', '20120731190108' ),
- array( TS_ORACLE, '31-07-2012 19:01:08.000000', '20120731190108' ),
- array( TS_POSTGRES, '2012-07-31 19:01:08 GMT', '20120731190108' ),
- // Some extremes and weird values
- array( TS_ISO_8601, '9999-12-31T23:59:59Z', '99991231235959' ),
- array( TS_UNIX, '-62135596801', '00001231235959' )
- );
- }
-
- /**
- * @dataProvider provideHumanTimestampTests
- * @covers MWTimestamp::getHumanTimestamp
- */
- public function testHumanTimestamp(
- $tsTime, // The timestamp to format
- $currentTime, // The time to consider "now"
- $timeCorrection, // The time offset to use
- $dateFormat, // The date preference to use
- $expectedOutput, // The expected output
- $desc // Description
- ) {
- $user = $this->getMock( 'User' );
- $user->expects( $this->any() )
- ->method( 'getOption' )
- ->with( 'timecorrection' )
- ->will( $this->returnValue( $timeCorrection ) );
-
- $user->expects( $this->any() )
- ->method( 'getDatePreference' )
- ->will( $this->returnValue( $dateFormat ) );
-
- $tsTime = new MWTimestamp( $tsTime );
- $currentTime = new MWTimestamp( $currentTime );
-
- $this->assertEquals(
- $expectedOutput,
- $tsTime->getHumanTimestamp( $currentTime, $user ),
- $desc
- );
- }
-
- public static function provideHumanTimestampTests() {
- return array(
- array(
- '20111231170000',
- '20120101000000',
- 'Offset|0',
- 'mdy',
- 'Yesterday at 17:00',
- '"Yesterday" across years',
- ),
- array(
- '20120717190900',
- '20120717190929',
- 'Offset|0',
- 'mdy',
- 'just now',
- '"Just now"',
- ),
- array(
- '20120717190900',
- '20120717191530',
- 'Offset|0',
- 'mdy',
- '6 minutes ago',
- 'X minutes ago',
- ),
- array(
- '20121006173100',
- '20121006173200',
- 'Offset|0',
- 'mdy',
- '1 minute ago',
- '"1 minute ago"',
- ),
- array(
- '20120617190900',
- '20120717190900',
- 'Offset|0',
- 'mdy',
- 'June 17',
- 'Another month'
- ),
- array(
- '19910130151500',
- '20120716193700',
- 'Offset|0',
- 'mdy',
- '15:15, January 30, 1991',
- 'Different year',
- ),
- array(
- '20120101050000',
- '20120101080000',
- 'Offset|-360',
- 'mdy',
- 'Yesterday at 23:00',
- '"Yesterday" across years with time correction',
- ),
- array(
- '20120714184300',
- '20120716184300',
- 'Offset|-420',
- 'mdy',
- 'Saturday at 11:43',
- 'Recent weekday with time correction',
- ),
- array(
- '20120714184300',
- '20120715040000',
- 'Offset|-420',
- 'mdy',
- '11:43',
- 'Today at another time with time correction',
- ),
- array(
- '20120617190900',
- '20120717190900',
- 'Offset|0',
- 'dmy',
- '17 June',
- 'Another month with dmy'
- ),
- array(
- '20120617190900',
- '20120717190900',
- 'Offset|0',
- 'ISO 8601',
- '06-17',
- 'Another month with ISO-8601'
- ),
- array(
- '19910130151500',
- '20120716193700',
- 'Offset|0',
- 'ISO 8601',
- '1991-01-30T15:15:00',
- 'Different year with ISO-8601',
- ),
- );
- }
-
- /**
- * @dataProvider provideRelativeTimestampTests
- * @covers MWTimestamp::getRelativeTimestamp
- */
- public function testRelativeTimestamp(
- $tsTime, // The timestamp to format
- $currentTime, // The time to consider "now"
- $timeCorrection, // The time offset to use
- $dateFormat, // The date preference to use
- $expectedOutput, // The expected output
- $desc // Description
- ) {
- $user = $this->getMock( 'User' );
- $user->expects( $this->any() )
- ->method( 'getOption' )
- ->with( 'timecorrection' )
- ->will( $this->returnValue( $timeCorrection ) );
-
- $tsTime = new MWTimestamp( $tsTime );
- $currentTime = new MWTimestamp( $currentTime );
-
- $this->assertEquals(
- $expectedOutput,
- $tsTime->getRelativeTimestamp( $currentTime, $user ),
- $desc
- );
- }
-
- public static function provideRelativeTimestampTests() {
- return array(
- array(
- '20111231170000',
- '20120101000000',
- 'Offset|0',
- 'mdy',
- '7 hours ago',
- '"Yesterday" across years',
- ),
- array(
- '20120717190900',
- '20120717190929',
- 'Offset|0',
- 'mdy',
- '29 seconds ago',
- '"Just now"',
- ),
- array(
- '20120717190900',
- '20120717191530',
- 'Offset|0',
- 'mdy',
- '6 minutes and 30 seconds ago',
- 'Combination of multiple units',
- ),
- array(
- '20121006173100',
- '20121006173200',
- 'Offset|0',
- 'mdy',
- '1 minute ago',
- '"1 minute ago"',
- ),
- array(
- '19910130151500',
- '20120716193700',
- 'Offset|0',
- 'mdy',
- '2 decades, 1 year, 168 days, 2 hours, 8 minutes and 48 seconds ago',
- 'A long time ago',
- ),
- array(
- '20120101050000',
- '20120101080000',
- 'Offset|-360',
- 'mdy',
- '3 hours ago',
- '"Yesterday" across years with time correction',
- ),
- array(
- '20120714184300',
- '20120716184300',
- 'Offset|-420',
- 'mdy',
- '2 days ago',
- 'Recent weekday with time correction',
- ),
- array(
- '20120714184300',
- '20120715040000',
- 'Offset|-420',
- 'mdy',
- '9 hours and 17 minutes ago',
- 'Today at another time with time correction',
- ),
- );
- }
-}
--- /dev/null
+<?php
+
+/**
+ * @author Adam Shorland
+ * @covers TitleArrayFromResult
+ */
+class TitleArrayFromResultTest extends MediaWikiTestCase {
+
+ private function getMockResultWrapper( $row = null, $numRows = 1 ) {
+ $resultWrapper = $this->getMockBuilder( 'ResultWrapper' )
+ ->disableOriginalConstructor();
+
+ $resultWrapper = $resultWrapper->getMock();
+ $resultWrapper->expects( $this->atLeastOnce() )
+ ->method( 'current' )
+ ->will( $this->returnValue( $row ) );
+ $resultWrapper->expects( $this->any() )
+ ->method( 'numRows' )
+ ->will( $this->returnValue( $numRows ) );
+
+ return $resultWrapper;
+ }
+
+ private function getRowWithTitle( $namespace = 3, $title = 'foo' ) {
+ $row = new stdClass();
+ $row->page_namespace = $namespace;
+ $row->page_title = $title;
+ return $row;
+ }
+
+ private function getTitleArrayFromResult( $resultWrapper ) {
+ return new TitleArrayFromResult( $resultWrapper );
+ }
+
+ /**
+ * @covers TitleArrayFromResult::__construct
+ */
+ public function testConstructionWithFalseRow() {
+ $row = false;
+ $resultWrapper = $this->getMockResultWrapper( $row );
+
+ $object = $this->getTitleArrayFromResult( $resultWrapper );
+
+ $this->assertEquals( $resultWrapper, $object->res );
+ $this->assertSame( 0, $object->key );
+ $this->assertEquals( $row, $object->current );
+ }
+
+ /**
+ * @covers TitleArrayFromResult::__construct
+ */
+ public function testConstructionWithRow() {
+ $namespace = 0;
+ $title = 'foo';
+ $row = $this->getRowWithTitle( $namespace, $title );
+ $resultWrapper = $this->getMockResultWrapper( $row );
+
+ $object = $this->getTitleArrayFromResult( $resultWrapper );
+
+ $this->assertEquals( $resultWrapper, $object->res );
+ $this->assertSame( 0, $object->key );
+ $this->assertInstanceOf( 'Title', $object->current );
+ $this->assertEquals( $namespace, $object->current->mNamespace );
+ $this->assertEquals( $title, $object->current->mTextform );
+ }
+
+ public function provideNumberOfRows() {
+ return array(
+ array( 0 ),
+ array( 1 ),
+ array( 122 ),
+ );
+ }
+
+ /**
+ * @dataProvider provideNumberOfRows
+ * @covers TitleArrayFromResult::count
+ */
+ public function testCountWithVaryingValues( $numRows ) {
+ $object = $this->getTitleArrayFromResult( $this->getMockResultWrapper( $this->getRowWithTitle(), $numRows ) );
+ $this->assertEquals( $numRows, $object->count() );
+ }
+
+ /**
+ * @covers TitleArrayFromResult::current
+ */
+ public function testCurrentAfterConstruction() {
+ $namespace = 0;
+ $title = 'foo';
+ $row = $this->getRowWithTitle( $namespace, $title );
+ $object = $this->getTitleArrayFromResult( $this->getMockResultWrapper( $row ) );
+ $this->assertInstanceOf( 'Title', $object->current() );
+ $this->assertEquals( $namespace, $object->current->mNamespace );
+ $this->assertEquals( $title, $object->current->mTextform );
+ }
+
+ public function provideTestValid() {
+ return array(
+ array( $this->getRowWithTitle(), true ),
+ array( false, false ),
+ );
+ }
+
+ /**
+ * @dataProvider provideTestValid
+ * @covers TitleArrayFromResult::valid
+ */
+ public function testValid( $input, $expected ) {
+ $object = $this->getTitleArrayFromResult( $this->getMockResultWrapper( $input ) );
+ $this->assertEquals( $expected, $object->valid() );
+ }
+
+ //@todo unit test for key()
+ //@todo unit test for next()
+ //@todo unit test for rewind()
+
+}
\ No newline at end of file
--- /dev/null
+<?php
+
+/**
+ * @author Adam Shorland
+ * @covers UserArrayFromResult
+ */
+class UserArrayFromResultTest extends MediaWikiTestCase {
+
+ private function getMockResultWrapper( $row = null, $numRows = 1 ) {
+ $resultWrapper = $this->getMockBuilder( 'ResultWrapper' )
+ ->disableOriginalConstructor();
+
+ $resultWrapper = $resultWrapper->getMock();
+ $resultWrapper->expects( $this->atLeastOnce() )
+ ->method( 'current' )
+ ->will( $this->returnValue( $row ) );
+ $resultWrapper->expects( $this->any() )
+ ->method( 'numRows' )
+ ->will( $this->returnValue( $numRows ) );
+
+ return $resultWrapper;
+ }
+
+ private function getRowWithUsername( $username = 'fooUser' ) {
+ $row = new stdClass();
+ $row->user_name = $username;
+ return $row;
+ }
+
+ private function getUserArrayFromResult( $resultWrapper ) {
+ return new UserArrayFromResult( $resultWrapper );
+ }
+
+ /**
+ * @covers UserArrayFromResult::__construct
+ */
+ public function testConstructionWithFalseRow() {
+ $row = false;
+ $resultWrapper = $this->getMockResultWrapper( $row );
+
+ $object = $this->getUserArrayFromResult( $resultWrapper );
+
+ $this->assertEquals( $resultWrapper, $object->res );
+ $this->assertSame( 0, $object->key );
+ $this->assertEquals( $row, $object->current );
+ }
+
+ /**
+ * @covers UserArrayFromResult::__construct
+ */
+ public function testConstructionWithRow() {
+ $username = 'addshore';
+ $row = $this->getRowWithUsername( $username );
+ $resultWrapper = $this->getMockResultWrapper( $row );
+
+ $object = $this->getUserArrayFromResult( $resultWrapper );
+
+ $this->assertEquals( $resultWrapper, $object->res );
+ $this->assertSame( 0, $object->key );
+ $this->assertInstanceOf( 'User', $object->current );
+ $this->assertEquals( $username, $object->current->mName );
+ }
+
+ public function provideNumberOfRows() {
+ return array(
+ array( 0 ),
+ array( 1 ),
+ array( 122 ),
+ );
+ }
+
+ /**
+ * @dataProvider provideNumberOfRows
+ * @covers UserArrayFromResult::count
+ */
+ public function testCountWithVaryingValues( $numRows ) {
+ $object = $this->getUserArrayFromResult( $this->getMockResultWrapper( $this->getRowWithUsername(), $numRows ) );
+ $this->assertEquals( $numRows, $object->count() );
+ }
+
+ /**
+ * @covers UserArrayFromResult::current
+ */
+ public function testCurrentAfterConstruction() {
+ $username = 'addshore';
+ $userRow = $this->getRowWithUsername( $username );
+ $object = $this->getUserArrayFromResult( $this->getMockResultWrapper( $userRow ) );
+ $this->assertInstanceOf( 'User', $object->current() );
+ $this->assertEquals( $username, $object->current()->mName );
+ }
+
+ public function provideTestValid() {
+ return array(
+ array( $this->getRowWithUsername(), true ),
+ array( false, false ),
+ );
+ }
+
+ /**
+ * @dataProvider provideTestValid
+ * @covers UserArrayFromResult::valid
+ */
+ public function testValid( $input, $expected ) {
+ $object = $this->getUserArrayFromResult( $this->getMockResultWrapper( $input ) );
+ $this->assertEquals( $expected, $object->valid() );
+ }
+
+ //@todo unit test for key()
+ //@todo unit test for next()
+ //@todo unit test for rewind()
+
+}
\ No newline at end of file
*/
class ApiFormatPhpTest extends ApiFormatTestBase {
- public function testValidyntax( ) {
+ public function testValidSyntax( ) {
$data = $this->apiRequest( 'php', array( 'action' => 'query', 'meta' => 'siteinfo' ) );
$this->assertInternalType( 'array', unserialize( $data ) );
--- /dev/null
+<?php
+
+class GlobalConfigTest extends MediaWikiTestCase {
+
+ /** @var GlobalConfig $config */
+ protected $config;
+
+ protected function setUp() {
+ parent::setUp();
+ $this->config = new GlobalConfig;
+ }
+
+ public static function provideGet() {
+ return array(
+ array( 'wgSitename', array( 'Sitename' ) ),
+ array( 'wgFoo', array( 'Foo' ) ),
+ array( 'efVariable', array( 'Variable', 'ef' ) ),
+ array( 'Foo', array( 'Foo', '' ) ),
+ );
+ }
+
+ /**
+ * @param string $name
+ * @param array $params
+ * @dataProvider provideGet
+ * @covers GlobalConfig::get
+ */
+ public function testGet( $name, $params ) {
+ $rand = wfRandom();
+ $old = isset( $GLOBALS[$name] ) ? $GLOBALS[$name] : null;
+ $GLOBALS[$name] = $rand;
+ $out = call_user_func_array( array( $this->config, 'get' ), $params );
+ $this->assertEquals( $rand, $out );
+ if ( $old ) {
+ $GLOBALS[$name] = $old;
+ }
+ }
+}
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
* http://www.gnu.org/copyleft/gpl.html
*
+ * @group Database
* @file
* @author Antoine Musso
* @copyright © 2013 Antoine Musso
* @copyright © 2013 Wikimedia Foundation Inc.
*/
-
-class FakeLBFactory extends LBFactory {
- function __construct( $conf ) {}
- function newMainLB( $wiki = false ) {}
- function getMainLB( $wiki = false ) {}
- function newExternalLB( $cluster, $wiki = false ) {}
- function &getExternalLB( $cluster, $wiki = false ) {}
- function forEachLB( $callback, $params = array() ) {}
-}
-
class LBFactoryTest extends MediaWikiTestCase {
- function setup() {
- parent::setup();
- FakeLBFactory::destroyInstance();
- }
-
/**
- * @dataProvider provideDeprecatedLbfactoryClasses
+ * @dataProvider getLBFactoryClassProvider
*/
- function testLbfactoryClassBackcompatibility( $expected, $deprecated ) {
+ public function testGetLBFactoryClass( $expected, $deprecated ) {
$mockDB = $this->getMockBuilder( 'DatabaseMysql' )
- -> disableOriginalConstructor()
+ ->disableOriginalConstructor()
->getMock();
- $this->setMwGlobals( 'wgLBFactoryConf',
- array(
- 'class' => $deprecated,
- 'connection' => $mockDB,
- # Various other parameters required:
- 'sectionsByDB' => array(),
- 'sectionLoads' => array(),
- 'serverTemplate' => array(),
- )
- );
- global $wgLBFactoryConf;
- $this->assertArrayHasKey( 'class', $wgLBFactoryConf );
- $this->assertEquals( $wgLBFactoryConf['class'], $deprecated );
+ $config = array(
+ 'class' => $deprecated,
+ 'connection' => $mockDB,
+ # Various other parameters required:
+ 'sectionsByDB' => array(),
+ 'sectionLoads' => array(),
+ 'serverTemplate' => array(),
+ );
- # The point of this test is to call a deprecated interface and make
- # sure it keeps back compatibility, so skip the deprecation warning.
$this->hideDeprecated( '$wgLBFactoryConf must be updated. See RELEASE-NOTES for details' );
- $lbfactory = FakeLBFactory::singleton();
- $this->assertInstanceOf( $expected, $lbfactory,
- "LBFactory passed $deprecated should yield the new class $expected" );
+ $result = LBFactory::getLBFactoryClass( $config );
+
+ $this->assertEquals( $expected, $result );
}
- function provideDeprecatedLbfactoryClasses() {
+ public function getLBFactoryClassProvider() {
return array(
# Format: new class, old class
array( 'LBFactorySimple', 'LBFactory_Simple' ),
if ( $withSource ) {
$status = $this->backend->doOperation(
- array( 'op' => 'create', 'content' => 'blahblah', 'dst' => $source ) );
+ array( 'op' => 'create', 'content' => 'blahblah', 'dst' => $source,
+ 'headers' => array( 'Content-Disposition' => 'xxx' ) ) );
$this->assertGoodStatus( $status,
"Creation of file at $source succeeded ($backendName)." );
+ if ( $this->backend->hasFeatures( FileBackend::ATTR_HEADERS ) ) {
+ $attr = $this->backend->getFileXAttributes( array( 'src' => $source ) );
+ $this->assertHasHeaders( array( 'Content-Disposition' => 'xxx' ), $attr );
+ }
+
+ $status = $this->backend->describe( array( 'src' => $source,
+ 'headers' => array( 'Content-Disposition' => '' ) ) ); // remove
+ $this->assertGoodStatus( $status,
+ "Removal of header for $source succeeded ($backendName)." );
+
+ if ( $this->backend->hasFeatures( FileBackend::ATTR_HEADERS ) ) {
+ $attr = $this->backend->getFileXAttributes( array( 'src' => $source ) );
+ $this->assertFalse( isset( $attr['headers']['content-disposition'] ),
+ "File 'Content-Disposition' header removed." );
+ }
}
$status = $this->backend->doOperation( $op );
"Describe of file at $source succeeded ($backendName)." );
$this->assertEquals( array( 0 => true ), $status->success,
"Describe of file at $source has proper 'success' field in Status ($backendName)." );
+ if ( $this->backend->hasFeatures( FileBackend::ATTR_HEADERS ) ) {
+ $this->assertHasHeaders( $op['headers'], $attr );
+ }
} else {
$this->assertEquals( false, $status->isOK(),
"Describe of file at $source failed ($backendName)." );
$this->assertBackendPathsConsistent( array( $source ) );
}
+ private function assertHasHeaders( array $headers, array $attr ) {
+ foreach ( $headers as $n => $v ) {
+ if ( $n !== '' ) {
+ $this->assertTrue( isset( $attr['headers'][strtolower( $n )] ),
+ "File has '$n' header." );
+ $this->assertEquals( $v, $attr['headers'][strtolower( $n )],
+ "File has '$n' header value." );
+ } else {
+ $this->assertFalse( isset( $attr['headers'][strtolower( $n )] ),
+ "File does not have '$n' header." );
+ }
+ }
+ }
+
public static function provider_testDescribe() {
$cases = array();
$source = self::baseStorePath() . '/unittest-cont1/e/myfacefile.txt';
$op = array( 'op' => 'describe', 'src' => $source,
- 'headers' => array( 'X-Content-Length' => '91.3', 'Content-Old-Header' => '' ),
- 'disposition' => 'inline' );
+ 'headers' => array( 'Content-Disposition' => 'inline' ), );
$cases[] = array(
$op, // operation
true, // with source
$cases[] = array(
array( "$base/unittest-cont1/e/a/x.txt", "$base/unittest-cont1/e/a/y.txt",
"$base/unittest-cont1/e/a/z.txt" ),
- array( "contents xx", "contents xy", "contents xz" )
+ array( "contents xx $", "contents xy 111", "contents xz" )
);
return $cases;
$cases[] = array(
array( "$base/unittest-cont1/e/a/x.txt", "$base/unittest-cont1/e/a/y.txt",
"$base/unittest-cont1/e/a/z.txt" ),
- array( "contents xx", "contents xy", "contents xz" )
+ array( "contents xx 1111", "contents xy %", "contents xz $" )
);
return $cases;
"Preparing dir $path failed ($backendName)." );
}
+ $status = $this->backend->secure( array( 'dir' => dirname( $path ) ) );
+ if ( $isOK ) {
+ $this->assertGoodStatus( $status,
+ "Securing dir $path succeeded without warnings ($backendName)." );
+ $this->assertEquals( true, $status->isOK(),
+ "Securing dir $path succeeded ($backendName)." );
+ } else {
+ $this->assertEquals( false, $status->isOK(),
+ "Securing dir $path failed ($backendName)." );
+ }
+
+ $status = $this->backend->publish( array( 'dir' => dirname( $path ) ) );
+ if ( $isOK ) {
+ $this->assertGoodStatus( $status,
+ "Publishing dir $path succeeded without warnings ($backendName)." );
+ $this->assertEquals( true, $status->isOK(),
+ "Publishing dir $path succeeded ($backendName)." );
+ } else {
+ $this->assertEquals( false, $status->isOK(),
+ "Publishing dir $path failed ($backendName)." );
+ }
+
$status = $this->backend->clean( array( 'dir' => dirname( $path ) ) );
if ( $isOK ) {
$this->assertGoodStatus( $status,
}
}
- // @todo testSecure
-
/**
* @covers FileBackend::doOperations
*/
unlink( $file );
}
}
- $containers = array( 'unittest-cont1', 'unittest-cont2' );
+ $containers = array( 'unittest-cont1', 'unittest-cont2', 'unittest-cont-bad' );
foreach ( $containers as $container ) {
$this->deleteFiles( $container );
}
<?php
/**
- * Unit tests for the HTMLCheckMatrix + HTMLFormField
- * @todo the tests for the two classes could be split up
+ * Unit tests for the HTMLCheckMatrix
+ * @covers HTMLCheckMatrix
*/
class HtmlCheckMatrixTest extends MediaWikiTestCase {
static private $defaultOptions = array(
'fieldname' => 'test',
);
- /**
- * @covers HTMLCheckMatrix::__construct
- */
public function testPlainInstantiation() {
try {
- $form = new HTMLCheckMatrix( array() );
+ new HTMLCheckMatrix( array() );
} catch ( MWException $e ) {
$this->assertInstanceOf( 'HTMLFormFieldRequiredOptionsException', $e );
return;
$this->fail( 'Expected MWException indicating missing parameters but none was thrown.' );
}
- /**
- * @covers HTMLCheckMatrix::__construct
- */
public function testInstantiationWithMinimumRequiredParameters() {
- $form = new HTMLCheckMatrix( self::$defaultOptions );
+ new HTMLCheckMatrix( self::$defaultOptions );
$this->assertTrue( true ); // form instantiation must throw exception on failure
}
- /**
- * @covers HTMLFormField::validate
- */
public function testValidateCallsUserDefinedValidationCallback() {
$called = false;
$field = new HTMLCheckMatrix( self::$defaultOptions + array(
- 'validation-callback' => function() use ( &$called ) {
- $called = true;
- return false;
- },
- ) );
+ 'validation-callback' => function() use ( &$called ) {
+ $called = true;
+ return false;
+ },
+ ) );
$this->assertEquals( false, $this->validate( $field, array() ) );
$this->assertTrue( $called );
}
- /**
- * @covers HTMLFormField::validate
- */
public function testValidateRequiresArrayInput() {
$field = new HTMLCheckMatrix( self::$defaultOptions );
$this->assertEquals( false, $this->validate( $field, null ) );
$this->assertEquals( true, $this->validate( $field, array() ) );
}
- /**
- * @covers HTMLFormField::validate
- */
public function testValidateAllowsOnlyKnownTags() {
$field = new HTMLCheckMatrix( self::$defaultOptions );
$this->assertInternalType( 'string', $this->validate( $field, array( 'foo' ) ) );
}
- /**
- * @covers HTMLFormField::validate
- */
public function testValidateAcceptsPartialTagList() {
$field = new HTMLCheckMatrix( self::$defaultOptions );
$this->assertTrue( $this->validate( $field, array() ) );
* foreach ( $field->filterDataForSubmit( $data ) as $k => $v ) {
* $user->setOption( $k, $v );
* }
- * @covers HTMLFormField::filterDataForSubmit
*/
public function testValuesForcedOnRemainOn() {
$field = new HTMLCheckMatrix( self::$defaultOptions + array(
- 'force-options-on' => array( 'c2-r1' ),
- ) );
+ 'force-options-on' => array( 'c2-r1' ),
+ ) );
$expected = array(
'c1-r1' => false,
'c1-r2' => false,
$this->assertEquals( $expected, $field->filterDataForSubmit( array() ) );
}
- /**
- * @covers HTMLFormField::filterDataForSubmit
- */
public function testValuesForcedOffRemainOff() {
$field = new HTMLCheckMatrix( self::$defaultOptions + array(
- 'force-options-off' => array( 'c1-r2', 'c2-r2' ),
- ) );
+ 'force-options-off' => array( 'c1-r2', 'c2-r2' ),
+ ) );
$expected = array(
'c1-r1' => true,
'c1-r2' => false,
array( self::$defaultOptions['fieldname'] => $submitted )
);
}
+
}
* @group Database
*/
class RefreshLinksPartitionTest extends MediaWikiTestCase {
- function __construct( $name = null, array $data = array(), $dataName = '' ) {
+ public function __construct( $name = null, array $data = array(), $dataName = '' ) {
parent::__construct( $name, $data, $dataName );
$this->tablesUsed[] = 'page';
public function testRefreshLinks( $ns, $dbKey, $pages ) {
$title = Title::makeTitle( $ns, $dbKey );
- $dbw = wfGetDB( DB_MASTER );
-
- $rows = array();
foreach ( $pages as $page ) {
list( $bns, $bdbkey ) = $page;
$bpage = WikiPage::factory( Title::makeTitle( $bns, $bdbkey ) );
--- /dev/null
+<?php
+
+/**
+ * @group HashRing
+ */
+class HashRingTest extends MediaWikiTestCase {
+ /**
+ * @covers HashRing
+ */
+ public function testHashRing() {
+ $ring = new HashRing( array( 's1' => 1, 's2' => 1, 's3' => 2, 's4' => 2, 's5' => 2, 's6' => 3 ) );
+
+ $locations = array();
+ for ( $i = 0; $i < 20; $i++ ) {
+ $locations[ "hello$i"] = $ring->getLocation( "hello$i" );
+ }
+ $expectedLocations = array(
+ "hello0" => "s5",
+ "hello1" => "s6",
+ "hello2" => "s2",
+ "hello3" => "s5",
+ "hello4" => "s6",
+ "hello5" => "s4",
+ "hello6" => "s5",
+ "hello7" => "s4",
+ "hello8" => "s5",
+ "hello9" => "s5",
+ "hello10" => "s3",
+ "hello11" => "s6",
+ "hello12" => "s1",
+ "hello13" => "s3",
+ "hello14" => "s3",
+ "hello15" => "s5",
+ "hello16" => "s4",
+ "hello17" => "s6",
+ "hello18" => "s6",
+ "hello19" => "s3"
+ );
+
+ $this->assertEquals( $expectedLocations, $locations, 'Items placed at proper locations' );
+
+ $locations = array();
+ for ( $i = 0; $i < 5; $i++ ) {
+ $locations[ "hello$i"] = $ring->getLocations( "hello$i", 2 );
+ }
+
+ $expectedLocations = array(
+ "hello0" => array( "s5", "s6" ),
+ "hello1" => array( "s6", "s4" ),
+ "hello2" => array( "s2", "s1" ),
+ "hello3" => array( "s5", "s6" ),
+ "hello4" => array( "s6", "s4" ),
+ );
+ $this->assertEquals( $expectedLocations, $locations, 'Items placed at proper locations' );
+ }
+}
--- /dev/null
+<?php
+/**
+ * PHP Unit tests for MWMessagePack
+ * @covers MWMessagePack
+ */
+class MWMessagePackTest extends MediaWikiTestCase {
+
+ /**
+ * Provides test cases for MWMessagePackTest::testMessagePack
+ *
+ * Returns an array of test cases. Each case is an array of (type, value,
+ * expected encoding as hex string). The expected values were generated
+ * using <https://github.com/msgpack/msgpack-php>, which includes a
+ * serialization function.
+ */
+ public function provider() {
+ return array(
+ array( 'nil', null, 'c0' ),
+ array( 'bool', true, 'c3' ),
+ array( 'bool', false, 'c2' ),
+ array( 'positive fixnum', 0, '00' ),
+ array( 'positive fixnum', 1, '01' ),
+ array( 'positive fixnum', 5, '05' ),
+ array( 'positive fixnum', 35, '23' ),
+ array( 'uint 8', 128, 'cc80' ),
+ array( 'uint 16', 1000, 'cd03e8' ),
+ array( 'uint 32', 100000, 'ce000186a0' ),
+ array( 'uint 64', 10000000000, 'cf00000002540be400' ),
+ array( 'negative fixnum', -1, 'ff' ),
+ array( 'negative fixnum', -2, 'fe' ),
+ array( 'int 8', -128, 'd080' ),
+ array( 'int 8', -35, 'd0dd' ),
+ array( 'int 16', -1000, 'd1fc18' ),
+ array( 'int 32', -100000, 'd2fffe7960' ),
+ array( 'int 64', -10000000000, 'd3fffffffdabf41c00' ),
+ array( 'int 64', -223372036854775807, 'd3fce66c50e2840001' ),
+ array( 'int 64', -9223372036854775807, 'd38000000000000001' ),
+ array( 'double', 0.1, 'cb3fb999999999999a' ),
+ array( 'double', 1.1, 'cb3ff199999999999a' ),
+ array( 'double', 123.456, 'cb405edd2f1a9fbe77' ),
+ array( 'fix raw', '', 'a0' ),
+ array( 'fix raw', 'foobar', 'a6666f6f626172' ),
+ array(
+ 'raw 16',
+ 'Lorem ipsum dolor sit amet amet.',
+ 'da00204c6f72656d20697073756d20646f6c6f722073697420616d657420616d65742e'
+ ),
+ array(
+ 'fix array',
+ array( 'abc', 'def', 'ghi' ),
+ '93a3616263a3646566a3676869'
+ ),
+ array(
+ 'fix map',
+ array( 'one' => 1, 'two' => 2 ),
+ '82a36f6e6501a374776f02'
+ ),
+ );
+ }
+
+ /**
+ * Verify that values are serialized correctly.
+ * @covers MWMessagePack::pack
+ * @dataProvider provider
+ */
+ public function testPack( $type, $value, $expected ) {
+ $actual = bin2hex( MWMessagePack::pack( $value ) );
+ $this->assertEquals( $actual, $expected, $type );
+ }
+}
--- /dev/null
+<?php
+/**
+ * PHP Unit tests for RunningStat class.
+ * @covers RunningStat
+ */
+class RunningStatTest extends MediaWikiTestCase {
+
+ public $points = array(
+ 49.7168, 74.3804, 7.0115, 96.5769, 34.9458,
+ 36.9947, 33.8926, 89.0774, 23.7745, 73.5154,
+ 86.1322, 53.2124, 16.2046, 73.5130, 10.4209,
+ 42.7299, 49.3330, 47.0215, 34.9950, 18.2914,
+ );
+
+ /**
+ * Verify that the statistical moments and extrema computed by RunningStat
+ * match expected values.
+ * @covers RunningStat::push
+ * @covers RunningStat::count
+ * @covers RunningStat::getMean
+ * @covers RunningStat::getVariance
+ * @covers RunningStat::getStdDev
+ */
+ public function testRunningStatAccuracy() {
+ $rstat = new RunningStat();
+ foreach( $this->points as $point ) {
+ $rstat->push( $point );
+ }
+
+ $mean = array_sum( $this->points ) / count( $this->points );
+ $variance = array_sum( array_map( function ( $x ) use ( $mean ) {
+ return pow( $mean - $x, 2 );
+ }, $this->points ) ) / ( count( $rstat ) - 1 );
+ $stddev = sqrt( $variance );
+ $min = min( $this->points );
+ $max = max( $this->points );
+
+ $this->assertEquals( count( $rstat ), count( $this->points ) );
+ $this->assertEquals( $rstat->min, min( $this->points ) );
+ $this->assertEquals( $rstat->max, max( $this->points ) );
+ $this->assertEquals( $rstat->getMean(), $mean );
+ $this->assertEquals( $rstat->getVariance(), $variance );
+ $this->assertEquals( $rstat->getStdDev(), $stddev );
+ }
+
+ /**
+ * When one RunningStat instance is merged into another, the state of the
+ * target RunningInstance should have the state that it would have had if
+ * all the data had been accumulated by it alone.
+ * @covers RunningStat::merge
+ * @covers RunningStat::count
+ */
+ public function testRunningStatMerge() {
+ $expected = new RunningStat();
+
+ foreach( $this->points as $point ) {
+ $expected->push( $point );
+ }
+
+ // Split the data into two sets
+ $sets = array_chunk( $this->points, floor( count( $this->points ) / 2 ) );
+
+ // Accumulate the first half into one RunningStat object
+ $first = new RunningStat();
+ foreach( $sets[0] as $point ) {
+ $first->push( $point );
+ }
+
+ // Accumulate the second half into another RunningStat object
+ $second = new RunningStat();
+ foreach( $sets[1] as $point ) {
+ $second->push( $point );
+ }
+
+ // Merge the second RunningStat object into the first
+ $first->merge( $second );
+
+ $this->assertEquals( count( $first ), count( $this->points ) );
+ $this->assertEquals( $first, $expected );
+ }
+}
'wgExtensionMessagesFiles' => array( 'LogTests' => __DIR__ . '/LogTests.i18n.php' ),
) );
- $wgLang->getLocalisationCache()->recache( $wgLang->getCode() );
+ Language::getLocalisationCache()->recache( $wgLang->getCode() );
$this->user = User::newFromName( 'Testuser' );
$this->title = Title::newMainPage();
parent::tearDown();
global $wgLang;
- $wgLang->getLocalisationCache()->recache( $wgLang->getCode() );
+ Language::getLocalisationCache()->recache( $wgLang->getCode() );
}
public function newLogEntry( $action, $params ) {
* @covers BitmapMetadataHandler::Jpeg
*/
public function testMultilingualCascade() {
- if ( !extension_loaded( 'exif' ) ) {
- $this->markTestSkipped( "This test needs the exif extension." );
- }
- if ( !extension_loaded( 'xml' ) ) {
- $this->markTestSkipped( "This test needs the xml extension." );
- }
+ $this->checkPHPExtension( 'exif' );
+ $this->checkPHPExtension( 'xml' );
$this->setMwGlobals( 'wgShowEXIF', true );
protected function setUp() {
parent::setUp();
- if ( !extension_loaded( 'exif' ) ) {
- $this->markTestSkipped( "This test needs the exif extension." );
- }
+ $this->checkPHPExtension( 'exif' );
$this->setMwGlobals( 'wgShowEXIF', true );
protected function setUp() {
parent::setUp();
- if ( !extension_loaded( 'exif' ) ) {
- $this->markTestSkipped( "This test needs the exif extension." );
- }
+ $this->checkPHPExtension( 'exif' );
$this->handler = new BitmapHandler();
$filePath = __DIR__ . '/../../data/media';
protected function setUp() {
parent::setUp();
- if ( !extension_loaded( 'exif' ) ) {
- $this->markTestSkipped( "This test needs the exif extension." );
- }
+ $this->checkPHPExtension( 'exif' );
$this->mediaPath = __DIR__ . '/../../data/media/';
protected function setUp() {
parent::setUp();
- if ( !extension_loaded( 'exif' ) ) {
- $this->markTestSkipped( "This test needs the exif extension." );
- }
+ $this->checkPHPExtension( 'exif' );
$filePath = __DIR__ . '/../../data/media';
$this->backend = new FSFileBackend( array(
'name' => 'localtesting',
protected function setUp() {
parent::setUp();
- if ( !extension_loaded( 'exif' ) ) {
- $this->markTestSkipped( "This test needs the exif extension." );
- }
+ $this->checkPHPExtension( 'exif' );
$this->filePath = __DIR__ . '/../../data/media/';
protected function setUp() {
parent::setUp();
- if ( !extension_loaded( 'exif' ) ) {
- $this->markTestSkipped( "This test needs the exif extension." );
- }
+ $this->checkPHPExtension( 'exif' );
$this->setMwGlobals( 'wgShowEXIF', true );
protected function setUp() {
parent::setUp();
- if ( !extension_loaded( 'xml' ) ) {
- $this->markTestSkipped( 'Requires libxml to do XMP parsing' );
- }
+ $this->checkPHPExtension( 'exif' ); # Requires libxml to do XMP parsing
}
/**
* @note Coverage will only ever show one of on of the Search* classes
*/
class SearchEngineTest extends MediaWikiLangTestCase {
+
/**
* @var SearchEngine
*/
protected $search;
+
protected $pageList;
/**
parent::setUp();
// Search tests require MySQL or SQLite with FTS
- # Get database type and version
$dbType = $this->db->getType();
- $dbSupported =
- ( $dbType === 'mysql' )
- || ( $dbType === 'sqlite' && $this->db->getFulltextSearchModule() == 'FTS3' );
+ $dbSupported = ( $dbType === 'mysql' )
+ || ( $dbType === 'sqlite' && $this->db->getFulltextSearchModule() == 'FTS3' );
if ( !$dbSupported ) {
$this->markTestSkipped( "MySQL or SQLite with FTS3 only" );
}
$searchType = $this->db->getSearchEngine();
+ $this->setMwGlobals( array(
+ 'wgSearchType' => $searchType
+ ) );
+
+ if ( !isset( self::$pageList ) ) {
+ $this->addPages();
+ }
+
$this->search = new $searchType( $this->db );
}
parent::tearDown();
}
- function pageExists( $title ) {
- return false;
- }
-
- function addDBData() {
- if ( $this->pageExists( 'Not_Main_Page' ) ) {
- return;
- }
-
+ protected function addPages() {
if ( !$this->isWikitextNS( NS_MAIN ) ) {
// @todo cover the case of non-wikitext content in the main namespace
return;
$this->insertPage( 'DomainName', 'example.com', 0 );
}
- function fetchIds( $results ) {
+ protected function fetchIds( $results ) {
if ( !$this->isWikitextNS( NS_MAIN ) ) {
$this->markTestIncomplete( __CLASS__ . " does no yet support non-wikitext content "
. "in the main namespace" );
}
-
$this->assertTrue( is_object( $results ) );
$matches = array();
* @param $text String: page's content
* @param $n Integer: unused
*/
- function insertPage( $pageName, $text, $ns ) {
+ protected function insertPage( $pageName, $text, $ns ) {
$title = Title::newFromText( $pageName, $ns );
$user = User::newFromName( 'WikiSysop' );
$this->fetchIds( $this->search->searchTitle( 'smithee' ) ),
"Title power search failed" );
}
+
}
--- /dev/null
+<?php
+/**
+ * Test class for SpecialListFiles class.
+ *
+ * Copyright © 2013, Antoine Musso
+ * Copyright © 2013, Siebrand Mazeland
+ * Copyright © 2013, Wikimedia Foundation Inc.
+ *
+ */
+
+class SpecialListFilesTest extends MediaWikiTestCase {
+ /**
+ * @expectedException MWException
+ * @expectedExceptionMesage invalid_field
+ * @covers ImageListPager::formatValue
+ */
+ public function testFormatValuesThrowException() {
+ $page = new ImageListPager( RequestContext::getMain() );
+ $page->formatValue( 'invalid_field', 'invalid_value' );
+ }
+}
$this->assertConditions(
array( # expected
'rc_bot' => 0,
- #0 => "rc_timestamp >= '20110223000000'",
- 1 => "rc_namespace = '0'",
+ 0 => "rc_namespace = '0'",
),
array(
'namespace' => NS_MAIN,
public function testRcNsFilterInversion() {
$this->assertConditions(
array( # expected
- #0 => "rc_timestamp >= '20110223000000'",
'rc_bot' => 0,
- 1 => sprintf( "rc_namespace != '%s'", NS_MAIN ),
+ 0 => sprintf( "rc_namespace != '%s'", NS_MAIN ),
),
array(
'namespace' => NS_MAIN,
public function testRcNsFilterAssociation( $ns1, $ns2 ) {
$this->assertConditions(
array( # expected
- #0 => "rc_timestamp >= '20110223000000'",
'rc_bot' => 0,
- 1 => sprintf( "(rc_namespace = '%s' OR rc_namespace = '%s')", $ns1, $ns2 ),
+ 0 => sprintf( "(rc_namespace = '%s' OR rc_namespace = '%s')", $ns1, $ns2 ),
),
array(
'namespace' => $ns1,
public function testRcNsFilterAssociationWithInversion( $ns1, $ns2 ) {
$this->assertConditions(
array( # expected
- #0 => "rc_timestamp >= '20110223000000'",
'rc_bot' => 0,
- 1 => sprintf( "(rc_namespace != '%s' AND rc_namespace != '%s')", $ns1, $ns2 ),
+ 0 => sprintf( "(rc_namespace != '%s' AND rc_namespace != '%s')", $ns1, $ns2 ),
),
array(
'namespace' => $ns1,
+++ /dev/null
-<?php
-
-/**
- * @group HashRing
- */
-class HashRingTest extends MediaWikiTestCase {
- /**
- * @covers HashRing
- */
- public function testHashRing() {
- $ring = new HashRing( array( 's1' => 1, 's2' => 1, 's3' => 2, 's4' => 2, 's5' => 2, 's6' => 3 ) );
-
- $locations = array();
- for ( $i = 0; $i < 20; $i++ ) {
- $locations[ "hello$i"] = $ring->getLocation( "hello$i" );
- }
- $expectedLocations = array(
- "hello0" => "s5",
- "hello1" => "s6",
- "hello2" => "s2",
- "hello3" => "s5",
- "hello4" => "s6",
- "hello5" => "s4",
- "hello6" => "s5",
- "hello7" => "s4",
- "hello8" => "s5",
- "hello9" => "s5",
- "hello10" => "s3",
- "hello11" => "s6",
- "hello12" => "s1",
- "hello13" => "s3",
- "hello14" => "s3",
- "hello15" => "s5",
- "hello16" => "s4",
- "hello17" => "s6",
- "hello18" => "s6",
- "hello19" => "s3"
- );
-
- $this->assertEquals( $expectedLocations, $locations, 'Items placed at proper locations' );
-
- $locations = array();
- for ( $i = 0; $i < 5; $i++ ) {
- $locations[ "hello$i"] = $ring->getLocations( "hello$i", 2 );
- }
-
- $expectedLocations = array(
- "hello0" => array( "s5", "s6" ),
- "hello1" => array( "s6", "s4" ),
- "hello2" => array( "s2", "s1" ),
- "hello3" => array( "s5", "s6" ),
- "hello4" => array( "s6", "s4" ),
- );
- $this->assertEquals( $expectedLocations, $locations, 'Items placed at proper locations' );
- }
-}
array( 16909060, '1.2.3.4' ),
array( 2130706433, '127.0.0.1' ),
array( '2147483648', '128.0.0.0' ),
+ array( 2130706440, '127.0.0.08' ),
+ array( 2130706441, '127.0.0.09' ),
array( '3735931646', '222.173.202.254' ),
array( pow( 2, 32 ) - 1, '255.255.255.255' ),
array( false, 'IN.VA.LI.D' ),
}
}
+ /**
+ * @covers UIDGenerator::newSequentialPerNodeID
+ */
+ public function testNewSequentialID() {
+ $id1 = UIDGenerator::newSequentialPerNodeID( 'test', 32 );
+ $id2 = UIDGenerator::newSequentialPerNodeID( 'test', 32 );
+
+ $this->assertType( 'float', $id1, "ID returned as float" );
+ $this->assertType( 'float', $id2, "ID returned as float" );
+ $this->assertGreaterThan( 0, $id1, "ID greater than 1" );
+ $this->assertGreaterThan( $id1, $id2, "IDs increasing in value" );
+ }
+
+ /**
+ * @covers UIDGenerator::newSequentialPerNodeIDs
+ */
+ public function testNewSequentialIDs() {
+ $ids = UIDGenerator::newSequentialPerNodeIDs( 'test', 32, 5 );
+ $lastId = null;
+ foreach ( $ids as $id ) {
+ $this->assertType( 'float', $id, "ID returned as float" );
+ $this->assertGreaterThan( 0, $id, "ID greater than 1" );
+ if ( $lastId ) {
+ $this->assertGreaterThan( $lastId, $id, "IDs increasing in value" );
+ }
+ $lastId = $id;
+ }
+ }
}
* @covers Language::convertPlural
*/
public function testPluralTwoForms( $result, $value ) {
- $forms = array( 'one', 'other', '0=one' );
+ $forms = array( '1=one', 'other' );
$this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
}
public static function providePluralTwoForms() {
return array(
- array( 'one', 0 ),
+ array( 'other', 0 ),
array( 'one', 1 ),
array( 'other', 11 ),
array( 'other', 91 ),
* @file
*/
-/** Tests for MediaWiki languages/LanguageBs.php */
+/** Tests for Croatian (hrvatski) */
class LanguageBsTest extends LanguageClassesTestCase {
/**
* @dataProvider providePlural
* @covers Language::convertPlural
*/
public function testPlural( $result, $value ) {
- $forms = array( 'one', 'few', 'many', 'other' );
+ $forms = array( 'one', 'few', 'other' );
$this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
}
public static function providePlural() {
return array(
- array( 'many', 0 ),
+ array( 'other', 0 ),
array( 'one', 1 ),
array( 'few', 2 ),
array( 'few', 4 ),
- array( 'many', 5 ),
- array( 'many', 11 ),
- array( 'many', 20 ),
+ array( 'other', 5 ),
+ array( 'other', 11 ),
+ array( 'other', 20 ),
array( 'one', 21 ),
array( 'few', 24 ),
- array( 'many', 25 ),
- array( 'many', 200 ),
+ array( 'other', 25 ),
+ array( 'other', 200 ),
);
}
}
* @covers Language::convertPlural
*/
public function testPlural( $result, $value ) {
- $forms = array( 'one', 'few', 'many', 'other' );
+ $forms = array( 'one', 'few', 'other' );
$this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
}
public static function providePlural() {
return array(
- array( 'many', 0 ),
+ array( 'other', 0 ),
array( 'one', 1 ),
array( 'few', 2 ),
array( 'few', 4 ),
- array( 'many', 5 ),
- array( 'many', 11 ),
- array( 'many', 20 ),
+ array( 'other', 5 ),
+ array( 'other', 11 ),
+ array( 'other', 20 ),
array( 'one', 21 ),
array( 'few', 24 ),
- array( 'many', 25 ),
- array( 'many', 200 ),
+ array( 'other', 25 ),
+ array( 'other', 200 ),
);
}
}
* @file
*/
-/** Tests for MediaWiki languages/LanguageHy.php */
+/** Tests for Armenian (Հայերեն) */
class LanguageHyTest extends LanguageClassesTestCase {
/**
* @dataProvider providePlural
* @covers Language::getPluralRuleType
*/
public function testGetPluralRuleType( $result, $value ) {
- // This fails for 0, but I'm not sure why. Some voodoo going on here.
$this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) );
}
public static function providePlural() {
return array(
- array( 'other', 0 ),
+ array( 'one', 0 ),
array( 'one', 1 ),
array( 'other', 2 ),
array( 'other', 200 ),
* @file
*/
-/** Tests for MediaWiki languages/classes/LanguageLv.php */
+/** Tests for Latvian */
class LanguageLvTest extends LanguageClassesTestCase {
/**
* @dataProvider providePlural
return array(
array( 'zero', 0 ),
array( 'one', 1 ),
- array( 'other', 11 ),
+ array( 'zero', 11 ),
array( 'one', 21 ),
- array( 'other', 411 ),
+ array( 'zero', 411 ),
+ array( 'other', 2 ),
+ array( 'other', 9 ),
+ array( 'zero', 12 ),
array( 'other', 12.345 ),
- array( 'other', 20 ),
+ array( 'zero', 20 ),
+ array( 'other', 22 ),
array( 'one', 31 ),
- array( 'other', 200 ),
+ array( 'zero', 200 ),
);
}
}
* @file
*/
-/** Tests for MediaWiki languages/classes/LanguageMk.php */
+/** Tests for македонски/Macedonian */
class LanguageMkTest extends LanguageClassesTestCase {
/**
* @dataProvider providePlural
return array(
array( 'other', 0 ),
array( 'one', 1 ),
- array( 'other', 11 ),
+ array( 'one', 11 ),
array( 'one', 21 ),
array( 'one', 411 ),
array( 'other', 12.345 ),
* @covers Language::convertPlural
*/
public function testPlural( $result, $value ) {
- $forms = array( 'one', 'few', 'many', 'other' );
+ $forms = array( 'one', 'many', 'other' );
$this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
}
* @covers Language::convertPlural
*/
public function testExplicitPlural() {
- $forms = array( 'one', 'few', 'many', 'other', '12=dozen' );
+ $forms = array( 'one','many', 'other', '12=dozen' );
$this->assertEquals( 'dozen', $this->getLang()->convertPlural( 12, $forms ) );
- $forms = array( 'one', 'few', 'many', '100=hundred', 'other', '12=dozen' );
+ $forms = array( 'one', 'many', '100=hundred', 'other', '12=dozen' );
$this->assertEquals( 'hundred', $this->getLang()->convertPlural( 100, $forms ) );
}
array( 'many', 11 ),
array( 'one', 91 ),
array( 'one', 121 ),
- array( 'few', 2 ),
- array( 'few', 3 ),
- array( 'few', 4 ),
- array( 'few', 334 ),
+ array( 'other', 2 ),
+ array( 'other', 3 ),
+ array( 'other', 4 ),
+ array( 'other', 334 ),
array( 'many', 5 ),
array( 'many', 15 ),
array( 'many', 120 ),
* @covers Language::convertPlural
*/
public function testPluralTwoForms( $result, $value ) {
- $forms = array( 'one', 'other' );
+ $forms = array( '1=one', 'other' );
$this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
}
* @file
*/
-/** Tests for MediaWiki languages/classes/LanguageSgs.php */
+/** Tests for Samogitian */
class LanguageSgsTest extends LanguageClassesTestCase {
/**
* @dataProvider providePluralAllForms
* @file
*/
-/** Tests for MediaWiki languages/classes/LanguageSh.php */
+/** Tests for srpskohrvatski / српскохрватски / Serbocroatian */
class LanguageShTest extends LanguageClassesTestCase {
/**
* @dataProvider providePlural
* @covers Language::convertPlural
*/
public function testPlural( $result, $value ) {
- $forms = array( 'one', 'few', 'many', 'other' );
+ $forms = array( 'one', 'few', 'other' );
$this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
}
public static function providePlural() {
return array(
- array( 'many', 0 ),
+ array( 'other', 0 ),
array( 'one', 1 ),
array( 'few', 2 ),
array( 'few', 4 ),
- array( 'many', 5 ),
- array( 'many', 10 ),
- array( 'many', 11 ),
- array( 'many', 12 ),
+ array( 'other', 5 ),
+ array( 'other', 10 ),
+ array( 'other', 11 ),
+ array( 'other', 12 ),
array( 'one', 101 ),
array( 'few', 102 ),
- array( 'many', 111 ),
+ array( 'other', 111 ),
);
}
}
* @covers Language::convertPlural
*/
public function testPlural( $result, $value ) {
- $forms = array( 'one', 'few', 'many', 'other' );
+ $forms = array( 'one', 'few', 'other' );
$this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
}
public static function providePlural() {
return array(
array( 'one', 1 ),
- array( 'many', 11 ),
+ array( 'other', 11 ),
array( 'one', 91 ),
array( 'one', 121 ),
array( 'few', 2 ),
array( 'few', 3 ),
array( 'few', 4 ),
array( 'few', 334 ),
- array( 'many', 5 ),
- array( 'many', 15 ),
- array( 'many', 120 ),
+ array( 'other', 5 ),
+ array( 'other', 15 ),
+ array( 'other', 120 ),
);
}
return array(
array( 'one', 1 ),
array( 'other', 11 ),
- array( 'other', 91 ),
- array( 'other', 121 ),
+ array( 'other', 4 ),
+ array( 'one', 91 ),
+ array( 'one', 121 ),
);
}
* @file
*/
-/** Tests for MediaWiki languages/classes/LanguageUk.php */
+/** Tests for Ukrainian */
class LanguageUkTest extends LanguageClassesTestCase {
/**
* @dataProvider providePlural
* @covers Language::convertPlural
*/
public function testPluralTwoForms( $result, $value ) {
- $forms = array( 'one', 'other' );
+ $forms = array( '1=one', 'other' );
$this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
}
}
if ( PHPUnit_Runner_Version::id() !== '@package_version@'
- && version_compare( PHPUnit_Runner_Version::id(), '3.6.7', '<' )
+ && version_compare( PHPUnit_Runner_Version::id(), '3.7.0', '<' )
) {
- die( 'PHPUnit 3.6.7 or later required, you have ' . PHPUnit_Runner_Version::id() . ".\n" );
+ die( 'PHPUnit 3.7.0 or later required, you have ' . PHPUnit_Runner_Version::id() . ".\n" );
}
if ( !class_exists( 'PHPUnit_TextUI_Command' ) ) {
protected static function checkAutoLoadConf() {
global $wgAutoloadLocalClasses, $wgAutoloadClasses, $IP;
- $supportsParsekit = function_exists( 'parsekit_compile_file' );
// wgAutoloadLocalClasses has precedence, just like in includes/AutoLoader.php
$expected = $wgAutoloadLocalClasses + $wgAutoloadClasses;
} else {
$filePath = $file;
}
- if ( $supportsParsekit ) {
- $parseInfo = parsekit_compile_file( "$filePath" );
- $classes = array_keys( $parseInfo['class_table'] );
- } else {
- $contents = file_get_contents( "$filePath" );
- $m = array();
- preg_match_all( '/\n\s*(?:final)?\s*(?:abstract)?\s*(?:class|interface)\s+([a-zA-Z0-9_]+)/', $contents, $m, PREG_PATTERN_ORDER );
- $classes = $m[1];
+
+ $contents = file_get_contents( $filePath );
+
+ // We could use token_get_all() here, but this is faster
+ $matches = array();
+ preg_match_all( '/
+ ^ [\t ]* (?:
+ (?:final\s+)? (?:abstract\s+)? (?:class|interface) \s+
+ (?P<class> [a-zA-Z0-9_]+)
+ |
+ class_alias \s* \( \s*
+ ([\'"]) (?P<original> [^\'"]+) \g{-2} \s* , \s*
+ ([\'"]) (?P<alias> [^\'"]+ ) \g{-2} \s*
+ \) \s* ;
+ )
+ /imx', $contents, $matches, PREG_SET_ORDER );
+
+ $classesInFile = array();
+ $aliasesInFile = array();
+
+ foreach ( $matches as $match ) {
+ if ( !empty( $match['class'] ) ) {
+ $actual[$match['class']] = $file;
+ $classesInFile[$match['class']] = true;
+ } else {
+ $aliasesInFile[$match['alias']] = $match['original'];
+ }
}
- foreach ( $classes as $class ) {
- $actual[$class] = $file;
+
+ // Only accept aliases for classes in the same file, because for correct
+ // behavior, all aliases for a class must be set up when the class is loaded
+ // (see <https://bugs.php.net/bug.php?id=61422>).
+ foreach ( $aliasesInFile as $alias => $class ) {
+ if ( isset( $classesInFile[$class] ) ) {
+ $actual[$alias] = $file;
+ } else {
+ $actual[$alias] = "[original class not in $file]";
+ }
}
}
<group>Stub</group>
</exclude>
</groups>
+ <filter>
+ <whitelist addUncoveredFilesFromWhitelist="true">
+ <directory suffix=".php">../../includes</directory>
+ <directory suffix=".php">../../languages</directory>
+ <directory suffix=".php">../../maintenance</directory>
+ <directory suffix=".php">../../resources</directory>
+ <directory suffix=".php">../../skins</directory>
+ </whitelist>
+ </filter>
</phpunit>
'tests/qunit/suites/resources/mediawiki/mediawiki.jscompat.test.js',
'tests/qunit/suites/resources/mediawiki/mediawiki.test.js',
'tests/qunit/suites/resources/mediawiki/mediawiki.Title.test.js',
+ 'tests/qunit/suites/resources/mediawiki/mediawiki.toc.test.js',
'tests/qunit/suites/resources/mediawiki/mediawiki.Uri.test.js',
'tests/qunit/suites/resources/mediawiki/mediawiki.user.test.js',
'tests/qunit/suites/resources/mediawiki/mediawiki.util.test.js',
rtl: true
}
},
- // Bug #34924
+ // Rekonq (bug 34924)
'Mozilla/5.0 (X11; Linux i686) AppleWebKit/534.34 (KHTML, like Gecko) rekonq Safari/534.34': {
title: 'Rekonq',
platform: 'Linux i686',
ltr: true,
rtl: true
}
+ },
+ // Konqueror
+ 'Mozilla/5.0 (X11; Linux i686) KHTML/4.9.1 (like Gecko) Konqueror/4.9': {
+ title: 'Konqueror',
+ platform: 'Linux i686',
+ profile: {
+ name: 'konqueror',
+ layout: 'khtml',
+ layoutVersion: 'unknown',
+ platform: 'linux',
+ version: '4.9.1',
+ versionBase: '4',
+ versionNumber: 4.9
+ },
+ wikiEditor: {
+ // '4.9' is less than '4.11'.
+ ltr: false,
+ rtl: false
+ },
+ wikiEditorLegacy: {
+ // The check is missing in legacyTestMap
+ ltr: true,
+ rtl: true
+ }
}
},
testMap = {
- // Example from WikiEditor
- // Make sure to use raw numbers, a string like "7.0" would fail on a
- // version 10 browser since in string comparaison "10" is before "7.0" :)
+ // Example from WikiEditor, modified to provide version identifiers as strings and with
+ // Konqueror 4.11 check added.
+ 'ltr': {
+ 'msie': [['>=', '7.0']],
+ 'firefox': [['>=', '2']],
+ 'opera': [['>=', '9.6']],
+ 'safari': [['>=', '3']],
+ 'chrome': [['>=', '3']],
+ 'netscape': [['>=', '9']],
+ 'konqueror': [['>=', '4.11']],
+ 'blackberry': false,
+ 'ipod': false,
+ 'iphone': false
+ },
+ 'rtl': {
+ 'msie': [['>=', '8']],
+ 'firefox': [['>=', '2']],
+ 'opera': [['>=', '9.6']],
+ 'safari': [['>=', '3']],
+ 'chrome': [['>=', '3']],
+ 'netscape': [['>=', '9']],
+ 'konqueror': [['>=', '4.11']],
+ 'blackberry': false,
+ 'ipod': false,
+ 'iphone': false
+ }
+ },
+ legacyTestMap = {
+ // Original example from WikiEditor.
+ // This is using the old, but still supported way of providing version identifiers as numbers
+ // instead of strings; with this method, 4.9 would be considered larger than 4.11.
'ltr': {
'msie': [['>=', 7.0]],
'firefox': [['>=', 2]],
}, ie7Profile, true ), false, 'returns false if browser not found and exactMatchOnly is set' );
} );
- QUnit.test( 'test( testMap) - WikiEditor sample', uacount * 2, function ( assert ) {
+ QUnit.test( 'test( testMap ), test( legacyTestMap ) - WikiEditor sample', uacount * 2 * 2, function ( assert ) {
var $body = $( 'body' ),
bodyClasses = $body.attr( 'class' );
// Loop through and run tests
$.each( uas, function ( agent, data ) {
$.each( ['ltr', 'rtl'], function ( i, dir ) {
- var profile, testMatch;
+ var profile, testMatch, legacyTestMatch;
$body.removeClass( 'ltr rtl' ).addClass( dir );
profile = $.client.profile( {
userAgent: agent,
platform: data.platform
} );
testMatch = $.client.test( testMap, profile );
+ legacyTestMatch = $.client.test( legacyTestMap, profile );
$body.removeClass( dir );
- assert.equal( testMatch, data.wikiEditor[dir], 'testing comparison based on ' + dir + ', ' + agent );
+ assert.equal(
+ testMatch,
+ data.wikiEditor[dir],
+ 'testing comparison based on ' + dir + ', ' + agent
+ );
+ assert.equal(
+ legacyTestMatch,
+ data.wikiEditorLegacy ? data.wikiEditorLegacy[dir] : data.wikiEditor[dir],
+ 'testing comparison based on ' + dir + ', ' + agent + ' (legacyTestMap)'
+ );
} );
} );
QUnit.module( 'mediawiki.jqueryMsg', QUnit.newMwEnvironment( {
setup: function () {
- this.orgMwLangauge = mw.language;
- mw.language = $.extend( true, {}, this.orgMwLangauge );
+ this.originalMwLanguage = mw.language;
// Messages that are reused in multiple tests
mw.messages.set( {
} );
},
teardown: function () {
- mw.language = this.orgMwLangauge;
+ mw.language = this.originalMwLanguage;
}
} ) );
--- /dev/null
+( function ( mw, $ ) {
+ QUnit.module( 'mediawiki.toc', QUnit.newMwEnvironment() );
+
+ QUnit.asyncTest( 'toggleToc', 4, function ( assert ) {
+ var tocHtml, $toggleLink, $tocList;
+
+ function actionC() {
+ QUnit.start();
+ }
+
+ function actionB() {
+ assert.strictEqual( $tocList.is( ':hidden' ), true, 'Return boolean true if the TOC is now visible.' );
+ $toggleLink.click();
+ $tocList.promise().done( actionC );
+ }
+
+ function actionA() {
+ assert.strictEqual( $tocList.is( ':hidden' ), false, 'Return boolean false if the TOC is now hidden.' );
+ $toggleLink.click();
+ $tocList.promise().done( actionB );
+ }
+
+ assert.strictEqual( $( '#toc' ).length, 0, 'Return 0 if there is no table of contents on the page.' );
+
+ tocHtml = '<div id="toc" class="toc">' +
+ '<div id="toctitle">' +
+ '<h2>Contents</h2>' +
+ '</div>' +
+ '<ul><li></li></ul>' +
+ '</div>';
+ $( tocHtml ).appendTo( '#qunit-fixture' );
+ mw.hook( 'wikipage.content' ).fire( $( '#qunit-fixture' ) );
+ $tocList = $( '#toc ul:first' );
+ $toggleLink = $( '#togglelink' );
+
+ assert.strictEqual( $toggleLink.length, 1, 'Toggle link is appended to the page.' );
+
+ actionA();
+ } );
+}( mediaWiki, jQuery ) );
tocHtml = '<div id="toc" class="toc">' +
'<div id="toctitle">' +
'<h2>Contents</h2>' +
- '<span class="toctoggle"> [<a href="#" class="internal" id="togglelink">Hide</a> ]</span>' +
'</div>' +
'<ul><li></li></ul>' +
'</div>';
$( tocHtml ).appendTo( '#qunit-fixture' );
+ mw.hook( 'wikipage.content' ).fire( $( '#qunit-fixture' ) );
$toggleLink = $( '#togglelink' );
assert.strictEqual( $toggleLink.length, 1, 'Toggle link is appended to the page.' );